@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.
Files changed (87) hide show
  1. package/README.md +1 -1
  2. package/dist/Shell/GHXECDJV.js +5056 -0
  3. package/dist/Shell/MUFU35SY.js +4242 -0
  4. package/dist/dev.js +11 -0
  5. package/dist/{esm/index.d.ts → index.d.ts} +7 -5
  6. package/dist/index.js +11 -0
  7. package/dist/production/Shell/GHXECDJV.js +5056 -0
  8. package/dist/production/Shell/MUFU35SY.js +4242 -0
  9. package/dist/production/dev.js +8 -0
  10. package/dist/production/index.d.ts +12 -0
  11. package/dist/production/index.js +8 -0
  12. package/dist/production/server.js +8 -0
  13. package/dist/server.js +11 -0
  14. package/package.json +45 -11
  15. package/src/{core.tsx → core.ts} +4 -5
  16. package/dist/esm/components/ConversationDetails.d.ts +0 -2
  17. package/dist/esm/components/ConversationDetails.js +0 -192
  18. package/dist/esm/components/ConversationDetails.js.map +0 -1
  19. package/dist/esm/components/ConversationsList.d.ts +0 -2
  20. package/dist/esm/components/ConversationsList.js +0 -30
  21. package/dist/esm/components/ConversationsList.js.map +0 -1
  22. package/dist/esm/components/Shell.d.ts +0 -1
  23. package/dist/esm/components/Shell.js +0 -94
  24. package/dist/esm/components/Shell.js.map +0 -1
  25. package/dist/esm/components/conversation/ActivityEventsTab.d.ts +0 -8
  26. package/dist/esm/components/conversation/ActivityEventsTab.js +0 -72
  27. package/dist/esm/components/conversation/ActivityEventsTab.js.map +0 -1
  28. package/dist/esm/components/conversation/ChunkBadges.d.ts +0 -7
  29. package/dist/esm/components/conversation/ChunkBadges.js +0 -54
  30. package/dist/esm/components/conversation/ChunkBadges.js.map +0 -1
  31. package/dist/esm/components/conversation/ChunkItem.d.ts +0 -9
  32. package/dist/esm/components/conversation/ChunkItem.js +0 -247
  33. package/dist/esm/components/conversation/ChunkItem.js.map +0 -1
  34. package/dist/esm/components/conversation/ChunksCollapsible.d.ts +0 -7
  35. package/dist/esm/components/conversation/ChunksCollapsible.js +0 -77
  36. package/dist/esm/components/conversation/ChunksCollapsible.js.map +0 -1
  37. package/dist/esm/components/conversation/ChunksTab.d.ts +0 -8
  38. package/dist/esm/components/conversation/ChunksTab.js +0 -87
  39. package/dist/esm/components/conversation/ChunksTab.js.map +0 -1
  40. package/dist/esm/components/conversation/ConversationHeader.d.ts +0 -7
  41. package/dist/esm/components/conversation/ConversationHeader.js +0 -230
  42. package/dist/esm/components/conversation/ConversationHeader.js.map +0 -1
  43. package/dist/esm/components/conversation/ConversationTabs.d.ts +0 -10
  44. package/dist/esm/components/conversation/ConversationTabs.js +0 -176
  45. package/dist/esm/components/conversation/ConversationTabs.js.map +0 -1
  46. package/dist/esm/components/conversation/MessageCard.d.ts +0 -7
  47. package/dist/esm/components/conversation/MessageCard.js +0 -207
  48. package/dist/esm/components/conversation/MessageCard.js.map +0 -1
  49. package/dist/esm/components/conversation/MessageGroup.d.ts +0 -15
  50. package/dist/esm/components/conversation/MessageGroup.js +0 -119
  51. package/dist/esm/components/conversation/MessageGroup.js.map +0 -1
  52. package/dist/esm/components/conversation/MessagesTab.d.ts +0 -7
  53. package/dist/esm/components/conversation/MessagesTab.js +0 -37
  54. package/dist/esm/components/conversation/MessagesTab.js.map +0 -1
  55. package/dist/esm/components/conversation/SummariesTab.d.ts +0 -7
  56. package/dist/esm/components/conversation/SummariesTab.js +0 -110
  57. package/dist/esm/components/conversation/SummariesTab.js.map +0 -1
  58. package/dist/esm/components/conversation/ToolCallDisplay.d.ts +0 -7
  59. package/dist/esm/components/conversation/ToolCallDisplay.js +0 -123
  60. package/dist/esm/components/conversation/ToolCallDisplay.js.map +0 -1
  61. package/dist/esm/components/conversation/index.d.ts +0 -7
  62. package/dist/esm/components/list/ConversationRow.d.ts +0 -7
  63. package/dist/esm/components/list/ConversationRow.js +0 -122
  64. package/dist/esm/components/list/ConversationRow.js.map +0 -1
  65. package/dist/esm/components/list/index.d.ts +0 -1
  66. package/dist/esm/components/utils/format.d.ts +0 -6
  67. package/dist/esm/components/utils/format.js +0 -68
  68. package/dist/esm/components/utils/format.js.map +0 -1
  69. package/dist/esm/components/utils/index.d.ts +0 -1
  70. package/dist/esm/core.d.ts +0 -22
  71. package/dist/esm/core.js +0 -9
  72. package/dist/esm/core.js.map +0 -1
  73. package/dist/esm/index.js +0 -6
  74. package/dist/esm/index.js.map +0 -1
  75. package/dist/esm/production.d.ts +0 -2
  76. package/dist/esm/production.js +0 -5
  77. package/dist/esm/production.js.map +0 -1
  78. package/dist/esm/store/ai-context.d.ts +0 -135
  79. package/dist/esm/store/ai-context.js +0 -1238
  80. package/dist/esm/store/ai-context.js.map +0 -1
  81. package/dist/esm/store/ai-store.d.ts +0 -1
  82. package/dist/esm/styles/tokens.d.ts +0 -298
  83. package/dist/esm/styles/tokens.js +0 -107
  84. package/dist/esm/styles/tokens.js.map +0 -1
  85. package/dist/esm/styles/use-styles.d.ts +0 -233
  86. package/dist/esm/styles/use-styles.js +0 -1602
  87. 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,9 +0,0 @@
1
- import { Component } from 'solid-js';
2
- import { Chunk } from '../../store/ai-store.js';
3
- interface ChunkItemProps {
4
- chunk: Chunk;
5
- index: number;
6
- variant?: 'small' | 'large';
7
- }
8
- export declare const ChunkItem: Component<ChunkItemProps>;
9
- export {};
@@ -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,7 +0,0 @@
1
- import { Component } from 'solid-js';
2
- import { Chunk } from '../../store/ai-store.js';
3
- interface ChunksCollapsibleProps {
4
- chunks: Array<Chunk>;
5
- }
6
- export declare const ChunksCollapsible: Component<ChunksCollapsibleProps>;
7
- export {};
@@ -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,8 +0,0 @@
1
- import { Component } from 'solid-js';
2
- import { Chunk, Message } from '../../store/ai-store.js';
3
- interface ChunksTabProps {
4
- chunks: Array<Chunk>;
5
- messages?: Array<Message>;
6
- }
7
- export declare const ChunksTab: Component<ChunksTabProps>;
8
- export {};
@@ -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":"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"}
@@ -1,7 +0,0 @@
1
- import { Component } from 'solid-js';
2
- import { Conversation } from '../../store/ai-context.js';
3
- interface ConversationHeaderProps {
4
- conversation: Conversation;
5
- }
6
- export declare const ConversationHeader: Component<ConversationHeaderProps>;
7
- export {};