@assistant-ui/react 0.15.11 → 0.15.13
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/dist/augmentations.d.ts +3 -25
- package/dist/augmentations.d.ts.map +1 -1
- package/dist/index.d.ts +1 -3
- package/dist/index.js +1 -3
- package/dist/utils/useToolArgsFieldStatus.d.ts +2 -2
- package/package.json +5 -6
- package/src/augmentations.ts +4 -2
- package/src/index.ts +2 -2
- package/src/tests/augmentations.test.ts +39 -0
- package/src/tests/in-memory-thread-list.test.tsx +1 -1
- package/dist/client/ExternalThread.d.ts +0 -48
- package/dist/client/ExternalThread.d.ts.map +0 -1
- package/dist/client/ExternalThread.js +0 -1348
- package/dist/client/ExternalThread.js.map +0 -1
- package/dist/client/SingleThreadList.d.ts +0 -9
- package/dist/client/SingleThreadList.d.ts.map +0 -1
- package/dist/client/SingleThreadList.js +0 -171
- package/dist/client/SingleThreadList.js.map +0 -1
- package/src/client/ExternalThread.ts +0 -1147
- package/src/client/SingleThreadList.ts +0 -118
- package/src/tests/external-thread-attachments.test.tsx +0 -370
- package/src/tests/external-thread-branches.test.tsx +0 -160
- package/src/tests/external-thread-feedback.test.tsx +0 -204
- package/src/tests/external-thread-parity.test.tsx +0 -494
- package/src/tests/external-thread-speech.test.tsx +0 -328
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ExternalThread.js","names":["useState","useMemo","useEffect","useCallback","useRef","resource","withKey","ClientElement","ClientOutput","useClientLookup","attachTransformScopes","useClientResource","Derived","AddToolResultOptions","AppendMessage","Attachment","AttachmentAdapter","CreateAttachment","PendingAttachment","RespondToToolApprovalOptions","ResumeToolCallOptions","MessagePartStatus","ThreadAssistantMessagePart","ThreadUserMessagePart","ThreadMessage","ToolCallMessagePartStatus","ExternalThreadQueueAdapter","ExternalThreadBranchAdapter","QueuePlacement","FeedbackAdapter","SpeechState","SpeechSynthesisAdapter","ToolResponse","ReadonlyJSONValue","QueueItemState","ComposerSendOptions","fileMatchesAccept","getThreadMessageText","isCreateAttachment","resolveToolApprovalResponse","toMessagePartStatus","ModelContext","Suggestions","Tools","DataRenderers","SingleThreadList","EMPTY_QUEUE_ITEMS","EMPTY_BRANCH_IDS","ExternalThreadMessage","id","COMPLETE_STATUS","Object","freeze","type","derivePartStatus","message","partIndex","part","status","ExternalThreadProps","messages","isRunning","isLoading","state","extras","isSendDisabled","onNew","onEdit","onReload","parentId","onStartRun","onCancel","onResume","onAddToolResult","options","onResumeToolCall","onLoadExternalState","attachmentAdapter","feedbackAdapter","speechAdapter","queue","branches","onRespondToToolApproval","MessageClientProps","index","submittedFeedback","onSubmitFeedback","feedback","speech","onSpeak","onStopSpeaking","useMessageClient","t0","$","_c","isCopied","setIsCopied","isHovering","setIsHovering","t1","content","map","idx","PartResource","messageId","partClients","t2","attachments","t3","_temp2","attachmentClients","t4","Error","handleBeginEdit","t5","msg","sourceId","handleSendEdit","t6","ComposerClientResource","canCancel","onBeginEdit","onSend","composerClient","branchIds","t7","getBranches","indexOf","branchIndex","branchNumber","branchCount","length","t8","role","metadata","messageWithFeedback","t9","t10","isLast","parts","composer","t11","t12","methods","t13","t14","t15","position","branchId","target","undefined","switchToBranch","t16","selector","get","findIndex","p","toolCallId","t17","selector_0","key","t18","getState","delete","_temp3","reload","speak","stopSpeaking","submitFeedback","getCopyText","attachment","MessageClient","PartResourceProps","usePartResource","result","response","toResponse","toolName","isError","artifact","modelContent","payload","response_0","approval","approved","resolution","addToolResult","resumeToolCall","respondToToolApproval","AttachmentResourceProps","onRemove","Promise","useAttachmentResource","remove","AttachmentResource","ComposerClientResourceProps","useQueueItemClient","item","onMove","placement","steer","lane","insertAfter","move","QueueItemClient","drainAdapterAdd","ReturnType","upsert","Symbol","asyncIterator","useLiveState","initial","setState","ref","for","next","current","prev","T","set","const","useComposerClientResource","isEditing","setIsEditing","isEditingRef","text","setText","textRef","setRole","roleRef","runConfig","setRunConfig","runConfigRef","setAttachments","attachmentsRef","quote","setQuote","quoteRef","messageText","filter","_temp4","_temp5","join","updateFromMessage","a","removed","all","_temp6","a_1","removePendingAttachments","attachment_0","prev_0","a_2","upsertAttachment","steerItems","laneItems","items","queueItems","queueItemClients","accept","isEmpty","trim","canSend","attachmentAccept","dictation","fileOrAttachment","file","name","contentType","add","newAttachment","Math","random","toString","substring","prev_1","newAttachment_0","prev_2","removed_0","removed_1","opts","currentQuote","currentText","currentAttachments","isEmpty_0","dispatch","sendAttachments","composedMessage","createdAt","Date","startRun","custom","enqueue","attachment_1","send","then","error","prev_3","prev_4","prev_5","console","t19","t20","t21","addAttachment","clearAttachments","reset","cancel","beginEdit","startDictation","_temp7","stopDictation","_temp8","queueItem","createSpeechController","notify","session","clear","adapter","utterance","unsub","subscribe","stop","stopMessage","dispose","dedupeMessagesById","seenIds","Set","deduped","i","has","warn","push","reverse","useExternalThread","messagesProp","threadState","setSubmittedFeedback","entry","external","feedbackFor","live","entries","entry_0","msg_0","find","m","keys","fromEntries","submit","handleSubmitFeedback","speechState","setSpeech","speechController","hasSpeechAdapter","message_0","handleSpeak","messageIndex","m_0","handleReload","msg_1","props","messageClients","handleCancelRun","message_1","at","handleSendNew","headId","message_2","message_3","composerQueue","t22","hasQueue","hasBranches","hasEdit","hasReload","hasAttachments","hasFeedback","hasSpeech","t23","_temp9","messageStates","t24","t25","edit","refetchThread","voice","switchBranchDuringRun","unstable_copy","t26","t27","t28","isDisabled","capabilities","suggestions","t29","t30","t31","message_4","appendMessage","t32","t33","t34","state_0","t35","t36","append","deleteMessage","_temp0","resumeRun","cancelRun","importExternalState","getModelContext","_temp1","export","_temp10","import","_temp11","_temp12","connectVoice","_temp13","disconnectVoice","_temp14","getVoiceVolume","_temp15","subscribeVoiceVolume","_temp17","muteVoice","_temp18","unmuteVoice","_temp19","ExternalThread","scopes","parent","threads","source","threadElement","thread","query","aui","threadListItem","modelContext","tools","dataRenderers","_temp","part_0","a_0","s","arr","config","_temp16"],"sources":["../../src/client/ExternalThread.ts"],"sourcesContent":["import { useState, useMemo, useEffect, useCallback, useRef } from \"react\";\nimport { resource, withKey } from \"@assistant-ui/tap\";\nimport {\n type ClientElement,\n type ClientOutput,\n useClientLookup,\n attachTransformScopes,\n useClientResource,\n Derived,\n} from \"@assistant-ui/store\";\n\nimport type {\n AddToolResultOptions,\n AppendMessage,\n Attachment,\n AttachmentAdapter,\n CreateAttachment,\n PendingAttachment,\n RespondToToolApprovalOptions,\n ResumeToolCallOptions,\n MessagePartStatus,\n ThreadAssistantMessagePart,\n ThreadUserMessagePart,\n ThreadMessage,\n ToolCallMessagePartStatus,\n ExternalThreadQueueAdapter,\n ExternalThreadBranchAdapter,\n QueuePlacement,\n FeedbackAdapter,\n SpeechState,\n SpeechSynthesisAdapter,\n} from \"@assistant-ui/core\";\nimport { ToolResponse } from \"assistant-stream\";\nimport type { ReadonlyJSONValue } from \"assistant-stream/utils\";\nimport type { QueueItemState } from \"@assistant-ui/core/store\";\nimport type { ComposerSendOptions } from \"@assistant-ui/core/store\";\nimport {\n fileMatchesAccept,\n getThreadMessageText,\n isCreateAttachment,\n resolveToolApprovalResponse,\n toMessagePartStatus,\n} from \"@assistant-ui/core/internal\";\nimport { ModelContext, Suggestions } from \"@assistant-ui/core/store\";\nimport { Tools, DataRenderers } from \"@assistant-ui/core/react\";\nimport { SingleThreadList } from \"./SingleThreadList\";\n\nconst EMPTY_QUEUE_ITEMS: readonly QueueItemState[] = [];\nconst EMPTY_BRANCH_IDS: readonly string[] = [];\n\nexport type ExternalThreadMessage = ThreadMessage & {\n id: string;\n};\n\nconst COMPLETE_STATUS: MessagePartStatus = Object.freeze({\n type: \"complete\",\n});\n\nconst derivePartStatus = (\n message: ExternalThreadMessage,\n partIndex: number,\n part: ThreadAssistantMessagePart | ThreadUserMessagePart,\n): ToolCallMessagePartStatus => {\n if (!message.status) return COMPLETE_STATUS;\n return toMessagePartStatus(message, partIndex, part);\n};\n\nexport type ExternalThreadProps = {\n messages: readonly ExternalThreadMessage[];\n isRunning?: boolean;\n isLoading?: boolean | undefined;\n state?: ReadonlyJSONValue | undefined;\n extras?: unknown;\n /**\n * Whether sending new messages is currently disabled. When `true`, the\n * thread composer's input remains usable but `send()` is a no-op and\n * `composer.canSend` is `false`. Edit composers (saving message edits)\n * intentionally ignore this flag.\n */\n isSendDisabled?: boolean;\n /**\n * Callback for new messages (non-queue runtimes).\n * @note Unused when `queue` is provided — new messages are routed through `queue.enqueue` instead.\n */\n onNew?: (message: AppendMessage) => void;\n onEdit?: (message: AppendMessage) => void;\n onReload?: (parentId: string | null) => void;\n onStartRun?: () => void;\n onCancel?: () => void;\n onResume?: (() => void) | undefined;\n onAddToolResult?: ((options: AddToolResultOptions) => void) | undefined;\n /** Callback for resuming a tool call that is waiting for human input. */\n onResumeToolCall?: ((options: ResumeToolCallOptions) => void) | undefined;\n onLoadExternalState?: ((state: unknown) => void) | undefined;\n attachmentAdapter?: AttachmentAdapter | undefined;\n feedbackAdapter?: FeedbackAdapter | undefined;\n speechAdapter?: SpeechSynthesisAdapter | undefined;\n /** Queue adapter for runtimes that support message queuing and steering. */\n queue?: ExternalThreadQueueAdapter;\n /** Branch adapter for runtimes that track sibling variants of messages. */\n branches?: ExternalThreadBranchAdapter;\n /** Callback for tool approval decisions. Absent: responding to an approval throws a capability error. */\n onRespondToToolApproval?: (options: RespondToToolApprovalOptions) => void;\n};\n\ntype MessageClientProps = {\n message: ExternalThreadMessage;\n index: number;\n parentId: string | null;\n onEdit?: (message: AppendMessage) => void;\n onReload?: () => void;\n queue?: ExternalThreadQueueAdapter | undefined;\n branches?: ExternalThreadBranchAdapter | undefined;\n onRespondToToolApproval?:\n | ((options: RespondToToolApprovalOptions) => void)\n | undefined;\n onAddToolResult?: ((options: AddToolResultOptions) => void) | undefined;\n onResumeToolCall?: ((options: ResumeToolCallOptions) => void) | undefined;\n attachmentAdapter?: AttachmentAdapter | undefined;\n submittedFeedback: \"positive\" | \"negative\" | undefined;\n onSubmitFeedback: (feedback: { type: \"positive\" | \"negative\" }) => void;\n speech: SpeechState | undefined;\n onSpeak: () => void;\n onStopSpeaking: () => void;\n};\n\n// Message Client - minimal implementation\nconst useMessageClient = ({\n message,\n index,\n parentId,\n onEdit,\n onReload,\n queue,\n branches,\n onRespondToToolApproval,\n onAddToolResult,\n onResumeToolCall,\n attachmentAdapter,\n submittedFeedback,\n onSubmitFeedback,\n speech,\n onSpeak,\n onStopSpeaking,\n}: MessageClientProps): ClientOutput<\"message\"> => {\n const [isCopied, setIsCopied] = useState(false);\n const [isHovering, setIsHovering] = useState(false);\n\n const partClients = useClientLookup(\n message.content.map((part, idx) =>\n withKey(\n idx,\n PartResource({\n part,\n status: derivePartStatus(message, idx, part),\n messageId: message.id,\n onRespondToToolApproval,\n onAddToolResult,\n onResumeToolCall,\n }),\n ),\n ),\n );\n\n const attachmentClients = useClientLookup(\n (message.attachments ?? []).map((attachment) =>\n withKey(\n attachment.id,\n AttachmentResource({\n attachment,\n onRemove: () => {},\n }),\n ),\n ),\n );\n\n const handleBeginEdit = () => {\n if (!onEdit) throw new Error(\"Runtime does not support editing.\");\n };\n\n const handleSendEdit = (msg: AppendMessage) => {\n if (!onEdit) throw new Error(\"Runtime does not support editing.\");\n onEdit({\n ...msg,\n parentId,\n sourceId: message.id,\n });\n };\n\n const composerClient = useClientResource(\n ComposerClientResource({\n type: \"edit\",\n canCancel: true,\n onBeginEdit: handleBeginEdit,\n onSend: handleSendEdit,\n message,\n queue,\n attachmentAdapter,\n }),\n );\n\n const branchIds = branches?.getBranches(message.id) ?? EMPTY_BRANCH_IDS;\n const branchIndex = branchIds.indexOf(message.id);\n const branchNumber = branchIndex === -1 ? 1 : branchIndex + 1;\n const branchCount = branchIndex === -1 ? 1 : branchIds.length;\n\n const state = useMemo(() => {\n const messageWithFeedback: ExternalThreadMessage =\n submittedFeedback && message.role === \"assistant\"\n ? {\n ...message,\n metadata: {\n ...message.metadata,\n submittedFeedback: { type: submittedFeedback },\n },\n }\n : message;\n return {\n ...messageWithFeedback,\n attachments: message.attachments ?? [],\n parentId,\n isLast: false, // Will be set by thread\n branchNumber,\n branchCount,\n speech,\n parts: partClients.state,\n isCopied,\n isHovering,\n index,\n composer: composerClient.state,\n };\n }, [\n message,\n parentId,\n isCopied,\n isHovering,\n index,\n composerClient.state,\n partClients.state,\n branchNumber,\n branchCount,\n submittedFeedback,\n speech,\n ]);\n\n return {\n getState: () => state,\n composer: () => composerClient.methods,\n delete: () => {},\n reload: () => {\n onReload?.();\n },\n speak: onSpeak,\n stopSpeaking: onStopSpeaking,\n submitFeedback: onSubmitFeedback,\n switchToBranch: ({ position, branchId }) => {\n if (!branches) return;\n const target =\n branchId ??\n (branchIndex === -1\n ? undefined\n : position === \"previous\"\n ? branchIds[branchIndex - 1]\n : position === \"next\"\n ? branchIds[branchIndex + 1]\n : undefined);\n if (target !== undefined && target !== message.id)\n branches.switchToBranch(target);\n },\n getCopyText: () => getThreadMessageText(message),\n part: (selector) => {\n if (\"index\" in selector) {\n return partClients.get(selector);\n }\n const partIndex = state.parts.findIndex(\n (p) => p.type === \"tool-call\" && p.toolCallId === selector.toolCallId,\n );\n return partClients.get({ index: partIndex });\n },\n attachment: (selector) => {\n if (\"id\" in selector) {\n return attachmentClients.get({ key: selector.id });\n }\n return attachmentClients.get(selector);\n },\n setIsCopied,\n setIsHovering,\n };\n};\n\nconst MessageClient = resource(useMessageClient);\n\ntype PartResourceProps = {\n part: ThreadAssistantMessagePart | ThreadUserMessagePart;\n status: ToolCallMessagePartStatus;\n messageId: string;\n onRespondToToolApproval?:\n | ((options: RespondToToolApprovalOptions) => void)\n | undefined;\n onAddToolResult?: ((options: AddToolResultOptions) => void) | undefined;\n onResumeToolCall?: ((options: ResumeToolCallOptions) => void) | undefined;\n};\n\n// Part Client - minimal implementation\nconst usePartResource = ({\n part,\n status,\n messageId,\n onRespondToToolApproval,\n onAddToolResult,\n onResumeToolCall,\n}: PartResourceProps): ClientOutput<\"part\"> => {\n const state = useMemo(\n () => ({ ...part, status: status as MessagePartStatus }),\n [part, status],\n );\n\n return {\n getState: () => state,\n addToolResult: (result) => {\n if (!onAddToolResult)\n throw new Error(\n \"Runtime does not support tool results (onAddToolResult is not set).\",\n );\n if (part.type !== \"tool-call\")\n throw new Error(\"Tried to add tool result on non-tool message part\");\n\n const response = ToolResponse.toResponse(result);\n onAddToolResult({\n messageId,\n toolName: part.toolName,\n toolCallId: part.toolCallId,\n result: response.result as ReadonlyJSONValue,\n isError: response.isError,\n ...(response.artifact !== undefined && { artifact: response.artifact }),\n ...(response.modelContent !== undefined && {\n modelContent: response.modelContent,\n }),\n });\n },\n resumeToolCall: (payload) => {\n if (!onResumeToolCall)\n throw new Error(\n \"Runtime does not support resuming tool calls (onResumeToolCall is not set).\",\n );\n if (part.type !== \"tool-call\")\n throw new Error(\"Tried to resume tool call on non-tool message part\");\n\n onResumeToolCall({ toolCallId: part.toolCallId, payload });\n },\n respondToToolApproval: (response) => {\n if (!onRespondToToolApproval)\n throw new Error(\"Runtime does not support tool approvals.\");\n\n if (part.type !== \"tool-call\")\n throw new Error(\n \"Tried to respond to tool approval on non-tool message part\",\n );\n\n if (\n !part.approval ||\n part.approval.approved !== undefined ||\n part.approval.resolution !== undefined\n )\n throw new Error(\"Tool call has no pending approval\");\n\n onRespondToToolApproval(\n resolveToolApprovalResponse(part.approval, response),\n );\n },\n };\n};\n\nconst PartResource = resource(usePartResource);\n\ntype AttachmentResourceProps = {\n attachment: Attachment;\n onRemove?: () => void | Promise<void>;\n};\n\n// Attachment Client - minimal implementation\nconst useAttachmentResource = ({\n attachment,\n onRemove,\n}: AttachmentResourceProps): ClientOutput<\"attachment\"> => {\n return {\n getState: () => attachment,\n remove: async () => {\n await onRemove?.();\n },\n };\n};\n\nconst AttachmentResource = resource(useAttachmentResource);\n\ntype ComposerClientResourceProps = {\n type: \"thread\" | \"edit\";\n canCancel: boolean;\n isSendDisabled?: boolean;\n onCancel?: () => void;\n onBeginEdit?: () => void;\n onSend?: (message: AppendMessage) => void;\n message?: ExternalThreadMessage;\n queue?: ExternalThreadQueueAdapter | undefined;\n attachmentAdapter?: AttachmentAdapter | undefined;\n};\n\nconst useQueueItemClient = ({\n item,\n onMove,\n onRemove,\n}: {\n item: QueueItemState;\n onMove: (placement: QueuePlacement) => void;\n onRemove: () => void;\n}): ClientOutput<\"queueItem\"> => {\n return {\n getState: () => item,\n steer: () => onMove({ lane: \"steer\", insertAfter: null }),\n move: onMove,\n remove: onRemove,\n };\n};\n\nconst QueueItemClient = resource(useQueueItemClient);\n\nconst drainAdapterAdd = async (\n result: ReturnType<AttachmentAdapter[\"add\"]>,\n upsert: (attachment: Attachment) => void,\n) => {\n if (Symbol.asyncIterator in result) {\n for await (const attachment of result) {\n upsert(attachment);\n }\n } else {\n upsert(await result);\n }\n};\n\n// State whose setter tracks the latest value in a ref, so imperative\n// call sequences (setText immediately followed by send) observe the write\n// before React re-renders — legacy composer parity.\nconst useLiveState = <T>(initial: T) => {\n const [state, setState] = useState(initial);\n const ref = useRef(state);\n const set = useCallback((next: T | ((prev: T) => T)) => {\n ref.current =\n typeof next === \"function\" ? (next as (prev: T) => T)(ref.current) : next;\n setState(ref.current);\n }, []);\n return [state, set, ref] as const;\n};\n\n// Composer Client - minimal implementation\nconst useComposerClientResource = ({\n type,\n canCancel,\n isSendDisabled = false,\n onCancel,\n onBeginEdit,\n onSend,\n message,\n queue,\n attachmentAdapter,\n}: ComposerClientResourceProps): ClientOutput<\"composer\"> => {\n const [isEditing, setIsEditing, isEditingRef] = useLiveState(\n type === \"thread\",\n );\n const [text, setText, textRef] = useLiveState(\"\");\n const [role, setRole, roleRef] = useLiveState<\n \"user\" | \"assistant\" | \"system\"\n >(\"user\");\n const [runConfig, setRunConfig, runConfigRef] = useLiveState<\n Record<string, unknown>\n >({});\n const [attachments, setAttachments, attachmentsRef] = useLiveState<\n readonly Attachment[]\n >([]);\n const [quote, setQuote, quoteRef] = useLiveState<\n { readonly text: string; readonly messageId: string } | undefined\n >(undefined);\n\n const updateFromMessage = () => {\n if (!message) return;\n const messageText = message.content\n .filter((part) => part.type === \"text\")\n .map((part) => part.text)\n .join(\"\\n\\n\");\n setText(messageText);\n setRole(message.role);\n setAttachments(message.attachments ?? []);\n };\n\n const attachmentClients = useClientLookup(\n attachments.map((attachment) =>\n withKey(\n attachment.id,\n AttachmentResource({\n attachment,\n onRemove: async () => {\n await attachmentAdapter?.remove(attachment);\n setAttachments((prev) =>\n prev.filter((a) => a.id !== attachment.id),\n );\n },\n }),\n ),\n ),\n );\n\n const removePendingAttachments = async (removed: readonly Attachment[]) => {\n if (!attachmentAdapter) return;\n await Promise.all(\n removed\n .filter((a) => a.status.type !== \"complete\")\n .map((a) => attachmentAdapter.remove(a)),\n );\n };\n\n const upsertAttachment = (attachment: Attachment) => {\n setAttachments((prev) => {\n const idx = prev.findIndex((a) => a.id === attachment.id);\n if (idx === -1) return [...prev, attachment];\n const next = [...prev];\n next[idx] = attachment;\n return next;\n });\n };\n\n const steerItems = queue?.steerItems ?? EMPTY_QUEUE_ITEMS;\n const laneItems = queue?.items ?? EMPTY_QUEUE_ITEMS;\n const queueItems = useMemo(\n () =>\n steerItems.length === 0\n ? laneItems\n : laneItems.length === 0\n ? steerItems\n : [...steerItems, ...laneItems],\n [steerItems, laneItems],\n );\n const queueItemClients = useClientLookup(\n queueItems.map((item) =>\n withKey(\n item.id,\n QueueItemClient({\n item,\n onMove: (placement) => queue?.move(item.id, placement),\n onRemove: () => queue?.remove(item.id),\n }),\n ),\n ),\n );\n\n const state = useMemo(() => {\n const isEmpty = !text.trim() && !attachments.length;\n return {\n text,\n role,\n attachments: attachmentClients.state,\n runConfig,\n isEditing,\n canCancel,\n canSend: isEditing && !isEmpty && !isSendDisabled,\n attachmentAccept: attachmentAdapter?.accept ?? \"*\",\n isEmpty,\n type,\n dictation: undefined,\n quote,\n queue: queueItems,\n };\n }, [\n text,\n role,\n attachmentClients.state,\n runConfig,\n isEditing,\n canCancel,\n isSendDisabled,\n type,\n attachments.length,\n quote,\n queueItems,\n attachmentAdapter?.accept,\n ]);\n\n return {\n getState: () => state,\n setText,\n setRole,\n setRunConfig,\n addAttachment: async (fileOrAttachment: File | CreateAttachment) => {\n if (attachmentAdapter) {\n const file = isCreateAttachment(fileOrAttachment)\n ? {\n name: fileOrAttachment.name,\n type: fileOrAttachment.contentType ?? \"\",\n }\n : { name: fileOrAttachment.name, type: fileOrAttachment.type };\n if (!fileMatchesAccept(file, attachmentAdapter.accept))\n throw new Error(\n `File type ${file.type || \"unknown\"} is not accepted. Accepted types: ${attachmentAdapter.accept}`,\n );\n }\n if (!isCreateAttachment(fileOrAttachment) && attachmentAdapter) {\n await drainAdapterAdd(\n attachmentAdapter.add({ file: fileOrAttachment }),\n upsertAttachment,\n );\n } else if (!isCreateAttachment(fileOrAttachment)) {\n const newAttachment: Attachment = {\n id: Math.random().toString(36).substring(7),\n type: \"file\",\n name: fileOrAttachment.name,\n contentType: fileOrAttachment.type,\n file: fileOrAttachment,\n status: { type: \"complete\" },\n content: [],\n };\n setAttachments((prev) => [...prev, newAttachment]);\n } else {\n const newAttachment: Attachment = {\n id: fileOrAttachment.id ?? Math.random().toString(36).substring(7),\n type: fileOrAttachment.type ?? \"document\",\n name: fileOrAttachment.name,\n contentType: fileOrAttachment.contentType,\n content: fileOrAttachment.content,\n status: { type: \"complete\" },\n };\n setAttachments((prev) => [...prev, newAttachment]);\n }\n },\n clearAttachments: async () => {\n const removed = attachmentsRef.current;\n setAttachments([]);\n await removePendingAttachments(removed);\n },\n attachment: (selector) => {\n if (\"id\" in selector) {\n return attachmentClients.get({ key: selector.id });\n }\n return attachmentClients.get(selector);\n },\n reset: async () => {\n const removed = attachmentsRef.current;\n setText(\"\");\n setRole(\"user\");\n setRunConfig({});\n setAttachments([]);\n setQuote(undefined);\n await removePendingAttachments(removed);\n },\n send: (opts?: ComposerSendOptions) => {\n const currentQuote = quoteRef.current;\n const currentText = textRef.current;\n const currentAttachments = attachmentsRef.current;\n const isEmpty = !currentText.trim() && !currentAttachments.length;\n if (!isEditingRef.current) throw new Error(\"Composer is not available\");\n if (isEmpty || isSendDisabled) return;\n\n setText(\"\");\n setAttachments([]);\n setQuote(undefined);\n\n const dispatch = (sendAttachments: readonly Attachment[]) => {\n const composedMessage: AppendMessage = {\n role: roleRef.current,\n content: currentText\n ? [{ type: \"text\" as const, text: currentText }]\n : [],\n attachments: sendAttachments as any,\n createdAt: new Date(),\n parentId: null,\n sourceId: null,\n runConfig: runConfigRef.current,\n startRun: opts?.startRun,\n metadata: {\n custom: { ...(currentQuote ? { quote: currentQuote } : {}) },\n },\n };\n // edit sends carry a sourceId contract; only thread sends queue\n if (queue && type === \"thread\") {\n if (opts?.steer ?? canCancel) queue.steer(composedMessage);\n else queue.enqueue(composedMessage);\n } else {\n onSend?.(composedMessage);\n }\n if (type === \"edit\") setIsEditing(false);\n };\n\n if (attachmentAdapter && currentAttachments.length > 0) {\n void Promise.all(\n currentAttachments.map((attachment) =>\n attachment.status.type === \"complete\"\n ? attachment\n : attachmentAdapter.send(attachment as PendingAttachment),\n ),\n ).then(dispatch, (error) => {\n // Upload failed: merge the failed send back into the draft.\n setText((prev) =>\n currentText && prev\n ? currentText + \"\\n\" + prev\n : currentText || prev,\n );\n setQuote((prev) => prev ?? currentQuote);\n setAttachments((prev) => [...currentAttachments, ...prev]);\n console.error(\"Failed to send attachments\", error);\n });\n } else {\n dispatch(currentAttachments);\n }\n },\n cancel: () => {\n onCancel?.();\n if (type === \"edit\") setIsEditing(false);\n },\n beginEdit: () => {\n onBeginEdit?.();\n if (type === \"thread\") return;\n if (isEditingRef.current) throw new Error(\"Edit already in progress\");\n setIsEditing(true);\n updateFromMessage();\n },\n startDictation: () => {},\n stopDictation: () => {},\n setQuote,\n queueItem: (selector: { index: number } | { id: string }) => {\n if (\"id\" in selector) {\n return queueItemClients.get({ key: selector.id });\n }\n return queueItemClients.get(selector);\n },\n };\n};\n\nconst ComposerClientResource = resource(useComposerClientResource);\n\nconst createSpeechController = (\n notify: (speech: SpeechState | undefined) => void,\n) => {\n let session: { messageId: string; cancel: () => void } | undefined;\n\n const clear = () => {\n if (!session) return;\n session.cancel();\n session = undefined;\n notify(undefined);\n };\n\n return {\n speak: (\n adapter: SpeechSynthesisAdapter,\n message: ExternalThreadMessage,\n ) => {\n clear();\n\n const utterance = adapter.speak(getThreadMessageText(message));\n let unsub: (() => void) | undefined;\n unsub = utterance.subscribe(() => {\n if (utterance.status.type === \"ended\") {\n unsub?.();\n session = undefined;\n notify(undefined);\n } else {\n notify({ messageId: message.id, status: utterance.status });\n }\n });\n\n if (utterance.status.type === \"ended\") {\n unsub();\n notify(undefined);\n return;\n }\n\n session = {\n messageId: message.id,\n cancel: () => {\n unsub!();\n utterance.cancel();\n },\n };\n notify({ messageId: message.id, status: utterance.status });\n },\n stop: () => {\n if (!session) throw new Error(\"No message is being spoken\");\n clear();\n },\n stopMessage: (messageId: string) => {\n if (session?.messageId !== messageId)\n throw new Error(\"Message is not being spoken\");\n clear();\n },\n dispose: clear,\n };\n};\n\nconst dedupeMessagesById = (messages: readonly ExternalThreadMessage[]) => {\n const seenIds = new Set<string>();\n const deduped: ExternalThreadMessage[] = [];\n for (let i = messages.length - 1; i >= 0; i--) {\n const message = messages[i]!;\n if (seenIds.has(message.id)) {\n console.warn(\n `ExternalThread: duplicate message id \"${message.id}\" in the provided messages array; keeping the last occurrence.`,\n );\n continue;\n }\n seenIds.add(message.id);\n deduped.push(message);\n }\n return deduped.length === messages.length ? messages : deduped.reverse();\n};\n\n// External Thread Client\nconst useExternalThread = ({\n messages: messagesProp,\n isRunning = false,\n isLoading = false,\n state: threadState,\n extras,\n isSendDisabled = false,\n onNew,\n onEdit,\n onReload,\n onStartRun,\n onCancel,\n onResume,\n onAddToolResult,\n onResumeToolCall,\n onLoadExternalState,\n attachmentAdapter,\n feedbackAdapter,\n speechAdapter,\n queue,\n branches,\n onRespondToToolApproval,\n}: ExternalThreadProps): ClientOutput<\"thread\"> => {\n const messages = useMemo(\n () => dedupeMessagesById(messagesProp),\n [messagesProp],\n );\n\n // Local entries are optimistic: they apply only while the message's\n // external submittedFeedback still equals the value seen at click time.\n const [submittedFeedback, setSubmittedFeedback] = useState<\n Record<\n string,\n {\n type: \"positive\" | \"negative\";\n external: \"positive\" | \"negative\" | undefined;\n }\n >\n >({});\n\n const feedbackFor = (msg: ExternalThreadMessage) => {\n const entry = submittedFeedback[msg.id];\n return entry && msg.metadata.submittedFeedback?.type === entry.external\n ? entry.type\n : undefined;\n };\n\n useEffect(() => {\n setSubmittedFeedback((prev) => {\n const live = Object.entries(prev).filter(([id, entry]) => {\n const msg = messages.find((m) => m.id === id);\n return !!msg && msg.metadata.submittedFeedback?.type === entry.external;\n });\n return live.length === Object.keys(prev).length\n ? prev\n : Object.fromEntries(live);\n });\n }, [messages]);\n\n const handleSubmitFeedback = (\n message: ExternalThreadMessage,\n { type }: { type: \"positive\" | \"negative\" },\n ) => {\n if (!feedbackAdapter) throw new Error(\"Feedback adapter not configured\");\n feedbackAdapter.submit({ message, type });\n\n if (message.role === \"assistant\") {\n setSubmittedFeedback((prev) => ({\n ...prev,\n [message.id]: {\n type,\n external: message.metadata.submittedFeedback?.type,\n },\n }));\n }\n };\n\n const [speechState, setSpeech] = useState<SpeechState | undefined>(undefined);\n const [speechController] = useState(() => createSpeechController(setSpeech));\n\n const hasSpeechAdapter = !!speechAdapter;\n const speech = hasSpeechAdapter ? speechState : undefined;\n useEffect(() => {\n if (!hasSpeechAdapter) speechController.dispose();\n }, [hasSpeechAdapter, speechController]);\n\n useEffect(() => () => speechController.dispose(), [speechController]);\n\n const handleSpeak = (message: ExternalThreadMessage) => {\n if (!speechAdapter) throw new Error(\"Speech adapter not configured\");\n speechController.speak(speechAdapter, message);\n };\n\n const handleReload = (messageId: string) => {\n const messageIndex = messages.findIndex((m) => m.id === messageId);\n if (messageIndex === -1) return;\n\n const parentId = messageIndex > 0 ? messages[messageIndex - 1]!.id : null;\n onReload?.(parentId);\n };\n\n const messageClients = useClientLookup(\n messages.map((msg, index) => {\n const props: MessageClientProps = {\n message: msg,\n index,\n parentId: index > 0 ? messages[index - 1]!.id : null,\n onReload: () => handleReload(msg.id),\n queue,\n branches,\n onRespondToToolApproval,\n onAddToolResult,\n onResumeToolCall,\n attachmentAdapter,\n submittedFeedback: feedbackFor(msg),\n onSubmitFeedback: (feedback) => handleSubmitFeedback(msg, feedback),\n speech: speech?.messageId === msg.id ? speech : undefined,\n onSpeak: () => handleSpeak(msg),\n onStopSpeaking: () => speechController.stopMessage(msg.id),\n };\n if (onEdit) props.onEdit = onEdit;\n return withKey(msg.id, MessageClient(props));\n }),\n );\n\n const handleCancelRun = () => {\n onCancel?.();\n };\n\n const handleSendNew = (message: AppendMessage) => {\n // The composer does not know the thread; stamp the current head as the\n // parent (legacy composer parity).\n onNew?.({ ...message, parentId: messages.at(-1)?.id ?? null });\n };\n\n const headId = messages.at(-1)?.id ?? null;\n const composerQueue = useMemo(\n (): ExternalThreadQueueAdapter | undefined =>\n queue && {\n ...queue,\n enqueue: (message) =>\n queue.enqueue({ ...message, parentId: message.parentId ?? headId }),\n steer: (message) =>\n queue.steer({ ...message, parentId: message.parentId ?? headId }),\n },\n [queue, headId],\n );\n\n const composerClient = useClientResource(\n ComposerClientResource({\n type: \"thread\",\n canCancel: isRunning,\n isSendDisabled,\n onCancel: handleCancelRun,\n onSend: handleSendNew,\n queue: composerQueue,\n attachmentAdapter,\n }),\n );\n\n const hasQueue = !!queue;\n const hasBranches = !!branches;\n const hasEdit = !!onEdit;\n const hasReload = !!onReload;\n const hasAttachments = !!attachmentAdapter;\n const hasFeedback = !!feedbackAdapter;\n const hasSpeech = !!speechAdapter;\n const state = useMemo(() => {\n const messageStates = messageClients.state.map((s, idx, arr) => ({\n ...s,\n isLast: idx === arr.length - 1,\n }));\n\n return {\n isEmpty: messages.length === 0,\n isDisabled: false,\n isLoading,\n isRunning,\n capabilities: {\n edit: hasEdit,\n delete: false,\n reload: hasReload,\n refetchThread: false,\n cancel: isRunning,\n speech: hasSpeech,\n attachments: hasAttachments,\n feedback: hasFeedback,\n voice: false,\n switchToBranch: hasBranches,\n switchBranchDuringRun: false,\n unstable_copy: false,\n dictation: false,\n queue: hasQueue,\n },\n messages: messageStates,\n state: threadState ?? {},\n suggestions: [],\n extras,\n speech,\n voice: undefined,\n composer: composerClient.state,\n };\n }, [\n messages,\n isRunning,\n isLoading,\n threadState,\n extras,\n hasQueue,\n hasBranches,\n hasEdit,\n hasReload,\n hasAttachments,\n hasFeedback,\n hasSpeech,\n speech,\n messageClients.state,\n composerClient.state,\n ]);\n\n return {\n getState: () => state,\n composer: () => composerClient.methods,\n append: (message) => {\n const appendMessage: AppendMessage =\n typeof message === \"string\"\n ? {\n createdAt: new Date(),\n parentId: messages.at(-1)?.id ?? null,\n sourceId: null,\n runConfig: {},\n role: \"user\",\n content: [{ type: \"text\", text: message }],\n attachments: [],\n metadata: { custom: {} },\n }\n : {\n createdAt: message.createdAt ?? new Date(),\n parentId: message.parentId ?? messages.at(-1)?.id ?? null,\n sourceId: message.sourceId ?? null,\n role: message.role ?? \"user\",\n content: message.content,\n attachments: message.attachments ?? [],\n metadata: message.metadata ?? { custom: {} },\n runConfig: message.runConfig ?? {},\n startRun: message.startRun,\n };\n if (queue) {\n queue.enqueue(appendMessage);\n } else {\n onNew?.(appendMessage);\n }\n },\n deleteMessage: () => {},\n startRun: () => {\n onStartRun?.();\n },\n resumeRun: () => {\n if (!onResume)\n throw new Error(\n \"Runtime does not support resuming runs (onResume is not set).\",\n );\n onResume();\n },\n cancelRun: handleCancelRun,\n importExternalState: (state: unknown) => {\n if (!onLoadExternalState)\n throw new Error(\n \"Runtime does not support importing external states (onLoadExternalState is not set).\",\n );\n onLoadExternalState(state);\n },\n getModelContext: () => ({ tools: {}, config: {} }),\n export: () => ({ messages: [] }),\n import: () => {},\n reset: () => {},\n message: (selector) => {\n if (\"id\" in selector) {\n return messageClients.get({ key: selector.id });\n }\n return messageClients.get(selector);\n },\n stopSpeaking: speechController.stop,\n connectVoice: () => {},\n disconnectVoice: () => {},\n getVoiceVolume: () => 0,\n subscribeVoiceVolume: () => () => {},\n muteVoice: () => {},\n unmuteVoice: () => {},\n };\n};\n\nexport const ExternalThread = resource(useExternalThread);\n\nattachTransformScopes(useExternalThread, (scopes, parent) => {\n if (!scopes.threads && parent.threads.source === null) {\n const threadElement = scopes.thread as ClientElement<\"thread\">;\n scopes.threads = SingleThreadList({ thread: threadElement });\n // scopes mount in key order; re-declare thread after the threads source it resolves from\n delete scopes.thread;\n scopes.thread = Derived({\n source: \"threads\",\n query: { type: \"main\" },\n get: (aui) => aui.threads.thread(\"main\"),\n });\n }\n\n if (!scopes.threadListItem && parent.threadListItem.source === null) {\n scopes.threadListItem = Derived({\n source: \"threads\",\n query: { type: \"main\" },\n get: (aui) => aui.threads.item(\"main\"),\n });\n }\n\n scopes.composer ??= Derived({\n source: \"thread\",\n query: {},\n get: (aui) => aui.thread.composer(),\n });\n\n if (!scopes.modelContext && parent.modelContext.source === null) {\n scopes.modelContext = ModelContext();\n }\n if (!scopes.tools && parent.tools.source === null) {\n scopes.tools = Tools({});\n }\n if (!scopes.dataRenderers && parent.dataRenderers.source === null) {\n scopes.dataRenderers = DataRenderers();\n }\n if (!scopes.suggestions && parent.suggestions.source === null) {\n scopes.suggestions = Suggestions();\n }\n});\n"],"mappings":";;;;;;;;;;AA+CA,MAAM8C,oBAA+C,CAAA;AACrD,MAAMC,mBAAsC,CAAA;AAM5C,MAAMG,kBAAqCC,OAAOC,OAAO,EACvDC,MAAM,WACR,CAAC;AAED,MAAMC,oBACJC,SACAC,WACAC,SAC8B;CAC9B,IAAI,CAACF,QAAQG,QAAQ,OAAOR;CAC5B,OAAOV,oBAAoBe,SAASC,WAAWC,IAAI;AACrD;AA8DA,MAAMkC,oBAAmBC,OAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CAAC,MAAA,EAAAvC,SAAA6B,OAAAf,UAAAF,QAAAC,UAAAY,OAAAC,UAAAC,yBAAAT,iBAAAE,kBAAAE,mBAAAQ,mBAAAC,kBAAAE,QAAAC,SAAAC,mBAAAE;CAkBxB,MAAA,CAAAG,UAAAC,eAAgChG,SAAS,KAAK;CAC9C,MAAA,CAAAiG,YAAAC,iBAAoClG,SAAS,KAAK;CAAE,IAAAmG;CAAA,IAAAN,EAAA,OAAAtC,WAAAsC,EAAA,OAAApB,mBAAAoB,EAAA,OAAAX,2BAAAW,EAAA,OAAAlB,kBAAA;EAGlDwB,KAAA5C,QAAO6C,QAAQC,KAAK5C,MAAA6C,QAClBhG,QACEgG,KACAC,aAAa;GAAA9C;GAAAC,QAEHJ,iBAAiBC,SAAS+C,KAAK7C,IAAI;GAAC+C,WACjCjD,QAAON;GAAGiC;GAAAT;GAAAE;EAIvB,CAAC,CACH,CACF;EAACkB,EAAA,KAAAtC;EAAAsC,EAAA,KAAApB;EAAAoB,EAAA,KAAAX;EAAAW,EAAA,KAAAlB;EAAAkB,EAAA,KAAAM;CAAA,OAAAA,KAAAN,EAAA;CAbH,MAAAY,cAAoBhG,gBAClB0F,EAaF;CAAE,IAAAO;CAAA,IAAAb,EAAA,OAAAtC,QAAAoD,aAAA;EAGCD,KAAAnD,QAAOoD,eAAP,CAAA;EAAyBd,EAAA,KAAAtC,QAAAoD;EAAAd,EAAA,KAAAa;CAAA,OAAAA,KAAAb,EAAA;CAAA,IAAAe;CAAA,IAAAf,EAAA,OAAAa,IAAA;EAA1BE,KAACF,GAAyBL,IAAMQ,MAQhC;EAAChB,EAAA,KAAAa;EAAAb,EAAA,KAAAe;CAAA,OAAAA,KAAAf,EAAA;CATH,MAAAiB,oBAA0BrG,gBACxBmG,EASF;CAAE,IAAAG;CAAA,IAAAlB,EAAA,OAAA1B,QAAA;EAEsB4C,WAAA;GACtB,IAAI,CAAC5C,QAAQ,MAAM,IAAI6C,MAAM,mCAAmC;EAAE;EACnEnB,EAAA,KAAA1B;EAAA0B,EAAA,MAAAkB;CAAA,OAAAA,KAAAlB,EAAA;CAFD,MAAAoB,kBAAwBF;CAEtB,IAAAG;CAAA,IAAArB,EAAA,QAAAtC,QAAAN,MAAA4C,EAAA,QAAA1B,UAAA0B,EAAA,QAAAxB,UAAA;EAEqB6C,MAAAC,QAAA;GACrB,IAAI,CAAChD,QAAQ,MAAM,IAAI6C,MAAM,mCAAmC;GAChE7C,OAAO;IAAA,GACFgD;IAAG9C;IAAA+C,UAEI7D,QAAON;GACnB,CAAC;EAAC;EACH4C,EAAA,MAAAtC,QAAAN;EAAA4C,EAAA,MAAA1B;EAAA0B,EAAA,MAAAxB;EAAAwB,EAAA,MAAAqB;CAAA,OAAAA,KAAArB,EAAA;CAPD,MAAAwB,iBAAuBH;CAOrB,IAAAI;CAAA,IAAAzB,EAAA,QAAAhB,qBAAAgB,EAAA,QAAAoB,mBAAApB,EAAA,QAAAwB,kBAAAxB,EAAA,QAAAtC,WAAAsC,EAAA,QAAAb,OAAA;EAGAsC,KAAAC,uBAAuB;GAAAlE,MACf;GAAMmE,WACD;GAAIC,aACFR;GAAeS,QACpBL;GAAc9D;GAAAyB;GAAAH;EAIxB,CAAC;EAACgB,EAAA,MAAAhB;EAAAgB,EAAA,MAAAoB;EAAApB,EAAA,MAAAwB;EAAAxB,EAAA,MAAAtC;EAAAsC,EAAA,MAAAb;EAAAa,EAAA,MAAAyB;CAAA,OAAAA,KAAAzB,EAAA;CATJ,MAAA8B,iBAAuBhH,kBACrB2G,EASF;CAAE,IAAAM;CAAA,IAAAC;CAAA,IAAAhC,EAAA,QAAAZ,YAAAY,EAAA,QAAAtC,QAAAN,IAAA;EAEF2E,YAAkB3C,UAAQ6C,YAAcvE,QAAON,EAAuB,KAApDF;EACE8E,KAAAD,UAASG,QAASxE,QAAON,EAAG;EAAC4C,EAAA,MAAAZ;EAAAY,EAAA,MAAAtC,QAAAN;EAAA4C,EAAA,MAAA+B;EAAA/B,EAAA,MAAAgC;CAAA,OAAA;EAAAD,YAAA/B,EAAA;EAAAgC,KAAAhC,EAAA;CAAA;CAAjD,MAAAmC,cAAoBH;CACpB,MAAAI,eAAqBD,gBAAgB,KAAhB,IAAyBA,cAAc;CAC5D,MAAAE,cAAoBF,gBAAgB,KAAhB,IAAyBJ,UAASO;CAAQ,IAAAC;CAAA,IAAAvC,EAAA,QAAAtC,WAAAsC,EAAA,QAAAR,mBAAA;EAI1D+C,KAAA/C,qBAAqB9B,QAAO8E,SAAU,cAAtC;GAAA,GAES9E;GAAO+E,UACA;IAAA,GACL/E,QAAO+E;IAASjD,mBACA,EAAAhC,MAAQgC,kBAAkB;GAC/C;EAEI,IARV9B;EAQWsC,EAAA,MAAAtC;EAAAsC,EAAA,MAAAR;EAAAQ,EAAA,MAAAuC;CAAA,OAAAA,KAAAvC,EAAA;CATb,MAAA0C,sBACEH;CAQY,IAAAI;CAAA,IAAA3C,EAAA,QAAAtC,QAAAoD,aAAA;EAGC6B,KAAAjF,QAAOoD,eAAP,CAAA;EAAyBd,EAAA,MAAAtC,QAAAoD;EAAAd,EAAA,MAAA2C;CAAA,OAAAA,KAAA3C,EAAA;CAAA,IAAA4C;CAAA,IAAA5C,EAAA,QAAAqC,eAAArC,EAAA,QAAAoC,gBAAApC,EAAA,QAAA8B,eAAA5D,SAAA8B,EAAA,QAAAT,SAAAS,EAAA,QAAAE,YAAAF,EAAA,QAAAI,cAAAJ,EAAA,QAAA0C,uBAAA1C,EAAA,QAAAxB,YAAAwB,EAAA,QAAAY,YAAA1C,SAAA8B,EAAA,QAAAL,UAAAK,EAAA,QAAA2C,IAAA;EAFjCC,MAAA;GAAA,GACFF;GAAmB5B,aACT6B;GAAyBnE;GAAAqE,QAE9B;GAAKT;GAAAC;GAAA1C;GAAAmD,OAINlC,YAAW1C;GAAMgC;GAAAE;GAAAb;GAAAwD,UAIdjB,eAAc5D;EAC1B;EAAC8B,EAAA,MAAAqC;EAAArC,EAAA,MAAAoC;EAAApC,EAAA,MAAA8B,eAAA5D;EAAA8B,EAAA,MAAAT;EAAAS,EAAA,MAAAE;EAAAF,EAAA,MAAAI;EAAAJ,EAAA,MAAA0C;EAAA1C,EAAA,MAAAxB;EAAAwB,EAAA,MAAAY,YAAA1C;EAAA8B,EAAA,MAAAL;EAAAK,EAAA,MAAA2C;EAAA3C,EAAA,MAAA4C;CAAA,OAAAA,MAAA5C,EAAA;CAxBH,MAAA9B,QAWE0E;CA0BC,IAAAI;CAAA,IAAAhD,EAAA,QAAA9B,OAAA;EAGS8E,YAAM9E;EAAK8B,EAAA,MAAA9B;EAAA8B,EAAA,MAAAgD;CAAA,OAAAA,MAAAhD,EAAA;CAAA,IAAAiD;CAAA,IAAAjD,EAAA,QAAA8B,eAAAoB,SAAA;EACXD,YAAMnB,eAAcoB;EAAQlD,EAAA,MAAA8B,eAAAoB;EAAAlD,EAAA,MAAAiD;CAAA,OAAAA,MAAAjD,EAAA;CAAA,IAAAmD;CAAA,IAAAnD,EAAA,QAAAzB,UAAA;EAE9B4E,YAAA;GACN5E,WAAW;EAAC;EACbyB,EAAA,MAAAzB;EAAAyB,EAAA,MAAAmD;CAAA,OAAAA,MAAAnD,EAAA;CAAA,IAAAoD;CAAA,IAAApD,EAAA,QAAA+B,aAAA/B,EAAA,QAAAmC,eAAAnC,EAAA,QAAAZ,YAAAY,EAAA,QAAAtC,QAAAN,IAAA;EAIegG,OAAAC,QAAA;GAAC,MAAA,EAAAC,UAAAC,aAAAF;GACf,IAAI,CAACjE,UAAQ;GACb,MAAAoE,SACED,aACCpB,gBAAgB,KAAhBsB,KAAAA,IAEGH,aAAa,aACXvB,UAAUI,cAAc,KACxBmB,aAAa,SACXvB,UAAUI,cAAc,KAD1BsB,KAAAA;GAGR,IAAID,WAAWC,KAAAA,KAAaD,WAAW9F,QAAON,IAC5CgC,SAAQsE,eAAgBF,MAAM;EAAE;EACnCxD,EAAA,MAAA+B;EAAA/B,EAAA,MAAAmC;EAAAnC,EAAA,MAAAZ;EAAAY,EAAA,MAAAtC,QAAAN;EAAA4C,EAAA,MAAAoD;CAAA,OAAAA,MAAApD,EAAA;CAAA,IAAAqD;CAAA,IAAArD,EAAA,QAAAtC,SAAA;EACY2F,YAAM7G,qBAAqBkB,OAAO;EAACsC,EAAA,MAAAtC;EAAAsC,EAAA,MAAAqD;CAAA,OAAAA,MAAArD,EAAA;CAAA,IAAA2D;CAAA,IAAA3D,EAAA,QAAAY,eAAAZ,EAAA,QAAA9B,OAAA;EAC1CyF,OAAAC,aAAA;GACJ,IAAI,WAAWA,UAAQ,OACdhD,YAAWiD,IAAKD,QAAQ;GAEjC,MAAAjG,YAAkBO,MAAK4E,MAAMgB,WAC3BC,MAAOA,EAACvG,SAAU,eAAeuG,EAACC,eAAgBJ,SAAQI,UAC5D;GAAE,OACKpD,YAAWiD,IAAK,EAAAtE,OAAS5B,UAAU,CAAC;EAAC;EAC7CqC,EAAA,MAAAY;EAAAZ,EAAA,MAAA9B;EAAA8B,EAAA,MAAA2D;CAAA,OAAAA,MAAA3D,EAAA;CAAA,IAAAiE;CAAA,IAAAjE,EAAA,QAAAiB,mBAAA;EACWgD,OAAAC,eAAA;GACV,IAAI,QAAQN,YAAQ,OACX3C,kBAAiB4C,IAAK,EAAAM,KAAOP,WAAQxG,GAAI,CAAC;GAClD,OACM6D,kBAAiB4C,IAAKD,UAAQ;EAAC;EACvC5D,EAAA,MAAAiB;EAAAjB,EAAA,MAAAiE;CAAA,OAAAA,MAAAjE,EAAA;CAAA,IAAAoE;CAAA,IAAApE,EAAA,QAAAJ,WAAAI,EAAA,QAAAH,kBAAAG,EAAA,QAAAP,oBAAAO,EAAA,QAAAgD,OAAAhD,EAAA,QAAAiD,OAAAjD,EAAA,QAAAmD,OAAAnD,EAAA,QAAAoD,OAAApD,EAAA,QAAAqD,OAAArD,EAAA,QAAA2D,OAAA3D,EAAA,QAAAiE,KAAA;EAvCIG,MAAA;GAAAC,UACKrB;GAAWD,UACXE;GAA4BqB,QAC9BC;GAAQC,QACRrB;GAEPsB,OACM7E;GAAO8E,cACA7E;GAAc8E,gBACZlF;GAAgBiE,gBAChBN;GAafwB,aACYvB;GAAmCzF,MAC1C+F;GAQLkB,YACWZ;GAKX9D;GAAAE;EAGH;EAACL,EAAA,MAAAJ;EAAAI,EAAA,MAAAH;EAAAG,EAAA,MAAAP;EAAAO,EAAA,MAAAgD;EAAAhD,EAAA,MAAAiD;EAAAjD,EAAA,MAAAmD;EAAAnD,EAAA,MAAAoD;EAAApD,EAAA,MAAAqD;EAAArD,EAAA,MAAA2D;EAAA3D,EAAA,MAAAiE;EAAAjE,EAAA,MAAAoE;CAAA,OAAAA,MAAApE,EAAA;CAAA,OA1CMoE;AA0CN;AAGH,MAAMU,gBAAgBtK,SAASsF,gBAAgB;AAc/C,MAAMkF,mBAAkBjF,OAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CAAC,MAAA,EAAArC,MAAAC,QAAA8C,WAAAtB,yBAAAT,iBAAAE,qBAAAiB;CASK,MAAAO,KAAAzC;CAA2B,IAAAgD;CAAA,IAAAb,EAAA,OAAApC,QAAAoC,EAAA,OAAAM,IAAA;EAA9CO,KAAA;GAAA,GAAKjD;GAAIC,QAAUyC;EAA4B;EAACN,EAAA,KAAApC;EAAAoC,EAAA,KAAAM;EAAAN,EAAA,KAAAa;CAAA,OAAAA,KAAAb,EAAA;CADzD,MAAA9B,QACS2C;CAEP,IAAAE;CAAA,IAAAf,EAAA,OAAA9B,OAAA;EAGU6C,WAAM7C;EAAK8B,EAAA,KAAA9B;EAAA8B,EAAA,KAAAe;CAAA,OAAAA,KAAAf,EAAA;CAAA,IAAAkB;CAAA,IAAAlB,EAAA,OAAAW,aAAAX,EAAA,OAAApB,mBAAAoB,EAAA,OAAApC,MAAA;EACNsD,MAAA+D,WAAA;GACb,IAAI,CAACrG,iBACH,MAAM,IAAIuC,MACR,qEACF;GACF,IAAIvD,KAAIJ,SAAU,aAChB,MAAM,IAAI2D,MAAM,mDAAmD;GAErE,MAAA+D,WAAiB/I,aAAYgJ,WAAYF,MAAM;GAC/CrG,gBAAgB;IAAA+B;IAAAyE,UAEJxH,KAAIwH;IAASpB,YACXpG,KAAIoG;IAAWiB,QACnBC,SAAQD;IAA4BI,SACnCH,SAAQG;IAAQ,GACrBH,SAAQI,aAAc7B,KAAAA,KAAtB,EAAA6B,UAA+CJ,SAAQI,SAAU;IAAC,GAClEJ,SAAQK,iBAAkB9B,KAAAA,KAA1B,EAAA8B,cACYL,SAAQK,aACxB;GACF,CAAC;EAAC;EACHvF,EAAA,KAAAW;EAAAX,EAAA,KAAApB;EAAAoB,EAAA,KAAApC;EAAAoC,EAAA,KAAAkB;CAAA,OAAAA,KAAAlB,EAAA;CAAA,IAAAqB;CAAA,IAAArB,EAAA,OAAAlB,oBAAAkB,EAAA,QAAApC,MAAA;EACeyD,MAAAmE,YAAA;GACd,IAAI,CAAC1G,kBACH,MAAM,IAAIqC,MACR,6EACF;GACF,IAAIvD,KAAIJ,SAAU,aAChB,MAAM,IAAI2D,MAAM,oDAAoD;GAEtErC,iBAAiB;IAAAkF,YAAcpG,KAAIoG;IAAWwB;GAAU,CAAC;EAAC;EAC3DxF,EAAA,KAAAlB;EAAAkB,EAAA,MAAApC;EAAAoC,EAAA,MAAAqB;CAAA,OAAAA,KAAArB,EAAA;CAAA,IAAAyB;CAAA,IAAAzB,EAAA,QAAAX,2BAAAW,EAAA,QAAApC,MAAA;EACsB6D,MAAAgE,eAAA;GACrB,IAAI,CAACpG,yBACH,MAAM,IAAI8B,MAAM,0CAA0C;GAE5D,IAAIvD,KAAIJ,SAAU,aAChB,MAAM,IAAI2D,MACR,4DACF;GAEF,IACE,CAACvD,KAAI8H,YACL9H,KAAI8H,SAASC,aAAclC,KAAAA,KAC3B7F,KAAI8H,SAASE,eAAgBnC,KAAAA,GAE7B,MAAM,IAAItC,MAAM,mCAAmC;GAErD9B,wBACE3C,4BAA4BkB,KAAI8H,UAAWR,UAAQ,CACrD;EAAC;EACFlF,EAAA,MAAAX;EAAAW,EAAA,MAAApC;EAAAoC,EAAA,MAAAyB;CAAA,OAAAA,KAAAzB,EAAA;CAAA,IAAAgC;CAAA,IAAAhC,EAAA,QAAAe,MAAAf,EAAA,QAAAkB,MAAAlB,EAAA,QAAAqB,MAAArB,EAAA,QAAAyB,IAAA;EApDIO,KAAA;GAAAqC,UACKtD;GAAW8E,eACN3E;GAoBd4E,gBACezE;GASf0E,uBACsBtE;EAoBzB;EAACzB,EAAA,MAAAe;EAAAf,EAAA,MAAAkB;EAAAlB,EAAA,MAAAqB;EAAArB,EAAA,MAAAyB;EAAAzB,EAAA,MAAAgC;CAAA,OAAAA,KAAAhC,EAAA;CAAA,OArDMgC;AAqDN;AAGH,MAAMtB,eAAelG,SAASwK,eAAe;AAQ7C,MAAMmB,yBAAyB,EAC7BtB,YACAoB,eACyD;CACzD,OAAO;EACL5B,gBAAgBQ;EAChBuB,QAAQ,YAAY;GAClB,MAAMH,WAAW;EACnB;CACF;AACF;AAEA,MAAMI,qBAAqB7L,SAAS2L,qBAAqB;AAczD,MAAMI,sBAAsB,EAC1BC,MACAC,QACAR,eAK+B;CAC/B,OAAO;EACL5B,gBAAgBmC;EAChBG,aAAaF,OAAO;GAAEG,MAAM;GAASC,aAAa;EAAK,CAAC;EACxDC,MAAML;EACNL,QAAQH;CACV;AACF;AAEA,MAAMc,kBAAkBvM,SAAS+L,kBAAkB;AAEnD,MAAMS,kBAAkB,OACtB/B,QACAiC,WACG;CACH,IAAIC,OAAOC,iBAAiBnC,QAC1B,WAAW,MAAMJ,cAAcI,QAC7BiC,OAAOrC,UAAU;MAGnBqC,OAAO,MAAMjC,MAAM;AAEvB;AAKA,MAAMoC,gBAAeC,YAAA;CAAA,MAAAtH,IAAAC,EAAA,CAAA;CACnB,MAAA,CAAA/B,OAAAqJ,YAA0BpN,SAASmN,OAAO;CAC1C,MAAAE,MAAYjN,OAAO2D,KAAK;CAAE,IAAA6B;CAAA,IAAAC,EAAA,OAAAmH,OAAAM,IAAA,2BAAA,GAAA;EACF1H,MAAA2H,SAAA;GACtBF,IAAGG,UACD,OAAOD,SAAS,aAAcA,KAAwBF,IAAGG,OAAe,IAAxED;GACFH,SAASC,IAAGG,OAAQ;EAAC;EACtB3H,EAAA,KAAAD;CAAA,OAAAA,KAAAC,EAAA;CAJD,MAAA8H,MAAY/H;CAIL,IAAAO;CAAA,IAAAN,EAAA,OAAA9B,OAAA;EACAoC,KAAA;GAACpC;GAAO4J;GAAKN;EAAG;EAACxH,EAAA,KAAA9B;EAAA8B,EAAA,KAAAM;CAAA,OAAAA,KAAAN,EAAA;CAAA,OAAjBM;AAA0B;AAInC,MAAM0H,6BAA4BjI,OAAA;CAAA,MAAAC,IAAAC,EAAA,GAAA;CAAC,MAAA,EAAAzC,MAAAmE,WAAAvD,gBAAAkC,IAAA5B,UAAAkD,aAAAC,QAAAnE,SAAAyB,OAAAH,sBAAAe;CAGjC,MAAA3B,iBAAAkC,OAAAmD,KAAAA,IAAA,QAAAnD;CAQA,MAAA,CAAA2H,WAAAC,cAAAC,gBAAgDd,aAC9C7J,SAAS,QACX;CACA,MAAA,CAAA4K,MAAAC,SAAAC,WAAiCjB,aAAa,EAAE;CAChD,MAAA,CAAA7E,MAAA+F,SAAAC,WAAiCnB,aAE/B,MAAM;CAAE,IAAAxG;CAAA,IAAAb,EAAA,OAAAmH,OAAAM,IAAA,2BAAA,GAAA;EAGR5G,KAAA,CAAC;EAACb,EAAA,KAAAa;CAAA,OAAAA,KAAAb,EAAA;CAFJ,MAAA,CAAAyI,WAAAC,cAAAC,gBAAgDtB,aAE9CxG,EAAE;CAAE,IAAAE;CAAA,IAAAf,EAAA,OAAAmH,OAAAM,IAAA,2BAAA,GAAA;EAGJ1G,KAAA,CAAA;EAAEf,EAAA,KAAAe;CAAA,OAAAA,KAAAf,EAAA;CAFJ,MAAA,CAAAc,aAAA8H,gBAAAC,kBAAsDxB,aAEpDtG,EAAE;CACJ,MAAA,CAAA+H,OAAAC,UAAAC,YAAoC3B,aAElC5D,KAAAA,CAAS;CAAE,IAAAvC;CAAA,IAAAlB,EAAA,OAAAtC,WAAAsC,EAAA,OAAA4I,kBAAA5I,EAAA,OAAAuI,WAAAvI,EAAA,OAAAqI,SAAA;EAEanH,WAAA;GACxB,IAAI,CAACxD,SAAO;GACZ,MAAAuL,cAAoBvL,QAAO6C,QAAQ2I,OACzBC,MAA8B,CAAC,CAAA3I,IAClC4I,MAAmB,CAAC,CAAAC,KACnB,MAAM;GACdhB,QAAQY,WAAW;GACnBV,QAAQ7K,QAAO8E,IAAK;GACpBoG,eAAelL,QAAOoD,eAAP,CAAA,CAAyB;EAAC;EAC1Cd,EAAA,KAAAtC;EAAAsC,EAAA,KAAA4I;EAAA5I,EAAA,KAAAuI;EAAAvI,EAAA,KAAAqI;EAAArI,EAAA,KAAAkB;CAAA,OAAAA,KAAAlB,EAAA;CATD,MAAAsJ,oBAA0BpI;CASxB,IAAAG;CAAA,IAAArB,EAAA,OAAAhB,qBAAAgB,EAAA,OAAAc,eAAAd,EAAA,OAAA4I,gBAAA;EAAA,IAAAnH;EAAA,IAAAzB,EAAA,QAAAhB,qBAAAgB,EAAA,QAAA4I,gBAAA;GAGgBnH,MAAAoD,eACdpK,QACEoK,WAAUzH,IACViJ,mBAAmB;IAAAxB;IAAAoB,UAEP,YAAA;KACR,MAAMjH,mBAAiBoH,OAASvB,UAAU;KAC1C+D,gBAAehB,SACbA,KAAIsB,QAAQK,MAAOA,EAACnM,OAAQyH,WAAUzH,EAAG,CAC3C;IAAC;GAEL,CAAC,CACH;GAAC4C,EAAA,MAAAhB;GAAAgB,EAAA,MAAA4I;GAAA5I,EAAA,MAAAyB;EAAA,OAAAA,KAAAzB,EAAA;EAZHqB,KAAAP,YAAWN,IAAKiB,EAahB;EAACzB,EAAA,KAAAhB;EAAAgB,EAAA,KAAAc;EAAAd,EAAA,KAAA4I;EAAA5I,EAAA,MAAAqB;CAAA,OAAAA,KAAArB,EAAA;CAdH,MAAAiB,oBAA0BrG,gBACxByG,EAcF;CAAE,IAAAI;CAAA,IAAAzB,EAAA,QAAAhB,mBAAA;EAE+ByC,KAAA,OAAA+H,YAAA;GAC/B,IAAI,CAACxK,mBAAiB;GACtB,MAAMkH,QAAOuD,IACXD,QAAON,OACGQ,MAAmC,CAAC,CAAAlJ,KACvCmJ,QAAO3K,kBAAiBoH,OAAQmD,GAAC,CAAC,CAC3C;EAAC;EACFvJ,EAAA,MAAAhB;EAAAgB,EAAA,MAAAyB;CAAA,OAAAA,KAAAzB,EAAA;CAPD,MAAA4J,2BAAiCnI;CAO/B,IAAAO;CAAA,IAAAhC,EAAA,QAAA4I,gBAAA;EAEuB5G,MAAA6H,iBAAA;GACvBjB,gBAAekB,WAAA;IACb,MAAArJ,MAAYmH,OAAI9D,WAAWiG,QAAOR,IAACnM,OAAQyH,aAAUzH,EAAG;IACxD,IAAIqD,QAAQ,IAAE,OAAS,CAAA,GAAImH,QAAM/C,YAAU;IAC3C,MAAA6C,OAAa,CAAA,GAAIE,MAAI;IACrBF,KAAKjH,OAAOoE;IAAH,OACF6C;GAAI,CACZ;EAAC;EACH1H,EAAA,MAAA4I;EAAA5I,EAAA,MAAAgC;CAAA,OAAAA,KAAAhC,EAAA;CARD,MAAAgK,mBAAyBhI;CAUzB,MAAAiI,aAAmB9K,OAAK8K,cAALhN;CACnB,MAAAiN,YAAkB/K,OAAKgL,SAALlN;CAAkC,IAAAsF;CAAA,IAAAvC,EAAA,QAAAkK,aAAAlK,EAAA,QAAAiK,YAAA;EAGhD1H,KAAA0H,WAAU3H,WAAY,IAAtB4H,YAEIA,UAAS5H,WAAY,IAArB2H,aAAA,CAAA,GAEMA,YAAU,GAAKC,SAAS;EAAClK,EAAA,MAAAkK;EAAAlK,EAAA,MAAAiK;EAAAjK,EAAA,MAAAuC;CAAA,OAAAA,KAAAvC,EAAA;CANvC,MAAAoK,aAEI7H;CAMF,IAAAI;CAAA,IAAA3C,EAAA,QAAAb,SAAAa,EAAA,QAAAoK,YAAA;EAAA,IAAAxH;EAAA,IAAA5C,EAAA,QAAAb,OAAA;GAEeyD,OAAA4D,SACb/L,QACE+L,KAAIpJ,IACJ2J,gBAAgB;IAAAP;IAAAC,SAENC,cAAevH,OAAK2H,KAAON,KAAIpJ,IAAKsJ,SAAS;IAACT,gBACtC9G,OAAKiH,OAASI,KAAIpJ,EAAG;GACvC,CAAC,CACH;GAAC4C,EAAA,MAAAb;GAAAa,EAAA,MAAA4C;EAAA,OAAAA,MAAA5C,EAAA;EARH2C,KAAAyH,WAAU5J,IAAKoC,GASf;EAAC5C,EAAA,MAAAb;EAAAa,EAAA,MAAAoK;EAAApK,EAAA,MAAA2C;CAAA,OAAAA,KAAA3C,EAAA;CAVH,MAAAqK,mBAAyBzP,gBACvB+H,EAUF;CAAE,IAAAC;CAAA,IAAA5C,EAAA,QAAAhB,mBAAAsL,UAAAtK,EAAA,QAAAiB,kBAAA/C,SAAA8B,EAAA,QAAAc,YAAAwB,UAAAtC,EAAA,QAAA2B,aAAA3B,EAAA,QAAAiI,aAAAjI,EAAA,QAAA5B,kBAAA4B,EAAA,QAAAoK,cAAApK,EAAA,QAAA8I,SAAA9I,EAAA,QAAAwC,QAAAxC,EAAA,QAAAyI,aAAAzI,EAAA,QAAAoI,QAAApI,EAAA,QAAAxC,MAAA;EAEoBoF,YAAA;GACpB,MAAA2H,UAAgB,CAACnC,KAAIoC,KAAM,KAAX,CAAiB1J,YAAWwB;GAAQ,OAC7C;IAAA8F;IAAA5F;IAAA1B,aAGQG,kBAAiB/C;IAAMuK;IAAAR;IAAAtG;IAAA8I,SAI3BxC,aAAA,CAAcsC,WAAd,CAA0BnM;IAAcsM,kBAC/B1L,mBAAiBsL,UAAjB;IAAgCC;IAAA/M;IAAAmN,WAGvClH,KAAAA;IAASqF;IAAA3J,OAEbiL;GACT;EAAC;EACFpK,EAAA,MAAAhB,mBAAAsL;EAAAtK,EAAA,MAAAiB,kBAAA/C;EAAA8B,EAAA,MAAAc,YAAAwB;EAAAtC,EAAA,MAAA2B;EAAA3B,EAAA,MAAAiI;EAAAjI,EAAA,MAAA5B;EAAA4B,EAAA,MAAAoK;EAAApK,EAAA,MAAA8I;EAAA9I,EAAA,MAAAwC;EAAAxC,EAAA,MAAAyI;EAAAzI,EAAA,MAAAoI;EAAApI,EAAA,MAAAxC;EAAAwC,EAAA,MAAA4C;CAAA,OAAAA,MAAA5C,EAAA;CAYChB,mBAAiBsL;CAAQ,IAAAtH;CAAA,IAAAhD,EAAA,QAAA4C,KAAA;EA7BbI,MAAQJ,IA8BrB;EAAC5C,EAAA,MAAA4C;EAAA5C,EAAA,MAAAgD;CAAA,OAAAA,MAAAhD,EAAA;CA9BF,MAAA9B,QAAc8E;CA8BX,IAAAC;CAAA,IAAAjD,EAAA,QAAA9B,OAAA;EAGS+E,YAAM/E;EAAK8B,EAAA,MAAA9B;EAAA8B,EAAA,MAAAiD;CAAA,OAAAA,MAAAjD,EAAA;CAAA,IAAAmD;CAAA,IAAAnD,EAAA,QAAAhB,qBAAAgB,EAAA,QAAA4I,kBAAA5I,EAAA,QAAAgK,kBAAA;EAIN7G,MAAA,OAAAyH,qBAAA;GACb,IAAI5L,mBAAiB;IACnB,MAAA6L,OAAapO,mBAAmBmO,gBAK+B,IALlD;KAAAE,MAEDF,iBAAgBE;KAAKtN,MACrBoN,iBAAgBG,eAAhB;IAEmD,IALlD;KAAAD,MAKDF,iBAAgBE;KAAKtN,MAAQoN,iBAAgBpN;IAAM;IAC/D,IAAI,CAACjB,kBAAkBsO,MAAM7L,kBAAiBsL,MAAO,GACnD,MAAM,IAAInJ,MACR,aAAa0J,KAAIrN,QAAJ,UAAsB,oCAAqCwB,kBAAiBsL,QAC3F;GAAE;GAEN,IAAI,CAAC7N,mBAAmBmO,gBAAgB,KAApC5L,mBACF,MAAMgI,gBACJhI,kBAAiBgM,IAAK,EAAAH,MAAQD,iBAAiB,CAAC,GAChDZ,gBACF;QACK,IAAI,CAACvN,mBAAmBmO,gBAAgB,GAAC;IAC9C,MAAAK,gBAAkC;KAAA7N,IAC5B8N,KAAIC,OAAQ,CAAC,CAAAC,SAAU,EAAE,CAAC,CAAAC,UAAW,CAAC;KAAC7N,MACrC;KAAMsN,MACNF,iBAAgBE;KAAKC,aACdH,iBAAgBpN;KAAKqN,MAC5BD;KAAgB/M,QACd,EAAAL,MAAQ,WAAW;KAAC+C,SACnB,CAAA;IACX;IACAqI,gBAAe0C,WAAU,CAAA,GAAI1D,QAAMqD,aAAa,CAAC;GAAC,OAAA;IAElD,MAAAM,kBAAkC;KAAAnO,IAC5BwN,iBAAgBxN,MAAO8N,KAAIC,OAAQ,CAAC,CAAAC,SAAU,EAAE,CAAC,CAAAC,UAAW,CAAC;KAAC7N,MAC5DoN,iBAAgBpN,QAAhB;KAAmCsN,MACnCF,iBAAgBE;KAAKC,aACdH,iBAAgBG;KAAYxK,SAChCqK,iBAAgBrK;KAAQ1C,QACzB,EAAAL,MAAQ,WAAW;IAC7B;IACAoL,gBAAe4C,WAAU,CAAA,GAAI5D,QAAMqD,eAAa,CAAC;GAAC;EACnD;EACFjL,EAAA,MAAAhB;EAAAgB,EAAA,MAAA4I;EAAA5I,EAAA,MAAAgK;EAAAhK,EAAA,MAAAmD;CAAA,OAAAA,MAAAnD,EAAA;CAAA,IAAAoD;CAAA,IAAApD,EAAA,QAAA6I,kBAAA7I,EAAA,QAAA4J,4BAAA5J,EAAA,QAAA4I,gBAAA;EACiBxF,MAAA,YAAA;GAChB,MAAAqI,YAAgB5C,eAAclB;GAC9BiB,eAAe,CAAA,CAAE;GACjB,MAAMgB,yBAAyBJ,SAAO;EAAC;EACxCxJ,EAAA,MAAA6I;EAAA7I,EAAA,MAAA4J;EAAA5J,EAAA,MAAA4I;EAAA5I,EAAA,MAAAoD;CAAA,OAAAA,MAAApD,EAAA;CAAA,IAAAqD;CAAA,IAAArD,EAAA,QAAAiB,mBAAA;EACWoC,OAAAO,aAAA;GACV,IAAI,QAAQA,UAAQ,OACX3C,kBAAiB4C,IAAK,EAAAM,KAAOP,SAAQxG,GAAI,CAAC;GAClD,OACM6D,kBAAiB4C,IAAKD,QAAQ;EAAC;EACvC5D,EAAA,MAAAiB;EAAAjB,EAAA,MAAAqD;CAAA,OAAAA,MAAArD,EAAA;CAAA,IAAA2D;CAAA,IAAA3D,EAAA,QAAA6I,kBAAA7I,EAAA,QAAA4J,4BAAA5J,EAAA,QAAA4I,kBAAA5I,EAAA,QAAA+I,YAAA/I,EAAA,QAAAuI,WAAAvI,EAAA,QAAA0I,gBAAA1I,EAAA,QAAAqI,SAAA;EACM1E,MAAA,YAAA;GACL,MAAA+H,YAAgB7C,eAAclB;GAC9BU,QAAQ,EAAE;GACVE,QAAQ,MAAM;GACdG,aAAa,CAAC,CAAC;GACfE,eAAe,CAAA,CAAE;GACjBG,SAAStF,KAAAA,CAAS;GAClB,MAAMmG,yBAAyBJ,SAAO;EAAC;EACxCxJ,EAAA,MAAA6I;EAAA7I,EAAA,MAAA4J;EAAA5J,EAAA,MAAA4I;EAAA5I,EAAA,MAAA+I;EAAA/I,EAAA,MAAAuI;EAAAvI,EAAA,MAAA0I;EAAA1I,EAAA,MAAAqI;EAAArI,EAAA,MAAA2D;CAAA,OAAAA,MAAA3D,EAAA;CAAA,IAAAiE;CAAA,IAAAjE,EAAA,QAAAhB,qBAAAgB,EAAA,QAAA6I,kBAAA7I,EAAA,QAAA2B,aAAA3B,EAAA,QAAAmI,gBAAAnI,EAAA,QAAA5B,kBAAA4B,EAAA,QAAA6B,UAAA7B,EAAA,QAAAb,SAAAa,EAAA,QAAAgJ,YAAAhJ,EAAA,QAAAwI,WAAAxI,EAAA,QAAA2I,gBAAA3I,EAAA,QAAA4I,kBAAA5I,EAAA,QAAAkI,gBAAAlI,EAAA,QAAA+I,YAAA/I,EAAA,QAAAqI,WAAArI,EAAA,QAAAsI,WAAAtI,EAAA,QAAAxC,MAAA;EACKyG,OAAA0H,SAAA;GACJ,MAAAC,eAAqB5C,SAAQrB;GAC7B,MAAAkE,cAAoBvD,QAAOX;GAC3B,MAAAmE,qBAA2BjD,eAAclB;GACzC,MAAAoE,YAAgB,CAACF,YAAWrB,KAAM,KAAlB,CAAwBsB,mBAAkBxJ;GAC1D,IAAI,CAAC6F,aAAYR,SAAU,MAAM,IAAIxG,MAAM,2BAA2B;GACtE,IAAI4K,aAAA3N,gBAAyB;GAE7BiK,QAAQ,EAAE;GACVO,eAAe,CAAA,CAAE;GACjBG,SAAStF,KAAAA,CAAS;GAElB,MAAAuI,YAAiBC,oBAAA;IACf,MAAAC,kBAAuC;KAAA1J,MAC/BgG,QAAOb;KAAQpH,SACZsL,cAAA,CACJ;MAAArO,MAAQ;MAAe4K,MAAQyD;KAAY,CAAC,IADxC,CAAA;KAEH/K,aACOmL;KAAsBE,2BACxB,IAAIC,KAAK;KAAC5N,UACX;KAAI+C,UACJ;KAAIkH,WACHE,aAAYhB;KAAQ0E,UACrBV,MAAIU;KAAU5J,UACd,EAAA6J,QACA,EAAA,GAAMV,eAAA,EAAA9C,OAAwB8C,aAAkB,IAA1C,CAA0C,EAAG,EAC7D;IACF;IAEA,IAAIzM,SAAS3B,SAAS,UAAQ;KAC5B,IAAImO,MAAIhF,SAAJhF,WAA0BxC,MAAKwH,MAAOuF,eAAe;UACpD/M,MAAKoN,QAASL,eAAe;IAAE,OAEpCrK,SAASqK,eAAe;IAE1B,IAAI1O,SAAS,QAAQ0K,aAAa,KAAK;GAAE;GAG3C,IAAIlJ,qBAAqB8M,mBAAkBxJ,SAAU,GAC9C4D,QAAOuD,IACVqC,mBAAkBtL,KAAKgM,iBACrB3H,aAAUhH,OAAOL,SAAU,aAA3BgP,eAEIxN,kBAAiByN,KAAM5H,YAA+B,CAC5D,CACF,CAAC,CAAA6H,KAAMV,WAAUW,UAAA;IAEftE,SAAQuE,WACNf,eAAAe,SACIf,cAAc,OAAOjE,SACrBiE,eAAAe,MACN;IACA7D,UAAS8D,WAAUA,UAAAjB,YAAoB;IACvChD,gBAAekE,WAAU,CAAA,GAAIhB,oBAAkB,GAAKlE,MAAI,CAAC;IACzDmF,QAAOJ,MAAO,8BAA8BA,KAAK;GAAC,CACnD;QAEDX,SAASF,kBAAkB;EAC5B;EACF9L,EAAA,MAAAhB;EAAAgB,EAAA,MAAA6I;EAAA7I,EAAA,MAAA2B;EAAA3B,EAAA,MAAAmI;EAAAnI,EAAA,MAAA5B;EAAA4B,EAAA,MAAA6B;EAAA7B,EAAA,MAAAb;EAAAa,EAAA,MAAAgJ;EAAAhJ,EAAA,MAAAwI;EAAAxI,EAAA,MAAA2I;EAAA3I,EAAA,MAAA4I;EAAA5I,EAAA,MAAAkI;EAAAlI,EAAA,MAAA+I;EAAA/I,EAAA,MAAAqI;EAAArI,EAAA,MAAAsI;EAAAtI,EAAA,MAAAxC;EAAAwC,EAAA,MAAAiE;CAAA,OAAAA,MAAAjE,EAAA;CAAA,IAAAoE;CAAA,IAAApE,EAAA,QAAAtB,YAAAsB,EAAA,QAAAkI,gBAAAlI,EAAA,QAAAxC,MAAA;EACO4G,YAAA;GACN1F,WAAW;GACX,IAAIlB,SAAS,QAAQ0K,aAAa,KAAK;EAAE;EAC1ClI,EAAA,MAAAtB;EAAAsB,EAAA,MAAAkI;EAAAlI,EAAA,MAAAxC;EAAAwC,EAAA,MAAAoE;CAAA,OAAAA,MAAApE,EAAA;CAAA,IAAAgN;CAAA,IAAAhN,EAAA,QAAAmI,gBAAAnI,EAAA,QAAA4B,eAAA5B,EAAA,QAAAkI,gBAAAlI,EAAA,QAAAxC,QAAAwC,EAAA,QAAAsJ,mBAAA;EACU0D,YAAA;GACTpL,cAAc;GACd,IAAIpE,SAAS,UAAQ;GACrB,IAAI2K,aAAYR,SAAU,MAAM,IAAIxG,MAAM,0BAA0B;GACpE+G,aAAa,IAAI;GACjBoB,kBAAkB;EAAC;EACpBtJ,EAAA,MAAAmI;EAAAnI,EAAA,MAAA4B;EAAA5B,EAAA,MAAAkI;EAAAlI,EAAA,MAAAxC;EAAAwC,EAAA,MAAAsJ;EAAAtJ,EAAA,MAAAgN;CAAA,OAAAA,MAAAhN,EAAA;CAAA,IAAAiN;CAAA,IAAAjN,EAAA,QAAAqK,kBAAA;EAIU4C,OAAA/I,eAAA;GACT,IAAI,QAAQN,YAAQ,OACXyG,iBAAgBxG,IAAK,EAAAM,KAAOP,WAAQxG,GAAI,CAAC;GACjD,OACMiN,iBAAgBxG,IAAKD,UAAQ;EAAC;EACtC5D,EAAA,MAAAqK;EAAArK,EAAA,MAAAiN;CAAA,OAAAA,MAAAjN,EAAA;CAAA,IAAAkN;CAAA,IAAAlN,EAAA,QAAA+I,YAAA/I,EAAA,QAAAuI,WAAAvI,EAAA,QAAA0I,gBAAA1I,EAAA,QAAAqI,WAAArI,EAAA,QAAAiD,OAAAjD,EAAA,QAAAmD,OAAAnD,EAAA,QAAAoD,OAAApD,EAAA,QAAAqD,OAAArD,EAAA,QAAA2D,OAAA3D,EAAA,QAAAiE,OAAAjE,EAAA,SAAAoE,OAAApE,EAAA,SAAAgN,OAAAhN,EAAA,SAAAiN,KAAA;EAjJIC,MAAA;GAAA7I,UACKpB;GAAWoF;GAAAE;GAAAG;GAAAyE,eAINhK;GAwCdiK,kBACiBhK;GAIjByB,YACWxB;GAKXgK,OACM1J;GAQN8I,MACKxI;GA2DLqJ,QACOlJ;GAGPmJ,WACUP;GAMVQ,gBACeC;GAAQC,eACTC;GAAQ5E;GAAA6E,WAEZX;EAMb;EAACjN,EAAA,MAAA+I;EAAA/I,EAAA,MAAAuI;EAAAvI,EAAA,MAAA0I;EAAA1I,EAAA,MAAAqI;EAAArI,EAAA,MAAAiD;EAAAjD,EAAA,MAAAmD;EAAAnD,EAAA,MAAAoD;EAAApD,EAAA,MAAAqD;EAAArD,EAAA,MAAA2D;EAAA3D,EAAA,MAAAiE;EAAAjE,EAAA,OAAAoE;EAAApE,EAAA,OAAAgN;EAAAhN,EAAA,OAAAiN;EAAAjN,EAAA,OAAAkN;CAAA,OAAAA,MAAAlN,EAAA;CAAA,OAlJMkN;AAkJN;AAGH,MAAMxL,yBAAyBlH,SAASwN,yBAAyB;AAEjE,MAAM6F,0BACJC,WACG;CACH,IAAIC;CAEJ,MAAMC,cAAc;EAClB,IAAI,CAACD,SAAS;EACdA,QAAQT,OAAO;EACfS,UAAUtK,KAAAA;EACVqK,OAAOrK,KAAAA,CAAS;CAClB;CAEA,OAAO;EACLgB,QACEwJ,SACAvQ,YACG;GACHsQ,MAAM;GAEN,MAAME,YAAYD,QAAQxJ,MAAMjI,qBAAqBkB,OAAO,CAAC;GAC7D,IAAIyQ;GACJA,QAAQD,UAAUE,gBAAgB;IAChC,IAAIF,UAAUrQ,OAAOL,SAAS,SAAS;KACrC2Q,QAAQ;KACRJ,UAAUtK,KAAAA;KACVqK,OAAOrK,KAAAA,CAAS;IAClB,OACEqK,OAAO;KAAEnN,WAAWjD,QAAQN;KAAIS,QAAQqQ,UAAUrQ;IAAO,CAAC;GAE9D,CAAC;GAED,IAAIqQ,UAAUrQ,OAAOL,SAAS,SAAS;IACrC2Q,MAAM;IACNL,OAAOrK,KAAAA,CAAS;IAChB;GACF;GAEAsK,UAAU;IACRpN,WAAWjD,QAAQN;IACnBkQ,cAAc;KACZa,MAAO;KACPD,UAAUZ,OAAO;IACnB;GACF;GACAQ,OAAO;IAAEnN,WAAWjD,QAAQN;IAAIS,QAAQqQ,UAAUrQ;GAAO,CAAC;EAC5D;EACAwQ,YAAY;GACV,IAAI,CAACN,SAAS,MAAM,IAAI5M,MAAM,4BAA4B;GAC1D6M,MAAM;EACR;EACAM,cAAc3N,cAAsB;GAClC,IAAIoN,SAASpN,cAAcA,WACzB,MAAM,IAAIQ,MAAM,6BAA6B;GAC/C6M,MAAM;EACR;EACAO,SAASP;CACX;AACF;AAEA,MAAMQ,sBAAsBzQ,aAA+C;CACzE,MAAM0Q,0BAAU,IAAIC,IAAY;CAChC,MAAMC,UAAmC,CAAA;CACzC,KAAK,IAAIC,IAAI7Q,SAASuE,SAAS,GAAGsM,KAAK,GAAGA,KAAK;EAC7C,MAAMlR,UAAUK,SAAS6Q;EACzB,IAAIH,QAAQI,IAAInR,QAAQN,EAAE,GAAG;GAC3B2P,QAAQ+B,KACN,yCAAyCpR,QAAQN,GAAE,+DACrD;GACA;EACF;EACAqR,QAAQzD,IAAItN,QAAQN,EAAE;EACtBuR,QAAQI,KAAKrR,OAAO;CACtB;CACA,OAAOiR,QAAQrM,WAAWvE,SAASuE,SAASvE,WAAW4Q,QAAQK,QAAQ;AACzE;AAGA,MAAMC,qBAAoBlP,OAAA;CAAA,MAAAC,IAAAC,EAAA,GAAA;CAAC,MAAA,EAAAlC,UAAAmR,cAAAlR,WAAAsC,IAAArC,WAAA4C,IAAA3C,OAAAiR,aAAAhR,QAAAC,gBAAA2C,IAAA1C,OAAAC,QAAAC,UAAAE,YAAAC,UAAAC,UAAAC,iBAAAE,kBAAAC,qBAAAC,mBAAAC,iBAAAC,eAAAC,OAAAC,UAAAC,4BAAAU;CAEzB,MAAA/B,YAAAsC,OAAAmD,KAAAA,IAAA,QAAAnD;CACA,MAAArC,YAAA4C,OAAA4C,KAAAA,IAAA,QAAA5C;CAGA,MAAAzC,iBAAA2C,OAAA0C,KAAAA,IAAA,QAAA1C;CAAsB,IAAAG;CAAA,IAAAlB,EAAA,OAAAkP,cAAA;EAkBdhO,KAAAsN,mBAAmBU,YAAY;EAAClP,EAAA,KAAAkP;EAAAlP,EAAA,KAAAkB;CAAA,OAAAA,KAAAlB,EAAA;CADxC,MAAAjC,WACQmD;CAEN,IAAAG;CAAA,IAAArB,EAAA,OAAAmH,OAAAM,IAAA,2BAAA,GAAA;EAYApG,KAAA,CAAC;EAACrB,EAAA,KAAAqB;CAAA,OAAAA,KAAArB,EAAA;CARJ,MAAA,CAAAR,mBAAA4P,wBAAkDjV,SAQhDkH,EAAE;CAAE,IAAAI;CAAA,IAAAzB,EAAA,OAAAR,mBAAA;EAEciC,MAAAH,QAAA;GAClB,MAAA+N,QAAc7P,kBAAkB8B,IAAGlE;GAAK,OACjCiS,SAAS/N,IAAGmB,SAASjD,mBAAwBhC,SAAK6R,MAAKC,WAC1DD,MAAK7R,OADFiG,KAAAA;EAEM;EACdzD,EAAA,KAAAR;EAAAQ,EAAA,KAAAyB;CAAA,OAAAA,KAAAzB,EAAA;CALD,MAAAuP,cAAoB9N;CAKlB,IAAAO;CAAA,IAAAO;CAAA,IAAAvC,EAAA,OAAAjC,UAAA;EAEQiE,WAAA;GACRoN,sBAAqBxH,SAAA;IACnB,MAAA4H,OAAalS,OAAMmS,QAAS7H,IAAI,CAAC,CAAAsB,QAAQvG,OAAA;KAAC,MAAA,CAAAvF,IAAAsS,WAAA/M;KACxC,MAAAgN,QAAY5R,SAAQ6R,MAAMC,MAAOA,EAACzS,OAAQA,EAAE;KAAE,OACvC,CAAC,CAACkE,SAAOA,MAAGmB,SAASjD,mBAAwBhC,SAAK6R,QAAKC;IAAS,CACxE;IAAE,OACIE,KAAIlN,WAAYhF,OAAMwS,KAAMlI,IAAI,CAAC,CAAAtF,SAAjCsF,OAEHtK,OAAMyS,YAAaP,IAAI;GAAC,CAC7B;EAAC;EACDjN,KAAA,CAACxE,QAAQ;EAACiC,EAAA,KAAAjC;EAAAiC,EAAA,KAAAgC;EAAAhC,EAAA,KAAAuC;CAAA,OAAA;EAAAP,KAAAhC,EAAA;EAAAuC,KAAAvC,EAAA;CAAA;CAVb3F,UAAU2H,IAUPO,EAAU;CAAC,IAAAI;CAAA,IAAA3C,EAAA,OAAAf,iBAAA;EAEe0D,MAAAjF,SAAAkF,QAAA;GAE3B,MAAA,EAAApF,SAAAoF;GAEA,IAAI,CAAC3D,iBAAiB,MAAM,IAAIkC,MAAM,iCAAiC;GACvElC,gBAAe+Q,OAAQ;IAAAtS;IAAAF;GAAgB,CAAC;GAExC,IAAIE,QAAO8E,SAAU,aACnB4M,sBAAqBtF,YAAW;IAAA,GAC3BlC;KACFlK,QAAON,KAAM;KAAAI;KAAA8R,UAEF5R,QAAO+E,SAASjD,mBAAwBhC;IACpD;GACF,EAAE;EACH;EACFwC,EAAA,KAAAf;EAAAe,EAAA,KAAA2C;CAAA,OAAAA,KAAA3C,EAAA;CAhBD,MAAAiQ,uBAA6BtN;CAkB7B,MAAA,CAAAuN,aAAAC,aAAiChW,SAAkCsJ,KAAAA,CAAS;CAAE,IAAAb;CAAA,IAAA5C,EAAA,QAAAmH,OAAAM,IAAA,2BAAA,GAAA;EAC1C7E,YAAMiL,uBAAuBsC,SAAS;EAACnQ,EAAA,MAAA4C;CAAA,OAAAA,MAAA5C,EAAA;CAA3E,MAAA,CAAAoQ,oBAA2BjW,SAASyI,GAAuC;CAE3E,MAAAyN,mBAAyB,CAAC,CAACnR;CAC3B,MAAAS,SAAe0Q,mBAAAH,cAAAzM,KAAAA;CAA2C,IAAAT;CAAA,IAAAC;CAAA,IAAAjD,EAAA,QAAAqQ,oBAAArQ,EAAA,QAAAoQ,kBAAA;EAChDpN,YAAA;GACR,IAAI,CAACqN,kBAAkBD,iBAAgB7B,QAAS;EAAE;EACjDtL,MAAA,CAACoN,kBAAkBD,gBAAgB;EAACpQ,EAAA,MAAAqQ;EAAArQ,EAAA,MAAAoQ;EAAApQ,EAAA,MAAAgD;EAAAhD,EAAA,MAAAiD;CAAA,OAAA;EAAAD,MAAAhD,EAAA;EAAAiD,MAAAjD,EAAA;CAAA;CAFvC3F,UAAU2I,KAEPC,GAAoC;CAAC,IAAAE;CAAA,IAAAC;CAAA,IAAApD,EAAA,QAAAoQ,kBAAA;EAE9BjN,kBAAYiN,iBAAgB7B,QAAS;EAAGnL,MAAA,CAACgN,gBAAgB;EAACpQ,EAAA,MAAAoQ;EAAApQ,EAAA,MAAAmD;EAAAnD,EAAA,MAAAoD;CAAA,OAAA;EAAAD,MAAAnD,EAAA;EAAAoD,MAAApD,EAAA;CAAA;CAApE3F,UAAU8I,KAAwCC,GAAkB;CAAC,IAAAC;CAAA,IAAArD,EAAA,QAAAd,iBAAAc,EAAA,QAAAoQ,kBAAA;EAEjD/M,OAAAiN,cAAA;GAClB,IAAI,CAACpR,eAAe,MAAM,IAAIiC,MAAM,+BAA+B;GACnEiP,iBAAgB3L,MAAOvF,eAAexB,SAAO;EAAC;EAC/CsC,EAAA,MAAAd;EAAAc,EAAA,MAAAoQ;EAAApQ,EAAA,MAAAqD;CAAA,OAAAA,MAAArD,EAAA;CAHD,MAAAuQ,cAAoBlN;CAGlB,IAAAM;CAAA,IAAA3D,EAAA,QAAAjC,YAAAiC,EAAA,QAAAzB,UAAA;EAEmBoF,OAAAhD,cAAA;GACnB,MAAA6P,eAAqBzS,SAAQ+F,WAAW2M,QAAOZ,IAACzS,OAAQuD,SAAS;GACjE,IAAI6P,iBAAiB,IAAE;GAEvB,MAAAhS,WAAiBgS,eAAe,IAAIzS,SAASyS,eAAe,EAAE,CAAApT,KAA7C;GACjBmB,WAAWC,QAAQ;EAAC;EACrBwB,EAAA,MAAAjC;EAAAiC,EAAA,MAAAzB;EAAAyB,EAAA,MAAA2D;CAAA,OAAAA,MAAA3D,EAAA;CAND,MAAA0Q,eAAqB/M;CAMnB,IAAAM;CAAA,IAAAjE,EAAA,QAAAhB,qBAAAgB,EAAA,QAAAZ,YAAAY,EAAA,QAAAuP,eAAAvP,EAAA,QAAA0Q,gBAAA1Q,EAAA,QAAAuQ,eAAAvQ,EAAA,QAAAiQ,wBAAAjQ,EAAA,QAAAjC,YAAAiC,EAAA,QAAApB,mBAAAoB,EAAA,QAAA1B,UAAA0B,EAAA,QAAAX,2BAAAW,EAAA,QAAAlB,oBAAAkB,EAAA,QAAAb,SAAAa,EAAA,QAAAL,UAAAK,EAAA,QAAAoQ,kBAAA;EAGAnM,MAAAlG,SAAQyC,KAAKmQ,OAAApR,UAAA;GACX,MAAAqR,QAAkC;IAAAlT,SACvB4D;IAAG/B;IAAAf,UAEFe,QAAQ,IAAIxB,SAASwB,QAAQ,EAAE,CAAAnC,KAA/B;IAA0CmB,gBACpCmS,aAAapP,MAAGlE,EAAG;IAAC+B;IAAAC;IAAAC;IAAAT;IAAAE;IAAAE;IAAAQ,mBAOjB+P,YAAYjO,KAAG;IAAC7B,mBACjBC,aAAcuQ,qBAAqB3O,OAAK5B,QAAQ;IAACC,QAC3DA,QAAMgB,cAAgBW,MAAGlE,KAAzBuC,SAAA8D,KAAAA;IAAiD7D,eAC1C2Q,YAAYjP,KAAG;IAACzB,sBACTuQ,iBAAgB9B,YAAahN,MAAGlE,EAAG;GAC3D;GACA,IAAIkB,QAAQsS,MAAKtS,SAAUA;GAAO,OAC3B7D,QAAQ6G,MAAGlE,IAAK0H,cAAc8L,KAAK,CAAC;EAAC,CAC7C;EAAC5Q,EAAA,MAAAhB;EAAAgB,EAAA,MAAAZ;EAAAY,EAAA,MAAAuP;EAAAvP,EAAA,MAAA0Q;EAAA1Q,EAAA,MAAAuQ;EAAAvQ,EAAA,MAAAiQ;EAAAjQ,EAAA,MAAAjC;EAAAiC,EAAA,MAAApB;EAAAoB,EAAA,MAAA1B;EAAA0B,EAAA,MAAAX;EAAAW,EAAA,MAAAlB;EAAAkB,EAAA,MAAAb;EAAAa,EAAA,MAAAL;EAAAK,EAAA,MAAAoQ;EAAApQ,EAAA,MAAAiE;CAAA,OAAAA,MAAAjE,EAAA;CArBJ,MAAA6Q,iBAAuBjW,gBACrBqJ,GAqBF;CAAE,IAAAG;CAAA,IAAApE,EAAA,QAAAtB,UAAA;EAEsB0F,YAAA;GACtB1F,WAAW;EAAC;EACbsB,EAAA,MAAAtB;EAAAsB,EAAA,MAAAoE;CAAA,OAAAA,MAAApE,EAAA;CAFD,MAAA8Q,kBAAwB1M;CAEtB,IAAA4I;CAAA,IAAAhN,EAAA,QAAAjC,YAAAiC,EAAA,QAAA3B,OAAA;EAEoB2O,OAAA+D,cAAA;GAGpB1S,QAAQ;IAAA,GAAKX;IAAOc,UAAYT,SAAQiT,GAAI,EAAM,CAAC,EAAA5T,MAAnB;GAA4B,CAAC;EAAC;EAC/D4C,EAAA,MAAAjC;EAAAiC,EAAA,MAAA3B;EAAA2B,EAAA,MAAAgN;CAAA,OAAAA,MAAAhN,EAAA;CAJD,MAAAiR,gBAAsBjE;CAIpB,IAAAC;CAAA,IAAAjN,EAAA,QAAAjC,UAAA;EAEakP,MAAAlP,SAAQiT,GAAI,EAAM,CAAC,EAAA5T,MAAnB;EAA2B4C,EAAA,MAAAjC;EAAAiC,EAAA,MAAAiN;CAAA,OAAAA,MAAAjN,EAAA;CAA1C,MAAAkR,SAAejE;CAA4B,IAAAC;CAAA,IAAAlN,EAAA,QAAAkR,UAAAlR,EAAA,QAAAb,OAAA;EAGvC+N,MAAA/N,SAAA;GAAA,GACKA;GAAKoN,UACC4E,cACPhS,MAAKoN,QAAS;IAAA,GAAK7O;IAAOc,UAAYd,UAAOc,YAAP0S;GAA2B,CAAC;GAACvK,QAC9DyK,cACLjS,MAAKwH,MAAO;IAAA,GAAKjJ;IAAOc,UAAYd,UAAOc,YAAP0S;GAA2B,CAAC;EACpE;EAAClR,EAAA,MAAAkR;EAAAlR,EAAA,MAAAb;EAAAa,EAAA,MAAAkN;CAAA,OAAAA,MAAAlN,EAAA;CARL,MAAAqR,gBAEInE;CAQF,IAAAoE;CAAA,IAAAtR,EAAA,QAAAhB,qBAAAgB,EAAA,QAAAqR,iBAAArR,EAAA,QAAA8Q,mBAAA9Q,EAAA,QAAAiR,iBAAAjR,EAAA,QAAAhC,aAAAgC,EAAA,QAAA5B,gBAAA;EAGAkT,MAAA5P,uBAAuB;GAAAlE,MACf;GAAQmE,WACH3D;GAASI;GAAAM,UAEVoS;GAAejP,QACjBoP;GAAa9R,OACdkS;GAAarS;EAEtB,CAAC;EAACgB,EAAA,MAAAhB;EAAAgB,EAAA,MAAAqR;EAAArR,EAAA,MAAA8Q;EAAA9Q,EAAA,MAAAiR;EAAAjR,EAAA,MAAAhC;EAAAgC,EAAA,MAAA5B;EAAA4B,EAAA,MAAAsR;CAAA,OAAAA,MAAAtR,EAAA;CATJ,MAAA8B,iBAAuBhH,kBACrBwW,GASF;CAEA,MAAAC,WAAiB,CAAC,CAACpS;CACnB,MAAAqS,cAAoB,CAAC,CAACpS;CACtB,MAAAqS,UAAgB,CAAC,CAACnT;CAClB,MAAAoT,YAAkB,CAAC,CAACnT;CACpB,MAAAoT,iBAAuB,CAAC,CAAC3S;CACzB,MAAA4S,cAAoB,CAAC,CAAC3S;CACtB,MAAA4S,YAAkB,CAAC,CAAC3S;CAAc,IAAA4S;CAAA,IAAA9R,EAAA,QAAA6Q,eAAA3S,OAAA;EAEV4T,MAAAjB,eAAc3S,MAAMsC,IAAKuR,MAG7C;EAAC/R,EAAA,MAAA6Q,eAAA3S;EAAA8B,EAAA,MAAA8R;CAAA,OAAAA,MAAA9R,EAAA;CAHH,MAAAgS,gBAAsBF;CAMX,MAAAG,MAAAlU,SAAQuE,WAAY;CAAC,IAAA4P;CAAA,IAAAlS,EAAA,QAAA2R,kBAAA3R,EAAA,QAAAwR,eAAAxR,EAAA,QAAAyR,WAAAzR,EAAA,QAAA4R,eAAA5R,EAAA,QAAAuR,YAAAvR,EAAA,QAAA0R,aAAA1R,EAAA,QAAA6R,aAAA7R,EAAA,QAAAhC,WAAA;EAIhBkU,MAAA;GAAAC,MACNV;GAAOnN,QACL;GAAKE,QACLkN;GAASU,eACF;GAAK9E,QACZtP;GAAS2B,QACTkS;GAAS/Q,aACJ6Q;GAAcjS,UACjBkS;GAAWS,OACd;GAAK3O,gBACI8N;GAAWc,uBACJ;GAAKC,eACb;GAAK5H,WACT;GAAKxL,OACToS;EACT;EAACvR,EAAA,MAAA2R;EAAA3R,EAAA,MAAAwR;EAAAxR,EAAA,MAAAyR;EAAAzR,EAAA,MAAA4R;EAAA5R,EAAA,MAAAuR;EAAAvR,EAAA,MAAA0R;EAAA1R,EAAA,MAAA6R;EAAA7R,EAAA,MAAAhC;EAAAgC,EAAA,MAAAkS;CAAA,OAAAA,MAAAlS,EAAA;CAAA,IAAAwS;CAAA,IAAAxS,EAAA,QAAAmP,aAAA;EAEMqD,MAAArD,eAAA,CAAgB;EAACnP,EAAA,MAAAmP;EAAAnP,EAAA,MAAAwS;CAAA,OAAAA,MAAAxS,EAAA;CAAA,IAAAyS;CAAA,IAAAzS,EAAA,QAAAmH,OAAAM,IAAA,2BAAA,GAAA;EACXgL,MAAA,CAAA;EAAEzS,EAAA,MAAAyS;CAAA,OAAAA,MAAAzS,EAAA;CAAA,IAAA0S;CAAA,IAAA1S,EAAA,QAAA8B,eAAA5D,SAAA8B,EAAA,QAAA7B,UAAA6B,EAAA,QAAA/B,aAAA+B,EAAA,QAAAhC,aAAAgC,EAAA,QAAAgS,iBAAAhS,EAAA,QAAAL,UAAAK,EAAA,QAAAiS,OAAAjS,EAAA,QAAAkS,OAAAlS,EAAA,QAAAwS,KAAA;EAvBVE,MAAA;GAAAnI,SACI0H;GAAqBU,YAClB;GAAK1U;GAAAD;GAAA4U,cAGHV;GAebnU,UACSiU;GAAa9T,OAChBsU;GAAiBK,aACXJ;GAAEtU;GAAAwB;GAAA0S,OAGR5O,KAAAA;GAASV,UACNjB,eAAc5D;EAC1B;EAAC8B,EAAA,MAAA8B,eAAA5D;EAAA8B,EAAA,MAAA7B;EAAA6B,EAAA,MAAA/B;EAAA+B,EAAA,MAAAhC;EAAAgC,EAAA,MAAAgS;EAAAhS,EAAA,MAAAL;EAAAK,EAAA,MAAAiS;EAAAjS,EAAA,MAAAkS;EAAAlS,EAAA,MAAAwS;EAAAxS,EAAA,MAAA0S;CAAA,OAAAA,MAAA1S,EAAA;CAlCH,MAAA9B,QAMEwU;CA6CC,IAAAI;CAAA,IAAA9S,EAAA,QAAA9B,OAAA;EAGS4U,YAAM5U;EAAK8B,EAAA,MAAA9B;EAAA8B,EAAA,MAAA8S;CAAA,OAAAA,MAAA9S,EAAA;CAAA,IAAA+S;CAAA,IAAA/S,EAAA,QAAA8B,eAAAoB,SAAA;EACX6P,YAAMjR,eAAcoB;EAAQlD,EAAA,MAAA8B,eAAAoB;EAAAlD,EAAA,MAAA+S;CAAA,OAAAA,MAAA/S,EAAA;CAAA,IAAAgT;CAAA,IAAAhT,EAAA,QAAAjC,YAAAiC,EAAA,QAAA3B,SAAA2B,EAAA,QAAAb,OAAA;EAC9B6T,OAAAC,cAAA;GACN,MAAAC,gBACE,OAAOxV,cAAY,WAAnB;IAAAyO,2BAEiB,IAAIC,KAAK;IAAC5N,UACXT,SAAQiT,GAAI,EAAM,CAAC,EAAA5T,MAAnB;IAA2BmE,UAC3B;IAAIkH,WACH,CAAC;IAACjG,MACP;IAAMjC,SACH,CAAC;KAAA/C,MAAQ;KAAM4K,MAAQ1K;IAAQ,CAAC;IAACoD,aAC7B,CAAA;IAAE2B,UACL,EAAA6J,QAAU,CAAC,EAAE;GAYzB,IArBJ;IAAAH,WAYiBzO,UAAOyO,6BAAP,IAAyBC,KAAK;IAAC5N,UAChCd,UAAOc,YAAaT,SAAQiT,GAAI,EAAM,CAAC,EAAA5T,MAAvC;IAA+CmE,UAC/C7D,UAAO6D,YAAP;IAAwBiB,MAC5B9E,UAAO8E,QAAP;IAAsBjC,SACnB7C,UAAO6C;IAAQO,aACXpD,UAAOoD,eAAP,CAAA;IAAyB2B,UAC5B/E,UAAO+E,YAAP,EAAA6J,QAA8B,CAAC,EAAE;IAAC7D,WACjC/K,UAAO+K,aAAP,CAAsB;IAAC4D,UACxB3O,UAAO2O;GACnB;GACN,IAAIlN,OACFA,MAAKoN,QAAS2G,aAAa;QAE3B7U,QAAQ6U,aAAa;EACtB;EACFlT,EAAA,MAAAjC;EAAAiC,EAAA,MAAA3B;EAAA2B,EAAA,MAAAb;EAAAa,EAAA,MAAAgT;CAAA,OAAAA,MAAAhT,EAAA;CAAA,IAAAmT;CAAA,IAAAnT,EAAA,QAAAvB,YAAA;EAES0U,YAAA;GACR1U,aAAa;EAAC;EACfuB,EAAA,MAAAvB;EAAAuB,EAAA,MAAAmT;CAAA,OAAAA,MAAAnT,EAAA;CAAA,IAAAoT;CAAA,IAAApT,EAAA,QAAArB,UAAA;EACUyU,YAAA;GACT,IAAI,CAACzU,UACH,MAAM,IAAIwC,MACR,+DACF;GACFxC,SAAS;EAAC;EACXqB,EAAA,MAAArB;EAAAqB,EAAA,MAAAoT;CAAA,OAAAA,MAAApT,EAAA;CAAA,IAAAqT;CAAA,IAAArT,EAAA,QAAAjB,qBAAA;EAEoBsU,OAAAC,YAAA;GACnB,IAAI,CAACvU,qBACH,MAAM,IAAIoC,MACR,sFACF;GACFpC,oBAAoBb,OAAK;EAAC;EAC3B8B,EAAA,MAAAjB;EAAAiB,EAAA,MAAAqT;CAAA,OAAAA,MAAArT,EAAA;CAAA,IAAAuT;CAAA,IAAAvT,EAAA,QAAA6Q,gBAAA;EAKQ0C,OAAA3P,aAAA;GACP,IAAI,QAAQA,UAAQ,OACXiN,eAAchN,IAAK,EAAAM,KAAOP,SAAQxG,GAAI,CAAC;GAC/C,OACMyT,eAAchN,IAAKD,QAAQ;EAAC;EACpC5D,EAAA,MAAA6Q;EAAA7Q,EAAA,MAAAuT;CAAA,OAAAA,MAAAvT,EAAA;CAAA,IAAAwT;CAAA,IAAAxT,EAAA,QAAA8Q,mBAAA9Q,EAAA,QAAAoQ,iBAAA/B,QAAArO,EAAA,QAAA8S,OAAA9S,EAAA,QAAA+S,OAAA/S,EAAA,SAAAgT,OAAAhT,EAAA,SAAAmT,OAAAnT,EAAA,SAAAoT,OAAApT,EAAA,SAAAqT,OAAArT,EAAA,SAAAuT,KAAA;EA7DIC,MAAA;GAAAnP,UACKyO;GAAW/P,UACXgQ;GAA4BU,QAC9BT;GA6BPU,eACcC;GAAQtH,UACb8G;GAETS,WACUR;GAMVS,WACU/C;GAAegD,qBACLT;GAMpBU,iBACgBC;GAAiCC,QAC1CC;GAAwBC,QACxBC;GAAQ/G,OACTgH;GAAQ3W,SACN6V;GAKR7O,cACa0L,iBAAgB/B;GAAKiG,cACrBC;GAAQC,iBACLC;GAAQC,gBACTC;GAAOC,sBACDC;GAAcC,WACzBC;GAAQC,aACNC;EACf;EAACjV,EAAA,MAAA8Q;EAAA9Q,EAAA,MAAAoQ,iBAAA/B;EAAArO,EAAA,MAAA8S;EAAA9S,EAAA,MAAA+S;EAAA/S,EAAA,OAAAgT;EAAAhT,EAAA,OAAAmT;EAAAnT,EAAA,OAAAoT;EAAApT,EAAA,OAAAqT;EAAArT,EAAA,OAAAuT;EAAAvT,EAAA,OAAAwT;CAAA,OAAAA,MAAAxT,EAAA;CAAA,OArEMwT;AAqEN;AAGH,MAAa0B,iBAAiB1a,SAASyU,iBAAiB;AAExDpU,sBAAsBoU,oBAAoBkG,QAAQC,WAAW;CAC3D,IAAI,CAACD,OAAOE,WAAWD,OAAOC,QAAQC,WAAW,MAAM;EACrD,MAAMC,gBAAgBJ,OAAOK;EAC7BL,OAAOE,UAAUrY,iBAAiB,EAAEwY,QAAQD,cAAc,CAAC;EAE3D,OAAOJ,OAAOK;EACdL,OAAOK,SAASza,QAAQ;GACtBua,QAAQ;GACRG,OAAO,EAAEjY,MAAM,OAAO;GACtBqG,MAAM6R,QAAQA,IAAIL,QAAQG,OAAO,MAAM;EACzC,CAAC;CACH;CAEA,IAAI,CAACL,OAAOQ,kBAAkBP,OAAOO,eAAeL,WAAW,MAC7DH,OAAOQ,iBAAiB5a,QAAQ;EAC9Bua,QAAQ;EACRG,OAAO,EAAEjY,MAAM,OAAO;EACtBqG,MAAM6R,QAAQA,IAAIL,QAAQ7O,KAAK,MAAM;CACvC,CAAC;CAGH2O,OAAOpS,aAAahI,QAAQ;EAC1Bua,QAAQ;EACRG,OAAO,CAAC;EACR5R,MAAM6R,QAAQA,IAAIF,OAAOzS,SAAS;CACpC,CAAC;CAED,IAAI,CAACoS,OAAOS,gBAAgBR,OAAOQ,aAAaN,WAAW,MACzDH,OAAOS,eAAehZ,aAAa;CAErC,IAAI,CAACuY,OAAOU,SAAST,OAAOS,MAAMP,WAAW,MAC3CH,OAAOU,QAAQ/Y,MAAM,CAAC,CAAC;CAEzB,IAAI,CAACqY,OAAOW,iBAAiBV,OAAOU,cAAcR,WAAW,MAC3DH,OAAOW,gBAAgB/Y,cAAc;CAEvC,IAAI,CAACoY,OAAOtC,eAAeuC,OAAOvC,YAAYyC,WAAW,MACvDH,OAAOtC,cAAchW,YAAY;AAErC,CAAC;AA3/BwB,SAAAkZ,QAAA,CAAA;AAAA,SAAA/U,OAAA6D,YAAA;CAAA,OAuCnBpK,QACEoK,WAAUzH,IACViJ,mBAAmB;EAAAxB;EAAAoB,UAEP8P;CACZ,CAAC,CACH;AAAC;AA7CkB,SAAAxR,SAAA,CAAA;AAuUS,SAAA4E,OAAAvL,MAAA;CAAA,OA+BVA,KAAIJ,SAAU;AAAM;AA/BV,SAAA4L,OAAA4M,QAAA;CAAA,OAgCbpY,OAAIwK;AAAK;AAhCI,SAAAsB,OAAAuM,KAAA;CAAA,OA4DX1M,IAAC1L,OAAOL,SAAU;AAAU;AA5DjB,SAAAiQ,SAAA,CAAA;AAAA,SAAAE,SAAA,CAAA;AAuWR,SAAAoE,OAAAmE,GAAAzV,KAAA0V,KAAA;CAAA,OAwK2C;EAAA,GAC5DD;EAACrT,QACIpC,QAAQ0V,IAAG7T,SAAU;CAC/B;AAAC;AA3KqB,SAAAqR,SAAA,CAAA;AAAA,SAAAK,SAAA;CAAA,OAgRE;EAAA6B,OAAS,CAAC;EAACO,QAAU,CAAC;CAAE;AAAC;AAhR3B,SAAAlC,UAAA;CAAA,OAiRP,EAAAnW,UAAY,CAAA,EAAG;AAAC;AAjRT,SAAAqW,UAAA,CAAA;AAAA,SAAAC,UAAA,CAAA;AAAA,SAAAE,UAAA,CAAA;AAAA,SAAAE,UAAA,CAAA;AAAA,SAAAE,UAAA;CAAA,OA6RA;AAAC;AA7RD,SAAA0B,UAAA,CAAA;AAAA,SAAAxB,UAAA;CAAA,OA8RMwB;AAAQ;AA9Rd,SAAAtB,UAAA,CAAA;AAAA,SAAAE,UAAA,CAAA"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { ClientElement, ClientOutput } from "@assistant-ui/store";
|
|
2
|
-
//#region src/client/SingleThreadList.d.ts
|
|
3
|
-
type SingleThreadListProps = {
|
|
4
|
-
thread: ClientElement<"thread">;
|
|
5
|
-
};
|
|
6
|
-
declare const SingleThreadList: import("@assistant-ui/tap").Resource<ClientOutput<"threads">, [SingleThreadListProps]>;
|
|
7
|
-
//#endregion
|
|
8
|
-
export { SingleThreadList };
|
|
9
|
-
//# sourceMappingURL=SingleThreadList.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SingleThreadList.d.ts","names":[],"sources":["../../src/client/SingleThreadList.ts"],"mappings":";;KA0CK;EACH,QAAQ;;cA0EG,8CAAgB,SAAA,0BAAA"}
|
|
@@ -1,171 +0,0 @@
|
|
|
1
|
-
import { useClientResource } from "@assistant-ui/store";
|
|
2
|
-
import { c } from "@assistant-ui/tap/react-shim/compiler-runtime";
|
|
3
|
-
import { useState } from "@assistant-ui/tap/react-shim";
|
|
4
|
-
import { resource } from "@assistant-ui/tap";
|
|
5
|
-
//#region src/client/SingleThreadList.ts
|
|
6
|
-
const RESOLVED_PROMISE = Promise.resolve();
|
|
7
|
-
const THREAD_ID = "default";
|
|
8
|
-
const useSingleThreadListItem = (t0) => {
|
|
9
|
-
const $ = c(3);
|
|
10
|
-
const { isRunning } = t0;
|
|
11
|
-
const [custom, setCustom] = useState();
|
|
12
|
-
let t1;
|
|
13
|
-
if ($[0] !== custom || $[1] !== isRunning) {
|
|
14
|
-
t1 = {
|
|
15
|
-
getState: () => ({
|
|
16
|
-
id: THREAD_ID,
|
|
17
|
-
remoteId: void 0,
|
|
18
|
-
externalId: void 0,
|
|
19
|
-
title: void 0,
|
|
20
|
-
status: "regular",
|
|
21
|
-
custom,
|
|
22
|
-
isRunning
|
|
23
|
-
}),
|
|
24
|
-
switchTo: _temp,
|
|
25
|
-
rename: _temp2,
|
|
26
|
-
updateCustom: setCustom,
|
|
27
|
-
archive: _temp3,
|
|
28
|
-
unarchive: _temp4,
|
|
29
|
-
delete: _temp5,
|
|
30
|
-
generateTitle: _temp6,
|
|
31
|
-
initialize: _temp7,
|
|
32
|
-
detach: _temp8
|
|
33
|
-
};
|
|
34
|
-
$[0] = custom;
|
|
35
|
-
$[1] = isRunning;
|
|
36
|
-
$[2] = t1;
|
|
37
|
-
} else t1 = $[2];
|
|
38
|
-
return t1;
|
|
39
|
-
};
|
|
40
|
-
const SingleThreadListItem = resource(useSingleThreadListItem);
|
|
41
|
-
/**
|
|
42
|
-
* A minimal threads scope that wraps a single thread.
|
|
43
|
-
* Automatically provided by ExternalThread when no threads scope exists.
|
|
44
|
-
* Mounts the provided thread resource element.
|
|
45
|
-
*/
|
|
46
|
-
const useSingleThreadList = (t0) => {
|
|
47
|
-
const $ = c(19);
|
|
48
|
-
const { thread } = t0;
|
|
49
|
-
const threadClient = useClientResource(thread);
|
|
50
|
-
let t1;
|
|
51
|
-
if ($[0] !== threadClient.state.isRunning) {
|
|
52
|
-
t1 = SingleThreadListItem({ isRunning: threadClient.state.isRunning });
|
|
53
|
-
$[0] = threadClient.state.isRunning;
|
|
54
|
-
$[1] = t1;
|
|
55
|
-
} else t1 = $[1];
|
|
56
|
-
const itemClient = useClientResource(t1);
|
|
57
|
-
let t2;
|
|
58
|
-
let t3;
|
|
59
|
-
if ($[2] === Symbol.for("react.memo_cache_sentinel")) {
|
|
60
|
-
t2 = [THREAD_ID];
|
|
61
|
-
t3 = [];
|
|
62
|
-
$[2] = t2;
|
|
63
|
-
$[3] = t3;
|
|
64
|
-
} else {
|
|
65
|
-
t2 = $[2];
|
|
66
|
-
t3 = $[3];
|
|
67
|
-
}
|
|
68
|
-
let t4;
|
|
69
|
-
if ($[4] !== itemClient.state) {
|
|
70
|
-
t4 = [itemClient.state];
|
|
71
|
-
$[4] = itemClient.state;
|
|
72
|
-
$[5] = t4;
|
|
73
|
-
} else t4 = $[5];
|
|
74
|
-
let t5;
|
|
75
|
-
if ($[6] !== t4 || $[7] !== threadClient.state) {
|
|
76
|
-
t5 = {
|
|
77
|
-
mainThreadId: THREAD_ID,
|
|
78
|
-
newThreadId: null,
|
|
79
|
-
isLoading: false,
|
|
80
|
-
isLoadingMore: false,
|
|
81
|
-
hasMore: false,
|
|
82
|
-
threadIds: t2,
|
|
83
|
-
archivedThreadIds: t3,
|
|
84
|
-
threadItems: t4,
|
|
85
|
-
main: threadClient.state
|
|
86
|
-
};
|
|
87
|
-
$[6] = t4;
|
|
88
|
-
$[7] = threadClient.state;
|
|
89
|
-
$[8] = t5;
|
|
90
|
-
} else t5 = $[8];
|
|
91
|
-
const state = t5;
|
|
92
|
-
let t6;
|
|
93
|
-
if ($[9] !== state) {
|
|
94
|
-
t6 = () => state;
|
|
95
|
-
$[9] = state;
|
|
96
|
-
$[10] = t6;
|
|
97
|
-
} else t6 = $[10];
|
|
98
|
-
let t7;
|
|
99
|
-
if ($[11] !== itemClient.methods) {
|
|
100
|
-
t7 = (selector) => {
|
|
101
|
-
if (selector !== "main" && !(typeof selector === "object" && "id" in selector && selector.id === THREAD_ID) && !(typeof selector === "object" && "index" in selector && selector.index === 0)) throw new Error(`SingleThreadList: unknown item selector ${JSON.stringify(selector)}`);
|
|
102
|
-
return itemClient.methods;
|
|
103
|
-
};
|
|
104
|
-
$[11] = itemClient.methods;
|
|
105
|
-
$[12] = t7;
|
|
106
|
-
} else t7 = $[12];
|
|
107
|
-
let t8;
|
|
108
|
-
if ($[13] !== threadClient.methods) {
|
|
109
|
-
t8 = (selector_0) => {
|
|
110
|
-
if (selector_0 !== "main" && selector_0 !== THREAD_ID) throw new Error(`SingleThreadList: unknown thread selector ${JSON.stringify(selector_0)}`);
|
|
111
|
-
return threadClient.methods;
|
|
112
|
-
};
|
|
113
|
-
$[13] = threadClient.methods;
|
|
114
|
-
$[14] = t8;
|
|
115
|
-
} else t8 = $[14];
|
|
116
|
-
let t9;
|
|
117
|
-
if ($[15] !== t6 || $[16] !== t7 || $[17] !== t8) {
|
|
118
|
-
t9 = {
|
|
119
|
-
getState: t6,
|
|
120
|
-
switchToThread: _temp9,
|
|
121
|
-
switchToNewThread: _temp0,
|
|
122
|
-
getLoadThreadsPromise: _temp1,
|
|
123
|
-
reload: _temp10,
|
|
124
|
-
reloadMainThread: _temp11,
|
|
125
|
-
loadMore: _temp12,
|
|
126
|
-
item: t7,
|
|
127
|
-
thread: t8
|
|
128
|
-
};
|
|
129
|
-
$[15] = t6;
|
|
130
|
-
$[16] = t7;
|
|
131
|
-
$[17] = t8;
|
|
132
|
-
$[18] = t9;
|
|
133
|
-
} else t9 = $[18];
|
|
134
|
-
return t9;
|
|
135
|
-
};
|
|
136
|
-
const SingleThreadList = resource(useSingleThreadList);
|
|
137
|
-
function _temp() {}
|
|
138
|
-
function _temp2() {}
|
|
139
|
-
function _temp3() {}
|
|
140
|
-
function _temp4() {}
|
|
141
|
-
function _temp5() {}
|
|
142
|
-
function _temp6() {}
|
|
143
|
-
async function _temp7() {
|
|
144
|
-
return {
|
|
145
|
-
remoteId: THREAD_ID,
|
|
146
|
-
externalId: void 0
|
|
147
|
-
};
|
|
148
|
-
}
|
|
149
|
-
function _temp8() {}
|
|
150
|
-
function _temp9() {
|
|
151
|
-
throw new Error("SingleThreadList does not support switchToThread");
|
|
152
|
-
}
|
|
153
|
-
function _temp0() {
|
|
154
|
-
throw new Error("SingleThreadList does not support switchToNewThread");
|
|
155
|
-
}
|
|
156
|
-
function _temp1() {
|
|
157
|
-
return RESOLVED_PROMISE;
|
|
158
|
-
}
|
|
159
|
-
function _temp10() {
|
|
160
|
-
return RESOLVED_PROMISE;
|
|
161
|
-
}
|
|
162
|
-
function _temp11() {
|
|
163
|
-
return RESOLVED_PROMISE;
|
|
164
|
-
}
|
|
165
|
-
function _temp12() {
|
|
166
|
-
return RESOLVED_PROMISE;
|
|
167
|
-
}
|
|
168
|
-
//#endregion
|
|
169
|
-
export { SingleThreadList };
|
|
170
|
-
|
|
171
|
-
//# sourceMappingURL=SingleThreadList.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SingleThreadList.js","names":["useMemo","useState","resource","ClientElement","ClientOutput","useClientResource","RESOLVED_PROMISE","Promise","resolve","THREAD_ID","useSingleThreadListItem","t0","$","_c","isRunning","custom","setCustom","t1","getState","id","remoteId","undefined","externalId","title","status","switchTo","_temp","rename","_temp2","updateCustom","archive","_temp3","unarchive","_temp4","delete","_temp5","generateTitle","_temp6","initialize","_temp7","detach","_temp8","SingleThreadListItem","SingleThreadListProps","thread","useSingleThreadList","threadClient","state","itemClient","t2","t3","Symbol","for","t4","t5","mainThreadId","newThreadId","isLoading","isLoadingMore","hasMore","threadIds","archivedThreadIds","threadItems","main","t6","t7","methods","selector","index","Error","JSON","stringify","t8","selector_0","t9","switchToThread","_temp9","switchToNewThread","_temp0","getLoadThreadsPromise","_temp1","reload","_temp10","reloadMainThread","_temp11","loadMore","_temp12","item","SingleThreadList"],"sources":["../../src/client/SingleThreadList.ts"],"sourcesContent":["import { useMemo, useState } from \"react\";\nimport { resource } from \"@assistant-ui/tap\";\nimport {\n type ClientElement,\n type ClientOutput,\n useClientResource,\n} from \"@assistant-ui/store\";\n\nconst RESOLVED_PROMISE = Promise.resolve();\nconst THREAD_ID = \"default\";\n\nconst useSingleThreadListItem = ({\n isRunning,\n}: {\n isRunning: boolean;\n}): ClientOutput<\"threadListItem\"> => {\n const [custom, setCustom] = useState<Record<string, unknown> | undefined>();\n\n return {\n getState: () => ({\n id: THREAD_ID,\n remoteId: undefined,\n externalId: undefined,\n title: undefined,\n status: \"regular\",\n custom,\n isRunning,\n }),\n switchTo: () => {},\n rename: () => {},\n updateCustom: setCustom,\n archive: () => {},\n unarchive: () => {},\n delete: () => {},\n generateTitle: () => {},\n initialize: async () => ({ remoteId: THREAD_ID, externalId: undefined }),\n detach: () => {},\n };\n};\n\nconst SingleThreadListItem = resource(useSingleThreadListItem);\n\ntype SingleThreadListProps = {\n thread: ClientElement<\"thread\">;\n};\n\n/**\n * A minimal threads scope that wraps a single thread.\n * Automatically provided by ExternalThread when no threads scope exists.\n * Mounts the provided thread resource element.\n */\nconst useSingleThreadList = ({\n thread,\n}: SingleThreadListProps): ClientOutput<\"threads\"> => {\n const threadClient = useClientResource(thread);\n const itemClient = useClientResource(\n SingleThreadListItem({ isRunning: threadClient.state.isRunning }),\n );\n\n const state = useMemo(\n () => ({\n mainThreadId: THREAD_ID,\n newThreadId: null,\n isLoading: false,\n isLoadingMore: false,\n hasMore: false,\n threadIds: [THREAD_ID],\n archivedThreadIds: [],\n threadItems: [itemClient.state],\n main: threadClient.state,\n }),\n [itemClient.state, threadClient.state],\n );\n\n return {\n getState: () => state,\n switchToThread: () => {\n throw new Error(\"SingleThreadList does not support switchToThread\");\n },\n switchToNewThread: () => {\n throw new Error(\"SingleThreadList does not support switchToNewThread\");\n },\n getLoadThreadsPromise: () => RESOLVED_PROMISE,\n reload: () => RESOLVED_PROMISE,\n reloadMainThread: () => RESOLVED_PROMISE,\n loadMore: () => RESOLVED_PROMISE,\n item: (selector) => {\n if (\n selector !== \"main\" &&\n !(\n typeof selector === \"object\" &&\n \"id\" in selector &&\n selector.id === THREAD_ID\n ) &&\n !(\n typeof selector === \"object\" &&\n \"index\" in selector &&\n selector.index === 0\n )\n ) {\n throw new Error(\n `SingleThreadList: unknown item selector ${JSON.stringify(selector)}`,\n );\n }\n return itemClient.methods;\n },\n thread: (selector) => {\n if (selector !== \"main\" && selector !== THREAD_ID) {\n throw new Error(\n `SingleThreadList: unknown thread selector ${JSON.stringify(selector)}`,\n );\n }\n return threadClient.methods;\n },\n };\n};\n\nexport const SingleThreadList = resource(useSingleThreadList);\n"],"mappings":"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"}
|