@tanstack/ai-devtools-core 0.3.4 → 0.3.7
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 +1 -1
- package/dist/Shell/GHXECDJV.js +5056 -0
- package/dist/Shell/MUFU35SY.js +4242 -0
- package/dist/dev.js +11 -0
- package/dist/{esm/index.d.ts → index.d.ts} +7 -5
- package/dist/index.js +11 -0
- package/dist/production/Shell/GHXECDJV.js +5056 -0
- package/dist/production/Shell/MUFU35SY.js +4242 -0
- package/dist/production/dev.js +8 -0
- package/dist/production/index.d.ts +12 -0
- package/dist/production/index.js +8 -0
- package/dist/production/server.js +8 -0
- package/dist/server.js +11 -0
- package/package.json +45 -11
- package/src/{core.tsx → core.ts} +4 -5
- package/dist/esm/components/ConversationDetails.d.ts +0 -2
- package/dist/esm/components/ConversationDetails.js +0 -192
- package/dist/esm/components/ConversationDetails.js.map +0 -1
- package/dist/esm/components/ConversationsList.d.ts +0 -2
- package/dist/esm/components/ConversationsList.js +0 -30
- package/dist/esm/components/ConversationsList.js.map +0 -1
- package/dist/esm/components/Shell.d.ts +0 -1
- package/dist/esm/components/Shell.js +0 -94
- package/dist/esm/components/Shell.js.map +0 -1
- package/dist/esm/components/conversation/ActivityEventsTab.d.ts +0 -8
- package/dist/esm/components/conversation/ActivityEventsTab.js +0 -72
- package/dist/esm/components/conversation/ActivityEventsTab.js.map +0 -1
- package/dist/esm/components/conversation/ChunkBadges.d.ts +0 -7
- package/dist/esm/components/conversation/ChunkBadges.js +0 -54
- package/dist/esm/components/conversation/ChunkBadges.js.map +0 -1
- package/dist/esm/components/conversation/ChunkItem.d.ts +0 -9
- package/dist/esm/components/conversation/ChunkItem.js +0 -247
- package/dist/esm/components/conversation/ChunkItem.js.map +0 -1
- package/dist/esm/components/conversation/ChunksCollapsible.d.ts +0 -7
- package/dist/esm/components/conversation/ChunksCollapsible.js +0 -77
- package/dist/esm/components/conversation/ChunksCollapsible.js.map +0 -1
- package/dist/esm/components/conversation/ChunksTab.d.ts +0 -8
- package/dist/esm/components/conversation/ChunksTab.js +0 -87
- package/dist/esm/components/conversation/ChunksTab.js.map +0 -1
- package/dist/esm/components/conversation/ConversationHeader.d.ts +0 -7
- package/dist/esm/components/conversation/ConversationHeader.js +0 -230
- package/dist/esm/components/conversation/ConversationHeader.js.map +0 -1
- package/dist/esm/components/conversation/ConversationTabs.d.ts +0 -10
- package/dist/esm/components/conversation/ConversationTabs.js +0 -176
- package/dist/esm/components/conversation/ConversationTabs.js.map +0 -1
- package/dist/esm/components/conversation/MessageCard.d.ts +0 -7
- package/dist/esm/components/conversation/MessageCard.js +0 -207
- package/dist/esm/components/conversation/MessageCard.js.map +0 -1
- package/dist/esm/components/conversation/MessageGroup.d.ts +0 -15
- package/dist/esm/components/conversation/MessageGroup.js +0 -119
- package/dist/esm/components/conversation/MessageGroup.js.map +0 -1
- package/dist/esm/components/conversation/MessagesTab.d.ts +0 -7
- package/dist/esm/components/conversation/MessagesTab.js +0 -37
- package/dist/esm/components/conversation/MessagesTab.js.map +0 -1
- package/dist/esm/components/conversation/SummariesTab.d.ts +0 -7
- package/dist/esm/components/conversation/SummariesTab.js +0 -110
- package/dist/esm/components/conversation/SummariesTab.js.map +0 -1
- package/dist/esm/components/conversation/ToolCallDisplay.d.ts +0 -7
- package/dist/esm/components/conversation/ToolCallDisplay.js +0 -123
- package/dist/esm/components/conversation/ToolCallDisplay.js.map +0 -1
- package/dist/esm/components/conversation/index.d.ts +0 -7
- package/dist/esm/components/list/ConversationRow.d.ts +0 -7
- package/dist/esm/components/list/ConversationRow.js +0 -122
- package/dist/esm/components/list/ConversationRow.js.map +0 -1
- package/dist/esm/components/list/index.d.ts +0 -1
- package/dist/esm/components/utils/format.d.ts +0 -6
- package/dist/esm/components/utils/format.js +0 -68
- package/dist/esm/components/utils/format.js.map +0 -1
- package/dist/esm/components/utils/index.d.ts +0 -1
- package/dist/esm/core.d.ts +0 -22
- package/dist/esm/core.js +0 -9
- package/dist/esm/core.js.map +0 -1
- package/dist/esm/index.js +0 -6
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/production.d.ts +0 -2
- package/dist/esm/production.js +0 -5
- package/dist/esm/production.js.map +0 -1
- package/dist/esm/store/ai-context.d.ts +0 -135
- package/dist/esm/store/ai-context.js +0 -1238
- package/dist/esm/store/ai-context.js.map +0 -1
- package/dist/esm/store/ai-store.d.ts +0 -1
- package/dist/esm/styles/tokens.d.ts +0 -298
- package/dist/esm/styles/tokens.js +0 -107
- package/dist/esm/styles/tokens.js.map +0 -1
- package/dist/esm/styles/use-styles.d.ts +0 -233
- package/dist/esm/styles/use-styles.js +0 -1602
- package/dist/esm/styles/use-styles.js.map +0 -1
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import { createComponent, template, effect, className, insert } from "solid-js/web";
|
|
2
|
-
import { Show } from "solid-js";
|
|
3
|
-
import { useStyles } from "../../styles/use-styles.js";
|
|
4
|
-
var _tmpl$ = /* @__PURE__ */ template(`<span>🔧 Tool Calls`), _tmpl$2 = /* @__PURE__ */ template(`<span>❌ Error`), _tmpl$3 = /* @__PURE__ */ template(`<span>⚠️ Approval`), _tmpl$4 = /* @__PURE__ */ template(`<span>✓ `);
|
|
5
|
-
const ChunkBadges = (props) => {
|
|
6
|
-
const styles = useStyles();
|
|
7
|
-
const hasToolCalls = () => props.chunks.some((c) => c.type === "tool_call");
|
|
8
|
-
const hasErrors = () => props.chunks.some((c) => c.type === "error");
|
|
9
|
-
const hasApproval = () => props.chunks.some((c) => c.type === "approval");
|
|
10
|
-
const finishReason = () => props.chunks.find((c) => c.type === "done")?.finishReason;
|
|
11
|
-
return [createComponent(Show, {
|
|
12
|
-
get when() {
|
|
13
|
-
return hasToolCalls();
|
|
14
|
-
},
|
|
15
|
-
get children() {
|
|
16
|
-
var _el$ = _tmpl$();
|
|
17
|
-
effect(() => className(_el$, `${styles().conversationDetails.chunkBadge} ${styles().conversationDetails.chunkBadgeTool}`));
|
|
18
|
-
return _el$;
|
|
19
|
-
}
|
|
20
|
-
}), createComponent(Show, {
|
|
21
|
-
get when() {
|
|
22
|
-
return hasErrors();
|
|
23
|
-
},
|
|
24
|
-
get children() {
|
|
25
|
-
var _el$2 = _tmpl$2();
|
|
26
|
-
effect(() => className(_el$2, `${styles().conversationDetails.chunkBadge} ${styles().conversationDetails.chunkBadgeError}`));
|
|
27
|
-
return _el$2;
|
|
28
|
-
}
|
|
29
|
-
}), createComponent(Show, {
|
|
30
|
-
get when() {
|
|
31
|
-
return hasApproval();
|
|
32
|
-
},
|
|
33
|
-
get children() {
|
|
34
|
-
var _el$3 = _tmpl$3();
|
|
35
|
-
effect(() => className(_el$3, `${styles().conversationDetails.chunkBadge} ${styles().conversationDetails.chunkBadgeApproval}`));
|
|
36
|
-
return _el$3;
|
|
37
|
-
}
|
|
38
|
-
}), createComponent(Show, {
|
|
39
|
-
get when() {
|
|
40
|
-
return finishReason();
|
|
41
|
-
},
|
|
42
|
-
get children() {
|
|
43
|
-
var _el$4 = _tmpl$4();
|
|
44
|
-
_el$4.firstChild;
|
|
45
|
-
insert(_el$4, finishReason, null);
|
|
46
|
-
effect(() => className(_el$4, `${styles().conversationDetails.chunkBadge} ${styles().conversationDetails.chunkBadgeSuccess}`));
|
|
47
|
-
return _el$4;
|
|
48
|
-
}
|
|
49
|
-
})];
|
|
50
|
-
};
|
|
51
|
-
export {
|
|
52
|
-
ChunkBadges
|
|
53
|
-
};
|
|
54
|
-
//# sourceMappingURL=ChunkBadges.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ChunkBadges.js","sources":["../../../../src/components/conversation/ChunkBadges.tsx"],"sourcesContent":["import { Show } from 'solid-js'\nimport { useStyles } from '../../styles/use-styles'\nimport type { Component } from 'solid-js'\nimport type { Chunk } from '../../store/ai-store'\n\ninterface ChunkBadgesProps {\n chunks: Array<Chunk>\n}\n\nexport const ChunkBadges: Component<ChunkBadgesProps> = (props) => {\n const styles = useStyles()\n\n const hasToolCalls = () => props.chunks.some((c) => c.type === 'tool_call')\n const hasErrors = () => props.chunks.some((c) => c.type === 'error')\n const hasApproval = () => props.chunks.some((c) => c.type === 'approval')\n const finishReason = () =>\n props.chunks.find((c) => c.type === 'done')?.finishReason\n\n return (\n <>\n <Show when={hasToolCalls()}>\n <span\n class={`${styles().conversationDetails.chunkBadge} ${styles().conversationDetails.chunkBadgeTool}`}\n >\n 🔧 Tool Calls\n </span>\n </Show>\n <Show when={hasErrors()}>\n <span\n class={`${styles().conversationDetails.chunkBadge} ${styles().conversationDetails.chunkBadgeError}`}\n >\n ❌ Error\n </span>\n </Show>\n <Show when={hasApproval()}>\n <span\n class={`${styles().conversationDetails.chunkBadge} ${styles().conversationDetails.chunkBadgeApproval}`}\n >\n ⚠️ Approval\n </span>\n </Show>\n <Show when={finishReason()}>\n <span\n class={`${styles().conversationDetails.chunkBadge} ${styles().conversationDetails.chunkBadgeSuccess}`}\n >\n ✓ {finishReason()}\n </span>\n </Show>\n </>\n )\n}\n"],"names":["ChunkBadges","props","styles","useStyles","hasToolCalls","chunks","some","c","type","hasErrors","hasApproval","finishReason","find","_$createComponent","Show","when","children","_el$","_tmpl$","_$effect","_$className","conversationDetails","chunkBadge","chunkBadgeTool","_el$2","_tmpl$2","chunkBadgeError","_el$3","_tmpl$3","chunkBadgeApproval","_el$4","_tmpl$4","firstChild","_$insert","chunkBadgeSuccess"],"mappings":";;;;AASO,MAAMA,cAA4CC,CAAAA,UAAU;AACjE,QAAMC,SAASC,UAAAA;AAEf,QAAMC,eAAeA,MAAMH,MAAMI,OAAOC,KAAMC,CAAAA,MAAMA,EAAEC,SAAS,WAAW;AAC1E,QAAMC,YAAYA,MAAMR,MAAMI,OAAOC,KAAMC,CAAAA,MAAMA,EAAEC,SAAS,OAAO;AACnE,QAAME,cAAcA,MAAMT,MAAMI,OAAOC,KAAMC,CAAAA,MAAMA,EAAEC,SAAS,UAAU;AACxE,QAAMG,eAAeA,MACnBV,MAAMI,OAAOO,KAAML,CAAAA,MAAMA,EAAEC,SAAS,MAAM,GAAGG;AAE/C,SAAA,CAAAE,gBAEKC,MAAI;AAAA,IAAA,IAACC,OAAI;AAAA,aAAEX,aAAAA;AAAAA,IAAc;AAAA,IAAA,IAAAY,WAAA;AAAA,UAAAC,OAAAC,OAAAA;AAAAC,aAAA,MAAAC,UAAAH,MAEf,GAAGf,SAASmB,oBAAoBC,UAAU,IAAIpB,OAAAA,EAASmB,oBAAoBE,cAAc,EAAE,CAAA;AAAA,aAAAN;AAAAA,IAAA;AAAA,EAAA,CAAA,GAAAJ,gBAKrGC,MAAI;AAAA,IAAA,IAACC,OAAI;AAAA,aAAEN,UAAAA;AAAAA,IAAW;AAAA,IAAA,IAAAO,WAAA;AAAA,UAAAQ,QAAAC,QAAAA;AAAAN,aAAA,MAAAC,UAAAI,OAEZ,GAAGtB,SAASmB,oBAAoBC,UAAU,IAAIpB,OAAAA,EAASmB,oBAAoBK,eAAe,EAAE,CAAA;AAAA,aAAAF;AAAAA,IAAA;AAAA,EAAA,CAAA,GAAAX,gBAKtGC,MAAI;AAAA,IAAA,IAACC,OAAI;AAAA,aAAEL,YAAAA;AAAAA,IAAa;AAAA,IAAA,IAAAM,WAAA;AAAA,UAAAW,QAAAC,QAAAA;AAAAT,aAAA,MAAAC,UAAAO,OAEd,GAAGzB,SAASmB,oBAAoBC,UAAU,IAAIpB,OAAAA,EAASmB,oBAAoBQ,kBAAkB,EAAE,CAAA;AAAA,aAAAF;AAAAA,IAAA;AAAA,EAAA,CAAA,GAAAd,gBAKzGC,MAAI;AAAA,IAAA,IAACC,OAAI;AAAA,aAAEJ,aAAAA;AAAAA,IAAc;AAAA,IAAA,IAAAK,WAAA;AAAA,UAAAc,QAAAC;AAAAD,YAAAE;AAAAC,aAAAH,OAInBnB,cAAY,IAAA;AAAAQ,aAAA,MAAAC,UAAAU,OAFR,GAAG5B,SAASmB,oBAAoBC,UAAU,IAAIpB,OAAAA,EAASmB,oBAAoBa,iBAAiB,EAAE,CAAA;AAAA,aAAAJ;AAAAA,IAAA;AAAA,EAAA,CAAA,CAAA;AAO/G;"}
|
|
@@ -1,247 +0,0 @@
|
|
|
1
|
-
import { template, insert, createComponent, effect, className, memo, setStyleProperty, setAttribute, delegateEvents } from "solid-js/web";
|
|
2
|
-
import { createSignal, Show } from "solid-js";
|
|
3
|
-
import { JsonTree } from "@tanstack/devtools-ui";
|
|
4
|
-
import { useStyles } from "../../styles/use-styles.js";
|
|
5
|
-
import { formatTimestamp, formatDuration, getChunkTypeColor } from "../utils/format.js";
|
|
6
|
-
var _tmpl$ = /* @__PURE__ */ template(`<span style=margin-left:4px;opacity:0.7>(<!> chunks)`), _tmpl$2 = /* @__PURE__ */ template(`<div>🔧 `), _tmpl$3 = /* @__PURE__ */ template(`<div>`), _tmpl$4 = /* @__PURE__ */ template(`<div>❌ `), _tmpl$5 = /* @__PURE__ */ template(`<div>✓ `), _tmpl$6 = /* @__PURE__ */ template(`<div>Input: `), _tmpl$7 = /* @__PURE__ */ template(`<div><div>⚠️ Approval Required`), _tmpl$8 = /* @__PURE__ */ template(`<div><div><span>📤 Tool Arguments</span></div><div>`), _tmpl$9 = /* @__PURE__ */ template(`<span>⏱️ `), _tmpl$0 = /* @__PURE__ */ template(`<div><div><span>✓ Tool Result</span></div><div>`), _tmpl$1 = /* @__PURE__ */ template(`<div><div><div>#</div><div><div></div><div></div></div><div></div><button>{}`);
|
|
7
|
-
const ChunkItem = (props) => {
|
|
8
|
-
const styles = useStyles();
|
|
9
|
-
const [showRaw, setShowRaw] = createSignal(false);
|
|
10
|
-
const isLarge = () => props.variant === "large";
|
|
11
|
-
const chunkCount = () => props.chunk.chunkCount || 1;
|
|
12
|
-
const parseToolArguments = () => {
|
|
13
|
-
try {
|
|
14
|
-
return JSON.parse(props.chunk.arguments || "{}");
|
|
15
|
-
} catch {
|
|
16
|
-
return {
|
|
17
|
-
raw: props.chunk.arguments
|
|
18
|
-
};
|
|
19
|
-
}
|
|
20
|
-
};
|
|
21
|
-
const parseToolResult = () => {
|
|
22
|
-
try {
|
|
23
|
-
if (typeof props.chunk.result === "string") {
|
|
24
|
-
return JSON.parse(props.chunk.result);
|
|
25
|
-
}
|
|
26
|
-
return props.chunk.result;
|
|
27
|
-
} catch {
|
|
28
|
-
return {
|
|
29
|
-
raw: props.chunk.result
|
|
30
|
-
};
|
|
31
|
-
}
|
|
32
|
-
};
|
|
33
|
-
return (() => {
|
|
34
|
-
var _el$ = _tmpl$1(), _el$2 = _el$.firstChild, _el$3 = _el$2.firstChild;
|
|
35
|
-
_el$3.firstChild;
|
|
36
|
-
var _el$9 = _el$3.nextSibling, _el$0 = _el$9.firstChild, _el$1 = _el$0.nextSibling, _el$12 = _el$9.nextSibling, _el$13 = _el$12.nextSibling;
|
|
37
|
-
insert(_el$3, () => props.index + 1, null);
|
|
38
|
-
insert(_el$3, createComponent(Show, {
|
|
39
|
-
get when() {
|
|
40
|
-
return chunkCount() > 1;
|
|
41
|
-
},
|
|
42
|
-
get children() {
|
|
43
|
-
var _el$5 = _tmpl$(), _el$6 = _el$5.firstChild, _el$8 = _el$6.nextSibling;
|
|
44
|
-
_el$8.nextSibling;
|
|
45
|
-
insert(_el$5, chunkCount, _el$8);
|
|
46
|
-
return _el$5;
|
|
47
|
-
}
|
|
48
|
-
}), null);
|
|
49
|
-
insert(_el$1, () => props.chunk.type);
|
|
50
|
-
insert(_el$2, createComponent(Show, {
|
|
51
|
-
get when() {
|
|
52
|
-
return props.chunk.toolName;
|
|
53
|
-
},
|
|
54
|
-
get children() {
|
|
55
|
-
var _el$10 = _tmpl$2();
|
|
56
|
-
_el$10.firstChild;
|
|
57
|
-
insert(_el$10, () => props.chunk.toolName, null);
|
|
58
|
-
effect(() => className(_el$10, isLarge() ? styles().conversationDetails.chunkToolBadgeLarge : styles().conversationDetails.chunkToolBadge));
|
|
59
|
-
return _el$10;
|
|
60
|
-
}
|
|
61
|
-
}), _el$12);
|
|
62
|
-
insert(_el$12, () => formatTimestamp(props.chunk.timestamp));
|
|
63
|
-
_el$13.$$click = () => setShowRaw(!showRaw());
|
|
64
|
-
insert(_el$, createComponent(Show, {
|
|
65
|
-
get when() {
|
|
66
|
-
return !showRaw();
|
|
67
|
-
},
|
|
68
|
-
get children() {
|
|
69
|
-
return [createComponent(Show, {
|
|
70
|
-
get when() {
|
|
71
|
-
return props.chunk.content || props.chunk.delta;
|
|
72
|
-
},
|
|
73
|
-
get children() {
|
|
74
|
-
var _el$14 = _tmpl$3();
|
|
75
|
-
insert(_el$14, () => props.chunk.content);
|
|
76
|
-
effect(() => className(_el$14, isLarge() ? styles().conversationDetails.chunkContentLarge : styles().conversationDetails.chunkContent));
|
|
77
|
-
return _el$14;
|
|
78
|
-
}
|
|
79
|
-
}), createComponent(Show, {
|
|
80
|
-
get when() {
|
|
81
|
-
return props.chunk.error;
|
|
82
|
-
},
|
|
83
|
-
get children() {
|
|
84
|
-
var _el$15 = _tmpl$4();
|
|
85
|
-
_el$15.firstChild;
|
|
86
|
-
insert(_el$15, () => props.chunk.error, null);
|
|
87
|
-
effect(() => className(_el$15, isLarge() ? styles().conversationDetails.chunkErrorLarge : styles().conversationDetails.chunkError));
|
|
88
|
-
return _el$15;
|
|
89
|
-
}
|
|
90
|
-
}), createComponent(Show, {
|
|
91
|
-
get when() {
|
|
92
|
-
return props.chunk.finishReason;
|
|
93
|
-
},
|
|
94
|
-
get children() {
|
|
95
|
-
var _el$17 = _tmpl$5();
|
|
96
|
-
_el$17.firstChild;
|
|
97
|
-
insert(_el$17, (() => {
|
|
98
|
-
var _c$ = memo(() => !!isLarge());
|
|
99
|
-
return () => _c$() ? `Finish: ${props.chunk.finishReason}` : props.chunk.finishReason;
|
|
100
|
-
})(), null);
|
|
101
|
-
effect(() => className(_el$17, isLarge() ? styles().conversationDetails.chunkFinishLarge : styles().conversationDetails.chunkFinish));
|
|
102
|
-
return _el$17;
|
|
103
|
-
}
|
|
104
|
-
}), createComponent(Show, {
|
|
105
|
-
get when() {
|
|
106
|
-
return props.chunk.type === "approval";
|
|
107
|
-
},
|
|
108
|
-
get children() {
|
|
109
|
-
var _el$20 = _tmpl$7(), _el$21 = _el$20.firstChild;
|
|
110
|
-
insert(_el$20, createComponent(Show, {
|
|
111
|
-
get when() {
|
|
112
|
-
return props.chunk.input;
|
|
113
|
-
},
|
|
114
|
-
get children() {
|
|
115
|
-
var _el$22 = _tmpl$6();
|
|
116
|
-
_el$22.firstChild;
|
|
117
|
-
insert(_el$22, () => JSON.stringify(props.chunk.input, null, 2), null);
|
|
118
|
-
effect(() => className(_el$22, isLarge() ? styles().conversationDetails.chunkApprovalInputLarge : styles().conversationDetails.chunkApprovalInput));
|
|
119
|
-
return _el$22;
|
|
120
|
-
}
|
|
121
|
-
}), null);
|
|
122
|
-
effect((_p$) => {
|
|
123
|
-
var _v$ = isLarge() ? styles().conversationDetails.chunkApprovalLarge : styles().conversationDetails.chunkApproval, _v$2 = isLarge() ? styles().conversationDetails.chunkApprovalTitleLarge : styles().conversationDetails.chunkApprovalTitle;
|
|
124
|
-
_v$ !== _p$.e && className(_el$20, _p$.e = _v$);
|
|
125
|
-
_v$2 !== _p$.t && className(_el$21, _p$.t = _v$2);
|
|
126
|
-
return _p$;
|
|
127
|
-
}, {
|
|
128
|
-
e: void 0,
|
|
129
|
-
t: void 0
|
|
130
|
-
});
|
|
131
|
-
return _el$20;
|
|
132
|
-
}
|
|
133
|
-
}), createComponent(Show, {
|
|
134
|
-
get when() {
|
|
135
|
-
return memo(() => props.chunk.type === "tool_call")() && props.chunk.arguments;
|
|
136
|
-
},
|
|
137
|
-
get children() {
|
|
138
|
-
var _el$24 = _tmpl$8(), _el$25 = _el$24.firstChild, _el$26 = _el$25.firstChild, _el$27 = _el$25.nextSibling;
|
|
139
|
-
insert(_el$27, createComponent(JsonTree, {
|
|
140
|
-
get value() {
|
|
141
|
-
return parseToolArguments();
|
|
142
|
-
},
|
|
143
|
-
defaultExpansionDepth: 2,
|
|
144
|
-
copyable: true
|
|
145
|
-
}));
|
|
146
|
-
effect((_p$) => {
|
|
147
|
-
var _v$3 = styles().conversationDetails.chunkToolCall, _v$4 = styles().conversationDetails.chunkToolCallHeader, _v$5 = styles().conversationDetails.chunkToolCallTitle, _v$6 = styles().conversationDetails.toolJsonContainer;
|
|
148
|
-
_v$3 !== _p$.e && className(_el$24, _p$.e = _v$3);
|
|
149
|
-
_v$4 !== _p$.t && className(_el$25, _p$.t = _v$4);
|
|
150
|
-
_v$5 !== _p$.a && className(_el$26, _p$.a = _v$5);
|
|
151
|
-
_v$6 !== _p$.o && className(_el$27, _p$.o = _v$6);
|
|
152
|
-
return _p$;
|
|
153
|
-
}, {
|
|
154
|
-
e: void 0,
|
|
155
|
-
t: void 0,
|
|
156
|
-
a: void 0,
|
|
157
|
-
o: void 0
|
|
158
|
-
});
|
|
159
|
-
return _el$24;
|
|
160
|
-
}
|
|
161
|
-
}), createComponent(Show, {
|
|
162
|
-
get when() {
|
|
163
|
-
return memo(() => props.chunk.type === "tool_result")() && props.chunk.result !== void 0;
|
|
164
|
-
},
|
|
165
|
-
get children() {
|
|
166
|
-
var _el$28 = _tmpl$0(), _el$29 = _el$28.firstChild, _el$30 = _el$29.firstChild, _el$33 = _el$29.nextSibling;
|
|
167
|
-
insert(_el$29, createComponent(Show, {
|
|
168
|
-
get when() {
|
|
169
|
-
return memo(() => props.chunk.duration !== void 0)() && props.chunk.duration > 0;
|
|
170
|
-
},
|
|
171
|
-
get children() {
|
|
172
|
-
var _el$31 = _tmpl$9();
|
|
173
|
-
_el$31.firstChild;
|
|
174
|
-
insert(_el$31, () => formatDuration(props.chunk.duration), null);
|
|
175
|
-
effect(() => className(_el$31, styles().conversationDetails.durationBadge));
|
|
176
|
-
return _el$31;
|
|
177
|
-
}
|
|
178
|
-
}), null);
|
|
179
|
-
insert(_el$33, createComponent(JsonTree, {
|
|
180
|
-
get value() {
|
|
181
|
-
return parseToolResult();
|
|
182
|
-
},
|
|
183
|
-
defaultExpansionDepth: 2,
|
|
184
|
-
copyable: true
|
|
185
|
-
}));
|
|
186
|
-
effect((_p$) => {
|
|
187
|
-
var _v$7 = styles().conversationDetails.chunkToolResult, _v$8 = styles().conversationDetails.chunkToolResultHeader, _v$9 = styles().conversationDetails.chunkToolResultTitle, _v$0 = styles().conversationDetails.toolJsonContainer;
|
|
188
|
-
_v$7 !== _p$.e && className(_el$28, _p$.e = _v$7);
|
|
189
|
-
_v$8 !== _p$.t && className(_el$29, _p$.t = _v$8);
|
|
190
|
-
_v$9 !== _p$.a && className(_el$30, _p$.a = _v$9);
|
|
191
|
-
_v$0 !== _p$.o && className(_el$33, _p$.o = _v$0);
|
|
192
|
-
return _p$;
|
|
193
|
-
}, {
|
|
194
|
-
e: void 0,
|
|
195
|
-
t: void 0,
|
|
196
|
-
a: void 0,
|
|
197
|
-
o: void 0
|
|
198
|
-
});
|
|
199
|
-
return _el$28;
|
|
200
|
-
}
|
|
201
|
-
})];
|
|
202
|
-
}
|
|
203
|
-
}), null);
|
|
204
|
-
insert(_el$, createComponent(Show, {
|
|
205
|
-
get when() {
|
|
206
|
-
return showRaw();
|
|
207
|
-
},
|
|
208
|
-
get children() {
|
|
209
|
-
var _el$34 = _tmpl$3();
|
|
210
|
-
insert(_el$34, () => JSON.stringify(props.chunk, null, 2));
|
|
211
|
-
effect(() => className(_el$34, isLarge() ? styles().conversationDetails.rawJsonLarge : styles().conversationDetails.rawJson));
|
|
212
|
-
return _el$34;
|
|
213
|
-
}
|
|
214
|
-
}), null);
|
|
215
|
-
effect((_p$) => {
|
|
216
|
-
var _v$1 = isLarge() ? styles().conversationDetails.chunkItemLarge : styles().conversationDetails.chunkItem, _v$10 = isLarge() ? styles().conversationDetails.chunkHeaderLarge : styles().conversationDetails.chunkHeader, _v$11 = isLarge() ? styles().conversationDetails.chunkNumberLarge : styles().conversationDetails.chunkNumber, _v$12 = isLarge() ? styles().conversationDetails.chunkTypeBadgeLarge : styles().conversationDetails.chunkTypeBadge, _v$13 = isLarge() ? styles().conversationDetails.chunkTypeDotLarge : styles().conversationDetails.chunkTypeDot, _v$14 = getChunkTypeColor(props.chunk.type), _v$15 = isLarge() ? styles().conversationDetails.chunkTypeLabelLarge : styles().conversationDetails.chunkTypeLabel, _v$16 = isLarge() ? styles().conversationDetails.chunkTimestampLarge : styles().conversationDetails.chunkTimestamp, _v$17 = `${isLarge() ? styles().conversationDetails.rawJsonButtonLarge : styles().conversationDetails.rawJsonButton} ${showRaw() ? styles().conversationDetails.rawJsonButtonActive : styles().conversationDetails.rawJsonButtonInactive}`, _v$18 = showRaw() ? "Show formatted" : "Show raw JSON";
|
|
217
|
-
_v$1 !== _p$.e && className(_el$, _p$.e = _v$1);
|
|
218
|
-
_v$10 !== _p$.t && className(_el$2, _p$.t = _v$10);
|
|
219
|
-
_v$11 !== _p$.a && className(_el$3, _p$.a = _v$11);
|
|
220
|
-
_v$12 !== _p$.o && className(_el$9, _p$.o = _v$12);
|
|
221
|
-
_v$13 !== _p$.i && className(_el$0, _p$.i = _v$13);
|
|
222
|
-
_v$14 !== _p$.n && setStyleProperty(_el$0, "background", _p$.n = _v$14);
|
|
223
|
-
_v$15 !== _p$.s && className(_el$1, _p$.s = _v$15);
|
|
224
|
-
_v$16 !== _p$.h && className(_el$12, _p$.h = _v$16);
|
|
225
|
-
_v$17 !== _p$.r && className(_el$13, _p$.r = _v$17);
|
|
226
|
-
_v$18 !== _p$.d && setAttribute(_el$13, "title", _p$.d = _v$18);
|
|
227
|
-
return _p$;
|
|
228
|
-
}, {
|
|
229
|
-
e: void 0,
|
|
230
|
-
t: void 0,
|
|
231
|
-
a: void 0,
|
|
232
|
-
o: void 0,
|
|
233
|
-
i: void 0,
|
|
234
|
-
n: void 0,
|
|
235
|
-
s: void 0,
|
|
236
|
-
h: void 0,
|
|
237
|
-
r: void 0,
|
|
238
|
-
d: void 0
|
|
239
|
-
});
|
|
240
|
-
return _el$;
|
|
241
|
-
})();
|
|
242
|
-
};
|
|
243
|
-
delegateEvents(["click"]);
|
|
244
|
-
export {
|
|
245
|
-
ChunkItem
|
|
246
|
-
};
|
|
247
|
-
//# sourceMappingURL=ChunkItem.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ChunkItem.js","sources":["../../../../src/components/conversation/ChunkItem.tsx"],"sourcesContent":["import { Show, createSignal } from 'solid-js'\nimport { JsonTree } from '@tanstack/devtools-ui'\nimport { useStyles } from '../../styles/use-styles'\nimport { formatDuration, formatTimestamp, getChunkTypeColor } from '../utils'\nimport type { Component } from 'solid-js'\nimport type { Chunk } from '../../store/ai-store'\n\ninterface ChunkItemProps {\n chunk: Chunk\n index: number\n variant?: 'small' | 'large'\n}\n\nexport const ChunkItem: Component<ChunkItemProps> = (props) => {\n const styles = useStyles()\n const [showRaw, setShowRaw] = createSignal(false)\n const isLarge = () => props.variant === 'large'\n const chunkCount = () => props.chunk.chunkCount || 1\n\n const parseToolArguments = (): Record<string, unknown> => {\n try {\n return JSON.parse(props.chunk.arguments || '{}') as Record<\n string,\n unknown\n >\n } catch {\n return { raw: props.chunk.arguments }\n }\n }\n\n const parseToolResult = (): Record<string, unknown> => {\n try {\n if (typeof props.chunk.result === 'string') {\n return JSON.parse(props.chunk.result) as Record<string, unknown>\n }\n return props.chunk.result as Record<string, unknown>\n } catch {\n return { raw: props.chunk.result }\n }\n }\n\n return (\n <div\n class={\n isLarge()\n ? styles().conversationDetails.chunkItemLarge\n : styles().conversationDetails.chunkItem\n }\n >\n {/* Chunk Header */}\n <div\n class={\n isLarge()\n ? styles().conversationDetails.chunkHeaderLarge\n : styles().conversationDetails.chunkHeader\n }\n >\n {/* Chunk Number */}\n <div\n class={\n isLarge()\n ? styles().conversationDetails.chunkNumberLarge\n : styles().conversationDetails.chunkNumber\n }\n >\n #{props.index + 1}\n <Show when={chunkCount() > 1}>\n <span style={{ 'margin-left': '4px', opacity: 0.7 }}>\n ({chunkCount()} chunks)\n </span>\n </Show>\n </div>\n\n {/* Type Badge */}\n <div\n class={\n isLarge()\n ? styles().conversationDetails.chunkTypeBadgeLarge\n : styles().conversationDetails.chunkTypeBadge\n }\n >\n <div\n class={\n isLarge()\n ? styles().conversationDetails.chunkTypeDotLarge\n : styles().conversationDetails.chunkTypeDot\n }\n style={{ background: getChunkTypeColor(props.chunk.type) }}\n />\n <div\n class={\n isLarge()\n ? styles().conversationDetails.chunkTypeLabelLarge\n : styles().conversationDetails.chunkTypeLabel\n }\n >\n {props.chunk.type}\n </div>\n </div>\n\n {/* Tool Name Badge */}\n <Show when={props.chunk.toolName}>\n <div\n class={\n isLarge()\n ? styles().conversationDetails.chunkToolBadgeLarge\n : styles().conversationDetails.chunkToolBadge\n }\n >\n 🔧 {props.chunk.toolName}\n </div>\n </Show>\n\n {/* Timestamp */}\n <div\n class={\n isLarge()\n ? styles().conversationDetails.chunkTimestampLarge\n : styles().conversationDetails.chunkTimestamp\n }\n >\n {formatTimestamp(props.chunk.timestamp)}\n </div>\n\n {/* Toggle Raw JSON Button */}\n <button\n onClick={() => setShowRaw(!showRaw())}\n class={`${\n isLarge()\n ? styles().conversationDetails.rawJsonButtonLarge\n : styles().conversationDetails.rawJsonButton\n } ${\n showRaw()\n ? styles().conversationDetails.rawJsonButtonActive\n : styles().conversationDetails.rawJsonButtonInactive\n }`}\n title={showRaw() ? 'Show formatted' : 'Show raw JSON'}\n >\n {'{}'}\n </button>\n </div>\n\n {/* Chunk Content */}\n <Show when={!showRaw()}>\n <Show when={props.chunk.content || props.chunk.delta}>\n <div\n class={\n isLarge()\n ? styles().conversationDetails.chunkContentLarge\n : styles().conversationDetails.chunkContent\n }\n >\n {props.chunk.content}\n </div>\n </Show>\n <Show when={props.chunk.error}>\n <div\n class={\n isLarge()\n ? styles().conversationDetails.chunkErrorLarge\n : styles().conversationDetails.chunkError\n }\n >\n ❌ {props.chunk.error}\n </div>\n </Show>\n <Show when={props.chunk.finishReason}>\n <div\n class={\n isLarge()\n ? styles().conversationDetails.chunkFinishLarge\n : styles().conversationDetails.chunkFinish\n }\n >\n ✓{' '}\n {isLarge()\n ? `Finish: ${props.chunk.finishReason}`\n : props.chunk.finishReason}\n </div>\n </Show>\n <Show when={props.chunk.type === 'approval'}>\n <div\n class={\n isLarge()\n ? styles().conversationDetails.chunkApprovalLarge\n : styles().conversationDetails.chunkApproval\n }\n >\n <div\n class={\n isLarge()\n ? styles().conversationDetails.chunkApprovalTitleLarge\n : styles().conversationDetails.chunkApprovalTitle\n }\n >\n ⚠️ Approval Required\n </div>\n <Show when={props.chunk.input}>\n <div\n class={\n isLarge()\n ? styles().conversationDetails.chunkApprovalInputLarge\n : styles().conversationDetails.chunkApprovalInput\n }\n >\n Input: {JSON.stringify(props.chunk.input, null, 2)}\n </div>\n </Show>\n </div>\n </Show>\n <Show when={props.chunk.type === 'tool_call' && props.chunk.arguments}>\n <div class={styles().conversationDetails.chunkToolCall}>\n <div class={styles().conversationDetails.chunkToolCallHeader}>\n <span class={styles().conversationDetails.chunkToolCallTitle}>\n 📤 Tool Arguments\n </span>\n </div>\n <div class={styles().conversationDetails.toolJsonContainer}>\n <JsonTree\n value={parseToolArguments()}\n defaultExpansionDepth={2}\n copyable\n />\n </div>\n </div>\n </Show>\n <Show\n when={\n props.chunk.type === 'tool_result' &&\n props.chunk.result !== undefined\n }\n >\n <div class={styles().conversationDetails.chunkToolResult}>\n <div class={styles().conversationDetails.chunkToolResultHeader}>\n <span class={styles().conversationDetails.chunkToolResultTitle}>\n ✓ Tool Result\n </span>\n <Show\n when={\n props.chunk.duration !== undefined && props.chunk.duration > 0\n }\n >\n <span class={styles().conversationDetails.durationBadge}>\n ⏱️ {formatDuration(props.chunk.duration)}\n </span>\n </Show>\n </div>\n <div class={styles().conversationDetails.toolJsonContainer}>\n <JsonTree\n value={parseToolResult()}\n defaultExpansionDepth={2}\n copyable\n />\n </div>\n </div>\n </Show>\n </Show>\n\n {/* Raw JSON View */}\n <Show when={showRaw()}>\n <div\n class={\n isLarge()\n ? styles().conversationDetails.rawJsonLarge\n : styles().conversationDetails.rawJson\n }\n >\n {JSON.stringify(props.chunk, null, 2)}\n </div>\n </Show>\n </div>\n )\n}\n"],"names":["ChunkItem","props","styles","useStyles","showRaw","setShowRaw","createSignal","isLarge","variant","chunkCount","chunk","parseToolArguments","JSON","parse","arguments","raw","parseToolResult","result","_el$","_tmpl$1","_el$2","firstChild","_el$3","_el$9","nextSibling","_el$0","_el$1","_el$12","_el$13","_$insert","index","_$createComponent","Show","when","children","_el$5","_tmpl$","_el$6","_el$8","type","toolName","_el$10","_tmpl$2","_$effect","_$className","conversationDetails","chunkToolBadgeLarge","chunkToolBadge","formatTimestamp","timestamp","$$click","content","delta","_el$14","_tmpl$3","chunkContentLarge","chunkContent","error","_el$15","_tmpl$4","chunkErrorLarge","chunkError","finishReason","_el$17","_tmpl$5","_c$","_$memo","chunkFinishLarge","chunkFinish","_el$20","_tmpl$7","_el$21","input","_el$22","_tmpl$6","stringify","chunkApprovalInputLarge","chunkApprovalInput","_p$","_v$","chunkApprovalLarge","chunkApproval","_v$2","chunkApprovalTitleLarge","chunkApprovalTitle","e","t","undefined","_el$24","_tmpl$8","_el$25","_el$26","_el$27","JsonTree","value","defaultExpansionDepth","copyable","_v$3","chunkToolCall","_v$4","chunkToolCallHeader","_v$5","chunkToolCallTitle","_v$6","toolJsonContainer","a","o","_el$28","_tmpl$0","_el$29","_el$30","_el$33","duration","_el$31","_tmpl$9","formatDuration","durationBadge","_v$7","chunkToolResult","_v$8","chunkToolResultHeader","_v$9","chunkToolResultTitle","_v$0","_el$34","rawJsonLarge","rawJson","_v$1","chunkItemLarge","chunkItem","_v$10","chunkHeaderLarge","chunkHeader","_v$11","chunkNumberLarge","chunkNumber","_v$12","chunkTypeBadgeLarge","chunkTypeBadge","_v$13","chunkTypeDotLarge","chunkTypeDot","_v$14","getChunkTypeColor","_v$15","chunkTypeLabelLarge","chunkTypeLabel","_v$16","chunkTimestampLarge","chunkTimestamp","_v$17","rawJsonButtonLarge","rawJsonButton","rawJsonButtonActive","rawJsonButtonInactive","_v$18","i","n","_$setStyleProperty","s","h","r","d","_$setAttribute","_$delegateEvents"],"mappings":"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"}
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
import { template, insert, createComponent, effect, className, setAttribute } from "solid-js/web";
|
|
2
|
-
import { Show, For } from "solid-js";
|
|
3
|
-
import { useStyles } from "../../styles/use-styles.js";
|
|
4
|
-
import { ChunkItem } from "./ChunkItem.js";
|
|
5
|
-
import { ChunkBadges } from "./ChunkBadges.js";
|
|
6
|
-
var _tmpl$ = /* @__PURE__ */ template(`<div>`), _tmpl$2 = /* @__PURE__ */ template(`<details><summary><div><span>▶</span><span>📦 <!> chunks</span></div></summary><div><div>`);
|
|
7
|
-
const ChunksCollapsible = (props) => {
|
|
8
|
-
const styles = useStyles();
|
|
9
|
-
const accumulatedContent = () => props.chunks.filter((c) => c.type === "content" && (c.content || c.delta)).map((c) => c.delta || c.content).join("");
|
|
10
|
-
const totalRawChunks = () => props.chunks.reduce((sum, c) => sum + (c.chunkCount || 1), 0);
|
|
11
|
-
return (() => {
|
|
12
|
-
var _el$ = _tmpl$2(), _el$2 = _el$.firstChild, _el$3 = _el$2.firstChild, _el$4 = _el$3.firstChild, _el$5 = _el$4.nextSibling, _el$6 = _el$5.firstChild, _el$8 = _el$6.nextSibling;
|
|
13
|
-
_el$8.nextSibling;
|
|
14
|
-
var _el$0 = _el$2.nextSibling, _el$1 = _el$0.firstChild;
|
|
15
|
-
insert(_el$5, totalRawChunks, _el$8);
|
|
16
|
-
insert(_el$3, createComponent(ChunkBadges, {
|
|
17
|
-
get chunks() {
|
|
18
|
-
return props.chunks;
|
|
19
|
-
}
|
|
20
|
-
}), null);
|
|
21
|
-
insert(_el$2, createComponent(Show, {
|
|
22
|
-
get when() {
|
|
23
|
-
return accumulatedContent();
|
|
24
|
-
},
|
|
25
|
-
get children() {
|
|
26
|
-
var _el$9 = _tmpl$();
|
|
27
|
-
insert(_el$9, accumulatedContent);
|
|
28
|
-
effect((_p$) => {
|
|
29
|
-
var _v$ = styles().conversationDetails.contentPreview, _v$2 = accumulatedContent();
|
|
30
|
-
_v$ !== _p$.e && className(_el$9, _p$.e = _v$);
|
|
31
|
-
_v$2 !== _p$.t && setAttribute(_el$9, "title", _p$.t = _v$2);
|
|
32
|
-
return _p$;
|
|
33
|
-
}, {
|
|
34
|
-
e: void 0,
|
|
35
|
-
t: void 0
|
|
36
|
-
});
|
|
37
|
-
return _el$9;
|
|
38
|
-
}
|
|
39
|
-
}), null);
|
|
40
|
-
insert(_el$1, createComponent(For, {
|
|
41
|
-
get each() {
|
|
42
|
-
return props.chunks;
|
|
43
|
-
},
|
|
44
|
-
children: (chunk, index) => createComponent(ChunkItem, {
|
|
45
|
-
chunk,
|
|
46
|
-
get index() {
|
|
47
|
-
return index();
|
|
48
|
-
},
|
|
49
|
-
variant: "small"
|
|
50
|
-
})
|
|
51
|
-
}));
|
|
52
|
-
effect((_p$) => {
|
|
53
|
-
var _v$3 = styles().conversationDetails.chunksDetails, _v$4 = styles().conversationDetails.chunksSummary, _v$5 = styles().conversationDetails.chunksSummaryRow, _v$6 = styles().conversationDetails.chunksSummaryArrow, _v$7 = styles().conversationDetails.chunksSummaryTitle, _v$8 = styles().conversationDetails.chunksContainer, _v$9 = styles().conversationDetails.chunksList;
|
|
54
|
-
_v$3 !== _p$.e && className(_el$, _p$.e = _v$3);
|
|
55
|
-
_v$4 !== _p$.t && className(_el$2, _p$.t = _v$4);
|
|
56
|
-
_v$5 !== _p$.a && className(_el$3, _p$.a = _v$5);
|
|
57
|
-
_v$6 !== _p$.o && className(_el$4, _p$.o = _v$6);
|
|
58
|
-
_v$7 !== _p$.i && className(_el$5, _p$.i = _v$7);
|
|
59
|
-
_v$8 !== _p$.n && className(_el$0, _p$.n = _v$8);
|
|
60
|
-
_v$9 !== _p$.s && className(_el$1, _p$.s = _v$9);
|
|
61
|
-
return _p$;
|
|
62
|
-
}, {
|
|
63
|
-
e: void 0,
|
|
64
|
-
t: void 0,
|
|
65
|
-
a: void 0,
|
|
66
|
-
o: void 0,
|
|
67
|
-
i: void 0,
|
|
68
|
-
n: void 0,
|
|
69
|
-
s: void 0
|
|
70
|
-
});
|
|
71
|
-
return _el$;
|
|
72
|
-
})();
|
|
73
|
-
};
|
|
74
|
-
export {
|
|
75
|
-
ChunksCollapsible
|
|
76
|
-
};
|
|
77
|
-
//# sourceMappingURL=ChunksCollapsible.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ChunksCollapsible.js","sources":["../../../../src/components/conversation/ChunksCollapsible.tsx"],"sourcesContent":["import { For, Show } from 'solid-js'\nimport { useStyles } from '../../styles/use-styles'\nimport { ChunkItem } from './ChunkItem'\nimport { ChunkBadges } from './ChunkBadges'\nimport type { Component } from 'solid-js'\nimport type { Chunk } from '../../store/ai-store'\n\ninterface ChunksCollapsibleProps {\n chunks: Array<Chunk>\n}\n\nexport const ChunksCollapsible: Component<ChunksCollapsibleProps> = (props) => {\n const styles = useStyles()\n\n const accumulatedContent = () =>\n props.chunks\n .filter((c) => c.type === 'content' && (c.content || c.delta))\n .map((c) => c.delta || c.content)\n .join('')\n\n // Total raw chunks = sum of all chunkCounts\n const totalRawChunks = () =>\n props.chunks.reduce((sum, c) => sum + (c.chunkCount || 1), 0)\n\n return (\n <details class={styles().conversationDetails.chunksDetails}>\n <summary class={styles().conversationDetails.chunksSummary}>\n <div class={styles().conversationDetails.chunksSummaryRow}>\n <span class={styles().conversationDetails.chunksSummaryArrow}>▶</span>\n <span class={styles().conversationDetails.chunksSummaryTitle}>\n 📦 {totalRawChunks()} chunks\n </span>\n <ChunkBadges chunks={props.chunks} />\n </div>\n {/* Accumulated Content Preview */}\n <Show when={accumulatedContent()}>\n <div\n class={styles().conversationDetails.contentPreview}\n title={accumulatedContent()}\n >\n {accumulatedContent()}\n </div>\n </Show>\n </summary>\n <div class={styles().conversationDetails.chunksContainer}>\n <div class={styles().conversationDetails.chunksList}>\n <For each={props.chunks}>\n {(chunk, index) => (\n <ChunkItem chunk={chunk} index={index()} variant=\"small\" />\n )}\n </For>\n </div>\n </div>\n </details>\n )\n}\n"],"names":["ChunksCollapsible","props","styles","useStyles","accumulatedContent","chunks","filter","c","type","content","delta","map","join","totalRawChunks","reduce","sum","chunkCount","_el$","_tmpl$2","_el$2","firstChild","_el$3","_el$4","_el$5","nextSibling","_el$6","_el$8","_el$0","_el$1","_$insert","_$createComponent","ChunkBadges","Show","when","children","_el$9","_tmpl$","_$effect","_p$","_v$","conversationDetails","contentPreview","_v$2","e","_$className","t","_$setAttribute","undefined","For","each","chunk","index","ChunkItem","variant","_v$3","chunksDetails","_v$4","chunksSummary","_v$5","chunksSummaryRow","_v$6","chunksSummaryArrow","_v$7","chunksSummaryTitle","_v$8","chunksContainer","_v$9","chunksList","a","o","i","n","s"],"mappings":"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"}
|
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
import { createComponent, template, insert, effect, className } from "solid-js/web";
|
|
2
|
-
import { Show, For } from "solid-js";
|
|
3
|
-
import { useStyles } from "../../styles/use-styles.js";
|
|
4
|
-
import { MessageGroup } from "./MessageGroup.js";
|
|
5
|
-
var _tmpl$ = /* @__PURE__ */ template(`<div><div><div><div>Stream Responses</div><div> chunks · <!> messages</div></div><div>Grouped by message ID</div></div><div>`), _tmpl$2 = /* @__PURE__ */ template(`<div>No chunks yet`);
|
|
6
|
-
const ChunksTab = (props) => {
|
|
7
|
-
const styles = useStyles();
|
|
8
|
-
const usageByMessageId = () => {
|
|
9
|
-
const map = /* @__PURE__ */ new Map();
|
|
10
|
-
props.messages?.forEach((msg) => {
|
|
11
|
-
if (msg.usage) {
|
|
12
|
-
map.set(msg.id, msg.usage);
|
|
13
|
-
}
|
|
14
|
-
});
|
|
15
|
-
return map;
|
|
16
|
-
};
|
|
17
|
-
const groupedChunks = () => {
|
|
18
|
-
const groups = /* @__PURE__ */ new Map();
|
|
19
|
-
props.chunks.forEach((chunk) => {
|
|
20
|
-
const key = chunk.messageId || "no-message-id";
|
|
21
|
-
if (!groups.has(key)) {
|
|
22
|
-
groups.set(key, []);
|
|
23
|
-
}
|
|
24
|
-
groups.get(key).push(chunk);
|
|
25
|
-
});
|
|
26
|
-
return Array.from(groups.entries());
|
|
27
|
-
};
|
|
28
|
-
const totalRawChunks = () => props.chunks.reduce((sum, c) => sum + (c.chunkCount || 1), 0);
|
|
29
|
-
return createComponent(Show, {
|
|
30
|
-
get when() {
|
|
31
|
-
return props.chunks.length > 0;
|
|
32
|
-
},
|
|
33
|
-
get fallback() {
|
|
34
|
-
return (() => {
|
|
35
|
-
var _el$1 = _tmpl$2();
|
|
36
|
-
effect(() => className(_el$1, styles().conversationDetails.noChunks));
|
|
37
|
-
return _el$1;
|
|
38
|
-
})();
|
|
39
|
-
},
|
|
40
|
-
get children() {
|
|
41
|
-
var _el$ = _tmpl$(), _el$2 = _el$.firstChild, _el$3 = _el$2.firstChild, _el$4 = _el$3.firstChild, _el$5 = _el$4.nextSibling, _el$6 = _el$5.firstChild, _el$8 = _el$6.nextSibling;
|
|
42
|
-
_el$8.nextSibling;
|
|
43
|
-
var _el$9 = _el$3.nextSibling, _el$0 = _el$2.nextSibling;
|
|
44
|
-
insert(_el$5, totalRawChunks, _el$6);
|
|
45
|
-
insert(_el$5, () => groupedChunks().length, _el$8);
|
|
46
|
-
insert(_el$0, createComponent(For, {
|
|
47
|
-
get each() {
|
|
48
|
-
return groupedChunks();
|
|
49
|
-
},
|
|
50
|
-
children: ([messageId, chunks], groupIndex) => createComponent(MessageGroup, {
|
|
51
|
-
messageId,
|
|
52
|
-
chunks,
|
|
53
|
-
get groupIndex() {
|
|
54
|
-
return groupIndex();
|
|
55
|
-
},
|
|
56
|
-
get usage() {
|
|
57
|
-
return usageByMessageId().get(messageId);
|
|
58
|
-
}
|
|
59
|
-
})
|
|
60
|
-
}));
|
|
61
|
-
effect((_p$) => {
|
|
62
|
-
var _v$ = styles().conversationDetails.streamContainer, _v$2 = styles().conversationDetails.streamHeader, _v$3 = styles().conversationDetails.streamHeaderRow, _v$4 = styles().conversationDetails.streamTitle, _v$5 = `${styles().conversationDetails.chunkBadge} ${styles().conversationDetails.chunkBadgeCount}`, _v$6 = styles().conversationDetails.streamSubtitle, _v$7 = styles().conversationDetails.messageGroups;
|
|
63
|
-
_v$ !== _p$.e && className(_el$, _p$.e = _v$);
|
|
64
|
-
_v$2 !== _p$.t && className(_el$2, _p$.t = _v$2);
|
|
65
|
-
_v$3 !== _p$.a && className(_el$3, _p$.a = _v$3);
|
|
66
|
-
_v$4 !== _p$.o && className(_el$4, _p$.o = _v$4);
|
|
67
|
-
_v$5 !== _p$.i && className(_el$5, _p$.i = _v$5);
|
|
68
|
-
_v$6 !== _p$.n && className(_el$9, _p$.n = _v$6);
|
|
69
|
-
_v$7 !== _p$.s && className(_el$0, _p$.s = _v$7);
|
|
70
|
-
return _p$;
|
|
71
|
-
}, {
|
|
72
|
-
e: void 0,
|
|
73
|
-
t: void 0,
|
|
74
|
-
a: void 0,
|
|
75
|
-
o: void 0,
|
|
76
|
-
i: void 0,
|
|
77
|
-
n: void 0,
|
|
78
|
-
s: void 0
|
|
79
|
-
});
|
|
80
|
-
return _el$;
|
|
81
|
-
}
|
|
82
|
-
});
|
|
83
|
-
};
|
|
84
|
-
export {
|
|
85
|
-
ChunksTab
|
|
86
|
-
};
|
|
87
|
-
//# sourceMappingURL=ChunksTab.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ChunksTab.js","sources":["../../../../src/components/conversation/ChunksTab.tsx"],"sourcesContent":["import { For, Show } from 'solid-js'\nimport { useStyles } from '../../styles/use-styles'\nimport { MessageGroup } from './MessageGroup'\nimport type { Component } from 'solid-js'\nimport type { Chunk, Message } from '../../store/ai-store'\n\ninterface ChunksTabProps {\n chunks: Array<Chunk>\n messages?: Array<Message>\n}\n\nexport const ChunksTab: Component<ChunksTabProps> = (props) => {\n const styles = useStyles()\n\n // Create a map of messageId to usage for quick lookup\n const usageByMessageId = () => {\n const map = new Map<string, Message['usage']>()\n props.messages?.forEach((msg) => {\n if (msg.usage) {\n map.set(msg.id, msg.usage)\n }\n })\n return map\n }\n\n const groupedChunks = () => {\n const groups = new Map<string, Array<Chunk>>()\n\n props.chunks.forEach((chunk) => {\n const key = chunk.messageId || 'no-message-id'\n if (!groups.has(key)) {\n groups.set(key, [])\n }\n groups.get(key)!.push(chunk)\n })\n\n return Array.from(groups.entries())\n }\n\n // Calculate total raw chunks (sum of all chunkCounts)\n const totalRawChunks = () =>\n props.chunks.reduce((sum, c) => sum + (c.chunkCount || 1), 0)\n\n return (\n <Show\n when={props.chunks.length > 0}\n fallback={\n <div class={styles().conversationDetails.noChunks}>No chunks yet</div>\n }\n >\n <div class={styles().conversationDetails.streamContainer}>\n {/* Stream Header */}\n <div class={styles().conversationDetails.streamHeader}>\n <div class={styles().conversationDetails.streamHeaderRow}>\n <div class={styles().conversationDetails.streamTitle}>\n Stream Responses\n </div>\n <div\n class={`${styles().conversationDetails.chunkBadge} ${styles().conversationDetails.chunkBadgeCount}`}\n >\n {totalRawChunks()} chunks · {groupedChunks().length} messages\n </div>\n </div>\n <div class={styles().conversationDetails.streamSubtitle}>\n Grouped by message ID\n </div>\n </div>\n\n {/* Message Groups */}\n <div class={styles().conversationDetails.messageGroups}>\n <For each={groupedChunks()}>\n {([messageId, chunks], groupIndex) => (\n <MessageGroup\n messageId={messageId}\n chunks={chunks}\n groupIndex={groupIndex()}\n usage={usageByMessageId().get(messageId)}\n />\n )}\n </For>\n </div>\n </div>\n </Show>\n )\n}\n"],"names":["ChunksTab","props","styles","useStyles","usageByMessageId","map","Map","messages","forEach","msg","usage","set","id","groupedChunks","groups","chunks","chunk","key","messageId","has","get","push","Array","from","entries","totalRawChunks","reduce","sum","c","chunkCount","_$createComponent","Show","when","length","fallback","_el$1","_tmpl$2","_$effect","_$className","conversationDetails","noChunks","children","_el$","_tmpl$","_el$2","firstChild","_el$3","_el$4","_el$5","nextSibling","_el$6","_el$8","_el$9","_el$0","_$insert","For","each","groupIndex","MessageGroup","_p$","_v$","streamContainer","_v$2","streamHeader","_v$3","streamHeaderRow","_v$4","streamTitle","_v$5","chunkBadge","chunkBadgeCount","_v$6","streamSubtitle","_v$7","messageGroups","e","t","a","o","i","n","s","undefined"],"mappings":";;;;;AAWO,MAAMA,YAAwCC,CAAAA,UAAU;AAC7D,QAAMC,SAASC,UAAAA;AAGf,QAAMC,mBAAmBA,MAAM;AAC7B,UAAMC,0BAAUC,IAAAA;AAChBL,UAAMM,UAAUC,QAASC,CAAAA,QAAQ;AAC/B,UAAIA,IAAIC,OAAO;AACbL,YAAIM,IAAIF,IAAIG,IAAIH,IAAIC,KAAK;AAAA,MAC3B;AAAA,IACF,CAAC;AACD,WAAOL;AAAAA,EACT;AAEA,QAAMQ,gBAAgBA,MAAM;AAC1B,UAAMC,6BAAaR,IAAAA;AAEnBL,UAAMc,OAAOP,QAASQ,CAAAA,UAAU;AAC9B,YAAMC,MAAMD,MAAME,aAAa;AAC/B,UAAI,CAACJ,OAAOK,IAAIF,GAAG,GAAG;AACpBH,eAAOH,IAAIM,KAAK,EAAE;AAAA,MACpB;AACAH,aAAOM,IAAIH,GAAG,EAAGI,KAAKL,KAAK;AAAA,IAC7B,CAAC;AAED,WAAOM,MAAMC,KAAKT,OAAOU,QAAAA,CAAS;AAAA,EACpC;AAGA,QAAMC,iBAAiBA,MACrBxB,MAAMc,OAAOW,OAAO,CAACC,KAAKC,MAAMD,OAAOC,EAAEC,cAAc,IAAI,CAAC;AAE9D,SAAAC,gBACGC,MAAI;AAAA,IAAA,IACHC,OAAI;AAAA,aAAE/B,MAAMc,OAAOkB,SAAS;AAAA,IAAC;AAAA,IAAA,IAC7BC,WAAQ;AAAA,cAAA,MAAA;AAAA,YAAAC,QAAAC,QAAAA;AAAAC,eAAA,MAAAC,UAAAH,OACMjC,SAASqC,oBAAoBC,QAAQ,CAAA;AAAA,eAAAL;AAAAA,MAAA,GAAA;AAAA,IAAA;AAAA,IAAA,IAAAM,WAAA;AAAA,UAAAC,OAAAC,OAAAA,GAAAC,QAAAF,KAAAG,YAAAC,QAAAF,MAAAC,YAAAE,QAAAD,MAAAD,YAAAG,QAAAD,MAAAE,aAAAC,QAAAF,MAAAH,YAAAM,QAAAD,MAAAD;AAAAE,YAAAF;AAAAA,UAAAG,QAAAN,MAAAG,aAAAI,QAAAT,MAAAK;AAAAK,aAAAN,OAa1CvB,gBAAcyB,KAAA;AAAAI,aAAAN,OAAA,MAAcnC,cAAAA,EAAgBoB,QAAMkB,KAAA;AAAAG,aAAAD,OAAAvB,gBAUtDyB,KAAG;AAAA,QAAA,IAACC,OAAI;AAAA,iBAAE3C,cAAAA;AAAAA,QAAe;AAAA,QAAA4B,UACvBA,CAAC,CAACvB,WAAWH,MAAM,GAAG0C,eAAU3B,gBAC9B4B,cAAY;AAAA,UACXxC;AAAAA,UACAH;AAAAA,UAAc,IACd0C,aAAU;AAAA,mBAAEA,WAAAA;AAAAA,UAAY;AAAA,UAAA,IACxB/C,QAAK;AAAA,mBAAEN,iBAAAA,EAAmBgB,IAAIF,SAAS;AAAA,UAAC;AAAA,QAAA,CAAA;AAAA,MAAA,CAE3C,CAAA;AAAAmB,aAAAsB,CAAAA,QAAA;AAAA,YAAAC,MA5BK1D,SAASqC,oBAAoBsB,iBAAeC,OAE1C5D,SAASqC,oBAAoBwB,cAAYC,OACvC9D,SAASqC,oBAAoB0B,iBAAeC,OAC1ChE,OAAAA,EAASqC,oBAAoB4B,aAAWC,OAI3C,GAAGlE,SAASqC,oBAAoB8B,UAAU,IAAInE,OAAAA,EAASqC,oBAAoB+B,eAAe,IAAEC,OAK3FrE,SAASqC,oBAAoBiC,gBAAcC,OAM7CvE,OAAAA,EAASqC,oBAAoBmC;AAAad,gBAAAD,IAAAgB,KAAArC,UAAAI,MAAAiB,IAAAgB,IAAAf,GAAA;AAAAE,iBAAAH,IAAAiB,KAAAtC,UAAAM,OAAAe,IAAAiB,IAAAd,IAAA;AAAAE,iBAAAL,IAAAkB,KAAAvC,UAAAQ,OAAAa,IAAAkB,IAAAb,IAAA;AAAAE,iBAAAP,IAAAmB,KAAAxC,UAAAS,OAAAY,IAAAmB,IAAAZ,IAAA;AAAAE,iBAAAT,IAAAoB,KAAAzC,UAAAU,OAAAW,IAAAoB,IAAAX,IAAA;AAAAG,iBAAAZ,IAAAqB,KAAA1C,UAAAc,OAAAO,IAAAqB,IAAAT,IAAA;AAAAE,iBAAAd,IAAAsB,KAAA3C,UAAAe,OAAAM,IAAAsB,IAAAR,IAAA;AAAA,eAAAd;AAAAA,MAAA,GAAA;AAAA,QAAAgB,GAAAO;AAAAA,QAAAN,GAAAM;AAAAA,QAAAL,GAAAK;AAAAA,QAAAJ,GAAAI;AAAAA,QAAAH,GAAAG;AAAAA,QAAAF,GAAAE;AAAAA,QAAAD,GAAAC;AAAAA,MAAAA,CAAA;AAAA,aAAAxC;AAAAA,IAAA;AAAA,EAAA,CAAA;AAe9D;"}
|