@assistant-ui/react 0.15.2 → 0.15.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/dist/client/ExternalThread.d.ts.map +1 -1
  2. package/dist/client/ExternalThread.js +1 -0
  3. package/dist/client/ExternalThread.js.map +1 -1
  4. package/dist/client/InMemoryThreadList.d.ts.map +1 -1
  5. package/dist/client/InMemoryThreadList.js +199 -176
  6. package/dist/client/InMemoryThreadList.js.map +1 -1
  7. package/dist/client/SingleThreadList.d.ts.map +1 -1
  8. package/dist/client/SingleThreadList.js +56 -48
  9. package/dist/client/SingleThreadList.js.map +1 -1
  10. package/dist/legacy-runtime/cloud/auiV0.d.ts +2 -0
  11. package/dist/legacy-runtime/cloud/auiV0.d.ts.map +1 -1
  12. package/dist/legacy-runtime/cloud/auiV0.js +6 -4
  13. package/dist/legacy-runtime/cloud/auiV0.js.map +1 -1
  14. package/dist/mcp-apps/McpAppRenderer.d.ts.map +1 -1
  15. package/dist/mcp-apps/McpAppRenderer.js +25 -14
  16. package/dist/mcp-apps/McpAppRenderer.js.map +1 -1
  17. package/dist/mcp-apps/McpAppsRemoteHost.d.ts.map +1 -1
  18. package/dist/mcp-apps/McpAppsRemoteHost.js +17 -6
  19. package/dist/mcp-apps/McpAppsRemoteHost.js.map +1 -1
  20. package/dist/primitives/message/MessagePartsGrouped.d.ts +6 -1
  21. package/dist/primitives/message/MessagePartsGrouped.d.ts.map +1 -1
  22. package/dist/primitives/message/MessagePartsGrouped.js.map +1 -1
  23. package/dist/primitives/suggestion/SuggestionTrigger.d.ts +4 -2
  24. package/dist/primitives/suggestion/SuggestionTrigger.d.ts.map +1 -1
  25. package/dist/primitives/suggestion/SuggestionTrigger.js +21 -42
  26. package/dist/primitives/suggestion/SuggestionTrigger.js.map +1 -1
  27. package/dist/primitives/thread/ThreadSuggestion.d.ts +4 -2
  28. package/dist/primitives/thread/ThreadSuggestion.d.ts.map +1 -1
  29. package/dist/primitives/thread/ThreadSuggestion.js.map +1 -1
  30. package/package.json +5 -5
  31. package/src/client/ExternalThread.ts +1 -0
  32. package/src/client/InMemoryThreadList.ts +27 -7
  33. package/src/client/SingleThreadList.ts +10 -2
  34. package/src/legacy-runtime/cloud/auiV0.ts +8 -2
  35. package/src/mcp-apps/McpAppRenderer.test.tsx +262 -3
  36. package/src/mcp-apps/McpAppRenderer.tsx +27 -15
  37. package/src/mcp-apps/McpAppsRemoteHost.ts +18 -9
  38. package/src/primitives/message/MessagePartsGrouped.tsx +6 -1
  39. package/src/primitives/suggestion/SuggestionTrigger.ts +11 -32
  40. package/src/primitives/thread/ThreadSuggestion.ts +2 -1
  41. package/src/tests/RemoteThreadListRuntime.reloadMainThread.test.tsx +115 -0
  42. package/src/tests/threadListItemIsRunning.test.tsx +198 -0
