@assistant-ui/react 0.4.3 → 0.4.4
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/edge.js +111 -115
- package/dist/edge.js.map +1 -1
- package/dist/edge.mjs +111 -115
- package/dist/edge.mjs.map +1 -1
- package/dist/index.d.mts +66 -58
- package/dist/index.d.ts +66 -58
- package/dist/index.js +480 -245
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +477 -246
- package/dist/index.mjs.map +1 -1
- package/dist/styles/index.css +155 -155
- package/dist/styles/index.css.map +1 -1
- package/dist/styles/modal.css +22 -22
- package/dist/styles/modal.css.map +1 -1
- package/dist/styles/tailwindcss/base-components.css +11 -11
- package/dist/styles/tailwindcss/modal.css +5 -5
- package/dist/styles/tailwindcss/thread.css +35 -35
- package/package.json +3 -3
package/dist/index.mjs
CHANGED
@@ -30,7 +30,7 @@ import { create } from "zustand";
|
|
30
30
|
|
31
31
|
// src/types/ModelConfigTypes.ts
|
32
32
|
var mergeModelConfigs = (configSet) => {
|
33
|
-
const configs = Array.from(configSet).map((c) => c()).sort((a, b) => (b.priority ?? 0) - (a.priority ?? 0));
|
33
|
+
const configs = Array.from(configSet).map((c) => c.getModelConfig()).sort((a, b) => (b.priority ?? 0) - (a.priority ?? 0));
|
34
34
|
return configs.reduce((acc, config) => {
|
35
35
|
if (config.system) {
|
36
36
|
if (acc.system) {
|
@@ -226,7 +226,8 @@ var makeThreadActionStore = (runtimeRef) => {
|
|
226
226
|
startRun: (parentId) => runtimeRef.current.startRun(parentId),
|
227
227
|
append: (message) => runtimeRef.current.append(message),
|
228
228
|
cancelRun: () => runtimeRef.current.cancelRun(),
|
229
|
-
addToolResult: (options) => runtimeRef.current.addToolResult(options)
|
229
|
+
addToolResult: (options) => runtimeRef.current.addToolResult(options),
|
230
|
+
getRuntime: () => runtimeRef.current
|
230
231
|
})
|
231
232
|
);
|
232
233
|
};
|
@@ -243,10 +244,7 @@ var ThreadProvider = ({
|
|
243
244
|
children,
|
244
245
|
runtime
|
245
246
|
}) => {
|
246
|
-
const runtimeRef = useRef(runtime);
|
247
|
-
useInsertionEffect(() => {
|
248
|
-
runtimeRef.current = runtime;
|
249
|
-
});
|
247
|
+
const runtimeRef = useRef(runtime.thread);
|
250
248
|
const [context] = useState(() => {
|
251
249
|
const useThread = makeThreadStore(runtimeRef);
|
252
250
|
const useThreadMessages = makeThreadMessagesStore(runtimeRef);
|
@@ -261,8 +259,16 @@ var ThreadProvider = ({
|
|
261
259
|
useViewport
|
262
260
|
};
|
263
261
|
});
|
262
|
+
const thread = useSyncExternalStore(
|
263
|
+
useCallback((c) => runtime.subscribe(c), [runtime]),
|
264
|
+
() => runtime.thread,
|
265
|
+
() => runtime.thread
|
266
|
+
);
|
267
|
+
useInsertionEffect(() => {
|
268
|
+
runtimeRef.current = thread;
|
269
|
+
});
|
264
270
|
useEffect(() => {
|
265
|
-
const
|
271
|
+
const onThreadUpdate = () => {
|
266
272
|
context.useThread.setState(
|
267
273
|
Object.freeze({
|
268
274
|
isRunning: runtimeRef.current.isRunning
|
@@ -271,20 +277,11 @@ var ThreadProvider = ({
|
|
271
277
|
);
|
272
278
|
context.useThreadMessages.setState(Object.freeze(runtimeRef.current.messages), true);
|
273
279
|
};
|
274
|
-
|
275
|
-
return
|
276
|
-
}, [context,
|
277
|
-
const subscribe = useCallback(
|
278
|
-
(c) => runtime.subscribe(c),
|
279
|
-
[runtime]
|
280
|
-
);
|
281
|
-
const RuntimeSynchronizer = useSyncExternalStore(
|
282
|
-
subscribe,
|
283
|
-
() => runtime.unstable_synchronizer,
|
284
|
-
() => void 0
|
285
|
-
);
|
280
|
+
onThreadUpdate();
|
281
|
+
return thread.subscribe(onThreadUpdate);
|
282
|
+
}, [context, thread]);
|
286
283
|
return /* @__PURE__ */ jsxs(ThreadContext.Provider, { value: context, children: [
|
287
|
-
|
284
|
+
thread.unstable_synchronizer && /* @__PURE__ */ jsx(thread.unstable_synchronizer, {}),
|
288
285
|
children
|
289
286
|
] });
|
290
287
|
};
|
@@ -293,7 +290,8 @@ var ThreadProvider = ({
|
|
293
290
|
import { create as create8 } from "zustand";
|
294
291
|
var makeAssistantActionsStore = (runtimeRef) => create8(
|
295
292
|
() => Object.freeze({
|
296
|
-
switchToThread: () => runtimeRef.current.switchToThread(null)
|
293
|
+
switchToThread: () => runtimeRef.current.switchToThread(null),
|
294
|
+
getRuntime: () => runtimeRef.current
|
297
295
|
})
|
298
296
|
);
|
299
297
|
|
@@ -310,10 +308,10 @@ var AssistantProvider = ({ children, runtime }) => {
|
|
310
308
|
const useAssistantActions = makeAssistantActionsStore(runtimeRef);
|
311
309
|
return { useModelConfig, useToolUIs, useAssistantActions };
|
312
310
|
});
|
313
|
-
const
|
311
|
+
const getModelConfig = context.useModelConfig();
|
314
312
|
useEffect2(() => {
|
315
|
-
return runtime.registerModelConfigProvider(
|
316
|
-
}, [runtime,
|
313
|
+
return runtime.registerModelConfigProvider(getModelConfig);
|
314
|
+
}, [runtime, getModelConfig]);
|
317
315
|
return /* @__PURE__ */ jsx2(AssistantContext.Provider, { value: context, children: /* @__PURE__ */ jsx2(ThreadProvider, { runtime, children }) });
|
318
316
|
};
|
319
317
|
|
@@ -423,7 +421,9 @@ var useAssistantTool = (tool) => {
|
|
423
421
|
[tool.toolName]: rest
|
424
422
|
}
|
425
423
|
};
|
426
|
-
const unsub1 = registerModelConfigProvider(
|
424
|
+
const unsub1 = registerModelConfigProvider({
|
425
|
+
getModelConfig: () => config
|
426
|
+
});
|
427
427
|
const unsub2 = render ? setToolUI(toolName, render) : void 0;
|
428
428
|
return () => {
|
429
429
|
unsub1();
|
@@ -473,7 +473,7 @@ var useAssistantInstructions = (instruction) => {
|
|
473
473
|
const config = {
|
474
474
|
system: instruction
|
475
475
|
};
|
476
|
-
return registerModelConfigProvider(() => config);
|
476
|
+
return registerModelConfigProvider({ getModelConfig: () => config });
|
477
477
|
}, [registerModelConfigProvider, instruction]);
|
478
478
|
};
|
479
479
|
|
@@ -2080,45 +2080,14 @@ var BaseAssistantRuntime = class {
|
|
2080
2080
|
constructor(_thread) {
|
2081
2081
|
this._thread = _thread;
|
2082
2082
|
this._thread = _thread;
|
2083
|
-
this._unsubscribe = this._thread.subscribe(this.subscriptionHandler);
|
2084
2083
|
}
|
2085
|
-
get capabilities() {
|
2086
|
-
return this._thread.capabilities;
|
2087
|
-
}
|
2088
|
-
_unsubscribe;
|
2089
2084
|
get thread() {
|
2090
2085
|
return this._thread;
|
2091
2086
|
}
|
2092
2087
|
set thread(thread) {
|
2093
|
-
this._unsubscribe();
|
2094
2088
|
this._thread = thread;
|
2095
|
-
this._unsubscribe = this._thread.subscribe(this.subscriptionHandler);
|
2096
2089
|
this.subscriptionHandler();
|
2097
2090
|
}
|
2098
|
-
get messages() {
|
2099
|
-
return this.thread.messages;
|
2100
|
-
}
|
2101
|
-
get isRunning() {
|
2102
|
-
return this.thread.isRunning;
|
2103
|
-
}
|
2104
|
-
getBranches(messageId) {
|
2105
|
-
return this.thread.getBranches(messageId);
|
2106
|
-
}
|
2107
|
-
switchToBranch(branchId) {
|
2108
|
-
return this.thread.switchToBranch(branchId);
|
2109
|
-
}
|
2110
|
-
append(message) {
|
2111
|
-
return this.thread.append(message);
|
2112
|
-
}
|
2113
|
-
startRun(parentId) {
|
2114
|
-
return this.thread.startRun(parentId);
|
2115
|
-
}
|
2116
|
-
cancelRun() {
|
2117
|
-
return this.thread.cancelRun();
|
2118
|
-
}
|
2119
|
-
addToolResult(options) {
|
2120
|
-
return this.thread.addToolResult(options);
|
2121
|
-
}
|
2122
2091
|
_subscriptions = /* @__PURE__ */ new Set();
|
2123
2092
|
subscribe(callback) {
|
2124
2093
|
this._subscriptions.add(callback);
|
@@ -2127,32 +2096,135 @@ var BaseAssistantRuntime = class {
|
|
2127
2096
|
subscriptionHandler = () => {
|
2128
2097
|
for (const callback of this._subscriptions) callback();
|
2129
2098
|
};
|
2130
|
-
get unstable_synchronizer() {
|
2131
|
-
return this.thread.unstable_synchronizer;
|
2132
|
-
}
|
2133
2099
|
};
|
2134
2100
|
|
2101
|
+
// src/internal.ts
|
2102
|
+
var internal_exports = {};
|
2103
|
+
__export(internal_exports, {
|
2104
|
+
BaseAssistantRuntime: () => BaseAssistantRuntime,
|
2105
|
+
MessageRepository: () => MessageRepository,
|
2106
|
+
ProxyConfigProvider: () => ProxyConfigProvider,
|
2107
|
+
TooltipIconButton: () => TooltipIconButton,
|
2108
|
+
generateId: () => generateId,
|
2109
|
+
useSmooth: () => useSmooth
|
2110
|
+
});
|
2111
|
+
|
2112
|
+
// src/ui/base/tooltip-icon-button.tsx
|
2113
|
+
import { forwardRef as forwardRef17 } from "react";
|
2114
|
+
|
2115
|
+
// src/ui/base/tooltip.tsx
|
2116
|
+
import * as TooltipPrimitive from "@radix-ui/react-tooltip";
|
2117
|
+
|
2118
|
+
// src/ui/utils/withDefaults.tsx
|
2119
|
+
import {
|
2120
|
+
forwardRef as forwardRef15
|
2121
|
+
} from "react";
|
2122
|
+
import classNames from "classnames";
|
2123
|
+
import { jsx as jsx25 } from "react/jsx-runtime";
|
2124
|
+
var withDefaultProps = ({
|
2125
|
+
className,
|
2126
|
+
...defaultProps
|
2127
|
+
}) => ({ className: classNameProp, ...props }) => {
|
2128
|
+
return {
|
2129
|
+
className: classNames(className, classNameProp),
|
2130
|
+
...defaultProps,
|
2131
|
+
...props
|
2132
|
+
};
|
2133
|
+
};
|
2134
|
+
var withDefaults = (Component, defaultProps) => {
|
2135
|
+
const getProps = withDefaultProps(defaultProps);
|
2136
|
+
const WithDefaults = forwardRef15(
|
2137
|
+
(props, ref) => {
|
2138
|
+
const ComponentAsAny = Component;
|
2139
|
+
return /* @__PURE__ */ jsx25(ComponentAsAny, { ...getProps(props), ref });
|
2140
|
+
}
|
2141
|
+
);
|
2142
|
+
WithDefaults.displayName = "withDefaults(" + (typeof Component === "string" ? Component : Component.displayName) + ")";
|
2143
|
+
return WithDefaults;
|
2144
|
+
};
|
2145
|
+
|
2146
|
+
// src/ui/base/tooltip.tsx
|
2147
|
+
import { jsx as jsx26 } from "react/jsx-runtime";
|
2148
|
+
var Tooltip = (props) => {
|
2149
|
+
return /* @__PURE__ */ jsx26(TooltipPrimitive.Provider, { children: /* @__PURE__ */ jsx26(TooltipPrimitive.Root, { ...props }) });
|
2150
|
+
};
|
2151
|
+
Tooltip.displayName = "Tooltip";
|
2152
|
+
var TooltipTrigger = TooltipPrimitive.Trigger;
|
2153
|
+
var TooltipContent = withDefaults(TooltipPrimitive.Content, {
|
2154
|
+
sideOffset: 4,
|
2155
|
+
className: "aui-tooltip-content"
|
2156
|
+
});
|
2157
|
+
TooltipContent.displayName = "TooltipContent";
|
2158
|
+
|
2159
|
+
// src/ui/base/button.tsx
|
2160
|
+
import { cva } from "class-variance-authority";
|
2161
|
+
import { Primitive as Primitive11 } from "@radix-ui/react-primitive";
|
2162
|
+
import { forwardRef as forwardRef16 } from "react";
|
2163
|
+
import { jsx as jsx27 } from "react/jsx-runtime";
|
2164
|
+
var buttonVariants = cva("aui-button", {
|
2165
|
+
variants: {
|
2166
|
+
variant: {
|
2167
|
+
default: "aui-button-primary",
|
2168
|
+
outline: "aui-button-outline",
|
2169
|
+
ghost: "aui-button-ghost"
|
2170
|
+
},
|
2171
|
+
size: {
|
2172
|
+
default: "aui-button-medium",
|
2173
|
+
icon: "aui-button-icon"
|
2174
|
+
}
|
2175
|
+
},
|
2176
|
+
defaultVariants: {
|
2177
|
+
variant: "default",
|
2178
|
+
size: "default"
|
2179
|
+
}
|
2180
|
+
});
|
2181
|
+
var Button = forwardRef16(
|
2182
|
+
({ className, variant, size, ...props }, ref) => {
|
2183
|
+
return /* @__PURE__ */ jsx27(
|
2184
|
+
Primitive11.button,
|
2185
|
+
{
|
2186
|
+
className: buttonVariants({ variant, size, className }),
|
2187
|
+
...props,
|
2188
|
+
ref
|
2189
|
+
}
|
2190
|
+
);
|
2191
|
+
}
|
2192
|
+
);
|
2193
|
+
Button.displayName = "Button";
|
2194
|
+
|
2195
|
+
// src/ui/base/tooltip-icon-button.tsx
|
2196
|
+
import { jsx as jsx28, jsxs as jsxs4 } from "react/jsx-runtime";
|
2197
|
+
var TooltipIconButton = forwardRef17(({ children, tooltip, side = "bottom", ...rest }, ref) => {
|
2198
|
+
return /* @__PURE__ */ jsxs4(Tooltip, { children: [
|
2199
|
+
/* @__PURE__ */ jsx28(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsxs4(Button, { variant: "ghost", size: "icon", ...rest, ref, children: [
|
2200
|
+
children,
|
2201
|
+
/* @__PURE__ */ jsx28("span", { className: "aui-sr-only", children: tooltip })
|
2202
|
+
] }) }),
|
2203
|
+
/* @__PURE__ */ jsx28(TooltipContent, { side, children: tooltip })
|
2204
|
+
] });
|
2205
|
+
});
|
2206
|
+
TooltipIconButton.displayName = "TooltipIconButton";
|
2207
|
+
|
2135
2208
|
// src/runtimes/local/LocalRuntime.tsx
|
2136
2209
|
var LocalRuntime = class extends BaseAssistantRuntime {
|
2137
|
-
|
2210
|
+
_proxyConfigProvider;
|
2138
2211
|
constructor(adapter) {
|
2139
|
-
const
|
2140
|
-
super(new LocalThreadRuntime(
|
2141
|
-
this.
|
2212
|
+
const proxyConfigProvider = new ProxyConfigProvider();
|
2213
|
+
super(new LocalThreadRuntime(proxyConfigProvider, adapter));
|
2214
|
+
this._proxyConfigProvider = proxyConfigProvider;
|
2142
2215
|
}
|
2143
2216
|
set adapter(adapter) {
|
2144
2217
|
this.thread.adapter = adapter;
|
2145
2218
|
}
|
2146
2219
|
registerModelConfigProvider(provider) {
|
2147
|
-
this.
|
2148
|
-
return () => this._configProviders.delete(provider);
|
2220
|
+
return this._proxyConfigProvider.registerModelConfigProvider(provider);
|
2149
2221
|
}
|
2150
2222
|
switchToThread(threadId) {
|
2151
2223
|
if (threadId) {
|
2152
2224
|
throw new Error("LocalRuntime does not yet support switching threads");
|
2153
2225
|
}
|
2154
2226
|
return this.thread = new LocalThreadRuntime(
|
2155
|
-
this.
|
2227
|
+
this._proxyConfigProvider,
|
2156
2228
|
this.thread.adapter
|
2157
2229
|
);
|
2158
2230
|
}
|
@@ -2164,8 +2236,8 @@ var CAPABILITIES = Object.freeze({
|
|
2164
2236
|
copy: true
|
2165
2237
|
});
|
2166
2238
|
var LocalThreadRuntime = class {
|
2167
|
-
constructor(
|
2168
|
-
this.
|
2239
|
+
constructor(configProvider, adapter) {
|
2240
|
+
this.configProvider = configProvider;
|
2169
2241
|
this.adapter = adapter;
|
2170
2242
|
}
|
2171
2243
|
_subscriptions = /* @__PURE__ */ new Set();
|
@@ -2186,6 +2258,10 @@ var LocalThreadRuntime = class {
|
|
2186
2258
|
this.notifySubscribers();
|
2187
2259
|
}
|
2188
2260
|
async append(message) {
|
2261
|
+
if (message.role !== "user")
|
2262
|
+
throw new Error(
|
2263
|
+
"Only appending user messages are supported in LocalRuntime. This is likely an internal bug in assistant-ui."
|
2264
|
+
);
|
2189
2265
|
const userMessageId = generateId();
|
2190
2266
|
const userMessage = {
|
2191
2267
|
id: userMessageId,
|
@@ -2197,11 +2273,10 @@ var LocalThreadRuntime = class {
|
|
2197
2273
|
await this.startRun(userMessageId);
|
2198
2274
|
}
|
2199
2275
|
async startRun(parentId) {
|
2200
|
-
const id = generateId();
|
2201
2276
|
this.repository.resetHead(parentId);
|
2202
2277
|
const messages = this.repository.getMessages();
|
2203
2278
|
const message = {
|
2204
|
-
id,
|
2279
|
+
id: generateId(),
|
2205
2280
|
role: "assistant",
|
2206
2281
|
status: { type: "in_progress" },
|
2207
2282
|
content: [{ type: "text", text: "" }],
|
@@ -2220,7 +2295,7 @@ var LocalThreadRuntime = class {
|
|
2220
2295
|
const result = await this.adapter.run({
|
2221
2296
|
messages,
|
2222
2297
|
abortSignal: this.abortController.signal,
|
2223
|
-
config:
|
2298
|
+
config: this.configProvider.getModelConfig(),
|
2224
2299
|
onUpdate: updateHandler
|
2225
2300
|
});
|
2226
2301
|
if (result !== void 0) {
|
@@ -2235,7 +2310,7 @@ var LocalThreadRuntime = class {
|
|
2235
2310
|
} catch (e) {
|
2236
2311
|
message.status = { type: "error", error: e };
|
2237
2312
|
this.repository.addOrUpdateMessage(parentId, { ...message });
|
2238
|
-
|
2313
|
+
throw e;
|
2239
2314
|
} finally {
|
2240
2315
|
this.abortController = null;
|
2241
2316
|
this.notifySubscribers();
|
@@ -2245,7 +2320,6 @@ var LocalThreadRuntime = class {
|
|
2245
2320
|
if (!this.abortController) return;
|
2246
2321
|
this.abortController.abort();
|
2247
2322
|
this.abortController = null;
|
2248
|
-
this.notifySubscribers();
|
2249
2323
|
}
|
2250
2324
|
notifySubscribers() {
|
2251
2325
|
for (const callback of this._subscriptions) callback();
|
@@ -2257,7 +2331,7 @@ var LocalThreadRuntime = class {
|
|
2257
2331
|
addToolResult({ messageId, toolCallId, result }) {
|
2258
2332
|
const { parentId, message } = this.repository.getMessage(messageId);
|
2259
2333
|
if (message.role !== "assistant")
|
2260
|
-
throw new Error("Tried to add tool
|
2334
|
+
throw new Error("Tried to add tool result to non-assistant message");
|
2261
2335
|
let found = false;
|
2262
2336
|
const newContent = message.content.map((c) => {
|
2263
2337
|
if (c.type !== "tool-call") return c;
|
@@ -2286,20 +2360,48 @@ var useLocalRuntime = (adapter) => {
|
|
2286
2360
|
return runtime;
|
2287
2361
|
};
|
2288
2362
|
|
2363
|
+
// src/runtimes/edge/useEdgeRuntime.ts
|
2364
|
+
import { useState as useState8 } from "react";
|
2365
|
+
|
2366
|
+
// src/runtimes/edge/converters/toCoreMessages.ts
|
2367
|
+
var toCoreMessages = (message) => {
|
2368
|
+
return message.map((message2) => {
|
2369
|
+
return {
|
2370
|
+
role: message2.role,
|
2371
|
+
content: message2.content.map((part) => {
|
2372
|
+
if (part.type === "ui") throw new Error("UI parts are not supported");
|
2373
|
+
return part;
|
2374
|
+
})
|
2375
|
+
};
|
2376
|
+
});
|
2377
|
+
};
|
2378
|
+
|
2379
|
+
// src/runtimes/edge/converters/toLanguageModelTools.ts
|
2380
|
+
import { z } from "zod";
|
2381
|
+
import zodToJsonSchema from "zod-to-json-schema";
|
2382
|
+
var toLanguageModelTools = (tools) => {
|
2383
|
+
if (!tools) return [];
|
2384
|
+
return Object.entries(tools).map(([name, tool]) => ({
|
2385
|
+
type: "function",
|
2386
|
+
name,
|
2387
|
+
...tool.description ? { description: tool.description } : void 0,
|
2388
|
+
parameters: tool.parameters instanceof z.ZodType ? zodToJsonSchema(tool.parameters) : tool.parameters
|
2389
|
+
}));
|
2390
|
+
};
|
2391
|
+
|
2289
2392
|
// src/runtimes/edge/streams/assistantDecoderStream.ts
|
2290
2393
|
function assistantDecoderStream() {
|
2291
2394
|
let currentToolCall;
|
2292
2395
|
return new TransformStream({
|
2293
2396
|
transform(chunk, controller) {
|
2294
|
-
const [code,
|
2295
|
-
const value = JSON.parse(valueJson);
|
2397
|
+
const [code, value] = parseStreamPart(chunk);
|
2296
2398
|
if (currentToolCall && code !== "2" /* ToolCallArgsTextDelta */ && code !== "E" /* Error */) {
|
2297
2399
|
controller.enqueue({
|
2298
2400
|
type: "tool-call",
|
2299
2401
|
toolCallType: "function",
|
2300
2402
|
toolCallId: currentToolCall.id,
|
2301
2403
|
toolName: currentToolCall.name,
|
2302
|
-
args:
|
2404
|
+
args: currentToolCall.argsText
|
2303
2405
|
});
|
2304
2406
|
currentToolCall = void 0;
|
2305
2407
|
}
|
@@ -2312,12 +2414,12 @@ function assistantDecoderStream() {
|
|
2312
2414
|
break;
|
2313
2415
|
}
|
2314
2416
|
case "1" /* ToolCallBegin */: {
|
2315
|
-
const { id, name } =
|
2417
|
+
const { id, name } = value;
|
2316
2418
|
currentToolCall = { id, name, argsText: "" };
|
2317
2419
|
break;
|
2318
2420
|
}
|
2319
2421
|
case "2" /* ToolCallArgsTextDelta */: {
|
2320
|
-
const delta =
|
2422
|
+
const delta = value;
|
2321
2423
|
currentToolCall.argsText += delta;
|
2322
2424
|
controller.enqueue({
|
2323
2425
|
type: "tool-call-delta",
|
@@ -2331,14 +2433,14 @@ function assistantDecoderStream() {
|
|
2331
2433
|
case "F" /* Finish */: {
|
2332
2434
|
controller.enqueue({
|
2333
2435
|
type: "finish",
|
2334
|
-
...
|
2436
|
+
...value
|
2335
2437
|
});
|
2336
2438
|
break;
|
2337
2439
|
}
|
2338
2440
|
case "E" /* Error */: {
|
2339
2441
|
controller.enqueue({
|
2340
2442
|
type: "error",
|
2341
|
-
error:
|
2443
|
+
error: value
|
2342
2444
|
});
|
2343
2445
|
break;
|
2344
2446
|
}
|
@@ -2355,7 +2457,7 @@ var parseStreamPart = (part) => {
|
|
2355
2457
|
if (index === -1) throw new Error("Invalid stream part");
|
2356
2458
|
return [
|
2357
2459
|
part.slice(0, index),
|
2358
|
-
part.slice(index + 1)
|
2460
|
+
JSON.parse(part.slice(index + 1))
|
2359
2461
|
];
|
2360
2462
|
};
|
2361
2463
|
|
@@ -2740,7 +2842,7 @@ function runResultStream() {
|
|
2740
2842
|
message,
|
2741
2843
|
toolCallId,
|
2742
2844
|
toolName,
|
2743
|
-
|
2845
|
+
currentToolCall.argsText
|
2744
2846
|
);
|
2745
2847
|
controller.enqueue(message);
|
2746
2848
|
break;
|
@@ -2788,7 +2890,7 @@ var appendOrUpdateText = (message, textDelta) => {
|
|
2788
2890
|
content: contentParts.concat([contentPart])
|
2789
2891
|
};
|
2790
2892
|
};
|
2791
|
-
var appendOrUpdateToolCall = (message, toolCallId, toolName,
|
2893
|
+
var appendOrUpdateToolCall = (message, toolCallId, toolName, argsText) => {
|
2792
2894
|
let contentParts = message.content;
|
2793
2895
|
let contentPart = message.content.at(-1);
|
2794
2896
|
if (contentPart?.type !== "tool-call" || contentPart.toolCallId !== toolCallId) {
|
@@ -2796,13 +2898,15 @@ var appendOrUpdateToolCall = (message, toolCallId, toolName, args) => {
|
|
2796
2898
|
type: "tool-call",
|
2797
2899
|
toolCallId,
|
2798
2900
|
toolName,
|
2799
|
-
|
2901
|
+
argsText,
|
2902
|
+
args: parsePartialJson(argsText)
|
2800
2903
|
};
|
2801
2904
|
} else {
|
2802
2905
|
contentParts = contentParts.slice(0, -1);
|
2803
2906
|
contentPart = {
|
2804
2907
|
...contentPart,
|
2805
|
-
|
2908
|
+
argsText,
|
2909
|
+
args: parsePartialJson(argsText)
|
2806
2910
|
};
|
2807
2911
|
}
|
2808
2912
|
return {
|
@@ -2845,11 +2949,8 @@ var appendOrUpdateFinish = (message, chunk) => {
|
|
2845
2949
|
};
|
2846
2950
|
};
|
2847
2951
|
|
2848
|
-
// src/runtimes/edge/useEdgeRuntime.ts
|
2849
|
-
import { useMemo as useMemo3 } from "react";
|
2850
|
-
|
2851
2952
|
// src/runtimes/edge/streams/toolResultStream.ts
|
2852
|
-
import { z } from "zod";
|
2953
|
+
import { z as z2 } from "zod";
|
2853
2954
|
import sjson2 from "secure-json-parse";
|
2854
2955
|
function toolResultStream(tools) {
|
2855
2956
|
const toolCallExecutions = /* @__PURE__ */ new Map();
|
@@ -2861,9 +2962,9 @@ function toolResultStream(tools) {
|
|
2861
2962
|
case "tool-call": {
|
2862
2963
|
const { toolCallId, toolCallType, toolName, args: argsText } = chunk;
|
2863
2964
|
const tool = tools?.[toolName];
|
2864
|
-
if (!tool) return;
|
2965
|
+
if (!tool || !tool.execute) return;
|
2865
2966
|
const args = sjson2.parse(argsText);
|
2866
|
-
if (tool.parameters instanceof
|
2967
|
+
if (tool.parameters instanceof z2.ZodType) {
|
2867
2968
|
const result = tool.parameters.safeParse(args);
|
2868
2969
|
if (!result.success) {
|
2869
2970
|
controller.enqueue({
|
@@ -2915,9 +3016,7 @@ function toolResultStream(tools) {
|
|
2915
3016
|
});
|
2916
3017
|
}
|
2917
3018
|
|
2918
|
-
// src/runtimes/edge/
|
2919
|
-
import { z as z2 } from "zod";
|
2920
|
-
import { zodToJsonSchema } from "zod-to-json-schema";
|
3019
|
+
// src/runtimes/edge/EdgeChatAdapter.ts
|
2921
3020
|
function asAsyncIterable(source) {
|
2922
3021
|
return {
|
2923
3022
|
[Symbol.asyncIterator]: () => {
|
@@ -2931,28 +3030,20 @@ function asAsyncIterable(source) {
|
|
2931
3030
|
}
|
2932
3031
|
};
|
2933
3032
|
}
|
2934
|
-
var
|
2935
|
-
|
2936
|
-
|
2937
|
-
|
2938
|
-
|
2939
|
-
|
2940
|
-
parameters: tool.parameters instanceof z2.ZodType ? zodToJsonSchema(tool.parameters) : tool.parameters
|
2941
|
-
}));
|
2942
|
-
};
|
2943
|
-
var createEdgeChatAdapter = ({
|
2944
|
-
api
|
2945
|
-
}) => ({
|
2946
|
-
run: async ({ messages, abortSignal, config, onUpdate }) => {
|
2947
|
-
const result = await fetch(api, {
|
3033
|
+
var EdgeChatAdapter = class {
|
3034
|
+
constructor(options) {
|
3035
|
+
this.options = options;
|
3036
|
+
}
|
3037
|
+
async run({ messages, abortSignal, config, onUpdate }) {
|
3038
|
+
const result = await fetch(this.options.api, {
|
2948
3039
|
method: "POST",
|
2949
3040
|
headers: {
|
2950
3041
|
"Content-Type": "application/json"
|
2951
3042
|
},
|
2952
3043
|
body: JSON.stringify({
|
2953
3044
|
system: config.system,
|
2954
|
-
messages,
|
2955
|
-
tools:
|
3045
|
+
messages: toCoreMessages(messages),
|
3046
|
+
tools: toLanguageModelTools(
|
2956
3047
|
config.tools
|
2957
3048
|
)
|
2958
3049
|
}),
|
@@ -2967,15 +3058,251 @@ var createEdgeChatAdapter = ({
|
|
2967
3058
|
throw new Error("No data received from Edge Runtime");
|
2968
3059
|
return update;
|
2969
3060
|
}
|
2970
|
-
}
|
3061
|
+
};
|
3062
|
+
|
3063
|
+
// src/runtimes/edge/useEdgeRuntime.ts
|
2971
3064
|
var useEdgeRuntime = (options) => {
|
2972
|
-
const adapter =
|
3065
|
+
const [adapter] = useState8(() => new EdgeChatAdapter(options));
|
2973
3066
|
return useLocalRuntime(adapter);
|
2974
3067
|
};
|
2975
3068
|
|
3069
|
+
// src/runtimes/edge/converters/toLanguageModelMessages.ts
|
3070
|
+
var assistantMessageSplitter = () => {
|
3071
|
+
const stash = [];
|
3072
|
+
let assistantMessage = {
|
3073
|
+
role: "assistant",
|
3074
|
+
content: []
|
3075
|
+
};
|
3076
|
+
let toolMessage = {
|
3077
|
+
role: "tool",
|
3078
|
+
content: []
|
3079
|
+
};
|
3080
|
+
return {
|
3081
|
+
addTextContentPart: (part) => {
|
3082
|
+
if (toolMessage.content.length > 0) {
|
3083
|
+
stash.push(assistantMessage);
|
3084
|
+
stash.push(toolMessage);
|
3085
|
+
assistantMessage = {
|
3086
|
+
role: "assistant",
|
3087
|
+
content: []
|
3088
|
+
};
|
3089
|
+
toolMessage = {
|
3090
|
+
role: "tool",
|
3091
|
+
content: []
|
3092
|
+
};
|
3093
|
+
}
|
3094
|
+
assistantMessage.content.push(part);
|
3095
|
+
},
|
3096
|
+
addToolCallPart: (part) => {
|
3097
|
+
assistantMessage.content.push({
|
3098
|
+
type: "tool-call",
|
3099
|
+
toolCallId: part.toolCallId,
|
3100
|
+
toolName: part.toolName,
|
3101
|
+
args: part.args
|
3102
|
+
});
|
3103
|
+
if (part.result) {
|
3104
|
+
toolMessage.content.push({
|
3105
|
+
type: "tool-result",
|
3106
|
+
toolCallId: part.toolCallId,
|
3107
|
+
toolName: part.toolName,
|
3108
|
+
result: part.result
|
3109
|
+
// isError
|
3110
|
+
});
|
3111
|
+
}
|
3112
|
+
},
|
3113
|
+
getMessages: () => {
|
3114
|
+
if (toolMessage.content.length > 0) {
|
3115
|
+
return [...stash, assistantMessage, toolMessage];
|
3116
|
+
}
|
3117
|
+
return [...stash, assistantMessage];
|
3118
|
+
}
|
3119
|
+
};
|
3120
|
+
};
|
3121
|
+
function toLanguageModelMessages(message) {
|
3122
|
+
return message.flatMap((message2) => {
|
3123
|
+
const role = message2.role;
|
3124
|
+
switch (role) {
|
3125
|
+
case "system": {
|
3126
|
+
return [{ role: "system", content: message2.content[0].text }];
|
3127
|
+
}
|
3128
|
+
case "user": {
|
3129
|
+
const msg = {
|
3130
|
+
role: "user",
|
3131
|
+
content: message2.content.map(
|
3132
|
+
(part) => {
|
3133
|
+
const type = part.type;
|
3134
|
+
switch (type) {
|
3135
|
+
case "text": {
|
3136
|
+
return part;
|
3137
|
+
}
|
3138
|
+
case "image": {
|
3139
|
+
return {
|
3140
|
+
type: "image",
|
3141
|
+
image: new URL(part.image)
|
3142
|
+
};
|
3143
|
+
}
|
3144
|
+
default: {
|
3145
|
+
const unhandledType = type;
|
3146
|
+
throw new Error(
|
3147
|
+
`Unspported content part type: ${unhandledType}`
|
3148
|
+
);
|
3149
|
+
}
|
3150
|
+
}
|
3151
|
+
}
|
3152
|
+
)
|
3153
|
+
};
|
3154
|
+
return [msg];
|
3155
|
+
}
|
3156
|
+
case "assistant": {
|
3157
|
+
const splitter = assistantMessageSplitter();
|
3158
|
+
for (const part of message2.content) {
|
3159
|
+
const type = part.type;
|
3160
|
+
switch (type) {
|
3161
|
+
case "text": {
|
3162
|
+
splitter.addTextContentPart(part);
|
3163
|
+
break;
|
3164
|
+
}
|
3165
|
+
case "tool-call": {
|
3166
|
+
splitter.addToolCallPart(part);
|
3167
|
+
break;
|
3168
|
+
}
|
3169
|
+
default: {
|
3170
|
+
const unhandledType = type;
|
3171
|
+
throw new Error(`Unhandled content part type: ${unhandledType}`);
|
3172
|
+
}
|
3173
|
+
}
|
3174
|
+
}
|
3175
|
+
return splitter.getMessages();
|
3176
|
+
}
|
3177
|
+
default: {
|
3178
|
+
const unhandledRole = role;
|
3179
|
+
throw new Error(`Unknown message role: ${unhandledRole}`);
|
3180
|
+
}
|
3181
|
+
}
|
3182
|
+
});
|
3183
|
+
}
|
3184
|
+
|
3185
|
+
// src/runtimes/edge/converters/fromLanguageModelMessages.ts
|
3186
|
+
var fromLanguageModelMessages = (lm, mergeRoundtrips) => {
|
3187
|
+
const messages = [];
|
3188
|
+
for (const lmMessage of lm) {
|
3189
|
+
const role = lmMessage.role;
|
3190
|
+
switch (role) {
|
3191
|
+
case "system": {
|
3192
|
+
messages.push({
|
3193
|
+
role: "system",
|
3194
|
+
content: [
|
3195
|
+
{
|
3196
|
+
type: "text",
|
3197
|
+
text: lmMessage.content
|
3198
|
+
}
|
3199
|
+
]
|
3200
|
+
});
|
3201
|
+
break;
|
3202
|
+
}
|
3203
|
+
case "user": {
|
3204
|
+
messages.push({
|
3205
|
+
role: "user",
|
3206
|
+
content: lmMessage.content.map((part) => {
|
3207
|
+
const type = part.type;
|
3208
|
+
switch (type) {
|
3209
|
+
case "text": {
|
3210
|
+
return {
|
3211
|
+
type: "text",
|
3212
|
+
text: part.text
|
3213
|
+
};
|
3214
|
+
}
|
3215
|
+
case "image": {
|
3216
|
+
if (part.image instanceof URL) {
|
3217
|
+
return {
|
3218
|
+
type: "image",
|
3219
|
+
image: part.image.href
|
3220
|
+
};
|
3221
|
+
}
|
3222
|
+
throw new Error("Only images with URL data are supported");
|
3223
|
+
}
|
3224
|
+
default: {
|
3225
|
+
const unhandledType = type;
|
3226
|
+
throw new Error(`Unknown content part type: ${unhandledType}`);
|
3227
|
+
}
|
3228
|
+
}
|
3229
|
+
})
|
3230
|
+
});
|
3231
|
+
break;
|
3232
|
+
}
|
3233
|
+
case "assistant": {
|
3234
|
+
const newContent = lmMessage.content.map((part) => {
|
3235
|
+
if (part.type === "tool-call") {
|
3236
|
+
return {
|
3237
|
+
type: "tool-call",
|
3238
|
+
toolCallId: part.toolCallId,
|
3239
|
+
toolName: part.toolName,
|
3240
|
+
argsText: JSON.stringify(part.args),
|
3241
|
+
args: typeof part.args === "string" ? part.args : part.args
|
3242
|
+
};
|
3243
|
+
}
|
3244
|
+
return part;
|
3245
|
+
});
|
3246
|
+
if (mergeRoundtrips) {
|
3247
|
+
const previousMessage = messages[messages.length - 1];
|
3248
|
+
if (previousMessage?.role === "assistant") {
|
3249
|
+
previousMessage.content.push(...newContent);
|
3250
|
+
break;
|
3251
|
+
}
|
3252
|
+
}
|
3253
|
+
messages.push({
|
3254
|
+
role: "assistant",
|
3255
|
+
content: newContent
|
3256
|
+
});
|
3257
|
+
break;
|
3258
|
+
}
|
3259
|
+
case "tool": {
|
3260
|
+
const previousMessage = messages[messages.length - 1];
|
3261
|
+
if (previousMessage?.role !== "assistant")
|
3262
|
+
throw new Error(
|
3263
|
+
"A tool message must be preceded by an assistant message."
|
3264
|
+
);
|
3265
|
+
for (const tool of lmMessage.content) {
|
3266
|
+
const toolCall = previousMessage.content.find(
|
3267
|
+
(c) => c.type === "tool-call" && c.toolCallId === tool.toolCallId
|
3268
|
+
);
|
3269
|
+
if (!toolCall)
|
3270
|
+
throw new Error("Received tool result for an unknown tool call.");
|
3271
|
+
if (toolCall.toolName !== tool.toolName)
|
3272
|
+
throw new Error("Tool call name mismatch.");
|
3273
|
+
toolCall.result = tool.result;
|
3274
|
+
if (tool.isError) {
|
3275
|
+
toolCall.isError = true;
|
3276
|
+
}
|
3277
|
+
}
|
3278
|
+
break;
|
3279
|
+
}
|
3280
|
+
default: {
|
3281
|
+
const unhandledRole = role;
|
3282
|
+
throw new Error(`Unknown message role: ${unhandledRole}`);
|
3283
|
+
}
|
3284
|
+
}
|
3285
|
+
}
|
3286
|
+
return messages;
|
3287
|
+
};
|
3288
|
+
|
3289
|
+
// src/runtimes/edge/converters/fromCoreMessage.ts
|
3290
|
+
var fromCoreMessages = (message) => {
|
3291
|
+
return message.map((message2) => {
|
3292
|
+
return {
|
3293
|
+
...message2,
|
3294
|
+
id: generateId(),
|
3295
|
+
createdAt: /* @__PURE__ */ new Date(),
|
3296
|
+
...message2.role === "assistant" ? {
|
3297
|
+
status: { type: "done" }
|
3298
|
+
} : void 0
|
3299
|
+
};
|
3300
|
+
});
|
3301
|
+
};
|
3302
|
+
|
2976
3303
|
// src/ui/thread-config.tsx
|
2977
3304
|
import { createContext as createContext5, useContext as useContext5 } from "react";
|
2978
|
-
import { Fragment as Fragment3, jsx as
|
3305
|
+
import { Fragment as Fragment3, jsx as jsx29 } from "react/jsx-runtime";
|
2979
3306
|
var ThreadConfigContext = createContext5({});
|
2980
3307
|
var useThreadConfig = () => {
|
2981
3308
|
return useContext5(ThreadConfigContext);
|
@@ -2985,119 +3312,21 @@ var ThreadConfigProvider = ({
|
|
2985
3312
|
config
|
2986
3313
|
}) => {
|
2987
3314
|
const assistant = useAssistantContext({ optional: true });
|
2988
|
-
const configProvider = config && Object.keys(config ?? {}).length > 0 ? /* @__PURE__ */
|
3315
|
+
const configProvider = config && Object.keys(config ?? {}).length > 0 ? /* @__PURE__ */ jsx29(ThreadConfigContext.Provider, { value: config, children }) : /* @__PURE__ */ jsx29(Fragment3, { children });
|
2989
3316
|
if (!config?.runtime) return configProvider;
|
2990
3317
|
if (assistant) {
|
2991
3318
|
throw new Error(
|
2992
3319
|
"You provided a runtime to <Thread> while simulataneously using <AssistantRuntimeProvider>. This is not allowed."
|
2993
3320
|
);
|
2994
3321
|
}
|
2995
|
-
return /* @__PURE__ */
|
3322
|
+
return /* @__PURE__ */ jsx29(AssistantRuntimeProvider, { runtime: config.runtime, children: configProvider });
|
2996
3323
|
};
|
2997
3324
|
ThreadConfigProvider.displayName = "ThreadConfigProvider";
|
2998
3325
|
|
2999
3326
|
// src/ui/assistant-action-bar.tsx
|
3000
3327
|
import { forwardRef as forwardRef18 } from "react";
|
3001
3328
|
import { CheckIcon, CopyIcon, RefreshCwIcon } from "lucide-react";
|
3002
|
-
|
3003
|
-
// src/ui/base/tooltip-icon-button.tsx
|
3004
|
-
import { forwardRef as forwardRef17 } from "react";
|
3005
|
-
|
3006
|
-
// src/ui/base/tooltip.tsx
|
3007
|
-
import * as TooltipPrimitive from "@radix-ui/react-tooltip";
|
3008
|
-
|
3009
|
-
// src/ui/utils/withDefaults.tsx
|
3010
|
-
import {
|
3011
|
-
forwardRef as forwardRef15
|
3012
|
-
} from "react";
|
3013
|
-
import classNames from "classnames";
|
3014
|
-
import { jsx as jsx26 } from "react/jsx-runtime";
|
3015
|
-
var withDefaultProps = ({
|
3016
|
-
className,
|
3017
|
-
...defaultProps
|
3018
|
-
}) => ({ className: classNameProp, ...props }) => {
|
3019
|
-
return {
|
3020
|
-
className: classNames(className, classNameProp),
|
3021
|
-
...defaultProps,
|
3022
|
-
...props
|
3023
|
-
};
|
3024
|
-
};
|
3025
|
-
var withDefaults = (Component, defaultProps) => {
|
3026
|
-
const getProps = withDefaultProps(defaultProps);
|
3027
|
-
const WithDefaults = forwardRef15(
|
3028
|
-
(props, ref) => {
|
3029
|
-
const ComponentAsAny = Component;
|
3030
|
-
return /* @__PURE__ */ jsx26(ComponentAsAny, { ...getProps(props), ref });
|
3031
|
-
}
|
3032
|
-
);
|
3033
|
-
WithDefaults.displayName = "withDefaults(" + (typeof Component === "string" ? Component : Component.displayName) + ")";
|
3034
|
-
return WithDefaults;
|
3035
|
-
};
|
3036
|
-
|
3037
|
-
// src/ui/base/tooltip.tsx
|
3038
|
-
import { jsx as jsx27 } from "react/jsx-runtime";
|
3039
|
-
var Tooltip = (props) => {
|
3040
|
-
return /* @__PURE__ */ jsx27(TooltipPrimitive.Provider, { children: /* @__PURE__ */ jsx27(TooltipPrimitive.Root, { ...props }) });
|
3041
|
-
};
|
3042
|
-
Tooltip.displayName = "Tooltip";
|
3043
|
-
var TooltipTrigger = TooltipPrimitive.Trigger;
|
3044
|
-
var TooltipContent = withDefaults(TooltipPrimitive.Content, {
|
3045
|
-
sideOffset: 4,
|
3046
|
-
className: "aui-tooltip-content"
|
3047
|
-
});
|
3048
|
-
TooltipContent.displayName = "TooltipContent";
|
3049
|
-
|
3050
|
-
// src/ui/base/button.tsx
|
3051
|
-
import { cva } from "class-variance-authority";
|
3052
|
-
import { Primitive as Primitive11 } from "@radix-ui/react-primitive";
|
3053
|
-
import { forwardRef as forwardRef16 } from "react";
|
3054
|
-
import { jsx as jsx28 } from "react/jsx-runtime";
|
3055
|
-
var buttonVariants = cva("aui-button", {
|
3056
|
-
variants: {
|
3057
|
-
variant: {
|
3058
|
-
default: "aui-button-primary",
|
3059
|
-
outline: "aui-button-outline",
|
3060
|
-
ghost: "aui-button-ghost"
|
3061
|
-
},
|
3062
|
-
size: {
|
3063
|
-
default: "aui-button-medium",
|
3064
|
-
icon: "aui-button-icon"
|
3065
|
-
}
|
3066
|
-
},
|
3067
|
-
defaultVariants: {
|
3068
|
-
variant: "default",
|
3069
|
-
size: "default"
|
3070
|
-
}
|
3071
|
-
});
|
3072
|
-
var Button = forwardRef16(
|
3073
|
-
({ className, variant, size, ...props }, ref) => {
|
3074
|
-
return /* @__PURE__ */ jsx28(
|
3075
|
-
Primitive11.button,
|
3076
|
-
{
|
3077
|
-
className: buttonVariants({ variant, size, className }),
|
3078
|
-
...props,
|
3079
|
-
ref
|
3080
|
-
}
|
3081
|
-
);
|
3082
|
-
}
|
3083
|
-
);
|
3084
|
-
Button.displayName = "Button";
|
3085
|
-
|
3086
|
-
// src/ui/base/tooltip-icon-button.tsx
|
3087
|
-
import { jsx as jsx29, jsxs as jsxs4 } from "react/jsx-runtime";
|
3088
|
-
var TooltipIconButton = forwardRef17(({ children, tooltip, side = "bottom", ...rest }, ref) => {
|
3089
|
-
return /* @__PURE__ */ jsxs4(Tooltip, { children: [
|
3090
|
-
/* @__PURE__ */ jsx29(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsxs4(Button, { variant: "ghost", size: "icon", ...rest, ref, children: [
|
3091
|
-
children,
|
3092
|
-
/* @__PURE__ */ jsx29("span", { className: "aui-sr-only", children: tooltip })
|
3093
|
-
] }) }),
|
3094
|
-
/* @__PURE__ */ jsx29(TooltipContent, { side, children: tooltip })
|
3095
|
-
] });
|
3096
|
-
});
|
3097
|
-
TooltipIconButton.displayName = "TooltipIconButton";
|
3098
|
-
|
3099
|
-
// src/ui/assistant-action-bar.tsx
|
3100
|
-
import { jsx as jsx30, jsxs as jsxs5 } from "react/jsx-runtime";
|
3329
|
+
import { Fragment as Fragment4, jsx as jsx30, jsxs as jsxs5 } from "react/jsx-runtime";
|
3101
3330
|
var useAllowCopy = () => {
|
3102
3331
|
const { assistantMessage: { allowCopy = true } = {} } = useThreadConfig();
|
3103
3332
|
const { useThreadActions } = useThreadContext();
|
@@ -3140,10 +3369,10 @@ var AssistantActionBarCopy = forwardRef18((props, ref) => {
|
|
3140
3369
|
} = useThreadConfig();
|
3141
3370
|
const allowCopy = useAllowCopy();
|
3142
3371
|
if (!allowCopy) return null;
|
3143
|
-
return /* @__PURE__ */ jsx30(actionBar_exports.Copy, { asChild: true, children: /* @__PURE__ */
|
3372
|
+
return /* @__PURE__ */ jsx30(actionBar_exports.Copy, { asChild: true, children: /* @__PURE__ */ jsx30(TooltipIconButton, { tooltip, ...props, ref, children: props.children ?? /* @__PURE__ */ jsxs5(Fragment4, { children: [
|
3144
3373
|
/* @__PURE__ */ jsx30(message_exports.If, { copied: true, children: /* @__PURE__ */ jsx30(CheckIcon, {}) }),
|
3145
3374
|
/* @__PURE__ */ jsx30(message_exports.If, { copied: false, children: /* @__PURE__ */ jsx30(CopyIcon, {}) })
|
3146
|
-
] }) });
|
3375
|
+
] }) }) });
|
3147
3376
|
});
|
3148
3377
|
AssistantActionBarCopy.displayName = "AssistantActionBarCopy";
|
3149
3378
|
var AssistantActionBarReload = forwardRef18((props, ref) => {
|
@@ -3192,7 +3421,7 @@ var BranchPickerPrevious2 = forwardRef19((props, ref) => {
|
|
3192
3421
|
branchPicker: { previous: { tooltip = "Previous" } = {} } = {}
|
3193
3422
|
} = {}
|
3194
3423
|
} = useThreadConfig();
|
3195
|
-
return /* @__PURE__ */ jsx31(branchPicker_exports.Previous, { asChild: true, children: /* @__PURE__ */ jsx31(TooltipIconButton, { tooltip, ...props, ref, children: /* @__PURE__ */ jsx31(ChevronLeftIcon, {}) }) });
|
3424
|
+
return /* @__PURE__ */ jsx31(branchPicker_exports.Previous, { asChild: true, children: /* @__PURE__ */ jsx31(TooltipIconButton, { tooltip, ...props, ref, children: props.children ?? /* @__PURE__ */ jsx31(ChevronLeftIcon, {}) }) });
|
3196
3425
|
});
|
3197
3426
|
BranchPickerPrevious2.displayName = "BranchPickerPrevious";
|
3198
3427
|
var BranchPickerStateWrapper = withDefaults("span", {
|
@@ -3210,7 +3439,7 @@ var BranchPickerNext = forwardRef19((props, ref) => {
|
|
3210
3439
|
const {
|
3211
3440
|
strings: { branchPicker: { next: { tooltip = "Next" } = {} } = {} } = {}
|
3212
3441
|
} = useThreadConfig();
|
3213
|
-
return /* @__PURE__ */ jsx31(branchPicker_exports.Next, { asChild: true, children: /* @__PURE__ */ jsx31(TooltipIconButton, { tooltip, ...props, ref, children: /* @__PURE__ */ jsx31(ChevronRightIcon, {}) }) });
|
3442
|
+
return /* @__PURE__ */ jsx31(branchPicker_exports.Next, { asChild: true, children: /* @__PURE__ */ jsx31(TooltipIconButton, { tooltip, ...props, ref, children: props.children ?? /* @__PURE__ */ jsx31(ChevronRightIcon, {}) }) });
|
3214
3443
|
});
|
3215
3444
|
BranchPickerNext.displayName = "BranchPickerNext";
|
3216
3445
|
var exports2 = {
|
@@ -3317,7 +3546,7 @@ import { ArrowDownIcon } from "lucide-react";
|
|
3317
3546
|
|
3318
3547
|
// src/ui/composer.tsx
|
3319
3548
|
import { forwardRef as forwardRef21 } from "react";
|
3320
|
-
import {
|
3549
|
+
import { SendHorizontalIcon } from "lucide-react";
|
3321
3550
|
|
3322
3551
|
// src/ui/base/CircleStopIcon.tsx
|
3323
3552
|
import { jsx as jsx35 } from "react/jsx-runtime";
|
@@ -3335,7 +3564,7 @@ var CircleStopIcon = () => {
|
|
3335
3564
|
CircleStopIcon.displayName = "CircleStopIcon";
|
3336
3565
|
|
3337
3566
|
// src/ui/composer.tsx
|
3338
|
-
import { Fragment as
|
3567
|
+
import { Fragment as Fragment5, jsx as jsx36, jsxs as jsxs9 } from "react/jsx-runtime";
|
3339
3568
|
var Composer = () => {
|
3340
3569
|
return /* @__PURE__ */ jsxs9(ComposerRoot, { children: [
|
3341
3570
|
/* @__PURE__ */ jsx36(ComposerInput, { autoFocus: true }),
|
@@ -3371,7 +3600,7 @@ var useAllowCancel = () => {
|
|
3371
3600
|
var ComposerAction = () => {
|
3372
3601
|
const allowCancel = useAllowCancel();
|
3373
3602
|
if (!allowCancel) return /* @__PURE__ */ jsx36(ComposerSend, {});
|
3374
|
-
return /* @__PURE__ */ jsxs9(
|
3603
|
+
return /* @__PURE__ */ jsxs9(Fragment5, { children: [
|
3375
3604
|
/* @__PURE__ */ jsx36(thread_exports.If, { running: false, children: /* @__PURE__ */ jsx36(ComposerSend, {}) }),
|
3376
3605
|
/* @__PURE__ */ jsx36(thread_exports.If, { running: true, children: /* @__PURE__ */ jsx36(ComposerCancel, {}) })
|
3377
3606
|
] });
|
@@ -3385,7 +3614,7 @@ var ComposerSend = forwardRef21((props, ref) => {
|
|
3385
3614
|
const {
|
3386
3615
|
strings: { composer: { send: { tooltip = "Send" } = {} } = {} } = {}
|
3387
3616
|
} = useThreadConfig();
|
3388
|
-
return /* @__PURE__ */ jsx36(composer_exports.Send, { asChild: true, children: /* @__PURE__ */ jsx36(ComposerSendButton, { tooltip, ...props, ref, children: /* @__PURE__ */ jsx36(
|
3617
|
+
return /* @__PURE__ */ jsx36(composer_exports.Send, { asChild: true, children: /* @__PURE__ */ jsx36(ComposerSendButton, { tooltip, ...props, ref, children: props.children ?? /* @__PURE__ */ jsx36(SendHorizontalIcon, {}) }) });
|
3389
3618
|
});
|
3390
3619
|
ComposerSend.displayName = "ComposerSend";
|
3391
3620
|
var ComposerCancelButton = withDefaults(TooltipIconButton, {
|
@@ -3396,7 +3625,7 @@ var ComposerCancel = forwardRef21((props, ref) => {
|
|
3396
3625
|
const {
|
3397
3626
|
strings: { composer: { cancel: { tooltip = "Cancel" } = {} } = {} } = {}
|
3398
3627
|
} = useThreadConfig();
|
3399
|
-
return /* @__PURE__ */ jsx36(composer_exports.Cancel, { asChild: true, children: /* @__PURE__ */ jsx36(ComposerCancelButton, { tooltip, ...props, ref, children: /* @__PURE__ */ jsx36(CircleStopIcon, {}) }) });
|
3628
|
+
return /* @__PURE__ */ jsx36(composer_exports.Cancel, { asChild: true, children: /* @__PURE__ */ jsx36(ComposerCancelButton, { tooltip, ...props, ref, children: props.children ?? /* @__PURE__ */ jsx36(CircleStopIcon, {}) }) });
|
3400
3629
|
});
|
3401
3630
|
ComposerCancel.displayName = "ComposerCancel";
|
3402
3631
|
var exports5 = {
|
@@ -3511,7 +3740,7 @@ var UserActionBarEdit = forwardRef23((props, ref) => {
|
|
3511
3740
|
} = useThreadConfig();
|
3512
3741
|
const allowEdit = useAllowEdit();
|
3513
3742
|
if (!allowEdit) return null;
|
3514
|
-
return /* @__PURE__ */ jsx38(actionBar_exports.Edit, { asChild: true, children: /* @__PURE__ */ jsx38(TooltipIconButton, { tooltip, ...props, ref, children: /* @__PURE__ */ jsx38(PencilIcon, {}) }) });
|
3743
|
+
return /* @__PURE__ */ jsx38(actionBar_exports.Edit, { asChild: true, children: /* @__PURE__ */ jsx38(TooltipIconButton, { tooltip, ...props, ref, children: props.children ?? /* @__PURE__ */ jsx38(PencilIcon, {}) }) });
|
3515
3744
|
});
|
3516
3745
|
UserActionBarEdit.displayName = "UserActionBarEdit";
|
3517
3746
|
var exports7 = {
|
@@ -3589,7 +3818,7 @@ var EditComposerCancel = forwardRef25(
|
|
3589
3818
|
editComposer: { cancel: { label = "Cancel" } = {} } = {}
|
3590
3819
|
} = {}
|
3591
3820
|
} = useThreadConfig();
|
3592
|
-
return /* @__PURE__ */ jsx40(composer_exports.Cancel, { asChild: true, children: /* @__PURE__ */ jsx40(Button, { variant: "ghost", ...props, ref, children: label }) });
|
3821
|
+
return /* @__PURE__ */ jsx40(composer_exports.Cancel, { asChild: true, children: /* @__PURE__ */ jsx40(Button, { variant: "ghost", ...props, ref, children: props.children ?? label }) });
|
3593
3822
|
}
|
3594
3823
|
);
|
3595
3824
|
EditComposerCancel.displayName = "EditComposerCancel";
|
@@ -3598,7 +3827,7 @@ var EditComposerSend = forwardRef25(
|
|
3598
3827
|
const {
|
3599
3828
|
strings: { editComposer: { send: { label = "Send" } = {} } = {} } = {}
|
3600
3829
|
} = useThreadConfig();
|
3601
|
-
return /* @__PURE__ */ jsx40(composer_exports.Send, { asChild: true, children: /* @__PURE__ */ jsx40(Button, { ...props, ref, children: label }) });
|
3830
|
+
return /* @__PURE__ */ jsx40(composer_exports.Send, { asChild: true, children: /* @__PURE__ */ jsx40(Button, { ...props, ref, children: props.children ?? label }) });
|
3602
3831
|
}
|
3603
3832
|
);
|
3604
3833
|
EditComposerSend.displayName = "EditComposerSend";
|
@@ -3666,7 +3895,10 @@ var ThreadScrollToBottom = forwardRef26((props, ref) => {
|
|
3666
3895
|
thread: { scrollToBottom: { tooltip = "Scroll to bottom" } = {} } = {}
|
3667
3896
|
} = {}
|
3668
3897
|
} = useThreadConfig();
|
3669
|
-
return /* @__PURE__ */ jsx41(thread_exports.ScrollToBottom, { asChild: true, children: /* @__PURE__ */
|
3898
|
+
return /* @__PURE__ */ jsx41(thread_exports.ScrollToBottom, { asChild: true, children: /* @__PURE__ */ jsxs13(ThreadScrollToBottomIconButton, { tooltip, ...props, ref, children: [
|
3899
|
+
"|",
|
3900
|
+
props.children ?? /* @__PURE__ */ jsx41(ArrowDownIcon, {})
|
3901
|
+
] }) });
|
3670
3902
|
});
|
3671
3903
|
ThreadScrollToBottom.displayName = "ThreadScrollToBottom";
|
3672
3904
|
var exports10 = {
|
@@ -3679,7 +3911,7 @@ var exports10 = {
|
|
3679
3911
|
var thread_default = Object.assign(Thread, exports10);
|
3680
3912
|
|
3681
3913
|
// src/ui/assistant-modal.tsx
|
3682
|
-
import { jsx as jsx42, jsxs as jsxs14 } from "react/jsx-runtime";
|
3914
|
+
import { Fragment as Fragment6, jsx as jsx42, jsxs as jsxs14 } from "react/jsx-runtime";
|
3683
3915
|
var AssistantModal = (config) => {
|
3684
3916
|
return /* @__PURE__ */ jsxs14(AssistantModalRoot, { config, children: [
|
3685
3917
|
/* @__PURE__ */ jsx42(AssistantModalTrigger, {}),
|
@@ -3717,7 +3949,7 @@ var AssistantModalButton = forwardRef27(({ "data-state": state, ...rest }, ref)
|
|
3717
3949
|
} = {}
|
3718
3950
|
} = useThreadConfig();
|
3719
3951
|
const tooltip = state === "open" ? openTooltip : closedTooltip;
|
3720
|
-
return /* @__PURE__ */
|
3952
|
+
return /* @__PURE__ */ jsx42(
|
3721
3953
|
ModalButtonStyled,
|
3722
3954
|
{
|
3723
3955
|
side: "left",
|
@@ -3725,17 +3957,22 @@ var AssistantModalButton = forwardRef27(({ "data-state": state, ...rest }, ref)
|
|
3725
3957
|
"data-state": state,
|
3726
3958
|
...rest,
|
3727
3959
|
ref,
|
3728
|
-
children: [
|
3729
|
-
/* @__PURE__ */ jsx42(
|
3960
|
+
children: rest.children ?? /* @__PURE__ */ jsxs14(Fragment6, { children: [
|
3961
|
+
/* @__PURE__ */ jsx42(
|
3962
|
+
BotIcon,
|
3963
|
+
{
|
3964
|
+
"data-state": state,
|
3965
|
+
className: "aui-modal-button-closed-icon"
|
3966
|
+
}
|
3967
|
+
),
|
3730
3968
|
/* @__PURE__ */ jsx42(
|
3731
3969
|
ChevronDownIcon,
|
3732
3970
|
{
|
3733
3971
|
"data-state": state,
|
3734
3972
|
className: "aui-modal-button-open-icon"
|
3735
3973
|
}
|
3736
|
-
)
|
3737
|
-
|
3738
|
-
]
|
3974
|
+
)
|
3975
|
+
] })
|
3739
3976
|
}
|
3740
3977
|
);
|
3741
3978
|
});
|
@@ -3751,16 +3988,6 @@ var exports11 = {
|
|
3751
3988
|
Content: AssistantModalContent
|
3752
3989
|
};
|
3753
3990
|
var assistant_modal_default = Object.assign(AssistantModal, exports11);
|
3754
|
-
|
3755
|
-
// src/internal.ts
|
3756
|
-
var internal_exports = {};
|
3757
|
-
__export(internal_exports, {
|
3758
|
-
BaseAssistantRuntime: () => BaseAssistantRuntime,
|
3759
|
-
MessageRepository: () => MessageRepository,
|
3760
|
-
ProxyConfigProvider: () => ProxyConfigProvider,
|
3761
|
-
TooltipIconButton: () => TooltipIconButton,
|
3762
|
-
useSmooth: () => useSmooth
|
3763
|
-
});
|
3764
3991
|
export {
|
3765
3992
|
actionBar_exports as ActionBarPrimitive,
|
3766
3993
|
assistant_action_bar_default as AssistantActionBar,
|
@@ -3774,6 +4001,7 @@ export {
|
|
3774
4001
|
composer_exports as ComposerPrimitive,
|
3775
4002
|
content_part_default as ContentPart,
|
3776
4003
|
contentPart_exports as ContentPartPrimitive,
|
4004
|
+
EdgeChatAdapter,
|
3777
4005
|
edit_composer_default as EditComposer,
|
3778
4006
|
internal_exports as INTERNAL,
|
3779
4007
|
message_exports as MessagePrimitive,
|
@@ -3783,8 +4011,11 @@ export {
|
|
3783
4011
|
thread_welcome_default as ThreadWelcome,
|
3784
4012
|
user_action_bar_default as UserActionBar,
|
3785
4013
|
user_message_default as UserMessage,
|
4014
|
+
fromCoreMessages,
|
4015
|
+
fromLanguageModelMessages,
|
3786
4016
|
makeAssistantTool,
|
3787
4017
|
makeAssistantToolUI,
|
4018
|
+
toLanguageModelMessages,
|
3788
4019
|
useActionBarCopy,
|
3789
4020
|
useActionBarEdit,
|
3790
4021
|
useActionBarReload,
|