@gengage/assistant-fe 0.6.27 → 0.6.28

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.
Files changed (41) hide show
  1. package/dist/agent-ui-steps-Dc4ByfZo.js +3161 -0
  2. package/dist/agentic/context/context-store.d.ts +25 -0
  3. package/dist/agentic/index.d.ts +15 -1
  4. package/dist/agentic/index.js +164 -150
  5. package/dist/agentic/types.d.ts +31 -3
  6. package/dist/agentic/worker/agent-ui-steps.d.ts +43 -0
  7. package/dist/agentic/worker/agent-ui.d.ts +44 -0
  8. package/dist/agentic/worker/be-client.d.ts +16 -4
  9. package/dist/agentic/worker/coalesce.d.ts +25 -0
  10. package/dist/agentic/worker/compaction.d.ts +12 -0
  11. package/dist/agentic/worker/pdp-hydrate.d.ts +30 -0
  12. package/dist/agentic/worker/tool-schema.d.ts +19 -0
  13. package/dist/agentic/worker.d.ts +15 -1
  14. package/dist/agentic/worker.js +292 -264
  15. package/dist/agentic.iife.js +9 -9
  16. package/dist/{api-paths-C9NwnH29.js → api-paths-PFiXYIey.js} +1 -1
  17. package/dist/chat-runtime.js +1 -1
  18. package/dist/chat.iife.js +1 -1
  19. package/dist/chat.js +1 -1
  20. package/dist/{common-Bhl1mzk2.js → common-DyAcz33-.js} +1 -1
  21. package/dist/common.js +5 -5
  22. package/dist/{connection-warning-D-0Mxk-A.js → connection-warning-nWEUv5bp.js} +1 -1
  23. package/dist/{fastIntent-bAlwVoje.js → fastIntent-BiHAWBIa.js} +1 -1
  24. package/dist/index.js +10 -10
  25. package/dist/native.iife.js +1 -1
  26. package/dist/qna-runtime.js +1 -1
  27. package/dist/qna.iife.js +1 -1
  28. package/dist/qna.js +1 -1
  29. package/dist/{runtime-BAFZ7iOP.js → runtime-BIA5sGno.js} +3 -3
  30. package/dist/{runtime-oEtmgT4U.js → runtime-BuzZUB0i.js} +3 -3
  31. package/dist/{runtime-CUNLK1KR.js → runtime-PHarcyNZ.js} +3 -3
  32. package/dist/{simbut-Dt8e5uSk.js → simbut-CiPq-niE.js} +1 -1
  33. package/dist/simbut.iife.js +1 -1
  34. package/dist/simbut.js +1 -1
  35. package/dist/{simrel-txr23_xG.js → simrel-XWtKe-OG.js} +1 -1
  36. package/dist/simrel-runtime.js +1 -1
  37. package/dist/simrel.iife.js +1 -1
  38. package/dist/simrel.js +2 -2
  39. package/dist/{widget-base-56tkaZZB.js → widget-base-DSl6thOx.js} +1 -1
  40. package/package.json +1 -1
  41. package/dist/route-params-5K4Du1Xa.js +0 -2476
