@assistant-ui/react 0.15.10 → 0.15.11

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.
@@ -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","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","Error","handleBeginEdit","t5","Symbol","for","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","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 if (!onEdit) throw new Error(\"Runtime does not support editing.\");\n setIsEditing(true);\n };\n\n const handleCancelEdit = () => {\n setIsEditing(false);\n };\n\n const handleSendEdit = (msg: AppendMessage) => {\n if (!onEdit) throw new Error(\"Runtime does not support editing.\");\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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"}
1
+ {"version":3,"file":"ExternalThread.js","names":["useState","useMemo","useEffect","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","t1","content","map","idx","PartResource","messageId","partClients","t2","attachments","t3","_temp2","attachmentClients","t4","Error","handleBeginEdit","t5","msg","sourceId","handleSendEdit","t6","ComposerClientResource","canCancel","onBeginEdit","onSend","composerClient","branchIds","t7","getBranches","indexOf","branchIndex","branchNumber","branchCount","length","t8","role","metadata","messageWithFeedback","t9","t10","isLast","parts","composer","t11","t12","methods","t13","t14","t15","position","branchId","target","undefined","switchToBranch","t16","selector","get","findIndex","p","toolCallId","t17","selector_0","key","t18","getState","delete","_temp3","reload","speak","stopSpeaking","submitFeedback","getCopyText","attachment","MessageClient","PartResourceProps","usePartResource","result","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","Symbol","asyncIterator","useLiveState","initial","setState","ref","for","next","current","prev","T","set","const","useComposerClientResource","isEditing","setIsEditing","isEditingRef","text","setText","textRef","setRole","roleRef","runConfig","setRunConfig","runConfigRef","setAttachments","attachmentsRef","quote","setQuote","quoteRef","messageText","filter","_temp4","_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","t19","t20","t21","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","t22","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 { useState, useMemo, useEffect, useCallback, useRef } 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\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 if (!onEdit) throw new Error(\"Runtime does not support editing.\");\n };\n\n const handleSendEdit = (msg: AppendMessage) => {\n if (!onEdit) throw new Error(\"Runtime does not support editing.\");\n onEdit({\n ...msg,\n parentId,\n sourceId: message.id,\n });\n };\n\n const composerClient = useClientResource(\n ComposerClientResource({\n type: \"edit\",\n canCancel: true,\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 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 canCancel,\n isSendDisabled = false,\n onCancel,\n onBeginEdit,\n onSend,\n message,\n queue,\n attachmentAdapter,\n}: ComposerClientResourceProps): ClientOutput<\"composer\"> => {\n const [isEditing, setIsEditing, isEditingRef] = useLiveState(\n type === \"thread\",\n );\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 const updateFromMessage = () => {\n if (!message) return;\n const messageText = message.content\n .filter((part) => part.type === \"text\")\n .map((part) => part.text)\n .join(\"\\n\\n\");\n setText(messageText);\n setRole(message.role);\n setAttachments(message.attachments ?? []);\n };\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 (!isEditingRef.current) throw new Error(\"Composer is not available\");\n if (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 if (type === \"edit\") setIsEditing(false);\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: () => {\n onCancel?.();\n if (type === \"edit\") setIsEditing(false);\n },\n beginEdit: () => {\n onBeginEdit?.();\n if (type === \"thread\") return;\n if (isEditingRef.current) throw new Error(\"Edit already in progress\");\n setIsEditing(true);\n updateFromMessage();\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 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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"}
@@ -1 +1 @@
1
- {"version":3,"file":"InMemoryThreadList.d.ts","names":[],"sources":["../../src/client/InMemoryThreadList.ts"],"mappings":";;;KAeY;EACV,SAAS,qBAAqB,gBAAgB;EAC9C,oBAAoB;EACpB;;cA8LW,gDAAkB,SAAA,0BAAA,OAAA"}
1
+ {"version":3,"file":"InMemoryThreadList.d.ts","names":[],"sources":["../../src/client/InMemoryThreadList.ts"],"mappings":";;;KAeY;EACV,SAAS,qBAAqB,gBAAgB;EAC9C,oBAAoB;EACpB;;cA+LW,gDAAkB,SAAA,0BAAA,OAAA"}