@talk2view/sdk 0.3.2 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client.d.ts +1 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +4 -4
- package/dist/client.js.map +1 -1
- package/dist/event-emitter.d.ts +7 -0
- package/dist/event-emitter.d.ts.map +1 -0
- package/dist/event-emitter.js +23 -0
- package/dist/event-emitter.js.map +1 -0
- package/dist/index.d.ts +78 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +312 -6
- package/dist/index.js.map +1 -1
- package/dist/react/T2VProvider.js +1 -1
- package/dist/react/T2VProvider.js.map +1 -1
- package/dist/react/index.d.ts +2 -1
- package/dist/react/index.d.ts.map +1 -1
- package/dist/react/useT2VChat.d.ts +6 -22
- package/dist/react/useT2VChat.d.ts.map +1 -1
- package/dist/react/useT2VChat.js +34 -218
- package/dist/react/useT2VChat.js.map +1 -1
- package/dist/sessions.d.ts.map +1 -1
- package/dist/sessions.js +3 -0
- package/dist/sessions.js.map +1 -1
- package/dist/tools.d.ts +5 -0
- package/dist/tools.d.ts.map +1 -1
- package/dist/tools.js +16 -2
- package/dist/tools.js.map +1 -1
- package/dist/types.d.ts +45 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/ui/components/ApprovalCard.d.ts +10 -0
- package/dist/ui/components/ApprovalCard.d.ts.map +1 -0
- package/dist/ui/components/ApprovalCard.js +60 -0
- package/dist/ui/components/ApprovalCard.js.map +1 -0
- package/dist/ui/components/{T2VChatHeader.d.ts → ChatHeader.d.ts} +4 -4
- package/dist/ui/components/ChatHeader.d.ts.map +1 -0
- package/dist/ui/components/ChatHeader.js +126 -0
- package/dist/ui/components/ChatHeader.js.map +1 -0
- package/dist/ui/components/ChatPanel.d.ts +9 -0
- package/dist/ui/components/ChatPanel.d.ts.map +1 -0
- package/dist/ui/components/ChatPanel.js +37 -0
- package/dist/ui/components/ChatPanel.js.map +1 -0
- package/dist/ui/components/ChatWidget.d.ts +5 -0
- package/dist/ui/components/ChatWidget.d.ts.map +1 -0
- package/dist/ui/components/ChatWidget.js +27 -0
- package/dist/ui/components/ChatWidget.js.map +1 -0
- package/dist/ui/components/CodeBlock.d.ts +6 -0
- package/dist/ui/components/CodeBlock.d.ts.map +1 -0
- package/dist/ui/components/CodeBlock.js +79 -0
- package/dist/ui/components/CodeBlock.js.map +1 -0
- package/dist/ui/components/Composer.d.ts +14 -0
- package/dist/ui/components/Composer.d.ts.map +1 -0
- package/dist/ui/components/Composer.js +172 -0
- package/dist/ui/components/Composer.js.map +1 -0
- package/dist/ui/components/LoginForm.d.ts +5 -0
- package/dist/ui/components/LoginForm.d.ts.map +1 -0
- package/dist/ui/components/LoginForm.js +37 -0
- package/dist/ui/components/LoginForm.js.map +1 -0
- package/dist/ui/components/MarkdownRenderer.d.ts +5 -0
- package/dist/ui/components/MarkdownRenderer.d.ts.map +1 -0
- package/dist/ui/components/MarkdownRenderer.js +28 -0
- package/dist/ui/components/MarkdownRenderer.js.map +1 -0
- package/dist/ui/components/MessageActions.d.ts +6 -0
- package/dist/ui/components/MessageActions.d.ts.map +1 -0
- package/dist/ui/components/MessageActions.js +43 -0
- package/dist/ui/components/MessageActions.js.map +1 -0
- package/dist/ui/components/MessageBubble.d.ts +16 -0
- package/dist/ui/components/MessageBubble.d.ts.map +1 -0
- package/dist/ui/components/MessageBubble.js +71 -0
- package/dist/ui/components/MessageBubble.js.map +1 -0
- package/dist/ui/components/MessageList.d.ts +10 -0
- package/dist/ui/components/MessageList.d.ts.map +1 -0
- package/dist/ui/components/MessageList.js +69 -0
- package/dist/ui/components/MessageList.js.map +1 -0
- package/dist/ui/components/SettingsPanel.d.ts +11 -0
- package/dist/ui/components/SettingsPanel.d.ts.map +1 -0
- package/dist/ui/components/{SettingsView.js → SettingsPanel.js} +27 -27
- package/dist/ui/components/SettingsPanel.js.map +1 -0
- package/dist/ui/components/Shimmer.d.ts +2 -0
- package/dist/ui/components/Shimmer.d.ts.map +1 -0
- package/dist/ui/components/Shimmer.js +10 -0
- package/dist/ui/components/Shimmer.js.map +1 -0
- package/dist/ui/components/Talk2View.d.ts +21 -0
- package/dist/ui/components/Talk2View.d.ts.map +1 -0
- package/dist/ui/components/Talk2View.js +79 -0
- package/dist/ui/components/Talk2View.js.map +1 -0
- package/dist/ui/components/ThinkingBlock.d.ts +7 -0
- package/dist/ui/components/ThinkingBlock.d.ts.map +1 -0
- package/dist/ui/components/ThinkingBlock.js +64 -0
- package/dist/ui/components/ThinkingBlock.js.map +1 -0
- package/dist/ui/components/ToolDisplay.d.ts +28 -0
- package/dist/ui/components/ToolDisplay.d.ts.map +1 -0
- package/dist/ui/components/ToolDisplay.js +123 -0
- package/dist/ui/components/ToolDisplay.js.map +1 -0
- package/dist/ui/components/WelcomeScreen.d.ts +6 -0
- package/dist/ui/components/WelcomeScreen.d.ts.map +1 -0
- package/dist/ui/components/WelcomeScreen.js +18 -0
- package/dist/ui/components/WelcomeScreen.js.map +1 -0
- package/dist/ui/context.d.ts +29 -0
- package/dist/ui/context.d.ts.map +1 -0
- package/dist/ui/context.js +16 -0
- package/dist/ui/context.js.map +1 -0
- package/dist/ui/index.d.ts +24 -37
- package/dist/ui/index.d.ts.map +1 -1
- package/dist/ui/index.js +23 -35
- package/dist/ui/index.js.map +1 -1
- package/dist/ui/styles.d.ts +2 -0
- package/dist/ui/styles.d.ts.map +1 -0
- package/dist/ui/styles.js +91 -0
- package/dist/ui/styles.js.map +1 -0
- package/dist/ui/theme.d.ts +11 -0
- package/dist/ui/theme.d.ts.map +1 -0
- package/dist/ui/theme.js +70 -0
- package/dist/ui/theme.js.map +1 -0
- package/package.json +5 -10
- package/dist/ui/components/LoginModal.d.ts +0 -10
- package/dist/ui/components/LoginModal.d.ts.map +0 -1
- package/dist/ui/components/LoginModal.js +0 -138
- package/dist/ui/components/LoginModal.js.map +0 -1
- package/dist/ui/components/SettingsView.d.ts +0 -11
- package/dist/ui/components/SettingsView.d.ts.map +0 -1
- package/dist/ui/components/SettingsView.js.map +0 -1
- package/dist/ui/components/T2VAssistantModal.d.ts +0 -31
- package/dist/ui/components/T2VAssistantModal.d.ts.map +0 -1
- package/dist/ui/components/T2VAssistantModal.js +0 -151
- package/dist/ui/components/T2VAssistantModal.js.map +0 -1
- package/dist/ui/components/T2VAssistantProvider.d.ts +0 -42
- package/dist/ui/components/T2VAssistantProvider.d.ts.map +0 -1
- package/dist/ui/components/T2VAssistantProvider.js +0 -66
- package/dist/ui/components/T2VAssistantProvider.js.map +0 -1
- package/dist/ui/components/T2VChatHeader.d.ts.map +0 -1
- package/dist/ui/components/T2VChatHeader.js +0 -112
- package/dist/ui/components/T2VChatHeader.js.map +0 -1
- package/dist/ui/components/T2VComposer.d.ts +0 -11
- package/dist/ui/components/T2VComposer.d.ts.map +0 -1
- package/dist/ui/components/T2VComposer.js +0 -124
- package/dist/ui/components/T2VComposer.js.map +0 -1
- package/dist/ui/components/T2VDictationAdapter.d.ts +0 -18
- package/dist/ui/components/T2VDictationAdapter.d.ts.map +0 -1
- package/dist/ui/components/T2VDictationAdapter.js +0 -126
- package/dist/ui/components/T2VDictationAdapter.js.map +0 -1
- package/dist/ui/components/T2VLoginGate.d.ts +0 -23
- package/dist/ui/components/T2VLoginGate.d.ts.map +0 -1
- package/dist/ui/components/T2VLoginGate.js +0 -11
- package/dist/ui/components/T2VLoginGate.js.map +0 -1
- package/dist/ui/components/T2VThread.d.ts +0 -25
- package/dist/ui/components/T2VThread.d.ts.map +0 -1
- package/dist/ui/components/T2VThread.js +0 -66
- package/dist/ui/components/T2VThread.js.map +0 -1
- package/dist/ui/components/T2VToolFallback.d.ts +0 -11
- package/dist/ui/components/T2VToolFallback.d.ts.map +0 -1
- package/dist/ui/components/T2VToolFallback.js +0 -209
- package/dist/ui/components/T2VToolFallback.js.map +0 -1
- package/dist/ui/runtime/convertMessage.d.ts +0 -17
- package/dist/ui/runtime/convertMessage.d.ts.map +0 -1
- package/dist/ui/runtime/convertMessage.js +0 -77
- package/dist/ui/runtime/convertMessage.js.map +0 -1
- package/dist/ui/runtime/useT2VRuntime.d.ts +0 -42
- package/dist/ui/runtime/useT2VRuntime.d.ts.map +0 -1
- package/dist/ui/runtime/useT2VRuntime.js +0 -62
- package/dist/ui/runtime/useT2VRuntime.js.map +0 -1
- package/dist/ui/themes/tailwind-preset.d.ts +0 -43
- package/dist/ui/themes/tailwind-preset.d.ts.map +0 -1
- package/dist/ui/themes/tailwind-preset.js +0 -43
- package/dist/ui/themes/tailwind-preset.js.map +0 -1
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
3
|
+
* SettingsPanel — full-panel settings page for user preferences.
|
|
4
4
|
*/
|
|
5
5
|
import { useEffect, useState } from 'react';
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
6
|
+
import { ArrowLeft } from 'lucide-react';
|
|
7
|
+
import { useTalk2View } from '../context';
|
|
8
8
|
import { useUserPreferences } from '../../react/useUserPreferences';
|
|
9
9
|
import { usePartnerConfig } from '../../react/usePartnerConfig';
|
|
10
10
|
const STT_LANGUAGES = [
|
|
@@ -29,11 +29,11 @@ const selectStyle = {
|
|
|
29
29
|
width: '100%',
|
|
30
30
|
padding: '8px 12px',
|
|
31
31
|
borderRadius: '6px',
|
|
32
|
-
border:
|
|
32
|
+
border: '1.5px solid var(--t2v-border)',
|
|
33
33
|
fontSize: '13px',
|
|
34
|
-
fontFamily:
|
|
35
|
-
color:
|
|
36
|
-
backgroundColor: '
|
|
34
|
+
fontFamily: 'var(--t2v-font)',
|
|
35
|
+
color: 'var(--t2v-foreground)',
|
|
36
|
+
backgroundColor: 'var(--t2v-bg)',
|
|
37
37
|
outline: 'none',
|
|
38
38
|
cursor: 'pointer',
|
|
39
39
|
appearance: 'none',
|
|
@@ -44,9 +44,9 @@ const selectStyle = {
|
|
|
44
44
|
};
|
|
45
45
|
const labelStyle = {
|
|
46
46
|
fontSize: '12px',
|
|
47
|
-
fontFamily:
|
|
47
|
+
fontFamily: 'var(--t2v-font)',
|
|
48
48
|
fontWeight: 600,
|
|
49
|
-
color:
|
|
49
|
+
color: 'var(--t2v-muted)',
|
|
50
50
|
textTransform: 'uppercase',
|
|
51
51
|
letterSpacing: '0.5px',
|
|
52
52
|
marginBottom: '6px',
|
|
@@ -55,8 +55,8 @@ const sectionStyle = {
|
|
|
55
55
|
padding: '0 16px',
|
|
56
56
|
marginBottom: '20px',
|
|
57
57
|
};
|
|
58
|
-
export function
|
|
59
|
-
const { t2v } =
|
|
58
|
+
export function SettingsPanel({ onBack, onModelChange, hideHeader }) {
|
|
59
|
+
const { t2v } = useTalk2View();
|
|
60
60
|
const { preferences, updatePreferences } = useUserPreferences();
|
|
61
61
|
const { config: partnerConfig } = usePartnerConfig();
|
|
62
62
|
const [models, setModels] = useState([]);
|
|
@@ -114,8 +114,8 @@ export function SettingsView({ onBack, onModelChange, hideHeader }) {
|
|
|
114
114
|
alignItems: 'center',
|
|
115
115
|
gap: '12px',
|
|
116
116
|
padding: '12px 16px',
|
|
117
|
-
backgroundColor:
|
|
118
|
-
color:
|
|
117
|
+
backgroundColor: 'var(--t2v-foreground)',
|
|
118
|
+
color: 'var(--t2v-bg)',
|
|
119
119
|
}, children: [_jsx("button", { onClick: onBack, style: {
|
|
120
120
|
display: 'flex',
|
|
121
121
|
alignItems: 'center',
|
|
@@ -125,13 +125,13 @@ export function SettingsView({ onBack, onModelChange, hideHeader }) {
|
|
|
125
125
|
borderRadius: '6px',
|
|
126
126
|
border: 'none',
|
|
127
127
|
backgroundColor: 'rgba(248, 250, 252, 0.1)',
|
|
128
|
-
color:
|
|
128
|
+
color: 'var(--t2v-bg)',
|
|
129
129
|
cursor: 'pointer',
|
|
130
130
|
padding: 0,
|
|
131
131
|
transition: 'background-color 0.15s ease',
|
|
132
|
-
}, onMouseEnter: (e) => { e.currentTarget.style.backgroundColor = 'rgba(248, 250, 252, 0.2)'; }, onMouseLeave: (e) => { e.currentTarget.style.backgroundColor = 'rgba(248, 250, 252, 0.1)'; }, "aria-label": "Back to chat", children: _jsx(
|
|
132
|
+
}, onMouseEnter: (e) => { e.currentTarget.style.backgroundColor = 'rgba(248, 250, 252, 0.2)'; }, onMouseLeave: (e) => { e.currentTarget.style.backgroundColor = 'rgba(248, 250, 252, 0.1)'; }, "aria-label": "Back to chat", children: _jsx(ArrowLeft, { size: 16 }) }), _jsx("span", { style: {
|
|
133
133
|
fontSize: '15px',
|
|
134
|
-
fontFamily:
|
|
134
|
+
fontFamily: 'var(--t2v-font)',
|
|
135
135
|
fontWeight: 600,
|
|
136
136
|
}, children: "Settings" })] })), _jsxs("div", { style: { flex: 1, overflowY: 'auto', paddingTop: '20px' }, children: [_jsxs("div", { style: sectionStyle, children: [_jsx("div", { style: labelStyle, children: "Language Model" }), modelsLoading ? (_jsxs("div", { style: {
|
|
137
137
|
display: 'flex',
|
|
@@ -139,13 +139,13 @@ export function SettingsView({ onBack, onModelChange, hideHeader }) {
|
|
|
139
139
|
gap: '8px',
|
|
140
140
|
padding: '8px 12px',
|
|
141
141
|
fontSize: '13px',
|
|
142
|
-
fontFamily:
|
|
143
|
-
color:
|
|
142
|
+
fontFamily: 'var(--t2v-font)',
|
|
143
|
+
color: 'var(--t2v-muted)',
|
|
144
144
|
}, children: [_jsx("span", { style: {
|
|
145
145
|
display: 'inline-block',
|
|
146
146
|
width: '14px',
|
|
147
147
|
height: '14px',
|
|
148
|
-
border:
|
|
148
|
+
border: '2px solid var(--t2v-accent)',
|
|
149
149
|
borderTopColor: 'transparent',
|
|
150
150
|
borderRadius: '50%',
|
|
151
151
|
animation: 't2v-spin 0.6s linear infinite',
|
|
@@ -158,20 +158,20 @@ export function SettingsView({ onBack, onModelChange, hideHeader }) {
|
|
|
158
158
|
gap: '8px',
|
|
159
159
|
padding: '8px 12px',
|
|
160
160
|
fontSize: '13px',
|
|
161
|
-
fontFamily:
|
|
162
|
-
color:
|
|
161
|
+
fontFamily: 'var(--t2v-font)',
|
|
162
|
+
color: 'var(--t2v-muted)',
|
|
163
163
|
}, children: [_jsx("span", { style: {
|
|
164
164
|
display: 'inline-block',
|
|
165
165
|
width: '14px',
|
|
166
166
|
height: '14px',
|
|
167
|
-
border:
|
|
167
|
+
border: '2px solid var(--t2v-accent)',
|
|
168
168
|
borderTopColor: 'transparent',
|
|
169
169
|
borderRadius: '50%',
|
|
170
170
|
animation: 't2v-spin 0.6s linear infinite',
|
|
171
171
|
} }), "Loading models..."] })) : (_jsxs("select", { value: currentSttModel, onChange: (e) => updatePreferences({ sttModel: e.target.value }), style: selectStyle, children: [sttModels.length === 0 && (_jsx("option", { value: "", children: "No models available" })), !currentSttModel && sttModels.length > 0 && (_jsx("option", { value: "", children: "Select a model" })), sttModels.map((m) => (_jsx("option", { value: m.id, children: m.id }, m.id)))] }))] }), _jsxs("div", { style: sectionStyle, children: [_jsx("div", { style: labelStyle, children: "Speech-to-Text Language" }), _jsx("select", { value: currentSttLanguage, onChange: (e) => updatePreferences({ sttLanguage: e.target.value }), style: selectStyle, children: STT_LANGUAGES.map((lang) => (_jsx("option", { value: lang.code, children: lang.label }, lang.code))) })] }), _jsxs("div", { style: sectionStyle, children: [_jsx("div", { style: labelStyle, children: "Display" }), _jsx("div", { style: {
|
|
172
172
|
display: 'flex',
|
|
173
173
|
borderRadius: '8px',
|
|
174
|
-
border:
|
|
174
|
+
border: '1.5px solid var(--t2v-border)',
|
|
175
175
|
overflow: 'hidden',
|
|
176
176
|
}, children: FONT_SIZES.map((fs) => {
|
|
177
177
|
const isActive = currentFontSize === fs.value;
|
|
@@ -179,14 +179,14 @@ export function SettingsView({ onBack, onModelChange, hideHeader }) {
|
|
|
179
179
|
flex: 1,
|
|
180
180
|
padding: '8px 0',
|
|
181
181
|
border: 'none',
|
|
182
|
-
backgroundColor: isActive ?
|
|
183
|
-
color: isActive ? '
|
|
182
|
+
backgroundColor: isActive ? 'var(--t2v-accent)' : 'transparent',
|
|
183
|
+
color: isActive ? 'var(--t2v-accent-foreground)' : 'var(--t2v-foreground)',
|
|
184
184
|
fontSize: '13px',
|
|
185
|
-
fontFamily:
|
|
185
|
+
fontFamily: 'var(--t2v-font)',
|
|
186
186
|
fontWeight: isActive ? 600 : 400,
|
|
187
187
|
cursor: 'pointer',
|
|
188
188
|
transition: 'all 0.15s ease',
|
|
189
189
|
}, children: fs.label }, fs.value));
|
|
190
190
|
}) })] })] })] }));
|
|
191
191
|
}
|
|
192
|
-
//# sourceMappingURL=
|
|
192
|
+
//# sourceMappingURL=SettingsPanel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SettingsPanel.js","sourceRoot":"","sources":["../../../src/ui/components/SettingsPanel.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Shimmer.d.ts","sourceRoot":"","sources":["../../../src/ui/components/Shimmer.tsx"],"names":[],"mappings":"AAEA,wBAAgB,OAAO,4CAatB"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
export function Shimmer() {
|
|
3
|
+
return (_jsx("div", { style: { display: 'flex', alignItems: 'center', gap: '4px', padding: '4px 0' }, children: [0, 1, 2].map((i) => (_jsx("span", { style: {
|
|
4
|
+
width: 6, height: 6, borderRadius: '50%',
|
|
5
|
+
background: 'var(--t2v-muted)',
|
|
6
|
+
opacity: 0.4,
|
|
7
|
+
animation: `t2v-typing 1.4s ${i * 0.2}s infinite ease-in-out`,
|
|
8
|
+
} }, i))) }));
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=Shimmer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Shimmer.js","sourceRoot":"","sources":["../../../src/ui/components/Shimmer.tsx"],"names":[],"mappings":";AAEA,MAAM,UAAU,OAAO;IACrB,OAAO,CACL,cAAK,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,YAChF,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CACpB,eAAc,KAAK,EAAE;gBACnB,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,YAAY,EAAE,KAAK;gBACxC,UAAU,EAAE,kBAAkB;gBAC9B,OAAO,EAAE,GAAG;gBACZ,SAAS,EAAE,mBAAmB,CAAC,GAAG,GAAG,wBAAwB;aAC9D,IALU,CAAC,CAKP,CACN,CAAC,GACE,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { Talk2ViewTheme, ClientTool, ClientToolSchema } from '../../types';
|
|
3
|
+
export interface Talk2ViewProps {
|
|
4
|
+
partnerKey: string;
|
|
5
|
+
baseUrl?: string;
|
|
6
|
+
model?: string;
|
|
7
|
+
systemPrompt?: string;
|
|
8
|
+
tools?: (ClientToolSchema | ClientTool)[];
|
|
9
|
+
theme?: Talk2ViewTheme;
|
|
10
|
+
/** Enable debug logging to the browser console. */
|
|
11
|
+
debug?: boolean;
|
|
12
|
+
children: React.ReactNode;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Root provider for Talk2View UI components.
|
|
16
|
+
*
|
|
17
|
+
* Wraps the internal T2VProvider (so hooks like usePartnerConfig, useUserPreferences work)
|
|
18
|
+
* and adds the new Talk2ViewContext + ChatContext for the rebuilt UI layer.
|
|
19
|
+
*/
|
|
20
|
+
export declare function Talk2View({ partnerKey, baseUrl, model, systemPrompt, tools, theme, debug, children }: Talk2ViewProps): import("react/jsx-runtime").JSX.Element;
|
|
21
|
+
//# sourceMappingURL=Talk2View.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Talk2View.d.ts","sourceRoot":"","sources":["../../../src/ui/components/Talk2View.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoD,MAAM,OAAO,CAAC;AAOzE,OAAO,KAAK,EAAE,cAAc,EAAkD,UAAU,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEhI,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,CAAC,gBAAgB,GAAG,UAAU,CAAC,EAAE,CAAC;IAC1C,KAAK,CAAC,EAAE,cAAc,CAAC;IACvB,mDAAmD;IACnD,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,cAAc,2CAQpH"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useState, useEffect, useMemo, useCallback } from 'react';
|
|
3
|
+
import { T2VProvider, useT2V } from '../../react/T2VProvider';
|
|
4
|
+
import { useUserPreferences } from '../../react/useUserPreferences';
|
|
5
|
+
import { usePartnerConfig } from '../../react/usePartnerConfig';
|
|
6
|
+
import { Talk2ViewContext, ChatContext } from '../context';
|
|
7
|
+
import { injectTheme, injectFonts } from '../theme';
|
|
8
|
+
import { injectComponentStyles } from '../styles';
|
|
9
|
+
/**
|
|
10
|
+
* Root provider for Talk2View UI components.
|
|
11
|
+
*
|
|
12
|
+
* Wraps the internal T2VProvider (so hooks like usePartnerConfig, useUserPreferences work)
|
|
13
|
+
* and adds the new Talk2ViewContext + ChatContext for the rebuilt UI layer.
|
|
14
|
+
*/
|
|
15
|
+
export function Talk2View({ partnerKey, baseUrl, model, systemPrompt, tools, theme, debug, children }) {
|
|
16
|
+
return (_jsx(T2VProvider, { partnerKey: partnerKey, baseUrl: baseUrl, model: model, debug: debug, children: _jsx(InnerProvider, { systemPrompt: systemPrompt, tools: tools, theme: theme, children: children }) }));
|
|
17
|
+
}
|
|
18
|
+
function InnerProvider({ systemPrompt, tools, theme, children, }) {
|
|
19
|
+
// Get the t2v instance from T2VProvider (single source of truth)
|
|
20
|
+
const { t2v, user, isAuthenticated } = useT2V();
|
|
21
|
+
const { preferences } = useUserPreferences();
|
|
22
|
+
const { config: partnerConfig } = usePartnerConfig();
|
|
23
|
+
// Resolve model: user preference > Talk2View prop > partner config default
|
|
24
|
+
const resolvedModel = preferences.model || t2v.config.model || partnerConfig?.default_llm_model || undefined;
|
|
25
|
+
// Inject theme + fonts + component styles
|
|
26
|
+
useEffect(() => {
|
|
27
|
+
injectTheme(theme ?? {});
|
|
28
|
+
injectFonts();
|
|
29
|
+
injectComponentStyles();
|
|
30
|
+
}, [theme]);
|
|
31
|
+
// Register tools
|
|
32
|
+
useEffect(() => {
|
|
33
|
+
if (!tools || tools.length === 0)
|
|
34
|
+
return;
|
|
35
|
+
const schemas = tools.map((tool) => {
|
|
36
|
+
const { execute: _execute, ...schema } = tool;
|
|
37
|
+
return schema;
|
|
38
|
+
});
|
|
39
|
+
t2v.tools.register(schemas).catch(() => { });
|
|
40
|
+
for (const tool of tools) {
|
|
41
|
+
if ('execute' in tool && tool.execute) {
|
|
42
|
+
t2v.tools.handle(tool.name, tool.execute);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}, [t2v, tools]);
|
|
46
|
+
// Chat state synced from Talk2View events
|
|
47
|
+
const [messages, setMessages] = useState(t2v.messages);
|
|
48
|
+
const [isLoading, setIsLoading] = useState(t2v.isLoading);
|
|
49
|
+
const [error, setError] = useState(t2v.error);
|
|
50
|
+
const [pendingApproval, setPendingApproval] = useState(t2v.pendingApproval);
|
|
51
|
+
const [agentStatus, setAgentStatus] = useState(null);
|
|
52
|
+
const [threadId, setThreadId] = useState(t2v.threadId);
|
|
53
|
+
const [alwaysAllowedTools, setAlwaysAllowedTools] = useState(t2v.alwaysAllowedTools);
|
|
54
|
+
useEffect(() => {
|
|
55
|
+
const unsubs = [
|
|
56
|
+
t2v.on('messagesChange', setMessages),
|
|
57
|
+
t2v.on('loadingChange', setIsLoading),
|
|
58
|
+
t2v.on('errorChange', setError),
|
|
59
|
+
t2v.on('approvalChange', setPendingApproval),
|
|
60
|
+
t2v.on('statusChange', (s) => setAgentStatus(s ? { status: s.type, message: s.message } : null)),
|
|
61
|
+
t2v.on('threadIdChange', setThreadId),
|
|
62
|
+
t2v.on('alwaysAllowedChange', setAlwaysAllowedTools),
|
|
63
|
+
];
|
|
64
|
+
return () => unsubs.forEach((u) => u());
|
|
65
|
+
}, [t2v]);
|
|
66
|
+
const sendMessage = useCallback((content) => t2v.sendMessage(content, { systemPrompt, model: resolvedModel }), [t2v, systemPrompt, resolvedModel]);
|
|
67
|
+
const approveToolCall = useCallback((d) => t2v.approveToolCall(d), [t2v]);
|
|
68
|
+
const retryLastMessage = useCallback(() => t2v.retryLastMessage(), [t2v]);
|
|
69
|
+
const clearMessages = useCallback(() => t2v.clearMessages(), [t2v]);
|
|
70
|
+
const clearError = useCallback(() => t2v.clearError(), [t2v]);
|
|
71
|
+
const t2vValue = useMemo(() => ({ t2v, user, isAuthenticated }), [t2v, user, isAuthenticated]);
|
|
72
|
+
const chatValue = useMemo(() => ({
|
|
73
|
+
messages, isLoading, error, pendingApproval, agentStatus, threadId, alwaysAllowedTools,
|
|
74
|
+
sendMessage, approveToolCall, retryLastMessage, clearMessages, clearError,
|
|
75
|
+
}), [messages, isLoading, error, pendingApproval, agentStatus, threadId, alwaysAllowedTools,
|
|
76
|
+
sendMessage, approveToolCall, retryLastMessage, clearMessages, clearError]);
|
|
77
|
+
return (_jsx(Talk2ViewContext.Provider, { value: t2vValue, children: _jsx(ChatContext.Provider, { value: chatValue, children: _jsx("div", { "data-talk2view": "", style: { fontFamily: 'var(--t2v-font)', color: 'var(--t2v-foreground)' }, children: children }) }) }));
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=Talk2View.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Talk2View.js","sourceRoot":"","sources":["../../../src/ui/components/Talk2View.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export interface ThinkingBlockProps {
|
|
2
|
+
content: string;
|
|
3
|
+
isStreaming?: boolean;
|
|
4
|
+
startTime?: number;
|
|
5
|
+
}
|
|
6
|
+
export declare function ThinkingBlock({ content, isStreaming, startTime }: ThinkingBlockProps): import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
//# sourceMappingURL=ThinkingBlock.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ThinkingBlock.d.ts","sourceRoot":"","sources":["../../../src/ui/components/ThinkingBlock.tsx"],"names":[],"mappings":"AAKA,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,aAAa,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,EAAE,kBAAkB,2CA2EpF"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useState, useEffect, useRef } from 'react';
|
|
3
|
+
import { Brain, ChevronDown } from 'lucide-react';
|
|
4
|
+
import { Shimmer } from './Shimmer';
|
|
5
|
+
import { MarkdownRenderer } from './MarkdownRenderer';
|
|
6
|
+
export function ThinkingBlock({ content, isStreaming, startTime }) {
|
|
7
|
+
const [expanded, setExpanded] = useState(true);
|
|
8
|
+
const [duration, setDuration] = useState(null);
|
|
9
|
+
const [contentHeight, setContentHeight] = useState(0);
|
|
10
|
+
const intervalRef = useRef(null);
|
|
11
|
+
const contentRef = useRef(null);
|
|
12
|
+
useEffect(() => {
|
|
13
|
+
if (isStreaming && startTime) {
|
|
14
|
+
intervalRef.current = setInterval(() => {
|
|
15
|
+
setDuration(Math.round((Date.now() - startTime) / 1000));
|
|
16
|
+
}, 1000);
|
|
17
|
+
return () => { if (intervalRef.current)
|
|
18
|
+
clearInterval(intervalRef.current); };
|
|
19
|
+
}
|
|
20
|
+
else if (!isStreaming && startTime) {
|
|
21
|
+
if (intervalRef.current)
|
|
22
|
+
clearInterval(intervalRef.current);
|
|
23
|
+
setDuration(Math.round((Date.now() - startTime) / 1000));
|
|
24
|
+
}
|
|
25
|
+
}, [isStreaming, startTime]);
|
|
26
|
+
useEffect(() => {
|
|
27
|
+
if (!isStreaming && content) {
|
|
28
|
+
const timer = setTimeout(() => setExpanded(false), 500);
|
|
29
|
+
return () => clearTimeout(timer);
|
|
30
|
+
}
|
|
31
|
+
}, [isStreaming, content]);
|
|
32
|
+
// ResizeObserver to track inner content height for smooth max-height transition
|
|
33
|
+
useEffect(() => {
|
|
34
|
+
const el = contentRef.current;
|
|
35
|
+
if (!el)
|
|
36
|
+
return;
|
|
37
|
+
const ro = new ResizeObserver((entries) => {
|
|
38
|
+
for (const entry of entries) {
|
|
39
|
+
setContentHeight(entry.contentRect.height);
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
ro.observe(el);
|
|
43
|
+
return () => ro.disconnect();
|
|
44
|
+
}, []);
|
|
45
|
+
const durationText = duration !== null ? `${duration}s` : '';
|
|
46
|
+
return (_jsxs("div", { style: {
|
|
47
|
+
border: '1px solid var(--t2v-border)', borderRadius: 'calc(var(--t2v-radius) * 0.5px)',
|
|
48
|
+
overflow: 'hidden', margin: '6px 0', fontFamily: 'var(--t2v-font)',
|
|
49
|
+
}, children: [_jsxs("button", { onClick: () => setExpanded(!expanded), className: "t2v-btn-ghost", style: {
|
|
50
|
+
width: '100%', display: 'flex', alignItems: 'center', gap: '8px',
|
|
51
|
+
padding: '8px 12px', border: 'none', background: 'var(--t2v-surface)',
|
|
52
|
+
cursor: 'pointer', fontFamily: 'var(--t2v-font)', fontSize: '12px',
|
|
53
|
+
color: 'var(--t2v-muted)', fontWeight: 500,
|
|
54
|
+
}, children: [_jsx(Brain, { size: 14 }), _jsx("span", { style: { flex: 1, textAlign: 'left' }, children: isStreaming ? 'Thinking...' : `Thought for ${durationText}` }), _jsx("span", { style: { display: 'inline-flex', transform: expanded ? 'rotate(180deg)' : 'rotate(0deg)', transition: 'transform 0.2s' }, children: _jsx(ChevronDown, { size: 12 }) })] }), _jsx("div", { style: {
|
|
55
|
+
maxHeight: expanded ? `${contentHeight}px` : '0px',
|
|
56
|
+
overflow: 'hidden',
|
|
57
|
+
transition: 'max-height 0.2s ease-out',
|
|
58
|
+
}, children: _jsx("div", { ref: contentRef, style: {
|
|
59
|
+
padding: '8px 12px', fontSize: '13px', lineHeight: 1.5,
|
|
60
|
+
color: 'var(--t2v-muted)', borderTop: '1px solid var(--t2v-border)',
|
|
61
|
+
maxHeight: '200px', overflowY: 'auto',
|
|
62
|
+
}, children: isStreaming && !content ? _jsx(Shimmer, {}) : _jsx(MarkdownRenderer, { content: content }) }) })] }));
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=ThinkingBlock.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ThinkingBlock.js","sourceRoot":"","sources":["../../../src/ui/components/ThinkingBlock.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export interface ToolDisplayProps {
|
|
2
|
+
name: string;
|
|
3
|
+
status: 'used' | 'denied' | 'running';
|
|
4
|
+
args?: Record<string, unknown>;
|
|
5
|
+
result?: string;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* ToolDisplay — compact single-line tool step, expandable to show args/result.
|
|
9
|
+
*/
|
|
10
|
+
export declare function ToolDisplay({ name, status, args, result }: ToolDisplayProps): import("react/jsx-runtime").JSX.Element;
|
|
11
|
+
export interface ToolStepGroupProps {
|
|
12
|
+
steps: Array<{
|
|
13
|
+
name: string;
|
|
14
|
+
status: 'used' | 'denied' | 'running';
|
|
15
|
+
args?: Record<string, unknown>;
|
|
16
|
+
result?: string;
|
|
17
|
+
}>;
|
|
18
|
+
isStreaming?: boolean;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* ToolStepGroup — wraps multiple tool steps into a collapsible group.
|
|
22
|
+
*
|
|
23
|
+
* While streaming or any tool is running → expanded (shows individual items).
|
|
24
|
+
* After all tools complete → auto-collapses to summary line.
|
|
25
|
+
* Single completed step → renders as standalone ToolDisplay.
|
|
26
|
+
*/
|
|
27
|
+
export declare function ToolStepGroup({ steps, isStreaming }: ToolStepGroupProps): import("react/jsx-runtime").JSX.Element | null;
|
|
28
|
+
//# sourceMappingURL=ToolDisplay.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ToolDisplay.d.ts","sourceRoot":"","sources":["../../../src/ui/components/ToolDisplay.tsx"],"names":[],"mappings":"AAEA,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;IACtC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,gBAAgB,2CAkD3E;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,KAAK,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;QACtC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC,CAAC;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,kBAAkB,kDAgFvE"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import React, { useState } from 'react';
|
|
3
|
+
/**
|
|
4
|
+
* ToolDisplay — compact single-line tool step, expandable to show args/result.
|
|
5
|
+
*/
|
|
6
|
+
export function ToolDisplay({ name, status, args, result }) {
|
|
7
|
+
const [expanded, setExpanded] = useState(false);
|
|
8
|
+
const hasDetails = (args && Object.keys(args).length > 0) || result;
|
|
9
|
+
return (_jsxs("div", { style: { fontSize: 12 }, children: [_jsxs("button", { onClick: () => hasDetails && setExpanded(!expanded), style: {
|
|
10
|
+
display: 'flex',
|
|
11
|
+
alignItems: 'center',
|
|
12
|
+
gap: 6,
|
|
13
|
+
width: '100%',
|
|
14
|
+
background: 'none',
|
|
15
|
+
border: 'none',
|
|
16
|
+
padding: '3px 0',
|
|
17
|
+
cursor: hasDetails ? 'pointer' : 'default',
|
|
18
|
+
fontFamily: 'var(--t2v-font-mono, monospace)',
|
|
19
|
+
fontSize: 12,
|
|
20
|
+
color: 'var(--t2v-muted, #9F9AA4)',
|
|
21
|
+
textAlign: 'left',
|
|
22
|
+
}, "aria-expanded": hasDetails ? expanded : undefined, children: [_jsx(StatusIcon, { status: status }), _jsx("span", { style: { flex: 1 }, children: name }), hasDetails && _jsx(ChevronIcon, { rotated: expanded })] }), expanded && hasDetails && (_jsxs("div", { style: {
|
|
23
|
+
marginLeft: 20,
|
|
24
|
+
paddingLeft: 8,
|
|
25
|
+
borderLeft: '2px solid var(--t2v-border, #E5E7EB)',
|
|
26
|
+
fontSize: 11,
|
|
27
|
+
fontFamily: 'var(--t2v-font-mono, monospace)',
|
|
28
|
+
color: 'var(--t2v-muted, #9F9AA4)',
|
|
29
|
+
}, children: [args && Object.keys(args).length > 0 && (_jsx(DetailSection, { label: "PARAMS", content: formatJson(args) })), result && (_jsx(DetailSection, { label: "RESULT", content: formatResult(result) }))] }))] }));
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* ToolStepGroup — wraps multiple tool steps into a collapsible group.
|
|
33
|
+
*
|
|
34
|
+
* While streaming or any tool is running → expanded (shows individual items).
|
|
35
|
+
* After all tools complete → auto-collapses to summary line.
|
|
36
|
+
* Single completed step → renders as standalone ToolDisplay.
|
|
37
|
+
*/
|
|
38
|
+
export function ToolStepGroup({ steps, isStreaming }) {
|
|
39
|
+
const hasRunning = steps.some((s) => s.status === 'running');
|
|
40
|
+
const autoExpanded = hasRunning || !!isStreaming;
|
|
41
|
+
const [userToggle, setUserToggle] = React.useState(null);
|
|
42
|
+
const prevAutoRef = React.useRef(autoExpanded);
|
|
43
|
+
React.useEffect(() => {
|
|
44
|
+
if (prevAutoRef.current && !autoExpanded) {
|
|
45
|
+
setUserToggle(null);
|
|
46
|
+
}
|
|
47
|
+
prevAutoRef.current = autoExpanded;
|
|
48
|
+
}, [autoExpanded]);
|
|
49
|
+
if (steps.length === 0)
|
|
50
|
+
return null;
|
|
51
|
+
if (steps.length === 1 && !hasRunning) {
|
|
52
|
+
const s = steps[0];
|
|
53
|
+
return (_jsx("div", { style: { padding: '2px 0' }, children: _jsx(ToolDisplay, { name: s.name, status: s.status, args: s.args, result: s.result }) }));
|
|
54
|
+
}
|
|
55
|
+
const expanded = userToggle !== null ? userToggle : autoExpanded;
|
|
56
|
+
const completedCount = steps.filter((s) => s.status === 'used').length;
|
|
57
|
+
const deniedCount = steps.filter((s) => s.status === 'denied').length;
|
|
58
|
+
const runningStep = steps.find((s) => s.status === 'running');
|
|
59
|
+
let summaryText;
|
|
60
|
+
if (runningStep) {
|
|
61
|
+
summaryText = `Running ${runningStep.name}...`;
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
const parts = [];
|
|
65
|
+
if (completedCount > 0)
|
|
66
|
+
parts.push(`${completedCount} completed`);
|
|
67
|
+
if (deniedCount > 0)
|
|
68
|
+
parts.push(`${deniedCount} denied`);
|
|
69
|
+
summaryText = `${steps.length} tool calls — ${parts.join(', ')}`;
|
|
70
|
+
}
|
|
71
|
+
return (_jsxs("div", { style: { padding: '2px 0' }, children: [_jsxs("button", { onClick: () => setUserToggle(expanded ? false : true), style: {
|
|
72
|
+
display: 'flex',
|
|
73
|
+
alignItems: 'center',
|
|
74
|
+
gap: 6,
|
|
75
|
+
width: '100%',
|
|
76
|
+
background: 'none',
|
|
77
|
+
border: 'none',
|
|
78
|
+
padding: '4px 0',
|
|
79
|
+
cursor: 'pointer',
|
|
80
|
+
fontSize: 12,
|
|
81
|
+
fontFamily: 'var(--t2v-font-mono, monospace)',
|
|
82
|
+
color: 'var(--t2v-muted, #9F9AA4)',
|
|
83
|
+
textAlign: 'left',
|
|
84
|
+
}, "aria-expanded": expanded, children: [_jsx(StatusIcon, { status: runningStep ? 'running' : 'used' }), _jsx("span", { style: { flex: 1 }, children: summaryText }), _jsx(ChevronIcon, { rotated: expanded })] }), expanded && (_jsx("div", { style: {
|
|
85
|
+
marginLeft: 6,
|
|
86
|
+
paddingLeft: 8,
|
|
87
|
+
borderLeft: '2px solid var(--t2v-border, #E5E7EB)',
|
|
88
|
+
}, children: steps.map((step, i) => (_jsx(ToolDisplay, { name: step.name, status: step.status, args: step.args, result: step.result }, i))) }))] }));
|
|
89
|
+
}
|
|
90
|
+
// ── Shared sub-components ──
|
|
91
|
+
function StatusIcon({ status }) {
|
|
92
|
+
const size = 14;
|
|
93
|
+
if (status === 'running') {
|
|
94
|
+
return (_jsx("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: "var(--t2v-accent, #40D4B6)", strokeWidth: 2.5, strokeLinecap: "round", style: { animation: 't2v-spin 1s linear infinite', flexShrink: 0 }, children: _jsx("path", { d: "M21 12a9 9 0 1 1-6.219-8.56" }) }));
|
|
95
|
+
}
|
|
96
|
+
if (status === 'denied') {
|
|
97
|
+
return (_jsxs("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: "var(--t2v-error, #DC2626)", strokeWidth: 2.5, strokeLinecap: "round", strokeLinejoin: "round", style: { flexShrink: 0 }, children: [_jsx("line", { x1: "18", y1: "6", x2: "6", y2: "18" }), _jsx("line", { x1: "6", y1: "6", x2: "18", y2: "18" })] }));
|
|
98
|
+
}
|
|
99
|
+
return (_jsx("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: "var(--t2v-accent, #40D4B6)", strokeWidth: 2.5, strokeLinecap: "round", strokeLinejoin: "round", style: { flexShrink: 0 }, children: _jsx("polyline", { points: "20 6 9 17 4 12" }) }));
|
|
100
|
+
}
|
|
101
|
+
function ChevronIcon({ rotated }) {
|
|
102
|
+
return (_jsx("svg", { width: 12, height: 12, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 2, strokeLinecap: "round", strokeLinejoin: "round", style: { transition: 'transform 150ms ease', transform: rotated ? 'rotate(180deg)' : 'rotate(0deg)' }, children: _jsx("polyline", { points: "6 9 12 15 18 9" }) }));
|
|
103
|
+
}
|
|
104
|
+
function DetailSection({ label, content }) {
|
|
105
|
+
return (_jsxs("div", { style: { marginBottom: 4 }, children: [_jsx("div", { style: { fontWeight: 600, marginBottom: 2 }, children: label }), _jsx("pre", { style: { margin: 0, whiteSpace: 'pre-wrap', wordBreak: 'break-word', maxHeight: 150, overflow: 'auto' }, children: content })] }));
|
|
106
|
+
}
|
|
107
|
+
function formatJson(obj) {
|
|
108
|
+
try {
|
|
109
|
+
return JSON.stringify(obj, null, 2);
|
|
110
|
+
}
|
|
111
|
+
catch {
|
|
112
|
+
return String(obj);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
function formatResult(result) {
|
|
116
|
+
try {
|
|
117
|
+
return JSON.stringify(JSON.parse(result), null, 2);
|
|
118
|
+
}
|
|
119
|
+
catch {
|
|
120
|
+
return result;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=ToolDisplay.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ToolDisplay.js","sourceRoot":"","sources":["../../../src/ui/components/ToolDisplay.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WelcomeScreen.d.ts","sourceRoot":"","sources":["../../../src/ui/components/WelcomeScreen.tsx"],"names":[],"mappings":"AAIA,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,wBAAgB,aAAa,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,kBAAkB,2CA2BzE"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useChat } from '../context';
|
|
3
|
+
import { LOGOS } from '../theme';
|
|
4
|
+
export function WelcomeScreen({ heading, suggestions }) {
|
|
5
|
+
const { sendMessage } = useChat();
|
|
6
|
+
return (_jsxs("div", { style: {
|
|
7
|
+
flex: 1, display: 'flex', flexDirection: 'column',
|
|
8
|
+
alignItems: 'center', justifyContent: 'center',
|
|
9
|
+
padding: '24px 20px', gap: '20px', textAlign: 'center',
|
|
10
|
+
}, children: [_jsx("img", { src: LOGOS.icon, alt: "", style: { width: 40, height: 40, opacity: 0.7 } }), _jsx("h2", { style: { fontSize: '16px', fontWeight: 600, color: 'var(--t2v-foreground)', margin: 0, fontFamily: 'var(--t2v-font)' }, children: heading ?? 'How can I help you?' }), suggestions && suggestions.length > 0 && (_jsx("div", { style: { display: 'flex', flexDirection: 'column', gap: '8px', width: '100%', maxWidth: '280px' }, children: suggestions.map((s, i) => (_jsx("button", { onClick: () => { sendMessage(s).catch(() => { }); }, className: "t2v-btn-ghost", style: {
|
|
11
|
+
padding: '10px 14px', borderRadius: 'calc(var(--t2v-radius) * 0.75px)',
|
|
12
|
+
border: '1px solid var(--t2v-border)', background: 'var(--t2v-bg)',
|
|
13
|
+
cursor: 'pointer', fontFamily: 'var(--t2v-font)', fontSize: '13px',
|
|
14
|
+
color: 'var(--t2v-foreground)', textAlign: 'left', lineHeight: 1.4,
|
|
15
|
+
transition: 'border-color 0.15s',
|
|
16
|
+
}, children: s }, i))) }))] }));
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=WelcomeScreen.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WelcomeScreen.js","sourceRoot":"","sources":["../../../src/ui/components/WelcomeScreen.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAOjC,MAAM,UAAU,aAAa,CAAC,EAAE,OAAO,EAAE,WAAW,EAAsB;IACxE,MAAM,EAAE,WAAW,EAAE,GAAG,OAAO,EAAE,CAAC;IAClC,OAAO,CACL,eAAK,KAAK,EAAE;YACV,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ;YACjD,UAAU,EAAE,QAAQ,EAAE,cAAc,EAAE,QAAQ;YAC9C,OAAO,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ;SACvD,aACC,cAAK,GAAG,EAAE,KAAK,CAAC,IAAI,EAAE,GAAG,EAAC,EAAE,EAAC,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,GAAI,EAC/E,aAAI,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,uBAAuB,EAAE,MAAM,EAAE,CAAC,EAAE,UAAU,EAAE,iBAAiB,EAAE,YACvH,OAAO,IAAI,qBAAqB,GAC9B,EACJ,WAAW,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,IAAI,CACxC,cAAK,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,YACnG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CACzB,iBAAgB,OAAO,EAAE,GAAG,EAAE,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,EAAC,eAAe,EAAC,KAAK,EAAE;wBACnG,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,kCAAkC;wBACtE,MAAM,EAAE,6BAA6B,EAAE,UAAU,EAAE,eAAe;wBAClE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM;wBAClE,KAAK,EAAE,uBAAuB,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG;wBAClE,UAAU,EAAE,oBAAoB;qBACjC,YAAG,CAAC,IANQ,CAAC,CAMC,CAChB,CAAC,GACE,CACP,IACG,CACP,CAAC;AACJ,CAAC"}
|