+ {model.tools && (
+
+
+ Tools
+
+
+ )}
{model.num_mmproj > 0 && (
@@ -165,10 +172,10 @@ export const ModelInfoHoverCard = ({
)}
- {model.tools && (
+ {model.num_mmproj > 0 && model.tools && (
- Tools
+ Proactive
)}
diff --git a/web-app/src/containers/__tests__/EditModel.test.tsx b/web-app/src/containers/__tests__/EditModel.test.tsx
index 6c0dfd059..345bc91d6 100644
--- a/web-app/src/containers/__tests__/EditModel.test.tsx
+++ b/web-app/src/containers/__tests__/EditModel.test.tsx
@@ -82,6 +82,7 @@ vi.mock('@tabler/icons-react', () => ({
IconEye: () =>
,
IconTool: () =>
,
IconLoader2: () =>
,
+ IconSparkles: () =>
,
}))
describe('DialogEditModel - Basic Component Tests', () => {
@@ -189,7 +190,7 @@ describe('DialogEditModel - Basic Component Tests', () => {
{
id: 'test-model.gguf',
displayName: 'Test Model',
- capabilities: ['vision', 'tools'],
+ capabilities: ['vision', 'tools', 'proactive'],
},
],
settings: [],
@@ -226,7 +227,7 @@ describe('DialogEditModel - Basic Component Tests', () => {
{
id: 'test-model.gguf',
displayName: 'Test Model',
- capabilities: ['vision', 'tools', 'completion', 'embeddings', 'web_search', 'reasoning'],
+ capabilities: ['vision', 'tools', 'proactive', 'completion', 'embeddings', 'web_search', 'reasoning'],
},
],
settings: [],
@@ -240,7 +241,7 @@ describe('DialogEditModel - Basic Component Tests', () => {
)
// Component should render without errors even with extra capabilities
- // The capabilities helper should only extract vision and tools
+ // The capabilities helper should only extract vision, tools, and proactive
expect(container).toBeInTheDocument()
})
})
diff --git a/web-app/src/containers/dialogs/EditModel.tsx b/web-app/src/containers/dialogs/EditModel.tsx
index f7dec06eb..78f6e93c2 100644
--- a/web-app/src/containers/dialogs/EditModel.tsx
+++ b/web-app/src/containers/dialogs/EditModel.tsx
@@ -17,6 +17,7 @@ import {
IconTool,
IconAlertTriangle,
IconLoader2,
+ IconSparkles,
} from '@tabler/icons-react'
import { useState, useEffect } from 'react'
import { useTranslation } from '@/i18n/react-i18next-compat'
@@ -45,6 +46,7 @@ export const DialogEditModel = ({
const [capabilities, setCapabilities] = useState
>({
vision: false,
tools: false,
+ proactive: false,
})
// Initialize with the provided model ID or the first model if available
@@ -67,6 +69,7 @@ export const DialogEditModel = ({
const capabilitiesToObject = (capabilitiesList: string[]) => ({
vision: capabilitiesList.includes('vision'),
tools: capabilitiesList.includes('tools'),
+ proactive: capabilitiesList.includes('proactive'),
})
// Initialize capabilities and display name from selected model
@@ -268,6 +271,23 @@ export const DialogEditModel = ({
disabled={isLoading}
/>