@pluno/product-agent-web 0.1.251 → 0.1.252
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.
|
@@ -438,7 +438,7 @@ function ea(t) {
|
|
|
438
438
|
e ^= t.charCodeAt(n), e = Math.imul(e, 16777619);
|
|
439
439
|
return `fnv1a-${(e >>> 0).toString(16).padStart(8, "0")}`;
|
|
440
440
|
}
|
|
441
|
-
const Bs = "0.1.
|
|
441
|
+
const Bs = "0.1.252", od = {
|
|
442
442
|
version: Bs
|
|
443
443
|
};
|
|
444
444
|
function Tp(t, e, n, i, s = {}) {
|
|
@@ -837,8 +837,8 @@ function zp(t, e, n, i) {
|
|
|
837
837
|
if (n.clients[e.clientScopeId] !== e.conversationScopeId) throw new Error("Submission selection has changed.");
|
|
838
838
|
const { type: r, authorityId: c, generation: l, prepareContext: p, ...d } = e, h = t.submissions[e.userMessageId];
|
|
839
839
|
if (h) {
|
|
840
|
-
const { contextPreparation: _, requestedModel: v, sessionId: E, delivery: L, cancelled: K, cancellationReason: U, error: ge, executionVersion: G, ...
|
|
841
|
-
if (as(
|
|
840
|
+
const { contextPreparation: _, requestedModel: v, sessionId: E, delivery: L, cancelled: K, cancellationReason: U, error: ge, executionVersion: G, ...M } = h;
|
|
841
|
+
if (as(M) !== as(d)) throw new Error("User-message identity cannot be reused with different input.");
|
|
842
842
|
return { state: t, effects: o };
|
|
843
843
|
}
|
|
844
844
|
const g = n.selections[e.conversationScopeId], m = Object.values(t.submissions).find((_) => _.conversationScopeId === e.conversationScopeId && !_.cancelled && _.sessionId !== null), f = i.scopes[e.clientScopeId], w = {
|
|
@@ -1815,7 +1815,7 @@ function Vn(t, e, n) {
|
|
|
1815
1815
|
const L = ["thinking", "steering", "queued"].includes(_), K = t.stops[n] ?? v, U = K?.userMessageIds.filter((S) => !["completed", "failed"].includes(o?.executionByUserMessage[S]?.phase ?? "")) ?? [], ge = U.some((S) => {
|
|
1816
1816
|
const V = a.find((ce) => ce.userMessageId === S);
|
|
1817
1817
|
return !Object.values(t.operations).some((ce) => ce.command.type === "run.stop" && ce.command.payload.expectedUserMessageId === S && ce.phase === "done") && (V?.executionVersion === null && ["sending", "uncertain", "accepted"].includes(V.delivery) || !!(d && Kt(d).includes(S) && ["thinking", "steering", "queued", "stopping"].includes(d.phase)));
|
|
1818
|
-
}), G = d?.user_message_ids ?? [],
|
|
1818
|
+
}), G = d?.user_message_ids ?? [], M = w || b ? f?.userMessageId ?? null : G[G.length - 1] ?? null, D = p.find((S) => S.userMessageId === M), B = L ? [...D?.activityIds ?? []].reverse().find((S) => l[S] === "open") ?? null : null, J = s !== null && !!e.selections[n]?.provisionalId && r.length === 0 && a.length === 0 && // The first persisted idle snapshot already has a positive synchronization version.
|
|
1819
1819
|
(!o?.execution || o.execution.phase === "idle" && o.execution.user_message_ids.length === 0) && Object.values(t.operations).some((S) => S.conversationScopeId === n && S.phase === "done" && ["runtime.warmup", "attachment.prepare"].includes(S.command.type) && !S.command.payload.sessionId && S.result?.sessionId === s);
|
|
1820
1820
|
return qt({
|
|
1821
1821
|
historyRefreshFailure: o?.historyRefreshFailure ?? null,
|
|
@@ -1833,8 +1833,8 @@ function Vn(t, e, n) {
|
|
|
1833
1833
|
streamStates: l,
|
|
1834
1834
|
preparation: o?.preparation ?? null,
|
|
1835
1835
|
stop: K ? { ...K, userMessageIds: U, pending: ge } : null,
|
|
1836
|
-
segments: p.map((S, V) => ({ ...S, collapsed: L ? S.userMessageId !==
|
|
1837
|
-
activity: { phase: _, activeItemId:
|
|
1836
|
+
segments: p.map((S, V) => ({ ...S, collapsed: L ? S.userMessageId !== M : V < p.length - 1 || S.activityIds.length > 0 })),
|
|
1837
|
+
activity: { phase: _, activeItemId: B, userMessageId: M, executionKey: JSON.stringify([...Kt(d)].sort()) },
|
|
1838
1838
|
// Staging transfers the immutable input to the core. Waiting for backend acceptance leaves
|
|
1839
1839
|
// the same submitted text in the optimistic transcript and composer during delivery.
|
|
1840
1840
|
receipts: i.filter((S) => !S.cancelled && e.clients[S.clientScopeId] === n).map((S) => ({ viewId: S.viewId, userMessageId: S.userMessageId, acceptedRendererRevision: S.rendererRevision }))
|
|
@@ -4853,17 +4853,17 @@ class Cd {
|
|
|
4853
4853
|
}
|
|
4854
4854
|
async requestOnce(e, n, i, s, o, a, r, c = 1) {
|
|
4855
4855
|
const l = this.auth.client_kind === "embed", p = new URL(`/api/product-agent/${o ?? (l ? "embed" : "runtime")}${e}`, this.options.backendUrl), d = o === "conversations" ? {} : l ? { client_id: this.auth.client_id, transport_id: this.auth.transport_id } : { community_id: this.auth.community_id, automation_run_id: this.auth.automation_run_id };
|
|
4856
|
-
for (const [
|
|
4857
|
-
D != null && p.searchParams.set(
|
|
4856
|
+
for (const [M, D] of Object.entries({ ...d, ...n }))
|
|
4857
|
+
D != null && p.searchParams.set(M, String(D));
|
|
4858
4858
|
this.requests.signal.throwIfAborted(), a?.throwIfAborted();
|
|
4859
|
-
const h = new AbortController(), g = { trigger: null }, m = (
|
|
4860
|
-
h.signal.aborted || (g.trigger =
|
|
4859
|
+
const h = new AbortController(), g = { trigger: null }, m = (M) => {
|
|
4860
|
+
h.signal.aborted || (g.trigger = M, h.abort());
|
|
4861
4861
|
}, f = () => m("transport_disposed"), w = () => m(["owner_disposed", "authority_retired", "observation_released", "request_replaced"].includes(a?.reason) ? a.reason : "caller_cancelled");
|
|
4862
4862
|
this.requests.signal.addEventListener("abort", f, { once: !0 }), a?.addEventListener("abort", w, { once: !0 });
|
|
4863
4863
|
const b = o === "conversations" && /^\/[^/]+\/snapshot$/.test(e) && s === "POST", _ = /^\/conversations(?:\/[^/]+)?$/.test(e) && (s ?? (i === void 0 ? "GET" : "POST")) === "GET", v = setTimeout(() => m("deadline"), _ ? 6e4 : b ? 3e4 : 15e3), E = Zh(), L = Date.now();
|
|
4864
4864
|
let K = null, U = null, ge = null, G = null;
|
|
4865
4865
|
try {
|
|
4866
|
-
const
|
|
4866
|
+
const M = await Promise.resolve(fetch(p, {
|
|
4867
4867
|
method: s ?? (i === void 0 ? "GET" : "POST"),
|
|
4868
4868
|
cache: "no-store",
|
|
4869
4869
|
signal: h.signal,
|
|
@@ -4872,29 +4872,31 @@ class Cd {
|
|
|
4872
4872
|
})).catch((D) => {
|
|
4873
4873
|
throw b && D instanceof TypeError ? new R("The connection was interrupted. Please try again.", "connection_interrupted", !0) : D;
|
|
4874
4874
|
});
|
|
4875
|
-
if (K = Date.now(), U =
|
|
4876
|
-
const D =
|
|
4877
|
-
if (o === "conversations" && e
|
|
4875
|
+
if (K = Date.now(), U = M.status, ge = Bc(M.headers.get("x-request-id")), G = Bc(M.headers.get("x-cloud-trace-context")), !M.ok) {
|
|
4876
|
+
const D = M.status === 401 ? "unauthorized" : M.status === 426 ? "update_required" : String(M.status), B = (await M.json().catch(() => null))?.detail;
|
|
4877
|
+
if (l && M.status === 403 && (o === "conversations" && /^\/[^/]+\/snapshot$/.test(e) || (!o || o === "embed") && /^\/conversations\/[^/]+$/.test(e)) && ["Conversation unavailable", "Integration mismatch", "Embedded origin mismatch"].includes(B))
|
|
4878
|
+
throw new R("Conversation unavailable", "conversation_access_denied");
|
|
4879
|
+
if (o === "conversations" && e.endsWith("/snapshot") && M.status === 409 && B === "Display projection is not enabled")
|
|
4878
4880
|
throw new R("Conversation history is unavailable. Try loading this chat again after the service is ready.", "display_projection_disabled");
|
|
4879
|
-
if (o === "conversations" && e === "/commands" && (
|
|
4881
|
+
if (o === "conversations" && e === "/commands" && (M.status === 409 && B?.code === "executor_not_ready" && B.retryable === !0 || M.status === 403 && B === "Register the executor before commands"))
|
|
4880
4882
|
throw new R("Reconnecting the browser before continuing.", "executor_not_ready");
|
|
4881
|
-
if (
|
|
4882
|
-
throw new R(
|
|
4883
|
-
...typeof
|
|
4884
|
-
...typeof
|
|
4883
|
+
if (M.status !== 401 && B && typeof B == "object" && (["service_origin_not_allowed", "security_control_enforcement_unavailable"].includes(B.code) || !Ti(void 0, B.code).allowed) && typeof B.message == "string")
|
|
4884
|
+
throw new R(B.message, B.code, !1, {
|
|
4885
|
+
...typeof B.blockedOrigin == "string" ? { blockedOrigin: B.blockedOrigin } : {},
|
|
4886
|
+
...typeof B.securitySettingsUrl == "string" ? { securitySettingsUrl: B.securitySettingsUrl } : {}
|
|
4885
4887
|
}, o === "conversations" && e === "/commands");
|
|
4886
|
-
const J =
|
|
4887
|
-
throw new R(
|
|
4888
|
+
const J = B === "Token expired" ? "token_expired" : B === "Invalid token" ? "invalid_token" : B?.reason, S = M.status === 401 && ["missing_token", "token_expired", "invalid_token", "user_not_found"].includes(J) ? { requestId: E, authTransport: "http", authEndpoint: `${o ?? (l ? "embed" : "runtime")}:${["snapshot", "me", "bootstrap", "commands", "activity", "session-history"].includes(e.split("/").pop()) ? e.split("/").pop() : "other"}`, reason: J, retryable: J === "token_expired" && (B === "Token expired" || B.retryable === !0) } : void 0;
|
|
4889
|
+
throw new R(M.status === 401 ? "Your session expired or is invalid. Reconnect to continue." : M.status === 403 ? "You don't have access to this conversation. Check your access and reconnect." : `Product Agent request failed (${M.status})`, D, !1, S);
|
|
4888
4890
|
}
|
|
4889
|
-
return await
|
|
4890
|
-
} catch (
|
|
4891
|
-
const D = g.trigger ?? ((
|
|
4891
|
+
return await M.json();
|
|
4892
|
+
} catch (M) {
|
|
4893
|
+
const D = g.trigger ?? ((M instanceof Error || M instanceof DOMException) && M.name === "AbortError" ? "unexpected_abort" : null), B = {
|
|
4892
4894
|
requestId: E,
|
|
4893
4895
|
method: s ?? (i === void 0 ? "GET" : "POST"),
|
|
4894
4896
|
route: b ? "/api/product-agent/conversations/:sessionId/snapshot" : e === "/commands" ? "/api/product-agent/:namespace/commands" : "/api/product-agent/:namespace/:operation",
|
|
4895
4897
|
status: U,
|
|
4896
4898
|
abortTrigger: D,
|
|
4897
|
-
category: D === "deadline" ? "request_timed_out" : D === "unexpected_abort" ? "connection_interrupted" : D ? "request_cancelled" :
|
|
4899
|
+
category: D === "deadline" ? "request_timed_out" : D === "unexpected_abort" ? "connection_interrupted" : D ? "request_cancelled" : M instanceof R ? M.code : "invalid_response",
|
|
4898
4900
|
responseHeadersMs: K === null ? null : Math.max(0, K - L),
|
|
4899
4901
|
responseBodyMs: K === null ? null : Math.max(0, Date.now() - K),
|
|
4900
4902
|
owner: D === "deadline" ? "http_deadline" : D === "transport_disposed" ? "http_transport" : D && D !== "unexpected_abort" ? "conversation_query" : U === null ? "browser" : "http_response",
|
|
@@ -4908,9 +4910,9 @@ class Cd {
|
|
|
4908
4910
|
upstreamRequestId: ge,
|
|
4909
4911
|
upstreamTraceId: G
|
|
4910
4912
|
};
|
|
4911
|
-
On(
|
|
4913
|
+
On(B) && Promise.resolve().then(() => this.options.onRequestFailure ? this.options.onRequestFailure(B) : console.warn("Product Agent HTTP request failed", B)).catch(() => {
|
|
4912
4914
|
});
|
|
4913
|
-
const J = On(
|
|
4915
|
+
const J = On(B) ? { httpRequest: B } : void 0;
|
|
4914
4916
|
if (D !== null) {
|
|
4915
4917
|
const S = D !== "deadline" && D !== "unexpected_abort";
|
|
4916
4918
|
throw new R(
|
|
@@ -4920,12 +4922,12 @@ class Cd {
|
|
|
4920
4922
|
J
|
|
4921
4923
|
);
|
|
4922
4924
|
}
|
|
4923
|
-
throw
|
|
4925
|
+
throw M instanceof R && J ? new R(M.message, M.code, M.outcomeUnknown, { ...M.detail, ...J }, M.backendRefusal) : b && J ? new R(
|
|
4924
4926
|
"The conversation response could not be read. Please try again.",
|
|
4925
4927
|
"connection_interrupted",
|
|
4926
4928
|
!0,
|
|
4927
4929
|
J
|
|
4928
|
-
) :
|
|
4930
|
+
) : M;
|
|
4929
4931
|
} finally {
|
|
4930
4932
|
clearTimeout(v), this.requests.signal.removeEventListener("abort", f), a?.removeEventListener("abort", w);
|
|
4931
4933
|
}
|
|
@@ -7714,6 +7716,10 @@ class pa {
|
|
|
7714
7716
|
},
|
|
7715
7717
|
onCommand: (d) => $n("client_event", d.type, Yo({ ...d.payload, type: d.type })),
|
|
7716
7718
|
onError: (d, h) => {
|
|
7719
|
+
if (this.options.productVariant === "customer_embedded" && h.operation === "conversation.snapshot" && d instanceof R && d.code === "conversation_access_denied") {
|
|
7720
|
+
h.sessionId === this.getState().sessionId && this.startNewSession({ notifyTransport: !1 });
|
|
7721
|
+
return;
|
|
7722
|
+
}
|
|
7717
7723
|
qe("web-sdk.conversation", "Conversation operation failed", { ...h, ...An(d) }), this.handleDirectoryTransportError(d);
|
|
7718
7724
|
}
|
|
7719
7725
|
}),
|
|
@@ -10063,25 +10069,25 @@ function pm(t, e) {
|
|
|
10063
10069
|
return `${v.tagName.toLowerCase()}|${m(v)}|${E}`;
|
|
10064
10070
|
}, w = (v, E, L) => {
|
|
10065
10071
|
const K = (U, ge) => {
|
|
10066
|
-
const G = U.tagName.toLowerCase(),
|
|
10067
|
-
if (g >= 1e3 && !D || L.has(U) || o.has(G) || U.matches(".pluno-pa-widget-host, [data-pluno-product-agent-widget]") ||
|
|
10072
|
+
const G = U.tagName.toLowerCase(), M = window.getComputedStyle(U), D = p.has(U);
|
|
10073
|
+
if (g >= 1e3 && !D || L.has(U) || o.has(G) || U.matches(".pluno-pa-widget-host, [data-pluno-product-agent-widget]") || M.display === "none" || M.visibility === "hidden")
|
|
10068
10074
|
return { lines: [], hasUsefulContent: !1, textPreview: "", containsTextElement: !1 };
|
|
10069
10075
|
g += 1;
|
|
10070
|
-
const
|
|
10076
|
+
const B = m(U), J = Fd(U), S = r.has(B) || ["button", "input", "textarea", "select", "iframe", "canvas"].includes(G) || G === "a" && U.hasAttribute("href"), V = Array.from(U.children).filter((W) => W instanceof HTMLElement), te = /* @__PURE__ */ new Map();
|
|
10071
10077
|
for (const W of V) {
|
|
10072
|
-
const
|
|
10073
|
-
te.set(
|
|
10078
|
+
const q = f(W);
|
|
10079
|
+
te.set(q, (te.get(q) ?? 0) + 1);
|
|
10074
10080
|
}
|
|
10075
10081
|
const ce = /* @__PURE__ */ new Map(), ne = /* @__PURE__ */ new Map();
|
|
10076
10082
|
for (const W of V) {
|
|
10077
|
-
const
|
|
10078
|
-
ne.set(
|
|
10083
|
+
const q = f(W), le = ne.get(q) ?? 0;
|
|
10084
|
+
ne.set(q, le + 1), (te.get(q) ?? 0) > 8 && le >= 6 && !p.has(W) && ce.set(q, (ce.get(q) ?? 0) + 1);
|
|
10079
10085
|
}
|
|
10080
10086
|
const Se = /* @__PURE__ */ new Map(), T = /* @__PURE__ */ new Set(), fe = [], Oe = [];
|
|
10081
10087
|
for (const W of V) {
|
|
10082
|
-
const
|
|
10083
|
-
if (Se.set(
|
|
10084
|
-
T.has(
|
|
10088
|
+
const q = f(W), le = te.get(q) ?? 0, me = Se.get(q) ?? 0;
|
|
10089
|
+
if (Se.set(q, me + 1), le > 8 && me >= 6 && !p.has(W)) {
|
|
10090
|
+
T.has(q) || (fe.push([`… ${ce.get(q) ?? 0} similar siblings omitted`]), T.add(q));
|
|
10085
10091
|
continue;
|
|
10086
10092
|
}
|
|
10087
10093
|
const ke = K(W, ge);
|
|
@@ -10093,10 +10099,10 @@ function pm(t, e) {
|
|
|
10093
10099
|
W instanceof HTMLElement && et.push(K(W, ge + 1));
|
|
10094
10100
|
const Ce = [...Oe, ...et], $e = J.length > 0 || S || Ce.some((W) => W.hasUsefulContent), Y = Yn(
|
|
10095
10101
|
[J, ...Ce.map((W) => W.textPreview)].filter(Boolean).join(" ")
|
|
10096
|
-
).slice(0, 180), tt = U.hasAttribute("contenteditable") && (J.length > 0 || !U.querySelector("[contenteditable]")), z = l.some((W) => U.hasAttribute(W)) || !!
|
|
10102
|
+
).slice(0, 180), tt = U.hasAttribute("contenteditable") && (J.length > 0 || !U.querySelector("[contenteditable]")), z = l.some((W) => U.hasAttribute(W)) || !!B || tt, X = (U.getClientRects().length > 0 || M.display === "contents") && (n.has(G) || z || D) && ($e || D) && (!s.has(G) || $e || z || D), H = X ? 1 : 0, se = [];
|
|
10097
10103
|
if (X) {
|
|
10098
|
-
const W = Ce.some((le) => le.containsTextElement),
|
|
10099
|
-
se.push($d(U, c, a,
|
|
10104
|
+
const W = Ce.some((le) => le.containsTextElement), q = i.has(G) && !W ? Y : J;
|
|
10105
|
+
se.push($d(U, c, a, q.slice(0, 180)));
|
|
10100
10106
|
}
|
|
10101
10107
|
for (const W of fe)
|
|
10102
10108
|
se.push(...us(W, H));
|
|
@@ -10104,8 +10110,8 @@ function pm(t, e) {
|
|
|
10104
10110
|
if (ve.length > 0) {
|
|
10105
10111
|
const W = ve.slice(0, 20);
|
|
10106
10112
|
ve.length > W.length && W.push("… shadow DOM omitted");
|
|
10107
|
-
const
|
|
10108
|
-
if (ge < 2 && !
|
|
10113
|
+
const q = G.includes("tooltip") || G.includes("popper") || G.includes("loader");
|
|
10114
|
+
if (ge < 2 && !q) {
|
|
10109
10115
|
const le = X ? "#shadow-root" : `${G} #shadow-root`;
|
|
10110
10116
|
se.push(...us([le, ...us(W, 1)], H));
|
|
10111
10117
|
} else
|
|
@@ -11271,7 +11277,7 @@ function Ty(t, e, n, i) {
|
|
|
11271
11277
|
const b = e.ownerDocument.defaultView;
|
|
11272
11278
|
let _, v = /* @__PURE__ */ new Map(), E = d.sessionId;
|
|
11273
11279
|
const L = /* @__PURE__ */ new Set(), K = /* @__PURE__ */ new Map();
|
|
11274
|
-
let U = null, ge = null, G = null,
|
|
11280
|
+
let U = null, ge = null, G = null, M = 0, D = null, B = null, J = null;
|
|
11275
11281
|
const S = () => JSON.stringify([
|
|
11276
11282
|
d.sessionId,
|
|
11277
11283
|
d.assistantDraftRespondsToUserMessageId,
|
|
@@ -11285,7 +11291,7 @@ function Ty(t, e, n, i) {
|
|
|
11285
11291
|
ge !== null && b.clearTimeout(ge), ge = null, G = null;
|
|
11286
11292
|
}
|
|
11287
11293
|
function ce(z = !1) {
|
|
11288
|
-
te(),
|
|
11294
|
+
te(), B = null, J !== null && b.clearTimeout(J), J = null, _ = void 0, v.clear(), K.clear(), U !== null && b.clearTimeout(U), U = null, z && L.clear();
|
|
11289
11295
|
}
|
|
11290
11296
|
function ne() {
|
|
11291
11297
|
const z = e.querySelector(".pluno-pa-widget__panel") ?? e, X = b.getComputedStyle(z);
|
|
@@ -11312,11 +11318,11 @@ function Ty(t, e, n, i) {
|
|
|
11312
11318
|
C = Math.imul(C ^ Le.charCodeAt(Q), 16777619) >>> 0;
|
|
11313
11319
|
}
|
|
11314
11320
|
const k = b.performance.now();
|
|
11315
|
-
C !== G && (G = C,
|
|
11321
|
+
C !== G && (G = C, M = k), W = k - M, ge !== null && b.clearTimeout(ge), ge = W < 3e5 ? b.setTimeout(ne, 3e5 - W) : null;
|
|
11316
11322
|
} else
|
|
11317
11323
|
te(), L.delete("thinking-without-progress");
|
|
11318
|
-
const
|
|
11319
|
-
(!le ||
|
|
11324
|
+
const q = Array.from(e.querySelectorAll(".pluno-pa-widget__thinking-marker, .thinking-marker, [data-thinking-status]")).some((P) => P.getClientRects().length > 0 && b.getComputedStyle(P).visibility !== "hidden" && b.getComputedStyle(P).opacity !== "0"), le = d.isThinking || d.turnPhase != null || d.pendingMessageStatus != null || q;
|
|
11325
|
+
(!le || B && B.responseKey !== S()) && (B = null);
|
|
11320
11326
|
const me = {
|
|
11321
11327
|
executionKey: d.activity?.executionKey,
|
|
11322
11328
|
inProgress: le,
|
|
@@ -11325,7 +11331,7 @@ function Ty(t, e, n, i) {
|
|
|
11325
11331
|
enabledStopControlCount: Array.from(e.querySelectorAll(
|
|
11326
11332
|
'button[aria-label="Stop"], button[aria-label="Stop generating"]'
|
|
11327
11333
|
)).filter(V).length,
|
|
11328
|
-
stopPendingMs:
|
|
11334
|
+
stopPendingMs: B ? b.performance.now() - B.at : 0,
|
|
11329
11335
|
thinkingSequence: ve,
|
|
11330
11336
|
thinkingIdleMs: W,
|
|
11331
11337
|
messageKeys: Array.from(e.querySelectorAll("[data-message-key], [data-entry-key][data-message-role]")).flatMap((P) => P.dataset.messageKey ?? P.dataset.entryKey ?? []),
|
|
@@ -11364,7 +11370,7 @@ function Ty(t, e, n, i) {
|
|
|
11364
11370
|
const Z = se ? se[P].dataset.messageKey ?? se[P].dataset.entryKey : d.messages[P].id;
|
|
11365
11371
|
Z && W.push(Z.slice(0, ar));
|
|
11366
11372
|
}
|
|
11367
|
-
const
|
|
11373
|
+
const q = {
|
|
11368
11374
|
session_id: d.sessionId?.slice(0, ar) ?? null,
|
|
11369
11375
|
run_id: (d.assistantDraftRunId ?? d.messages[d.messages.length - 1]?.runId)?.slice(0, ar) ?? null,
|
|
11370
11376
|
item_keys: W,
|
|
@@ -11381,10 +11387,10 @@ function Ty(t, e, n, i) {
|
|
|
11381
11387
|
terminal_count: H ? e.querySelectorAll("[data-terminal-response-key]").length : 0
|
|
11382
11388
|
};
|
|
11383
11389
|
if (z === "paint" && i.reportResponseVisibility) {
|
|
11384
|
-
const P = e.querySelector(".pluno-pa-widget__panel") ?? e, Z = (
|
|
11385
|
-
const ee = b.getComputedStyle(
|
|
11386
|
-
return
|
|
11387
|
-
}, de = Z(P) && Z(e), C = !e.ownerDocument.hidden, k = new Set(Array.from(e.querySelectorAll("[data-canonical-item-key]")).filter(Z).map((
|
|
11390
|
+
const P = e.querySelector(".pluno-pa-widget__panel") ?? e, Z = ($) => {
|
|
11391
|
+
const ee = b.getComputedStyle($);
|
|
11392
|
+
return $.getClientRects().length > 0 && ee.visibility !== "hidden" && ee.display !== "none" && ee.opacity !== "0";
|
|
11393
|
+
}, de = Z(P) && Z(e), C = !e.ownerDocument.hidden, k = new Set(Array.from(e.querySelectorAll("[data-canonical-item-key]")).filter(Z).map(($) => $.dataset.canonicalItemKey)), N = de && C && !d.isLoadingSession ? [...d.messages].reverse().find(($) => ($.role === "assistant" || $.dataType === "commentary_history" || $.dataType === "tool_summary") && k.has($.id)) : void 0, ye = de && C && !d.isLoadingSession && !!d.assistantDraft.trim() && Array.from(e.querySelectorAll("[data-message-key], [data-entry-key]")).some(($) => Z($) && ($.dataset.messageKey === `assistant:${d.assistantDraftItemId}` || $.dataset.entryKey === d.assistantDraftItemId)), Le = {
|
|
11388
11394
|
sessionId: d.sessionId,
|
|
11389
11395
|
responseItemId: ye ? d.assistantDraftItemId : N?.id ?? null,
|
|
11390
11396
|
respondsToUserMessageId: ye ? d.assistantDraftRespondsToUserMessageId : N?.respondsToUserMessageId ?? null,
|
|
@@ -11408,13 +11414,13 @@ function Ty(t, e, n, i) {
|
|
|
11408
11414
|
const de = s.get(Z), C = (k) => {
|
|
11409
11415
|
!de || de.seen.has(k) || (de.seen.add(k), de.timer.mark(k));
|
|
11410
11416
|
};
|
|
11411
|
-
if (z === "runtime" && C(ke ? "runtime_stopping" : d.activity?.phase === "stopped" ? "runtime_stopped" : me ? "runtime_reading" : "runtime_progress"), z === "paint" && !e.ownerDocument.hidden &&
|
|
11417
|
+
if (z === "runtime" && C(ke ? "runtime_stopping" : d.activity?.phase === "stopped" ? "runtime_stopped" : me ? "runtime_reading" : "runtime_progress"), z === "paint" && !e.ownerDocument.hidden && q.visible && !q.loading && Array.from(e.querySelectorAll('[data-message-role="user"]')).some((N) => (N.dataset.canonicalItemKey === le.id || N.dataset.entryKey === le.id || N.dataset.messageKey === `user:${le.id}`) && N.getClientRects().length > 0)) {
|
|
11412
11418
|
C("message_painted");
|
|
11413
11419
|
const N = e.textContent ?? "";
|
|
11414
11420
|
ke && N.includes("Stopping") ? C("stopping_painted") : d.activity?.phase === "stopped" && N.includes("Stopped") ? C("stopped_painted") : me && N.includes("Reading your message") ? C("reading_painted") : !me && !ke && d.activity?.phase !== "stopped" && !N.includes("Reading your message") && C("progress_painted");
|
|
11415
11421
|
}
|
|
11416
11422
|
}
|
|
11417
|
-
const Fe = JSON.stringify(
|
|
11423
|
+
const Fe = JSON.stringify(q);
|
|
11418
11424
|
if (z === "runtime" && Fe === m || z === "paint" && Fe === f) return;
|
|
11419
11425
|
z === "runtime" && (m = Fe), z === "paint" && (f = Fe);
|
|
11420
11426
|
const ht = {
|
|
@@ -11423,7 +11429,7 @@ function Ty(t, e, n, i) {
|
|
|
11423
11429
|
monotonic_ms: Math.round(b.performance.now()),
|
|
11424
11430
|
kind: z,
|
|
11425
11431
|
action: X,
|
|
11426
|
-
...
|
|
11432
|
+
...q
|
|
11427
11433
|
}, je = new TextEncoder().encode(JSON.stringify(ht)).length;
|
|
11428
11434
|
for (o.push(ht), a.push(je), r += je; o.length > Ay || r > Ry; )
|
|
11429
11435
|
o.shift(), r -= a.shift(), c += 1;
|
|
@@ -11445,7 +11451,7 @@ function Ty(t, e, n, i) {
|
|
|
11445
11451
|
});
|
|
11446
11452
|
const et = (z) => {
|
|
11447
11453
|
const X = z.target?.closest?.("button"), H = X?.getAttribute("aria-label") ?? X?.getAttribute("title"), se = H === "New chat" ? "new_chat" : H === "Send" || H === "Send message" ? "send" : H === "Stop" || H === "Stop generating" ? "stop" : H === "Retry" || H === "Retry message" ? "retry" : null;
|
|
11448
|
-
Se("click", se), se === "stop" && X && V(X) && (
|
|
11454
|
+
Se("click", se), se === "stop" && X && V(X) && (B = { at: b.performance.now(), responseKey: S() }, J !== null && b.clearTimeout(J), J = b.setTimeout(ne, 1e3)), se === "new_chat" && ce(!0);
|
|
11449
11455
|
}, Ce = () => Se("submit"), $e = () => Se("focus");
|
|
11450
11456
|
e.addEventListener("click", et, !0), e.addEventListener("submit", Ce, !0), e.addEventListener("focusin", $e, !0), e.addEventListener("input", T, !0);
|
|
11451
11457
|
const Y = () => {
|
|
@@ -11659,11 +11665,11 @@ async function lw(t = {}) {
|
|
|
11659
11665
|
".pluno-pa-widget__panel-drag-handle"
|
|
11660
11666
|
), G = r.querySelector(
|
|
11661
11667
|
".pluno-pa-widget__scribble-spirals--panel"
|
|
11662
|
-
),
|
|
11668
|
+
), M = Array.from(
|
|
11663
11669
|
r.querySelectorAll(".pluno-pa-widget__resize-handle")
|
|
11664
11670
|
), D = r.querySelector(
|
|
11665
11671
|
".pluno-pa-widget__close"
|
|
11666
|
-
),
|
|
11672
|
+
), B = r.querySelector(
|
|
11667
11673
|
".pluno-pa-widget__composer"
|
|
11668
11674
|
), J = r.querySelector(
|
|
11669
11675
|
".pluno-pa-widget__attachment-error"
|
|
@@ -11701,7 +11707,7 @@ async function lw(t = {}) {
|
|
|
11701
11707
|
".pluno-pa-widget__timeline-jump"
|
|
11702
11708
|
), W = r.querySelector(
|
|
11703
11709
|
".pluno-pa-widget__active-users-counter"
|
|
11704
|
-
),
|
|
11710
|
+
), q = r.querySelector(
|
|
11705
11711
|
".pluno-pa-widget__timeline"
|
|
11706
11712
|
), le = r.querySelector(
|
|
11707
11713
|
".pluno-pa-widget__timeline-bottom-sentinel"
|
|
@@ -11733,7 +11739,7 @@ async function lw(t = {}) {
|
|
|
11733
11739
|
".pluno-pa-widget__proactive-suggestion-edit"
|
|
11734
11740
|
), Q = r.querySelector(
|
|
11735
11741
|
".pluno-pa-widget__proactive-suggestion-dismiss"
|
|
11736
|
-
),
|
|
11742
|
+
), $ = r.querySelector(
|
|
11737
11743
|
".pluno-pa-widget__proactive-suggestion-close"
|
|
11738
11744
|
), ee = r.querySelector(
|
|
11739
11745
|
".pluno-pa-widget__proactive-suggestion-never-show"
|
|
@@ -11748,7 +11754,7 @@ async function lw(t = {}) {
|
|
|
11748
11754
|
), zi = r.querySelector(
|
|
11749
11755
|
".pluno-pa-widget__proactive-suggestion-feedback-status"
|
|
11750
11756
|
);
|
|
11751
|
-
if (!_ || !E || !U || !D || !
|
|
11757
|
+
if (!_ || !E || !U || !D || !B || !J || !S || !ce || !ne || !Se || !T || !fe || !Oe || !Ce || !$e || !Y || !tt || !z || !X || !H || !se || !ve || !W || !q || !le)
|
|
11752
11758
|
throw new Error("Failed to mount Pluno widget");
|
|
11753
11759
|
if (e.movableLauncher && !v)
|
|
11754
11760
|
throw new Error("Failed to mount Pluno widget drag handle");
|
|
@@ -11954,7 +11960,7 @@ async function lw(t = {}) {
|
|
|
11954
11960
|
let mt = null, Xt = null, Pe = !1, Qt = !1, Ot = {
|
|
11955
11961
|
enabled: !0
|
|
11956
11962
|
}, Zt = 0, io = null, mn = null, yn = null, Fi = null, oi = !1, be = null, Ma = "local";
|
|
11957
|
-
const qa = (u) => ti !== null && ti !== u.sessionId || ii !== null && ii !== (u.user?.id ?? null) || ni !== void 0 && ni !== u.selectionKey, Da = (u) => up(
|
|
11963
|
+
const qa = (u) => ti !== null && ti !== u.sessionId || ii !== null && ii !== (u.user?.id ?? null) || ni !== void 0 && ni !== u.selectionKey, Da = (u) => up(q, u, {
|
|
11958
11964
|
renderSource: Ma,
|
|
11959
11965
|
guardCreatedAt: be?.createdAt ?? null,
|
|
11960
11966
|
selectionFencePending: qa(u)
|
|
@@ -11973,14 +11979,14 @@ async function lw(t = {}) {
|
|
|
11973
11979
|
}, Lu = () => {
|
|
11974
11980
|
Cp(oi, Hi), ve.hidden = !1;
|
|
11975
11981
|
}, Ua = () => {
|
|
11976
|
-
be?.observedConversation &&
|
|
11982
|
+
be?.observedConversation && q.querySelector(".pluno-pa-widget__empty-state--starter:not(.pluno-pa-widget__empty-state--morning-report)") && (be.observedWelcome ??= Da(A.getState())), be?.observedWelcome && !be.pendingSubmission && (Hi("submitted_turn_returned_to_welcome_without_new_chat", be.clientMessageId, {
|
|
11977
11983
|
before: be.observedConversation,
|
|
11978
11984
|
current: be.observedWelcome
|
|
11979
11985
|
}), be = null);
|
|
11980
11986
|
}, Nu = (u = "jump") => {
|
|
11981
|
-
st(!0, u), yt(), Kn(
|
|
11987
|
+
st(!0, u), yt(), Kn(q, () => Ot.enabled), Zt = q.scrollTop;
|
|
11982
11988
|
}, Wi = (u) => {
|
|
11983
|
-
io = u, u === "up" &&
|
|
11989
|
+
io = u, u === "up" && q.scrollTop < Zt - 1 && (oi = !0, st(!1, "userScroll")), mn !== null && window.clearTimeout(mn), mn = window.setTimeout(() => {
|
|
11984
11990
|
io = null, mn = null;
|
|
11985
11991
|
}, 500);
|
|
11986
11992
|
};
|
|
@@ -12246,9 +12252,9 @@ async function lw(t = {}) {
|
|
|
12246
12252
|
setPosition: Bu,
|
|
12247
12253
|
persist: Ve
|
|
12248
12254
|
}) : () => {
|
|
12249
|
-
}, Fu =
|
|
12255
|
+
}, Fu = M.length > 0 ? mw({
|
|
12250
12256
|
root: r,
|
|
12251
|
-
handles:
|
|
12257
|
+
handles: M,
|
|
12252
12258
|
getBounds: ja,
|
|
12253
12259
|
setBounds: zu,
|
|
12254
12260
|
persist: Ve
|
|
@@ -12311,15 +12317,15 @@ async function lw(t = {}) {
|
|
|
12311
12317
|
openPanelPosition: Ie,
|
|
12312
12318
|
visibleLauncherPosition: Re
|
|
12313
12319
|
}), st(!0, "open"), yt(), !re && e.layout === "floating" && A.recordWidgetLifecycle("opened", O), !y) {
|
|
12314
|
-
r.classList.add("pluno-pa-widget--open"), re || ao(), _.hidden = !0, u && (T.value = u, ki(T)), Kn(
|
|
12320
|
+
r.classList.add("pluno-pa-widget--open"), re || ao(), _.hidden = !0, u && (T.value = u, ki(T)), Kn(q, () => Ot.enabled), Zt = q.scrollTop, I && (fn(T, "panel_open_immediate"), T.setSelectionRange(T.value.length, T.value.length)), Ve(), Vi("shown", O), e.onPanelOpenChange?.(!0, O);
|
|
12315
12321
|
return;
|
|
12316
12322
|
}
|
|
12317
12323
|
const _t = Date.now();
|
|
12318
12324
|
window.requestAnimationFrame(() => {
|
|
12319
|
-
r.classList.add("pluno-pa-widget--open"), re || ao(), u && (T.value = u, ki(T)), Kn(
|
|
12325
|
+
r.classList.add("pluno-pa-widget--open"), re || ao(), u && (T.value = u, ki(T)), Kn(q, () => Ot.enabled), Zt = q.scrollTop, I && (fn(T, "panel_open_animation", {
|
|
12320
12326
|
scheduledAt: _t
|
|
12321
12327
|
}), T.setSelectionRange(T.value.length, T.value.length)), Ve(), Vi("shown", O), e.onPanelOpenChange?.(!0, O), mt = window.setTimeout(() => {
|
|
12322
|
-
_.hidden = !0, Kn(
|
|
12328
|
+
_.hidden = !0, Kn(q, () => Ot.enabled), Zt = q.scrollTop;
|
|
12323
12329
|
}, 220);
|
|
12324
12330
|
});
|
|
12325
12331
|
}, ho = (u = "external_request") => {
|
|
@@ -12471,38 +12477,38 @@ async function lw(t = {}) {
|
|
|
12471
12477
|
u.stopPropagation();
|
|
12472
12478
|
}), K?.addEventListener("click", (u) => {
|
|
12473
12479
|
u.preventDefault(), u.stopPropagation(), ai("minimized", !0, "minimize_button");
|
|
12474
|
-
}), D.addEventListener("click", () => ho("close_button")),
|
|
12480
|
+
}), D.addEventListener("click", () => ho("close_button")), q.addEventListener("wheel", (u) => {
|
|
12475
12481
|
Wi(u.deltaY < 0 ? "up" : null);
|
|
12476
|
-
}),
|
|
12477
|
-
yn = u.target ===
|
|
12478
|
-
}),
|
|
12482
|
+
}), q.addEventListener("pointerdown", (u) => {
|
|
12483
|
+
yn = u.target === q ? u.clientY : null;
|
|
12484
|
+
}), q.addEventListener("pointermove", (u) => {
|
|
12479
12485
|
yn !== null && u.clientY < yn - 1 && Wi("up"), yn !== null && (yn = u.clientY);
|
|
12480
|
-
}),
|
|
12486
|
+
}), q.addEventListener("pointerup", () => {
|
|
12481
12487
|
yn = null;
|
|
12482
|
-
}),
|
|
12488
|
+
}), q.addEventListener("pointercancel", () => {
|
|
12483
12489
|
yn = null;
|
|
12484
|
-
}),
|
|
12490
|
+
}), q.addEventListener("touchstart", (u) => {
|
|
12485
12491
|
Fi = u.touches[0]?.clientY ?? null;
|
|
12486
|
-
}),
|
|
12492
|
+
}), q.addEventListener("touchmove", (u) => {
|
|
12487
12493
|
const y = u.touches[0]?.clientY ?? null;
|
|
12488
12494
|
y !== null && Fi !== null && Wi(y > Fi ? "up" : null), Fi = y;
|
|
12489
|
-
}),
|
|
12495
|
+
}), q.addEventListener("keydown", (u) => {
|
|
12490
12496
|
(u.key === "ArrowUp" || u.key === "PageUp" || u.key === "Home") && Wi("up");
|
|
12491
|
-
}),
|
|
12492
|
-
|
|
12497
|
+
}), q.addEventListener("scroll", () => {
|
|
12498
|
+
q.scrollTop < Zt - 1 && io === "up" && (oi = !0, st(!1, "userScroll")), Zt = q.scrollTop;
|
|
12493
12499
|
}), ve.addEventListener("click", () => {
|
|
12494
12500
|
Nu();
|
|
12495
12501
|
});
|
|
12496
12502
|
const Ya = typeof IntersectionObserver > "u" ? null : new IntersectionObserver(
|
|
12497
12503
|
([u]) => {
|
|
12498
|
-
!u?.isIntersecting ||
|
|
12504
|
+
!u?.isIntersecting || q.scrollHeight - q.scrollTop - q.clientHeight > 1 || (st(!0, "bottom"), yt());
|
|
12499
12505
|
},
|
|
12500
|
-
{ root:
|
|
12506
|
+
{ root: q, threshold: 0 }
|
|
12501
12507
|
);
|
|
12502
12508
|
Ya?.observe(le);
|
|
12503
12509
|
const Xa = r.querySelector(".pluno-pa-widget__permission-overlay"), Qa = typeof ResizeObserver > "u" ? null : new ResizeObserver(() => {
|
|
12504
12510
|
const u = Xa.offsetHeight;
|
|
12505
|
-
|
|
12511
|
+
q.style.paddingBottom = `${u > 0 ? u + 24 : 12}px`, Ot.enabled && Kn(q, () => Ot.enabled);
|
|
12506
12512
|
});
|
|
12507
12513
|
Qa?.observe(Xa);
|
|
12508
12514
|
const Nt = () => e.loginRequired || e.signupRequired;
|
|
@@ -12519,7 +12525,7 @@ async function lw(t = {}) {
|
|
|
12519
12525
|
return Qi() ? !1 : u !== "connected" && !(yo && u === "reconnecting");
|
|
12520
12526
|
}, zn = () => {
|
|
12521
12527
|
const u = Nt(), y = A.getState(), I = !y.isThinking && !y.pendingMessageStatus && !!y.lastError;
|
|
12522
|
-
E.readOnly = !1, T.readOnly = !1, E.placeholder = u ? e.signupRequired ? e.signupButtonLabel : e.loginButtonLabel : I ? "Needs attention" : hi ? "New update" : e.launcherLabel, T.placeholder = u ? e.signupRequired ? e.signupButtonLabel : e.loginButtonLabel : $t.launcherLabel,
|
|
12528
|
+
E.readOnly = !1, T.readOnly = !1, E.placeholder = u ? e.signupRequired ? e.signupButtonLabel : e.loginButtonLabel : I ? "Needs attention" : hi ? "New update" : e.launcherLabel, T.placeholder = u ? e.signupRequired ? e.signupButtonLabel : e.loginButtonLabel : $t.launcherLabel, B.hidden = u;
|
|
12523
12529
|
}, _o = () => [...St.values()].some((u) => u.revision === Gt && u.generation === ft), Za = () => {
|
|
12524
12530
|
const u = A.getState(), y = e.billingStatus;
|
|
12525
12531
|
return {
|
|
@@ -12633,7 +12639,7 @@ async function lw(t = {}) {
|
|
|
12633
12639
|
}
|
|
12634
12640
|
tc(x);
|
|
12635
12641
|
};
|
|
12636
|
-
|
|
12642
|
+
B.addEventListener("submit", (u) => {
|
|
12637
12643
|
if (u.preventDefault(), e.loginRequired) {
|
|
12638
12644
|
e.onLoginClick?.();
|
|
12639
12645
|
return;
|
|
@@ -12883,12 +12889,12 @@ async function lw(t = {}) {
|
|
|
12883
12889
|
return di = null, no.clear(), is.clear(), T.value = "", nt = [], ei(), ki(T), Ve(), Me(), fn(T, "new_chat"), _e(A.getState()), y;
|
|
12884
12890
|
}, pc = (u) => {
|
|
12885
12891
|
window.requestAnimationFrame(() => {
|
|
12886
|
-
Pe || U.hidden || b.visibilityState === "hidden" || Array.from(
|
|
12892
|
+
Pe || U.hidden || b.visibilityState === "hidden" || Array.from(q.querySelectorAll("[data-message-key]")).some(
|
|
12887
12893
|
(y) => u.has(y.dataset.messageKey)
|
|
12888
12894
|
) && Hi("proactive_suggestion_previous_chat_visible");
|
|
12889
12895
|
});
|
|
12890
12896
|
}, hc = () => new Set(
|
|
12891
|
-
Array.from(
|
|
12897
|
+
Array.from(q.querySelectorAll("[data-message-key]"), (u) => u.dataset.messageKey)
|
|
12892
12898
|
);
|
|
12893
12899
|
ye?.addEventListener("click", async () => {
|
|
12894
12900
|
const u = e.proactiveSuggestion;
|
|
@@ -12911,7 +12917,7 @@ async function lw(t = {}) {
|
|
|
12911
12917
|
}
|
|
12912
12918
|
gt();
|
|
12913
12919
|
};
|
|
12914
|
-
Q?.addEventListener("click", gc),
|
|
12920
|
+
Q?.addEventListener("click", gc), $?.addEventListener("click", gc), Le?.addEventListener("click", async () => {
|
|
12915
12921
|
const u = e.proactiveSuggestion;
|
|
12916
12922
|
if (!u)
|
|
12917
12923
|
return;
|
|
@@ -12991,14 +12997,14 @@ async function lw(t = {}) {
|
|
|
12991
12997
|
});
|
|
12992
12998
|
let kn = !1, wi = null, os = 0, Mo = 0;
|
|
12993
12999
|
const _e = (u, y = {}) => {
|
|
12994
|
-
qa(u) && (be = null), Ma = y.renderSource ?? "local", uo(), r.classList.toggle("pluno-pa-widget--logged-out", e.loginRequired && e.entrySurface === "extension_widget"), V.classList.remove("pluno-pa-widget__access-notice--login-only"), u = { ...u, messages: u.messages.map((
|
|
12995
|
-
if (
|
|
12996
|
-
const Ct =
|
|
13000
|
+
qa(u) && (be = null), Ma = y.renderSource ?? "local", uo(), r.classList.toggle("pluno-pa-widget--logged-out", e.loginRequired && e.entrySurface === "extension_widget"), V.classList.remove("pluno-pa-widget__access-notice--login-only"), u = { ...u, messages: u.messages.map((F) => {
|
|
13001
|
+
if (!F.attachments?.some((Ge) => Ge.id && !Ge.fileUrl && Zn.has(Ge.id))) return F;
|
|
13002
|
+
const Ct = F.attachments.map((Ge) => {
|
|
12997
13003
|
const bi = Ge.id ? Zn.get(Ge.id) : void 0;
|
|
12998
13004
|
return bi && !Ge.fileUrl ? { ...Ge, previewUrl: bi } : Ge;
|
|
12999
13005
|
});
|
|
13000
|
-
return Object.create(Object.getPrototypeOf(
|
|
13001
|
-
...Object.getOwnPropertyDescriptors(
|
|
13006
|
+
return Object.create(Object.getPrototypeOf(F), {
|
|
13007
|
+
...Object.getOwnPropertyDescriptors(F),
|
|
13002
13008
|
attachments: { value: Ct, enumerable: !0, configurable: !0 }
|
|
13003
13009
|
});
|
|
13004
13010
|
}) }, Un(), Xt !== null && (window.clearTimeout(Xt), Xt = null), Lt(), gt(), Zs(), V.hidden = !e.loginRequired && !e.signupRequired, V.hidden && V.replaceChildren();
|
|
@@ -13011,19 +13017,19 @@ async function lw(t = {}) {
|
|
|
13011
13017
|
]);
|
|
13012
13018
|
if (yc !== I) {
|
|
13013
13019
|
yc = I, te.hidden = !!(e.loginRequired || e.signupRequired) || !u.lastError || Pi(u.lastErrorCode) !== "bottom_notice";
|
|
13014
|
-
const
|
|
13015
|
-
Po.data !==
|
|
13020
|
+
const F = te.hidden ? "" : u.lastError ?? "";
|
|
13021
|
+
Po.data !== F && (Po.data = F), te.hidden ? zt.remove() : zt.parentElement !== te && te.appendChild(zt), u.lastErrorSecuritySettingsUrl ? (sn.href = u.lastErrorSecuritySettingsUrl, sn.parentElement !== zt && zt.insertBefore(sn, bt.parentElement ? bt : null)) : sn.remove(), u.lastErrorCode === "connection_failed" || u.lastErrorCode === "auth_reconnecting" ? (bt.disabled = on, bt.setAttribute("aria-busy", String(on)), fc.hidden = !on, mc.data = on ? "Trying" : "Try again", bt.parentElement !== zt && zt.appendChild(bt)) : bt.remove();
|
|
13016
13022
|
}
|
|
13017
13023
|
if (e.loginRequired) {
|
|
13018
|
-
Ki = "", ts.clear(), Ro.clear(), To.clear(),
|
|
13019
|
-
const
|
|
13020
|
-
if (
|
|
13024
|
+
Ki = "", ts.clear(), Ro.clear(), To.clear(), q.replaceChildren();
|
|
13025
|
+
const F = e.billingStatus?.auth, Ct = e.extensionRuntime?.retryAuth;
|
|
13026
|
+
if (F?.status === "error" && (F.errorCode === "browser_session_unavailable" || F.errorCode === "backend_auth_pending") && Ct) {
|
|
13021
13027
|
mr(
|
|
13022
13028
|
V,
|
|
13023
13029
|
Ce,
|
|
13024
13030
|
ss,
|
|
13025
13031
|
fi,
|
|
13026
|
-
(wi ??
|
|
13032
|
+
(wi ?? F.message).replace(new RegExp("(?<=[.!?])\\s+", "g"), `
|
|
13027
13033
|
`),
|
|
13028
13034
|
kn ? "Trying" : "Try again",
|
|
13029
13035
|
void 0,
|
|
@@ -13055,7 +13061,7 @@ async function lw(t = {}) {
|
|
|
13055
13061
|
return;
|
|
13056
13062
|
}
|
|
13057
13063
|
if (e.signupRequired) {
|
|
13058
|
-
Ki = "", ts.clear(), Ro.clear(), To.clear(),
|
|
13064
|
+
Ki = "", ts.clear(), Ro.clear(), To.clear(), q.replaceChildren(), mr(
|
|
13059
13065
|
V,
|
|
13060
13066
|
Ce,
|
|
13061
13067
|
ss,
|
|
@@ -13078,7 +13084,7 @@ async function lw(t = {}) {
|
|
|
13078
13084
|
Ki = x;
|
|
13079
13085
|
const re = Qt || Ot.enabled;
|
|
13080
13086
|
Qt = !1, (O || y.skipUnchangedTimeline !== !0) && lb(
|
|
13081
|
-
|
|
13087
|
+
q,
|
|
13082
13088
|
le,
|
|
13083
13089
|
Ce,
|
|
13084
13090
|
ss,
|
|
@@ -13094,36 +13100,36 @@ async function lw(t = {}) {
|
|
|
13094
13100
|
To,
|
|
13095
13101
|
Ve,
|
|
13096
13102
|
fi,
|
|
13097
|
-
(
|
|
13098
|
-
(e.productVariant === "personal" ? !tn() : wo()) || (Qt = !0, st(!0, "send"), yt(), A.sendMessage(
|
|
13103
|
+
(F) => {
|
|
13104
|
+
(e.productVariant === "personal" ? !tn() : wo()) || (Qt = !0, st(!0, "send"), yt(), A.sendMessage(F));
|
|
13099
13105
|
},
|
|
13100
|
-
(
|
|
13106
|
+
(F) => (Qt = !0, st(!0, "send"), yt(), A.retryLastMessage(F)),
|
|
13101
13107
|
e.morningReport,
|
|
13102
13108
|
() => {
|
|
13103
|
-
const
|
|
13104
|
-
|
|
13109
|
+
const F = ue("morning_report");
|
|
13110
|
+
F && Ue(F, "later").catch(() => {
|
|
13105
13111
|
}), ho("morning_report_snooze"), _e(A.getState());
|
|
13106
13112
|
},
|
|
13107
13113
|
() => u.sessionId ? A.loadSession(u.sessionId) : void 0,
|
|
13108
13114
|
() => yi(),
|
|
13109
13115
|
ns.get(u.selectionKey ?? u.sessionId ?? "draft"),
|
|
13110
|
-
(
|
|
13111
|
-
Ju(u.selectionKey ?? u.sessionId ?? "draft",
|
|
13116
|
+
(F, Ct) => {
|
|
13117
|
+
Ju(u.selectionKey ?? u.sessionId ?? "draft", F, Ct);
|
|
13112
13118
|
},
|
|
13113
13119
|
e.attachmentPreviewUrlResolver,
|
|
13114
13120
|
ac("integration_connection") ? {
|
|
13115
|
-
requests: Et.flatMap((
|
|
13121
|
+
requests: Et.flatMap((F) => F.kind === "integration_connection" ? [F.payload.request] : []),
|
|
13116
13122
|
states: is,
|
|
13117
13123
|
initialStatus: "pending",
|
|
13118
|
-
onConnect: (
|
|
13124
|
+
onConnect: (F) => Yu(F),
|
|
13119
13125
|
presentations: new Map(Et.flatMap(
|
|
13120
|
-
(
|
|
13126
|
+
(F) => F.kind === "integration_connection" ? [[F.payload.request.authRequestId, F.presentation]] : []
|
|
13121
13127
|
))
|
|
13122
13128
|
} : void 0,
|
|
13123
13129
|
ue("personal_channel_connection") ? {
|
|
13124
13130
|
request: ue("personal_channel_connection").payload.request,
|
|
13125
|
-
onConnect: (
|
|
13126
|
-
Xu(
|
|
13131
|
+
onConnect: (F) => {
|
|
13132
|
+
Xu(F);
|
|
13127
13133
|
},
|
|
13128
13134
|
presentation: ac("personal_channel_connection")?.presentation
|
|
13129
13135
|
} : void 0,
|
|
@@ -13137,37 +13143,37 @@ async function lw(t = {}) {
|
|
|
13137
13143
|
socialPostRewardsUrl: e.socialPostRewardsUrl,
|
|
13138
13144
|
onSeen: () => {
|
|
13139
13145
|
},
|
|
13140
|
-
onReferralCopy: (
|
|
13141
|
-
sp(
|
|
13146
|
+
onReferralCopy: (F) => {
|
|
13147
|
+
sp(F);
|
|
13142
13148
|
},
|
|
13143
|
-
onSocialShare: (
|
|
13149
|
+
onSocialShare: (F) => {
|
|
13144
13150
|
const Ct = ue("social_share");
|
|
13145
13151
|
Ue(Ct, "dismiss").catch(() => {
|
|
13146
13152
|
});
|
|
13147
13153
|
},
|
|
13148
13154
|
onDismiss: () => {
|
|
13149
|
-
const
|
|
13150
|
-
Ue(
|
|
13155
|
+
const F = ue("social_share");
|
|
13156
|
+
Ue(F, "dismiss").catch(() => {
|
|
13151
13157
|
}), mi = null, _e(A.getState());
|
|
13152
13158
|
},
|
|
13153
13159
|
onDisable: () => {
|
|
13154
|
-
const
|
|
13155
|
-
Ue(
|
|
13160
|
+
const F = ue("social_share");
|
|
13161
|
+
Ue(F, "dont_show_again").catch(() => {
|
|
13156
13162
|
}), mi = null, _e(A.getState());
|
|
13157
13163
|
}
|
|
13158
13164
|
} : void 0
|
|
13159
13165
|
);
|
|
13160
|
-
const Re = !!
|
|
13166
|
+
const Re = !!q.querySelector(
|
|
13161
13167
|
".pluno-pa-widget__empty-state--starter:not(.pluno-pa-widget__empty-state--morning-report)"
|
|
13162
13168
|
);
|
|
13163
13169
|
be && !be.observedWelcome && !Re && Ol(u) && (be.observedConversation = Da(u)), Ua(), Me(), gt();
|
|
13164
|
-
const Ie = Array.isArray(u.activeScheduledFollowUps) ? u.activeScheduledFollowUps : null, _t = (Ie !== null ? Ie.map((
|
|
13170
|
+
const Ie = Array.isArray(u.activeScheduledFollowUps) ? u.activeScheduledFollowUps : null, _t = (Ie !== null ? Ie.map((F) => F.dueAt) : u.messages.map((F) => F.scheduledCheckInAt)).filter((F) => !!F).filter((F) => Jn(F) !== null).sort((F, Ct) => Date.parse(F) - Date.parse(Ct))[0] ?? null, vc = _t ? Qg(_t) : null;
|
|
13165
13171
|
vc !== null && (Xt = window.setTimeout(
|
|
13166
13172
|
() => {
|
|
13167
13173
|
Xt = null, Pe || _e(A.getState());
|
|
13168
13174
|
},
|
|
13169
13175
|
Math.min(vc, 2147483647)
|
|
13170
|
-
)), re ? (Zt =
|
|
13176
|
+
)), re ? (Zt = q.scrollTop, yt()) : O && Ol(u) && Lu();
|
|
13171
13177
|
}, wc = () => {
|
|
13172
13178
|
b.getSelection()?.isCollapsed !== !1 && mb(ts) && _e(A.getState());
|
|
13173
13179
|
};
|
|
@@ -15127,8 +15133,8 @@ function jl(t, e) {
|
|
|
15127
15133
|
const i = n[1], s = e ? "Finding example tasks..." : " ";
|
|
15128
15134
|
i.textContent !== s && (i.textContent = s), i.classList.toggle("pluno-pa-widget__starter-placeholder--loading", e), i.parentElement.setAttribute("aria-hidden", String(!e));
|
|
15129
15135
|
}
|
|
15130
|
-
function lb(t, e, n, i, s, o, a, r, c, l, p, d, h, g, m, f, w, b, _, v, E, L, K, U, ge, G,
|
|
15131
|
-
const
|
|
15136
|
+
function lb(t, e, n, i, s, o, a, r, c, l, p, d, h, g, m, f, w, b, _, v, E, L, K, U, ge, G, M, D) {
|
|
15137
|
+
const B = (C) => {
|
|
15132
15138
|
const k = G.states.get(C.authRequestId) ?? { status: G.initialStatus }, N = `integration-retry:${C.authRequestId}`, ye = `integration-connect:${C.authRequestId}`, Le = K?.has(N) ? "retry" : K?.has(ye) ? "connect" : null;
|
|
15133
15139
|
return db(
|
|
15134
15140
|
C,
|
|
@@ -15182,7 +15188,7 @@ function lb(t, e, n, i, s, o, a, r, c, l, p, d, h, g, m, f, w, b, _, v, E, L, K,
|
|
|
15182
15188
|
C === e && Oe.push(t.querySelector('slot[name="conversation-notices"]') ?? fu("conversation-notices")), C.dataset.sessionId = o.sessionId ?? "", Oe.push(C);
|
|
15183
15189
|
};
|
|
15184
15190
|
Sa(n, o.isThinking), n.disabled = !1, s.hidden = !r, r && a !== null && yu(s, a);
|
|
15185
|
-
const tt = !!(G?.requests.length ||
|
|
15191
|
+
const tt = !!(G?.requests.length || M || D?.candidate), z = tt || ne.length > 0 || ce.length > 0 || !!o.assistantDraft || o.pendingMessageStatus !== null || o.isThinking;
|
|
15186
15192
|
if (i(z || !!o.historyPreparation), o.historyPreparation && z) {
|
|
15187
15193
|
const C = document.createElement("div");
|
|
15188
15194
|
C.className = "pluno-pa-widget__transcript-loading", C.setAttribute("role", "status"), C.append(pn(), document.createTextNode("Preparing this conversation…")), Y(C);
|
|
@@ -15229,20 +15235,20 @@ function lb(t, e, n, i, s, o, a, r, c, l, p, d, h, g, m, f, w, b, _, v, E, L, K,
|
|
|
15229
15235
|
ee.className = "pluno-pa-widget__empty pluno-pa-widget__morning-report-title", ee.textContent = _.opening, N.appendChild(ee);
|
|
15230
15236
|
} else
|
|
15231
15237
|
N.appendChild(mu());
|
|
15232
|
-
const Q = _?.prompts ?? o.starterPrompts,
|
|
15233
|
-
if (
|
|
15238
|
+
const Q = _?.prompts ?? o.starterPrompts, $ = document.createElement("div");
|
|
15239
|
+
if ($.className = Q.length > 0 ? "pluno-pa-widget__starter-prompts" : "pluno-pa-widget__starter-prompts pluno-pa-widget__starter-prompts--empty", Q.length === 0 && !o.starterPromptsLoading && $.setAttribute("aria-hidden", "true"), Q.length > 0)
|
|
15234
15240
|
for (const ee of Q) {
|
|
15235
15241
|
const ae = document.createElement("button");
|
|
15236
15242
|
ae.type = "button", ae.className = "pluno-pa-widget__starter-prompt", ae.textContent = ee, ae.addEventListener("click", () => {
|
|
15237
15243
|
w(ee);
|
|
15238
|
-
}),
|
|
15244
|
+
}), $.appendChild(ae);
|
|
15239
15245
|
}
|
|
15240
15246
|
else
|
|
15241
15247
|
for (let ee = 0; ee < jy; ee += 1) {
|
|
15242
15248
|
const ae = document.createElement("div");
|
|
15243
|
-
ae.className = "pluno-pa-widget__starter-placeholder", ee === 1 && ae.setAttribute("role", "status"), ae.textContent = " ",
|
|
15249
|
+
ae.className = "pluno-pa-widget__starter-placeholder", ee === 1 && ae.setAttribute("role", "status"), ae.textContent = " ", $.appendChild(ae);
|
|
15244
15250
|
}
|
|
15245
|
-
if (N.appendChild(
|
|
15251
|
+
if (N.appendChild($), jl(N, o.starterPromptsLoading), _) {
|
|
15246
15252
|
const ee = document.createElement("button");
|
|
15247
15253
|
ee.type = "button", ee.className = "pluno-pa-widget__morning-report-snooze", ee.textContent = "Snooze morning report", ee.addEventListener("click", v), N.appendChild(ee);
|
|
15248
15254
|
}
|
|
@@ -15250,7 +15256,7 @@ function lb(t, e, n, i, s, o, a, r, c, l, p, d, h, g, m, f, w, b, _, v, E, L, K,
|
|
|
15250
15256
|
return;
|
|
15251
15257
|
}
|
|
15252
15258
|
let X = null, H = null, se = [], ve = [];
|
|
15253
|
-
const W = ne.some(Yr),
|
|
15259
|
+
const W = ne.some(Yr), q = ne.some(
|
|
15254
15260
|
(C) => C.role === "tool" && C.id === o.activity?.activeItemId
|
|
15255
15261
|
), le = o.turnPhase ? Ey(o.turnPhase) : "Thinking...";
|
|
15256
15262
|
let me = !1;
|
|
@@ -15281,16 +15287,16 @@ function lb(t, e, n, i, s, o, a, r, c, l, p, d, h, g, m, f, w, b, _, v, E, L, K,
|
|
|
15281
15287
|
const k = ne[C];
|
|
15282
15288
|
if (k.role === "tool" && k.integrationAuthRequest && G) {
|
|
15283
15289
|
Fe.add(k.integrationAuthRequest.authRequestId);
|
|
15284
|
-
const
|
|
15285
|
-
ve.push(
|
|
15290
|
+
const $ = B(k.integrationAuthRequest);
|
|
15291
|
+
ve.push($);
|
|
15286
15292
|
continue;
|
|
15287
15293
|
}
|
|
15288
|
-
if (k.role === "tool" && k.personalChannelConnectionRequest &&
|
|
15294
|
+
if (k.role === "tool" && k.personalChannelConnectionRequest && M) {
|
|
15289
15295
|
ht = !0, ve.push(
|
|
15290
15296
|
Kl(
|
|
15291
15297
|
k.personalChannelConnectionRequest,
|
|
15292
|
-
|
|
15293
|
-
|
|
15298
|
+
M.onConnect,
|
|
15299
|
+
M.presentation
|
|
15294
15300
|
)
|
|
15295
15301
|
);
|
|
15296
15302
|
continue;
|
|
@@ -15309,8 +15315,8 @@ function lb(t, e, n, i, s, o, a, r, c, l, p, d, h, g, m, f, w, b, _, v, E, L, K,
|
|
|
15309
15315
|
if (Yr(k)) {
|
|
15310
15316
|
if (!J.showProgress)
|
|
15311
15317
|
continue;
|
|
15312
|
-
const
|
|
15313
|
-
if (
|
|
15318
|
+
const $ = ke(), ee = Eu(k);
|
|
15319
|
+
if ($) {
|
|
15314
15320
|
if (!me) {
|
|
15315
15321
|
const ae = Vl(
|
|
15316
15322
|
g,
|
|
@@ -15334,10 +15340,10 @@ function lb(t, e, n, i, s, o, a, r, c, l, p, d, h, g, m, f, w, b, _, v, E, L, K,
|
|
|
15334
15340
|
}
|
|
15335
15341
|
if (k.role === "system") {
|
|
15336
15342
|
if (k.dataType === "run_error" || k.dataType === "run_status") {
|
|
15337
|
-
const
|
|
15343
|
+
const $ = ke(), ee = ne.some(
|
|
15338
15344
|
(we) => we.role === "tool" && Ns(we, k)
|
|
15339
15345
|
);
|
|
15340
|
-
if (
|
|
15346
|
+
if (!$ && !ee) {
|
|
15341
15347
|
const we = Oi(f());
|
|
15342
15348
|
we.classList.add("pluno-pa-widget__terminal-marker"), Y(we);
|
|
15343
15349
|
}
|
|
@@ -15354,11 +15360,11 @@ function lb(t, e, n, i, s, o, a, r, c, l, p, d, h, g, m, f, w, b, _, v, E, L, K,
|
|
|
15354
15360
|
}
|
|
15355
15361
|
k.role === "user" && je();
|
|
15356
15362
|
const N = ke(), ye = Us(k.content), Le = k.role === "assistant" && ne.some(
|
|
15357
|
-
(
|
|
15363
|
+
($) => $.role === "tool" && Ns($, k)
|
|
15358
15364
|
);
|
|
15359
15365
|
if (k.role === "assistant" && !N && !Le) {
|
|
15360
|
-
const
|
|
15361
|
-
Y(
|
|
15366
|
+
const $ = Oi(f());
|
|
15367
|
+
Y($), X = null, H = $;
|
|
15362
15368
|
}
|
|
15363
15369
|
const Q = ub(
|
|
15364
15370
|
k,
|
|
@@ -15368,13 +15374,13 @@ function lb(t, e, n, i, s, o, a, r, c, l, p, d, h, g, m, f, w, b, _, v, E, L, K,
|
|
|
15368
15374
|
ge
|
|
15369
15375
|
);
|
|
15370
15376
|
if (Q.querySelector("[data-submission-retry]")?.remove(), k.role === "user" && k.retryable) {
|
|
15371
|
-
const
|
|
15372
|
-
|
|
15377
|
+
const $ = document.createElement("button");
|
|
15378
|
+
$.type = "button", $.className = "pluno-pa-widget__error-retry", $.dataset.submissionRetry = k.id, $.textContent = "Retry this message", $.addEventListener("click", () => b(k.id)), Q.appendChild($);
|
|
15373
15379
|
}
|
|
15374
15380
|
Y(Q), X = Q, H = null, k.role === "assistant" && je();
|
|
15375
15381
|
}
|
|
15376
15382
|
const P = ke(), Z = ne[ne.length - 1]?.role === "assistant";
|
|
15377
|
-
if (J.showProgress && o.turnPhase && !o.assistantDraft && !
|
|
15383
|
+
if (J.showProgress && o.turnPhase && !o.assistantDraft && !q && !Z && !W) {
|
|
15378
15384
|
const C = o.activeResponseUserMessageId ? `response:${o.activeResponseUserMessageId}` : `session:${o.sessionId ?? "pending"}`;
|
|
15379
15385
|
if (P) {
|
|
15380
15386
|
if (!me) {
|
|
@@ -15408,23 +15414,23 @@ function lb(t, e, n, i, s, o, a, r, c, l, p, d, h, g, m, f, w, b, _, v, E, L, K,
|
|
|
15408
15414
|
Q.className = "pluno-pa-widget__error-retry", Q.href = o.lastErrorSecuritySettingsUrl, Q.target = "_blank", Q.rel = "noreferrer", Q.textContent = "Security settings", ye.appendChild(Q);
|
|
15409
15415
|
}
|
|
15410
15416
|
for (const Q of J.actions) {
|
|
15411
|
-
const
|
|
15412
|
-
|
|
15417
|
+
const $ = document.createElement("button");
|
|
15418
|
+
$.type = "button", $.className = "pluno-pa-widget__error-retry";
|
|
15413
15419
|
const ee = K?.has(Q) === !0 || Q === "retry_history" && o.conversationDiagnostics?.queryRequestId != null || Q === "retry_message" && o.isRetrying;
|
|
15414
|
-
|
|
15420
|
+
$.disabled = ee, $.setAttribute("aria-busy", String(ee)), $.textContent = Q === "new_chat" ? ee ? "Starting new chat" : "Start new chat" : ee ? "Trying" : "Try again", ee && $.prepend(pn()), $.addEventListener("click", () => U(Q, Q === "retry_history" ? E : Q === "retry_message" ? b : L)), ye.appendChild($);
|
|
15415
15421
|
}
|
|
15416
15422
|
N.appendChild(ye), Y(N), X = null, H = N;
|
|
15417
15423
|
}
|
|
15418
15424
|
for (const C of G?.requests ?? []) {
|
|
15419
15425
|
if (Fe.has(C.authRequestId)) continue;
|
|
15420
|
-
const k =
|
|
15426
|
+
const k = B(C);
|
|
15421
15427
|
Y(k), X = null, H = k;
|
|
15422
15428
|
}
|
|
15423
|
-
if (
|
|
15429
|
+
if (M && !ht) {
|
|
15424
15430
|
const C = Kl(
|
|
15425
|
-
|
|
15426
|
-
|
|
15427
|
-
|
|
15431
|
+
M.request,
|
|
15432
|
+
M.onConnect,
|
|
15433
|
+
M.presentation
|
|
15428
15434
|
);
|
|
15429
15435
|
Y(C), X = null, H = C;
|
|
15430
15436
|
}
|
|
@@ -15832,15 +15838,15 @@ function Ab(t, e, n, i, s, o, a, r = !0) {
|
|
|
15832
15838
|
a
|
|
15833
15839
|
), K = JSON.stringify(a), U = document.createElement("div");
|
|
15834
15840
|
U.className = "pluno-pa-widget__tool-active-content";
|
|
15835
|
-
const ge = Ys(), G = document.createElement("details"),
|
|
15836
|
-
|
|
15841
|
+
const ge = Ys(), G = document.createElement("details"), M = document.createElement("summary");
|
|
15842
|
+
M.className = "pluno-pa-widget__tool-summary";
|
|
15837
15843
|
const D = document.createElement("div");
|
|
15838
|
-
D.className = "pluno-pa-widget__tool-summary-title",
|
|
15844
|
+
D.className = "pluno-pa-widget__tool-summary-title", M.appendChild(D), M.addEventListener("click", () => {
|
|
15839
15845
|
const J = E.dataset.responseGroupKey ?? l;
|
|
15840
15846
|
G.open ? (n.delete(J), n.add(`closed:${J}`)) : (n.add(J), n.delete(`closed:${J}`)), o(), D.textContent = G.open ? E.dataset.collapsedActivityTitle ?? "Activities" : "Activities";
|
|
15841
|
-
}), G.appendChild(
|
|
15842
|
-
const
|
|
15843
|
-
|
|
15847
|
+
}), G.appendChild(M);
|
|
15848
|
+
const B = document.createElement("div");
|
|
15849
|
+
B.className = "pluno-pa-widget__tool-lines", G.addEventListener("toggle", () => {
|
|
15844
15850
|
E.dataset.responseGroupKey, E.classList.toggle("pluno-pa-widget__tool-group--open", G.open), D.textContent = G.open ? "Activities" : E.dataset.collapsedActivityTitle ?? "Activities";
|
|
15845
15851
|
}), p = {
|
|
15846
15852
|
node: E,
|
|
@@ -15849,9 +15855,9 @@ function Ab(t, e, n, i, s, o, a, r = !0) {
|
|
|
15849
15855
|
activeContent: U,
|
|
15850
15856
|
thinkingStatus: ge,
|
|
15851
15857
|
details: G,
|
|
15852
|
-
summary:
|
|
15858
|
+
summary: M,
|
|
15853
15859
|
summaryTitle: D,
|
|
15854
|
-
lines:
|
|
15860
|
+
lines: B,
|
|
15855
15861
|
lineNodes: /* @__PURE__ */ new Map()
|
|
15856
15862
|
}, i.set(l, p);
|
|
15857
15863
|
}
|