@assistant-ui/react 0.15.7 → 0.15.9

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.
Files changed (25) hide show
  1. package/LICENSE +21 -0
  2. package/dist/client/ExternalThread.d.ts +3 -1
  3. package/dist/client/ExternalThread.d.ts.map +1 -1
  4. package/dist/client/ExternalThread.js +524 -335
  5. package/dist/client/ExternalThread.js.map +1 -1
  6. package/dist/legacy-runtime/cloud/auiV0.d.ts +1 -0
  7. package/dist/legacy-runtime/cloud/auiV0.d.ts.map +1 -1
  8. package/dist/legacy-runtime/cloud/auiV0.js +2 -1
  9. package/dist/legacy-runtime/cloud/auiV0.js.map +1 -1
  10. package/dist/legacy-runtime/runtime-cores/assistant-transport/useAssistantTransportRuntime.d.ts.map +1 -1
  11. package/dist/legacy-runtime/runtime-cores/assistant-transport/useAssistantTransportRuntime.js +2 -0
  12. package/dist/legacy-runtime/runtime-cores/assistant-transport/useAssistantTransportRuntime.js.map +1 -1
  13. package/dist/unstable/useLiveCompletionAdapter.js +32 -7
  14. package/dist/unstable/useLiveCompletionAdapter.js.map +1 -1
  15. package/dist/utils/useToolArgsFieldStatus.d.ts +2 -2
  16. package/package.json +13 -15
  17. package/src/client/ExternalThread.ts +172 -9
  18. package/src/legacy-runtime/cloud/auiV0.ts +8 -1
  19. package/src/legacy-runtime/runtime-cores/assistant-transport/useAssistantTransport.spec.md +1 -0
  20. package/src/legacy-runtime/runtime-cores/assistant-transport/useAssistantTransportRuntime.test.tsx +79 -0
  21. package/src/legacy-runtime/runtime-cores/assistant-transport/useAssistantTransportRuntime.ts +2 -0
  22. package/src/tests/external-thread-feedback.test.tsx +204 -0
  23. package/src/tests/external-thread-speech.test.tsx +328 -0
  24. package/src/unstable/useLiveCompletionAdapter.test.tsx +90 -0
  25. package/src/unstable/useLiveCompletionAdapter.ts +32 -7
