@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,123 +0,0 @@
1
- import { template, insert, createComponent, effect, className, memo } from "solid-js/web";
2
- import { Show } from "solid-js";
3
- import { JsonTree } from "@tanstack/devtools-ui";
4
- import { useStyles } from "../../styles/use-styles.js";
5
- import { formatDuration } from "../utils/format.js";
6
- var _tmpl$ = /* @__PURE__ */ template(`<div>⏱️ `), _tmpl$2 = /* @__PURE__ */ template(`<div>APPROVAL REQUIRED`), _tmpl$3 = /* @__PURE__ */ template(`<div><div>Arguments</div><div>`), _tmpl$4 = /* @__PURE__ */ template(`<div><div>Result</div><div>`), _tmpl$5 = /* @__PURE__ */ template(`<details><summary><div> </div><div></div></summary><div>`);
7
- const ToolCallDisplay = (props) => {
8
- const styles = useStyles();
9
- const tool = () => props.tool;
10
- const parsedArguments = () => {
11
- const args = tool().arguments;
12
- if (typeof args === "string") {
13
- try {
14
- return JSON.parse(args);
15
- } catch {
16
- return args;
17
- }
18
- }
19
- return args;
20
- };
21
- return (() => {
22
- var _el$ = _tmpl$5(), _el$2 = _el$.firstChild, _el$3 = _el$2.firstChild, _el$4 = _el$3.firstChild, _el$5 = _el$3.nextSibling, _el$9 = _el$2.nextSibling;
23
- insert(_el$3, () => tool().approvalRequired ? "⚠️" : "🔧", _el$4);
24
- insert(_el$3, () => tool().name, null);
25
- insert(_el$5, () => tool().state);
26
- insert(_el$2, createComponent(Show, {
27
- get when() {
28
- return memo(() => tool().duration !== void 0)() && tool().duration > 0;
29
- },
30
- get children() {
31
- var _el$6 = _tmpl$();
32
- _el$6.firstChild;
33
- insert(_el$6, () => formatDuration(tool().duration), null);
34
- effect(() => className(_el$6, styles().conversationDetails.durationBadge));
35
- return _el$6;
36
- }
37
- }), null);
38
- insert(_el$2, createComponent(Show, {
39
- get when() {
40
- return tool().approvalRequired;
41
- },
42
- get children() {
43
- var _el$8 = _tmpl$2();
44
- effect(() => className(_el$8, styles().conversationDetails.approvalRequiredBadge));
45
- return _el$8;
46
- }
47
- }), null);
48
- insert(_el$9, createComponent(Show, {
49
- get when() {
50
- return tool().arguments;
51
- },
52
- get children() {
53
- var _el$0 = _tmpl$3(), _el$1 = _el$0.firstChild, _el$10 = _el$1.nextSibling;
54
- insert(_el$10, createComponent(JsonTree, {
55
- get value() {
56
- return parsedArguments();
57
- },
58
- defaultExpansionDepth: 2,
59
- copyable: true
60
- }));
61
- effect((_p$) => {
62
- var _v$ = styles().conversationDetails.toolSection, _v$2 = styles().conversationDetails.toolSectionLabel, _v$3 = styles().conversationDetails.toolJsonContainer;
63
- _v$ !== _p$.e && className(_el$0, _p$.e = _v$);
64
- _v$2 !== _p$.t && className(_el$1, _p$.t = _v$2);
65
- _v$3 !== _p$.a && className(_el$10, _p$.a = _v$3);
66
- return _p$;
67
- }, {
68
- e: void 0,
69
- t: void 0,
70
- a: void 0
71
- });
72
- return _el$0;
73
- }
74
- }), null);
75
- insert(_el$9, createComponent(Show, {
76
- get when() {
77
- return tool().result !== void 0;
78
- },
79
- get children() {
80
- var _el$11 = _tmpl$4(), _el$12 = _el$11.firstChild, _el$13 = _el$12.nextSibling;
81
- insert(_el$13, createComponent(JsonTree, {
82
- get value() {
83
- return tool().result;
84
- },
85
- defaultExpansionDepth: 2,
86
- copyable: true
87
- }));
88
- effect((_p$) => {
89
- var _v$4 = styles().conversationDetails.toolSection, _v$5 = styles().conversationDetails.toolSectionLabel, _v$6 = styles().conversationDetails.toolJsonContainer;
90
- _v$4 !== _p$.e && className(_el$11, _p$.e = _v$4);
91
- _v$5 !== _p$.t && className(_el$12, _p$.t = _v$5);
92
- _v$6 !== _p$.a && className(_el$13, _p$.a = _v$6);
93
- return _p$;
94
- }, {
95
- e: void 0,
96
- t: void 0,
97
- a: void 0
98
- });
99
- return _el$11;
100
- }
101
- }), null);
102
- effect((_p$) => {
103
- var _v$7 = `${styles().conversationDetails.toolCall} ${tool().approvalRequired ? styles().conversationDetails.toolCallApproval : styles().conversationDetails.toolCallNormal}`, _v$8 = styles().conversationDetails.toolCallHeader, _v$9 = `${styles().conversationDetails.toolCallName} ${tool().approvalRequired ? styles().conversationDetails.toolCallNameApproval : styles().conversationDetails.toolCallNameNormal}`, _v$0 = `${styles().conversationDetails.toolStateBadge} ${tool().approvalRequired ? styles().conversationDetails.toolStateBadgeApproval : styles().conversationDetails.toolStateBadgeNormal}`, _v$1 = styles().conversationDetails.toolCallContent;
104
- _v$7 !== _p$.e && className(_el$, _p$.e = _v$7);
105
- _v$8 !== _p$.t && className(_el$2, _p$.t = _v$8);
106
- _v$9 !== _p$.a && className(_el$3, _p$.a = _v$9);
107
- _v$0 !== _p$.o && className(_el$5, _p$.o = _v$0);
108
- _v$1 !== _p$.i && className(_el$9, _p$.i = _v$1);
109
- return _p$;
110
- }, {
111
- e: void 0,
112
- t: void 0,
113
- a: void 0,
114
- o: void 0,
115
- i: void 0
116
- });
117
- return _el$;
118
- })();
119
- };
120
- export {
121
- ToolCallDisplay
122
- };
123
- //# sourceMappingURL=ToolCallDisplay.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ToolCallDisplay.js","sources":["../../../../src/components/conversation/ToolCallDisplay.tsx"],"sourcesContent":["import { Show } from 'solid-js'\nimport { JsonTree } from '@tanstack/devtools-ui'\nimport { useStyles } from '../../styles/use-styles'\nimport { formatDuration } from '../utils'\nimport type { Component } from 'solid-js'\nimport type { ToolCall } from '../../store/ai-context'\n\ninterface ToolCallDisplayProps {\n tool: ToolCall\n}\n\nexport const ToolCallDisplay: Component<ToolCallDisplayProps> = (props) => {\n const styles = useStyles()\n const tool = () => props.tool\n\n // Parse arguments if they're a string\n const parsedArguments = () => {\n const args = tool().arguments\n if (typeof args === 'string') {\n try {\n return JSON.parse(args)\n } catch {\n return args\n }\n }\n return args\n }\n\n return (\n <details\n class={`${styles().conversationDetails.toolCall} ${\n tool().approvalRequired\n ? styles().conversationDetails.toolCallApproval\n : styles().conversationDetails.toolCallNormal\n }`}\n >\n <summary class={styles().conversationDetails.toolCallHeader}>\n <div\n class={`${styles().conversationDetails.toolCallName} ${\n tool().approvalRequired\n ? styles().conversationDetails.toolCallNameApproval\n : styles().conversationDetails.toolCallNameNormal\n }`}\n >\n {tool().approvalRequired ? '⚠️' : '🔧'} {tool().name}\n </div>\n <div\n class={`${styles().conversationDetails.toolStateBadge} ${\n tool().approvalRequired\n ? styles().conversationDetails.toolStateBadgeApproval\n : styles().conversationDetails.toolStateBadgeNormal\n }`}\n >\n {tool().state}\n </div>\n <Show when={tool().duration !== undefined && tool().duration! > 0}>\n <div class={styles().conversationDetails.durationBadge}>\n ⏱️ {formatDuration(tool().duration)}\n </div>\n </Show>\n <Show when={tool().approvalRequired}>\n <div class={styles().conversationDetails.approvalRequiredBadge}>\n APPROVAL REQUIRED\n </div>\n </Show>\n </summary>\n <div class={styles().conversationDetails.toolCallContent}>\n <Show when={tool().arguments}>\n <div class={styles().conversationDetails.toolSection}>\n <div class={styles().conversationDetails.toolSectionLabel}>\n Arguments\n </div>\n <div class={styles().conversationDetails.toolJsonContainer}>\n <JsonTree\n value={parsedArguments() as Record<string, unknown>}\n defaultExpansionDepth={2}\n copyable\n />\n </div>\n </div>\n </Show>\n <Show when={tool().result !== undefined}>\n <div class={styles().conversationDetails.toolSection}>\n <div class={styles().conversationDetails.toolSectionLabel}>\n Result\n </div>\n <div class={styles().conversationDetails.toolJsonContainer}>\n <JsonTree\n value={tool().result as Record<string, unknown>}\n defaultExpansionDepth={2}\n copyable\n />\n </div>\n </div>\n </Show>\n </div>\n </details>\n )\n}\n"],"names":["ToolCallDisplay","props","styles","useStyles","tool","parsedArguments","args","arguments","JSON","parse","_el$","_tmpl$5","_el$2","firstChild","_el$3","_el$4","_el$5","nextSibling","_el$9","_$insert","approvalRequired","name","state","_$createComponent","Show","when","_$memo","duration","undefined","children","_el$6","_tmpl$","formatDuration","_$effect","_$className","conversationDetails","durationBadge","_el$8","_tmpl$2","approvalRequiredBadge","_el$0","_tmpl$3","_el$1","_el$10","JsonTree","value","defaultExpansionDepth","copyable","_p$","_v$","toolSection","_v$2","toolSectionLabel","_v$3","toolJsonContainer","e","t","a","result","_el$11","_tmpl$4","_el$12","_el$13","_v$4","_v$5","_v$6","_v$7","toolCall","toolCallApproval","toolCallNormal","_v$8","toolCallHeader","_v$9","toolCallName","toolCallNameApproval","toolCallNameNormal","_v$0","toolStateBadge","toolStateBadgeApproval","toolStateBadgeNormal","_v$1","toolCallContent","o","i"],"mappings":"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"}
@@ -1,7 +0,0 @@
1
- export { ConversationHeader } from './ConversationHeader.js';
2
- export { ConversationTabs } from './ConversationTabs.js';
3
- export type { TabType } from './ConversationTabs.js';
4
- export { MessagesTab } from './MessagesTab.js';
5
- export { ChunksTab } from './ChunksTab.js';
6
- export { SummariesTab } from './SummariesTab.js';
7
- export { ActivityEventsTab } from './ActivityEventsTab.js';
@@ -1,7 +0,0 @@
1
- import { Conversation } from '../../store/ai-context.js';
2
- import { Component } from 'solid-js';
3
- interface ConversationRowProps {
4
- conversation: Conversation;
5
- }
6
- export declare const ConversationRow: Component<ConversationRowProps>;
7
- export {};
@@ -1,122 +0,0 @@
1
- import { template, insert, createComponent, effect, className, setAttribute, setStyleProperty, delegateEvents } from "solid-js/web";
2
- import { Show } from "solid-js";
3
- import { useStyles } from "../../styles/use-styles.js";
4
- import { useAIStore } from "../../store/ai-context.js";
5
- import { getTypeColor, getStatusColor } from "../utils/format.js";
6
- var _tmpl$ = /* @__PURE__ */ template(`<div>🔧 `), _tmpl$2 = /* @__PURE__ */ template(`<div>⟳`), _tmpl$3 = /* @__PURE__ */ template(`<div>🎯 `), _tmpl$4 = /* @__PURE__ */ template(`<div><div><div><div><div></div><div></div></div><div><div></div></div></div><div><div>💬 </div><div>📦 `);
7
- const ConversationRow = (props) => {
8
- const {
9
- state,
10
- selectConversation
11
- } = useAIStore();
12
- const styles = useStyles();
13
- const conv = () => props.conversation;
14
- const hasToolCalls = () => {
15
- return conv().messages.some((msg) => msg.toolCalls && msg.toolCalls.length > 0);
16
- };
17
- const countToolCalls = () => {
18
- return conv().messages.reduce((total, msg) => {
19
- return total + (msg.toolCalls?.length || 0);
20
- }, 0);
21
- };
22
- const totalRawChunks = () => {
23
- return conv().chunks.reduce((sum, c) => sum + (c.chunkCount || 1), 0);
24
- };
25
- return (() => {
26
- var _el$ = _tmpl$4(), _el$2 = _el$.firstChild, _el$3 = _el$2.firstChild, _el$4 = _el$3.firstChild, _el$5 = _el$4.firstChild, _el$6 = _el$5.nextSibling, _el$9 = _el$4.nextSibling, _el$1 = _el$9.firstChild, _el$10 = _el$3.nextSibling, _el$11 = _el$10.firstChild;
27
- _el$11.firstChild;
28
- var _el$13 = _el$11.nextSibling;
29
- _el$13.firstChild;
30
- _el$.$$click = () => selectConversation(conv().id);
31
- insert(_el$6, () => conv().label);
32
- insert(_el$4, createComponent(Show, {
33
- get when() {
34
- return hasToolCalls();
35
- },
36
- get children() {
37
- var _el$7 = _tmpl$();
38
- _el$7.firstChild;
39
- insert(_el$7, countToolCalls, null);
40
- effect((_p$) => {
41
- var _v$ = styles().conversationsList.toolCallsBadge, _v$2 = `${countToolCalls()} tool call${countToolCalls() !== 1 ? "s" : ""}`;
42
- _v$ !== _p$.e && className(_el$7, _p$.e = _v$);
43
- _v$2 !== _p$.t && setAttribute(_el$7, "title", _p$.t = _v$2);
44
- return _p$;
45
- }, {
46
- e: void 0,
47
- t: void 0
48
- });
49
- return _el$7;
50
- }
51
- }), null);
52
- insert(_el$9, createComponent(Show, {
53
- get when() {
54
- return conv().status === "active";
55
- },
56
- get children() {
57
- var _el$0 = _tmpl$2();
58
- effect(() => className(_el$0, styles().conversationsList.loadingIndicator));
59
- return _el$0;
60
- }
61
- }), _el$1);
62
- insert(_el$11, () => conv().messages.length, null);
63
- insert(_el$13, totalRawChunks, null);
64
- insert(_el$10, createComponent(Show, {
65
- get when() {
66
- return conv().usage;
67
- },
68
- get children() {
69
- var _el$15 = _tmpl$3();
70
- _el$15.firstChild;
71
- insert(_el$15, () => conv().usage?.totalTokens.toLocaleString() || 0, null);
72
- effect((_p$) => {
73
- var _v$3 = styles().conversationsList.tokensBadge, _v$4 = `Prompt: ${conv().usage?.promptTokens || 0} | Completion: ${conv().usage?.completionTokens || 0}`;
74
- _v$3 !== _p$.e && className(_el$15, _p$.e = _v$3);
75
- _v$4 !== _p$.t && setAttribute(_el$15, "title", _p$.t = _v$4);
76
- return _p$;
77
- }, {
78
- e: void 0,
79
- t: void 0
80
- });
81
- return _el$15;
82
- }
83
- }), null);
84
- effect((_p$) => {
85
- var _v$5 = `${styles().utilRow} ${state.activeConversationId === conv().id ? styles().utilRowSelected : ""}`, _v$6 = styles().conversationsList.rowMain, _v$7 = styles().conversationsList.rowTop, _v$8 = styles().conversationsList.rowInfo, _v$9 = styles().conversationsList.typeDot, _v$0 = getTypeColor(conv().type), _v$1 = styles().conversationsList.label, _v$10 = styles().conversationsList.rowRight, _v$11 = styles().conversationsList.statusDot, _v$12 = getStatusColor(conv().status), _v$13 = styles().conversationsList.stats, _v$14 = styles().conversationsList.statItem, _v$15 = styles().conversationsList.statItem;
86
- _v$5 !== _p$.e && className(_el$, _p$.e = _v$5);
87
- _v$6 !== _p$.t && className(_el$2, _p$.t = _v$6);
88
- _v$7 !== _p$.a && className(_el$3, _p$.a = _v$7);
89
- _v$8 !== _p$.o && className(_el$4, _p$.o = _v$8);
90
- _v$9 !== _p$.i && className(_el$5, _p$.i = _v$9);
91
- _v$0 !== _p$.n && setStyleProperty(_el$5, "background", _p$.n = _v$0);
92
- _v$1 !== _p$.s && className(_el$6, _p$.s = _v$1);
93
- _v$10 !== _p$.h && className(_el$9, _p$.h = _v$10);
94
- _v$11 !== _p$.r && className(_el$1, _p$.r = _v$11);
95
- _v$12 !== _p$.d && setStyleProperty(_el$1, "background", _p$.d = _v$12);
96
- _v$13 !== _p$.l && className(_el$10, _p$.l = _v$13);
97
- _v$14 !== _p$.u && className(_el$11, _p$.u = _v$14);
98
- _v$15 !== _p$.c && className(_el$13, _p$.c = _v$15);
99
- return _p$;
100
- }, {
101
- e: void 0,
102
- t: void 0,
103
- a: void 0,
104
- o: void 0,
105
- i: void 0,
106
- n: void 0,
107
- s: void 0,
108
- h: void 0,
109
- r: void 0,
110
- d: void 0,
111
- l: void 0,
112
- u: void 0,
113
- c: void 0
114
- });
115
- return _el$;
116
- })();
117
- };
118
- delegateEvents(["click"]);
119
- export {
120
- ConversationRow
121
- };
122
- //# sourceMappingURL=ConversationRow.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ConversationRow.js","sources":["../../../../src/components/list/ConversationRow.tsx"],"sourcesContent":["import { Show } from 'solid-js'\nimport { useStyles } from '../../styles/use-styles'\nimport { useAIStore } from '../../store/ai-context'\nimport { getStatusColor, getTypeColor } from '../utils'\nimport type { Conversation } from '../../store/ai-context'\nimport type { Component } from 'solid-js'\n\ninterface ConversationRowProps {\n conversation: Conversation\n}\n\nexport const ConversationRow: Component<ConversationRowProps> = (props) => {\n const { state, selectConversation } = useAIStore()\n const styles = useStyles()\n const conv = () => props.conversation\n\n const hasToolCalls = () => {\n return conv().messages.some(\n (msg) => msg.toolCalls && msg.toolCalls.length > 0,\n )\n }\n\n const countToolCalls = () => {\n return conv().messages.reduce((total, msg) => {\n return total + (msg.toolCalls?.length || 0)\n }, 0)\n }\n\n // Total raw chunks = sum of all chunkCounts from all chunks\n const totalRawChunks = () => {\n return conv().chunks.reduce((sum, c) => sum + (c.chunkCount || 1), 0)\n }\n\n return (\n <div\n class={`${styles().utilRow} ${state.activeConversationId === conv().id ? styles().utilRowSelected : ''}`}\n onClick={() => selectConversation(conv().id)}\n >\n <div class={styles().conversationsList.rowMain}>\n <div class={styles().conversationsList.rowTop}>\n <div class={styles().conversationsList.rowInfo}>\n <div\n class={styles().conversationsList.typeDot}\n style={{ background: getTypeColor(conv().type) }}\n />\n <div class={styles().conversationsList.label}>{conv().label}</div>\n <Show when={hasToolCalls()}>\n <div\n class={styles().conversationsList.toolCallsBadge}\n title={`${countToolCalls()} tool call${countToolCalls() !== 1 ? 's' : ''}`}\n >\n 🔧 {countToolCalls()}\n </div>\n </Show>\n </div>\n <div class={styles().conversationsList.rowRight}>\n <Show when={conv().status === 'active'}>\n <div class={styles().conversationsList.loadingIndicator}>⟳</div>\n </Show>\n <div\n class={styles().conversationsList.statusDot}\n style={{ background: getStatusColor(conv().status) }}\n />\n </div>\n </div>\n <div class={styles().conversationsList.stats}>\n <div class={styles().conversationsList.statItem}>\n 💬 {conv().messages.length}\n </div>\n <div class={styles().conversationsList.statItem}>\n 📦 {totalRawChunks()}\n </div>\n <Show when={conv().usage}>\n <div\n class={styles().conversationsList.tokensBadge}\n title={`Prompt: ${conv().usage?.promptTokens || 0} | Completion: ${conv().usage?.completionTokens || 0}`}\n >\n 🎯 {conv().usage?.totalTokens.toLocaleString() || 0}\n </div>\n </Show>\n </div>\n </div>\n </div>\n )\n}\n"],"names":["ConversationRow","props","state","selectConversation","useAIStore","styles","useStyles","conv","conversation","hasToolCalls","messages","some","msg","toolCalls","length","countToolCalls","reduce","total","totalRawChunks","chunks","sum","c","chunkCount","_el$","_tmpl$4","_el$2","firstChild","_el$3","_el$4","_el$5","_el$6","nextSibling","_el$9","_el$1","_el$10","_el$11","_el$13","$$click","id","_$insert","label","_$createComponent","Show","when","children","_el$7","_tmpl$","_$effect","_p$","_v$","conversationsList","toolCallsBadge","_v$2","e","_$className","t","_$setAttribute","undefined","status","_el$0","_tmpl$2","loadingIndicator","usage","_el$15","_tmpl$3","totalTokens","toLocaleString","_v$3","tokensBadge","_v$4","promptTokens","completionTokens","_v$5","utilRow","activeConversationId","utilRowSelected","_v$6","rowMain","_v$7","rowTop","_v$8","rowInfo","_v$9","typeDot","_v$0","getTypeColor","type","_v$1","_v$10","rowRight","_v$11","statusDot","_v$12","getStatusColor","_v$13","stats","_v$14","statItem","_v$15","a","o","i","n","_$setStyleProperty","s","h","r","d","l","u","_$delegateEvents"],"mappings":"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"}
@@ -1 +0,0 @@
1
- export { ConversationRow } from './ConversationRow.js';
@@ -1,6 +0,0 @@
1
- import { Chunk } from '../../store/ai-store.js';
2
- export declare const formatTimestamp: (timestamp: number) => string;
3
- export declare const formatDuration: (ms?: number) => string;
4
- export declare const getChunkTypeColor: (type: Chunk["type"]) => string;
5
- export declare const getStatusColor: (status: "active" | "completed" | "error") => string;
6
- export declare const getTypeColor: (type: "client" | "server") => string;
@@ -1,68 +0,0 @@
1
- const formatTimestamp = (timestamp) => {
2
- const date = new Date(timestamp);
3
- return date.toLocaleTimeString() + "." + date.getMilliseconds().toString().padStart(3, "0");
4
- };
5
- const formatDuration = (ms) => {
6
- if (!ms) return "-";
7
- if (ms < 1e3) return `${ms}ms`;
8
- return `${(ms / 1e3).toFixed(2)}s`;
9
- };
10
- const getChunkTypeColor = (type) => {
11
- switch (type) {
12
- case "content":
13
- return "#10b981";
14
- // green
15
- case "tool_call":
16
- return "#8b5cf6";
17
- // purple
18
- case "tool_result":
19
- return "#3b82f6";
20
- // blue
21
- case "done":
22
- return "#6b7280";
23
- // gray
24
- case "error":
25
- return "#ef4444";
26
- // red
27
- case "approval":
28
- return "#f59e0b";
29
- // orange/amber
30
- default:
31
- return "#6b7280";
32
- }
33
- };
34
- const getStatusColor = (status) => {
35
- switch (status) {
36
- case "active":
37
- return "oklch(0.7 0.17 142)";
38
- // green
39
- case "completed":
40
- return "oklch(0.65 0.1 260)";
41
- // blue
42
- case "error":
43
- return "oklch(0.65 0.2 25)";
44
- // red
45
- default:
46
- return "oklch(0.6 0.05 200)";
47
- }
48
- };
49
- const getTypeColor = (type) => {
50
- switch (type) {
51
- case "client":
52
- return "oklch(0.68 0.16 330)";
53
- // pink
54
- case "server":
55
- return "oklch(0.68 0.15 280)";
56
- // purple
57
- default:
58
- return "oklch(0.6 0.05 200)";
59
- }
60
- };
61
- export {
62
- formatDuration,
63
- formatTimestamp,
64
- getChunkTypeColor,
65
- getStatusColor,
66
- getTypeColor
67
- };
68
- //# sourceMappingURL=format.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"format.js","sources":["../../../../src/components/utils/format.ts"],"sourcesContent":["import type { Chunk } from '../../store/ai-store'\n\nexport const formatTimestamp = (timestamp: number): string => {\n const date = new Date(timestamp)\n return (\n date.toLocaleTimeString() +\n '.' +\n date.getMilliseconds().toString().padStart(3, '0')\n )\n}\n\nexport const formatDuration = (ms?: number): string => {\n if (!ms) return '-'\n if (ms < 1000) return `${ms}ms`\n return `${(ms / 1000).toFixed(2)}s`\n}\n\nexport const getChunkTypeColor = (type: Chunk['type']): string => {\n switch (type) {\n case 'content':\n return '#10b981' // green\n case 'tool_call':\n return '#8b5cf6' // purple\n case 'tool_result':\n return '#3b82f6' // blue\n case 'done':\n return '#6b7280' // gray\n case 'error':\n return '#ef4444' // red\n case 'approval':\n return '#f59e0b' // orange/amber\n default:\n return '#6b7280' // gray\n }\n}\n\nexport const getStatusColor = (\n status: 'active' | 'completed' | 'error',\n): string => {\n switch (status) {\n case 'active':\n return 'oklch(0.7 0.17 142)' // green\n case 'completed':\n return 'oklch(0.65 0.1 260)' // blue\n case 'error':\n return 'oklch(0.65 0.2 25)' // red\n default:\n return 'oklch(0.6 0.05 200)'\n }\n}\n\nexport const getTypeColor = (type: 'client' | 'server'): string => {\n switch (type) {\n case 'client':\n return 'oklch(0.68 0.16 330)' // pink\n case 'server':\n return 'oklch(0.68 0.15 280)' // purple\n default:\n return 'oklch(0.6 0.05 200)'\n }\n}\n"],"names":[],"mappings":"AAEO,MAAM,kBAAkB,CAAC,cAA8B;AAC5D,QAAM,OAAO,IAAI,KAAK,SAAS;AAC/B,SACE,KAAK,uBACL,MACA,KAAK,gBAAA,EAAkB,SAAA,EAAW,SAAS,GAAG,GAAG;AAErD;AAEO,MAAM,iBAAiB,CAAC,OAAwB;AACrD,MAAI,CAAC,GAAI,QAAO;AAChB,MAAI,KAAK,IAAM,QAAO,GAAG,EAAE;AAC3B,SAAO,IAAI,KAAK,KAAM,QAAQ,CAAC,CAAC;AAClC;AAEO,MAAM,oBAAoB,CAAC,SAAgC;AAChE,UAAQ,MAAA;AAAA,IACN,KAAK;AACH,aAAO;AAAA;AAAA,IACT,KAAK;AACH,aAAO;AAAA;AAAA,IACT,KAAK;AACH,aAAO;AAAA;AAAA,IACT,KAAK;AACH,aAAO;AAAA;AAAA,IACT,KAAK;AACH,aAAO;AAAA;AAAA,IACT,KAAK;AACH,aAAO;AAAA;AAAA,IACT;AACE,aAAO;AAAA,EAAA;AAEb;AAEO,MAAM,iBAAiB,CAC5B,WACW;AACX,UAAQ,QAAA;AAAA,IACN,KAAK;AACH,aAAO;AAAA;AAAA,IACT,KAAK;AACH,aAAO;AAAA;AAAA,IACT,KAAK;AACH,aAAO;AAAA;AAAA,IACT;AACE,aAAO;AAAA,EAAA;AAEb;AAEO,MAAM,eAAe,CAAC,SAAsC;AACjE,UAAQ,MAAA;AAAA,IACN,KAAK;AACH,aAAO;AAAA;AAAA,IACT,KAAK;AACH,aAAO;AAAA;AAAA,IACT;AACE,aAAO;AAAA,EAAA;AAEb;"}
@@ -1 +0,0 @@
1
- export * from './format.js';
@@ -1,22 +0,0 @@
1
- export interface AiDevtoolsInit {
2
- }
3
- declare const AiDevtoolsCore: new () => {
4
- "__#private@#isMounted": boolean;
5
- "__#private@#isMounting": boolean;
6
- "__#private@#mountCb": (() => void) | null;
7
- "__#private@#dispose"?: () => void;
8
- "__#private@#Component": any;
9
- "__#private@#ThemeProvider": any;
10
- mount<T extends HTMLElement>(el: T, theme: "light" | "dark"): Promise<void>;
11
- unmount(): void;
12
- }, AiDevtoolsCoreNoOp: new () => {
13
- mount<T extends HTMLElement>(_el: T, _theme: "light" | "dark"): Promise<void>;
14
- unmount(): void;
15
- "__#private@#isMounted": boolean;
16
- "__#private@#isMounting": boolean;
17
- "__#private@#mountCb": (() => void) | null;
18
- "__#private@#dispose"?: () => void;
19
- "__#private@#Component": any;
20
- "__#private@#ThemeProvider": any;
21
- };
22
- export { AiDevtoolsCore, AiDevtoolsCoreNoOp };
package/dist/esm/core.js DELETED
@@ -1,9 +0,0 @@
1
- import { lazy } from "solid-js";
2
- import { constructCoreClass } from "@tanstack/devtools-utils/solid";
3
- const Component = lazy(() => import("./components/Shell.js"));
4
- const [AiDevtoolsCore, AiDevtoolsCoreNoOp] = constructCoreClass(Component);
5
- export {
6
- AiDevtoolsCore,
7
- AiDevtoolsCoreNoOp
8
- };
9
- //# sourceMappingURL=core.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"core.js","sources":["../../src/core.tsx"],"sourcesContent":["import { lazy } from 'solid-js'\nimport { constructCoreClass } from '@tanstack/devtools-utils/solid'\n\nconst Component = lazy(() => import('./components/Shell'))\n\nexport interface AiDevtoolsInit {}\n\nconst [AiDevtoolsCore, AiDevtoolsCoreNoOp] = constructCoreClass(Component)\n\nexport { AiDevtoolsCore, AiDevtoolsCoreNoOp }\n"],"names":["Component","lazy","AiDevtoolsCore","AiDevtoolsCoreNoOp","constructCoreClass"],"mappings":";;AAGA,MAAMA,YAAYC,KAAK,MAAM,OAAO,uBAAoB,CAAC;AAIzD,MAAM,CAACC,gBAAgBC,kBAAkB,IAAIC,mBAAmBJ,SAAS;"}
package/dist/esm/index.js DELETED
@@ -1,6 +0,0 @@
1
- import { AiDevtoolsCoreNoOp, AiDevtoolsCore as AiDevtoolsCore$1 } from "./core.js";
2
- const AiDevtoolsCore = process.env.NODE_ENV !== "development" ? AiDevtoolsCoreNoOp : AiDevtoolsCore$1;
3
- export {
4
- AiDevtoolsCore
5
- };
6
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":["../../src/index.ts"],"sourcesContent":["import * as Devtools from './core'\n\nexport const AiDevtoolsCore =\n process.env.NODE_ENV !== 'development'\n ? Devtools.AiDevtoolsCoreNoOp\n : Devtools.AiDevtoolsCore\n\nexport type { AiDevtoolsInit } from './core'\n"],"names":["Devtools.AiDevtoolsCoreNoOp","Devtools.AiDevtoolsCore"],"mappings":";AAEO,MAAM,iBACX,QAAQ,IAAI,aAAa,gBACrBA,qBACAC;"}
@@ -1,2 +0,0 @@
1
- export { AiDevtoolsCore } from './core.js';
2
- export type { AiDevtoolsInit } from './core.js';
@@ -1,5 +0,0 @@
1
- import { AiDevtoolsCore } from "./core.js";
2
- export {
3
- AiDevtoolsCore
4
- };
5
- //# sourceMappingURL=production.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"production.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -1,135 +0,0 @@
1
- import { ContentPartSource } from '@tanstack/ai';
2
- import { ParentComponent } from 'solid-js';
3
- interface MessagePart {
4
- type: 'text' | 'tool-call' | 'tool-result' | 'thinking' | 'image' | 'audio' | 'video' | 'document';
5
- content?: string;
6
- toolCallId?: string;
7
- toolName?: string;
8
- arguments?: string;
9
- state?: string;
10
- output?: unknown;
11
- error?: string;
12
- source?: ContentPartSource;
13
- metadata?: unknown;
14
- }
15
- export interface ToolCall {
16
- id: string;
17
- name: string;
18
- arguments: string;
19
- state: string;
20
- result?: unknown;
21
- approvalRequired?: boolean;
22
- approvalId?: string;
23
- /** Duration of tool execution in milliseconds */
24
- duration?: number;
25
- }
26
- interface TokenUsage {
27
- promptTokens: number;
28
- completionTokens: number;
29
- totalTokens: number;
30
- }
31
- export interface Message {
32
- id: string;
33
- role: 'user' | 'assistant' | 'system' | 'tool';
34
- content: string;
35
- timestamp: number;
36
- parts?: Array<MessagePart>;
37
- toolCalls?: Array<ToolCall>;
38
- /** Consolidated chunks - consecutive same-type chunks are merged into one entry */
39
- chunks?: Array<Chunk>;
40
- /** Total number of raw chunks received (before consolidation) */
41
- totalChunkCount?: number;
42
- model?: string;
43
- usage?: TokenUsage;
44
- thinkingContent?: string;
45
- /** Source of the message: 'client' for aggregated client-side data, 'server' for individual server chunks */
46
- source?: 'client' | 'server';
47
- }
48
- /**
49
- * Consolidated chunk - represents one or more raw chunks of the same type.
50
- * Consecutive content/thinking chunks are merged into a single entry with accumulated content.
51
- */
52
- export interface Chunk {
53
- id: string;
54
- type: 'content' | 'tool_call' | 'tool_result' | 'done' | 'error' | 'approval' | 'thinking';
55
- timestamp: number;
56
- messageId?: string;
57
- /** Accumulated content from all merged chunks */
58
- content?: string;
59
- /** The last delta received (kept for debugging) */
60
- delta?: string;
61
- toolName?: string;
62
- toolCallId?: string;
63
- finishReason?: string;
64
- error?: string;
65
- approvalId?: string;
66
- input?: unknown;
67
- /** Tool arguments for tool_call chunks */
68
- arguments?: string;
69
- /** Tool result data for tool_result chunks */
70
- result?: unknown;
71
- /** Duration in ms for tool execution */
72
- duration?: number;
73
- /** Number of raw chunks that were merged into this consolidated chunk */
74
- chunkCount: number;
75
- /** Whether this is a client-side tool execution */
76
- isClientTool?: boolean;
77
- }
78
- export interface SummarizeOperation {
79
- id: string;
80
- model: string;
81
- inputLength: number;
82
- outputLength?: number;
83
- duration?: number;
84
- timestamp: number;
85
- status: 'started' | 'completed';
86
- }
87
- export interface ActivityEvent {
88
- id: string;
89
- name: string;
90
- timestamp: number;
91
- payload: unknown;
92
- }
93
- export interface Conversation {
94
- id: string;
95
- type: 'client' | 'server';
96
- label: string;
97
- messages: Array<Message>;
98
- chunks: Array<Chunk>;
99
- model?: string;
100
- provider?: string;
101
- status: 'active' | 'completed' | 'error';
102
- startedAt: number;
103
- completedAt?: number;
104
- usage?: TokenUsage;
105
- iterationCount?: number;
106
- toolNames?: Array<string>;
107
- options?: Record<string, unknown>;
108
- modelOptions?: Record<string, unknown>;
109
- systemPrompts?: Array<string>;
110
- /** Flags for which operation types this conversation has */
111
- hasChat?: boolean;
112
- hasSummarize?: boolean;
113
- hasImage?: boolean;
114
- hasSpeech?: boolean;
115
- hasTranscription?: boolean;
116
- hasVideo?: boolean;
117
- /** Summarize operations in this conversation */
118
- summaries?: Array<SummarizeOperation>;
119
- imageEvents?: Array<ActivityEvent>;
120
- speechEvents?: Array<ActivityEvent>;
121
- transcriptionEvents?: Array<ActivityEvent>;
122
- videoEvents?: Array<ActivityEvent>;
123
- }
124
- interface AIStoreState {
125
- conversations: Record<string, Conversation>;
126
- activeConversationId: string | null;
127
- }
128
- interface AIContextValue {
129
- state: AIStoreState;
130
- clearAllConversations: () => void;
131
- selectConversation: (id: string) => void;
132
- }
133
- export declare function useAIStore(): AIContextValue;
134
- export declare const AIProvider: ParentComponent;
135
- export {};