@assistant-ui/react 0.3.4 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +10 -8
- package/dist/edge.d.mts +9 -0
- package/dist/edge.d.ts +9 -0
- package/dist/edge.js +264 -0
- package/dist/edge.js.map +1 -0
- package/dist/edge.mjs +237 -0
- package/dist/edge.mjs.map +1 -0
- package/dist/index.d.mts +422 -60
- package/dist/index.d.ts +422 -60
- package/dist/index.js +1585 -54
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1576 -57
- package/dist/index.mjs.map +1 -1
- package/dist/styles/index.css +859 -0
- package/dist/styles/index.css.map +1 -0
- package/dist/styles/index.d.ts +2 -0
- package/dist/styles/modal.css +143 -0
- package/dist/styles/modal.css.map +1 -0
- package/dist/styles/modal.d.ts +2 -0
- package/dist/styles/tailwindcss/base-components.css +53 -0
- package/dist/styles/tailwindcss/modal.css +29 -0
- package/dist/styles/tailwindcss/thread.css +159 -0
- package/dist/styles/themes/default.css +61 -0
- package/dist/tailwindcss/index.d.mts +15 -0
- package/dist/tailwindcss/index.d.ts +15 -0
- package/dist/tailwindcss/index.js +108 -0
- package/dist/tailwindcss/index.js.map +1 -0
- package/dist/tailwindcss/index.mjs +77 -0
- package/dist/tailwindcss/index.mjs.map +1 -0
- package/package.json +49 -6
    
        package/dist/index.js
    CHANGED
    
    | @@ -1,3 +1,4 @@ | |
| 1 | 
            +
            "use client";
         | 
| 1 2 | 
             
            "use strict";
         | 
| 2 3 | 
             
            var __create = Object.create;
         | 
| 3 4 | 
             
            var __defProp = Object.defineProperty;
         | 
| @@ -31,14 +32,26 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru | |
| 31 32 | 
             
            var src_exports = {};
         | 
| 32 33 | 
             
            __export(src_exports, {
         | 
| 33 34 | 
             
              ActionBarPrimitive: () => actionBar_exports,
         | 
| 35 | 
            +
              AssistantActionBar: () => assistant_action_bar_default,
         | 
| 36 | 
            +
              AssistantMessage: () => assistant_message_default,
         | 
| 37 | 
            +
              AssistantModal: () => assistant_modal_default,
         | 
| 34 38 | 
             
              AssistantModalPrimitive: () => assistantModal_exports,
         | 
| 35 39 | 
             
              AssistantRuntimeProvider: () => AssistantRuntimeProvider,
         | 
| 40 | 
            +
              BranchPicker: () => branch_picker_default,
         | 
| 36 41 | 
             
              BranchPickerPrimitive: () => branchPicker_exports,
         | 
| 42 | 
            +
              Composer: () => composer_default,
         | 
| 37 43 | 
             
              ComposerPrimitive: () => composer_exports,
         | 
| 44 | 
            +
              ContentPart: () => content_part_default,
         | 
| 38 45 | 
             
              ContentPartPrimitive: () => contentPart_exports,
         | 
| 46 | 
            +
              EditComposer: () => edit_composer_default,
         | 
| 39 47 | 
             
              INTERNAL: () => internal_exports,
         | 
| 40 48 | 
             
              MessagePrimitive: () => message_exports,
         | 
| 49 | 
            +
              Thread: () => thread_default,
         | 
| 50 | 
            +
              ThreadConfigProvider: () => ThreadConfigProvider,
         | 
| 41 51 | 
             
              ThreadPrimitive: () => thread_exports,
         | 
| 52 | 
            +
              ThreadWelcome: () => thread_welcome_default,
         | 
| 53 | 
            +
              UserActionBar: () => user_action_bar_default,
         | 
| 54 | 
            +
              UserMessage: () => user_message_default,
         | 
| 42 55 | 
             
              makeAssistantTool: () => makeAssistantTool,
         | 
| 43 56 | 
             
              makeAssistantToolUI: () => makeAssistantToolUI,
         | 
| 44 57 | 
             
              useActionBarCopy: () => useActionBarCopy,
         | 
| @@ -61,10 +74,12 @@ __export(src_exports, { | |
| 61 74 | 
             
              useContentPartDisplay: () => useContentPartDisplay,
         | 
| 62 75 | 
             
              useContentPartImage: () => useContentPartImage,
         | 
| 63 76 | 
             
              useContentPartText: () => useContentPartText,
         | 
| 77 | 
            +
              useEdgeRuntime: () => useEdgeRuntime,
         | 
| 64 78 | 
             
              useLocalRuntime: () => useLocalRuntime,
         | 
| 65 79 | 
             
              useMessageContext: () => useMessageContext,
         | 
| 66 80 | 
             
              useMessageIf: () => useMessageIf,
         | 
| 67 81 | 
             
              useSwitchToNewThread: () => useSwitchToNewThread,
         | 
| 82 | 
            +
              useThreadConfig: () => useThreadConfig,
         | 
| 68 83 | 
             
              useThreadContext: () => useThreadContext,
         | 
| 69 84 | 
             
              useThreadEmpty: () => useThreadEmpty,
         | 
| 70 85 | 
             
              useThreadIf: () => useThreadIf,
         | 
| @@ -84,14 +99,14 @@ var import_react = require("react"); | |
| 84 99 | 
             
            var AssistantContext = (0, import_react.createContext)(
         | 
| 85 100 | 
             
              null
         | 
| 86 101 | 
             
            );
         | 
| 87 | 
            -
             | 
| 102 | 
            +
            function useAssistantContext(options) {
         | 
| 88 103 | 
             
              const context = (0, import_react.useContext)(AssistantContext);
         | 
| 89 | 
            -
              if (!context)
         | 
| 104 | 
            +
              if (!options?.optional && !context)
         | 
| 90 105 | 
             
                throw new Error(
         | 
| 91 106 | 
             
                  "This component must be used within an AssistantRuntimeProvider."
         | 
| 92 107 | 
             
                );
         | 
| 93 108 | 
             
              return context;
         | 
| 94 | 
            -
            } | 
| 109 | 
            +
            }
         | 
| 95 110 |  | 
| 96 111 | 
             
            // src/context/stores/AssistantModelConfig.ts
         | 
| 97 112 | 
             
            var import_zustand = require("zustand");
         | 
| @@ -189,14 +204,14 @@ var import_react3 = require("react"); | |
| 189 204 | 
             
            // src/context/react/ThreadContext.ts
         | 
| 190 205 | 
             
            var import_react2 = require("react");
         | 
| 191 206 | 
             
            var ThreadContext = (0, import_react2.createContext)(null);
         | 
| 192 | 
            -
             | 
| 207 | 
            +
            function useThreadContext(options) {
         | 
| 193 208 | 
             
              const context = (0, import_react2.useContext)(ThreadContext);
         | 
| 194 | 
            -
              if (!context)
         | 
| 209 | 
            +
              if (!options?.optional && !context)
         | 
| 195 210 | 
             
                throw new Error(
         | 
| 196 211 | 
             
                  "This component must be used within an AssistantRuntimeProvider."
         | 
| 197 212 | 
             
                );
         | 
| 198 213 | 
             
              return context;
         | 
| 199 | 
            -
            } | 
| 214 | 
            +
            }
         | 
| 200 215 |  | 
| 201 216 | 
             
            // src/context/stores/Composer.ts
         | 
| 202 217 | 
             
            var import_zustand3 = require("zustand");
         | 
| @@ -287,7 +302,7 @@ var makeThreadActionStore = (runtimeRef) => { | |
| 287 302 | 
             
                  startRun: (parentId) => runtimeRef.current.startRun(parentId),
         | 
| 288 303 | 
             
                  append: (message) => runtimeRef.current.append(message),
         | 
| 289 304 | 
             
                  cancelRun: () => runtimeRef.current.cancelRun(),
         | 
| 290 | 
            -
                  addToolResult: ( | 
| 305 | 
            +
                  addToolResult: (options) => runtimeRef.current.addToolResult(options)
         | 
| 291 306 | 
             
                })
         | 
| 292 307 | 
             
              );
         | 
| 293 308 | 
             
            };
         | 
| @@ -391,19 +406,19 @@ var import_react7 = require("react"); | |
| 391 406 | 
             
            // src/context/react/MessageContext.ts
         | 
| 392 407 | 
             
            var import_react6 = require("react");
         | 
| 393 408 | 
             
            var MessageContext = (0, import_react6.createContext)(null);
         | 
| 394 | 
            -
             | 
| 409 | 
            +
            function useMessageContext(options) {
         | 
| 395 410 | 
             
              const context = (0, import_react6.useContext)(MessageContext);
         | 
| 396 | 
            -
              if (!context)
         | 
| 411 | 
            +
              if (!options?.optional && !context)
         | 
| 397 412 | 
             
                throw new Error(
         | 
| 398 413 | 
             
                  "This component can only be used inside a component passed to <ThreadPrimitive.Messages components={...} />."
         | 
| 399 414 | 
             
                );
         | 
| 400 415 | 
             
              return context;
         | 
| 401 | 
            -
            } | 
| 416 | 
            +
            }
         | 
| 402 417 |  | 
| 403 418 | 
             
            // src/context/react/ComposerContext.ts
         | 
