@assistant-ui/react 0.14.29 → 0.15.0
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/client/ExternalThread.js +4 -3
- package/dist/client/ExternalThread.js.map +1 -1
- package/dist/client/InMemoryThreadList.js +3 -3
- package/dist/client/InMemoryThreadList.js.map +1 -1
- package/dist/context/index.d.ts +1 -8
- package/dist/context/index.js +1 -8
- package/dist/index.d.ts +1 -8
- package/dist/index.js +1 -8
- package/dist/legacy-runtime/runtime-cores/assistant-transport/useAssistantTransportRuntime.js +3 -3
- package/dist/legacy-runtime/runtime-cores/assistant-transport/useAssistantTransportRuntime.js.map +1 -1
- package/dist/mcp-apps/McpAppRenderer.js +1 -1
- package/dist/mcp-apps/McpAppRenderer.js.map +1 -1
- package/dist/model-context/makeAssistantVisible.js +26 -25
- package/dist/model-context/makeAssistantVisible.js.map +1 -1
- package/dist/primitives/actionBar/ActionBarExportMarkdown.js +3 -3
- package/dist/primitives/actionBar/ActionBarExportMarkdown.js.map +1 -1
- package/dist/primitives/attachment/AttachmentRemove.js +3 -3
- package/dist/primitives/attachment/AttachmentRemove.js.map +1 -1
- package/dist/primitives/chainOfThought/ChainOfThoughtAccordionTrigger.js +3 -3
- package/dist/primitives/chainOfThought/ChainOfThoughtAccordionTrigger.js.map +1 -1
- package/dist/primitives/composer/ComposerAddAttachment.js +3 -3
- package/dist/primitives/composer/ComposerAddAttachment.js.map +1 -1
- package/dist/primitives/composer/ComposerAttachmentDropzone.js +1 -1
- package/dist/primitives/composer/ComposerAttachmentDropzone.js.map +1 -1
- package/dist/primitives/composer/ComposerInput.js +13 -13
- package/dist/primitives/composer/ComposerInput.js.map +1 -1
- package/dist/primitives/composer/ComposerQuote.js +1 -1
- package/dist/primitives/composer/ComposerQuote.js.map +1 -1
- package/dist/primitives/composer/ComposerStopDictation.js +3 -3
- package/dist/primitives/composer/ComposerStopDictation.js.map +1 -1
- package/dist/primitives/composer/trigger/triggerSelectionResource.d.ts.map +1 -1
- package/dist/primitives/composer/trigger/triggerSelectionResource.js +3 -3
- package/dist/primitives/composer/trigger/triggerSelectionResource.js.map +1 -1
- package/dist/primitives/message/MessagePartsGrouped.d.ts.map +1 -1
- package/dist/primitives/message/MessagePartsGrouped.js +67 -89
- package/dist/primitives/message/MessagePartsGrouped.js.map +1 -1
- package/dist/primitives/message/MessageRoot.js +3 -3
- package/dist/primitives/message/MessageRoot.js.map +1 -1
- package/dist/primitives/queueItem/QueueItemRemove.js +3 -3
- package/dist/primitives/queueItem/QueueItemRemove.js.map +1 -1
- package/dist/primitives/queueItem/QueueItemSteer.js +3 -3
- package/dist/primitives/queueItem/QueueItemSteer.js.map +1 -1
- package/dist/primitives/selectionToolbar/SelectionToolbarQuote.js +1 -1
- package/dist/primitives/selectionToolbar/SelectionToolbarQuote.js.map +1 -1
- package/dist/primitives/suggestion/SuggestionTrigger.js +16 -15
- package/dist/primitives/suggestion/SuggestionTrigger.js.map +1 -1
- package/dist/unstable/useComposerInput.js +2 -2
- package/dist/unstable/useComposerInput.js.map +1 -1
- package/dist/unstable/useComposerInputHistory.js +6 -6
- package/dist/unstable/useComposerInputHistory.js.map +1 -1
- package/dist/unstable/useMentionAdapter.js +1 -1
- package/dist/unstable/useMentionAdapter.js.map +1 -1
- package/dist/utils/smooth/SmoothContext.js +3 -3
- package/dist/utils/smooth/SmoothContext.js.map +1 -1
- package/dist/utils/smooth/useSmooth.js +1 -1
- package/dist/utils/smooth/useSmooth.js.map +1 -1
- package/package.json +5 -5
- package/src/client/ExternalThread.ts +5 -3
- package/src/client/InMemoryThreadList.ts +3 -3
- package/src/context/index.ts +0 -44
- package/src/legacy-runtime/runtime-cores/assistant-transport/useAssistantTransportRuntime.test.tsx +5 -9
- package/src/legacy-runtime/runtime-cores/assistant-transport/useAssistantTransportRuntime.ts +1 -1
- package/src/mcp-apps/McpAppRenderer.tsx +1 -1
- package/src/model-context/makeAssistantVisible.test.tsx +1 -1
- package/src/model-context/makeAssistantVisible.tsx +1 -1
- package/src/primitives/actionBar/ActionBarExportMarkdown.tsx +1 -1
- package/src/primitives/attachment/AttachmentRemove.ts +1 -1
- package/src/primitives/chainOfThought/ChainOfThoughtAccordionTrigger.ts +1 -1
- package/src/primitives/composer/ComposerAddAttachment.test.tsx +2 -2
- package/src/primitives/composer/ComposerAddAttachment.ts +1 -1
- package/src/primitives/composer/ComposerAttachmentDropzone.test.tsx +2 -2
- package/src/primitives/composer/ComposerAttachmentDropzone.tsx +1 -1
- package/src/primitives/composer/ComposerInput.test.tsx +7 -7
- package/src/primitives/composer/ComposerInput.tsx +13 -13
- package/src/primitives/composer/ComposerQuote.tsx +1 -1
- package/src/primitives/composer/ComposerStopDictation.ts +1 -1
- package/src/primitives/composer/trigger/triggerSelectionResource.ts +7 -9
- package/src/primitives/message/MessagePartsGrouped.tsx +6 -8
- package/src/primitives/message/MessageRoot.tsx +1 -1
- package/src/primitives/queueItem/QueueItemRemove.ts +1 -1
- package/src/primitives/queueItem/QueueItemSteer.ts +1 -1
- package/src/primitives/selectionToolbar/SelectionToolbarQuote.tsx +1 -1
- package/src/primitives/suggestion/SuggestionTrigger.ts +9 -9
- package/src/tests/DataRenderers.test.tsx +1 -1
- package/src/tests/RemoteThreadListRuntime.deferredProvider.test.tsx +3 -3
- package/src/tests/external-thread-attachments.test.tsx +21 -23
- package/src/tests/external-thread-branches.test.tsx +10 -10
- package/src/tests/external-thread-parity.test.tsx +18 -20
- package/src/tests/local-runtime-queue.test.tsx +29 -34
- package/src/tests/messagePartSwitchRace.test.tsx +30 -13
- package/src/unstable/useComposerInput.test.tsx +2 -2
- package/src/unstable/useComposerInput.ts +2 -2
- package/src/unstable/useComposerInputHistory.test.tsx +3 -3
- package/src/unstable/useComposerInputHistory.ts +6 -6
- package/src/unstable/useMentionAdapter.ts +1 -1
- package/src/utils/smooth/SmoothContext.tsx +1 -1
- package/src/utils/smooth/useSmooth.test.tsx +1 -1
- package/src/utils/smooth/useSmooth.ts +1 -1
- package/dist/context/react/utils/createStateHookForRuntime.d.ts +0 -34
- package/dist/context/react/utils/createStateHookForRuntime.d.ts.map +0 -1
- package/dist/context/react/utils/createStateHookForRuntime.js +0 -21
- package/dist/context/react/utils/createStateHookForRuntime.js.map +0 -1
- package/dist/legacy-runtime/hooks/AssistantContext.d.ts +0 -74
- package/dist/legacy-runtime/hooks/AssistantContext.d.ts.map +0 -1
- package/dist/legacy-runtime/hooks/AssistantContext.js +0 -29
- package/dist/legacy-runtime/hooks/AssistantContext.js.map +0 -1
- package/dist/legacy-runtime/hooks/AttachmentContext.d.ts +0 -1007
- package/dist/legacy-runtime/hooks/AttachmentContext.d.ts.map +0 -1
- package/dist/legacy-runtime/hooks/AttachmentContext.js +0 -47
- package/dist/legacy-runtime/hooks/AttachmentContext.js.map +0 -1
- package/dist/legacy-runtime/hooks/ComposerContext.d.ts +0 -141
- package/dist/legacy-runtime/hooks/ComposerContext.d.ts.map +0 -1
- package/dist/legacy-runtime/hooks/ComposerContext.js +0 -65
- package/dist/legacy-runtime/hooks/ComposerContext.js.map +0 -1
- package/dist/legacy-runtime/hooks/MessageContext.d.ts +0 -155
- package/dist/legacy-runtime/hooks/MessageContext.d.ts.map +0 -1
- package/dist/legacy-runtime/hooks/MessageContext.js +0 -68
- package/dist/legacy-runtime/hooks/MessageContext.js.map +0 -1
- package/dist/legacy-runtime/hooks/MessagePartContext.d.ts +0 -44
- package/dist/legacy-runtime/hooks/MessagePartContext.d.ts.map +0 -1
- package/dist/legacy-runtime/hooks/MessagePartContext.js +0 -26
- package/dist/legacy-runtime/hooks/MessagePartContext.js.map +0 -1
- package/dist/legacy-runtime/hooks/ThreadContext.d.ts +0 -139
- package/dist/legacy-runtime/hooks/ThreadContext.d.ts.map +0 -1
- package/dist/legacy-runtime/hooks/ThreadContext.js +0 -84
- package/dist/legacy-runtime/hooks/ThreadContext.js.map +0 -1
- package/dist/legacy-runtime/hooks/ThreadListItemContext.d.ts +0 -44
- package/dist/legacy-runtime/hooks/ThreadListItemContext.d.ts.map +0 -1
- package/dist/legacy-runtime/hooks/ThreadListItemContext.js +0 -26
- package/dist/legacy-runtime/hooks/ThreadListItemContext.js.map +0 -1
- package/src/context/react/utils/createStateHookForRuntime.ts +0 -82
- package/src/legacy-runtime/hooks/AssistantContext.ts +0 -67
- package/src/legacy-runtime/hooks/AttachmentContext.ts +0 -99
- package/src/legacy-runtime/hooks/ComposerContext.ts +0 -131
- package/src/legacy-runtime/hooks/MessageContext.ts +0 -127
- package/src/legacy-runtime/hooks/MessagePartContext.ts +0 -32
- package/src/legacy-runtime/hooks/ThreadContext.ts +0 -120
- package/src/legacy-runtime/hooks/ThreadListItemContext.ts +0 -36
|
@@ -1071,21 +1071,22 @@ attachTransformScopes(useExternalThread, (scopes, parent) => {
|
|
|
1071
1071
|
if (!scopes.threads && parent.threads.source === null) {
|
|
1072
1072
|
const threadElement = scopes.thread;
|
|
1073
1073
|
scopes.threads = SingleThreadList({ thread: threadElement });
|
|
1074
|
+
delete scopes.thread;
|
|
1074
1075
|
scopes.thread = Derived({
|
|
1075
1076
|
source: "threads",
|
|
1076
1077
|
query: { type: "main" },
|
|
1077
|
-
get: (aui) => aui.threads
|
|
1078
|
+
get: (aui) => aui.threads.thread("main")
|
|
1078
1079
|
});
|
|
1079
1080
|
}
|
|
1080
1081
|
if (!scopes.threadListItem && parent.threadListItem.source === null) scopes.threadListItem = Derived({
|
|
1081
1082
|
source: "threads",
|
|
1082
1083
|
query: { type: "main" },
|
|
1083
|
-
get: (aui) => aui.threads
|
|
1084
|
+
get: (aui) => aui.threads.item("main")
|
|
1084
1085
|
});
|
|
1085
1086
|
scopes.composer ??= Derived({
|
|
1086
1087
|
source: "thread",
|
|
1087
1088
|
query: {},
|
|
1088
|
-
get: (aui) => aui.thread
|
|
1089
|
+
get: (aui) => aui.thread.composer()
|
|
1089
1090
|
});
|
|
1090
1091
|
if (!scopes.modelContext && parent.modelContext.source === null) scopes.modelContext = ModelContext();
|
|
1091
1092
|
if (!scopes.tools && parent.tools.source === null) scopes.tools = Tools({});
|
|
@@ -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","ModelContext","Suggestions","Tools","DataRenderers","SingleThreadList","EMPTY_QUEUE_ITEMS","EMPTY_BRANCH_IDS","ExternalThreadMessage","id","COMPLETE_STATUS","Object","freeze","type","derivePartStatus","message","partIndex","part","role","status","result","isLastPart","Math","max","content","length","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","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","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","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","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","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} 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\n// Legacy runtime parity (toMessagePartStatus): a tool call without a result\n// carries its message's status; the last part of a streaming message streams.\nconst derivePartStatus = (\n message: ExternalThreadMessage,\n partIndex: number,\n part: ThreadAssistantMessagePart | ThreadUserMessagePart,\n): ToolCallMessagePartStatus => {\n if (message.role !== \"assistant\" || !message.status) return COMPLETE_STATUS;\n\n if (part.type === \"tool-call\") {\n if (!part.result) return message.status as ToolCallMessagePartStatus;\n return COMPLETE_STATUS;\n }\n\n const isLastPart = partIndex === Math.max(0, message.content.length - 1);\n if (message.status.type === \"requires-action\") return COMPLETE_STATUS;\n return isLastPart ? (message.status as MessagePartStatus) : COMPLETE_STATUS;\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 () => ({\n ...part,\n status,\n }),\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.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","ModelContext","Suggestions","Tools","DataRenderers","SingleThreadList","EMPTY_QUEUE_ITEMS","EMPTY_BRANCH_IDS","ExternalThreadMessage","id","COMPLETE_STATUS","Object","freeze","type","derivePartStatus","message","partIndex","part","role","status","result","isLastPart","Math","max","content","length","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","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","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","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","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","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} 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\n// Legacy runtime parity (toMessagePartStatus): a tool call without a result\n// carries its message's status; the last part of a streaming message streams.\nconst derivePartStatus = (\n message: ExternalThreadMessage,\n partIndex: number,\n part: ThreadAssistantMessagePart | ThreadUserMessagePart,\n): ToolCallMessagePartStatus => {\n if (message.role !== \"assistant\" || !message.status) return COMPLETE_STATUS;\n\n if (part.type === \"tool-call\") {\n if (!part.result) return message.status as ToolCallMessagePartStatus;\n return COMPLETE_STATUS;\n }\n\n const isLastPart = partIndex === Math.max(0, message.content.length - 1);\n if (message.status.type === \"requires-action\") return COMPLETE_STATUS;\n return isLastPart ? (message.status as MessagePartStatus) : COMPLETE_STATUS;\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 () => ({\n ...part,\n status,\n }),\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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"}
|
|
@@ -292,17 +292,17 @@ attachTransformScopes(useInMemoryThreadList, (scopes, parent) => {
|
|
|
292
292
|
scopes.thread ??= Derived({
|
|
293
293
|
source: "threads",
|
|
294
294
|
query: { type: "main" },
|
|
295
|
-
get: (aui) => aui.threads
|
|
295
|
+
get: (aui) => aui.threads.thread("main")
|
|
296
296
|
});
|
|
297
297
|
scopes.threadListItem ??= Derived({
|
|
298
298
|
source: "threads",
|
|
299
299
|
query: { type: "main" },
|
|
300
|
-
get: (aui) => aui.threads
|
|
300
|
+
get: (aui) => aui.threads.item("main")
|
|
301
301
|
});
|
|
302
302
|
scopes.composer ??= Derived({
|
|
303
303
|
source: "thread",
|
|
304
304
|
query: {},
|
|
305
|
-
get: (aui) => aui.threads
|
|
305
|
+
get: (aui) => aui.threads.thread("main").composer()
|
|
306
306
|
});
|
|
307
307
|
if (!scopes.modelContext && parent.modelContext.source === null) scopes.modelContext = ModelContext();
|
|
308
308
|
if (!scopes.tools && parent.tools.source === null) scopes.tools = Tools({});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InMemoryThreadList.js","names":["useState","useMemo","resource","withKey","ResourceElement","ClientOutput","useClientLookup","Derived","attachTransformScopes","useClientResource","ModelContext","Suggestions","Tools","DataRenderers","RESOLVED_PROMISE","Promise","resolve","InMemoryThreadListProps","thread","threadId","onSwitchToThread","onSwitchToNewThread","ThreadData","id","title","status","custom","Record","useThreadListItemClient","props","$","_c","data","onSwitchTo","onUpdateCustom","onArchive","onUnarchive","onDelete","t0","remoteId","undefined","externalId","state","t1","t2","t3","getState","switchTo","rename","_temp","updateCustom","archive","unarchive","delete","generateTitle","_temp2","initialize","detach","_temp3","ThreadListItemClient","useInMemoryThreadList","threadFactory","mainThreadId","setMainThreadId","threads","setThreads","_temp4","handleSwitchToThread","Symbol","for","threadId_0","prev","map","t","const","handleArchive","threadId_1","prev_0","t_0","handleUnarchive","threadId_2","prev_1","t_1","handleUpdateCustom","t4","threadId_3","prev_2","filter","t_2","remaining","t_3","handleDelete","t5","newId","Date","now","prev_3","handleSwitchToNewThread","t6","t7","t_4","custom_0","threadListItems","mainThreadClient","t10","t11","t12","t13","t14","t8","t9","regularThreads","_temp5","archivedThreads","_temp6","_temp7","_temp8","t15","newThreadId","isLoading","isLoadingMore","hasMore","threadIds","archivedThreadIds","threadItems","main","t16","t17","selector","index","findIndex","t_9","get","index_0","t_10","t18","methods","t19","switchToThread","switchToNewThread","getLoadThreadsPromise","_temp9","reload","_temp0","loadMore","_temp1","item","InMemoryThreadList","scopes","parent","source","query","type","aui","threadListItem","composer","modelContext","tools","dataRenderers","suggestions","t_5","t_6","t_7","t_8"],"sources":["../../src/client/InMemoryThreadList.ts"],"sourcesContent":["import { useState, useMemo } from \"react\";\nimport { resource, withKey, type ResourceElement } from \"@assistant-ui/tap\";\nimport {\n type ClientOutput,\n useClientLookup,\n Derived,\n attachTransformScopes,\n useClientResource,\n} from \"@assistant-ui/store\";\n\nimport { ModelContext, Suggestions } from \"@assistant-ui/core/store\";\nimport { Tools, DataRenderers } from \"@assistant-ui/core/react\";\n\nconst RESOLVED_PROMISE = Promise.resolve();\n\nexport type InMemoryThreadListProps = {\n thread: (threadId: string) => ResourceElement<ClientOutput<\"thread\">>;\n onSwitchToThread?: (threadId: string) => void;\n onSwitchToNewThread?: () => void;\n};\n\ntype ThreadData = {\n id: string;\n title?: string;\n status: \"regular\" | \"archived\";\n custom?: Record<string, unknown> | undefined;\n};\n\n// ThreadListItem Client\nconst useThreadListItemClient = (props: {\n data: ThreadData;\n onSwitchTo: () => void;\n onUpdateCustom: (custom: Record<string, unknown> | undefined) => void;\n onArchive: () => void;\n onUnarchive: () => void;\n onDelete: () => void;\n}): ClientOutput<\"threadListItem\"> => {\n const { data, onSwitchTo, onUpdateCustom, onArchive, onUnarchive, onDelete } =\n props;\n const state = useMemo(\n () => ({\n id: data.id,\n remoteId: undefined,\n externalId: undefined,\n title: data.title,\n status: data.status,\n custom: data.custom,\n }),\n [data.id, data.title, data.status, data.custom],\n );\n\n return {\n getState: () => state,\n switchTo: onSwitchTo,\n rename: () => {},\n updateCustom: onUpdateCustom,\n archive: onArchive,\n unarchive: onUnarchive,\n delete: onDelete,\n generateTitle: () => {},\n initialize: async () => ({ remoteId: data.id, externalId: undefined }),\n detach: () => {},\n };\n};\n\nconst ThreadListItemClient = resource(useThreadListItemClient);\n\n// InMemoryThreadList Client\nconst useInMemoryThreadList = (\n props: InMemoryThreadListProps,\n): ClientOutput<\"threads\"> => {\n const {\n thread: threadFactory,\n onSwitchToThread,\n onSwitchToNewThread,\n } = props;\n\n const [mainThreadId, setMainThreadId] = useState(\"main\");\n const [threads, setThreads] = useState<readonly ThreadData[]>(() => [\n { id: \"main\", title: \"Main Thread\", status: \"regular\" },\n ]);\n\n const handleSwitchToThread = (threadId: string) => {\n setMainThreadId(threadId);\n onSwitchToThread?.(threadId);\n };\n\n const handleArchive = (threadId: string) => {\n setThreads((prev) =>\n prev.map((t) =>\n t.id === threadId ? { ...t, status: \"archived\" as const } : t,\n ),\n );\n };\n\n const handleUnarchive = (threadId: string) => {\n setThreads((prev) =>\n prev.map((t) =>\n t.id === threadId ? { ...t, status: \"regular\" as const } : t,\n ),\n );\n };\n\n const handleUpdateCustom = (\n threadId: string,\n custom: Record<string, unknown> | undefined,\n ) => {\n setThreads((prev) =>\n prev.map((t) => (t.id === threadId ? { ...t, custom } : t)),\n );\n };\n\n const handleDelete = (threadId: string) => {\n setThreads((prev) => prev.filter((t) => t.id !== threadId));\n if (mainThreadId === threadId) {\n const remaining = threads.filter((t) => t.id !== threadId);\n setMainThreadId(remaining[0]?.id || \"main\");\n }\n };\n\n const handleSwitchToNewThread = () => {\n const newId = `thread-${Date.now()}`;\n setThreads((prev) => [\n ...prev,\n { id: newId, title: \"New Thread\", status: \"regular\" },\n ]);\n setMainThreadId(newId);\n onSwitchToNewThread?.();\n };\n\n const threadListItems = useClientLookup(\n threads.map((t) =>\n withKey(\n t.id,\n ThreadListItemClient({\n data: t,\n onSwitchTo: () => handleSwitchToThread(t.id),\n onUpdateCustom: (custom) => handleUpdateCustom(t.id, custom),\n onArchive: () => handleArchive(t.id),\n onUnarchive: () => handleUnarchive(t.id),\n onDelete: () => handleDelete(t.id),\n }),\n ),\n ),\n );\n\n // Create the main thread\n const mainThreadClient = useClientResource(threadFactory(mainThreadId));\n\n const state = useMemo(() => {\n const regularThreads = threads.filter((t) => t.status === \"regular\");\n const archivedThreads = threads.filter((t) => t.status === \"archived\");\n\n return {\n mainThreadId,\n newThreadId: null,\n isLoading: false,\n isLoadingMore: false,\n hasMore: false,\n threadIds: regularThreads.map((t) => t.id),\n archivedThreadIds: archivedThreads.map((t) => t.id),\n threadItems: threadListItems.state,\n main: mainThreadClient.state,\n };\n }, [mainThreadId, threads, threadListItems.state, mainThreadClient.state]);\n\n return {\n getState: () => state,\n switchToThread: handleSwitchToThread,\n switchToNewThread: handleSwitchToNewThread,\n getLoadThreadsPromise: () => RESOLVED_PROMISE,\n reload: () => RESOLVED_PROMISE,\n loadMore: () => RESOLVED_PROMISE,\n item: (selector) => {\n if (selector === \"main\") {\n const index = threads.findIndex((t) => t.id === mainThreadId);\n return threadListItems.get({ index: index === -1 ? 0 : index });\n }\n if (\"id\" in selector) {\n const index = threads.findIndex((t) => t.id === selector.id);\n return threadListItems.get({ index });\n }\n return threadListItems.get(selector);\n },\n thread: () => mainThreadClient.methods,\n };\n};\n\nexport const InMemoryThreadList = resource(useInMemoryThreadList);\n\nattachTransformScopes(useInMemoryThreadList, (scopes, parent) => {\n scopes.thread ??= Derived({\n source: \"threads\",\n query: { type: \"main\" },\n get: (aui) => aui.threads().thread(\"main\"),\n });\n scopes.threadListItem ??= Derived({\n source: \"threads\",\n query: { type: \"main\" },\n get: (aui) => aui.threads().item(\"main\"),\n });\n scopes.composer ??= Derived({\n source: \"thread\",\n query: {},\n get: (aui) => aui.threads().thread(\"main\").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":"InMemoryThreadList.js","names":["useState","useMemo","resource","withKey","ResourceElement","ClientOutput","useClientLookup","Derived","attachTransformScopes","useClientResource","ModelContext","Suggestions","Tools","DataRenderers","RESOLVED_PROMISE","Promise","resolve","InMemoryThreadListProps","thread","threadId","onSwitchToThread","onSwitchToNewThread","ThreadData","id","title","status","custom","Record","useThreadListItemClient","props","$","_c","data","onSwitchTo","onUpdateCustom","onArchive","onUnarchive","onDelete","t0","remoteId","undefined","externalId","state","t1","t2","t3","getState","switchTo","rename","_temp","updateCustom","archive","unarchive","delete","generateTitle","_temp2","initialize","detach","_temp3","ThreadListItemClient","useInMemoryThreadList","threadFactory","mainThreadId","setMainThreadId","threads","setThreads","_temp4","handleSwitchToThread","Symbol","for","threadId_0","prev","map","t","const","handleArchive","threadId_1","prev_0","t_0","handleUnarchive","threadId_2","prev_1","t_1","handleUpdateCustom","t4","threadId_3","prev_2","filter","t_2","remaining","t_3","handleDelete","t5","newId","Date","now","prev_3","handleSwitchToNewThread","t6","t7","t_4","custom_0","threadListItems","mainThreadClient","t10","t11","t12","t13","t14","t8","t9","regularThreads","_temp5","archivedThreads","_temp6","_temp7","_temp8","t15","newThreadId","isLoading","isLoadingMore","hasMore","threadIds","archivedThreadIds","threadItems","main","t16","t17","selector","index","findIndex","t_9","get","index_0","t_10","t18","methods","t19","switchToThread","switchToNewThread","getLoadThreadsPromise","_temp9","reload","_temp0","loadMore","_temp1","item","InMemoryThreadList","scopes","parent","source","query","type","aui","threadListItem","composer","modelContext","tools","dataRenderers","suggestions","t_5","t_6","t_7","t_8"],"sources":["../../src/client/InMemoryThreadList.ts"],"sourcesContent":["import { useState, useMemo } from \"react\";\nimport { resource, withKey, type ResourceElement } from \"@assistant-ui/tap\";\nimport {\n type ClientOutput,\n useClientLookup,\n Derived,\n attachTransformScopes,\n useClientResource,\n} from \"@assistant-ui/store\";\n\nimport { ModelContext, Suggestions } from \"@assistant-ui/core/store\";\nimport { Tools, DataRenderers } from \"@assistant-ui/core/react\";\n\nconst RESOLVED_PROMISE = Promise.resolve();\n\nexport type InMemoryThreadListProps = {\n thread: (threadId: string) => ResourceElement<ClientOutput<\"thread\">>;\n onSwitchToThread?: (threadId: string) => void;\n onSwitchToNewThread?: () => void;\n};\n\ntype ThreadData = {\n id: string;\n title?: string;\n status: \"regular\" | \"archived\";\n custom?: Record<string, unknown> | undefined;\n};\n\n// ThreadListItem Client\nconst useThreadListItemClient = (props: {\n data: ThreadData;\n onSwitchTo: () => void;\n onUpdateCustom: (custom: Record<string, unknown> | undefined) => void;\n onArchive: () => void;\n onUnarchive: () => void;\n onDelete: () => void;\n}): ClientOutput<\"threadListItem\"> => {\n const { data, onSwitchTo, onUpdateCustom, onArchive, onUnarchive, onDelete } =\n props;\n const state = useMemo(\n () => ({\n id: data.id,\n remoteId: undefined,\n externalId: undefined,\n title: data.title,\n status: data.status,\n custom: data.custom,\n }),\n [data.id, data.title, data.status, data.custom],\n );\n\n return {\n getState: () => state,\n switchTo: onSwitchTo,\n rename: () => {},\n updateCustom: onUpdateCustom,\n archive: onArchive,\n unarchive: onUnarchive,\n delete: onDelete,\n generateTitle: () => {},\n initialize: async () => ({ remoteId: data.id, externalId: undefined }),\n detach: () => {},\n };\n};\n\nconst ThreadListItemClient = resource(useThreadListItemClient);\n\n// InMemoryThreadList Client\nconst useInMemoryThreadList = (\n props: InMemoryThreadListProps,\n): ClientOutput<\"threads\"> => {\n const {\n thread: threadFactory,\n onSwitchToThread,\n onSwitchToNewThread,\n } = props;\n\n const [mainThreadId, setMainThreadId] = useState(\"main\");\n const [threads, setThreads] = useState<readonly ThreadData[]>(() => [\n { id: \"main\", title: \"Main Thread\", status: \"regular\" },\n ]);\n\n const handleSwitchToThread = (threadId: string) => {\n setMainThreadId(threadId);\n onSwitchToThread?.(threadId);\n };\n\n const handleArchive = (threadId: string) => {\n setThreads((prev) =>\n prev.map((t) =>\n t.id === threadId ? { ...t, status: \"archived\" as const } : t,\n ),\n );\n };\n\n const handleUnarchive = (threadId: string) => {\n setThreads((prev) =>\n prev.map((t) =>\n t.id === threadId ? { ...t, status: \"regular\" as const } : t,\n ),\n );\n };\n\n const handleUpdateCustom = (\n threadId: string,\n custom: Record<string, unknown> | undefined,\n ) => {\n setThreads((prev) =>\n prev.map((t) => (t.id === threadId ? { ...t, custom } : t)),\n );\n };\n\n const handleDelete = (threadId: string) => {\n setThreads((prev) => prev.filter((t) => t.id !== threadId));\n if (mainThreadId === threadId) {\n const remaining = threads.filter((t) => t.id !== threadId);\n setMainThreadId(remaining[0]?.id || \"main\");\n }\n };\n\n const handleSwitchToNewThread = () => {\n const newId = `thread-${Date.now()}`;\n setThreads((prev) => [\n ...prev,\n { id: newId, title: \"New Thread\", status: \"regular\" },\n ]);\n setMainThreadId(newId);\n onSwitchToNewThread?.();\n };\n\n const threadListItems = useClientLookup(\n threads.map((t) =>\n withKey(\n t.id,\n ThreadListItemClient({\n data: t,\n onSwitchTo: () => handleSwitchToThread(t.id),\n onUpdateCustom: (custom) => handleUpdateCustom(t.id, custom),\n onArchive: () => handleArchive(t.id),\n onUnarchive: () => handleUnarchive(t.id),\n onDelete: () => handleDelete(t.id),\n }),\n ),\n ),\n );\n\n // Create the main thread\n const mainThreadClient = useClientResource(threadFactory(mainThreadId));\n\n const state = useMemo(() => {\n const regularThreads = threads.filter((t) => t.status === \"regular\");\n const archivedThreads = threads.filter((t) => t.status === \"archived\");\n\n return {\n mainThreadId,\n newThreadId: null,\n isLoading: false,\n isLoadingMore: false,\n hasMore: false,\n threadIds: regularThreads.map((t) => t.id),\n archivedThreadIds: archivedThreads.map((t) => t.id),\n threadItems: threadListItems.state,\n main: mainThreadClient.state,\n };\n }, [mainThreadId, threads, threadListItems.state, mainThreadClient.state]);\n\n return {\n getState: () => state,\n switchToThread: handleSwitchToThread,\n switchToNewThread: handleSwitchToNewThread,\n getLoadThreadsPromise: () => RESOLVED_PROMISE,\n reload: () => RESOLVED_PROMISE,\n loadMore: () => RESOLVED_PROMISE,\n item: (selector) => {\n if (selector === \"main\") {\n const index = threads.findIndex((t) => t.id === mainThreadId);\n return threadListItems.get({ index: index === -1 ? 0 : index });\n }\n if (\"id\" in selector) {\n const index = threads.findIndex((t) => t.id === selector.id);\n return threadListItems.get({ index });\n }\n return threadListItems.get(selector);\n },\n thread: () => mainThreadClient.methods,\n };\n};\n\nexport const InMemoryThreadList = resource(useInMemoryThreadList);\n\nattachTransformScopes(useInMemoryThreadList, (scopes, parent) => {\n scopes.thread ??= Derived({\n source: \"threads\",\n query: { type: \"main\" },\n get: (aui) => aui.threads.thread(\"main\"),\n });\n scopes.threadListItem ??= Derived({\n source: \"threads\",\n query: { type: \"main\" },\n get: (aui) => aui.threads.item(\"main\"),\n });\n scopes.composer ??= Derived({\n source: \"thread\",\n query: {},\n get: (aui) => aui.threads.thread(\"main\").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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"}
|
package/dist/context/index.d.ts
CHANGED
|
@@ -9,12 +9,5 @@ import { MessageProvider } from "./providers/MessageProvider.js";
|
|
|
9
9
|
import { ChainOfThoughtByIndicesProvider } from "./providers/ChainOfThoughtByIndicesProvider.js";
|
|
10
10
|
import { ThreadViewportState } from "./stores/ThreadViewport.js";
|
|
11
11
|
import { useThreadViewport, useThreadViewportStore } from "./react/ThreadViewportContext.js";
|
|
12
|
-
import { useAssistantRuntime, useThreadList } from "../legacy-runtime/hooks/AssistantContext.js";
|
|
13
|
-
import { useAttachment, useAttachmentRuntime, useEditComposerAttachment, useEditComposerAttachmentRuntime, useMessageAttachment, useMessageAttachmentRuntime, useThreadComposerAttachment, useThreadComposerAttachmentRuntime } from "../legacy-runtime/hooks/AttachmentContext.js";
|
|
14
|
-
import { useComposer, useComposerRuntime } from "../legacy-runtime/hooks/ComposerContext.js";
|
|
15
|
-
import { useEditComposer, useMessage, useMessageRuntime } from "../legacy-runtime/hooks/MessageContext.js";
|
|
16
|
-
import { useMessagePart, useMessagePartRuntime } from "../legacy-runtime/hooks/MessagePartContext.js";
|
|
17
|
-
import { useThread, useThreadComposer, useThreadModelContext, useThreadRuntime } from "../legacy-runtime/hooks/ThreadContext.js";
|
|
18
|
-
import { useThreadListItem, useThreadListItemRuntime } from "../legacy-runtime/hooks/ThreadListItemContext.js";
|
|
19
12
|
import { ReadonlyThreadProvider } from "@assistant-ui/core/react";
|
|
20
|
-
export { AssistantRuntimeProvider, ChainOfThoughtByIndicesProvider, ComposerAttachmentByIndexProvider, MessageAttachmentByIndexProvider, MessageByIndexProvider, MessageProvider, PartByIndexProvider, ReadonlyThreadProvider, SuggestionByIndexProvider, TextMessagePartProvider, ThreadListItemByIndexProvider, ThreadListItemRuntimeProvider, type ThreadViewportState,
|
|
13
|
+
export { AssistantRuntimeProvider, ChainOfThoughtByIndicesProvider, ComposerAttachmentByIndexProvider, MessageAttachmentByIndexProvider, MessageByIndexProvider, MessageProvider, PartByIndexProvider, ReadonlyThreadProvider, SuggestionByIndexProvider, TextMessagePartProvider, ThreadListItemByIndexProvider, ThreadListItemRuntimeProvider, type ThreadViewportState, useThreadViewport, useThreadViewportStore };
|
package/dist/context/index.js
CHANGED
|
@@ -8,12 +8,5 @@ import { ComposerAttachmentByIndexProvider, MessageAttachmentByIndexProvider } f
|
|
|
8
8
|
import { TextMessagePartProvider } from "./providers/TextMessagePartProvider.js";
|
|
9
9
|
import { MessageProvider } from "./providers/MessageProvider.js";
|
|
10
10
|
import { ChainOfThoughtByIndicesProvider } from "./providers/ChainOfThoughtByIndicesProvider.js";
|
|
11
|
-
import { useAssistantRuntime, useThreadList } from "../legacy-runtime/hooks/AssistantContext.js";
|
|
12
|
-
import { useAttachment, useAttachmentRuntime, useEditComposerAttachment, useEditComposerAttachmentRuntime, useMessageAttachment, useMessageAttachmentRuntime, useThreadComposerAttachment, useThreadComposerAttachmentRuntime } from "../legacy-runtime/hooks/AttachmentContext.js";
|
|
13
|
-
import { useComposer, useComposerRuntime } from "../legacy-runtime/hooks/ComposerContext.js";
|
|
14
|
-
import { useEditComposer, useMessage, useMessageRuntime } from "../legacy-runtime/hooks/MessageContext.js";
|
|
15
|
-
import { useMessagePart, useMessagePartRuntime } from "../legacy-runtime/hooks/MessagePartContext.js";
|
|
16
|
-
import { useThread, useThreadComposer, useThreadModelContext, useThreadRuntime } from "../legacy-runtime/hooks/ThreadContext.js";
|
|
17
|
-
import { useThreadListItem, useThreadListItemRuntime } from "../legacy-runtime/hooks/ThreadListItemContext.js";
|
|
18
11
|
import { ReadonlyThreadProvider } from "@assistant-ui/core/react";
|
|
19
|
-
export { AssistantRuntimeProvider, ChainOfThoughtByIndicesProvider, ComposerAttachmentByIndexProvider, MessageAttachmentByIndexProvider, MessageByIndexProvider, MessageProvider, PartByIndexProvider, ReadonlyThreadProvider, SuggestionByIndexProvider, TextMessagePartProvider, ThreadListItemByIndexProvider, ThreadListItemRuntimeProvider,
|
|
12
|
+
export { AssistantRuntimeProvider, ChainOfThoughtByIndicesProvider, ComposerAttachmentByIndexProvider, MessageAttachmentByIndexProvider, MessageByIndexProvider, MessageProvider, PartByIndexProvider, ReadonlyThreadProvider, SuggestionByIndexProvider, TextMessagePartProvider, ThreadListItemByIndexProvider, ThreadListItemRuntimeProvider, useThreadViewport, useThreadViewportStore };
|
package/dist/index.d.ts
CHANGED
|
@@ -14,13 +14,6 @@ import { MessageProvider } from "./context/providers/MessageProvider.js";
|
|
|
14
14
|
import { ChainOfThoughtByIndicesProvider } from "./context/providers/ChainOfThoughtByIndicesProvider.js";
|
|
15
15
|
import { ThreadViewportState } from "./context/stores/ThreadViewport.js";
|
|
16
16
|
import { useThreadViewport, useThreadViewportStore } from "./context/react/ThreadViewportContext.js";
|
|
17
|
-
import { useAssistantRuntime, useThreadList } from "./legacy-runtime/hooks/AssistantContext.js";
|
|
18
|
-
import { useAttachment, useAttachmentRuntime, useEditComposerAttachment, useEditComposerAttachmentRuntime, useMessageAttachment, useMessageAttachmentRuntime, useThreadComposerAttachment, useThreadComposerAttachmentRuntime } from "./legacy-runtime/hooks/AttachmentContext.js";
|
|
19
|
-
import { useComposer, useComposerRuntime } from "./legacy-runtime/hooks/ComposerContext.js";
|
|
20
|
-
import { useEditComposer, useMessage, useMessageRuntime } from "./legacy-runtime/hooks/MessageContext.js";
|
|
21
|
-
import { useMessagePart, useMessagePartRuntime } from "./legacy-runtime/hooks/MessagePartContext.js";
|
|
22
|
-
import { useThread, useThreadComposer, useThreadModelContext, useThreadRuntime } from "./legacy-runtime/hooks/ThreadContext.js";
|
|
23
|
-
import { useThreadListItem, useThreadListItemRuntime } from "./legacy-runtime/hooks/ThreadListItemContext.js";
|
|
24
17
|
import { ReadonlyThreadProvider } from "./context/index.js";
|
|
25
18
|
import { DevToolsHooks, DevToolsProviderApi } from "./devtools/DevToolsHooks.js";
|
|
26
19
|
import { useMessageQuote } from "./hooks/useMessageQuote.js";
|
|
@@ -87,4 +80,4 @@ import { AssistantCloud } from "assistant-cloud";
|
|
|
87
80
|
import { AddToolResultOptions, AppendMessage, AssistantFrameHost, AssistantFrameProvider, AssistantRuntime, Attachment, AttachmentAdapter, AttachmentRuntime, AttachmentState, AttachmentStatus, ChatModelAdapter, ChatModelRunOptions, ChatModelRunResult, ChatModelRunUpdate, CompleteAttachment, ComposerRuntime, ComposerState, CompositeAttachmentAdapter, CreateAppendMessage, CreateAttachment, CreateResumeRunConfig, CreateStartRunConfig, DataMessagePart, DictationAdapter, DictationState, EditComposerRuntime, EditComposerState, ExportedMessageRepository, ExportedMessageRepositoryItem, ExternalStoreAdapter, ExternalStoreBranchChange, ExternalStoreMessageConverter, ExternalStoreSharedOptions, ExternalStoreThreadData, ExternalStoreThreadListAdapter, ExternalThreadBranchAdapter, ExternalThreadQueueAdapter, FRAME_MESSAGE_CHANNEL, FeedbackAdapter, FileMessagePart, FrameMessage, FrameMessageType, GenerativeUIMessagePart, GenerativeUINode, GenerativeUISpec, GenericThreadHistoryAdapter, ImageMessagePart, InMemoryThreadListAdapter, LanguageModelConfig, LanguageModelV1CallSettings, LocalRuntimeOptionsBase, MessageFormatAdapter, MessageFormatItem, MessageFormatRepository, MessagePartRuntime, MessagePartState, MessagePartStatus, MessageQueueController, MessageQueueDriver, MessageRuntime, MessageState, MessageStatus, MessageStorageEntry, MessageTiming, ModelContext, ModelContextProvider, ModelContextRegistry, ModelContextRegistryInstructionHandle, ModelContextRegistryProviderHandle, ModelContextRegistryToolHandle, PartProviderMetadata, PendingAttachment, QuoteInfo, RealtimeVoiceAdapter, ReasoningMessagePart, RemoteThreadListAdapter, RespondToToolApprovalOptions, SerializedModelContext, SerializedTool, SimpleImageAttachmentAdapter, SimpleTextAttachmentAdapter, SourceMessagePart, SourceProviderMetadata, SpeechSynthesisAdapter, SubmitFeedbackOptions, SuggestionAdapter, TextMessagePart, ThreadAssistantMessage, ThreadAssistantMessagePart, ThreadComposerRuntime, ThreadComposerState, ThreadHistoryAdapter, ThreadListItemRuntime, ThreadListItemState, ThreadListItemStatus, ThreadListRuntime, ThreadListState, ThreadMessage, ThreadMessageLike, ThreadRuntime, ThreadState, ThreadSuggestion, ThreadSystemMessage, ThreadUserMessage, ThreadUserMessagePart, ToolApprovalOption, ToolApprovalOptionKind, ToolApprovalResponse, ToolCallMessagePart, ToolCallMessagePartStatus, ToolCallTiming, ToolModelContentPart, Unstable_AudioMessagePart, Unstable_DirectiveFormatter, Unstable_DirectiveSegment, Unstable_InteractableSnapshotEntry, Unstable_InteractableVersion, Unstable_TriggerItem, Unsubscribe, VoiceSessionControls, VoiceSessionHelpers, VoiceSessionState, WebSpeechDictationAdapter, WebSpeechSynthesisAdapter, bindExternalStoreMessage, createMessageQueue, createVoiceSession, fromThreadMessageLike, generateId, getExternalStoreMessages, mergeModelContexts, pickExternalStoreSharedOptions, tool, unstable_defaultDirectiveFormatter, unstable_formatInteractableSnapshot, unstable_getInteractableSnapshots, unstable_getInteractableVersions } from "@assistant-ui/core";
|
|
88
81
|
import { Tool } from "assistant-stream";
|
|
89
82
|
import { ChainOfThoughtClient, ComposerSendOptions, ModelContext as ModelContextClient, QueueItemMethods, QueueItemState, SuggestionConfig, Suggestions } from "@assistant-ui/core/store";
|
|
90
|
-
export { actionBarMore_d_exports as ActionBarMorePrimitive, actionBar_d_exports as ActionBarPrimitive, type AddToolResultOptions, type AppendMessage, type Assistant, type AssistantClient, AssistantCloud, type AssistantContextConfig, type AssistantDataUI, type AssistantDataUIProps, type AssistantEventCallback, type AssistantEventName, type AssistantEventPayload, type AssistantEventScope, type AssistantEventSelector, AssistantFrameHost, AssistantFrameProvider, type AssistantInteractableProps, assistantModal_d_exports as AssistantModalPrimitive, type AssistantRuntime, AssistantRuntimeProvider, type AssistantState, type AssistantTool, type AssistantToolProps, type AssistantToolUI, type AssistantToolUIProps, type AssistantTransportCommand, type AssistantTransportConnectionMetadata, type AssistantTransportProtocol, type Attachment, type AttachmentAdapter, attachment_d_exports as AttachmentPrimitive, type AttachmentRuntime, type AttachmentState, type AttachmentStatus, AuiIf, AuiProvider, branchPicker_d_exports as BranchPickerPrimitive, ChainOfThoughtByIndicesProvider, ChainOfThoughtClient, chainOfThought_d_exports as ChainOfThoughtPrimitive, type ChatModelAdapter, type ChatModelRunOptions, type ChatModelRunResult, type ChatModelRunUpdate, CloudFileAttachmentAdapter, type CompleteAttachment, ComposerAttachmentByIndexProvider, composer_d_exports as ComposerPrimitive, type ComposerRuntime, type ComposerSendOptions, type ComposerState, CompositeAttachmentAdapter, type CreateAppendMessage, type CreateAttachment, type CreateResumeRunConfig, type CreateStartRunConfig, type DataMessagePart, type DataMessagePartComponent, type DataMessagePartProps, DataRenderers, DevToolsHooks, DevToolsProviderApi, type DictationAdapter, type DictationState, type EditComposerRuntime, type EditComposerState, type EmptyMessagePartComponent, type EmptyMessagePartProps, type EnrichedPartState, error_d_exports as ErrorPrimitive, ExportedMessageRepository, type ExportedMessageRepositoryItem, type ExternalStoreAdapter, type ExternalStoreBranchChange, type ExternalStoreMessageConverter, type ExternalStoreSharedOptions, type ExternalStoreThreadData, type ExternalStoreThreadListAdapter, ExternalThread, type ExternalThreadBranchAdapter, type ExternalThreadMessage, type ExternalThreadProps, type ExternalThreadQueueAdapter, FRAME_MESSAGE_CHANNEL, type FeedbackAdapter, type FileMessagePart, type FileMessagePartComponent, type FileMessagePartProps, type FrameMessage, type FrameMessageType, type GenerativeUIComponentRegistry, type GenerativeUIMessagePart, type GenerativeUIMessagePartComponent, type GenerativeUIMessagePartProps, type GenerativeUINode, GenerativeUIRender, GenerativeUIRenderError, type GenerativeUIRenderProps, type GenerativeUISpec, type GenericThreadHistoryAdapter, type GroupByContext, internal_d_exports as INTERNAL, type ImageMessagePart, type ImageMessagePartComponent, type ImageMessagePartProps, InMemoryThreadList, InMemoryThreadListAdapter, type InMemoryThreadListProps, Interactables, type LanguageModelConfig, type LanguageModelV1CallSettings, type LocalRuntimeOptions, type LocalRuntimeOptionsBase, type McpAppDisplayMode, type McpAppHostContext, type McpAppHostInfo, type McpAppMetadata, McpAppRenderer, type McpAppRendererOptions, type McpAppResource, type McpAppResourceCSP, type McpAppResourceMeta, type McpAppResourceOutput, type McpAppSandboxConfig, type McpAppToolCallParams, type McpAppsHost, McpAppsRemoteHost, type McpAppsRemoteHostOptions, type McpToolkitDefinition, type McpToolkitEntry, type McpToolkitToolConfig, MessageAttachmentByIndexProvider, MessageByIndexProvider, type MessageFormatAdapter, type MessageFormatItem, type MessageFormatRepository, messagePart_d_exports as MessagePartPrimitive, type MessagePartRuntime, type MessagePartState, type MessagePartStatus, message_d_exports as MessagePrimitive, MessageProvider, type MessageQueueController, type MessageQueueDriver, type MessageRuntime, type MessageState, type MessageStatus, type MessageStorageEntry, type MessageTiming, type ModelContext, ModelContextClient, type ModelContextProvider, ModelContextRegistry, type ModelContextRegistryInstructionHandle, type ModelContextRegistryProviderHandle, type ModelContextRegistryToolHandle, PartByIndexProvider, type PartProviderMetadata, type PartState, type PendingAttachment, type ProviderToolConfig, type QueueItemMethods, queueItem_d_exports as QueueItemPrimitive, type QueueItemState, type QuoteInfo, type QuoteMessagePartComponent, type QuoteMessagePartProps, ReadonlyThreadProvider, type RealtimeVoiceAdapter, type ReasoningGroupComponent, type ReasoningGroupProps, type ReasoningMessagePart, type ReasoningMessagePartComponent, type ReasoningMessagePartProps, type RemoteThreadListAdapter, type RespondToToolApprovalOptions, RuntimeAdapterProvider, type RuntimeAdapters, selectionToolbar_d_exports as SelectionToolbarPrimitive, type SendCommandsRequestBody, type SerializedModelContext, type SerializedTool, SimpleImageAttachmentAdapter, SimpleTextAttachmentAdapter, SingleThreadList, type SmoothOptions, type SourceMessagePart, type SourceMessagePartComponent, type SourceMessagePartProps, type SourceProviderMetadata, type SpeechSynthesisAdapter, type SubmitFeedbackOptions, type SuggestionAdapter, SuggestionByIndexProvider, type SuggestionConfig, suggestion_d_exports as SuggestionPrimitive, Suggestions, type TextMessagePart, type TextMessagePartComponent, type TextMessagePartProps, TextMessagePartProvider, type ThreadAssistantMessage, type ThreadAssistantMessagePart, type ThreadComposerRuntime, type ThreadComposerState, type ThreadHistoryAdapter, ThreadListItemByIndexProvider, threadListItemMore_d_exports as ThreadListItemMorePrimitive, threadListItem_d_exports as ThreadListItemPrimitive, type ThreadListItemRuntime, ThreadListItemRuntimeProvider, type ThreadListItemState, type ThreadListItemStatus, threadList_d_exports as ThreadListPrimitive, type ThreadListRuntime, type ThreadListState, type ThreadMessage, type ThreadMessageLike, thread_d_exports as ThreadPrimitive, type ThreadRuntime, type ThreadState, type ThreadSuggestion, type ThreadSystemMessage, type ThreadUserMessage, type ThreadUserMessagePart, type ThreadViewportState, type Tool, type ToolApprovalOption, type ToolApprovalOptionKind, type ToolApprovalResponse, type ToolArgsStatus, type ToolCallMessagePart, type ToolCallMessagePartComponent, type ToolCallMessagePartMcpMetadata, type ToolCallMessagePartProps, type ToolCallMessagePartStatus, type ToolCallText, type ToolCallTiming, type ToolDefinition, type ToolExecutionStatus, type ToolModelContentPart, type Toolkit, type ToolkitDefinition, type ToolkitDefinitionEntry, Tools, type Unstable_AudioMessagePart, type Unstable_AudioMessagePartComponent, type Unstable_AudioMessagePartProps, type Unstable_ComposerInput, type Unstable_ComposerInputHistory, type Unstable_DirectiveFormatter, type Unstable_DirectiveSegment, type Unstable_IconComponent, type Unstable_InferInteractableState, type Unstable_InteractableConfig, type Unstable_InteractableDefinition, type Unstable_InteractablePersistedState, type Unstable_InteractablePersistenceAdapter, type Unstable_InteractablePersistenceStatus, type Unstable_InteractableRegistration, type Unstable_InteractableSnapshotEntry, type Unstable_InteractableStateSchema, type Unstable_InteractableToolConfig, type Unstable_InteractableToolRenderProps, type Unstable_InteractableVersion, type Unstable_InteractableVersionInfo, type Unstable_InteractablesClientSchema, type Unstable_InteractablesConfig, type Unstable_InteractablesMethods, type Unstable_InteractablesState, type Unstable_Mention, type Unstable_MentionCategory, type Unstable_MentionDirective, type Unstable_MessageStallDetection, type Unstable_MessageStallDetectionOptions, type Unstable_ModelContextToolsOptions, type RegisteredTrigger as Unstable_RegisteredTrigger, type Unstable_SlashCommand, type Unstable_SlashCommandAction, type TriggerBehavior as Unstable_TriggerBehavior, type Unstable_TriggerItem, type Unstable_TriggerPopoverAriaProps, type Unstable_UseComposerInputOptions, type Unstable_UseLiveCompletionAdapterOptions, type Unstable_UseMentionAdapterOptions, type Unstable_UseSlashCommandAdapterOptions, type Unsubscribe, type VoiceSessionControls, type VoiceSessionHelpers, type VoiceSessionState, WebSpeechDictationAdapter, WebSpeechSynthesisAdapter, bindExternalStoreMessage, createMessageQueue, createVoiceSession, defineMcpToolkit, defineToolkit, externalTool, fromThreadMessageLike, generateId, getExternalStoreMessages, getMcpAppFromToolPart, groupPartByType, hitl, hitlTool, humanTool, makeAssistantDataUI, makeAssistantTool, makeAssistantToolUI, makeAssistantVisible, mergeModelContexts, pickExternalStoreSharedOptions, providerTool, stubTool, tool, unstable_Interactables, convertExternalMessages as unstable_convertExternalMessages, createMessageConverter as unstable_createMessageConverter, unstable_defaultDirectiveFormatter, unstable_formatInteractableSnapshot, unstable_getInteractableSnapshots, unstable_getInteractableVersions, unstable_interactableTool, unstable_useComposerInput, unstable_useComposerInputHistory, unstable_useInteractable, unstable_useInteractableState, unstable_useInteractableVersions, unstable_useLiveCompletionAdapter, unstable_useMentionAdapter, unstable_useMessageStallDetection, unstable_useSlashCommandAdapter, unstable_useThreadMessageIds, unstable_useTriggerPopoverAriaProps, useTriggerPopoverRootContext as unstable_useTriggerPopoverRootContext, useTriggerPopoverRootContextOptional as unstable_useTriggerPopoverRootContextOptional, useTriggerPopoverScopeContext as unstable_useTriggerPopoverScopeContext, useTriggerPopoverScopeContextOptional as unstable_useTriggerPopoverScopeContextOptional, useTriggerPopoverTriggers as unstable_useTriggerPopoverTriggers, useTriggerPopoverTriggersOptional as unstable_useTriggerPopoverTriggersOptional, useAssistantContext, useAssistantDataUI, useAssistantFrameHost, useAssistantInstructions, useAssistantInteractable, useAssistantRuntime, useAssistantTool, useAssistantToolUI, useAssistantTransportRuntime, useAssistantTransportSendCommand, useAssistantTransportState, useAttachment, useAttachmentRuntime, useAui, useAuiEvent, useAuiState, useAuiToolOverrides, useCloudThreadListAdapter, useCloudThreadListRuntime, useComposer, useComposerRuntime, useEditComposer, useEditComposerAttachment, useEditComposerAttachmentRuntime, useExternalMessageConverter, useExternalStoreRuntime, useExternalStoreSharedOptions, useInlineRender, useInteractableState, useLocalRuntime, useMessage, useMessageAttachment, useMessageAttachmentRuntime, useMessagePart, useMessagePartData, useMessagePartFile, useMessagePartImage, useMessagePartReasoning, useMessagePartRuntime, useMessagePartSource, useMessagePartText, useMessageQuote, useMessageRuntime, useMessageTiming, useRemoteThreadListRuntime, useRuntimeAdapters, useScrollLock, useSmooth, useThread, useThreadComposer, useThreadComposerAttachment, useThreadComposerAttachmentRuntime, useThreadList, useThreadListItem, useThreadListItemRuntime, useThreadModelContext, useThreadRuntime, useThreadViewport, useThreadViewportAutoScroll, useThreadViewportStore, useToolArgsStatus, useToolCallElapsed, useVoiceControls, useVoiceState, useVoiceVolume };
|
|
83
|
+
export { actionBarMore_d_exports as ActionBarMorePrimitive, actionBar_d_exports as ActionBarPrimitive, type AddToolResultOptions, type AppendMessage, type Assistant, type AssistantClient, AssistantCloud, type AssistantContextConfig, type AssistantDataUI, type AssistantDataUIProps, type AssistantEventCallback, type AssistantEventName, type AssistantEventPayload, type AssistantEventScope, type AssistantEventSelector, AssistantFrameHost, AssistantFrameProvider, type AssistantInteractableProps, assistantModal_d_exports as AssistantModalPrimitive, type AssistantRuntime, AssistantRuntimeProvider, type AssistantState, type AssistantTool, type AssistantToolProps, type AssistantToolUI, type AssistantToolUIProps, type AssistantTransportCommand, type AssistantTransportConnectionMetadata, type AssistantTransportProtocol, type Attachment, type AttachmentAdapter, attachment_d_exports as AttachmentPrimitive, type AttachmentRuntime, type AttachmentState, type AttachmentStatus, AuiIf, AuiProvider, branchPicker_d_exports as BranchPickerPrimitive, ChainOfThoughtByIndicesProvider, ChainOfThoughtClient, chainOfThought_d_exports as ChainOfThoughtPrimitive, type ChatModelAdapter, type ChatModelRunOptions, type ChatModelRunResult, type ChatModelRunUpdate, CloudFileAttachmentAdapter, type CompleteAttachment, ComposerAttachmentByIndexProvider, composer_d_exports as ComposerPrimitive, type ComposerRuntime, type ComposerSendOptions, type ComposerState, CompositeAttachmentAdapter, type CreateAppendMessage, type CreateAttachment, type CreateResumeRunConfig, type CreateStartRunConfig, type DataMessagePart, type DataMessagePartComponent, type DataMessagePartProps, DataRenderers, DevToolsHooks, DevToolsProviderApi, type DictationAdapter, type DictationState, type EditComposerRuntime, type EditComposerState, type EmptyMessagePartComponent, type EmptyMessagePartProps, type EnrichedPartState, error_d_exports as ErrorPrimitive, ExportedMessageRepository, type ExportedMessageRepositoryItem, type ExternalStoreAdapter, type ExternalStoreBranchChange, type ExternalStoreMessageConverter, type ExternalStoreSharedOptions, type ExternalStoreThreadData, type ExternalStoreThreadListAdapter, ExternalThread, type ExternalThreadBranchAdapter, type ExternalThreadMessage, type ExternalThreadProps, type ExternalThreadQueueAdapter, FRAME_MESSAGE_CHANNEL, type FeedbackAdapter, type FileMessagePart, type FileMessagePartComponent, type FileMessagePartProps, type FrameMessage, type FrameMessageType, type GenerativeUIComponentRegistry, type GenerativeUIMessagePart, type GenerativeUIMessagePartComponent, type GenerativeUIMessagePartProps, type GenerativeUINode, GenerativeUIRender, GenerativeUIRenderError, type GenerativeUIRenderProps, type GenerativeUISpec, type GenericThreadHistoryAdapter, type GroupByContext, internal_d_exports as INTERNAL, type ImageMessagePart, type ImageMessagePartComponent, type ImageMessagePartProps, InMemoryThreadList, InMemoryThreadListAdapter, type InMemoryThreadListProps, Interactables, type LanguageModelConfig, type LanguageModelV1CallSettings, type LocalRuntimeOptions, type LocalRuntimeOptionsBase, type McpAppDisplayMode, type McpAppHostContext, type McpAppHostInfo, type McpAppMetadata, McpAppRenderer, type McpAppRendererOptions, type McpAppResource, type McpAppResourceCSP, type McpAppResourceMeta, type McpAppResourceOutput, type McpAppSandboxConfig, type McpAppToolCallParams, type McpAppsHost, McpAppsRemoteHost, type McpAppsRemoteHostOptions, type McpToolkitDefinition, type McpToolkitEntry, type McpToolkitToolConfig, MessageAttachmentByIndexProvider, MessageByIndexProvider, type MessageFormatAdapter, type MessageFormatItem, type MessageFormatRepository, messagePart_d_exports as MessagePartPrimitive, type MessagePartRuntime, type MessagePartState, type MessagePartStatus, message_d_exports as MessagePrimitive, MessageProvider, type MessageQueueController, type MessageQueueDriver, type MessageRuntime, type MessageState, type MessageStatus, type MessageStorageEntry, type MessageTiming, type ModelContext, ModelContextClient, type ModelContextProvider, ModelContextRegistry, type ModelContextRegistryInstructionHandle, type ModelContextRegistryProviderHandle, type ModelContextRegistryToolHandle, PartByIndexProvider, type PartProviderMetadata, type PartState, type PendingAttachment, type ProviderToolConfig, type QueueItemMethods, queueItem_d_exports as QueueItemPrimitive, type QueueItemState, type QuoteInfo, type QuoteMessagePartComponent, type QuoteMessagePartProps, ReadonlyThreadProvider, type RealtimeVoiceAdapter, type ReasoningGroupComponent, type ReasoningGroupProps, type ReasoningMessagePart, type ReasoningMessagePartComponent, type ReasoningMessagePartProps, type RemoteThreadListAdapter, type RespondToToolApprovalOptions, RuntimeAdapterProvider, type RuntimeAdapters, selectionToolbar_d_exports as SelectionToolbarPrimitive, type SendCommandsRequestBody, type SerializedModelContext, type SerializedTool, SimpleImageAttachmentAdapter, SimpleTextAttachmentAdapter, SingleThreadList, type SmoothOptions, type SourceMessagePart, type SourceMessagePartComponent, type SourceMessagePartProps, type SourceProviderMetadata, type SpeechSynthesisAdapter, type SubmitFeedbackOptions, type SuggestionAdapter, SuggestionByIndexProvider, type SuggestionConfig, suggestion_d_exports as SuggestionPrimitive, Suggestions, type TextMessagePart, type TextMessagePartComponent, type TextMessagePartProps, TextMessagePartProvider, type ThreadAssistantMessage, type ThreadAssistantMessagePart, type ThreadComposerRuntime, type ThreadComposerState, type ThreadHistoryAdapter, ThreadListItemByIndexProvider, threadListItemMore_d_exports as ThreadListItemMorePrimitive, threadListItem_d_exports as ThreadListItemPrimitive, type ThreadListItemRuntime, ThreadListItemRuntimeProvider, type ThreadListItemState, type ThreadListItemStatus, threadList_d_exports as ThreadListPrimitive, type ThreadListRuntime, type ThreadListState, type ThreadMessage, type ThreadMessageLike, thread_d_exports as ThreadPrimitive, type ThreadRuntime, type ThreadState, type ThreadSuggestion, type ThreadSystemMessage, type ThreadUserMessage, type ThreadUserMessagePart, type ThreadViewportState, type Tool, type ToolApprovalOption, type ToolApprovalOptionKind, type ToolApprovalResponse, type ToolArgsStatus, type ToolCallMessagePart, type ToolCallMessagePartComponent, type ToolCallMessagePartMcpMetadata, type ToolCallMessagePartProps, type ToolCallMessagePartStatus, type ToolCallText, type ToolCallTiming, type ToolDefinition, type ToolExecutionStatus, type ToolModelContentPart, type Toolkit, type ToolkitDefinition, type ToolkitDefinitionEntry, Tools, type Unstable_AudioMessagePart, type Unstable_AudioMessagePartComponent, type Unstable_AudioMessagePartProps, type Unstable_ComposerInput, type Unstable_ComposerInputHistory, type Unstable_DirectiveFormatter, type Unstable_DirectiveSegment, type Unstable_IconComponent, type Unstable_InferInteractableState, type Unstable_InteractableConfig, type Unstable_InteractableDefinition, type Unstable_InteractablePersistedState, type Unstable_InteractablePersistenceAdapter, type Unstable_InteractablePersistenceStatus, type Unstable_InteractableRegistration, type Unstable_InteractableSnapshotEntry, type Unstable_InteractableStateSchema, type Unstable_InteractableToolConfig, type Unstable_InteractableToolRenderProps, type Unstable_InteractableVersion, type Unstable_InteractableVersionInfo, type Unstable_InteractablesClientSchema, type Unstable_InteractablesConfig, type Unstable_InteractablesMethods, type Unstable_InteractablesState, type Unstable_Mention, type Unstable_MentionCategory, type Unstable_MentionDirective, type Unstable_MessageStallDetection, type Unstable_MessageStallDetectionOptions, type Unstable_ModelContextToolsOptions, type RegisteredTrigger as Unstable_RegisteredTrigger, type Unstable_SlashCommand, type Unstable_SlashCommandAction, type TriggerBehavior as Unstable_TriggerBehavior, type Unstable_TriggerItem, type Unstable_TriggerPopoverAriaProps, type Unstable_UseComposerInputOptions, type Unstable_UseLiveCompletionAdapterOptions, type Unstable_UseMentionAdapterOptions, type Unstable_UseSlashCommandAdapterOptions, type Unsubscribe, type VoiceSessionControls, type VoiceSessionHelpers, type VoiceSessionState, WebSpeechDictationAdapter, WebSpeechSynthesisAdapter, bindExternalStoreMessage, createMessageQueue, createVoiceSession, defineMcpToolkit, defineToolkit, externalTool, fromThreadMessageLike, generateId, getExternalStoreMessages, getMcpAppFromToolPart, groupPartByType, hitl, hitlTool, humanTool, makeAssistantDataUI, makeAssistantTool, makeAssistantToolUI, makeAssistantVisible, mergeModelContexts, pickExternalStoreSharedOptions, providerTool, stubTool, tool, unstable_Interactables, convertExternalMessages as unstable_convertExternalMessages, createMessageConverter as unstable_createMessageConverter, unstable_defaultDirectiveFormatter, unstable_formatInteractableSnapshot, unstable_getInteractableSnapshots, unstable_getInteractableVersions, unstable_interactableTool, unstable_useComposerInput, unstable_useComposerInputHistory, unstable_useInteractable, unstable_useInteractableState, unstable_useInteractableVersions, unstable_useLiveCompletionAdapter, unstable_useMentionAdapter, unstable_useMessageStallDetection, unstable_useSlashCommandAdapter, unstable_useThreadMessageIds, unstable_useTriggerPopoverAriaProps, useTriggerPopoverRootContext as unstable_useTriggerPopoverRootContext, useTriggerPopoverRootContextOptional as unstable_useTriggerPopoverRootContextOptional, useTriggerPopoverScopeContext as unstable_useTriggerPopoverScopeContext, useTriggerPopoverScopeContextOptional as unstable_useTriggerPopoverScopeContextOptional, useTriggerPopoverTriggers as unstable_useTriggerPopoverTriggers, useTriggerPopoverTriggersOptional as unstable_useTriggerPopoverTriggersOptional, useAssistantContext, useAssistantDataUI, useAssistantFrameHost, useAssistantInstructions, useAssistantInteractable, useAssistantTool, useAssistantToolUI, useAssistantTransportRuntime, useAssistantTransportSendCommand, useAssistantTransportState, useAui, useAuiEvent, useAuiState, useAuiToolOverrides, useCloudThreadListAdapter, useCloudThreadListRuntime, useExternalMessageConverter, useExternalStoreRuntime, useExternalStoreSharedOptions, useInlineRender, useInteractableState, useLocalRuntime, useMessagePartData, useMessagePartFile, useMessagePartImage, useMessagePartReasoning, useMessagePartSource, useMessagePartText, useMessageQuote, useMessageTiming, useRemoteThreadListRuntime, useRuntimeAdapters, useScrollLock, useSmooth, useThreadViewport, useThreadViewportAutoScroll, useThreadViewportStore, useToolArgsStatus, useToolCallElapsed, useVoiceControls, useVoiceState, useVoiceVolume };
|