@assistant-ui/react 0.5.39 → 0.5.41
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/index.d.mts +75 -17
- package/dist/index.d.ts +75 -17
- package/dist/index.js +292 -86
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +485 -279
- package/dist/index.mjs.map +1 -1
- package/package.json +6 -6
package/dist/index.mjs
CHANGED
@@ -204,7 +204,8 @@ var makeThreadActionStore = (runtimeStore) => {
|
|
204
204
|
startRun: (parentId) => runtimeStore.getState().startRun(parentId),
|
205
205
|
append: (message) => runtimeStore.getState().append(message),
|
206
206
|
cancelRun: () => runtimeStore.getState().cancelRun(),
|
207
|
-
addToolResult: (options) => runtimeStore.getState().addToolResult(options)
|
207
|
+
addToolResult: (options) => runtimeStore.getState().addToolResult(options),
|
208
|
+
speak: (messageId) => runtimeStore.getState().speak(messageId)
|
208
209
|
})
|
209
210
|
);
|
210
211
|
};
|
@@ -1056,31 +1057,78 @@ var EdgeChatAdapter = class {
|
|
1056
1057
|
// src/runtimes/edge/useEdgeRuntime.ts
|
1057
1058
|
var useEdgeRuntime = ({
|
1058
1059
|
initialMessages,
|
1060
|
+
maxToolRoundtrips,
|
1061
|
+
adapters,
|
1059
1062
|
...options
|
1060
1063
|
}) => {
|
1061
1064
|
const [adapter] = useState3(() => new EdgeChatAdapter(options));
|
1062
|
-
return useLocalRuntime(adapter, {
|
1065
|
+
return useLocalRuntime(adapter, {
|
1066
|
+
initialMessages,
|
1067
|
+
maxToolRoundtrips,
|
1068
|
+
adapters
|
1069
|
+
});
|
1063
1070
|
};
|
1064
1071
|
|
1065
1072
|
// src/runtimes/local/shouldContinue.tsx
|
1066
1073
|
var shouldContinue = (result) => result.status?.type === "requires-action" && result.status.reason === "tool-calls" && result.content.every((c) => c.type !== "tool-call" || !!c.result);
|
1067
1074
|
|
1075
|
+
// src/utils/getThreadMessageText.tsx
|
1076
|
+
var getThreadMessageText = (message) => {
|
1077
|
+
const textParts = message.content.filter(
|
1078
|
+
(part) => part.type === "text"
|
1079
|
+
);
|
1080
|
+
return textParts.map((part) => part.text).join("\n\n");
|
1081
|
+
};
|
1082
|
+
|
1083
|
+
// src/runtimes/speech/WebSpeechSynthesisAdapter.ts
|
1084
|
+
var WebSpeechSynthesisAdapter = class {
|
1085
|
+
speak(message) {
|
1086
|
+
const text = getThreadMessageText(message);
|
1087
|
+
const utterance = new SpeechSynthesisUtterance(text);
|
1088
|
+
let ended = false;
|
1089
|
+
const endHandlers = /* @__PURE__ */ new Set();
|
1090
|
+
const handleEnd = () => {
|
1091
|
+
if (ended) return;
|
1092
|
+
ended = true;
|
1093
|
+
endHandlers.forEach((handler) => handler());
|
1094
|
+
};
|
1095
|
+
utterance.addEventListener("end", handleEnd);
|
1096
|
+
utterance.addEventListener("error", handleEnd);
|
1097
|
+
window.speechSynthesis.speak(utterance);
|
1098
|
+
return {
|
1099
|
+
stop: () => {
|
1100
|
+
window.speechSynthesis.cancel();
|
1101
|
+
handleEnd();
|
1102
|
+
},
|
1103
|
+
onEnd: (callback) => {
|
1104
|
+
if (ended) {
|
1105
|
+
let cancelled = false;
|
1106
|
+
queueMicrotask(() => {
|
1107
|
+
if (!cancelled) callback();
|
1108
|
+
});
|
1109
|
+
return () => {
|
1110
|
+
cancelled = true;
|
1111
|
+
};
|
1112
|
+
} else {
|
1113
|
+
endHandlers.add(callback);
|
1114
|
+
return () => {
|
1115
|
+
endHandlers.delete(callback);
|
1116
|
+
};
|
1117
|
+
}
|
1118
|
+
}
|
1119
|
+
};
|
1120
|
+
}
|
1121
|
+
};
|
1122
|
+
|
1068
1123
|
// src/runtimes/local/LocalThreadRuntime.tsx
|
1069
|
-
var CAPABILITIES = Object.freeze({
|
1070
|
-
switchToBranch: true,
|
1071
|
-
edit: true,
|
1072
|
-
reload: true,
|
1073
|
-
cancel: true,
|
1074
|
-
copy: true
|
1075
|
-
});
|
1076
1124
|
var LocalThreadRuntime = class {
|
1077
|
-
constructor(configProvider, adapter, options) {
|
1125
|
+
constructor(configProvider, adapter, { initialMessages, ...options }) {
|
1078
1126
|
this.configProvider = configProvider;
|
1079
1127
|
this.adapter = adapter;
|
1080
1128
|
this.options = options;
|
1081
|
-
if (
|
1129
|
+
if (initialMessages) {
|
1082
1130
|
let parentId = null;
|
1083
|
-
const messages = fromCoreMessages(
|
1131
|
+
const messages = fromCoreMessages(initialMessages);
|
1084
1132
|
for (const message of messages) {
|
1085
1133
|
this.repository.addOrUpdateMessage(parentId, message);
|
1086
1134
|
parentId = message.id;
|
@@ -1090,7 +1138,14 @@ var LocalThreadRuntime = class {
|
|
1090
1138
|
_subscriptions = /* @__PURE__ */ new Set();
|
1091
1139
|
abortController = null;
|
1092
1140
|
repository = new MessageRepository();
|
1093
|
-
capabilities =
|
1141
|
+
capabilities = {
|
1142
|
+
switchToBranch: true,
|
1143
|
+
edit: true,
|
1144
|
+
reload: true,
|
1145
|
+
cancel: true,
|
1146
|
+
unstable_copy: true,
|
1147
|
+
speak: false
|
1148
|
+
};
|
1094
1149
|
isDisabled = false;
|
1095
1150
|
get messages() {
|
1096
1151
|
return this.repository.getMessages();
|
@@ -1102,6 +1157,15 @@ var LocalThreadRuntime = class {
|
|
1102
1157
|
this.notifySubscribers();
|
1103
1158
|
}
|
1104
1159
|
};
|
1160
|
+
_options;
|
1161
|
+
set options({ initialMessages, ...options }) {
|
1162
|
+
this._options = options;
|
1163
|
+
const canSpeak = options.adapters?.speech !== void 0;
|
1164
|
+
if (this.capabilities.speak !== canSpeak) {
|
1165
|
+
this.capabilities.speak = canSpeak;
|
1166
|
+
this.notifySubscribers();
|
1167
|
+
}
|
1168
|
+
}
|
1105
1169
|
getBranches(messageId) {
|
1106
1170
|
return this.repository.getBranches(messageId);
|
1107
1171
|
}
|
@@ -1175,7 +1239,7 @@ var LocalThreadRuntime = class {
|
|
1175
1239
|
this.repository.addOrUpdateMessage(parentId, message);
|
1176
1240
|
this.notifySubscribers();
|
1177
1241
|
};
|
1178
|
-
const maxToolRoundtrips = this.
|
1242
|
+
const maxToolRoundtrips = this._options.maxToolRoundtrips ?? 1;
|
1179
1243
|
const toolRoundtrips = message.metadata?.roundtrips?.length ?? 0;
|
1180
1244
|
if (toolRoundtrips > maxToolRoundtrips) {
|
1181
1245
|
updateMessage({
|
@@ -1239,7 +1303,11 @@ var LocalThreadRuntime = class {
|
|
1239
1303
|
this._subscriptions.add(callback);
|
1240
1304
|
return () => this._subscriptions.delete(callback);
|
1241
1305
|
}
|
1242
|
-
addToolResult({
|
1306
|
+
addToolResult({
|
1307
|
+
messageId,
|
1308
|
+
toolCallId,
|
1309
|
+
result
|
1310
|
+
}) {
|
1243
1311
|
let { parentId, message } = this.repository.getMessage(messageId);
|
1244
1312
|
if (message.role !== "assistant")
|
1245
1313
|
throw new Error("Tried to add tool result to non-assistant message");
|
@@ -1266,6 +1334,11 @@ var LocalThreadRuntime = class {
|
|
1266
1334
|
this.performRoundtrip(parentId, message);
|
1267
1335
|
}
|
1268
1336
|
}
|
1337
|
+
speak(messageId) {
|
1338
|
+
const { message } = this.repository.getMessage(messageId);
|
1339
|
+
const adapter = new WebSpeechSynthesisAdapter();
|
1340
|
+
return adapter.speak(message);
|
1341
|
+
}
|
1269
1342
|
export() {
|
1270
1343
|
return this.repository.export();
|
1271
1344
|
}
|
@@ -1424,14 +1497,6 @@ var fromThreadMessageLike = (like, fallbackId, fallbackStatus) => {
|
|
1424
1497
|
}
|
1425
1498
|
};
|
1426
1499
|
|
1427
|
-
// src/utils/getThreadMessageText.tsx
|
1428
|
-
var getThreadMessageText = (message) => {
|
1429
|
-
const textParts = message.content.filter(
|
1430
|
-
(part) => part.type === "text"
|
1431
|
-
);
|
1432
|
-
return textParts.map((part) => part.text).join("\n\n");
|
1433
|
-
};
|
1434
|
-
|
1435
1500
|
// src/runtimes/external-store/ExternalStoreThreadRuntime.tsx
|
1436
1501
|
var hasUpcomingMessage = (isRunning, messages) => {
|
1437
1502
|
return isRunning && messages[messages.length - 1]?.role !== "assistant";
|
@@ -1445,7 +1510,8 @@ var ExternalStoreThreadRuntime = class {
|
|
1445
1510
|
edit: false,
|
1446
1511
|
reload: false,
|
1447
1512
|
cancel: false,
|
1448
|
-
|
1513
|
+
unstable_copy: false,
|
1514
|
+
speak: false
|
1449
1515
|
};
|
1450
1516
|
get capabilities() {
|
1451
1517
|
return this._capabilities;
|
@@ -1475,7 +1541,8 @@ var ExternalStoreThreadRuntime = class {
|
|
1475
1541
|
edit: this._store.onEdit !== void 0,
|
1476
1542
|
reload: this._store.onReload !== void 0,
|
1477
1543
|
cancel: this._store.onCancel !== void 0,
|
1478
|
-
|
1544
|
+
unstable_copy: this._store.unstable_capabilities?.copy !== null,
|
1545
|
+
speak: this._store.onSpeak !== void 0
|
1479
1546
|
};
|
1480
1547
|
if (oldStore) {
|
1481
1548
|
if (oldStore.convertMessage !== store.convertMessage) {
|
@@ -1572,6 +1639,17 @@ var ExternalStoreThreadRuntime = class {
|
|
1572
1639
|
this.updateMessages(messages);
|
1573
1640
|
}, 0);
|
1574
1641
|
}
|
1642
|
+
addToolResult(options) {
|
1643
|
+
if (!this._store.onAddToolResult)
|
1644
|
+
throw new Error("Runtime does not support tool results.");
|
1645
|
+
this._store.onAddToolResult(options);
|
1646
|
+
}
|
1647
|
+
speak(messageId) {
|
1648
|
+
if (!this._store.onSpeak)
|
1649
|
+
throw new Error("Runtime does not support speaking.");
|
1650
|
+
const { message } = this.repository.getMessage(messageId);
|
1651
|
+
return this._store.onSpeak(message);
|
1652
|
+
}
|
1575
1653
|
subscribe(callback) {
|
1576
1654
|
this._subscriptions.add(callback);
|
1577
1655
|
return () => this._subscriptions.delete(callback);
|
@@ -1581,11 +1659,6 @@ var ExternalStoreThreadRuntime = class {
|
|
1581
1659
|
messages.flatMap(getExternalStoreMessage).filter((m) => m != null)
|
1582
1660
|
);
|
1583
1661
|
};
|
1584
|
-
addToolResult(options) {
|
1585
|
-
if (!this._store.onAddToolResult)
|
1586
|
-
throw new Error("Runtime does not support tool results.");
|
1587
|
-
this._store.onAddToolResult(options);
|
1588
|
-
}
|
1589
1662
|
};
|
1590
1663
|
|
1591
1664
|
// src/runtimes/external-store/ExternalStoreRuntime.tsx
|
@@ -1976,8 +2049,8 @@ var useActionBarCopy = ({
|
|
1976
2049
|
const { useMessage, useMessageUtils, useEditComposer } = useMessageContext();
|
1977
2050
|
const hasCopyableContent = useCombinedStore(
|
1978
2051
|
[useMessage, useEditComposer],
|
1979
|
-
(
|
1980
|
-
return !c.isEditing &&
|
2052
|
+
({ message }, c) => {
|
2053
|
+
return !c.isEditing && (message.role !== "assistant" || message.status.type !== "running") && message.content.some((c2) => c2.type === "text" && c2.text.length > 0);
|
1981
2054
|
}
|
1982
2055
|
);
|
1983
2056
|
const callback = useCallback3(() => {
|
@@ -2029,6 +2102,38 @@ var useActionBarReload = () => {
|
|
2029
2102
|
return callback;
|
2030
2103
|
};
|
2031
2104
|
|
2105
|
+
// src/primitive-hooks/actionBar/useActionBarSpeak.tsx
|
2106
|
+
import { useCallback as useCallback6 } from "react";
|
2107
|
+
var useActionBarSpeak = () => {
|
2108
|
+
const { useThreadActions } = useThreadContext();
|
2109
|
+
const { useMessage, useEditComposer, useMessageUtils } = useMessageContext();
|
2110
|
+
const hasSpeakableContent = useCombinedStore(
|
2111
|
+
[useMessage, useEditComposer],
|
2112
|
+
({ message }, c) => {
|
2113
|
+
return !c.isEditing && (message.role !== "assistant" || message.status.type !== "running") && message.content.some((c2) => c2.type === "text" && c2.text.length > 0);
|
2114
|
+
}
|
2115
|
+
);
|
2116
|
+
const callback = useCallback6(async () => {
|
2117
|
+
const { message } = useMessage.getState();
|
2118
|
+
const utt = useThreadActions.getState().speak(message.id);
|
2119
|
+
useMessageUtils.getState().addUtterance(utt);
|
2120
|
+
}, [useThreadActions, useMessage, useMessageUtils]);
|
2121
|
+
if (!hasSpeakableContent) return null;
|
2122
|
+
return callback;
|
2123
|
+
};
|
2124
|
+
|
2125
|
+
// src/primitive-hooks/actionBar/useActionBarStopSpeaking.tsx
|
2126
|
+
import { useCallback as useCallback7 } from "react";
|
2127
|
+
var useActionBarStopSpeaking = () => {
|
2128
|
+
const { useMessageUtils } = useMessageContext();
|
2129
|
+
const isSpeaking = useMessageUtils((u) => u.isSpeaking);
|
2130
|
+
const callback = useCallback7(async () => {
|
2131
|
+
useMessageUtils.getState().stopSpeaking();
|
2132
|
+
}, [useMessageUtils]);
|
2133
|
+
if (!isSpeaking) return null;
|
2134
|
+
return callback;
|
2135
|
+
};
|
2136
|
+
|
2032
2137
|
// src/primitive-hooks/branchPicker/useBranchPickerCount.tsx
|
2033
2138
|
var useBranchPickerCount = () => {
|
2034
2139
|
const { useMessage } = useMessageContext();
|
@@ -2037,7 +2142,7 @@ var useBranchPickerCount = () => {
|
|
2037
2142
|
};
|
2038
2143
|
|
2039
2144
|
// src/primitive-hooks/branchPicker/useBranchPickerNext.tsx
|
2040
|
-
import { useCallback as
|
2145
|
+
import { useCallback as useCallback8 } from "react";
|
2041
2146
|
var useBranchPickerNext = () => {
|
2042
2147
|
const { useThreadActions } = useThreadContext();
|
2043
2148
|
const { useMessage, useEditComposer } = useMessageContext();
|
@@ -2045,7 +2150,7 @@ var useBranchPickerNext = () => {
|
|
2045
2150
|
[useMessage, useEditComposer],
|
2046
2151
|
(m, c) => c.isEditing || m.branches.indexOf(m.message.id) + 1 >= m.branches.length
|
2047
2152
|
);
|
2048
|
-
const callback =
|
2153
|
+
const callback = useCallback8(() => {
|
2049
2154
|
const { message, branches } = useMessage.getState();
|
2050
2155
|
useThreadActions.getState().switchToBranch(branches[branches.indexOf(message.id) + 1]);
|
2051
2156
|
}, [useThreadActions, useMessage]);
|
@@ -2061,7 +2166,7 @@ var useBranchPickerNumber = () => {
|
|
2061
2166
|
};
|
2062
2167
|
|
2063
2168
|
// src/primitive-hooks/branchPicker/useBranchPickerPrevious.tsx
|
2064
|
-
import { useCallback as
|
2169
|
+
import { useCallback as useCallback9 } from "react";
|
2065
2170
|
var useBranchPickerPrevious = () => {
|
2066
2171
|
const { useThreadActions } = useThreadContext();
|
2067
2172
|
const { useMessage, useEditComposer } = useMessageContext();
|
@@ -2069,7 +2174,7 @@ var useBranchPickerPrevious = () => {
|
|
2069
2174
|
[useMessage, useEditComposer],
|
2070
2175
|
(m, c) => c.isEditing || m.branches.indexOf(m.message.id) <= 0
|
2071
2176
|
);
|
2072
|
-
const callback =
|
2177
|
+
const callback = useCallback9(() => {
|
2073
2178
|
const { message, branches } = useMessage.getState();
|
2074
2179
|
useThreadActions.getState().switchToBranch(branches[branches.indexOf(message.id) - 1]);
|
2075
2180
|
}, [useThreadActions, useMessage]);
|
@@ -2078,11 +2183,11 @@ var useBranchPickerPrevious = () => {
|
|
2078
2183
|
};
|
2079
2184
|
|
2080
2185
|
// src/primitive-hooks/composer/useComposerCancel.tsx
|
2081
|
-
import { useCallback as
|
2186
|
+
import { useCallback as useCallback10 } from "react";
|
2082
2187
|
var useComposerCancel = () => {
|
2083
2188
|
const { useComposer } = useComposerContext();
|
2084
2189
|
const disabled = useComposer((c) => !c.canCancel);
|
2085
|
-
const callback =
|
2190
|
+
const callback = useCallback10(() => {
|
2086
2191
|
const { cancel } = useComposer.getState();
|
2087
2192
|
cancel();
|
2088
2193
|
}, [useComposer]);
|
@@ -2101,7 +2206,7 @@ var useComposerIf = (props) => {
|
|
2101
2206
|
};
|
2102
2207
|
|
2103
2208
|
// src/primitive-hooks/composer/useComposerSend.tsx
|
2104
|
-
import { useCallback as
|
2209
|
+
import { useCallback as useCallback11 } from "react";
|
2105
2210
|
var useComposerSend = () => {
|
2106
2211
|
const {
|
2107
2212
|
useThread,
|
@@ -2113,7 +2218,7 @@ var useComposerSend = () => {
|
|
2113
2218
|
[useThread, useComposer],
|
2114
2219
|
(t, c) => t.isRunning || !c.isEditing || c.text.length === 0
|
2115
2220
|
);
|
2116
|
-
const callback =
|
2221
|
+
const callback = useCallback11(() => {
|
2117
2222
|
const composerState = useComposer.getState();
|
2118
2223
|
if (!composerState.isEditing) return;
|
2119
2224
|
composerState.send();
|
@@ -2168,7 +2273,7 @@ var useMessageIf = (props) => {
|
|
2168
2273
|
const { useMessage, useMessageUtils } = useMessageContext();
|
2169
2274
|
return useCombinedStore(
|
2170
2275
|
[useMessage, useMessageUtils],
|
2171
|
-
({ message, branches, isLast }, { isCopied, isHovering }) => {
|
2276
|
+
({ message, branches, isLast }, { isCopied, isHovering, isSpeaking }) => {
|
2172
2277
|
if (props.hasBranches === true && branches.length < 2) return false;
|
2173
2278
|
if (props.user && message.role !== "user") return false;
|
2174
2279
|
if (props.assistant && message.role !== "assistant") return false;
|
@@ -2176,6 +2281,8 @@ var useMessageIf = (props) => {
|
|
2176
2281
|
if (props.lastOrHover === true && !isHovering && !isLast) return false;
|
2177
2282
|
if (props.copied === true && !isCopied) return false;
|
2178
2283
|
if (props.copied === false && isCopied) return false;
|
2284
|
+
if (props.speaking === true && !isSpeaking) return false;
|
2285
|
+
if (props.speaking === false && isSpeaking) return false;
|
2179
2286
|
return true;
|
2180
2287
|
}
|
2181
2288
|
);
|
@@ -2204,11 +2311,11 @@ var useThreadEmpty = () => {
|
|
2204
2311
|
};
|
2205
2312
|
|
2206
2313
|
// src/primitive-hooks/thread/useThreadScrollToBottom.tsx
|
2207
|
-
import { useCallback as
|
2314
|
+
import { useCallback as useCallback12 } from "react";
|
2208
2315
|
var useThreadScrollToBottom = () => {
|
2209
2316
|
const { useComposer, useViewport } = useThreadContext();
|
2210
2317
|
const isAtBottom = useViewport((s) => s.isAtBottom);
|
2211
|
-
const handleScrollToBottom =
|
2318
|
+
const handleScrollToBottom = useCallback12(() => {
|
2212
2319
|
useViewport.getState().scrollToBottom();
|
2213
2320
|
useComposer.getState().focus();
|
2214
2321
|
}, [useViewport, useComposer]);
|
@@ -2217,7 +2324,7 @@ var useThreadScrollToBottom = () => {
|
|
2217
2324
|
};
|
2218
2325
|
|
2219
2326
|
// src/primitive-hooks/thread/useThreadSuggestion.tsx
|
2220
|
-
import { useCallback as
|
2327
|
+
import { useCallback as useCallback13 } from "react";
|
2221
2328
|
var useThreadSuggestion = ({
|
2222
2329
|
prompt,
|
2223
2330
|
autoSend
|
@@ -2225,7 +2332,7 @@ var useThreadSuggestion = ({
|
|
2225
2332
|
const { useThread, useComposer } = useThreadContext();
|
2226
2333
|
const append = useAppendMessage();
|
2227
2334
|
const disabled = useThread((t) => t.isDisabled);
|
2228
|
-
const callback =
|
2335
|
+
const callback = useCallback13(() => {
|
2229
2336
|
const thread = useThread.getState();
|
2230
2337
|
const composer = useComposer.getState();
|
2231
2338
|
if (autoSend && !thread.isRunning) {
|
@@ -2245,7 +2352,9 @@ __export(actionBar_exports, {
|
|
2245
2352
|
Copy: () => ActionBarPrimitiveCopy,
|
2246
2353
|
Edit: () => ActionBarPrimitiveEdit,
|
2247
2354
|
Reload: () => ActionBarPrimitiveReload,
|
2248
|
-
Root: () => ActionBarPrimitiveRoot
|
2355
|
+
Root: () => ActionBarPrimitiveRoot,
|
2356
|
+
Speak: () => ActionBarPrimitiveSpeak,
|
2357
|
+
StopSpeaking: () => ActionBarPrimitiveStopSpeaking
|
2249
2358
|
});
|
2250
2359
|
|
2251
2360
|
// src/primitives/actionBar/ActionBarRoot.tsx
|
@@ -2347,6 +2456,40 @@ var ActionBarPrimitiveEdit = createActionButton(
|
|
2347
2456
|
useActionBarEdit
|
2348
2457
|
);
|
2349
2458
|
|
2459
|
+
// src/primitives/actionBar/ActionBarSpeak.tsx
|
2460
|
+
var ActionBarPrimitiveSpeak = createActionButton(
|
2461
|
+
"ActionBarPrimitive.Speak",
|
2462
|
+
useActionBarSpeak
|
2463
|
+
);
|
2464
|
+
|
2465
|
+
// src/primitives/actionBar/ActionBarStopSpeaking.tsx
|
2466
|
+
import { forwardRef as forwardRef7 } from "react";
|
2467
|
+
import { useEscapeKeydown } from "@radix-ui/react-use-escape-keydown";
|
2468
|
+
import { Primitive as Primitive4 } from "@radix-ui/react-primitive";
|
2469
|
+
import { composeEventHandlers as composeEventHandlers2 } from "@radix-ui/primitive";
|
2470
|
+
import { jsx as jsx11 } from "react/jsx-runtime";
|
2471
|
+
var ActionBarPrimitiveStopSpeaking = forwardRef7((props, ref) => {
|
2472
|
+
const callback = useActionBarStopSpeaking();
|
2473
|
+
useEscapeKeydown((e) => {
|
2474
|
+
if (callback) {
|
2475
|
+
e.preventDefault();
|
2476
|
+
callback();
|
2477
|
+
}
|
2478
|
+
});
|
2479
|
+
return /* @__PURE__ */ jsx11(
|
2480
|
+
Primitive4.button,
|
2481
|
+
{
|
2482
|
+
type: "button",
|
2483
|
+
disabled: !callback,
|
2484
|
+
...props,
|
2485
|
+
ref,
|
2486
|
+
onClick: composeEventHandlers2(props.onClick, () => {
|
2487
|
+
callback?.();
|
2488
|
+
})
|
2489
|
+
}
|
2490
|
+
);
|
2491
|
+
});
|
2492
|
+
|
2350
2493
|
// src/primitives/assistantModal/index.ts
|
2351
2494
|
var assistantModal_exports = {};
|
2352
2495
|
__export(assistantModal_exports, {
|
@@ -2359,7 +2502,7 @@ __export(assistantModal_exports, {
|
|
2359
2502
|
// src/primitives/assistantModal/AssistantModalRoot.tsx
|
2360
2503
|
import { useState as useState9 } from "react";
|
2361
2504
|
import * as PopoverPrimitive2 from "@radix-ui/react-popover";
|
2362
|
-
import { composeEventHandlers as
|
2505
|
+
import { composeEventHandlers as composeEventHandlers3 } from "@radix-ui/primitive";
|
2363
2506
|
|
2364
2507
|
// src/utils/hooks/useOnComposerFocus.tsx
|
2365
2508
|
import { useCallbackRef as useCallbackRef2 } from "@radix-ui/react-use-callback-ref";
|
@@ -2379,7 +2522,7 @@ import * as PopoverPrimitive from "@radix-ui/react-popover";
|
|
2379
2522
|
var usePopoverScope = PopoverPrimitive.createPopoverScope();
|
2380
2523
|
|
2381
2524
|
// src/primitives/assistantModal/AssistantModalRoot.tsx
|
2382
|
-
import { jsx as
|
2525
|
+
import { jsx as jsx12 } from "react/jsx-runtime";
|
2383
2526
|
var useAssistantModalOpenState = (defaultOpen = false) => {
|
2384
2527
|
const state = useState9(defaultOpen);
|
2385
2528
|
const [, setOpen] = state;
|
@@ -2397,12 +2540,12 @@ var AssistantModalPrimitiveRoot = ({
|
|
2397
2540
|
}) => {
|
2398
2541
|
const scope = usePopoverScope(__scopeAssistantModal);
|
2399
2542
|
const [modalOpen, setOpen] = useAssistantModalOpenState(defaultOpen);
|
2400
|
-
return /* @__PURE__ */
|
2543
|
+
return /* @__PURE__ */ jsx12(
|
2401
2544
|
PopoverPrimitive2.Root,
|
2402
2545
|
{
|
2403
2546
|
...scope,
|
2404
2547
|
open: open === void 0 ? modalOpen : open,
|
2405
|
-
onOpenChange:
|
2548
|
+
onOpenChange: composeEventHandlers3(onOpenChange, setOpen),
|
2406
2549
|
...rest
|
2407
2550
|
}
|
2408
2551
|
);
|
@@ -2410,26 +2553,26 @@ var AssistantModalPrimitiveRoot = ({
|
|
2410
2553
|
AssistantModalPrimitiveRoot.displayName = "AssistantModalPrimitive.Root";
|
2411
2554
|
|
2412
2555
|
// src/primitives/assistantModal/AssistantModalTrigger.tsx
|
2413
|
-
import { forwardRef as
|
2556
|
+
import { forwardRef as forwardRef8 } from "react";
|
2414
2557
|
import * as PopoverPrimitive3 from "@radix-ui/react-popover";
|
2415
|
-
import { jsx as
|
2416
|
-
var AssistantModalPrimitiveTrigger =
|
2558
|
+
import { jsx as jsx13 } from "react/jsx-runtime";
|
2559
|
+
var AssistantModalPrimitiveTrigger = forwardRef8(
|
2417
2560
|
({
|
2418
2561
|
__scopeAssistantModal,
|
2419
2562
|
...rest
|
2420
2563
|
}, ref) => {
|
2421
2564
|
const scope = usePopoverScope(__scopeAssistantModal);
|
2422
|
-
return /* @__PURE__ */
|
2565
|
+
return /* @__PURE__ */ jsx13(PopoverPrimitive3.Trigger, { ...scope, ...rest, ref });
|
2423
2566
|
}
|
2424
2567
|
);
|
2425
2568
|
AssistantModalPrimitiveTrigger.displayName = "AssistantModalPrimitive.Trigger";
|
2426
2569
|
|
2427
2570
|
// src/primitives/assistantModal/AssistantModalContent.tsx
|
2428
|
-
import { forwardRef as
|
2571
|
+
import { forwardRef as forwardRef9 } from "react";
|
2429
2572
|
import * as PopoverPrimitive4 from "@radix-ui/react-popover";
|
2430
|
-
import { composeEventHandlers as
|
2431
|
-
import { jsx as
|
2432
|
-
var AssistantModalPrimitiveContent =
|
2573
|
+
import { composeEventHandlers as composeEventHandlers4 } from "@radix-ui/primitive";
|
2574
|
+
import { jsx as jsx14 } from "react/jsx-runtime";
|
2575
|
+
var AssistantModalPrimitiveContent = forwardRef9(
|
2433
2576
|
({
|
2434
2577
|
__scopeAssistantModal,
|
2435
2578
|
side,
|
@@ -2439,7 +2582,7 @@ var AssistantModalPrimitiveContent = forwardRef8(
|
|
2439
2582
|
...props
|
2440
2583
|
}, forwardedRef) => {
|
2441
2584
|
const scope = usePopoverScope(__scopeAssistantModal);
|
2442
|
-
return /* @__PURE__ */
|
2585
|
+
return /* @__PURE__ */ jsx14(PopoverPrimitive4.Portal, { ...scope, children: /* @__PURE__ */ jsx14(
|
2443
2586
|
PopoverPrimitive4.Content,
|
2444
2587
|
{
|
2445
2588
|
...scope,
|
@@ -2447,7 +2590,7 @@ var AssistantModalPrimitiveContent = forwardRef8(
|
|
2447
2590
|
ref: forwardedRef,
|
2448
2591
|
side: side ?? "top",
|
2449
2592
|
align: align ?? "end",
|
2450
|
-
onInteractOutside:
|
2593
|
+
onInteractOutside: composeEventHandlers4(
|
2451
2594
|
onInteractOutside,
|
2452
2595
|
dissmissOnInteractOutside ? void 0 : (e) => e.preventDefault()
|
2453
2596
|
)
|
@@ -2458,16 +2601,16 @@ var AssistantModalPrimitiveContent = forwardRef8(
|
|
2458
2601
|
AssistantModalPrimitiveContent.displayName = "AssistantModalPrimitive.Content";
|
2459
2602
|
|
2460
2603
|
// src/primitives/assistantModal/AssistantModalAnchor.tsx
|
2461
|
-
import { forwardRef as
|
2604
|
+
import { forwardRef as forwardRef10 } from "react";
|
2462
2605
|
import * as PopoverPrimitive5 from "@radix-ui/react-popover";
|
2463
|
-
import { jsx as
|
2464
|
-
var AssistantModalPrimitiveAnchor =
|
2606
|
+
import { jsx as jsx15 } from "react/jsx-runtime";
|
2607
|
+
var AssistantModalPrimitiveAnchor = forwardRef10(
|
2465
2608
|
({
|
2466
2609
|
__scopeAssistantModal,
|
2467
2610
|
...rest
|
2468
2611
|
}, ref) => {
|
2469
2612
|
const scope = usePopoverScope(__scopeAssistantModal);
|
2470
|
-
return /* @__PURE__ */
|
2613
|
+
return /* @__PURE__ */ jsx15(PopoverPrimitive5.Anchor, { ...scope, ...rest, ref });
|
2471
2614
|
}
|
2472
2615
|
);
|
2473
2616
|
AssistantModalPrimitiveAnchor.displayName = "AssistantModalPrimitive.Anchor";
|
@@ -2495,24 +2638,24 @@ var BranchPickerPrevious = createActionButton(
|
|
2495
2638
|
);
|
2496
2639
|
|
2497
2640
|
// src/primitives/branchPicker/BranchPickerCount.tsx
|
2498
|
-
import { Fragment, jsx as
|
2641
|
+
import { Fragment, jsx as jsx16 } from "react/jsx-runtime";
|
2499
2642
|
var BranchPickerPrimitiveCount = () => {
|
2500
2643
|
const branchCount = useBranchPickerCount();
|
2501
|
-
return /* @__PURE__ */
|
2644
|
+
return /* @__PURE__ */ jsx16(Fragment, { children: branchCount });
|
2502
2645
|
};
|
2503
2646
|
BranchPickerPrimitiveCount.displayName = "BranchPickerPrimitive.Count";
|
2504
2647
|
|
2505
2648
|
// src/primitives/branchPicker/BranchPickerNumber.tsx
|
2506
|
-
import { Fragment as Fragment2, jsx as
|
2649
|
+
import { Fragment as Fragment2, jsx as jsx17 } from "react/jsx-runtime";
|
2507
2650
|
var BranchPickerPrimitiveNumber = () => {
|
2508
2651
|
const branchNumber = useBranchPickerNumber();
|
2509
|
-
return /* @__PURE__ */
|
2652
|
+
return /* @__PURE__ */ jsx17(Fragment2, { children: branchNumber });
|
2510
2653
|
};
|
2511
2654
|
BranchPickerPrimitiveNumber.displayName = "BranchPickerPrimitive.Number";
|
2512
2655
|
|
2513
2656
|
// src/primitives/branchPicker/BranchPickerRoot.tsx
|
2514
|
-
import { Primitive as
|
2515
|
-
import { forwardRef as
|
2657
|
+
import { Primitive as Primitive7 } from "@radix-ui/react-primitive";
|
2658
|
+
import { forwardRef as forwardRef14 } from "react";
|
2516
2659
|
|
2517
2660
|
// src/primitives/message/index.ts
|
2518
2661
|
var message_exports = {};
|
@@ -2524,17 +2667,17 @@ __export(message_exports, {
|
|
2524
2667
|
});
|
2525
2668
|
|
2526
2669
|
// src/primitives/message/MessageRoot.tsx
|
2527
|
-
import { Primitive as
|
2670
|
+
import { Primitive as Primitive5 } from "@radix-ui/react-primitive";
|
2528
2671
|
import {
|
2529
|
-
forwardRef as
|
2530
|
-
useCallback as
|
2672
|
+
forwardRef as forwardRef11,
|
2673
|
+
useCallback as useCallback15
|
2531
2674
|
} from "react";
|
2532
2675
|
|
2533
2676
|
// src/utils/hooks/useManagedRef.ts
|
2534
|
-
import { useCallback as
|
2677
|
+
import { useCallback as useCallback14, useRef as useRef3 } from "react";
|
2535
2678
|
var useManagedRef = (callback) => {
|
2536
2679
|
const cleanupRef = useRef3();
|
2537
|
-
const ref =
|
2680
|
+
const ref = useCallback14(
|
2538
2681
|
(el) => {
|
2539
2682
|
if (cleanupRef.current) {
|
2540
2683
|
cleanupRef.current();
|
@@ -2550,10 +2693,10 @@ var useManagedRef = (callback) => {
|
|
2550
2693
|
|
2551
2694
|
// src/primitives/message/MessageRoot.tsx
|
2552
2695
|
import { useComposedRefs } from "@radix-ui/react-compose-refs";
|
2553
|
-
import { jsx as
|
2696
|
+
import { jsx as jsx18 } from "react/jsx-runtime";
|
2554
2697
|
var useIsHoveringRef = () => {
|
2555
2698
|
const { useMessageUtils } = useMessageContext();
|
2556
|
-
const callbackRef =
|
2699
|
+
const callbackRef = useCallback15(
|
2557
2700
|
(el) => {
|
2558
2701
|
const setIsHovering = useMessageUtils.getState().setIsHovering;
|
2559
2702
|
const handleMouseEnter = () => {
|
@@ -2574,10 +2717,10 @@ var useIsHoveringRef = () => {
|
|
2574
2717
|
);
|
2575
2718
|
return useManagedRef(callbackRef);
|
2576
2719
|
};
|
2577
|
-
var MessagePrimitiveRoot =
|
2720
|
+
var MessagePrimitiveRoot = forwardRef11(({ onMouseEnter, onMouseLeave, ...rest }, forwardRef30) => {
|
2578
2721
|
const isHoveringRef = useIsHoveringRef();
|
2579
|
-
const ref = useComposedRefs(
|
2580
|
-
return /* @__PURE__ */
|
2722
|
+
const ref = useComposedRefs(forwardRef30, isHoveringRef);
|
2723
|
+
return /* @__PURE__ */ jsx18(Primitive5.div, { ...rest, ref });
|
2581
2724
|
});
|
2582
2725
|
MessagePrimitiveRoot.displayName = "MessagePrimitive.Root";
|
2583
2726
|
|
@@ -2597,7 +2740,7 @@ import { memo as memo2 } from "react";
|
|
2597
2740
|
// src/context/providers/ContentPartProvider.tsx
|
2598
2741
|
import { useEffect as useEffect9, useState as useState10 } from "react";
|
2599
2742
|
import { create as create12 } from "zustand";
|
2600
|
-
import { jsx as
|
2743
|
+
import { jsx as jsx19 } from "react/jsx-runtime";
|
2601
2744
|
var COMPLETE_STATUS = {
|
2602
2745
|
type: "complete"
|
2603
2746
|
};
|
@@ -2660,32 +2803,32 @@ var ContentPartProvider = ({
|
|
2660
2803
|
children
|
2661
2804
|
}) => {
|
2662
2805
|
const context = useContentPartContext2(partIndex);
|
2663
|
-
return /* @__PURE__ */
|
2806
|
+
return /* @__PURE__ */ jsx19(ContentPartContext.Provider, { value: context, children });
|
2664
2807
|
};
|
2665
2808
|
|
2666
2809
|
// src/primitives/contentPart/ContentPartText.tsx
|
2667
2810
|
import {
|
2668
|
-
forwardRef as
|
2811
|
+
forwardRef as forwardRef12
|
2669
2812
|
} from "react";
|
2670
|
-
import { jsx as
|
2671
|
-
var ContentPartPrimitiveText =
|
2813
|
+
import { jsx as jsx20 } from "react/jsx-runtime";
|
2814
|
+
var ContentPartPrimitiveText = forwardRef12(({ smooth = true, component: Component = "span", ...rest }, forwardedRef) => {
|
2672
2815
|
const {
|
2673
2816
|
part: { text },
|
2674
2817
|
status
|
2675
2818
|
} = useSmooth(useContentPartText(), smooth);
|
2676
|
-
return /* @__PURE__ */
|
2819
|
+
return /* @__PURE__ */ jsx20(Component, { "data-status": status.type, ...rest, ref: forwardedRef, children: text });
|
2677
2820
|
});
|
2678
2821
|
ContentPartPrimitiveText.displayName = "ContentPartPrimitive.Text";
|
2679
2822
|
|
2680
2823
|
// src/primitives/contentPart/ContentPartImage.tsx
|
2681
|
-
import { Primitive as
|
2682
|
-
import { forwardRef as
|
2683
|
-
import { jsx as
|
2684
|
-
var ContentPartPrimitiveImage =
|
2824
|
+
import { Primitive as Primitive6 } from "@radix-ui/react-primitive";
|
2825
|
+
import { forwardRef as forwardRef13 } from "react";
|
2826
|
+
import { jsx as jsx21 } from "react/jsx-runtime";
|
2827
|
+
var ContentPartPrimitiveImage = forwardRef13((props, forwardedRef) => {
|
2685
2828
|
const {
|
2686
2829
|
part: { image }
|
2687
2830
|
} = useContentPartImage();
|
2688
|
-
return /* @__PURE__ */
|
2831
|
+
return /* @__PURE__ */ jsx21(Primitive6.img, { src: image, ...props, ref: forwardedRef });
|
2689
2832
|
});
|
2690
2833
|
ContentPartPrimitiveImage.displayName = "ContentPartPrimitive.Image";
|
2691
2834
|
|
@@ -2707,20 +2850,20 @@ var ContentPartPrimitiveInProgress = ({ children }) => {
|
|
2707
2850
|
ContentPartPrimitiveInProgress.displayName = "ContentPartPrimitive.InProgress";
|
2708
2851
|
|
2709
2852
|
// src/primitives/message/MessageContent.tsx
|
2710
|
-
import { jsx as
|
2853
|
+
import { jsx as jsx22, jsxs as jsxs3 } from "react/jsx-runtime";
|
2711
2854
|
var defaultComponents = {
|
2712
2855
|
Text: () => /* @__PURE__ */ jsxs3("p", { style: { whiteSpace: "pre-line" }, children: [
|
2713
|
-
/* @__PURE__ */
|
2714
|
-
/* @__PURE__ */
|
2856
|
+
/* @__PURE__ */ jsx22(ContentPartPrimitiveText, {}),
|
2857
|
+
/* @__PURE__ */ jsx22(ContentPartPrimitiveInProgress, { children: /* @__PURE__ */ jsx22("span", { style: { fontFamily: "revert" }, children: " \u25CF" }) })
|
2715
2858
|
] }),
|
2716
|
-
Image: () => /* @__PURE__ */
|
2717
|
-
UI: () => /* @__PURE__ */
|
2859
|
+
Image: () => /* @__PURE__ */ jsx22(ContentPartPrimitiveImage, {}),
|
2860
|
+
UI: () => /* @__PURE__ */ jsx22(ContentPartPrimitiveDisplay, {}),
|
2718
2861
|
tools: {
|
2719
2862
|
Fallback: (props) => {
|
2720
2863
|
const { useToolUIs } = useAssistantContext();
|
2721
2864
|
const Render = useToolUIs((s) => s.getToolUI(props.part.toolName));
|
2722
2865
|
if (!Render) return null;
|
2723
|
-
return /* @__PURE__ */
|
2866
|
+
return /* @__PURE__ */ jsx22(Render, { ...props });
|
2724
2867
|
}
|
2725
2868
|
}
|
2726
2869
|
};
|
@@ -2743,16 +2886,16 @@ var MessageContentPartComponent = ({
|
|
2743
2886
|
case "text":
|
2744
2887
|
if (status.type === "requires-action")
|
2745
2888
|
throw new Error("Encountered unexpected requires-action status");
|
2746
|
-
if (part === EMPTY_CONTENT) return /* @__PURE__ */
|
2747
|
-
return /* @__PURE__ */
|
2889
|
+
if (part === EMPTY_CONTENT) return /* @__PURE__ */ jsx22(Empty, { part, status });
|
2890
|
+
return /* @__PURE__ */ jsx22(Text2, { part, status });
|
2748
2891
|
case "image":
|
2749
2892
|
if (status.type === "requires-action")
|
2750
2893
|
throw new Error("Encountered unexpected requires-action status");
|
2751
|
-
return /* @__PURE__ */
|
2894
|
+
return /* @__PURE__ */ jsx22(Image2, { part, status });
|
2752
2895
|
case "ui":
|
2753
2896
|
if (status.type === "requires-action")
|
2754
2897
|
throw new Error("Encountered unexpected requires-action status");
|
2755
|
-
return /* @__PURE__ */
|
2898
|
+
return /* @__PURE__ */ jsx22(UI, { part, status });
|
2756
2899
|
case "tool-call": {
|
2757
2900
|
const Tool = by_name[part.toolName] || Fallback2;
|
2758
2901
|
const addResult = (result) => addToolResult({
|
@@ -2760,7 +2903,7 @@ var MessageContentPartComponent = ({
|
|
2760
2903
|
toolCallId: part.toolCallId,
|
2761
2904
|
result
|
2762
2905
|
});
|
2763
|
-
return /* @__PURE__ */
|
2906
|
+
return /* @__PURE__ */ jsx22(Tool, { part, status, addResult });
|
2764
2907
|
}
|
2765
2908
|
default:
|
2766
2909
|
const unhandledType = type;
|
@@ -2771,7 +2914,7 @@ var MessageContentPartImpl = ({
|
|
2771
2914
|
partIndex,
|
2772
2915
|
components
|
2773
2916
|
}) => {
|
2774
|
-
return /* @__PURE__ */
|
2917
|
+
return /* @__PURE__ */ jsx22(ContentPartProvider, { partIndex, children: /* @__PURE__ */ jsx22(MessageContentPartComponent, { components }) });
|
2775
2918
|
};
|
2776
2919
|
var MessageContentPart = memo2(
|
2777
2920
|
MessageContentPartImpl,
|
@@ -2784,7 +2927,7 @@ var MessagePrimitiveContent = ({
|
|
2784
2927
|
const contentLength = useMessage((s) => s.message.content.length) || 1;
|
2785
2928
|
return new Array(contentLength).fill(null).map((_, idx) => {
|
2786
2929
|
const partIndex = idx;
|
2787
|
-
return /* @__PURE__ */
|
2930
|
+
return /* @__PURE__ */ jsx22(
|
2788
2931
|
MessageContentPart,
|
2789
2932
|
{
|
2790
2933
|
partIndex,
|
@@ -2803,9 +2946,9 @@ var MessagePrimitiveInProgress = () => {
|
|
2803
2946
|
MessagePrimitiveInProgress.displayName = "MessagePrimitive.InProgress";
|
2804
2947
|
|
2805
2948
|
// src/primitives/branchPicker/BranchPickerRoot.tsx
|
2806
|
-
import { jsx as
|
2807
|
-
var BranchPickerPrimitiveRoot =
|
2808
|
-
return /* @__PURE__ */
|
2949
|
+
import { jsx as jsx23 } from "react/jsx-runtime";
|
2950
|
+
var BranchPickerPrimitiveRoot = forwardRef14(({ hideWhenSingleBranch, ...rest }, ref) => {
|
2951
|
+
return /* @__PURE__ */ jsx23(MessagePrimitiveIf, { hasBranches: hideWhenSingleBranch ? true : void 0, children: /* @__PURE__ */ jsx23(Primitive7.div, { ...rest, ref }) });
|
2809
2952
|
});
|
2810
2953
|
BranchPickerPrimitiveRoot.displayName = "BranchPickerPrimitive.Root";
|
2811
2954
|
|
@@ -2820,44 +2963,44 @@ __export(composer_exports, {
|
|
2820
2963
|
});
|
2821
2964
|
|
2822
2965
|
// src/primitives/composer/ComposerRoot.tsx
|
2823
|
-
import { composeEventHandlers as
|
2824
|
-
import { Primitive as
|
2966
|
+
import { composeEventHandlers as composeEventHandlers5 } from "@radix-ui/primitive";
|
2967
|
+
import { Primitive as Primitive8 } from "@radix-ui/react-primitive";
|
2825
2968
|
import {
|
2826
|
-
forwardRef as
|
2969
|
+
forwardRef as forwardRef15
|
2827
2970
|
} from "react";
|
2828
|
-
import { jsx as
|
2829
|
-
var ComposerPrimitiveRoot =
|
2971
|
+
import { jsx as jsx24 } from "react/jsx-runtime";
|
2972
|
+
var ComposerPrimitiveRoot = forwardRef15(({ onSubmit, ...rest }, forwardedRef) => {
|
2830
2973
|
const send = useComposerSend();
|
2831
2974
|
const handleSubmit = (e) => {
|
2832
2975
|
e.preventDefault();
|
2833
2976
|
if (!send) return;
|
2834
2977
|
send();
|
2835
2978
|
};
|
2836
|
-
return /* @__PURE__ */
|
2837
|
-
|
2979
|
+
return /* @__PURE__ */ jsx24(
|
2980
|
+
Primitive8.form,
|
2838
2981
|
{
|
2839
2982
|
...rest,
|
2840
2983
|
ref: forwardedRef,
|
2841
|
-
onSubmit:
|
2984
|
+
onSubmit: composeEventHandlers5(onSubmit, handleSubmit)
|
2842
2985
|
}
|
2843
2986
|
);
|
2844
2987
|
});
|
2845
2988
|
ComposerPrimitiveRoot.displayName = "ComposerPrimitive.Root";
|
2846
2989
|
|
2847
2990
|
// src/primitives/composer/ComposerInput.tsx
|
2848
|
-
import { composeEventHandlers as
|
2991
|
+
import { composeEventHandlers as composeEventHandlers6 } from "@radix-ui/primitive";
|
2849
2992
|
import { useComposedRefs as useComposedRefs2 } from "@radix-ui/react-compose-refs";
|
2850
2993
|
import { Slot } from "@radix-ui/react-slot";
|
2851
2994
|
import {
|
2852
|
-
forwardRef as
|
2853
|
-
useCallback as
|
2995
|
+
forwardRef as forwardRef16,
|
2996
|
+
useCallback as useCallback16,
|
2854
2997
|
useEffect as useEffect10,
|
2855
2998
|
useRef as useRef4
|
2856
2999
|
} from "react";
|
2857
3000
|
import TextareaAutosize from "react-textarea-autosize";
|
2858
|
-
import { useEscapeKeydown } from "@radix-ui/react-use-escape-keydown";
|
2859
|
-
import { jsx as
|
2860
|
-
var ComposerPrimitiveInput =
|
3001
|
+
import { useEscapeKeydown as useEscapeKeydown2 } from "@radix-ui/react-use-escape-keydown";
|
3002
|
+
import { jsx as jsx25 } from "react/jsx-runtime";
|
3003
|
+
var ComposerPrimitiveInput = forwardRef16(
|
2861
3004
|
({
|
2862
3005
|
autoFocus = false,
|
2863
3006
|
asChild,
|
@@ -2876,7 +3019,7 @@ var ComposerPrimitiveInput = forwardRef15(
|
|
2876
3019
|
const isDisabled = useThread((t) => t.isDisabled) ?? disabledProp ?? false;
|
2877
3020
|
const textareaRef = useRef4(null);
|
2878
3021
|
const ref = useComposedRefs2(forwardedRef, textareaRef);
|
2879
|
-
|
3022
|
+
useEscapeKeydown2((e) => {
|
2880
3023
|
const composer = useComposer.getState();
|
2881
3024
|
if (composer.canCancel) {
|
2882
3025
|
composer.cancel();
|
@@ -2895,7 +3038,7 @@ var ComposerPrimitiveInput = forwardRef15(
|
|
2895
3038
|
}
|
2896
3039
|
};
|
2897
3040
|
const autoFocusEnabled = autoFocus && !isDisabled;
|
2898
|
-
const focus =
|
3041
|
+
const focus = useCallback16(() => {
|
2899
3042
|
const textarea = textareaRef.current;
|
2900
3043
|
if (!textarea || !autoFocusEnabled) return;
|
2901
3044
|
textarea.focus({ preventScroll: true });
|
@@ -2910,7 +3053,7 @@ var ComposerPrimitiveInput = forwardRef15(
|
|
2910
3053
|
focus();
|
2911
3054
|
}
|
2912
3055
|
});
|
2913
|
-
return /* @__PURE__ */
|
3056
|
+
return /* @__PURE__ */ jsx25(
|
2914
3057
|
Component,
|
2915
3058
|
{
|
2916
3059
|
name: "input",
|
@@ -2918,12 +3061,12 @@ var ComposerPrimitiveInput = forwardRef15(
|
|
2918
3061
|
...rest,
|
2919
3062
|
ref,
|
2920
3063
|
disabled: isDisabled,
|
2921
|
-
onChange:
|
3064
|
+
onChange: composeEventHandlers6(onChange, (e) => {
|
2922
3065
|
const composerState = useComposer.getState();
|
2923
3066
|
if (!composerState.isEditing) return;
|
2924
3067
|
return composerState.setText(e.target.value);
|
2925
3068
|
}),
|
2926
|
-
onKeyDown:
|
3069
|
+
onKeyDown: composeEventHandlers6(onKeyDown, handleKeyPress)
|
2927
3070
|
}
|
2928
3071
|
);
|
2929
3072
|
}
|
@@ -2931,14 +3074,14 @@ var ComposerPrimitiveInput = forwardRef15(
|
|
2931
3074
|
ComposerPrimitiveInput.displayName = "ComposerPrimitive.Input";
|
2932
3075
|
|
2933
3076
|
// src/primitives/composer/ComposerSend.tsx
|
2934
|
-
import { forwardRef as
|
2935
|
-
import { Primitive as
|
2936
|
-
import { jsx as
|
2937
|
-
var ComposerPrimitiveSend =
|
3077
|
+
import { forwardRef as forwardRef17 } from "react";
|
3078
|
+
import { Primitive as Primitive9 } from "@radix-ui/react-primitive";
|
3079
|
+
import { jsx as jsx26 } from "react/jsx-runtime";
|
3080
|
+
var ComposerPrimitiveSend = forwardRef17(({ disabled, ...rest }, ref) => {
|
2938
3081
|
const { useComposer } = useComposerContext();
|
2939
3082
|
const hasValue = useComposer((c) => c.isEditing && c.text.length > 0);
|
2940
|
-
return /* @__PURE__ */
|
2941
|
-
|
3083
|
+
return /* @__PURE__ */ jsx26(
|
3084
|
+
Primitive9.button,
|
2942
3085
|
{
|
2943
3086
|
type: "submit",
|
2944
3087
|
...rest,
|
@@ -2987,11 +3130,11 @@ __export(thread_exports, {
|
|
2987
3130
|
});
|
2988
3131
|
|
2989
3132
|
// src/primitives/thread/ThreadRoot.tsx
|
2990
|
-
import { Primitive as
|
2991
|
-
import { forwardRef as
|
2992
|
-
import { jsx as
|
2993
|
-
var ThreadPrimitiveRoot =
|
2994
|
-
return /* @__PURE__ */
|
3133
|
+
import { Primitive as Primitive10 } from "@radix-ui/react-primitive";
|
3134
|
+
import { forwardRef as forwardRef18 } from "react";
|
3135
|
+
import { jsx as jsx27 } from "react/jsx-runtime";
|
3136
|
+
var ThreadPrimitiveRoot = forwardRef18((props, ref) => {
|
3137
|
+
return /* @__PURE__ */ jsx27(Primitive10.div, { ...props, ref });
|
2995
3138
|
});
|
2996
3139
|
ThreadPrimitiveRoot.displayName = "ThreadPrimitive.Root";
|
2997
3140
|
|
@@ -3016,8 +3159,8 @@ ThreadPrimitiveIf.displayName = "ThreadPrimitive.If";
|
|
3016
3159
|
|
3017
3160
|
// src/primitives/thread/ThreadViewport.tsx
|
3018
3161
|
import { useComposedRefs as useComposedRefs4 } from "@radix-ui/react-compose-refs";
|
3019
|
-
import { Primitive as
|
3020
|
-
import { forwardRef as
|
3162
|
+
import { Primitive as Primitive11 } from "@radix-ui/react-primitive";
|
3163
|
+
import { forwardRef as forwardRef19 } from "react";
|
3021
3164
|
|
3022
3165
|
// src/primitive-hooks/thread/useThreadViewportAutoScroll.tsx
|
3023
3166
|
import { useComposedRefs as useComposedRefs3 } from "@radix-ui/react-compose-refs";
|
@@ -3025,10 +3168,10 @@ import { useRef as useRef5 } from "react";
|
|
3025
3168
|
|
3026
3169
|
// src/utils/hooks/useOnResizeContent.tsx
|
3027
3170
|
import { useCallbackRef as useCallbackRef3 } from "@radix-ui/react-use-callback-ref";
|
3028
|
-
import { useCallback as
|
3171
|
+
import { useCallback as useCallback17 } from "react";
|
3029
3172
|
var useOnResizeContent = (callback) => {
|
3030
3173
|
const callbackRef = useCallbackRef3(callback);
|
3031
|
-
const refCallback =
|
3174
|
+
const refCallback = useCallback17(
|
3032
3175
|
(el) => {
|
3033
3176
|
const resizeObserver = new ResizeObserver(() => {
|
3034
3177
|
callbackRef();
|
@@ -3128,13 +3271,13 @@ var useThreadViewportAutoScroll = ({
|
|
3128
3271
|
};
|
3129
3272
|
|
3130
3273
|
// src/primitives/thread/ThreadViewport.tsx
|
3131
|
-
import { jsx as
|
3132
|
-
var ThreadPrimitiveViewport =
|
3274
|
+
import { jsx as jsx28 } from "react/jsx-runtime";
|
3275
|
+
var ThreadPrimitiveViewport = forwardRef19(({ autoScroll, onScroll, children, ...rest }, forwardedRef) => {
|
3133
3276
|
const autoScrollRef = useThreadViewportAutoScroll({
|
3134
3277
|
autoScroll
|
3135
3278
|
});
|
3136
3279
|
const ref = useComposedRefs4(forwardedRef, autoScrollRef);
|
3137
|
-
return /* @__PURE__ */
|
3280
|
+
return /* @__PURE__ */ jsx28(Primitive11.div, { ...rest, ref, children });
|
3138
3281
|
});
|
3139
3282
|
ThreadPrimitiveViewport.displayName = "ThreadPrimitive.Viewport";
|
3140
3283
|
|
@@ -3179,19 +3322,33 @@ var makeEditComposerStore = ({
|
|
3179
3322
|
|
3180
3323
|
// src/context/stores/MessageUtils.ts
|
3181
3324
|
import { create as create14 } from "zustand";
|
3182
|
-
var makeMessageUtilsStore = () => create14((set) =>
|
3183
|
-
|
3184
|
-
|
3185
|
-
|
3186
|
-
|
3187
|
-
|
3188
|
-
|
3189
|
-
|
3190
|
-
|
3191
|
-
})
|
3325
|
+
var makeMessageUtilsStore = () => create14((set) => {
|
3326
|
+
let utterance = null;
|
3327
|
+
return {
|
3328
|
+
isCopied: false,
|
3329
|
+
setIsCopied: (value) => {
|
3330
|
+
set({ isCopied: value });
|
3331
|
+
},
|
3332
|
+
isHovering: false,
|
3333
|
+
setIsHovering: (value) => {
|
3334
|
+
set({ isHovering: value });
|
3335
|
+
},
|
3336
|
+
isSpeaking: false,
|
3337
|
+
stopSpeaking: () => {
|
3338
|
+
utterance?.stop();
|
3339
|
+
},
|
3340
|
+
addUtterance: (utt) => {
|
3341
|
+
utterance = utt;
|
3342
|
+
set({ isSpeaking: true });
|
3343
|
+
utt.onEnd(() => {
|
3344
|
+
set({ isSpeaking: false });
|
3345
|
+
});
|
3346
|
+
}
|
3347
|
+
};
|
3348
|
+
});
|
3192
3349
|
|
3193
3350
|
// src/context/providers/MessageProvider.tsx
|
3194
|
-
import { jsx as
|
3351
|
+
import { jsx as jsx29 } from "react/jsx-runtime";
|
3195
3352
|
var getIsLast = (messages, message) => {
|
3196
3353
|
return messages[messages.length - 1]?.id === message.id;
|
3197
3354
|
};
|
@@ -3275,11 +3432,11 @@ var MessageProvider = ({
|
|
3275
3432
|
children
|
3276
3433
|
}) => {
|
3277
3434
|
const context = useMessageContext2(messageIndex);
|
3278
|
-
return /* @__PURE__ */
|
3435
|
+
return /* @__PURE__ */ jsx29(MessageContext.Provider, { value: context, children });
|
3279
3436
|
};
|
3280
3437
|
|
3281
3438
|
// src/primitives/thread/ThreadMessages.tsx
|
3282
|
-
import { jsx as
|
3439
|
+
import { jsx as jsx30, jsxs as jsxs4 } from "react/jsx-runtime";
|
3283
3440
|
var DEFAULT_SYSTEM_MESSAGE = () => null;
|
3284
3441
|
var getComponents = (components) => {
|
3285
3442
|
return {
|
@@ -3296,11 +3453,11 @@ var ThreadMessageImpl = ({
|
|
3296
3453
|
const { UserMessage: UserMessage2, EditComposer: EditComposer2, AssistantMessage: AssistantMessage2, SystemMessage: SystemMessage2 } = getComponents(components);
|
3297
3454
|
return /* @__PURE__ */ jsxs4(MessageProvider, { messageIndex, children: [
|
3298
3455
|
/* @__PURE__ */ jsxs4(MessagePrimitiveIf, { user: true, children: [
|
3299
|
-
/* @__PURE__ */
|
3300
|
-
/* @__PURE__ */
|
3456
|
+
/* @__PURE__ */ jsx30(ComposerPrimitiveIf, { editing: false, children: /* @__PURE__ */ jsx30(UserMessage2, {}) }),
|
3457
|
+
/* @__PURE__ */ jsx30(ComposerPrimitiveIf, { editing: true, children: /* @__PURE__ */ jsx30(EditComposer2, {}) })
|
3301
3458
|
] }),
|
3302
|
-
/* @__PURE__ */
|
3303
|
-
/* @__PURE__ */
|
3459
|
+
/* @__PURE__ */ jsx30(MessagePrimitiveIf, { assistant: true, children: /* @__PURE__ */ jsx30(AssistantMessage2, {}) }),
|
3460
|
+
/* @__PURE__ */ jsx30(MessagePrimitiveIf, { system: true, children: /* @__PURE__ */ jsx30(SystemMessage2, {}) })
|
3304
3461
|
] });
|
3305
3462
|
};
|
3306
3463
|
var ThreadMessage = memo3(
|
@@ -3315,7 +3472,7 @@ var ThreadPrimitiveMessagesImpl = ({
|
|
3315
3472
|
if (messagesLength === 0) return null;
|
3316
3473
|
return new Array(messagesLength).fill(null).map((_, idx) => {
|
3317
3474
|
const messageIndex = idx;
|
3318
|
-
return /* @__PURE__ */
|
3475
|
+
return /* @__PURE__ */ jsx30(
|
3319
3476
|
ThreadMessage,
|
3320
3477
|
{
|
3321
3478
|
messageIndex,
|
@@ -3349,7 +3506,7 @@ import {
|
|
3349
3506
|
createContext as createContext6,
|
3350
3507
|
useContext as useContext6
|
3351
3508
|
} from "react";
|
3352
|
-
import { Fragment as Fragment3, jsx as
|
3509
|
+
import { Fragment as Fragment3, jsx as jsx31 } from "react/jsx-runtime";
|
3353
3510
|
var ThreadConfigContext = createContext6({});
|
3354
3511
|
var useThreadConfig = () => {
|
3355
3512
|
return useContext6(ThreadConfigContext);
|
@@ -3359,27 +3516,39 @@ var ThreadConfigProvider = ({
|
|
3359
3516
|
config
|
3360
3517
|
}) => {
|
3361
3518
|
const assistant = useAssistantContext({ optional: true });
|
3362
|
-
const configProvider = config && Object.keys(config ?? {}).length > 0 ? /* @__PURE__ */
|
3519
|
+
const configProvider = config && Object.keys(config ?? {}).length > 0 ? /* @__PURE__ */ jsx31(ThreadConfigContext.Provider, { value: config, children }) : /* @__PURE__ */ jsx31(Fragment3, { children });
|
3363
3520
|
if (!config?.runtime) return configProvider;
|
3364
3521
|
if (assistant) {
|
3365
3522
|
throw new Error(
|
3366
3523
|
"You provided a runtime to <Thread> while simulataneously using <AssistantRuntimeProvider>. This is not allowed."
|
3367
3524
|
);
|
3368
3525
|
}
|
3369
|
-
return /* @__PURE__ */
|
3526
|
+
return /* @__PURE__ */ jsx31(AssistantRuntimeProvider, { runtime: config.runtime, children: configProvider });
|
3370
3527
|
};
|
3371
3528
|
ThreadConfigProvider.displayName = "ThreadConfigProvider";
|
3372
3529
|
|
3373
3530
|
// src/ui/assistant-action-bar.tsx
|
3374
|
-
import { forwardRef as
|
3375
|
-
import {
|
3376
|
-
|
3531
|
+
import { forwardRef as forwardRef20 } from "react";
|
3532
|
+
import {
|
3533
|
+
AudioLinesIcon,
|
3534
|
+
CheckIcon,
|
3535
|
+
CopyIcon,
|
3536
|
+
RefreshCwIcon,
|
3537
|
+
StopCircleIcon
|
3538
|
+
} from "lucide-react";
|
3539
|
+
import { Fragment as Fragment4, jsx as jsx32, jsxs as jsxs5 } from "react/jsx-runtime";
|
3377
3540
|
var useAllowCopy = () => {
|
3378
3541
|
const { assistantMessage: { allowCopy = true } = {} } = useThreadConfig();
|
3379
3542
|
const { useThread } = useThreadContext();
|
3380
|
-
const copySupported = useThread((t) => t.capabilities.
|
3543
|
+
const copySupported = useThread((t) => t.capabilities.unstable_copy);
|
3381
3544
|
return copySupported && allowCopy;
|
3382
3545
|
};
|
3546
|
+
var useAllowSpeak = () => {
|
3547
|
+
const { assistantMessage: { allowSpeak = true } = {} } = useThreadConfig();
|
3548
|
+
const { useThread } = useThreadContext();
|
3549
|
+
const speakSupported = useThread((t) => t.capabilities.speak);
|
3550
|
+
return speakSupported && allowSpeak;
|
3551
|
+
};
|
3383
3552
|
var useAllowReload = () => {
|
3384
3553
|
const { assistantMessage: { allowReload = true } = {} } = useThreadConfig();
|
3385
3554
|
const { useThread } = useThreadContext();
|
@@ -3397,8 +3566,9 @@ var AssistantActionBar = () => {
|
|
3397
3566
|
autohide: "not-last",
|
3398
3567
|
autohideFloat: "single-branch",
|
3399
3568
|
children: [
|
3400
|
-
/* @__PURE__ */
|
3401
|
-
/* @__PURE__ */
|
3569
|
+
/* @__PURE__ */ jsx32(AssistantActionBarSpeechControl, {}),
|
3570
|
+
/* @__PURE__ */ jsx32(AssistantActionBarCopy, {}),
|
3571
|
+
/* @__PURE__ */ jsx32(AssistantActionBarReload, {})
|
3402
3572
|
]
|
3403
3573
|
}
|
3404
3574
|
);
|
@@ -3408,21 +3578,51 @@ var AssistantActionBarRoot = withDefaults(actionBar_exports.Root, {
|
|
3408
3578
|
className: "aui-assistant-action-bar-root"
|
3409
3579
|
});
|
3410
3580
|
AssistantActionBarRoot.displayName = "AssistantActionBarRoot";
|
3411
|
-
var AssistantActionBarCopy =
|
3581
|
+
var AssistantActionBarCopy = forwardRef20((props, ref) => {
|
3412
3582
|
const {
|
3413
3583
|
strings: {
|
3414
|
-
assistantMessage: {
|
3584
|
+
assistantMessage: { copy: { tooltip = "Copy" } = {} } = {}
|
3415
3585
|
} = {}
|
3416
3586
|
} = useThreadConfig();
|
3417
3587
|
const allowCopy = useAllowCopy();
|
3418
3588
|
if (!allowCopy) return null;
|
3419
|
-
return /* @__PURE__ */
|
3420
|
-
/* @__PURE__ */
|
3421
|
-
/* @__PURE__ */
|
3589
|
+
return /* @__PURE__ */ jsx32(actionBar_exports.Copy, { asChild: true, children: /* @__PURE__ */ jsx32(TooltipIconButton, { tooltip, ...props, ref, children: props.children ?? /* @__PURE__ */ jsxs5(Fragment4, { children: [
|
3590
|
+
/* @__PURE__ */ jsx32(message_exports.If, { copied: true, children: /* @__PURE__ */ jsx32(CheckIcon, {}) }),
|
3591
|
+
/* @__PURE__ */ jsx32(message_exports.If, { copied: false, children: /* @__PURE__ */ jsx32(CopyIcon, {}) })
|
3422
3592
|
] }) }) });
|
3423
3593
|
});
|
3424
3594
|
AssistantActionBarCopy.displayName = "AssistantActionBarCopy";
|
3425
|
-
var
|
3595
|
+
var AssistantActionBarSpeechControl = () => {
|
3596
|
+
return /* @__PURE__ */ jsxs5(Fragment4, { children: [
|
3597
|
+
/* @__PURE__ */ jsx32(message_exports.If, { speaking: false, children: /* @__PURE__ */ jsx32(AssistantActionBarSpeak, {}) }),
|
3598
|
+
/* @__PURE__ */ jsx32(message_exports.If, { speaking: true, children: /* @__PURE__ */ jsx32(AssistantActionBarStopSpeaking, {}) })
|
3599
|
+
] });
|
3600
|
+
};
|
3601
|
+
var AssistantActionBarSpeak = forwardRef20((props, ref) => {
|
3602
|
+
const {
|
3603
|
+
strings: {
|
3604
|
+
assistantMessage: { speak: { tooltip = "Read aloud" } = {} } = {}
|
3605
|
+
} = {}
|
3606
|
+
} = useThreadConfig();
|
3607
|
+
const allowSpeak = useAllowSpeak();
|
3608
|
+
if (!allowSpeak) return null;
|
3609
|
+
return /* @__PURE__ */ jsx32(actionBar_exports.Speak, { asChild: true, children: /* @__PURE__ */ jsx32(TooltipIconButton, { tooltip, ...props, ref, children: props.children ?? /* @__PURE__ */ jsx32(AudioLinesIcon, {}) }) });
|
3610
|
+
});
|
3611
|
+
AssistantActionBarSpeak.displayName = "AssistantActionBarSpeak";
|
3612
|
+
var AssistantActionBarStopSpeaking = forwardRef20((props, ref) => {
|
3613
|
+
const {
|
3614
|
+
strings: {
|
3615
|
+
assistantMessage: {
|
3616
|
+
speak: { stop: { tooltip: stopTooltip = "Stop" } = {} } = {}
|
3617
|
+
} = {}
|
3618
|
+
} = {}
|
3619
|
+
} = useThreadConfig();
|
3620
|
+
const allowSpeak = useAllowSpeak();
|
3621
|
+
if (!allowSpeak) return null;
|
3622
|
+
return /* @__PURE__ */ jsx32(actionBar_exports.StopSpeaking, { asChild: true, children: /* @__PURE__ */ jsx32(TooltipIconButton, { tooltip: stopTooltip, ...props, ref, children: props.children ?? /* @__PURE__ */ jsx32(StopCircleIcon, {}) }) });
|
3623
|
+
});
|
3624
|
+
AssistantActionBarStopSpeaking.displayName = "AssistantActionBarStopSpeaking";
|
3625
|
+
var AssistantActionBarReload = forwardRef20((props, ref) => {
|
3426
3626
|
const {
|
3427
3627
|
strings: {
|
3428
3628
|
assistantMessage: { reload: { tooltip = "Refresh" } = {} } = {}
|
@@ -3430,13 +3630,16 @@ var AssistantActionBarReload = forwardRef19((props, ref) => {
|
|
3430
3630
|
} = useThreadConfig();
|
3431
3631
|
const allowReload = useAllowReload();
|
3432
3632
|
if (!allowReload) return null;
|
3433
|
-
return /* @__PURE__ */
|
3633
|
+
return /* @__PURE__ */ jsx32(actionBar_exports.Reload, { asChild: true, children: /* @__PURE__ */ jsx32(TooltipIconButton, { tooltip, ...props, ref, children: /* @__PURE__ */ jsx32(RefreshCwIcon, {}) }) });
|
3434
3634
|
});
|
3435
3635
|
AssistantActionBarReload.displayName = "AssistantActionBarReload";
|
3436
3636
|
var exports = {
|
3437
3637
|
Root: AssistantActionBarRoot,
|
3438
3638
|
Reload: AssistantActionBarReload,
|
3439
|
-
Copy: AssistantActionBarCopy
|
3639
|
+
Copy: AssistantActionBarCopy,
|
3640
|
+
Speak: AssistantActionBarSpeak,
|
3641
|
+
StopSpeaking: AssistantActionBarStopSpeaking,
|
3642
|
+
SpeechControl: AssistantActionBarSpeechControl
|
3440
3643
|
};
|
3441
3644
|
var assistant_action_bar_default = Object.assign(
|
3442
3645
|
AssistantActionBar,
|
@@ -3444,12 +3647,12 @@ var assistant_action_bar_default = Object.assign(
|
|
3444
3647
|
);
|
3445
3648
|
|
3446
3649
|
// src/ui/assistant-message.tsx
|
3447
|
-
import { forwardRef as
|
3650
|
+
import { forwardRef as forwardRef22 } from "react";
|
3448
3651
|
|
3449
3652
|
// src/ui/branch-picker.tsx
|
3450
|
-
import { forwardRef as
|
3653
|
+
import { forwardRef as forwardRef21 } from "react";
|
3451
3654
|
import { ChevronLeftIcon, ChevronRightIcon } from "lucide-react";
|
3452
|
-
import { jsx as
|
3655
|
+
import { jsx as jsx33, jsxs as jsxs6 } from "react/jsx-runtime";
|
3453
3656
|
var useAllowBranchPicker = () => {
|
3454
3657
|
const { branchPicker: { allowBranchPicker = true } = {} } = useThreadConfig();
|
3455
3658
|
const { useThread } = useThreadContext();
|
@@ -3460,9 +3663,9 @@ var BranchPicker = () => {
|
|
3460
3663
|
const allowBranchPicker = useAllowBranchPicker();
|
3461
3664
|
if (!allowBranchPicker) return null;
|
3462
3665
|
return /* @__PURE__ */ jsxs6(BranchPickerRoot, { hideWhenSingleBranch: true, children: [
|
3463
|
-
/* @__PURE__ */
|
3464
|
-
/* @__PURE__ */
|
3465
|
-
/* @__PURE__ */
|
3666
|
+
/* @__PURE__ */ jsx33(BranchPickerPrevious2, {}),
|
3667
|
+
/* @__PURE__ */ jsx33(BranchPickerState, {}),
|
3668
|
+
/* @__PURE__ */ jsx33(BranchPickerNext, {})
|
3466
3669
|
] });
|
3467
3670
|
};
|
3468
3671
|
BranchPicker.displayName = "BranchPicker";
|
@@ -3470,31 +3673,31 @@ var BranchPickerRoot = withDefaults(branchPicker_exports.Root, {
|
|
3470
3673
|
className: "aui-branch-picker-root"
|
3471
3674
|
});
|
3472
3675
|
BranchPickerRoot.displayName = "BranchPickerRoot";
|
3473
|
-
var BranchPickerPrevious2 =
|
3676
|
+
var BranchPickerPrevious2 = forwardRef21((props, ref) => {
|
3474
3677
|
const {
|
3475
3678
|
strings: {
|
3476
3679
|
branchPicker: { previous: { tooltip = "Previous" } = {} } = {}
|
3477
3680
|
} = {}
|
3478
3681
|
} = useThreadConfig();
|
3479
|
-
return /* @__PURE__ */
|
3682
|
+
return /* @__PURE__ */ jsx33(branchPicker_exports.Previous, { asChild: true, children: /* @__PURE__ */ jsx33(TooltipIconButton, { tooltip, ...props, ref, children: props.children ?? /* @__PURE__ */ jsx33(ChevronLeftIcon, {}) }) });
|
3480
3683
|
});
|
3481
3684
|
BranchPickerPrevious2.displayName = "BranchPickerPrevious";
|
3482
3685
|
var BranchPickerStateWrapper = withDefaults("span", {
|
3483
3686
|
className: "aui-branch-picker-state"
|
3484
3687
|
});
|
3485
|
-
var BranchPickerState =
|
3688
|
+
var BranchPickerState = forwardRef21((props, ref) => {
|
3486
3689
|
return /* @__PURE__ */ jsxs6(BranchPickerStateWrapper, { ...props, ref, children: [
|
3487
|
-
/* @__PURE__ */
|
3690
|
+
/* @__PURE__ */ jsx33(branchPicker_exports.Number, {}),
|
3488
3691
|
" / ",
|
3489
|
-
/* @__PURE__ */
|
3692
|
+
/* @__PURE__ */ jsx33(branchPicker_exports.Count, {})
|
3490
3693
|
] });
|
3491
3694
|
});
|
3492
3695
|
BranchPickerState.displayName = "BranchPickerState";
|
3493
|
-
var BranchPickerNext =
|
3696
|
+
var BranchPickerNext = forwardRef21((props, ref) => {
|
3494
3697
|
const {
|
3495
3698
|
strings: { branchPicker: { next: { tooltip = "Next" } = {} } = {} } = {}
|
3496
3699
|
} = useThreadConfig();
|
3497
|
-
return /* @__PURE__ */
|
3700
|
+
return /* @__PURE__ */ jsx33(branchPicker_exports.Next, { asChild: true, children: /* @__PURE__ */ jsx33(TooltipIconButton, { tooltip, ...props, ref, children: props.children ?? /* @__PURE__ */ jsx33(ChevronRightIcon, {}) }) });
|
3498
3701
|
});
|
3499
3702
|
BranchPickerNext.displayName = "BranchPickerNext";
|
3500
3703
|
var exports2 = {
|
@@ -3506,12 +3709,12 @@ var branch_picker_default = Object.assign(BranchPicker, exports2);
|
|
3506
3709
|
|
3507
3710
|
// src/ui/base/avatar.tsx
|
3508
3711
|
import * as AvatarPrimitive from "@radix-ui/react-avatar";
|
3509
|
-
import { jsx as
|
3712
|
+
import { jsx as jsx34, jsxs as jsxs7 } from "react/jsx-runtime";
|
3510
3713
|
var Avatar = ({ src, alt, fallback }) => {
|
3511
3714
|
if (src == null && fallback == null) return null;
|
3512
3715
|
return /* @__PURE__ */ jsxs7(AvatarRoot, { children: [
|
3513
|
-
src != null && /* @__PURE__ */
|
3514
|
-
fallback != null && /* @__PURE__ */
|
3716
|
+
src != null && /* @__PURE__ */ jsx34(AvatarImage, { src, alt }),
|
3717
|
+
fallback != null && /* @__PURE__ */ jsx34(AvatarFallback, { children: fallback })
|
3515
3718
|
] });
|
3516
3719
|
};
|
3517
3720
|
Avatar.displayName = "Avatar";
|
@@ -3530,10 +3733,10 @@ AvatarFallback.displayName = "AvatarFallback";
|
|
3530
3733
|
|
3531
3734
|
// src/ui/content-part.tsx
|
3532
3735
|
import classNames2 from "classnames";
|
3533
|
-
import { jsx as
|
3736
|
+
import { jsx as jsx35 } from "react/jsx-runtime";
|
3534
3737
|
var Text = () => {
|
3535
3738
|
const status = useSmoothStatus();
|
3536
|
-
return /* @__PURE__ */
|
3739
|
+
return /* @__PURE__ */ jsx35(
|
3537
3740
|
contentPart_exports.Text,
|
3538
3741
|
{
|
3539
3742
|
className: classNames2(
|
@@ -3548,19 +3751,19 @@ var exports3 = { Text: withSmoothContextProvider(Text) };
|
|
3548
3751
|
var content_part_default = exports3;
|
3549
3752
|
|
3550
3753
|
// src/ui/assistant-message.tsx
|
3551
|
-
import { jsx as
|
3754
|
+
import { jsx as jsx36, jsxs as jsxs8 } from "react/jsx-runtime";
|
3552
3755
|
var AssistantMessage = () => {
|
3553
3756
|
return /* @__PURE__ */ jsxs8(AssistantMessageRoot, { children: [
|
3554
|
-
/* @__PURE__ */
|
3555
|
-
/* @__PURE__ */
|
3556
|
-
/* @__PURE__ */
|
3557
|
-
/* @__PURE__ */
|
3757
|
+
/* @__PURE__ */ jsx36(AssistantMessageAvatar, {}),
|
3758
|
+
/* @__PURE__ */ jsx36(AssistantMessageContent, {}),
|
3759
|
+
/* @__PURE__ */ jsx36(branch_picker_default, {}),
|
3760
|
+
/* @__PURE__ */ jsx36(assistant_action_bar_default, {})
|
3558
3761
|
] });
|
3559
3762
|
};
|
3560
3763
|
AssistantMessage.displayName = "AssistantMessage";
|
3561
3764
|
var AssistantMessageAvatar = () => {
|
3562
3765
|
const { assistantAvatar: avatar = { fallback: "A" } } = useThreadConfig();
|
3563
|
-
return /* @__PURE__ */
|
3766
|
+
return /* @__PURE__ */ jsx36(Avatar, { ...avatar });
|
3564
3767
|
};
|
3565
3768
|
var AssistantMessageRoot = withDefaults(message_exports.Root, {
|
3566
3769
|
className: "aui-assistant-message-root"
|
@@ -3569,9 +3772,9 @@ AssistantMessageRoot.displayName = "AssistantMessageRoot";
|
|
3569
3772
|
var AssistantMessageContentWrapper = withDefaults("div", {
|
3570
3773
|
className: "aui-assistant-message-content"
|
3571
3774
|
});
|
3572
|
-
var AssistantMessageContent =
|
3775
|
+
var AssistantMessageContent = forwardRef22(({ components: componentsProp, ...rest }, ref) => {
|
3573
3776
|
const { assistantMessage: { components = {} } = {} } = useThreadConfig();
|
3574
|
-
return /* @__PURE__ */
|
3777
|
+
return /* @__PURE__ */ jsx36(AssistantMessageContentWrapper, { ...rest, ref, children: /* @__PURE__ */ jsx36(
|
3575
3778
|
message_exports.Content,
|
3576
3779
|
{
|
3577
3780
|
components: {
|
@@ -3593,21 +3796,21 @@ var assistant_message_default = Object.assign(
|
|
3593
3796
|
);
|
3594
3797
|
|
3595
3798
|
// src/ui/assistant-modal.tsx
|
3596
|
-
import { forwardRef as
|
3799
|
+
import { forwardRef as forwardRef29 } from "react";
|
3597
3800
|
import { BotIcon, ChevronDownIcon } from "lucide-react";
|
3598
3801
|
|
3599
3802
|
// src/ui/thread.tsx
|
3600
|
-
import { forwardRef as
|
3803
|
+
import { forwardRef as forwardRef28 } from "react";
|
3601
3804
|
import { ArrowDownIcon } from "lucide-react";
|
3602
3805
|
|
3603
3806
|
// src/ui/composer.tsx
|
3604
|
-
import { forwardRef as
|
3807
|
+
import { forwardRef as forwardRef23 } from "react";
|
3605
3808
|
import { SendHorizontalIcon } from "lucide-react";
|
3606
3809
|
|
3607
3810
|
// src/ui/base/CircleStopIcon.tsx
|
3608
|
-
import { jsx as
|
3811
|
+
import { jsx as jsx37 } from "react/jsx-runtime";
|
3609
3812
|
var CircleStopIcon = () => {
|
3610
|
-
return /* @__PURE__ */
|
3813
|
+
return /* @__PURE__ */ jsx37(
|
3611
3814
|
"svg",
|
3612
3815
|
{
|
3613
3816
|
xmlns: "http://www.w3.org/2000/svg",
|
@@ -3615,18 +3818,18 @@ var CircleStopIcon = () => {
|
|
3615
3818
|
fill: "currentColor",
|
3616
3819
|
width: "16",
|
3617
3820
|
height: "16",
|
3618
|
-
children: /* @__PURE__ */
|
3821
|
+
children: /* @__PURE__ */ jsx37("rect", { width: "10", height: "10", x: "3", y: "3", rx: "2" })
|
3619
3822
|
}
|
3620
3823
|
);
|
3621
3824
|
};
|
3622
3825
|
CircleStopIcon.displayName = "CircleStopIcon";
|
3623
3826
|
|
3624
3827
|
// src/ui/composer.tsx
|
3625
|
-
import { Fragment as Fragment5, jsx as
|
3828
|
+
import { Fragment as Fragment5, jsx as jsx38, jsxs as jsxs9 } from "react/jsx-runtime";
|
3626
3829
|
var Composer = () => {
|
3627
3830
|
return /* @__PURE__ */ jsxs9(ComposerRoot, { children: [
|
3628
|
-
/* @__PURE__ */
|
3629
|
-
/* @__PURE__ */
|
3831
|
+
/* @__PURE__ */ jsx38(ComposerInput, { autoFocus: true }),
|
3832
|
+
/* @__PURE__ */ jsx38(ComposerAction, {})
|
3630
3833
|
] });
|
3631
3834
|
};
|
3632
3835
|
Composer.displayName = "Composer";
|
@@ -3639,14 +3842,14 @@ var ComposerInputStyled = withDefaults(composer_exports.Input, {
|
|
3639
3842
|
autoFocus: true,
|
3640
3843
|
className: "aui-composer-input"
|
3641
3844
|
});
|
3642
|
-
var ComposerInput =
|
3845
|
+
var ComposerInput = forwardRef23(
|
3643
3846
|
(props, ref) => {
|
3644
3847
|
const {
|
3645
3848
|
strings: {
|
3646
3849
|
composer: { input: { placeholder = "Write a message..." } = {} } = {}
|
3647
3850
|
} = {}
|
3648
3851
|
} = useThreadConfig();
|
3649
|
-
return /* @__PURE__ */
|
3852
|
+
return /* @__PURE__ */ jsx38(ComposerInputStyled, { placeholder, ...props, ref });
|
3650
3853
|
}
|
3651
3854
|
);
|
3652
3855
|
ComposerInput.displayName = "ComposerInput";
|
@@ -3657,10 +3860,10 @@ var useAllowCancel = () => {
|
|
3657
3860
|
};
|
3658
3861
|
var ComposerAction = () => {
|
3659
3862
|
const allowCancel = useAllowCancel();
|
3660
|
-
if (!allowCancel) return /* @__PURE__ */
|
3863
|
+
if (!allowCancel) return /* @__PURE__ */ jsx38(ComposerSend, {});
|
3661
3864
|
return /* @__PURE__ */ jsxs9(Fragment5, { children: [
|
3662
|
-
/* @__PURE__ */
|
3663
|
-
/* @__PURE__ */
|
3865
|
+
/* @__PURE__ */ jsx38(thread_exports.If, { running: false, children: /* @__PURE__ */ jsx38(ComposerSend, {}) }),
|
3866
|
+
/* @__PURE__ */ jsx38(thread_exports.If, { running: true, children: /* @__PURE__ */ jsx38(ComposerCancel, {}) })
|
3664
3867
|
] });
|
3665
3868
|
};
|
3666
3869
|
ComposerAction.displayName = "ComposerAction";
|
@@ -3668,22 +3871,22 @@ var ComposerSendButton = withDefaults(TooltipIconButton, {
|
|
3668
3871
|
variant: "default",
|
3669
3872
|
className: "aui-composer-send"
|
3670
3873
|
});
|
3671
|
-
var ComposerSend =
|
3874
|
+
var ComposerSend = forwardRef23((props, ref) => {
|
3672
3875
|
const {
|
3673
3876
|
strings: { composer: { send: { tooltip = "Send" } = {} } = {} } = {}
|
3674
3877
|
} = useThreadConfig();
|
3675
|
-
return /* @__PURE__ */
|
3878
|
+
return /* @__PURE__ */ jsx38(composer_exports.Send, { asChild: true, children: /* @__PURE__ */ jsx38(ComposerSendButton, { tooltip, ...props, ref, children: props.children ?? /* @__PURE__ */ jsx38(SendHorizontalIcon, {}) }) });
|
3676
3879
|
});
|
3677
3880
|
ComposerSend.displayName = "ComposerSend";
|
3678
3881
|
var ComposerCancelButton = withDefaults(TooltipIconButton, {
|
3679
3882
|
variant: "default",
|
3680
3883
|
className: "aui-composer-cancel"
|
3681
3884
|
});
|
3682
|
-
var ComposerCancel =
|
3885
|
+
var ComposerCancel = forwardRef23((props, ref) => {
|
3683
3886
|
const {
|
3684
3887
|
strings: { composer: { cancel: { tooltip = "Cancel" } = {} } = {} } = {}
|
3685
3888
|
} = useThreadConfig();
|
3686
|
-
return /* @__PURE__ */
|
3889
|
+
return /* @__PURE__ */ jsx38(composer_exports.Cancel, { asChild: true, children: /* @__PURE__ */ jsx38(ComposerCancelButton, { tooltip, ...props, ref, children: props.children ?? /* @__PURE__ */ jsx38(CircleStopIcon, {}) }) });
|
3687
3890
|
});
|
3688
3891
|
ComposerCancel.displayName = "ComposerCancel";
|
3689
3892
|
var exports5 = {
|
@@ -3696,15 +3899,15 @@ var exports5 = {
|
|
3696
3899
|
var composer_default = Object.assign(Composer, exports5);
|
3697
3900
|
|
3698
3901
|
// src/ui/thread-welcome.tsx
|
3699
|
-
import { forwardRef as
|
3700
|
-
import { jsx as
|
3902
|
+
import { forwardRef as forwardRef24 } from "react";
|
3903
|
+
import { jsx as jsx39, jsxs as jsxs10 } from "react/jsx-runtime";
|
3701
3904
|
var ThreadWelcome = () => {
|
3702
3905
|
return /* @__PURE__ */ jsxs10(ThreadWelcomeRoot, { children: [
|
3703
3906
|
/* @__PURE__ */ jsxs10(ThreadWelcomeCenter, { children: [
|
3704
|
-
/* @__PURE__ */
|
3705
|
-
/* @__PURE__ */
|
3907
|
+
/* @__PURE__ */ jsx39(ThreadWelcomeAvatar, {}),
|
3908
|
+
/* @__PURE__ */ jsx39(ThreadWelcomeMessage, {})
|
3706
3909
|
] }),
|
3707
|
-
/* @__PURE__ */
|
3910
|
+
/* @__PURE__ */ jsx39(ThreadWelcomeSuggestions, {})
|
3708
3911
|
] });
|
3709
3912
|
};
|
3710
3913
|
ThreadWelcome.displayName = "ThreadWelcome";
|
@@ -3714,22 +3917,22 @@ var ThreadWelcomeRootStyled = withDefaults("div", {
|
|
3714
3917
|
var ThreadWelcomeCenter = withDefaults("div", {
|
3715
3918
|
className: "aui-thread-welcome-center"
|
3716
3919
|
});
|
3717
|
-
var ThreadWelcomeRoot =
|
3920
|
+
var ThreadWelcomeRoot = forwardRef24(
|
3718
3921
|
(props, ref) => {
|
3719
|
-
return /* @__PURE__ */
|
3922
|
+
return /* @__PURE__ */ jsx39(thread_exports.Empty, { children: /* @__PURE__ */ jsx39(ThreadWelcomeRootStyled, { ...props, ref }) });
|
3720
3923
|
}
|
3721
3924
|
);
|
3722
3925
|
ThreadWelcomeRoot.displayName = "ThreadWelcomeRoot";
|
3723
3926
|
var ThreadWelcomeAvatar = () => {
|
3724
3927
|
const { assistantAvatar: avatar = { fallback: "A" } } = useThreadConfig();
|
3725
|
-
return /* @__PURE__ */
|
3928
|
+
return /* @__PURE__ */ jsx39(Avatar, { ...avatar });
|
3726
3929
|
};
|
3727
3930
|
var ThreadWelcomeMessageStyled = withDefaults("p", {
|
3728
3931
|
className: "aui-thread-welcome-message"
|
3729
3932
|
});
|
3730
|
-
var ThreadWelcomeMessage =
|
3933
|
+
var ThreadWelcomeMessage = forwardRef24(({ message: messageProp, ...rest }, ref) => {
|
3731
3934
|
const { welcome: { message = "How can I help you today?" } = {} } = useThreadConfig();
|
3732
|
-
return /* @__PURE__ */
|
3935
|
+
return /* @__PURE__ */ jsx39(ThreadWelcomeMessageStyled, { ...rest, ref, children: messageProp ?? message });
|
3733
3936
|
});
|
3734
3937
|
ThreadWelcomeMessage.displayName = "ThreadWelcomeMessage";
|
3735
3938
|
var ThreadWelcomeSuggestionContainer = withDefaults("div", {
|
@@ -3741,21 +3944,21 @@ var ThreadWelcomeSuggestionStyled = withDefaults(thread_exports.Suggestion, {
|
|
3741
3944
|
var ThreadWelcomeSuggestion = ({
|
3742
3945
|
suggestion: { text, prompt }
|
3743
3946
|
}) => {
|
3744
|
-
return /* @__PURE__ */
|
3947
|
+
return /* @__PURE__ */ jsx39(
|
3745
3948
|
ThreadWelcomeSuggestionStyled,
|
3746
3949
|
{
|
3747
3950
|
prompt,
|
3748
3951
|
method: "replace",
|
3749
3952
|
autoSend: true,
|
3750
|
-
children: /* @__PURE__ */
|
3953
|
+
children: /* @__PURE__ */ jsx39("span", { className: "aui-thread-welcome-suggestion-text", children: text ?? prompt })
|
3751
3954
|
}
|
3752
3955
|
);
|
3753
3956
|
};
|
3754
3957
|
var ThreadWelcomeSuggestions = () => {
|
3755
3958
|
const { welcome: { suggestions } = {} } = useThreadConfig();
|
3756
|
-
return /* @__PURE__ */
|
3959
|
+
return /* @__PURE__ */ jsx39(ThreadWelcomeSuggestionContainer, { children: suggestions?.map((suggestion, idx) => {
|
3757
3960
|
const key = `${suggestion.prompt}-${idx}`;
|
3758
|
-
return /* @__PURE__ */
|
3961
|
+
return /* @__PURE__ */ jsx39(ThreadWelcomeSuggestion, { suggestion }, key);
|
3759
3962
|
}) });
|
3760
3963
|
};
|
3761
3964
|
ThreadWelcomeSuggestions.displayName = "ThreadWelcomeSuggestions";
|
@@ -3770,12 +3973,12 @@ var exports6 = {
|
|
3770
3973
|
var thread_welcome_default = Object.assign(ThreadWelcome, exports6);
|
3771
3974
|
|
3772
3975
|
// src/ui/user-message.tsx
|
3773
|
-
import { forwardRef as
|
3976
|
+
import { forwardRef as forwardRef26 } from "react";
|
3774
3977
|
|
3775
3978
|
// src/ui/user-action-bar.tsx
|
3776
|
-
import { forwardRef as
|
3979
|
+
import { forwardRef as forwardRef25 } from "react";
|
3777
3980
|
import { PencilIcon } from "lucide-react";
|
3778
|
-
import { jsx as
|
3981
|
+
import { jsx as jsx40 } from "react/jsx-runtime";
|
3779
3982
|
var useAllowEdit = () => {
|
3780
3983
|
const { userMessage: { allowEdit = true } = {} } = useThreadConfig();
|
3781
3984
|
const { useThread } = useThreadContext();
|
@@ -3785,20 +3988,20 @@ var useAllowEdit = () => {
|
|
3785
3988
|
var UserActionBar = () => {
|
3786
3989
|
const allowEdit = useAllowEdit();
|
3787
3990
|
if (!allowEdit) return null;
|
3788
|
-
return /* @__PURE__ */
|
3991
|
+
return /* @__PURE__ */ jsx40(UserActionBarRoot, { hideWhenRunning: true, autohide: "not-last", children: /* @__PURE__ */ jsx40(UserActionBarEdit, {}) });
|
3789
3992
|
};
|
3790
3993
|
UserActionBar.displayName = "UserActionBar";
|
3791
3994
|
var UserActionBarRoot = withDefaults(actionBar_exports.Root, {
|
3792
3995
|
className: "aui-user-action-bar-root"
|
3793
3996
|
});
|
3794
3997
|
UserActionBarRoot.displayName = "UserActionBarRoot";
|
3795
|
-
var UserActionBarEdit =
|
3998
|
+
var UserActionBarEdit = forwardRef25((props, ref) => {
|
3796
3999
|
const {
|
3797
4000
|
strings: { userMessage: { edit: { tooltip = "Edit" } = {} } = {} } = {}
|
3798
4001
|
} = useThreadConfig();
|
3799
4002
|
const allowEdit = useAllowEdit();
|
3800
4003
|
if (!allowEdit) return null;
|
3801
|
-
return /* @__PURE__ */
|
4004
|
+
return /* @__PURE__ */ jsx40(actionBar_exports.Edit, { asChild: true, children: /* @__PURE__ */ jsx40(TooltipIconButton, { tooltip, ...props, ref, children: props.children ?? /* @__PURE__ */ jsx40(PencilIcon, {}) }) });
|
3802
4005
|
});
|
3803
4006
|
UserActionBarEdit.displayName = "UserActionBarEdit";
|
3804
4007
|
var exports7 = {
|
@@ -3808,12 +4011,12 @@ var exports7 = {
|
|
3808
4011
|
var user_action_bar_default = Object.assign(UserActionBar, exports7);
|
3809
4012
|
|
3810
4013
|
// src/ui/user-message.tsx
|
3811
|
-
import { jsx as
|
4014
|
+
import { jsx as jsx41, jsxs as jsxs11 } from "react/jsx-runtime";
|
3812
4015
|
var UserMessage = () => {
|
3813
4016
|
return /* @__PURE__ */ jsxs11(UserMessageRoot, { children: [
|
3814
|
-
/* @__PURE__ */
|
3815
|
-
/* @__PURE__ */
|
3816
|
-
/* @__PURE__ */
|
4017
|
+
/* @__PURE__ */ jsx41(user_action_bar_default, {}),
|
4018
|
+
/* @__PURE__ */ jsx41(UserMessageContent, {}),
|
4019
|
+
/* @__PURE__ */ jsx41(branch_picker_default, {})
|
3817
4020
|
] });
|
3818
4021
|
};
|
3819
4022
|
UserMessage.displayName = "UserMessage";
|
@@ -3824,9 +4027,9 @@ UserMessageRoot.displayName = "UserMessageRoot";
|
|
3824
4027
|
var UserMessageContentWrapper = withDefaults("div", {
|
3825
4028
|
className: "aui-user-message-content"
|
3826
4029
|
});
|
3827
|
-
var UserMessageContent =
|
4030
|
+
var UserMessageContent = forwardRef26(
|
3828
4031
|
({ components, ...props }, ref) => {
|
3829
|
-
return /* @__PURE__ */
|
4032
|
+
return /* @__PURE__ */ jsx41(UserMessageContentWrapper, { ...props, ref, children: /* @__PURE__ */ jsx41(
|
3830
4033
|
message_exports.Content,
|
3831
4034
|
{
|
3832
4035
|
components: {
|
@@ -3845,14 +4048,14 @@ var exports8 = {
|
|
3845
4048
|
var user_message_default = Object.assign(UserMessage, exports8);
|
3846
4049
|
|
3847
4050
|
// src/ui/edit-composer.tsx
|
3848
|
-
import { forwardRef as
|
3849
|
-
import { jsx as
|
4051
|
+
import { forwardRef as forwardRef27 } from "react";
|
4052
|
+
import { jsx as jsx42, jsxs as jsxs12 } from "react/jsx-runtime";
|
3850
4053
|
var EditComposer = () => {
|
3851
4054
|
return /* @__PURE__ */ jsxs12(EditComposerRoot, { children: [
|
3852
|
-
/* @__PURE__ */
|
4055
|
+
/* @__PURE__ */ jsx42(EditComposerInput, {}),
|
3853
4056
|
/* @__PURE__ */ jsxs12(EditComposerFooter, { children: [
|
3854
|
-
/* @__PURE__ */
|
3855
|
-
/* @__PURE__ */
|
4057
|
+
/* @__PURE__ */ jsx42(EditComposerCancel, {}),
|
4058
|
+
/* @__PURE__ */ jsx42(EditComposerSend, {})
|
3856
4059
|
] })
|
3857
4060
|
] });
|
3858
4061
|
};
|
@@ -3869,23 +4072,23 @@ var EditComposerFooter = withDefaults("div", {
|
|
3869
4072
|
className: "aui-edit-composer-footer"
|
3870
4073
|
});
|
3871
4074
|
EditComposerFooter.displayName = "EditComposerFooter";
|
3872
|
-
var EditComposerCancel =
|
4075
|
+
var EditComposerCancel = forwardRef27(
|
3873
4076
|
(props, ref) => {
|
3874
4077
|
const {
|
3875
4078
|
strings: {
|
3876
4079
|
editComposer: { cancel: { label = "Cancel" } = {} } = {}
|
3877
4080
|
} = {}
|
3878
4081
|
} = useThreadConfig();
|
3879
|
-
return /* @__PURE__ */
|
4082
|
+
return /* @__PURE__ */ jsx42(composer_exports.Cancel, { asChild: true, children: /* @__PURE__ */ jsx42(Button, { variant: "ghost", ...props, ref, children: props.children ?? label }) });
|
3880
4083
|
}
|
3881
4084
|
);
|
3882
4085
|
EditComposerCancel.displayName = "EditComposerCancel";
|
3883
|
-
var EditComposerSend =
|
4086
|
+
var EditComposerSend = forwardRef27(
|
3884
4087
|
(props, ref) => {
|
3885
4088
|
const {
|
3886
4089
|
strings: { editComposer: { send: { label = "Send" } = {} } = {} } = {}
|
3887
4090
|
} = useThreadConfig();
|
3888
|
-
return /* @__PURE__ */
|
4091
|
+
return /* @__PURE__ */ jsx42(composer_exports.Send, { asChild: true, children: /* @__PURE__ */ jsx42(Button, { ...props, ref, children: props.children ?? label }) });
|
3889
4092
|
}
|
3890
4093
|
);
|
3891
4094
|
EditComposerSend.displayName = "EditComposerSend";
|
@@ -3899,23 +4102,23 @@ var exports9 = {
|
|
3899
4102
|
var edit_composer_default = Object.assign(EditComposer, exports9);
|
3900
4103
|
|
3901
4104
|
// src/ui/thread.tsx
|
3902
|
-
import { jsx as
|
4105
|
+
import { jsx as jsx43, jsxs as jsxs13 } from "react/jsx-runtime";
|
3903
4106
|
var Thread = (config) => {
|
3904
|
-
return /* @__PURE__ */
|
3905
|
-
/* @__PURE__ */
|
3906
|
-
/* @__PURE__ */
|
4107
|
+
return /* @__PURE__ */ jsx43(ThreadRoot, { config, children: /* @__PURE__ */ jsxs13(ThreadViewport, { children: [
|
4108
|
+
/* @__PURE__ */ jsx43(thread_welcome_default, {}),
|
4109
|
+
/* @__PURE__ */ jsx43(ThreadMessages, {}),
|
3907
4110
|
/* @__PURE__ */ jsxs13(ThreadViewportFooter, { children: [
|
3908
|
-
/* @__PURE__ */
|
3909
|
-
/* @__PURE__ */
|
4111
|
+
/* @__PURE__ */ jsx43(ThreadScrollToBottom, {}),
|
4112
|
+
/* @__PURE__ */ jsx43(composer_default, {})
|
3910
4113
|
] })
|
3911
4114
|
] }) });
|
3912
4115
|
};
|
3913
4116
|
var ThreadRootStyled = withDefaults(thread_exports.Root, {
|
3914
4117
|
className: "aui-root aui-thread-root"
|
3915
4118
|
});
|
3916
|
-
var ThreadRoot =
|
4119
|
+
var ThreadRoot = forwardRef28(
|
3917
4120
|
({ config, ...props }, ref) => {
|
3918
|
-
return /* @__PURE__ */
|
4121
|
+
return /* @__PURE__ */ jsx43(ThreadConfigProvider, { config, children: /* @__PURE__ */ jsx43(ThreadRootStyled, { ...props, ref }) });
|
3919
4122
|
}
|
3920
4123
|
);
|
3921
4124
|
ThreadRoot.displayName = "ThreadRoot";
|
@@ -3929,7 +4132,7 @@ var ThreadViewportFooter = withDefaults("div", {
|
|
3929
4132
|
ThreadViewportFooter.displayName = "ThreadViewportFooter";
|
3930
4133
|
var SystemMessage = () => null;
|
3931
4134
|
var ThreadMessages = ({ components, ...rest }) => {
|
3932
|
-
return /* @__PURE__ */
|
4135
|
+
return /* @__PURE__ */ jsx43(
|
3933
4136
|
thread_exports.Messages,
|
3934
4137
|
{
|
3935
4138
|
components: {
|
@@ -3947,13 +4150,13 @@ var ThreadScrollToBottomIconButton = withDefaults(TooltipIconButton, {
|
|
3947
4150
|
variant: "outline",
|
3948
4151
|
className: "aui-thread-scroll-to-bottom"
|
3949
4152
|
});
|
3950
|
-
var ThreadScrollToBottom =
|
4153
|
+
var ThreadScrollToBottom = forwardRef28((props, ref) => {
|
3951
4154
|
const {
|
3952
4155
|
strings: {
|
3953
4156
|
thread: { scrollToBottom: { tooltip = "Scroll to bottom" } = {} } = {}
|
3954
4157
|
} = {}
|
3955
4158
|
} = useThreadConfig();
|
3956
|
-
return /* @__PURE__ */
|
4159
|
+
return /* @__PURE__ */ jsx43(thread_exports.ScrollToBottom, { asChild: true, children: /* @__PURE__ */ jsx43(ThreadScrollToBottomIconButton, { tooltip, ...props, ref, children: props.children ?? /* @__PURE__ */ jsx43(ArrowDownIcon, {}) }) });
|
3957
4160
|
});
|
3958
4161
|
ThreadScrollToBottom.displayName = "ThreadScrollToBottom";
|
3959
4162
|
var exports10 = {
|
@@ -3966,20 +4169,20 @@ var exports10 = {
|
|
3966
4169
|
var thread_default = Object.assign(Thread, exports10);
|
3967
4170
|
|
3968
4171
|
// src/ui/assistant-modal.tsx
|
3969
|
-
import { Fragment as Fragment6, jsx as
|
4172
|
+
import { Fragment as Fragment6, jsx as jsx44, jsxs as jsxs14 } from "react/jsx-runtime";
|
3970
4173
|
var AssistantModal = (config) => {
|
3971
4174
|
return /* @__PURE__ */ jsxs14(AssistantModalRoot, { config, children: [
|
3972
|
-
/* @__PURE__ */
|
3973
|
-
/* @__PURE__ */
|
4175
|
+
/* @__PURE__ */ jsx44(AssistantModalTrigger, {}),
|
4176
|
+
/* @__PURE__ */ jsx44(AssistantModalContent, { children: /* @__PURE__ */ jsx44(thread_default, {}) })
|
3974
4177
|
] });
|
3975
4178
|
};
|
3976
4179
|
AssistantModal.displayName = "AssistantModal";
|
3977
4180
|
var AssistantModalRoot = ({ config, ...props }) => {
|
3978
|
-
return /* @__PURE__ */
|
4181
|
+
return /* @__PURE__ */ jsx44(ThreadConfigProvider, { config, children: /* @__PURE__ */ jsx44(assistantModal_exports.Root, { ...props }) });
|
3979
4182
|
};
|
3980
4183
|
AssistantModalRoot.displayName = "AssistantModalRoot";
|
3981
|
-
var AssistantModalTrigger =
|
3982
|
-
return /* @__PURE__ */
|
4184
|
+
var AssistantModalTrigger = forwardRef29((props, ref) => {
|
4185
|
+
return /* @__PURE__ */ jsx44(AssistantModalAnchor, { children: /* @__PURE__ */ jsx44(assistantModal_exports.Trigger, { asChild: true, children: /* @__PURE__ */ jsx44(AssistantModalButton, { ...props, ref }) }) });
|
3983
4186
|
});
|
3984
4187
|
AssistantModalTrigger.displayName = "AssistantModalTrigger";
|
3985
4188
|
var AssistantModalAnchor = withDefaults(assistantModal_exports.Anchor, {
|
@@ -3990,7 +4193,7 @@ var ModalButtonStyled = withDefaults(TooltipIconButton, {
|
|
3990
4193
|
variant: "default",
|
3991
4194
|
className: "aui-modal-button"
|
3992
4195
|
});
|
3993
|
-
var AssistantModalButton =
|
4196
|
+
var AssistantModalButton = forwardRef29(({ "data-state": state, ...rest }, ref) => {
|
3994
4197
|
const {
|
3995
4198
|
strings: {
|
3996
4199
|
assistantModal: {
|
@@ -4004,7 +4207,7 @@ var AssistantModalButton = forwardRef28(({ "data-state": state, ...rest }, ref)
|
|
4004
4207
|
} = {}
|
4005
4208
|
} = useThreadConfig();
|
4006
4209
|
const tooltip = state === "open" ? openTooltip : closedTooltip;
|
4007
|
-
return /* @__PURE__ */
|
4210
|
+
return /* @__PURE__ */ jsx44(
|
4008
4211
|
ModalButtonStyled,
|
4009
4212
|
{
|
4010
4213
|
side: "left",
|
@@ -4013,14 +4216,14 @@ var AssistantModalButton = forwardRef28(({ "data-state": state, ...rest }, ref)
|
|
4013
4216
|
...rest,
|
4014
4217
|
ref,
|
4015
4218
|
children: rest.children ?? /* @__PURE__ */ jsxs14(Fragment6, { children: [
|
4016
|
-
/* @__PURE__ */
|
4219
|
+
/* @__PURE__ */ jsx44(
|
4017
4220
|
BotIcon,
|
4018
4221
|
{
|
4019
4222
|
"data-state": state,
|
4020
4223
|
className: "aui-modal-button-closed-icon"
|
4021
4224
|
}
|
4022
4225
|
),
|
4023
|
-
/* @__PURE__ */
|
4226
|
+
/* @__PURE__ */ jsx44(
|
4024
4227
|
ChevronDownIcon,
|
4025
4228
|
{
|
4026
4229
|
"data-state": state,
|
@@ -4069,6 +4272,7 @@ export {
|
|
4069
4272
|
thread_welcome_default as ThreadWelcome,
|
4070
4273
|
user_action_bar_default as UserActionBar,
|
4071
4274
|
user_message_default as UserMessage,
|
4275
|
+
WebSpeechSynthesisAdapter,
|
4072
4276
|
fromCoreMessage,
|
4073
4277
|
fromCoreMessages,
|
4074
4278
|
fromLanguageModelMessages,
|
@@ -4085,6 +4289,8 @@ export {
|
|
4085
4289
|
useActionBarCopy,
|
4086
4290
|
useActionBarEdit,
|
4087
4291
|
useActionBarReload,
|
4292
|
+
useActionBarSpeak,
|
4293
|
+
useActionBarStopSpeaking,
|
4088
4294
|
useAppendMessage,
|
4089
4295
|
useAssistantContext,
|
4090
4296
|
useAssistantInstructions,
|