@assistant-ui/react 0.5.20 → 0.5.22
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/{ModelConfigTypes-ComYH1b6.d.mts → AssistantTypes-BNB-knVq.d.mts} +64 -60
- package/dist/{ModelConfigTypes-ComYH1b6.d.ts → AssistantTypes-BNB-knVq.d.ts} +64 -60
- package/dist/chunk-BJPOCE4O.mjs +11 -0
- package/dist/chunk-BJPOCE4O.mjs.map +1 -0
- package/dist/chunk-DCHYNTHI.js +11 -0
- package/dist/chunk-DCHYNTHI.js.map +1 -0
- package/dist/chunk-NSPHKRLF.js +819 -0
- package/dist/chunk-NSPHKRLF.js.map +1 -0
- package/dist/chunk-ZWRFAYHH.mjs +819 -0
- package/dist/chunk-ZWRFAYHH.mjs.map +1 -0
- package/dist/edge.d.mts +90 -5
- package/dist/edge.d.ts +90 -5
- package/dist/edge.mjs +56 -44
- package/dist/edge.mjs.map +1 -1
- package/dist/index.d.mts +7 -159
- package/dist/index.d.ts +7 -159
- package/dist/index.js +724 -1596
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +12 -810
- package/dist/index.mjs.map +1 -1
- package/dist/tailwindcss/index.js +24 -52
- package/dist/tailwindcss/index.js.map +1 -1
- package/dist/tailwindcss/index.mjs +3 -0
- package/dist/tailwindcss/index.mjs.map +1 -1
- package/package.json +1 -12
- package/dist/chunk-BV6Y7C43.mjs +0 -61
- package/dist/chunk-BV6Y7C43.mjs.map +0 -1
- package/dist/internal.d.mts +0 -128
- package/dist/internal.d.ts +0 -128
- package/dist/internal.js +0 -619
- package/dist/internal.js.map +0 -1
- package/dist/internal.mjs +0 -531
- package/dist/internal.mjs.map +0 -1
- package/internal/README.md +0 -1
- package/internal/package.json +0 -5
package/dist/internal.js
DELETED
@@ -1,619 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
var __create = Object.create;
|
3
|
-
var __defProp = Object.defineProperty;
|
4
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
5
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
6
|
-
var __getProtoOf = Object.getPrototypeOf;
|
7
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
8
|
-
var __export = (target, all) => {
|
9
|
-
for (var name in all)
|
10
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
11
|
-
};
|
12
|
-
var __copyProps = (to, from, except, desc) => {
|
13
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
14
|
-
for (let key of __getOwnPropNames(from))
|
15
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
16
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
17
|
-
}
|
18
|
-
return to;
|
19
|
-
};
|
20
|
-
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
21
|
-
// If the importer is in node compatibility mode or this is not an ESM
|
22
|
-
// file that has been converted to a CommonJS file using a Babel-
|
23
|
-
// compatible transform (i.e. "__esModule" has not been set), then set
|
24
|
-
// "default" to the CommonJS "module.exports" for node compatibility.
|
25
|
-
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
26
|
-
mod
|
27
|
-
));
|
28
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
29
|
-
|
30
|
-
// src/internal.ts
|
31
|
-
var internal_exports = {};
|
32
|
-
__export(internal_exports, {
|
33
|
-
BaseAssistantRuntime: () => BaseAssistantRuntime,
|
34
|
-
MessageRepository: () => MessageRepository,
|
35
|
-
ProxyConfigProvider: () => ProxyConfigProvider,
|
36
|
-
TooltipIconButton: () => TooltipIconButton,
|
37
|
-
generateId: () => generateId,
|
38
|
-
useSmooth: () => useSmooth,
|
39
|
-
useSmoothStatus: () => useSmoothStatus,
|
40
|
-
withSmoothContextProvider: () => withSmoothContextProvider
|
41
|
-
});
|
42
|
-
module.exports = __toCommonJS(internal_exports);
|
43
|
-
|
44
|
-
// src/types/ModelConfigTypes.ts
|
45
|
-
var import_zod = require("zod");
|
46
|
-
var LanguageModelV1CallSettingsSchema = import_zod.z.object({
|
47
|
-
maxTokens: import_zod.z.number().int().positive().optional(),
|
48
|
-
temperature: import_zod.z.number().optional(),
|
49
|
-
topP: import_zod.z.number().optional(),
|
50
|
-
presencePenalty: import_zod.z.number().optional(),
|
51
|
-
frequencyPenalty: import_zod.z.number().optional(),
|
52
|
-
seed: import_zod.z.number().int().optional(),
|
53
|
-
headers: import_zod.z.record(import_zod.z.string().optional()).optional()
|
54
|
-
});
|
55
|
-
var LanguageModelConfigSchema = import_zod.z.object({
|
56
|
-
apiKey: import_zod.z.string().optional(),
|
57
|
-
baseUrl: import_zod.z.string().optional(),
|
58
|
-
modelName: import_zod.z.string().optional()
|
59
|
-
});
|
60
|
-
var mergeModelConfigs = (configSet) => {
|
61
|
-
const configs = Array.from(configSet).map((c) => c.getModelConfig()).sort((a, b) => (b.priority ?? 0) - (a.priority ?? 0));
|
62
|
-
return configs.reduce((acc, config) => {
|
63
|
-
if (config.system) {
|
64
|
-
if (acc.system) {
|
65
|
-
acc.system += `
|
66
|
-
|
67
|
-
${config.system}`;
|
68
|
-
} else {
|
69
|
-
acc.system = config.system;
|
70
|
-
}
|
71
|
-
}
|
72
|
-
if (config.tools) {
|
73
|
-
for (const [name, tool] of Object.entries(config.tools)) {
|
74
|
-
if (acc.tools?.[name]) {
|
75
|
-
throw new Error(
|
76
|
-
`You tried to define a tool with the name ${name}, but it already exists.`
|
77
|
-
);
|
78
|
-
}
|
79
|
-
if (!acc.tools) acc.tools = {};
|
80
|
-
acc.tools[name] = tool;
|
81
|
-
}
|
82
|
-
}
|
83
|
-
if (config.config) {
|
84
|
-
acc.config = {
|
85
|
-
...acc.config,
|
86
|
-
...config.config
|
87
|
-
};
|
88
|
-
}
|
89
|
-
if (config.callSettings) {
|
90
|
-
acc.callSettings = {
|
91
|
-
...acc.callSettings,
|
92
|
-
...config.callSettings
|
93
|
-
};
|
94
|
-
}
|
95
|
-
return acc;
|
96
|
-
}, {});
|
97
|
-
};
|
98
|
-
|
99
|
-
// src/utils/ProxyConfigProvider.ts
|
100
|
-
var ProxyConfigProvider = class {
|
101
|
-
_providers = /* @__PURE__ */ new Set();
|
102
|
-
getModelConfig() {
|
103
|
-
return mergeModelConfigs(this._providers);
|
104
|
-
}
|
105
|
-
registerModelConfigProvider(provider) {
|
106
|
-
this._providers.add(provider);
|
107
|
-
return () => {
|
108
|
-
this._providers.delete(provider);
|
109
|
-
};
|
110
|
-
}
|
111
|
-
};
|
112
|
-
|
113
|
-
// src/utils/idUtils.tsx
|
114
|
-
var import_non_secure = require("nanoid/non-secure");
|
115
|
-
var generateId = (0, import_non_secure.customAlphabet)(
|
116
|
-
"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",
|
117
|
-
7
|
118
|
-
);
|
119
|
-
var optimisticPrefix = "__optimistic__";
|
120
|
-
var generateOptimisticId = () => `${optimisticPrefix}${generateId()}`;
|
121
|
-
|
122
|
-
// src/runtimes/edge/converters/fromCoreMessage.ts
|
123
|
-
var fromCoreMessage = (message, {
|
124
|
-
id = generateId(),
|
125
|
-
status = { type: "complete", reason: "unknown" }
|
126
|
-
} = {}) => {
|
127
|
-
const commonProps = {
|
128
|
-
id,
|
129
|
-
createdAt: /* @__PURE__ */ new Date()
|
130
|
-
};
|
131
|
-
const role = message.role;
|
132
|
-
switch (role) {
|
133
|
-
case "assistant":
|
134
|
-
return {
|
135
|
-
...commonProps,
|
136
|
-
role,
|
137
|
-
content: message.content.map((part) => {
|
138
|
-
if (part.type === "tool-call") {
|
139
|
-
return {
|
140
|
-
...part,
|
141
|
-
argsText: JSON.stringify(part.args)
|
142
|
-
};
|
143
|
-
}
|
144
|
-
return part;
|
145
|
-
}),
|
146
|
-
status
|
147
|
-
};
|
148
|
-
case "user":
|
149
|
-
return {
|
150
|
-
...commonProps,
|
151
|
-
role,
|
152
|
-
content: message.content
|
153
|
-
};
|
154
|
-
case "system":
|
155
|
-
return {
|
156
|
-
...commonProps,
|
157
|
-
role,
|
158
|
-
content: message.content
|
159
|
-
};
|
160
|
-
default: {
|
161
|
-
const unsupportedRole = role;
|
162
|
-
throw new Error(`Unknown message role: ${unsupportedRole}`);
|
163
|
-
}
|
164
|
-
}
|
165
|
-
};
|
166
|
-
|
167
|
-
// src/runtimes/utils/MessageRepository.tsx
|
168
|
-
var findHead = (message) => {
|
169
|
-
if (message.next) return findHead(message.next);
|
170
|
-
return message;
|
171
|
-
};
|
172
|
-
var MessageRepository = class {
|
173
|
-
messages = /* @__PURE__ */ new Map();
|
174
|
-
// message_id -> item
|
175
|
-
head = null;
|
176
|
-
root = {
|
177
|
-
children: []
|
178
|
-
};
|
179
|
-
performOp(newParent, child, operation) {
|
180
|
-
const parentOrRoot = child.prev ?? this.root;
|
181
|
-
const newParentOrRoot = newParent ?? this.root;
|
182
|
-
if (operation === "relink" && parentOrRoot === newParentOrRoot) return;
|
183
|
-
if (operation !== "link") {
|
184
|
-
parentOrRoot.children = parentOrRoot.children.filter(
|
185
|
-
(m) => m !== child.current.id
|
186
|
-
);
|
187
|
-
if (child.prev?.next === child) {
|
188
|
-
const fallbackId = child.prev.children.at(-1);
|
189
|
-
const fallback = fallbackId ? this.messages.get(fallbackId) : null;
|
190
|
-
if (fallback === void 0) {
|
191
|
-
throw new Error(
|
192
|
-
"MessageRepository(performOp/cut): Fallback sibling message not found. This is likely an internal bug in assistant-ui."
|
193
|
-
);
|
194
|
-
}
|
195
|
-
child.prev.next = fallback;
|
196
|
-
}
|
197
|
-
}
|
198
|
-
if (operation !== "cut") {
|
199
|
-
newParentOrRoot.children = [
|
200
|
-
...newParentOrRoot.children,
|
201
|
-
child.current.id
|
202
|
-
];
|
203
|
-
if (newParent && (findHead(child) === this.head || newParent.next === null)) {
|
204
|
-
newParent.next = child;
|
205
|
-
}
|
206
|
-
child.prev = newParent;
|
207
|
-
}
|
208
|
-
}
|
209
|
-
getMessages() {
|
210
|
-
const messages = new Array(this.head?.level ?? 0);
|
211
|
-
for (let current = this.head; current; current = current.prev) {
|
212
|
-
messages[current.level] = current.current;
|
213
|
-
}
|
214
|
-
return messages;
|
215
|
-
}
|
216
|
-
addOrUpdateMessage(parentId, message) {
|
217
|
-
const existingItem = this.messages.get(message.id);
|
218
|
-
const prev = parentId ? this.messages.get(parentId) : null;
|
219
|
-
if (prev === void 0)
|
220
|
-
throw new Error(
|
221
|
-
"MessageRepository(addOrUpdateMessage): Parent message not found. This is likely an internal bug in assistant-ui."
|
222
|
-
);
|
223
|
-
if (existingItem) {
|
224
|
-
existingItem.current = message;
|
225
|
-
this.performOp(prev, existingItem, "relink");
|
226
|
-
return;
|
227
|
-
}
|
228
|
-
const newItem = {
|
229
|
-
prev,
|
230
|
-
current: message,
|
231
|
-
next: null,
|
232
|
-
children: [],
|
233
|
-
level: prev ? prev.level + 1 : 0
|
234
|
-
};
|
235
|
-
this.messages.set(message.id, newItem);
|
236
|
-
this.performOp(prev, newItem, "link");
|
237
|
-
if (this.head === prev) {
|
238
|
-
this.head = newItem;
|
239
|
-
}
|
240
|
-
}
|
241
|
-
getMessage(messageId) {
|
242
|
-
const message = this.messages.get(messageId);
|
243
|
-
if (!message)
|
244
|
-
throw new Error(
|
245
|
-
"MessageRepository(updateMessage): Message not found. This is likely an internal bug in assistant-ui."
|
246
|
-
);
|
247
|
-
return {
|
248
|
-
parentId: message.prev?.current.id ?? null,
|
249
|
-
message: message.current
|
250
|
-
};
|
251
|
-
}
|
252
|
-
appendOptimisticMessage(parentId, message) {
|
253
|
-
let optimisticId;
|
254
|
-
do {
|
255
|
-
optimisticId = generateOptimisticId();
|
256
|
-
} while (this.messages.has(optimisticId));
|
257
|
-
this.addOrUpdateMessage(
|
258
|
-
parentId,
|
259
|
-
fromCoreMessage(message, {
|
260
|
-
id: optimisticId,
|
261
|
-
status: { type: "running" }
|
262
|
-
})
|
263
|
-
);
|
264
|
-
return optimisticId;
|
265
|
-
}
|
266
|
-
deleteMessage(messageId, replacementId) {
|
267
|
-
const message = this.messages.get(messageId);
|
268
|
-
if (!message)
|
269
|
-
throw new Error(
|
270
|
-
"MessageRepository(deleteMessage): Optimistic message not found. This is likely an internal bug in assistant-ui."
|
271
|
-
);
|
272
|
-
const replacement = replacementId === void 0 ? message.prev : replacementId === null ? null : this.messages.get(replacementId);
|
273
|
-
if (replacement === void 0)
|
274
|
-
throw new Error(
|
275
|
-
"MessageRepository(deleteMessage): Replacement not found. This is likely an internal bug in assistant-ui."
|
276
|
-
);
|
277
|
-
for (const child of message.children) {
|
278
|
-
const childMessage = this.messages.get(child);
|
279
|
-
if (!childMessage)
|
280
|
-
throw new Error(
|
281
|
-
"MessageRepository(deleteMessage): Child message not found. This is likely an internal bug in assistant-ui."
|
282
|
-
);
|
283
|
-
this.performOp(replacement, childMessage, "relink");
|
284
|
-
}
|
285
|
-
this.performOp(null, message, "cut");
|
286
|
-
this.messages.delete(messageId);
|
287
|
-
if (this.head === message) {
|
288
|
-
this.head = replacement ? findHead(replacement) : null;
|
289
|
-
}
|
290
|
-
}
|
291
|
-
getBranches(messageId) {
|
292
|
-
const message = this.messages.get(messageId);
|
293
|
-
if (!message)
|
294
|
-
throw new Error(
|
295
|
-
"MessageRepository(getBranches): Message not found. This is likely an internal bug in assistant-ui."
|
296
|
-
);
|
297
|
-
const { children } = message.prev ?? this.root;
|
298
|
-
return children;
|
299
|
-
}
|
300
|
-
switchToBranch(messageId) {
|
301
|
-
const message = this.messages.get(messageId);
|
302
|
-
if (!message)
|
303
|
-
throw new Error(
|
304
|
-
"MessageRepository(switchToBranch): Branch not found. This is likely an internal bug in assistant-ui."
|
305
|
-
);
|
306
|
-
if (message.prev) {
|
307
|
-
message.prev.next = message;
|
308
|
-
}
|
309
|
-
this.head = findHead(message);
|
310
|
-
}
|
311
|
-
resetHead(messageId) {
|
312
|
-
if (messageId === null) {
|
313
|
-
this.head = null;
|
314
|
-
return;
|
315
|
-
}
|
316
|
-
const message = this.messages.get(messageId);
|
317
|
-
if (!message)
|
318
|
-
throw new Error(
|
319
|
-
"MessageRepository(resetHead): Branch not found. This is likely an internal bug in assistant-ui."
|
320
|
-
);
|
321
|
-
this.head = message;
|
322
|
-
for (let current = message; current; current = current.prev) {
|
323
|
-
if (current.prev) {
|
324
|
-
current.prev.next = current;
|
325
|
-
}
|
326
|
-
}
|
327
|
-
}
|
328
|
-
};
|
329
|
-
|
330
|
-
// src/runtimes/core/BaseAssistantRuntime.tsx
|
331
|
-
var BaseAssistantRuntime = class {
|
332
|
-
constructor(_thread) {
|
333
|
-
this._thread = _thread;
|
334
|
-
this._thread = _thread;
|
335
|
-
}
|
336
|
-
get thread() {
|
337
|
-
return this._thread;
|
338
|
-
}
|
339
|
-
set thread(thread) {
|
340
|
-
this._thread = thread;
|
341
|
-
this.subscriptionHandler();
|
342
|
-
}
|
343
|
-
_subscriptions = /* @__PURE__ */ new Set();
|
344
|
-
subscribe(callback) {
|
345
|
-
this._subscriptions.add(callback);
|
346
|
-
return () => this._subscriptions.delete(callback);
|
347
|
-
}
|
348
|
-
subscriptionHandler = () => {
|
349
|
-
for (const callback of this._subscriptions) callback();
|
350
|
-
};
|
351
|
-
};
|
352
|
-
|
353
|
-
// src/utils/smooth/useSmooth.tsx
|
354
|
-
var import_react4 = require("react");
|
355
|
-
|
356
|
-
// src/context/react/MessageContext.ts
|
357
|
-
var import_react = require("react");
|
358
|
-
var MessageContext = (0, import_react.createContext)(null);
|
359
|
-
function useMessageContext(options) {
|
360
|
-
const context = (0, import_react.useContext)(MessageContext);
|
361
|
-
if (!options?.optional && !context)
|
362
|
-
throw new Error(
|
363
|
-
"This component can only be used inside a component passed to <ThreadPrimitive.Messages components={...} />."
|
364
|
-
);
|
365
|
-
return context;
|
366
|
-
}
|
367
|
-
|
368
|
-
// src/context/react/ContentPartContext.ts
|
369
|
-
var import_react2 = require("react");
|
370
|
-
var ContentPartContext = (0, import_react2.createContext)(
|
371
|
-
null
|
372
|
-
);
|
373
|
-
function useContentPartContext(options) {
|
374
|
-
const context = (0, import_react2.useContext)(ContentPartContext);
|
375
|
-
if (!options?.optional && !context)
|
376
|
-
throw new Error(
|
377
|
-
"This component can only be used inside a component passed to <MessagePrimitive.Content components={...} >."
|
378
|
-
);
|
379
|
-
return context;
|
380
|
-
}
|
381
|
-
|
382
|
-
// src/utils/smooth/SmoothContext.tsx
|
383
|
-
var import_react3 = require("react");
|
384
|
-
var import_zustand = require("zustand");
|
385
|
-
var import_jsx_runtime = require("react/jsx-runtime");
|
386
|
-
var SmoothContext = (0, import_react3.createContext)(null);
|
387
|
-
var makeSmoothContext = (initialState) => {
|
388
|
-
const useSmoothStatus2 = (0, import_zustand.create)(() => initialState);
|
389
|
-
return { useSmoothStatus: useSmoothStatus2 };
|
390
|
-
};
|
391
|
-
var SmoothContextProvider = ({ children }) => {
|
392
|
-
const outer = useSmoothContext({ optional: true });
|
393
|
-
const { useContentPart } = useContentPartContext();
|
394
|
-
const [context] = (0, import_react3.useState)(
|
395
|
-
() => makeSmoothContext(useContentPart.getState().status)
|
396
|
-
);
|
397
|
-
if (outer) return children;
|
398
|
-
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SmoothContext.Provider, { value: context, children });
|
399
|
-
};
|
400
|
-
var withSmoothContextProvider = (Component) => {
|
401
|
-
const Wrapped = (0, import_react3.forwardRef)((props, ref) => {
|
402
|
-
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SmoothContextProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Component, { ...props, ref }) });
|
403
|
-
});
|
404
|
-
Wrapped.displayName = Component.displayName;
|
405
|
-
return Wrapped;
|
406
|
-
};
|
407
|
-
function useSmoothContext(options) {
|
408
|
-
const context = (0, import_react3.useContext)(SmoothContext);
|
409
|
-
if (!options?.optional && !context)
|
410
|
-
throw new Error(
|
411
|
-
"This component must be used within a SmoothContextProvider."
|
412
|
-
);
|
413
|
-
return context;
|
414
|
-
}
|
415
|
-
var useSmoothStatus = () => {
|
416
|
-
const { useSmoothStatus: useSmoothStatus2 } = useSmoothContext();
|
417
|
-
return useSmoothStatus2();
|
418
|
-
};
|
419
|
-
|
420
|
-
// src/utils/smooth/useSmooth.tsx
|
421
|
-
var import_react_use_callback_ref = require("@radix-ui/react-use-callback-ref");
|
422
|
-
var TextStreamAnimator = class {
|
423
|
-
constructor(currentText, setText) {
|
424
|
-
this.currentText = currentText;
|
425
|
-
this.setText = setText;
|
426
|
-
}
|
427
|
-
animationFrameId = null;
|
428
|
-
lastUpdateTime = Date.now();
|
429
|
-
targetText = "";
|
430
|
-
start() {
|
431
|
-
if (this.animationFrameId !== null) return;
|
432
|
-
this.lastUpdateTime = Date.now();
|
433
|
-
this.animate();
|
434
|
-
}
|
435
|
-
stop() {
|
436
|
-
if (this.animationFrameId !== null) {
|
437
|
-
cancelAnimationFrame(this.animationFrameId);
|
438
|
-
this.animationFrameId = null;
|
439
|
-
}
|
440
|
-
}
|
441
|
-
animate = () => {
|
442
|
-
const currentTime = Date.now();
|
443
|
-
const deltaTime = currentTime - this.lastUpdateTime;
|
444
|
-
let timeToConsume = deltaTime;
|
445
|
-
const remainingChars = this.targetText.length - this.currentText.length;
|
446
|
-
const baseTimePerChar = Math.min(5, 250 / remainingChars);
|
447
|
-
let charsToAdd = 0;
|
448
|
-
while (timeToConsume >= baseTimePerChar && charsToAdd < remainingChars) {
|
449
|
-
charsToAdd++;
|
450
|
-
timeToConsume -= baseTimePerChar;
|
451
|
-
}
|
452
|
-
if (charsToAdd !== remainingChars) {
|
453
|
-
this.animationFrameId = requestAnimationFrame(this.animate);
|
454
|
-
} else {
|
455
|
-
this.animationFrameId = null;
|
456
|
-
}
|
457
|
-
if (charsToAdd === 0) return;
|
458
|
-
this.currentText = this.targetText.slice(
|
459
|
-
0,
|
460
|
-
this.currentText.length + charsToAdd
|
461
|
-
);
|
462
|
-
this.lastUpdateTime = currentTime - timeToConsume;
|
463
|
-
this.setText(this.currentText);
|
464
|
-
};
|
465
|
-
};
|
466
|
-
var SMOOTH_STATUS = Object.freeze({
|
467
|
-
type: "running"
|
468
|
-
});
|
469
|
-
var useSmooth = (state, smooth = false) => {
|
470
|
-
const { useSmoothStatus: useSmoothStatus2 } = useSmoothContext({ optional: true }) ?? {};
|
471
|
-
const {
|
472
|
-
part: { text }
|
473
|
-
} = state;
|
474
|
-
const { useMessage } = useMessageContext();
|
475
|
-
const id = useMessage((m) => m.message.id);
|
476
|
-
const idRef = (0, import_react4.useRef)(id);
|
477
|
-
const [displayedText, setDisplayedText] = (0, import_react4.useState)(text);
|
478
|
-
const setText = (0, import_react_use_callback_ref.useCallbackRef)((text2) => {
|
479
|
-
setDisplayedText(text2);
|
480
|
-
useSmoothStatus2?.setState(text2 !== state.part.text ? SMOOTH_STATUS : state.status);
|
481
|
-
});
|
482
|
-
const [animatorRef] = (0, import_react4.useState)(
|
483
|
-
new TextStreamAnimator(text, setText)
|
484
|
-
);
|
485
|
-
(0, import_react4.useEffect)(() => {
|
486
|
-
if (!smooth) {
|
487
|
-
animatorRef.stop();
|
488
|
-
return;
|
489
|
-
}
|
490
|
-
if (idRef.current !== id || !text.startsWith(animatorRef.targetText)) {
|
491
|
-
idRef.current = id;
|
492
|
-
setText(text);
|
493
|
-
animatorRef.currentText = text;
|
494
|
-
animatorRef.targetText = text;
|
495
|
-
animatorRef.stop();
|
496
|
-
return;
|
497
|
-
}
|
498
|
-
animatorRef.targetText = text;
|
499
|
-
animatorRef.start();
|
500
|
-
}, [setText, animatorRef, id, smooth, text]);
|
501
|
-
(0, import_react4.useEffect)(() => {
|
502
|
-
return () => {
|
503
|
-
animatorRef.stop();
|
504
|
-
};
|
505
|
-
}, [animatorRef]);
|
506
|
-
return (0, import_react4.useMemo)(
|
507
|
-
() => smooth ? {
|
508
|
-
part: { type: "text", text: displayedText },
|
509
|
-
status: text === displayedText ? state.status : SMOOTH_STATUS
|
510
|
-
} : state,
|
511
|
-
[smooth, displayedText, state, text]
|
512
|
-
);
|
513
|
-
};
|
514
|
-
|
515
|
-
// src/ui/base/tooltip-icon-button.tsx
|
516
|
-
var import_react7 = require("react");
|
517
|
-
|
518
|
-
// src/ui/base/tooltip.tsx
|
519
|
-
var TooltipPrimitive = __toESM(require("@radix-ui/react-tooltip"));
|
520
|
-
|
521
|
-
// src/ui/utils/withDefaults.tsx
|
522
|
-
var import_react5 = require("react");
|
523
|
-
var import_classnames = __toESM(require("classnames"));
|
524
|
-
var import_jsx_runtime2 = require("react/jsx-runtime");
|
525
|
-
var withDefaultProps = ({
|
526
|
-
className,
|
527
|
-
...defaultProps
|
528
|
-
}) => ({ className: classNameProp, ...props }) => {
|
529
|
-
return {
|
530
|
-
className: (0, import_classnames.default)(className, classNameProp),
|
531
|
-
...defaultProps,
|
532
|
-
...props
|
533
|
-
};
|
534
|
-
};
|
535
|
-
var withDefaults = (Component, defaultProps) => {
|
536
|
-
const getProps = withDefaultProps(defaultProps);
|
537
|
-
const WithDefaults = (0, import_react5.forwardRef)(
|
538
|
-
(props, ref) => {
|
539
|
-
const ComponentAsAny = Component;
|
540
|
-
return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(ComponentAsAny, { ...getProps(props), ref });
|
541
|
-
}
|
542
|
-
);
|
543
|
-
WithDefaults.displayName = "withDefaults(" + (typeof Component === "string" ? Component : Component.displayName) + ")";
|
544
|
-
return WithDefaults;
|
545
|
-
};
|
546
|
-
|
547
|
-
// src/ui/base/tooltip.tsx
|
548
|
-
var import_jsx_runtime3 = require("react/jsx-runtime");
|
549
|
-
var Tooltip = (props) => {
|
550
|
-
return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(TooltipPrimitive.Provider, { children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(TooltipPrimitive.Root, { ...props }) });
|
551
|
-
};
|
552
|
-
Tooltip.displayName = "Tooltip";
|
553
|
-
var TooltipTrigger = TooltipPrimitive.Trigger;
|
554
|
-
var TooltipContent = withDefaults(TooltipPrimitive.Content, {
|
555
|
-
sideOffset: 4,
|
556
|
-
className: "aui-tooltip-content"
|
557
|
-
});
|
558
|
-
TooltipContent.displayName = "TooltipContent";
|
559
|
-
|
560
|
-
// src/ui/base/button.tsx
|
561
|
-
var import_class_variance_authority = require("class-variance-authority");
|
562
|
-
var import_react_primitive = require("@radix-ui/react-primitive");
|
563
|
-
var import_react6 = require("react");
|
564
|
-
var import_jsx_runtime4 = require("react/jsx-runtime");
|
565
|
-
var buttonVariants = (0, import_class_variance_authority.cva)("aui-button", {
|
566
|
-
variants: {
|
567
|
-
variant: {
|
568
|
-
default: "aui-button-primary",
|
569
|
-
outline: "aui-button-outline",
|
570
|
-
ghost: "aui-button-ghost"
|
571
|
-
},
|
572
|
-
size: {
|
573
|
-
default: "aui-button-medium",
|
574
|
-
icon: "aui-button-icon"
|
575
|
-
}
|
576
|
-
},
|
577
|
-
defaultVariants: {
|
578
|
-
variant: "default",
|
579
|
-
size: "default"
|
580
|
-
}
|
581
|
-
});
|
582
|
-
var Button = (0, import_react6.forwardRef)(
|
583
|
-
({ className, variant, size, ...props }, ref) => {
|
584
|
-
return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
585
|
-
import_react_primitive.Primitive.button,
|
586
|
-
{
|
587
|
-
className: buttonVariants({ variant, size, className }),
|
588
|
-
...props,
|
589
|
-
ref
|
590
|
-
}
|
591
|
-
);
|
592
|
-
}
|
593
|
-
);
|
594
|
-
Button.displayName = "Button";
|
595
|
-
|
596
|
-
// src/ui/base/tooltip-icon-button.tsx
|
597
|
-
var import_jsx_runtime5 = require("react/jsx-runtime");
|
598
|
-
var TooltipIconButton = (0, import_react7.forwardRef)(({ children, tooltip, side = "bottom", ...rest }, ref) => {
|
599
|
-
return /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(Tooltip, { children: [
|
600
|
-
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(Button, { variant: "ghost", size: "icon", ...rest, ref, children: [
|
601
|
-
children,
|
602
|
-
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { className: "aui-sr-only", children: tooltip })
|
603
|
-
] }) }),
|
604
|
-
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)(TooltipContent, { side, children: tooltip })
|
605
|
-
] });
|
606
|
-
});
|
607
|
-
TooltipIconButton.displayName = "TooltipIconButton";
|
608
|
-
// Annotate the CommonJS export names for ESM import in node:
|
609
|
-
0 && (module.exports = {
|
610
|
-
BaseAssistantRuntime,
|
611
|
-
MessageRepository,
|
612
|
-
ProxyConfigProvider,
|
613
|
-
TooltipIconButton,
|
614
|
-
generateId,
|
615
|
-
useSmooth,
|
616
|
-
useSmoothStatus,
|
617
|
-
withSmoothContextProvider
|
618
|
-
});
|
619
|
-
//# sourceMappingURL=internal.js.map
|