@@ -1,2476 +0,0 @@
1
- import { t as pe } from "./request-response-cache-BxRsKGJ0.js";
2
- var me = 120 * 1e3, ye = "gengage-agentic-ref";
3
- function ge({ namespace: t = ye, ttlMs: e = me, maxEntries: n = 100 } = {}) {
4
- const r = /* @__PURE__ */ new Map();
5
- async function o(l, u = {}) {
6
- c();
7
- const f = be(), p = u.kind || "pageRef", m = {
8
- kind: p,
9
- value: l,
10
- expiresAt: Date.now() + (u.ttlMs || e)
11
- };
12
- for (r.set(f, m); r.size > n; ) r.delete(r.keys().next().value);
13
- return await we(t, f, m), {
14
- kind: p,
15
- id: f
16
- };
17
- }
18
- async function i(l) {
19
- const u = typeof l == "string" ? l : l?.id;
20
- if (!u) return;
21
- const f = r.get(u) || await ke(t, u);
22
- if (f) {
23
- if (f.expiresAt <= Date.now()) {
24
- r.delete(u), await Ot(t, u);
25
- return;
26
- }
27
- return r.set(u, f), f.value;
28
- }
29
- }
30
- async function a(l) {
31
- const u = typeof l == "string" ? l : l?.id;
32
- u && (r.delete(u), await Ot(t, u));
33
- }
34
- async function s(l) {
35
- if (he(l)) return i(l);
36
- if (Array.isArray(l)) return Promise.all(l.map((f) => s(f)));
37
- if (!l || typeof l != "object") return l;
38
- const u = await Promise.all(Object.entries(l).map(async ([f, p]) => [f, await s(p)]));
39
- return Object.fromEntries(u);
40
- }
41
- function c() {
42
- const l = Date.now();
43
- for (const [u, f] of r.entries()) f.expiresAt <= l && r.delete(u);
44
- }
45
- return {
46
- put: o,
47
- get: i,
48
- delete: a,
49
- materialize: s,
50
- cleanup: c
51
- };
52
- }
53
- function he(t) {
54
- return !!(t && typeof t == "object" && typeof t.kind == "string" && typeof t.id == "string");
55
- }
56
- function be() {
57
- return globalThis.crypto?.randomUUID ? globalThis.crypto.randomUUID() : `${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 10)}`;
58
- }
59
- async function we(t, e, n) {
60
- const r = await ft(t);
61
- r && (await H(r.transaction("refs", "readwrite").objectStore("refs").put(n, e)), r.close());
62
- }
63
- async function ke(t, e) {
64
- const n = await ft(t);
65
- if (!n) return;
66
- const r = await H(n.transaction("refs", "readonly").objectStore("refs").get(e));
67
- return n.close(), r;
68
- }
69
- async function Ot(t, e) {
70
- const n = await ft(t);
71
- n && (await H(n.transaction("refs", "readwrite").objectStore("refs").delete(e)), n.close());
72
- }
73
- async function ft(t) {
74
- if (!globalThis.indexedDB) return null;
75
- try {
76
- const e = globalThis.indexedDB.open(t, 1);
77
- return e.onupgradeneeded = () => {
78
- e.result.createObjectStore("refs");
79
- }, await H(e);
80
- } catch {
81
- return null;
82
- }
83
- }
84
- function H(t) {
85
- return new Promise((e, n) => {
86
- t.onsuccess = () => e(t.result), t.onerror = () => n(t.error);
87
- });
88
- }
89
- function Ae(t) {
90
- return !!t && typeof t == "object" && t.type === "rpc.result";
91
- }
92
- function _e(t) {
93
- return !!t && typeof t == "object" && t.type === "rpc.req";
94
- }
95
- function Rr(t = self) {
96
- let e = 1;
97
- const n = /* @__PURE__ */ new Map();
98
- return t.addEventListener("message", (r) => {
99
- const o = r.data;
100
- if (!Ae(o)) return;
101
- const i = n.get(o.rpcId);
102
- if (i) {
103
- if (n.delete(o.rpcId), o.ok === !1) {
104
- const a = typeof o.error == "object" ? o.error?.message : o.error;
105
- i.reject(new Error(a || "RPC failed"));
106
- return;
107
- }
108
- i.resolve(o.value);
109
- }
110
- }), function(o, i, a) {
111
- const s = e++;
112
- return t.postMessage({
113
- type: "rpc.req",
114
- rpcId: s,
115
- method: o,
116
- payload: i
117
- }, a || []), new Promise((c, l) => {
118
- n.set(s, {
119
- resolve: (u) => c(u),
120
- reject: l
121
- });
122
- });
123
- };
124
- }
125
- function $r({ worker: t, tools: e = {}, beacon: n, confirmation: r, memory: o = Se(), refStore: i }) {
126
- t.addEventListener("message", (a) => {
127
- const s = a.data;
128
- _e(s) && xe(t, s, {
129
- tools: e,
130
- beacon: n,
131
- confirmation: r,
132
- memory: o,
133
- refStore: i
134
- });
135
- });
136
- }
137
- async function xe(t, e, n) {
138
- try {
139
- const r = await $e(e.method, e.payload, n);
140
- t.postMessage({
141
- type: "rpc.result",
142
- rpcId: e.rpcId,
143
- ok: !0,
144
- value: r
145
- });
146
- } catch (r) {
147
- t.postMessage({
148
- type: "rpc.result",
149
- rpcId: e.rpcId,
150
- ok: !1,
151
- error: { message: r instanceof Error ? r.message : String(r) }
152
- });
153
- }
154
- }
155
- var et = /* @__PURE__ */ new Map(), Bt = null;
156
- function Se() {
157
- try {
158
- if (typeof sessionStorage < "u") return sessionStorage;
159
- } catch {
160
- }
161
- return {
162
- getItem: (t) => et.get(t) ?? null,
163
- setItem: (t, e) => {
164
- et.set(t, e);
165
- },
166
- removeItem: (t) => {
167
- et.delete(t);
168
- }
169
- };
170
- }
171
- function ve() {
172
- return Bt ||= ge(), Bt;
173
- }
174
- function je(t) {
175
- if (t && typeof t == "object" && typeof t.name == "string") return t;
176
- throw new Error("tool.invoke requires { name, input }");
177
- }
178
- function Ce(t) {
179
- if (t && typeof t == "object" && t.key !== void 0) return t;
180
- throw new Error("memory.get requires { key }");
181
- }
182
- function Ee(t) {
183
- if (t && typeof t == "object" && t.key !== void 0) return t;
184
- throw new Error("memory.set requires { key }");
185
- }
186
- function Ie(t) {
187
- if (t && typeof t == "object" && t.key !== void 0) return t;
188
- throw new Error("memory.remove requires { key }");
189
- }
190
- function Te(t) {
191
- return !t || typeof t != "object" ? { value: t } : t;
192
- }
193
- function Pe(t) {
194
- const e = typeof t.kind == "string" && t.kind.trim() ? t.kind.trim() : void 0, n = typeof t.ttlMs == "number" && Number.isFinite(t.ttlMs) && t.ttlMs > 0 ? t.ttlMs : void 0;
195
- return e || n ? {
196
- ...e ? { kind: e } : {},
197
- ...n ? { ttlMs: n } : {}
198
- } : void 0;
199
- }
200
- function nt(t) {
201
- if (t == null) return "session";
202
- if (t === "volatile" || t === "session" || t === "local" || t === "indexedDb") return t;
203
- if (typeof t == "string") {
204
- const e = t.toLowerCase();
205
- if (e === "indexeddb" || e === "idb") return "indexedDb";
206
- }
207
- throw new Error(`Unsupported memory tier: ${String(t)}`);
208
- }
209
- function dt(t) {
210
- return typeof t.getItem == "function" && typeof t.setItem == "function";
211
- }
212
- function pt(t) {
213
- return typeof t.get == "function" && typeof t.set == "function";
214
- }
215
- function mt(t) {
216
- return typeof t.accountId == "string" && !!t.session && !!t.indexedDb;
217
- }
218
- function Oe(t) {
219
- const e = t.options?.ttlMs ?? t.ttlMs;
220
- return typeof e == "number" && Number.isFinite(e) && e > 0 ? { ttlMs: e } : void 0;
221
- }
222
- async function Be(t, e, n) {
223
- if (dt(t)) {
224
- const r = t.getItem(n);
225
- if (!r) return null;
226
- try {
227
- return JSON.parse(r);
228
- } catch {
229
- return t.removeItem?.(n), null;
230
- }
231
- }
232
- return pt(t) && !mt(t) ? await t.get(e, n) ?? null : await t[e].get(n) ?? null;
233
- }
234
- async function Me(t, e, n, r, o) {
235
- return dt(t) ? (t.setItem(n, JSON.stringify(r ?? null)), !0) : pt(t) && !mt(t) ? await t.set(e, n, r ?? null, o) !== !1 : await t[e].set(n, r ?? null, o) !== !1;
236
- }
237
- async function Re(t, e, n) {
238
- return dt(t) ? (t.removeItem?.(n), !0) : pt(t) && !mt(t) ? t.remove ? (await t.remove(e, n), !0) : !1 : (await t[e].remove(n), !0);
239
- }
240
- async function $e(t, e, { tools: n, beacon: r, confirmation: o, memory: i, refStore: a }) {
241
- if (t === "tool.invoke") {
242
- const { name: s, input: c } = je(e), l = n[s];
243
- if (typeof l != "function") throw new Error(`Unknown tool: ${s}`);
244
- return l(c);
245
- }
246
- if (t === "beacon.send")
247
- return r?.(e), { sent: !0 };
248
- if (t === "confirmation.request") {
249
- if (typeof o != "function") throw new Error("No confirmation handler is configured.");
250
- const s = await o(e);
251
- return typeof s == "boolean" ? { confirmed: s } : s;
252
- }
253
- if (t === "memory.get") {
254
- const { key: s, tier: c } = Ce(e);
255
- return Be(i, nt(c), String(s));
256
- }
257
- if (t === "memory.set") {
258
- const s = Ee(e);
259
- return { ok: await Me(i, nt(s.tier), String(s.key), s.value, Oe(s)) };
260
- }
261
- if (t === "memory.remove") {
262
- const { key: s, tier: c } = Ie(e);
263
- return { ok: await Re(i, nt(c), String(s)) };
264
- }
265
- if (t === "ref.put") {
266
- const s = V({
267
- tools: n,
268
- beacon: r,
269
- confirmation: o,
270
- memory: i,
271
- refStore: a
272
- }), c = Te(e);
273
- return s.put(c.value, Pe(c));
274
- }
275
- if (t === "ref.get") return V({
276
- tools: n,
277
- beacon: r,
278
- confirmation: o,
279
- memory: i,
280
- refStore: a
281
- }).get(e);
282
- if (t === "ref.materialize") return V({
283
- tools: n,
284
- beacon: r,
285
- confirmation: o,
286
- memory: i,
287
- refStore: a
288
- }).materialize(e);
289
- if (t === "ref.remove")
290
- return await V({
291
- tools: n,
292
- beacon: r,
293
- confirmation: o,
294
- memory: i,
295
- refStore: a
296
- }).delete(e), { ok: !0 };
297
- throw new Error(`Unknown RPC method: ${t}`);
298
- }
299
- function V(t) {
300
- const e = t.refStore || ve();
301
- if (!e || typeof e.put != "function" || typeof e.get != "function") throw new Error("No ref store is configured.");
302
- return e;
303
- }
304
- function Le() {
305
- return (/* @__PURE__ */ new Date()).toISOString();
306
- }
307
- function v(t) {
308
- return Math.max(0, Math.round(performance.now() - t));
309
- }
310
- function N(t) {
311
- return typeof t == "object" && t !== null && !Array.isArray(t);
312
- }
313
- function Ne(t) {
314
- const { accountId: e, locale: n = "en-GB", parentUrl: r = "", threadId: o, incomingContext: i, messageLimit: a } = t, s = N(i) ? i : {}, c = N(s.thread) ? s.thread : {}, l = N(s.panel) ? s.panel : {}, u = N(s.meta) ? s.meta : {}, f = zt(s.messages, a), p = {
315
- id: String(o || c.id || self.crypto.randomUUID()),
316
- started_at: String(c.started_at || Le()),
317
- extensions: N(c.extensions) ? { ...c.extensions } : {}
318
- }, m = String(u.locale || n), g = String(u.parentUrl || r || typeof self < "u" && self.location?.href || "");
319
- return {
320
- panel: { ...l },
321
- messages: f,
322
- thread: p,
323
- meta: {
324
- locale: m,
325
- parentUrl: g,
326
- accountId: e
327
- }
328
- };
329
- }
330
- function qe(t, e, n) {
331
- const r = zt([e], n)[0];
332
- return r ? {
333
- ...t,
334
- messages: G([...t.messages, r], n)
335
- } : t;
336
- }
337
- function G(t, e) {
338
- const n = Fe(e);
339
- return n === 1 / 0 ? [...t] : t.slice(-n);
340
- }
341
- function zt(t, e) {
342
- return Array.isArray(t) ? G(t.map((n) => {
343
- const r = n?.role;
344
- return {
345
- role: r === "model" ? "assistant" : typeof r == "string" ? r : "",
346
- content: String(n?.content || "")
347
- };
348
- }).filter((n) => (n.role === "user" || n.role === "assistant") && !!n.content), e) : [];
349
- }
350
- function Fe(t) {
351
- if (t === void 0) return 50;
352
- if (!Number.isFinite(t)) return 1 / 0;
353
- const e = Math.floor(t);
354
- return e > 0 ? e : 50;
355
- }
356
- var Ue = "gengage:agent:context:";
357
- async function ze({ accountId: t, threadId: e, rpc: n }) {
358
- const r = await n("memory.get", {
359
- tier: "session",
360
- key: Dt(t, e)
361
- });
362
- return r && typeof r == "object" && !Array.isArray(r) ? r : {};
363
- }
364
- async function De({ accountId: t, threadId: e, extensions: n, panel: r, rpc: o }) {
365
- await o("memory.set", {
366
- tier: "session",
367
- key: Dt(t, e),
368
- value: {
369
- thread: { extensions: n },
370
- ...r && Object.keys(r).length > 0 ? { panel: r } : {}
371
- }
372
- });
373
- }
374
- function Dt(t, e) {
375
- return `${Ue}${t}:${e}`;
376
- }
377
- function h(t) {
378
- return typeof t == "object" && t !== null && !Array.isArray(t);
379
- }
380
- var Lr = class {
381
- #t = /* @__PURE__ */ new Map();
382
- #n = /* @__PURE__ */ new Map();
383
- #o;
384
- #c;
385
- #u;
386
- #i;
387
- #l;
388
- #f;
389
- #r;
390
- #a;
391
- #s;
392
- constructor({ accountId: t, locale: e, parentUrl: n, rpc: r, persistentPanelKeys: o = [], panelKeyLimits: i = {}, messageLimit: a, maxThreads: s, threadTtlMs: c }) {
393
- this.#o = t, this.#c = e, this.#u = n, this.#i = r, this.#l = [...new Set(o.filter(Boolean))], this.#f = Ke(i), this.#r = rt(a), this.#a = rt(s), this.#s = rt(c);
394
- }
395
- get size() {
396
- return this.pruneExpired(), this.#t.size;
397
- }
398
- get(t = "default") {
399
- this.pruneExpired();
400
- const e = String(t || "default"), n = this.#t.get(e);
401
- return n ? (this.#e(e, n), n) : null;
402
- }
403
- getPanel(t = "default") {
404
- return this.get(t)?.panel ?? null;
405
- }
406
- getRecentProducts(t = "default", e = "last_search_products") {
407
- const n = this.getPanel(t)?.[e];
408
- return Array.isArray(n) ? n : [];
409
- }
410
- async load(t) {
411
- this.pruneExpired();
412
- const e = t?.session_id || t?.meta?.threadId || t?.sessionId, n = String(e || "default"), r = this.#t.get(n);
413
- if (r) {
414
- const a = He(r, t?.context, this.#r);
415
- return this.#e(n, a), a;
416
- }
417
- const o = await ze({
418
- accountId: this.#o,
419
- threadId: n,
420
- rpc: this.#i
421
- }), i = Ne({
422
- accountId: this.#o,
423
- locale: t?.locale || this.#c,
424
- parentUrl: this.#u,
425
- threadId: n,
426
- incomingContext: Ze(o, t?.context),
427
- messageLimit: this.#r
428
- });
429
- return this.#e(n, i), this.#d(), i;
430
- }
431
- patch(t, e) {
432
- this.pruneExpired();
433
- const n = String(t || "default"), r = this.#t.get(n);
434
- if (!r) return null;
435
- const o = yt(r, typeof e == "function" ? e(r) : e, this.#r);
436
- return this.#e(n, o), o;
437
- }
438
- appendUserMessage(t, e) {
439
- this.pruneExpired();
440
- const n = String(t || "default");
441
- if (!e) return this.#t.get(n) ?? null;
442
- const r = this.#t.get(n);
443
- if (!r) return null;
444
- const o = qe(r, {
445
- role: "user",
446
- content: e
447
- }, this.#r);
448
- return this.#e(n, o), o;
449
- }
450
- async commit(t) {
451
- this.pruneExpired();
452
- const e = String(t || "default"), n = this.#t.get(e);
453
- return n ? (this.#e(e, n), await De({
454
- accountId: this.#o,
455
- threadId: e,
456
- extensions: n.thread.extensions,
457
- panel: Ve(n.panel, this.#l, this.#f),
458
- rpc: this.#i
459
- }), n) : null;
460
- }
461
- delete(t) {
462
- const e = String(t || "default");
463
- return this.#n.delete(e), this.#t.delete(e);
464
- }
465
- clear() {
466
- this.#t.clear(), this.#n.clear();
467
- }
468
- pruneExpired(t = Date.now()) {
469
- if (!this.#s) return 0;
470
- let e = 0;
471
- for (const [n, r] of this.#n)
472
- t - r <= this.#s || (this.#n.delete(n), this.#t.delete(n) && (e += 1));
473
- return e;
474
- }
475
- #e(t, e) {
476
- this.#t.delete(t), this.#t.set(t, e), this.#n.set(t, Date.now());
477
- }
478
- #d() {
479
- if (this.#a)
480
- for (; this.#t.size > this.#a; ) {
481
- const t = this.#t.keys().next().value;
482
- if (!t) return;
483
- this.delete(t);
484
- }
485
- }
486
- };
487
- function Ve(t, e, n) {
488
- if (!e.length || !h(t)) return;
489
- const r = {};
490
- for (const o of e) Object.prototype.hasOwnProperty.call(t, o) && (r[o] = Je(t[o], n[o]));
491
- return r;
492
- }
493
- function Ke(t) {
494
- const e = {};
495
- for (const [n, r] of Object.entries(t || {})) {
496
- const o = Math.floor(Number(r));
497
- n && Number.isFinite(o) && o > 0 && (e[n] = o);
498
- }
499
- return e;
500
- }
501
- function rt(t) {
502
- if (t === void 0) return;
503
- const e = Math.floor(Number(t));
504
- return Number.isFinite(e) && e > 0 ? e : void 0;
505
- }
506
- function Je(t, e) {
507
- return !e || !Array.isArray(t) ? t : t.slice(-e);
508
- }
509
- function Ze(t, e) {
510
- if (!h(t) && !h(e)) return {};
511
- const n = h(t) ? t : {}, r = yt(n, h(e) ? e : {});
512
- return h(n.panel) && (r.panel = n.panel), r;
513
- }
514
- function He(t, e, n) {
515
- if (!h(e)) return t;
516
- const r = yt(t, e, n);
517
- return {
518
- ...r,
519
- panel: t.panel,
520
- thread: {
521
- ...r.thread,
522
- id: t.thread.id,
523
- started_at: t.thread.started_at
524
- },
525
- meta: {
526
- ...r.meta,
527
- accountId: t.meta.accountId
528
- }
529
- };
530
- }
531
- function yt(t, e, n) {
532
- if (!h(e)) return t;
533
- const r = t, o = e, i = h(r.panel) ? r.panel : {}, a = h(o.panel) ? o.panel : {}, s = h(r.thread) ? r.thread : {}, c = h(o.thread) ? o.thread : {}, l = h(s.extensions) ? s.extensions : {}, u = h(c.extensions) ? c.extensions : {}, f = h(r.meta) ? r.meta : {}, p = h(o.meta) ? o.meta : {};
534
- return {
535
- ...t,
536
- ...e,
537
- panel: {
538
- ...i,
539
- ...a
540
- },
541
- thread: {
542
- ...s,
543
- ...c,
544
- extensions: {
545
- ...l,
546
- ...u
547
- }
548
- },
549
- meta: {
550
- ...f,
551
- ...p
552
- },
553
- messages: Array.isArray(o.messages) ? G(o.messages, n) : t.messages ?? []
554
- };
555
- }
556
- function Vt(t) {
557
- const e = String.fromCharCode(...t);
558
- return btoa(e).replace(/\+/gu, "-").replace(/\//gu, "_").replace(/=+$/u, "");
559
- }
560
- function Mt(t) {
561
- return Vt(new TextEncoder().encode(JSON.stringify(t)));
562
- }
563
- async function Ge({ accountId: t, devJwtSecret: e, ttlS: n = 300 }) {
564
- if (!e) throw new Error("devJwtSecret is required for local agent mode.");
565
- const r = Math.floor(Date.now() / 1e3), o = `${Mt({
566
- alg: "HS256",
567
- typ: "JWT"
568
- })}.${Mt({
569
- sub: t,
570
- iat: r,
571
- exp: r + n,
572
- scope: "invoke",
573
- jti: crypto.randomUUID?.() || `${r}-${Math.random()}`
574
- })}`, i = await crypto.subtle.importKey("raw", new TextEncoder().encode(e), {
575
- name: "HMAC",
576
- hash: "SHA-256"
577
- }, !1, ["sign"]), a = await crypto.subtle.sign("HMAC", i, new TextEncoder().encode(o));
578
- return `${o}.${Vt(new Uint8Array(a))}`;
579
- }
580
- function Qe({ accountId: t, devJwtSecret: e, tokenBrokerUrl: n, tokenBrokerAudience: r, refreshSkewS: o = 30, fetchImpl: i = fetch }) {
581
- let a = null;
582
- return async ({ signal: s, parentUrl: c } = {}) => {
583
- if (e) return Ge({
584
- accountId: t,
585
- devJwtSecret: e
586
- });
587
- if (!n) throw new Error("tokenBrokerUrl is required for production agent mode.");
588
- const l = Math.floor(Date.now() / 1e3);
589
- return a?.token && a.expiresAtS - o > l || (a = await Ye({
590
- accountId: t,
591
- tokenBrokerUrl: n,
592
- tokenBrokerAudience: r,
593
- parentUrl: c,
594
- signal: s,
595
- fetchImpl: i
596
- })), a.token;
597
- };
598
- }
599
- async function Ye({ accountId: t, tokenBrokerUrl: e, tokenBrokerAudience: n, parentUrl: r, signal: o, fetchImpl: i }) {
600
- const a = await i(e, {
601
- method: "POST",
602
- credentials: "include",
603
- headers: {
604
- accept: "application/json",
605
- "content-type": "application/json"
606
- },
607
- body: JSON.stringify({
608
- accountId: t,
609
- scope: "invoke",
610
- audience: n || void 0,
611
- parentUrl: r || void 0
612
- }),
613
- ...o ? { signal: o } : {}
614
- });
615
- if (!a.ok) throw new Error(`Token broker request failed (${a.status}).`);
616
- const s = await a.json(), c = s?.token || s?.jwt || s?.access_token;
617
- if (!c || typeof c != "string") throw new Error("Token broker response did not include a JWT.");
618
- return {
619
- token: c,
620
- expiresAtS: We(s) || Xe(c) || Math.floor(Date.now() / 1e3) + 300
621
- };
622
- }
623
- function We(t) {
624
- const e = t?.expiresAtS ?? t?.expires_at_s ?? t?.expiresInS ?? t?.expires_in_s;
625
- if (Number.isFinite(e)) return Number(e);
626
- const n = t?.expiresIn ?? t?.expires_in;
627
- if (Number.isFinite(n)) return Math.floor(Date.now() / 1e3) + Number(n);
628
- const r = t?.expiresAt ?? t?.expires_at;
629
- if (typeof r == "string") {
630
- const o = Date.parse(r);
631
- if (Number.isFinite(o)) return Math.floor(o / 1e3);
632
- }
633
- return null;
634
- }
635
- function Xe(t) {
636
- try {
637
- const [, e] = t.split(".");
638
- if (!e) return null;
639
- const n = e.replace(/-/gu, "+").replace(/_/gu, "/"), r = atob(n.padEnd(Math.ceil(n.length / 4) * 4, "=")), o = JSON.parse(r);
640
- return Number.isFinite(o?.exp) ? Number(o.exp) : null;
641
- } catch {
642
- return null;
643
- }
644
- }
645
- var Rt = {
646
- unauthorized: {
647
- code: "auth",
648
- message: "Assistant authentication failed. Please retry."
649
- },
650
- forbidden: {
651
- code: "auth",
652
- message: "Assistant authentication failed. Please retry."
653
- },
654
- unknown_op: {
655
- code: "op_unavailable",
656
- message: "This assistant action is not available yet."
657
- },
658
- invalid_input: {
659
- code: "invalid_request",
660
- message: "The assistant request was not valid."
661
- },
662
- account_config: {
663
- code: "account_config",
664
- message: "Assistant configuration is unavailable."
665
- },
666
- upstream_llm: {
667
- code: "op_failed",
668
- message: "The assistant could not complete that request."
669
- },
670
- upstream_timeout: {
671
- code: "op_timeout",
672
- message: "The assistant took too long to respond."
673
- },
674
- schema_mismatch: {
675
- code: "op_failed",
676
- message: "The assistant could not complete that request."
677
- },
678
- rate_limited: {
679
- code: "rate_limited",
680
- message: "The assistant is receiving too many requests. Please retry shortly."
681
- },
682
- internal: {
683
- code: "op_failed",
684
- message: "The assistant could not complete that request."
685
- },
686
- payload_too_large: {
687
- code: "invalid_request",
688
- message: "The assistant request was too large."
689
- }
690
- }, T = class extends Error {
691
- constructor(t, e, n = {}) {
692
- super(e), this.name = "AgentError", this.code = t, this.source = n.source || "agent", n.sourceCode && (this.sourceCode = n.sourceCode), n.detail !== void 0 && (this.detail = n.detail);
693
- }
694
- };
695
- function Kt(t) {
696
- const e = String(t?.code || "upstream_llm"), n = Rt[e] || Rt.upstream_llm;
697
- return new T(n.code, n.message, {
698
- source: "be",
699
- sourceCode: e,
700
- detail: t?.detail
701
- });
702
- }
703
- function tn(t, e) {
704
- const n = e?.error && typeof e.error == "object" ? e.error : {};
705
- return Kt({
706
- code: String(n.code || en(t)),
707
- detail: n.detail
708
- });
709
- }
710
- function Nr(t) {
711
- return t instanceof T ? {
712
- type: "error",
713
- code: t.code,
714
- message: t.message
715
- } : {
716
- type: "error",
717
- code: "agent_invoke_failed",
718
- message: "The assistant could not complete that request."
719
- };
720
- }
721
- function en(t) {
722
- return t === 401 ? "unauthorized" : t === 403 ? "forbidden" : t === 413 ? "payload_too_large" : t === 429 ? "rate_limited" : "internal";
723
- }
724
- async function qr({ beUrl: t, accountId: e, devJwtSecret: n, tokenBrokerUrl: r, tokenBrokerAudience: o, jwtProvider: i, parentUrl: a, op: s, input: c, cacheTtlS: l, cacheKey: u, browserCache: f, signal: p }) {
725
- const m = await (i || Qe({
726
- accountId: e,
727
- devJwtSecret: n,
728
- tokenBrokerUrl: r,
729
- tokenBrokerAudience: o
730
- }))({
731
- ...p ? { signal: p } : {},
732
- ...a ? { parentUrl: a } : {}
733
- }), { opDomain: g, opName: _ } = nn(s, e), C = {
734
- method: "POST",
735
- headers: {
736
- authorization: `Bearer ${m}`,
737
- "content-type": "application/json",
738
- accept: "application/x-ndjson"
739
- },
740
- body: JSON.stringify({
741
- op_domain: g,
742
- op_name: _,
743
- op_payload: c,
744
- ...l !== void 0 ? { cache_ttl_s: l } : {},
745
- ...u !== void 0 ? { cache_key: u } : {}
746
- }),
747
- ...p ? { signal: p } : {}
748
- }, P = `${String(t).replace(/\/+$/u, "")}/v1/execute`, O = f === !1 ? await fetch(P, C) : await pe(P, C, typeof f == "object" ? f : {});
749
- if (!O.ok) throw tn(O.status, await on(O));
750
- return an(O);
751
- }
752
- function nn(t, e) {
753
- if (!t || t.startsWith("-") || t.endsWith("-")) throw new Error(`Invalid BE op name: ${t}`);
754
- return {
755
- opDomain: rn(e),
756
- opName: t
757
- };
758
- }
759
- function rn(t) {
760
- return t.replace(/-agentic$/u, "");
761
- }
762
- async function on(t) {
763
- try {
764
- return await t.json();
765
- } catch {
766
- return { error: { code: t.statusText || "internal" } };
767
- }
768
- }
769
- async function an(t) {
770
- const e = t.body?.getReader();
771
- if (!e) throw new Error("BE response body is not readable.");
772
- const n = new TextDecoder();
773
- let r = "";
774
- const o = {};
775
- for (; ; ) {
776
- const { value: a, done: s } = await e.read();
777
- if (s) break;
778
- r += n.decode(a, { stream: !0 });
779
- let c = r.indexOf(`
780
- `);
781
- for (; c >= 0; ) {
782
- const l = r.slice(0, c).trim();
783
- r = r.slice(c + 1), l && $t(JSON.parse(l), o), c = r.indexOf(`
784
- `);
785
- }
786
- }
787
- const i = r.trim();
788
- return i && $t(JSON.parse(i), o), o;
789
- }
790
- function $t(t, e) {
791
- if (t._error) throw Kt(t._error);
792
- if (!t._end)
793
- for (const [n, r] of Object.entries(t)) {
794
- if (Object.prototype.hasOwnProperty.call(e, n)) throw new T("op_failed", `BE streamed duplicate field "${n}".`, {
795
- source: "be",
796
- sourceCode: "schema_mismatch"
797
- });
798
- e[n] = r;
799
- }
800
- }
801
- function Fr(t = {}) {
802
- return {
803
- type: "metadata",
804
- ...t
805
- };
806
- }
807
- function sn(t, e = !1, n = {}) {
808
- return {
809
- type: "text_chunk",
810
- content: t,
811
- final: e,
812
- ...n
813
- };
814
- }
815
- function Ur(t) {
816
- return {
817
- type: "ui_spec",
818
- ...t
819
- };
820
- }
821
- function zr(t) {
822
- return {
823
- type: "action",
824
- action: t
825
- };
826
- }
827
- function cn(t, e) {
828
- return {
829
- type: "error",
830
- code: t,
831
- message: e
832
- };
833
- }
834
- function Jt() {
835
- return { type: "done" };
836
- }
837
- function un(t, e) {
838
- return t[e?.type || e?.action?.type || "inputText"] || t.inputText;
839
- }
840
- function Zt(t) {
841
- return t && typeof t == "object" && !Array.isArray(t) ? t : null;
842
- }
843
- function gt(t, e = {}) {
844
- const n = Zt(t);
845
- if (!n) return null;
846
- const r = e.catalogMapper?.(n);
847
- if (r) return r;
848
- const o = M(n.sku, n.SKU);
849
- if (!o) return null;
850
- const i = {
851
- sku: o,
852
- name: M(n.name, n.title, n.short_name, o) || o,
853
- url: M(n.url) || ""
854
- }, a = Array.isArray(n.images) ? n.images : void 0, s = M(n.imageUrl, n.image_url, n.image, a?.[0]);
855
- s && (i.imageUrl = s), a && a.length > 1 && (i.images = a.filter((P) => !!P).map(String));
856
- const c = q(n.price_discounted), l = q(n.price), u = c || l;
857
- u > 0 && (i.price = String(u));
858
- const f = c > 0 ? l : 0;
859
- f > 0 && (i.originalPrice = String(f));
860
- const p = M(n.brand);
861
- p && (i.brand = p);
862
- const m = q(n.rating);
863
- m > 0 && (i.rating = m);
864
- const g = q(n.review_count) || q(n.reviewCount);
865
- g > 0 && (i.reviewCount = g);
866
- const _ = M(n.cart_code, n.cartCode);
867
- _ && (i.cartCode = _), typeof n.in_stock == "boolean" && (i.inStock = n.in_stock), typeof n.inStock == "boolean" && (i.inStock = n.inStock);
868
- const C = n.category_names;
869
- return Array.isArray(C) && (i.categoryNames = C.map(String)), i;
870
- }
871
- function ht(t) {
872
- const e = Zt(t);
873
- if (!e) return t;
874
- const n = e.category_names, r = Array.isArray(n) ? n : void 0, o = e.images, i = Array.isArray(o) ? o : void 0, a = {
875
- sku: e.sku,
876
- name: e.name || e.title,
877
- url: e.url,
878
- price: e.price,
879
- currency: e.price_currency || e.currency,
880
- category: r?.[r.length - 1] ?? void 0,
881
- category_names: r ? r.slice(0, 4) : void 0,
882
- image: i ? i[0] : e.image,
883
- in_stock: e.in_stock,
884
- rating: e.rating,
885
- review_count: e.review_count
886
- };
887
- for (const s of Object.keys(a)) a[s] === void 0 && delete a[s];
888
- return a;
889
- }
890
- function Dr(t) {
891
- return Array.isArray(t) ? t.map(ht).filter((e) => !!e) : [];
892
- }
893
- function M(...t) {
894
- for (const e of t) if (typeof e == "string" && e.trim()) return e.trim();
895
- return "";
896
- }
897
- function q(t) {
898
- const e = Number(t);
899
- return Number.isFinite(e) ? e : 0;
900
- }
901
- function Lt(t) {
902
- return Array.isArray(t) ? t.map(String).filter(Boolean) : typeof t == "string" && t ? [t] : [];
903
- }
904
- function Ht(t, e, n = {}) {
905
- return `${t}:${n.version || "v2"}:${Gt(e)}`;
906
- }
907
- function Vr(t, e = {}) {
908
- return Qt(t).map((n) => Yt(typeof n == "string" ? n : n.sku, e.locale)).filter(Boolean).filter((n, r, o) => o.indexOf(n) === r).sort((n, r) => bt(n, r, e.locale)).slice(0, e.limit || 16).join(",");
909
- }
910
- function Kr(t, e = {}) {
911
- return Gt(Qt(t).map((n) => ln(n, e)).filter((n) => !!n).sort((n, r) => bt(String(n.sku || n.name || ""), String(r.sku || r.name || ""), e.locale)).slice(0, e.limit || 16));
912
- }
913
- function Jr(t, e) {
914
- return E(t, e);
915
- }
916
- function Gt(t) {
917
- let e = 2166136261;
918
- const n = fn(t);
919
- for (let r = 0; r < n.length; r += 1)
920
- e ^= n.charCodeAt(r), e = Math.imul(e, 16777619);
921
- return (e >>> 0).toString(36);
922
- }
923
- function ln(t, e) {
924
- if (!t || typeof t != "object" || Array.isArray(t)) return null;
925
- const n = t, r = e.mapProduct?.(n);
926
- if (r) return U(r);
927
- const o = ht(n);
928
- return o && typeof o == "object" && !Array.isArray(o) ? U(dn(o, e)) : null;
929
- }
930
- function Qt(t) {
931
- return Array.isArray(t) ? t.filter((e) => typeof e == "string" || !!(e && typeof e == "object" && !Array.isArray(e))) : [];
932
- }
933
- function fn(t) {
934
- return JSON.stringify(U(t));
935
- }
936
- function U(t) {
937
- return Array.isArray(t) ? t.map(U) : !t || typeof t != "object" ? t : Object.fromEntries(Object.entries(t).filter(([, e]) => e !== void 0).sort(([e], [n]) => e.localeCompare(n)).map(([e, n]) => [e, U(n)]));
938
- }
939
- function dn(t, e) {
940
- return {
941
- sku: Yt(t.sku, e.locale),
942
- name: E(t.name, e.locale),
943
- url: E(t.url, e.locale),
944
- price: t.price,
945
- currency: E(t.currency, e.locale),
946
- category: E(t.category, e.locale),
947
- category_names: pn(t.category_names, e.locale, 16),
948
- image: E(t.image, e.locale),
949
- in_stock: t.in_stock,
950
- rating: t.rating,
951
- review_count: t.review_count
952
- };
953
- }
954
- function Yt(t, e) {
955
- return E(t, e).toUpperCase();
956
- }
957
- function E(t, e) {
958
- return typeof t == "string" ? t.trim().replace(/\s+/gu, " ").toLocaleLowerCase(e || void 0) : "";
959
- }
960
- function bt(t, e, n) {
961
- return t.localeCompare(e, n, { numeric: !0 });
962
- }
963
- function pn(t, e, n) {
964
- return Array.isArray(t) ? t.map((r) => E(r, e)).filter(Boolean).sort((r, o) => bt(r, o, e)).slice(0, n) : void 0;
965
- }
966
- async function Zr({ request: t, accountModule: e, contextStore: n, beClient: r, toolBridge: o, emit: i, rpc: a, signal: s }) {
967
- const c = performance.now(), l = await n.load(t), u = l.thread.id, f = $n(t);
968
- Cn(l, f) && n.appendUserMessage(u, f);
969
- const p = un(e.flows, t);
970
- if (!p)
971
- return i(cn("unknown_action", `No agent flow for request type ${t?.type || "inputText"}`)), i(Jt()), {
972
- steps: 0,
973
- productSkusEmitted: []
974
- };
975
- const m = {
976
- request: t,
977
- context: n.patch(u, {}) || l,
978
- bag: {},
979
- accountConfig: e.accountConfig || {},
980
- threadId: u,
981
- steps: 0,
982
- productSkusEmitted: /* @__PURE__ */ new Set(),
983
- committed: !1,
984
- messageLimit: Rn(e.contextPersistence?.messageLimit),
985
- catalogMapper: e.catalogMapper,
986
- similarityMapper: e.similarityMapper
987
- }, g = {
988
- contextStore: n,
989
- beClient: r,
990
- toolBridge: o,
991
- emit: i,
992
- rpc: a,
993
- adapters: e.adapters || {},
994
- ...s ? { signal: s } : {},
995
- ...e.trace ? { trace: e.trace } : {}
996
- };
997
- await j(g, F("turn:start", m));
998
- try {
999
- await $(p, m, g), m.committed || await wt(m, g);
1000
- } catch (_) {
1001
- throw await j(g, {
1002
- ...F("turn:error", m),
1003
- latencyMs: v(c),
1004
- errorCode: At(_)
1005
- }), _;
1006
- }
1007
- return await a("beacon.send", {
1008
- type: "turnSummary",
1009
- threadId: u,
1010
- sessionId: t?.session_id || t?.sessionId || u,
1011
- accountId: e.accountId || m.context.meta.accountId,
1012
- steps: m.steps,
1013
- totalLatencyMs: v(c),
1014
- productSkusEmitted: [...m.productSkusEmitted]
1015
- }), await j(g, {
1016
- ...F("turn:end", m),
1017
- latencyMs: v(c)
1018
- }), {
1019
- steps: m.steps,
1020
- productSkusEmitted: [...m.productSkusEmitted]
1021
- };
1022
- }
1023
- async function $(t, e, n) {
1024
- for (const r of t) {
1025
- if (n.signal?.aborted || e.committed) return;
1026
- e.steps += 1;
1027
- const o = e.steps, i = performance.now();
1028
- await j(n, ot("step:start", e, r, o));
1029
- try {
1030
- await mn(r, e, n), await j(n, {
1031
- ...ot("step:end", e, r, o),
1032
- latencyMs: v(i)
1033
- });
1034
- } catch (a) {
1035
- throw await j(n, {
1036
- ...ot("step:error", e, r, o),
1037
- latencyMs: v(i),
1038
- errorCode: At(a)
1039
- }), a;
1040
- }
1041
- e.context = n.contextStore.patch(e.threadId, {}) || e.context;
1042
- }
1043
- }
1044
- async function mn(t, e, n) {
1045
- const r = R(e, n);
1046
- if (t.kind === "be_op") {
1047
- await yn(t, e, n, r);
1048
- return;
1049
- }
1050
- if (t.kind === "tool") {
1051
- await bn(t, e, n, r);
1052
- return;
1053
- }
1054
- if (t.kind === "adapter") {
1055
- await wn(t, e, n, r);
1056
- return;
1057
- }
1058
- if (t.kind === "emit") {
1059
- await kn(t, e, n);
1060
- return;
1061
- }
1062
- if (t.kind === "patch") {
1063
- await An(t, e, n);
1064
- return;
1065
- }
1066
- if (t.kind === "branch") {
1067
- await _n(t, e, n, r);
1068
- return;
1069
- }
1070
- if (t.kind === "agent_loop") {
1071
- await xn(t, e, n, r);
1072
- return;
1073
- }
1074
- if (t.kind === "parallel") {
1075
- await Sn(t, e, n);
1076
- return;
1077
- }
1078
- if (t.kind === "refusal") {
1079
- await vn(t, e, n, r);
1080
- return;
1081
- }
1082
- t.kind === "commit" && await jn(t, e, n);
1083
- }
1084
- async function yn(t, e, n, r) {
1085
- const o = performance.now();
1086
- let i;
1087
- try {
1088
- const s = await w(t.input, r), c = gn(t, e, s, await w(t.cache, r)), l = await w(t.cacheTtlS, r) ?? c.cacheTtlS, u = await w(t.cacheKey, r) ?? c.cacheKey, f = await w(t.browserCache, r), p = z(await w(t.timeoutMs, r));
1089
- await kt(t, e, n, r);
1090
- const m = p ? new AbortController() : null, g = Wt(n.signal, m?.signal);
1091
- i = await Y(n.beClient.invoke({
1092
- op: t.op,
1093
- input: s,
1094
- ...l !== void 0 ? { cacheTtlS: l } : {},
1095
- ...u !== void 0 ? { cacheKey: u } : {},
1096
- ...f !== void 0 ? { browserCache: f } : {},
1097
- ...g ? { signal: g } : {}
1098
- }), p, () => new T("op_timeout", "The assistant took too long to respond.", {
1099
- source: "be",
1100
- sourceCode: "timeout"
1101
- }), () => m?.abort());
1102
- } catch (s) {
1103
- const c = s, l = String(c?.sourceCode || c?.code || "unknown"), u = {
1104
- type: "agentOp",
1105
- threadId: e.threadId,
1106
- sessionId: e.request?.session_id || e.request?.sessionId || e.threadId,
1107
- accountId: e.context.meta.accountId,
1108
- op: t.op,
1109
- status: "error",
1110
- latencyMs: v(o),
1111
- errorCode: l
1112
- };
1113
- if (await n.rpc("beacon.send", u), t.onError) {
1114
- t.errorOut && (e.bag[t.errorOut] = s), await $(t.onError, e, n);
1115
- return;
1116
- }
1117
- throw s;
1118
- }
1119
- t.out && (e.bag[t.out] = i), await Q(t, i, e, n.contextStore);
1120
- const a = {
1121
- type: "agentOp",
1122
- threadId: e.threadId,
1123
- sessionId: e.request?.session_id || e.request?.sessionId || e.threadId,
1124
- accountId: e.context.meta.accountId,
1125
- op: t.op,
1126
- status: "ok",
1127
- latencyMs: v(o)
1128
- };
1129
- await n.rpc("beacon.send", a);
1130
- }
1131
- function gn(t, e, n, r) {
1132
- if (!r || r.strategy !== "input-hash") return {};
1133
- const o = z(r.ttlS);
1134
- if (!o) return {};
1135
- const i = e.context.meta.locale, a = r.promptVersion || hn(n) || "current";
1136
- return {
1137
- cacheTtlS: o,
1138
- cacheKey: Ht(t.op, {
1139
- account: e.context.meta.accountId,
1140
- locale: i,
1141
- promptVersion: a,
1142
- payload: n
1143
- }, { version: "input-hash" })
1144
- };
1145
- }
1146
- function hn(t) {
1147
- if (!t || typeof t != "object" || Array.isArray(t)) return;
1148
- const e = t, n = e.prompt_version || e.promptVersion;
1149
- return typeof n == "string" && n.trim() ? n.trim() : void 0;
1150
- }
1151
- async function bn(t, e, n, r) {
1152
- const o = performance.now();
1153
- try {
1154
- await kt(t, e, n, r);
1155
- const i = z(await w(t.timeoutMs, r)), a = await Y(n.toolBridge.invoke(t.name, await w(t.input, r)), i, () => new T("tool_timeout", "The assistant tool took too long to respond.", {
1156
- source: "tool",
1157
- sourceCode: "timeout"
1158
- }));
1159
- t.out && (e.bag[t.out] = a), await Q(t, a, e, n.contextStore), await n.rpc("beacon.send", {
1160
- type: "agentTool",
1161
- threadId: e.threadId,
1162
- sessionId: Z(e),
1163
- accountId: e.context.meta.accountId,
1164
- tool: t.name,
1165
- status: "ok",
1166
- latencyMs: v(o)
1167
- });
1168
- } catch (i) {
1169
- const a = i;
1170
- if (await n.rpc("beacon.send", {
1171
- type: "agentTool",
1172
- threadId: e.threadId,
1173
- sessionId: Z(e),
1174
- accountId: e.context.meta.accountId,
1175
- tool: t.name,
1176
- status: "error",
1177
- latencyMs: v(o),
1178
- errorCode: String(a?.code || a?.name || "unknown")
1179
- }), t.onError) {
1180
- t.errorOut && (e.bag[t.errorOut] = i), await $(t.onError, e, n);
1181
- return;
1182
- }
1183
- throw i;
1184
- }
1185
- }
1186
- async function wn(t, e, n, r) {
1187
- const o = n.adapters?.[t.name];
1188
- if (typeof o != "function") throw new Error(`Unknown flow adapter: ${t.name}`);
1189
- await kt(t, e, n, r);
1190
- const i = z(await w(t.timeoutMs, r)), a = await Y(o(await w(t.input, r), r), i, () => new T("adapter_timeout", "The assistant adapter took too long to respond.", {
1191
- source: "adapter",
1192
- sourceCode: "timeout"
1193
- }));
1194
- t.out && (e.bag[t.out] = a), await Q(t, a, e, n.contextStore);
1195
- }
1196
- async function kn(t, e, n) {
1197
- const r = await t.build(R(e, n));
1198
- Ln(r, e.productSkusEmitted), n.emit(r);
1199
- }
1200
- async function An(t, e, n) {
1201
- await Q(t, void 0, e, n.contextStore);
1202
- }
1203
- async function _n(t, e, n, r) {
1204
- const o = String(await w(t.on, r) || "default");
1205
- await $(t.cases[o] || t.cases.default || [], e, n);
1206
- }
1207
- async function xn(t, e, n, r) {
1208
- if (!await t.shouldContinue(e.bag, r)) return;
1209
- const o = Math.max(0, Math.floor(Number(t.maxIterations) || 0));
1210
- let i = 0;
1211
- for (; !n.signal?.aborted && !e.committed; ) {
1212
- if (await $(t.body, e, n), n.signal?.aborted || e.committed || !await t.shouldContinue(e.bag, R(e, n)) || i >= o) return;
1213
- const a = await t.onIterate?.(e.bag, R(e, n));
1214
- a && typeof a == "object" && Object.assign(e.bag, a), i += 1;
1215
- }
1216
- }
1217
- async function Sn(t, e, n) {
1218
- const r = z(await w(t.timeoutMs, R(e, n))), o = r ? new AbortController() : null, i = Wt(n.signal, o?.signal), a = t.steps.map((l) => {
1219
- const u = {
1220
- ...e,
1221
- context: En(e.context),
1222
- bag: ct(e.bag),
1223
- productSkusEmitted: new Set(e.productSkusEmitted),
1224
- committed: !1
1225
- }, f = [];
1226
- return $(l, u, {
1227
- ...n,
1228
- emit: (p) => {
1229
- !i?.aborted && p.type !== "done" && f.push(p);
1230
- },
1231
- contextStore: In(u),
1232
- ...i ? { signal: i } : {}
1233
- }).then(() => ({
1234
- state: u,
1235
- events: f
1236
- }));
1237
- }), s = await Y(Promise.all(a), r, () => new T("parallel_timeout", "The assistant parallel step took too long to respond.", {
1238
- source: "agent",
1239
- sourceCode: "timeout"
1240
- }), () => o?.abort()), c = t.merge || {};
1241
- for (const { state: l, events: u } of s) {
1242
- for (const f of u) n.emit(f);
1243
- for (const f of l.productSkusEmitted) e.productSkusEmitted.add(f);
1244
- for (const f of c.bag || []) Object.prototype.hasOwnProperty.call(l.bag, f) && (e.bag[f] = l.bag[f]);
1245
- if (c.panel?.length) {
1246
- const f = Nt(l.context.panel, c.panel);
1247
- Object.keys(f).length && (e.context = n.contextStore.patch(e.threadId, { panel: f }) || e.context);
1248
- }
1249
- if (c.threadExtensions?.length) {
1250
- const f = Nt(l.context.thread.extensions, c.threadExtensions);
1251
- Object.keys(f).length && (e.context = n.contextStore.patch(e.threadId, { thread: {
1252
- ...e.context.thread,
1253
- extensions: f
1254
- } }) || e.context);
1255
- }
1256
- }
1257
- }
1258
- async function vn(t, e, n, r) {
1259
- n.emit(sn(await w(t.message, r), !0)), await wt(e, n);
1260
- }
1261
- async function jn(t, e, n) {
1262
- await wt(e, n);
1263
- }
1264
- async function wt(t, { contextStore: e, emit: n }) {
1265
- t.committed || (t.context = await e.commit(t.threadId) || t.context, t.committed = !0, n(Jt()));
1266
- }
1267
- async function Q(t, e, n, r) {
1268
- if (typeof t.patch != "function") return;
1269
- const o = await t.patch(n.context, e, R(n));
1270
- o && (n.context = r.patch(n.threadId, o) || n.context);
1271
- }
1272
- function R(t, e) {
1273
- return {
1274
- request: t.request,
1275
- context: t.context,
1276
- bag: t.bag,
1277
- accountConfig: t.accountConfig,
1278
- catalogMapper: t.catalogMapper,
1279
- similarityMapper: t.similarityMapper,
1280
- ...e ? {
1281
- beClient: e.beClient,
1282
- toolBridge: e.toolBridge
1283
- } : {},
1284
- ...e?.signal ? { signal: e.signal } : {}
1285
- };
1286
- }
1287
- function Z(t) {
1288
- return t.request?.session_id || t.request?.sessionId || t.threadId;
1289
- }
1290
- function Cn(t, e) {
1291
- if (!e) return !1;
1292
- const n = t.messages[t.messages.length - 1];
1293
- return n?.role !== "user" || n.content !== e;
1294
- }
1295
- function Nt(t, e) {
1296
- const n = {};
1297
- for (const r of e) Object.prototype.hasOwnProperty.call(t, r) && (n[r] = t[r]);
1298
- return n;
1299
- }
1300
- function En(t) {
1301
- return {
1302
- ...t,
1303
- panel: ct(t.panel || {}),
1304
- thread: {
1305
- ...t.thread,
1306
- extensions: ct(t.thread?.extensions || {})
1307
- },
1308
- meta: t.meta,
1309
- messages: t.messages
1310
- };
1311
- }
1312
- function In(t) {
1313
- return {
1314
- async load() {
1315
- return t.context;
1316
- },
1317
- patch(e, n) {
1318
- return t.context = Tn(t.context, n, t.messageLimit), t.context;
1319
- },
1320
- appendUserMessage() {
1321
- return t.context;
1322
- },
1323
- async commit() {
1324
- return t.context;
1325
- }
1326
- };
1327
- }
1328
- function Tn(t, e, n) {
1329
- if (!e || typeof e != "object") return t;
1330
- const r = qt(t.panel, e.panel), o = qt(t.thread?.extensions || {}, e.thread?.extensions);
1331
- return {
1332
- ...t,
1333
- ...e,
1334
- panel: r,
1335
- thread: {
1336
- ...t.thread || {},
1337
- ...e.thread || {},
1338
- extensions: o
1339
- },
1340
- meta: {
1341
- ...t.meta || {},
1342
- ...e.meta || {}
1343
- },
1344
- messages: Array.isArray(e.messages) ? G(e.messages, n) : t.messages
1345
- };
1346
- }
1347
- function qt(t, e) {
1348
- if (!e || typeof e != "object" || Array.isArray(e)) return t;
1349
- const n = {};
1350
- for (const r of Object.keys(t)) n[r] = t[r];
1351
- for (const [r, o] of Object.entries(e)) n[r] = o;
1352
- return n;
1353
- }
1354
- function ct(t) {
1355
- return new Proxy({}, {
1356
- get(e, n, r) {
1357
- if (typeof n != "string") return Reflect.get(e, n, r);
1358
- if (Object.prototype.hasOwnProperty.call(e, n)) return e[n];
1359
- const o = t[n];
1360
- if (Pn(o)) {
1361
- const i = On(o);
1362
- return e[n] = i, i;
1363
- }
1364
- return o;
1365
- },
1366
- has(e, n) {
1367
- return Reflect.has(e, n) || Reflect.has(t, n);
1368
- },
1369
- ownKeys(e) {
1370
- return Reflect.ownKeys(e);
1371
- },
1372
- getOwnPropertyDescriptor(e, n) {
1373
- return Object.getOwnPropertyDescriptor(e, n);
1374
- }
1375
- });
1376
- }
1377
- function Pn(t) {
1378
- return !!(t && typeof t == "object");
1379
- }
1380
- function On(t) {
1381
- if (typeof structuredClone == "function") try {
1382
- return structuredClone(t);
1383
- } catch {
1384
- }
1385
- try {
1386
- return JSON.parse(JSON.stringify(t));
1387
- } catch {
1388
- return t;
1389
- }
1390
- }
1391
- async function w(t, e) {
1392
- return typeof t == "function" ? await t(e) : t;
1393
- }
1394
- function z(t) {
1395
- if (t === void 0) return;
1396
- const e = Math.floor(Number(t));
1397
- return Number.isFinite(e) && e > 0 ? e : void 0;
1398
- }
1399
- async function Y(t, e, n, r) {
1400
- if (!e) return t;
1401
- let o, i = !1;
1402
- return new Promise((a, s) => {
1403
- o = setTimeout(() => {
1404
- i || (i = !0, r?.(), s(n()));
1405
- }, e), Promise.resolve(t).then((c) => {
1406
- i || (i = !0, o && clearTimeout(o), a(c));
1407
- }, (c) => {
1408
- i || (i = !0, o && clearTimeout(o), s(c));
1409
- });
1410
- });
1411
- }
1412
- function Wt(t, e) {
1413
- if (!t) return e;
1414
- if (!e || t.aborted) return t;
1415
- if (e.aborted) return e;
1416
- const n = new AbortController(), r = () => n.abort();
1417
- return t.addEventListener("abort", r, { once: !0 }), e.addEventListener("abort", r, { once: !0 }), n.signal;
1418
- }
1419
- async function kt(t, e, n, r) {
1420
- if (!t.confirm) return;
1421
- const o = await w(t.confirm, r);
1422
- if (!o) return;
1423
- const i = Bn(o, t, e);
1424
- await j(n, it("confirmation:start", e, t));
1425
- try {
1426
- const a = await n.rpc("confirmation.request", i), s = typeof a == "boolean" ? a : a?.confirmed === !0;
1427
- if (await j(n, it("confirmation:end", e, t)), s) return;
1428
- throw new T("confirmation_declined", "The requested action was not confirmed.", {
1429
- source: t.kind === "be_op" ? "be" : t.kind,
1430
- sourceCode: "confirmation_declined",
1431
- detail: a
1432
- });
1433
- } catch (a) {
1434
- throw await j(n, {
1435
- ...it("confirmation:error", e, t),
1436
- errorCode: At(a)
1437
- }), a;
1438
- }
1439
- }
1440
- function Bn(t, e, n) {
1441
- return {
1442
- ...Mn(t),
1443
- accountId: n.context.meta.accountId,
1444
- threadId: n.threadId,
1445
- sessionId: Z(n),
1446
- stepKind: e.kind,
1447
- ...e.kind === "be_op" ? { stepName: e.op } : { stepName: e.name }
1448
- };
1449
- }
1450
- function Mn(t) {
1451
- return typeof t == "string" ? { message: t } : t === !0 ? {} : t && typeof t == "object" ? {
1452
- ...typeof t.title == "string" ? { title: t.title } : {},
1453
- ...typeof t.message == "string" ? { message: t.message } : {},
1454
- ...typeof t.action == "string" ? { action: t.action } : {},
1455
- ...Object.prototype.hasOwnProperty.call(t, "payload") ? { payload: t.payload } : {}
1456
- } : {};
1457
- }
1458
- async function j(t, e) {
1459
- try {
1460
- await t.trace?.(e);
1461
- } catch {
1462
- }
1463
- }
1464
- function F(t, e) {
1465
- return {
1466
- type: t,
1467
- accountId: e.context.meta.accountId,
1468
- threadId: e.threadId,
1469
- sessionId: Z(e)
1470
- };
1471
- }
1472
- function ot(t, e, n, r) {
1473
- const o = Xt(n);
1474
- return {
1475
- ...F(t, e),
1476
- stepIndex: r,
1477
- stepKind: n.kind,
1478
- ...o ? { stepName: o } : {}
1479
- };
1480
- }
1481
- function it(t, e, n) {
1482
- const r = Xt(n);
1483
- return {
1484
- ...F(t, e),
1485
- stepKind: n.kind,
1486
- ...r ? { stepName: r } : {}
1487
- };
1488
- }
1489
- function Xt(t) {
1490
- if (t.kind === "be_op") return t.op;
1491
- if (t.kind === "tool" || t.kind === "adapter") return t.name;
1492
- }
1493
- function At(t) {
1494
- if (t && typeof t == "object") {
1495
- const e = t;
1496
- return String(e.sourceCode || e.code || e.name || "unknown");
1497
- }
1498
- return "unknown";
1499
- }
1500
- function Rn(t) {
1501
- if (t === void 0) return;
1502
- const e = Math.floor(Number(t));
1503
- return Number.isFinite(e) && e > 0 ? e : void 0;
1504
- }
1505
- function $n(t) {
1506
- const e = t?.payload;
1507
- if (typeof e == "string") return e;
1508
- if (e && typeof e == "object" && "text" in e) {
1509
- const n = e.text;
1510
- if (typeof n == "string") return n;
1511
- }
1512
- return typeof t?.action?.payload == "string" ? t.action.payload : typeof t?.action?.title == "string" ? t.action.title : "";
1513
- }
1514
- function Ln(t, e) {
1515
- const n = t, r = n.spec, o = Array.isArray(r?.items) ? r.items : void 0, i = Array.isArray(n.items) ? n.items : void 0, a = o || i;
1516
- if (Array.isArray(a)) {
1517
- for (const s of a) if (s && typeof s == "object") {
1518
- const c = s.sku;
1519
- typeof c == "string" && e.add(c);
1520
- }
1521
- }
1522
- }
1523
- function Hr(t) {
1524
- return { invoke(e, n) {
1525
- return t("tool.invoke", {
1526
- name: e,
1527
- input: n
1528
- });
1529
- } };
1530
- }
1531
- function Gr(t, e = {}) {
1532
- if (!Array.isArray(t)) return [];
1533
- const n = e.maxItems ?? 8, r = e.maxFeatures ?? 8;
1534
- return t.map((o) => Nn(o, e.defaultBrand, r)).filter((o) => !!o).slice(0, n);
1535
- }
1536
- function Nn(t, e, n) {
1537
- if (!t || typeof t != "object" || Array.isArray(t)) return null;
1538
- const r = t, o = ht(r);
1539
- return o ? Un({
1540
- sku: o.sku,
1541
- name: o.name,
1542
- url: o.url,
1543
- image: o.image,
1544
- price: o.price,
1545
- currency: o.currency,
1546
- category: o.category,
1547
- category_names: o.category_names,
1548
- brand: r.brand || e,
1549
- features: qn(r.features, n),
1550
- specs: Fn(r.specs, n),
1551
- in_stock: o.in_stock
1552
- }) : null;
1553
- }
1554
- function qn(t, e) {
1555
- return Array.isArray(t) ? t.filter(Boolean).slice(0, e) : void 0;
1556
- }
1557
- function Fn(t, e) {
1558
- if (!(!t || typeof t != "object" || Array.isArray(t)))
1559
- return Object.fromEntries(Object.entries(t).filter(([, n]) => n != null).slice(0, e));
1560
- }
1561
- function Un(t) {
1562
- return Object.fromEntries(Object.entries(t).filter(([, e]) => e != null));
1563
- }
1564
- function te(t) {
1565
- if (!t || typeof t != "object" || Array.isArray(t)) return {};
1566
- const e = t, n = Array.isArray(e.rows) ? e.rows : [];
1567
- return {
1568
- ...e,
1569
- rows: n.map(Dn).filter(Boolean)
1570
- };
1571
- }
1572
- function zn(t, e) {
1573
- const n = Array.isArray(t) ? t.filter((s) => !!(s && typeof s == "object" && !Array.isArray(s))) : [], r = te(e), o = Array.isArray(r.columns) ? r.columns.map(String) : [];
1574
- if (!o.length) return n;
1575
- const i = new Map(n.map((s) => [String(s.sku || s.id || ""), s])), a = o.map((s) => i.get(s)).filter((s) => !!s);
1576
- return a.length ? a : n;
1577
- }
1578
- function Qr(t, e) {
1579
- const n = te(t?.table), r = zn(e, n);
1580
- return {
1581
- ...t || {},
1582
- table: n,
1583
- products: r,
1584
- multiple_product_details: r
1585
- };
1586
- }
1587
- function Dn(t) {
1588
- return !t || typeof t != "object" || Array.isArray(t) ? null : Object.fromEntries(Object.entries(t).filter(([, e]) => e !== void 0));
1589
- }
1590
- function Yr(t = [], e = {}) {
1591
- const n = {}, r = [];
1592
- return (Array.isArray(t) ? t.map((o) => gt(o, e)).filter((o) => !!o) : []).forEach((o, i) => {
1593
- const a = `product-${i.toString()}`;
1594
- r.push(a);
1595
- const s = {
1596
- sku: o.sku,
1597
- product: o
1598
- };
1599
- n[a] = {
1600
- type: "ProductCard",
1601
- props: {
1602
- product: o,
1603
- index: i,
1604
- action: {
1605
- title: o.name,
1606
- type: "launchSingleProduct",
1607
- payload: s
1608
- }
1609
- }
1610
- };
1611
- }), n.root = {
1612
- type: "ProductGrid",
1613
- props: { layout: "grid" },
1614
- children: r
1615
- }, {
1616
- widget: "chat",
1617
- panelHint: "panel",
1618
- spec: {
1619
- root: "root",
1620
- elements: n
1621
- }
1622
- };
1623
- }
1624
- function Wr(t, e = {}) {
1625
- return {
1626
- widget: "chat",
1627
- panelHint: "panel",
1628
- spec: {
1629
- root: "root",
1630
- elements: { root: {
1631
- type: "ProductDetailsPanel",
1632
- props: { product: gt(t, e) || t || {} }
1633
- } }
1634
- }
1635
- };
1636
- }
1637
- function Xr(t = {}, e = {}) {
1638
- const n = (t.multiple_product_details || t.products || []).map((o) => gt(o, e)).filter((o) => !!o), r = t.table || Vn(t.comparison_table);
1639
- return {
1640
- widget: "chat",
1641
- panelHint: "panel",
1642
- spec: {
1643
- root: "root",
1644
- elements: { root: {
1645
- type: "ComparisonTable",
1646
- props: {
1647
- products: n,
1648
- recommended: n.find((o) => o.sku === t.recommended_choice_sku) || n[0],
1649
- attributes: Object.entries(r).map(([o, i]) => ({
1650
- label: o,
1651
- values: Array.isArray(i) ? i.map(String) : [String(i ?? "")]
1652
- })),
1653
- highlights: Lt(t.key_differences),
1654
- specialCases: Lt(t.special_considerations),
1655
- recommendedText: t.recommended_choice,
1656
- productActions: Object.fromEntries(n.map((o) => [o.sku, {
1657
- title: o.name,
1658
- type: "launchSingleProduct",
1659
- payload: {
1660
- sku: o.sku,
1661
- product: o
1662
- }
1663
- }]))
1664
- }
1665
- } }
1666
- }
1667
- };
1668
- }
1669
- function Vn(t) {
1670
- return Array.isArray(t) ? Object.fromEntries(t.map((e) => {
1671
- const n = typeof e?.label == "string" ? e.label.trim() : "";
1672
- return n ? [n, e.values] : null;
1673
- }).filter((e) => !!e)) : {};
1674
- }
1675
- function to(t = []) {
1676
- return {
1677
- widget: "chat",
1678
- panelHint: "inline",
1679
- spec: {
1680
- root: "root",
1681
- elements: { root: {
1682
- type: "ActionButtons",
1683
- props: { buttons: (Array.isArray(t) ? t : []).map((e) => {
1684
- const n = e.label || e.title || e.shortName || "", r = e.action || e.requestDetails || e.request_details;
1685
- return !n || !r?.type ? null : {
1686
- label: n,
1687
- action: {
1688
- title: n,
1689
- type: r.type,
1690
- ...r.payload !== void 0 ? { payload: r.payload } : {}
1691
- }
1692
- };
1693
- }).filter((e) => !!e) }
1694
- } }
1695
- }
1696
- };
1697
- }
1698
- function eo(t) {
1699
- return Object.freeze([...t]);
1700
- }
1701
- function Kn(t) {
1702
- const e = t?.payload;
1703
- if (typeof e == "string") return e;
1704
- if (e && typeof e == "object" && "text" in e) {
1705
- const r = e.text;
1706
- if (typeof r == "string") return r;
1707
- }
1708
- const n = t?.action;
1709
- return n && typeof n.payload == "string" ? n.payload : n && typeof n.title == "string" ? n.title : "";
1710
- }
1711
- var ee = [
1712
- {
1713
- pattern: /\bhttps?:\/\/[^\s?#]+(?:\?[^\s#]*)?/giu,
1714
- replacement: Zn
1715
- },
1716
- {
1717
- pattern: /\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}\b/giu,
1718
- replacement: "[email]"
1719
- },
1720
- {
1721
- pattern: /\b(?:\+?\d[\d\s().-]{7,}\d)\b/gu,
1722
- replacement: "[phone]"
1723
- },
1724
- {
1725
- pattern: /\b(?:token|secret|csrf|cookie|bearer|session|sid|cart(?:[_-]?id)?)\s*[:=]\s*[^\s,;&]+/giu,
1726
- replacement: "[secret]"
1727
- },
1728
- {
1729
- pattern: /\b(?:order|cart|session)[_-]?(?:id|no|number)?\s*[:#=]?\s*[A-Z0-9-]{6,}\b/giu,
1730
- replacement: "[secret]"
1731
- }
1732
- ], ne = { patterns: ee };
1733
- function re(t, e = ne) {
1734
- let n = typeof t == "string" ? t : t == null ? "" : String(t);
1735
- for (const r of e.patterns || []) {
1736
- const o = r.replacement;
1737
- n = typeof o == "function" ? n.replace(r.pattern, (i) => o(i)) : n.replace(r.pattern, o);
1738
- }
1739
- return n;
1740
- }
1741
- function Jn(t, e = ne) {
1742
- return re(Kn(t), e);
1743
- }
1744
- function Zn(t) {
1745
- try {
1746
- const e = new URL(t);
1747
- return `${e.origin}${e.pathname}${e.search ? "?[query]" : ""}`;
1748
- } catch {
1749
- return "[url]";
1750
- }
1751
- }
1752
- var Hn = [
1753
- "assistantName",
1754
- "homeDomain",
1755
- "categories",
1756
- "policyTopics"
1757
- ], Gn = { intent: ["searchContract", "competitorBrands"] };
1758
- function no(t, e, n, r = {}) {
1759
- const o = Qn(e, n, r);
1760
- return Object.keys(o).length ? {
1761
- ...t,
1762
- account_config: o
1763
- } : t;
1764
- }
1765
- function Qn(t, e, n = {}) {
1766
- if (!t) return {};
1767
- const r = {}, o = n.baseKeys || Hn;
1768
- for (const s of o) Ft(r, t, s);
1769
- const i = t[e];
1770
- i && typeof i == "object" && !Array.isArray(i) && Object.assign(r, Yn(i));
1771
- const a = n.opAllowlist || Gn;
1772
- for (const s of a[e] || []) Ft(r, t, s);
1773
- return r;
1774
- }
1775
- function Ft(t, e, n) {
1776
- e[n] !== void 0 && (t[n] = e[n]);
1777
- }
1778
- function Yn(t) {
1779
- return Object.fromEntries(Object.entries(t).filter(([, e]) => e !== void 0));
1780
- }
1781
- var Wn = "input-hash";
1782
- function Xn({ ttlS: t, promptVersion: e = "current" } = {}) {
1783
- if (!Number.isFinite(t) || t <= 0) throw new Error("inputHashCachePolicy requires a positive ttlS");
1784
- return {
1785
- strategy: Wn,
1786
- ttlS: t,
1787
- promptVersion: e
1788
- };
1789
- }
1790
- function tr({ accountId: t = "", op: e, ttlS: n, promptVersion: r = "current", input: o, keyParts: i, locale: a } = {}) {
1791
- if (!e) throw new Error("declarativeBeOpCache requires an op");
1792
- return {
1793
- cache: Xn({
1794
- ttlS: n,
1795
- promptVersion: r
1796
- }),
1797
- cacheTtlS: n,
1798
- cacheKey: (s = {}) => Ht(e, {
1799
- account: t,
1800
- locale: at(a, s) || s.context?.meta?.locale || s.locale || "",
1801
- promptVersion: r,
1802
- payload: ut(at(o, s)),
1803
- ...er(at(i, s))
1804
- })
1805
- };
1806
- }
1807
- function ro(t, e = {}) {
1808
- return !t || t.kind !== "be_op" ? t : {
1809
- ...t,
1810
- ...tr({
1811
- op: t.op,
1812
- ttlS: t.cacheTtlS,
1813
- input: t.input,
1814
- ...e
1815
- })
1816
- };
1817
- }
1818
- function at(t, e) {
1819
- return typeof t == "function" ? t(e) : t;
1820
- }
1821
- function ut(t) {
1822
- return Array.isArray(t) ? t.map(ut) : !t || typeof t != "object" ? t : Object.fromEntries(Object.entries(t).filter(([, e]) => e !== void 0).sort(([e], [n]) => e.localeCompare(n)).map(([e, n]) => [e, ut(n)]));
1823
- }
1824
- function er(t) {
1825
- return !t || typeof t != "object" || Array.isArray(t) ? {} : Object.fromEntries(Object.entries(t).filter(([, e]) => e != null));
1826
- }
1827
- var oo = Object.freeze({
1828
- FALLBACK_RESULTS: "fallback_results",
1829
- FALLBACK_NO_RESULTS: "fallback_no_results",
1830
- FALLBACK_PARTIAL: "fallback_partial",
1831
- OP_UNAVAILABLE: "op_unavailable"
1832
- });
1833
- function io(t, e = {}) {
1834
- return {
1835
- status: t,
1836
- ...e
1837
- };
1838
- }
1839
- function ao(t) {
1840
- return !!(t && typeof t == "object" && typeof t.status == "string");
1841
- }
1842
- function so(t) {
1843
- return function() {
1844
- return [{
1845
- kind: "tool",
1846
- name: "readPage",
1847
- input: () => ({}),
1848
- out: "page",
1849
- patch: (n, r) => r?.product && typeof t == "function" ? t(n, r.product) : null,
1850
- onError: []
1851
- }];
1852
- };
1853
- }
1854
- function co(t) {
1855
- return !t || typeof t != "object" || Array.isArray(t) ? {} : Object.fromEntries(Object.entries(t).filter(([, e]) => e != null && e !== "" && (!Array.isArray(e) || e.length > 0)));
1856
- }
1857
- function uo(t, { screenSummary: e } = {}) {
1858
- return { panel: {
1859
- ...t?.panel || {},
1860
- screen_type: "homepage",
1861
- screen_sku_list: [],
1862
- screen_summary: e || null,
1863
- last_search_products: [],
1864
- last_search: null,
1865
- chat_mentioned_skus: [],
1866
- reviews_summary_skus: [],
1867
- ai_plist_summary: null,
1868
- search_suggestions_skus: [],
1869
- list_source: null,
1870
- active_product_panel: !1,
1871
- assistant_mode: "shopping",
1872
- redirected_agent_state: null,
1873
- ui_hints: null
1874
- } };
1875
- }
1876
- function nr({ patterns: t, messageFilter: e, messageNormalizer: n = (o) => o, messageLimit: r = 10 } = {}) {
1877
- const o = { patterns: [...ee, ...Array.isArray(t) ? t : []] };
1878
- function i(c) {
1879
- return re(c, o);
1880
- }
1881
- function a(c) {
1882
- return Jn(c, o);
1883
- }
1884
- function s(c = []) {
1885
- const l = (Array.isArray(c) ? c : []).filter((u) => typeof e == "function" ? e(u) : u && typeof u == "object").filter(Boolean);
1886
- return (Number.isFinite(r) && r > 0 ? l.slice(-r) : l).map((u) => ({
1887
- role: u.role,
1888
- content: i(n(u.content)).slice(0, 1e3)
1889
- }));
1890
- }
1891
- return {
1892
- redactPii: i,
1893
- anonymousRequestText: a,
1894
- anonymizeMessages: s
1895
- };
1896
- }
1897
- function lo(t) {
1898
- return String(t || "").replace(/<script\b[\s\S]*?<\/script>/giu, " ").replace(/<style\b[\s\S]*?<\/style>/giu, " ").replace(/<[^>]+>/gu, " ").replace(/&nbsp;/giu, " ").replace(/&amp;/giu, "&").replace(/&lt;|&gt;/giu, " ").replace(/\s+/gu, " ").trim();
1899
- }
1900
- var k = {
1901
- features: 18,
1902
- reviews: 4,
1903
- qna: 4,
1904
- sellers: 4,
1905
- variants: 12,
1906
- documents: 6,
1907
- textBlocks: 6,
1908
- relatedProducts: 8,
1909
- textChars: 220
1910
- }, _t = {
1911
- description: /\b(?:description|details|product information|urun bilgisi|urun aciklamasi|açıklama|aciklama)\b/iu,
1912
- seller: /\b(?:seller|merchant|store|satici|satıcı|magaza|mağaza)\b/iu,
1913
- review: /\b(?:review|reviews|rating|ratings|yorum|degerlendirme|değerlendirme|puan)\b/iu,
1914
- qna: /\b(?:questions?|answers?|qna|q&a|soru|cevap)\b/iu,
1915
- payment: /\b(?:installment|instalment|payment|pay in|taksit|odeme|ödeme|vade)\b/iu,
1916
- delivery: /\b(?:delivery|shipping|cargo|stock|availability|teslimat|kargo|stok|gonderim|gönderim)\b/iu,
1917
- promotion: /\b(?:campaign|promotion|discount|coupon|deal|kampanya|indirim|kupon|firsat|fırsat)\b/iu,
1918
- variant: /\b(?:variant|size|colour|color|beden|olcu|ölçü|renk|numara)\b/iu
1919
- }, rr = /[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}|\+?\d[\d\s().-]{8,}\d|\b[A-Z]{1,2}\d[A-Z\d]?\s*\d[A-Z]{2}\b|\b(?:token|session|csrf|secret)\s*[:=]\s*[\w.-]+/giu, or = /(?:token|session|sid|auth|code|csrf|secret|key|password|passwd|phone|email|address|postcode|zip|jwt|bearer)/iu, ir = /[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}|\+?\d[\d\s().-]{8,}\d|[A-Z]{1,2}\d[A-Z\d]?\s*\d[A-Z]{2}|[A-Za-z0-9_-]{24,}/iu;
1920
- function fo({ accountId: t, getPageType: e, getProduct: n, getProducts: r, normalizeProduct: o = (i) => i }) {
1921
- return (i = {}) => ar({
1922
- accountId: t,
1923
- getPageType: e,
1924
- getProduct: n,
1925
- getProducts: r,
1926
- normalizeProduct: o,
1927
- input: i
1928
- });
1929
- }
1930
- function ar({ accountId: t, getPageType: e, getProduct: n, getProducts: r, normalizeProduct: o = (a) => a, input: i = {} }) {
1931
- const a = Or(i), s = o(i.product || st(n)), c = (st(r) || []).map(o).filter(Boolean), l = b(i.sku || s?.sku || i.product?.sku), u = l ? c.find((tt) => b(tt?.sku) === l) || s : s || c[0] || null, f = ur(l || u?.sku), p = Ut({
1932
- ...f.product,
1933
- ...u
1934
- }), m = jt(J(u?.features), J(u?.specs), Ar(u?.facet_hits), J(f.product?.features), fr(), dr(), pr()).slice(0, a.features), g = ie(W(u?.reviews), f.reviews, mr()).slice(0, a.reviews), _ = ae(xt(u?.qna), yr()).slice(0, a.qna), C = se(St(u?.sellers), gr()).slice(0, a.sellers), P = B([...u?.payment || [], ...K("payment", a)]), O = B([...u?.delivery || [], ...K("delivery", a)]), Ct = B([...u?.promotions || [], ...K("promotion", a)]), Et = ce(vt(u?.variants), hr()).slice(0, a.variants), It = br(a.documents), Tt = le(u?.description, f.product?.description, wr("description"), K("description", {
1935
- ...a,
1936
- textBlocks: 2
1937
- })[0]), Pt = c.filter((tt) => !l || b(tt?.sku) !== l).map(Ut).filter(Boolean).slice(0, a.relatedProducts);
1938
- return L({
1939
- accountId: t,
1940
- pageType: st(e) || "other",
1941
- url: Pr(),
1942
- product: p,
1943
- description: Tt,
1944
- features: m,
1945
- sellers: C,
1946
- reviews: g,
1947
- qna: _,
1948
- rating: A(u?.rating ?? f.rating),
1949
- review_count: A(u?.review_count ?? f.review_count),
1950
- payment: P,
1951
- delivery: O,
1952
- promotions: Ct,
1953
- variants: Et,
1954
- documents: It,
1955
- related_products: Pt,
1956
- capabilities: Cr({
1957
- description: Tt,
1958
- features: m,
1959
- sellers: C,
1960
- reviews: g,
1961
- qna: _,
1962
- payment: P,
1963
- delivery: O,
1964
- promotions: Ct,
1965
- variants: Et,
1966
- documents: It,
1967
- relatedProducts: Pt
1968
- }),
1969
- privacy: {
1970
- browserLocal: !0,
1971
- rawHtml: !1,
1972
- formValues: !1,
1973
- cookies: !1,
1974
- storage: !1,
1975
- redacted: !0
1976
- }
1977
- });
1978
- }
1979
- function po(t, e) {
1980
- const n = Array.isArray(t) ? t.filter(Boolean) : [];
1981
- if (!e || typeof e != "object" || !n.length) return n;
1982
- const r = b(e.product?.sku);
1983
- return n.map((o, i) => {
1984
- const a = b(o?.sku);
1985
- return n.length === 1 || r && a && r === a || i === 0 ? cr(o, e) : o;
1986
- });
1987
- }
1988
- function sr(t) {
1989
- return !t || typeof t != "object" ? null : L({
1990
- product: t.product,
1991
- description: y(t.description, 500),
1992
- features: _r(t.features, 14),
1993
- sellers: vr(t.sellers, 4),
1994
- reviews: xr(t.reviews, 4),
1995
- qna: Sr(t.qna, 4),
1996
- rating: t.rating,
1997
- review_count: t.review_count,
1998
- payment: I(t.payment, 5, 160),
1999
- delivery: I(t.delivery, 5, 160),
2000
- promotions: I(t.promotions, 5, 160),
2001
- variants: jr(t.variants, 10),
2002
- documents: I(t.documents, 5, 220),
2003
- capabilities: Array.isArray(t.capabilities) ? t.capabilities.slice(0, 12) : void 0
2004
- });
2005
- }
2006
- function mo(t, e, n = {}) {
2007
- const r = sr(t);
2008
- if (!r) return e;
2009
- const o = String(n.locale || "").toLowerCase().startsWith("en"), i = [], a = [r.rating ? `${r.rating}/5` : "", r.review_count ? `${r.review_count} ${o ? "reviews" : "yorum"}` : ""].filter(Boolean).join(", ");
2010
- return a && i.push(o ? `Visible rating: ${a}.` : `Görünür puan bilgisi: ${a}.`), r.reviews?.length && i.push(`${o ? "Visible review highlights" : "Görünür yorumlardan öne çıkanlar"}: ${r.reviews.map((s) => [s.star ? `${s.star}/5` : "", s.content].filter(Boolean).join(" ")).filter(Boolean).slice(0, 3).join(" | ")}.`), i.length ? (i.push(o ? "This summary only uses product review and rating fields visible in the browser." : "Bu özet yalnızca tarayıcıda görünen ürün yorumu ve puan alanlarından hazırlandı."), i.join(" ")) : e;
2011
- }
2012
- function cr(t, e) {
2013
- return L({
2014
- ...t,
2015
- description: le(t.description, e.description),
2016
- features: jt(J(t.features), e.features).slice(0, 24),
2017
- specs: t.specs || (e.features?.length ? Object.fromEntries(e.features.map(Er)) : void 0),
2018
- sellers: se(St(t.sellers), e.sellers),
2019
- reviews: ie(W(t.reviews), e.reviews),
2020
- qna: ae(xt(t.qna), e.qna),
2021
- rating: t.rating ?? e.rating,
2022
- review_count: t.review_count ?? e.review_count,
2023
- payment: B([...t.payment || [], ...e.payment || []]),
2024
- delivery: B([...t.delivery || [], ...e.delivery || []]),
2025
- promotions: B([...t.promotions || [], ...e.promotions || []]),
2026
- variants: ce(vt(t.variants), e.variants),
2027
- documents: B([...t.documents || [], ...e.documents || []])
2028
- });
2029
- }
2030
- function ur(t) {
2031
- const e = [];
2032
- for (const o of x('script[type="application/ld+json"]')) {
2033
- const i = lr(o.textContent);
2034
- for (const a of lt(i))
2035
- String(a?.["@type"] || "").toLowerCase() === "product" && e.push(a);
2036
- }
2037
- const n = e.find((o) => b(o.sku || o.productID || o.mpn) === b(t)) || e[0];
2038
- if (!n) return {};
2039
- const r = n.aggregateRating || {};
2040
- return {
2041
- product: L({
2042
- sku: b(n.sku || n.productID || n.mpn),
2043
- name: d(n.name),
2044
- brand: d(n.brand?.name || n.brand),
2045
- description: d(n.description),
2046
- images: I(n.image, 8, 280),
2047
- url: D(n.url),
2048
- rating: A(r.ratingValue),
2049
- review_count: A(r.reviewCount || r.ratingCount)
2050
- }),
2051
- reviews: W(n.review),
2052
- rating: A(r.ratingValue),
2053
- review_count: A(r.reviewCount || r.ratingCount)
2054
- };
2055
- }
2056
- function lt(t) {
2057
- return Array.isArray(t) ? t.flatMap(lt) : !t || typeof t != "object" ? [] : [t, ...lt(t["@graph"])];
2058
- }
2059
- function lr(t) {
2060
- try {
2061
- return JSON.parse(String(t || ""));
2062
- } catch {
2063
- return null;
2064
- }
2065
- }
2066
- function fr() {
2067
- const t = [];
2068
- for (const e of x("table tr")) {
2069
- const n = [...e.querySelectorAll?.("th,td") || []].map((r) => d(r.textContent));
2070
- n.length >= 2 && n[0] && n[1] && t.push({
2071
- key: n[0],
2072
- value: n.slice(1).join(" ")
2073
- });
2074
- }
2075
- return t;
2076
- }
2077
- function dr() {
2078
- const t = [];
2079
- for (const e of x("dt")) {
2080
- const n = d(e.textContent), r = d(e.nextElementSibling?.matches?.("dd") ? e.nextElementSibling.textContent : "");
2081
- n && r && t.push({
2082
- key: n,
2083
- value: r
2084
- });
2085
- }
2086
- return t;
2087
- }
2088
- function pr() {
2089
- return x('[class*="spec" i], [class*="feature" i], [class*="attribute" i], li').map((t) => oe(d(t.textContent))).filter(Boolean).slice(0, k.features);
2090
- }
2091
- function mr() {
2092
- return x('[class*="review" i], [data-review], [itemprop="review"]').map((t) => {
2093
- const e = d(t.textContent);
2094
- return !e || e.length < 8 || _t.qna.test(e) ? null : {
2095
- content: y(e, 260),
2096
- star: A(t.getAttribute?.("data-rating"))
2097
- };
2098
- }).filter(Boolean);
2099
- }
2100
- function yr() {
2101
- const t = x('[class*="question" i], [class*="answer" i], [data-question], [data-answer]'), e = [];
2102
- for (const n of t) {
2103
- const r = d(n.textContent);
2104
- if (!r || !_t.qna.test(r)) continue;
2105
- const o = d(n.getAttribute?.("data-question") || r), i = d(n.getAttribute?.("data-answer") || n.nextElementSibling?.textContent || "");
2106
- e.push({
2107
- question: y(o, 220),
2108
- answer: y(i, 260)
2109
- });
2110
- }
2111
- return e;
2112
- }
2113
- function gr() {
2114
- return x('[class*="seller" i], [class*="merchant" i], [data-seller], [data-merchant]').map((t) => d(t.getAttribute?.("data-seller") || t.getAttribute?.("data-merchant") || t.textContent)).filter(Boolean).map((t) => ({ merchant: y(t, 120) }));
2115
- }
2116
- function hr() {
2117
- return x('[class*="variant" i] a,[class*="variant" i] button,[class*="size" i] button,[class*="color" i] button,[data-variant],[data-size],[data-color]').map((t) => L({
2118
- name: y(fe(t), 120),
2119
- value: y(t.getAttribute?.("data-value") || t.getAttribute?.("data-size") || t.getAttribute?.("data-color"), 120),
2120
- sku: b(t.getAttribute?.("data-sku") || t.getAttribute?.("data-product-id")),
2121
- url: D(t.getAttribute?.("href")),
2122
- in_stock: t.getAttribute?.("disabled") == null && t.getAttribute?.("aria-disabled") !== "true"
2123
- })).filter((t) => t.name || t.value || t.sku);
2124
- }
2125
- function br(t) {
2126
- return x("a[href]").filter((e) => /\.pdf(?:$|[?#])/iu.test(e.getAttribute?.("href") || "")).map((e) => {
2127
- const n = fe(e) || "PDF", r = D(e.getAttribute?.("href"));
2128
- return r ? `${n}: ${r}` : "";
2129
- }).filter(Boolean).slice(0, t);
2130
- }
2131
- function K(t, e) {
2132
- const n = _t[t];
2133
- return n ? x("section,article,div,li,p,span,button,a").map((r) => d(r.textContent)).filter((r) => r && n.test(r) && r.length <= 900).map((r) => y(r, e.textChars || k.textChars)).filter(ue()).slice(0, e.textBlocks || k.textBlocks) : [];
2134
- }
2135
- function wr(t) {
2136
- return d(document.querySelector?.(`meta[name="${t}"]`)?.getAttribute?.("content") || document.querySelector?.(`meta[property="og:${t}"]`)?.getAttribute?.("content"));
2137
- }
2138
- function x(t) {
2139
- try {
2140
- return [...document.querySelectorAll?.(t) || []].filter(kr);
2141
- } catch {
2142
- return [];
2143
- }
2144
- }
2145
- function kr(t) {
2146
- if (!t) return !1;
2147
- if (!t.getBoundingClientRect) return !0;
2148
- const e = t.getBoundingClientRect();
2149
- if (e.width <= 0 || e.height <= 0) return !1;
2150
- const n = window.getComputedStyle?.(t);
2151
- return !n || n.visibility !== "hidden" && n.display !== "none" && Number(n.opacity || 1) > 0;
2152
- }
2153
- function J(t) {
2154
- return t ? (Array.isArray(t) ? t : Object.entries(t).map(([e, n]) => ({
2155
- key: e,
2156
- value: n
2157
- }))).map((e) => typeof e == "string" ? oe(e) || {
2158
- key: "",
2159
- value: d(e)
2160
- } : {
2161
- key: d(e.key || e.name || e.label),
2162
- value: d(e.value || e.text || "")
2163
- }).filter((e) => e.key || e.value) : [];
2164
- }
2165
- function Ar(t) {
2166
- return !t || typeof t != "object" ? [] : Object.entries(t).map(([e, n]) => ({
2167
- key: d(e),
2168
- value: d(n)
2169
- }));
2170
- }
2171
- function oe(t) {
2172
- const e = /^(.{2,80}?)\s*[::]\s*(.{1,220})$/u.exec(d(t));
2173
- return e ? {
2174
- key: e[1],
2175
- value: e[2]
2176
- } : null;
2177
- }
2178
- function W(t) {
2179
- return (Array.isArray(t) ? t : t ? [t] : []).map((e) => typeof e == "string" ? { content: y(e, 260) } : {
2180
- content: y(e.content || e.reviewBody || e.description || e.text, 260),
2181
- star: A(e.star || e.rating || e.reviewRating?.ratingValue)
2182
- }).filter((e) => e.content || e.star);
2183
- }
2184
- function xt(t) {
2185
- return (Array.isArray(t) ? t : t ? [t] : []).map((e) => ({
2186
- question: y(e.question || e.name || "", 220),
2187
- answer: y(e.answer || e.acceptedAnswer?.text || e.text || "", 260)
2188
- })).filter((e) => e.question || e.answer);
2189
- }
2190
- function St(t) {
2191
- return (Array.isArray(t) ? t : t ? [t] : []).map((e) => typeof e == "string" ? { merchant: y(e, 120) } : {
2192
- merchant: y(e.merchant || e.name || e.seller || "", 120),
2193
- merchant_id: b(e.merchant_id || e.id || ""),
2194
- merchant_rating: A(e.merchant_rating || e.rating),
2195
- price_offer: A(e.price_offer || e.price)
2196
- }).filter((e) => e.merchant || e.merchant_id);
2197
- }
2198
- function vt(t) {
2199
- return (Array.isArray(t) ? t : t ? [t] : []).map((e) => ({
2200
- name: y(e.name || e.label || e.title || "", 120),
2201
- value: y(e.value || e.size || e.color || "", 120),
2202
- sku: b(e.sku || e.code || ""),
2203
- url: D(e.url),
2204
- in_stock: e.in_stock
2205
- })).filter((e) => e.name || e.value || e.sku || e.url);
2206
- }
2207
- function jt(...t) {
2208
- const e = /* @__PURE__ */ new Set(), n = [];
2209
- for (const r of t.flat().filter(Boolean)) {
2210
- const o = {
2211
- key: y(r.key || r.name || "", 90),
2212
- value: y(r.value || r.text || "", 180)
2213
- }, i = `${o.key}:${o.value}`.toLocaleLowerCase("tr-TR");
2214
- !o.key && !o.value || e.has(i) || (e.add(i), n.push(o));
2215
- }
2216
- return n;
2217
- }
2218
- function ie(...t) {
2219
- return X(t.flat().filter(Boolean), (e) => `${e.star || ""}:${e.content || ""}`);
2220
- }
2221
- function ae(...t) {
2222
- return X(t.flat().filter(Boolean), (e) => `${e.question || ""}:${e.answer || ""}`);
2223
- }
2224
- function se(...t) {
2225
- return X(t.flat().filter(Boolean), (e) => `${e.merchant || ""}:${e.merchant_id || ""}`);
2226
- }
2227
- function ce(...t) {
2228
- return X(t.flat().filter(Boolean), (e) => `${e.sku || ""}:${e.name || ""}:${e.value || ""}`);
2229
- }
2230
- function X(t, e) {
2231
- const n = /* @__PURE__ */ new Set();
2232
- return t.filter((r) => {
2233
- const o = e(r).toLocaleLowerCase("tr-TR");
2234
- return !o.trim() || n.has(o) ? !1 : (n.add(o), !0);
2235
- });
2236
- }
2237
- function B(t) {
2238
- return I(t, 20, k.textChars);
2239
- }
2240
- function I(t, e, n) {
2241
- return (Array.isArray(t) ? t : t ? [t] : []).map((r) => y(r, n)).filter(Boolean).filter(ue()).slice(0, e);
2242
- }
2243
- function ue() {
2244
- const t = /* @__PURE__ */ new Set();
2245
- return (e) => {
2246
- const n = d(e).toLocaleLowerCase("tr-TR");
2247
- return !n || t.has(n) ? !1 : (t.add(n), !0);
2248
- };
2249
- }
2250
- function _r(t, e) {
2251
- return jt(t).slice(0, e);
2252
- }
2253
- function xr(t, e) {
2254
- return W(t).slice(0, e);
2255
- }
2256
- function Sr(t, e) {
2257
- return xt(t).slice(0, e);
2258
- }
2259
- function vr(t, e) {
2260
- return St(t).slice(0, e);
2261
- }
2262
- function jr(t, e) {
2263
- return vt(t).slice(0, e);
2264
- }
2265
- function Ut(t) {
2266
- return !t || typeof t != "object" ? null : L({
2267
- sku: b(t.sku || t.id || ""),
2268
- group_id: b(t.group_id || t.groupId || ""),
2269
- name: d(t.name || t.title || ""),
2270
- brand: d(t.brand || ""),
2271
- url: D(t.url),
2272
- images: I(t.images || t.image, 8, 280),
2273
- price: A(t.price),
2274
- price_discounted: A(t.price_discounted || t.discountedPrice),
2275
- price_text: d(t.price_text || t.priceText || ""),
2276
- price_currency: d(t.price_currency || t.currency || ""),
2277
- category_ids: Ir(t.category_ids || t.categoryIds, 8, 90),
2278
- category_names: I(t.category_names || t.categoryNames || t.category, 8, 140),
2279
- in_stock: t.in_stock
2280
- });
2281
- }
2282
- function Cr(t) {
2283
- return [
2284
- t.description ? "description" : "",
2285
- t.features?.length ? "features" : "",
2286
- t.sellers?.length ? "seller" : "",
2287
- t.reviews?.length || t.rating || t.review_count ? "reviews_ratings" : "",
2288
- t.qna?.length ? "qna" : "",
2289
- t.payment?.length ? "installment_payment" : "",
2290
- t.delivery?.length ? "shipping_delivery_stock" : "",
2291
- t.promotions?.length ? "campaigns_promotions" : "",
2292
- t.variants?.length ? "variants" : "",
2293
- t.documents?.length ? "documents" : "",
2294
- t.relatedProducts?.length ? "related_products" : ""
2295
- ].filter(Boolean);
2296
- }
2297
- function Er(t) {
2298
- return [d(t.key || t.name), d(t.value || t.text)];
2299
- }
2300
- function le(...t) {
2301
- return t.map((e) => y(e, 700)).find(Boolean) || "";
2302
- }
2303
- function y(t, e) {
2304
- return d(t).slice(0, e);
2305
- }
2306
- function fe(t) {
2307
- return d(t.getAttribute?.("aria-label") || t.getAttribute?.("title") || t.getAttribute?.("alt") || t.textContent);
2308
- }
2309
- function d(t) {
2310
- return String(t ?? "").replace(/<script\b[\s\S]*?<\/script>/giu, " ").replace(/<style\b[\s\S]*?<\/style>/giu, " ").replace(/<[^>]+>/gu, " ").replace(rr, "[redacted]").replace(/\s+/gu, " ").trim();
2311
- }
2312
- function b(t) {
2313
- const e = String(t ?? "").replace(/<script\b[\s\S]*?<\/script>/giu, " ").replace(/<style\b[\s\S]*?<\/style>/giu, " ").replace(/<[^>]+>/gu, " ").replace(/\s+/gu, " ").trim();
2314
- return !e || /[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}/iu.test(e) || /\b(?:token|session|csrf|secret|password|passwd|jwt|bearer)\s*[:=]\s*[\w.-]+/iu.test(e) ? "" : e.slice(0, 120);
2315
- }
2316
- function Ir(t, e, n) {
2317
- return (Array.isArray(t) ? t : t ? [t] : []).map((r) => b(r).slice(0, n)).filter(Boolean).filter(Tr()).slice(0, e);
2318
- }
2319
- function Tr() {
2320
- const t = /* @__PURE__ */ new Set();
2321
- return (e) => {
2322
- const n = b(e).toLocaleLowerCase("tr-TR");
2323
- return !n || t.has(n) ? !1 : (t.add(n), !0);
2324
- };
2325
- }
2326
- function A(t) {
2327
- const e = Number(String(t ?? "").replace(",", "."));
2328
- return Number.isFinite(e) && e > 0 ? e : void 0;
2329
- }
2330
- function D(t) {
2331
- if (!t) return "";
2332
- try {
2333
- const e = new URL(t, window.location.href);
2334
- return /^https?:$/u.test(e.protocol) ? (e.hash = "", de(e), e.href) : "";
2335
- } catch {
2336
- return "";
2337
- }
2338
- }
2339
- function Pr() {
2340
- try {
2341
- const t = new URL(window.location.href);
2342
- return t.hash = "", de(t), `${t.origin}${t.pathname}${t.search}`;
2343
- } catch {
2344
- return "";
2345
- }
2346
- }
2347
- function de(t) {
2348
- for (const [e, n] of [...t.searchParams.entries()]) {
2349
- const r = String(n || "");
2350
- (or.test(e) || ir.test(r)) && t.searchParams.set(e, "redacted");
2351
- }
2352
- return t;
2353
- }
2354
- function Or(t = {}) {
2355
- return {
2356
- features: S(t.maxFeatures, k.features, 40),
2357
- reviews: S(t.maxReviews, k.reviews, 12),
2358
- qna: S(t.maxQna, k.qna, 12),
2359
- sellers: S(t.maxSellers, k.sellers, 12),
2360
- variants: S(t.maxVariants, k.variants, 30),
2361
- documents: S(t.maxDocuments, k.documents, 12),
2362
- textBlocks: S(t.maxTextBlocks, k.textBlocks, 16),
2363
- relatedProducts: S(t.maxRelatedProducts, k.relatedProducts, 20),
2364
- textChars: S(t.textChars, k.textChars, 420)
2365
- };
2366
- }
2367
- function S(t, e, n) {
2368
- const r = Number(t);
2369
- return !Number.isFinite(r) || r <= 0 ? e : Math.min(Math.floor(r), n);
2370
- }
2371
- function st(t) {
2372
- try {
2373
- return typeof t == "function" ? t() : null;
2374
- } catch {
2375
- return null;
2376
- }
2377
- }
2378
- function L(t) {
2379
- return Object.fromEntries(Object.entries(t || {}).filter(([, e]) => e != null && e !== "" && (!Array.isArray(e) || e.length)));
2380
- }
2381
- var { redactPii: yo, anonymousRequestText: go, anonymizeMessages: ho } = nr({ patterns: [{
2382
- pattern: /\b\d{5}\b/gu,
2383
- replacement: "[postcode]"
2384
- }, {
2385
- pattern: /\b(?:adresim|adres|mahalle|sokak|cadde)\b[^,.!?\n]{8,160}/giu,
2386
- replacement: "[address]"
2387
- }] });
2388
- function Br(t) {
2389
- return (t?.route?.flow_params && typeof t.route.flow_params == "object" ? t.route.flow_params : null) || (t?.route?.flowParams && typeof t.route.flowParams == "object" ? t.route.flowParams : null) || {};
2390
- }
2391
- function bo(t) {
2392
- return Array.isArray(t) ? t.find((e) => String(e || "").trim()) : void 0;
2393
- }
2394
- function wo(t) {
2395
- const e = Br(t);
2396
- return [
2397
- ...e.sku ? [e.sku] : [],
2398
- ...Array.isArray(e.sku_list) ? e.sku_list : [],
2399
- ...Array.isArray(e.skus) ? e.skus : [],
2400
- ...Array.isArray(e.target_skus) ? e.target_skus : []
2401
- ].map((n) => String(n || "").trim()).filter(Boolean).filter((n, r, o) => o.indexOf(n) === r);
2402
- }
2403
- export {
2404
- Fr as $,
2405
- eo as A,
2406
- Zr as B,
2407
- Qn as C,
2408
- ee as D,
2409
- ne as E,
2410
- zn as F,
2411
- Jr as G,
2412
- Kr as H,
2413
- Qr as I,
2414
- Dr as J,
2415
- gt as K,
2416
- te as L,
2417
- Xr as M,
2418
- Wr as N,
2419
- re as O,
2420
- Yr as P,
2421
- cn as Q,
2422
- Gr as R,
2423
- ro as S,
2424
- Jn as T,
2425
- Vr as U,
2426
- Ht as V,
2427
- Gt as W,
2428
- zr as X,
2429
- un as Y,
2430
- Jt as Z,
2431
- oo as _,
2432
- ge as _t,
2433
- go as a,
2434
- Nr as at,
2435
- tr as b,
2436
- fo as c,
2437
- Ge as ct,
2438
- mo as d,
2439
- v as dt,
2440
- sn as et,
2441
- nr as f,
2442
- Le as ft,
2443
- so as g,
2444
- $e as gt,
2445
- co as h,
2446
- $r as ht,
2447
- ho as i,
2448
- Kt as it,
2449
- to as j,
2450
- Kn as k,
2451
- ar as l,
2452
- Lr as lt,
2453
- uo as m,
2454
- Se as mt,
2455
- Br as n,
2456
- qr as nt,
2457
- yo as o,
2458
- tn as ot,
2459
- lo as p,
2460
- Rr as pt,
2461
- ht as q,
2462
- wo as r,
2463
- T as rt,
2464
- sr as s,
2465
- Qe as st,
2466
- bo as t,
2467
- Ur as tt,
2468
- po as u,
2469
- Dt as ut,
2470
- io as v,
2471
- he as vt,
2472
- no as w,
2473
- Xn as x,
2474
- ao as y,
2475
- Hr as z
2476
- };