@runtypelabs/persona 4.30.0 → 4.32.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +22 -1
- package/dist/activity-ui.cjs +2 -2
- package/dist/activity-ui.d.cts +11 -3
- package/dist/activity-ui.d.ts +11 -3
- package/dist/activity-ui.js +1 -1
- package/dist/animations/glyph-cycle.d.cts +1 -1
- package/dist/animations/glyph-cycle.d.ts +1 -1
- package/dist/animations/wipe.d.cts +1 -1
- package/dist/animations/wipe.d.ts +1 -1
- package/dist/approval-ui.d.cts +2 -2
- package/dist/approval-ui.d.ts +2 -2
- package/dist/artifacts-ui.d.cts +3 -3
- package/dist/artifacts-ui.d.ts +3 -3
- package/dist/background-runtime.d.cts +1 -1
- package/dist/background-runtime.d.ts +1 -1
- package/dist/chunk-C2IbR39s.js +1 -0
- package/dist/chunk-CkE90FtA.js +2 -0
- package/dist/{chunk-n96BB0YH.js → chunk-CzZBmTLd.js} +1 -1
- package/dist/chunk-DABqu7C3.js +2 -0
- package/dist/chunk-DDAwu89-.js +1 -0
- package/dist/{chunk-CqEWCkJt.js → chunk-DZg9bFK6.js} +1 -1
- package/dist/chunk-DbD5qyBw.js +3 -0
- package/dist/{chunk-gayfbmEU.js → chunk-FEzOcZof.js} +1 -1
- package/dist/{chunk-UyZbbbz3.js → chunk-MdlQetfC.js} +2 -2
- package/dist/client-dispatch.js +1 -1
- package/dist/client-history.js +1 -1
- package/dist/codegen.cjs +1 -1
- package/dist/codegen.js +1 -1
- package/dist/composer-actions-runtime.d.cts +2 -2
- package/dist/composer-actions-runtime.d.ts +2 -2
- package/dist/{composer-input-C76gfIoK.d.cts → composer-input-dwg_o9Z-.d.cts} +1 -1
- package/dist/{composer-input-C76gfIoK.d.ts → composer-input-dwg_o9Z-.d.ts} +1 -1
- package/dist/{composer-store-C7tvaz90.d.cts → composer-store-Dw7Zbqxr.d.cts} +1 -1
- package/dist/{composer-store-C7tvaz90.d.ts → composer-store-Dw7Zbqxr.d.ts} +1 -1
- package/dist/{context-mention-manager-IfT4JHma.d.cts → context-mention-manager-D2p0-JH-.d.cts} +2 -2
- package/dist/{context-mention-manager-IfT4JHma.d.ts → context-mention-manager-D2p0-JH-.d.ts} +2 -2
- package/dist/context-mentions-inline.d.cts +2 -2
- package/dist/context-mentions-inline.d.ts +2 -2
- package/dist/context-mentions.d.cts +3 -3
- package/dist/context-mentions.d.ts +3 -3
- package/dist/{defaults-Cc_p0PGM.d.cts → defaults-CjX0kKzb.d.cts} +1 -1
- package/dist/{defaults-Cc_p0PGM.d.ts → defaults-CjX0kKzb.d.ts} +1 -1
- package/dist/dictation-runtime.d.cts +2 -2
- package/dist/dictation-runtime.d.ts +2 -2
- package/dist/event-stream-view.d.cts +1 -1
- package/dist/event-stream-view.d.ts +1 -1
- package/dist/{fallback-speech-engine-CSxWpG0A.d.cts → fallback-speech-engine-DmF7MczI.d.cts} +1 -1
- package/dist/{fallback-speech-engine-CSxWpG0A.d.ts → fallback-speech-engine-DmF7MczI.d.ts} +1 -1
- package/dist/{feature-preferences-eeSOmDxg.d.cts → feature-preferences-CVFDt9Xf.d.cts} +1 -1
- package/dist/{feature-preferences-eeSOmDxg.d.ts → feature-preferences-CVFDt9Xf.d.ts} +1 -1
- package/dist/forms-ui.d.cts +2 -2
- package/dist/forms-ui.d.ts +2 -2
- package/dist/{history-confirm-dialog-DXkuAgh-.d.cts → history-confirm-dialog-DJEXsTyE.d.cts} +1 -1
- package/dist/{history-confirm-dialog-DXkuAgh-.d.ts → history-confirm-dialog-DJEXsTyE.d.ts} +1 -1
- package/dist/history-shell.d.cts +6 -6
- package/dist/history-shell.d.ts +6 -6
- package/dist/history-view.d.cts +1 -1
- package/dist/history-view.d.ts +1 -1
- package/dist/index.cjs +49 -47
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +9 -9
- package/dist/index.d.ts +9 -9
- package/dist/index.global.js +1 -1
- package/dist/index.global.js.map +1 -1
- package/dist/index.js +43 -41
- package/dist/index.js.map +1 -1
- package/dist/{loading-label-runtime-loader-C53YyPJ-.d.cts → loading-label-runtime-loader-CPxnoaoi.d.cts} +1 -1
- package/dist/{loading-label-runtime-loader-C53YyPJ-.d.ts → loading-label-runtime-loader-CPxnoaoi.d.ts} +1 -1
- package/dist/loading-label-runtime.d.cts +1 -1
- package/dist/loading-label-runtime.d.ts +1 -1
- package/dist/markdown-parsers.js +18 -15
- package/dist/{message-bubble-Cg_sTXUN.d.cts → message-bubble-CkZGlCLC.d.cts} +1 -1
- package/dist/{message-bubble-Cg_sTXUN.d.ts → message-bubble-CkZGlCLC.d.ts} +1 -1
- package/dist/preferences-runtime.d.cts +1 -1
- package/dist/preferences-runtime.d.ts +1 -1
- package/dist/{preview-BeMKALry.d.cts → preview-DdUvoLb4.d.cts} +2 -2
- package/dist/{preview-BeMKALry.d.ts → preview-DdUvoLb4.d.ts} +2 -2
- package/dist/{registry-BBe-Lesw.d.ts → registry-Dz4iHNST.d.cts} +3 -1
- package/dist/{registry-BBe-Lesw.d.cts → registry-Dz4iHNST.d.ts} +3 -1
- package/dist/{session-C0fSteA4.d.cts → session-Baxp9iRK.d.cts} +24 -9
- package/dist/{session-C0fSteA4.d.ts → session-Baxp9iRK.d.ts} +24 -9
- package/dist/session-reconnect.d.cts +2 -2
- package/dist/session-reconnect.d.ts +2 -2
- package/dist/smart-dom-reader.d.cts +1 -1
- package/dist/smart-dom-reader.d.ts +1 -1
- package/dist/theme-editor-preview.cjs +47 -45
- package/dist/theme-editor-preview.d.cts +1 -1
- package/dist/theme-editor-preview.d.ts +1 -1
- package/dist/theme-editor-preview.js +23 -24
- package/dist/theme-editor.d.cts +2 -2
- package/dist/theme-editor.d.ts +2 -2
- package/dist/theme-reference.d.cts +2 -2
- package/dist/theme-reference.d.ts +2 -2
- package/dist/{tool-loading-animation-BvdaZfwh.d.cts → tool-loading-animation-un3kA5Ur.d.cts} +1 -1
- package/dist/{tool-loading-animation-BvdaZfwh.d.ts → tool-loading-animation-un3kA5Ur.d.ts} +1 -1
- package/dist/{turn-activity-ui-BYBlInZQ.d.cts → turn-activity-ui-BGNhtMcH.d.cts} +2 -2
- package/dist/{turn-activity-ui-BYBlInZQ.d.ts → turn-activity-ui-BGNhtMcH.d.ts} +2 -2
- package/dist/turn-activity-ui.d.cts +1 -1
- package/dist/turn-activity-ui.d.ts +1 -1
- package/dist/{types-CiXi4ICM.d.cts → types-BOZHQIk0.d.cts} +13 -1
- package/dist/{types-CiXi4ICM.d.ts → types-BOZHQIk0.d.ts} +13 -1
- package/dist/voice-client-tools.d.cts +1 -1
- package/dist/voice-client-tools.d.ts +1 -1
- package/dist/voice-runtime.cjs +1 -1
- package/dist/voice-runtime.d.cts +2 -2
- package/dist/voice-runtime.d.ts +2 -2
- package/dist/voice-runtime.js +1 -1
- package/dist/voice-worklet-player.d.cts +2 -2
- package/dist/voice-worklet-player.d.ts +2 -2
- package/dist/{webmcp-runtime-entry-BTbOg3Au.d.cts → webmcp-runtime-entry-DuAG1_yF.d.cts} +1 -1
- package/dist/{webmcp-runtime-entry-BTbOg3Au.d.ts → webmcp-runtime-entry-DuAG1_yF.d.ts} +1 -1
- package/dist/webmcp-runtime.d.cts +1 -1
- package/dist/webmcp-runtime.d.ts +1 -1
- package/dist/widget.css +1 -1
- package/package.json +2 -2
- package/src/activity-ui.ts +23 -0
- package/src/components/disclosure-animation.ts +5 -0
- package/src/components/tool-bubble.ts +1 -0
- package/src/index-core.ts +2 -0
- package/src/markdown-parsers-eager.ts +2 -1
- package/src/markdown-parsers-entry.ts +1 -0
- package/src/markdown-parsers-loader.ts +2 -0
- package/src/postprocessors.ts +14 -0
- package/src/session.ts +3 -0
- package/src/styles/widget.css +6 -0
- package/src/types.ts +13 -0
- package/src/ui.background-conversations.test.ts +6 -0
- package/src/ui.footer-visibility.test.ts +54 -0
- package/src/ui.page-cache.test.ts +268 -0
- package/src/ui.postprocess.test.ts +80 -1
- package/src/ui.reveal-tool-call.test.ts +258 -0
- package/src/ui.ts +222 -32
- package/src/utils/actions.ts +3 -0
- package/src/utils/streaming-markdown.test.ts +103 -0
- package/src/utils/streaming-markdown.ts +186 -0
- package/dist/chunk-18tPmsiJ.js +0 -1
- package/dist/chunk-B3OrH9Ng.js +0 -2
- package/dist/chunk-Dp2vWE9V.js +0 -1
- package/dist/chunk-VloQ2dnh.js +0 -1
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
import { stabilizeStreamingTables } from "./streaming-table";
|
|
2
|
+
|
|
3
|
+
const whitespace = (char: string): boolean => !char || /\s/.test(char);
|
|
4
|
+
const punctuation = (char: string): boolean => !!char && /[\p{P}\p{S}]/u.test(char);
|
|
5
|
+
|
|
6
|
+
// Code delimiters close only on a backtick run of exactly the same length.
|
|
7
|
+
const codeSpanEnd = (source: string, start: number, end: number): number => {
|
|
8
|
+
const marker = source.slice(start, end);
|
|
9
|
+
let closing = end;
|
|
10
|
+
while ((closing = source.indexOf(marker, closing)) !== -1) {
|
|
11
|
+
if (source[closing - 1] !== "`" && source[closing + marker.length] !== "`") return closing + marker.length;
|
|
12
|
+
closing += marker.length;
|
|
13
|
+
}
|
|
14
|
+
return -1;
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
/** Display-only completion for the ordinary inline syntax arriving at the stream tail.
|
|
18
|
+
* This is deliberately not a Markdown parser: ambiguous literals and block syntax
|
|
19
|
+
* remain Marked's responsibility. Never persist this result or use it at completion.
|
|
20
|
+
*/
|
|
21
|
+
const stabilizeInline = (source: string, links = true): string => {
|
|
22
|
+
const pending: { marker: string }[] = [];
|
|
23
|
+
const literalMarkers = new Set<string>();
|
|
24
|
+
let output = "";
|
|
25
|
+
for (let i = 0; i < source.length;) {
|
|
26
|
+
const char = source[i];
|
|
27
|
+
if (char === "\\") {
|
|
28
|
+
output += source.slice(i, i + 2);
|
|
29
|
+
i += 2;
|
|
30
|
+
continue;
|
|
31
|
+
}
|
|
32
|
+
if (char === "`") {
|
|
33
|
+
let end = i + 1;
|
|
34
|
+
while (source[end] === "`") end++;
|
|
35
|
+
const marker = source.slice(i, end);
|
|
36
|
+
const closing = codeSpanEnd(source, i, end);
|
|
37
|
+
if (closing !== -1) {
|
|
38
|
+
output += source.slice(i, closing);
|
|
39
|
+
i = closing;
|
|
40
|
+
} else {
|
|
41
|
+
const body = source.slice(end);
|
|
42
|
+
// An empty run could still become a fence or literal. Hold it briefly.
|
|
43
|
+
output += body ? `${marker}${body}${body.endsWith("`") ? " " : ""}${marker}` : "";
|
|
44
|
+
i = source.length;
|
|
45
|
+
}
|
|
46
|
+
continue;
|
|
47
|
+
}
|
|
48
|
+
if (char === "<") {
|
|
49
|
+
const end = source.indexOf(">", i + 1);
|
|
50
|
+
output += source.slice(i, end < 0 ? source.length : end + 1);
|
|
51
|
+
i = end < 0 ? source.length : end + 1;
|
|
52
|
+
continue;
|
|
53
|
+
}
|
|
54
|
+
if (links && (char === "[" || (char === "!" && source[i + 1] === "["))) {
|
|
55
|
+
const image = char === "!";
|
|
56
|
+
const start = i + (image ? 2 : 1);
|
|
57
|
+
let depth = 1;
|
|
58
|
+
let end = start;
|
|
59
|
+
for (; end < source.length; end++) {
|
|
60
|
+
if (source[end] === "\\") { end++; continue; }
|
|
61
|
+
if (source[end] === "`") {
|
|
62
|
+
let runEnd = end + 1;
|
|
63
|
+
while (source[runEnd] === "`") runEnd++;
|
|
64
|
+
const closing = codeSpanEnd(source, end, runEnd);
|
|
65
|
+
// Unmatched runs are literal Markdown, so their brackets still count.
|
|
66
|
+
end = (closing < 0 ? runEnd : closing) - 1;
|
|
67
|
+
continue;
|
|
68
|
+
}
|
|
69
|
+
if (source[end] === "[") depth++;
|
|
70
|
+
if (source[end] === "]" && --depth === 0) break;
|
|
71
|
+
}
|
|
72
|
+
if (end >= source.length) {
|
|
73
|
+
output += image ? "" : stabilizeInline(source.slice(start), false);
|
|
74
|
+
break;
|
|
75
|
+
}
|
|
76
|
+
if (source[end + 1] === "(") {
|
|
77
|
+
let parentheses = 1;
|
|
78
|
+
let quote = "";
|
|
79
|
+
let angle = false;
|
|
80
|
+
let destination = end + 2;
|
|
81
|
+
for (; destination < source.length; destination++) {
|
|
82
|
+
const next = source[destination];
|
|
83
|
+
if (next === "\\") { destination++; continue; }
|
|
84
|
+
if (quote) { if (next === quote) quote = ""; continue; }
|
|
85
|
+
if ((next === '"' || next === "'") && whitespace(source[destination - 1])) { quote = next; continue; }
|
|
86
|
+
if (next === "<") angle = true;
|
|
87
|
+
if (next === ">") angle = false;
|
|
88
|
+
if (!angle && next === "(") parentheses++;
|
|
89
|
+
if (!angle && next === ")" && --parentheses === 0) break;
|
|
90
|
+
}
|
|
91
|
+
if (destination >= source.length) {
|
|
92
|
+
output += image ? "" : stabilizeInline(source.slice(start, end), false);
|
|
93
|
+
break;
|
|
94
|
+
}
|
|
95
|
+
output += source.slice(i, destination + 1);
|
|
96
|
+
i = destination + 1;
|
|
97
|
+
continue;
|
|
98
|
+
}
|
|
99
|
+
if (end === source.length - 1) {
|
|
100
|
+
output += image ? "" : stabilizeInline(source.slice(start, end), false);
|
|
101
|
+
break;
|
|
102
|
+
}
|
|
103
|
+
// Reference links and ordinary bracketed prose are left to Marked.
|
|
104
|
+
output += source.slice(i, end + 1);
|
|
105
|
+
i = end + 1;
|
|
106
|
+
continue;
|
|
107
|
+
}
|
|
108
|
+
if (char === "*" || char === "_") {
|
|
109
|
+
let end = i + 1;
|
|
110
|
+
while (source[end] === char) end++;
|
|
111
|
+
const marker = source.slice(i, end);
|
|
112
|
+
const before = source[i - 1] ?? "";
|
|
113
|
+
const after = source[end] ?? "";
|
|
114
|
+
const left = !whitespace(after) && (!punctuation(after) || whitespace(before) || punctuation(before));
|
|
115
|
+
const right = !whitespace(before) && (!punctuation(before) || whitespace(after) || punctuation(after));
|
|
116
|
+
let remaining = marker.length;
|
|
117
|
+
if (right && (char !== "_" || !left || punctuation(after))) {
|
|
118
|
+
while (remaining && pending[pending.length - 1]?.marker[0] === char) {
|
|
119
|
+
const top = pending[pending.length - 1];
|
|
120
|
+
const consumed = Math.min(remaining, top.marker.length);
|
|
121
|
+
remaining -= consumed;
|
|
122
|
+
top.marker = top.marker.slice(consumed);
|
|
123
|
+
if (!top.marker) pending.pop();
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
if (remaining && marker.length <= 3 && left && !right) {
|
|
127
|
+
pending.push({ marker: char.repeat(remaining) });
|
|
128
|
+
} else if (remaining === marker.length && end === source.length && whitespace(before)
|
|
129
|
+
&& source.slice(source.lastIndexOf("\n", i) + 1, i).trim()
|
|
130
|
+
&& (pending.length > 0 || !literalMarkers.has(char))) {
|
|
131
|
+
// Hold an opening run after prose, but preserve ambiguous list/rule lines.
|
|
132
|
+
i = end;
|
|
133
|
+
continue;
|
|
134
|
+
}
|
|
135
|
+
// Whitespace on both sides makes this punctuation literal, as in
|
|
136
|
+
// `_ literal _`. Completed emphasis earlier in the paragraph does not
|
|
137
|
+
// make a later opening run literal.
|
|
138
|
+
if (whitespace(before) && whitespace(after) && end < source.length) literalMarkers.add(char);
|
|
139
|
+
output += marker;
|
|
140
|
+
i = end;
|
|
141
|
+
continue;
|
|
142
|
+
}
|
|
143
|
+
output += char;
|
|
144
|
+
i++;
|
|
145
|
+
}
|
|
146
|
+
// Trailing whitespace cannot precede a Markdown closing delimiter. Keep the
|
|
147
|
+
// whitespace outside the temporary span, preserving it for the next chunk.
|
|
148
|
+
const trailing = output.match(/\s*$/)?.[0] ?? "";
|
|
149
|
+
output = output.slice(0, output.length - trailing.length);
|
|
150
|
+
// A final escape must not swallow the first synthetic closing delimiter.
|
|
151
|
+
if (pending.length && (output.match(/\\+$/)?.[0].length ?? 0) % 2) output += "\\";
|
|
152
|
+
for (let i = pending.length - 1; i >= 0; i--) output += pending[i].marker;
|
|
153
|
+
return output + trailing;
|
|
154
|
+
};
|
|
155
|
+
|
|
156
|
+
export const stabilizeStreamingMarkdown = (source: string): string => {
|
|
157
|
+
let output = "";
|
|
158
|
+
let prose = "";
|
|
159
|
+
let fence = "";
|
|
160
|
+
const flush = (): void => {
|
|
161
|
+
// Restrict inline repairs to the current paragraph, so literal unmatched
|
|
162
|
+
// punctuation earlier in the response cannot style subsequent blocks.
|
|
163
|
+
output += stabilizeStreamingTables(prose).split(/(\n\s*\n)/).map((part) =>
|
|
164
|
+
/^\n\s*\n$/.test(part) ? part : stabilizeInline(part)
|
|
165
|
+
).join("");
|
|
166
|
+
prose = "";
|
|
167
|
+
};
|
|
168
|
+
for (const line of source.match(/[^\n]*\n|[^\n]+$/g) ?? []) {
|
|
169
|
+
const match = /^(?: {0,3}> ?)* {0,3}(?:[-+*] )?(`{3,}|~{3,})(.*)/.exec(line);
|
|
170
|
+
if (fence) {
|
|
171
|
+
output += line;
|
|
172
|
+
if (match && match[1][0] === fence[0] && match[1].length >= fence.length && !match[2].trim()) fence = "";
|
|
173
|
+
} else if (match) {
|
|
174
|
+
flush();
|
|
175
|
+
fence = match[1];
|
|
176
|
+
output += line;
|
|
177
|
+
} else if (/^(?: {4}|\t)/.test(line)) {
|
|
178
|
+
flush();
|
|
179
|
+
output += line;
|
|
180
|
+
} else {
|
|
181
|
+
prose += line;
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
flush();
|
|
185
|
+
return output;
|
|
186
|
+
};
|
package/dist/chunk-18tPmsiJ.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const e=`4.30.0`;export{e as t};
|
package/dist/chunk-B3OrH9Ng.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{r as e,t}from"./chunk-D5BxWOFB.js";import{t as n}from"./chunk-Bb3MaswO.js";import{a as r,c as i,d as a,f as o,g as s,h as c,i as l,l as u,o as d,p as f,r as p,s as m,t as h,u as g}from"./chunk-mEFmAbxE.js";import{i as _,n as v,r as y,t as b}from"./chunk-BGPPJ_ui.js";import{n as x}from"./chunk-Cve3IfG4.js";const S=`[data-persona-disclosure]`,C=/* @__PURE__ */ new WeakMap;function w(e){let t=e?.expansion;return{animation:t?.animation??(e?.future?.v5Defaults?`height`:`instant`),duration:Number.isFinite(t?.duration)?Math.max(0,t.duration):160,easing:t?.easing??`ease-out`}}const T=e=>{let t=Array.from(e.children);return{header:t.find(e=>e.matches(`button[data-expand-header]`)),content:t.find(e=>e.classList.contains(`persona-border-t`)),preview:t.find(e=>e.hasAttribute(`data-persona-collapsed-preview`))}},E=e=>T(e).header?.getAttribute(`aria-expanded`)===`true`,D=()=>typeof matchMedia==`function`&&matchMedia(`(prefers-reduced-motion: reduce)`).matches;function O(e){let{header:t,content:n}=T(e),r=e.getRootNode();n?.contains(r.activeElement)&&t?.focus({preventScroll:!0})}function k(e,t){let{content:n,preview:r}=T(e);n&&(t||O(e),n.inert=!t,n.style.display=t?``:`none`,r&&(r.style.display=t||!(r.textContent||r.childNodes.length)?`none`:``))}function A(e){C.get(e)?.finish()}function j(e){for(let t=e.parentElement?.closest(S);t;t=t.parentElement?.closest(S))A(t);e.querySelectorAll(S).forEach(A)}function M(e,t,n,r){let i=w(n),a=i.animation===`height`&&i.duration>0&&!D()&&e.isConnected&&typeof e.animate==`function`,o=a?r??e.getBoundingClientRect().height:0,s=a&&C.has(e)?T(e).content:void 0,c=s?getComputedStyle(s):void 0,l=c?{transform:c.transform,opacity:c.opacity}:void 0;if(j(e),A(e),k(e,t),!a)return;let{header:u,content:d,preview:f}=T(e);if(!u||!d)return;let p=e.getBoundingClientRect().height;if(o===p)return;t||(d.style.display=``,f&&(f.style.display=`none`));let m,h;try{m=e.animate([{height:`${o}px`,boxSizing:`border-box`,overflow:`hidden`},{height:`${p}px`,boxSizing:`border-box`,overflow:`hidden`}],{duration:i.duration,easing:i.easing,fill:`both`});let n=getComputedStyle(d),r={transform:n.transform||`none`,opacity:n.opacity||`1`},a={transform:`${r.transform===`none`?``:r.transform} translateY(-8px)`,opacity:`0`};h=d.animate([l??(t?a:r),t?r:a],{duration:i.duration,easing:i.easing,fill:`both`})}catch{m?.cancel(),k(e,t);return}let g,_=p,v=()=>{C.get(e)?.effect===m&&(C.delete(e),g?.disconnect(),m.onfinish=m.oncancel=null,m.cancel(),h.cancel(),k(e,t))};C.set(e,{effect:m,expanded:t,settings:JSON.stringify(i),finish:v}),m.onfinish=m.oncancel=v,t&&typeof ResizeObserver==`function`&&(g=new ResizeObserver(()=>{if(C.get(e)?.effect!==m||!e.isConnected)return;let t=m.effect,n=t?.getComputedTiming().progress;if(n==null||n<0||n>=1)return;let r=e.getBoundingClientRect().height,i=e.style.getPropertyValue(`height`),a=e.style.getPropertyPriority(`height`);e.style.setProperty(`height`,`auto`,`important`);let o=e.getBoundingClientRect().height;i?e.style.setProperty(`height`,i,a):e.style.removeProperty(`height`),o!==_&&(_=o,t.setKeyframes([{height:`${r}px`,offset:n,boxSizing:`border-box`,overflow:`hidden`},{height:`${o}px`,offset:1,boxSizing:`border-box`,overflow:`hidden`}]))}),g.observe(d),g.observe(u))}function N(e,t){let n=/* @__PURE__ */ new Set,r=/* @__PURE__ */ new Map,i=typeof matchMedia==`function`?matchMedia(`(prefers-reduced-motion: reduce)`):void 0,a=()=>n.forEach(A),o=()=>{i?.matches&&a()};i?.addEventListener?.(`change`,o);let s=()=>{let e=w(t());return e.animation===`height`&&e.duration>0&&!D()};return{prepare(i){if(r.clear(),!s()){a(),n.clear();return}let o=new Map(Array.from(e.querySelectorAll(S),e=>[e.id,e]));for(let e of i.querySelectorAll(S)){let i=o.get(e.id);if(!i)continue;n.add(i);let a=E(e),s=C.get(i);if(a!==E(i))r.set(i.id,i.getBoundingClientRect().height),a||O(i),A(i);else if(s){if(s.settings!==JSON.stringify(w(t()))||D())A(i);else if(!s.expanded){let{content:t,preview:n}=T(e);t&&(t.style.display=``,t.inert=!0),n&&(n.style.display=`none`)}}}},sync(){if(!s())a(),n.clear(),r.clear();else{for(let t of n)e.contains(t)||(A(t),n.delete(t));for(let i of e.querySelectorAll(S)){n.add(i);let e=r.get(i.id);e!==void 0&&M(i,E(i),t(),e);let a=C.get(i);a&&(a.settings!==JSON.stringify(w(t()))||D())&&A(i)}r.clear()}},clear(){e.querySelectorAll(S).forEach(A),a(),n.clear(),r.clear()},destroy(){this.clear(),i?.removeEventListener?.(`change`,o)}}}const P=new Map([[`web_search|web_search_preview|WebSearch`,`Searching the web`,`Searched the web`,`globe`],[`web_fetch|WebFetch`,`Reading web pages`,`Read web pages`,`globe`,`single`],[`file_search|search_files|Glob`,`Searching files`,`Searched files`,`search`],[`read_text_file|read_multiple_files|Read`,`Reading files`,`Read files`,`file-text`,`single`],[`write_file|edit_file|apply_patch|Write|Edit|NotebookEdit`,`Editing files`,`Edited files`,`pencil`,`single`],[`list_directory|list_directory_with_sizes|directory_tree`,`Browsing files`,`Browsed files`,`folder`],[`Grep`,`Searching code`,`Searched code`,`search`],[`shell|local_shell|bash|Bash|PowerShell|bash_code_execution`,`Running commands`,`Ran commands`,`terminal`,`single`],[`code_interpreter|code_execution`,`Running code`,`Ran code`,`code-xml`],[`browser_navigate|browser_click|browser_snapshot|browser_fill_form`,`Using the browser`,`Used the browser`,`globe`],[`computer`,`Using the computer`,`Used the computer`,`monitor`],[`image_generation`,`Generating images`,`Generated images`,`image`],[`git_status|git_diff|git_diff_staged|git_diff_unstaged|git_log|git_show`,`Checking repository changes`,`Checked repository changes`,`file-code`],[`tool_search|ToolSearch`,`Finding tools`,`Looked up tools`,`search`],[`Agent`,`Delegating work`,`Delegated work`,`bot`],[`TodoWrite|TaskCreate|TaskUpdate`,`Updating the plan`,`Updated the plan`,`clipboard`],[`sql_db_query`,`Querying the database`,`Queried the database`,`database`],[`search_gmail`,`Searching email`,`Searched email`,`mail`]].flatMap(([e,...t])=>e.split(`|`).map(e=>[e,t]))),F=e=>{let t=e.replace(/([a-z\d])([A-Z])/g,`$1 $2`).replace(/[_-]+/g,` `).replace(/\s+/g,` `).toLowerCase();return t[0].toUpperCase()+t.slice(1)},I=e=>{let t=e.name?.trim()||`tool`,n=F(t);return P.get(t)??[`Using ${n}`,`Used ${n}`]},ee=e=>I(e)[2]??`wrench`,te=(e,t)=>{let n=t.toolCall?.iconName;return(typeof n==`function`?n(e):n)??ee(e)};function ne(e,t){if(typeof t.toolCall?.iconName==`string`)return t.toolCall.iconName;let n=e.map(e=>te(e,t));return e.every((t,r)=>I(t)[0]===I(e[0])[0]&&n[r]===n[0])?n[0]:`toolbox`}const L=[[`approvalStatus`,`pending`,`Waiting for approval`],[`approvalStatus`,`denied`,`Approval denied`],[`approvalStatus`,`timeout`,`Approval expired`],[`success`,!1,`Failed`],[`interrupted`,!0,`Interrupted`],[`superseded`,!0,`Approved, ran again below`]],R=e=>e.error||L.some(([t,n])=>e[t]===n),z=e=>R(e)?F(e.name?.trim()||`tool`):I(e)[+(e.status===`complete`)],B=e=>{let t=z(e);return I(e)[3]&&!/^(read_multiple_files|apply_patch)$/.test(e.name?.trim()??``)?t.replace(/(web pages|files|commands)$/,e=>`a ${e.slice(0,-1)}`):t};function re(e,t=3){let n=e.length;if(n===0)return``;(!Number.isInteger(t)||t<0)&&(t=3);let r=/* @__PURE__ */ new Map;for(let t of e){let e=I(t)[0],n=r.get(e);(!n||n.status===`complete`&&!R(n))&&r.set(e,t)}let i=t?[...r.values()].slice(0,t).map((e,t)=>{let n=z(e);return t?n[0].toLowerCase()+n.slice(1):n}).join(`, `):n===1?`1 activity`:`${n} activities`,a=r.size-t;a>0&&t&&(i+=`, and ${a} more`);for(let[t,n,r]of L)e.some(e=>e[t]===n||n===!1&&e.error)&&(i+=` · ${r}`);return i}function ie(e){let{executionId:t,phase:n}=e.agentMetadata??{};if(e.role!==`assistant`||typeof t!=`string`||!t)return;let r=e.variant===`tool`||e.variant===`reasoning`||n===`commentary`?`progress`:n===`partial_answer`||n===`final_answer`?`final`:void 0;if(r)return{id:t,kind:r,startedAt:Date.parse(e.createdAt)}}const ae={toolCallDisplay:{variant:`row`,grouped:!0,groupedMode:`collapsible`,autoExpand:!1,iconVisibility:`always`},reasoningDisplay:{appearance:`inset`,variant:`row`,autoExpand:!1,iconVisibility:`always`}},oe=Object.entries(ae).flatMap(([e,t])=>Object.keys(t).map(t=>`features.${e}.${t}`)),se=/* @__PURE__ */ new WeakMap;function ce(e,t){return e.turnActivity??t.turnActivity?.resolveMessage?.(e)??ie(e)}const le=e=>{let t=e.toolCall,n=e.approval?.status??t.approvalStatus;return t.error||t.interrupted||t.success===!1||t.superseded||n&&n!==`approved`},ue=(e,t)=>e.toolCall?.actionTitle?.trim()||t?.toolCall?.resolveActionTitle?.(e.toolCall,e)?.trim()||void 0,de=(e,t)=>ue(e,t)||B(e.toolCall);function fe(e,t,n){let r=e.filter(e=>e.toolCall?.status!==`complete`);return t.features?.toolCallDisplay?.groupSummary===`current-action`&&r.length===1&&!e.some(le)?de(r[0],t):n}function V(e,t){if(!e.turnActivity?.enabled||t.role!==`assistant`||ce(t,e)?.kind!==`progress`)return e;let n=se.get(e);if(n)return n;let{defaultProvenance:r,suppliedPath:i}=l(),a=r(e,oe),o={...e.features};for(let t of[`toolCallDisplay`,`reasoningDisplay`]){let n={...o[t]};for(let[r,o]of Object.entries(ae[t]))!a.includes(`features.${t}.${r}`)&&i(e.preferences,`${t}.${r}`)!==`explicit`&&Object.assign(n,{[r]:o});o[t]=n}o.toolCallDisplay={...o.toolCallDisplay,groupSummary:o.toolCallDisplay?.groupSummary??(o.toolCallDisplay?.groupedMode===`stack`?`aggregate`:`current-action`)};let s={...e,features:o};return se.set(e,s),s}const pe=[`persona-w-full`,`persona-rounded-2xl`,`persona-bg-persona-surface`,`persona-border`,`persona-border-persona-message-border`,`persona-text-persona-primary`,`persona-shadow-sm`,`persona-overflow-hidden`,`persona-px-0`,`persona-py-0`],H=(e,t)=>t==null?!1:typeof t==`string`?(e.textContent=t,!0):(e.appendChild(t),!0),U=(e,n)=>{let r=t(`div`,[`persona-message-bubble`,e,...pe].join(` `));return r.id=`bubble-${n}`,r.setAttribute(`data-message-id`,n),r.setAttribute(`data-persona-disclosure`,``),r},W=e=>{let n=t(`button`,e.expandable?`persona-flex persona-w-full persona-items-center persona-justify-between persona-gap-3 persona-bg-transparent persona-px-4 persona-py-3 persona-text-left persona-cursor-pointer persona-border-none`:`persona-flex persona-w-full persona-items-center persona-justify-between persona-gap-3 persona-bg-transparent persona-px-4 persona-py-3 persona-text-left persona-cursor-default persona-border-none`);return n.type=`button`,e.expandable&&(n.setAttribute(`aria-expanded`,e.expanded?`true`:`false`),n.setAttribute(`data-expand-header`,`true`)),n.setAttribute(`data-bubble-type`,e.bubbleType),n},G=(e,t,n,r)=>{let i=r?.expansion?.chevron?.[t?`expanded`:`collapsed`]??(r?.future?.v5Defaults?t?`down`:`right`:t?`up`:`down`),a=w(r),o=e.querySelector(`svg`);if(!o){if(o=d(`chevron-right`,16,n,1.5),!o)return;e.replaceChildren(o)}o.setAttribute(`stroke`,n),e.classList.add(`persona-disclosure-chevron`),e.style.transform=`rotate(${{right:0,down:90,left:180,up:-90}[i]}deg)`,e.style.transitionDuration=`${a.animation===`height`?a.duration:0}ms`,e.style.transitionTimingFunction=a.easing},K=(e,n,r)=>{if(!r.expandable)return e.append(n),null;let i=t(`div`,`persona-flex persona-items-center`);G(i,r.expanded,r.iconColor,r.config);let a=t(`div`,r.metaGap?`persona-flex persona-items-center persona-gap-2 persona-ml-auto`:`persona-flex persona-items-center persona-ml-auto`);return a.append(i),e.append(n,a),i},q=e=>{let n=t(`div`,`persona-px-4 persona-py-3 persona-text-xs persona-leading-snug persona-text-persona-muted`);if(n.setAttribute(`data-persona-collapsed-preview`,e.previewKind),n.style.display=`none`,n.style.whiteSpace=`pre-wrap`,!e.expanded&&e.isActive&&e.activePreview&&e.previewText){let t=e.renderPreview?.();H(n,t)||(n.textContent=e.previewText),n.style.display=``}return!e.expanded&&e.isActive&&e.activeMinHeight&&(e.bubble.style.minHeight=e.activeMinHeight),n},me=e=>{e.header.setAttribute(`aria-expanded`,e.expanded?`true`:`false`),e.toggleIcon&&G(e.toggleIcon,e.expanded,e.iconColor,e.config),e.content.style.display=e.expanded?``:`none`,e.content.inert=!e.expanded,e.collapsedPreview.style.display=e.expanded?`none`:e.collapsedPreview.textContent||e.collapsedPreview.childNodes.length?``:`none`},he=(e,t,n)=>{let r=n.stateSet.has(e),i=t.querySelector(`button[data-expand-header="true"]`),a=t.querySelector(`.persona-border-t`);if(!i||!a)return;i.setAttribute(`aria-expanded`,r?`true`:`false`);let o=i.querySelector(`.persona-ml-auto`)?.querySelector(`:scope > .persona-flex.persona-items-center`);o&&G(o,r,n.iconColor,n.config),M(t,r,n.config)},ge=(e,n,r,i,a,o)=>{e.textContent=``;for(let s of c(n,r))(s.styles.length?e.appendChild(t(`span`,s.styles.map(e=>`persona-tool-text-${e}`).join(` `))):e).append(s.isDuration?i?o():a:s.text)},_e=(e,t,n,r)=>{let i=n instanceof HTMLElement;return t.textContent=typeof n==`string`&&n.trim()?n:r,e.appendChild(i?n:t),i},J=(e,t,n)=>e.split(/\r?\n/).map(e=>e.trim()).filter(Boolean).slice(t,n).join(`
|
|
2
|
-
`);function Y(e,t,n){e&&n&&(e=V(e,n));let r=t===`tool`,i=r?`toolCallDisplay`:`reasoningDisplay`;return{...e,features:{...e?.features,[i]:{...r?y:b,...e?.future?.v5Defaults===!0?r?_:v:{},...e?.features?.[i],layout:X(e,t)}}}}function X(e,t,n){e&&n&&(e=V(e,n));let r=t===`tool`?`toolCallDisplay`:`reasoningDisplay`;return e?.features?.[r]?.layout??e?.features?.[r]?.variant??(e?.future?.v5Defaults?`row`:`card`)}function Z(e){let t=Math.max(0,Math.floor((e??0)/1e3));return t<1?`a moment`:t<60?`${t}s`:`${Math.floor(t/60)}m ${t%60}s`}function ve(e,t){let n=Number(e.getAttribute(`data-tool-elapsed`));if(!n)return;let r=t-n;e.textContent=e.classList.contains(`persona-activity-duration`)?ye(r,e.dataset.prefix):e.closest(`.persona-activity-row`)?Z(r):f(r)}const ye=(e,t=``)=>Number.isFinite(e)&&e>=1e3?t+Z(e):``;function Q(e,n,r,i,a=!1,o){let s=a||X(r,i)===`row`,c=e.querySelector(`:scope > button`),u=i===`tool`?n.toolCall:n.reasoning,f=u?.status!==`complete`,p=r.features?.toolCallDisplay?.durationDisplay;if(c&&(s||r.future?.v5Defaults)&&i===`tool`&&u&&(p===`all`||p===(a?`group`:`tools`))){let e=t(`span`,`persona-activity-duration`),{startedAt:r,completedAt:i,durationMs:a}=u;f&&r>0&&r<=Date.now()&&e.setAttribute(`data-tool-elapsed`,String(r));let o=n.toolCall?.duration??a??i-r;e.textContent=ye(f&&r!==void 0?r>0?Date.now()-r:void 0:o),c.appendChild(e)}if(!s)return e;if(e.className=`persona-message-bubble persona-${i}-bubble persona-activity-row`,e.dataset.activityKind=i,i===`tool`){let t=l().getExplicitLegacyStyle(r,`toolCall.shadow`);e.style.boxShadow=typeof t==`string`?t.trim()||`none`:`var(--persona-consumer-toolBubble-shadow, none)`}if(!c)return e;c.className=c.classList.contains(`persona-theme-padding`)?`persona-activity-header persona-theme-padding`:`persona-activity-header`;let m=n.approval?.status??n.toolCall?.approvalStatus,h=n.toolCall?.interrupted?`interrupted`:m===`denied`||m===`timeout`?`denied`:m===`pending`?`awaiting-approval`:n.toolCall?.success===!1?`error`:f?u?.status===`pending`?`pending`:`running`:`done`;e.dataset.activityState=h;let g=t(`span`,`persona-activity-icon`);g.dataset.activityIcon=h;let _=i===`reasoning`?r.features?.reasoningDisplay?.iconName:void 0,v=h===`done`?i===`reasoning`?_||`brain`:o??(a?`toolbox`:te(n.toolCall,r)):void 0;v&&v!==`check`&&(g.style.color=`inherit`);let y=d(_||(h===`pending`?`circle`:h===`awaiting-approval`?`clock`:h===`running`?`loader-circle`:h===`done`?v||`check`:`x`),16,`currentColor`,2);!y&&v&&(y=d(`square-text`,16,`currentColor`,2)),y&&g.appendChild(y),c.querySelector(`.persona-reasoning-header-icon`)?.remove();let b=i===`tool`?`toolCallDisplay`:`reasoningDisplay`,x=(a?r.features?.toolCallDisplay?.groupIconVisibility:void 0)??r.features?.[b]?.iconVisibility??(r.future?.v5Defaults?`active`:`always`);(x===`always`||x===`active`&&h!==`done`)&&c.prepend(g),c.querySelector(`:scope > div:not(.persona-ml-auto)`)?.classList.add(`persona-activity-label`),c.querySelector(`.persona-ml-auto`)?.classList.add(`persona-activity-chevron`);let S=e.querySelector(`:scope > .persona-border-t`);return S?.classList.add(`persona-activity-body`),S&&(S.id=`activity-details-${n.id}`,c.setAttribute(`aria-controls`,S.id)),e}function be(e,t,n=()=>({})){let r=t?N(t,n):void 0,i=/* @__PURE__ */ new Map,a=e=>{let t=i.get(e)??{};return i.set(e,t),t},o=e=>{clearTimeout(e.timer),e.timer=void 0};return{observe(t,r,s,c={},l){let u=r===`tool`?t.toolCall:t.reasoning;if(!u)return;let d=Y(n(),r,t).features;c={...r===`tool`?d?.toolCallDisplay:d?.reasoningDisplay,...c},!i.has(t.id)&&l!==void 0&&(s[l?`add`:`delete`](t.id),a(t.id).manual=i.get(l)?.manual);let f=a(t.id);if(!f.manual&&(u.status!==`complete`&&(o(f),f.finished=!1),!f.seen&&u.status!==`complete`&&u.chunks?.some(Boolean)&&(f.seen=!0,c.autoExpand!==!1&&s.add(t.id)),f.seen&&u.status===`complete`&&!f.finished)){if(f.finished=!0,c.autoCollapseDelay===!1)return;f.timer=setTimeout(()=>{f.timer=void 0,s.delete(t.id),e(t.id,r)},c.autoCollapseDelay??1e3)}},manual(e){let t=a(e);t.manual=!0,o(t)},prune(e){for(let[t,n]of i)e.has(t)||(o(n),i.delete(t))},prepare(e){r?.prepare(e)},sync(){r?.sync()},clear(){i.forEach(o),i.clear(),r?.clear()},destroy(){this.clear(),r?.destroy()}}}function xe(e,n,r,i,a=typeof i==`string`,o){let s=U(`persona-tool-bubble`,e.id),c=W({expandable:!0,expanded:r,bubbleType:`tool`}),l=t(`div`,``);typeof i==`string`?l.textContent=i:l.appendChild(i);let u=m(n);K(c,l,{config:n,expandable:!0,expanded:r,iconColor:u.toggleTextColor||u.headerTextColor||`currentColor`,metaGap:!0});let d=t(`div`,`persona-border-t`);return d.style.display=r?``:`none`,d.inert=!r,s.append(c,d),Q(s,e,n,`tool`,!0,o),s.dataset.personaToolGroup=`true`,w(n).animation===`height`&&(s.dataset.personaDisclosureMotion=`height`),a&&(s.dataset.activityState===`running`||s.dataset.activityState===`pending`)&&x(l,n,`tool-group`),{bubble:s,body:d}}const Se=(e,t=!1)=>e.toggleTextColor||e.headerTextColor||(t?`currentColor`:`var(--persona-primary, #171717)`),Ce=(e,t)=>{let r=(e.chunks??[]).join(``).trim();return r?J(r,-t):J(n(e.args),0,t)},we=(e,t,n)=>{let r=n?.features?.toolCallDisplay,i=X(n,`tool`)===`row`,a=r?.collapsedMode??y.collapsedMode,c=t.success===!1?t.error||`Tool failed`:Ce(t,r?.previewMaxLines??y.previewMaxLines),l=i&&a===`tool-call`?B({...t,approvalStatus:e.approval?.status??t.approvalStatus}):t.interrupted?`${t.name?.trim()||`Tool`} · Interrupted`:n?.future?.v5Defaults||i?`${t.status===`complete`?`Used`:`Using`} ${t.name?.trim()||`tool`}`:o(t),u=t.status!==`complete`,d=n?.toolCall??{},f=u&&i&&a===`tool-call`&&!le(e)?de(e,n):l;a===`tool-name`?f=t.name?.trim()||l:a===`tool-preview`&&c&&(f=c),u&&d.activeTextTemplate?f=s(t,d.activeTextTemplate,f):!u&&!t.interrupted&&d.completeTextTemplate&&(f=s(t,d.completeTextTemplate,f)),t.interrupted?f.includes(` · Interrupted`)||(f+=` · Interrupted`):t.success===!1?f+=` · Failed`:t.superseded&&(f+=` · Approved, ran again below`);let p=e.approval?.status??t.approvalStatus;return p===`pending`?f+=` · Waiting for approval`:p===`denied`?f+=` · Approval denied`:p===`timeout`&&(f+=` · Approval expired`),{summary:f,previewText:c,isActive:u}},Te=(e,t,n,r)=>{he(e,t,{stateSet:n,config:r,iconColor:Se(m(r),t.classList.contains(`persona-activity-row`))})},Ee=(r,i,a=/* @__PURE__ */ new Set)=>{i=Y(i,`tool`,r);let o=r.toolCall,s=m(i),c=U(`persona-tool-bubble`,r.id);if(s.backgroundColor&&(c.style.backgroundColor=s.backgroundColor),s.borderColor&&(c.style.borderColor=s.borderColor),s.borderWidth&&(c.style.borderWidth=s.borderWidth),s.borderRadius&&(c.style.borderRadius=s.borderRadius),c.style.boxShadow=s.shadow===void 0?`var(--persona-tool-bubble-shadow)`:s.shadow.trim()===``?`none`:s.shadow,!o)return Q(c,r,i,`tool`);let l=i.features.toolCallDisplay,u=l.expandable??y.expandable,d=u&&a.has(r.id),{summary:f,previewText:_,isActive:v}=we(r,o,i),b=W({expandable:u,expanded:d,bubbleType:`tool`});s.headerBackgroundColor&&(b.style.backgroundColor=s.headerBackgroundColor),p(b,i,`header`);let S=t(`div`,`persona-flex persona-flex-col persona-text-left`),C=t(`span`,`persona-text-xs persona-text-persona-primary`);s.headerTextColor&&(C.style.color=s.headerTextColor);let w=String(o.startedAt??Date.now()),T=()=>{let e=t(`span`,``);return v&&e.setAttribute(`data-tool-elapsed`,w),e.textContent=g(o),e},E=s.renderCollapsedSummary?.({message:r,toolCall:o,defaultSummary:f,actionTitle:ue(r,i),previewText:_,collapsedMode:l.collapsedMode??y.collapsedMode,isActive:v,config:i,elapsed:g(o),createElapsedElement:T}),D=_e(S,C,E,f),O=s.activeTextTemplate,k=o.interrupted?void 0:s.completeTextTemplate,A=v?O:k;D||(A&&ge(C,A,o.name?.trim()||`tool`,v,g(o),T),v&&x(C,i,`tool`));let j=Se(s,X(i,`tool`)===`row`),M=K(b,S,{config:i,expandable:u,expanded:d,iconColor:j,metaGap:!0}),N=q({bubble:c,previewKind:`tool`,expanded:d,isActive:v,previewText:_,activePreview:l.activePreview,activeMinHeight:l.activeMinHeight,renderPreview:()=>s.renderCollapsedPreview?.({message:r,toolCall:o,defaultPreview:_,isActive:v,config:i})});if(!u)return c.append(b,N),Q(c,r,i,`tool`);let P=t(`div`,`persona-border-t persona-border-gray-200 persona-bg-gray-50 persona-space-y-3 persona-px-4 persona-py-3`);P.style.display=d?``:`none`,s.contentBackgroundColor&&(P.style.backgroundColor=s.contentBackgroundColor),s.contentTextColor&&(P.style.color=s.contentTextColor),p(P,i,`content`);let F=i.future?.v5Defaults===!0;if(l.showToolName&&o.name&&P.appendChild(e(`div`,{className:`persona-text-xs persona-text-persona-muted${F?``:` persona-italic`}`,attrs:{"data-persona-tool-name":``},text:o.name,style:{color:F?void 0:s.contentTextColor||s.headerTextColor}})),F)h(P,r,i);else{let r=(r,i)=>{let a=t(`div`,`persona-space-y-1`),o=e(`div`,{className:`persona-text-xs persona-text-persona-muted`,text:r,style:{color:s.labelTextColor}}),c=e(`pre`,{className:`persona-whitespace-pre-wrap persona-rounded-lg persona-border persona-px-3 persona-py-2 persona-text-xs`,style:{fontSize:`0.75rem`,lineHeight:`1rem`,backgroundColor:s.codeBlockBackgroundColor??`var(--persona-container, #f3f4f6)`,borderColor:s.codeBlockBorderColor??`var(--persona-border, #e5e7eb)`,color:s.codeBlockTextColor??`var(--persona-text, #171717)`}},e(`span`,{className:`persona-activity-scroll`,text:n(i),attrs:{role:`region`,"aria-label":r}}));a.append(o,c),P.appendChild(a)};o.args!==void 0&&r(`Arguments`,o.args),o.chunks?.length&&r(`Activity`,o.chunks.join(``)),o.success===!1&&P.appendChild(e(`div`,{className:`persona-text-sm persona-whitespace-pre-wrap`,text:o.error||`Tool failed`,attrs:{"data-persona-tool-error":``}})),o.status===`complete`&&o.result!==void 0&&r(`Result`,o.result)}return me({expanded:d,header:b,toggleIcon:M,content:P,collapsedPreview:N,iconColor:j,config:i}),c.append(b,N,P),Q(c,r,i,`tool`)},De=(e,t,n,r)=>{he(e,t,{stateSet:n,config:r,iconColor:`currentColor`})},Oe=(n,r,i=/* @__PURE__ */ new Set)=>{r=Y(r,`reasoning`,n);let o=n.reasoning,s=U(`persona-reasoning-bubble`,n.id);if(!o)return Q(s,n,r,`reasoning`);let c=r.features.reasoningDisplay,l=c.expandable??b.expandable,f=l&&i.has(n.id),p=o.status!==`complete`,m=J(n.reasoning?.chunks.join(``)??``,0,c.previewMaxLines??b.previewMaxLines),h=W({expandable:l,expanded:f,bubbleType:`reasoning`}),g=t(`div`,`persona-flex persona-flex-col persona-text-left`),_=t(`span`,`persona-text-xs persona-text-persona-primary`),v=X(r,`reasoning`)===`row`;s.dataset.appearance=c.appearance??(r.future?.v5Defaults?`inset`:v?`plain`:`panel`);let y=v&&!p?`Thought for ${Z(o.durationMs??(o.completedAt-o.startedAt||void 0))}`:`Thinking...`,S=r.reasoning??{},C=String(o.startedAt??Date.now()),w=()=>{let e=t(`span`,``);return e.setAttribute(`data-tool-elapsed`,C),e.textContent=u(o),e},T=S.renderCollapsedSummary?.({message:n,reasoning:o,defaultSummary:y,previewText:m,isActive:p,config:r,elapsed:u(o),createElapsedElement:w}),E=_e(g,_,T,y),D=t(`span`,`persona-text-xs persona-text-persona-primary`);D.textContent=a(o),v||g.appendChild(D);let O=S.activeTextTemplate,k=S.completeTextTemplate,A=p?O:k;if(E||(A&&(D.style.display=`none`,ge(_,A,``,p,u(o),w)),_.style.display=!A&&!p&&!v?`none`:``,p&&x(_,r,`reasoning`)),c.iconName&&!E){let e=t(`span`,`persona-reasoning-header-icon`),n=d(c.iconName,16,`currentColor`,2);n&&(e.appendChild(n),h.appendChild(e))}let j=`currentColor`,M=K(h,g,{config:r,expandable:l,expanded:f,iconColor:j,metaGap:!1}),N=q({bubble:s,previewKind:`reasoning`,expanded:f,isActive:p,previewText:m,activePreview:c.activePreview,activeMinHeight:c.activeMinHeight,renderPreview:()=>r.reasoning?.renderCollapsedPreview?.({message:n,reasoning:o,defaultPreview:m,isActive:p,config:r})});if(!l)return s.append(h,N),Q(s,n,r,`reasoning`);let P=t(`div`,`persona-border-t persona-border-gray-200 persona-bg-gray-50 persona-px-4 persona-py-3`),F=c.maxHeight,I=e(`div`,{className:`persona-whitespace-pre-wrap`},e(`div`,{className:`persona-activity-scroll`,text:o.chunks.join(``)||(p?`Waiting for details…`:`No additional context was shared.`),style:{maxHeight:F},attrs:{tabindex:`0`,role:`region`,"aria-label":`Reasoning`}}));return P.appendChild(I),me({expanded:f,header:h,toggleIcon:M,content:P,collapsedPreview:N,iconColor:j,config:r}),s.append(h,N,P),Q(s,n,r,`reasoning`)};function ke(e){let{config:n,messages:r,tempContainer:a,streaming:o,runActivity:s,showToolCalls:c,showReasoning:u,dropCompletedToolCalls:d,dropReasoningRow:f,createMessageRow:p,activityIds:m,activityLifecycle:h,toolExpansionState:g}=e,_=i.render;if(n.turnActivity?.enabled&&_)return _(e,{group:xe,tools:ke,classify:ce,presentation:V,hasExplicitThemeStyle:l().hasExplicitThemeStyle});let v=n.features?.toolCallDisplay;if(v?.grouped){let e=[],i=[],l=v.groupBoundary===`iteration`,_=v.groupedMode===`summary`,y=()=>{i.length&&e.push(i),i=[]};r.forEach(e=>{if(e.variant===`tool`&&e.toolCall&&c){if(d&&e.toolCall.status===`complete`&&!e.toolCall.interrupted)return;let t=i[i.length-1]?.agentMetadata,n=e.agentMetadata;l&&t&&n&&(t.executionId&&n.executionId&&t.executionId!==n.executionId||t.iteration!==void 0&&n.iteration!==void 0&&t.iteration!==n.iteration)&&y(),i.push(e)}else(e.variant!==`reasoning`||u&&(e.reasoning?.status!==`complete`||!f(e.reasoning)))&&y()}),y();let b=/* @__PURE__ */ new Map;for(let e of a.children)e instanceof HTMLElement&&b.set(e.dataset.wrapperId,e);e.forEach((r,i)=>{let a=r.map(e=>b.get(e.id)).filter(e=>!!e);if(a.length<(_?1:2))return;let c=`tool-group-${r[0].id}`,u=p(c,`assistant`);u.dataset.personaToolGroupRow=`true`,(v.groupAppearance||n.future?.v5Defaults)&&(u.dataset.groupAppearance=v.groupAppearance??`inset`);let d=r.map(e=>e.toolCall),f=d.some(e=>e.interrupted),y=i===e.length-1,S=r.some(e=>s?.messageIds.has(e.id)),C={messages:r,toolCalls:d,config:n,streaming:o,isLatestGroup:y,isCurrentRunGroup:S},w=r.map(e=>e.approval?.status??e.toolCall?.approvalStatus),T=[`pending`,`denied`,`timeout`].find(e=>w.includes(e)),E=!d.some(e=>e.success===!1||e.error),D=f||!E||T,O=d.some(e=>e.status!==`complete`),k=O||!l&&o&&y&&S&&!D,A=`${r.length} tool${r.length===1?``:`s`}`,j=v.groupedMode===`collapsible`||X(n,`tool`)===`row`?re(d.map((e,t)=>({...e,approvalStatus:w[t]})),v.groupSummaryMaxItems):f?`${A} · Interrupted`:`Called ${A}`,M=fe(r,n,j),N=n.toolCall?.renderGroupedSummary?.({...C,defaultSummary:M})??M;if(a[0].before(u),v.groupedMode===`collapsible`){let e={...r[0],id:c,approval:void 0,toolCall:{id:c,status:k?`running`:`complete`,chunks:d.flatMap(e=>e.chunks??[]),success:E,interrupted:f,approvalStatus:T}};if(d.every(e=>$(e.startedAt)&&(e.status!==`complete`||$(e.completedAt)&&e.completedAt>=e.startedAt))){let t=Math.min(...d.map(e=>e.startedAt)),n=Math.max(...d.map(e=>e.completedAt??e.startedAt));O?e.toolCall.startedAt=t:e.toolCall.durationMs=n-t}m.add(c),h.observe(e,`tool`,g,v,r.find(e=>g.has(e.id))?.id??``);let t=xe(e,n,g.has(c),N,void 0,!k&&!D?ne(d,n):void 0);t.bubble.classList.add(`persona-tool-group`),t.body.dataset.personaToolGroupStack=`true`,u.appendChild(t.bubble),a.forEach((e,n)=>{Ae(e),e.style.setProperty(`--persona-activity-stagger`,`${n*40}ms`),e.classList.add(`persona-activity-group-child`),t.body.appendChild(e)});return}let P=t(`div`,`persona-tool-group persona-flex persona-w-full persona-flex-col persona-gap-2`);P.dataset.personaToolGroup=`true`;let F=t(`div`,`persona-tool-group-summary persona-text-xs persona-text-persona-muted`);if(F.id=`tool-group-summary-${r[0].id}`,H(F,N),!(N instanceof HTMLElement)&&k&&!D&&x(F,n,`tool-group`),P.appendChild(F),u.appendChild(P),_){for(let e of a)e.remove();return}let I=t(`div`,`persona-tool-group-stack persona-flex persona-flex-col`);I.id=`tool-group-stack-${r[0].id}`,I.dataset.personaToolGroupStack=`true`,P.appendChild(I),a.forEach((e,n)=>{Ae(e);let r=t(`div`,`persona-tool-group-item persona-relative`);r.dataset.personaToolGroupItem=`true`,n<a.length-1&&(r.dataset.personaToolGroupConnector=`true`),r.appendChild(e),I.appendChild(r)})})}return!1}const $=e=>e>0&&e<=Date.now(),Ae=e=>e.style.setProperty(`--persona-message-row-max-width`,`100%`);function je(e){let t=`.persona-activity-scroll`,n=e=>{let t=e.scrollHeight-e.clientHeight,n=e.clientHeight>0&&t>1;e.toggleAttribute(`data-persona-scroll-top`,n&&e.scrollTop>1),e.toggleAttribute(`data-persona-scroll-bottom`,n&&t-e.scrollTop>1),e.tabIndex=n?0:-1},r=typeof ResizeObserver>`u`?void 0:new ResizeObserver(e=>{for(let{target:t}of e)n(t)}),i=()=>{r?.disconnect(),e.querySelectorAll(t).forEach(e=>{r?.observe(e),n(e)})},a=e=>{let r=e.target;r.matches(t)&&n(r)};return e.addEventListener(`scroll`,a,!0),{sync:i,destroy(){r?.disconnect(),e.removeEventListener(`scroll`,a,!0)}}}function Me(e,t,n,r,i,a){let o=je(e),s=be((e,o)=>{i.delete(e);let s=a(e);s&&(o===`tool`?Te(e,s,n,t()):De(e,s,r,t()))},e,t);return{...s,sync(){s.sync(),o.sync()},destroy(){s.destroy(),o.destroy()},observeMessages(e,i){let a=t();for(let t of e){let e=t.variant===`tool`?`tool`:t.variant===`reasoning`?`reasoning`:null;if(!e||X(a,e,t)!==`row`)continue;let o=Y(a,e,t).features,c=e===`tool`?o?.toolCallDisplay:o?.reasoningDisplay;c?.expandable!==!1&&(i.add(t.id),s.observe(t,e,e===`tool`?n:r,c))}}}}export{Me as createActivityLifecycle,Oe as createReasoningBubble,Ee as createToolBubble,ke as groupToolRows,r as initActivityUi,i as turnUi,ve as updateActivityElapsed,De as updateReasoningBubbleUI,Te as updateToolBubbleUI};
|
package/dist/chunk-Dp2vWE9V.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as e}from"./chunk-CHAwCqpk.js";import{r as t}from"./chunk-BnfM7-qg.js";const{setLoader:n,load:r,provide:i,getSync:a}=t({fallbackImport:()=>import(`./chunk-VloQ2dnh.js`)}),o=/* @__PURE__ */ new Set,s=()=>{let e=[...o];o.clear();for(let t of e)try{t()}catch{}},c=()=>{let e=a();return e?Promise.resolve(e):r().then(e=>(s(),e))},l=e=>a()?()=>{}:(o.add(e),()=>{o.delete(e)}),u=e=>{i(e),s()},d=a,f=new class{#e=/* @__PURE__ */ new Map;#t=/* @__PURE__ */ new Map;register(e,t,n){this.#e.has(e)&&console.warn(`[ComponentRegistry] Component "${e}" is already registered. Overwriting.`),this.#e.set(e,t),n?this.#t.set(e,n):this.#t.delete(e)}unregister(e){this.#e.delete(e),this.#t.delete(e)}get(e){return this.#e.get(e)}has(e){return this.#e.has(e)}getOptions(e){return this.#t.get(e)}getAllNames(){return Array.from(this.#e.keys())}clear(){this.#e.clear(),this.#t.clear()}registerAll(e){Object.entries(e).forEach(([e,t])=>{this.register(e,t)})}};function p(e,t){return e.components&&Object.prototype.hasOwnProperty.call(e.components,t)?e.components[t]:f.get(t)}function m(e,t){return e.components&&Object.prototype.hasOwnProperty.call(e.components,t)?void 0:f.getOptions(t)}const h=e=>{if(!e)return;let t={},n=e;if(n.heading){let e=n.heading;t.heading=(t,n,r)=>e({type:`heading`,raw:r,depth:n,text:t,tokens:[]})}if(n.code){let e=n.code;t.code=(t,n,r)=>e({type:`code`,raw:``,text:t,lang:n,escaped:r})}if(n.blockquote){let e=n.blockquote;t.blockquote=t=>e({type:`blockquote`,raw:``,text:t,tokens:[]})}if(n.table){let e=n.table;t.table=(t,n)=>e({type:`table`,raw:``,header:[],rows:[],align:[],headerHtml:t,bodyHtml:n})}if(n.link){let e=n.link;t.link=(t,n,r)=>e({type:`link`,raw:``,href:t,title:n??null,text:r,tokens:[]})}if(n.image){let e=n.image;t.image=(t,n,r)=>e({type:`image`,raw:``,href:t,title:n??null,text:r})}if(n.list){let e=n.list;t.list=(t,n,r)=>e({type:`list`,raw:``,ordered:n,start:r,loose:!1,items:[],itemsHtml:t})}if(n.listitem){let e=n.listitem;t.listitem=(t,n,r)=>e({type:`list_item`,raw:``,task:n,checked:r,loose:!1,text:t,tokens:[]})}if(n.paragraph){let e=n.paragraph;t.paragraph=t=>e({type:`paragraph`,raw:``,text:t,tokens:[]})}if(n.codespan){let e=n.codespan;t.codespan=t=>e({type:`codespan`,raw:``,text:t})}if(n.strong){let e=n.strong;t.strong=t=>e({type:`strong`,raw:``,text:t,tokens:[]})}if(n.em){let e=n.em;t.em=t=>e({type:`em`,raw:``,text:t,tokens:[]})}if(n.del){let e=n.del;t.del=t=>e({type:`del`,raw:``,text:t,tokens:[]})}if(n.html){let e=n.html;t.html=t=>e({type:`html`,raw:t,text:t})}if(n.text){let e=n.text;t.text=t=>e({type:`text`,raw:t,text:t})}if(n.checkbox){let e=n.checkbox;t.checkbox=t=>e({checked:t})}return n.hr&&(t.hr=n.hr),n.br&&(t.br=n.br),t},g=e=>{let t=null;return n=>{let r=d();if(!r)return v(n);if(!t){let{Marked:n}=r,i=e?.markedOptions;t=new n({gfm:i?.gfm??!0,breaks:i?.breaks??!0,pedantic:i?.pedantic,silent:i?.silent});let a=h(e?.renderer);a&&t.use({renderer:a})}return t.parse(n)}},_=e=>e?g({markedOptions:e.options,renderer:e.renderer}):g(),v=e=>e.replace(/&/g,`&`).replace(/</g,`<`).replace(/>/g,`>`).replace(/"/g,`"`).replace(/'/g,`'`),y={ALLOWED_TAGS:/* @__PURE__ */ `h1.h2.h3.h4.h5.h6.p.br.hr.div.span.ul.ol.li.dl.dt.dd.strong.em.b.i.u.s.del.ins.mark.small.sub.sup.abbr.kbd.var.samp.code.a.img.blockquote.pre.details.summary.table.thead.tbody.tfoot.tr.th.td.caption.colgroup.col.input.label.select.option.textarea.button`.split(`.`),ALLOWED_ATTR:/* @__PURE__ */ `href.src.alt.title.target.rel.loading.width.height.colspan.rowspan.scope.class.id.type.name.value.placeholder.disabled.checked.for.aria-label.aria-hidden.aria-expanded.role.tabindex.data-tv-form.data-message-id.data-persona-component-directive.data-preserve-animation.data-persona-instance`.split(`.`)},b=/^data:image\/(?:png|jpe?g|gif|webp|bmp|x-icon|avif)/i,x=()=>{let e=null;return t=>{let n=d();if(!n)return v(t);if(!e){let{DOMPurify:t}=n;e=t(typeof window<`u`?window:void 0),e.addHook(`uponSanitizeAttribute`,(e,t)=>{if(t.attrName===`src`||t.attrName===`href`){let e=t.attrValue;e.toLowerCase().startsWith(`data:`)&&!b.test(e)&&(t.attrValue=``,t.keepAttr=!1)}})}return e.sanitize(t,y)}},S=e=>e===!1?null:typeof e==`function`?e:x();function C(t,n,r){return n?.trim()||(e(t,`artifact.${r}`)?`var(--persona-components-artifact-${r.split(`.`).join(`-`)})`:void 0)}function w(e){return e?.features?.artifacts?.enabled===!0}function T(e,t){if(e.classList.remove(`persona-artifact-border-full`,`persona-artifact-border-left`),e.style.removeProperty(`--persona-artifact-pane-border`),e.style.removeProperty(`--persona-artifact-pane-border-left`),!w(t))return;let n=t.features?.artifacts?.layout,r=C(t,n?.paneBorder,`pane.border`),i=C(t,n?.paneBorderLeft,`pane.borderLeft`);r?(e.classList.add(`persona-artifact-border-full`),e.style.setProperty(`--persona-artifact-pane-border`,r)):i&&(e.classList.add(`persona-artifact-border-left`),e.style.setProperty(`--persona-artifact-pane-border-left`,i))}function E(e){e.style.removeProperty(`--persona-artifact-doc-toolbar-icon-color`),e.style.removeProperty(`--persona-artifact-doc-toggle-active-bg`),e.style.removeProperty(`--persona-artifact-doc-toggle-active-border`),e.style.removeProperty(`--persona-artifact-doc-toggle-active-color`)}const D=[`panel`,`seamless`,`detached`];function O(e){let t=e.features?.artifacts?.layout?.paneAppearance;return t&&D.includes(t)?t:t?`panel`:e.launcher?.detachedPanel?`detached`:`panel`}function k(e){return!e||!w(e)?!1:O(e)===`detached`}function A(e,t){if(!w(t)){e.style.removeProperty(`--persona-artifact-split-gap`),e.style.removeProperty(`--persona-artifact-pane-width`),e.style.removeProperty(`--persona-artifact-pane-max-width`),e.style.removeProperty(`--persona-artifact-pane-min-width`),e.style.removeProperty(`--persona-artifact-drawer-width`),e.style.removeProperty(`--persona-artifact-pane-bg`),e.style.removeProperty(`--persona-artifact-pane-padding`),E(e),T(e,t);return}let n=t.features?.artifacts?.layout,r=O(t)===`detached`?`var(--persona-panel-inset)`:`0`;e.style.setProperty(`--persona-artifact-split-gap`,n?.splitGap??r),e.style.setProperty(`--persona-artifact-pane-width`,n?.paneWidth??`40%`),e.style.setProperty(`--persona-artifact-pane-max-width`,n?.paneMaxWidth??`28rem`),n?.drawerWidth?e.style.setProperty(`--persona-artifact-drawer-width`,n.drawerWidth):e.style.removeProperty(`--persona-artifact-drawer-width`),n?.paneMinWidth?e.style.setProperty(`--persona-artifact-pane-min-width`,n.paneMinWidth):e.style.removeProperty(`--persona-artifact-pane-min-width`);let i=C(t,n?.paneBackground,`pane.background`);i?e.style.setProperty(`--persona-artifact-pane-bg`,i):e.style.removeProperty(`--persona-artifact-pane-bg`);let a=C(t,n?.panePadding,`pane.padding`);a?e.style.setProperty(`--persona-artifact-pane-padding`,a):e.style.removeProperty(`--persona-artifact-pane-padding`);let o=[[C(t,n?.documentToolbarIconColor,`toolbar.iconColor`),`--persona-artifact-doc-toolbar-icon-color`],[C(t,n?.documentToolbarToggleActiveBackground,`toolbar.toggleActiveBackground`),`--persona-artifact-doc-toggle-active-bg`],[C(t,n?.documentToolbarToggleActiveBorderColor,`toolbar.toggleActiveBorderColor`),`--persona-artifact-doc-toggle-active-border`],[C(t,n?.documentToolbarToggleActiveColor,`toolbar.toggleActiveColor`),`--persona-artifact-doc-toggle-active-color`]];for(let[t,n]of o){let r=t?.trim();r?e.style.setProperty(n,r):e.style.removeProperty(n)}T(e,t)}function j(e,t){for(let t of D)e.classList.remove(`persona-artifact-appearance-${t}`);if(e.style.removeProperty(`--persona-artifact-pane-radius`),e.style.removeProperty(`--persona-artifact-pane-shadow`),e.style.removeProperty(`--persona-artifact-chat-shadow`),!w(t))return;let n=t.features?.artifacts?.layout,r=O(t);e.classList.add(`persona-artifact-appearance-${r}`);let i=C(t,n?.paneBorderRadius,`pane.borderRadius`);i&&e.style.setProperty(`--persona-artifact-pane-radius`,i);let a=C(t,n?.paneShadow,`pane.shadow`);a&&e.style.setProperty(`--persona-artifact-pane-shadow`,a);let o=C(t,n?.chatShadow,`chat.shadow`);o&&e.style.setProperty(`--persona-artifact-chat-shadow`,o)}function M(e,t){return!t||!w(e)?!1:e.features?.artifacts?.layout?.expandLauncherPanelWhenOpen!==!1}function N(e,t){if(!e?.trim())return t;let n=/^(\d+(?:\.\d+)?)px\s*$/i.exec(e.trim());return n?Math.max(0,Number(n[1])):t}function P(e){if(!e?.trim())return null;let t=/^(\d+(?:\.\d+)?)px\s*$/i.exec(e.trim());return t?Math.max(0,Number(t[1])):null}function F(e,t,n){return n<t?t:Math.min(n,Math.max(t,e))}function I(e,t,n,r){let i=e-r-2*t-n;return Math.max(0,i)}function L(e,t){let n=(t.getComputedStyle(e).gap||`0px`).trim().split(/\s+/)[0]??`0px`,r=/^([\d.]+)px$/i.exec(n);if(r)return Number(r[1]);let i=/^([\d.]+)/.exec(n);return i?Number(i[1]):8}function R(e,t,n,r,i,a,o=200){let s=N(i,200),c=I(t,n,r,o);c=Math.max(s,c);let l=P(a);return l!==null&&(c=Math.min(c,l)),F(e,s,c)}export{l as _,C as a,M as c,v as d,f,c as g,d as h,j as i,S as l,p as m,R as n,w as o,m as p,A as r,k as s,L as t,_ as u,u as v};
|
package/dist/chunk-VloQ2dnh.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{Marked as e}from"marked";import t from"dompurify";export{t as DOMPurify,e as Marked};
|