@assistant-ui/react 0.15.1 → 0.15.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/dist/client/ExternalThread.d.ts.map +1 -1
  2. package/dist/client/ExternalThread.js +43 -47
  3. package/dist/client/ExternalThread.js.map +1 -1
  4. package/dist/client/InMemoryThreadList.d.ts.map +1 -1
  5. package/dist/client/InMemoryThreadList.js +199 -176
  6. package/dist/client/InMemoryThreadList.js.map +1 -1
  7. package/dist/client/SingleThreadList.d.ts.map +1 -1
  8. package/dist/client/SingleThreadList.js +56 -48
  9. package/dist/client/SingleThreadList.js.map +1 -1
  10. package/dist/index.d.ts +2 -2
  11. package/dist/legacy-runtime/cloud/auiV0.d.ts +26 -2
  12. package/dist/legacy-runtime/cloud/auiV0.d.ts.map +1 -1
  13. package/dist/legacy-runtime/cloud/auiV0.js +29 -8
  14. package/dist/legacy-runtime/cloud/auiV0.js.map +1 -1
  15. package/dist/mcp-apps/McpAppRenderer.d.ts.map +1 -1
  16. package/dist/mcp-apps/McpAppRenderer.js +25 -14
  17. package/dist/mcp-apps/McpAppRenderer.js.map +1 -1
  18. package/dist/mcp-apps/McpAppsRemoteHost.d.ts.map +1 -1
  19. package/dist/mcp-apps/McpAppsRemoteHost.js +17 -6
  20. package/dist/mcp-apps/McpAppsRemoteHost.js.map +1 -1
  21. package/dist/primitives/message/MessagePartsGrouped.d.ts +6 -1
  22. package/dist/primitives/message/MessagePartsGrouped.d.ts.map +1 -1
  23. package/dist/primitives/message/MessagePartsGrouped.js.map +1 -1
  24. package/dist/primitives/suggestion/SuggestionTrigger.d.ts +4 -2
  25. package/dist/primitives/suggestion/SuggestionTrigger.d.ts.map +1 -1
  26. package/dist/primitives/suggestion/SuggestionTrigger.js +21 -42
  27. package/dist/primitives/suggestion/SuggestionTrigger.js.map +1 -1
  28. package/dist/primitives/thread/ThreadSuggestion.d.ts +4 -2
  29. package/dist/primitives/thread/ThreadSuggestion.d.ts.map +1 -1
  30. package/dist/primitives/thread/ThreadSuggestion.js.map +1 -1
  31. package/dist/utils/useToolArgsFieldStatus.d.ts +2 -2
  32. package/package.json +6 -6
  33. package/src/client/ExternalThread.ts +5 -16
  34. package/src/client/InMemoryThreadList.ts +27 -7
  35. package/src/client/SingleThreadList.ts +10 -2
  36. package/src/index.ts +1 -0
  37. package/src/legacy-runtime/cloud/auiV0.ts +59 -14
  38. package/src/mcp-apps/McpAppRenderer.test.tsx +262 -3
  39. package/src/mcp-apps/McpAppRenderer.tsx +27 -15
  40. package/src/mcp-apps/McpAppsRemoteHost.ts +18 -9
  41. package/src/primitives/message/MessagePartsGrouped.tsx +6 -1
  42. package/src/primitives/suggestion/SuggestionTrigger.ts +11 -32
  43. package/src/primitives/thread/ThreadSuggestion.ts +2 -1
  44. package/src/tests/RemoteThreadListRuntime.reloadMainThread.test.tsx +115 -0
  45. package/src/tests/external-thread-parity.test.tsx +108 -16
  46. package/src/tests/threadListItemIsRunning.test.tsx +198 -0
@@ -1 +1 @@
1
- {"version":3,"file":"ExternalThread.d.ts","names":[],"sources":["../../src/client/ExternalThread.ts"],"mappings":";;;;KAoDY,wBAAwB;EAClC;;KA0BU;EACV,mBAAmB;EACnB;EACA;EACA,QAAQ;EACR;;;;;;;EAOA;;;;;EAKA,SAAS,SAAS;EAClB,UAAU,SAAS;EACnB,YAAY;EACZ;EACA;EACA;EACA,oBAAoB,SAAS;;EAE7B,qBAAqB,SAAS;EAC9B,wBAAwB;EACxB,oBAAoB;;EAEpB,QAAQ;;EAER,WAAW;;EAEX,2BAA2B,SAAS;;cA20BzB,4CAAc,SAAA,yBAAA"}
1
+ {"version":3,"file":"ExternalThread.d.ts","names":[],"sources":["../../src/client/ExternalThread.ts"],"mappings":";;;;KAqDY,wBAAwB;EAClC;;KAgBU;EACV,mBAAmB;EACnB;EACA;EACA,QAAQ;EACR;;;;;;;EAOA;;;;;EAKA,SAAS,SAAS;EAClB,UAAU,SAAS;EACnB,YAAY;EACZ;EACA;EACA;EACA,oBAAoB,SAAS;;EAE7B,qBAAqB,SAAS;EAC9B,wBAAwB;EACxB,oBAAoB;;EAEpB,QAAQ;;EAER,WAAW;;EAEX,2BAA2B,SAAS;;cAy0BzB,4CAAc,SAAA,yBAAA"}
@@ -6,20 +6,14 @@ import { useEffect, useEffectEvent, useRef, useState } from "@assistant-ui/tap/r
6
6
  import { ToolResponse } from "assistant-stream";
7
7
  import { ModelContext, Suggestions } from "@assistant-ui/core/store";
8
8
  import { resource, withKey } from "@assistant-ui/tap";
9
- import { fileMatchesAccept, getThreadMessageText, isCreateAttachment, resolveToolApprovalResponse } from "@assistant-ui/core/internal";
9
+ import { fileMatchesAccept, getThreadMessageText, isCreateAttachment, resolveToolApprovalResponse, toMessagePartStatus } from "@assistant-ui/core/internal";
10
10
  //#region src/client/ExternalThread.ts
11
11
  const EMPTY_QUEUE_ITEMS = [];
12
12
  const EMPTY_BRANCH_IDS = [];
13
13
  const COMPLETE_STATUS = Object.freeze({ type: "complete" });
14
14
  const derivePartStatus = (message, partIndex, part) => {
15
- if (message.role !== "assistant" || !message.status) return COMPLETE_STATUS;
16
- if (part.type === "tool-call") {
17
- if (!part.result) return message.status;
18
- return COMPLETE_STATUS;
19
- }
20
- const isLastPart = partIndex === Math.max(0, message.content.length - 1);
21
- if (message.status.type === "requires-action") return COMPLETE_STATUS;
22
- return isLastPart ? message.status : COMPLETE_STATUS;
15
+ if (!message.status) return COMPLETE_STATUS;
16
+ return toMessagePartStatus(message, partIndex, part);
23
17
  };