@@ -1 +1 @@
1
- {"version":3,"file":"ExternalThread.js","names":["useState","useMemo","useEffect","useEffectEvent","useCallback","useRef","resource","withKey","ClientElement","ClientOutput","useClientLookup","attachTransformScopes","useClientResource","Derived","AddToolResultOptions","AppendMessage","Attachment","AttachmentAdapter","CreateAttachment","PendingAttachment","RespondToToolApprovalOptions","ResumeToolCallOptions","MessagePartStatus","ThreadAssistantMessagePart","ThreadUserMessagePart","ThreadMessage","ToolCallMessagePartStatus","ExternalThreadQueueAdapter","ExternalThreadBranchAdapter","QueuePlacement","ToolResponse","ReadonlyJSONValue","QueueItemState","ComposerSendOptions","fileMatchesAccept","getThreadMessageText","isCreateAttachment","resolveToolApprovalResponse","toMessagePartStatus","ModelContext","Suggestions","Tools","DataRenderers","SingleThreadList","EMPTY_QUEUE_ITEMS","EMPTY_BRANCH_IDS","ExternalThreadMessage","id","COMPLETE_STATUS","Object","freeze","type","derivePartStatus","message","partIndex","part","status","ExternalThreadProps","messages","isRunning","isLoading","state","extras","isSendDisabled","onNew","onEdit","onReload","parentId","onStartRun","onCancel","onResume","onAddToolResult","options","onResumeToolCall","onLoadExternalState","attachmentAdapter","queue","branches","onRespondToToolApproval","MessageClientProps","index","useMessageClient","t0","$","_c","isCopied","setIsCopied","isHovering","setIsHovering","isEditing","setIsEditing","t1","content","map","idx","PartResource","messageId","partClients","t2","attachments","t3","_temp2","attachmentClients","t4","Symbol","for","handleBeginEdit","t5","handleCancelEdit","t6","msg","sourceId","handleSendEdit","t7","ComposerClientResource","canCancel","onBeginEdit","onSend","composerClient","branchIds","t8","getBranches","indexOf","branchIndex","branchNumber","branchCount","length","t9","t10","isLast","speech","undefined","parts","composer","t11","t12","methods","t13","t14","t15","position","branchId","target","switchToBranch","t16","selector","get","findIndex","p","toolCallId","t17","selector_0","key","t18","getState","delete","_temp3","reload","speak","_temp4","stopSpeaking","_temp5","submitFeedback","_temp6","getCopyText","attachment","MessageClient","PartResourceProps","usePartResource","result","Error","response","toResponse","toolName","isError","artifact","modelContent","payload","response_0","approval","approved","resolution","addToolResult","resumeToolCall","respondToToolApproval","AttachmentResourceProps","onRemove","Promise","useAttachmentResource","remove","AttachmentResource","ComposerClientResourceProps","useQueueItemClient","item","onMove","placement","steer","lane","insertAfter","move","QueueItemClient","drainAdapterAdd","ReturnType","upsert","asyncIterator","useLiveState","initial","setState","ref","next","current","prev","T","set","const","useComposerClientResource","text","setText","textRef","role","setRole","roleRef","runConfig","setRunConfig","runConfigRef","setAttachments","attachmentsRef","quote","setQuote","quoteRef","textParts","filter","_temp7","messageText","_temp8","join","updateFromMessage","a","removed","all","_temp9","a_1","removePendingAttachments","attachment_0","prev_0","a_2","upsertAttachment","steerItems","laneItems","items","queueItems","queueItemClients","accept","isEmpty","trim","canSend","attachmentAccept","dictation","fileOrAttachment","file","name","contentType","add","newAttachment","Math","random","toString","substring","prev_1","newAttachment_0","prev_2","removed_0","removed_1","t19","opts","currentQuote","currentText","currentAttachments","isEmpty_0","dispatch","sendAttachments","composedMessage","createdAt","Date","startRun","metadata","custom","enqueue","attachment_1","send","then","error","prev_3","prev_4","prev_5","console","t20","t21","t22","addAttachment","clearAttachments","reset","cancel","beginEdit","startDictation","_temp0","stopDictation","_temp1","queueItem","dedupeMessagesById","seenIds","Set","deduped","i","has","warn","push","reverse","useExternalThread","messagesProp","threadState","messageIndex","m","handleReload","props","messageClients","handleCancelRun","at","handleSendNew","headId","message_0","message_1","composerQueue","hasQueue","hasBranches","hasEdit","hasReload","hasAttachments","_temp10","messageStates","edit","refetchThread","feedback","voice","switchBranchDuringRun","unstable_copy","isDisabled","capabilities","suggestions","message_2","appendMessage","t23","state_0","t24","t25","append","deleteMessage","_temp11","resumeRun","cancelRun","importExternalState","getModelContext","_temp12","export","_temp13","import","_temp14","_temp15","_temp16","connectVoice","_temp17","disconnectVoice","_temp18","getVoiceVolume","_temp19","subscribeVoiceVolume","_temp21","muteVoice","_temp22","unmuteVoice","_temp23","ExternalThread","scopes","parent","threads","source","threadElement","thread","query","aui","threadListItem","modelContext","tools","dataRenderers","_temp","part_0","a_0","s","arr","config","_temp20"],"sources":["../../src/client/ExternalThread.ts"],"sourcesContent":["import {\n useState,\n useMemo,\n useEffect,\n useEffectEvent,\n useCallback,\n useRef,\n} from \"react\";\nimport { resource, withKey } from \"@assistant-ui/tap\";\nimport {\n type ClientElement,\n type ClientOutput,\n useClientLookup,\n attachTransformScopes,\n useClientResource,\n Derived,\n} from \"@assistant-ui/store\";\n\nimport type {\n AddToolResultOptions,\n AppendMessage,\n Attachment,\n AttachmentAdapter,\n CreateAttachment,\n PendingAttachment,\n RespondToToolApprovalOptions,\n ResumeToolCallOptions,\n MessagePartStatus,\n ThreadAssistantMessagePart,\n ThreadUserMessagePart,\n ThreadMessage,\n ToolCallMessagePartStatus,\n ExternalThreadQueueAdapter,\n ExternalThreadBranchAdapter,\n QueuePlacement,\n} from \"@assistant-ui/core\";\nimport { ToolResponse } from \"assistant-stream\";\nimport type { ReadonlyJSONValue } from \"assistant-stream/utils\";\nimport type { QueueItemState } from \"@assistant-ui/core/store\";\nimport type { ComposerSendOptions } from \"@assistant-ui/core/store\";\nimport {\n fileMatchesAccept,\n getThreadMessageText,\n isCreateAttachment,\n resolveToolApprovalResponse,\n toMessagePartStatus,\n} from \"@assistant-ui/core/internal\";\nimport { ModelContext, Suggestions } from \"@assistant-ui/core/store\";\nimport { Tools, DataRenderers } from \"@assistant-ui/core/react\";\nimport { SingleThreadList } from \"./SingleThreadList\";\n\nconst EMPTY_QUEUE_ITEMS: readonly QueueItemState[] = [];\nconst EMPTY_BRANCH_IDS: readonly string[] = [];\n\nexport type ExternalThreadMessage = ThreadMessage & {\n id: string;\n};\n\nconst COMPLETE_STATUS: MessagePartStatus = Object.freeze({\n type: \"complete\",\n});\n\nconst derivePartStatus = (\n message: ExternalThreadMessage,\n partIndex: number,\n part: ThreadAssistantMessagePart | ThreadUserMessagePart,\n): ToolCallMessagePartStatus => {\n if (!message.status) return COMPLETE_STATUS;\n return toMessagePartStatus(message, partIndex, part);\n};\n\nexport type ExternalThreadProps = {\n messages: readonly ExternalThreadMessage[];\n isRunning?: boolean;\n isLoading?: boolean | undefined;\n state?: ReadonlyJSONValue | undefined;\n extras?: unknown;\n /**\n * Whether sending new messages is currently disabled. When `true`, the\n * thread composer's input remains usable but `send()` is a no-op and\n * `composer.canSend` is `false`. Edit composers (saving message edits)\n * intentionally ignore this flag.\n */\n isSendDisabled?: boolean;\n /**\n * Callback for new messages (non-queue runtimes).\n * @note Unused when `queue` is provided — new messages are routed through `queue.enqueue` instead.\n */\n onNew?: (message: AppendMessage) => void;\n onEdit?: (message: AppendMessage) => void;\n onReload?: (parentId: string | null) => void;\n onStartRun?: () => void;\n onCancel?: () => void;\n onResume?: (() => void) | undefined;\n onAddToolResult?: ((options: AddToolResultOptions) => void) | undefined;\n /** Callback for resuming a tool call that is waiting for human input. */\n onResumeToolCall?: ((options: ResumeToolCallOptions) => void) | undefined;\n onLoadExternalState?: ((state: unknown) => void) | undefined;\n attachmentAdapter?: AttachmentAdapter | undefined;\n /** Queue adapter for runtimes that support message queuing and steering. */\n queue?: ExternalThreadQueueAdapter;\n /** Branch adapter for runtimes that track sibling variants of messages. */\n branches?: ExternalThreadBranchAdapter;\n /** Callback for tool approval decisions. Absent: responding to an approval throws a capability error. */\n onRespondToToolApproval?: (options: RespondToToolApprovalOptions) => void;\n};\n\ntype MessageClientProps = {\n message: ExternalThreadMessage;\n index: number;\n parentId: string | null;\n onEdit?: (message: AppendMessage) => void;\n onReload?: () => void;\n queue?: ExternalThreadQueueAdapter | undefined;\n branches?: ExternalThreadBranchAdapter | undefined;\n onRespondToToolApproval?:\n | ((options: RespondToToolApprovalOptions) => void)\n | undefined;\n onAddToolResult?: ((options: AddToolResultOptions) => void) | undefined;\n onResumeToolCall?: ((options: ResumeToolCallOptions) => void) | undefined;\n attachmentAdapter?: AttachmentAdapter | undefined;\n};\n\n// Message Client - minimal implementation\nconst useMessageClient = ({\n message,\n index,\n parentId,\n onEdit,\n onReload,\n queue,\n branches,\n onRespondToToolApproval,\n onAddToolResult,\n onResumeToolCall,\n attachmentAdapter,\n}: MessageClientProps): ClientOutput<\"message\"> => {\n const [isCopied, setIsCopied] = useState(false);\n const [isHovering, setIsHovering] = useState(false);\n const [isEditing, setIsEditing] = useState(false);\n\n const partClients = useClientLookup(\n message.content.map((part, idx) =>\n withKey(\n idx,\n PartResource({\n part,\n status: derivePartStatus(message, idx, part),\n messageId: message.id,\n onRespondToToolApproval,\n onAddToolResult,\n onResumeToolCall,\n }),\n ),\n ),\n );\n\n const attachmentClients = useClientLookup(\n (message.attachments ?? []).map((attachment) =>\n withKey(\n attachment.id,\n AttachmentResource({\n attachment,\n onRemove: () => {},\n }),\n ),\n ),\n );\n\n const handleBeginEdit = () => {\n setIsEditing(true);\n };\n\n const handleCancelEdit = () => {\n setIsEditing(false);\n };\n\n const handleSendEdit = (msg: AppendMessage) => {\n onEdit?.({\n ...msg,\n parentId,\n sourceId: message.id,\n });\n setIsEditing(false);\n };\n\n const composerClient = useClientResource(\n ComposerClientResource({\n type: \"edit\",\n isEditing,\n canCancel: true,\n onCancel: handleCancelEdit,\n onBeginEdit: handleBeginEdit,\n onSend: handleSendEdit,\n message,\n queue,\n attachmentAdapter,\n }),\n );\n\n const branchIds = branches?.getBranches(message.id) ?? EMPTY_BRANCH_IDS;\n const branchIndex = branchIds.indexOf(message.id);\n const branchNumber = branchIndex === -1 ? 1 : branchIndex + 1;\n const branchCount = branchIndex === -1 ? 1 : branchIds.length;\n\n const state = useMemo(() => {\n return {\n ...message,\n attachments: message.attachments ?? [],\n parentId,\n isLast: false, // Will be set by thread\n branchNumber,\n branchCount,\n speech: undefined,\n parts: partClients.state,\n isCopied,\n isHovering,\n index,\n composer: composerClient.state,\n };\n }, [\n message,\n parentId,\n isCopied,\n isHovering,\n index,\n composerClient.state,\n partClients.state,\n branchNumber,\n branchCount,\n ]);\n\n return {\n getState: () => state,\n composer: () => composerClient.methods,\n delete: () => {},\n reload: () => {\n onReload?.();\n },\n speak: () => {},\n stopSpeaking: () => {},\n submitFeedback: () => {},\n switchToBranch: ({ position, branchId }) => {\n if (!branches) return;\n const target =\n branchId ??\n (branchIndex === -1\n ? undefined\n : position === \"previous\"\n ? branchIds[branchIndex - 1]\n : position === \"next\"\n ? branchIds[branchIndex + 1]\n : undefined);\n if (target !== undefined && target !== message.id)\n branches.switchToBranch(target);\n },\n getCopyText: () => getThreadMessageText(message),\n part: (selector) => {\n if (\"index\" in selector) {\n return partClients.get(selector);\n }\n const partIndex = state.parts.findIndex(\n (p) => p.type === \"tool-call\" && p.toolCallId === selector.toolCallId,\n );\n return partClients.get({ index: partIndex });\n },\n attachment: (selector) => {\n if (\"id\" in selector) {\n return attachmentClients.get({ key: selector.id });\n }\n return attachmentClients.get(selector);\n },\n setIsCopied,\n setIsHovering,\n };\n};\n\nconst MessageClient = resource(useMessageClient);\n\ntype PartResourceProps = {\n part: ThreadAssistantMessagePart | ThreadUserMessagePart;\n status: ToolCallMessagePartStatus;\n messageId: string;\n onRespondToToolApproval?:\n | ((options: RespondToToolApprovalOptions) => void)\n | undefined;\n onAddToolResult?: ((options: AddToolResultOptions) => void) | undefined;\n onResumeToolCall?: ((options: ResumeToolCallOptions) => void) | undefined;\n};\n\n// Part Client - minimal implementation\nconst usePartResource = ({\n part,\n status,\n messageId,\n onRespondToToolApproval,\n onAddToolResult,\n onResumeToolCall,\n}: PartResourceProps): ClientOutput<\"part\"> => {\n const state = useMemo(\n () => ({ ...part, status: status as MessagePartStatus }),\n [part, status],\n );\n\n return {\n getState: () => state,\n addToolResult: (result) => {\n if (!onAddToolResult)\n throw new Error(\n \"Runtime does not support tool results (onAddToolResult is not set).\",\n );\n if (part.type !== \"tool-call\")\n throw new Error(\"Tried to add tool result on non-tool message part\");\n\n const response = ToolResponse.toResponse(result);\n onAddToolResult({\n messageId,\n toolName: part.toolName,\n toolCallId: part.toolCallId,\n result: response.result as ReadonlyJSONValue,\n isError: response.isError,\n ...(response.artifact !== undefined && { artifact: response.artifact }),\n ...(response.modelContent !== undefined && {\n modelContent: response.modelContent,\n }),\n });\n },\n resumeToolCall: (payload) => {\n if (!onResumeToolCall)\n throw new Error(\n \"Runtime does not support resuming tool calls (onResumeToolCall is not set).\",\n );\n if (part.type !== \"tool-call\")\n throw new Error(\"Tried to resume tool call on non-tool message part\");\n\n onResumeToolCall({ toolCallId: part.toolCallId, payload });\n },\n respondToToolApproval: (response) => {\n if (!onRespondToToolApproval)\n throw new Error(\"Runtime does not support tool approvals.\");\n\n if (part.type !== \"tool-call\")\n throw new Error(\n \"Tried to respond to tool approval on non-tool message part\",\n );\n\n if (\n !part.approval ||\n part.approval.approved !== undefined ||\n part.approval.resolution !== undefined\n )\n throw new Error(\"Tool call has no pending approval\");\n\n onRespondToToolApproval(\n resolveToolApprovalResponse(part.approval, response),\n );\n },\n };\n};\n\nconst PartResource = resource(usePartResource);\n\ntype AttachmentResourceProps = {\n attachment: Attachment;\n onRemove?: () => void | Promise<void>;\n};\n\n// Attachment Client - minimal implementation\nconst useAttachmentResource = ({\n attachment,\n onRemove,\n}: AttachmentResourceProps): ClientOutput<\"attachment\"> => {\n return {\n getState: () => attachment,\n remove: async () => {\n await onRemove?.();\n },\n };\n};\n\nconst AttachmentResource = resource(useAttachmentResource);\n\ntype ComposerClientResourceProps = {\n type: \"thread\" | \"edit\";\n isEditing: boolean;\n canCancel: boolean;\n isSendDisabled?: boolean;\n onCancel: () => void;\n onBeginEdit?: () => void;\n onSend?: (message: AppendMessage) => void;\n message?: ExternalThreadMessage;\n queue?: ExternalThreadQueueAdapter | undefined;\n attachmentAdapter?: AttachmentAdapter | undefined;\n};\n\nconst useQueueItemClient = ({\n item,\n onMove,\n onRemove,\n}: {\n item: QueueItemState;\n onMove: (placement: QueuePlacement) => void;\n onRemove: () => void;\n}): ClientOutput<\"queueItem\"> => {\n return {\n getState: () => item,\n steer: () => onMove({ lane: \"steer\", insertAfter: null }),\n move: onMove,\n remove: onRemove,\n };\n};\n\nconst QueueItemClient = resource(useQueueItemClient);\n\nconst drainAdapterAdd = async (\n result: ReturnType<AttachmentAdapter[\"add\"]>,\n upsert: (attachment: Attachment) => void,\n) => {\n if (Symbol.asyncIterator in result) {\n for await (const attachment of result) {\n upsert(attachment);\n }\n } else {\n upsert(await result);\n }\n};\n\n// State whose setter tracks the latest value in a ref, so imperative\n// call sequences (setText immediately followed by send) observe the write\n// before React re-renders — legacy composer parity.\nconst useLiveState = <T>(initial: T) => {\n const [state, setState] = useState(initial);\n const ref = useRef(state);\n const set = useCallback((next: T | ((prev: T) => T)) => {\n ref.current =\n typeof next === \"function\" ? (next as (prev: T) => T)(ref.current) : next;\n setState(ref.current);\n }, []);\n return [state, set, ref] as const;\n};\n\n// Composer Client - minimal implementation\nconst useComposerClientResource = ({\n type,\n isEditing,\n canCancel,\n isSendDisabled = false,\n onCancel,\n onBeginEdit,\n onSend,\n message,\n queue,\n attachmentAdapter,\n}: ComposerClientResourceProps): ClientOutput<\"composer\"> => {\n const [text, setText, textRef] = useLiveState(\"\");\n const [role, setRole, roleRef] = useLiveState<\n \"user\" | \"assistant\" | \"system\"\n >(\"user\");\n const [runConfig, setRunConfig, runConfigRef] = useLiveState<\n Record<string, unknown>\n >({});\n const [attachments, setAttachments, attachmentsRef] = useLiveState<\n readonly Attachment[]\n >([]);\n const [quote, setQuote, quoteRef] = useLiveState<\n { readonly text: string; readonly messageId: string } | undefined\n >(undefined);\n\n // Update composer values when editing begins\n const updateFromMessage = useEffectEvent(() => {\n if (message) {\n // Extract text from message content (text parts only)\n const textParts = message.content.filter((part) => part.type === \"text\");\n const messageText = textParts\n .map((part) => (\"text\" in part ? part.text : \"\"))\n .join(\"\\n\\n\");\n\n setText(messageText);\n setRole(message.role);\n setAttachments(message.attachments ?? []);\n }\n });\n\n useEffect(() => {\n if (isEditing) {\n updateFromMessage();\n }\n }, [isEditing]);\n\n const attachmentClients = useClientLookup(\n attachments.map((attachment) =>\n withKey(\n attachment.id,\n AttachmentResource({\n attachment,\n onRemove: async () => {\n await attachmentAdapter?.remove(attachment);\n setAttachments((prev) =>\n prev.filter((a) => a.id !== attachment.id),\n );\n },\n }),\n ),\n ),\n );\n\n const removePendingAttachments = async (removed: readonly Attachment[]) => {\n if (!attachmentAdapter) return;\n await Promise.all(\n removed\n .filter((a) => a.status.type !== \"complete\")\n .map((a) => attachmentAdapter.remove(a)),\n );\n };\n\n const upsertAttachment = (attachment: Attachment) => {\n setAttachments((prev) => {\n const idx = prev.findIndex((a) => a.id === attachment.id);\n if (idx === -1) return [...prev, attachment];\n const next = [...prev];\n next[idx] = attachment;\n return next;\n });\n };\n\n const steerItems = queue?.steerItems ?? EMPTY_QUEUE_ITEMS;\n const laneItems = queue?.items ?? EMPTY_QUEUE_ITEMS;\n const queueItems = useMemo(\n () =>\n steerItems.length === 0\n ? laneItems\n : laneItems.length === 0\n ? steerItems\n : [...steerItems, ...laneItems],\n [steerItems, laneItems],\n );\n const queueItemClients = useClientLookup(\n queueItems.map((item) =>\n withKey(\n item.id,\n QueueItemClient({\n item,\n onMove: (placement) => queue?.move(item.id, placement),\n onRemove: () => queue?.remove(item.id),\n }),\n ),\n ),\n );\n\n const state = useMemo(() => {\n const isEmpty = !text.trim() && !attachments.length;\n return {\n text,\n role,\n attachments: attachmentClients.state,\n runConfig,\n isEditing,\n canCancel,\n canSend: isEditing && !isEmpty && !isSendDisabled,\n attachmentAccept: attachmentAdapter?.accept ?? \"*\",\n isEmpty,\n type,\n dictation: undefined,\n quote,\n queue: queueItems,\n };\n }, [\n text,\n role,\n attachmentClients.state,\n runConfig,\n isEditing,\n canCancel,\n isSendDisabled,\n type,\n attachments.length,\n quote,\n queueItems,\n attachmentAdapter?.accept,\n ]);\n\n return {\n getState: () => state,\n setText,\n setRole,\n setRunConfig,\n addAttachment: async (fileOrAttachment: File | CreateAttachment) => {\n if (attachmentAdapter) {\n const file = isCreateAttachment(fileOrAttachment)\n ? {\n name: fileOrAttachment.name,\n type: fileOrAttachment.contentType ?? \"\",\n }\n : { name: fileOrAttachment.name, type: fileOrAttachment.type };\n if (!fileMatchesAccept(file, attachmentAdapter.accept))\n throw new Error(\n `File type ${file.type || \"unknown\"} is not accepted. Accepted types: ${attachmentAdapter.accept}`,\n );\n }\n if (!isCreateAttachment(fileOrAttachment) && attachmentAdapter) {\n await drainAdapterAdd(\n attachmentAdapter.add({ file: fileOrAttachment }),\n upsertAttachment,\n );\n } else if (!isCreateAttachment(fileOrAttachment)) {\n const newAttachment: Attachment = {\n id: Math.random().toString(36).substring(7),\n type: \"file\",\n name: fileOrAttachment.name,\n contentType: fileOrAttachment.type,\n file: fileOrAttachment,\n status: { type: \"complete\" },\n content: [],\n };\n setAttachments((prev) => [...prev, newAttachment]);\n } else {\n const newAttachment: Attachment = {\n id: fileOrAttachment.id ?? Math.random().toString(36).substring(7),\n type: fileOrAttachment.type ?? \"document\",\n name: fileOrAttachment.name,\n contentType: fileOrAttachment.contentType,\n content: fileOrAttachment.content,\n status: { type: \"complete\" },\n };\n setAttachments((prev) => [...prev, newAttachment]);\n }\n },\n clearAttachments: async () => {\n const removed = attachmentsRef.current;\n setAttachments([]);\n await removePendingAttachments(removed);\n },\n attachment: (selector) => {\n if (\"id\" in selector) {\n return attachmentClients.get({ key: selector.id });\n }\n return attachmentClients.get(selector);\n },\n reset: async () => {\n const removed = attachmentsRef.current;\n setText(\"\");\n setRole(\"user\");\n setRunConfig({});\n setAttachments([]);\n setQuote(undefined);\n await removePendingAttachments(removed);\n },\n send: (opts?: ComposerSendOptions) => {\n const currentQuote = quoteRef.current;\n const currentText = textRef.current;\n const currentAttachments = attachmentsRef.current;\n const isEmpty = !currentText.trim() && !currentAttachments.length;\n if (!isEditing || isEmpty || isSendDisabled) return;\n\n setText(\"\");\n setAttachments([]);\n setQuote(undefined);\n\n const dispatch = (sendAttachments: readonly Attachment[]) => {\n const composedMessage: AppendMessage = {\n role: roleRef.current,\n content: currentText\n ? [{ type: \"text\" as const, text: currentText }]\n : [],\n attachments: sendAttachments as any,\n createdAt: new Date(),\n parentId: null,\n sourceId: null,\n runConfig: runConfigRef.current,\n startRun: opts?.startRun,\n metadata: {\n custom: { ...(currentQuote ? { quote: currentQuote } : {}) },\n },\n };\n // edit sends carry a sourceId contract; only thread sends queue\n if (queue && type === \"thread\") {\n if (opts?.steer ?? canCancel) queue.steer(composedMessage);\n else queue.enqueue(composedMessage);\n } else {\n onSend?.(composedMessage);\n }\n };\n\n if (attachmentAdapter && currentAttachments.length > 0) {\n void Promise.all(\n currentAttachments.map((attachment) =>\n attachment.status.type === \"complete\"\n ? attachment\n : attachmentAdapter.send(attachment as PendingAttachment),\n ),\n ).then(dispatch, (error) => {\n // Upload failed: merge the failed send back into the draft.\n setText((prev) =>\n currentText && prev\n ? currentText + \"\\n\" + prev\n : currentText || prev,\n );\n setQuote((prev) => prev ?? currentQuote);\n setAttachments((prev) => [...currentAttachments, ...prev]);\n console.error(\"Failed to send attachments\", error);\n });\n } else {\n dispatch(currentAttachments);\n }\n },\n cancel: onCancel,\n beginEdit: () => {\n onBeginEdit?.();\n },\n startDictation: () => {},\n stopDictation: () => {},\n setQuote,\n queueItem: (selector: { index: number } | { id: string }) => {\n if (\"id\" in selector) {\n return queueItemClients.get({ key: selector.id });\n }\n return queueItemClients.get(selector);\n },\n };\n};\n\nconst ComposerClientResource = resource(useComposerClientResource);\n\nconst dedupeMessagesById = (messages: readonly ExternalThreadMessage[]) => {\n const seenIds = new Set<string>();\n const deduped: ExternalThreadMessage[] = [];\n for (let i = messages.length - 1; i >= 0; i--) {\n const message = messages[i]!;\n if (seenIds.has(message.id)) {\n console.warn(\n `ExternalThread: duplicate message id \"${message.id}\" in the provided messages array; keeping the last occurrence.`,\n );\n continue;\n }\n seenIds.add(message.id);\n deduped.push(message);\n }\n return deduped.length === messages.length ? messages : deduped.reverse();\n};\n\n// External Thread Client\nconst useExternalThread = ({\n messages: messagesProp,\n isRunning = false,\n isLoading = false,\n state: threadState,\n extras,\n isSendDisabled = false,\n onNew,\n onEdit,\n onReload,\n onStartRun,\n onCancel,\n onResume,\n onAddToolResult,\n onResumeToolCall,\n onLoadExternalState,\n attachmentAdapter,\n queue,\n branches,\n onRespondToToolApproval,\n}: ExternalThreadProps): ClientOutput<\"thread\"> => {\n const messages = useMemo(\n () => dedupeMessagesById(messagesProp),\n [messagesProp],\n );\n\n const handleReload = (messageId: string) => {\n const messageIndex = messages.findIndex((m) => m.id === messageId);\n if (messageIndex === -1) return;\n\n const parentId = messageIndex > 0 ? messages[messageIndex - 1]!.id : null;\n onReload?.(parentId);\n };\n\n const messageClients = useClientLookup(\n messages.map((msg, index) => {\n const props: MessageClientProps = {\n message: msg,\n index,\n parentId: index > 0 ? messages[index - 1]!.id : null,\n onReload: () => handleReload(msg.id),\n queue,\n branches,\n onRespondToToolApproval,\n onAddToolResult,\n onResumeToolCall,\n attachmentAdapter,\n };\n if (onEdit) props.onEdit = onEdit;\n return withKey(msg.id, MessageClient(props));\n }),\n );\n\n const handleCancelRun = () => {\n onCancel?.();\n };\n\n const handleSendNew = (message: AppendMessage) => {\n // The composer does not know the thread; stamp the current head as the\n // parent (legacy composer parity).\n onNew?.({ ...message, parentId: messages.at(-1)?.id ?? null });\n };\n\n const headId = messages.at(-1)?.id ?? null;\n const composerQueue = useMemo(\n (): ExternalThreadQueueAdapter | undefined =>\n queue && {\n ...queue,\n enqueue: (message) =>\n queue.enqueue({ ...message, parentId: message.parentId ?? headId }),\n steer: (message) =>\n queue.steer({ ...message, parentId: message.parentId ?? headId }),\n },\n [queue, headId],\n );\n\n const composerClient = useClientResource(\n ComposerClientResource({\n type: \"thread\",\n isEditing: true,\n canCancel: isRunning,\n isSendDisabled,\n onCancel: handleCancelRun,\n onSend: handleSendNew,\n queue: composerQueue,\n attachmentAdapter,\n }),\n );\n\n const hasQueue = !!queue;\n const hasBranches = !!branches;\n const hasEdit = !!onEdit;\n const hasReload = !!onReload;\n const hasAttachments = !!attachmentAdapter;\n const state = useMemo(() => {\n const messageStates = messageClients.state.map((s, idx, arr) => ({\n ...s,\n isLast: idx === arr.length - 1,\n }));\n\n return {\n isEmpty: messages.length === 0,\n isDisabled: false,\n isLoading,\n isRunning,\n capabilities: {\n edit: hasEdit,\n delete: false,\n reload: hasReload,\n refetchThread: false,\n cancel: isRunning,\n speech: false,\n attachments: hasAttachments,\n feedback: false,\n voice: false,\n switchToBranch: hasBranches,\n switchBranchDuringRun: false,\n unstable_copy: false,\n dictation: false,\n queue: hasQueue,\n },\n messages: messageStates,\n state: threadState ?? {},\n suggestions: [],\n extras,\n speech: undefined,\n voice: undefined,\n composer: composerClient.state,\n };\n }, [\n messages,\n isRunning,\n isLoading,\n threadState,\n extras,\n hasQueue,\n hasBranches,\n hasEdit,\n hasReload,\n hasAttachments,\n messageClients.state,\n composerClient.state,\n ]);\n\n return {\n getState: () => state,\n composer: () => composerClient.methods,\n append: (message) => {\n const appendMessage: AppendMessage =\n typeof message === \"string\"\n ? {\n createdAt: new Date(),\n parentId: messages.at(-1)?.id ?? null,\n sourceId: null,\n runConfig: {},\n role: \"user\",\n content: [{ type: \"text\", text: message }],\n attachments: [],\n metadata: { custom: {} },\n }\n : {\n createdAt: message.createdAt ?? new Date(),\n parentId: message.parentId ?? messages.at(-1)?.id ?? null,\n sourceId: message.sourceId ?? null,\n role: message.role ?? \"user\",\n content: message.content,\n attachments: message.attachments ?? [],\n metadata: message.metadata ?? { custom: {} },\n runConfig: message.runConfig ?? {},\n startRun: message.startRun,\n };\n if (queue) {\n queue.enqueue(appendMessage);\n } else {\n onNew?.(appendMessage);\n }\n },\n deleteMessage: () => {},\n startRun: () => {\n onStartRun?.();\n },\n resumeRun: () => {\n if (!onResume)\n throw new Error(\n \"Runtime does not support resuming runs (onResume is not set).\",\n );\n onResume();\n },\n cancelRun: handleCancelRun,\n importExternalState: (state: unknown) => {\n if (!onLoadExternalState)\n throw new Error(\n \"Runtime does not support importing external states (onLoadExternalState is not set).\",\n );\n onLoadExternalState(state);\n },\n getModelContext: () => ({ tools: {}, config: {} }),\n export: () => ({ messages: [] }),\n import: () => {},\n reset: () => {},\n message: (selector) => {\n if (\"id\" in selector) {\n return messageClients.get({ key: selector.id });\n }\n return messageClients.get(selector);\n },\n stopSpeaking: () => {},\n connectVoice: () => {},\n disconnectVoice: () => {},\n getVoiceVolume: () => 0,\n subscribeVoiceVolume: () => () => {},\n muteVoice: () => {},\n unmuteVoice: () => {},\n };\n};\n\nexport const ExternalThread = resource(useExternalThread);\n\nattachTransformScopes(useExternalThread, (scopes, parent) => {\n if (!scopes.threads && parent.threads.source === null) {\n const threadElement = scopes.thread as ClientElement<\"thread\">;\n scopes.threads = SingleThreadList({ thread: threadElement });\n // scopes mount in key order; re-declare thread after the threads source it resolves from\n delete scopes.thread;\n scopes.thread = Derived({\n source: \"threads\",\n query: { type: \"main\" },\n get: (aui) => aui.threads.thread(\"main\"),\n });\n }\n\n if (!scopes.threadListItem && parent.threadListItem.source === null) {\n scopes.threadListItem = Derived({\n source: \"threads\",\n query: { type: \"main\" },\n get: (aui) => aui.threads.item(\"main\"),\n });\n }\n\n scopes.composer ??= Derived({\n source: \"thread\",\n query: {},\n get: (aui) => aui.thread.composer(),\n });\n\n if (!scopes.modelContext && parent.modelContext.source === null) {\n scopes.modelContext = ModelContext();\n }\n if (!scopes.tools && parent.tools.source === null) {\n scopes.tools = Tools({});\n }\n if (!scopes.dataRenderers && parent.dataRenderers.source === null) {\n scopes.dataRenderers = DataRenderers();\n }\n if (!scopes.suggestions && parent.suggestions.source === null) {\n scopes.suggestions = Suggestions();\n }\n});\n"],"mappings":"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"}
1
+ {"version":3,"file":"ExternalThread.js","names":["useState","useMemo","useEffect","useEffectEvent","useCallback","useRef","resource","withKey","ClientElement","ClientOutput","useClientLookup","attachTransformScopes","useClientResource","Derived","AddToolResultOptions","AppendMessage","Attachment","AttachmentAdapter","CreateAttachment","PendingAttachment","RespondToToolApprovalOptions","ResumeToolCallOptions","MessagePartStatus","ThreadAssistantMessagePart","ThreadUserMessagePart","ThreadMessage","ToolCallMessagePartStatus","ExternalThreadQueueAdapter","ExternalThreadBranchAdapter","QueuePlacement","FeedbackAdapter","SpeechState","SpeechSynthesisAdapter","ToolResponse","ReadonlyJSONValue","QueueItemState","ComposerSendOptions","fileMatchesAccept","getThreadMessageText","isCreateAttachment","resolveToolApprovalResponse","toMessagePartStatus","ModelContext","Suggestions","Tools","DataRenderers","SingleThreadList","EMPTY_QUEUE_ITEMS","EMPTY_BRANCH_IDS","ExternalThreadMessage","id","COMPLETE_STATUS","Object","freeze","type","derivePartStatus","message","partIndex","part","status","ExternalThreadProps","messages","isRunning","isLoading","state","extras","isSendDisabled","onNew","onEdit","onReload","parentId","onStartRun","onCancel","onResume","onAddToolResult","options","onResumeToolCall","onLoadExternalState","attachmentAdapter","feedbackAdapter","speechAdapter","queue","branches","onRespondToToolApproval","MessageClientProps","index","submittedFeedback","onSubmitFeedback","feedback","speech","onSpeak","onStopSpeaking","useMessageClient","t0","$","_c","isCopied","setIsCopied","isHovering","setIsHovering","isEditing","setIsEditing","t1","content","map","idx","PartResource","messageId","partClients","t2","attachments","t3","_temp2","attachmentClients","t4","Symbol","for","handleBeginEdit","t5","handleCancelEdit","t6","msg","sourceId","handleSendEdit","t7","ComposerClientResource","canCancel","onBeginEdit","onSend","composerClient","branchIds","t8","getBranches","indexOf","branchIndex","branchNumber","branchCount","length","t9","role","metadata","messageWithFeedback","t10","t11","isLast","parts","composer","t12","t13","methods","t14","t15","t16","position","branchId","target","undefined","switchToBranch","t17","selector","get","findIndex","p","toolCallId","t18","selector_0","key","t19","getState","delete","_temp3","reload","speak","stopSpeaking","submitFeedback","getCopyText","attachment","MessageClient","PartResourceProps","usePartResource","result","Error","response","toResponse","toolName","isError","artifact","modelContent","payload","response_0","approval","approved","resolution","addToolResult","resumeToolCall","respondToToolApproval","AttachmentResourceProps","onRemove","Promise","useAttachmentResource","remove","AttachmentResource","ComposerClientResourceProps","useQueueItemClient","item","onMove","placement","steer","lane","insertAfter","move","QueueItemClient","drainAdapterAdd","ReturnType","upsert","asyncIterator","useLiveState","initial","setState","ref","next","current","prev","T","set","const","useComposerClientResource","text","setText","textRef","setRole","roleRef","runConfig","setRunConfig","runConfigRef","setAttachments","attachmentsRef","quote","setQuote","quoteRef","textParts","filter","_temp4","messageText","_temp5","join","updateFromMessage","a","removed","all","_temp6","a_1","removePendingAttachments","attachment_0","prev_0","a_2","upsertAttachment","steerItems","laneItems","items","queueItems","queueItemClients","accept","isEmpty","trim","canSend","attachmentAccept","dictation","fileOrAttachment","file","name","contentType","add","newAttachment","Math","random","toString","substring","prev_1","newAttachment_0","prev_2","removed_0","removed_1","opts","currentQuote","currentText","currentAttachments","isEmpty_0","dispatch","sendAttachments","composedMessage","createdAt","Date","startRun","custom","enqueue","attachment_1","send","then","error","prev_3","prev_4","prev_5","console","t20","t21","t22","addAttachment","clearAttachments","reset","cancel","beginEdit","startDictation","_temp7","stopDictation","_temp8","queueItem","createSpeechController","notify","session","clear","adapter","utterance","unsub","subscribe","stop","stopMessage","dispose","dedupeMessagesById","seenIds","Set","deduped","i","has","warn","push","reverse","useExternalThread","messagesProp","threadState","setSubmittedFeedback","entry","external","feedbackFor","live","entries","entry_0","msg_0","find","m","keys","fromEntries","submit","handleSubmitFeedback","speechState","setSpeech","speechController","hasSpeechAdapter","message_0","handleSpeak","messageIndex","m_0","handleReload","msg_1","props","messageClients","handleCancelRun","message_1","at","handleSendNew","headId","message_2","message_3","composerQueue","hasQueue","hasBranches","hasEdit","hasReload","hasAttachments","hasFeedback","hasSpeech","t23","_temp9","messageStates","t24","t25","edit","refetchThread","voice","switchBranchDuringRun","unstable_copy","t26","t27","t28","isDisabled","capabilities","suggestions","t29","t30","t31","message_4","appendMessage","t32","t33","t34","state_0","t35","t36","append","deleteMessage","_temp0","resumeRun","cancelRun","importExternalState","getModelContext","_temp1","export","_temp10","import","_temp11","_temp12","connectVoice","_temp13","disconnectVoice","_temp14","getVoiceVolume","_temp15","subscribeVoiceVolume","_temp17","muteVoice","_temp18","unmuteVoice","_temp19","ExternalThread","scopes","parent","threads","source","threadElement","thread","query","aui","threadListItem","modelContext","tools","dataRenderers","_temp","part_0","a_0","s","arr","config","_temp16"],"sources":["../../src/client/ExternalThread.ts"],"sourcesContent":["import {\n useState,\n useMemo,\n useEffect,\n useEffectEvent,\n useCallback,\n useRef,\n} from \"react\";\nimport { resource, withKey } from \"@assistant-ui/tap\";\nimport {\n type ClientElement,\n type ClientOutput,\n useClientLookup,\n attachTransformScopes,\n useClientResource,\n Derived,\n} from \"@assistant-ui/store\";\n\nimport type {\n AddToolResultOptions,\n AppendMessage,\n Attachment,\n AttachmentAdapter,\n CreateAttachment,\n PendingAttachment,\n RespondToToolApprovalOptions,\n ResumeToolCallOptions,\n MessagePartStatus,\n ThreadAssistantMessagePart,\n ThreadUserMessagePart,\n ThreadMessage,\n ToolCallMessagePartStatus,\n ExternalThreadQueueAdapter,\n ExternalThreadBranchAdapter,\n QueuePlacement,\n FeedbackAdapter,\n SpeechState,\n SpeechSynthesisAdapter,\n} from \"@assistant-ui/core\";\nimport { ToolResponse } from \"assistant-stream\";\nimport type { ReadonlyJSONValue } from \"assistant-stream/utils\";\nimport type { QueueItemState } from \"@assistant-ui/core/store\";\nimport type { ComposerSendOptions } from \"@assistant-ui/core/store\";\nimport {\n fileMatchesAccept,\n getThreadMessageText,\n isCreateAttachment,\n resolveToolApprovalResponse,\n toMessagePartStatus,\n} from \"@assistant-ui/core/internal\";\nimport { ModelContext, Suggestions } from \"@assistant-ui/core/store\";\nimport { Tools, DataRenderers } from \"@assistant-ui/core/react\";\nimport { SingleThreadList } from \"./SingleThreadList\";\n\nconst EMPTY_QUEUE_ITEMS: readonly QueueItemState[] = [];\nconst EMPTY_BRANCH_IDS: readonly string[] = [];\n\nexport type ExternalThreadMessage = ThreadMessage & {\n id: string;\n};\n\nconst COMPLETE_STATUS: MessagePartStatus = Object.freeze({\n type: \"complete\",\n});\n\nconst derivePartStatus = (\n message: ExternalThreadMessage,\n partIndex: number,\n part: ThreadAssistantMessagePart | ThreadUserMessagePart,\n): ToolCallMessagePartStatus => {\n if (!message.status) return COMPLETE_STATUS;\n return toMessagePartStatus(message, partIndex, part);\n};\n\nexport type ExternalThreadProps = {\n messages: readonly ExternalThreadMessage[];\n isRunning?: boolean;\n isLoading?: boolean | undefined;\n state?: ReadonlyJSONValue | undefined;\n extras?: unknown;\n /**\n * Whether sending new messages is currently disabled. When `true`, the\n * thread composer's input remains usable but `send()` is a no-op and\n * `composer.canSend` is `false`. Edit composers (saving message edits)\n * intentionally ignore this flag.\n */\n isSendDisabled?: boolean;\n /**\n * Callback for new messages (non-queue runtimes).\n * @note Unused when `queue` is provided — new messages are routed through `queue.enqueue` instead.\n */\n onNew?: (message: AppendMessage) => void;\n onEdit?: (message: AppendMessage) => void;\n onReload?: (parentId: string | null) => void;\n onStartRun?: () => void;\n onCancel?: () => void;\n onResume?: (() => void) | undefined;\n onAddToolResult?: ((options: AddToolResultOptions) => void) | undefined;\n /** Callback for resuming a tool call that is waiting for human input. */\n onResumeToolCall?: ((options: ResumeToolCallOptions) => void) | undefined;\n onLoadExternalState?: ((state: unknown) => void) | undefined;\n attachmentAdapter?: AttachmentAdapter | undefined;\n feedbackAdapter?: FeedbackAdapter | undefined;\n speechAdapter?: SpeechSynthesisAdapter | undefined;\n /** Queue adapter for runtimes that support message queuing and steering. */\n queue?: ExternalThreadQueueAdapter;\n /** Branch adapter for runtimes that track sibling variants of messages. */\n branches?: ExternalThreadBranchAdapter;\n /** Callback for tool approval decisions. Absent: responding to an approval throws a capability error. */\n onRespondToToolApproval?: (options: RespondToToolApprovalOptions) => void;\n};\n\ntype MessageClientProps = {\n message: ExternalThreadMessage;\n index: number;\n parentId: string | null;\n onEdit?: (message: AppendMessage) => void;\n onReload?: () => void;\n queue?: ExternalThreadQueueAdapter | undefined;\n branches?: ExternalThreadBranchAdapter | undefined;\n onRespondToToolApproval?:\n | ((options: RespondToToolApprovalOptions) => void)\n | undefined;\n onAddToolResult?: ((options: AddToolResultOptions) => void) | undefined;\n onResumeToolCall?: ((options: ResumeToolCallOptions) => void) | undefined;\n attachmentAdapter?: AttachmentAdapter | undefined;\n submittedFeedback: \"positive\" | \"negative\" | undefined;\n onSubmitFeedback: (feedback: { type: \"positive\" | \"negative\" }) => void;\n speech: SpeechState | undefined;\n onSpeak: () => void;\n onStopSpeaking: () => void;\n};\n\n// Message Client - minimal implementation\nconst useMessageClient = ({\n message,\n index,\n parentId,\n onEdit,\n onReload,\n queue,\n branches,\n onRespondToToolApproval,\n onAddToolResult,\n onResumeToolCall,\n attachmentAdapter,\n submittedFeedback,\n onSubmitFeedback,\n speech,\n onSpeak,\n onStopSpeaking,\n}: MessageClientProps): ClientOutput<\"message\"> => {\n const [isCopied, setIsCopied] = useState(false);\n const [isHovering, setIsHovering] = useState(false);\n const [isEditing, setIsEditing] = useState(false);\n\n const partClients = useClientLookup(\n message.content.map((part, idx) =>\n withKey(\n idx,\n PartResource({\n part,\n status: derivePartStatus(message, idx, part),\n messageId: message.id,\n onRespondToToolApproval,\n onAddToolResult,\n onResumeToolCall,\n }),\n ),\n ),\n );\n\n const attachmentClients = useClientLookup(\n (message.attachments ?? []).map((attachment) =>\n withKey(\n attachment.id,\n AttachmentResource({\n attachment,\n onRemove: () => {},\n }),\n ),\n ),\n );\n\n const handleBeginEdit = () => {\n setIsEditing(true);\n };\n\n const handleCancelEdit = () => {\n setIsEditing(false);\n };\n\n const handleSendEdit = (msg: AppendMessage) => {\n onEdit?.({\n ...msg,\n parentId,\n sourceId: message.id,\n });\n setIsEditing(false);\n };\n\n const composerClient = useClientResource(\n ComposerClientResource({\n type: \"edit\",\n isEditing,\n canCancel: true,\n onCancel: handleCancelEdit,\n onBeginEdit: handleBeginEdit,\n onSend: handleSendEdit,\n message,\n queue,\n attachmentAdapter,\n }),\n );\n\n const branchIds = branches?.getBranches(message.id) ?? EMPTY_BRANCH_IDS;\n const branchIndex = branchIds.indexOf(message.id);\n const branchNumber = branchIndex === -1 ? 1 : branchIndex + 1;\n const branchCount = branchIndex === -1 ? 1 : branchIds.length;\n\n const state = useMemo(() => {\n const messageWithFeedback: ExternalThreadMessage =\n submittedFeedback && message.role === \"assistant\"\n ? {\n ...message,\n metadata: {\n ...message.metadata,\n submittedFeedback: { type: submittedFeedback },\n },\n }\n : message;\n return {\n ...messageWithFeedback,\n attachments: message.attachments ?? [],\n parentId,\n isLast: false, // Will be set by thread\n branchNumber,\n branchCount,\n speech,\n parts: partClients.state,\n isCopied,\n isHovering,\n index,\n composer: composerClient.state,\n };\n }, [\n message,\n parentId,\n isCopied,\n isHovering,\n index,\n composerClient.state,\n partClients.state,\n branchNumber,\n branchCount,\n submittedFeedback,\n speech,\n ]);\n\n return {\n getState: () => state,\n composer: () => composerClient.methods,\n delete: () => {},\n reload: () => {\n onReload?.();\n },\n speak: onSpeak,\n stopSpeaking: onStopSpeaking,\n submitFeedback: onSubmitFeedback,\n switchToBranch: ({ position, branchId }) => {\n if (!branches) return;\n const target =\n branchId ??\n (branchIndex === -1\n ? undefined\n : position === \"previous\"\n ? branchIds[branchIndex - 1]\n : position === \"next\"\n ? branchIds[branchIndex + 1]\n : undefined);\n if (target !== undefined && target !== message.id)\n branches.switchToBranch(target);\n },\n getCopyText: () => getThreadMessageText(message),\n part: (selector) => {\n if (\"index\" in selector) {\n return partClients.get(selector);\n }\n const partIndex = state.parts.findIndex(\n (p) => p.type === \"tool-call\" && p.toolCallId === selector.toolCallId,\n );\n return partClients.get({ index: partIndex });\n },\n attachment: (selector) => {\n if (\"id\" in selector) {\n return attachmentClients.get({ key: selector.id });\n }\n return attachmentClients.get(selector);\n },\n setIsCopied,\n setIsHovering,\n };\n};\n\nconst MessageClient = resource(useMessageClient);\n\ntype PartResourceProps = {\n part: ThreadAssistantMessagePart | ThreadUserMessagePart;\n status: ToolCallMessagePartStatus;\n messageId: string;\n onRespondToToolApproval?:\n | ((options: RespondToToolApprovalOptions) => void)\n | undefined;\n onAddToolResult?: ((options: AddToolResultOptions) => void) | undefined;\n onResumeToolCall?: ((options: ResumeToolCallOptions) => void) | undefined;\n};\n\n// Part Client - minimal implementation\nconst usePartResource = ({\n part,\n status,\n messageId,\n onRespondToToolApproval,\n onAddToolResult,\n onResumeToolCall,\n}: PartResourceProps): ClientOutput<\"part\"> => {\n const state = useMemo(\n () => ({ ...part, status: status as MessagePartStatus }),\n [part, status],\n );\n\n return {\n getState: () => state,\n addToolResult: (result) => {\n if (!onAddToolResult)\n throw new Error(\n \"Runtime does not support tool results (onAddToolResult is not set).\",\n );\n if (part.type !== \"tool-call\")\n throw new Error(\"Tried to add tool result on non-tool message part\");\n\n const response = ToolResponse.toResponse(result);\n onAddToolResult({\n messageId,\n toolName: part.toolName,\n toolCallId: part.toolCallId,\n result: response.result as ReadonlyJSONValue,\n isError: response.isError,\n ...(response.artifact !== undefined && { artifact: response.artifact }),\n ...(response.modelContent !== undefined && {\n modelContent: response.modelContent,\n }),\n });\n },\n resumeToolCall: (payload) => {\n if (!onResumeToolCall)\n throw new Error(\n \"Runtime does not support resuming tool calls (onResumeToolCall is not set).\",\n );\n if (part.type !== \"tool-call\")\n throw new Error(\"Tried to resume tool call on non-tool message part\");\n\n onResumeToolCall({ toolCallId: part.toolCallId, payload });\n },\n respondToToolApproval: (response) => {\n if (!onRespondToToolApproval)\n throw new Error(\"Runtime does not support tool approvals.\");\n\n if (part.type !== \"tool-call\")\n throw new Error(\n \"Tried to respond to tool approval on non-tool message part\",\n );\n\n if (\n !part.approval ||\n part.approval.approved !== undefined ||\n part.approval.resolution !== undefined\n )\n throw new Error(\"Tool call has no pending approval\");\n\n onRespondToToolApproval(\n resolveToolApprovalResponse(part.approval, response),\n );\n },\n };\n};\n\nconst PartResource = resource(usePartResource);\n\ntype AttachmentResourceProps = {\n attachment: Attachment;\n onRemove?: () => void | Promise<void>;\n};\n\n// Attachment Client - minimal implementation\nconst useAttachmentResource = ({\n attachment,\n onRemove,\n}: AttachmentResourceProps): ClientOutput<\"attachment\"> => {\n return {\n getState: () => attachment,\n remove: async () => {\n await onRemove?.();\n },\n };\n};\n\nconst AttachmentResource = resource(useAttachmentResource);\n\ntype ComposerClientResourceProps = {\n type: \"thread\" | \"edit\";\n isEditing: boolean;\n canCancel: boolean;\n isSendDisabled?: boolean;\n onCancel: () => void;\n onBeginEdit?: () => void;\n onSend?: (message: AppendMessage) => void;\n message?: ExternalThreadMessage;\n queue?: ExternalThreadQueueAdapter | undefined;\n attachmentAdapter?: AttachmentAdapter | undefined;\n};\n\nconst useQueueItemClient = ({\n item,\n onMove,\n onRemove,\n}: {\n item: QueueItemState;\n onMove: (placement: QueuePlacement) => void;\n onRemove: () => void;\n}): ClientOutput<\"queueItem\"> => {\n return {\n getState: () => item,\n steer: () => onMove({ lane: \"steer\", insertAfter: null }),\n move: onMove,\n remove: onRemove,\n };\n};\n\nconst QueueItemClient = resource(useQueueItemClient);\n\nconst drainAdapterAdd = async (\n result: ReturnType<AttachmentAdapter[\"add\"]>,\n upsert: (attachment: Attachment) => void,\n) => {\n if (Symbol.asyncIterator in result) {\n for await (const attachment of result) {\n upsert(attachment);\n }\n } else {\n upsert(await result);\n }\n};\n\n// State whose setter tracks the latest value in a ref, so imperative\n// call sequences (setText immediately followed by send) observe the write\n// before React re-renders — legacy composer parity.\nconst useLiveState = <T>(initial: T) => {\n const [state, setState] = useState(initial);\n const ref = useRef(state);\n const set = useCallback((next: T | ((prev: T) => T)) => {\n ref.current =\n typeof next === \"function\" ? (next as (prev: T) => T)(ref.current) : next;\n setState(ref.current);\n }, []);\n return [state, set, ref] as const;\n};\n\n// Composer Client - minimal implementation\nconst useComposerClientResource = ({\n type,\n isEditing,\n canCancel,\n isSendDisabled = false,\n onCancel,\n onBeginEdit,\n onSend,\n message,\n queue,\n attachmentAdapter,\n}: ComposerClientResourceProps): ClientOutput<\"composer\"> => {\n const [text, setText, textRef] = useLiveState(\"\");\n const [role, setRole, roleRef] = useLiveState<\n \"user\" | \"assistant\" | \"system\"\n >(\"user\");\n const [runConfig, setRunConfig, runConfigRef] = useLiveState<\n Record<string, unknown>\n >({});\n const [attachments, setAttachments, attachmentsRef] = useLiveState<\n readonly Attachment[]\n >([]);\n const [quote, setQuote, quoteRef] = useLiveState<\n { readonly text: string; readonly messageId: string } | undefined\n >(undefined);\n\n // Update composer values when editing begins\n const updateFromMessage = useEffectEvent(() => {\n if (message) {\n // Extract text from message content (text parts only)\n const textParts = message.content.filter((part) => part.type === \"text\");\n const messageText = textParts\n .map((part) => (\"text\" in part ? part.text : \"\"))\n .join(\"\\n\\n\");\n\n setText(messageText);\n setRole(message.role);\n setAttachments(message.attachments ?? []);\n }\n });\n\n useEffect(() => {\n if (isEditing) {\n updateFromMessage();\n }\n }, [isEditing]);\n\n const attachmentClients = useClientLookup(\n attachments.map((attachment) =>\n withKey(\n attachment.id,\n AttachmentResource({\n attachment,\n onRemove: async () => {\n await attachmentAdapter?.remove(attachment);\n setAttachments((prev) =>\n prev.filter((a) => a.id !== attachment.id),\n );\n },\n }),\n ),\n ),\n );\n\n const removePendingAttachments = async (removed: readonly Attachment[]) => {\n if (!attachmentAdapter) return;\n await Promise.all(\n removed\n .filter((a) => a.status.type !== \"complete\")\n .map((a) => attachmentAdapter.remove(a)),\n );\n };\n\n const upsertAttachment = (attachment: Attachment) => {\n setAttachments((prev) => {\n const idx = prev.findIndex((a) => a.id === attachment.id);\n if (idx === -1) return [...prev, attachment];\n const next = [...prev];\n next[idx] = attachment;\n return next;\n });\n };\n\n const steerItems = queue?.steerItems ?? EMPTY_QUEUE_ITEMS;\n const laneItems = queue?.items ?? EMPTY_QUEUE_ITEMS;\n const queueItems = useMemo(\n () =>\n steerItems.length === 0\n ? laneItems\n : laneItems.length === 0\n ? steerItems\n : [...steerItems, ...laneItems],\n [steerItems, laneItems],\n );\n const queueItemClients = useClientLookup(\n queueItems.map((item) =>\n withKey(\n item.id,\n QueueItemClient({\n item,\n onMove: (placement) => queue?.move(item.id, placement),\n onRemove: () => queue?.remove(item.id),\n }),\n ),\n ),\n );\n\n const state = useMemo(() => {\n const isEmpty = !text.trim() && !attachments.length;\n return {\n text,\n role,\n attachments: attachmentClients.state,\n runConfig,\n isEditing,\n canCancel,\n canSend: isEditing && !isEmpty && !isSendDisabled,\n attachmentAccept: attachmentAdapter?.accept ?? \"*\",\n isEmpty,\n type,\n dictation: undefined,\n quote,\n queue: queueItems,\n };\n }, [\n text,\n role,\n attachmentClients.state,\n runConfig,\n isEditing,\n canCancel,\n isSendDisabled,\n type,\n attachments.length,\n quote,\n queueItems,\n attachmentAdapter?.accept,\n ]);\n\n return {\n getState: () => state,\n setText,\n setRole,\n setRunConfig,\n addAttachment: async (fileOrAttachment: File | CreateAttachment) => {\n if (attachmentAdapter) {\n const file = isCreateAttachment(fileOrAttachment)\n ? {\n name: fileOrAttachment.name,\n type: fileOrAttachment.contentType ?? \"\",\n }\n : { name: fileOrAttachment.name, type: fileOrAttachment.type };\n if (!fileMatchesAccept(file, attachmentAdapter.accept))\n throw new Error(\n `File type ${file.type || \"unknown\"} is not accepted. Accepted types: ${attachmentAdapter.accept}`,\n );\n }\n if (!isCreateAttachment(fileOrAttachment) && attachmentAdapter) {\n await drainAdapterAdd(\n attachmentAdapter.add({ file: fileOrAttachment }),\n upsertAttachment,\n );\n } else if (!isCreateAttachment(fileOrAttachment)) {\n const newAttachment: Attachment = {\n id: Math.random().toString(36).substring(7),\n type: \"file\",\n name: fileOrAttachment.name,\n contentType: fileOrAttachment.type,\n file: fileOrAttachment,\n status: { type: \"complete\" },\n content: [],\n };\n setAttachments((prev) => [...prev, newAttachment]);\n } else {\n const newAttachment: Attachment = {\n id: fileOrAttachment.id ?? Math.random().toString(36).substring(7),\n type: fileOrAttachment.type ?? \"document\",\n name: fileOrAttachment.name,\n contentType: fileOrAttachment.contentType,\n content: fileOrAttachment.content,\n status: { type: \"complete\" },\n };\n setAttachments((prev) => [...prev, newAttachment]);\n }\n },\n clearAttachments: async () => {\n const removed = attachmentsRef.current;\n setAttachments([]);\n await removePendingAttachments(removed);\n },\n attachment: (selector) => {\n if (\"id\" in selector) {\n return attachmentClients.get({ key: selector.id });\n }\n return attachmentClients.get(selector);\n },\n reset: async () => {\n const removed = attachmentsRef.current;\n setText(\"\");\n setRole(\"user\");\n setRunConfig({});\n setAttachments([]);\n setQuote(undefined);\n await removePendingAttachments(removed);\n },\n send: (opts?: ComposerSendOptions) => {\n const currentQuote = quoteRef.current;\n const currentText = textRef.current;\n const currentAttachments = attachmentsRef.current;\n const isEmpty = !currentText.trim() && !currentAttachments.length;\n if (!isEditing || isEmpty || isSendDisabled) return;\n\n setText(\"\");\n setAttachments([]);\n setQuote(undefined);\n\n const dispatch = (sendAttachments: readonly Attachment[]) => {\n const composedMessage: AppendMessage = {\n role: roleRef.current,\n content: currentText\n ? [{ type: \"text\" as const, text: currentText }]\n : [],\n attachments: sendAttachments as any,\n createdAt: new Date(),\n parentId: null,\n sourceId: null,\n runConfig: runConfigRef.current,\n startRun: opts?.startRun,\n metadata: {\n custom: { ...(currentQuote ? { quote: currentQuote } : {}) },\n },\n };\n // edit sends carry a sourceId contract; only thread sends queue\n if (queue && type === \"thread\") {\n if (opts?.steer ?? canCancel) queue.steer(composedMessage);\n else queue.enqueue(composedMessage);\n } else {\n onSend?.(composedMessage);\n }\n };\n\n if (attachmentAdapter && currentAttachments.length > 0) {\n void Promise.all(\n currentAttachments.map((attachment) =>\n attachment.status.type === \"complete\"\n ? attachment\n : attachmentAdapter.send(attachment as PendingAttachment),\n ),\n ).then(dispatch, (error) => {\n // Upload failed: merge the failed send back into the draft.\n setText((prev) =>\n currentText && prev\n ? currentText + \"\\n\" + prev\n : currentText || prev,\n );\n setQuote((prev) => prev ?? currentQuote);\n setAttachments((prev) => [...currentAttachments, ...prev]);\n console.error(\"Failed to send attachments\", error);\n });\n } else {\n dispatch(currentAttachments);\n }\n },\n cancel: onCancel,\n beginEdit: () => {\n onBeginEdit?.();\n },\n startDictation: () => {},\n stopDictation: () => {},\n setQuote,\n queueItem: (selector: { index: number } | { id: string }) => {\n if (\"id\" in selector) {\n return queueItemClients.get({ key: selector.id });\n }\n return queueItemClients.get(selector);\n },\n };\n};\n\nconst ComposerClientResource = resource(useComposerClientResource);\n\nconst createSpeechController = (\n notify: (speech: SpeechState | undefined) => void,\n) => {\n let session: { messageId: string; cancel: () => void } | undefined;\n\n const clear = () => {\n if (!session) return;\n session.cancel();\n session = undefined;\n notify(undefined);\n };\n\n return {\n speak: (\n adapter: SpeechSynthesisAdapter,\n message: ExternalThreadMessage,\n ) => {\n clear();\n\n const utterance = adapter.speak(getThreadMessageText(message));\n let unsub: (() => void) | undefined;\n unsub = utterance.subscribe(() => {\n if (utterance.status.type === \"ended\") {\n unsub?.();\n session = undefined;\n notify(undefined);\n } else {\n notify({ messageId: message.id, status: utterance.status });\n }\n });\n\n if (utterance.status.type === \"ended\") {\n unsub();\n notify(undefined);\n return;\n }\n\n session = {\n messageId: message.id,\n cancel: () => {\n unsub!();\n utterance.cancel();\n },\n };\n notify({ messageId: message.id, status: utterance.status });\n },\n stop: () => {\n if (!session) throw new Error(\"No message is being spoken\");\n clear();\n },\n stopMessage: (messageId: string) => {\n if (session?.messageId !== messageId)\n throw new Error(\"Message is not being spoken\");\n clear();\n },\n dispose: clear,\n };\n};\n\nconst dedupeMessagesById = (messages: readonly ExternalThreadMessage[]) => {\n const seenIds = new Set<string>();\n const deduped: ExternalThreadMessage[] = [];\n for (let i = messages.length - 1; i >= 0; i--) {\n const message = messages[i]!;\n if (seenIds.has(message.id)) {\n console.warn(\n `ExternalThread: duplicate message id \"${message.id}\" in the provided messages array; keeping the last occurrence.`,\n );\n continue;\n }\n seenIds.add(message.id);\n deduped.push(message);\n }\n return deduped.length === messages.length ? messages : deduped.reverse();\n};\n\n// External Thread Client\nconst useExternalThread = ({\n messages: messagesProp,\n isRunning = false,\n isLoading = false,\n state: threadState,\n extras,\n isSendDisabled = false,\n onNew,\n onEdit,\n onReload,\n onStartRun,\n onCancel,\n onResume,\n onAddToolResult,\n onResumeToolCall,\n onLoadExternalState,\n attachmentAdapter,\n feedbackAdapter,\n speechAdapter,\n queue,\n branches,\n onRespondToToolApproval,\n}: ExternalThreadProps): ClientOutput<\"thread\"> => {\n const messages = useMemo(\n () => dedupeMessagesById(messagesProp),\n [messagesProp],\n );\n\n // Local entries are optimistic: they apply only while the message's\n // external submittedFeedback still equals the value seen at click time.\n const [submittedFeedback, setSubmittedFeedback] = useState<\n Record<\n string,\n {\n type: \"positive\" | \"negative\";\n external: \"positive\" | \"negative\" | undefined;\n }\n >\n >({});\n\n const feedbackFor = (msg: ExternalThreadMessage) => {\n const entry = submittedFeedback[msg.id];\n return entry && msg.metadata.submittedFeedback?.type === entry.external\n ? entry.type\n : undefined;\n };\n\n useEffect(() => {\n setSubmittedFeedback((prev) => {\n const live = Object.entries(prev).filter(([id, entry]) => {\n const msg = messages.find((m) => m.id === id);\n return !!msg && msg.metadata.submittedFeedback?.type === entry.external;\n });\n return live.length === Object.keys(prev).length\n ? prev\n : Object.fromEntries(live);\n });\n }, [messages]);\n\n const handleSubmitFeedback = (\n message: ExternalThreadMessage,\n { type }: { type: \"positive\" | \"negative\" },\n ) => {\n if (!feedbackAdapter) throw new Error(\"Feedback adapter not configured\");\n feedbackAdapter.submit({ message, type });\n\n if (message.role === \"assistant\") {\n setSubmittedFeedback((prev) => ({\n ...prev,\n [message.id]: {\n type,\n external: message.metadata.submittedFeedback?.type,\n },\n }));\n }\n };\n\n const [speechState, setSpeech] = useState<SpeechState | undefined>(undefined);\n const [speechController] = useState(() => createSpeechController(setSpeech));\n\n const hasSpeechAdapter = !!speechAdapter;\n const speech = hasSpeechAdapter ? speechState : undefined;\n useEffect(() => {\n if (!hasSpeechAdapter) speechController.dispose();\n }, [hasSpeechAdapter, speechController]);\n\n useEffect(() => () => speechController.dispose(), [speechController]);\n\n const handleSpeak = (message: ExternalThreadMessage) => {\n if (!speechAdapter) throw new Error(\"Speech adapter not configured\");\n speechController.speak(speechAdapter, message);\n };\n\n const handleReload = (messageId: string) => {\n const messageIndex = messages.findIndex((m) => m.id === messageId);\n if (messageIndex === -1) return;\n\n const parentId = messageIndex > 0 ? messages[messageIndex - 1]!.id : null;\n onReload?.(parentId);\n };\n\n const messageClients = useClientLookup(\n messages.map((msg, index) => {\n const props: MessageClientProps = {\n message: msg,\n index,\n parentId: index > 0 ? messages[index - 1]!.id : null,\n onReload: () => handleReload(msg.id),\n queue,\n branches,\n onRespondToToolApproval,\n onAddToolResult,\n onResumeToolCall,\n attachmentAdapter,\n submittedFeedback: feedbackFor(msg),\n onSubmitFeedback: (feedback) => handleSubmitFeedback(msg, feedback),\n speech: speech?.messageId === msg.id ? speech : undefined,\n onSpeak: () => handleSpeak(msg),\n onStopSpeaking: () => speechController.stopMessage(msg.id),\n };\n if (onEdit) props.onEdit = onEdit;\n return withKey(msg.id, MessageClient(props));\n }),\n );\n\n const handleCancelRun = () => {\n onCancel?.();\n };\n\n const handleSendNew = (message: AppendMessage) => {\n // The composer does not know the thread; stamp the current head as the\n // parent (legacy composer parity).\n onNew?.({ ...message, parentId: messages.at(-1)?.id ?? null });\n };\n\n const headId = messages.at(-1)?.id ?? null;\n const composerQueue = useMemo(\n (): ExternalThreadQueueAdapter | undefined =>\n queue && {\n ...queue,\n enqueue: (message) =>\n queue.enqueue({ ...message, parentId: message.parentId ?? headId }),\n steer: (message) =>\n queue.steer({ ...message, parentId: message.parentId ?? headId }),\n },\n [queue, headId],\n );\n\n const composerClient = useClientResource(\n ComposerClientResource({\n type: \"thread\",\n isEditing: true,\n canCancel: isRunning,\n isSendDisabled,\n onCancel: handleCancelRun,\n onSend: handleSendNew,\n queue: composerQueue,\n attachmentAdapter,\n }),\n );\n\n const hasQueue = !!queue;\n const hasBranches = !!branches;\n const hasEdit = !!onEdit;\n const hasReload = !!onReload;\n const hasAttachments = !!attachmentAdapter;\n const hasFeedback = !!feedbackAdapter;\n const hasSpeech = !!speechAdapter;\n const state = useMemo(() => {\n const messageStates = messageClients.state.map((s, idx, arr) => ({\n ...s,\n isLast: idx === arr.length - 1,\n }));\n\n return {\n isEmpty: messages.length === 0,\n isDisabled: false,\n isLoading,\n isRunning,\n capabilities: {\n edit: hasEdit,\n delete: false,\n reload: hasReload,\n refetchThread: false,\n cancel: isRunning,\n speech: hasSpeech,\n attachments: hasAttachments,\n feedback: hasFeedback,\n voice: false,\n switchToBranch: hasBranches,\n switchBranchDuringRun: false,\n unstable_copy: false,\n dictation: false,\n queue: hasQueue,\n },\n messages: messageStates,\n state: threadState ?? {},\n suggestions: [],\n extras,\n speech,\n voice: undefined,\n composer: composerClient.state,\n };\n }, [\n messages,\n isRunning,\n isLoading,\n threadState,\n extras,\n hasQueue,\n hasBranches,\n hasEdit,\n hasReload,\n hasAttachments,\n hasFeedback,\n hasSpeech,\n speech,\n messageClients.state,\n composerClient.state,\n ]);\n\n return {\n getState: () => state,\n composer: () => composerClient.methods,\n append: (message) => {\n const appendMessage: AppendMessage =\n typeof message === \"string\"\n ? {\n createdAt: new Date(),\n parentId: messages.at(-1)?.id ?? null,\n sourceId: null,\n runConfig: {},\n role: \"user\",\n content: [{ type: \"text\", text: message }],\n attachments: [],\n metadata: { custom: {} },\n }\n : {\n createdAt: message.createdAt ?? new Date(),\n parentId: message.parentId ?? messages.at(-1)?.id ?? null,\n sourceId: message.sourceId ?? null,\n role: message.role ?? \"user\",\n content: message.content,\n attachments: message.attachments ?? [],\n metadata: message.metadata ?? { custom: {} },\n runConfig: message.runConfig ?? {},\n startRun: message.startRun,\n };\n if (queue) {\n queue.enqueue(appendMessage);\n } else {\n onNew?.(appendMessage);\n }\n },\n deleteMessage: () => {},\n startRun: () => {\n onStartRun?.();\n },\n resumeRun: () => {\n if (!onResume)\n throw new Error(\n \"Runtime does not support resuming runs (onResume is not set).\",\n );\n onResume();\n },\n cancelRun: handleCancelRun,\n importExternalState: (state: unknown) => {\n if (!onLoadExternalState)\n throw new Error(\n \"Runtime does not support importing external states (onLoadExternalState is not set).\",\n );\n onLoadExternalState(state);\n },\n getModelContext: () => ({ tools: {}, config: {} }),\n export: () => ({ messages: [] }),\n import: () => {},\n reset: () => {},\n message: (selector) => {\n if (\"id\" in selector) {\n return messageClients.get({ key: selector.id });\n }\n return messageClients.get(selector);\n },\n stopSpeaking: speechController.stop,\n connectVoice: () => {},\n disconnectVoice: () => {},\n getVoiceVolume: () => 0,\n subscribeVoiceVolume: () => () => {},\n muteVoice: () => {},\n unmuteVoice: () => {},\n };\n};\n\nexport const ExternalThread = resource(useExternalThread);\n\nattachTransformScopes(useExternalThread, (scopes, parent) => {\n if (!scopes.threads && parent.threads.source === null) {\n const threadElement = scopes.thread as ClientElement<\"thread\">;\n scopes.threads = SingleThreadList({ thread: threadElement });\n // scopes mount in key order; re-declare thread after the threads source it resolves from\n delete scopes.thread;\n scopes.thread = Derived({\n source: \"threads\",\n query: { type: \"main\" },\n get: (aui) => aui.threads.thread(\"main\"),\n });\n }\n\n if (!scopes.threadListItem && parent.threadListItem.source === null) {\n scopes.threadListItem = Derived({\n source: \"threads\",\n query: { type: \"main\" },\n get: (aui) => aui.threads.item(\"main\"),\n });\n }\n\n scopes.composer ??= Derived({\n source: \"thread\",\n query: {},\n get: (aui) => aui.thread.composer(),\n });\n\n if (!scopes.modelContext && parent.modelContext.source === null) {\n scopes.modelContext = ModelContext();\n }\n if (!scopes.tools && parent.tools.source === null) {\n scopes.tools = Tools({});\n }\n if (!scopes.dataRenderers && parent.dataRenderers.source === null) {\n scopes.dataRenderers = DataRenderers();\n }\n if (!scopes.suggestions && parent.suggestions.source === null) {\n scopes.suggestions = Suggestions();\n }\n});\n"],"mappings":"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"}
@@ -18,6 +18,7 @@ type AuiV0MessagePart = {
18
18
  } | {
19
19
  readonly type: "reasoning";
20
20
  readonly text: string;
21
+ readonly unstable_summary?: string;
21
22
  } | {
22
23
  readonly type: "source";
23
24
  readonly sourceType: "url";
@@ -1 +1 @@
1
- {"version":3,"file":"auiV0.d.ts","names":[],"sources":["../../../src/legacy-runtime/cloud/auiV0.ts"],"mappings":";;;;;KAgBK;WACM;WACA;WACA;WACA;WACA,mBAAmB;WACnB;WACA;;KAGN;WAEU;WACA;;WAGA;WACA;;WAGA;WACA;WACA;WACA;WACA;WACA,mBAAmB;;WAGnB;WACA;WACA;WACA;WACA;WACA;WACA,mBAAmB;;WAGnB;WACA;WACA;WACA,MAAM;WACN,SAAS;WACT;WACA,WAAW;;WAGX;WACA;WACA;WACA;WACA,SAAS;WACT;WACA,WAAW;;WAGX;WACA;;WAGA;WACA;WACA;WACA;WACA;;KAGV;WAEU;WACA;;WAGA;WACA;WACA;;WAGA;WACA;WACA;WACA;WACA;;WAGA;WACA;aACE;aACA;;;WAIF;WACA;WACA,MAAM;;KAGhB;WACM;WACA,MAAM;WACN;WACA;WACA,QAAQ;WACR,kBAAkB;;KAGxB;WACM;WACA,SAAS;WACT,kBAAkB;WAClB,uBAAuB;WACvB;aACE,iBAAiB;aACjB,+BAA+B;aAC/B,wBAAwB;aACxB;eACE;iBACE;iBACA;;;aAGJ,QAAQ;;;iBA2EL,YAAY,SAAS,gBAAgB;iBA8FrC,YACd,cAAc;EAAiB;IAC9B"}
1
+ {"version":3,"file":"auiV0.d.ts","names":[],"sources":["../../../src/legacy-runtime/cloud/auiV0.ts"],"mappings":";;;;;KAgBK;WACM;WACA;WACA;WACA;WACA,mBAAmB;WACnB;WACA;;KAGN;WAEU;WACA;;WAGA;WACA;WACA;;WAGA;WACA;WACA;WACA;WACA;WACA,mBAAmB;;WAGnB;WACA;WACA;WACA;WACA;WACA;WACA,mBAAmB;;WAGnB;WACA;WACA;WACA,MAAM;WACN,SAAS;WACT;WACA,WAAW;;WAGX;WACA;WACA;WACA;WACA,SAAS;WACT;WACA,WAAW;;WAGX;WACA;;WAGA;WACA;WACA;WACA;WACA;;KAGV;WAEU;WACA;;WAGA;WACA;WACA;;WAGA;WACA;WACA;WACA;WACA;;WAGA;WACA;aACE;aACA;;;WAIF;WACA;WACA,MAAM;;KAGhB;WACM;WACA,MAAM;WACN;WACA;WACA,QAAQ;WACR,kBAAkB;;KAGxB;WACM;WACA,SAAS;WACT,kBAAkB;WAClB,uBAAuB;WACvB;aACE,iBAAiB;aACjB,+BAA+B;aAC/B,wBAAwB;aACxB;eACE;iBACE;iBACA;;;aAGJ,QAAQ;;;iBA2EL,YAAY,SAAS,gBAAgB;iBAoGrC,YACd,cAAc;EAAiB;IAC9B"}
@@ -65,7 +65,8 @@ function auiV0Encode(message) {
65
65
  };
66
66
  case "reasoning": return {
67
67
  type: "reasoning",
68
- text: part.text
68
+ text: part.text,
69
+ ...part.unstable_summary !== void 0 ? { unstable_summary: part.unstable_summary } : void 0
69
70
  };
70
71
  case "source":
71
72
  if (part.sourceType === "url") return {
@@ -1 +1 @@
1
- {"version":3,"file":"auiV0.js","names":["CompleteAttachment","MessageStatus","SourceProviderMetadata","ThreadMessage","ToolApprovalOption","fromThreadMessageLike","CloudMessage","isJSONValue","ReadonlyJSONObject","ReadonlyJSONValue","ExportedMessageRepositoryItem","AuiV0ToolApproval","id","approved","reason","isAutomatic","options","optionId","resolution","AuiV0MessagePart","type","text","sourceType","url","title","providerMetadata","mediaType","filename","toolCallId","toolName","args","result","isError","approval","argsText","image","data","mimeType","AuiV0AttachmentPart","audio","format","name","AuiV0Attachment","contentType","status","content","AuiV0Message","role","attachments","metadata","unstable_state","unstable_annotations","unstable_data","steps","usage","inputTokens","outputTokens","custom","encodeAttachmentPart","part","undefined","console","warn","JSON","stringify","unhandledType","Error","encodeAttachments","message","length","map","auiV0Encode","auiV0Decode","cloudMessage","payload","createdAt","created_at","parentId","parent_id"],"sources":["../../../src/legacy-runtime/cloud/auiV0.ts"],"sourcesContent":["import type {\n CompleteAttachment,\n MessageStatus,\n SourceProviderMetadata,\n ThreadMessage,\n ToolApprovalOption,\n} from \"@assistant-ui/core\";\nimport { fromThreadMessageLike } from \"../runtime-cores/external-store/ThreadMessageLike\";\nimport type { CloudMessage } from \"assistant-cloud\";\nimport { isJSONValue } from \"@assistant-ui/core/internal\";\nimport type {\n ReadonlyJSONObject,\n ReadonlyJSONValue,\n} from \"assistant-stream/utils\";\nimport type { ExportedMessageRepositoryItem } from \"../runtime-cores/utils/MessageRepository\";\n\ntype AuiV0ToolApproval = {\n readonly id: string;\n readonly approved?: boolean;\n readonly reason?: string;\n readonly isAutomatic?: boolean;\n readonly options?: readonly ToolApprovalOption[];\n readonly optionId?: string;\n readonly resolution?: \"cancelled\" | \"expired\";\n};\n\ntype AuiV0MessagePart =\n | {\n readonly type: \"text\";\n readonly text: string;\n }\n | {\n readonly type: \"reasoning\";\n readonly text: string;\n }\n | {\n readonly type: \"source\";\n readonly sourceType: \"url\";\n readonly id: string;\n readonly url: string;\n readonly title?: string;\n readonly providerMetadata?: SourceProviderMetadata;\n }\n | {\n readonly type: \"source\";\n readonly sourceType: \"document\";\n readonly id: string;\n readonly title: string;\n readonly mediaType: string;\n readonly filename?: string;\n readonly providerMetadata?: SourceProviderMetadata;\n }\n | {\n readonly type: \"tool-call\";\n readonly toolCallId: string;\n readonly toolName: string;\n readonly args: ReadonlyJSONObject;\n readonly result?: ReadonlyJSONValue;\n readonly isError?: true;\n readonly approval?: AuiV0ToolApproval;\n }\n | {\n readonly type: \"tool-call\";\n readonly toolCallId: string;\n readonly toolName: string;\n readonly argsText: string;\n readonly result?: ReadonlyJSONValue;\n readonly isError?: true;\n readonly approval?: AuiV0ToolApproval;\n }\n | {\n readonly type: \"image\";\n readonly image: string;\n }\n | {\n readonly type: \"file\";\n readonly data: string;\n readonly mimeType: string;\n readonly filename?: string;\n readonly sourceType?: \"url\" | \"id\";\n };\n\ntype AuiV0AttachmentPart =\n | {\n readonly type: \"text\";\n readonly text: string;\n }\n | {\n readonly type: \"image\";\n readonly image: string;\n readonly filename?: string;\n }\n | {\n readonly type: \"file\";\n readonly data: string;\n readonly mimeType: string;\n readonly filename?: string;\n readonly sourceType?: \"url\" | \"id\";\n }\n | {\n readonly type: \"audio\";\n readonly audio: {\n readonly data: string;\n readonly format: \"mp3\" | \"wav\";\n };\n }\n | {\n readonly type: \"data\";\n readonly name: string;\n readonly data: ReadonlyJSONValue;\n };\n\ntype AuiV0Attachment = {\n readonly id: string;\n readonly type: CompleteAttachment[\"type\"];\n readonly name: string;\n readonly contentType?: string;\n readonly status: CompleteAttachment[\"status\"];\n readonly content: readonly AuiV0AttachmentPart[];\n};\n\ntype AuiV0Message = {\n readonly role: \"assistant\" | \"user\" | \"system\";\n readonly status?: MessageStatus;\n readonly content: readonly AuiV0MessagePart[];\n readonly attachments?: readonly AuiV0Attachment[];\n readonly metadata: {\n readonly unstable_state?: ReadonlyJSONValue;\n readonly unstable_annotations: readonly ReadonlyJSONValue[];\n readonly unstable_data: readonly ReadonlyJSONValue[];\n readonly steps: readonly {\n readonly usage?: {\n readonly inputTokens: number;\n readonly outputTokens: number;\n };\n }[];\n readonly custom: ReadonlyJSONObject;\n };\n};\n\nconst encodeAttachmentPart = (\n part: CompleteAttachment[\"content\"][number],\n): AuiV0AttachmentPart => {\n const type = part.type;\n switch (type) {\n case \"text\":\n return { type: \"text\", text: part.text };\n\n case \"image\":\n return {\n type: \"image\",\n image: part.image,\n ...(part.filename != null ? { filename: part.filename } : undefined),\n };\n\n case \"file\":\n return {\n type: \"file\",\n data: part.data,\n mimeType: part.mimeType,\n ...(part.filename != null ? { filename: part.filename } : undefined),\n ...(part.sourceType != null\n ? { sourceType: part.sourceType }\n : undefined),\n };\n\n case \"audio\":\n return {\n type: \"audio\",\n audio: { data: part.audio.data, format: part.audio.format },\n };\n\n case \"data\": {\n if (!isJSONValue(part.data)) {\n console.warn(`attachment data is not JSON! ${JSON.stringify(part)}`);\n }\n return {\n type: \"data\",\n name: part.name,\n data: part.data as ReadonlyJSONValue,\n };\n }\n\n default: {\n const unhandledType: never = type;\n throw new Error(\n `Attachment part type not supported by aui/v0: ${unhandledType}`,\n );\n }\n }\n};\n\nconst encodeAttachments = (\n message: ThreadMessage,\n): readonly AuiV0Attachment[] | undefined => {\n if (message.role !== \"user\" || message.attachments.length === 0) {\n return undefined;\n }\n\n return message.attachments.map(\n ({ id, type, name, contentType, status, content }) => ({\n id,\n type,\n name,\n status,\n ...(contentType != null ? { contentType } : undefined),\n content: content.map(encodeAttachmentPart),\n }),\n );\n};\n\nexport function auiV0Encode(message: ThreadMessage): AuiV0Message {\n // info: ID and createdAt are ignored (we use the server value instead)\n const status: MessageStatus | undefined =\n message.status?.type === \"running\"\n ? { type: \"incomplete\", reason: \"cancelled\" }\n : message.status;\n const attachments = encodeAttachments(message);\n\n return {\n role: message.role,\n content: message.content.map((part) => {\n const type = part.type;\n switch (type) {\n case \"text\":\n return { type: \"text\", text: part.text };\n\n case \"reasoning\":\n return { type: \"reasoning\", text: part.text };\n\n case \"source\":\n if (part.sourceType === \"url\") {\n return {\n type: \"source\",\n sourceType: \"url\",\n id: part.id,\n url: part.url,\n ...(part.title != null ? { title: part.title } : undefined),\n ...(part.providerMetadata != null\n ? { providerMetadata: part.providerMetadata }\n : undefined),\n };\n }\n\n return {\n type: \"source\",\n sourceType: \"document\",\n id: part.id,\n title: part.title,\n mediaType: part.mediaType,\n ...(part.filename != null\n ? { filename: part.filename }\n : undefined),\n ...(part.providerMetadata != null\n ? { providerMetadata: part.providerMetadata }\n : undefined),\n };\n\n case \"tool-call\": {\n if (part.result !== undefined && !isJSONValue(part.result)) {\n console.warn(\n `tool-call result is not JSON! ${JSON.stringify(part)}`,\n );\n }\n return {\n type: \"tool-call\",\n toolCallId: part.toolCallId,\n toolName: part.toolName,\n ...(JSON.stringify(part.args) === part.argsText\n ? { args: part.args }\n : { argsText: part.argsText }),\n ...(part.result !== undefined\n ? { result: part.result as ReadonlyJSONValue }\n : undefined),\n ...(part.isError ? { isError: true } : undefined),\n ...(part.approval ? { approval: part.approval } : undefined),\n };\n }\n\n case \"image\":\n return { type: \"image\", image: part.image };\n\n case \"file\":\n return {\n type: \"file\",\n data: part.data,\n mimeType: part.mimeType,\n ...(part.filename ? { filename: part.filename } : undefined),\n ...(part.sourceType ? { sourceType: part.sourceType } : undefined),\n };\n\n default: {\n const unhandledType: \"audio\" | \"data\" | \"generative-ui\" = type;\n throw new Error(\n `Message part type not supported by aui/v0: ${unhandledType}`,\n );\n }\n }\n }),\n metadata: message.metadata as AuiV0Message[\"metadata\"],\n ...(status ? { status } : undefined),\n ...(attachments ? { attachments } : undefined),\n };\n}\n\nexport function auiV0Decode(\n cloudMessage: CloudMessage & { format: \"aui/v0\" },\n): ExportedMessageRepositoryItem {\n const payload = cloudMessage.content as unknown as AuiV0Message;\n const message = fromThreadMessageLike(\n {\n id: cloudMessage.id,\n createdAt: cloudMessage.created_at,\n ...payload,\n },\n cloudMessage.id,\n { type: \"complete\", reason: \"unknown\" },\n );\n\n return {\n parentId: cloudMessage.parent_id,\n message,\n };\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"auiV0.js","names":["CompleteAttachment","MessageStatus","SourceProviderMetadata","ThreadMessage","ToolApprovalOption","fromThreadMessageLike","CloudMessage","isJSONValue","ReadonlyJSONObject","ReadonlyJSONValue","ExportedMessageRepositoryItem","AuiV0ToolApproval","id","approved","reason","isAutomatic","options","optionId","resolution","AuiV0MessagePart","type","text","unstable_summary","sourceType","url","title","providerMetadata","mediaType","filename","toolCallId","toolName","args","result","isError","approval","argsText","image","data","mimeType","AuiV0AttachmentPart","audio","format","name","AuiV0Attachment","contentType","status","content","AuiV0Message","role","attachments","metadata","unstable_state","unstable_annotations","unstable_data","steps","usage","inputTokens","outputTokens","custom","encodeAttachmentPart","part","undefined","console","warn","JSON","stringify","unhandledType","Error","encodeAttachments","message","length","map","auiV0Encode","auiV0Decode","cloudMessage","payload","createdAt","created_at","parentId","parent_id"],"sources":["../../../src/legacy-runtime/cloud/auiV0.ts"],"sourcesContent":["import type {\n CompleteAttachment,\n MessageStatus,\n SourceProviderMetadata,\n ThreadMessage,\n ToolApprovalOption,\n} from \"@assistant-ui/core\";\nimport { fromThreadMessageLike } from \"../runtime-cores/external-store/ThreadMessageLike\";\nimport type { CloudMessage } from \"assistant-cloud\";\nimport { isJSONValue } from \"@assistant-ui/core/internal\";\nimport type {\n ReadonlyJSONObject,\n ReadonlyJSONValue,\n} from \"assistant-stream/utils\";\nimport type { ExportedMessageRepositoryItem } from \"../runtime-cores/utils/MessageRepository\";\n\ntype AuiV0ToolApproval = {\n readonly id: string;\n readonly approved?: boolean;\n readonly reason?: string;\n readonly isAutomatic?: boolean;\n readonly options?: readonly ToolApprovalOption[];\n readonly optionId?: string;\n readonly resolution?: \"cancelled\" | \"expired\";\n};\n\ntype AuiV0MessagePart =\n | {\n readonly type: \"text\";\n readonly text: string;\n }\n | {\n readonly type: \"reasoning\";\n readonly text: string;\n readonly unstable_summary?: string;\n }\n | {\n readonly type: \"source\";\n readonly sourceType: \"url\";\n readonly id: string;\n readonly url: string;\n readonly title?: string;\n readonly providerMetadata?: SourceProviderMetadata;\n }\n | {\n readonly type: \"source\";\n readonly sourceType: \"document\";\n readonly id: string;\n readonly title: string;\n readonly mediaType: string;\n readonly filename?: string;\n readonly providerMetadata?: SourceProviderMetadata;\n }\n | {\n readonly type: \"tool-call\";\n readonly toolCallId: string;\n readonly toolName: string;\n readonly args: ReadonlyJSONObject;\n readonly result?: ReadonlyJSONValue;\n readonly isError?: true;\n readonly approval?: AuiV0ToolApproval;\n }\n | {\n readonly type: \"tool-call\";\n readonly toolCallId: string;\n readonly toolName: string;\n readonly argsText: string;\n readonly result?: ReadonlyJSONValue;\n readonly isError?: true;\n readonly approval?: AuiV0ToolApproval;\n }\n | {\n readonly type: \"image\";\n readonly image: string;\n }\n | {\n readonly type: \"file\";\n readonly data: string;\n readonly mimeType: string;\n readonly filename?: string;\n readonly sourceType?: \"url\" | \"id\";\n };\n\ntype AuiV0AttachmentPart =\n | {\n readonly type: \"text\";\n readonly text: string;\n }\n | {\n readonly type: \"image\";\n readonly image: string;\n readonly filename?: string;\n }\n | {\n readonly type: \"file\";\n readonly data: string;\n readonly mimeType: string;\n readonly filename?: string;\n readonly sourceType?: \"url\" | \"id\";\n }\n | {\n readonly type: \"audio\";\n readonly audio: {\n readonly data: string;\n readonly format: \"mp3\" | \"wav\";\n };\n }\n | {\n readonly type: \"data\";\n readonly name: string;\n readonly data: ReadonlyJSONValue;\n };\n\ntype AuiV0Attachment = {\n readonly id: string;\n readonly type: CompleteAttachment[\"type\"];\n readonly name: string;\n readonly contentType?: string;\n readonly status: CompleteAttachment[\"status\"];\n readonly content: readonly AuiV0AttachmentPart[];\n};\n\ntype AuiV0Message = {\n readonly role: \"assistant\" | \"user\" | \"system\";\n readonly status?: MessageStatus;\n readonly content: readonly AuiV0MessagePart[];\n readonly attachments?: readonly AuiV0Attachment[];\n readonly metadata: {\n readonly unstable_state?: ReadonlyJSONValue;\n readonly unstable_annotations: readonly ReadonlyJSONValue[];\n readonly unstable_data: readonly ReadonlyJSONValue[];\n readonly steps: readonly {\n readonly usage?: {\n readonly inputTokens: number;\n readonly outputTokens: number;\n };\n }[];\n readonly custom: ReadonlyJSONObject;\n };\n};\n\nconst encodeAttachmentPart = (\n part: CompleteAttachment[\"content\"][number],\n): AuiV0AttachmentPart => {\n const type = part.type;\n switch (type) {\n case \"text\":\n return { type: \"text\", text: part.text };\n\n case \"image\":\n return {\n type: \"image\",\n image: part.image,\n ...(part.filename != null ? { filename: part.filename } : undefined),\n };\n\n case \"file\":\n return {\n type: \"file\",\n data: part.data,\n mimeType: part.mimeType,\n ...(part.filename != null ? { filename: part.filename } : undefined),\n ...(part.sourceType != null\n ? { sourceType: part.sourceType }\n : undefined),\n };\n\n case \"audio\":\n return {\n type: \"audio\",\n audio: { data: part.audio.data, format: part.audio.format },\n };\n\n case \"data\": {\n if (!isJSONValue(part.data)) {\n console.warn(`attachment data is not JSON! ${JSON.stringify(part)}`);\n }\n return {\n type: \"data\",\n name: part.name,\n data: part.data as ReadonlyJSONValue,\n };\n }\n\n default: {\n const unhandledType: never = type;\n throw new Error(\n `Attachment part type not supported by aui/v0: ${unhandledType}`,\n );\n }\n }\n};\n\nconst encodeAttachments = (\n message: ThreadMessage,\n): readonly AuiV0Attachment[] | undefined => {\n if (message.role !== \"user\" || message.attachments.length === 0) {\n return undefined;\n }\n\n return message.attachments.map(\n ({ id, type, name, contentType, status, content }) => ({\n id,\n type,\n name,\n status,\n ...(contentType != null ? { contentType } : undefined),\n content: content.map(encodeAttachmentPart),\n }),\n );\n};\n\nexport function auiV0Encode(message: ThreadMessage): AuiV0Message {\n // info: ID and createdAt are ignored (we use the server value instead)\n const status: MessageStatus | undefined =\n message.status?.type === \"running\"\n ? { type: \"incomplete\", reason: \"cancelled\" }\n : message.status;\n const attachments = encodeAttachments(message);\n\n return {\n role: message.role,\n content: message.content.map((part) => {\n const type = part.type;\n switch (type) {\n case \"text\":\n return { type: \"text\", text: part.text };\n\n case \"reasoning\":\n return {\n type: \"reasoning\",\n text: part.text,\n ...(part.unstable_summary !== undefined\n ? { unstable_summary: part.unstable_summary }\n : undefined),\n };\n\n case \"source\":\n if (part.sourceType === \"url\") {\n return {\n type: \"source\",\n sourceType: \"url\",\n id: part.id,\n url: part.url,\n ...(part.title != null ? { title: part.title } : undefined),\n ...(part.providerMetadata != null\n ? { providerMetadata: part.providerMetadata }\n : undefined),\n };\n }\n\n return {\n type: \"source\",\n sourceType: \"document\",\n id: part.id,\n title: part.title,\n mediaType: part.mediaType,\n ...(part.filename != null\n ? { filename: part.filename }\n : undefined),\n ...(part.providerMetadata != null\n ? { providerMetadata: part.providerMetadata }\n : undefined),\n };\n\n case \"tool-call\": {\n if (part.result !== undefined && !isJSONValue(part.result)) {\n console.warn(\n `tool-call result is not JSON! ${JSON.stringify(part)}`,\n );\n }\n return {\n type: \"tool-call\",\n toolCallId: part.toolCallId,\n toolName: part.toolName,\n ...(JSON.stringify(part.args) === part.argsText\n ? { args: part.args }\n : { argsText: part.argsText }),\n ...(part.result !== undefined\n ? { result: part.result as ReadonlyJSONValue }\n : undefined),\n ...(part.isError ? { isError: true } : undefined),\n ...(part.approval ? { approval: part.approval } : undefined),\n };\n }\n\n case \"image\":\n return { type: \"image\", image: part.image };\n\n case \"file\":\n return {\n type: \"file\",\n data: part.data,\n mimeType: part.mimeType,\n ...(part.filename ? { filename: part.filename } : undefined),\n ...(part.sourceType ? { sourceType: part.sourceType } : undefined),\n };\n\n default: {\n const unhandledType: \"audio\" | \"data\" | \"generative-ui\" = type;\n throw new Error(\n `Message part type not supported by aui/v0: ${unhandledType}`,\n );\n }\n }\n }),\n metadata: message.metadata as AuiV0Message[\"metadata\"],\n ...(status ? { status } : undefined),\n ...(attachments ? { attachments } : undefined),\n };\n}\n\nexport function auiV0Decode(\n cloudMessage: CloudMessage & { format: \"aui/v0\" },\n): ExportedMessageRepositoryItem {\n const payload = cloudMessage.content as unknown as AuiV0Message;\n const message = fromThreadMessageLike(\n {\n id: cloudMessage.id,\n createdAt: cloudMessage.created_at,\n ...payload,\n },\n cloudMessage.id,\n { type: \"complete\", reason: \"unknown\" },\n );\n\n return {\n parentId: cloudMessage.parent_id,\n message,\n };\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"useAssistantTransportRuntime.d.ts","names":[],"sources":["../../../../src/legacy-runtime/runtime-cores/assistant-transport/useAssistantTransportRuntime.ts"],"mappings":";;;;cA8Ha,yCAGH,SAAS;iBAOH,8BAA8B;iBAC9B,2BAA2B,GACzC,WAAW,OAAO,sBAAsB,IACvC;;;;cAmUU,+BAAgC,GAC3C,SAAS,0BAA0B,OAClC"}
1
+ {"version":3,"file":"useAssistantTransportRuntime.d.ts","names":[],"sources":["../../../../src/legacy-runtime/runtime-cores/assistant-transport/useAssistantTransportRuntime.ts"],"mappings":";;;;cA8Ha,yCAGH,SAAS;iBAOH,8BAA8B;iBAC9B,2BAA2B,GACzC,WAAW,OAAO,sBAAsB,IACvC;;;;cAqUU,+BAAgC,GAC3C,SAAS,0BAA0B,OAClC"}
@@ -195,6 +195,7 @@ const useAssistantTransportThreadRuntime = (options) => {
195
195
  });
196
196
  },
197
197
  onError: async (error_0) => {
198
+ resumeFlagRef.current = false;
198
199
  setIsReplaying(false);
199
200
  const inTransitCmds = [...commandQueue.state.inTransit];
200
201
  const queuedCmds = [...commandQueue.state.queued];
@@ -244,6 +245,7 @@ const useAssistantTransportThreadRuntime = (options) => {
244
245
  runManager.schedule();
245
246
  } },
246
247
  onCancel: async () => {
248
+ resumeFlagRef.current = false;
247
249
  runManager.cancel();
248
250
  },
249
251
  onResume: async () => {