@@ -1 +1 @@
1
- {"version":3,"file":"ExternalThread.d.ts","names":[],"sources":["../../src/client/ExternalThread.ts"],"mappings":";;;;KAqDY,wBAAwB;EAClC;;KAgBU;EACV,mBAAmB;EACnB;EACA;EACA,QAAQ;EACR;;;;;;;EAOA;;;;;EAKA,SAAS,SAAS;EAClB,UAAU,SAAS;EACnB,YAAY;EACZ;EACA;EACA;EACA,oBAAoB,SAAS;;EAE7B,qBAAqB,SAAS;EAC9B,wBAAwB;EACxB,oBAAoB;;EAEpB,QAAQ;;EAER,WAAW;;EAEX,2BAA2B,SAAS;;cAw0BzB,4CAAc,SAAA,yBAAA"}
1
+ {"version":3,"file":"ExternalThread.d.ts","names":[],"sources":["../../src/client/ExternalThread.ts"],"mappings":";;;;KAqDY,wBAAwB;EAClC;;KAgBU;EACV,mBAAmB;EACnB;EACA;EACA,QAAQ;EACR;;;;;;;EAOA;;;;;EAKA,SAAS,SAAS;EAClB,UAAU,SAAS;EACnB,YAAY;EACZ;EACA;EACA;EACA,oBAAoB,SAAS;;EAE7B,qBAAqB,SAAS;EAC9B,wBAAwB;EACxB,oBAAoB;;EAEpB,QAAQ;;EAER,WAAW;;EAEX,2BAA2B,SAAS;;cAy0BzB,4CAAc,SAAA,yBAAA"}
@@ -887,6 +887,7 @@ const useExternalThread = (t0) => {
887
887
  edit: hasEdit,
888
888
  delete: false,
889
889
  reload: hasReload,
890
+ refetchThread: false,
890
891
  cancel: isRunning,
891
892
  speech: false,
892
893
  attachments: hasAttachments,
@@ -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","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","clear","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","onSteer","steer","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","queueItems","items","queueItemClients","accept","trim","isEmpty","canSend","attachmentAccept","dictation","fileOrAttachment","file","name","contentType","add","newAttachment","Math","random","toString","substring","prev_1","newAttachment_0","prev_2","removed_0","t19","removed_1","t20","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","t21","t22","t23","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","composerQueue","hasQueue","hasBranches","hasEdit","hasReload","hasAttachments","_temp10","messageStates","edit","feedback","voice","switchBranchDuringRun","unstable_copy","isDisabled","capabilities","suggestions","message_1","appendMessage","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} 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 queue?.clear(\"edit\");\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 onSteer,\n onRemove,\n}: {\n item: QueueItemState;\n onSteer: () => void;\n onRemove: () => void;\n}): ClientOutput<\"queueItem\"> => {\n return {\n getState: () => item,\n steer: onSteer,\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 queueItems = queue?.items ?? EMPTY_QUEUE_ITEMS;\n const queueItemClients = useClientLookup(\n queueItems.map((item) =>\n withKey(\n item.id,\n QueueItemClient({\n item,\n onSteer: () => queue?.steer(item.id),\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 if (queue) {\n queue.enqueue(composedMessage, { steer: opts?.steer ?? false });\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 }) => {\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 queue?.clear(\"reload\");\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 queue?.clear(\"cancel-run\");\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, options) =>\n queue.enqueue(\n { ...message, parentId: message.parentId ?? headId },\n options,\n ),\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 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, { steer: false });\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","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","clear","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","onSteer","steer","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","queueItems","items","queueItemClients","accept","trim","isEmpty","canSend","attachmentAccept","dictation","fileOrAttachment","file","name","contentType","add","newAttachment","Math","random","toString","substring","prev_1","newAttachment_0","prev_2","removed_0","t19","removed_1","t20","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","t21","t22","t23","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","composerQueue","hasQueue","hasBranches","hasEdit","hasReload","hasAttachments","_temp10","messageStates","edit","refetchThread","feedback","voice","switchBranchDuringRun","unstable_copy","isDisabled","capabilities","suggestions","message_1","appendMessage","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} 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 queue?.clear(\"edit\");\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 onSteer,\n onRemove,\n}: {\n item: QueueItemState;\n onSteer: () => void;\n onRemove: () => void;\n}): ClientOutput<\"queueItem\"> => {\n return {\n getState: () => item,\n steer: onSteer,\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 queueItems = queue?.items ?? EMPTY_QUEUE_ITEMS;\n const queueItemClients = useClientLookup(\n queueItems.map((item) =>\n withKey(\n item.id,\n QueueItemClient({\n item,\n onSteer: () => queue?.steer(item.id),\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 if (queue) {\n queue.enqueue(composedMessage, { steer: opts?.steer ?? false });\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 }) => {\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 queue?.clear(\"reload\");\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 queue?.clear(\"cancel-run\");\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, options) =>\n queue.enqueue(\n { ...message, parentId: message.parentId ?? headId },\n options,\n ),\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, { steer: false });\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 +1 @@
1
- {"version":3,"file":"InMemoryThreadList.d.ts","names":[],"sources":["../../src/client/InMemoryThreadList.ts"],"mappings":";;;KAeY;EACV,SAAS,qBAAqB,gBAAgB;EAC9C,oBAAoB;EACpB;;cA0KW,gDAAkB,SAAA,0BAAA,OAAA"}
1
+ {"version":3,"file":"InMemoryThreadList.d.ts","names":[],"sources":["../../src/client/InMemoryThreadList.ts"],"mappings":";;;KAeY;EACV,SAAS,qBAAqB,gBAAgB;EAC9C,oBAAoB;EACpB;;cA8LW,gDAAkB,SAAA,0BAAA,OAAA"}