diff --git a/frontend/src/lib/components/flows/content/AgentEditorModal.svelte b/frontend/src/lib/components/flows/content/AgentEditorModal.svelte index f8e9ce1f8a..a1bd126322 100644 --- a/frontend/src/lib/components/flows/content/AgentEditorModal.svelte +++ b/frontend/src/lib/components/flows/content/AgentEditorModal.svelte @@ -37,6 +37,7 @@ import { linkedModulesForAgent, linkedToolsScope } from '../linkedAgentToolsStore.svelte' import AgentEditorHost from './AgentEditorHost.svelte' import AgentSettings from './AgentSettings.svelte' + import AgentEvalsModal from './AgentEvalsModal.svelte' import { useOperatingWorkspace } from '$lib/components/operatingWorkspace.svelte' const operatingWorkspace = useOperatingWorkspace() @@ -92,6 +93,7 @@ let host = $state | undefined>(undefined) let versionDrawer: Drawer | undefined = $state(undefined) let settingsDrawer: Drawer | undefined = $state(undefined) + let evalsModal: AgentEvalsModal | undefined = $state(undefined) let saving = $state(false) // Counted per agent, so a deploy that leaves the editor on the same agent still refetches the @@ -163,6 +165,12 @@ // belongs to that level rather than to the dialog's own name. let description = $derived(inEvals || inSettings || refused ? undefined : AGENT_DESCRIPTION) + // The dialog's levels are its pages; a page has none, so evals open over it as a dialog. + function openEvals() { + if (layout === 'modal') showAgentEditorView('evals') + else evalsModal?.openModal() + } + function openSettings() { if (layout === 'modal') showAgentEditorView('settings') else settingsDrawer?.openDrawer() @@ -410,7 +418,7 @@ variant="default" startIcon={{ icon: FlaskConical }} title="Run this agent against a dataset of cases" - on:click={() => showAgentEditorView('evals')} + on:click={openEvals} > Evals @@ -507,6 +515,15 @@ /> {/snippet} + {#if layout === 'page' && ws} + + {/if} + settingsDrawer?.closeDrawer()}> {@render settingsFields()} diff --git a/frontend/src/lib/components/flows/content/AgentEvalsModal.svelte b/frontend/src/lib/components/flows/content/AgentEvalsModal.svelte new file mode 100644 index 0000000000..3346db4cf8 --- /dev/null +++ b/frontend/src/lib/components/flows/content/AgentEvalsModal.svelte @@ -0,0 +1,49 @@ + + +{#if open} + + {#snippet titleBadge()} + {#if !location} + Beta + {/if} + {/snippet} + + +{/if} diff --git a/frontend/src/routes/(root)/(logged)/agents/get/[...path]/+page.svelte b/frontend/src/routes/(root)/(logged)/agents/get/[...path]/+page.svelte index 820fe4a169..bb8610a9d5 100644 --- a/frontend/src/routes/(root)/(logged)/agents/get/[...path]/+page.svelte +++ b/frontend/src/routes/(root)/(logged)/agents/get/[...path]/+page.svelte @@ -5,10 +5,8 @@ import { base } from '$lib/base' import { goto } from '$lib/navigation' import { copilotInfo } from '$lib/aiStore' - import { Badge, Button } from '$lib/components/common' - import Modal from '$lib/components/common/modal/Modal.svelte' - import EvalsPane from '$lib/components/aiEvals/EvalsPane.svelte' - import type { EvalsLocation } from '$lib/components/aiEvals/evalUtils' + import { Button } from '$lib/components/common' + import AgentEvalsModal from '$lib/components/flows/content/AgentEvalsModal.svelte' import DropdownV2 from '$lib/components/DropdownV2.svelte' import SummaryPathDisplay from '$lib/components/SummaryPathDisplay.svelte' import ToggleButtonGroup from '$lib/components/common/toggleButton-v2/ToggleButtonGroup.svelte' @@ -44,14 +42,7 @@ let shareModal: ShareModal | undefined = $state(undefined) let deploymentDrawer: DeployWorkspaceDrawer | undefined = $state(undefined) let deleteOpen = $state(false) - let evalsOpen = $state(false) - // Where the evals pane is within itself, so its levels extend the dialog's trail. Cleared on the - // way in: the pane reports a level once it is on one, and never that it is back at its root. - let evalsLocation = $state(undefined) - function openEvals() { - evalsLocation = undefined - evalsOpen = true - } + let evalsModal: AgentEvalsModal | undefined = $state(undefined) async function deleteAgent() { if (!ws) return @@ -131,7 +122,7 @@ unifiedSize="md" startIcon={{ icon: FlaskConical }} title="Run this agent against a dataset of cases" - onClick={openEvals} + onClick={() => evalsModal?.openModal()} > Evals @@ -204,26 +195,8 @@ -{#if evalsOpen && ws} - - {#snippet titleBadge()} - {#if !evalsLocation} - Beta - {/if} - {/snippet} - - +{#if ws} + {/if} {#if config}