@assistant-ui/core 0.3.18 → 0.3.19
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/adapters/speech.d.ts.map +1 -1
- package/dist/adapters/speech.js +13 -3
- package/dist/adapters/speech.js.map +1 -1
- package/dist/adapters/thread-history.d.ts +4 -0
- package/dist/adapters/thread-history.d.ts.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.js.map +1 -1
- package/dist/internal.d.ts +1 -1
- package/dist/model-context/frame/host.d.ts.map +1 -1
- package/dist/model-context/frame/host.js +26 -11
- package/dist/model-context/frame/host.js.map +1 -1
- package/dist/model-context/interactable-composer-metadata.js +11 -9
- package/dist/model-context/interactable-composer-metadata.js.map +1 -1
- package/dist/react/adapters/LocalStorageThreadListAdapter.d.ts.map +1 -1
- package/dist/react/adapters/LocalStorageThreadListAdapter.js +45 -7
- package/dist/react/adapters/LocalStorageThreadListAdapter.js.map +1 -1
- package/dist/react/client/DataRenderers.d.ts.map +1 -1
- package/dist/react/client/DataRenderers.js +20 -15
- package/dist/react/client/DataRenderers.js.map +1 -1
- package/dist/react/client/Interactables.d.ts.map +1 -1
- package/dist/react/client/Interactables.js +11 -5
- package/dist/react/client/Interactables.js.map +1 -1
- package/dist/react/client/RemoteThreadList.d.ts.map +1 -1
- package/dist/react/client/RemoteThreadList.js +3 -2
- package/dist/react/client/RemoteThreadList.js.map +1 -1
- package/dist/react/client/interactable-model-context.d.ts.map +1 -1
- package/dist/react/client/interactable-model-context.js +3 -2
- package/dist/react/client/interactable-model-context.js.map +1 -1
- package/dist/react/index.d.ts +2 -2
- package/dist/react/index.js +2 -2
- package/dist/react/interactables-legacy/useAssistantInteractable.d.ts.map +1 -1
- package/dist/react/interactables-legacy/useAssistantInteractable.js +3 -0
- package/dist/react/interactables-legacy/useAssistantInteractable.js.map +1 -1
- package/dist/react/model-context/useInteractable.d.ts.map +1 -1
- package/dist/react/model-context/useInteractable.js +4 -1
- package/dist/react/model-context/useInteractable.js.map +1 -1
- package/dist/react/model-context/useInteractableVersions.js +1 -1
- package/dist/react/primitives/message/MessageGroupedParts.d.ts +11 -2
- package/dist/react/primitives/message/MessageGroupedParts.d.ts.map +1 -1
- package/dist/react/primitives/message/MessageGroupedParts.js +3 -2
- package/dist/react/primitives/message/MessageGroupedParts.js.map +1 -1
- package/dist/react/primitives/part/PartMessages.d.ts +1 -0
- package/dist/react/primitives/part/PartMessages.d.ts.map +1 -1
- package/dist/react/primitives/part/PartMessages.js +1 -0
- package/dist/react/primitives/part/PartMessages.js.map +1 -1
- package/dist/react/primitives/thread/ThreadMessages.d.ts.map +1 -1
- package/dist/react/primitives/thread/ThreadMessages.js +6 -5
- package/dist/react/primitives/thread/ThreadMessages.js.map +1 -1
- package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.d.ts.map +1 -1
- package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.js +2 -1
- package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.js.map +1 -1
- package/dist/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.d.ts +2 -24
- package/dist/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.d.ts.map +1 -1
- package/dist/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.js +135 -374
- package/dist/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.js.map +1 -1
- package/dist/react/runtimes/cloud/CloudFileAttachmentAdapter.d.ts +1 -0
- package/dist/react/runtimes/cloud/CloudFileAttachmentAdapter.d.ts.map +1 -1
- package/dist/react/runtimes/cloud/CloudFileAttachmentAdapter.js +22 -2
- package/dist/react/runtimes/cloud/CloudFileAttachmentAdapter.js.map +1 -1
- package/dist/react/runtimes/cloud/auiV0.d.ts +40 -15
- package/dist/react/runtimes/cloud/auiV0.d.ts.map +1 -1
- package/dist/react/runtimes/cloud/auiV0.js +62 -15
- package/dist/react/runtimes/cloud/auiV0.js.map +1 -1
- package/dist/react/runtimes/cloud/createCloudThreadListAdapter.d.ts +2 -1
- package/dist/react/runtimes/cloud/createCloudThreadListAdapter.d.ts.map +1 -1
- package/dist/react/runtimes/cloud/createCloudThreadListAdapter.js +4 -0
- package/dist/react/runtimes/cloud/createCloudThreadListAdapter.js.map +1 -1
- package/dist/react/runtimes/cloud/sdkIdentity.d.ts +6 -0
- package/dist/react/runtimes/cloud/sdkIdentity.d.ts.map +1 -0
- package/dist/react/runtimes/cloud/sdkIdentity.js +9 -0
- package/dist/react/runtimes/cloud/sdkIdentity.js.map +1 -0
- package/dist/react/runtimes/external-message-converter.d.ts +12 -2
- package/dist/react/runtimes/external-message-converter.d.ts.map +1 -1
- package/dist/react/runtimes/external-message-converter.js +26 -61
- package/dist/react/runtimes/external-message-converter.js.map +1 -1
- package/dist/react/runtimes/useRemoteThreadListRuntime.js +1 -1
- package/dist/react/runtimes/useRemoteThreadListRuntime.js.map +1 -1
- package/dist/react/utils/groupParts.d.ts +6 -1
- package/dist/react/utils/groupParts.d.ts.map +1 -1
- package/dist/react/utils/groupParts.js +6 -0
- package/dist/react/utils/groupParts.js.map +1 -1
- package/dist/react/utils/useJSONEqual.d.ts +3 -1
- package/dist/react/utils/useJSONEqual.d.ts.map +1 -1
- package/dist/react/utils/useJSONEqual.js +6 -1
- package/dist/react/utils/useJSONEqual.js.map +1 -1
- package/dist/react/utils/useJSONSchemaDependency.d.ts +7 -0
- package/dist/react/utils/useJSONSchemaDependency.d.ts.map +1 -0
- package/dist/react/utils/useJSONSchemaDependency.js +20 -0
- package/dist/react/utils/useJSONSchemaDependency.js.map +1 -0
- package/dist/runtime/api/thread-runtime.d.ts.map +1 -1
- package/dist/runtime/api/thread-runtime.js +2 -5
- package/dist/runtime/api/thread-runtime.js.map +1 -1
- package/dist/runtime/base/base-composer-runtime-core.d.ts +1 -0
- package/dist/runtime/base/base-composer-runtime-core.d.ts.map +1 -1
- package/dist/runtime/base/base-composer-runtime-core.js +46 -10
- package/dist/runtime/base/base-composer-runtime-core.js.map +1 -1
- package/dist/runtime/base/base-thread-runtime-core.d.ts +2 -0
- package/dist/runtime/base/base-thread-runtime-core.d.ts.map +1 -1
- package/dist/runtime/base/base-thread-runtime-core.js +155 -64
- package/dist/runtime/base/base-thread-runtime-core.js.map +1 -1
- package/dist/runtime/interfaces/thread-runtime-core.d.ts +6 -0
- package/dist/runtime/interfaces/thread-runtime-core.d.ts.map +1 -1
- package/dist/runtime/queue/message-queue.d.ts +5 -0
- package/dist/runtime/queue/message-queue.d.ts.map +1 -1
- package/dist/runtime/queue/message-queue.js +61 -6
- package/dist/runtime/queue/message-queue.js.map +1 -1
- package/dist/runtime/utils/auto-status.d.ts +6 -2
- package/dist/runtime/utils/auto-status.d.ts.map +1 -1
- package/dist/runtime/utils/auto-status.js +12 -4
- package/dist/runtime/utils/auto-status.js.map +1 -1
- package/dist/runtime/utils/external-message-conversion.d.ts +16 -4
- package/dist/runtime/utils/external-message-conversion.d.ts.map +1 -1
- package/dist/runtime/utils/external-message-conversion.js +48 -12
- package/dist/runtime/utils/external-message-conversion.js.map +1 -1
- package/dist/runtime/utils/message-repository.js +3 -3
- package/dist/runtime/utils/message-repository.js.map +1 -1
- package/dist/runtime/utils/thread-message-like.d.ts +2 -1
- package/dist/runtime/utils/thread-message-like.d.ts.map +1 -1
- package/dist/runtime/utils/thread-message-like.js +4 -2
- package/dist/runtime/utils/thread-message-like.js.map +1 -1
- package/dist/runtimes/external-store/external-store-thread-runtime-core.d.ts.map +1 -1
- package/dist/runtimes/external-store/external-store-thread-runtime-core.js +8 -1
- package/dist/runtimes/external-store/external-store-thread-runtime-core.js.map +1 -1
- package/dist/runtimes/internal.d.ts +1 -1
- package/dist/runtimes/local/local-thread-runtime-core.d.ts +1 -1
- package/dist/runtimes/local/local-thread-runtime-core.d.ts.map +1 -1
- package/dist/runtimes/local/local-thread-runtime-core.js +4 -1
- package/dist/runtimes/local/local-thread-runtime-core.js.map +1 -1
- package/dist/runtimes/tool-invocations/ToolInvocationTracker.d.ts.map +1 -1
- package/dist/runtimes/tool-invocations/ToolInvocationTracker.js +2 -1
- package/dist/runtimes/tool-invocations/ToolInvocationTracker.js.map +1 -1
- package/dist/store/clients/external-thread.d.ts.map +1 -1
- package/dist/store/clients/external-thread.js +241 -200
- package/dist/store/clients/external-thread.js.map +1 -1
- package/dist/store/clients/thread-tasks.d.ts +13 -0
- package/dist/store/clients/thread-tasks.d.ts.map +1 -0
- package/dist/store/clients/thread-tasks.js +69 -0
- package/dist/store/clients/thread-tasks.js.map +1 -0
- package/dist/store/index.d.ts +3 -2
- package/dist/store/index.js +3 -3
- package/dist/store/primitive-predicates.d.ts.map +1 -1
- package/dist/store/primitive-predicates.js +4 -4
- package/dist/store/primitive-predicates.js.map +1 -1
- package/dist/store/runtime-clients/thread-runtime-client.d.ts.map +1 -1
- package/dist/store/runtime-clients/thread-runtime-client.js +176 -128
- package/dist/store/runtime-clients/thread-runtime-client.js.map +1 -1
- package/dist/store/scope-registration.d.ts +2 -0
- package/dist/store/scope-registration.d.ts.map +1 -1
- package/dist/store/scopes/task.d.ts +36 -0
- package/dist/store/scopes/task.d.ts.map +1 -0
- package/dist/store/scopes/task.js +0 -0
- package/dist/store/scopes/thread.d.ts +20 -0
- package/dist/store/scopes/thread.d.ts.map +1 -1
- package/dist/subscribable/subscribable.d.ts +2 -1
- package/dist/subscribable/subscribable.d.ts.map +1 -1
- package/dist/subscribable/subscribable.js +23 -15
- package/dist/subscribable/subscribable.js.map +1 -1
- package/dist/types/index.d.ts +2 -2
- package/dist/types/message.d.ts +8 -1
- package/dist/types/message.d.ts.map +1 -1
- package/dist/types/message.js.map +1 -1
- package/dist/utils/abortable-iterable.d.ts.map +1 -1
- package/dist/utils/abortable-iterable.js +30 -14
- package/dist/utils/abortable-iterable.js.map +1 -1
- package/dist/utils/getGroupStatus.d.ts +18 -2
- package/dist/utils/getGroupStatus.d.ts.map +1 -1
- package/dist/utils/getGroupStatus.js +32 -7
- package/dist/utils/getGroupStatus.js.map +1 -1
- package/dist/utils/wire-media.d.ts.map +1 -1
- package/dist/utils/wire-media.js +2 -2
- package/dist/utils/wire-media.js.map +1 -1
- package/package.json +6 -6
- package/src/adapters/speech.test.ts +236 -0
- package/src/adapters/speech.ts +17 -10
- package/src/adapters/thread-history.ts +3 -0
- package/src/index.ts +1 -0
- package/src/model-context/frame/host.test.ts +113 -1
- package/src/model-context/frame/host.ts +39 -12
- package/src/model-context/interactable-composer-metadata.test.ts +30 -0
- package/src/model-context/interactable-composer-metadata.ts +10 -10
- package/src/react/adapters/LocalStorageThreadListAdapter.test.ts +244 -0
- package/src/react/adapters/LocalStorageThreadListAdapter.tsx +104 -7
- package/src/react/client/DataRenderers.test.tsx +45 -0
- package/src/react/client/DataRenderers.ts +13 -9
- package/src/react/client/Interactables.test.ts +44 -1
- package/src/react/client/Interactables.ts +7 -1
- package/src/react/client/RemoteThreadList.test.ts +41 -1
- package/src/react/client/RemoteThreadList.ts +15 -2
- package/src/react/client/interactable-model-context.test.ts +44 -0
- package/src/react/client/interactable-model-context.ts +3 -2
- package/src/react/index.ts +5 -1
- package/src/react/interactables-legacy/useAssistantInteractable.test.tsx +132 -0
- package/src/react/interactables-legacy/useAssistantInteractable.ts +10 -1
- package/src/react/model-context/useInteractable.test.tsx +177 -0
- package/src/react/model-context/useInteractable.ts +3 -0
- package/src/react/primitive-hooks/useActionBarCopy.test.ts +0 -1
- package/src/react/primitive-hooks/useSuggestionTrigger.test.ts +0 -1
- package/src/react/primitives/message/MessageGroupedParts.test.tsx +96 -0
- package/src/react/primitives/message/MessageGroupedParts.tsx +15 -4
- package/src/react/primitives/part/PartMessages.test.tsx +104 -1
- package/src/react/primitives/part/PartMessages.tsx +1 -0
- package/src/react/primitives/thread/ThreadMessages.test.tsx +142 -0
- package/src/react/primitives/thread/ThreadMessages.tsx +8 -5
- package/src/react/providers/ReadonlyThreadProvider.test.tsx +56 -0
- package/src/react/runtimes/RemoteThreadListThreadListRuntimeCore.tsx +7 -1
- package/src/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.test.ts +20 -14
- package/src/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.test.tsx +221 -1
- package/src/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.ts +166 -512
- package/src/react/runtimes/cloud/CloudFileAttachmentAdapter.test.ts +77 -0
- package/src/react/runtimes/cloud/CloudFileAttachmentAdapter.ts +27 -1
- package/src/react/runtimes/cloud/auiV0.ts +160 -25
- package/src/react/runtimes/cloud/createCloudThreadListAdapter.test.ts +21 -0
- package/src/react/runtimes/cloud/createCloudThreadListAdapter.ts +7 -1
- package/src/react/runtimes/cloud/sdkIdentity.ts +9 -0
- package/src/react/runtimes/cloud/useCloudThreadListAdapter.test.tsx +18 -4
- package/src/react/runtimes/external-message-converter.test.ts +136 -1
- package/src/react/runtimes/external-message-converter.ts +39 -93
- package/src/react/runtimes/useRemoteThreadListRuntime.ts +1 -1
- package/src/react/utils/groupParts.ts +12 -1
- package/src/react/utils/useJSONEqual.ts +9 -0
- package/src/react/utils/useJSONSchemaDependency.ts +22 -0
- package/src/runtime/api/thread-runtime.test.ts +58 -0
- package/src/runtime/api/thread-runtime.ts +2 -4
- package/src/runtime/base/base-composer-runtime-core.ts +69 -16
- package/src/runtime/base/base-thread-runtime-core.test.ts +1008 -1
- package/src/runtime/base/base-thread-runtime-core.ts +222 -83
- package/src/runtime/interfaces/thread-runtime-core.ts +6 -0
- package/src/runtime/queue/message-queue.ts +68 -6
- package/src/runtime/utils/auto-status.test.ts +112 -1
- package/src/runtime/utils/auto-status.ts +31 -5
- package/src/runtime/utils/external-message-conversion.test.ts +134 -0
- package/src/runtime/utils/external-message-conversion.ts +122 -31
- package/src/runtime/utils/message-repository.test.ts +49 -0
- package/src/runtime/utils/message-repository.ts +3 -3
- package/src/runtime/utils/thread-message-like.test.ts +52 -0
- package/src/runtime/utils/thread-message-like.ts +4 -0
- package/src/runtimes/external-store/external-store-thread-runtime-core.ts +31 -1
- package/src/runtimes/local/local-thread-runtime-core.test.ts +21 -0
- package/src/runtimes/local/local-thread-runtime-core.ts +11 -1
- package/src/runtimes/tool-invocations/EDGE_CASES.md +2 -6
- package/src/runtimes/tool-invocations/ToolInvocationTracker.test.ts +133 -0
- package/src/runtimes/tool-invocations/ToolInvocationTracker.ts +10 -6
- package/src/store/clients/external-thread.ts +19 -1
- package/src/store/clients/thread-tasks.test.ts +274 -0
- package/src/store/clients/thread-tasks.ts +138 -0
- package/src/store/index.ts +8 -0
- package/src/store/primitive-predicates.test.ts +48 -5
- package/src/store/primitive-predicates.ts +7 -2
- package/src/store/runtime-clients/thread-runtime-client.ts +31 -1
- package/src/store/scope-registration.ts +2 -0
- package/src/store/scopes/task.ts +34 -0
- package/src/store/scopes/thread.ts +16 -0
- package/src/store/thread-tasks.test.tsx +209 -0
- package/src/subscribable/subscribable.test.ts +156 -1
- package/src/subscribable/subscribable.ts +25 -15
- package/src/tests/MessageRepository.test.ts +1 -5
- package/src/tests/auiV0Encode.test.ts +300 -0
- package/src/tests/base-composer-runtime-core-send.test.ts +51 -0
- package/src/tests/base-composer-runtime-core.test.ts +314 -2
- package/src/tests/external-store-thread-runtime-core-adapter.test.ts +151 -0
- package/src/tests/external-thread-attachments.test.tsx +69 -0
- package/src/tests/external-thread-parity.test.tsx +34 -0
- package/src/tests/groupParts.test.ts +71 -0
- package/src/tests/message-queue.test.ts +253 -0
- package/src/tests/remote-thread-list-reactive-threadId.test.ts +51 -0
- package/src/tests/useRemoteThreadListRuntime-controlled.test.tsx +43 -0
- package/src/types/index.ts +1 -0
- package/src/types/message.ts +8 -0
- package/src/utils/abortable-iterable.test.ts +115 -0
- package/src/utils/abortable-iterable.ts +34 -23
- package/src/utils/getGroupStatus.test.ts +70 -4
- package/src/utils/getGroupStatus.ts +35 -12
- package/src/utils/wire-media.test.ts +10 -0
- package/src/utils/wire-media.ts +6 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"external-thread.js","names":["useState","useMemo","useEffect","useCallback","useRef","resource","withKey","ClientElement","ClientOutput","useClientLookup","attachTransformScopes","useClientResource","Derived","AppendMessage","MessagePartStatus","ThreadAssistantMessagePart","ThreadUserMessagePart","ThreadMessage","ToolCallMessagePartStatus","Attachment","CreateAttachment","PendingAttachment","isAttachmentComplete","isCreateAttachment","AddToolResultOptions","RespondToToolApprovalOptions","ResumeToolCallOptions","SpeechState","ThreadSuggestion","ExternalThreadQueueAdapter","QueuePlacement","ExternalThreadBranchAdapter","AttachmentAdapter","FeedbackAdapter","SpeechSynthesisAdapter","ToolResponse","ReadonlyJSONValue","QueueItemState","ComposerSendOptions","fileMatchesAccept","getThreadMessageText","resolveToolApprovalResponse","AttachmentAddOperations","drainAttachmentAdd","toMessagePartStatus","generateId","ModelContext","ThreadSuggestions","Tools","DataRenderers","SingleThreadList","EMPTY_QUEUE_ITEMS","EMPTY_BRANCH_IDS","EMPTY_SUGGESTIONS","ExternalThreadMessage","id","COMPLETE_STATUS","Object","freeze","type","derivePartStatus","message","partIndex","part","status","ExternalThreadProps","messages","isRunning","isLoading","state","extras","isSendDisabled","onNew","onEdit","onReload","parentId","onStartRun","onCancel","onResume","onRefetchThread","Promise","onAddToolResult","options","onResumeToolCall","onLoadExternalState","attachmentAdapter","feedbackAdapter","speechAdapter","queue","branches","onRespondToToolApproval","MessageClientProps","index","submittedFeedback","onSubmitFeedback","feedback","speech","onSpeak","onStopSpeaking","useMessageClient","t0","$","_c","isCopied","setIsCopied","isHovering","setIsHovering","t1","content","map","idx","PartResource","messageId","partClients","t2","attachments","t3","_temp2","attachmentClients","t4","Error","handleBeginEdit","t5","msg","sourceId","handleSendEdit","t6","ComposerClientResource","canCancel","onBeginEdit","onSend","composerClient","branchIds","t7","getBranches","indexOf","branchIndex","branchNumber","branchCount","length","t8","role","metadata","messageWithFeedback","t9","t10","isLast","parts","composer","t11","t12","methods","t13","t14","t15","position","branchId","target","undefined","switchToBranch","t16","selector","get","findIndex","p","toolCallId","t17","selector_0","key","t18","getState","delete","_temp3","reload","speak","stopSpeaking","submitFeedback","getCopyText","attachment","MessageClient","PartResourceProps","usePartResource","result","response","toResponse","toolName","isError","artifact","modelContent","payload","response_0","approval","approved","resolution","resolve","error","reject","addToolResult","resumeToolCall","respondToToolApproval","AttachmentResourceProps","onRemove","useAttachmentResource","remove","AttachmentResource","ComposerClientResourceProps","useQueueItemClient","item","onMove","placement","steer","lane","insertAfter","move","QueueItemClient","useLiveState","initial","setState","ref","Symbol","for","next","current","prev","T","set","const","removeAttachmentThroughAdapter","setAttachments","String","candidate","reason","useComposerClientResource","isEditing","setIsEditing","isEditingRef","text","setText","textRef","setRole","roleRef","runConfig","setRunConfig","runConfigRef","attachmentsRef","quote","setQuote","quoteRef","attachmentAddOperations","messageText","filter","_temp4","_temp5","join","updateFromMessage","cancel","a","removed","all","_temp6","a_1","removePendingAttachments","attachment_0","prev_0","a_2","upsertAttachment","steerItems","laneItems","items","queueItems","queueItemClients","accept","isEmpty","trim","canSend","attachmentAccept","dictation","fileOrAttachment","file","name","contentType","operation","start","add","attachment_1","finish","isCancelled","newAttachment","prev_1","newAttachment_0","prev_2","cancelAll","removed_0","removed_1","t19","opts","currentQuote","currentText","currentRole","currentRunConfig","currentAttachments","isEmpty_0","dispatch","sendAttachments","composedMessage","createdAt","Date","startRun","custom","enqueue","attachment_2","send","then","error_0","prev_3","prev_4","prev_5","console","t20","removed_2","catch","_temp7","t21","t22","t23","addAttachment","clearAttachments","reset","beginEdit","startDictation","_temp8","stopDictation","_temp9","queueItem","createSpeechController","notify","session","clear","adapter","utterance","unsub","subscribe","stop","stopMessage","dispose","dedupeMessagesById","seenIds","Set","deduped","i","has","warn","push","reverse","useExternalThread","messagesProp","threadState","setSubmittedFeedback","entry","external","feedbackFor","live","entries","entry_0","msg_0","find","m","keys","fromEntries","submit","handleSubmitFeedback","speechState","setSpeech","speechController","hasSpeechAdapter","message_0","handleSpeak","messageIndex","m_0","handleReload","msg_1","props","messageClients","__internal_notifyCancelled","handleCancelRun","message_1","at","handleSendNew","headId","hasCancel","hasRefetchThread","message_2","message_3","composerQueue","t24","suggestionsClient","hasQueue","hasBranches","hasEdit","hasReload","hasAttachments","hasFeedback","hasSpeech","t25","_temp0","messageStates","t26","t27","edit","refetchThread","voice","switchBranchDuringRun","unstable_copy","t28","t29","isDisabled","capabilities","suggestions","t30","t31","t32","t33","message_4","appendMessage","t34","t35","t36","unstable_refetchThread","t37","state_0","t38","t39","append","deleteMessage","_temp1","resumeRun","cancelRun","importExternalState","getModelContext","_temp10","export","_temp11","import","_temp12","_temp13","connectVoice","_temp14","disconnectVoice","_temp15","getVoiceVolume","_temp16","subscribeVoiceVolume","_temp18","muteVoice","_temp19","unmuteVoice","_temp20","ExternalThread","scopes","parent","threads","source","threadElement","thread","query","aui","threadListItem","modelContext","tools","dataRenderers","_temp","part_0","a_0","error_1","s","arr","config","_temp17"],"sources":["../../../src/store/clients/external-thread.ts"],"sourcesContent":["import { useState, useMemo, useEffect, useCallback, useRef } from \"react\";\nimport { resource, withKey } from \"@assistant-ui/tap\";\nimport type { ClientElement, ClientOutput } from \"@assistant-ui/store\";\nimport {\n useClientLookup,\n attachTransformScopes,\n useClientResource,\n Derived,\n} from \"@assistant-ui/store/client\";\n\nimport type {\n AppendMessage,\n MessagePartStatus,\n ThreadAssistantMessagePart,\n ThreadUserMessagePart,\n ThreadMessage,\n ToolCallMessagePartStatus,\n} from \"../../types/message\";\nimport type {\n Attachment,\n CreateAttachment,\n PendingAttachment,\n} from \"../../types/attachment\";\nimport {\n isAttachmentComplete,\n isCreateAttachment,\n} from \"../../types/attachment\";\nimport type {\n AddToolResultOptions,\n RespondToToolApprovalOptions,\n ResumeToolCallOptions,\n SpeechState,\n ThreadSuggestion,\n} from \"../../runtime/interfaces/thread-runtime-core\";\nimport type {\n ExternalThreadQueueAdapter,\n QueuePlacement,\n} from \"../../runtime/queue/external-thread-queue-adapter\";\nimport type { ExternalThreadBranchAdapter } from \"../../runtime/branch/external-thread-branch-adapter\";\nimport type { AttachmentAdapter } from \"../../adapters/attachment\";\nimport type { FeedbackAdapter } from \"../../adapters/feedback\";\nimport type { SpeechSynthesisAdapter } from \"../../adapters/speech\";\nimport { ToolResponse } from \"assistant-stream\";\nimport type { ReadonlyJSONValue } from \"assistant-stream/utils\";\nimport type { QueueItemState } from \"../scopes/queue-item\";\nimport type { ComposerSendOptions } from \"../scopes/composer\";\nimport { fileMatchesAccept } from \"../../adapters/attachment\";\nimport { getThreadMessageText } from \"../../utils/text\";\nimport { resolveToolApprovalResponse } from \"../../runtime/utils/resolveToolApprovalResponse\";\nimport {\n AttachmentAddOperations,\n drainAttachmentAdd,\n} from \"../../runtime/utils/attachment-add-operations\";\nimport { toMessagePartStatus } from \"../../utils/normalizePartStatus\";\nimport { generateId } from \"../../utils/id\";\nimport { ModelContext } from \"./model-context-client\";\nimport { ThreadSuggestions } from \"./suggestions\";\nimport { Tools } from \"../../react/client/Tools\";\nimport { DataRenderers } from \"../../react/client/DataRenderers\";\nimport { SingleThreadList } from \"./single-thread-list\";\n\nconst EMPTY_QUEUE_ITEMS: readonly QueueItemState[] = [];\nconst EMPTY_BRANCH_IDS: readonly string[] = [];\nconst EMPTY_SUGGESTIONS: readonly ThreadSuggestion[] = [];\n\nexport type ExternalThreadMessage = ThreadMessage & {\n id: string;\n};\n\nconst COMPLETE_STATUS: MessagePartStatus = Object.freeze({\n type: \"complete\",\n});\n\nconst derivePartStatus = (\n message: ExternalThreadMessage,\n partIndex: number,\n part: ThreadAssistantMessagePart | ThreadUserMessagePart,\n): ToolCallMessagePartStatus => {\n if (!message.status) return COMPLETE_STATUS;\n return toMessagePartStatus(message, partIndex, part);\n};\n\nexport type ExternalThreadProps = {\n messages: readonly ExternalThreadMessage[];\n isRunning?: boolean;\n isLoading?: boolean | undefined;\n state?: ReadonlyJSONValue | undefined;\n extras?: unknown;\n /**\n * Whether sending new messages is currently disabled. When `true`, the\n * thread composer's input remains usable but `send()` is a no-op and\n * `composer.canSend` is `false`. Edit composers (saving message edits)\n * intentionally ignore this flag.\n */\n isSendDisabled?: boolean;\n /**\n * Callback for new messages (non-queue runtimes).\n * @note Unused when `queue` is provided — new messages are routed through `queue.enqueue` instead.\n */\n onNew?: (message: AppendMessage) => void;\n onEdit?: (message: AppendMessage) => void;\n onReload?: (parentId: string | null) => void;\n onStartRun?: () => void;\n onCancel?: () => void;\n onResume?: (() => void) | undefined;\n /**\n * Handler for re-fetching this thread's state in place, driving\n * `threads.reloadMainThread()`. Unrelated to `onReload`, which re-generates\n * an assistant message. Presence enables the `refetchThread` capability;\n * rejections propagate to the caller.\n */\n onRefetchThread?: (() => Promise<void>) | undefined;\n onAddToolResult?: ((options: AddToolResultOptions) => void) | undefined;\n /** Callback for resuming a tool call that is waiting for human input. */\n onResumeToolCall?: ((options: ResumeToolCallOptions) => void) | undefined;\n onLoadExternalState?: ((state: unknown) => void) | undefined;\n attachmentAdapter?: AttachmentAdapter | undefined;\n feedbackAdapter?: FeedbackAdapter | undefined;\n speechAdapter?: SpeechSynthesisAdapter | undefined;\n /** Queue adapter for runtimes that support message queuing and steering. */\n queue?: ExternalThreadQueueAdapter;\n /** Branch adapter for runtimes that track sibling variants of messages. */\n branches?: ExternalThreadBranchAdapter;\n /** Callback for tool approval decisions. Absent: responding to an approval throws a capability error. */\n onRespondToToolApproval?: (\n options: RespondToToolApprovalOptions,\n ) => void | Promise<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 | Promise<void>)\n | undefined;\n onAddToolResult?: ((options: AddToolResultOptions) => void) | undefined;\n onResumeToolCall?: ((options: ResumeToolCallOptions) => void) | undefined;\n attachmentAdapter?: AttachmentAdapter | undefined;\n submittedFeedback: \"positive\" | \"negative\" | undefined;\n onSubmitFeedback: (feedback: { type: \"positive\" | \"negative\" }) => void;\n speech: SpeechState | undefined;\n onSpeak: () => void;\n onStopSpeaking: () => void;\n};\n\n// Message Client - minimal implementation\nconst useMessageClient = ({\n message,\n index,\n parentId,\n onEdit,\n onReload,\n queue,\n branches,\n onRespondToToolApproval,\n onAddToolResult,\n onResumeToolCall,\n attachmentAdapter,\n submittedFeedback,\n onSubmitFeedback,\n speech,\n onSpeak,\n onStopSpeaking,\n}: MessageClientProps): ClientOutput<\"message\"> => {\n const [isCopied, setIsCopied] = useState(false);\n const [isHovering, setIsHovering] = useState(false);\n\n const partClients = useClientLookup(\n message.content.map((part, idx) =>\n withKey(\n idx,\n PartResource({\n part,\n status: derivePartStatus(message, idx, part),\n messageId: message.id,\n onRespondToToolApproval,\n onAddToolResult,\n onResumeToolCall,\n }),\n ),\n ),\n );\n\n const attachmentClients = useClientLookup(\n (message.attachments ?? []).map((attachment) =>\n withKey(\n attachment.id,\n AttachmentResource({\n attachment,\n onRemove: () => {},\n }),\n ),\n ),\n );\n\n const handleBeginEdit = () => {\n if (!onEdit) throw new Error(\"Runtime does not support editing.\");\n };\n\n const handleSendEdit = (msg: AppendMessage) => {\n if (!onEdit) throw new Error(\"Runtime does not support editing.\");\n onEdit({\n ...msg,\n parentId,\n sourceId: message.id,\n });\n };\n\n const composerClient = useClientResource(\n ComposerClientResource({\n type: \"edit\",\n canCancel: true,\n onBeginEdit: handleBeginEdit,\n onSend: handleSendEdit,\n message,\n queue,\n attachmentAdapter,\n }),\n );\n\n const branchIds = branches?.getBranches(message.id) ?? EMPTY_BRANCH_IDS;\n const branchIndex = branchIds.indexOf(message.id);\n const branchNumber = branchIndex === -1 ? 1 : branchIndex + 1;\n const branchCount = branchIndex === -1 ? 1 : branchIds.length;\n\n const state = useMemo(() => {\n const messageWithFeedback: ExternalThreadMessage =\n submittedFeedback && message.role === \"assistant\"\n ? {\n ...message,\n metadata: {\n ...message.metadata,\n submittedFeedback: { type: submittedFeedback },\n },\n }\n : message;\n return {\n ...messageWithFeedback,\n attachments: message.attachments ?? [],\n parentId,\n isLast: false, // Will be set by thread\n branchNumber,\n branchCount,\n speech,\n parts: partClients.state,\n isCopied,\n isHovering,\n index,\n composer: composerClient.state,\n };\n }, [\n message,\n parentId,\n isCopied,\n isHovering,\n index,\n composerClient.state,\n partClients.state,\n branchNumber,\n branchCount,\n submittedFeedback,\n speech,\n ]);\n\n return {\n getState: () => state,\n composer: () => composerClient.methods,\n delete: () => {},\n reload: () => {\n onReload?.();\n },\n speak: onSpeak,\n stopSpeaking: onStopSpeaking,\n submitFeedback: onSubmitFeedback,\n switchToBranch: ({ position, branchId }) => {\n if (!branches) return;\n const target =\n branchId ??\n (branchIndex === -1\n ? undefined\n : position === \"previous\"\n ? branchIds[branchIndex - 1]\n : position === \"next\"\n ? branchIds[branchIndex + 1]\n : undefined);\n if (target !== undefined && target !== message.id)\n branches.switchToBranch(target);\n },\n getCopyText: () => getThreadMessageText(message),\n part: (selector) => {\n if (\"index\" in selector) {\n return partClients.get(selector);\n }\n const partIndex = state.parts.findIndex(\n (p) => p.type === \"tool-call\" && p.toolCallId === selector.toolCallId,\n );\n return partClients.get({ index: partIndex });\n },\n attachment: (selector) => {\n if (\"id\" in selector) {\n return attachmentClients.get({ key: selector.id });\n }\n return attachmentClients.get(selector);\n },\n setIsCopied,\n setIsHovering,\n };\n};\n\nconst MessageClient = resource(useMessageClient);\n\ntype PartResourceProps = {\n part: ThreadAssistantMessagePart | ThreadUserMessagePart;\n status: ToolCallMessagePartStatus;\n messageId: string;\n onRespondToToolApproval?:\n | ((options: RespondToToolApprovalOptions) => void | Promise<void>)\n | undefined;\n onAddToolResult?: ((options: AddToolResultOptions) => void) | undefined;\n onResumeToolCall?: ((options: ResumeToolCallOptions) => void) | undefined;\n};\n\n// Part Client - minimal implementation\nconst usePartResource = ({\n part,\n status,\n messageId,\n onRespondToToolApproval,\n onAddToolResult,\n onResumeToolCall,\n}: PartResourceProps): ClientOutput<\"part\"> => {\n const state = useMemo(\n () => ({ ...part, status: status as MessagePartStatus }),\n [part, status],\n );\n\n return {\n getState: () => state,\n addToolResult: (result) => {\n if (!onAddToolResult)\n throw new Error(\n \"Runtime does not support tool results (onAddToolResult is not set).\",\n );\n if (part.type !== \"tool-call\")\n throw new Error(\"Tried to add tool result on non-tool message part\");\n\n const response = ToolResponse.toResponse(result);\n onAddToolResult({\n messageId,\n toolName: part.toolName,\n toolCallId: part.toolCallId,\n result: response.result as ReadonlyJSONValue,\n isError: response.isError,\n ...(response.artifact !== undefined && { artifact: response.artifact }),\n ...(response.modelContent !== undefined && {\n modelContent: response.modelContent,\n }),\n });\n },\n resumeToolCall: (payload) => {\n if (!onResumeToolCall)\n throw new Error(\n \"Runtime does not support resuming tool calls (onResumeToolCall is not set).\",\n );\n if (part.type !== \"tool-call\")\n throw new Error(\"Tried to resume tool call on non-tool message part\");\n\n onResumeToolCall({ toolCallId: part.toolCallId, payload });\n },\n respondToToolApproval: (response) => {\n if (!onRespondToToolApproval)\n throw new Error(\"Runtime does not support tool approvals.\");\n\n if (part.type !== \"tool-call\")\n throw new Error(\n \"Tried to respond to tool approval on non-tool message part\",\n );\n\n if (\n !part.approval ||\n part.approval.approved !== undefined ||\n part.approval.resolution !== undefined\n )\n throw new Error(\"Tool call has no pending approval\");\n\n const options = resolveToolApprovalResponse(part.approval, response);\n try {\n return Promise.resolve(onRespondToToolApproval(options));\n } catch (error) {\n return Promise.reject(error);\n }\n },\n };\n};\n\nconst PartResource = resource(usePartResource);\n\ntype AttachmentResourceProps = {\n attachment: Attachment;\n onRemove?: () => void | Promise<void>;\n};\n\n// Attachment Client - minimal implementation\nconst useAttachmentResource = ({\n attachment,\n onRemove,\n}: AttachmentResourceProps): ClientOutput<\"attachment\"> => {\n return {\n getState: () => attachment,\n remove: async () => {\n await onRemove?.();\n },\n };\n};\n\nconst AttachmentResource = resource(useAttachmentResource);\n\ntype ComposerClientResourceProps = {\n type: \"thread\" | \"edit\";\n canCancel: boolean;\n isRunning?: boolean;\n isSendDisabled?: boolean;\n onCancel?: () => void;\n onBeginEdit?: () => void;\n onSend?: (message: AppendMessage) => void;\n message?: ExternalThreadMessage;\n queue?: ExternalThreadQueueAdapter | undefined;\n attachmentAdapter?: AttachmentAdapter | undefined;\n};\n\nconst useQueueItemClient = ({\n item,\n onMove,\n onRemove,\n}: {\n item: QueueItemState;\n onMove: (placement: QueuePlacement) => void;\n onRemove: () => void;\n}): ClientOutput<\"queueItem\"> => {\n return {\n getState: () => item,\n steer: () => onMove({ lane: \"steer\", insertAfter: null }),\n move: onMove,\n remove: onRemove,\n };\n};\n\nconst QueueItemClient = resource(useQueueItemClient);\n\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// A try/catch inside the resource makes the React Compiler bail out of the\n// whole hook, so the adapter call and its failure status live at module scope.\nconst removeAttachmentThroughAdapter = async (\n attachment: Attachment,\n attachmentAdapter: AttachmentAdapter | undefined,\n setAttachments: (\n next:\n | readonly Attachment[]\n | ((prev: readonly Attachment[]) => readonly Attachment[]),\n ) => void,\n) => {\n try {\n await attachmentAdapter?.remove(attachment);\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n setAttachments((prev) =>\n prev.map((candidate) =>\n candidate.id === attachment.id && !isAttachmentComplete(candidate)\n ? {\n ...candidate,\n status: { type: \"incomplete\", reason: \"error\", message },\n }\n : candidate,\n ),\n );\n throw error;\n }\n};\n\n// Composer Client - minimal implementation\nconst useComposerClientResource = ({\n type,\n canCancel,\n isRunning = false,\n isSendDisabled = false,\n onCancel,\n onBeginEdit,\n onSend,\n message,\n queue,\n attachmentAdapter,\n}: ComposerClientResourceProps): ClientOutput<\"composer\"> => {\n const [isEditing, setIsEditing, isEditingRef] = useLiveState(\n type === \"thread\",\n );\n const [text, setText, textRef] = useLiveState(\"\");\n const [role, setRole, roleRef] = useLiveState<\n \"user\" | \"assistant\" | \"system\"\n >(\"user\");\n const [runConfig, setRunConfig, runConfigRef] = useLiveState<\n Record<string, unknown>\n >({});\n const [attachments, setAttachments, attachmentsRef] = useLiveState<\n readonly Attachment[]\n >([]);\n const [quote, setQuote, quoteRef] = useLiveState<\n { readonly text: string; readonly messageId: string } | undefined\n >(undefined);\n const attachmentAddOperations = useMemo(\n () => new AttachmentAddOperations(),\n [],\n );\n\n const updateFromMessage = () => {\n if (!message) return;\n const messageText = message.content\n .filter((part) => part.type === \"text\")\n .map((part) => part.text)\n .join(\"\\n\\n\");\n setText(messageText);\n setRole(message.role);\n setAttachments(message.attachments ?? []);\n };\n\n const attachmentClients = useClientLookup(\n attachments.map((attachment) =>\n withKey(\n attachment.id,\n AttachmentResource({\n attachment,\n onRemove: async () => {\n attachmentAddOperations.cancel(attachment.id);\n if (!isAttachmentComplete(attachment)) {\n await removeAttachmentThroughAdapter(\n attachment,\n attachmentAdapter,\n setAttachments,\n );\n }\n setAttachments((prev) =>\n prev.filter((a) => a.id !== attachment.id),\n );\n },\n }),\n ),\n ),\n );\n\n const removePendingAttachments = async (removed: readonly Attachment[]) => {\n if (!attachmentAdapter) return;\n await Promise.all(\n removed\n .filter((a) => a.status.type !== \"complete\")\n .map((a) => attachmentAdapter.remove(a)),\n );\n };\n\n const upsertAttachment = (attachment: Attachment) => {\n setAttachments((prev) => {\n const idx = prev.findIndex((a) => a.id === attachment.id);\n if (idx === -1) return [...prev, attachment];\n const next = [...prev];\n next[idx] = attachment;\n return next;\n });\n };\n\n const steerItems = queue?.steerItems ?? EMPTY_QUEUE_ITEMS;\n const laneItems = queue?.items ?? EMPTY_QUEUE_ITEMS;\n const queueItems = useMemo(\n () =>\n steerItems.length === 0\n ? laneItems\n : laneItems.length === 0\n ? steerItems\n : [...steerItems, ...laneItems],\n [steerItems, laneItems],\n );\n const queueItemClients = useClientLookup(\n queueItems.map((item) =>\n withKey(\n item.id,\n QueueItemClient({\n item,\n onMove: (placement) => queue?.move(item.id, placement),\n onRemove: () => queue?.remove(item.id),\n }),\n ),\n ),\n );\n\n const state = useMemo(() => {\n const isEmpty = !text.trim() && !attachments.length;\n return {\n text,\n role,\n attachments: attachmentClients.state,\n runConfig,\n isEditing,\n canCancel,\n canSend: isEditing && !isEmpty && !isSendDisabled,\n attachmentAccept: attachmentAdapter?.accept ?? \"*\",\n isEmpty,\n type,\n dictation: undefined,\n quote,\n queue: queueItems,\n };\n }, [\n text,\n role,\n attachmentClients.state,\n runConfig,\n isEditing,\n canCancel,\n isSendDisabled,\n type,\n attachments.length,\n quote,\n queueItems,\n attachmentAdapter?.accept,\n ]);\n\n return {\n getState: () => state,\n setText,\n setRole,\n setRunConfig,\n addAttachment: async (fileOrAttachment: File | CreateAttachment) => {\n if (attachmentAdapter) {\n const file = isCreateAttachment(fileOrAttachment)\n ? {\n name: fileOrAttachment.name,\n type: fileOrAttachment.contentType ?? \"\",\n }\n : { name: fileOrAttachment.name, type: fileOrAttachment.type };\n if (!fileMatchesAccept(file, attachmentAdapter.accept))\n throw new Error(\n `File type ${file.type || \"unknown\"} is not accepted. Accepted types: ${attachmentAdapter.accept}`,\n );\n }\n if (!isCreateAttachment(fileOrAttachment) && attachmentAdapter) {\n const operation = attachmentAddOperations.start();\n try {\n await drainAttachmentAdd(\n attachmentAdapter.add({ file: fileOrAttachment }),\n (attachment) => {\n if (!attachmentAddOperations.accept(operation, attachment.id))\n return false;\n upsertAttachment(attachment);\n return true;\n },\n );\n attachmentAddOperations.finish(operation);\n } catch (error) {\n attachmentAddOperations.finish(operation);\n if (!attachmentAddOperations.isCancelled(operation)) throw error;\n }\n } else if (!isCreateAttachment(fileOrAttachment)) {\n const newAttachment: Attachment = {\n id: generateId(),\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 ?? generateId(),\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 attachmentAddOperations.cancelAll();\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 attachmentAddOperations.cancelAll();\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 currentRole = roleRef.current;\n const currentRunConfig = runConfigRef.current;\n const currentAttachments = attachmentsRef.current;\n const isEmpty = !currentText.trim() && !currentAttachments.length;\n if (!isEditingRef.current) throw new Error(\"Composer is not available\");\n if (isEmpty || isSendDisabled) return;\n\n attachmentAddOperations.cancelAll();\n setText(\"\");\n setAttachments([]);\n setQuote(undefined);\n\n const dispatch = (sendAttachments: readonly Attachment[]) => {\n const composedMessage: AppendMessage = {\n role: currentRole,\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: currentRunConfig,\n startRun: opts?.startRun,\n metadata: {\n custom: { ...(currentQuote ? { quote: currentQuote } : {}) },\n },\n };\n // edit sends carry a sourceId contract; only thread sends queue\n if (queue && type === \"thread\") {\n if (opts?.steer ?? isRunning) queue.steer(composedMessage);\n else queue.enqueue(composedMessage);\n } else {\n onSend?.(composedMessage);\n }\n if (type === \"edit\") setIsEditing(false);\n };\n\n if (attachmentAdapter && currentAttachments.length > 0) {\n void Promise.all(\n currentAttachments.map((attachment) =>\n attachment.status.type === \"complete\"\n ? attachment\n : attachmentAdapter.send(attachment as PendingAttachment),\n ),\n ).then(dispatch, (error) => {\n // Upload failed: merge the failed send back into the draft.\n setText((prev) =>\n currentText && prev\n ? currentText + \"\\n\" + prev\n : currentText || prev,\n );\n setQuote((prev) => prev ?? currentQuote);\n setAttachments((prev) => [...currentAttachments, ...prev]);\n console.error(\"Failed to send attachments\", error);\n });\n } else {\n dispatch(currentAttachments);\n }\n },\n cancel: () => {\n // An edit session ends here, so its in-flight adapter adds must not\n // land in a later session; the thread composer's cancel stops the run\n // and leaves the draft (and its pending adds) alone.\n if (type === \"edit\") {\n attachmentAddOperations.cancelAll();\n const removed = attachmentsRef.current;\n setAttachments([]);\n removePendingAttachments(removed).catch((error) => {\n console.error(\"Failed to remove cancelled edit attachments\", error);\n });\n }\n onCancel?.();\n if (type === \"edit\") setIsEditing(false);\n },\n beginEdit: () => {\n onBeginEdit?.();\n if (type === \"thread\") return;\n if (isEditingRef.current) throw new Error(\"Edit already in progress\");\n setIsEditing(true);\n updateFromMessage();\n },\n startDictation: () => {},\n stopDictation: () => {},\n setQuote,\n queueItem: (selector: { index: number } | { id: string }) => {\n if (\"id\" in selector) {\n return queueItemClients.get({ key: selector.id });\n }\n return queueItemClients.get(selector);\n },\n };\n};\n\nconst ComposerClientResource = resource(useComposerClientResource);\n\nconst createSpeechController = (\n notify: (speech: SpeechState | undefined) => void,\n) => {\n let session: { messageId: string; cancel: () => void } | undefined;\n\n const clear = () => {\n if (!session) return;\n session.cancel();\n session = undefined;\n notify(undefined);\n };\n\n return {\n speak: (\n adapter: SpeechSynthesisAdapter,\n message: ExternalThreadMessage,\n ) => {\n clear();\n\n const utterance = adapter.speak(getThreadMessageText(message));\n let unsub: (() => void) | undefined;\n unsub = utterance.subscribe(() => {\n if (utterance.status.type === \"ended\") {\n unsub?.();\n session = undefined;\n notify(undefined);\n } else {\n notify({ messageId: message.id, status: utterance.status });\n }\n });\n\n if (utterance.status.type === \"ended\") {\n unsub();\n notify(undefined);\n return;\n }\n\n session = {\n messageId: message.id,\n cancel: () => {\n unsub!();\n utterance.cancel();\n },\n };\n notify({ messageId: message.id, status: utterance.status });\n },\n stop: () => {\n if (!session) throw new Error(\"No message is being spoken\");\n clear();\n },\n stopMessage: (messageId: string) => {\n if (session?.messageId !== messageId)\n throw new Error(\"Message is not being spoken\");\n clear();\n },\n dispose: clear,\n };\n};\n\nconst dedupeMessagesById = (messages: readonly ExternalThreadMessage[]) => {\n const seenIds = new Set<string>();\n const deduped: ExternalThreadMessage[] = [];\n for (let i = messages.length - 1; i >= 0; i--) {\n const message = messages[i]!;\n if (seenIds.has(message.id)) {\n console.warn(\n `ExternalThread: duplicate message id \"${message.id}\" in the provided messages array; keeping the last occurrence.`,\n );\n continue;\n }\n seenIds.add(message.id);\n deduped.push(message);\n }\n return deduped.length === messages.length ? messages : deduped.reverse();\n};\n\n// External Thread Client\nconst useExternalThread = ({\n messages: messagesProp,\n isRunning = false,\n isLoading = false,\n state: threadState,\n extras,\n isSendDisabled = false,\n onNew,\n onEdit,\n onReload,\n onStartRun,\n onCancel,\n onResume,\n onRefetchThread,\n onAddToolResult,\n onResumeToolCall,\n onLoadExternalState,\n attachmentAdapter,\n feedbackAdapter,\n speechAdapter,\n queue,\n branches,\n onRespondToToolApproval,\n}: ExternalThreadProps): ClientOutput<\"thread\"> => {\n const messages = useMemo(\n () => dedupeMessagesById(messagesProp),\n [messagesProp],\n );\n\n // Local entries are optimistic: they apply only while the message's\n // external submittedFeedback still equals the value seen at click time.\n const [submittedFeedback, setSubmittedFeedback] = useState<\n Record<\n string,\n {\n type: \"positive\" | \"negative\";\n external: \"positive\" | \"negative\" | undefined;\n }\n >\n >({});\n\n const feedbackFor = (msg: ExternalThreadMessage) => {\n const entry = submittedFeedback[msg.id];\n return entry && msg.metadata.submittedFeedback?.type === entry.external\n ? entry.type\n : undefined;\n };\n\n // `messages` changes identity on every streamed token, and this body fans out\n // to one client per message, so pruning during render would re-run the whole\n // fan-out per token. The effect bails out on an unchanged map instead.\n useEffect(() => {\n // eslint-disable-next-line react-hooks/set-state-in-effect\n setSubmittedFeedback((prev) => {\n const live = Object.entries(prev).filter(([id, entry]) => {\n const msg = messages.find((m) => m.id === id);\n return !!msg && msg.metadata.submittedFeedback?.type === entry.external;\n });\n return live.length === Object.keys(prev).length\n ? prev\n : Object.fromEntries(live);\n });\n }, [messages]);\n\n const handleSubmitFeedback = (\n message: ExternalThreadMessage,\n { type }: { type: \"positive\" | \"negative\" },\n ) => {\n if (!feedbackAdapter) throw new Error(\"Feedback adapter not configured\");\n feedbackAdapter.submit({ message, type });\n\n if (message.role === \"assistant\") {\n setSubmittedFeedback((prev) => ({\n ...prev,\n [message.id]: {\n type,\n external: message.metadata.submittedFeedback?.type,\n },\n }));\n }\n };\n\n const [speechState, setSpeech] = useState<SpeechState | undefined>(undefined);\n const [speechController] = useState(() => createSpeechController(setSpeech));\n\n const hasSpeechAdapter = !!speechAdapter;\n const speech = hasSpeechAdapter ? speechState : undefined;\n useEffect(() => {\n if (!hasSpeechAdapter) speechController.dispose();\n }, [hasSpeechAdapter, speechController]);\n\n useEffect(() => () => speechController.dispose(), [speechController]);\n\n const handleSpeak = (message: ExternalThreadMessage) => {\n if (!speechAdapter) throw new Error(\"Speech adapter not configured\");\n speechController.speak(speechAdapter, message);\n };\n\n const handleReload = (messageId: string) => {\n const messageIndex = messages.findIndex((m) => m.id === messageId);\n if (messageIndex === -1) return;\n\n const parentId = messageIndex > 0 ? messages[messageIndex - 1]!.id : null;\n onReload?.(parentId);\n };\n\n const messageClients = useClientLookup(\n messages.map((msg, index) => {\n const props: MessageClientProps = {\n message: msg,\n index,\n parentId: index > 0 ? messages[index - 1]!.id : null,\n onReload: () => handleReload(msg.id),\n queue,\n branches,\n onRespondToToolApproval,\n onAddToolResult,\n onResumeToolCall,\n attachmentAdapter,\n submittedFeedback: feedbackFor(msg),\n onSubmitFeedback: (feedback) => handleSubmitFeedback(msg, feedback),\n speech: speech?.messageId === msg.id ? speech : undefined,\n onSpeak: () => handleSpeak(msg),\n onStopSpeaking: () => speechController.stopMessage(msg.id),\n };\n if (onEdit) props.onEdit = onEdit;\n return withKey(msg.id, MessageClient(props));\n }),\n );\n\n const handleCancelRun = () => {\n // Nothing is aborted without a handler, so pausing the queue would hold\n // the pending items against a run that keeps going.\n if (!onCancel) return;\n\n // Before the run is aborted, so the settle it produces keeps the pending\n // items instead of dispatching the next one at the moment the user\n // stopped.\n queue?.__internal_notifyCancelled?.();\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 hasCancel = !!onCancel;\n const hasRefetchThread = !!onRefetchThread;\n const composerQueue = useMemo(\n (): ExternalThreadQueueAdapter | undefined =>\n queue && {\n ...queue,\n enqueue: (message) =>\n queue.enqueue({ ...message, parentId: message.parentId ?? headId }),\n steer: (message) =>\n queue.steer({ ...message, parentId: message.parentId ?? headId }),\n },\n [queue, headId],\n );\n\n const composerClient = useClientResource(\n ComposerClientResource({\n type: \"thread\",\n canCancel: isRunning && hasCancel,\n isRunning,\n isSendDisabled,\n onCancel: handleCancelRun,\n onSend: handleSendNew,\n queue: composerQueue,\n attachmentAdapter,\n }),\n );\n const suggestionsClient = useClientResource(\n ThreadSuggestions(EMPTY_SUGGESTIONS),\n );\n\n const hasQueue = !!queue;\n const hasBranches = !!branches;\n const hasEdit = !!onEdit;\n const hasReload = !!onReload;\n const hasAttachments = !!attachmentAdapter;\n const hasFeedback = !!feedbackAdapter;\n const hasSpeech = !!speechAdapter;\n const state = useMemo(() => {\n const messageStates = messageClients.state.map((s, idx, arr) => ({\n ...s,\n isLast: idx === arr.length - 1,\n }));\n\n return {\n isEmpty: messages.length === 0 && !isLoading,\n isDisabled: false,\n isLoading,\n isRunning,\n capabilities: {\n edit: hasEdit,\n delete: false,\n reload: hasReload,\n refetchThread: hasRefetchThread,\n cancel: hasCancel,\n speech: hasSpeech,\n attachments: hasAttachments,\n feedback: hasFeedback,\n voice: false,\n switchToBranch: hasBranches,\n switchBranchDuringRun: false,\n unstable_copy: false,\n dictation: false,\n queue: hasQueue,\n },\n messages: messageStates,\n state: threadState ?? {},\n suggestions: EMPTY_SUGGESTIONS,\n extras,\n speech,\n voice: undefined,\n composer: composerClient.state,\n };\n }, [\n messages,\n isRunning,\n isLoading,\n threadState,\n extras,\n hasQueue,\n hasBranches,\n hasEdit,\n hasReload,\n hasCancel,\n hasRefetchThread,\n hasAttachments,\n hasFeedback,\n hasSpeech,\n speech,\n messageClients.state,\n composerClient.state,\n ]);\n\n return {\n getState: () => state,\n composer: () => composerClient.methods,\n suggestions: () => suggestionsClient.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:\n message.parentId === undefined\n ? (messages.at(-1)?.id ?? null)\n : message.parentId,\n sourceId: message.sourceId ?? null,\n role: message.role ?? \"user\",\n content: message.content,\n attachments: message.attachments ?? [],\n metadata: message.metadata ?? { custom: {} },\n runConfig: message.runConfig ?? {},\n startRun: message.startRun,\n };\n if (queue) {\n queue.enqueue(appendMessage);\n } else {\n onNew?.(appendMessage);\n }\n },\n deleteMessage: () => {},\n startRun: () => {\n onStartRun?.();\n },\n resumeRun: () => {\n if (!onResume)\n throw new Error(\n \"Runtime does not support resuming runs (onResume is not set).\",\n );\n onResume();\n },\n cancelRun: handleCancelRun,\n ...(onRefetchThread && { unstable_refetchThread: onRefetchThread }),\n importExternalState: (state: unknown) => {\n if (!onLoadExternalState)\n throw new Error(\n \"Runtime does not support importing external states (onLoadExternalState is not set).\",\n );\n onLoadExternalState(state);\n },\n getModelContext: () => ({ tools: {}, config: {} }),\n export: () => ({ messages: [] }),\n import: () => {},\n reset: () => {},\n message: (selector) => {\n if (\"id\" in selector) {\n return messageClients.get({ key: selector.id });\n }\n return messageClients.get(selector);\n },\n stopSpeaking: speechController.stop,\n connectVoice: () => {},\n disconnectVoice: () => {},\n getVoiceVolume: () => 0,\n subscribeVoiceVolume: () => () => {},\n muteVoice: () => {},\n unmuteVoice: () => {},\n };\n};\n\nexport const ExternalThread = resource(useExternalThread);\n\nattachTransformScopes(useExternalThread, (scopes, parent) => {\n if (!scopes.threads && parent.threads.source === null) {\n const threadElement = scopes.thread as ClientElement<\"thread\">;\n scopes.threads = SingleThreadList({ thread: threadElement });\n // scopes mount in key order; re-declare thread after the threads source it resolves from\n delete scopes.thread;\n scopes.thread = Derived({\n source: \"threads\",\n query: { type: \"main\" },\n get: (aui) => aui.threads.thread(\"main\"),\n });\n }\n\n if (!scopes.threadListItem && parent.threadListItem.source === null) {\n scopes.threadListItem = Derived({\n source: \"threads\",\n query: { type: \"main\" },\n get: (aui) => aui.threads.item(\"main\"),\n });\n }\n\n scopes.composer ??= Derived({\n source: \"thread\",\n query: {},\n get: (aui) => aui.thread.composer(),\n });\n\n if (!scopes.modelContext && parent.modelContext.source === null) {\n scopes.modelContext = ModelContext();\n }\n if (!scopes.tools && parent.tools.source === null) {\n scopes.tools = Tools({});\n }\n if (!scopes.dataRenderers && parent.dataRenderers.source === null) {\n scopes.dataRenderers = DataRenderers();\n }\n if (!scopes.suggestions && parent.suggestions.source === null) {\n scopes.suggestions = Derived({\n source: \"thread\",\n query: {},\n get: (aui) => aui.thread.suggestions(),\n });\n }\n});\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"external-thread.js","names":["useState","useMemo","useEffect","useCallback","useRef","resource","withKey","ClientElement","ClientOutput","useClientLookup","attachTransformScopes","useClientResource","Derived","AppendMessage","MessagePartStatus","ThreadAssistantMessagePart","ThreadUserMessagePart","ThreadMessage","ToolCallMessagePartStatus","Attachment","CreateAttachment","PendingAttachment","isAttachmentComplete","isCreateAttachment","AddToolResultOptions","RespondToToolApprovalOptions","ResumeToolCallOptions","SpeechState","ThreadSuggestion","ExternalThreadQueueAdapter","QueuePlacement","ExternalThreadBranchAdapter","AttachmentAdapter","FeedbackAdapter","SpeechSynthesisAdapter","ToolResponse","ReadonlyJSONValue","QueueItemState","ComposerSendOptions","fileMatchesAccept","getThreadMessageText","resolveToolApprovalResponse","AttachmentAddOperations","drainAttachmentAdd","toMessagePartStatus","generateId","ModelContext","ThreadSuggestions","createTaskDeriver","getTaskKey","TaskClient","Tools","DataRenderers","SingleThreadList","EMPTY_QUEUE_ITEMS","EMPTY_BRANCH_IDS","EMPTY_SUGGESTIONS","ExternalThreadMessage","id","COMPLETE_STATUS","Object","freeze","type","derivePartStatus","message","partIndex","part","status","ExternalThreadProps","messages","isRunning","isLoading","state","extras","isSendDisabled","onNew","onEdit","onReload","parentId","onStartRun","onCancel","onResume","onRefetchThread","Promise","onAddToolResult","options","onResumeToolCall","onLoadExternalState","attachmentAdapter","feedbackAdapter","speechAdapter","queue","branches","onRespondToToolApproval","MessageClientProps","index","submittedFeedback","onSubmitFeedback","feedback","speech","onSpeak","onStopSpeaking","useMessageClient","t0","$","_c","isCopied","setIsCopied","isHovering","setIsHovering","t1","content","map","idx","PartResource","messageId","partClients","t2","attachments","t3","_temp2","attachmentClients","t4","Error","handleBeginEdit","t5","msg","sourceId","handleSendEdit","t6","ComposerClientResource","canCancel","onBeginEdit","onSend","composerClient","branchIds","t7","getBranches","indexOf","branchIndex","branchNumber","branchCount","length","t8","role","metadata","messageWithFeedback","t9","t10","isLast","parts","composer","t11","t12","methods","t13","t14","t15","position","branchId","target","undefined","switchToBranch","t16","selector","get","findIndex","p","toolCallId","t17","selector_0","key","t18","getState","delete","_temp3","reload","speak","stopSpeaking","submitFeedback","getCopyText","attachment","MessageClient","PartResourceProps","usePartResource","result","response","toResponse","toolName","isError","artifact","modelContent","payload","response_0","approval","approved","resolution","resolve","error","reject","addToolResult","resumeToolCall","respondToToolApproval","AttachmentResourceProps","onRemove","useAttachmentResource","remove","AttachmentResource","ComposerClientResourceProps","useQueueItemClient","item","onMove","placement","steer","lane","insertAfter","move","QueueItemClient","useLiveState","initial","setState","ref","Symbol","for","next","current","prev","T","set","const","removeAttachmentThroughAdapter","setAttachments","String","candidate","reason","useComposerClientResource","isEditing","setIsEditing","isEditingRef","text","setText","textRef","setRole","roleRef","runConfig","setRunConfig","runConfigRef","attachmentsRef","quote","setQuote","quoteRef","attachmentAddOperations","messageText","filter","_temp4","_temp5","join","updateFromMessage","cancel","a","removed","all","_temp6","a_1","removePendingAttachments","attachment_0","prev_0","a_2","upsertAttachment","steerItems","laneItems","items","queueItems","queueItemClients","accept","isEmpty","trim","canSend","attachmentAccept","dictation","fileOrAttachment","file","name","contentType","operation","start","add","attachment_1","finish","isCancelled","newAttachment","prev_1","newAttachment_0","prev_2","cancelAll","removed_0","removed_1","t19","opts","currentQuote","currentText","currentRole","currentRunConfig","currentAttachments","isEmpty_0","dispatch","sendAttachments","composedMessage","createdAt","Date","startRun","custom","enqueue","attachment_2","send","then","error_0","prev_3","prev_4","prev_5","console","t20","removed_2","catch","_temp7","t21","t22","t23","addAttachment","clearAttachments","reset","beginEdit","startDictation","_temp8","stopDictation","_temp9","queueItem","createSpeechController","notify","session","clear","adapter","utterance","unsub","subscribe","stop","stopMessage","dispose","dedupeMessagesById","seenIds","Set","deduped","i","has","warn","push","reverse","useExternalThread","messagesProp","threadState","setSubmittedFeedback","entry","external","feedbackFor","live","entries","entry_0","msg_0","find","m","keys","fromEntries","submit","handleSubmitFeedback","speechState","setSpeech","speechController","hasSpeechAdapter","message_0","handleSpeak","messageIndex","m_0","handleReload","msg_1","props","messageClients","taskDeriver","tasks","_temp0","taskClients","__internal_notifyCancelled","handleCancelRun","message_1","at","handleSendNew","headId","hasCancel","hasRefetchThread","t24","message_2","message_3","composerQueue","t25","t26","t27","suggestionsClient","hasQueue","hasBranches","hasEdit","hasReload","hasAttachments","hasFeedback","hasSpeech","t28","_temp1","messageStates","t29","t30","edit","refetchThread","voice","switchBranchDuringRun","unstable_copy","t31","t32","isDisabled","capabilities","suggestions","t33","t34","t35","t36","task_0","task","t37","message_4","appendMessage","t38","t39","t40","unstable_refetchThread","t41","state_0","t42","t43","append","deleteMessage","_temp10","resumeRun","cancelRun","importExternalState","getModelContext","_temp11","export","_temp12","import","_temp13","_temp14","connectVoice","_temp15","disconnectVoice","_temp16","getVoiceVolume","_temp17","subscribeVoiceVolume","_temp19","muteVoice","_temp20","unmuteVoice","_temp21","ExternalThread","scopes","parent","threads","source","threadElement","thread","query","aui","threadListItem","modelContext","tools","dataRenderers","_temp","part_0","a_0","error_1","s","arr","config","_temp18"],"sources":["../../../src/store/clients/external-thread.ts"],"sourcesContent":["import { useState, useMemo, useEffect, useCallback, useRef } from \"react\";\nimport { resource, withKey } from \"@assistant-ui/tap\";\nimport type { ClientElement, ClientOutput } from \"@assistant-ui/store\";\nimport {\n useClientLookup,\n attachTransformScopes,\n useClientResource,\n Derived,\n} from \"@assistant-ui/store/client\";\n\nimport type {\n AppendMessage,\n MessagePartStatus,\n ThreadAssistantMessagePart,\n ThreadUserMessagePart,\n ThreadMessage,\n ToolCallMessagePartStatus,\n} from \"../../types/message\";\nimport type {\n Attachment,\n CreateAttachment,\n PendingAttachment,\n} from \"../../types/attachment\";\nimport {\n isAttachmentComplete,\n isCreateAttachment,\n} from \"../../types/attachment\";\nimport type {\n AddToolResultOptions,\n RespondToToolApprovalOptions,\n ResumeToolCallOptions,\n SpeechState,\n ThreadSuggestion,\n} from \"../../runtime/interfaces/thread-runtime-core\";\nimport type {\n ExternalThreadQueueAdapter,\n QueuePlacement,\n} from \"../../runtime/queue/external-thread-queue-adapter\";\nimport type { ExternalThreadBranchAdapter } from \"../../runtime/branch/external-thread-branch-adapter\";\nimport type { AttachmentAdapter } from \"../../adapters/attachment\";\nimport type { FeedbackAdapter } from \"../../adapters/feedback\";\nimport type { SpeechSynthesisAdapter } from \"../../adapters/speech\";\nimport { ToolResponse } from \"assistant-stream\";\nimport type { ReadonlyJSONValue } from \"assistant-stream/utils\";\nimport type { QueueItemState } from \"../scopes/queue-item\";\nimport type { ComposerSendOptions } from \"../scopes/composer\";\nimport { fileMatchesAccept } from \"../../adapters/attachment\";\nimport { getThreadMessageText } from \"../../utils/text\";\nimport { resolveToolApprovalResponse } from \"../../runtime/utils/resolveToolApprovalResponse\";\nimport {\n AttachmentAddOperations,\n drainAttachmentAdd,\n} from \"../../runtime/utils/attachment-add-operations\";\nimport { toMessagePartStatus } from \"../../utils/normalizePartStatus\";\nimport { generateId } from \"../../utils/id\";\nimport { ModelContext } from \"./model-context-client\";\nimport { ThreadSuggestions } from \"./suggestions\";\nimport { createTaskDeriver, getTaskKey, TaskClient } from \"./thread-tasks\";\nimport { Tools } from \"../../react/client/Tools\";\nimport { DataRenderers } from \"../../react/client/DataRenderers\";\nimport { SingleThreadList } from \"./single-thread-list\";\n\nconst EMPTY_QUEUE_ITEMS: readonly QueueItemState[] = [];\nconst EMPTY_BRANCH_IDS: readonly string[] = [];\nconst EMPTY_SUGGESTIONS: readonly ThreadSuggestion[] = [];\n\nexport type ExternalThreadMessage = ThreadMessage & {\n id: string;\n};\n\nconst COMPLETE_STATUS: MessagePartStatus = Object.freeze({\n type: \"complete\",\n});\n\nconst derivePartStatus = (\n message: ExternalThreadMessage,\n partIndex: number,\n part: ThreadAssistantMessagePart | ThreadUserMessagePart,\n): ToolCallMessagePartStatus => {\n if (!message.status) return COMPLETE_STATUS;\n return toMessagePartStatus(message, partIndex, part);\n};\n\nexport type ExternalThreadProps = {\n messages: readonly ExternalThreadMessage[];\n isRunning?: boolean;\n isLoading?: boolean | undefined;\n state?: ReadonlyJSONValue | undefined;\n extras?: unknown;\n /**\n * Whether sending new messages is currently disabled. When `true`, the\n * thread composer's input remains usable but `send()` is a no-op and\n * `composer.canSend` is `false`. Edit composers (saving message edits)\n * intentionally ignore this flag.\n */\n isSendDisabled?: boolean;\n /**\n * Callback for new messages (non-queue runtimes).\n * @note Unused when `queue` is provided — new messages are routed through `queue.enqueue` instead.\n */\n onNew?: (message: AppendMessage) => void;\n onEdit?: (message: AppendMessage) => void;\n onReload?: (parentId: string | null) => void;\n onStartRun?: () => void;\n onCancel?: () => void;\n onResume?: (() => void) | undefined;\n /**\n * Handler for re-fetching this thread's state in place, driving\n * `threads.reloadMainThread()`. Unrelated to `onReload`, which re-generates\n * an assistant message. Presence enables the `refetchThread` capability;\n * rejections propagate to the caller.\n */\n onRefetchThread?: (() => Promise<void>) | undefined;\n onAddToolResult?: ((options: AddToolResultOptions) => void) | undefined;\n /** Callback for resuming a tool call that is waiting for human input. */\n onResumeToolCall?: ((options: ResumeToolCallOptions) => void) | undefined;\n onLoadExternalState?: ((state: unknown) => void) | undefined;\n attachmentAdapter?: AttachmentAdapter | undefined;\n feedbackAdapter?: FeedbackAdapter | undefined;\n speechAdapter?: SpeechSynthesisAdapter | undefined;\n /** Queue adapter for runtimes that support message queuing and steering. */\n queue?: ExternalThreadQueueAdapter;\n /** Branch adapter for runtimes that track sibling variants of messages. */\n branches?: ExternalThreadBranchAdapter;\n /** Callback for tool approval decisions. Absent: responding to an approval throws a capability error. */\n onRespondToToolApproval?: (\n options: RespondToToolApprovalOptions,\n ) => void | Promise<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 | Promise<void>)\n | undefined;\n onAddToolResult?: ((options: AddToolResultOptions) => void) | undefined;\n onResumeToolCall?: ((options: ResumeToolCallOptions) => void) | undefined;\n attachmentAdapter?: AttachmentAdapter | undefined;\n submittedFeedback: \"positive\" | \"negative\" | undefined;\n onSubmitFeedback: (feedback: { type: \"positive\" | \"negative\" }) => void;\n speech: SpeechState | undefined;\n onSpeak: () => void;\n onStopSpeaking: () => void;\n};\n\n// Message Client - minimal implementation\nconst useMessageClient = ({\n message,\n index,\n parentId,\n onEdit,\n onReload,\n queue,\n branches,\n onRespondToToolApproval,\n onAddToolResult,\n onResumeToolCall,\n attachmentAdapter,\n submittedFeedback,\n onSubmitFeedback,\n speech,\n onSpeak,\n onStopSpeaking,\n}: MessageClientProps): ClientOutput<\"message\"> => {\n const [isCopied, setIsCopied] = useState(false);\n const [isHovering, setIsHovering] = useState(false);\n\n const partClients = useClientLookup(\n message.content.map((part, idx) =>\n withKey(\n idx,\n PartResource({\n part,\n status: derivePartStatus(message, idx, part),\n messageId: message.id,\n onRespondToToolApproval,\n onAddToolResult,\n onResumeToolCall,\n }),\n ),\n ),\n );\n\n const attachmentClients = useClientLookup(\n (message.attachments ?? []).map((attachment) =>\n withKey(\n attachment.id,\n AttachmentResource({\n attachment,\n onRemove: () => {},\n }),\n ),\n ),\n );\n\n const handleBeginEdit = () => {\n if (!onEdit) throw new Error(\"Runtime does not support editing.\");\n };\n\n const handleSendEdit = (msg: AppendMessage) => {\n if (!onEdit) throw new Error(\"Runtime does not support editing.\");\n onEdit({\n ...msg,\n parentId,\n sourceId: message.id,\n });\n };\n\n const composerClient = useClientResource(\n ComposerClientResource({\n type: \"edit\",\n canCancel: true,\n onBeginEdit: handleBeginEdit,\n onSend: handleSendEdit,\n message,\n queue,\n attachmentAdapter,\n }),\n );\n\n const branchIds = branches?.getBranches(message.id) ?? EMPTY_BRANCH_IDS;\n const branchIndex = branchIds.indexOf(message.id);\n const branchNumber = branchIndex === -1 ? 1 : branchIndex + 1;\n const branchCount = branchIndex === -1 ? 1 : branchIds.length;\n\n const state = useMemo(() => {\n const messageWithFeedback: ExternalThreadMessage =\n submittedFeedback && message.role === \"assistant\"\n ? {\n ...message,\n metadata: {\n ...message.metadata,\n submittedFeedback: { type: submittedFeedback },\n },\n }\n : message;\n return {\n ...messageWithFeedback,\n attachments: message.attachments ?? [],\n parentId,\n isLast: false, // Will be set by thread\n branchNumber,\n branchCount,\n speech,\n parts: partClients.state,\n isCopied,\n isHovering,\n index,\n composer: composerClient.state,\n };\n }, [\n message,\n parentId,\n isCopied,\n isHovering,\n index,\n composerClient.state,\n partClients.state,\n branchNumber,\n branchCount,\n submittedFeedback,\n speech,\n ]);\n\n return {\n getState: () => state,\n composer: () => composerClient.methods,\n delete: () => {},\n reload: () => {\n onReload?.();\n },\n speak: onSpeak,\n stopSpeaking: onStopSpeaking,\n submitFeedback: onSubmitFeedback,\n switchToBranch: ({ position, branchId }) => {\n if (!branches) return;\n const target =\n branchId ??\n (branchIndex === -1\n ? undefined\n : position === \"previous\"\n ? branchIds[branchIndex - 1]\n : position === \"next\"\n ? branchIds[branchIndex + 1]\n : undefined);\n if (target !== undefined && target !== message.id)\n branches.switchToBranch(target);\n },\n getCopyText: () => getThreadMessageText(message),\n part: (selector) => {\n if (\"index\" in selector) {\n return partClients.get(selector);\n }\n const partIndex = state.parts.findIndex(\n (p) => p.type === \"tool-call\" && p.toolCallId === selector.toolCallId,\n );\n return partClients.get({ index: partIndex });\n },\n attachment: (selector) => {\n if (\"id\" in selector) {\n return attachmentClients.get({ key: selector.id });\n }\n return attachmentClients.get(selector);\n },\n setIsCopied,\n setIsHovering,\n };\n};\n\nconst MessageClient = resource(useMessageClient);\n\ntype PartResourceProps = {\n part: ThreadAssistantMessagePart | ThreadUserMessagePart;\n status: ToolCallMessagePartStatus;\n messageId: string;\n onRespondToToolApproval?:\n | ((options: RespondToToolApprovalOptions) => void | Promise<void>)\n | undefined;\n onAddToolResult?: ((options: AddToolResultOptions) => void) | undefined;\n onResumeToolCall?: ((options: ResumeToolCallOptions) => void) | undefined;\n};\n\n// Part Client - minimal implementation\nconst usePartResource = ({\n part,\n status,\n messageId,\n onRespondToToolApproval,\n onAddToolResult,\n onResumeToolCall,\n}: PartResourceProps): ClientOutput<\"part\"> => {\n const state = useMemo(\n () => ({ ...part, status: status as MessagePartStatus }),\n [part, status],\n );\n\n return {\n getState: () => state,\n addToolResult: (result) => {\n if (!onAddToolResult)\n throw new Error(\n \"Runtime does not support tool results (onAddToolResult is not set).\",\n );\n if (part.type !== \"tool-call\")\n throw new Error(\"Tried to add tool result on non-tool message part\");\n\n const response = ToolResponse.toResponse(result);\n onAddToolResult({\n messageId,\n toolName: part.toolName,\n toolCallId: part.toolCallId,\n result: response.result as ReadonlyJSONValue,\n isError: response.isError,\n ...(response.artifact !== undefined && { artifact: response.artifact }),\n ...(response.modelContent !== undefined && {\n modelContent: response.modelContent,\n }),\n });\n },\n resumeToolCall: (payload) => {\n if (!onResumeToolCall)\n throw new Error(\n \"Runtime does not support resuming tool calls (onResumeToolCall is not set).\",\n );\n if (part.type !== \"tool-call\")\n throw new Error(\"Tried to resume tool call on non-tool message part\");\n\n onResumeToolCall({ toolCallId: part.toolCallId, payload });\n },\n respondToToolApproval: (response) => {\n if (!onRespondToToolApproval)\n throw new Error(\"Runtime does not support tool approvals.\");\n\n if (part.type !== \"tool-call\")\n throw new Error(\n \"Tried to respond to tool approval on non-tool message part\",\n );\n\n if (\n !part.approval ||\n part.approval.approved !== undefined ||\n part.approval.resolution !== undefined\n )\n throw new Error(\"Tool call has no pending approval\");\n\n const options = resolveToolApprovalResponse(part.approval, response);\n try {\n return Promise.resolve(onRespondToToolApproval(options));\n } catch (error) {\n return Promise.reject(error);\n }\n },\n };\n};\n\nconst PartResource = resource(usePartResource);\n\ntype AttachmentResourceProps = {\n attachment: Attachment;\n onRemove?: () => void | Promise<void>;\n};\n\n// Attachment Client - minimal implementation\nconst useAttachmentResource = ({\n attachment,\n onRemove,\n}: AttachmentResourceProps): ClientOutput<\"attachment\"> => {\n return {\n getState: () => attachment,\n remove: async () => {\n await onRemove?.();\n },\n };\n};\n\nconst AttachmentResource = resource(useAttachmentResource);\n\ntype ComposerClientResourceProps = {\n type: \"thread\" | \"edit\";\n canCancel: boolean;\n isRunning?: boolean;\n isSendDisabled?: boolean;\n onCancel?: () => void;\n onBeginEdit?: () => void;\n onSend?: (message: AppendMessage) => void;\n message?: ExternalThreadMessage;\n queue?: ExternalThreadQueueAdapter | undefined;\n attachmentAdapter?: AttachmentAdapter | undefined;\n};\n\nconst useQueueItemClient = ({\n item,\n onMove,\n onRemove,\n}: {\n item: QueueItemState;\n onMove: (placement: QueuePlacement) => void;\n onRemove: () => void;\n}): ClientOutput<\"queueItem\"> => {\n return {\n getState: () => item,\n steer: () => onMove({ lane: \"steer\", insertAfter: null }),\n move: onMove,\n remove: onRemove,\n };\n};\n\nconst QueueItemClient = resource(useQueueItemClient);\n\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// A try/catch inside the resource makes the React Compiler bail out of the\n// whole hook, so the adapter call and its failure status live at module scope.\nconst removeAttachmentThroughAdapter = async (\n attachment: Attachment,\n attachmentAdapter: AttachmentAdapter | undefined,\n setAttachments: (\n next:\n | readonly Attachment[]\n | ((prev: readonly Attachment[]) => readonly Attachment[]),\n ) => void,\n) => {\n try {\n await attachmentAdapter?.remove(attachment);\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n setAttachments((prev) =>\n prev.map((candidate) =>\n candidate.id === attachment.id && !isAttachmentComplete(candidate)\n ? {\n ...candidate,\n status: { type: \"incomplete\", reason: \"error\", message },\n }\n : candidate,\n ),\n );\n throw error;\n }\n};\n\n// Composer Client - minimal implementation\nconst useComposerClientResource = ({\n type,\n canCancel,\n isRunning = false,\n isSendDisabled = false,\n onCancel,\n onBeginEdit,\n onSend,\n message,\n queue,\n attachmentAdapter,\n}: ComposerClientResourceProps): ClientOutput<\"composer\"> => {\n const [isEditing, setIsEditing, isEditingRef] = useLiveState(\n type === \"thread\",\n );\n const [text, setText, textRef] = useLiveState(\"\");\n const [role, setRole, roleRef] = useLiveState<\n \"user\" | \"assistant\" | \"system\"\n >(\"user\");\n const [runConfig, setRunConfig, runConfigRef] = useLiveState<\n Record<string, unknown>\n >({});\n const [attachments, setAttachments, attachmentsRef] = useLiveState<\n readonly Attachment[]\n >([]);\n const [quote, setQuote, quoteRef] = useLiveState<\n { readonly text: string; readonly messageId: string } | undefined\n >(undefined);\n const attachmentAddOperations = useMemo(\n () => new AttachmentAddOperations(),\n [],\n );\n\n const updateFromMessage = () => {\n if (!message) return;\n const messageText = message.content\n .filter((part) => part.type === \"text\")\n .map((part) => part.text)\n .join(\"\\n\\n\");\n setText(messageText);\n setRole(message.role);\n setAttachments(message.attachments ?? []);\n };\n\n const attachmentClients = useClientLookup(\n attachments.map((attachment) =>\n withKey(\n attachment.id,\n AttachmentResource({\n attachment,\n onRemove: async () => {\n attachmentAddOperations.cancel(attachment.id);\n if (!isAttachmentComplete(attachment)) {\n await removeAttachmentThroughAdapter(\n attachment,\n attachmentAdapter,\n setAttachments,\n );\n }\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(async (a) => attachmentAdapter.remove(a)),\n );\n };\n\n const upsertAttachment = (attachment: Attachment) => {\n setAttachments((prev) => {\n const idx = prev.findIndex((a) => a.id === attachment.id);\n if (idx === -1) return [...prev, attachment];\n const next = [...prev];\n next[idx] = attachment;\n return next;\n });\n };\n\n const steerItems = queue?.steerItems ?? EMPTY_QUEUE_ITEMS;\n const laneItems = queue?.items ?? EMPTY_QUEUE_ITEMS;\n const queueItems = useMemo(\n () =>\n steerItems.length === 0\n ? laneItems\n : laneItems.length === 0\n ? steerItems\n : [...steerItems, ...laneItems],\n [steerItems, laneItems],\n );\n const queueItemClients = useClientLookup(\n queueItems.map((item) =>\n withKey(\n item.id,\n QueueItemClient({\n item,\n onMove: (placement) => queue?.move(item.id, placement),\n onRemove: () => queue?.remove(item.id),\n }),\n ),\n ),\n );\n\n const state = useMemo(() => {\n const isEmpty = !text.trim() && !attachments.length;\n return {\n text,\n role,\n attachments: attachmentClients.state,\n runConfig,\n isEditing,\n canCancel,\n canSend: isEditing && !isEmpty && !isSendDisabled,\n attachmentAccept: attachmentAdapter?.accept ?? \"*\",\n isEmpty,\n type,\n dictation: undefined,\n quote,\n queue: queueItems,\n };\n }, [\n text,\n role,\n attachmentClients.state,\n runConfig,\n isEditing,\n canCancel,\n isSendDisabled,\n type,\n attachments.length,\n quote,\n queueItems,\n attachmentAdapter?.accept,\n ]);\n\n return {\n getState: () => state,\n setText,\n setRole,\n setRunConfig,\n addAttachment: async (fileOrAttachment: File | CreateAttachment) => {\n if (attachmentAdapter) {\n const file = isCreateAttachment(fileOrAttachment)\n ? {\n name: fileOrAttachment.name,\n type: fileOrAttachment.contentType ?? \"\",\n }\n : { name: fileOrAttachment.name, type: fileOrAttachment.type };\n if (!fileMatchesAccept(file, attachmentAdapter.accept))\n throw new Error(\n `File type ${file.type || \"unknown\"} is not accepted. Accepted types: ${attachmentAdapter.accept}`,\n );\n }\n if (!isCreateAttachment(fileOrAttachment) && attachmentAdapter) {\n const operation = attachmentAddOperations.start();\n try {\n await drainAttachmentAdd(\n attachmentAdapter.add({ file: fileOrAttachment }),\n (attachment) => {\n if (!attachmentAddOperations.accept(operation, attachment.id))\n return false;\n upsertAttachment(attachment);\n return true;\n },\n );\n attachmentAddOperations.finish(operation);\n } catch (error) {\n attachmentAddOperations.finish(operation);\n if (!attachmentAddOperations.isCancelled(operation)) throw error;\n }\n } else if (!isCreateAttachment(fileOrAttachment)) {\n const newAttachment: Attachment = {\n id: generateId(),\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 ?? generateId(),\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 attachmentAddOperations.cancelAll();\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 attachmentAddOperations.cancelAll();\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 currentRole = roleRef.current;\n const currentRunConfig = runConfigRef.current;\n const currentAttachments = attachmentsRef.current;\n const isEmpty = !currentText.trim() && !currentAttachments.length;\n if (!isEditingRef.current) throw new Error(\"Composer is not available\");\n if (isEmpty || isSendDisabled) return;\n\n attachmentAddOperations.cancelAll();\n setText(\"\");\n setAttachments([]);\n setQuote(undefined);\n\n const dispatch = (sendAttachments: readonly Attachment[]) => {\n const composedMessage: AppendMessage = {\n role: currentRole,\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: currentRunConfig,\n startRun: opts?.startRun,\n metadata: {\n custom: { ...(currentQuote ? { quote: currentQuote } : {}) },\n },\n };\n // edit sends carry a sourceId contract; only thread sends queue\n if (queue && type === \"thread\") {\n if (opts?.steer ?? isRunning) queue.steer(composedMessage);\n else queue.enqueue(composedMessage);\n } else {\n onSend?.(composedMessage);\n }\n if (type === \"edit\") setIsEditing(false);\n };\n\n if (attachmentAdapter && currentAttachments.length > 0) {\n void Promise.all(\n currentAttachments.map((attachment) =>\n attachment.status.type === \"complete\"\n ? attachment\n : attachmentAdapter.send(attachment as PendingAttachment),\n ),\n ).then(dispatch, (error) => {\n // Upload failed: merge the failed send back into the draft.\n setText((prev) =>\n currentText && prev\n ? currentText + \"\\n\" + prev\n : currentText || prev,\n );\n setQuote((prev) => prev ?? currentQuote);\n setAttachments((prev) => [...currentAttachments, ...prev]);\n console.error(\"Failed to send attachments\", error);\n });\n } else {\n dispatch(currentAttachments);\n }\n },\n cancel: () => {\n // An edit session ends here, so its in-flight adapter adds must not\n // land in a later session; the thread composer's cancel stops the run\n // and leaves the draft (and its pending adds) alone.\n if (type === \"edit\") {\n attachmentAddOperations.cancelAll();\n const removed = attachmentsRef.current;\n setAttachments([]);\n removePendingAttachments(removed).catch((error) => {\n console.error(\"Failed to remove cancelled edit attachments\", error);\n });\n }\n onCancel?.();\n if (type === \"edit\") setIsEditing(false);\n },\n beginEdit: () => {\n onBeginEdit?.();\n if (type === \"thread\") return;\n if (isEditingRef.current) throw new Error(\"Edit already in progress\");\n setIsEditing(true);\n updateFromMessage();\n },\n startDictation: () => {},\n stopDictation: () => {},\n setQuote,\n queueItem: (selector: { index: number } | { id: string }) => {\n if (\"id\" in selector) {\n return queueItemClients.get({ key: selector.id });\n }\n return queueItemClients.get(selector);\n },\n };\n};\n\nconst ComposerClientResource = resource(useComposerClientResource);\n\nconst createSpeechController = (\n notify: (speech: SpeechState | undefined) => void,\n) => {\n let session: { messageId: string; cancel: () => void } | undefined;\n\n const clear = () => {\n if (!session) return;\n session.cancel();\n session = undefined;\n notify(undefined);\n };\n\n return {\n speak: (\n adapter: SpeechSynthesisAdapter,\n message: ExternalThreadMessage,\n ) => {\n clear();\n\n const utterance = adapter.speak(getThreadMessageText(message));\n let unsub: (() => void) | undefined;\n unsub = utterance.subscribe(() => {\n if (utterance.status.type === \"ended\") {\n unsub?.();\n session = undefined;\n notify(undefined);\n } else {\n notify({ messageId: message.id, status: utterance.status });\n }\n });\n\n if (utterance.status.type === \"ended\") {\n unsub();\n notify(undefined);\n return;\n }\n\n session = {\n messageId: message.id,\n cancel: () => {\n unsub!();\n utterance.cancel();\n },\n };\n notify({ messageId: message.id, status: utterance.status });\n },\n stop: () => {\n if (!session) throw new Error(\"No message is being spoken\");\n clear();\n },\n stopMessage: (messageId: string) => {\n if (session?.messageId !== messageId)\n throw new Error(\"Message is not being spoken\");\n clear();\n },\n dispose: clear,\n };\n};\n\nconst dedupeMessagesById = (messages: readonly ExternalThreadMessage[]) => {\n const seenIds = new Set<string>();\n const deduped: ExternalThreadMessage[] = [];\n for (let i = messages.length - 1; i >= 0; i--) {\n const message = messages[i]!;\n if (seenIds.has(message.id)) {\n console.warn(\n `ExternalThread: duplicate message id \"${message.id}\" in the provided messages array; keeping the last occurrence.`,\n );\n continue;\n }\n seenIds.add(message.id);\n deduped.push(message);\n }\n return deduped.length === messages.length ? messages : deduped.reverse();\n};\n\n// External Thread Client\nconst useExternalThread = ({\n messages: messagesProp,\n isRunning = false,\n isLoading = false,\n state: threadState,\n extras,\n isSendDisabled = false,\n onNew,\n onEdit,\n onReload,\n onStartRun,\n onCancel,\n onResume,\n onRefetchThread,\n onAddToolResult,\n onResumeToolCall,\n onLoadExternalState,\n attachmentAdapter,\n feedbackAdapter,\n speechAdapter,\n queue,\n branches,\n onRespondToToolApproval,\n}: ExternalThreadProps): ClientOutput<\"thread\"> => {\n const messages = useMemo(\n () => dedupeMessagesById(messagesProp),\n [messagesProp],\n );\n\n // Local entries are optimistic: they apply only while the message's\n // external submittedFeedback still equals the value seen at click time.\n const [submittedFeedback, setSubmittedFeedback] = useState<\n Record<\n string,\n {\n type: \"positive\" | \"negative\";\n external: \"positive\" | \"negative\" | undefined;\n }\n >\n >({});\n\n const feedbackFor = (msg: ExternalThreadMessage) => {\n const entry = submittedFeedback[msg.id];\n return entry && msg.metadata.submittedFeedback?.type === entry.external\n ? entry.type\n : undefined;\n };\n\n // `messages` changes identity on every streamed token, and this body fans out\n // to one client per message, so pruning during render would re-run the whole\n // fan-out per token. The effect bails out on an unchanged map instead.\n useEffect(() => {\n // eslint-disable-next-line react-hooks/set-state-in-effect\n setSubmittedFeedback((prev) => {\n const live = Object.entries(prev).filter(([id, entry]) => {\n const msg = messages.find((m) => m.id === id);\n return !!msg && msg.metadata.submittedFeedback?.type === entry.external;\n });\n return live.length === Object.keys(prev).length\n ? prev\n : Object.fromEntries(live);\n });\n }, [messages]);\n\n const handleSubmitFeedback = (\n message: ExternalThreadMessage,\n { type }: { type: \"positive\" | \"negative\" },\n ) => {\n if (!feedbackAdapter) throw new Error(\"Feedback adapter not configured\");\n feedbackAdapter.submit({ message, type });\n\n if (message.role === \"assistant\") {\n setSubmittedFeedback((prev) => ({\n ...prev,\n [message.id]: {\n type,\n external: message.metadata.submittedFeedback?.type,\n },\n }));\n }\n };\n\n const [speechState, setSpeech] = useState<SpeechState | undefined>(undefined);\n const [speechController] = useState(() => createSpeechController(setSpeech));\n\n const hasSpeechAdapter = !!speechAdapter;\n const speech = hasSpeechAdapter ? speechState : undefined;\n useEffect(() => {\n if (!hasSpeechAdapter) speechController.dispose();\n }, [hasSpeechAdapter, speechController]);\n\n useEffect(() => () => speechController.dispose(), [speechController]);\n\n const handleSpeak = (message: ExternalThreadMessage) => {\n if (!speechAdapter) throw new Error(\"Speech adapter not configured\");\n speechController.speak(speechAdapter, message);\n };\n\n const handleReload = (messageId: string) => {\n const messageIndex = messages.findIndex((m) => m.id === messageId);\n if (messageIndex === -1) return;\n\n const parentId = messageIndex > 0 ? messages[messageIndex - 1]!.id : null;\n onReload?.(parentId);\n };\n\n const messageClients = useClientLookup(\n messages.map((msg, index) => {\n const props: MessageClientProps = {\n message: msg,\n index,\n parentId: index > 0 ? messages[index - 1]!.id : null,\n onReload: () => handleReload(msg.id),\n queue,\n branches,\n onRespondToToolApproval,\n onAddToolResult,\n onResumeToolCall,\n attachmentAdapter,\n submittedFeedback: feedbackFor(msg),\n onSubmitFeedback: (feedback) => handleSubmitFeedback(msg, feedback),\n speech: speech?.messageId === msg.id ? speech : undefined,\n onSpeak: () => handleSpeak(msg),\n onStopSpeaking: () => speechController.stopMessage(msg.id),\n };\n if (onEdit) props.onEdit = onEdit;\n return withKey(msg.id, MessageClient(props));\n }),\n );\n\n const taskDeriver = useMemo(() => createTaskDeriver(), []);\n const tasks = useMemo(() => taskDeriver(messages), [taskDeriver, messages]);\n const taskClients = useClientLookup(\n tasks.map((task) =>\n withKey(getTaskKey(task), TaskClient({ task }), [task]),\n ),\n );\n\n const handleCancelRun = () => {\n // Nothing is aborted without a handler, so pausing the queue would hold\n // the pending items against a run that keeps going.\n if (!onCancel) return;\n\n // Before the run is aborted, so the settle it produces keeps the pending\n // items instead of dispatching the next one at the moment the user\n // stopped.\n queue?.__internal_notifyCancelled?.();\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 hasCancel = !!onCancel;\n const hasRefetchThread = !!onRefetchThread;\n const composerQueue = useMemo(\n (): ExternalThreadQueueAdapter | undefined =>\n queue && {\n ...queue,\n enqueue: (message) =>\n queue.enqueue({ ...message, parentId: message.parentId ?? headId }),\n steer: (message) =>\n queue.steer({ ...message, parentId: message.parentId ?? headId }),\n },\n [queue, headId],\n );\n\n const composerClient = useClientResource(\n ComposerClientResource({\n type: \"thread\",\n canCancel: isRunning && hasCancel,\n isRunning,\n isSendDisabled,\n onCancel: handleCancelRun,\n onSend: handleSendNew,\n queue: composerQueue,\n attachmentAdapter,\n }),\n );\n const suggestionsClient = useClientResource(\n ThreadSuggestions(EMPTY_SUGGESTIONS),\n );\n\n const hasQueue = !!queue;\n const hasBranches = !!branches;\n const hasEdit = !!onEdit;\n const hasReload = !!onReload;\n const hasAttachments = !!attachmentAdapter;\n const hasFeedback = !!feedbackAdapter;\n const hasSpeech = !!speechAdapter;\n const state = useMemo(() => {\n const messageStates = messageClients.state.map((s, idx, arr) => ({\n ...s,\n isLast: idx === arr.length - 1,\n }));\n\n return {\n isEmpty: messages.length === 0 && !isLoading,\n isDisabled: false,\n isLoading,\n isRunning,\n capabilities: {\n edit: hasEdit,\n delete: false,\n reload: hasReload,\n refetchThread: hasRefetchThread,\n cancel: hasCancel,\n speech: hasSpeech,\n attachments: hasAttachments,\n feedback: hasFeedback,\n voice: false,\n switchToBranch: hasBranches,\n switchBranchDuringRun: false,\n unstable_copy: false,\n dictation: false,\n queue: hasQueue,\n },\n messages: messageStates,\n tasks,\n state: threadState ?? {},\n suggestions: EMPTY_SUGGESTIONS,\n extras,\n speech,\n voice: undefined,\n composer: composerClient.state,\n };\n }, [\n messages,\n isRunning,\n isLoading,\n threadState,\n extras,\n hasQueue,\n hasBranches,\n hasEdit,\n hasReload,\n hasCancel,\n hasRefetchThread,\n hasAttachments,\n hasFeedback,\n hasSpeech,\n speech,\n messageClients.state,\n composerClient.state,\n tasks,\n ]);\n\n return {\n getState: () => state,\n composer: () => composerClient.methods,\n suggestions: () => suggestionsClient.methods,\n task: (selector) => {\n if (\"id\" in selector) {\n const task = tasks.find((candidate) => candidate.id === selector.id);\n return taskClients.get({ key: task ? getTaskKey(task) : selector.id });\n }\n return taskClients.get(selector);\n },\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:\n message.parentId === undefined\n ? (messages.at(-1)?.id ?? null)\n : message.parentId,\n sourceId: message.sourceId ?? null,\n role: message.role ?? \"user\",\n content: message.content,\n attachments: message.attachments ?? [],\n metadata: message.metadata ?? { custom: {} },\n runConfig: message.runConfig ?? {},\n startRun: message.startRun,\n };\n if (queue) {\n queue.enqueue(appendMessage);\n } else {\n onNew?.(appendMessage);\n }\n },\n deleteMessage: () => {},\n startRun: () => {\n onStartRun?.();\n },\n resumeRun: () => {\n if (!onResume)\n throw new Error(\n \"Runtime does not support resuming runs (onResume is not set).\",\n );\n onResume();\n },\n cancelRun: handleCancelRun,\n ...(onRefetchThread && { unstable_refetchThread: onRefetchThread }),\n importExternalState: (state: unknown) => {\n if (!onLoadExternalState)\n throw new Error(\n \"Runtime does not support importing external states (onLoadExternalState is not set).\",\n );\n onLoadExternalState(state);\n },\n getModelContext: () => ({ tools: {}, config: {} }),\n export: () => ({ messages: [] }),\n import: () => {},\n reset: () => {},\n message: (selector) => {\n if (\"id\" in selector) {\n return messageClients.get({ key: selector.id });\n }\n return messageClients.get(selector);\n },\n stopSpeaking: speechController.stop,\n connectVoice: () => {},\n disconnectVoice: () => {},\n getVoiceVolume: () => 0,\n subscribeVoiceVolume: () => () => {},\n muteVoice: () => {},\n unmuteVoice: () => {},\n };\n};\n\nexport const ExternalThread = resource(useExternalThread);\n\nattachTransformScopes(useExternalThread, (scopes, parent) => {\n if (!scopes.threads && parent.threads.source === null) {\n const threadElement = scopes.thread as ClientElement<\"thread\">;\n scopes.threads = SingleThreadList({ thread: threadElement });\n // scopes mount in key order; re-declare thread after the threads source it resolves from\n delete scopes.thread;\n scopes.thread = Derived({\n source: \"threads\",\n query: { type: \"main\" },\n get: (aui) => aui.threads.thread(\"main\"),\n });\n }\n\n if (!scopes.threadListItem && parent.threadListItem.source === null) {\n scopes.threadListItem = Derived({\n source: \"threads\",\n query: { type: \"main\" },\n get: (aui) => aui.threads.item(\"main\"),\n });\n }\n\n scopes.composer ??= Derived({\n source: \"thread\",\n query: {},\n get: (aui) => aui.thread.composer(),\n });\n\n if (!scopes.modelContext && parent.modelContext.source === null) {\n scopes.modelContext = ModelContext();\n }\n if (!scopes.tools && parent.tools.source === null) {\n scopes.tools = Tools({});\n }\n if (!scopes.dataRenderers && parent.dataRenderers.source === null) {\n scopes.dataRenderers = DataRenderers();\n }\n if (!scopes.suggestions && parent.suggestions.source === null) {\n scopes.suggestions = Derived({\n source: \"thread\",\n query: {},\n get: (aui) => aui.thread.suggestions(),\n });\n }\n});\n"],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { ThreadMessage } from "../../types/message.js";
|
|
2
|
+
import { TaskState } from "../scopes/task.js";
|
|
3
|
+
import { ClientOutput } from "@assistant-ui/store";
|
|
4
|
+
//#region src/store/clients/thread-tasks.d.ts
|
|
5
|
+
/** Lookup key for a task client: its document-order index path, unique by construction where ids from nested payloads are not. */
|
|
6
|
+
declare const getTaskKey: (task: TaskState) => string;
|
|
7
|
+
declare const createTaskDeriver: () => (messages: readonly ThreadMessage[]) => readonly TaskState[];
|
|
8
|
+
declare const TaskClient: import("@assistant-ui/tap").Resource<ClientOutput<"task">, [{
|
|
9
|
+
task: TaskState;
|
|
10
|
+
}]>;
|
|
11
|
+
//#endregion
|
|
12
|
+
export { TaskClient, createTaskDeriver, getTaskKey };
|
|
13
|
+
//# sourceMappingURL=thread-tasks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"thread-tasks.d.ts","names":[],"sources":["../../../src/store/clients/thread-tasks.ts"],"mappings":";;;;;cAiCa,aAAc,MAAM;cAWpB,0BAIH,mBAAmB,6BAA2B;cAyF3C,wCAAU,SAAA;EALf,MAAA"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { COMPLETE_STATUS, toMessagePartStatus } from "../../utils/normalizePartStatus.js";
|
|
2
|
+
import { resource } from "@assistant-ui/tap";
|
|
3
|
+
//#region src/store/clients/thread-tasks.ts
|
|
4
|
+
const getStatusReason = (status) => "reason" in status ? status.reason : void 0;
|
|
5
|
+
const getStatusError = (status) => "error" in status ? status.error : void 0;
|
|
6
|
+
const MAX_TASK_DEPTH = 32;
|
|
7
|
+
const taskKeys = /* @__PURE__ */ new WeakMap();
|
|
8
|
+
/** Lookup key for a task client: its document-order index path, unique by construction where ids from nested payloads are not. */
|
|
9
|
+
const getTaskKey = (task) => taskKeys.get(task) ?? task.id;
|
|
10
|
+
const resolveStatus = (message, partIndex, part) => "status" in message && message.status ? toMessagePartStatus(message, partIndex, part) : COMPLETE_STATUS;
|
|
11
|
+
const createTaskDeriver = () => {
|
|
12
|
+
let previous = [];
|
|
13
|
+
let previousEntries = /* @__PURE__ */ new Map();
|
|
14
|
+
return (messages) => {
|
|
15
|
+
const tasks = [];
|
|
16
|
+
const entries = /* @__PURE__ */ new Map();
|
|
17
|
+
let allEntriesReused = true;
|
|
18
|
+
const visit = (threadMessages, parentTaskId, depth, path) => {
|
|
19
|
+
if (depth > MAX_TASK_DEPTH) return;
|
|
20
|
+
for (const [messageIndex, message] of threadMessages.entries()) for (const [partIndex, part] of message.content.entries()) {
|
|
21
|
+
if (part.type !== "tool-call" || part.messages === void 0) continue;
|
|
22
|
+
const nestedMessages = part.messages;
|
|
23
|
+
const status = resolveStatus(message, partIndex, part);
|
|
24
|
+
const statusReason = getStatusReason(status);
|
|
25
|
+
const statusError = getStatusError(status);
|
|
26
|
+
const entryKey = `${path}${messageIndex}.${partIndex}`;
|
|
27
|
+
const previousEntry = previousEntries.get(entryKey);
|
|
28
|
+
const task = previousEntry?.part === part && previousEntry.statusType === status.type && previousEntry.statusReason === statusReason && Object.is(previousEntry.statusError, statusError) && previousEntry.messages === nestedMessages && previousEntry.task.messageId === message.id && previousEntry.task.parentTaskId === parentTaskId && previousEntry.task.depth === depth ? previousEntry.task : {
|
|
29
|
+
id: part.toolCallId,
|
|
30
|
+
toolName: part.toolName,
|
|
31
|
+
args: part.args,
|
|
32
|
+
result: part.result,
|
|
33
|
+
...part.isError === void 0 ? void 0 : { isError: part.isError },
|
|
34
|
+
status,
|
|
35
|
+
timing: part.timing,
|
|
36
|
+
messageId: message.id,
|
|
37
|
+
parentTaskId,
|
|
38
|
+
depth,
|
|
39
|
+
messages: nestedMessages
|
|
40
|
+
};
|
|
41
|
+
if (task !== previousEntry?.task) {
|
|
42
|
+
allEntriesReused = false;
|
|
43
|
+
taskKeys.set(task, entryKey);
|
|
44
|
+
}
|
|
45
|
+
tasks.push(task);
|
|
46
|
+
entries.set(entryKey, {
|
|
47
|
+
task,
|
|
48
|
+
part,
|
|
49
|
+
statusType: status.type,
|
|
50
|
+
statusReason,
|
|
51
|
+
statusError,
|
|
52
|
+
messages: nestedMessages
|
|
53
|
+
});
|
|
54
|
+
visit(nestedMessages, task.id, depth + 1, `${entryKey}.`);
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
visit(messages, null, 0, "");
|
|
58
|
+
const result = allEntriesReused && tasks.length === previous.length && tasks.every((task, index) => task === previous[index]) ? previous : tasks;
|
|
59
|
+
previous = result;
|
|
60
|
+
previousEntries = entries;
|
|
61
|
+
return result;
|
|
62
|
+
};
|
|
63
|
+
};
|
|
64
|
+
const useTaskClient = ({ task }) => ({ getState: () => task });
|
|
65
|
+
const TaskClient = resource(useTaskClient);
|
|
66
|
+
//#endregion
|
|
67
|
+
export { TaskClient, createTaskDeriver, getTaskKey };
|
|
68
|
+
|
|
69
|
+
//# sourceMappingURL=thread-tasks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"thread-tasks.js","names":["resource","ClientOutput","ThreadMessage","ToolCallMessagePart","ToolCallMessagePartStatus","COMPLETE_STATUS","toMessagePartStatus","TaskState","TaskEntry","task","part","statusType","statusReason","statusError","messages","getStatusReason","status","reason","undefined","getStatusError","error","MAX_TASK_DEPTH","taskKeys","WeakMap","getTaskKey","get","id","resolveStatus","message","partIndex","createTaskDeriver","previous","previousEntries","Map","tasks","entries","allEntriesReused","visit","threadMessages","parentTaskId","depth","path","messageIndex","content","type","nestedMessages","entryKey","previousEntry","Object","is","messageId","toolCallId","toolName","args","result","isError","timing","set","push","length","every","index","useTaskClient","getState","TaskClient"],"sources":["../../../src/store/clients/thread-tasks.ts"],"sourcesContent":["import { resource } from \"@assistant-ui/tap\";\nimport type { ClientOutput } from \"@assistant-ui/store\";\nimport type {\n ThreadMessage,\n ToolCallMessagePart,\n ToolCallMessagePartStatus,\n} from \"../../types/message\";\nimport {\n COMPLETE_STATUS,\n toMessagePartStatus,\n} from \"../../utils/normalizePartStatus\";\nimport type { TaskState } from \"../scopes/task\";\n\ntype TaskEntry = {\n readonly task: TaskState;\n readonly part: ToolCallMessagePart;\n readonly statusType: ToolCallMessagePartStatus[\"type\"];\n readonly statusReason: string | undefined;\n readonly statusError: unknown;\n readonly messages: readonly ThreadMessage[];\n};\n\nconst getStatusReason = (status: ToolCallMessagePartStatus) =>\n \"reason\" in status ? status.reason : undefined;\n\nconst getStatusError = (status: ToolCallMessagePartStatus) =>\n \"error\" in status ? status.error : undefined;\n\nconst MAX_TASK_DEPTH = 32;\n\nconst taskKeys = new WeakMap<TaskState, string>();\n\n/** Lookup key for a task client: its document-order index path, unique by construction where ids from nested payloads are not. */\nexport const getTaskKey = (task: TaskState) => taskKeys.get(task) ?? task.id;\n\nconst resolveStatus = (\n message: ThreadMessage,\n partIndex: number,\n part: ToolCallMessagePart,\n): ToolCallMessagePartStatus =>\n \"status\" in message && message.status\n ? toMessagePartStatus(message, partIndex, part)\n : COMPLETE_STATUS;\n\nexport const createTaskDeriver = () => {\n let previous: readonly TaskState[] = [];\n let previousEntries = new Map<string, TaskEntry>();\n\n return (messages: readonly ThreadMessage[]): readonly TaskState[] => {\n const tasks: TaskState[] = [];\n const entries = new Map<string, TaskEntry>();\n let allEntriesReused = true;\n\n const visit = (\n threadMessages: readonly ThreadMessage[],\n parentTaskId: string | null,\n depth: number,\n path: string,\n ) => {\n if (depth > MAX_TASK_DEPTH) return;\n for (const [messageIndex, message] of threadMessages.entries()) {\n for (const [partIndex, part] of message.content.entries()) {\n if (part.type !== \"tool-call\" || part.messages === undefined)\n continue;\n\n const nestedMessages = part.messages;\n const status = resolveStatus(message, partIndex, part);\n const statusReason = getStatusReason(status);\n const statusError = getStatusError(status);\n const entryKey = `${path}${messageIndex}.${partIndex}`;\n const previousEntry = previousEntries.get(entryKey);\n const task =\n previousEntry?.part === part &&\n previousEntry.statusType === status.type &&\n previousEntry.statusReason === statusReason &&\n Object.is(previousEntry.statusError, statusError) &&\n previousEntry.messages === nestedMessages &&\n previousEntry.task.messageId === message.id &&\n previousEntry.task.parentTaskId === parentTaskId &&\n previousEntry.task.depth === depth\n ? previousEntry.task\n : {\n id: part.toolCallId,\n toolName: part.toolName,\n args: part.args,\n result: part.result,\n ...(part.isError === undefined\n ? undefined\n : { isError: part.isError }),\n status,\n timing: part.timing,\n messageId: message.id,\n parentTaskId,\n depth,\n messages: nestedMessages,\n };\n\n if (task !== previousEntry?.task) {\n allEntriesReused = false;\n taskKeys.set(task, entryKey);\n }\n tasks.push(task);\n entries.set(entryKey, {\n task,\n part,\n statusType: status.type,\n statusReason,\n statusError,\n messages: nestedMessages,\n });\n visit(nestedMessages, task.id, depth + 1, `${entryKey}.`);\n }\n }\n };\n\n visit(messages, null, 0, \"\");\n\n const result =\n allEntriesReused &&\n tasks.length === previous.length &&\n tasks.every((task, index) => task === previous[index])\n ? previous\n : tasks;\n previous = result;\n previousEntries = entries;\n return result;\n };\n};\n\nconst useTaskClient = ({\n task,\n}: {\n task: TaskState;\n}): ClientOutput<\"task\"> => ({\n getState: () => task,\n});\n\nexport const TaskClient = resource(useTaskClient);\n"],"mappings":";;;AAsBA,MAAMe,mBAAmBC,WACvB,YAAYA,SAASA,OAAOC,SAASC,KAAAA;AAEvC,MAAMC,kBAAkBH,WACtB,WAAWA,SAASA,OAAOI,QAAQF,KAAAA;AAErC,MAAMG,iBAAiB;AAEvB,MAAMC,2BAAW,IAAIC,QAA2B;;AAGhD,MAAaC,cAAcf,SAAoBa,SAASG,IAAIhB,IAAI,KAAKA,KAAKiB;AAE1E,MAAMC,iBACJC,SACAC,WACAnB,SAEA,YAAYkB,WAAWA,QAAQZ,SAC3BV,oBAAoBsB,SAASC,WAAWnB,IAAI,IAC5CL;AAEN,MAAayB,0BAA0B;CACrC,IAAIC,WAAiC,CAAA;CACrC,IAAIC,kCAAkB,IAAIC,IAAuB;CAEjD,QAAQnB,aAA6D;EACnE,MAAMoB,QAAqB,CAAA;EAC3B,MAAMC,0BAAU,IAAIF,IAAuB;EAC3C,IAAIG,mBAAmB;EAEvB,MAAMC,SACJC,gBACAC,cACAC,OACAC,SACG;GACH,IAAID,QAAQnB,gBAAgB;GAC5B,KAAK,MAAM,CAACqB,cAAcd,YAAYU,eAAeH,QAAQ,GAC3D,KAAK,MAAM,CAACN,WAAWnB,SAASkB,QAAQe,QAAQR,QAAQ,GAAG;IACzD,IAAIzB,KAAKkC,SAAS,eAAelC,KAAKI,aAAaI,KAAAA,GACjD;IAEF,MAAM2B,iBAAiBnC,KAAKI;IAC5B,MAAME,SAASW,cAAcC,SAASC,WAAWnB,IAAI;IACrD,MAAME,eAAeG,gBAAgBC,MAAM;IAC3C,MAAMH,cAAcM,eAAeH,MAAM;IACzC,MAAM8B,WAAW,GAAGL,OAAOC,aAAY,GAAIb;IAC3C,MAAMkB,gBAAgBf,gBAAgBP,IAAIqB,QAAQ;IAClD,MAAMrC,OACJsC,eAAerC,SAASA,QACxBqC,cAAcpC,eAAeK,OAAO4B,QACpCG,cAAcnC,iBAAiBA,gBAC/BoC,OAAOC,GAAGF,cAAclC,aAAaA,WAAW,KAChDkC,cAAcjC,aAAa+B,kBAC3BE,cAActC,KAAKyC,cAActB,QAAQF,MACzCqB,cAActC,KAAK8B,iBAAiBA,gBACpCQ,cAActC,KAAK+B,UAAUA,QACzBO,cAActC,OACd;KACEiB,IAAIhB,KAAKyC;KACTC,UAAU1C,KAAK0C;KACfC,MAAM3C,KAAK2C;KACXC,QAAQ5C,KAAK4C;KACb,GAAI5C,KAAK6C,YAAYrC,KAAAA,IACjBA,KAAAA,IACA,EAAEqC,SAAS7C,KAAK6C,QAAQ;KAC5BvC;KACAwC,QAAQ9C,KAAK8C;KACbN,WAAWtB,QAAQF;KACnBa;KACAC;KACA1B,UAAU+B;IACZ;IAEN,IAAIpC,SAASsC,eAAetC,MAAM;KAChC2B,mBAAmB;KACnBd,SAASmC,IAAIhD,MAAMqC,QAAQ;IAC7B;IACAZ,MAAMwB,KAAKjD,IAAI;IACf0B,QAAQsB,IAAIX,UAAU;KACpBrC;KACAC;KACAC,YAAYK,OAAO4B;KACnBhC;KACAC;KACAC,UAAU+B;IACZ,CAAC;IACDR,MAAMQ,gBAAgBpC,KAAKiB,IAAIc,QAAQ,GAAG,GAAGM,SAAQ,EAAG;GAC1D;EAEJ;EAEAT,MAAMvB,UAAU,MAAM,GAAG,EAAE;EAE3B,MAAMwC,SACJlB,oBACAF,MAAMyB,WAAW5B,SAAS4B,UAC1BzB,MAAM0B,OAAOnD,MAAMoD,UAAUpD,SAASsB,SAAS8B,MAAM,IACjD9B,WACAG;EACNH,WAAWuB;EACXtB,kBAAkBG;EAClB,OAAOmB;CACT;AACF;AAEA,MAAMQ,iBAAiB,EACrBrD,YAG2B,EAC3BsD,gBAAgBtD,KAClB;AAEA,MAAauD,aAAahE,SAAS8D,aAAa"}
|
package/dist/store/index.d.ts
CHANGED
|
@@ -9,6 +9,7 @@ import { PartClientSchema, PartMeta, PartMethods, PartState } from "./scopes/par
|
|
|
9
9
|
import { MessageClientSchema, MessageMeta, MessageMethods, MessageState } from "./scopes/message.js";
|
|
10
10
|
import { SuggestionClientSchema, SuggestionMeta, SuggestionMethods, SuggestionState } from "./scopes/suggestion.js";
|
|
11
11
|
import { Suggestion, SuggestionsClientSchema, SuggestionsMethods, SuggestionsState } from "./scopes/suggestions.js";
|
|
12
|
+
import { TaskClientSchema, TaskMeta, TaskMethods, TaskState } from "./scopes/task.js";
|
|
12
13
|
import { ThreadClientSchema, ThreadEvents, ThreadMeta, ThreadMethods, ThreadState } from "./scopes/thread.js";
|
|
13
14
|
import { ThreadsClientSchema, ThreadsEvents, ThreadsMethods, ThreadsState } from "./scopes/threads.js";
|
|
14
15
|
import { ModelContextClientSchema, ModelContextMethods, ModelContextState } from "./scopes/model-context.js";
|
|
@@ -17,7 +18,7 @@ import { RuntimeAdapter, runtimeAdapterTransformScopes } from "../react/RuntimeA
|
|
|
17
18
|
import { InMemoryThreadList, InMemoryThreadListProps, inMemoryThreadListTransformScopes } from "../react/client/InMemoryThreadList.js";
|
|
18
19
|
import { RemoteThreadList, RemoteThreadListProps } from "../react/client/RemoteThreadList.js";
|
|
19
20
|
import { JoinStrategy } from "../runtime/utils/external-message-conversion.js";
|
|
20
|
-
import { convertExternalMessages, useExternalMessageConverter } from "../react/runtimes/external-message-converter.js";
|
|
21
|
+
import { ExternalMessageConversionCache, convertExternalMessages, createExternalMessageConversionCache, useExternalMessageConverter } from "../react/runtimes/external-message-converter.js";
|
|
21
22
|
import { StreamingTimingAccessors, StreamingTimingOptions, StreamingTimingState } from "../runtime/utils/streaming-timing.js";
|
|
22
23
|
import { useStreamingTiming } from "../react/runtimes/useStreamingTiming.js";
|
|
23
24
|
import { RuntimeExtrasBrand, createRuntimeExtrasBrand } from "../runtime/utils/runtime-extras-brand.js";
|
|
@@ -32,4 +33,4 @@ import { SuggestionConfig, Suggestions } from "./clients/suggestions.js";
|
|
|
32
33
|
import { ChainOfThoughtClient } from "./clients/chain-of-thought-client.js";
|
|
33
34
|
import { ThreadMessageClient, ThreadMessageClientProps } from "./clients/thread-message-client.js";
|
|
34
35
|
import { ModelContext } from "./clients/model-context-client.js";
|
|
35
|
-
export { type AttachmentClientSchema, type AttachmentMeta, type AttachmentMethods, type AttachmentState, ChainOfThoughtClient, type ChainOfThoughtClientSchema, type ChainOfThoughtMeta, type ChainOfThoughtMethods, type ChainOfThoughtPart, type ChainOfThoughtState, type ComposerClientSchema, type ComposerEvents, type ComposerMeta, type ComposerMethods, type ComposerSendOptions, type ComposerState, ExternalThread, type ExternalThreadMessage, type ExternalThreadProps, InMemoryThreadList, type InMemoryThreadListProps, type JoinStrategy, type McpToolkitDefinition, type McpToolkitEntry, type McpToolkitToolConfig, type MessageClientSchema, type MessageMeta, type MessageMethods, type MessageState, ModelContext, type ModelContextClientSchema, type ModelContextMethods, type ModelContextState, NoOpComposerClient, type PartClientSchema, type PartMeta, type PartMethods, type PartState, type QueueItemClientSchema, type QueueItemMeta, type QueueItemMethods, type QueueItemState, RemoteThreadList, type RemoteThreadListProps, RuntimeAdapter, type RuntimeExtrasBrand, SingleThreadList, type StreamingTimingAccessors, type StreamingTimingOptions, type StreamingTimingState, type Suggestion, type SuggestionClientSchema, type SuggestionConfig, type SuggestionMeta, type SuggestionMethods, type SuggestionState, Suggestions, type SuggestionsClientSchema, type SuggestionsMethods, type SuggestionsState, type ThreadClientSchema, type ThreadEvents, type ThreadListItemClientSchema, type ThreadListItemEvents, type ThreadListItemMeta, type ThreadListItemMethods, type ThreadListItemState, ThreadMessageClient, type ThreadMessageClientProps, type ThreadMeta, type ThreadMethods, type ThreadState, type ThreadsClientSchema, type ThreadsEvents, type ThreadsMethods, type ThreadsState, type ToolCallText, type Toolkit, type ToolkitDefinition, type ToolkitDefinitionEntry, convertExternalMessages, createRuntimeExtrasBrand, defineMcpToolkit, defineToolkit, inMemoryThreadListTransformScopes, resolveToolCallText, runtimeAdapterTransformScopes, useExternalMessageConverter, useStreamingTiming };
|
|
36
|
+
export { type AttachmentClientSchema, type AttachmentMeta, type AttachmentMethods, type AttachmentState, ChainOfThoughtClient, type ChainOfThoughtClientSchema, type ChainOfThoughtMeta, type ChainOfThoughtMethods, type ChainOfThoughtPart, type ChainOfThoughtState, type ComposerClientSchema, type ComposerEvents, type ComposerMeta, type ComposerMethods, type ComposerSendOptions, type ComposerState, type ExternalMessageConversionCache, ExternalThread, type ExternalThreadMessage, type ExternalThreadProps, InMemoryThreadList, type InMemoryThreadListProps, type JoinStrategy, type McpToolkitDefinition, type McpToolkitEntry, type McpToolkitToolConfig, type MessageClientSchema, type MessageMeta, type MessageMethods, type MessageState, ModelContext, type ModelContextClientSchema, type ModelContextMethods, type ModelContextState, NoOpComposerClient, type PartClientSchema, type PartMeta, type PartMethods, type PartState, type QueueItemClientSchema, type QueueItemMeta, type QueueItemMethods, type QueueItemState, RemoteThreadList, type RemoteThreadListProps, RuntimeAdapter, type RuntimeExtrasBrand, SingleThreadList, type StreamingTimingAccessors, type StreamingTimingOptions, type StreamingTimingState, type Suggestion, type SuggestionClientSchema, type SuggestionConfig, type SuggestionMeta, type SuggestionMethods, type SuggestionState, Suggestions, type SuggestionsClientSchema, type SuggestionsMethods, type SuggestionsState, type TaskClientSchema, type TaskMeta, type TaskMethods, type TaskState, type ThreadClientSchema, type ThreadEvents, type ThreadListItemClientSchema, type ThreadListItemEvents, type ThreadListItemMeta, type ThreadListItemMethods, type ThreadListItemState, ThreadMessageClient, type ThreadMessageClientProps, type ThreadMeta, type ThreadMethods, type ThreadState, type ThreadsClientSchema, type ThreadsEvents, type ThreadsMethods, type ThreadsState, type ToolCallText, type Toolkit, type ToolkitDefinition, type ToolkitDefinitionEntry, convertExternalMessages, createExternalMessageConversionCache, createRuntimeExtrasBrand, defineMcpToolkit, defineToolkit, inMemoryThreadListTransformScopes, resolveToolCallText, runtimeAdapterTransformScopes, useExternalMessageConverter, useStreamingTiming };
|
package/dist/store/index.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { resolveToolCallText } from "../model-context/tool-call-text.js";
|
|
2
1
|
import { Suggestions } from "./clients/suggestions.js";
|
|
3
2
|
import { ModelContext } from "./clients/model-context-client.js";
|
|
3
|
+
import { resolveToolCallText } from "../model-context/tool-call-text.js";
|
|
4
4
|
import { RuntimeAdapter, runtimeAdapterTransformScopes } from "../react/RuntimeAdapter.js";
|
|
5
5
|
import { defineToolkit } from "../react/model-context/define-toolkit.js";
|
|
6
6
|
import { defineMcpToolkit } from "../react/model-context/define-mcp-toolkit.js";
|
|
7
7
|
import { InMemoryThreadList, inMemoryThreadListTransformScopes } from "../react/client/InMemoryThreadList.js";
|
|
8
8
|
import { RemoteThreadList } from "../react/client/RemoteThreadList.js";
|
|
9
|
-
import { convertExternalMessages, useExternalMessageConverter } from "../react/runtimes/external-message-converter.js";
|
|
9
|
+
import { convertExternalMessages, createExternalMessageConversionCache, useExternalMessageConverter } from "../react/runtimes/external-message-converter.js";
|
|
10
10
|
import { useStreamingTiming } from "../react/runtimes/useStreamingTiming.js";
|
|
11
11
|
import { createRuntimeExtrasBrand } from "../runtime/utils/runtime-extras-brand.js";
|
|
12
12
|
import { SingleThreadList } from "./clients/single-thread-list.js";
|
|
@@ -14,4 +14,4 @@ import { ExternalThread } from "./clients/external-thread.js";
|
|
|
14
14
|
import { NoOpComposerClient } from "./clients/no-op-composer-client.js";
|
|
15
15
|
import { ChainOfThoughtClient } from "./clients/chain-of-thought-client.js";
|
|
16
16
|
import { ThreadMessageClient } from "./clients/thread-message-client.js";
|
|
17
|
-
export { ChainOfThoughtClient, ExternalThread, InMemoryThreadList, ModelContext, NoOpComposerClient, RemoteThreadList, RuntimeAdapter, SingleThreadList, Suggestions, ThreadMessageClient, convertExternalMessages, createRuntimeExtrasBrand, defineMcpToolkit, defineToolkit, inMemoryThreadListTransformScopes, resolveToolCallText, runtimeAdapterTransformScopes, useExternalMessageConverter, useStreamingTiming };
|
|
17
|
+
export { ChainOfThoughtClient, ExternalThread, InMemoryThreadList, ModelContext, NoOpComposerClient, RemoteThreadList, RuntimeAdapter, SingleThreadList, Suggestions, ThreadMessageClient, convertExternalMessages, createExternalMessageConversionCache, createRuntimeExtrasBrand, defineMcpToolkit, defineToolkit, inMemoryThreadListTransformScopes, resolveToolCallText, runtimeAdapterTransformScopes, useExternalMessageConverter, useStreamingTiming };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"primitive-predicates.d.ts","names":[],"sources":["../../src/store/primitive-predicates.ts"],"mappings":";;;;;;;;cAYa,uBAAwB,GAAG;cAG3B,yBAA0B,GAAG;cAG7B,wBAAyB,GAAG;cAG5B,wBAAyB,GAAG;cAG5B,0BAA2B,GAAG;
|
|
1
|
+
{"version":3,"file":"primitive-predicates.d.ts","names":[],"sources":["../../src/store/primitive-predicates.ts"],"mappings":";;;;;;;;cAYa,uBAAwB,GAAG;cAG3B,yBAA0B,GAAG;cAG7B,wBAAyB,GAAG;cAG5B,wBAAyB,GAAG;cAG5B,0BAA2B,GAAG;cAM9B,wBAAyB,GAAG;cAM5B,+BAAgC,GAAG;cAKnC,2BAA4B,GAAG;cAK/B,4BACX,GAAG,gBACH;cAKW,mBACX,GAAG,+CAKD,qBACA;cAqBS,6BAA8B,GAAG"}
|