@assistant-ui/react 0.15.8 → 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.
- package/LICENSE +21 -0
- package/dist/client/ExternalThread.d.ts +3 -1
- package/dist/client/ExternalThread.d.ts.map +1 -1
- package/dist/client/ExternalThread.js +524 -335
- package/dist/client/ExternalThread.js.map +1 -1
- package/dist/legacy-runtime/cloud/auiV0.d.ts +1 -0
- package/dist/legacy-runtime/cloud/auiV0.d.ts.map +1 -1
- package/dist/legacy-runtime/cloud/auiV0.js +2 -1
- package/dist/legacy-runtime/cloud/auiV0.js.map +1 -1
- package/dist/legacy-runtime/runtime-cores/assistant-transport/useAssistantTransportRuntime.d.ts.map +1 -1
- package/dist/legacy-runtime/runtime-cores/assistant-transport/useAssistantTransportRuntime.js +2 -0
- package/dist/legacy-runtime/runtime-cores/assistant-transport/useAssistantTransportRuntime.js.map +1 -1
- package/dist/unstable/useLiveCompletionAdapter.js +32 -7
- package/dist/unstable/useLiveCompletionAdapter.js.map +1 -1
- package/dist/utils/useToolArgsFieldStatus.d.ts +2 -2
- package/package.json +14 -16
- package/src/client/ExternalThread.ts +172 -9
- package/src/legacy-runtime/cloud/auiV0.ts +8 -1
- package/src/legacy-runtime/runtime-cores/assistant-transport/useAssistantTransport.spec.md +1 -0
- package/src/legacy-runtime/runtime-cores/assistant-transport/useAssistantTransportRuntime.test.tsx +79 -0
- package/src/legacy-runtime/runtime-cores/assistant-transport/useAssistantTransportRuntime.ts +2 -0
- package/src/tests/external-thread-feedback.test.tsx +204 -0
- package/src/tests/external-thread-speech.test.tsx +328 -0
- package/src/unstable/useLiveCompletionAdapter.test.tsx +90 -0
- 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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"}
|
|
@@ -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;
|
|
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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"}
|
package/dist/legacy-runtime/runtime-cores/assistant-transport/useAssistantTransportRuntime.d.ts.map
CHANGED
|
@@ -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;;;;
|
|
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"}
|
package/dist/legacy-runtime/runtime-cores/assistant-transport/useAssistantTransportRuntime.js
CHANGED
|
@@ -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 () => {
|