{#if message.from === "assistant"}
(isTapped = !isTapped)} onkeydown={() => (isTapped = !isTapped)} >
{#if message.personaResponses && message.personaResponses.length > 0}
onretry?.({ id: message.id, content: undefined, personaId })} />
{:else}
{#if personaName}
{personaName}
{#if personaOccupation || personaStance}
{#if personaOccupation}
{personaOccupation}
{/if}{#if personaOccupation && personaStance}
•
{/if}{#if personaStance}
{personaStance}
{/if}
{/if}
{/if} {#if message.files?.length}
{#each message.files as file (file.value)}
{/each}
{/if} {#if hasServerReasoning} {@const summaries = reasoningUpdates .filter((u) => u.subtype === MessageReasoningUpdateType.Status) .map((u) => u.status)}
{/if}
{#if isLast && loading && message.content.length === 0}
{/if} {#if hasClientThink} {#each thinkSegments as part, _i} {#if part && part.startsWith("
")} {@const trimmed = part.trimEnd()} {@const isClosed = trimmed.endsWith("
")} {#if isClosed} {@const thinkContent = trimmed.slice(7, -8)} {@const summary = thinkContent.trim().split(/\n+/)[0] || "Reasoning"}
{:else}
{/if} {:else if part && part.trim().length > 0}
{/if} {/each} {:else}
{/if}
{#if !isLast || !loading}
{ isCopied = true; }} classNames="btn rounded-md p-2 text-sm text-gray-500 hover:bg-gray-100 dark:text-gray-400 dark:hover:bg-gray-700/50" value={message.content} iconClassNames="text-xs" />
{/if}
{/if} {#if message.routerMetadata && (!isLast || !loading)}
{message.routerMetadata.route}
with
{#if publicConfig.isHuggingChat}
{message.routerMetadata.model.split("/").pop()}
{:else}
{message.routerMetadata.model.split("/").pop()}
{/if}
{#if alternatives.length > 1 && editMsdgId === null}
onshowAlternateMsg?.(payload)} /> {/if}
{/if}
{/if} {#if message.from === "user"}
(isTapped = !isTapped)} onkeydown={() => (isTapped = !isTapped)} >
{#if message.files?.length}
{#each message.files as file}
{/each}
{/if}
{#if !editMode}
{message.content.trim()}
{:else}
{ e.preventDefault(); onretry?.({ content: editContentEl?.value, id: message.id }); editMsdgId = null; }} >
Send
{ editMsdgId = null; }} > Cancel
{/if}
{#if alternatives.length > 1 && editMsdgId === null}
onshowAlternateMsg?.(payload)} /> {/if} {#if (alternatives.length > 1 && editMsdgId === null) || (!loading && !editMode)}
(editMsdgId = message.id)} >
Edit
{/if}
{/if}