24
18
  const useMessageClient = (t0) => {
25
19
  const $ = c(65);
@@ -255,26 +249,27 @@ const MessageClient = resource(useMessageClient);
255
249
  const usePartResource = (t0) => {
256
250
  const $ = c(20);
257
251
  const { part, status, messageId, onRespondToToolApproval, onAddToolResult, onResumeToolCall } = t0;
258
- let t1;
259
- if ($[0] !== part || $[1] !== status) {
260
- t1 = {
252
+ const t1 = status;
253
+ let t2;
254
+ if ($[0] !== part || $[1] !== t1) {
255
+ t2 = {
261
256
  ...part,
262
- status
257
+ status: t1
263
258
  };
264
259
  $[0] = part;
265
- $[1] = status;
266
- $[2] = t1;
267
- } else t1 = $[2];
268
- const state = t1;
269
- let t2;
260
+ $[1] = t1;
261
+ $[2] = t2;
262
+ } else t2 = $[2];
263
+ const state = t2;
264
+ let t3;
270
265
  if ($[3] !== state) {
271
- t2 = () => state;
266
+ t3 = () => state;
272
267
  $[3] = state;
273
- $[4] = t2;
274
- } else t2 = $[4];
275
- let t3;
268
+ $[4] = t3;
269
+ } else t3 = $[4];
270
+ let t4;
276
271
  if ($[5] !== messageId || $[6] !== onAddToolResult || $[7] !== part) {
277
- t3 = (result) => {
272
+ t4 = (result) => {
278
273
  if (!onAddToolResult) throw new Error("Runtime does not support tool results (onAddToolResult is not set).");
279
274
  if (part.type !== "tool-call") throw new Error("Tried to add tool result on non-tool message part");
280
275
  const response = ToolResponse.toResponse(result);
@@ -291,11 +286,11 @@ const usePartResource = (t0) => {
291
286
  $[5] = messageId;
292
287
  $[6] = onAddToolResult;
293
288
  $[7] = part;
294
- $[8] = t3;
295
- } else t3 = $[8];
296
- let t4;
289
+ $[8] = t4;
290
+ } else t4 = $[8];
291
+ let t5;
297
292
  if ($[9] !== onResumeToolCall || $[10] !== part) {
298
- t4 = (payload) => {
293
+ t5 = (payload) => {
299
294
  if (!onResumeToolCall) throw new Error("Runtime does not support resuming tool calls (onResumeToolCall is not set).");
300
295
  if (part.type !== "tool-call") throw new Error("Tried to resume tool call on non-tool message part");
301
296
  onResumeToolCall({
@@ -305,11 +300,11 @@ const usePartResource = (t0) => {
305
300
  };
306
301
  $[9] = onResumeToolCall;
307
302
  $[10] = part;
308
- $[11] = t4;
309
- } else t4 = $[11];
310
- let t5;
303
+ $[11] = t5;
304
+ } else t5 = $[11];
305
+ let t6;
311
306
  if ($[12] !== onRespondToToolApproval || $[13] !== part) {
312
- t5 = (response_0) => {
307
+ t6 = (response_0) => {
313
308
  if (!onRespondToToolApproval) throw new Error("Runtime does not support tool approvals.");
314
309
  if (part.type !== "tool-call") throw new Error("Tried to respond to tool approval on non-tool message part");
315
310
  if (!part.approval || part.approval.approved !== void 0 || part.approval.resolution !== void 0) throw new Error("Tool call has no pending approval");
@@ -317,23 +312,23 @@ const usePartResource = (t0) => {
317
312
  };
318
313
  $[12] = onRespondToToolApproval;
319
314
  $[13] = part;
320
- $[14] = t5;
321
- } else t5 = $[14];
322
- let t6;
323
- if ($[15] !== t2 || $[16] !== t3 || $[17] !== t4 || $[18] !== t5) {
324
- t6 = {
325
- getState: t2,
326
- addToolResult: t3,
327
- resumeToolCall: t4,
328
- respondToToolApproval: t5
315
+ $[14] = t6;
316
+ } else t6 = $[14];
317
+ let t7;
318
+ if ($[15] !== t3 || $[16] !== t4 || $[17] !== t5 || $[18] !== t6) {
319
+ t7 = {
320
+ getState: t3,
321
+ addToolResult: t4,
322
+ resumeToolCall: t5,
323
+ respondToToolApproval: t6
329
324
  };
330
- $[15] = t2;
331
- $[16] = t3;
332
- $[17] = t4;
333
- $[18] = t5;
334
- $[19] = t6;
335
- } else t6 = $[19];
336
- return t6;
325
+ $[15] = t3;
326
+ $[16] = t4;
327
+ $[17] = t5;
328
+ $[18] = t6;
329
+ $[19] = t7;
330
+ } else t7 = $[19];
331
+ return t7;
337
332
  };
338
333
  const PartResource = resource(usePartResource);
339
334
  const useAttachmentResource = ({ attachment, onRemove }) => {
@@ -892,6 +887,7 @@ const useExternalThread = (t0) => {
892
887
  edit: hasEdit,
893
888
  delete: false,
894
889
  reload: hasReload,
890
+ refetchThread: false,
895
891
  cancel: isRunning,
896
892
  speech: false,
897
893
  attachments: hasAttachments,
@@ -1 +1 @@
1
- {"version":3,"file":"ExternalThread.js","names":["useState","useMemo","useEffect","useEffectEvent","useCallback","useRef","resource","withKey","ClientElement","ClientOutput","useClientLookup","attachTransformScopes","useClientResource","Derived","AddToolResultOptions","AppendMessage","Attachment","AttachmentAdapter","CreateAttachment","PendingAttachment","RespondToToolApprovalOptions","ResumeToolCallOptions","MessagePartStatus","ThreadAssistantMessagePart","ThreadUserMessagePart","ThreadMessage","ToolCallMessagePartStatus","ExternalThreadQueueAdapter","ExternalThreadBranchAdapter","ToolResponse","ReadonlyJSONValue","QueueItemState","ComposerSendOptions","fileMatchesAccept","getThreadMessageText","isCreateAttachment","resolveToolApprovalResponse","ModelContext","Suggestions","Tools","DataRenderers","SingleThreadList","EMPTY_QUEUE_ITEMS","EMPTY_BRANCH_IDS","ExternalThreadMessage","id","COMPLETE_STATUS","Object","freeze","type","derivePartStatus","message","partIndex","part","role","status","result","isLastPart","Math","max","content","length","ExternalThreadProps","messages","isRunning","isLoading","state","extras","isSendDisabled","onNew","onEdit","onReload","parentId","onStartRun","onCancel","onResume","onAddToolResult","options","onResumeToolCall","onLoadExternalState","attachmentAdapter","queue","branches","onRespondToToolApproval","MessageClientProps","index","useMessageClient","t0","$","_c","isCopied","setIsCopied","isHovering","setIsHovering","isEditing","setIsEditing","t1","map","idx","PartResource","messageId","partClients","t2","attachments","t3","_temp2","attachmentClients","t4","Symbol","for","handleBeginEdit","t5","handleCancelEdit","t6","msg","clear","sourceId","handleSendEdit","t7","ComposerClientResource","canCancel","onBeginEdit","onSend","composerClient","branchIds","t8","getBranches","indexOf","branchIndex","branchNumber","branchCount","t9","t10","isLast","speech","undefined","parts","composer","t11","t12","methods","t13","t14","t15","position","branchId","target","switchToBranch","t16","selector","get","findIndex","p","toolCallId","t17","selector_0","key","t18","getState","delete","_temp3","reload","speak","_temp4","stopSpeaking","_temp5","submitFeedback","_temp6","getCopyText","attachment","MessageClient","PartResourceProps","usePartResource","Error","response","toResponse","toolName","isError","artifact","modelContent","payload","response_0","approval","approved","resolution","addToolResult","resumeToolCall","respondToToolApproval","AttachmentResourceProps","onRemove","Promise","useAttachmentResource","remove","AttachmentResource","ComposerClientResourceProps","useQueueItemClient","item","onSteer","steer","QueueItemClient","drainAdapterAdd","ReturnType","upsert","asyncIterator","useLiveState","initial","setState","ref","next","current","prev","T","set","const","useComposerClientResource","text","setText","textRef","setRole","roleRef","runConfig","setRunConfig","runConfigRef","setAttachments","attachmentsRef","quote","setQuote","quoteRef","textParts","filter","_temp7","messageText","_temp8","join","updateFromMessage","a","removed","all","_temp9","a_1","removePendingAttachments","attachment_0","prev_0","a_2","upsertAttachment","queueItems","items","queueItemClients","accept","trim","isEmpty","canSend","attachmentAccept","dictation","fileOrAttachment","file","name","contentType","add","newAttachment","random","toString","substring","prev_1","newAttachment_0","prev_2","removed_0","t19","removed_1","t20","opts","currentQuote","currentText","currentAttachments","isEmpty_0","dispatch","sendAttachments","composedMessage","createdAt","Date","startRun","metadata","custom","enqueue","attachment_1","send","then","error","prev_3","prev_4","prev_5","console","t21","t22","t23","addAttachment","clearAttachments","reset","cancel","beginEdit","startDictation","_temp0","stopDictation","_temp1","queueItem","dedupeMessagesById","seenIds","Set","deduped","i","has","warn","push","reverse","useExternalThread","messagesProp","threadState","messageIndex","m","handleReload","props","messageClients","handleCancelRun","at","handleSendNew","headId","message_0","composerQueue","hasQueue","hasBranches","hasEdit","hasReload","hasAttachments","_temp10","messageStates","edit","feedback","voice","switchBranchDuringRun","unstable_copy","isDisabled","capabilities","suggestions","message_1","appendMessage","state_0","t24","t25","append","deleteMessage","_temp11","resumeRun","cancelRun","importExternalState","getModelContext","_temp12","export","_temp13","import","_temp14","_temp15","_temp16","connectVoice","_temp17","disconnectVoice","_temp18","getVoiceVolume","_temp19","subscribeVoiceVolume","_temp21","muteVoice","_temp22","unmuteVoice","_temp23","ExternalThread","scopes","parent","threads","source","threadElement","thread","query","aui","threadListItem","modelContext","tools","dataRenderers","_temp","part_0","a_0","s","arr","config","_temp20"],"sources":["../../src/client/ExternalThread.ts"],"sourcesContent":["import {\n useState,\n useMemo,\n useEffect,\n useEffectEvent,\n useCallback,\n useRef,\n} from \"react\";\nimport { resource, withKey } from \"@assistant-ui/tap\";\nimport {\n type ClientElement,\n type ClientOutput,\n useClientLookup,\n attachTransformScopes,\n useClientResource,\n Derived,\n} from \"@assistant-ui/store\";\n\nimport type {\n AddToolResultOptions,\n AppendMessage,\n Attachment,\n AttachmentAdapter,\n CreateAttachment,\n PendingAttachment,\n RespondToToolApprovalOptions,\n ResumeToolCallOptions,\n MessagePartStatus,\n ThreadAssistantMessagePart,\n ThreadUserMessagePart,\n ThreadMessage,\n ToolCallMessagePartStatus,\n ExternalThreadQueueAdapter,\n ExternalThreadBranchAdapter,\n} from \"@assistant-ui/core\";\nimport { ToolResponse } from \"assistant-stream\";\nimport type { ReadonlyJSONValue } from \"assistant-stream/utils\";\nimport type { QueueItemState } from \"@assistant-ui/core/store\";\nimport type { ComposerSendOptions } from \"@assistant-ui/core/store\";\nimport {\n fileMatchesAccept,\n getThreadMessageText,\n isCreateAttachment,\n resolveToolApprovalResponse,\n} from \"@assistant-ui/core/internal\";\nimport { ModelContext, Suggestions } from \"@assistant-ui/core/store\";\nimport { Tools, DataRenderers } from \"@assistant-ui/core/react\";\nimport { SingleThreadList } from \"./SingleThreadList\";\n\nconst EMPTY_QUEUE_ITEMS: readonly QueueItemState[] = [];\nconst EMPTY_BRANCH_IDS: readonly string[] = [];\n\nexport type ExternalThreadMessage = ThreadMessage & {\n id: string;\n};\n\nconst COMPLETE_STATUS: MessagePartStatus = Object.freeze({\n type: \"complete\",\n});\n\n// Legacy runtime parity (toMessagePartStatus): a tool call without a result\n// carries its message's status; the last part of a streaming message streams.\nconst derivePartStatus = (\n message: ExternalThreadMessage,\n partIndex: number,\n part: ThreadAssistantMessagePart | ThreadUserMessagePart,\n): ToolCallMessagePartStatus => {\n if (message.role !== \"assistant\" || !message.status) return COMPLETE_STATUS;\n\n if (part.type === \"tool-call\") {\n if (!part.result) return message.status as ToolCallMessagePartStatus;\n return COMPLETE_STATUS;\n }\n\n const isLastPart = partIndex === Math.max(0, message.content.length - 1);\n if (message.status.type === \"requires-action\") return COMPLETE_STATUS;\n return isLastPart ? (message.status as MessagePartStatus) : COMPLETE_STATUS;\n};\n\nexport type ExternalThreadProps = {\n messages: readonly ExternalThreadMessage[];\n isRunning?: boolean;\n isLoading?: boolean | undefined;\n state?: ReadonlyJSONValue | undefined;\n extras?: unknown;\n /**\n * Whether sending new messages is currently disabled. When `true`, the\n * thread composer's input remains usable but `send()` is a no-op and\n * `composer.canSend` is `false`. Edit composers (saving message edits)\n * intentionally ignore this flag.\n */\n isSendDisabled?: boolean;\n /**\n * Callback for new messages (non-queue runtimes).\n * @note Unused when `queue` is provided — new messages are routed through `queue.enqueue` instead.\n */\n onNew?: (message: AppendMessage) => void;\n onEdit?: (message: AppendMessage) => void;\n onReload?: (parentId: string | null) => void;\n onStartRun?: () => void;\n onCancel?: () => void;\n onResume?: (() => void) | undefined;\n onAddToolResult?: ((options: AddToolResultOptions) => void) | undefined;\n /** Callback for resuming a tool call that is waiting for human input. */\n onResumeToolCall?: ((options: ResumeToolCallOptions) => void) | undefined;\n onLoadExternalState?: ((state: unknown) => void) | undefined;\n attachmentAdapter?: AttachmentAdapter | undefined;\n /** Queue adapter for runtimes that support message queuing and steering. */\n queue?: ExternalThreadQueueAdapter;\n /** Branch adapter for runtimes that track sibling variants of messages. */\n branches?: ExternalThreadBranchAdapter;\n /** Callback for tool approval decisions. Absent: responding to an approval throws a capability error. */\n onRespondToToolApproval?: (options: RespondToToolApprovalOptions) => void;\n};\n\ntype MessageClientProps = {\n message: ExternalThreadMessage;\n index: number;\n parentId: string | null;\n onEdit?: (message: AppendMessage) => void;\n onReload?: () => void;\n queue?: ExternalThreadQueueAdapter | undefined;\n branches?: ExternalThreadBranchAdapter | undefined;\n onRespondToToolApproval?:\n | ((options: RespondToToolApprovalOptions) => void)\n | undefined;\n onAddToolResult?: ((options: AddToolResultOptions) => void) | undefined;\n onResumeToolCall?: ((options: ResumeToolCallOptions) => void) | undefined;\n attachmentAdapter?: AttachmentAdapter | undefined;\n};\n\n// Message Client - minimal implementation\nconst useMessageClient = ({\n message,\n index,\n parentId,\n onEdit,\n onReload,\n queue,\n branches,\n onRespondToToolApproval,\n onAddToolResult,\n onResumeToolCall,\n attachmentAdapter,\n}: MessageClientProps): ClientOutput<\"message\"> => {\n const [isCopied, setIsCopied] = useState(false);\n const [isHovering, setIsHovering] = useState(false);\n const [isEditing, setIsEditing] = useState(false);\n\n const partClients = useClientLookup(\n message.content.map((part, idx) =>\n withKey(\n idx,\n PartResource({\n part,\n status: derivePartStatus(message, idx, part),\n messageId: message.id,\n onRespondToToolApproval,\n onAddToolResult,\n onResumeToolCall,\n }),\n ),\n ),\n );\n\n const attachmentClients = useClientLookup(\n (message.attachments ?? []).map((attachment) =>\n withKey(\n attachment.id,\n AttachmentResource({\n attachment,\n onRemove: () => {},\n }),\n ),\n ),\n );\n\n const handleBeginEdit = () => {\n setIsEditing(true);\n };\n\n const handleCancelEdit = () => {\n setIsEditing(false);\n };\n\n const handleSendEdit = (msg: AppendMessage) => {\n queue?.clear(\"edit\");\n onEdit?.({\n ...msg,\n parentId,\n sourceId: message.id,\n });\n setIsEditing(false);\n };\n\n const composerClient = useClientResource(\n ComposerClientResource({\n type: \"edit\",\n isEditing,\n canCancel: true,\n onCancel: handleCancelEdit,\n onBeginEdit: handleBeginEdit,\n onSend: handleSendEdit,\n message,\n queue,\n attachmentAdapter,\n }),\n );\n\n const branchIds = branches?.getBranches(message.id) ?? EMPTY_BRANCH_IDS;\n const branchIndex = branchIds.indexOf(message.id);\n const branchNumber = branchIndex === -1 ? 1 : branchIndex + 1;\n const branchCount = branchIndex === -1 ? 1 : branchIds.length;\n\n const state = useMemo(() => {\n return {\n ...message,\n attachments: message.attachments ?? [],\n parentId,\n isLast: false, // Will be set by thread\n branchNumber,\n branchCount,\n speech: undefined,\n parts: partClients.state,\n isCopied,\n isHovering,\n index,\n composer: composerClient.state,\n };\n }, [\n message,\n parentId,\n isCopied,\n isHovering,\n index,\n composerClient.state,\n partClients.state,\n branchNumber,\n branchCount,\n ]);\n\n return {\n getState: () => state,\n composer: () => composerClient.methods,\n delete: () => {},\n reload: () => {\n onReload?.();\n },\n speak: () => {},\n stopSpeaking: () => {},\n submitFeedback: () => {},\n switchToBranch: ({ position, branchId }) => {\n if (!branches) return;\n const target =\n branchId ??\n (branchIndex === -1\n ? undefined\n : position === \"previous\"\n ? branchIds[branchIndex - 1]\n : position === \"next\"\n ? branchIds[branchIndex + 1]\n : undefined);\n if (target !== undefined && target !== message.id)\n branches.switchToBranch(target);\n },\n getCopyText: () => getThreadMessageText(message),\n part: (selector) => {\n if (\"index\" in selector) {\n return partClients.get(selector);\n }\n const partIndex = state.parts.findIndex(\n (p) => p.type === \"tool-call\" && p.toolCallId === selector.toolCallId,\n );\n return partClients.get({ index: partIndex });\n },\n attachment: (selector) => {\n if (\"id\" in selector) {\n return attachmentClients.get({ key: selector.id });\n }\n return attachmentClients.get(selector);\n },\n setIsCopied,\n setIsHovering,\n };\n};\n\nconst MessageClient = resource(useMessageClient);\n\ntype PartResourceProps = {\n part: ThreadAssistantMessagePart | ThreadUserMessagePart;\n status: ToolCallMessagePartStatus;\n messageId: string;\n onRespondToToolApproval?:\n | ((options: RespondToToolApprovalOptions) => void)\n | undefined;\n onAddToolResult?: ((options: AddToolResultOptions) => void) | undefined;\n onResumeToolCall?: ((options: ResumeToolCallOptions) => void) | undefined;\n};\n\n// Part Client - minimal implementation\nconst usePartResource = ({\n part,\n status,\n messageId,\n onRespondToToolApproval,\n onAddToolResult,\n onResumeToolCall,\n}: PartResourceProps): ClientOutput<\"part\"> => {\n const state = useMemo(\n () => ({\n ...part,\n status,\n }),\n [part, status],\n );\n\n return {\n getState: () => state,\n addToolResult: (result) => {\n if (!onAddToolResult)\n throw new Error(\n \"Runtime does not support tool results (onAddToolResult is not set).\",\n );\n if (part.type !== \"tool-call\")\n throw new Error(\"Tried to add tool result on non-tool message part\");\n\n const response = ToolResponse.toResponse(result);\n onAddToolResult({\n messageId,\n toolName: part.toolName,\n toolCallId: part.toolCallId,\n result: response.result as ReadonlyJSONValue,\n isError: response.isError,\n ...(response.artifact !== undefined && { artifact: response.artifact }),\n ...(response.modelContent !== undefined && {\n modelContent: response.modelContent,\n }),\n });\n },\n resumeToolCall: (payload) => {\n if (!onResumeToolCall)\n throw new Error(\n \"Runtime does not support resuming tool calls (onResumeToolCall is not set).\",\n );\n if (part.type !== \"tool-call\")\n throw new Error(\"Tried to resume tool call on non-tool message part\");\n\n onResumeToolCall({ toolCallId: part.toolCallId, payload });\n },\n respondToToolApproval: (response) => {\n if (!onRespondToToolApproval)\n throw new Error(\"Runtime does not support tool approvals.\");\n\n if (part.type !== \"tool-call\")\n throw new Error(\n \"Tried to respond to tool approval on non-tool message part\",\n );\n\n if (\n !part.approval ||\n part.approval.approved !== undefined ||\n part.approval.resolution !== undefined\n )\n throw new Error(\"Tool call has no pending approval\");\n\n onRespondToToolApproval(\n resolveToolApprovalResponse(part.approval, response),\n );\n },\n };\n};\n\nconst PartResource = resource(usePartResource);\n\ntype AttachmentResourceProps = {\n attachment: Attachment;\n onRemove?: () => void | Promise<void>;\n};\n\n// Attachment Client - minimal implementation\nconst useAttachmentResource = ({\n attachment,\n onRemove,\n}: AttachmentResourceProps): ClientOutput<\"attachment\"> => {\n return {\n getState: () => attachment,\n remove: async () => {\n await onRemove?.();\n },\n };\n};\n\nconst AttachmentResource = resource(useAttachmentResource);\n\ntype ComposerClientResourceProps = {\n type: \"thread\" | \"edit\";\n isEditing: boolean;\n canCancel: boolean;\n isSendDisabled?: boolean;\n onCancel: () => void;\n onBeginEdit?: () => void;\n onSend?: (message: AppendMessage) => void;\n message?: ExternalThreadMessage;\n queue?: ExternalThreadQueueAdapter | undefined;\n attachmentAdapter?: AttachmentAdapter | undefined;\n};\n\nconst useQueueItemClient = ({\n item,\n onSteer,\n onRemove,\n}: {\n item: QueueItemState;\n onSteer: () => void;\n onRemove: () => void;\n}): ClientOutput<\"queueItem\"> => {\n return {\n getState: () => item,\n steer: onSteer,\n remove: onRemove,\n };\n};\n\nconst QueueItemClient = resource(useQueueItemClient);\n\nconst drainAdapterAdd = async (\n result: ReturnType<AttachmentAdapter[\"add\"]>,\n upsert: (attachment: Attachment) => void,\n) => {\n if (Symbol.asyncIterator in result) {\n for await (const attachment of result) {\n upsert(attachment);\n }\n } else {\n upsert(await result);\n }\n};\n\n// State whose setter tracks the latest value in a ref, so imperative\n// call sequences (setText immediately followed by send) observe the write\n// before React re-renders — legacy composer parity.\nconst useLiveState = <T>(initial: T) => {\n const [state, setState] = useState(initial);\n const ref = useRef(state);\n const set = useCallback((next: T | ((prev: T) => T)) => {\n ref.current =\n typeof next === \"function\" ? (next as (prev: T) => T)(ref.current) : next;\n setState(ref.current);\n }, []);\n return [state, set, ref] as const;\n};\n\n// Composer Client - minimal implementation\nconst useComposerClientResource = ({\n type,\n isEditing,\n canCancel,\n isSendDisabled = false,\n onCancel,\n onBeginEdit,\n onSend,\n message,\n queue,\n attachmentAdapter,\n}: ComposerClientResourceProps): ClientOutput<\"composer\"> => {\n const [text, setText, textRef] = useLiveState(\"\");\n const [role, setRole, roleRef] = useLiveState<\n \"user\" | \"assistant\" | \"system\"\n >(\"user\");\n const [runConfig, setRunConfig, runConfigRef] = useLiveState<\n Record<string, unknown>\n >({});\n const [attachments, setAttachments, attachmentsRef] = useLiveState<\n readonly Attachment[]\n >([]);\n const [quote, setQuote, quoteRef] = useLiveState<\n { readonly text: string; readonly messageId: string } | undefined\n >(undefined);\n\n // Update composer values when editing begins\n const updateFromMessage = useEffectEvent(() => {\n if (message) {\n // Extract text from message content (text parts only)\n const textParts = message.content.filter((part) => part.type === \"text\");\n const messageText = textParts\n .map((part) => (\"text\" in part ? part.text : \"\"))\n .join(\"\\n\\n\");\n\n setText(messageText);\n setRole(message.role);\n setAttachments(message.attachments ?? []);\n }\n });\n\n useEffect(() => {\n if (isEditing) {\n updateFromMessage();\n }\n }, [isEditing]);\n\n const attachmentClients = useClientLookup(\n attachments.map((attachment) =>\n withKey(\n attachment.id,\n AttachmentResource({\n attachment,\n onRemove: async () => {\n await attachmentAdapter?.remove(attachment);\n setAttachments((prev) =>\n prev.filter((a) => a.id !== attachment.id),\n );\n },\n }),\n ),\n ),\n );\n\n const removePendingAttachments = async (removed: readonly Attachment[]) => {\n if (!attachmentAdapter) return;\n await Promise.all(\n removed\n .filter((a) => a.status.type !== \"complete\")\n .map((a) => attachmentAdapter.remove(a)),\n );\n };\n\n const upsertAttachment = (attachment: Attachment) => {\n setAttachments((prev) => {\n const idx = prev.findIndex((a) => a.id === attachment.id);\n if (idx === -1) return [...prev, attachment];\n const next = [...prev];\n next[idx] = attachment;\n return next;\n });\n };\n\n const queueItems = queue?.items ?? EMPTY_QUEUE_ITEMS;\n const queueItemClients = useClientLookup(\n queueItems.map((item) =>\n withKey(\n item.id,\n QueueItemClient({\n item,\n onSteer: () => queue?.steer(item.id),\n onRemove: () => queue?.remove(item.id),\n }),\n ),\n ),\n );\n\n const state = useMemo(() => {\n const isEmpty = !text.trim() && !attachments.length;\n return {\n text,\n role,\n attachments: attachmentClients.state,\n runConfig,\n isEditing,\n canCancel,\n canSend: isEditing && !isEmpty && !isSendDisabled,\n attachmentAccept: attachmentAdapter?.accept ?? \"*\",\n isEmpty,\n type,\n dictation: undefined,\n quote,\n queue: queueItems,\n };\n }, [\n text,\n role,\n attachmentClients.state,\n runConfig,\n isEditing,\n canCancel,\n isSendDisabled,\n type,\n attachments.length,\n quote,\n queueItems,\n attachmentAdapter?.accept,\n ]);\n\n return {\n getState: () => state,\n setText,\n setRole,\n setRunConfig,\n addAttachment: async (fileOrAttachment: File | CreateAttachment) => {\n if (attachmentAdapter) {\n const file = isCreateAttachment(fileOrAttachment)\n ? {\n name: fileOrAttachment.name,\n type: fileOrAttachment.contentType ?? \"\",\n }\n : { name: fileOrAttachment.name, type: fileOrAttachment.type };\n if (!fileMatchesAccept(file, attachmentAdapter.accept))\n throw new Error(\n `File type ${file.type || \"unknown\"} is not accepted. Accepted types: ${attachmentAdapter.accept}`,\n );\n }\n if (!isCreateAttachment(fileOrAttachment) && attachmentAdapter) {\n await drainAdapterAdd(\n attachmentAdapter.add({ file: fileOrAttachment }),\n upsertAttachment,\n );\n } else if (!isCreateAttachment(fileOrAttachment)) {\n const newAttachment: Attachment = {\n id: Math.random().toString(36).substring(7),\n type: \"file\",\n name: fileOrAttachment.name,\n contentType: fileOrAttachment.type,\n file: fileOrAttachment,\n status: { type: \"complete\" },\n content: [],\n };\n setAttachments((prev) => [...prev, newAttachment]);\n } else {\n const newAttachment: Attachment = {\n id: fileOrAttachment.id ?? Math.random().toString(36).substring(7),\n type: fileOrAttachment.type ?? \"document\",\n name: fileOrAttachment.name,\n contentType: fileOrAttachment.contentType,\n content: fileOrAttachment.content,\n status: { type: \"complete\" },\n };\n setAttachments((prev) => [...prev, newAttachment]);\n }\n },\n clearAttachments: async () => {\n const removed = attachmentsRef.current;\n setAttachments([]);\n await removePendingAttachments(removed);\n },\n attachment: (selector) => {\n if (\"id\" in selector) {\n return attachmentClients.get({ key: selector.id });\n }\n return attachmentClients.get(selector);\n },\n reset: async () => {\n const removed = attachmentsRef.current;\n setText(\"\");\n setRole(\"user\");\n setRunConfig({});\n setAttachments([]);\n setQuote(undefined);\n await removePendingAttachments(removed);\n },\n send: (opts?: ComposerSendOptions) => {\n const currentQuote = quoteRef.current;\n const currentText = textRef.current;\n const currentAttachments = attachmentsRef.current;\n const isEmpty = !currentText.trim() && !currentAttachments.length;\n if (!isEditing || isEmpty || isSendDisabled) return;\n\n setText(\"\");\n setAttachments([]);\n setQuote(undefined);\n\n const dispatch = (sendAttachments: readonly Attachment[]) => {\n const composedMessage: AppendMessage = {\n role: roleRef.current,\n content: currentText\n ? [{ type: \"text\" as const, text: currentText }]\n : [],\n attachments: sendAttachments as any,\n createdAt: new Date(),\n parentId: null,\n sourceId: null,\n runConfig: runConfigRef.current,\n startRun: opts?.startRun,\n metadata: {\n custom: { ...(currentQuote ? { quote: currentQuote } : {}) },\n },\n };\n if (queue) {\n queue.enqueue(composedMessage, { steer: opts?.steer ?? false });\n } else {\n onSend?.(composedMessage);\n }\n };\n\n if (attachmentAdapter && currentAttachments.length > 0) {\n void Promise.all(\n currentAttachments.map((attachment) =>\n attachment.status.type === \"complete\"\n ? attachment\n : attachmentAdapter.send(attachment as PendingAttachment),\n ),\n ).then(dispatch, (error) => {\n // Upload failed: merge the failed send back into the draft.\n setText((prev) =>\n currentText && prev\n ? currentText + \"\\n\" + prev\n : currentText || prev,\n );\n setQuote((prev) => prev ?? currentQuote);\n setAttachments((prev) => [...currentAttachments, ...prev]);\n console.error(\"Failed to send attachments\", error);\n });\n } else {\n dispatch(currentAttachments);\n }\n },\n cancel: onCancel,\n beginEdit: () => {\n onBeginEdit?.();\n },\n startDictation: () => {},\n stopDictation: () => {},\n setQuote,\n queueItem: (selector: { index: number }) => {\n return queueItemClients.get(selector);\n },\n };\n};\n\nconst ComposerClientResource = resource(useComposerClientResource);\n\nconst dedupeMessagesById = (messages: readonly ExternalThreadMessage[]) => {\n const seenIds = new Set<string>();\n const deduped: ExternalThreadMessage[] = [];\n for (let i = messages.length - 1; i >= 0; i--) {\n const message = messages[i]!;\n if (seenIds.has(message.id)) {\n console.warn(\n `ExternalThread: duplicate message id \"${message.id}\" in the provided messages array; keeping the last occurrence.`,\n );\n continue;\n }\n seenIds.add(message.id);\n deduped.push(message);\n }\n return deduped.length === messages.length ? messages : deduped.reverse();\n};\n\n// External Thread Client\nconst useExternalThread = ({\n messages: messagesProp,\n isRunning = false,\n isLoading = false,\n state: threadState,\n extras,\n isSendDisabled = false,\n onNew,\n onEdit,\n onReload,\n onStartRun,\n onCancel,\n onResume,\n onAddToolResult,\n onResumeToolCall,\n onLoadExternalState,\n attachmentAdapter,\n queue,\n branches,\n onRespondToToolApproval,\n}: ExternalThreadProps): ClientOutput<\"thread\"> => {\n const messages = useMemo(\n () => dedupeMessagesById(messagesProp),\n [messagesProp],\n );\n\n const handleReload = (messageId: string) => {\n const messageIndex = messages.findIndex((m) => m.id === messageId);\n if (messageIndex === -1) return;\n\n const parentId = messageIndex > 0 ? messages[messageIndex - 1]!.id : null;\n queue?.clear(\"reload\");\n onReload?.(parentId);\n };\n\n const messageClients = useClientLookup(\n messages.map((msg, index) => {\n const props: MessageClientProps = {\n message: msg,\n index,\n parentId: index > 0 ? messages[index - 1]!.id : null,\n onReload: () => handleReload(msg.id),\n queue,\n branches,\n onRespondToToolApproval,\n onAddToolResult,\n onResumeToolCall,\n attachmentAdapter,\n };\n if (onEdit) props.onEdit = onEdit;\n return withKey(msg.id, MessageClient(props));\n }),\n );\n\n const handleCancelRun = () => {\n queue?.clear(\"cancel-run\");\n onCancel?.();\n };\n\n const handleSendNew = (message: AppendMessage) => {\n // The composer does not know the thread; stamp the current head as the\n // parent (legacy composer parity).\n onNew?.({ ...message, parentId: messages.at(-1)?.id ?? null });\n };\n\n const headId = messages.at(-1)?.id ?? null;\n const composerQueue = useMemo(\n (): ExternalThreadQueueAdapter | undefined =>\n queue && {\n ...queue,\n enqueue: (message, options) =>\n queue.enqueue(\n { ...message, parentId: message.parentId ?? headId },\n options,\n ),\n },\n [queue, headId],\n );\n\n const composerClient = useClientResource(\n ComposerClientResource({\n type: \"thread\",\n isEditing: true,\n canCancel: isRunning,\n isSendDisabled,\n onCancel: handleCancelRun,\n onSend: handleSendNew,\n queue: composerQueue,\n attachmentAdapter,\n }),\n );\n\n const hasQueue = !!queue;\n const hasBranches = !!branches;\n const hasEdit = !!onEdit;\n const hasReload = !!onReload;\n const hasAttachments = !!attachmentAdapter;\n const state = useMemo(() => {\n const messageStates = messageClients.state.map((s, idx, arr) => ({\n ...s,\n isLast: idx === arr.length - 1,\n }));\n\n return {\n isEmpty: messages.length === 0,\n isDisabled: false,\n isLoading,\n isRunning,\n capabilities: {\n edit: hasEdit,\n delete: false,\n reload: hasReload,\n cancel: isRunning,\n speech: false,\n attachments: hasAttachments,\n feedback: false,\n voice: false,\n switchToBranch: hasBranches,\n switchBranchDuringRun: false,\n unstable_copy: false,\n dictation: false,\n queue: hasQueue,\n },\n messages: messageStates,\n state: threadState ?? {},\n suggestions: [],\n extras,\n speech: undefined,\n voice: undefined,\n composer: composerClient.state,\n };\n }, [\n messages,\n isRunning,\n isLoading,\n threadState,\n extras,\n hasQueue,\n hasBranches,\n hasEdit,\n hasReload,\n hasAttachments,\n messageClients.state,\n composerClient.state,\n ]);\n\n return {\n getState: () => state,\n composer: () => composerClient.methods,\n append: (message) => {\n const appendMessage: AppendMessage =\n typeof message === \"string\"\n ? {\n createdAt: new Date(),\n parentId: messages.at(-1)?.id ?? null,\n sourceId: null,\n runConfig: {},\n role: \"user\",\n content: [{ type: \"text\", text: message }],\n attachments: [],\n metadata: { custom: {} },\n }\n : {\n createdAt: message.createdAt ?? new Date(),\n parentId: message.parentId ?? messages.at(-1)?.id ?? null,\n sourceId: message.sourceId ?? null,\n role: message.role ?? \"user\",\n content: message.content,\n attachments: message.attachments ?? [],\n metadata: message.metadata ?? { custom: {} },\n runConfig: message.runConfig ?? {},\n startRun: message.startRun,\n };\n if (queue) {\n queue.enqueue(appendMessage, { steer: false });\n } else {\n onNew?.(appendMessage);\n }\n },\n deleteMessage: () => {},\n startRun: () => {\n onStartRun?.();\n },\n resumeRun: () => {\n if (!onResume)\n throw new Error(\n \"Runtime does not support resuming runs (onResume is not set).\",\n );\n onResume();\n },\n cancelRun: handleCancelRun,\n importExternalState: (state: unknown) => {\n if (!onLoadExternalState)\n throw new Error(\n \"Runtime does not support importing external states (onLoadExternalState is not set).\",\n );\n onLoadExternalState(state);\n },\n getModelContext: () => ({ tools: {}, config: {} }),\n export: () => ({ messages: [] }),\n import: () => {},\n reset: () => {},\n message: (selector) => {\n if (\"id\" in selector) {\n return messageClients.get({ key: selector.id });\n }\n return messageClients.get(selector);\n },\n stopSpeaking: () => {},\n connectVoice: () => {},\n disconnectVoice: () => {},\n getVoiceVolume: () => 0,\n subscribeVoiceVolume: () => () => {},\n muteVoice: () => {},\n unmuteVoice: () => {},\n };\n};\n\nexport const ExternalThread = resource(useExternalThread);\n\nattachTransformScopes(useExternalThread, (scopes, parent) => {\n if (!scopes.threads && parent.threads.source === null) {\n const threadElement = scopes.thread as ClientElement<\"thread\">;\n scopes.threads = SingleThreadList({ thread: threadElement });\n // scopes mount in key order; re-declare thread after the threads source it resolves from\n delete scopes.thread;\n scopes.thread = Derived({\n source: \"threads\",\n query: { type: \"main\" },\n get: (aui) => aui.threads.thread(\"main\"),\n });\n }\n\n if (!scopes.threadListItem && parent.threadListItem.source === null) {\n scopes.threadListItem = Derived({\n source: \"threads\",\n query: { type: \"main\" },\n get: (aui) => aui.threads.item(\"main\"),\n });\n }\n\n scopes.composer ??= Derived({\n source: \"thread\",\n query: {},\n get: (aui) => aui.thread.composer(),\n });\n\n if (!scopes.modelContext && parent.modelContext.source === null) {\n scopes.modelContext = ModelContext();\n }\n if (!scopes.tools && parent.tools.source === null) {\n scopes.tools = Tools({});\n }\n if (!scopes.dataRenderers && parent.dataRenderers.source === null) {\n scopes.dataRenderers = DataRenderers();\n }\n if (!scopes.suggestions && parent.suggestions.source === null) {\n scopes.suggestions = Suggestions();\n }\n});\n"],"mappings":"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"}
1
+ {"version":3,"file":"ExternalThread.js","names":["useState","useMemo","useEffect","useEffectEvent","useCallback","useRef","resource","withKey","ClientElement","ClientOutput","useClientLookup","attachTransformScopes","useClientResource","Derived","AddToolResultOptions","AppendMessage","Attachment","AttachmentAdapter","CreateAttachment","PendingAttachment","RespondToToolApprovalOptions","ResumeToolCallOptions","MessagePartStatus","ThreadAssistantMessagePart","ThreadUserMessagePart","ThreadMessage","ToolCallMessagePartStatus","ExternalThreadQueueAdapter","ExternalThreadBranchAdapter","ToolResponse","ReadonlyJSONValue","QueueItemState","ComposerSendOptions","fileMatchesAccept","getThreadMessageText","isCreateAttachment","resolveToolApprovalResponse","toMessagePartStatus","ModelContext","Suggestions","Tools","DataRenderers","SingleThreadList","EMPTY_QUEUE_ITEMS","EMPTY_BRANCH_IDS","ExternalThreadMessage","id","COMPLETE_STATUS","Object","freeze","type","derivePartStatus","message","partIndex","part","status","ExternalThreadProps","messages","isRunning","isLoading","state","extras","isSendDisabled","onNew","onEdit","onReload","parentId","onStartRun","onCancel","onResume","onAddToolResult","options","onResumeToolCall","onLoadExternalState","attachmentAdapter","queue","branches","onRespondToToolApproval","MessageClientProps","index","useMessageClient","t0","$","_c","isCopied","setIsCopied","isHovering","setIsHovering","isEditing","setIsEditing","t1","content","map","idx","PartResource","messageId","partClients","t2","attachments","t3","_temp2","attachmentClients","t4","Symbol","for","handleBeginEdit","t5","handleCancelEdit","t6","msg","clear","sourceId","handleSendEdit","t7","ComposerClientResource","canCancel","onBeginEdit","onSend","composerClient","branchIds","t8","getBranches","indexOf","branchIndex","branchNumber","branchCount","length","t9","t10","isLast","speech","undefined","parts","composer","t11","t12","methods","t13","t14","t15","position","branchId","target","switchToBranch","t16","selector","get","findIndex","p","toolCallId","t17","selector_0","key","t18","getState","delete","_temp3","reload","speak","_temp4","stopSpeaking","_temp5","submitFeedback","_temp6","getCopyText","attachment","MessageClient","PartResourceProps","usePartResource","result","Error","response","toResponse","toolName","isError","artifact","modelContent","payload","response_0","approval","approved","resolution","addToolResult","resumeToolCall","respondToToolApproval","AttachmentResourceProps","onRemove","Promise","useAttachmentResource","remove","AttachmentResource","ComposerClientResourceProps","useQueueItemClient","item","onSteer","steer","QueueItemClient","drainAdapterAdd","ReturnType","upsert","asyncIterator","useLiveState","initial","setState","ref","next","current","prev","T","set","const","useComposerClientResource","text","setText","textRef","role","setRole","roleRef","runConfig","setRunConfig","runConfigRef","setAttachments","attachmentsRef","quote","setQuote","quoteRef","textParts","filter","_temp7","messageText","_temp8","join","updateFromMessage","a","removed","all","_temp9","a_1","removePendingAttachments","attachment_0","prev_0","a_2","upsertAttachment","queueItems","items","queueItemClients","accept","trim","isEmpty","canSend","attachmentAccept","dictation","fileOrAttachment","file","name","contentType","add","newAttachment","Math","random","toString","substring","prev_1","newAttachment_0","prev_2","removed_0","t19","removed_1","t20","opts","currentQuote","currentText","currentAttachments","isEmpty_0","dispatch","sendAttachments","composedMessage","createdAt","Date","startRun","metadata","custom","enqueue","attachment_1","send","then","error","prev_3","prev_4","prev_5","console","t21","t22","t23","addAttachment","clearAttachments","reset","cancel","beginEdit","startDictation","_temp0","stopDictation","_temp1","queueItem","dedupeMessagesById","seenIds","Set","deduped","i","has","warn","push","reverse","useExternalThread","messagesProp","threadState","messageIndex","m","handleReload","props","messageClients","handleCancelRun","at","handleSendNew","headId","message_0","composerQueue","hasQueue","hasBranches","hasEdit","hasReload","hasAttachments","_temp10","messageStates","edit","refetchThread","feedback","voice","switchBranchDuringRun","unstable_copy","isDisabled","capabilities","suggestions","message_1","appendMessage","state_0","t24","t25","append","deleteMessage","_temp11","resumeRun","cancelRun","importExternalState","getModelContext","_temp12","export","_temp13","import","_temp14","_temp15","_temp16","connectVoice","_temp17","disconnectVoice","_temp18","getVoiceVolume","_temp19","subscribeVoiceVolume","_temp21","muteVoice","_temp22","unmuteVoice","_temp23","ExternalThread","scopes","parent","threads","source","threadElement","thread","query","aui","threadListItem","modelContext","tools","dataRenderers","_temp","part_0","a_0","s","arr","config","_temp20"],"sources":["../../src/client/ExternalThread.ts"],"sourcesContent":["import {\n useState,\n useMemo,\n useEffect,\n useEffectEvent,\n useCallback,\n useRef,\n} from \"react\";\nimport { resource, withKey } from \"@assistant-ui/tap\";\nimport {\n type ClientElement,\n type ClientOutput,\n useClientLookup,\n attachTransformScopes,\n useClientResource,\n Derived,\n} from \"@assistant-ui/store\";\n\nimport type {\n AddToolResultOptions,\n AppendMessage,\n Attachment,\n AttachmentAdapter,\n CreateAttachment,\n PendingAttachment,\n RespondToToolApprovalOptions,\n ResumeToolCallOptions,\n MessagePartStatus,\n ThreadAssistantMessagePart,\n ThreadUserMessagePart,\n ThreadMessage,\n ToolCallMessagePartStatus,\n ExternalThreadQueueAdapter,\n ExternalThreadBranchAdapter,\n} from \"@assistant-ui/core\";\nimport { ToolResponse } from \"assistant-stream\";\nimport type { ReadonlyJSONValue } from \"assistant-stream/utils\";\nimport type { QueueItemState } from \"@assistant-ui/core/store\";\nimport type { ComposerSendOptions } from \"@assistant-ui/core/store\";\nimport {\n fileMatchesAccept,\n getThreadMessageText,\n isCreateAttachment,\n resolveToolApprovalResponse,\n toMessagePartStatus,\n} from \"@assistant-ui/core/internal\";\nimport { ModelContext, Suggestions } from \"@assistant-ui/core/store\";\nimport { Tools, DataRenderers } from \"@assistant-ui/core/react\";\nimport { SingleThreadList } from \"./SingleThreadList\";\n\nconst EMPTY_QUEUE_ITEMS: readonly QueueItemState[] = [];\nconst EMPTY_BRANCH_IDS: readonly string[] = [];\n\nexport type ExternalThreadMessage = ThreadMessage & {\n id: string;\n};\n\nconst COMPLETE_STATUS: MessagePartStatus = Object.freeze({\n type: \"complete\",\n});\n\nconst derivePartStatus = (\n message: ExternalThreadMessage,\n partIndex: number,\n part: ThreadAssistantMessagePart | ThreadUserMessagePart,\n): ToolCallMessagePartStatus => {\n if (!message.status) return COMPLETE_STATUS;\n return toMessagePartStatus(message, partIndex, part);\n};\n\nexport type ExternalThreadProps = {\n messages: readonly ExternalThreadMessage[];\n isRunning?: boolean;\n isLoading?: boolean | undefined;\n state?: ReadonlyJSONValue | undefined;\n extras?: unknown;\n /**\n * Whether sending new messages is currently disabled. When `true`, the\n * thread composer's input remains usable but `send()` is a no-op and\n * `composer.canSend` is `false`. Edit composers (saving message edits)\n * intentionally ignore this flag.\n */\n isSendDisabled?: boolean;\n /**\n * Callback for new messages (non-queue runtimes).\n * @note Unused when `queue` is provided — new messages are routed through `queue.enqueue` instead.\n */\n onNew?: (message: AppendMessage) => void;\n onEdit?: (message: AppendMessage) => void;\n onReload?: (parentId: string | null) => void;\n onStartRun?: () => void;\n onCancel?: () => void;\n onResume?: (() => void) | undefined;\n onAddToolResult?: ((options: AddToolResultOptions) => void) | undefined;\n /** Callback for resuming a tool call that is waiting for human input. */\n onResumeToolCall?: ((options: ResumeToolCallOptions) => void) | undefined;\n onLoadExternalState?: ((state: unknown) => void) | undefined;\n attachmentAdapter?: AttachmentAdapter | undefined;\n /** Queue adapter for runtimes that support message queuing and steering. */\n queue?: ExternalThreadQueueAdapter;\n /** Branch adapter for runtimes that track sibling variants of messages. */\n branches?: ExternalThreadBranchAdapter;\n /** Callback for tool approval decisions. Absent: responding to an approval throws a capability error. */\n onRespondToToolApproval?: (options: RespondToToolApprovalOptions) => void;\n};\n\ntype MessageClientProps = {\n message: ExternalThreadMessage;\n index: number;\n parentId: string | null;\n onEdit?: (message: AppendMessage) => void;\n onReload?: () => void;\n queue?: ExternalThreadQueueAdapter | undefined;\n branches?: ExternalThreadBranchAdapter | undefined;\n onRespondToToolApproval?:\n | ((options: RespondToToolApprovalOptions) => void)\n | undefined;\n onAddToolResult?: ((options: AddToolResultOptions) => void) | undefined;\n onResumeToolCall?: ((options: ResumeToolCallOptions) => void) | undefined;\n attachmentAdapter?: AttachmentAdapter | undefined;\n};\n\n// Message Client - minimal implementation\nconst useMessageClient = ({\n message,\n index,\n parentId,\n onEdit,\n onReload,\n queue,\n branches,\n onRespondToToolApproval,\n onAddToolResult,\n onResumeToolCall,\n attachmentAdapter,\n}: MessageClientProps): ClientOutput<\"message\"> => {\n const [isCopied, setIsCopied] = useState(false);\n const [isHovering, setIsHovering] = useState(false);\n const [isEditing, setIsEditing] = useState(false);\n\n const partClients = useClientLookup(\n message.content.map((part, idx) =>\n withKey(\n idx,\n PartResource({\n part,\n status: derivePartStatus(message, idx, part),\n messageId: message.id,\n onRespondToToolApproval,\n onAddToolResult,\n onResumeToolCall,\n }),\n ),\n ),\n );\n\n const attachmentClients = useClientLookup(\n (message.attachments ?? []).map((attachment) =>\n withKey(\n attachment.id,\n AttachmentResource({\n attachment,\n onRemove: () => {},\n }),\n ),\n ),\n );\n\n const handleBeginEdit = () => {\n setIsEditing(true);\n };\n\n const handleCancelEdit = () => {\n setIsEditing(false);\n };\n\n const handleSendEdit = (msg: AppendMessage) => {\n queue?.clear(\"edit\");\n onEdit?.({\n ...msg,\n parentId,\n sourceId: message.id,\n });\n setIsEditing(false);\n };\n\n const composerClient = useClientResource(\n ComposerClientResource({\n type: \"edit\",\n isEditing,\n canCancel: true,\n onCancel: handleCancelEdit,\n onBeginEdit: handleBeginEdit,\n onSend: handleSendEdit,\n message,\n queue,\n attachmentAdapter,\n }),\n );\n\n const branchIds = branches?.getBranches(message.id) ?? EMPTY_BRANCH_IDS;\n const branchIndex = branchIds.indexOf(message.id);\n const branchNumber = branchIndex === -1 ? 1 : branchIndex + 1;\n const branchCount = branchIndex === -1 ? 1 : branchIds.length;\n\n const state = useMemo(() => {\n return {\n ...message,\n attachments: message.attachments ?? [],\n parentId,\n isLast: false, // Will be set by thread\n branchNumber,\n branchCount,\n speech: undefined,\n parts: partClients.state,\n isCopied,\n isHovering,\n index,\n composer: composerClient.state,\n };\n }, [\n message,\n parentId,\n isCopied,\n isHovering,\n index,\n composerClient.state,\n partClients.state,\n branchNumber,\n branchCount,\n ]);\n\n return {\n getState: () => state,\n composer: () => composerClient.methods,\n delete: () => {},\n reload: () => {\n onReload?.();\n },\n speak: () => {},\n stopSpeaking: () => {},\n submitFeedback: () => {},\n switchToBranch: ({ position, branchId }) => {\n if (!branches) return;\n const target =\n branchId ??\n (branchIndex === -1\n ? undefined\n : position === \"previous\"\n ? branchIds[branchIndex - 1]\n : position === \"next\"\n ? branchIds[branchIndex + 1]\n : undefined);\n if (target !== undefined && target !== message.id)\n branches.switchToBranch(target);\n },\n getCopyText: () => getThreadMessageText(message),\n part: (selector) => {\n if (\"index\" in selector) {\n return partClients.get(selector);\n }\n const partIndex = state.parts.findIndex(\n (p) => p.type === \"tool-call\" && p.toolCallId === selector.toolCallId,\n );\n return partClients.get({ index: partIndex });\n },\n attachment: (selector) => {\n if (\"id\" in selector) {\n return attachmentClients.get({ key: selector.id });\n }\n return attachmentClients.get(selector);\n },\n setIsCopied,\n setIsHovering,\n };\n};\n\nconst MessageClient = resource(useMessageClient);\n\ntype PartResourceProps = {\n part: ThreadAssistantMessagePart | ThreadUserMessagePart;\n status: ToolCallMessagePartStatus;\n messageId: string;\n onRespondToToolApproval?:\n | ((options: RespondToToolApprovalOptions) => void)\n | undefined;\n onAddToolResult?: ((options: AddToolResultOptions) => void) | undefined;\n onResumeToolCall?: ((options: ResumeToolCallOptions) => void) | undefined;\n};\n\n// Part Client - minimal implementation\nconst usePartResource = ({\n part,\n status,\n messageId,\n onRespondToToolApproval,\n onAddToolResult,\n onResumeToolCall,\n}: PartResourceProps): ClientOutput<\"part\"> => {\n const state = useMemo(\n () => ({ ...part, status: status as MessagePartStatus }),\n [part, status],\n );\n\n return {\n getState: () => state,\n addToolResult: (result) => {\n if (!onAddToolResult)\n throw new Error(\n \"Runtime does not support tool results (onAddToolResult is not set).\",\n );\n if (part.type !== \"tool-call\")\n throw new Error(\"Tried to add tool result on non-tool message part\");\n\n const response = ToolResponse.toResponse(result);\n onAddToolResult({\n messageId,\n toolName: part.toolName,\n toolCallId: part.toolCallId,\n result: response.result as ReadonlyJSONValue,\n isError: response.isError,\n ...(response.artifact !== undefined && { artifact: response.artifact }),\n ...(response.modelContent !== undefined && {\n modelContent: response.modelContent,\n }),\n });\n },\n resumeToolCall: (payload) => {\n if (!onResumeToolCall)\n throw new Error(\n \"Runtime does not support resuming tool calls (onResumeToolCall is not set).\",\n );\n if (part.type !== \"tool-call\")\n throw new Error(\"Tried to resume tool call on non-tool message part\");\n\n onResumeToolCall({ toolCallId: part.toolCallId, payload });\n },\n respondToToolApproval: (response) => {\n if (!onRespondToToolApproval)\n throw new Error(\"Runtime does not support tool approvals.\");\n\n if (part.type !== \"tool-call\")\n throw new Error(\n \"Tried to respond to tool approval on non-tool message part\",\n );\n\n if (\n !part.approval ||\n part.approval.approved !== undefined ||\n part.approval.resolution !== undefined\n )\n throw new Error(\"Tool call has no pending approval\");\n\n onRespondToToolApproval(\n resolveToolApprovalResponse(part.approval, response),\n );\n },\n };\n};\n\nconst PartResource = resource(usePartResource);\n\ntype AttachmentResourceProps = {\n attachment: Attachment;\n onRemove?: () => void | Promise<void>;\n};\n\n// Attachment Client - minimal implementation\nconst useAttachmentResource = ({\n attachment,\n onRemove,\n}: AttachmentResourceProps): ClientOutput<\"attachment\"> => {\n return {\n getState: () => attachment,\n remove: async () => {\n await onRemove?.();\n },\n };\n};\n\nconst AttachmentResource = resource(useAttachmentResource);\n\ntype ComposerClientResourceProps = {\n type: \"thread\" | \"edit\";\n isEditing: boolean;\n canCancel: boolean;\n isSendDisabled?: boolean;\n onCancel: () => void;\n onBeginEdit?: () => void;\n onSend?: (message: AppendMessage) => void;\n message?: ExternalThreadMessage;\n queue?: ExternalThreadQueueAdapter | undefined;\n attachmentAdapter?: AttachmentAdapter | undefined;\n};\n\nconst useQueueItemClient = ({\n item,\n onSteer,\n onRemove,\n}: {\n item: QueueItemState;\n onSteer: () => void;\n onRemove: () => void;\n}): ClientOutput<\"queueItem\"> => {\n return {\n getState: () => item,\n steer: onSteer,\n remove: onRemove,\n };\n};\n\nconst QueueItemClient = resource(useQueueItemClient);\n\nconst drainAdapterAdd = async (\n result: ReturnType<AttachmentAdapter[\"add\"]>,\n upsert: (attachment: Attachment) => void,\n) => {\n if (Symbol.asyncIterator in result) {\n for await (const attachment of result) {\n upsert(attachment);\n }\n } else {\n upsert(await result);\n }\n};\n\n// State whose setter tracks the latest value in a ref, so imperative\n// call sequences (setText immediately followed by send) observe the write\n// before React re-renders — legacy composer parity.\nconst useLiveState = <T>(initial: T) => {\n const [state, setState] = useState(initial);\n const ref = useRef(state);\n const set = useCallback((next: T | ((prev: T) => T)) => {\n ref.current =\n typeof next === \"function\" ? (next as (prev: T) => T)(ref.current) : next;\n setState(ref.current);\n }, []);\n return [state, set, ref] as const;\n};\n\n// Composer Client - minimal implementation\nconst useComposerClientResource = ({\n type,\n isEditing,\n canCancel,\n isSendDisabled = false,\n onCancel,\n onBeginEdit,\n onSend,\n message,\n queue,\n attachmentAdapter,\n}: ComposerClientResourceProps): ClientOutput<\"composer\"> => {\n const [text, setText, textRef] = useLiveState(\"\");\n const [role, setRole, roleRef] = useLiveState<\n \"user\" | \"assistant\" | \"system\"\n >(\"user\");\n const [runConfig, setRunConfig, runConfigRef] = useLiveState<\n Record<string, unknown>\n >({});\n const [attachments, setAttachments, attachmentsRef] = useLiveState<\n readonly Attachment[]\n >([]);\n const [quote, setQuote, quoteRef] = useLiveState<\n { readonly text: string; readonly messageId: string } | undefined\n >(undefined);\n\n // Update composer values when editing begins\n const updateFromMessage = useEffectEvent(() => {\n if (message) {\n // Extract text from message content (text parts only)\n const textParts = message.content.filter((part) => part.type === \"text\");\n const messageText = textParts\n .map((part) => (\"text\" in part ? part.text : \"\"))\n .join(\"\\n\\n\");\n\n setText(messageText);\n setRole(message.role);\n setAttachments(message.attachments ?? []);\n }\n });\n\n useEffect(() => {\n if (isEditing) {\n updateFromMessage();\n }\n }, [isEditing]);\n\n const attachmentClients = useClientLookup(\n attachments.map((attachment) =>\n withKey(\n attachment.id,\n AttachmentResource({\n attachment,\n onRemove: async () => {\n await attachmentAdapter?.remove(attachment);\n setAttachments((prev) =>\n prev.filter((a) => a.id !== attachment.id),\n );\n },\n }),\n ),\n ),\n );\n\n const removePendingAttachments = async (removed: readonly Attachment[]) => {\n if (!attachmentAdapter) return;\n await Promise.all(\n removed\n .filter((a) => a.status.type !== \"complete\")\n .map((a) => attachmentAdapter.remove(a)),\n );\n };\n\n const upsertAttachment = (attachment: Attachment) => {\n setAttachments((prev) => {\n const idx = prev.findIndex((a) => a.id === attachment.id);\n if (idx === -1) return [...prev, attachment];\n const next = [...prev];\n next[idx] = attachment;\n return next;\n });\n };\n\n const queueItems = queue?.items ?? EMPTY_QUEUE_ITEMS;\n const queueItemClients = useClientLookup(\n queueItems.map((item) =>\n withKey(\n item.id,\n QueueItemClient({\n item,\n onSteer: () => queue?.steer(item.id),\n onRemove: () => queue?.remove(item.id),\n }),\n ),\n ),\n );\n\n const state = useMemo(() => {\n const isEmpty = !text.trim() && !attachments.length;\n return {\n text,\n role,\n attachments: attachmentClients.state,\n runConfig,\n isEditing,\n canCancel,\n canSend: isEditing && !isEmpty && !isSendDisabled,\n attachmentAccept: attachmentAdapter?.accept ?? \"*\",\n isEmpty,\n type,\n dictation: undefined,\n quote,\n queue: queueItems,\n };\n }, [\n text,\n role,\n attachmentClients.state,\n runConfig,\n isEditing,\n canCancel,\n isSendDisabled,\n type,\n attachments.length,\n quote,\n queueItems,\n attachmentAdapter?.accept,\n ]);\n\n return {\n getState: () => state,\n setText,\n setRole,\n setRunConfig,\n addAttachment: async (fileOrAttachment: File | CreateAttachment) => {\n if (attachmentAdapter) {\n const file = isCreateAttachment(fileOrAttachment)\n ? {\n name: fileOrAttachment.name,\n type: fileOrAttachment.contentType ?? \"\",\n }\n : { name: fileOrAttachment.name, type: fileOrAttachment.type };\n if (!fileMatchesAccept(file, attachmentAdapter.accept))\n throw new Error(\n `File type ${file.type || \"unknown\"} is not accepted. Accepted types: ${attachmentAdapter.accept}`,\n );\n }\n if (!isCreateAttachment(fileOrAttachment) && attachmentAdapter) {\n await drainAdapterAdd(\n attachmentAdapter.add({ file: fileOrAttachment }),\n upsertAttachment,\n );\n } else if (!isCreateAttachment(fileOrAttachment)) {\n const newAttachment: Attachment = {\n id: Math.random().toString(36).substring(7),\n type: \"file\",\n name: fileOrAttachment.name,\n contentType: fileOrAttachment.type,\n file: fileOrAttachment,\n status: { type: \"complete\" },\n content: [],\n };\n setAttachments((prev) => [...prev, newAttachment]);\n } else {\n const newAttachment: Attachment = {\n id: fileOrAttachment.id ?? Math.random().toString(36).substring(7),\n type: fileOrAttachment.type ?? \"document\",\n name: fileOrAttachment.name,\n contentType: fileOrAttachment.contentType,\n content: fileOrAttachment.content,\n status: { type: \"complete\" },\n };\n setAttachments((prev) => [...prev, newAttachment]);\n }\n },\n clearAttachments: async () => {\n const removed = attachmentsRef.current;\n setAttachments([]);\n await removePendingAttachments(removed);\n },\n attachment: (selector) => {\n if (\"id\" in selector) {\n return attachmentClients.get({ key: selector.id });\n }\n return attachmentClients.get(selector);\n },\n reset: async () => {\n const removed = attachmentsRef.current;\n setText(\"\");\n setRole(\"user\");\n setRunConfig({});\n setAttachments([]);\n setQuote(undefined);\n await removePendingAttachments(removed);\n },\n send: (opts?: ComposerSendOptions) => {\n const currentQuote = quoteRef.current;\n const currentText = textRef.current;\n const currentAttachments = attachmentsRef.current;\n const isEmpty = !currentText.trim() && !currentAttachments.length;\n if (!isEditing || isEmpty || isSendDisabled) return;\n\n setText(\"\");\n setAttachments([]);\n setQuote(undefined);\n\n const dispatch = (sendAttachments: readonly Attachment[]) => {\n const composedMessage: AppendMessage = {\n role: roleRef.current,\n content: currentText\n ? [{ type: \"text\" as const, text: currentText }]\n : [],\n attachments: sendAttachments as any,\n createdAt: new Date(),\n parentId: null,\n sourceId: null,\n runConfig: runConfigRef.current,\n startRun: opts?.startRun,\n metadata: {\n custom: { ...(currentQuote ? { quote: currentQuote } : {}) },\n },\n };\n if (queue) {\n queue.enqueue(composedMessage, { steer: opts?.steer ?? false });\n } else {\n onSend?.(composedMessage);\n }\n };\n\n if (attachmentAdapter && currentAttachments.length > 0) {\n void Promise.all(\n currentAttachments.map((attachment) =>\n attachment.status.type === \"complete\"\n ? attachment\n : attachmentAdapter.send(attachment as PendingAttachment),\n ),\n ).then(dispatch, (error) => {\n // Upload failed: merge the failed send back into the draft.\n setText((prev) =>\n currentText && prev\n ? currentText + \"\\n\" + prev\n : currentText || prev,\n );\n setQuote((prev) => prev ?? currentQuote);\n setAttachments((prev) => [...currentAttachments, ...prev]);\n console.error(\"Failed to send attachments\", error);\n });\n } else {\n dispatch(currentAttachments);\n }\n },\n cancel: onCancel,\n beginEdit: () => {\n onBeginEdit?.();\n },\n startDictation: () => {},\n stopDictation: () => {},\n setQuote,\n queueItem: (selector: { index: number }) => {\n return queueItemClients.get(selector);\n },\n };\n};\n\nconst ComposerClientResource = resource(useComposerClientResource);\n\nconst dedupeMessagesById = (messages: readonly ExternalThreadMessage[]) => {\n const seenIds = new Set<string>();\n const deduped: ExternalThreadMessage[] = [];\n for (let i = messages.length - 1; i >= 0; i--) {\n const message = messages[i]!;\n if (seenIds.has(message.id)) {\n console.warn(\n `ExternalThread: duplicate message id \"${message.id}\" in the provided messages array; keeping the last occurrence.`,\n );\n continue;\n }\n seenIds.add(message.id);\n deduped.push(message);\n }\n return deduped.length === messages.length ? messages : deduped.reverse();\n};\n\n// External Thread Client\nconst useExternalThread = ({\n messages: messagesProp,\n isRunning = false,\n isLoading = false,\n state: threadState,\n extras,\n isSendDisabled = false,\n onNew,\n onEdit,\n onReload,\n onStartRun,\n onCancel,\n onResume,\n onAddToolResult,\n onResumeToolCall,\n onLoadExternalState,\n attachmentAdapter,\n queue,\n branches,\n onRespondToToolApproval,\n}: ExternalThreadProps): ClientOutput<\"thread\"> => {\n const messages = useMemo(\n () => dedupeMessagesById(messagesProp),\n [messagesProp],\n );\n\n const handleReload = (messageId: string) => {\n const messageIndex = messages.findIndex((m) => m.id === messageId);\n if (messageIndex === -1) return;\n\n const parentId = messageIndex > 0 ? messages[messageIndex - 1]!.id : null;\n queue?.clear(\"reload\");\n onReload?.(parentId);\n };\n\n const messageClients = useClientLookup(\n messages.map((msg, index) => {\n const props: MessageClientProps = {\n message: msg,\n index,\n parentId: index > 0 ? messages[index - 1]!.id : null,\n onReload: () => handleReload(msg.id),\n queue,\n branches,\n onRespondToToolApproval,\n onAddToolResult,\n onResumeToolCall,\n attachmentAdapter,\n };\n if (onEdit) props.onEdit = onEdit;\n return withKey(msg.id, MessageClient(props));\n }),\n );\n\n const handleCancelRun = () => {\n queue?.clear(\"cancel-run\");\n onCancel?.();\n };\n\n const handleSendNew = (message: AppendMessage) => {\n // The composer does not know the thread; stamp the current head as the\n // parent (legacy composer parity).\n onNew?.({ ...message, parentId: messages.at(-1)?.id ?? null });\n };\n\n const headId = messages.at(-1)?.id ?? null;\n const composerQueue = useMemo(\n (): ExternalThreadQueueAdapter | undefined =>\n queue && {\n ...queue,\n enqueue: (message, options) =>\n queue.enqueue(\n { ...message, parentId: message.parentId ?? headId },\n options,\n ),\n },\n [queue, headId],\n );\n\n const composerClient = useClientResource(\n ComposerClientResource({\n type: \"thread\",\n isEditing: true,\n canCancel: isRunning,\n isSendDisabled,\n onCancel: handleCancelRun,\n onSend: handleSendNew,\n queue: composerQueue,\n attachmentAdapter,\n }),\n );\n\n const hasQueue = !!queue;\n const hasBranches = !!branches;\n const hasEdit = !!onEdit;\n const hasReload = !!onReload;\n const hasAttachments = !!attachmentAdapter;\n const state = useMemo(() => {\n const messageStates = messageClients.state.map((s, idx, arr) => ({\n ...s,\n isLast: idx === arr.length - 1,\n }));\n\n return {\n isEmpty: messages.length === 0,\n isDisabled: false,\n isLoading,\n isRunning,\n capabilities: {\n edit: hasEdit,\n delete: false,\n reload: hasReload,\n refetchThread: false,\n cancel: isRunning,\n speech: false,\n attachments: hasAttachments,\n feedback: false,\n voice: false,\n switchToBranch: hasBranches,\n switchBranchDuringRun: false,\n unstable_copy: false,\n dictation: false,\n queue: hasQueue,\n },\n messages: messageStates,\n state: threadState ?? {},\n suggestions: [],\n extras,\n speech: undefined,\n voice: undefined,\n composer: composerClient.state,\n };\n }, [\n messages,\n isRunning,\n isLoading,\n threadState,\n extras,\n hasQueue,\n hasBranches,\n hasEdit,\n hasReload,\n hasAttachments,\n messageClients.state,\n composerClient.state,\n ]);\n\n return {\n getState: () => state,\n composer: () => composerClient.methods,\n append: (message) => {\n const appendMessage: AppendMessage =\n typeof message === \"string\"\n ? {\n createdAt: new Date(),\n parentId: messages.at(-1)?.id ?? null,\n sourceId: null,\n runConfig: {},\n role: \"user\",\n content: [{ type: \"text\", text: message }],\n attachments: [],\n metadata: { custom: {} },\n }\n : {\n createdAt: message.createdAt ?? new Date(),\n parentId: message.parentId ?? messages.at(-1)?.id ?? null,\n sourceId: message.sourceId ?? null,\n role: message.role ?? \"user\",\n content: message.content,\n attachments: message.attachments ?? [],\n metadata: message.metadata ?? { custom: {} },\n runConfig: message.runConfig ?? {},\n startRun: message.startRun,\n };\n if (queue) {\n queue.enqueue(appendMessage, { steer: false });\n } else {\n onNew?.(appendMessage);\n }\n },\n deleteMessage: () => {},\n startRun: () => {\n onStartRun?.();\n },\n resumeRun: () => {\n if (!onResume)\n throw new Error(\n \"Runtime does not support resuming runs (onResume is not set).\",\n );\n onResume();\n },\n cancelRun: handleCancelRun,\n importExternalState: (state: unknown) => {\n if (!onLoadExternalState)\n throw new Error(\n \"Runtime does not support importing external states (onLoadExternalState is not set).\",\n );\n onLoadExternalState(state);\n },\n getModelContext: () => ({ tools: {}, config: {} }),\n export: () => ({ messages: [] }),\n import: () => {},\n reset: () => {},\n message: (selector) => {\n if (\"id\" in selector) {\n return messageClients.get({ key: selector.id });\n }\n return messageClients.get(selector);\n },\n stopSpeaking: () => {},\n connectVoice: () => {},\n disconnectVoice: () => {},\n getVoiceVolume: () => 0,\n subscribeVoiceVolume: () => () => {},\n muteVoice: () => {},\n unmuteVoice: () => {},\n };\n};\n\nexport const ExternalThread = resource(useExternalThread);\n\nattachTransformScopes(useExternalThread, (scopes, parent) => {\n if (!scopes.threads && parent.threads.source === null) {\n const threadElement = scopes.thread as ClientElement<\"thread\">;\n scopes.threads = SingleThreadList({ thread: threadElement });\n // scopes mount in key order; re-declare thread after the threads source it resolves from\n delete scopes.thread;\n scopes.thread = Derived({\n source: \"threads\",\n query: { type: \"main\" },\n get: (aui) => aui.threads.thread(\"main\"),\n });\n }\n\n if (!scopes.threadListItem && parent.threadListItem.source === null) {\n scopes.threadListItem = Derived({\n source: \"threads\",\n query: { type: \"main\" },\n get: (aui) => aui.threads.item(\"main\"),\n });\n }\n\n scopes.composer ??= Derived({\n source: \"thread\",\n query: {},\n get: (aui) => aui.thread.composer(),\n });\n\n if (!scopes.modelContext && parent.modelContext.source === null) {\n scopes.modelContext = ModelContext();\n }\n if (!scopes.tools && parent.tools.source === null) {\n scopes.tools = Tools({});\n }\n if (!scopes.dataRenderers && parent.dataRenderers.source === null) {\n scopes.dataRenderers = DataRenderers();\n }\n if (!scopes.suggestions && parent.suggestions.source === null) {\n scopes.suggestions = Suggestions();\n }\n});\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"InMemoryThreadList.d.ts","names":[],"sources":["../../src/client/InMemoryThreadList.ts"],"mappings":";;;KAeY;EACV,SAAS,qBAAqB,gBAAgB;EAC9C,oBAAoB;EACpB;;cA0KW,gDAAkB,SAAA,0BAAA,OAAA"}
1
+ {"version":3,"file":"InMemoryThreadList.d.ts","names":[],"sources":["../../src/client/InMemoryThreadList.ts"],"mappings":";;;KAeY;EACV,SAAS,qBAAqB,gBAAgB;EAC9C,oBAAoB;EACpB;;cA8LW,gDAAkB,SAAA,0BAAA,OAAA"}