| 404 419 | 
             
            var useComposerContext = () => {
         | 
| 405 420 | 
             
              const { useComposer } = useThreadContext();
         | 
| 406 | 
            -
              const { useEditComposer } = ( | 
| 421 | 
            +
              const { useEditComposer } = useMessageContext({ optional: true }) ?? {};
         | 
| 407 422 | 
             
              return (0, import_react7.useMemo)(
         | 
| 408 423 | 
             
                () => ({
         | 
| 409 424 | 
             
                  useComposer: useEditComposer ?? useComposer,
         | 
| @@ -418,14 +433,14 @@ var import_react8 = require("react"); | |
| 418 433 | 
             
            var ContentPartContext = (0, import_react8.createContext)(
         | 
| 419 434 | 
             
              null
         | 
| 420 435 | 
             
            );
         | 
| 421 | 
            -
             | 
| 436 | 
            +
            function useContentPartContext(options) {
         | 
| 422 437 | 
             
              const context = (0, import_react8.useContext)(ContentPartContext);
         | 
| 423 | 
            -
              if (!context)
         | 
| 438 | 
            +
              if (!options?.optional && !context)
         | 
| 424 439 | 
             
                throw new Error(
         | 
| 425 440 | 
             
                  "This component can only be used inside a component passed to <MessagePrimitive.Content components={...} >."
         | 
| 426 441 | 
             
                );
         | 
| 427 442 | 
             
              return context;
         | 
| 428 | 
            -
            } | 
| 443 | 
            +
            }
         | 
| 429 444 |  | 
| 430 445 | 
             
            // src/hooks/useAppendMessage.tsx
         | 
| 431 446 | 
             
            var import_react9 = require("react");
         | 
| @@ -591,9 +606,10 @@ var useActionBarCopy = ({ | |
| 591 606 | 
             
                const { setIsCopied } = useMessageUtils.getState();
         | 
| 592 607 | 
             
                const { isEditing, value: composerValue } = useEditComposer.getState();
         | 
| 593 608 | 
             
                const valueToCopy = isEditing ? composerValue : getMessageText(message);
         | 
| 594 | 
            -
                navigator.clipboard.writeText(valueToCopy) | 
| 595 | 
            -
             | 
| 596 | 
            -
             | 
| 609 | 
            +
                navigator.clipboard.writeText(valueToCopy).then(() => {
         | 
| 610 | 
            +
                  setIsCopied(true);
         | 
| 611 | 
            +
                  setTimeout(() => setIsCopied(false), copiedDuration);
         | 
| 612 | 
            +
                });
         | 
| 597 613 | 
             
              }, [useMessage, useMessageUtils, useEditComposer, copiedDuration]);
         | 
| 598 614 | 
             
              if (!hasCopyableContent) return null;
         | 
| 599 615 | 
             
              return callback;
         | 
| @@ -770,6 +786,7 @@ var useMessageIf = (props) => { | |
| 770 786 | 
             
                  if (props.hasBranches === true && branches.length < 2) return false;
         | 
| 771 787 | 
             
                  if (props.user && message.role !== "user") return false;
         | 
| 772 788 | 
             
                  if (props.assistant && message.role !== "assistant") return false;
         | 
| 789 | 
            +
                  if (props.system && message.role !== "system") return false;
         | 
| 773 790 | 
             
                  if (props.lastOrHover === true && !isHovering && !isLast) return false;
         | 
| 774 791 | 
             
                  if (props.copied === true && !isCopied) return false;
         | 
| 775 792 | 
             
                  if (props.copied === false && isCopied) return false;
         | 
| @@ -1156,9 +1173,9 @@ var useIsHoveringRef = () => { | |
| 1156 1173 | 
             
              );
         | 
| 1157 1174 | 
             
              return useManagedRef(callbackRef);
         | 
| 1158 1175 | 
             
            };
         | 
| 1159 | 
            -
            var MessagePrimitiveRoot = (0, import_react33.forwardRef)(({ onMouseEnter, onMouseLeave, ...rest },  | 
| 1176 | 
            +
            var MessagePrimitiveRoot = (0, import_react33.forwardRef)(({ onMouseEnter, onMouseLeave, ...rest }, forwardRef28) => {
         | 
| 1160 1177 | 
             
              const isHoveringRef = useIsHoveringRef();
         | 
| 1161 | 
            -
              const ref = (0, import_react_compose_refs.useComposedRefs)( | 
| 1178 | 
            +
              const ref = (0, import_react_compose_refs.useComposedRefs)(forwardRef28, isHoveringRef);
         | 
| 1162 1179 | 
             
              return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_react_primitive3.Primitive.div, { ...rest, ref });
         | 
| 1163 1180 | 
             
            });
         | 
| 1164 1181 | 
             
            MessagePrimitiveRoot.displayName = "MessagePrimitive.Root";
         | 
| @@ -1180,11 +1197,12 @@ var import_react38 = require("react"); | |
| 1180 1197 | 
             
            var import_react34 = require("react");
         | 
| 1181 1198 | 
             
            var import_zustand9 = require("zustand");
         | 
| 1182 1199 | 
             
            var import_jsx_runtime13 = require("react/jsx-runtime");
         | 
| 1200 | 
            +
            var DONE_STATUS = { type: "done" };
         | 
| 1183 1201 | 
             
            var syncContentPart = ({ message }, useContentPart, partIndex) => {
         | 
| 1184 1202 | 
             
              const part = message.content[partIndex];
         | 
| 1185 1203 | 
             
              if (!part) return;
         | 
| 1186 | 
            -
              const messageStatus = message.role === "assistant" ? message.status :  | 
| 1187 | 
            -
              const status = partIndex === message.content.length - 1 ? messageStatus :  | 
| 1204 | 
            +
              const messageStatus = message.role === "assistant" ? message.status : DONE_STATUS;
         | 
| 1205 | 
            +
              const status = partIndex === message.content.length - 1 ? messageStatus : DONE_STATUS;
         | 
| 1188 1206 | 
             
              const currentState = useContentPart.getState();
         | 
| 1189 1207 | 
             
              if (currentState.part === part && currentState.status === status) return;
         | 
| 1190 1208 | 
             
              useContentPart.setState(
         | 
| @@ -1331,11 +1349,9 @@ var ContentPartPrimitiveDisplay = () => { | |
| 1331 1349 | 
             
            ContentPartPrimitiveDisplay.displayName = "ContentPartPrimitive.Display";
         | 
| 1332 1350 |  | 
| 1333 1351 | 
             
            // src/primitives/contentPart/ContentPartInProgress.tsx
         | 
| 1334 | 
            -
            var ContentPartPrimitiveInProgress = ({
         | 
| 1335 | 
            -
              children
         | 
| 1336 | 
            -
            }) => {
         | 
| 1352 | 
            +
            var ContentPartPrimitiveInProgress = ({ children }) => {
         | 
| 1337 1353 | 
             
              const { useContentPart } = useContentPartContext();
         | 
| 1338 | 
            -
              const isInProgress = useContentPart((c) => c.status === "in_progress");
         | 
| 1354 | 
            +
              const isInProgress = useContentPart((c) => c.status.type === "in_progress");
         | 
| 1339 1355 | 
             
              return isInProgress ? children : null;
         | 
| 1340 1356 | 
             
            };
         | 
| 1341 1357 | 
             
            ContentPartPrimitiveInProgress.displayName = "ContentPartPrimitive.InProgress";
         | 
| @@ -1360,31 +1376,37 @@ var defaultComponents = { | |
| 1360 1376 | 
             
            };
         | 
| 1361 1377 | 
             
            var MessageContentPartComponent = ({
         | 
| 1362 1378 | 
             
              components: {
         | 
| 1363 | 
            -
                Text = defaultComponents.Text,
         | 
| 1364 | 
            -
                Image = defaultComponents.Image,
         | 
| 1379 | 
            +
                Text: Text2 = defaultComponents.Text,
         | 
| 1380 | 
            +
                Image: Image2 = defaultComponents.Image,
         | 
| 1365 1381 | 
             
                UI = defaultComponents.UI,
         | 
| 1366 | 
            -
                tools: { by_name = {}, Fallback = defaultComponents.tools.Fallback } = {}
         | 
| 1382 | 
            +
                tools: { by_name = {}, Fallback: Fallback2 = defaultComponents.tools.Fallback } = {}
         | 
| 1367 1383 | 
             
              } = {}
         | 
| 1368 1384 | 
             
            }) => {
         | 
| 1369 1385 | 
             
              const { useThreadActions } = useThreadContext();
         | 
| 1386 | 
            +
              const { useMessage } = useMessageContext();
         | 
| 1370 1387 | 
             
              const addToolResult = useThreadActions((t) => t.addToolResult);
         | 
| 1371 1388 | 
             
              const { useContentPart } = useContentPartContext();
         | 
| 1372 1389 | 
             
              const { part, status } = useContentPart();
         | 
| 1373 1390 | 
             
              const type = part.type;
         | 
| 1374 1391 | 
             
              switch (type) {
         | 
| 1375 1392 | 
             
                case "text":
         | 
| 1376 | 
            -
                  return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)( | 
| 1393 | 
            +
                  return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(Text2, { part, status });
         | 
| 1377 1394 | 
             
                case "image":
         | 
| 1378 | 
            -
                  return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)( | 
| 1395 | 
            +
                  return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(Image2, { part, status });
         | 
| 1379 1396 | 
             
                case "ui":
         | 
| 1380 1397 | 
             
                  return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(UI, { part, status });
         | 
| 1381 1398 | 
             
                case "tool-call": {
         | 
| 1382 | 
            -
                  const Tool = by_name[part.toolName] ||  | 
| 1383 | 
            -
                  const addResult = (result) => addToolResult( | 
| 1399 | 
            +
                  const Tool = by_name[part.toolName] || Fallback2;
         | 
| 1400 | 
            +
                  const addResult = (result) => addToolResult({
         | 
| 1401 | 
            +
                    messageId: useMessage.getState().message.id,
         | 
| 1402 | 
            +
                    toolCallId: part.toolCallId,
         | 
| 1403 | 
            +
                    result
         | 
| 1404 | 
            +
                  });
         | 
| 1384 1405 | 
             
                  return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(Tool, { part, status, addResult });
         | 
| 1385 1406 | 
             
                }
         | 
| 1386 1407 | 
             
                default:
         | 
| 1387 | 
            -
                   | 
| 1408 | 
            +
                  const unhandledType = type;
         | 
| 1409 | 
            +
                  throw new Error(`Unknown content part type: ${unhandledType}`);
         | 
| 1388 1410 | 
             
              }
         | 
| 1389 1411 | 
             
            };
         | 
| 1390 1412 | 
             
            var MessageContentPartImpl = ({
         | 
| @@ -1869,29 +1891,32 @@ var MessageProvider = ({ | |
| 1869 1891 |  | 
| 1870 1892 | 
             
            // src/primitives/thread/ThreadMessages.tsx
         | 
| 1871 1893 | 
             
            var import_jsx_runtime24 = require("react/jsx-runtime");
         | 
| 1894 | 
            +
            var DEFAULT_SYSTEM_MESSAGE = () => null;
         | 
| 1872 1895 | 
             
            var getComponents = (components) => {
         | 
| 1873 1896 | 
             
              return {
         | 
| 1874 1897 | 
             
                EditComposer: components.EditComposer ?? components.UserMessage ?? components.Message,
         | 
| 1875 1898 | 
             
                UserMessage: components.UserMessage ?? components.Message,
         | 
| 1876 | 
            -
                AssistantMessage: components.AssistantMessage ?? components.Message
         | 
| 1899 | 
            +
                AssistantMessage: components.AssistantMessage ?? components.Message,
         | 
| 1900 | 
            +
                SystemMessage: components.SystemMessage ?? DEFAULT_SYSTEM_MESSAGE
         | 
| 1877 1901 | 
             
              };
         | 
| 1878 1902 | 
             
            };
         | 
| 1879 1903 | 
             
            var ThreadMessageImpl = ({
         | 
| 1880 1904 | 
             
              messageIndex,
         | 
| 1881 1905 | 
             
              components
         | 
| 1882 1906 | 
             
            }) => {
         | 
| 1883 | 
            -
              const { UserMessage, EditComposer, AssistantMessage } = getComponents(components);
         | 
| 1907 | 
            +
              const { UserMessage: UserMessage2, EditComposer: EditComposer2, AssistantMessage: AssistantMessage2, SystemMessage: SystemMessage2 } = getComponents(components);
         | 
| 1884 1908 | 
             
              return /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(MessageProvider, { messageIndex, children: [
         | 
| 1885 1909 | 
             
                /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(MessagePrimitiveIf, { user: true, children: [
         | 
| 1886 | 
            -
                  /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(ComposerPrimitiveIf, { editing: false, children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)( | 
| 1887 | 
            -
                  /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(ComposerPrimitiveIf, { editing: true, children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)( | 
| 1910 | 
            +
                  /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(ComposerPrimitiveIf, { editing: false, children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(UserMessage2, {}) }),
         | 
| 1911 | 
            +
                  /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(ComposerPrimitiveIf, { editing: true, children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(EditComposer2, {}) })
         | 
| 1888 1912 | 
             
                ] }),
         | 
| 1889 | 
            -
                /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(MessagePrimitiveIf, { assistant: true, children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)( | 
| 1913 | 
            +
                /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(MessagePrimitiveIf, { assistant: true, children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(AssistantMessage2, {}) }),
         | 
| 1914 | 
            +
                /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(MessagePrimitiveIf, { system: true, children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(SystemMessage2, {}) })
         | 
| 1890 1915 | 
             
              ] });
         | 
| 1891 1916 | 
             
            };
         | 
| 1892 1917 | 
             
            var ThreadMessage = (0, import_react49.memo)(
         | 
| 1893 1918 | 
             
              ThreadMessageImpl,
         | 
| 1894 | 
            -
              (prev, next) => prev.messageIndex === next.messageIndex && prev.components.Message === next.components.Message && prev.components.UserMessage === next.components.UserMessage && prev.components.EditComposer === next.components.EditComposer && prev.components.AssistantMessage === next.components.AssistantMessage
         | 
| 1919 | 
            +
              (prev, next) => prev.messageIndex === next.messageIndex && prev.components.Message === next.components.Message && prev.components.UserMessage === next.components.UserMessage && prev.components.EditComposer === next.components.EditComposer && prev.components.AssistantMessage === next.components.AssistantMessage && prev.components.SystemMessage === next.components.SystemMessage
         | 
| 1895 1920 | 
             
            );
         | 
| 1896 1921 | 
             
            var ThreadPrimitiveMessagesImpl = ({
         | 
| 1897 1922 | 
             
              components
         | 
| @@ -1914,7 +1939,7 @@ var ThreadPrimitiveMessagesImpl = ({ | |
| 1914 1939 | 
             
            ThreadPrimitiveMessagesImpl.displayName = "ThreadPrimitive.Messages";
         | 
| 1915 1940 | 
             
            var ThreadPrimitiveMessages = (0, import_react49.memo)(
         | 
| 1916 1941 | 
             
              ThreadPrimitiveMessagesImpl,
         | 
| 1917 | 
            -
              (prev, next) => prev.components?.Message === next.components?.Message && prev.components?.UserMessage === next.components?.UserMessage && prev.components?.EditComposer === next.components?.EditComposer && prev.components?.AssistantMessage === next.components?.AssistantMessage
         | 
| 1942 | 
            +
              (prev, next) => prev.components?.Message === next.components?.Message && prev.components?.UserMessage === next.components?.UserMessage && prev.components?.EditComposer === next.components?.EditComposer && prev.components?.AssistantMessage === next.components?.AssistantMessage && prev.components?.SystemMessage === next.components?.SystemMessage
         | 
| 1918 1943 | 
             
            );
         | 
| 1919 1944 |  | 
| 1920 1945 | 
             
            // src/primitives/thread/ThreadScrollToBottom.tsx
         | 
| @@ -1929,10 +1954,10 @@ var ThreadPrimitiveSuggestion = createActionButton( | |
| 1929 1954 | 
             
              useThreadSuggestion
         | 
| 1930 1955 | 
             
            );
         | 
| 1931 1956 |  | 
| 1932 | 
            -
            // src/ | 
| 1957 | 
            +
            // src/runtimes/local/useLocalRuntime.tsx
         | 
| 1933 1958 | 
             
            var import_react50 = require("react");
         | 
| 1934 1959 |  | 
| 1935 | 
            -
            // src/ | 
| 1960 | 
            +
            // src/utils/idUtils.tsx
         | 
| 1936 1961 | 
             
            var import_non_secure = require("nanoid/non-secure");
         | 
| 1937 1962 | 
             
            var generateId = (0, import_non_secure.customAlphabet)(
         | 
| 1938 1963 | 
             
              "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",
         | 
| @@ -1941,7 +1966,7 @@ var generateId = (0, import_non_secure.customAlphabet)( | |
| 1941 1966 | 
             
            var optimisticPrefix = "__optimistic__";
         | 
| 1942 1967 | 
             
            var generateOptimisticId = () => `${optimisticPrefix}${generateId()}`;
         | 
| 1943 1968 |  | 
| 1944 | 
            -
            // src/ | 
| 1969 | 
            +
            // src/runtimes/utils/MessageRepository.tsx
         | 
| 1945 1970 | 
             
            var findHead = (message) => {
         | 
| 1946 1971 | 
             
              if (message.next) return findHead(message.next);
         | 
| 1947 1972 | 
             
              return message;
         | 
| @@ -2015,6 +2040,17 @@ var MessageRepository = class { | |
| 2015 2040 | 
             
                  this.head = newItem;
         | 
| 2016 2041 | 
             
                }
         | 
| 2017 2042 | 
             
              }
         | 
| 2043 | 
            +
              getMessage(messageId) {
         | 
| 2044 | 
            +
                const message = this.messages.get(messageId);
         | 
| 2045 | 
            +
                if (!message)
         | 
| 2046 | 
            +
                  throw new Error(
         | 
| 2047 | 
            +
                    "MessageRepository(updateMessage): Message not found. This is likely an internal bug in assistant-ui."
         | 
| 2048 | 
            +
                  );
         | 
| 2049 | 
            +
                return {
         | 
| 2050 | 
            +
                  parentId: message.prev?.current.id ?? null,
         | 
| 2051 | 
            +
                  message: message.current
         | 
| 2052 | 
            +
                };
         | 
| 2053 | 
            +
              }
         | 
| 2018 2054 | 
             
              appendOptimisticMessage(parentId, message) {
         | 
| 2019 2055 | 
             
                let optimisticId;
         | 
| 2020 2056 | 
             
                do {
         | 
| @@ -2092,7 +2128,7 @@ var MessageRepository = class { | |
| 2092 2128 | 
             
              }
         | 
| 2093 2129 | 
             
            };
         | 
| 2094 2130 |  | 
| 2095 | 
            -
            // src/ | 
| 2131 | 
            +
            // src/runtimes/core/BaseAssistantRuntime.tsx
         | 
| 2096 2132 | 
             
            var BaseAssistantRuntime = class {
         | 
| 2097 2133 | 
             
              constructor(_thread) {
         | 
| 2098 2134 | 
             
                this._thread = _thread;
         | 
| @@ -2133,8 +2169,8 @@ var BaseAssistantRuntime = class { | |
| 2133 2169 | 
             
              cancelRun() {
         | 
| 2134 2170 | 
             
                return this.thread.cancelRun();
         | 
| 2135 2171 | 
             
              }
         | 
| 2136 | 
            -
              addToolResult( | 
| 2137 | 
            -
                return this.thread.addToolResult( | 
| 2172 | 
            +
              addToolResult(options) {
         | 
| 2173 | 
            +
                return this.thread.addToolResult(options);
         | 
| 2138 2174 | 
             
              }
         | 
| 2139 2175 | 
             
              _subscriptions = /* @__PURE__ */ new Set();
         | 
| 2140 2176 | 
             
              subscribe(callback) {
         | 
| @@ -2149,7 +2185,7 @@ var BaseAssistantRuntime = class { | |
| 2149 2185 | 
             
              }
         | 
| 2150 2186 | 
             
            };
         | 
| 2151 2187 |  | 
| 2152 | 
            -
            // src/ | 
| 2188 | 
            +
            // src/runtimes/local/LocalRuntime.tsx
         | 
| 2153 2189 | 
             
            var LocalRuntime = class extends BaseAssistantRuntime {
         | 
| 2154 2190 | 
             
              _configProviders;
         | 
| 2155 2191 | 
             
              constructor(adapter) {
         | 
| @@ -2220,7 +2256,7 @@ var LocalThreadRuntime = class { | |
| 2220 2256 | 
             
                const message = {
         | 
| 2221 2257 | 
             
                  id,
         | 
| 2222 2258 | 
             
                  role: "assistant",
         | 
| 2223 | 
            -
                  status: "in_progress",
         | 
| 2259 | 
            +
                  status: { type: "in_progress" },
         | 
| 2224 2260 | 
             
                  content: [{ type: "text", text: "" }],
         | 
| 2225 2261 | 
             
                  createdAt: /* @__PURE__ */ new Date()
         | 
| 2226 2262 | 
             
                };
         | 
| @@ -2240,11 +2276,17 @@ var LocalThreadRuntime = class { | |
| 2240 2276 | 
             
                    config: mergeModelConfigs(this._configProviders),
         | 
| 2241 2277 | 
             
                    onUpdate: updateHandler
         | 
| 2242 2278 | 
             
                  });
         | 
| 2243 | 
            -
                   | 
| 2244 | 
            -
             | 
| 2279 | 
            +
                  if (result !== void 0) {
         | 
| 2280 | 
            +
                    updateHandler(result);
         | 
| 2281 | 
            +
                  }
         | 
| 2282 | 
            +
                  if (result.status?.type === "in_progress")
         | 
| 2283 | 
            +
                    throw new Error(
         | 
| 2284 | 
            +
                      "Unexpected in_progress status returned from ChatModelAdapter"
         | 
| 2285 | 
            +
                    );
         | 
| 2286 | 
            +
                  message.status = result.status ?? { type: "done" };
         | 
| 2245 2287 | 
             
                  this.repository.addOrUpdateMessage(parentId, { ...message });
         | 
| 2246 2288 | 
             
                } catch (e) {
         | 
| 2247 | 
            -
                  message.status = "error";
         | 
| 2289 | 
            +
                  message.status = { type: "error", error: e };
         | 
| 2248 2290 | 
             
                  this.repository.addOrUpdateMessage(parentId, { ...message });
         | 
| 2249 2291 | 
             
                  console.error(e);
         | 
| 2250 2292 | 
             
                } finally {
         | 
| @@ -2265,12 +2307,30 @@ var LocalThreadRuntime = class { | |
| 2265 2307 | 
             
                this._subscriptions.add(callback);
         | 
| 2266 2308 | 
             
                return () => this._subscriptions.delete(callback);
         | 
| 2267 2309 | 
             
              }
         | 
| 2268 | 
            -
              addToolResult() {
         | 
| 2269 | 
            -
                 | 
| 2310 | 
            +
              addToolResult({ messageId, toolCallId, result }) {
         | 
| 2311 | 
            +
                const { parentId, message } = this.repository.getMessage(messageId);
         | 
| 2312 | 
            +
                if (message.role !== "assistant")
         | 
| 2313 | 
            +
                  throw new Error("Tried to add tool re^sult to non-assistant message");
         | 
| 2314 | 
            +
                let found = false;
         | 
| 2315 | 
            +
                const newContent = message.content.map((c) => {
         | 
| 2316 | 
            +
                  if (c.type !== "tool-call") return c;
         | 
| 2317 | 
            +
                  if (c.toolCallId !== toolCallId) return c;
         | 
| 2318 | 
            +
                  found = true;
         | 
| 2319 | 
            +
                  return {
         | 
| 2320 | 
            +
                    ...c,
         | 
| 2321 | 
            +
                    result
         | 
| 2322 | 
            +
                  };
         | 
| 2323 | 
            +
                });
         | 
| 2324 | 
            +
                if (!found)
         | 
| 2325 | 
            +
                  throw new Error("Tried to add tool result to non-existing tool call");
         | 
| 2326 | 
            +
                this.repository.addOrUpdateMessage(parentId, {
         | 
| 2327 | 
            +
                  ...message,
         | 
| 2328 | 
            +
                  content: newContent
         | 
| 2329 | 
            +
                });
         | 
| 2270 2330 | 
             
              }
         | 
| 2271 2331 | 
             
            };
         | 
| 2272 2332 |  | 
| 2273 | 
            -
            // src/ | 
| 2333 | 
            +
            // src/runtimes/local/useLocalRuntime.tsx
         | 
| 2274 2334 | 
             
            var useLocalRuntime = (adapter) => {
         | 
| 2275 2335 | 
             
              const [runtime] = (0, import_react50.useState)(() => new LocalRuntime(adapter));
         | 
| 2276 2336 | 
             
              (0, import_react50.useInsertionEffect)(() => {
         | 
| @@ -2279,25 +2339,1494 @@ var useLocalRuntime = (adapter) => { | |
| 2279 2339 | 
             
              return runtime;
         | 
| 2280 2340 | 
             
            };
         | 
| 2281 2341 |  | 
| 2342 | 
            +
            // src/runtimes/edge/streams/assistantDecoderStream.ts
         | 
| 2343 | 
            +
            function assistantDecoderStream() {
         | 
| 2344 | 
            +
              let currentToolCall;
         | 
| 2345 | 
            +
              return new TransformStream({
         | 
| 2346 | 
            +
                transform(chunk, controller) {
         | 
| 2347 | 
            +
                  const [code, valueJson] = chunk.split(":");
         | 
| 2348 | 
            +
                  const value = JSON.parse(valueJson);
         | 
| 2349 | 
            +
                  if (currentToolCall && code !== "2" /* ToolCallArgsTextDelta */ && code !== "E" /* Error */) {
         | 
| 2350 | 
            +
                    controller.enqueue({
         | 
| 2351 | 
            +
                      type: "tool-call",
         | 
| 2352 | 
            +
                      toolCallType: "function",
         | 
| 2353 | 
            +
                      toolCallId: currentToolCall.id,
         | 
| 2354 | 
            +
                      toolName: currentToolCall.name,
         | 
| 2355 | 
            +
                      args: JSON.parse(currentToolCall.argsText)
         | 
| 2356 | 
            +
                    });
         | 
| 2357 | 
            +
                    currentToolCall = void 0;
         | 
| 2358 | 
            +
                  }
         | 
| 2359 | 
            +
                  switch (code) {
         | 
| 2360 | 
            +
                    case "0" /* TextDelta */: {
         | 
| 2361 | 
            +
                      controller.enqueue({
         | 
| 2362 | 
            +
                        type: "text-delta",
         | 
| 2363 | 
            +
                        textDelta: value
         | 
| 2364 | 
            +
                      });
         | 
| 2365 | 
            +
                      break;
         | 
| 2366 | 
            +
                    }
         | 
| 2367 | 
            +
                    case "1" /* ToolCallBegin */: {
         | 
| 2368 | 
            +
                      const { id, name } = JSON.parse(value);
         | 
| 2369 | 
            +
                      currentToolCall = { id, name, argsText: "" };
         | 
| 2370 | 
            +
                      break;
         | 
| 2371 | 
            +
                    }
         | 
| 2372 | 
            +
                    case "2" /* ToolCallArgsTextDelta */: {
         | 
| 2373 | 
            +
                      const delta = JSON.parse(value);
         | 
| 2374 | 
            +
                      currentToolCall.argsText += delta;
         | 
| 2375 | 
            +
                      controller.enqueue({
         | 
| 2376 | 
            +
                        type: "tool-call-delta",
         | 
| 2377 | 
            +
                        toolCallType: "function",
         | 
| 2378 | 
            +
                        toolCallId: currentToolCall.id,
         | 
| 2379 | 
            +
                        toolName: currentToolCall.name,
         | 
| 2380 | 
            +
                        argsTextDelta: delta
         | 
| 2381 | 
            +
                      });
         | 
| 2382 | 
            +
                      break;
         | 
| 2383 | 
            +
                    }
         | 
| 2384 | 
            +
                    case "F" /* Finish */: {
         | 
| 2385 | 
            +
                      controller.enqueue({
         | 
| 2386 | 
            +
                        type: "finish",
         | 
| 2387 | 
            +
                        ...JSON.parse(value)
         | 
| 2388 | 
            +
                      });
         | 
| 2389 | 
            +
                      break;
         | 
| 2390 | 
            +
                    }
         | 
| 2391 | 
            +
                    case "E" /* Error */: {
         | 
| 2392 | 
            +
                      controller.enqueue({
         | 
| 2393 | 
            +
                        type: "error",
         | 
| 2394 | 
            +
                        error: JSON.parse(value)
         | 
| 2395 | 
            +
                      });
         | 
| 2396 | 
            +
                      break;
         | 
| 2397 | 
            +
                    }
         | 
| 2398 | 
            +
                    default: {
         | 
| 2399 | 
            +
                      const unhandledType = code;
         | 
| 2400 | 
            +
                      throw new Error(`Unhandled chunk type: ${unhandledType}`);
         | 
| 2401 | 
            +
                    }
         | 
| 2402 | 
            +
                  }
         | 
| 2403 | 
            +
                }
         | 
| 2404 | 
            +
              });
         | 
| 2405 | 
            +
            }
         | 
| 2406 | 
            +
             | 
| 2407 | 
            +
            // src/runtimes/edge/streams/chunkByLineStream.ts
         | 
| 2408 | 
            +
            function chunkByLineStream() {
         | 
| 2409 | 
            +
              let buffer = "";
         | 
| 2410 | 
            +
              return new TransformStream({
         | 
| 2411 | 
            +
                transform(chunk, controller) {
         | 
| 2412 | 
            +
                  buffer += chunk;
         | 
| 2413 | 
            +
                  const lines = buffer.split("\n");
         | 
| 2414 | 
            +
                  for (let i = 0; i < lines.length - 1; i++) {
         | 
| 2415 | 
            +
                    controller.enqueue(lines[i]);
         | 
| 2416 | 
            +
                  }
         | 
| 2417 | 
            +
                  buffer = lines[lines.length - 1];
         | 
| 2418 | 
            +
                },
         | 
| 2419 | 
            +
                flush(controller) {
         | 
| 2420 | 
            +
                  if (buffer) {
         | 
| 2421 | 
            +
                    controller.enqueue(buffer);
         | 
| 2422 | 
            +
                  }
         | 
| 2423 | 
            +
                }
         | 
| 2424 | 
            +
              });
         | 
| 2425 | 
            +
            }
         | 
| 2426 | 
            +
             | 
| 2427 | 
            +
            // src/runtimes/edge/partial-json/parse-partial-json.ts
         | 
| 2428 | 
            +
            var import_secure_json_parse = __toESM(require("secure-json-parse"));
         | 
| 2429 | 
            +
             | 
| 2430 | 
            +
            // src/runtimes/edge/partial-json/fix-json.ts
         | 
| 2431 | 
            +
            function fixJson(input) {
         | 
| 2432 | 
            +
              const stack = ["ROOT"];
         | 
| 2433 | 
            +
              let lastValidIndex = -1;
         | 
| 2434 | 
            +
              let literalStart = null;
         | 
| 2435 | 
            +
              function processValueStart(char, i, swapState) {
         | 
| 2436 | 
            +
                {
         | 
| 2437 | 
            +
                  switch (char) {
         | 
| 2438 | 
            +
                    case '"': {
         | 
| 2439 | 
            +
                      lastValidIndex = i;
         | 
| 2440 | 
            +
                      stack.pop();
         | 
| 2441 | 
            +
                      stack.push(swapState);
         | 
| 2442 | 
            +
                      stack.push("INSIDE_STRING");
         | 
| 2443 | 
            +
                      break;
         | 
| 2444 | 
            +
                    }
         | 
| 2445 | 
            +
                    case "f":
         | 
| 2446 | 
            +
                    case "t":
         | 
| 2447 | 
            +
                    case "n": {
         | 
| 2448 | 
            +
                      lastValidIndex = i;
         | 
| 2449 | 
            +
                      literalStart = i;
         | 
| 2450 | 
            +
                      stack.pop();
         | 
| 2451 | 
            +
                      stack.push(swapState);
         | 
| 2452 | 
            +
                      stack.push("INSIDE_LITERAL");
         | 
| 2453 | 
            +
                      break;
         | 
| 2454 | 
            +
                    }
         | 
| 2455 | 
            +
                    case "-": {
         | 
| 2456 | 
            +
                      stack.pop();
         | 
| 2457 | 
            +
                      stack.push(swapState);
         | 
| 2458 | 
            +
                      stack.push("INSIDE_NUMBER");
         | 
| 2459 | 
            +
                      break;
         | 
| 2460 | 
            +
                    }
         | 
| 2461 | 
            +
                    case "0":
         | 
| 2462 | 
            +
                    case "1":
         | 
| 2463 | 
            +
                    case "2":
         | 
| 2464 | 
            +
                    case "3":
         | 
| 2465 | 
            +
                    case "4":
         | 
| 2466 | 
            +
                    case "5":
         | 
| 2467 | 
            +
                    case "6":
         | 
| 2468 | 
            +
                    case "7":
         | 
| 2469 | 
            +
                    case "8":
         | 
| 2470 | 
            +
                    case "9": {
         | 
| 2471 | 
            +
                      lastValidIndex = i;
         | 
| 2472 | 
            +
                      stack.pop();
         | 
| 2473 | 
            +
                      stack.push(swapState);
         | 
| 2474 | 
            +
                      stack.push("INSIDE_NUMBER");
         | 
| 2475 | 
            +
                      break;
         | 
| 2476 | 
            +
                    }
         | 
| 2477 | 
            +
                    case "{": {
         | 
| 2478 | 
            +
                      lastValidIndex = i;
         | 
| 2479 | 
            +
                      stack.pop();
         | 
| 2480 | 
            +
                      stack.push(swapState);
         | 
| 2481 | 
            +
                      stack.push("INSIDE_OBJECT_START");
         | 
| 2482 | 
            +
                      break;
         | 
| 2483 | 
            +
                    }
         | 
| 2484 | 
            +
                    case "[": {
         | 
| 2485 | 
            +
                      lastValidIndex = i;
         | 
| 2486 | 
            +
                      stack.pop();
         | 
| 2487 | 
            +
                      stack.push(swapState);
         | 
| 2488 | 
            +
                      stack.push("INSIDE_ARRAY_START");
         | 
| 2489 | 
            +
                      break;
         | 
| 2490 | 
            +
                    }
         | 
| 2491 | 
            +
                  }
         | 
| 2492 | 
            +
                }
         | 
| 2493 | 
            +
              }
         | 
| 2494 | 
            +
              function processAfterObjectValue(char, i) {
         | 
| 2495 | 
            +
                switch (char) {
         | 
| 2496 | 
            +
                  case ",": {
         | 
| 2497 | 
            +
                    stack.pop();
         | 
| 2498 | 
            +
                    stack.push("INSIDE_OBJECT_AFTER_COMMA");
         | 
| 2499 | 
            +
                    break;
         | 
| 2500 | 
            +
                  }
         | 
| 2501 | 
            +
                  case "}": {
         | 
| 2502 | 
            +
                    lastValidIndex = i;
         | 
| 2503 | 
            +
                    stack.pop();
         | 
| 2504 | 
            +
                    break;
         | 
| 2505 | 
            +
                  }
         | 
| 2506 | 
            +
                }
         | 
| 2507 | 
            +
              }
         | 
| 2508 | 
            +
              function processAfterArrayValue(char, i) {
         | 
| 2509 | 
            +
                switch (char) {
         | 
| 2510 | 
            +
                  case ",": {
         | 
| 2511 | 
            +
                    stack.pop();
         | 
| 2512 | 
            +
                    stack.push("INSIDE_ARRAY_AFTER_COMMA");
         | 
| 2513 | 
            +
                    break;
         | 
| 2514 | 
            +
                  }
         | 
| 2515 | 
            +
                  case "]": {
         | 
| 2516 | 
            +
                    lastValidIndex = i;
         | 
| 2517 | 
            +
                    stack.pop();
         | 
| 2518 | 
            +
                    break;
         | 
| 2519 | 
            +
                  }
         | 
| 2520 | 
            +
                }
         | 
| 2521 | 
            +
              }
         | 
| 2522 | 
            +
              for (let i = 0; i < input.length; i++) {
         | 
| 2523 | 
            +
                const char = input[i];
         | 
| 2524 | 
            +
                const currentState = stack[stack.length - 1];
         | 
| 2525 | 
            +
                switch (currentState) {
         | 
| 2526 | 
            +
                  case "ROOT":
         | 
| 2527 | 
            +
                    processValueStart(char, i, "FINISH");
         | 
| 2528 | 
            +
                    break;
         | 
| 2529 | 
            +
                  case "INSIDE_OBJECT_START": {
         | 
| 2530 | 
            +
                    switch (char) {
         | 
| 2531 | 
            +
                      case '"': {
         | 
| 2532 | 
            +
                        stack.pop();
         | 
| 2533 | 
            +
                        stack.push("INSIDE_OBJECT_KEY");
         | 
| 2534 | 
            +
                        break;
         | 
| 2535 | 
            +
                      }
         | 
| 2536 | 
            +
                      case "}": {
         | 
| 2537 | 
            +
                        lastValidIndex = i;
         | 
| 2538 | 
            +
                        stack.pop();
         | 
| 2539 | 
            +
                        break;
         | 
| 2540 | 
            +
                      }
         | 
| 2541 | 
            +
                    }
         | 
| 2542 | 
            +
                    break;
         | 
| 2543 | 
            +
                  }
         | 
| 2544 | 
            +
                  case "INSIDE_OBJECT_AFTER_COMMA": {
         | 
| 2545 | 
            +
                    switch (char) {
         | 
| 2546 | 
            +
                      case '"': {
         | 
| 2547 | 
            +
                        stack.pop();
         | 
| 2548 | 
            +
                        stack.push("INSIDE_OBJECT_KEY");
         | 
| 2549 | 
            +
                        break;
         | 
| 2550 | 
            +
                      }
         | 
| 2551 | 
            +
                    }
         | 
| 2552 | 
            +
                    break;
         | 
| 2553 | 
            +
                  }
         | 
| 2554 | 
            +
                  case "INSIDE_OBJECT_KEY": {
         | 
| 2555 | 
            +
                    switch (char) {
         | 
| 2556 | 
            +
                      case '"': {
         | 
| 2557 | 
            +
                        stack.pop();
         | 
| 2558 | 
            +
                        stack.push("INSIDE_OBJECT_AFTER_KEY");
         | 
| 2559 | 
            +
                        break;
         | 
| 2560 | 
            +
                      }
         | 
| 2561 | 
            +
                    }
         | 
| 2562 | 
            +
                    break;
         | 
| 2563 | 
            +
                  }
         | 
| 2564 | 
            +
                  case "INSIDE_OBJECT_AFTER_KEY": {
         | 
| 2565 | 
            +
                    switch (char) {
         | 
| 2566 | 
            +
                      case ":": {
         | 
| 2567 | 
            +
                        stack.pop();
         | 
| 2568 | 
            +
                        stack.push("INSIDE_OBJECT_BEFORE_VALUE");
         | 
| 2569 | 
            +
                        break;
         | 
| 2570 | 
            +
                      }
         | 
| 2571 | 
            +
                    }
         | 
| 2572 | 
            +
                    break;
         | 
| 2573 | 
            +
                  }
         | 
| 2574 | 
            +
                  case "INSIDE_OBJECT_BEFORE_VALUE": {
         | 
| 2575 | 
            +
                    processValueStart(char, i, "INSIDE_OBJECT_AFTER_VALUE");
         | 
| 2576 | 
            +
                    break;
         | 
| 2577 | 
            +
                  }
         | 
| 2578 | 
            +
                  case "INSIDE_OBJECT_AFTER_VALUE": {
         | 
| 2579 | 
            +
                    processAfterObjectValue(char, i);
         | 
| 2580 | 
            +
                    break;
         | 
| 2581 | 
            +
                  }
         | 
| 2582 | 
            +
                  case "INSIDE_STRING": {
         | 
| 2583 | 
            +
                    switch (char) {
         | 
| 2584 | 
            +
                      case '"': {
         | 
| 2585 | 
            +
                        stack.pop();
         | 
| 2586 | 
            +
                        lastValidIndex = i;
         | 
| 2587 | 
            +
                        break;
         | 
| 2588 | 
            +
                      }
         | 
| 2589 | 
            +
                      case "\\": {
         | 
| 2590 | 
            +
                        stack.push("INSIDE_STRING_ESCAPE");
         | 
| 2591 | 
            +
                        break;
         | 
| 2592 | 
            +
                      }
         | 
| 2593 | 
            +
                      default: {
         | 
| 2594 | 
            +
                        lastValidIndex = i;
         | 
| 2595 | 
            +
                      }
         | 
| 2596 | 
            +
                    }
         | 
| 2597 | 
            +
                    break;
         | 
| 2598 | 
            +
                  }
         | 
| 2599 | 
            +
                  case "INSIDE_ARRAY_START": {
         | 
| 2600 | 
            +
                    switch (char) {
         | 
| 2601 | 
            +
                      case "]": {
         | 
| 2602 | 
            +
                        lastValidIndex = i;
         | 
| 2603 | 
            +
                        stack.pop();
         | 
| 2604 | 
            +
                        break;
         | 
| 2605 | 
            +
                      }
         | 
| 2606 | 
            +
                      default: {
         | 
| 2607 | 
            +
                        lastValidIndex = i;
         | 
| 2608 | 
            +
                        processValueStart(char, i, "INSIDE_ARRAY_AFTER_VALUE");
         | 
| 2609 | 
            +
                        break;
         | 
| 2610 | 
            +
                      }
         | 
| 2611 | 
            +
                    }
         | 
| 2612 | 
            +
                    break;
         | 
| 2613 | 
            +
                  }
         | 
| 2614 | 
            +
                  case "INSIDE_ARRAY_AFTER_VALUE": {
         | 
| 2615 | 
            +
                    switch (char) {
         | 
| 2616 | 
            +
                      case ",": {
         | 
| 2617 | 
            +
                        stack.pop();
         | 
| 2618 | 
            +
                        stack.push("INSIDE_ARRAY_AFTER_COMMA");
         | 
| 2619 | 
            +
                        break;
         | 
| 2620 | 
            +
                      }
         | 
| 2621 | 
            +
                      case "]": {
         | 
| 2622 | 
            +
                        lastValidIndex = i;
         | 
| 2623 | 
            +
                        stack.pop();
         | 
| 2624 | 
            +
                        break;
         | 
| 2625 | 
            +
                      }
         | 
| 2626 | 
            +
                      default: {
         | 
| 2627 | 
            +
                        lastValidIndex = i;
         | 
| 2628 | 
            +
                        break;
         | 
| 2629 | 
            +
                      }
         | 
| 2630 | 
            +
                    }
         | 
| 2631 | 
            +
                    break;
         | 
| 2632 | 
            +
                  }
         | 
| 2633 | 
            +
                  case "INSIDE_ARRAY_AFTER_COMMA": {
         | 
| 2634 | 
            +
                    processValueStart(char, i, "INSIDE_ARRAY_AFTER_VALUE");
         | 
| 2635 | 
            +
                    break;
         | 
| 2636 | 
            +
                  }
         | 
| 2637 | 
            +
                  case "INSIDE_STRING_ESCAPE": {
         | 
| 2638 | 
            +
                    stack.pop();
         | 
| 2639 | 
            +
                    lastValidIndex = i;
         | 
| 2640 | 
            +
                    break;
         | 
| 2641 | 
            +
                  }
         | 
| 2642 | 
            +
                  case "INSIDE_NUMBER": {
         | 
| 2643 | 
            +
                    switch (char) {
         | 
| 2644 | 
            +
                      case "0":
         | 
| 2645 | 
            +
                      case "1":
         | 
| 2646 | 
            +
                      case "2":
         | 
| 2647 | 
            +
                      case "3":
         | 
| 2648 | 
            +
                      case "4":
         | 
| 2649 | 
            +
                      case "5":
         | 
| 2650 | 
            +
                      case "6":
         | 
| 2651 | 
            +
                      case "7":
         | 
| 2652 | 
            +
                      case "8":
         | 
| 2653 | 
            +
                      case "9": {
         | 
| 2654 | 
            +
                        lastValidIndex = i;
         | 
| 2655 | 
            +
                        break;
         | 
| 2656 | 
            +
                      }
         | 
| 2657 | 
            +
                      case "e":
         | 
| 2658 | 
            +
                      case "E":
         | 
| 2659 | 
            +
                      case "-":
         | 
| 2660 | 
            +
                      case ".": {
         | 
| 2661 | 
            +
                        break;
         | 
| 2662 | 
            +
                      }
         | 
| 2663 | 
            +
                      case ",": {
         | 
| 2664 | 
            +
                        stack.pop();
         | 
| 2665 | 
            +
                        if (stack[stack.length - 1] === "INSIDE_ARRAY_AFTER_VALUE") {
         | 
| 2666 | 
            +
                          processAfterArrayValue(char, i);
         | 
| 2667 | 
            +
                        }
         | 
| 2668 | 
            +
                        if (stack[stack.length - 1] === "INSIDE_OBJECT_AFTER_VALUE") {
         | 
| 2669 | 
            +
                          processAfterObjectValue(char, i);
         | 
| 2670 | 
            +
                        }
         | 
| 2671 | 
            +
                        break;
         | 
| 2672 | 
            +
                      }
         | 
| 2673 | 
            +
                      case "}": {
         | 
| 2674 | 
            +
                        stack.pop();
         | 
| 2675 | 
            +
                        if (stack[stack.length - 1] === "INSIDE_OBJECT_AFTER_VALUE") {
         | 
| 2676 | 
            +
                          processAfterObjectValue(char, i);
         | 
| 2677 | 
            +
                        }
         | 
| 2678 | 
            +
                        break;
         | 
| 2679 | 
            +
                      }
         | 
| 2680 | 
            +
                      case "]": {
         | 
| 2681 | 
            +
                        stack.pop();
         | 
| 2682 | 
            +
                        if (stack[stack.length - 1] === "INSIDE_ARRAY_AFTER_VALUE") {
         | 
| 2683 | 
            +
                          processAfterArrayValue(char, i);
         | 
| 2684 | 
            +
                        }
         | 
| 2685 | 
            +
                        break;
         | 
| 2686 | 
            +
                      }
         | 
| 2687 | 
            +
                      default: {
         | 
| 2688 | 
            +
                        stack.pop();
         | 
| 2689 | 
            +
                        break;
         | 
| 2690 | 
            +
                      }
         | 
| 2691 | 
            +
                    }
         | 
| 2692 | 
            +
                    break;
         | 
| 2693 | 
            +
                  }
         | 
| 2694 | 
            +
                  case "INSIDE_LITERAL": {
         | 
| 2695 | 
            +
                    const partialLiteral = input.substring(literalStart, i + 1);
         | 
| 2696 | 
            +
                    if (!"false".startsWith(partialLiteral) && !"true".startsWith(partialLiteral) && !"null".startsWith(partialLiteral)) {
         | 
| 2697 | 
            +
                      stack.pop();
         | 
| 2698 | 
            +
                      if (stack[stack.length - 1] === "INSIDE_OBJECT_AFTER_VALUE") {
         | 
| 2699 | 
            +
                        processAfterObjectValue(char, i);
         | 
| 2700 | 
            +
                      } else if (stack[stack.length - 1] === "INSIDE_ARRAY_AFTER_VALUE") {
         | 
| 2701 | 
            +
                        processAfterArrayValue(char, i);
         | 
| 2702 | 
            +
                      }
         | 
| 2703 | 
            +
                    } else {
         | 
| 2704 | 
            +
                      lastValidIndex = i;
         | 
| 2705 | 
            +
                    }
         | 
| 2706 | 
            +
                    break;
         | 
| 2707 | 
            +
                  }
         | 
| 2708 | 
            +
                }
         | 
| 2709 | 
            +
              }
         | 
| 2710 | 
            +
              let result = input.slice(0, lastValidIndex + 1);
         | 
| 2711 | 
            +
              for (let i = stack.length - 1; i >= 0; i--) {
         | 
| 2712 | 
            +
                const state = stack[i];
         | 
| 2713 | 
            +
                switch (state) {
         | 
| 2714 | 
            +
                  case "INSIDE_STRING": {
         | 
| 2715 | 
            +
                    result += '"';
         | 
| 2716 | 
            +
                    break;
         | 
| 2717 | 
            +
                  }
         | 
| 2718 | 
            +
                  case "INSIDE_OBJECT_KEY":
         | 
| 2719 | 
            +
                  case "INSIDE_OBJECT_AFTER_KEY":
         | 
| 2720 | 
            +
                  case "INSIDE_OBJECT_AFTER_COMMA":
         | 
| 2721 | 
            +
                  case "INSIDE_OBJECT_START":
         | 
| 2722 | 
            +
                  case "INSIDE_OBJECT_BEFORE_VALUE":
         | 
| 2723 | 
            +
                  case "INSIDE_OBJECT_AFTER_VALUE": {
         | 
| 2724 | 
            +
                    result += "}";
         | 
| 2725 | 
            +
                    break;
         | 
| 2726 | 
            +
                  }
         | 
| 2727 | 
            +
                  case "INSIDE_ARRAY_START":
         | 
| 2728 | 
            +
                  case "INSIDE_ARRAY_AFTER_COMMA":
         | 
| 2729 | 
            +
                  case "INSIDE_ARRAY_AFTER_VALUE": {
         | 
| 2730 | 
            +
                    result += "]";
         | 
| 2731 | 
            +
                    break;
         | 
| 2732 | 
            +
                  }
         | 
| 2733 | 
            +
                  case "INSIDE_LITERAL": {
         | 
| 2734 | 
            +
                    const partialLiteral = input.substring(literalStart, input.length);
         | 
| 2735 | 
            +
                    if ("true".startsWith(partialLiteral)) {
         | 
| 2736 | 
            +
                      result += "true".slice(partialLiteral.length);
         | 
| 2737 | 
            +
                    } else if ("false".startsWith(partialLiteral)) {
         | 
| 2738 | 
            +
                      result += "false".slice(partialLiteral.length);
         | 
| 2739 | 
            +
                    } else if ("null".startsWith(partialLiteral)) {
         | 
| 2740 | 
            +
                      result += "null".slice(partialLiteral.length);
         | 
| 2741 | 
            +
                    }
         | 
| 2742 | 
            +
                  }
         | 
| 2743 | 
            +
                }
         | 
| 2744 | 
            +
              }
         | 
| 2745 | 
            +
              return result;
         | 
| 2746 | 
            +
            }
         | 
| 2747 | 
            +
             | 
| 2748 | 
            +
            // src/runtimes/edge/partial-json/parse-partial-json.ts
         | 
| 2749 | 
            +
            var parsePartialJson = (json) => {
         | 
| 2750 | 
            +
              try {
         | 
| 2751 | 
            +
                return import_secure_json_parse.default.parse(json);
         | 
| 2752 | 
            +
              } catch {
         | 
| 2753 | 
            +
                try {
         | 
| 2754 | 
            +
                  return import_secure_json_parse.default.parse(fixJson(json));
         | 
| 2755 | 
            +
                } catch {
         | 
| 2756 | 
            +
                  return void 0;
         | 
| 2757 | 
            +
                }
         | 
| 2758 | 
            +
              }
         | 
| 2759 | 
            +
            };
         | 
| 2760 | 
            +
             | 
| 2761 | 
            +
            // src/runtimes/edge/streams/runResultStream.ts
         | 
| 2762 | 
            +
            function runResultStream() {
         | 
| 2763 | 
            +
              let message = {
         | 
| 2764 | 
            +
                content: []
         | 
| 2765 | 
            +
              };
         | 
| 2766 | 
            +
              const currentToolCall = { toolCallId: "", argsText: "" };
         | 
| 2767 | 
            +
              return new TransformStream({
         | 
| 2768 | 
            +
                transform(chunk, controller) {
         | 
| 2769 | 
            +
                  const chunkType = chunk.type;
         | 
| 2770 | 
            +
                  switch (chunkType) {
         | 
| 2771 | 
            +
                    case "text-delta": {
         | 
| 2772 | 
            +
                      message = appendOrUpdateText(message, chunk.textDelta);
         | 
| 2773 | 
            +
                      controller.enqueue(message);
         | 
| 2774 | 
            +
                      break;
         | 
| 2775 | 
            +
                    }
         | 
| 2776 | 
            +
                    case "tool-call-delta": {
         | 
| 2777 | 
            +
                      const { toolCallId, toolName, argsTextDelta } = chunk;
         | 
| 2778 | 
            +
                      if (currentToolCall.toolCallId !== toolCallId) {
         | 
| 2779 | 
            +
                        currentToolCall.toolCallId = toolCallId;
         | 
| 2780 | 
            +
                        currentToolCall.argsText = argsTextDelta;
         | 
| 2781 | 
            +
                      } else {
         | 
| 2782 | 
            +
                        currentToolCall.argsText += argsTextDelta;
         | 
| 2783 | 
            +
                      }
         | 
| 2784 | 
            +
                      message = appendOrUpdateToolCall(
         | 
| 2785 | 
            +
                        message,
         | 
| 2786 | 
            +
                        toolCallId,
         | 
| 2787 | 
            +
                        toolName,
         | 
| 2788 | 
            +
                        parsePartialJson(currentToolCall.argsText)
         | 
| 2789 | 
            +
                      );
         | 
| 2790 | 
            +
                      controller.enqueue(message);
         | 
| 2791 | 
            +
                      break;
         | 
| 2792 | 
            +
                    }
         | 
| 2793 | 
            +
                    case "tool-call": {
         | 
| 2794 | 
            +
                      break;
         | 
| 2795 | 
            +
                    }
         | 
| 2796 | 
            +
                    case "tool-result": {
         | 
| 2797 | 
            +
                      message = appendOrUpdateToolResult(
         | 
| 2798 | 
            +
                        message,
         | 
| 2799 | 
            +
                        chunk.toolCallId,
         | 
| 2800 | 
            +
                        chunk.toolName,
         | 
| 2801 | 
            +
                        chunk.result
         | 
| 2802 | 
            +
                      );
         | 
| 2803 | 
            +
                      controller.enqueue(message);
         | 
| 2804 | 
            +
                      break;
         | 
| 2805 | 
            +
                    }
         | 
| 2806 | 
            +
                    case "finish": {
         | 
| 2807 | 
            +
                      message = appendOrUpdateFinish(message, chunk);
         | 
| 2808 | 
            +
                      controller.enqueue(message);
         | 
| 2809 | 
            +
                      break;
         | 
| 2810 | 
            +
                    }
         | 
| 2811 | 
            +
                    case "error": {
         | 
| 2812 | 
            +
                      throw chunk.error;
         | 
| 2813 | 
            +
                    }
         | 
| 2814 | 
            +
                    default: {
         | 
| 2815 | 
            +
                      const unhandledType = chunkType;
         | 
| 2816 | 
            +
                      throw new Error(`Unhandled chunk type: ${unhandledType}`);
         | 
| 2817 | 
            +
                    }
         | 
| 2818 | 
            +
                  }
         | 
| 2819 | 
            +
                }
         | 
| 2820 | 
            +
              });
         | 
| 2821 | 
            +
            }
         | 
| 2822 | 
            +
            var appendOrUpdateText = (message, textDelta) => {
         | 
| 2823 | 
            +
              let contentParts = message.content;
         | 
| 2824 | 
            +
              let contentPart = message.content.at(-1);
         | 
| 2825 | 
            +
              if (contentPart?.type !== "text") {
         | 
| 2826 | 
            +
                contentPart = { type: "text", text: textDelta };
         | 
| 2827 | 
            +
              } else {
         | 
| 2828 | 
            +
                contentParts = contentParts.slice(0, -1);
         | 
| 2829 | 
            +
                contentPart = { type: "text", text: contentPart.text + textDelta };
         | 
| 2830 | 
            +
              }
         | 
| 2831 | 
            +
              return {
         | 
| 2832 | 
            +
                ...message,
         | 
| 2833 | 
            +
                content: contentParts.concat([contentPart])
         | 
| 2834 | 
            +
              };
         | 
| 2835 | 
            +
            };
         | 
| 2836 | 
            +
            var appendOrUpdateToolCall = (message, toolCallId, toolName, args) => {
         | 
| 2837 | 
            +
              let contentParts = message.content;
         | 
| 2838 | 
            +
              let contentPart = message.content.at(-1);
         | 
| 2839 | 
            +
              if (contentPart?.type !== "tool-call" || contentPart.toolCallId !== toolCallId) {
         | 
| 2840 | 
            +
                contentPart = {
         | 
| 2841 | 
            +
                  type: "tool-call",
         | 
| 2842 | 
            +
                  toolCallId,
         | 
| 2843 | 
            +
                  toolName,
         | 
| 2844 | 
            +
                  args
         | 
| 2845 | 
            +
                };
         | 
| 2846 | 
            +
              } else {
         | 
| 2847 | 
            +
                contentParts = contentParts.slice(0, -1);
         | 
| 2848 | 
            +
                contentPart = {
         | 
| 2849 | 
            +
                  ...contentPart,
         | 
| 2850 | 
            +
                  args
         | 
| 2851 | 
            +
                };
         | 
| 2852 | 
            +
              }
         | 
| 2853 | 
            +
              return {
         | 
| 2854 | 
            +
                ...message,
         | 
| 2855 | 
            +
                content: contentParts.concat([contentPart])
         | 
| 2856 | 
            +
              };
         | 
| 2857 | 
            +
            };
         | 
| 2858 | 
            +
            var appendOrUpdateToolResult = (message, toolCallId, toolName, result) => {
         | 
| 2859 | 
            +
              let found = false;
         | 
| 2860 | 
            +
              const newContentParts = message.content.map((part) => {
         | 
| 2861 | 
            +
                if (part.type !== "tool-call" || part.toolCallId !== toolCallId)
         | 
| 2862 | 
            +
                  return part;
         | 
| 2863 | 
            +
                found = true;
         | 
| 2864 | 
            +
                if (part.toolName !== toolName)
         | 
| 2865 | 
            +
                  throw new Error(
         | 
| 2866 | 
            +
                    `Tool call ${toolCallId} found with tool name ${part.toolName}, but expected ${toolName}`
         | 
| 2867 | 
            +
                  );
         | 
| 2868 | 
            +
                return {
         | 
| 2869 | 
            +
                  ...part,
         | 
| 2870 | 
            +
                  result
         | 
| 2871 | 
            +
                };
         | 
| 2872 | 
            +
              });
         | 
| 2873 | 
            +
              if (!found)
         | 
| 2874 | 
            +
                throw new Error(
         | 
| 2875 | 
            +
                  `Received tool result for unknown tool call "${toolName}" / "${toolCallId}". This is likely an internal bug in assistant-ui.`
         | 
| 2876 | 
            +
                );
         | 
| 2877 | 
            +
              return {
         | 
| 2878 | 
            +
                ...message,
         | 
| 2879 | 
            +
                content: newContentParts
         | 
| 2880 | 
            +
              };
         | 
| 2881 | 
            +
            };
         | 
| 2882 | 
            +
            var appendOrUpdateFinish = (message, chunk) => {
         | 
| 2883 | 
            +
              const { type, ...rest } = chunk;
         | 
| 2884 | 
            +
              return {
         | 
| 2885 | 
            +
                ...message,
         | 
| 2886 | 
            +
                status: {
         | 
| 2887 | 
            +
                  type: "done",
         | 
| 2888 | 
            +
                  ...rest
         | 
| 2889 | 
            +
                }
         | 
| 2890 | 
            +
              };
         | 
| 2891 | 
            +
            };
         | 
| 2892 | 
            +
             | 
| 2893 | 
            +
            // src/runtimes/edge/useEdgeRuntime.ts
         | 
| 2894 | 
            +
            var import_react51 = require("react");
         | 
| 2895 | 
            +
             | 
| 2896 | 
            +
            // src/runtimes/edge/streams/toolResultStream.ts
         | 
| 2897 | 
            +
            var import_zod = require("zod");
         | 
| 2898 | 
            +
            var import_secure_json_parse2 = __toESM(require("secure-json-parse"));
         | 
| 2899 | 
            +
            function toolResultStream(tools) {
         | 
| 2900 | 
            +
              const toolCallExecutions = /* @__PURE__ */ new Map();
         | 
| 2901 | 
            +
              return new TransformStream({
         | 
| 2902 | 
            +
                transform(chunk, controller) {
         | 
| 2903 | 
            +
                  controller.enqueue(chunk);
         | 
| 2904 | 
            +
                  const chunkType = chunk.type;
         | 
| 2905 | 
            +
                  switch (chunkType) {
         | 
| 2906 | 
            +
                    case "tool-call": {
         | 
| 2907 | 
            +
                      const { toolCallId, toolCallType, toolName, args: argsText } = chunk;
         | 
| 2908 | 
            +
                      const tool = tools?.[toolName];
         | 
| 2909 | 
            +
                      if (!tool) return;
         | 
| 2910 | 
            +
                      const args = import_secure_json_parse2.default.parse(argsText);
         | 
| 2911 | 
            +
                      if (tool.parameters instanceof import_zod.z.ZodType) {
         | 
| 2912 | 
            +
                        const result = tool.parameters.safeParse(args);
         | 
| 2913 | 
            +
                        if (!result.success) {
         | 
| 2914 | 
            +
                          controller.enqueue({
         | 
| 2915 | 
            +
                            type: "error",
         | 
| 2916 | 
            +
                            error: new Error("Invalid tool call arguments")
         | 
| 2917 | 
            +
                          });
         | 
| 2918 | 
            +
                          return;
         | 
| 2919 | 
            +
                        } else {
         | 
| 2920 | 
            +
                          toolCallExecutions.set(
         | 
| 2921 | 
            +
                            toolCallId,
         | 
| 2922 | 
            +
                            (async () => {
         | 
| 2923 | 
            +
                              try {
         | 
| 2924 | 
            +
                                const result2 = await tool.execute(args);
         | 
| 2925 | 
            +
                                controller.enqueue({
         | 
| 2926 | 
            +
                                  type: "tool-result",
         | 
| 2927 | 
            +
                                  toolCallType,
         | 
| 2928 | 
            +
                                  toolCallId,
         | 
| 2929 | 
            +
                                  toolName,
         | 
| 2930 | 
            +
                                  result: result2
         | 
| 2931 | 
            +
                                });
         | 
| 2932 | 
            +
                              } catch (error) {
         | 
| 2933 | 
            +
                                controller.enqueue({
         | 
| 2934 | 
            +
                                  type: "error",
         | 
| 2935 | 
            +
                                  error
         | 
| 2936 | 
            +
                                });
         | 
| 2937 | 
            +
                              } finally {
         | 
| 2938 | 
            +
                                toolCallExecutions.delete(toolCallId);
         | 
| 2939 | 
            +
                              }
         | 
| 2940 | 
            +
                            })()
         | 
| 2941 | 
            +
                          );
         | 
| 2942 | 
            +
                        }
         | 
| 2943 | 
            +
                      }
         | 
| 2944 | 
            +
                      break;
         | 
| 2945 | 
            +
                    }
         | 
| 2946 | 
            +
                    case "text-delta":
         | 
| 2947 | 
            +
                    case "tool-call-delta":
         | 
| 2948 | 
            +
                    case "finish":
         | 
| 2949 | 
            +
                    case "error":
         | 
| 2950 | 
            +
                      break;
         | 
| 2951 | 
            +
                    default: {
         | 
| 2952 | 
            +
                      const unhandledType = chunkType;
         | 
| 2953 | 
            +
                      throw new Error(`Unhandled chunk type: ${unhandledType}`);
         | 
| 2954 | 
            +
                    }
         | 
| 2955 | 
            +
                  }
         | 
| 2956 | 
            +
                },
         | 
| 2957 | 
            +
                async flush() {
         | 
| 2958 | 
            +
                  await Promise.all(toolCallExecutions.values());
         | 
| 2959 | 
            +
                }
         | 
| 2960 | 
            +
              });
         | 
| 2961 | 
            +
            }
         | 
| 2962 | 
            +
             | 
| 2963 | 
            +
            // src/runtimes/edge/useEdgeRuntime.ts
         | 
| 2964 | 
            +
            var import_zod2 = require("zod");
         | 
| 2965 | 
            +
            var import_zod_to_json_schema = require("zod-to-json-schema");
         | 
| 2966 | 
            +
            function asAsyncIterable(source) {
         | 
| 2967 | 
            +
              return {
         | 
| 2968 | 
            +
                [Symbol.asyncIterator]: () => {
         | 
| 2969 | 
            +
                  const reader = source.getReader();
         | 
| 2970 | 
            +
                  return {
         | 
| 2971 | 
            +
                    async next() {
         | 
| 2972 | 
            +
                      const { done, value } = await reader.read();
         | 
| 2973 | 
            +
                      return done ? { done: true, value: void 0 } : { done: false, value };
         | 
| 2974 | 
            +
                    }
         | 
| 2975 | 
            +
                  };
         | 
| 2976 | 
            +
                }
         | 
| 2977 | 
            +
              };
         | 
| 2978 | 
            +
            }
         | 
| 2979 | 
            +
            var toSerializableTools = (tools) => {
         | 
| 2980 | 
            +
              if (!tools) return [];
         | 
| 2981 | 
            +
              return Object.entries(tools).map(([name, tool]) => ({
         | 
| 2982 | 
            +
                type: "function",
         | 
| 2983 | 
            +
                name,
         | 
| 2984 | 
            +
                ...tool.description ? { description: tool.description } : void 0,
         | 
| 2985 | 
            +
                parameters: tool.parameters instanceof import_zod2.z.ZodType ? (0, import_zod_to_json_schema.zodToJsonSchema)(tool.parameters) : tool.parameters
         | 
| 2986 | 
            +
              }));
         | 
| 2987 | 
            +
            };
         | 
| 2988 | 
            +
            var createEdgeChatAdapter = ({
         | 
| 2989 | 
            +
              api
         | 
| 2990 | 
            +
            }) => ({
         | 
| 2991 | 
            +
              run: async ({ messages, abortSignal, config, onUpdate }) => {
         | 
| 2992 | 
            +
                const result = await fetch(api, {
         | 
| 2993 | 
            +
                  method: "POST",
         | 
| 2994 | 
            +
                  headers: {
         | 
| 2995 | 
            +
                    "Content-Type": "application/json"
         | 
| 2996 | 
            +
                  },
         | 
| 2997 | 
            +
                  body: JSON.stringify({
         | 
| 2998 | 
            +
                    system: config.system,
         | 
| 2999 | 
            +
                    messages,
         | 
| 3000 | 
            +
                    tools: toSerializableTools(
         | 
| 3001 | 
            +
                      config.tools
         | 
| 3002 | 
            +
                    )
         | 
| 3003 | 
            +
                  }),
         | 
| 3004 | 
            +
                  signal: abortSignal
         | 
| 3005 | 
            +
                });
         | 
| 3006 | 
            +
                const stream = result.body.pipeThrough(new TextDecoderStream()).pipeThrough(chunkByLineStream()).pipeThrough(assistantDecoderStream()).pipeThrough(toolResultStream(config.tools)).pipeThrough(runResultStream());
         | 
| 3007 | 
            +
                let update;
         | 
| 3008 | 
            +
                for await (update of asAsyncIterable(stream)) {
         | 
| 3009 | 
            +
                  onUpdate(update);
         | 
| 3010 | 
            +
                }
         | 
| 3011 | 
            +
                if (update === void 0)
         | 
| 3012 | 
            +
                  throw new Error("No data received from Edge Runtime");
         | 
| 3013 | 
            +
                return update;
         | 
| 3014 | 
            +
              }
         | 
| 3015 | 
            +
            });
         | 
| 3016 | 
            +
            var useEdgeRuntime = (options) => {
         | 
| 3017 | 
            +
              const adapter = (0, import_react51.useMemo)(() => createEdgeChatAdapter(options), [options]);
         | 
| 3018 | 
            +
              return useLocalRuntime(adapter);
         | 
| 3019 | 
            +
            };
         | 
| 3020 | 
            +
             | 
| 3021 | 
            +
            // src/ui/thread-config.tsx
         | 
| 3022 | 
            +
            var import_react52 = require("react");
         | 
| 3023 | 
            +
            var import_jsx_runtime25 = require("react/jsx-runtime");
         | 
| 3024 | 
            +
            var ThreadConfigContext = (0, import_react52.createContext)({});
         | 
| 3025 | 
            +
            var useThreadConfig = () => {
         | 
| 3026 | 
            +
              return (0, import_react52.useContext)(ThreadConfigContext);
         | 
| 3027 | 
            +
            };
         | 
| 3028 | 
            +
            var ThreadConfigProvider = ({
         | 
| 3029 | 
            +
              children,
         | 
| 3030 | 
            +
              config
         | 
| 3031 | 
            +
            }) => {
         | 
| 3032 | 
            +
              const assistant = useAssistantContext({ optional: true });
         | 
| 3033 | 
            +
              const configProvider = config && Object.keys(config ?? {}).length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(ThreadConfigContext.Provider, { value: config, children }) : /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_jsx_runtime25.Fragment, { children });
         | 
| 3034 | 
            +
              if (!config?.runtime) return configProvider;
         | 
| 3035 | 
            +
              if (assistant) {
         | 
| 3036 | 
            +
                throw new Error(
         | 
| 3037 | 
            +
                  "You provided a runtime to <Thread> while simulataneously using <AssistantRuntimeProvider>. This is not allowed."
         | 
| 3038 | 
            +
                );
         | 
| 3039 | 
            +
              }
         | 
| 3040 | 
            +
              return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(AssistantRuntimeProvider, { runtime: config.runtime, children: configProvider });
         | 
| 3041 | 
            +
            };
         | 
| 3042 | 
            +
            ThreadConfigProvider.displayName = "ThreadConfigProvider";
         | 
| 3043 | 
            +
             | 
| 3044 | 
            +
            // src/ui/assistant-action-bar.tsx
         | 
| 3045 | 
            +
            var import_react56 = require("react");
         | 
| 3046 | 
            +
            var import_lucide_react = require("lucide-react");
         | 
| 3047 | 
            +
             | 
| 3048 | 
            +
            // src/ui/base/tooltip-icon-button.tsx
         | 
| 3049 | 
            +
            var import_react55 = require("react");
         | 
| 3050 | 
            +
             | 
| 3051 | 
            +
            // src/ui/base/tooltip.tsx
         | 
| 3052 | 
            +
            var TooltipPrimitive = __toESM(require("@radix-ui/react-tooltip"));
         | 
| 3053 | 
            +
             | 
| 3054 | 
            +
            // src/ui/utils/withDefaults.tsx
         | 
| 3055 | 
            +
            var import_react53 = require("react");
         | 
| 3056 | 
            +
            var import_classnames = __toESM(require("classnames"));
         | 
| 3057 | 
            +
            var import_jsx_runtime26 = require("react/jsx-runtime");
         | 
| 3058 | 
            +
            var withDefaultProps = ({
         | 
| 3059 | 
            +
              className,
         | 
| 3060 | 
            +
              ...defaultProps
         | 
| 3061 | 
            +
            }) => ({ className: classNameProp, ...props }) => {
         | 
| 3062 | 
            +
              return {
         | 
| 3063 | 
            +
                className: (0, import_classnames.default)(className, classNameProp),
         | 
| 3064 | 
            +
                ...defaultProps,
         | 
| 3065 | 
            +
                ...props
         | 
| 3066 | 
            +
              };
         | 
| 3067 | 
            +
            };
         | 
| 3068 | 
            +
            var withDefaults = (Component, defaultProps) => {
         | 
| 3069 | 
            +
              const getProps = withDefaultProps(defaultProps);
         | 
| 3070 | 
            +
              const WithDefaults = (0, import_react53.forwardRef)(
         | 
| 3071 | 
            +
                (props, ref) => {
         | 
| 3072 | 
            +
                  const ComponentAsAny = Component;
         | 
| 3073 | 
            +
                  return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(ComponentAsAny, { ...getProps(props), ref });
         | 
| 3074 | 
            +
                }
         | 
| 3075 | 
            +
              );
         | 
| 3076 | 
            +
              WithDefaults.displayName = "withDefaults(" + (typeof Component === "string" ? Component : Component.displayName) + ")";
         | 
| 3077 | 
            +
              return WithDefaults;
         | 
| 3078 | 
            +
            };
         | 
| 3079 | 
            +
             | 
| 3080 | 
            +
            // src/ui/base/tooltip.tsx
         | 
| 3081 | 
            +
            var import_jsx_runtime27 = require("react/jsx-runtime");
         | 
| 3082 | 
            +
            var Tooltip = (props) => {
         | 
| 3083 | 
            +
              return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(TooltipPrimitive.Provider, { children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(TooltipPrimitive.Root, { ...props }) });
         | 
| 3084 | 
            +
            };
         | 
| 3085 | 
            +
            Tooltip.displayName = "Tooltip";
         | 
| 3086 | 
            +
            var TooltipTrigger = TooltipPrimitive.Trigger;
         | 
| 3087 | 
            +
            var TooltipContent = withDefaults(TooltipPrimitive.Content, {
         | 
| 3088 | 
            +
              sideOffset: 4,
         | 
| 3089 | 
            +
              className: "aui-tooltip-content"
         | 
| 3090 | 
            +
            });
         | 
| 3091 | 
            +
            TooltipContent.displayName = "TooltipContent";
         | 
| 3092 | 
            +
             | 
| 3093 | 
            +
            // src/ui/base/button.tsx
         | 
| 3094 | 
            +
            var import_class_variance_authority = require("class-variance-authority");
         | 
| 3095 | 
            +
            var import_react_primitive11 = require("@radix-ui/react-primitive");
         | 
| 3096 | 
            +
            var import_react54 = require("react");
         | 
| 3097 | 
            +
            var import_jsx_runtime28 = require("react/jsx-runtime");
         | 
| 3098 | 
            +
            var buttonVariants = (0, import_class_variance_authority.cva)("aui-button", {
         | 
| 3099 | 
            +
              variants: {
         | 
| 3100 | 
            +
                variant: {
         | 
| 3101 | 
            +
                  default: "aui-button-primary",
         | 
| 3102 | 
            +
                  outline: "aui-button-outline",
         | 
| 3103 | 
            +
                  ghost: "aui-button-ghost"
         | 
| 3104 | 
            +
                },
         | 
| 3105 | 
            +
                size: {
         | 
| 3106 | 
            +
                  default: "aui-button-medium",
         | 
| 3107 | 
            +
                  icon: "aui-button-icon"
         | 
| 3108 | 
            +
                }
         | 
| 3109 | 
            +
              },
         | 
| 3110 | 
            +
              defaultVariants: {
         | 
| 3111 | 
            +
                variant: "default",
         | 
| 3112 | 
            +
                size: "default"
         | 
| 3113 | 
            +
              }
         | 
| 3114 | 
            +
            });
         | 
| 3115 | 
            +
            var Button = (0, import_react54.forwardRef)(
         | 
| 3116 | 
            +
              ({ className, variant, size, ...props }, ref) => {
         | 
| 3117 | 
            +
                return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
         | 
| 3118 | 
            +
                  import_react_primitive11.Primitive.button,
         | 
| 3119 | 
            +
                  {
         | 
| 3120 | 
            +
                    className: buttonVariants({ variant, size, className }),
         | 
| 3121 | 
            +
                    ...props,
         | 
| 3122 | 
            +
                    ref
         | 
| 3123 | 
            +
                  }
         | 
| 3124 | 
            +
                );
         | 
| 3125 | 
            +
              }
         | 
| 3126 | 
            +
            );
         | 
| 3127 | 
            +
            Button.displayName = "Button";
         | 
| 3128 | 
            +
             | 
| 3129 | 
            +
            // src/ui/base/tooltip-icon-button.tsx
         | 
| 3130 | 
            +
            var import_jsx_runtime29 = require("react/jsx-runtime");
         | 
| 3131 | 
            +
            var TooltipIconButton = (0, import_react55.forwardRef)(({ children, tooltip, side = "bottom", ...rest }, ref) => {
         | 
| 3132 | 
            +
              return /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(Tooltip, { children: [
         | 
| 3133 | 
            +
                /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(Button, { variant: "ghost", size: "icon", ...rest, ref, children: [
         | 
| 3134 | 
            +
                  children,
         | 
| 3135 | 
            +
                  /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("span", { className: "aui-sr-only", children: tooltip })
         | 
| 3136 | 
            +
                ] }) }),
         | 
| 3137 | 
            +
                /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(TooltipContent, { side, children: tooltip })
         | 
| 3138 | 
            +
              ] });
         | 
| 3139 | 
            +
            });
         | 
| 3140 | 
            +
            TooltipIconButton.displayName = "TooltipIconButton";
         | 
| 3141 | 
            +
             | 
| 3142 | 
            +
            // src/ui/assistant-action-bar.tsx
         | 
| 3143 | 
            +
            var import_jsx_runtime30 = require("react/jsx-runtime");
         | 
| 3144 | 
            +
            var useAllowCopy = () => {
         | 
| 3145 | 
            +
              const { assistantMessage: { allowCopy = true } = {} } = useThreadConfig();
         | 
| 3146 | 
            +
              const { useThreadActions } = useThreadContext();
         | 
| 3147 | 
            +
              const copySupported = useThreadActions((t) => t.capabilities.copy);
         | 
| 3148 | 
            +
              return copySupported && allowCopy;
         | 
| 3149 | 
            +
            };
         | 
| 3150 | 
            +
            var useAllowReload = () => {
         | 
| 3151 | 
            +
              const { assistantMessage: { allowReload = true } = {} } = useThreadConfig();
         | 
| 3152 | 
            +
              const { useThreadActions } = useThreadContext();
         | 
| 3153 | 
            +
              const reloadSupported = useThreadActions((t) => t.capabilities.reload);
         | 
| 3154 | 
            +
              return reloadSupported && allowReload;
         | 
| 3155 | 
            +
            };
         | 
| 3156 | 
            +
            var AssistantActionBar = () => {
         | 
| 3157 | 
            +
              const allowCopy = useAllowCopy();
         | 
| 3158 | 
            +
              const allowReload = useAllowReload();
         | 
| 3159 | 
            +
              if (!allowCopy && !allowReload) return null;
         | 
| 3160 | 
            +
              return /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(
         | 
| 3161 | 
            +
                AssistantActionBarRoot,
         | 
| 3162 | 
            +
                {
         | 
| 3163 | 
            +
                  hideWhenRunning: true,
         | 
| 3164 | 
            +
                  autohide: "not-last",
         | 
| 3165 | 
            +
                  autohideFloat: "single-branch",
         | 
| 3166 | 
            +
                  children: [
         | 
| 3167 | 
            +
                    /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(AssistantActionBarCopy, {}),
         | 
| 3168 | 
            +
                    /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(AssistantActionBarReload, {})
         | 
| 3169 | 
            +
                  ]
         | 
| 3170 | 
            +
                }
         | 
| 3171 | 
            +
              );
         | 
| 3172 | 
            +
            };
         | 
| 3173 | 
            +
            AssistantActionBar.displayName = "AssistantActionBar";
         | 
| 3174 | 
            +
            var AssistantActionBarRoot = withDefaults(actionBar_exports.Root, {
         | 
| 3175 | 
            +
              className: "aui-assistant-action-bar-root"
         | 
| 3176 | 
            +
            });
         | 
| 3177 | 
            +
            AssistantActionBarRoot.displayName = "AssistantActionBarRoot";
         | 
| 3178 | 
            +
            var AssistantActionBarCopy = (0, import_react56.forwardRef)((props, ref) => {
         | 
| 3179 | 
            +
              const {
         | 
| 3180 | 
            +
                strings: {
         | 
| 3181 | 
            +
                  assistantMessage: { reload: { tooltip = "Copy" } = {} } = {}
         | 
| 3182 | 
            +
                } = {}
         | 
| 3183 | 
            +
              } = useThreadConfig();
         | 
| 3184 | 
            +
              const allowCopy = useAllowCopy();
         | 
| 3185 | 
            +
              if (!allowCopy) return null;
         | 
| 3186 | 
            +
              return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(actionBar_exports.Copy, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(TooltipIconButton, { tooltip, ...props, ref, children: [
         | 
| 3187 | 
            +
                /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(message_exports.If, { copied: true, children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_lucide_react.CheckIcon, {}) }),
         | 
| 3188 | 
            +
                /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(message_exports.If, { copied: false, children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_lucide_react.CopyIcon, {}) })
         | 
| 3189 | 
            +
              ] }) });
         | 
| 3190 | 
            +
            });
         | 
| 3191 | 
            +
            AssistantActionBarCopy.displayName = "AssistantActionBarCopy";
         | 
| 3192 | 
            +
            var AssistantActionBarReload = (0, import_react56.forwardRef)((props, ref) => {
         | 
| 3193 | 
            +
              const {
         | 
| 3194 | 
            +
                strings: {
         | 
| 3195 | 
            +
                  assistantMessage: { reload: { tooltip = "Refresh" } = {} } = {}
         | 
| 3196 | 
            +
                } = {}
         | 
| 3197 | 
            +
              } = useThreadConfig();
         | 
| 3198 | 
            +
              const allowReload = useAllowReload();
         | 
| 3199 | 
            +
              if (!allowReload) return null;
         | 
| 3200 | 
            +
              return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(actionBar_exports.Reload, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(TooltipIconButton, { tooltip, ...props, ref, children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_lucide_react.RefreshCwIcon, {}) }) });
         | 
| 3201 | 
            +
            });
         | 
| 3202 | 
            +
            AssistantActionBarReload.displayName = "AssistantActionBarReload";
         | 
| 3203 | 
            +
            var exports2 = {
         | 
| 3204 | 
            +
              Root: AssistantActionBarRoot,
         | 
| 3205 | 
            +
              Reload: AssistantActionBarReload,
         | 
| 3206 | 
            +
              Copy: AssistantActionBarCopy
         | 
| 3207 | 
            +
            };
         | 
| 3208 | 
            +
            var assistant_action_bar_default = Object.assign(
         | 
| 3209 | 
            +
              AssistantActionBar,
         | 
| 3210 | 
            +
              exports2
         | 
| 3211 | 
            +
            );
         | 
| 3212 | 
            +
             | 
| 3213 | 
            +
            // src/ui/assistant-message.tsx
         | 
| 3214 | 
            +
            var import_react58 = require("react");
         | 
| 3215 | 
            +
             | 
| 3216 | 
            +
            // src/ui/branch-picker.tsx
         | 
| 3217 | 
            +
            var import_react57 = require("react");
         | 
| 3218 | 
            +
            var import_lucide_react2 = require("lucide-react");
         | 
| 3219 | 
            +
            var import_jsx_runtime31 = require("react/jsx-runtime");
         | 
| 3220 | 
            +
            var BranchPicker = () => {
         | 
| 3221 | 
            +
              return /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(BranchPickerRoot, { hideWhenSingleBranch: true, children: [
         | 
| 3222 | 
            +
                /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(BranchPickerPrevious2, {}),
         | 
| 3223 | 
            +
                /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(BranchPickerState, {}),
         | 
| 3224 | 
            +
                /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(BranchPickerNext, {})
         | 
| 3225 | 
            +
              ] });
         | 
| 3226 | 
            +
            };
         | 
| 3227 | 
            +
            BranchPicker.displayName = "BranchPicker";
         | 
| 3228 | 
            +
            var BranchPickerRoot = withDefaults(branchPicker_exports.Root, {
         | 
| 3229 | 
            +
              className: "aui-branch-picker-root"
         | 
| 3230 | 
            +
            });
         | 
| 3231 | 
            +
            BranchPickerRoot.displayName = "BranchPickerRoot";
         | 
| 3232 | 
            +
            var BranchPickerPrevious2 = (0, import_react57.forwardRef)((props, ref) => {
         | 
| 3233 | 
            +
              const {
         | 
| 3234 | 
            +
                strings: {
         | 
| 3235 | 
            +
                  branchPicker: { previous: { tooltip = "Previous" } = {} } = {}
         | 
| 3236 | 
            +
                } = {}
         | 
| 3237 | 
            +
              } = useThreadConfig();
         | 
| 3238 | 
            +
              return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(branchPicker_exports.Previous, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(TooltipIconButton, { tooltip, ...props, ref, children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_lucide_react2.ChevronLeftIcon, {}) }) });
         | 
| 3239 | 
            +
            });
         | 
| 3240 | 
            +
            BranchPickerPrevious2.displayName = "BranchPickerPrevious";
         | 
| 3241 | 
            +
            var BranchPickerStateWrapper = withDefaults("span", {
         | 
| 3242 | 
            +
              className: "aui-branch-picker-state"
         | 
| 3243 | 
            +
            });
         | 
| 3244 | 
            +
            var BranchPickerState = (0, import_react57.forwardRef)((props, ref) => {
         | 
| 3245 | 
            +
              return /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(BranchPickerStateWrapper, { ...props, ref, children: [
         | 
| 3246 | 
            +
                /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(branchPicker_exports.Number, {}),
         | 
| 3247 | 
            +
                " / ",
         | 
| 3248 | 
            +
                /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(branchPicker_exports.Count, {})
         | 
| 3249 | 
            +
              ] });
         | 
| 3250 | 
            +
            });
         | 
| 3251 | 
            +
            BranchPickerState.displayName = "BranchPickerState";
         | 
| 3252 | 
            +
            var BranchPickerNext = (0, import_react57.forwardRef)((props, ref) => {
         | 
| 3253 | 
            +
              const {
         | 
| 3254 | 
            +
                strings: { branchPicker: { next: { tooltip = "Next" } = {} } = {} } = {}
         | 
| 3255 | 
            +
              } = useThreadConfig();
         | 
| 3256 | 
            +
              return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(branchPicker_exports.Next, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(TooltipIconButton, { tooltip, ...props, ref, children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_lucide_react2.ChevronRightIcon, {}) }) });
         | 
| 3257 | 
            +
            });
         | 
| 3258 | 
            +
            BranchPickerNext.displayName = "BranchPickerNext";
         | 
| 3259 | 
            +
            var exports3 = {
         | 
| 3260 | 
            +
              Root: BranchPickerRoot,
         | 
| 3261 | 
            +
              Previous: BranchPickerPrevious2,
         | 
| 3262 | 
            +
              Next: BranchPickerNext
         | 
| 3263 | 
            +
            };
         | 
| 3264 | 
            +
            var branch_picker_default = Object.assign(BranchPicker, exports3);
         | 
| 3265 | 
            +
             | 
| 3266 | 
            +
            // src/ui/base/avatar.tsx
         | 
| 3267 | 
            +
            var AvatarPrimitive = __toESM(require("@radix-ui/react-avatar"));
         | 
| 3268 | 
            +
            var import_jsx_runtime32 = require("react/jsx-runtime");
         | 
| 3269 | 
            +
            var Avatar = ({ src, alt, fallback }) => {
         | 
| 3270 | 
            +
              if (src == null && fallback == null) return null;
         | 
| 3271 | 
            +
              return /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(AvatarRoot, { children: [
         | 
| 3272 | 
            +
                src != null && /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(AvatarImage, { src, alt }),
         | 
| 3273 | 
            +
                fallback != null && /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(AvatarFallback, { children: fallback })
         | 
| 3274 | 
            +
              ] });
         | 
| 3275 | 
            +
            };
         | 
| 3276 | 
            +
            Avatar.displayName = "Avatar";
         | 
| 3277 | 
            +
            var AvatarRoot = withDefaults(AvatarPrimitive.Root, {
         | 
| 3278 | 
            +
              className: "aui-avatar-root"
         | 
| 3279 | 
            +
            });
         | 
| 3280 | 
            +
            AvatarRoot.displayName = "AvatarRoot";
         | 
| 3281 | 
            +
            var AvatarImage = withDefaults(AvatarPrimitive.Image, {
         | 
| 3282 | 
            +
              className: "aui-avatar-image"
         | 
| 3283 | 
            +
            });
         | 
| 3284 | 
            +
            AvatarImage.displayName = "AvatarImage";
         | 
| 3285 | 
            +
            var AvatarFallback = withDefaults(AvatarPrimitive.Fallback, {
         | 
| 3286 | 
            +
              className: "aui-avatar-fallback"
         | 
| 3287 | 
            +
            });
         | 
| 3288 | 
            +
            AvatarFallback.displayName = "AvatarFallback";
         | 
| 3289 | 
            +
             | 
| 3290 | 
            +
            // src/ui/content-part.tsx
         | 
| 3291 | 
            +
            var import_classnames2 = __toESM(require("classnames"));
         | 
| 3292 | 
            +
            var import_jsx_runtime33 = require("react/jsx-runtime");
         | 
| 3293 | 
            +
            var Text = ({ status }) => {
         | 
| 3294 | 
            +
              return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
         | 
| 3295 | 
            +
                "p",
         | 
| 3296 | 
            +
                {
         | 
| 3297 | 
            +
                  className: (0, import_classnames2.default)(
         | 
| 3298 | 
            +
                    "aui-text",
         | 
| 3299 | 
            +
                    status.type === "in_progress" && "aui-text-in-progress"
         | 
| 3300 | 
            +
                  ),
         | 
| 3301 | 
            +
                  children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(contentPart_exports.Text, {})
         | 
| 3302 | 
            +
                }
         | 
| 3303 | 
            +
              );
         | 
| 3304 | 
            +
            };
         | 
| 3305 | 
            +
            var exports4 = { Text };
         | 
| 3306 | 
            +
            var content_part_default = exports4;
         | 
| 3307 | 
            +
             | 
| 3308 | 
            +
            // src/ui/assistant-message.tsx
         | 
| 3309 | 
            +
            var import_jsx_runtime34 = require("react/jsx-runtime");
         | 
| 3310 | 
            +
            var AssistantMessage = () => {
         | 
| 3311 | 
            +
              return /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)(AssistantMessageRoot, { children: [
         | 
| 3312 | 
            +
                /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(AssistantMessageAvatar, {}),
         | 
| 3313 | 
            +
                /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(AssistantMessageContent, {}),
         | 
| 3314 | 
            +
                /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(branch_picker_default, {}),
         | 
| 3315 | 
            +
                /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(assistant_action_bar_default, {})
         | 
| 3316 | 
            +
              ] });
         | 
| 3317 | 
            +
            };
         | 
| 3318 | 
            +
            AssistantMessage.displayName = "AssistantMessage";
         | 
| 3319 | 
            +
            var AssistantMessageAvatar = () => {
         | 
| 3320 | 
            +
              const { assistantAvatar: avatar = { fallback: "A" } } = useThreadConfig();
         | 
| 3321 | 
            +
              return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(Avatar, { ...avatar });
         | 
| 3322 | 
            +
            };
         | 
| 3323 | 
            +
            var AssistantMessageRoot = withDefaults(message_exports.Root, {
         | 
| 3324 | 
            +
              className: "aui-assistant-message-root"
         | 
| 3325 | 
            +
            });
         | 
| 3326 | 
            +
            AssistantMessageRoot.displayName = "AssistantMessageRoot";
         | 
| 3327 | 
            +
            var AssistantMessageContentWrapper = withDefaults("div", {
         | 
| 3328 | 
            +
              className: "aui-assistant-message-content"
         | 
| 3329 | 
            +
            });
         | 
| 3330 | 
            +
            var AssistantMessageContent = (0, import_react58.forwardRef)(({ components: componentsProp, ...rest }, ref) => {
         | 
| 3331 | 
            +
              const { assistantMessage: { components = {} } = {} } = useThreadConfig();
         | 
| 3332 | 
            +
              return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(AssistantMessageContentWrapper, { ...rest, ref, children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
         | 
| 3333 | 
            +
                message_exports.Content,
         | 
| 3334 | 
            +
                {
         | 
| 3335 | 
            +
                  components: {
         | 
| 3336 | 
            +
                    ...componentsProp,
         | 
| 3337 | 
            +
                    Text: componentsProp?.Text ?? components.Text ?? content_part_default.Text
         | 
| 3338 | 
            +
                  }
         | 
| 3339 | 
            +
                }
         | 
| 3340 | 
            +
              ) });
         | 
| 3341 | 
            +
            });
         | 
| 3342 | 
            +
            AssistantMessageContent.displayName = "AssistantMessageContent";
         | 
| 3343 | 
            +
            var exports5 = {
         | 
| 3344 | 
            +
              Root: AssistantMessageRoot,
         | 
| 3345 | 
            +
              Avatar: AssistantMessageAvatar,
         | 
| 3346 | 
            +
              Content: AssistantMessageContent
         | 
| 3347 | 
            +
            };
         | 
| 3348 | 
            +
            var assistant_message_default = Object.assign(
         | 
| 3349 | 
            +
              AssistantMessage,
         | 
| 3350 | 
            +
              exports5
         | 
| 3351 | 
            +
            );
         | 
| 3352 | 
            +
             | 
| 3353 | 
            +
            // src/ui/assistant-modal.tsx
         | 
| 3354 | 
            +
            var import_react65 = require("react");
         | 
| 3355 | 
            +
            var import_lucide_react6 = require("lucide-react");
         | 
| 3356 | 
            +
             | 
| 3357 | 
            +
            // src/ui/thread.tsx
         | 
| 3358 | 
            +
            var import_react64 = require("react");
         | 
| 3359 | 
            +
            var import_lucide_react5 = require("lucide-react");
         | 
| 3360 | 
            +
             | 
| 3361 | 
            +
            // src/ui/composer.tsx
         | 
| 3362 | 
            +
            var import_react59 = require("react");
         | 
| 3363 | 
            +
            var import_lucide_react3 = require("lucide-react");
         | 
| 3364 | 
            +
             | 
| 3365 | 
            +
            // src/ui/base/CircleStopIcon.tsx
         | 
| 3366 | 
            +
            var import_jsx_runtime35 = require("react/jsx-runtime");
         | 
| 3367 | 
            +
            var CircleStopIcon = () => {
         | 
| 3368 | 
            +
              return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
         | 
| 3369 | 
            +
                "svg",
         | 
| 3370 | 
            +
                {
         | 
| 3371 | 
            +
                  xmlns: "http://www.w3.org/2000/svg",
         | 
| 3372 | 
            +
                  viewBox: "0 0 16 16",
         | 
| 3373 | 
            +
                  fill: "currentColor",
         | 
| 3374 | 
            +
                  children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("rect", { width: "10", height: "10", x: "3", y: "3", rx: "2" })
         | 
| 3375 | 
            +
                }
         | 
| 3376 | 
            +
              );
         | 
| 3377 | 
            +
            };
         | 
| 3378 | 
            +
            CircleStopIcon.displayName = "CircleStopIcon";
         | 
| 3379 | 
            +
             | 
| 3380 | 
            +
            // src/ui/composer.tsx
         | 
| 3381 | 
            +
            var import_jsx_runtime36 = require("react/jsx-runtime");
         | 
| 3382 | 
            +
            var Composer = () => {
         | 
| 3383 | 
            +
              return /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(ComposerRoot, { children: [
         | 
| 3384 | 
            +
                /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(ComposerInput, { autoFocus: true }),
         | 
| 3385 | 
            +
                /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(ComposerAction, {})
         | 
| 3386 | 
            +
              ] });
         | 
| 3387 | 
            +
            };
         | 
| 3388 | 
            +
            Composer.displayName = "Composer";
         | 
| 3389 | 
            +
            var ComposerRoot = withDefaults(composer_exports.Root, {
         | 
| 3390 | 
            +
              className: "aui-composer-root"
         | 
| 3391 | 
            +
            });
         | 
| 3392 | 
            +
            ComposerRoot.displayName = "ComposerRoot";
         | 
| 3393 | 
            +
            var ComposerInputStyled = withDefaults(composer_exports.Input, {
         | 
| 3394 | 
            +
              rows: 1,
         | 
| 3395 | 
            +
              autoFocus: true,
         | 
| 3396 | 
            +
              className: "aui-composer-input"
         | 
| 3397 | 
            +
            });
         | 
| 3398 | 
            +
            var ComposerInput = (0, import_react59.forwardRef)(
         | 
| 3399 | 
            +
              (props, ref) => {
         | 
| 3400 | 
            +
                const {
         | 
| 3401 | 
            +
                  strings: {
         | 
| 3402 | 
            +
                    composer: { input: { placeholder = "Write a message..." } = {} } = {}
         | 
| 3403 | 
            +
                  } = {}
         | 
| 3404 | 
            +
                } = useThreadConfig();
         | 
| 3405 | 
            +
                return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(ComposerInputStyled, { placeholder, ...props, ref });
         | 
| 3406 | 
            +
              }
         | 
| 3407 | 
            +
            );
         | 
| 3408 | 
            +
            ComposerInput.displayName = "ComposerInput";
         | 
| 3409 | 
            +
            var useAllowCancel = () => {
         | 
| 3410 | 
            +
              const { useThreadActions } = useThreadContext();
         | 
| 3411 | 
            +
              const cancelSupported = useThreadActions((t) => t.capabilities.cancel);
         | 
| 3412 | 
            +
              return cancelSupported;
         | 
| 3413 | 
            +
            };
         | 
| 3414 | 
            +
            var ComposerAction = () => {
         | 
| 3415 | 
            +
              const allowCancel = useAllowCancel();
         | 
| 3416 | 
            +
              if (!allowCancel) return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(ComposerSend, {});
         | 
| 3417 | 
            +
              return /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(import_jsx_runtime36.Fragment, { children: [
         | 
| 3418 | 
            +
                /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(thread_exports.If, { running: false, children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(ComposerSend, {}) }),
         | 
| 3419 | 
            +
                /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(thread_exports.If, { running: true, children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(ComposerCancel, {}) })
         | 
| 3420 | 
            +
              ] });
         | 
| 3421 | 
            +
            };
         | 
| 3422 | 
            +
            ComposerAction.displayName = "ComposerAction";
         | 
| 3423 | 
            +
            var ComposerSendButton = withDefaults(TooltipIconButton, {
         | 
| 3424 | 
            +
              variant: "default",
         | 
| 3425 | 
            +
              className: "aui-composer-send"
         | 
| 3426 | 
            +
            });
         | 
| 3427 | 
            +
            var ComposerSend = (0, import_react59.forwardRef)((props, ref) => {
         | 
| 3428 | 
            +
              const {
         | 
| 3429 | 
            +
                strings: { composer: { send: { tooltip = "Send" } = {} } = {} } = {}
         | 
| 3430 | 
            +
              } = useThreadConfig();
         | 
| 3431 | 
            +
              return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(composer_exports.Send, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(ComposerSendButton, { tooltip, ...props, ref, children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_lucide_react3.SendHorizonalIcon, {}) }) });
         | 
| 3432 | 
            +
            });
         | 
| 3433 | 
            +
            ComposerSend.displayName = "ComposerSend";
         | 
| 3434 | 
            +
            var ComposerCancelButton = withDefaults(TooltipIconButton, {
         | 
| 3435 | 
            +
              variant: "default",
         | 
| 3436 | 
            +
              className: "aui-composer-cancel"
         | 
| 3437 | 
            +
            });
         | 
| 3438 | 
            +
            var ComposerCancel = (0, import_react59.forwardRef)((props, ref) => {
         | 
| 3439 | 
            +
              const {
         | 
| 3440 | 
            +
                strings: { composer: { cancel: { tooltip = "Cancel" } = {} } = {} } = {}
         | 
| 3441 | 
            +
              } = useThreadConfig();
         | 
| 3442 | 
            +
              return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(composer_exports.Cancel, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(ComposerCancelButton, { tooltip, ...props, ref, children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(CircleStopIcon, {}) }) });
         | 
| 3443 | 
            +
            });
         | 
| 3444 | 
            +
            ComposerCancel.displayName = "ComposerCancel";
         | 
| 3445 | 
            +
            var exports6 = {
         | 
| 3446 | 
            +
              Root: ComposerRoot,
         | 
| 3447 | 
            +
              Input: ComposerInput,
         | 
| 3448 | 
            +
              Action: ComposerAction,
         | 
| 3449 | 
            +
              Send: ComposerSend,
         | 
| 3450 | 
            +
              Cancel: ComposerCancel
         | 
| 3451 | 
            +
            };
         | 
| 3452 | 
            +
            var composer_default = Object.assign(Composer, exports6);
         | 
| 3453 | 
            +
             | 
| 3454 | 
            +
            // src/ui/thread-welcome.tsx
         | 
| 3455 | 
            +
            var import_react60 = require("react");
         | 
| 3456 | 
            +
            var import_jsx_runtime37 = require("react/jsx-runtime");
         | 
| 3457 | 
            +
            var ThreadWelcome = () => {
         | 
| 3458 | 
            +
              return /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(ThreadWelcomeRoot, { children: [
         | 
| 3459 | 
            +
                /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(ThreadWelcomeCenter, { children: [
         | 
| 3460 | 
            +
                  /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(ThreadWelcomeAvatar, {}),
         | 
| 3461 | 
            +
                  /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(ThreadWelcomeMessage, {})
         | 
| 3462 | 
            +
                ] }),
         | 
| 3463 | 
            +
                /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(ThreadWelcomeSuggestions, {})
         | 
| 3464 | 
            +
              ] });
         | 
| 3465 | 
            +
            };
         | 
| 3466 | 
            +
            ThreadWelcome.displayName = "ThreadWelcome";
         | 
| 3467 | 
            +
            var ThreadWelcomeRootStyled = withDefaults("div", {
         | 
| 3468 | 
            +
              className: "aui-thread-welcome-root"
         | 
| 3469 | 
            +
            });
         | 
| 3470 | 
            +
            var ThreadWelcomeCenter = withDefaults("div", {
         | 
| 3471 | 
            +
              className: "aui-thread-welcome-center"
         | 
| 3472 | 
            +
            });
         | 
| 3473 | 
            +
            var ThreadWelcomeRoot = (0, import_react60.forwardRef)(
         | 
| 3474 | 
            +
              (props, ref) => {
         | 
| 3475 | 
            +
                return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(thread_exports.Empty, { children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(ThreadWelcomeRootStyled, { ...props, ref }) });
         | 
| 3476 | 
            +
              }
         | 
| 3477 | 
            +
            );
         | 
| 3478 | 
            +
            ThreadWelcomeRoot.displayName = "ThreadWelcomeRoot";
         | 
| 3479 | 
            +
            var ThreadWelcomeAvatar = () => {
         | 
| 3480 | 
            +
              const { assistantAvatar: avatar = { fallback: "A" } } = useThreadConfig();
         | 
| 3481 | 
            +
              return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(Avatar, { ...avatar });
         | 
| 3482 | 
            +
            };
         | 
| 3483 | 
            +
            var ThreadWelcomeMessageStyled = withDefaults("p", {
         | 
| 3484 | 
            +
              className: "aui-thread-welcome-message"
         | 
| 3485 | 
            +
            });
         | 
| 3486 | 
            +
            var ThreadWelcomeMessage = (0, import_react60.forwardRef)(({ message: messageProp, ...rest }, ref) => {
         | 
| 3487 | 
            +
              const { welcome: { message = "How can I help you today?" } = {} } = useThreadConfig();
         | 
| 3488 | 
            +
              return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(ThreadWelcomeMessageStyled, { ...rest, ref, children: messageProp ?? message });
         | 
| 3489 | 
            +
            });
         | 
| 3490 | 
            +
            ThreadWelcomeMessage.displayName = "ThreadWelcomeMessage";
         | 
| 3491 | 
            +
            var ThreadWelcomeSuggestionContainer = withDefaults("div", {
         | 
| 3492 | 
            +
              className: "aui-thread-welcome-suggestion-container"
         | 
| 3493 | 
            +
            });
         | 
| 3494 | 
            +
            var ThreadWelcomeSuggestionStyled = withDefaults(thread_exports.Suggestion, {
         | 
| 3495 | 
            +
              className: "aui-thread-welcome-suggestion"
         | 
| 3496 | 
            +
            });
         | 
| 3497 | 
            +
            var ThreadWelcomeSuggestion = ({
         | 
| 3498 | 
            +
              suggestion: { text, prompt }
         | 
| 3499 | 
            +
            }) => {
         | 
| 3500 | 
            +
              return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
         | 
| 3501 | 
            +
                ThreadWelcomeSuggestionStyled,
         | 
| 3502 | 
            +
                {
         | 
| 3503 | 
            +
                  prompt: prompt ?? text,
         | 
| 3504 | 
            +
                  method: "replace",
         | 
| 3505 | 
            +
                  autoSend: true,
         | 
| 3506 | 
            +
                  children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("span", { className: "aui-thread-welcome-suggestion-text", children: text })
         | 
| 3507 | 
            +
                }
         | 
| 3508 | 
            +
              );
         | 
| 3509 | 
            +
            };
         | 
| 3510 | 
            +
            var ThreadWelcomeSuggestions = () => {
         | 
| 3511 | 
            +
              const { welcome: { suggestions } = {} } = useThreadConfig();
         | 
| 3512 | 
            +
              return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(ThreadWelcomeSuggestionContainer, { children: suggestions?.map((suggestion, idx) => {
         | 
| 3513 | 
            +
                const key = `${suggestion.prompt}-${idx}`;
         | 
| 3514 | 
            +
                return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(ThreadWelcomeSuggestion, { suggestion }, key);
         | 
| 3515 | 
            +
              }) });
         | 
| 3516 | 
            +
            };
         | 
| 3517 | 
            +
            ThreadWelcomeSuggestions.displayName = "ThreadWelcomeSuggestions";
         | 
| 3518 | 
            +
            var exports7 = {
         | 
| 3519 | 
            +
              Root: ThreadWelcomeRoot,
         | 
| 3520 | 
            +
              Center: ThreadWelcomeCenter,
         | 
| 3521 | 
            +
              Avatar: ThreadWelcomeAvatar,
         | 
| 3522 | 
            +
              Message: ThreadWelcomeMessage,
         | 
| 3523 | 
            +
              Suggestions: ThreadWelcomeSuggestions,
         | 
| 3524 | 
            +
              Suggestion: ThreadWelcomeSuggestion
         | 
| 3525 | 
            +
            };
         | 
| 3526 | 
            +
            var thread_welcome_default = Object.assign(ThreadWelcome, exports7);
         | 
| 3527 | 
            +
             | 
| 3528 | 
            +
            // src/ui/user-message.tsx
         | 
| 3529 | 
            +
            var import_react62 = require("react");
         | 
| 3530 | 
            +
             | 
| 3531 | 
            +
            // src/ui/user-action-bar.tsx
         | 
| 3532 | 
            +
            var import_react61 = require("react");
         | 
| 3533 | 
            +
            var import_lucide_react4 = require("lucide-react");
         | 
| 3534 | 
            +
            var import_jsx_runtime38 = require("react/jsx-runtime");
         | 
| 3535 | 
            +
            var useAllowEdit = () => {
         | 
| 3536 | 
            +
              const { userMessage: { allowEdit = true } = {} } = useThreadConfig();
         | 
| 3537 | 
            +
              const { useThreadActions } = useThreadContext();
         | 
| 3538 | 
            +
              const editSupported = useThreadActions((t) => t.capabilities.edit);
         | 
| 3539 | 
            +
              return editSupported && allowEdit;
         | 
| 3540 | 
            +
            };
         | 
| 3541 | 
            +
            var UserActionBar = () => {
         | 
| 3542 | 
            +
              const allowEdit = useAllowEdit();
         | 
| 3543 | 
            +
              if (!allowEdit) return null;
         | 
| 3544 | 
            +
              return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(UserActionBarRoot, { hideWhenRunning: true, autohide: "not-last", children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(UserActionBarEdit, {}) });
         | 
| 3545 | 
            +
            };
         | 
| 3546 | 
            +
            UserActionBar.displayName = "UserActionBar";
         | 
| 3547 | 
            +
            var UserActionBarRoot = withDefaults(actionBar_exports.Root, {
         | 
| 3548 | 
            +
              className: "aui-user-action-bar-root"
         | 
| 3549 | 
            +
            });
         | 
| 3550 | 
            +
            UserActionBarRoot.displayName = "UserActionBarRoot";
         | 
| 3551 | 
            +
            var UserActionBarEdit = (0, import_react61.forwardRef)((props, ref) => {
         | 
| 3552 | 
            +
              const {
         | 
| 3553 | 
            +
                strings: { userMessage: { edit: { tooltip = "Edit" } = {} } = {} } = {}
         | 
| 3554 | 
            +
              } = useThreadConfig();
         | 
| 3555 | 
            +
              const allowEdit = useAllowEdit();
         | 
| 3556 | 
            +
              if (!allowEdit) return null;
         | 
| 3557 | 
            +
              return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(actionBar_exports.Edit, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(TooltipIconButton, { tooltip, ...props, ref, children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_lucide_react4.PencilIcon, {}) }) });
         | 
| 3558 | 
            +
            });
         | 
| 3559 | 
            +
            UserActionBarEdit.displayName = "UserActionBarEdit";
         | 
| 3560 | 
            +
            var exports8 = {
         | 
| 3561 | 
            +
              Root: UserActionBarRoot,
         | 
| 3562 | 
            +
              Edit: UserActionBarEdit
         | 
| 3563 | 
            +
            };
         | 
| 3564 | 
            +
            var user_action_bar_default = Object.assign(UserActionBar, exports8);
         | 
| 3565 | 
            +
             | 
| 3566 | 
            +
            // src/ui/user-message.tsx
         | 
| 3567 | 
            +
            var import_jsx_runtime39 = require("react/jsx-runtime");
         | 
| 3568 | 
            +
            var UserMessage = () => {
         | 
| 3569 | 
            +
              return /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)(UserMessageRoot, { children: [
         | 
| 3570 | 
            +
                /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(user_action_bar_default, {}),
         | 
| 3571 | 
            +
                /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(UserMessageContent, {}),
         | 
| 3572 | 
            +
                /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(branch_picker_default, {})
         | 
| 3573 | 
            +
              ] });
         | 
| 3574 | 
            +
            };
         | 
| 3575 | 
            +
            UserMessage.displayName = "UserMessage";
         | 
| 3576 | 
            +
            var UserMessageRoot = withDefaults(message_exports.Root, {
         | 
| 3577 | 
            +
              className: "aui-user-message-root"
         | 
| 3578 | 
            +
            });
         | 
| 3579 | 
            +
            UserMessageRoot.displayName = "UserMessageRoot";
         | 
| 3580 | 
            +
            var UserMessageContentWrapper = withDefaults("div", {
         | 
| 3581 | 
            +
              className: "aui-user-message-content"
         | 
| 3582 | 
            +
            });
         | 
| 3583 | 
            +
            var UserMessageContent = (0, import_react62.forwardRef)(
         | 
| 3584 | 
            +
              ({ components, ...props }, ref) => {
         | 
| 3585 | 
            +
                return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(UserMessageContentWrapper, { ...props, ref, children: /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
         | 
| 3586 | 
            +
                  message_exports.Content,
         | 
| 3587 | 
            +
                  {
         | 
| 3588 | 
            +
                    components: {
         | 
| 3589 | 
            +
                      ...components,
         | 
| 3590 | 
            +
                      Text: components?.Text ?? content_part_default.Text
         | 
| 3591 | 
            +
                    }
         | 
| 3592 | 
            +
                  }
         | 
| 3593 | 
            +
                ) });
         | 
| 3594 | 
            +
              }
         | 
| 3595 | 
            +
            );
         | 
| 3596 | 
            +
            UserMessageContent.displayName = "UserMessageContent";
         | 
| 3597 | 
            +
            var exports9 = {
         | 
| 3598 | 
            +
              Root: UserMessageRoot,
         | 
| 3599 | 
            +
              Content: UserMessageContent
         | 
| 3600 | 
            +
            };
         | 
| 3601 | 
            +
            var user_message_default = Object.assign(UserMessage, exports9);
         | 
| 3602 | 
            +
             | 
| 3603 | 
            +
            // src/ui/edit-composer.tsx
         | 
| 3604 | 
            +
            var import_react63 = require("react");
         | 
| 3605 | 
            +
            var import_jsx_runtime40 = require("react/jsx-runtime");
         | 
| 3606 | 
            +
            var EditComposer = () => {
         | 
| 3607 | 
            +
              return /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)(EditComposerRoot, { children: [
         | 
| 3608 | 
            +
                /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(EditComposerInput, {}),
         | 
| 3609 | 
            +
                /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)(EditComposerFooter, { children: [
         | 
| 3610 | 
            +
                  /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(EditComposerCancel, {}),
         | 
| 3611 | 
            +
                  /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(EditComposerSend, {})
         | 
| 3612 | 
            +
                ] })
         | 
| 3613 | 
            +
              ] });
         | 
| 3614 | 
            +
            };
         | 
| 3615 | 
            +
            EditComposer.displayName = "EditComposer";
         | 
| 3616 | 
            +
            var EditComposerRoot = withDefaults(composer_exports.Root, {
         | 
| 3617 | 
            +
              className: "aui-edit-composer-root"
         | 
| 3618 | 
            +
            });
         | 
| 3619 | 
            +
            EditComposerRoot.displayName = "EditComposerRoot";
         | 
| 3620 | 
            +
            var EditComposerInput = withDefaults(composer_exports.Input, {
         | 
| 3621 | 
            +
              className: "aui-edit-composer-input"
         | 
| 3622 | 
            +
            });
         | 
| 3623 | 
            +
            EditComposerInput.displayName = "EditComposerInput";
         | 
| 3624 | 
            +
            var EditComposerFooter = withDefaults("div", {
         | 
| 3625 | 
            +
              className: "aui-edit-composer-footer"
         | 
| 3626 | 
            +
            });
         | 
| 3627 | 
            +
            EditComposerFooter.displayName = "EditComposerFooter";
         | 
| 3628 | 
            +
            var EditComposerCancel = (0, import_react63.forwardRef)(
         | 
| 3629 | 
            +
              (props, ref) => {
         | 
| 3630 | 
            +
                const {
         | 
| 3631 | 
            +
                  strings: {
         | 
| 3632 | 
            +
                    editComposer: { cancel: { label = "Cancel" } = {} } = {}
         | 
| 3633 | 
            +
                  } = {}
         | 
| 3634 | 
            +
                } = useThreadConfig();
         | 
| 3635 | 
            +
                return /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(composer_exports.Cancel, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(Button, { variant: "ghost", ...props, ref, children: label }) });
         | 
| 3636 | 
            +
              }
         | 
| 3637 | 
            +
            );
         | 
| 3638 | 
            +
            EditComposerCancel.displayName = "EditComposerCancel";
         | 
| 3639 | 
            +
            var EditComposerSend = (0, import_react63.forwardRef)(
         | 
| 3640 | 
            +
              (props, ref) => {
         | 
| 3641 | 
            +
                const {
         | 
| 3642 | 
            +
                  strings: { editComposer: { send: { label = "Send" } = {} } = {} } = {}
         | 
| 3643 | 
            +
                } = useThreadConfig();
         | 
| 3644 | 
            +
                return /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(composer_exports.Send, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(Button, { ...props, ref, children: label }) });
         | 
| 3645 | 
            +
              }
         | 
| 3646 | 
            +
            );
         | 
| 3647 | 
            +
            EditComposerSend.displayName = "EditComposerSend";
         | 
| 3648 | 
            +
            var exports10 = {
         | 
| 3649 | 
            +
              Root: EditComposerRoot,
         | 
| 3650 | 
            +
              Input: EditComposerInput,
         | 
| 3651 | 
            +
              Footer: EditComposerFooter,
         | 
| 3652 | 
            +
              Cancel: EditComposerCancel,
         | 
| 3653 | 
            +
              Send: EditComposerSend
         | 
| 3654 | 
            +
            };
         | 
| 3655 | 
            +
            var edit_composer_default = Object.assign(EditComposer, exports10);
         | 
| 3656 | 
            +
             | 
| 3657 | 
            +
            // src/ui/thread.tsx
         | 
| 3658 | 
            +
            var import_jsx_runtime41 = require("react/jsx-runtime");
         | 
| 3659 | 
            +
            var Thread = (config) => {
         | 
| 3660 | 
            +
              return /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(ThreadRoot, { config, children: /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)(ThreadViewport, { children: [
         | 
| 3661 | 
            +
                /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(thread_welcome_default, {}),
         | 
| 3662 | 
            +
                /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(ThreadMessages, {}),
         | 
| 3663 | 
            +
                /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)(ThreadViewportFooter, { children: [
         | 
| 3664 | 
            +
                  /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(ThreadScrollToBottom, {}),
         | 
| 3665 | 
            +
                  /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(composer_default, {})
         | 
| 3666 | 
            +
                ] })
         | 
| 3667 | 
            +
              ] }) });
         | 
| 3668 | 
            +
            };
         | 
| 3669 | 
            +
            var ThreadRootStyled = withDefaults(thread_exports.Root, {
         | 
| 3670 | 
            +
              className: "aui-root aui-thread-root"
         | 
| 3671 | 
            +
            });
         | 
| 3672 | 
            +
            var ThreadRoot = (0, import_react64.forwardRef)(
         | 
| 3673 | 
            +
              ({ config, ...props }, ref) => {
         | 
| 3674 | 
            +
                return /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(ThreadConfigProvider, { config, children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(ThreadRootStyled, { ...props, ref }) });
         | 
| 3675 | 
            +
              }
         | 
| 3676 | 
            +
            );
         | 
| 3677 | 
            +
            ThreadRoot.displayName = "ThreadRoot";
         | 
| 3678 | 
            +
            var ThreadViewport = withDefaults(thread_exports.Viewport, {
         | 
| 3679 | 
            +
              className: "aui-thread-viewport"
         | 
| 3680 | 
            +
            });
         | 
| 3681 | 
            +
            ThreadViewport.displayName = "ThreadViewport";
         | 
| 3682 | 
            +
            var ThreadViewportFooter = withDefaults("div", {
         | 
| 3683 | 
            +
              className: "aui-thread-viewport-footer"
         | 
| 3684 | 
            +
            });
         | 
| 3685 | 
            +
            ThreadViewportFooter.displayName = "ThreadViewportFooter";
         | 
| 3686 | 
            +
            var SystemMessage = () => null;
         | 
| 3687 | 
            +
            var ThreadMessages = ({ components, ...rest }) => {
         | 
| 3688 | 
            +
              return /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
         | 
| 3689 | 
            +
                thread_exports.Messages,
         | 
| 3690 | 
            +
                {
         | 
| 3691 | 
            +
                  components: {
         | 
| 3692 | 
            +
                    UserMessage: components?.UserMessage ?? user_message_default,
         | 
| 3693 | 
            +
                    EditComposer: components?.EditComposer ?? edit_composer_default,
         | 
| 3694 | 
            +
                    AssistantMessage: components?.AssistantMessage ?? assistant_message_default,
         | 
| 3695 | 
            +
                    SystemMessage: components?.SystemMessage ?? SystemMessage
         | 
| 3696 | 
            +
                  },
         | 
| 3697 | 
            +
                  ...rest
         | 
| 3698 | 
            +
                }
         | 
| 3699 | 
            +
              );
         | 
| 3700 | 
            +
            };
         | 
| 3701 | 
            +
            ThreadMessages.displayName = "ThreadMessages";
         | 
| 3702 | 
            +
            var ThreadScrollToBottomIconButton = withDefaults(TooltipIconButton, {
         | 
| 3703 | 
            +
              variant: "outline",
         | 
| 3704 | 
            +
              className: "aui-thread-scroll-to-bottom"
         | 
| 3705 | 
            +
            });
         | 
| 3706 | 
            +
            var ThreadScrollToBottom = (0, import_react64.forwardRef)((props, ref) => {
         | 
| 3707 | 
            +
              const {
         | 
| 3708 | 
            +
                strings: {
         | 
| 3709 | 
            +
                  thread: { scrollToBottom: { tooltip = "Scroll to bottom" } = {} } = {}
         | 
| 3710 | 
            +
                } = {}
         | 
| 3711 | 
            +
              } = useThreadConfig();
         | 
| 3712 | 
            +
              return /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(thread_exports.ScrollToBottom, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(ThreadScrollToBottomIconButton, { tooltip, ...props, ref, children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(import_lucide_react5.ArrowDownIcon, {}) }) });
         | 
| 3713 | 
            +
            });
         | 
| 3714 | 
            +
            ThreadScrollToBottom.displayName = "ThreadScrollToBottom";
         | 
| 3715 | 
            +
            var exports11 = {
         | 
| 3716 | 
            +
              Root: ThreadRoot,
         | 
| 3717 | 
            +
              Viewport: ThreadViewport,
         | 
| 3718 | 
            +
              Messages: ThreadMessages,
         | 
| 3719 | 
            +
              ScrollToBottom: ThreadScrollToBottom,
         | 
| 3720 | 
            +
              ViewportFooter: ThreadViewportFooter
         | 
| 3721 | 
            +
            };
         | 
| 3722 | 
            +
            var thread_default = Object.assign(Thread, exports11);
         | 
| 3723 | 
            +
             | 
| 3724 | 
            +
            // src/ui/assistant-modal.tsx
         | 
| 3725 | 
            +
            var import_jsx_runtime42 = require("react/jsx-runtime");
         | 
| 3726 | 
            +
            var AssistantModal = (config) => {
         | 
| 3727 | 
            +
              return /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)(AssistantModalRoot, { config, children: [
         | 
| 3728 | 
            +
                /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(AssistantModalTrigger, {}),
         | 
| 3729 | 
            +
                /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(AssistantModalContent, { children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(thread_default, {}) })
         | 
| 3730 | 
            +
              ] });
         | 
| 3731 | 
            +
            };
         | 
| 3732 | 
            +
            AssistantModal.displayName = "AssistantModal";
         | 
| 3733 | 
            +
            var AssistantModalRoot = ({ config, ...props }) => {
         | 
| 3734 | 
            +
              return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(ThreadConfigProvider, { config, children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(assistantModal_exports.Root, { ...props }) });
         | 
| 3735 | 
            +
            };
         | 
| 3736 | 
            +
            AssistantModalRoot.displayName = "AssistantModalRoot";
         | 
| 3737 | 
            +
            var AssistantModalTrigger = (0, import_react65.forwardRef)((props, ref) => {
         | 
| 3738 | 
            +
              return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(AssistantModalAnchor, { children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(assistantModal_exports.Trigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(AssistantModalButton, { ...props, ref }) }) });
         | 
| 3739 | 
            +
            });
         | 
| 3740 | 
            +
            AssistantModalTrigger.displayName = "AssistantModalTrigger";
         | 
| 3741 | 
            +
            var AssistantModalAnchor = withDefaults(assistantModal_exports.Anchor, {
         | 
| 3742 | 
            +
              className: "aui-root aui-modal-anchor"
         | 
| 3743 | 
            +
            });
         | 
| 3744 | 
            +
            AssistantModalAnchor.displayName = "AssistantModalAnchor";
         | 
| 3745 | 
            +
            var ModalButtonStyled = withDefaults(TooltipIconButton, {
         | 
| 3746 | 
            +
              variant: "default",
         | 
| 3747 | 
            +
              className: "aui-modal-button"
         | 
| 3748 | 
            +
            });
         | 
| 3749 | 
            +
            var AssistantModalButton = (0, import_react65.forwardRef)(({ "data-state": state, ...rest }, ref) => {
         | 
| 3750 | 
            +
              const {
         | 
| 3751 | 
            +
                strings: {
         | 
| 3752 | 
            +
                  assistantModal: {
         | 
| 3753 | 
            +
                    open: {
         | 
| 3754 | 
            +
                      button: { tooltip: openTooltip = "Close Assistant" } = {}
         | 
| 3755 | 
            +
                    } = {},
         | 
| 3756 | 
            +
                    closed: {
         | 
| 3757 | 
            +
                      button: { tooltip: closedTooltip = "Open Assistant" } = {}
         | 
| 3758 | 
            +
                    } = {}
         | 
| 3759 | 
            +
                  } = {}
         | 
| 3760 | 
            +
                } = {}
         | 
| 3761 | 
            +
              } = useThreadConfig();
         | 
| 3762 | 
            +
              const tooltip = state === "open" ? openTooltip : closedTooltip;
         | 
| 3763 | 
            +
              return /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)(
         | 
| 3764 | 
            +
                ModalButtonStyled,
         | 
| 3765 | 
            +
                {
         | 
| 3766 | 
            +
                  side: "left",
         | 
| 3767 | 
            +
                  tooltip,
         | 
| 3768 | 
            +
                  "data-state": state,
         | 
| 3769 | 
            +
                  ...rest,
         | 
| 3770 | 
            +
                  ref,
         | 
| 3771 | 
            +
                  children: [
         | 
| 3772 | 
            +
                    /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(import_lucide_react6.BotIcon, { "data-state": state, className: "aui-modal-button-closed-icon" }),
         | 
| 3773 | 
            +
                    /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
         | 
| 3774 | 
            +
                      import_lucide_react6.ChevronDownIcon,
         | 
| 3775 | 
            +
                      {
         | 
| 3776 | 
            +
                        "data-state": state,
         | 
| 3777 | 
            +
                        className: "aui-modal-button-open-icon"
         | 
| 3778 | 
            +
                      }
         | 
| 3779 | 
            +
                    ),
         | 
| 3780 | 
            +
                    /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("span", { className: "aui-sr-only", children: tooltip })
         | 
| 3781 | 
            +
                  ]
         | 
| 3782 | 
            +
                }
         | 
| 3783 | 
            +
              );
         | 
| 3784 | 
            +
            });
         | 
| 3785 | 
            +
            AssistantModalButton.displayName = "AssistantModalButton";
         | 
| 3786 | 
            +
            var AssistantModalContent = withDefaults(assistantModal_exports.Content, {
         | 
| 3787 | 
            +
              className: "aui-root aui-modal-content",
         | 
| 3788 | 
            +
              sideOffset: 16
         | 
| 3789 | 
            +
            });
         | 
| 3790 | 
            +
            AssistantModalContent.displayName = "AssistantModalContent";
         | 
| 3791 | 
            +
            var exports12 = {
         | 
| 3792 | 
            +
              Root: AssistantModalRoot,
         | 
| 3793 | 
            +
              Trigger: AssistantModalTrigger,
         | 
| 3794 | 
            +
              Content: AssistantModalContent
         | 
| 3795 | 
            +
            };
         | 
| 3796 | 
            +
            var assistant_modal_default = Object.assign(AssistantModal, exports12);
         | 
| 3797 | 
            +
             | 
| 2282 3798 | 
             
            // src/internal.ts
         | 
| 2283 3799 | 
             
            var internal_exports = {};
         | 
| 2284 3800 | 
             
            __export(internal_exports, {
         | 
| 2285 3801 | 
             
              BaseAssistantRuntime: () => BaseAssistantRuntime,
         | 
| 2286 3802 | 
             
              MessageRepository: () => MessageRepository,
         | 
| 2287 3803 | 
             
              ProxyConfigProvider: () => ProxyConfigProvider,
         | 
| 3804 | 
            +
              TooltipIconButton: () => TooltipIconButton,
         | 
| 2288 3805 | 
             
              useSmooth: () => useSmooth
         | 
| 2289 3806 | 
             
            });
         | 
| 2290 3807 | 
             
            // Annotate the CommonJS export names for ESM import in node:
         | 
| 2291 3808 | 
             
            0 && (module.exports = {
         | 
| 2292 3809 | 
             
              ActionBarPrimitive,
         | 
| 3810 | 
            +
              AssistantActionBar,
         | 
| 3811 | 
            +
              AssistantMessage,
         | 
| 3812 | 
            +
              AssistantModal,
         | 
| 2293 3813 | 
             
              AssistantModalPrimitive,
         | 
| 2294 3814 | 
             
              AssistantRuntimeProvider,
         | 
| 3815 | 
            +
              BranchPicker,
         | 
| 2295 3816 | 
             
              BranchPickerPrimitive,
         | 
| 3817 | 
            +
              Composer,
         | 
| 2296 3818 | 
             
              ComposerPrimitive,
         | 
| 3819 | 
            +
              ContentPart,
         | 
| 2297 3820 | 
             
              ContentPartPrimitive,
         | 
| 3821 | 
            +
              EditComposer,
         | 
| 2298 3822 | 
             
              INTERNAL,
         | 
| 2299 3823 | 
             
              MessagePrimitive,
         | 
| 3824 | 
            +
              Thread,
         | 
| 3825 | 
            +
              ThreadConfigProvider,
         | 
| 2300 3826 | 
             
              ThreadPrimitive,
         | 
| 3827 | 
            +
              ThreadWelcome,
         | 
| 3828 | 
            +
              UserActionBar,
         | 
| 3829 | 
            +
              UserMessage,
         | 
| 2301 3830 | 
             
              makeAssistantTool,
         | 
| 2302 3831 | 
             
              makeAssistantToolUI,
         | 
| 2303 3832 | 
             
              useActionBarCopy,
         | 
| @@ -2320,10 +3849,12 @@ __export(internal_exports, { | |
| 2320 3849 | 
             
              useContentPartDisplay,
         | 
| 2321 3850 | 
             
              useContentPartImage,
         | 
| 2322 3851 | 
             
              useContentPartText,
         | 
| 3852 | 
            +
              useEdgeRuntime,
         | 
| 2323 3853 | 
             
              useLocalRuntime,
         | 
| 2324 3854 | 
             
              useMessageContext,
         | 
| 2325 3855 | 
             
              useMessageIf,
         | 
| 2326 3856 | 
             
              useSwitchToNewThread,
         | 
| 3857 | 
            +
              useThreadConfig,
         | 
| 2327 3858 | 
             
              useThreadContext,
         | 
| 2328 3859 | 
             
              useThreadEmpty,
         | 
| 2329 3860 | 
             
              useThreadIf,
         |