@assistant-ui/react 0.5.40 → 0.5.42
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/index.d.mts +114 -46
- package/dist/index.d.ts +114 -46
- package/dist/index.js +313 -91
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +504 -282
- package/dist/index.mjs.map +1 -1
- package/dist/styles/index.css +27 -18
- package/dist/styles/index.css.map +1 -1
- package/dist/styles/tailwindcss/thread.css +4 -4
- 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
|
};
|
@@ -1057,31 +1058,29 @@ var EdgeChatAdapter = class {
|
|
1057
1058
|
var useEdgeRuntime = ({
|
1058
1059
|
initialMessages,
|
1059
1060
|
maxToolRoundtrips,
|
1061
|
+
adapters,
|
1060
1062
|
...options
|
1061
1063
|
}) => {
|
1062
1064
|
const [adapter] = useState3(() => new EdgeChatAdapter(options));
|
1063
|
-
return useLocalRuntime(adapter, {
|
1065
|
+
return useLocalRuntime(adapter, {
|
1066
|
+
initialMessages,
|
1067
|
+
maxToolRoundtrips,
|
1068
|
+
adapters
|
1069
|
+
});
|
1064
1070
|
};
|
1065
1071
|
|
1066
1072
|
// src/runtimes/local/shouldContinue.tsx
|
1067
1073
|
var shouldContinue = (result) => result.status?.type === "requires-action" && result.status.reason === "tool-calls" && result.content.every((c) => c.type !== "tool-call" || !!c.result);
|
1068
1074
|
|
1069
1075
|
// src/runtimes/local/LocalThreadRuntime.tsx
|
1070
|
-
var CAPABILITIES = Object.freeze({
|
1071
|
-
switchToBranch: true,
|
1072
|
-
edit: true,
|
1073
|
-
reload: true,
|
1074
|
-
cancel: true,
|
1075
|
-
copy: true
|
1076
|
-
});
|
1077
1076
|
var LocalThreadRuntime = class {
|
1078
|
-
constructor(configProvider, adapter, options) {
|
1077
|
+
constructor(configProvider, adapter, { initialMessages, ...options }) {
|
1079
1078
|
this.configProvider = configProvider;
|
1080
1079
|
this.adapter = adapter;
|
1081
1080
|
this.options = options;
|
1082
|
-
if (
|
1081
|
+
if (initialMessages) {
|
1083
1082
|
let parentId = null;
|
1084
|
-
const messages = fromCoreMessages(
|
1083
|
+
const messages = fromCoreMessages(initialMessages);
|
1085
1084
|
for (const message of messages) {
|
1086
1085
|
this.repository.addOrUpdateMessage(parentId, message);
|
1087
1086
|
parentId = message.id;
|
@@ -1091,7 +1090,14 @@ var LocalThreadRuntime = class {
|
|
1091
1090
|
_subscriptions = /* @__PURE__ */ new Set();
|
1092
1091
|
abortController = null;
|
1093
1092
|
repository = new MessageRepository();
|
1094
|
-
capabilities =
|
1093
|
+
capabilities = {
|
1094
|
+
switchToBranch: true,
|
1095
|
+
edit: true,
|
1096
|
+
reload: true,
|
1097
|
+
cancel: true,
|
1098
|
+
unstable_copy: true,
|
1099
|
+
speak: false
|
1100
|
+
};
|
1095
1101
|
isDisabled = false;
|
1096
1102
|
get messages() {
|
1097
1103
|
return this.repository.getMessages();
|
@@ -1103,6 +1109,18 @@ var LocalThreadRuntime = class {
|
|
1103
1109
|
this.notifySubscribers();
|
1104
1110
|
}
|
1105
1111
|
};
|
1112
|
+
_options;
|
1113
|
+
get options() {
|
1114
|
+
return this._options;
|
1115
|
+
}
|
1116
|
+
set options({ initialMessages, ...options }) {
|
1117
|
+
this._options = options;
|
1118
|
+
const canSpeak = options.adapters?.speech !== void 0;
|
1119
|
+
if (this.capabilities.speak !== canSpeak) {
|
1120
|
+
this.capabilities.speak = canSpeak;
|
1121
|
+
this.notifySubscribers();
|
1122
|
+
}
|
1123
|
+
}
|
1106
1124
|
getBranches(messageId) {
|
1107
1125
|
return this.repository.getBranches(messageId);
|
1108
1126
|
}
|
@@ -1240,7 +1258,11 @@ var LocalThreadRuntime = class {
|
|
1240
1258
|
this._subscriptions.add(callback);
|
1241
1259
|
return () => this._subscriptions.delete(callback);
|
1242
1260
|
}
|
1243
|
-
addToolResult({
|
1261
|
+
addToolResult({
|
1262
|
+
messageId,
|
1263
|
+
toolCallId,
|
1264
|
+
result
|
1265
|
+
}) {
|
1244
1266
|
let { parentId, message } = this.repository.getMessage(messageId);
|
1245
1267
|
if (message.role !== "assistant")
|
1246
1268
|
throw new Error("Tried to add tool result to non-assistant message");
|
@@ -1267,6 +1289,25 @@ var LocalThreadRuntime = class {
|
|
1267
1289
|
this.performRoundtrip(parentId, message);
|
1268
1290
|
}
|
1269
1291
|
}
|
1292
|
+
// TODO lift utterance state to thread runtime
|
1293
|
+
_utterance;
|
1294
|
+
speak(messageId) {
|
1295
|
+
const adapter = this.options.adapters?.speech;
|
1296
|
+
if (!adapter) throw new Error("Speech adapter not configured");
|
1297
|
+
const { message } = this.repository.getMessage(messageId);
|
1298
|
+
if (this._utterance) {
|
1299
|
+
this._utterance.cancel();
|
1300
|
+
this._utterance = void 0;
|
1301
|
+
}
|
1302
|
+
const utterance = adapter.speak(message);
|
1303
|
+
utterance.onEnd(() => {
|
1304
|
+
if (this._utterance === utterance) {
|
1305
|
+
this._utterance = void 0;
|
1306
|
+
}
|
1307
|
+
});
|
1308
|
+
this._utterance = utterance;
|
1309
|
+
return this._utterance;
|
1310
|
+
}
|
1270
1311
|
export() {
|
1271
1312
|
return this.repository.export();
|
1272
1313
|
}
|
@@ -1446,7 +1487,8 @@ var ExternalStoreThreadRuntime = class {
|
|
1446
1487
|
edit: false,
|
1447
1488
|
reload: false,
|
1448
1489
|
cancel: false,
|
1449
|
-
|
1490
|
+
unstable_copy: false,
|
1491
|
+
speak: false
|
1450
1492
|
};
|
1451
1493
|
get capabilities() {
|
1452
1494
|
return this._capabilities;
|
@@ -1476,7 +1518,8 @@ var ExternalStoreThreadRuntime = class {
|
|
1476
1518
|
edit: this._store.onEdit !== void 0,
|
1477
1519
|
reload: this._store.onReload !== void 0,
|
1478
1520
|
cancel: this._store.onCancel !== void 0,
|
1479
|
-
|
1521
|
+
unstable_copy: this._store.unstable_capabilities?.copy !== null,
|
1522
|
+
speak: this._store.onSpeak !== void 0
|
1480
1523
|
};
|
1481
1524
|
if (oldStore) {
|
1482
1525
|
if (oldStore.convertMessage !== store.convertMessage) {
|
@@ -1573,6 +1616,17 @@ var ExternalStoreThreadRuntime = class {
|
|
1573
1616
|
this.updateMessages(messages);
|
1574
1617
|
}, 0);
|
1575
1618
|
}
|
1619
|
+
addToolResult(options) {
|
1620
|
+
if (!this._store.onAddToolResult)
|
1621
|
+
throw new Error("Runtime does not support tool results.");
|
1622
|
+
this._store.onAddToolResult(options);
|
1623
|
+
}
|
1624
|
+
speak(messageId) {
|
1625
|
+
if (!this._store.onSpeak)
|
1626
|
+
throw new Error("Runtime does not support speaking.");
|
1627
|
+
const { message } = this.repository.getMessage(messageId);
|
1628
|
+
return this._store.onSpeak(message);
|
1629
|
+
}
|
1576
1630
|
subscribe(callback) {
|
1577
1631
|
this._subscriptions.add(callback);
|
1578
1632
|
return () => this._subscriptions.delete(callback);
|
@@ -1582,11 +1636,6 @@ var ExternalStoreThreadRuntime = class {
|
|
1582
1636
|
messages.flatMap(getExternalStoreMessage).filter((m) => m != null)
|
1583
1637
|
);
|
1584
1638
|
};
|
1585
|
-
addToolResult(options) {
|
1586
|
-
if (!this._store.onAddToolResult)
|
1587
|
-
throw new Error("Runtime does not support tool results.");
|
1588
|
-
this._store.onAddToolResult(options);
|
1589
|
-
}
|
1590
1639
|
};
|
1591
1640
|
|
1592
1641
|
// src/runtimes/external-store/ExternalStoreRuntime.tsx
|
@@ -1671,6 +1720,47 @@ var useDangerousInBrowserRuntime = ({
|
|
1671
1720
|
return useLocalRuntime(adapter, { initialMessages });
|
1672
1721
|
};
|
1673
1722
|
|
1723
|
+
// src/runtimes/speech/WebSpeechSynthesisAdapter.ts
|
1724
|
+
var WebSpeechSynthesisAdapter = class {
|
1725
|
+
speak(message) {
|
1726
|
+
const text = getThreadMessageText(message);
|
1727
|
+
const utterance = new SpeechSynthesisUtterance(text);
|
1728
|
+
const endHandlers = /* @__PURE__ */ new Set();
|
1729
|
+
const handleEnd = (reason, error) => {
|
1730
|
+
if (res.status.type === "ended") return;
|
1731
|
+
res.status = { type: "ended", reason, error };
|
1732
|
+
endHandlers.forEach((handler) => handler());
|
1733
|
+
};
|
1734
|
+
utterance.addEventListener("end", () => handleEnd("finished"));
|
1735
|
+
utterance.addEventListener("error", (e) => handleEnd("error", e.error));
|
1736
|
+
window.speechSynthesis.speak(utterance);
|
1737
|
+
const res = {
|
1738
|
+
status: { type: "running" },
|
1739
|
+
cancel: () => {
|
1740
|
+
window.speechSynthesis.cancel();
|
1741
|
+
handleEnd("cancelled");
|
1742
|
+
},
|
1743
|
+
onEnd: (callback) => {
|
1744
|
+
if (res.status.type === "ended") {
|
1745
|
+
let cancelled = false;
|
1746
|
+
queueMicrotask(() => {
|
1747
|
+
if (!cancelled) callback();
|
1748
|
+
});
|
1749
|
+
return () => {
|
1750
|
+
cancelled = true;
|
1751
|
+
};
|
1752
|
+
} else {
|
1753
|
+
endHandlers.add(callback);
|
1754
|
+
return () => {
|
1755
|
+
endHandlers.delete(callback);
|
1756
|
+
};
|
1757
|
+
}
|
1758
|
+
}
|
1759
|
+
};
|
1760
|
+
return res;
|
1761
|
+
}
|
1762
|
+
};
|
1763
|
+
|
1674
1764
|
// src/context/providers/ThreadProvider.tsx
|
1675
1765
|
import { jsx as jsx6, jsxs as jsxs2 } from "react/jsx-runtime";
|
1676
1766
|
var ThreadProvider = ({
|
@@ -1977,8 +2067,8 @@ var useActionBarCopy = ({
|
|
1977
2067
|
const { useMessage, useMessageUtils, useEditComposer } = useMessageContext();
|
1978
2068
|
const hasCopyableContent = useCombinedStore(
|
1979
2069
|
[useMessage, useEditComposer],
|
1980
|
-
(
|
1981
|
-
return !c.isEditing &&
|
2070
|
+
({ message }, c) => {
|
2071
|
+
return !c.isEditing && (message.role !== "assistant" || message.status.type !== "running") && message.content.some((c2) => c2.type === "text" && c2.text.length > 0);
|
1982
2072
|
}
|
1983
2073
|
);
|
1984
2074
|
const callback = useCallback3(() => {
|
@@ -2030,6 +2120,38 @@ var useActionBarReload = () => {
|
|
2030
2120
|
return callback;
|
2031
2121
|
};
|
2032
2122
|
|
2123
|
+
// src/primitive-hooks/actionBar/useActionBarSpeak.tsx
|
2124
|
+
import { useCallback as useCallback6 } from "react";
|
2125
|
+
var useActionBarSpeak = () => {
|
2126
|
+
const { useThreadActions } = useThreadContext();
|
2127
|
+
const { useMessage, useEditComposer, useMessageUtils } = useMessageContext();
|
2128
|
+
const hasSpeakableContent = useCombinedStore(
|
2129
|
+
[useMessage, useEditComposer],
|
2130
|
+
({ message }, c) => {
|
2131
|
+
return !c.isEditing && (message.role !== "assistant" || message.status.type !== "running") && message.content.some((c2) => c2.type === "text" && c2.text.length > 0);
|
2132
|
+
}
|
2133
|
+
);
|
2134
|
+
const callback = useCallback6(async () => {
|
2135
|
+
const { message } = useMessage.getState();
|
2136
|
+
const utt = useThreadActions.getState().speak(message.id);
|
2137
|
+
useMessageUtils.getState().addUtterance(utt);
|
2138
|
+
}, [useThreadActions, useMessage, useMessageUtils]);
|
2139
|
+
if (!hasSpeakableContent) return null;
|
2140
|
+
return callback;
|
2141
|
+
};
|
2142
|
+
|
2143
|
+
// src/primitive-hooks/actionBar/useActionBarStopSpeaking.tsx
|
2144
|
+
import { useCallback as useCallback7 } from "react";
|
2145
|
+
var useActionBarStopSpeaking = () => {
|
2146
|
+
const { useMessageUtils } = useMessageContext();
|
2147
|
+
const isSpeaking = useMessageUtils((u) => u.isSpeaking);
|
2148
|
+
const callback = useCallback7(async () => {
|
2149
|
+
useMessageUtils.getState().stopSpeaking();
|
2150
|
+
}, [useMessageUtils]);
|
2151
|
+
if (!isSpeaking) return null;
|
2152
|
+
return callback;
|
2153
|
+
};
|
2154
|
+
|
2033
2155
|
// src/primitive-hooks/branchPicker/useBranchPickerCount.tsx
|
2034
2156
|
var useBranchPickerCount = () => {
|
2035
2157
|
const { useMessage } = useMessageContext();
|
@@ -2038,7 +2160,7 @@ var useBranchPickerCount = () => {
|
|
2038
2160
|
};
|
2039
2161
|
|
2040
2162
|
// src/primitive-hooks/branchPicker/useBranchPickerNext.tsx
|
2041
|
-
import { useCallback as
|
2163
|
+
import { useCallback as useCallback8 } from "react";
|
2042
2164
|
var useBranchPickerNext = () => {
|
2043
2165
|
const { useThreadActions } = useThreadContext();
|
2044
2166
|
const { useMessage, useEditComposer } = useMessageContext();
|
@@ -2046,7 +2168,7 @@ var useBranchPickerNext = () => {
|
|
2046
2168
|
[useMessage, useEditComposer],
|
2047
2169
|
(m, c) => c.isEditing || m.branches.indexOf(m.message.id) + 1 >= m.branches.length
|
2048
2170
|
);
|
2049
|
-
const callback =
|
2171
|
+
const callback = useCallback8(() => {
|
2050
2172
|
const { message, branches } = useMessage.getState();
|
2051
2173
|
useThreadActions.getState().switchToBranch(branches[branches.indexOf(message.id) + 1]);
|
2052
2174
|
}, [useThreadActions, useMessage]);
|
@@ -2062,7 +2184,7 @@ var useBranchPickerNumber = () => {
|
|
2062
2184
|
};
|
2063
2185
|
|
2064
2186
|
// src/primitive-hooks/branchPicker/useBranchPickerPrevious.tsx
|
2065
|
-
import { useCallback as
|
2187
|
+
import { useCallback as useCallback9 } from "react";
|
2066
2188
|
var useBranchPickerPrevious = () => {
|
2067
2189
|
const { useThreadActions } = useThreadContext();
|
2068
2190
|
const { useMessage, useEditComposer } = useMessageContext();
|
@@ -2070,7 +2192,7 @@ var useBranchPickerPrevious = () => {
|
|
2070
2192
|
[useMessage, useEditComposer],
|
2071
2193
|
(m, c) => c.isEditing || m.branches.indexOf(m.message.id) <= 0
|
2072
2194
|
);
|
2073
|
-
const callback =
|
2195
|
+
const callback = useCallback9(() => {
|
2074
2196
|
const { message, branches } = useMessage.getState();
|
2075
2197
|
useThreadActions.getState().switchToBranch(branches[branches.indexOf(message.id) - 1]);
|
2076
2198
|
}, [useThreadActions, useMessage]);
|
@@ -2079,11 +2201,11 @@ var useBranchPickerPrevious = () => {
|
|
2079
2201
|
};
|
2080
2202
|
|
2081
2203
|
// src/primitive-hooks/composer/useComposerCancel.tsx
|
2082
|
-
import { useCallback as
|
2204
|
+
import { useCallback as useCallback10 } from "react";
|
2083
2205
|
var useComposerCancel = () => {
|
2084
2206
|
const { useComposer } = useComposerContext();
|
2085
2207
|
const disabled = useComposer((c) => !c.canCancel);
|
2086
|
-
const callback =
|
2208
|
+
const callback = useCallback10(() => {
|
2087
2209
|
const { cancel } = useComposer.getState();
|
2088
2210
|
cancel();
|
2089
2211
|
}, [useComposer]);
|
@@ -2102,7 +2224,7 @@ var useComposerIf = (props) => {
|
|
2102
2224
|
};
|
2103
2225
|
|
2104
2226
|
// src/primitive-hooks/composer/useComposerSend.tsx
|
2105
|
-
import { useCallback as
|
2227
|
+
import { useCallback as useCallback11 } from "react";
|
2106
2228
|
var useComposerSend = () => {
|
2107
2229
|
const {
|
2108
2230
|
useThread,
|
@@ -2114,7 +2236,7 @@ var useComposerSend = () => {
|
|
2114
2236
|
[useThread, useComposer],
|
2115
2237
|
(t, c) => t.isRunning || !c.isEditing || c.text.length === 0
|
2116
2238
|
);
|
2117
|
-
const callback =
|
2239
|
+
const callback = useCallback11(() => {
|
2118
2240
|
const composerState = useComposer.getState();
|
2119
2241
|
if (!composerState.isEditing) return;
|
2120
2242
|
composerState.send();
|
@@ -2169,7 +2291,7 @@ var useMessageIf = (props) => {
|
|
2169
2291
|
const { useMessage, useMessageUtils } = useMessageContext();
|
2170
2292
|
return useCombinedStore(
|
2171
2293
|
[useMessage, useMessageUtils],
|
2172
|
-
({ message, branches, isLast }, { isCopied, isHovering }) => {
|
2294
|
+
({ message, branches, isLast }, { isCopied, isHovering, isSpeaking }) => {
|
2173
2295
|
if (props.hasBranches === true && branches.length < 2) return false;
|
2174
2296
|
if (props.user && message.role !== "user") return false;
|
2175
2297
|
if (props.assistant && message.role !== "assistant") return false;
|
@@ -2177,6 +2299,8 @@ var useMessageIf = (props) => {
|
|
2177
2299
|
if (props.lastOrHover === true && !isHovering && !isLast) return false;
|
2178
2300
|
if (props.copied === true && !isCopied) return false;
|
2179
2301
|
if (props.copied === false && isCopied) return false;
|
2302
|
+
if (props.speaking === true && !isSpeaking) return false;
|
2303
|
+
if (props.speaking === false && isSpeaking) return false;
|
2180
2304
|
return true;
|
2181
2305
|
}
|
2182
2306
|
);
|
@@ -2205,11 +2329,11 @@ var useThreadEmpty = () => {
|
|
2205
2329
|
};
|
2206
2330
|
|
2207
2331
|
// src/primitive-hooks/thread/useThreadScrollToBottom.tsx
|
2208
|
-
import { useCallback as
|
2332
|
+
import { useCallback as useCallback12 } from "react";
|
2209
2333
|
var useThreadScrollToBottom = () => {
|
2210
2334
|
const { useComposer, useViewport } = useThreadContext();
|
2211
2335
|
const isAtBottom = useViewport((s) => s.isAtBottom);
|
2212
|
-
const handleScrollToBottom =
|
2336
|
+
const handleScrollToBottom = useCallback12(() => {
|
2213
2337
|
useViewport.getState().scrollToBottom();
|
2214
2338
|
useComposer.getState().focus();
|
2215
2339
|
}, [useViewport, useComposer]);
|
@@ -2218,7 +2342,7 @@ var useThreadScrollToBottom = () => {
|
|
2218
2342
|
};
|
2219
2343
|
|
2220
2344
|
// src/primitive-hooks/thread/useThreadSuggestion.tsx
|
2221
|
-
import { useCallback as
|
2345
|
+
import { useCallback as useCallback13 } from "react";
|
2222
2346
|
var useThreadSuggestion = ({
|
2223
2347
|
prompt,
|
2224
2348
|
autoSend
|
@@ -2226,7 +2350,7 @@ var useThreadSuggestion = ({
|
|
2226
2350
|
const { useThread, useComposer } = useThreadContext();
|
2227
2351
|
const append = useAppendMessage();
|
2228
2352
|
const disabled = useThread((t) => t.isDisabled);
|
2229
|
-
const callback =
|
2353
|
+
const callback = useCallback13(() => {
|
2230
2354
|
const thread = useThread.getState();
|
2231
2355
|
const composer = useComposer.getState();
|
2232
2356
|
if (autoSend && !thread.isRunning) {
|
@@ -2246,7 +2370,9 @@ __export(actionBar_exports, {
|
|
2246
2370
|
Copy: () => ActionBarPrimitiveCopy,
|
2247
2371
|
Edit: () => ActionBarPrimitiveEdit,
|
2248
2372
|
Reload: () => ActionBarPrimitiveReload,
|
2249
|
-
Root: () => ActionBarPrimitiveRoot
|
2373
|
+
Root: () => ActionBarPrimitiveRoot,
|
2374
|
+
Speak: () => ActionBarPrimitiveSpeak,
|
2375
|
+
StopSpeaking: () => ActionBarPrimitiveStopSpeaking
|
2250
2376
|
});
|
2251
2377
|
|
2252
2378
|
// src/primitives/actionBar/ActionBarRoot.tsx
|
@@ -2348,6 +2474,40 @@ var ActionBarPrimitiveEdit = createActionButton(
|
|
2348
2474
|
useActionBarEdit
|
2349
2475
|
);
|
2350
2476
|
|
2477
|
+
// src/primitives/actionBar/ActionBarSpeak.tsx
|
2478
|
+
var ActionBarPrimitiveSpeak = createActionButton(
|
2479
|
+
"ActionBarPrimitive.Speak",
|
2480
|
+
useActionBarSpeak
|
2481
|
+
);
|
2482
|
+
|
2483
|
+
// src/primitives/actionBar/ActionBarStopSpeaking.tsx
|
2484
|
+
import { forwardRef as forwardRef7 } from "react";
|
2485
|
+
import { useEscapeKeydown } from "@radix-ui/react-use-escape-keydown";
|
2486
|
+
import { Primitive as Primitive4 } from "@radix-ui/react-primitive";
|
2487
|
+
import { composeEventHandlers as composeEventHandlers2 } from "@radix-ui/primitive";
|
2488
|
+
import { jsx as jsx11 } from "react/jsx-runtime";
|
2489
|
+
var ActionBarPrimitiveStopSpeaking = forwardRef7((props, ref) => {
|
2490
|
+
const callback = useActionBarStopSpeaking();
|
2491
|
+
useEscapeKeydown((e) => {
|
2492
|
+
if (callback) {
|
2493
|
+
e.preventDefault();
|
2494
|
+
callback();
|
2495
|
+
}
|
2496
|
+
});
|
2497
|
+
return /* @__PURE__ */ jsx11(
|
2498
|
+
Primitive4.button,
|
2499
|
+
{
|
2500
|
+
type: "button",
|
2501
|
+
disabled: !callback,
|
2502
|
+
...props,
|
2503
|
+
ref,
|
2504
|
+
onClick: composeEventHandlers2(props.onClick, () => {
|
2505
|
+
callback?.();
|
2506
|
+
})
|
2507
|
+
}
|
2508
|
+
);
|
2509
|
+
});
|
2510
|
+
|
2351
2511
|
// src/primitives/assistantModal/index.ts
|
2352
2512
|
var assistantModal_exports = {};
|
2353
2513
|
__export(assistantModal_exports, {
|
@@ -2360,7 +2520,7 @@ __export(assistantModal_exports, {
|
|
2360
2520
|
// src/primitives/assistantModal/AssistantModalRoot.tsx
|
2361
2521
|
import { useState as useState9 } from "react";
|
2362
2522
|
import * as PopoverPrimitive2 from "@radix-ui/react-popover";
|
2363
|
-
import { composeEventHandlers as
|
2523
|
+
import { composeEventHandlers as composeEventHandlers3 } from "@radix-ui/primitive";
|
2364
2524
|
|
2365
2525
|
// src/utils/hooks/useOnComposerFocus.tsx
|
2366
2526
|
import { useCallbackRef as useCallbackRef2 } from "@radix-ui/react-use-callback-ref";
|
@@ -2380,7 +2540,7 @@ import * as PopoverPrimitive from "@radix-ui/react-popover";
|
|
2380
2540
|
var usePopoverScope = PopoverPrimitive.createPopoverScope();
|
2381
2541
|
|
2382
2542
|
// src/primitives/assistantModal/AssistantModalRoot.tsx
|
2383
|
-
import { jsx as
|
2543
|
+
import { jsx as jsx12 } from "react/jsx-runtime";
|
2384
2544
|
var useAssistantModalOpenState = (defaultOpen = false) => {
|
2385
2545
|
const state = useState9(defaultOpen);
|
2386
2546
|
const [, setOpen] = state;
|
@@ -2398,12 +2558,12 @@ var AssistantModalPrimitiveRoot = ({
|
|
2398
2558
|
}) => {
|
2399
2559
|
const scope = usePopoverScope(__scopeAssistantModal);
|
2400
2560
|
const [modalOpen, setOpen] = useAssistantModalOpenState(defaultOpen);
|
2401
|
-
return /* @__PURE__ */
|
2561
|
+
return /* @__PURE__ */ jsx12(
|
2402
2562
|
PopoverPrimitive2.Root,
|
2403
2563
|
{
|
2404
2564
|
...scope,
|
2405
2565
|
open: open === void 0 ? modalOpen : open,
|
2406
|
-
onOpenChange:
|
2566
|
+
onOpenChange: composeEventHandlers3(onOpenChange, setOpen),
|
2407
2567
|
...rest
|
2408
2568
|
}
|
2409
2569
|
);
|
@@ -2411,26 +2571,26 @@ var AssistantModalPrimitiveRoot = ({
|
|
2411
2571
|
AssistantModalPrimitiveRoot.displayName = "AssistantModalPrimitive.Root";
|
2412
2572
|
|
2413
2573
|
// src/primitives/assistantModal/AssistantModalTrigger.tsx
|
2414
|
-
import { forwardRef as
|
2574
|
+
import { forwardRef as forwardRef8 } from "react";
|
2415
2575
|
import * as PopoverPrimitive3 from "@radix-ui/react-popover";
|
2416
|
-
import { jsx as
|
2417
|
-
var AssistantModalPrimitiveTrigger =
|
2576
|
+
import { jsx as jsx13 } from "react/jsx-runtime";
|
2577
|
+
var AssistantModalPrimitiveTrigger = forwardRef8(
|
2418
2578
|
({
|
2419
2579
|
__scopeAssistantModal,
|
2420
2580
|
...rest
|
2421
2581
|
}, ref) => {
|
2422
2582
|
const scope = usePopoverScope(__scopeAssistantModal);
|
2423
|
-
return /* @__PURE__ */
|
2583
|
+
return /* @__PURE__ */ jsx13(PopoverPrimitive3.Trigger, { ...scope, ...rest, ref });
|
2424
2584
|
}
|
2425
2585
|
);
|
2426
2586
|
AssistantModalPrimitiveTrigger.displayName = "AssistantModalPrimitive.Trigger";
|
2427
2587
|
|
2428
2588
|
// src/primitives/assistantModal/AssistantModalContent.tsx
|
2429
|
-
import { forwardRef as
|
2589
|
+
import { forwardRef as forwardRef9 } from "react";
|
2430
2590
|
import * as PopoverPrimitive4 from "@radix-ui/react-popover";
|
2431
|
-
import { composeEventHandlers as
|
2432
|
-
import { jsx as
|
2433
|
-
var AssistantModalPrimitiveContent =
|
2591
|
+
import { composeEventHandlers as composeEventHandlers4 } from "@radix-ui/primitive";
|
2592
|
+
import { jsx as jsx14 } from "react/jsx-runtime";
|
2593
|
+
var AssistantModalPrimitiveContent = forwardRef9(
|
2434
2594
|
({
|
2435
2595
|
__scopeAssistantModal,
|
2436
2596
|
side,
|
@@ -2440,7 +2600,7 @@ var AssistantModalPrimitiveContent = forwardRef8(
|
|
2440
2600
|
...props
|
2441
2601
|
}, forwardedRef) => {
|
2442
2602
|
const scope = usePopoverScope(__scopeAssistantModal);
|
2443
|
-
return /* @__PURE__ */
|
2603
|
+
return /* @__PURE__ */ jsx14(PopoverPrimitive4.Portal, { ...scope, children: /* @__PURE__ */ jsx14(
|
2444
2604
|
PopoverPrimitive4.Content,
|
2445
2605
|
{
|
2446
2606
|
...scope,
|
@@ -2448,7 +2608,7 @@ var AssistantModalPrimitiveContent = forwardRef8(
|
|
2448
2608
|
ref: forwardedRef,
|
2449
2609
|
side: side ?? "top",
|
2450
2610
|
align: align ?? "end",
|
2451
|
-
onInteractOutside:
|
2611
|
+
onInteractOutside: composeEventHandlers4(
|
2452
2612
|
onInteractOutside,
|
2453
2613
|
dissmissOnInteractOutside ? void 0 : (e) => e.preventDefault()
|
2454
2614
|
)
|
@@ -2459,16 +2619,16 @@ var AssistantModalPrimitiveContent = forwardRef8(
|
|
2459
2619
|
AssistantModalPrimitiveContent.displayName = "AssistantModalPrimitive.Content";
|
2460
2620
|
|
2461
2621
|
// src/primitives/assistantModal/AssistantModalAnchor.tsx
|
2462
|
-
import { forwardRef as
|
2622
|
+
import { forwardRef as forwardRef10 } from "react";
|
2463
2623
|
import * as PopoverPrimitive5 from "@radix-ui/react-popover";
|
2464
|
-
import { jsx as
|
2465
|
-
var AssistantModalPrimitiveAnchor =
|
2624
|
+
import { jsx as jsx15 } from "react/jsx-runtime";
|
2625
|
+
var AssistantModalPrimitiveAnchor = forwardRef10(
|
2466
2626
|
({
|
2467
2627
|
__scopeAssistantModal,
|
2468
2628
|
...rest
|
2469
2629
|
}, ref) => {
|
2470
2630
|
const scope = usePopoverScope(__scopeAssistantModal);
|
2471
|
-
return /* @__PURE__ */
|
2631
|
+
return /* @__PURE__ */ jsx15(PopoverPrimitive5.Anchor, { ...scope, ...rest, ref });
|
2472
2632
|
}
|
2473
2633
|
);
|
2474
2634
|
AssistantModalPrimitiveAnchor.displayName = "AssistantModalPrimitive.Anchor";
|
@@ -2496,24 +2656,24 @@ var BranchPickerPrevious = createActionButton(
|
|
2496
2656
|
);
|
2497
2657
|
|
2498
2658
|
// src/primitives/branchPicker/BranchPickerCount.tsx
|
2499
|
-
import { Fragment, jsx as
|
2659
|
+
import { Fragment, jsx as jsx16 } from "react/jsx-runtime";
|
2500
2660
|
var BranchPickerPrimitiveCount = () => {
|
2501
2661
|
const branchCount = useBranchPickerCount();
|
2502
|
-
return /* @__PURE__ */
|
2662
|
+
return /* @__PURE__ */ jsx16(Fragment, { children: branchCount });
|
2503
2663
|
};
|
2504
2664
|
BranchPickerPrimitiveCount.displayName = "BranchPickerPrimitive.Count";
|
2505
2665
|
|
2506
2666
|
// src/primitives/branchPicker/BranchPickerNumber.tsx
|
2507
|
-
import { Fragment as Fragment2, jsx as
|
2667
|
+
import { Fragment as Fragment2, jsx as jsx17 } from "react/jsx-runtime";
|
2508
2668
|
var BranchPickerPrimitiveNumber = () => {
|
2509
2669
|
const branchNumber = useBranchPickerNumber();
|
2510
|
-
return /* @__PURE__ */
|
2670
|
+
return /* @__PURE__ */ jsx17(Fragment2, { children: branchNumber });
|
2511
2671
|
};
|
2512
2672
|
BranchPickerPrimitiveNumber.displayName = "BranchPickerPrimitive.Number";
|
2513
2673
|
|
2514
2674
|
// src/primitives/branchPicker/BranchPickerRoot.tsx
|
2515
|
-
import { Primitive as
|
2516
|
-
import { forwardRef as
|
2675
|
+
import { Primitive as Primitive7 } from "@radix-ui/react-primitive";
|
2676
|
+
import { forwardRef as forwardRef14 } from "react";
|
2517
2677
|
|
2518
2678
|
// src/primitives/message/index.ts
|
2519
2679
|
var message_exports = {};
|
@@ -2525,17 +2685,17 @@ __export(message_exports, {
|
|
2525
2685
|
});
|
2526
2686
|
|
2527
2687
|
// src/primitives/message/MessageRoot.tsx
|
2528
|
-
import { Primitive as
|
2688
|
+
import { Primitive as Primitive5 } from "@radix-ui/react-primitive";
|
2529
2689
|
import {
|
2530
|
-
forwardRef as
|
2531
|
-
useCallback as
|
2690
|
+
forwardRef as forwardRef11,
|
2691
|
+
useCallback as useCallback15
|
2532
2692
|
} from "react";
|
2533
2693
|
|
2534
2694
|
// src/utils/hooks/useManagedRef.ts
|
2535
|
-
import { useCallback as
|
2695
|
+
import { useCallback as useCallback14, useRef as useRef3 } from "react";
|
2536
2696
|
var useManagedRef = (callback) => {
|
2537
2697
|
const cleanupRef = useRef3();
|
2538
|
-
const ref =
|
2698
|
+
const ref = useCallback14(
|
2539
2699
|
(el) => {
|
2540
2700
|
if (cleanupRef.current) {
|
2541
2701
|
cleanupRef.current();
|
@@ -2551,10 +2711,10 @@ var useManagedRef = (callback) => {
|
|
2551
2711
|
|
2552
2712
|
// src/primitives/message/MessageRoot.tsx
|
2553
2713
|
import { useComposedRefs } from "@radix-ui/react-compose-refs";
|
2554
|
-
import { jsx as
|
2714
|
+
import { jsx as jsx18 } from "react/jsx-runtime";
|
2555
2715
|
var useIsHoveringRef = () => {
|
2556
2716
|
const { useMessageUtils } = useMessageContext();
|
2557
|
-
const callbackRef =
|
2717
|
+
const callbackRef = useCallback15(
|
2558
2718
|
(el) => {
|
2559
2719
|
const setIsHovering = useMessageUtils.getState().setIsHovering;
|
2560
2720
|
const handleMouseEnter = () => {
|
@@ -2575,10 +2735,10 @@ var useIsHoveringRef = () => {
|
|
2575
2735
|
);
|
2576
2736
|
return useManagedRef(callbackRef);
|
2577
2737
|
};
|
2578
|
-
var MessagePrimitiveRoot =
|
2738
|
+
var MessagePrimitiveRoot = forwardRef11(({ onMouseEnter, onMouseLeave, ...rest }, forwardRef30) => {
|
2579
2739
|
const isHoveringRef = useIsHoveringRef();
|
2580
|
-
const ref = useComposedRefs(
|
2581
|
-
return /* @__PURE__ */
|
2740
|
+
const ref = useComposedRefs(forwardRef30, isHoveringRef);
|
2741
|
+
return /* @__PURE__ */ jsx18(Primitive5.div, { ...rest, ref });
|
2582
2742
|
});
|
2583
2743
|
MessagePrimitiveRoot.displayName = "MessagePrimitive.Root";
|
2584
2744
|
|
@@ -2598,7 +2758,7 @@ import { memo as memo2 } from "react";
|
|
2598
2758
|
// src/context/providers/ContentPartProvider.tsx
|
2599
2759
|
import { useEffect as useEffect9, useState as useState10 } from "react";
|
2600
2760
|
import { create as create12 } from "zustand";
|
2601
|
-
import { jsx as
|
2761
|
+
import { jsx as jsx19 } from "react/jsx-runtime";
|
2602
2762
|
var COMPLETE_STATUS = {
|
2603
2763
|
type: "complete"
|
2604
2764
|
};
|
@@ -2661,32 +2821,32 @@ var ContentPartProvider = ({
|
|
2661
2821
|
children
|
2662
2822
|
}) => {
|
2663
2823
|
const context = useContentPartContext2(partIndex);
|
2664
|
-
return /* @__PURE__ */
|
2824
|
+
return /* @__PURE__ */ jsx19(ContentPartContext.Provider, { value: context, children });
|
2665
2825
|
};
|
2666
2826
|
|
2667
2827
|
// src/primitives/contentPart/ContentPartText.tsx
|
2668
2828
|
import {
|
2669
|
-
forwardRef as
|
2829
|
+
forwardRef as forwardRef12
|
2670
2830
|
} from "react";
|
2671
|
-
import { jsx as
|
2672
|
-
var ContentPartPrimitiveText =
|
2831
|
+
import { jsx as jsx20 } from "react/jsx-runtime";
|
2832
|
+
var ContentPartPrimitiveText = forwardRef12(({ smooth = true, component: Component = "span", ...rest }, forwardedRef) => {
|
2673
2833
|
const {
|
2674
2834
|
part: { text },
|
2675
2835
|
status
|
2676
2836
|
} = useSmooth(useContentPartText(), smooth);
|
2677
|
-
return /* @__PURE__ */
|
2837
|
+
return /* @__PURE__ */ jsx20(Component, { "data-status": status.type, ...rest, ref: forwardedRef, children: text });
|
2678
2838
|
});
|
2679
2839
|
ContentPartPrimitiveText.displayName = "ContentPartPrimitive.Text";
|
2680
2840
|
|
2681
2841
|
// src/primitives/contentPart/ContentPartImage.tsx
|
2682
|
-
import { Primitive as
|
2683
|
-
import { forwardRef as
|
2684
|
-
import { jsx as
|
2685
|
-
var ContentPartPrimitiveImage =
|
2842
|
+
import { Primitive as Primitive6 } from "@radix-ui/react-primitive";
|
2843
|
+
import { forwardRef as forwardRef13 } from "react";
|
2844
|
+
import { jsx as jsx21 } from "react/jsx-runtime";
|
2845
|
+
var ContentPartPrimitiveImage = forwardRef13((props, forwardedRef) => {
|
2686
2846
|
const {
|
2687
2847
|
part: { image }
|
2688
2848
|
} = useContentPartImage();
|
2689
|
-
return /* @__PURE__ */
|
2849
|
+
return /* @__PURE__ */ jsx21(Primitive6.img, { src: image, ...props, ref: forwardedRef });
|
2690
2850
|
});
|
2691
2851
|
ContentPartPrimitiveImage.displayName = "ContentPartPrimitive.Image";
|
2692
2852
|
|
@@ -2708,20 +2868,20 @@ var ContentPartPrimitiveInProgress = ({ children }) => {
|
|
2708
2868
|
ContentPartPrimitiveInProgress.displayName = "ContentPartPrimitive.InProgress";
|
2709
2869
|
|
2710
2870
|
// src/primitives/message/MessageContent.tsx
|
2711
|
-
import { jsx as
|
2871
|
+
import { jsx as jsx22, jsxs as jsxs3 } from "react/jsx-runtime";
|
2712
2872
|
var defaultComponents = {
|
2713
2873
|
Text: () => /* @__PURE__ */ jsxs3("p", { style: { whiteSpace: "pre-line" }, children: [
|
2714
|
-
/* @__PURE__ */
|
2715
|
-
/* @__PURE__ */
|
2874
|
+
/* @__PURE__ */ jsx22(ContentPartPrimitiveText, {}),
|
2875
|
+
/* @__PURE__ */ jsx22(ContentPartPrimitiveInProgress, { children: /* @__PURE__ */ jsx22("span", { style: { fontFamily: "revert" }, children: " \u25CF" }) })
|
2716
2876
|
] }),
|
2717
|
-
Image: () => /* @__PURE__ */
|
2718
|
-
UI: () => /* @__PURE__ */
|
2877
|
+
Image: () => /* @__PURE__ */ jsx22(ContentPartPrimitiveImage, {}),
|
2878
|
+
UI: () => /* @__PURE__ */ jsx22(ContentPartPrimitiveDisplay, {}),
|
2719
2879
|
tools: {
|
2720
2880
|
Fallback: (props) => {
|
2721
2881
|
const { useToolUIs } = useAssistantContext();
|
2722
2882
|
const Render = useToolUIs((s) => s.getToolUI(props.part.toolName));
|
2723
2883
|
if (!Render) return null;
|
2724
|
-
return /* @__PURE__ */
|
2884
|
+
return /* @__PURE__ */ jsx22(Render, { ...props });
|
2725
2885
|
}
|
2726
2886
|
}
|
2727
2887
|
};
|
@@ -2744,16 +2904,16 @@ var MessageContentPartComponent = ({
|
|
2744
2904
|
case "text":
|
2745
2905
|
if (status.type === "requires-action")
|
2746
2906
|
throw new Error("Encountered unexpected requires-action status");
|
2747
|
-
if (part === EMPTY_CONTENT) return /* @__PURE__ */
|
2748
|
-
return /* @__PURE__ */
|
2907
|
+
if (part === EMPTY_CONTENT) return /* @__PURE__ */ jsx22(Empty, { part, status });
|
2908
|
+
return /* @__PURE__ */ jsx22(Text2, { part, status });
|
2749
2909
|
case "image":
|
2750
2910
|
if (status.type === "requires-action")
|
2751
2911
|
throw new Error("Encountered unexpected requires-action status");
|
2752
|
-
return /* @__PURE__ */
|
2912
|
+
return /* @__PURE__ */ jsx22(Image2, { part, status });
|
2753
2913
|
case "ui":
|
2754
2914
|
if (status.type === "requires-action")
|
2755
2915
|
throw new Error("Encountered unexpected requires-action status");
|
2756
|
-
return /* @__PURE__ */
|
2916
|
+
return /* @__PURE__ */ jsx22(UI, { part, status });
|
2757
2917
|
case "tool-call": {
|
2758
2918
|
const Tool = by_name[part.toolName] || Fallback2;
|
2759
2919
|
const addResult = (result) => addToolResult({
|
@@ -2761,7 +2921,7 @@ var MessageContentPartComponent = ({
|
|
2761
2921
|
toolCallId: part.toolCallId,
|
2762
2922
|
result
|
2763
2923
|
});
|
2764
|
-
return /* @__PURE__ */
|
2924
|
+
return /* @__PURE__ */ jsx22(Tool, { part, status, addResult });
|
2765
2925
|
}
|
2766
2926
|
default:
|
2767
2927
|
const unhandledType = type;
|
@@ -2772,7 +2932,7 @@ var MessageContentPartImpl = ({
|
|
2772
2932
|
partIndex,
|
2773
2933
|
components
|
2774
2934
|
}) => {
|
2775
|
-
return /* @__PURE__ */
|
2935
|
+
return /* @__PURE__ */ jsx22(ContentPartProvider, { partIndex, children: /* @__PURE__ */ jsx22(MessageContentPartComponent, { components }) });
|
2776
2936
|
};
|
2777
2937
|
var MessageContentPart = memo2(
|
2778
2938
|
MessageContentPartImpl,
|
@@ -2785,7 +2945,7 @@ var MessagePrimitiveContent = ({
|
|
2785
2945
|
const contentLength = useMessage((s) => s.message.content.length) || 1;
|
2786
2946
|
return new Array(contentLength).fill(null).map((_, idx) => {
|
2787
2947
|
const partIndex = idx;
|
2788
|
-
return /* @__PURE__ */
|
2948
|
+
return /* @__PURE__ */ jsx22(
|
2789
2949
|
MessageContentPart,
|
2790
2950
|
{
|
2791
2951
|
partIndex,
|
@@ -2804,9 +2964,9 @@ var MessagePrimitiveInProgress = () => {
|
|
2804
2964
|
MessagePrimitiveInProgress.displayName = "MessagePrimitive.InProgress";
|
2805
2965
|
|
2806
2966
|
// src/primitives/branchPicker/BranchPickerRoot.tsx
|
2807
|
-
import { jsx as
|
2808
|
-
var BranchPickerPrimitiveRoot =
|
2809
|
-
return /* @__PURE__ */
|
2967
|
+
import { jsx as jsx23 } from "react/jsx-runtime";
|
2968
|
+
var BranchPickerPrimitiveRoot = forwardRef14(({ hideWhenSingleBranch, ...rest }, ref) => {
|
2969
|
+
return /* @__PURE__ */ jsx23(MessagePrimitiveIf, { hasBranches: hideWhenSingleBranch ? true : void 0, children: /* @__PURE__ */ jsx23(Primitive7.div, { ...rest, ref }) });
|
2810
2970
|
});
|
2811
2971
|
BranchPickerPrimitiveRoot.displayName = "BranchPickerPrimitive.Root";
|
2812
2972
|
|
@@ -2821,44 +2981,44 @@ __export(composer_exports, {
|
|
2821
2981
|
});
|
2822
2982
|
|
2823
2983
|
// src/primitives/composer/ComposerRoot.tsx
|
2824
|
-
import { composeEventHandlers as
|
2825
|
-
import { Primitive as
|
2984
|
+
import { composeEventHandlers as composeEventHandlers5 } from "@radix-ui/primitive";
|
2985
|
+
import { Primitive as Primitive8 } from "@radix-ui/react-primitive";
|
2826
2986
|
import {
|
2827
|
-
forwardRef as
|
2987
|
+
forwardRef as forwardRef15
|
2828
2988
|
} from "react";
|
2829
|
-
import { jsx as
|
2830
|
-
var ComposerPrimitiveRoot =
|
2989
|
+
import { jsx as jsx24 } from "react/jsx-runtime";
|
2990
|
+
var ComposerPrimitiveRoot = forwardRef15(({ onSubmit, ...rest }, forwardedRef) => {
|
2831
2991
|
const send = useComposerSend();
|
2832
2992
|
const handleSubmit = (e) => {
|
2833
2993
|
e.preventDefault();
|
2834
2994
|
if (!send) return;
|
2835
2995
|
send();
|
2836
2996
|
};
|
2837
|
-
return /* @__PURE__ */
|
2838
|
-
|
2997
|
+
return /* @__PURE__ */ jsx24(
|
2998
|
+
Primitive8.form,
|
2839
2999
|
{
|
2840
3000
|
...rest,
|
2841
3001
|
ref: forwardedRef,
|
2842
|
-
onSubmit:
|
3002
|
+
onSubmit: composeEventHandlers5(onSubmit, handleSubmit)
|
2843
3003
|
}
|
2844
3004
|
);
|
2845
3005
|
});
|
2846
3006
|
ComposerPrimitiveRoot.displayName = "ComposerPrimitive.Root";
|
2847
3007
|
|
2848
3008
|
// src/primitives/composer/ComposerInput.tsx
|
2849
|
-
import { composeEventHandlers as
|
3009
|
+
import { composeEventHandlers as composeEventHandlers6 } from "@radix-ui/primitive";
|
2850
3010
|
import { useComposedRefs as useComposedRefs2 } from "@radix-ui/react-compose-refs";
|
2851
3011
|
import { Slot } from "@radix-ui/react-slot";
|
2852
3012
|
import {
|
2853
|
-
forwardRef as
|
2854
|
-
useCallback as
|
3013
|
+
forwardRef as forwardRef16,
|
3014
|
+
useCallback as useCallback16,
|
2855
3015
|
useEffect as useEffect10,
|
2856
3016
|
useRef as useRef4
|
2857
3017
|
} from "react";
|
2858
3018
|
import TextareaAutosize from "react-textarea-autosize";
|
2859
|
-
import { useEscapeKeydown } from "@radix-ui/react-use-escape-keydown";
|
2860
|
-
import { jsx as
|
2861
|
-
var ComposerPrimitiveInput =
|
3019
|
+
import { useEscapeKeydown as useEscapeKeydown2 } from "@radix-ui/react-use-escape-keydown";
|
3020
|
+
import { jsx as jsx25 } from "react/jsx-runtime";
|
3021
|
+
var ComposerPrimitiveInput = forwardRef16(
|
2862
3022
|
({
|
2863
3023
|
autoFocus = false,
|
2864
3024
|
asChild,
|
@@ -2877,7 +3037,7 @@ var ComposerPrimitiveInput = forwardRef15(
|
|
2877
3037
|
const isDisabled = useThread((t) => t.isDisabled) ?? disabledProp ?? false;
|
2878
3038
|
const textareaRef = useRef4(null);
|
2879
3039
|
const ref = useComposedRefs2(forwardedRef, textareaRef);
|
2880
|
-
|
3040
|
+
useEscapeKeydown2((e) => {
|
2881
3041
|
const composer = useComposer.getState();
|
2882
3042
|
if (composer.canCancel) {
|
2883
3043
|
composer.cancel();
|
@@ -2896,7 +3056,7 @@ var ComposerPrimitiveInput = forwardRef15(
|
|
2896
3056
|
}
|
2897
3057
|
};
|
2898
3058
|
const autoFocusEnabled = autoFocus && !isDisabled;
|
2899
|
-
const focus =
|
3059
|
+
const focus = useCallback16(() => {
|
2900
3060
|
const textarea = textareaRef.current;
|
2901
3061
|
if (!textarea || !autoFocusEnabled) return;
|
2902
3062
|
textarea.focus({ preventScroll: true });
|
@@ -2911,7 +3071,7 @@ var ComposerPrimitiveInput = forwardRef15(
|
|
2911
3071
|
focus();
|
2912
3072
|
}
|
2913
3073
|
});
|
2914
|
-
return /* @__PURE__ */
|
3074
|
+
return /* @__PURE__ */ jsx25(
|
2915
3075
|
Component,
|
2916
3076
|
{
|
2917
3077
|
name: "input",
|
@@ -2919,12 +3079,12 @@ var ComposerPrimitiveInput = forwardRef15(
|
|
2919
3079
|
...rest,
|
2920
3080
|
ref,
|
2921
3081
|
disabled: isDisabled,
|
2922
|
-
onChange:
|
3082
|
+
onChange: composeEventHandlers6(onChange, (e) => {
|
2923
3083
|
const composerState = useComposer.getState();
|
2924
3084
|
if (!composerState.isEditing) return;
|
2925
3085
|
return composerState.setText(e.target.value);
|
2926
3086
|
}),
|
2927
|
-
onKeyDown:
|
3087
|
+
onKeyDown: composeEventHandlers6(onKeyDown, handleKeyPress)
|
2928
3088
|
}
|
2929
3089
|
);
|
2930
3090
|
}
|
@@ -2932,14 +3092,14 @@ var ComposerPrimitiveInput = forwardRef15(
|
|
2932
3092
|
ComposerPrimitiveInput.displayName = "ComposerPrimitive.Input";
|
2933
3093
|
|
2934
3094
|
// src/primitives/composer/ComposerSend.tsx
|
2935
|
-
import { forwardRef as
|
2936
|
-
import { Primitive as
|
2937
|
-
import { jsx as
|
2938
|
-
var ComposerPrimitiveSend =
|
3095
|
+
import { forwardRef as forwardRef17 } from "react";
|
3096
|
+
import { Primitive as Primitive9 } from "@radix-ui/react-primitive";
|
3097
|
+
import { jsx as jsx26 } from "react/jsx-runtime";
|
3098
|
+
var ComposerPrimitiveSend = forwardRef17(({ disabled, ...rest }, ref) => {
|
2939
3099
|
const { useComposer } = useComposerContext();
|
2940
3100
|
const hasValue = useComposer((c) => c.isEditing && c.text.length > 0);
|
2941
|
-
return /* @__PURE__ */
|
2942
|
-
|
3101
|
+
return /* @__PURE__ */ jsx26(
|
3102
|
+
Primitive9.button,
|
2943
3103
|
{
|
2944
3104
|
type: "submit",
|
2945
3105
|
...rest,
|
@@ -2988,11 +3148,11 @@ __export(thread_exports, {
|
|
2988
3148
|
});
|
2989
3149
|
|
2990
3150
|
// src/primitives/thread/ThreadRoot.tsx
|
2991
|
-
import { Primitive as
|
2992
|
-
import { forwardRef as
|
2993
|
-
import { jsx as
|
2994
|
-
var ThreadPrimitiveRoot =
|
2995
|
-
return /* @__PURE__ */
|
3151
|
+
import { Primitive as Primitive10 } from "@radix-ui/react-primitive";
|
3152
|
+
import { forwardRef as forwardRef18 } from "react";
|
3153
|
+
import { jsx as jsx27 } from "react/jsx-runtime";
|
3154
|
+
var ThreadPrimitiveRoot = forwardRef18((props, ref) => {
|
3155
|
+
return /* @__PURE__ */ jsx27(Primitive10.div, { ...props, ref });
|
2996
3156
|
});
|
2997
3157
|
ThreadPrimitiveRoot.displayName = "ThreadPrimitive.Root";
|
2998
3158
|
|
@@ -3017,8 +3177,8 @@ ThreadPrimitiveIf.displayName = "ThreadPrimitive.If";
|
|
3017
3177
|
|
3018
3178
|
// src/primitives/thread/ThreadViewport.tsx
|
3019
3179
|
import { useComposedRefs as useComposedRefs4 } from "@radix-ui/react-compose-refs";
|
3020
|
-
import { Primitive as
|
3021
|
-
import { forwardRef as
|
3180
|
+
import { Primitive as Primitive11 } from "@radix-ui/react-primitive";
|
3181
|
+
import { forwardRef as forwardRef19 } from "react";
|
3022
3182
|
|
3023
3183
|
// src/primitive-hooks/thread/useThreadViewportAutoScroll.tsx
|
3024
3184
|
import { useComposedRefs as useComposedRefs3 } from "@radix-ui/react-compose-refs";
|
@@ -3026,10 +3186,10 @@ import { useRef as useRef5 } from "react";
|
|
3026
3186
|
|
3027
3187
|
// src/utils/hooks/useOnResizeContent.tsx
|
3028
3188
|
import { useCallbackRef as useCallbackRef3 } from "@radix-ui/react-use-callback-ref";
|
3029
|
-
import { useCallback as
|
3189
|
+
import { useCallback as useCallback17 } from "react";
|
3030
3190
|
var useOnResizeContent = (callback) => {
|
3031
3191
|
const callbackRef = useCallbackRef3(callback);
|
3032
|
-
const refCallback =
|
3192
|
+
const refCallback = useCallback17(
|
3033
3193
|
(el) => {
|
3034
3194
|
const resizeObserver = new ResizeObserver(() => {
|
3035
3195
|
callbackRef();
|
@@ -3129,13 +3289,13 @@ var useThreadViewportAutoScroll = ({
|
|
3129
3289
|
};
|
3130
3290
|
|
3131
3291
|
// src/primitives/thread/ThreadViewport.tsx
|
3132
|
-
import { jsx as
|
3133
|
-
var ThreadPrimitiveViewport =
|
3292
|
+
import { jsx as jsx28 } from "react/jsx-runtime";
|
3293
|
+
var ThreadPrimitiveViewport = forwardRef19(({ autoScroll, onScroll, children, ...rest }, forwardedRef) => {
|
3134
3294
|
const autoScrollRef = useThreadViewportAutoScroll({
|
3135
3295
|
autoScroll
|
3136
3296
|
});
|
3137
3297
|
const ref = useComposedRefs4(forwardedRef, autoScrollRef);
|
3138
|
-
return /* @__PURE__ */
|
3298
|
+
return /* @__PURE__ */ jsx28(Primitive11.div, { ...rest, ref, children });
|
3139
3299
|
});
|
3140
3300
|
ThreadPrimitiveViewport.displayName = "ThreadPrimitive.Viewport";
|
3141
3301
|
|
@@ -3180,19 +3340,33 @@ var makeEditComposerStore = ({
|
|
3180
3340
|
|
3181
3341
|
// src/context/stores/MessageUtils.ts
|
3182
3342
|
import { create as create14 } from "zustand";
|
3183
|
-
var makeMessageUtilsStore = () => create14((set) =>
|
3184
|
-
|
3185
|
-
|
3186
|
-
|
3187
|
-
|
3188
|
-
|
3189
|
-
|
3190
|
-
|
3191
|
-
|
3192
|
-
})
|
3343
|
+
var makeMessageUtilsStore = () => create14((set) => {
|
3344
|
+
let utterance = null;
|
3345
|
+
return {
|
3346
|
+
isCopied: false,
|
3347
|
+
setIsCopied: (value) => {
|
3348
|
+
set({ isCopied: value });
|
3349
|
+
},
|
3350
|
+
isHovering: false,
|
3351
|
+
setIsHovering: (value) => {
|
3352
|
+
set({ isHovering: value });
|
3353
|
+
},
|
3354
|
+
isSpeaking: false,
|
3355
|
+
stopSpeaking: () => {
|
3356
|
+
utterance?.cancel();
|
3357
|
+
},
|
3358
|
+
addUtterance: (utt) => {
|
3359
|
+
utterance = utt;
|
3360
|
+
set({ isSpeaking: true });
|
3361
|
+
utt.onEnd(() => {
|
3362
|
+
set({ isSpeaking: false });
|
3363
|
+
});
|
3364
|
+
}
|
3365
|
+
};
|
3366
|
+
});
|
3193
3367
|
|
3194
3368
|
// src/context/providers/MessageProvider.tsx
|
3195
|
-
import { jsx as
|
3369
|
+
import { jsx as jsx29 } from "react/jsx-runtime";
|
3196
3370
|
var getIsLast = (messages, message) => {
|
3197
3371
|
return messages[messages.length - 1]?.id === message.id;
|
3198
3372
|
};
|
@@ -3276,11 +3450,11 @@ var MessageProvider = ({
|
|
3276
3450
|
children
|
3277
3451
|
}) => {
|
3278
3452
|
const context = useMessageContext2(messageIndex);
|
3279
|
-
return /* @__PURE__ */
|
3453
|
+
return /* @__PURE__ */ jsx29(MessageContext.Provider, { value: context, children });
|
3280
3454
|
};
|
3281
3455
|
|
3282
3456
|
// src/primitives/thread/ThreadMessages.tsx
|
3283
|
-
import { jsx as
|
3457
|
+
import { jsx as jsx30, jsxs as jsxs4 } from "react/jsx-runtime";
|
3284
3458
|
var DEFAULT_SYSTEM_MESSAGE = () => null;
|
3285
3459
|
var getComponents = (components) => {
|
3286
3460
|
return {
|
@@ -3297,11 +3471,11 @@ var ThreadMessageImpl = ({
|
|
3297
3471
|
const { UserMessage: UserMessage2, EditComposer: EditComposer2, AssistantMessage: AssistantMessage2, SystemMessage: SystemMessage2 } = getComponents(components);
|
3298
3472
|
return /* @__PURE__ */ jsxs4(MessageProvider, { messageIndex, children: [
|
3299
3473
|
/* @__PURE__ */ jsxs4(MessagePrimitiveIf, { user: true, children: [
|
3300
|
-
/* @__PURE__ */
|
3301
|
-
/* @__PURE__ */
|
3474
|
+
/* @__PURE__ */ jsx30(ComposerPrimitiveIf, { editing: false, children: /* @__PURE__ */ jsx30(UserMessage2, {}) }),
|
3475
|
+
/* @__PURE__ */ jsx30(ComposerPrimitiveIf, { editing: true, children: /* @__PURE__ */ jsx30(EditComposer2, {}) })
|
3302
3476
|
] }),
|
3303
|
-
/* @__PURE__ */
|
3304
|
-
/* @__PURE__ */
|
3477
|
+
/* @__PURE__ */ jsx30(MessagePrimitiveIf, { assistant: true, children: /* @__PURE__ */ jsx30(AssistantMessage2, {}) }),
|
3478
|
+
/* @__PURE__ */ jsx30(MessagePrimitiveIf, { system: true, children: /* @__PURE__ */ jsx30(SystemMessage2, {}) })
|
3305
3479
|
] });
|
3306
3480
|
};
|
3307
3481
|
var ThreadMessage = memo3(
|
@@ -3316,7 +3490,7 @@ var ThreadPrimitiveMessagesImpl = ({
|
|
3316
3490
|
if (messagesLength === 0) return null;
|
3317
3491
|
return new Array(messagesLength).fill(null).map((_, idx) => {
|
3318
3492
|
const messageIndex = idx;
|
3319
|
-
return /* @__PURE__ */
|
3493
|
+
return /* @__PURE__ */ jsx30(
|
3320
3494
|
ThreadMessage,
|
3321
3495
|
{
|
3322
3496
|
messageIndex,
|
@@ -3350,7 +3524,7 @@ import {
|
|
3350
3524
|
createContext as createContext6,
|
3351
3525
|
useContext as useContext6
|
3352
3526
|
} from "react";
|
3353
|
-
import { Fragment as Fragment3, jsx as
|
3527
|
+
import { Fragment as Fragment3, jsx as jsx31 } from "react/jsx-runtime";
|
3354
3528
|
var ThreadConfigContext = createContext6({});
|
3355
3529
|
var useThreadConfig = () => {
|
3356
3530
|
return useContext6(ThreadConfigContext);
|
@@ -3360,37 +3534,50 @@ var ThreadConfigProvider = ({
|
|
3360
3534
|
config
|
3361
3535
|
}) => {
|
3362
3536
|
const assistant = useAssistantContext({ optional: true });
|
3363
|
-
const configProvider = config && Object.keys(config ?? {}).length > 0 ? /* @__PURE__ */
|
3537
|
+
const configProvider = config && Object.keys(config ?? {}).length > 0 ? /* @__PURE__ */ jsx31(ThreadConfigContext.Provider, { value: config, children }) : /* @__PURE__ */ jsx31(Fragment3, { children });
|
3364
3538
|
if (!config?.runtime) return configProvider;
|
3365
3539
|
if (assistant) {
|
3366
3540
|
throw new Error(
|
3367
3541
|
"You provided a runtime to <Thread> while simulataneously using <AssistantRuntimeProvider>. This is not allowed."
|
3368
3542
|
);
|
3369
3543
|
}
|
3370
|
-
return /* @__PURE__ */
|
3544
|
+
return /* @__PURE__ */ jsx31(AssistantRuntimeProvider, { runtime: config.runtime, children: configProvider });
|
3371
3545
|
};
|
3372
3546
|
ThreadConfigProvider.displayName = "ThreadConfigProvider";
|
3373
3547
|
|
3374
3548
|
// src/ui/assistant-action-bar.tsx
|
3375
|
-
import { forwardRef as
|
3376
|
-
import {
|
3377
|
-
|
3378
|
-
|
3549
|
+
import { forwardRef as forwardRef20 } from "react";
|
3550
|
+
import {
|
3551
|
+
AudioLinesIcon,
|
3552
|
+
CheckIcon,
|
3553
|
+
CopyIcon,
|
3554
|
+
RefreshCwIcon,
|
3555
|
+
StopCircleIcon
|
3556
|
+
} from "lucide-react";
|
3557
|
+
import { Fragment as Fragment4, jsx as jsx32, jsxs as jsxs5 } from "react/jsx-runtime";
|
3558
|
+
var useAllowCopy = (ensureCapability = false) => {
|
3379
3559
|
const { assistantMessage: { allowCopy = true } = {} } = useThreadConfig();
|
3380
3560
|
const { useThread } = useThreadContext();
|
3381
|
-
const copySupported = useThread((t) => t.capabilities.
|
3382
|
-
return
|
3561
|
+
const copySupported = useThread((t) => t.capabilities.unstable_copy);
|
3562
|
+
return allowCopy && (!ensureCapability || copySupported);
|
3563
|
+
};
|
3564
|
+
var useAllowSpeak = (ensureCapability = false) => {
|
3565
|
+
const { assistantMessage: { allowSpeak = true } = {} } = useThreadConfig();
|
3566
|
+
const { useThread } = useThreadContext();
|
3567
|
+
const speakSupported = useThread((t) => t.capabilities.speak);
|
3568
|
+
return allowSpeak && (!ensureCapability || speakSupported);
|
3383
3569
|
};
|
3384
|
-
var useAllowReload = () => {
|
3570
|
+
var useAllowReload = (ensureCapability = false) => {
|
3385
3571
|
const { assistantMessage: { allowReload = true } = {} } = useThreadConfig();
|
3386
3572
|
const { useThread } = useThreadContext();
|
3387
3573
|
const reloadSupported = useThread((t) => t.capabilities.reload);
|
3388
|
-
return
|
3574
|
+
return allowReload && (!ensureCapability || reloadSupported);
|
3389
3575
|
};
|
3390
3576
|
var AssistantActionBar = () => {
|
3391
|
-
const allowCopy = useAllowCopy();
|
3392
|
-
const allowReload = useAllowReload();
|
3393
|
-
|
3577
|
+
const allowCopy = useAllowCopy(true);
|
3578
|
+
const allowReload = useAllowReload(true);
|
3579
|
+
const allowSpeak = useAllowSpeak(true);
|
3580
|
+
if (!allowCopy && !allowReload && !allowSpeak) return null;
|
3394
3581
|
return /* @__PURE__ */ jsxs5(
|
3395
3582
|
AssistantActionBarRoot,
|
3396
3583
|
{
|
@@ -3398,8 +3585,9 @@ var AssistantActionBar = () => {
|
|
3398
3585
|
autohide: "not-last",
|
3399
3586
|
autohideFloat: "single-branch",
|
3400
3587
|
children: [
|
3401
|
-
/* @__PURE__ */
|
3402
|
-
/* @__PURE__ */
|
3588
|
+
allowSpeak && /* @__PURE__ */ jsx32(AssistantActionBarSpeechControl, {}),
|
3589
|
+
allowCopy && /* @__PURE__ */ jsx32(AssistantActionBarCopy, {}),
|
3590
|
+
allowReload && /* @__PURE__ */ jsx32(AssistantActionBarReload, {})
|
3403
3591
|
]
|
3404
3592
|
}
|
3405
3593
|
);
|
@@ -3409,21 +3597,49 @@ var AssistantActionBarRoot = withDefaults(actionBar_exports.Root, {
|
|
3409
3597
|
className: "aui-assistant-action-bar-root"
|
3410
3598
|
});
|
3411
3599
|
AssistantActionBarRoot.displayName = "AssistantActionBarRoot";
|
3412
|
-
var AssistantActionBarCopy =
|
3600
|
+
var AssistantActionBarCopy = forwardRef20((props, ref) => {
|
3413
3601
|
const {
|
3414
3602
|
strings: {
|
3415
|
-
assistantMessage: {
|
3603
|
+
assistantMessage: { copy: { tooltip = "Copy" } = {} } = {}
|
3416
3604
|
} = {}
|
3417
3605
|
} = useThreadConfig();
|
3418
|
-
|
3419
|
-
|
3420
|
-
|
3421
|
-
/* @__PURE__ */ jsx31(message_exports.If, { copied: true, children: /* @__PURE__ */ jsx31(CheckIcon, {}) }),
|
3422
|
-
/* @__PURE__ */ jsx31(message_exports.If, { copied: false, children: /* @__PURE__ */ jsx31(CopyIcon, {}) })
|
3606
|
+
return /* @__PURE__ */ jsx32(actionBar_exports.Copy, { asChild: true, children: /* @__PURE__ */ jsx32(TooltipIconButton, { tooltip, ...props, ref, children: props.children ?? /* @__PURE__ */ jsxs5(Fragment4, { children: [
|
3607
|
+
/* @__PURE__ */ jsx32(message_exports.If, { copied: true, children: /* @__PURE__ */ jsx32(CheckIcon, {}) }),
|
3608
|
+
/* @__PURE__ */ jsx32(message_exports.If, { copied: false, children: /* @__PURE__ */ jsx32(CopyIcon, {}) })
|
3423
3609
|
] }) }) });
|
3424
3610
|
});
|
3425
3611
|
AssistantActionBarCopy.displayName = "AssistantActionBarCopy";
|
3426
|
-
var
|
3612
|
+
var AssistantActionBarSpeechControl = () => {
|
3613
|
+
return /* @__PURE__ */ jsxs5(Fragment4, { children: [
|
3614
|
+
/* @__PURE__ */ jsx32(message_exports.If, { speaking: false, children: /* @__PURE__ */ jsx32(AssistantActionBarSpeak, {}) }),
|
3615
|
+
/* @__PURE__ */ jsx32(message_exports.If, { speaking: true, children: /* @__PURE__ */ jsx32(AssistantActionBarStopSpeaking, {}) })
|
3616
|
+
] });
|
3617
|
+
};
|
3618
|
+
var AssistantActionBarSpeak = forwardRef20((props, ref) => {
|
3619
|
+
const {
|
3620
|
+
strings: {
|
3621
|
+
assistantMessage: { speak: { tooltip = "Read aloud" } = {} } = {}
|
3622
|
+
} = {}
|
3623
|
+
} = useThreadConfig();
|
3624
|
+
const allowSpeak = useAllowSpeak();
|
3625
|
+
if (!allowSpeak) return null;
|
3626
|
+
return /* @__PURE__ */ jsx32(actionBar_exports.Speak, { asChild: true, children: /* @__PURE__ */ jsx32(TooltipIconButton, { tooltip, ...props, ref, children: props.children ?? /* @__PURE__ */ jsx32(AudioLinesIcon, {}) }) });
|
3627
|
+
});
|
3628
|
+
AssistantActionBarSpeak.displayName = "AssistantActionBarSpeak";
|
3629
|
+
var AssistantActionBarStopSpeaking = forwardRef20((props, ref) => {
|
3630
|
+
const {
|
3631
|
+
strings: {
|
3632
|
+
assistantMessage: {
|
3633
|
+
speak: { stop: { tooltip: stopTooltip = "Stop" } = {} } = {}
|
3634
|
+
} = {}
|
3635
|
+
} = {}
|
3636
|
+
} = useThreadConfig();
|
3637
|
+
const allowSpeak = useAllowSpeak();
|
3638
|
+
if (!allowSpeak) return null;
|
3639
|
+
return /* @__PURE__ */ jsx32(actionBar_exports.StopSpeaking, { asChild: true, children: /* @__PURE__ */ jsx32(TooltipIconButton, { tooltip: stopTooltip, ...props, ref, children: props.children ?? /* @__PURE__ */ jsx32(StopCircleIcon, {}) }) });
|
3640
|
+
});
|
3641
|
+
AssistantActionBarStopSpeaking.displayName = "AssistantActionBarStopSpeaking";
|
3642
|
+
var AssistantActionBarReload = forwardRef20((props, ref) => {
|
3427
3643
|
const {
|
3428
3644
|
strings: {
|
3429
3645
|
assistantMessage: { reload: { tooltip = "Refresh" } = {} } = {}
|
@@ -3431,13 +3647,16 @@ var AssistantActionBarReload = forwardRef19((props, ref) => {
|
|
3431
3647
|
} = useThreadConfig();
|
3432
3648
|
const allowReload = useAllowReload();
|
3433
3649
|
if (!allowReload) return null;
|
3434
|
-
return /* @__PURE__ */
|
3650
|
+
return /* @__PURE__ */ jsx32(actionBar_exports.Reload, { asChild: true, children: /* @__PURE__ */ jsx32(TooltipIconButton, { tooltip, ...props, ref, children: /* @__PURE__ */ jsx32(RefreshCwIcon, {}) }) });
|
3435
3651
|
});
|
3436
3652
|
AssistantActionBarReload.displayName = "AssistantActionBarReload";
|
3437
3653
|
var exports = {
|
3438
3654
|
Root: AssistantActionBarRoot,
|
3439
3655
|
Reload: AssistantActionBarReload,
|
3440
|
-
Copy: AssistantActionBarCopy
|
3656
|
+
Copy: AssistantActionBarCopy,
|
3657
|
+
Speak: AssistantActionBarSpeak,
|
3658
|
+
StopSpeaking: AssistantActionBarStopSpeaking,
|
3659
|
+
SpeechControl: AssistantActionBarSpeechControl
|
3441
3660
|
};
|
3442
3661
|
var assistant_action_bar_default = Object.assign(
|
3443
3662
|
AssistantActionBar,
|
@@ -3445,12 +3664,12 @@ var assistant_action_bar_default = Object.assign(
|
|
3445
3664
|
);
|
3446
3665
|
|
3447
3666
|
// src/ui/assistant-message.tsx
|
3448
|
-
import { forwardRef as
|
3667
|
+
import { forwardRef as forwardRef22 } from "react";
|
3449
3668
|
|
3450
3669
|
// src/ui/branch-picker.tsx
|
3451
|
-
import { forwardRef as
|
3670
|
+
import { forwardRef as forwardRef21 } from "react";
|
3452
3671
|
import { ChevronLeftIcon, ChevronRightIcon } from "lucide-react";
|
3453
|
-
import { jsx as
|
3672
|
+
import { jsx as jsx33, jsxs as jsxs6 } from "react/jsx-runtime";
|
3454
3673
|
var useAllowBranchPicker = () => {
|
3455
3674
|
const { branchPicker: { allowBranchPicker = true } = {} } = useThreadConfig();
|
3456
3675
|
const { useThread } = useThreadContext();
|
@@ -3461,9 +3680,9 @@ var BranchPicker = () => {
|
|
3461
3680
|
const allowBranchPicker = useAllowBranchPicker();
|
3462
3681
|
if (!allowBranchPicker) return null;
|
3463
3682
|
return /* @__PURE__ */ jsxs6(BranchPickerRoot, { hideWhenSingleBranch: true, children: [
|
3464
|
-
/* @__PURE__ */
|
3465
|
-
/* @__PURE__ */
|
3466
|
-
/* @__PURE__ */
|
3683
|
+
/* @__PURE__ */ jsx33(BranchPickerPrevious2, {}),
|
3684
|
+
/* @__PURE__ */ jsx33(BranchPickerState, {}),
|
3685
|
+
/* @__PURE__ */ jsx33(BranchPickerNext, {})
|
3467
3686
|
] });
|
3468
3687
|
};
|
3469
3688
|
BranchPicker.displayName = "BranchPicker";
|
@@ -3471,31 +3690,31 @@ var BranchPickerRoot = withDefaults(branchPicker_exports.Root, {
|
|
3471
3690
|
className: "aui-branch-picker-root"
|
3472
3691
|
});
|
3473
3692
|
BranchPickerRoot.displayName = "BranchPickerRoot";
|
3474
|
-
var BranchPickerPrevious2 =
|
3693
|
+
var BranchPickerPrevious2 = forwardRef21((props, ref) => {
|
3475
3694
|
const {
|
3476
3695
|
strings: {
|
3477
3696
|
branchPicker: { previous: { tooltip = "Previous" } = {} } = {}
|
3478
3697
|
} = {}
|
3479
3698
|
} = useThreadConfig();
|
3480
|
-
return /* @__PURE__ */
|
3699
|
+
return /* @__PURE__ */ jsx33(branchPicker_exports.Previous, { asChild: true, children: /* @__PURE__ */ jsx33(TooltipIconButton, { tooltip, ...props, ref, children: props.children ?? /* @__PURE__ */ jsx33(ChevronLeftIcon, {}) }) });
|
3481
3700
|
});
|
3482
3701
|
BranchPickerPrevious2.displayName = "BranchPickerPrevious";
|
3483
3702
|
var BranchPickerStateWrapper = withDefaults("span", {
|
3484
3703
|
className: "aui-branch-picker-state"
|
3485
3704
|
});
|
3486
|
-
var BranchPickerState =
|
3705
|
+
var BranchPickerState = forwardRef21((props, ref) => {
|
3487
3706
|
return /* @__PURE__ */ jsxs6(BranchPickerStateWrapper, { ...props, ref, children: [
|
3488
|
-
/* @__PURE__ */
|
3707
|
+
/* @__PURE__ */ jsx33(branchPicker_exports.Number, {}),
|
3489
3708
|
" / ",
|
3490
|
-
/* @__PURE__ */
|
3709
|
+
/* @__PURE__ */ jsx33(branchPicker_exports.Count, {})
|
3491
3710
|
] });
|
3492
3711
|
});
|
3493
3712
|
BranchPickerState.displayName = "BranchPickerState";
|
3494
|
-
var BranchPickerNext =
|
3713
|
+
var BranchPickerNext = forwardRef21((props, ref) => {
|
3495
3714
|
const {
|
3496
3715
|
strings: { branchPicker: { next: { tooltip = "Next" } = {} } = {} } = {}
|
3497
3716
|
} = useThreadConfig();
|
3498
|
-
return /* @__PURE__ */
|
3717
|
+
return /* @__PURE__ */ jsx33(branchPicker_exports.Next, { asChild: true, children: /* @__PURE__ */ jsx33(TooltipIconButton, { tooltip, ...props, ref, children: props.children ?? /* @__PURE__ */ jsx33(ChevronRightIcon, {}) }) });
|
3499
3718
|
});
|
3500
3719
|
BranchPickerNext.displayName = "BranchPickerNext";
|
3501
3720
|
var exports2 = {
|
@@ -3507,12 +3726,12 @@ var branch_picker_default = Object.assign(BranchPicker, exports2);
|
|
3507
3726
|
|
3508
3727
|
// src/ui/base/avatar.tsx
|
3509
3728
|
import * as AvatarPrimitive from "@radix-ui/react-avatar";
|
3510
|
-
import { jsx as
|
3729
|
+
import { jsx as jsx34, jsxs as jsxs7 } from "react/jsx-runtime";
|
3511
3730
|
var Avatar = ({ src, alt, fallback }) => {
|
3512
3731
|
if (src == null && fallback == null) return null;
|
3513
3732
|
return /* @__PURE__ */ jsxs7(AvatarRoot, { children: [
|
3514
|
-
src != null && /* @__PURE__ */
|
3515
|
-
fallback != null && /* @__PURE__ */
|
3733
|
+
src != null && /* @__PURE__ */ jsx34(AvatarImage, { src, alt }),
|
3734
|
+
fallback != null && /* @__PURE__ */ jsx34(AvatarFallback, { children: fallback })
|
3516
3735
|
] });
|
3517
3736
|
};
|
3518
3737
|
Avatar.displayName = "Avatar";
|
@@ -3531,10 +3750,10 @@ AvatarFallback.displayName = "AvatarFallback";
|
|
3531
3750
|
|
3532
3751
|
// src/ui/content-part.tsx
|
3533
3752
|
import classNames2 from "classnames";
|
3534
|
-
import { jsx as
|
3753
|
+
import { jsx as jsx35 } from "react/jsx-runtime";
|
3535
3754
|
var Text = () => {
|
3536
3755
|
const status = useSmoothStatus();
|
3537
|
-
return /* @__PURE__ */
|
3756
|
+
return /* @__PURE__ */ jsx35(
|
3538
3757
|
contentPart_exports.Text,
|
3539
3758
|
{
|
3540
3759
|
className: classNames2(
|
@@ -3549,19 +3768,19 @@ var exports3 = { Text: withSmoothContextProvider(Text) };
|
|
3549
3768
|
var content_part_default = exports3;
|
3550
3769
|
|
3551
3770
|
// src/ui/assistant-message.tsx
|
3552
|
-
import { jsx as
|
3771
|
+
import { jsx as jsx36, jsxs as jsxs8 } from "react/jsx-runtime";
|
3553
3772
|
var AssistantMessage = () => {
|
3554
3773
|
return /* @__PURE__ */ jsxs8(AssistantMessageRoot, { children: [
|
3555
|
-
/* @__PURE__ */
|
3556
|
-
/* @__PURE__ */
|
3557
|
-
/* @__PURE__ */
|
3558
|
-
/* @__PURE__ */
|
3774
|
+
/* @__PURE__ */ jsx36(AssistantMessageAvatar, {}),
|
3775
|
+
/* @__PURE__ */ jsx36(AssistantMessageContent, {}),
|
3776
|
+
/* @__PURE__ */ jsx36(branch_picker_default, {}),
|
3777
|
+
/* @__PURE__ */ jsx36(assistant_action_bar_default, {})
|
3559
3778
|
] });
|
3560
3779
|
};
|
3561
3780
|
AssistantMessage.displayName = "AssistantMessage";
|
3562
3781
|
var AssistantMessageAvatar = () => {
|
3563
3782
|
const { assistantAvatar: avatar = { fallback: "A" } } = useThreadConfig();
|
3564
|
-
return /* @__PURE__ */
|
3783
|
+
return /* @__PURE__ */ jsx36(Avatar, { ...avatar });
|
3565
3784
|
};
|
3566
3785
|
var AssistantMessageRoot = withDefaults(message_exports.Root, {
|
3567
3786
|
className: "aui-assistant-message-root"
|
@@ -3570,9 +3789,9 @@ AssistantMessageRoot.displayName = "AssistantMessageRoot";
|
|
3570
3789
|
var AssistantMessageContentWrapper = withDefaults("div", {
|
3571
3790
|
className: "aui-assistant-message-content"
|
3572
3791
|
});
|
3573
|
-
var AssistantMessageContent =
|
3792
|
+
var AssistantMessageContent = forwardRef22(({ components: componentsProp, ...rest }, ref) => {
|
3574
3793
|
const { assistantMessage: { components = {} } = {} } = useThreadConfig();
|
3575
|
-
return /* @__PURE__ */
|
3794
|
+
return /* @__PURE__ */ jsx36(AssistantMessageContentWrapper, { ...rest, ref, children: /* @__PURE__ */ jsx36(
|
3576
3795
|
message_exports.Content,
|
3577
3796
|
{
|
3578
3797
|
components: {
|
@@ -3594,21 +3813,21 @@ var assistant_message_default = Object.assign(
|
|
3594
3813
|
);
|
3595
3814
|
|
3596
3815
|
// src/ui/assistant-modal.tsx
|
3597
|
-
import { forwardRef as
|
3816
|
+
import { forwardRef as forwardRef29 } from "react";
|
3598
3817
|
import { BotIcon, ChevronDownIcon } from "lucide-react";
|
3599
3818
|
|
3600
3819
|
// src/ui/thread.tsx
|
3601
|
-
import { forwardRef as
|
3820
|
+
import { forwardRef as forwardRef28 } from "react";
|
3602
3821
|
import { ArrowDownIcon } from "lucide-react";
|
3603
3822
|
|
3604
3823
|
// src/ui/composer.tsx
|
3605
|
-
import { forwardRef as
|
3824
|
+
import { forwardRef as forwardRef23 } from "react";
|
3606
3825
|
import { SendHorizontalIcon } from "lucide-react";
|
3607
3826
|
|
3608
3827
|
// src/ui/base/CircleStopIcon.tsx
|
3609
|
-
import { jsx as
|
3828
|
+
import { jsx as jsx37 } from "react/jsx-runtime";
|
3610
3829
|
var CircleStopIcon = () => {
|
3611
|
-
return /* @__PURE__ */
|
3830
|
+
return /* @__PURE__ */ jsx37(
|
3612
3831
|
"svg",
|
3613
3832
|
{
|
3614
3833
|
xmlns: "http://www.w3.org/2000/svg",
|
@@ -3616,18 +3835,18 @@ var CircleStopIcon = () => {
|
|
3616
3835
|
fill: "currentColor",
|
3617
3836
|
width: "16",
|
3618
3837
|
height: "16",
|
3619
|
-
children: /* @__PURE__ */
|
3838
|
+
children: /* @__PURE__ */ jsx37("rect", { width: "10", height: "10", x: "3", y: "3", rx: "2" })
|
3620
3839
|
}
|
3621
3840
|
);
|
3622
3841
|
};
|
3623
3842
|
CircleStopIcon.displayName = "CircleStopIcon";
|
3624
3843
|
|
3625
3844
|
// src/ui/composer.tsx
|
3626
|
-
import { Fragment as Fragment5, jsx as
|
3845
|
+
import { Fragment as Fragment5, jsx as jsx38, jsxs as jsxs9 } from "react/jsx-runtime";
|
3627
3846
|
var Composer = () => {
|
3628
3847
|
return /* @__PURE__ */ jsxs9(ComposerRoot, { children: [
|
3629
|
-
/* @__PURE__ */
|
3630
|
-
/* @__PURE__ */
|
3848
|
+
/* @__PURE__ */ jsx38(ComposerInput, { autoFocus: true }),
|
3849
|
+
/* @__PURE__ */ jsx38(ComposerAction, {})
|
3631
3850
|
] });
|
3632
3851
|
};
|
3633
3852
|
Composer.displayName = "Composer";
|
@@ -3640,14 +3859,14 @@ var ComposerInputStyled = withDefaults(composer_exports.Input, {
|
|
3640
3859
|
autoFocus: true,
|
3641
3860
|
className: "aui-composer-input"
|
3642
3861
|
});
|
3643
|
-
var ComposerInput =
|
3862
|
+
var ComposerInput = forwardRef23(
|
3644
3863
|
(props, ref) => {
|
3645
3864
|
const {
|
3646
3865
|
strings: {
|
3647
3866
|
composer: { input: { placeholder = "Write a message..." } = {} } = {}
|
3648
3867
|
} = {}
|
3649
3868
|
} = useThreadConfig();
|
3650
|
-
return /* @__PURE__ */
|
3869
|
+
return /* @__PURE__ */ jsx38(ComposerInputStyled, { placeholder, ...props, ref });
|
3651
3870
|
}
|
3652
3871
|
);
|
3653
3872
|
ComposerInput.displayName = "ComposerInput";
|
@@ -3658,10 +3877,10 @@ var useAllowCancel = () => {
|
|
3658
3877
|
};
|
3659
3878
|
var ComposerAction = () => {
|
3660
3879
|
const allowCancel = useAllowCancel();
|
3661
|
-
if (!allowCancel) return /* @__PURE__ */
|
3880
|
+
if (!allowCancel) return /* @__PURE__ */ jsx38(ComposerSend, {});
|
3662
3881
|
return /* @__PURE__ */ jsxs9(Fragment5, { children: [
|
3663
|
-
/* @__PURE__ */
|
3664
|
-
/* @__PURE__ */
|
3882
|
+
/* @__PURE__ */ jsx38(thread_exports.If, { running: false, children: /* @__PURE__ */ jsx38(ComposerSend, {}) }),
|
3883
|
+
/* @__PURE__ */ jsx38(thread_exports.If, { running: true, children: /* @__PURE__ */ jsx38(ComposerCancel, {}) })
|
3665
3884
|
] });
|
3666
3885
|
};
|
3667
3886
|
ComposerAction.displayName = "ComposerAction";
|
@@ -3669,22 +3888,22 @@ var ComposerSendButton = withDefaults(TooltipIconButton, {
|
|
3669
3888
|
variant: "default",
|
3670
3889
|
className: "aui-composer-send"
|
3671
3890
|
});
|
3672
|
-
var ComposerSend =
|
3891
|
+
var ComposerSend = forwardRef23((props, ref) => {
|
3673
3892
|
const {
|
3674
3893
|
strings: { composer: { send: { tooltip = "Send" } = {} } = {} } = {}
|
3675
3894
|
} = useThreadConfig();
|
3676
|
-
return /* @__PURE__ */
|
3895
|
+
return /* @__PURE__ */ jsx38(composer_exports.Send, { asChild: true, children: /* @__PURE__ */ jsx38(ComposerSendButton, { tooltip, ...props, ref, children: props.children ?? /* @__PURE__ */ jsx38(SendHorizontalIcon, {}) }) });
|
3677
3896
|
});
|
3678
3897
|
ComposerSend.displayName = "ComposerSend";
|
3679
3898
|
var ComposerCancelButton = withDefaults(TooltipIconButton, {
|
3680
3899
|
variant: "default",
|
3681
3900
|
className: "aui-composer-cancel"
|
3682
3901
|
});
|
3683
|
-
var ComposerCancel =
|
3902
|
+
var ComposerCancel = forwardRef23((props, ref) => {
|
3684
3903
|
const {
|
3685
3904
|
strings: { composer: { cancel: { tooltip = "Cancel" } = {} } = {} } = {}
|
3686
3905
|
} = useThreadConfig();
|
3687
|
-
return /* @__PURE__ */
|
3906
|
+
return /* @__PURE__ */ jsx38(composer_exports.Cancel, { asChild: true, children: /* @__PURE__ */ jsx38(ComposerCancelButton, { tooltip, ...props, ref, children: props.children ?? /* @__PURE__ */ jsx38(CircleStopIcon, {}) }) });
|
3688
3907
|
});
|
3689
3908
|
ComposerCancel.displayName = "ComposerCancel";
|
3690
3909
|
var exports5 = {
|
@@ -3697,15 +3916,15 @@ var exports5 = {
|
|
3697
3916
|
var composer_default = Object.assign(Composer, exports5);
|
3698
3917
|
|
3699
3918
|
// src/ui/thread-welcome.tsx
|
3700
|
-
import { forwardRef as
|
3701
|
-
import { jsx as
|
3919
|
+
import { forwardRef as forwardRef24 } from "react";
|
3920
|
+
import { jsx as jsx39, jsxs as jsxs10 } from "react/jsx-runtime";
|
3702
3921
|
var ThreadWelcome = () => {
|
3703
3922
|
return /* @__PURE__ */ jsxs10(ThreadWelcomeRoot, { children: [
|
3704
3923
|
/* @__PURE__ */ jsxs10(ThreadWelcomeCenter, { children: [
|
3705
|
-
/* @__PURE__ */
|
3706
|
-
/* @__PURE__ */
|
3924
|
+
/* @__PURE__ */ jsx39(ThreadWelcomeAvatar, {}),
|
3925
|
+
/* @__PURE__ */ jsx39(ThreadWelcomeMessage, {})
|
3707
3926
|
] }),
|
3708
|
-
/* @__PURE__ */
|
3927
|
+
/* @__PURE__ */ jsx39(ThreadWelcomeSuggestions, {})
|
3709
3928
|
] });
|
3710
3929
|
};
|
3711
3930
|
ThreadWelcome.displayName = "ThreadWelcome";
|
@@ -3715,22 +3934,22 @@ var ThreadWelcomeRootStyled = withDefaults("div", {
|
|
3715
3934
|
var ThreadWelcomeCenter = withDefaults("div", {
|
3716
3935
|
className: "aui-thread-welcome-center"
|
3717
3936
|
});
|
3718
|
-
var ThreadWelcomeRoot =
|
3937
|
+
var ThreadWelcomeRoot = forwardRef24(
|
3719
3938
|
(props, ref) => {
|
3720
|
-
return /* @__PURE__ */
|
3939
|
+
return /* @__PURE__ */ jsx39(thread_exports.Empty, { children: /* @__PURE__ */ jsx39(ThreadWelcomeRootStyled, { ...props, ref }) });
|
3721
3940
|
}
|
3722
3941
|
);
|
3723
3942
|
ThreadWelcomeRoot.displayName = "ThreadWelcomeRoot";
|
3724
3943
|
var ThreadWelcomeAvatar = () => {
|
3725
3944
|
const { assistantAvatar: avatar = { fallback: "A" } } = useThreadConfig();
|
3726
|
-
return /* @__PURE__ */
|
3945
|
+
return /* @__PURE__ */ jsx39(Avatar, { ...avatar });
|
3727
3946
|
};
|
3728
3947
|
var ThreadWelcomeMessageStyled = withDefaults("p", {
|
3729
3948
|
className: "aui-thread-welcome-message"
|
3730
3949
|
});
|
3731
|
-
var ThreadWelcomeMessage =
|
3950
|
+
var ThreadWelcomeMessage = forwardRef24(({ message: messageProp, ...rest }, ref) => {
|
3732
3951
|
const { welcome: { message = "How can I help you today?" } = {} } = useThreadConfig();
|
3733
|
-
return /* @__PURE__ */
|
3952
|
+
return /* @__PURE__ */ jsx39(ThreadWelcomeMessageStyled, { ...rest, ref, children: messageProp ?? message });
|
3734
3953
|
});
|
3735
3954
|
ThreadWelcomeMessage.displayName = "ThreadWelcomeMessage";
|
3736
3955
|
var ThreadWelcomeSuggestionContainer = withDefaults("div", {
|
@@ -3742,21 +3961,21 @@ var ThreadWelcomeSuggestionStyled = withDefaults(thread_exports.Suggestion, {
|
|
3742
3961
|
var ThreadWelcomeSuggestion = ({
|
3743
3962
|
suggestion: { text, prompt }
|
3744
3963
|
}) => {
|
3745
|
-
return /* @__PURE__ */
|
3964
|
+
return /* @__PURE__ */ jsx39(
|
3746
3965
|
ThreadWelcomeSuggestionStyled,
|
3747
3966
|
{
|
3748
3967
|
prompt,
|
3749
3968
|
method: "replace",
|
3750
3969
|
autoSend: true,
|
3751
|
-
children: /* @__PURE__ */
|
3970
|
+
children: /* @__PURE__ */ jsx39("span", { className: "aui-thread-welcome-suggestion-text", children: text ?? prompt })
|
3752
3971
|
}
|
3753
3972
|
);
|
3754
3973
|
};
|
3755
3974
|
var ThreadWelcomeSuggestions = () => {
|
3756
3975
|
const { welcome: { suggestions } = {} } = useThreadConfig();
|
3757
|
-
return /* @__PURE__ */
|
3976
|
+
return /* @__PURE__ */ jsx39(ThreadWelcomeSuggestionContainer, { children: suggestions?.map((suggestion, idx) => {
|
3758
3977
|
const key = `${suggestion.prompt}-${idx}`;
|
3759
|
-
return /* @__PURE__ */
|
3978
|
+
return /* @__PURE__ */ jsx39(ThreadWelcomeSuggestion, { suggestion }, key);
|
3760
3979
|
}) });
|
3761
3980
|
};
|
3762
3981
|
ThreadWelcomeSuggestions.displayName = "ThreadWelcomeSuggestions";
|
@@ -3771,35 +3990,35 @@ var exports6 = {
|
|
3771
3990
|
var thread_welcome_default = Object.assign(ThreadWelcome, exports6);
|
3772
3991
|
|
3773
3992
|
// src/ui/user-message.tsx
|
3774
|
-
import { forwardRef as
|
3993
|
+
import { forwardRef as forwardRef26 } from "react";
|
3775
3994
|
|
3776
3995
|
// src/ui/user-action-bar.tsx
|
3777
|
-
import { forwardRef as
|
3996
|
+
import { forwardRef as forwardRef25 } from "react";
|
3778
3997
|
import { PencilIcon } from "lucide-react";
|
3779
|
-
import { jsx as
|
3780
|
-
var useAllowEdit = () => {
|
3998
|
+
import { jsx as jsx40 } from "react/jsx-runtime";
|
3999
|
+
var useAllowEdit = (ensureCapability = false) => {
|
3781
4000
|
const { userMessage: { allowEdit = true } = {} } = useThreadConfig();
|
3782
4001
|
const { useThread } = useThreadContext();
|
3783
4002
|
const editSupported = useThread((t) => t.capabilities.edit);
|
3784
|
-
return
|
4003
|
+
return allowEdit && (!ensureCapability || editSupported);
|
3785
4004
|
};
|
3786
4005
|
var UserActionBar = () => {
|
3787
|
-
const allowEdit = useAllowEdit();
|
4006
|
+
const allowEdit = useAllowEdit(true);
|
3788
4007
|
if (!allowEdit) return null;
|
3789
|
-
return /* @__PURE__ */
|
4008
|
+
return /* @__PURE__ */ jsx40(UserActionBarRoot, { hideWhenRunning: true, autohide: "not-last", children: /* @__PURE__ */ jsx40(UserActionBarEdit, {}) });
|
3790
4009
|
};
|
3791
4010
|
UserActionBar.displayName = "UserActionBar";
|
3792
4011
|
var UserActionBarRoot = withDefaults(actionBar_exports.Root, {
|
3793
4012
|
className: "aui-user-action-bar-root"
|
3794
4013
|
});
|
3795
4014
|
UserActionBarRoot.displayName = "UserActionBarRoot";
|
3796
|
-
var UserActionBarEdit =
|
4015
|
+
var UserActionBarEdit = forwardRef25((props, ref) => {
|
3797
4016
|
const {
|
3798
4017
|
strings: { userMessage: { edit: { tooltip = "Edit" } = {} } = {} } = {}
|
3799
4018
|
} = useThreadConfig();
|
3800
4019
|
const allowEdit = useAllowEdit();
|
3801
4020
|
if (!allowEdit) return null;
|
3802
|
-
return /* @__PURE__ */
|
4021
|
+
return /* @__PURE__ */ jsx40(actionBar_exports.Edit, { asChild: true, children: /* @__PURE__ */ jsx40(TooltipIconButton, { tooltip, ...props, ref, children: props.children ?? /* @__PURE__ */ jsx40(PencilIcon, {}) }) });
|
3803
4022
|
});
|
3804
4023
|
UserActionBarEdit.displayName = "UserActionBarEdit";
|
3805
4024
|
var exports7 = {
|
@@ -3809,12 +4028,12 @@ var exports7 = {
|
|
3809
4028
|
var user_action_bar_default = Object.assign(UserActionBar, exports7);
|
3810
4029
|
|
3811
4030
|
// src/ui/user-message.tsx
|
3812
|
-
import { jsx as
|
4031
|
+
import { jsx as jsx41, jsxs as jsxs11 } from "react/jsx-runtime";
|
3813
4032
|
var UserMessage = () => {
|
3814
4033
|
return /* @__PURE__ */ jsxs11(UserMessageRoot, { children: [
|
3815
|
-
/* @__PURE__ */
|
3816
|
-
/* @__PURE__ */
|
3817
|
-
/* @__PURE__ */
|
4034
|
+
/* @__PURE__ */ jsx41(user_action_bar_default, {}),
|
4035
|
+
/* @__PURE__ */ jsx41(UserMessageContent, {}),
|
4036
|
+
/* @__PURE__ */ jsx41(branch_picker_default, {})
|
3818
4037
|
] });
|
3819
4038
|
};
|
3820
4039
|
UserMessage.displayName = "UserMessage";
|
@@ -3825,9 +4044,9 @@ UserMessageRoot.displayName = "UserMessageRoot";
|
|
3825
4044
|
var UserMessageContentWrapper = withDefaults("div", {
|
3826
4045
|
className: "aui-user-message-content"
|
3827
4046
|
});
|
3828
|
-
var UserMessageContent =
|
4047
|
+
var UserMessageContent = forwardRef26(
|
3829
4048
|
({ components, ...props }, ref) => {
|
3830
|
-
return /* @__PURE__ */
|
4049
|
+
return /* @__PURE__ */ jsx41(UserMessageContentWrapper, { ...props, ref, children: /* @__PURE__ */ jsx41(
|
3831
4050
|
message_exports.Content,
|
3832
4051
|
{
|
3833
4052
|
components: {
|
@@ -3846,14 +4065,14 @@ var exports8 = {
|
|
3846
4065
|
var user_message_default = Object.assign(UserMessage, exports8);
|
3847
4066
|
|
3848
4067
|
// src/ui/edit-composer.tsx
|
3849
|
-
import { forwardRef as
|
3850
|
-
import { jsx as
|
4068
|
+
import { forwardRef as forwardRef27 } from "react";
|
4069
|
+
import { jsx as jsx42, jsxs as jsxs12 } from "react/jsx-runtime";
|
3851
4070
|
var EditComposer = () => {
|
3852
4071
|
return /* @__PURE__ */ jsxs12(EditComposerRoot, { children: [
|
3853
|
-
/* @__PURE__ */
|
4072
|
+
/* @__PURE__ */ jsx42(EditComposerInput, {}),
|
3854
4073
|
/* @__PURE__ */ jsxs12(EditComposerFooter, { children: [
|
3855
|
-
/* @__PURE__ */
|
3856
|
-
/* @__PURE__ */
|
4074
|
+
/* @__PURE__ */ jsx42(EditComposerCancel, {}),
|
4075
|
+
/* @__PURE__ */ jsx42(EditComposerSend, {})
|
3857
4076
|
] })
|
3858
4077
|
] });
|
3859
4078
|
};
|
@@ -3870,23 +4089,23 @@ var EditComposerFooter = withDefaults("div", {
|
|
3870
4089
|
className: "aui-edit-composer-footer"
|
3871
4090
|
});
|
3872
4091
|
EditComposerFooter.displayName = "EditComposerFooter";
|
3873
|
-
var EditComposerCancel =
|
4092
|
+
var EditComposerCancel = forwardRef27(
|
3874
4093
|
(props, ref) => {
|
3875
4094
|
const {
|
3876
4095
|
strings: {
|
3877
4096
|
editComposer: { cancel: { label = "Cancel" } = {} } = {}
|
3878
4097
|
} = {}
|
3879
4098
|
} = useThreadConfig();
|
3880
|
-
return /* @__PURE__ */
|
4099
|
+
return /* @__PURE__ */ jsx42(composer_exports.Cancel, { asChild: true, children: /* @__PURE__ */ jsx42(Button, { variant: "ghost", ...props, ref, children: props.children ?? label }) });
|
3881
4100
|
}
|
3882
4101
|
);
|
3883
4102
|
EditComposerCancel.displayName = "EditComposerCancel";
|
3884
|
-
var EditComposerSend =
|
4103
|
+
var EditComposerSend = forwardRef27(
|
3885
4104
|
(props, ref) => {
|
3886
4105
|
const {
|
3887
4106
|
strings: { editComposer: { send: { label = "Send" } = {} } = {} } = {}
|
3888
4107
|
} = useThreadConfig();
|
3889
|
-
return /* @__PURE__ */
|
4108
|
+
return /* @__PURE__ */ jsx42(composer_exports.Send, { asChild: true, children: /* @__PURE__ */ jsx42(Button, { ...props, ref, children: props.children ?? label }) });
|
3890
4109
|
}
|
3891
4110
|
);
|
3892
4111
|
EditComposerSend.displayName = "EditComposerSend";
|
@@ -3900,23 +4119,23 @@ var exports9 = {
|
|
3900
4119
|
var edit_composer_default = Object.assign(EditComposer, exports9);
|
3901
4120
|
|
3902
4121
|
// src/ui/thread.tsx
|
3903
|
-
import { jsx as
|
4122
|
+
import { jsx as jsx43, jsxs as jsxs13 } from "react/jsx-runtime";
|
3904
4123
|
var Thread = (config) => {
|
3905
|
-
return /* @__PURE__ */
|
3906
|
-
/* @__PURE__ */
|
3907
|
-
/* @__PURE__ */
|
4124
|
+
return /* @__PURE__ */ jsx43(ThreadRoot, { config, children: /* @__PURE__ */ jsxs13(ThreadViewport, { children: [
|
4125
|
+
/* @__PURE__ */ jsx43(thread_welcome_default, {}),
|
4126
|
+
/* @__PURE__ */ jsx43(ThreadMessages, {}),
|
3908
4127
|
/* @__PURE__ */ jsxs13(ThreadViewportFooter, { children: [
|
3909
|
-
/* @__PURE__ */
|
3910
|
-
/* @__PURE__ */
|
4128
|
+
/* @__PURE__ */ jsx43(ThreadScrollToBottom, {}),
|
4129
|
+
/* @__PURE__ */ jsx43(composer_default, {})
|
3911
4130
|
] })
|
3912
4131
|
] }) });
|
3913
4132
|
};
|
3914
4133
|
var ThreadRootStyled = withDefaults(thread_exports.Root, {
|
3915
4134
|
className: "aui-root aui-thread-root"
|
3916
4135
|
});
|
3917
|
-
var ThreadRoot =
|
4136
|
+
var ThreadRoot = forwardRef28(
|
3918
4137
|
({ config, ...props }, ref) => {
|
3919
|
-
return /* @__PURE__ */
|
4138
|
+
return /* @__PURE__ */ jsx43(ThreadConfigProvider, { config, children: /* @__PURE__ */ jsx43(ThreadRootStyled, { ...props, ref }) });
|
3920
4139
|
}
|
3921
4140
|
);
|
3922
4141
|
ThreadRoot.displayName = "ThreadRoot";
|
@@ -3930,7 +4149,7 @@ var ThreadViewportFooter = withDefaults("div", {
|
|
3930
4149
|
ThreadViewportFooter.displayName = "ThreadViewportFooter";
|
3931
4150
|
var SystemMessage = () => null;
|
3932
4151
|
var ThreadMessages = ({ components, ...rest }) => {
|
3933
|
-
return /* @__PURE__ */
|
4152
|
+
return /* @__PURE__ */ jsx43(
|
3934
4153
|
thread_exports.Messages,
|
3935
4154
|
{
|
3936
4155
|
components: {
|
@@ -3948,13 +4167,13 @@ var ThreadScrollToBottomIconButton = withDefaults(TooltipIconButton, {
|
|
3948
4167
|
variant: "outline",
|
3949
4168
|
className: "aui-thread-scroll-to-bottom"
|
3950
4169
|
});
|
3951
|
-
var ThreadScrollToBottom =
|
4170
|
+
var ThreadScrollToBottom = forwardRef28((props, ref) => {
|
3952
4171
|
const {
|
3953
4172
|
strings: {
|
3954
4173
|
thread: { scrollToBottom: { tooltip = "Scroll to bottom" } = {} } = {}
|
3955
4174
|
} = {}
|
3956
4175
|
} = useThreadConfig();
|
3957
|
-
return /* @__PURE__ */
|
4176
|
+
return /* @__PURE__ */ jsx43(thread_exports.ScrollToBottom, { asChild: true, children: /* @__PURE__ */ jsx43(ThreadScrollToBottomIconButton, { tooltip, ...props, ref, children: props.children ?? /* @__PURE__ */ jsx43(ArrowDownIcon, {}) }) });
|
3958
4177
|
});
|
3959
4178
|
ThreadScrollToBottom.displayName = "ThreadScrollToBottom";
|
3960
4179
|
var exports10 = {
|
@@ -3967,20 +4186,20 @@ var exports10 = {
|
|
3967
4186
|
var thread_default = Object.assign(Thread, exports10);
|
3968
4187
|
|
3969
4188
|
// src/ui/assistant-modal.tsx
|
3970
|
-
import { Fragment as Fragment6, jsx as
|
4189
|
+
import { Fragment as Fragment6, jsx as jsx44, jsxs as jsxs14 } from "react/jsx-runtime";
|
3971
4190
|
var AssistantModal = (config) => {
|
3972
4191
|
return /* @__PURE__ */ jsxs14(AssistantModalRoot, { config, children: [
|
3973
|
-
/* @__PURE__ */
|
3974
|
-
/* @__PURE__ */
|
4192
|
+
/* @__PURE__ */ jsx44(AssistantModalTrigger, {}),
|
4193
|
+
/* @__PURE__ */ jsx44(AssistantModalContent, { children: /* @__PURE__ */ jsx44(thread_default, {}) })
|
3975
4194
|
] });
|
3976
4195
|
};
|
3977
4196
|
AssistantModal.displayName = "AssistantModal";
|
3978
4197
|
var AssistantModalRoot = ({ config, ...props }) => {
|
3979
|
-
return /* @__PURE__ */
|
4198
|
+
return /* @__PURE__ */ jsx44(ThreadConfigProvider, { config, children: /* @__PURE__ */ jsx44(assistantModal_exports.Root, { ...props }) });
|
3980
4199
|
};
|
3981
4200
|
AssistantModalRoot.displayName = "AssistantModalRoot";
|
3982
|
-
var AssistantModalTrigger =
|
3983
|
-
return /* @__PURE__ */
|
4201
|
+
var AssistantModalTrigger = forwardRef29((props, ref) => {
|
4202
|
+
return /* @__PURE__ */ jsx44(AssistantModalAnchor, { children: /* @__PURE__ */ jsx44(assistantModal_exports.Trigger, { asChild: true, children: /* @__PURE__ */ jsx44(AssistantModalButton, { ...props, ref }) }) });
|
3984
4203
|
});
|
3985
4204
|
AssistantModalTrigger.displayName = "AssistantModalTrigger";
|
3986
4205
|
var AssistantModalAnchor = withDefaults(assistantModal_exports.Anchor, {
|
@@ -3991,7 +4210,7 @@ var ModalButtonStyled = withDefaults(TooltipIconButton, {
|
|
3991
4210
|
variant: "default",
|
3992
4211
|
className: "aui-modal-button"
|
3993
4212
|
});
|
3994
|
-
var AssistantModalButton =
|
4213
|
+
var AssistantModalButton = forwardRef29(({ "data-state": state, ...rest }, ref) => {
|
3995
4214
|
const {
|
3996
4215
|
strings: {
|
3997
4216
|
assistantModal: {
|
@@ -4005,7 +4224,7 @@ var AssistantModalButton = forwardRef28(({ "data-state": state, ...rest }, ref)
|
|
4005
4224
|
} = {}
|
4006
4225
|
} = useThreadConfig();
|
4007
4226
|
const tooltip = state === "open" ? openTooltip : closedTooltip;
|
4008
|
-
return /* @__PURE__ */
|
4227
|
+
return /* @__PURE__ */ jsx44(
|
4009
4228
|
ModalButtonStyled,
|
4010
4229
|
{
|
4011
4230
|
side: "left",
|
@@ -4014,14 +4233,14 @@ var AssistantModalButton = forwardRef28(({ "data-state": state, ...rest }, ref)
|
|
4014
4233
|
...rest,
|
4015
4234
|
ref,
|
4016
4235
|
children: rest.children ?? /* @__PURE__ */ jsxs14(Fragment6, { children: [
|
4017
|
-
/* @__PURE__ */
|
4236
|
+
/* @__PURE__ */ jsx44(
|
4018
4237
|
BotIcon,
|
4019
4238
|
{
|
4020
4239
|
"data-state": state,
|
4021
4240
|
className: "aui-modal-button-closed-icon"
|
4022
4241
|
}
|
4023
4242
|
),
|
4024
|
-
/* @__PURE__ */
|
4243
|
+
/* @__PURE__ */ jsx44(
|
4025
4244
|
ChevronDownIcon,
|
4026
4245
|
{
|
4027
4246
|
"data-state": state,
|
@@ -4070,6 +4289,7 @@ export {
|
|
4070
4289
|
thread_welcome_default as ThreadWelcome,
|
4071
4290
|
user_action_bar_default as UserActionBar,
|
4072
4291
|
user_message_default as UserMessage,
|
4292
|
+
WebSpeechSynthesisAdapter,
|
4073
4293
|
fromCoreMessage,
|
4074
4294
|
fromCoreMessages,
|
4075
4295
|
fromLanguageModelMessages,
|
@@ -4086,6 +4306,8 @@ export {
|
|
4086
4306
|
useActionBarCopy,
|
4087
4307
|
useActionBarEdit,
|
4088
4308
|
useActionBarReload,
|
4309
|
+
useActionBarSpeak,
|
4310
|
+
useActionBarStopSpeaking,
|
4089
4311
|
useAppendMessage,
|
4090
4312
|
useAssistantContext,
|
4091
4313
|
useAssistantInstructions,
|