diff --git a/tools/server/webui/src/lib/components/app/chat/ChatAttachments/ChatAttachmentMcpPrompt.svelte b/tools/server/webui/src/lib/components/app/chat/ChatAttachments/ChatAttachmentMcpPrompt.svelte index b8b27067e8..88348bda6a 100644 --- a/tools/server/webui/src/lib/components/app/chat/ChatAttachments/ChatAttachmentMcpPrompt.svelte +++ b/tools/server/webui/src/lib/components/app/chat/ChatAttachments/ChatAttachmentMcpPrompt.svelte @@ -1,12 +1,7 @@ -
-
-
-
-
- {#if getServerFavicon()} - { - (e.currentTarget as HTMLImageElement).style.display = 'none'; - }} - /> - {/if} +
+ - {getServerDisplayName()} -
- -
- {prompt.name} - - {#if isLoading} - Loading... - {/if} -
- - {#if loadError} -

{loadError}

- {/if} - - {#if hasContent} - - {/if} - - {#if hasArguments} -
- - - {#if isEditingAllowed && !isEditingArguments && onArgumentsChange} - - {/if} -
- {/if} -
- - {#if !readonly && onRemove} - - {/if} -
- - {#if showArguments && hasArguments} -
- {#if isEditingArguments} -
- {#each Object.entries(editedArguments) as [key, value] (key)} -
- - updateArgument(key, e.currentTarget.value)} - class="w-full rounded border border-purple-300 bg-white px-2 py-1 text-xs text-foreground outline-none focus:border-purple-500 dark:border-purple-700 dark:bg-purple-950/50" - /> -
- {/each} - -
- - -
-
- {:else} -
- {#each Object.entries(prompt.arguments ?? {}) as [key, value] (key)} -
- {key}: - {value} -
- {/each} -
- {/if} -
- {/if} -
- - {#if showContent && hasContent} - - {#if currentConfig.renderUserContentAsMarkdown} -
- -
- {:else} - - {prompt.content} - - {/if} -
+ onRemove?.()} /> +
{/if}
diff --git a/tools/server/webui/src/lib/components/app/chat/ChatAttachments/ChatAttachmentsList.svelte b/tools/server/webui/src/lib/components/app/chat/ChatAttachments/ChatAttachmentsList.svelte index 211144af9e..66bd59567f 100644 --- a/tools/server/webui/src/lib/components/app/chat/ChatAttachments/ChatAttachmentsList.svelte +++ b/tools/server/webui/src/lib/components/app/chat/ChatAttachments/ChatAttachmentsList.svelte @@ -28,9 +28,6 @@ limitToSingleRow?: boolean; // For vision modality check activeModelId?: string; - // For MCP prompt argument editing - isEditingAllowed?: boolean; - onMcpPromptArgumentsChange?: (fileId: string, args: Record) => void; } let { @@ -45,9 +42,7 @@ imageHeight = 'h-24', imageWidth = 'w-auto', limitToSingleRow = false, - activeModelId, - isEditingAllowed = false, - onMcpPromptArgumentsChange + activeModelId }: Props = $props(); let displayItems = $derived(getAttachmentDisplayItems({ uploadedFiles, attachments })); @@ -158,11 +153,7 @@ {readonly} isLoading={item.isLoading} loadError={item.loadError} - {isEditingAllowed} onRemove={onFileRemove ? () => onFileRemove(item.id) : undefined} - onArgumentsChange={onMcpPromptArgumentsChange - ? (args) => onMcpPromptArgumentsChange(item.id, args) - : undefined} /> {/if} {:else if item.isImage && item.preview} @@ -247,11 +238,7 @@ {readonly} isLoading={item.isLoading} loadError={item.loadError} - {isEditingAllowed} onRemove={onFileRemove ? () => onFileRemove(item.id) : undefined} - onArgumentsChange={onMcpPromptArgumentsChange - ? (args) => onMcpPromptArgumentsChange(item.id, args) - : undefined} /> {/if} {:else if item.isImage && item.preview} diff --git a/tools/server/webui/src/lib/components/app/chat/ChatForm/ChatFormActions/ChatFormActionFileAttachments.svelte b/tools/server/webui/src/lib/components/app/chat/ChatForm/ChatFormActions/ChatFormActionFileAttachments.svelte index a55b3e8db1..ff48a8ddb8 100644 --- a/tools/server/webui/src/lib/components/app/chat/ChatForm/ChatFormActions/ChatFormActionFileAttachments.svelte +++ b/tools/server/webui/src/lib/components/app/chat/ChatForm/ChatFormActions/ChatFormActionFileAttachments.svelte @@ -1,10 +1,12 @@ + +
+ + + {#if message.timestamp} +
+ +
+ {/if} +
diff --git a/tools/server/webui/src/lib/components/app/chat/ChatScreen/ChatScreen.svelte b/tools/server/webui/src/lib/components/app/chat/ChatScreen/ChatScreen.svelte index 6c5fb2ce56..19a58553f4 100644 --- a/tools/server/webui/src/lib/components/app/chat/ChatScreen/ChatScreen.svelte +++ b/tools/server/webui/src/lib/components/app/chat/ChatScreen/ChatScreen.svelte @@ -421,7 +421,7 @@ >
-

llama.cpp

+

llama.cpp

{serverStore.props?.modalities?.audio diff --git a/tools/server/webui/src/lib/components/app/chat/McpPromptContent.svelte b/tools/server/webui/src/lib/components/app/chat/McpPromptContent.svelte new file mode 100644 index 0000000000..6c51c610dd --- /dev/null +++ b/tools/server/webui/src/lib/components/app/chat/McpPromptContent.svelte @@ -0,0 +1,186 @@ + + +

+
+
+ {#if getServerFavicon()} + { + (e.currentTarget as HTMLImageElement).style.display = 'none'; + }} + /> + {/if} + {getServerDisplayName()} + · + {prompt.name} +
+ + {#if showArgBadges} +
+ {#each argumentEntries as [key] (key)} + + (hoveredArgKey = key)} + onmouseleave={() => (hoveredArgKey = null)} + > + {key} + + {/each} +
+ {/if} +
+ + {#if loadError} + + {loadError} + + {:else if isLoading} + + + Loading prompt content... + + + {:else if hasContent} + + + + + {#each contentParts as part, i (i)}{#if part.argKey} (hoveredArgKey = part.argKey)} + onmouseleave={() => (hoveredArgKey = null)}>{part.text}{:else}{part.text}{/if}{/each} + + {/if} +
diff --git a/tools/server/webui/src/lib/components/app/index.ts b/tools/server/webui/src/lib/components/app/index.ts index cf5fffc8c8..0fc7780d80 100644 --- a/tools/server/webui/src/lib/components/app/index.ts +++ b/tools/server/webui/src/lib/components/app/index.ts @@ -23,11 +23,14 @@ export { default as ChatMessage } from './chat/ChatMessages/ChatMessage.svelte'; export { default as ChatMessageActions } from './chat/ChatMessages/ChatMessageActions.svelte'; export { default as ChatMessageBranchingControls } from './chat/ChatMessages/ChatMessageBranchingControls.svelte'; export { default as ChatMessageStatistics } from './chat/ChatMessages/ChatMessageStatistics.svelte'; +export { default as ChatMessageMcpPrompt } from './chat/ChatMessages/ChatMessageMcpPrompt.svelte'; export { default as ChatMessageSystem } from './chat/ChatMessages/ChatMessageSystem.svelte'; export { default as ChatMessages } from './chat/ChatMessages/ChatMessages.svelte'; export { default as CollapsibleContentBlock } from './chat/ChatMessages/CollapsibleContentBlock.svelte'; export { default as MessageBranchingControls } from './chat/ChatMessages/ChatMessageBranchingControls.svelte'; +export { default as McpPromptContent } from './chat/McpPromptContent.svelte'; + export { default as ChatScreen } from './chat/ChatScreen/ChatScreen.svelte'; export { default as KeyValuePairs } from './misc/KeyValuePairs.svelte'; export { default as ChatScreenHeader } from './chat/ChatScreen/ChatScreenHeader.svelte';