diff --git a/apps/web/src/app/(sandbox)/sessions/[sessionId]/SessionWorkspace.client.test.tsx b/apps/web/src/app/(sandbox)/sessions/[sessionId]/SessionWorkspace.client.test.tsx index df1b51ca5..ce8dfba10 100644 --- a/apps/web/src/app/(sandbox)/sessions/[sessionId]/SessionWorkspace.client.test.tsx +++ b/apps/web/src/app/(sandbox)/sessions/[sessionId]/SessionWorkspace.client.test.tsx @@ -12,13 +12,21 @@ import { SandboxLayoutContext } from '../../use-sandbox-layout'; import { SessionWorkspace, type SessionInfo } from './SessionWorkspace'; import { useOpenSessionTaskPanel } from './session-task-panel-context'; -const { useMediaQueryMock, sessionQueryState, fastTaskQueryState } = vi.hoisted( - () => ({ - useMediaQueryMock: vi.fn(), - sessionQueryState: { data: null as unknown }, - fastTaskQueryState: { data: null as unknown }, - }), -); +const { + useMediaQueryMock, + sessionQueryState, + fastTaskQueryState, + searchParamsRef, + useTaskSummaryMock, + useTaskMock, +} = vi.hoisted(() => ({ + useMediaQueryMock: vi.fn(), + sessionQueryState: { data: null as unknown }, + fastTaskQueryState: { data: null as unknown }, + searchParamsRef: { current: new URLSearchParams() }, + useTaskSummaryMock: vi.fn(), + useTaskMock: vi.fn(), +})); vi.mock('usehooks-ts', () => ({ useMediaQuery: useMediaQueryMock, @@ -26,7 +34,23 @@ vi.mock('usehooks-ts', () => ({ vi.mock('next/navigation', () => ({ useRouter: () => ({ replace: vi.fn() }), - useSearchParams: () => new URLSearchParams(), + useSearchParams: () => searchParamsRef.current, +})); + +vi.mock('streamdown', () => ({ + Streamdown: ({ children }: { children: ReactNode }) =>
+ New activity is not included yet.{' '} + +
+ ) : null} +{errorMessage}
+ ++ {fallbackSummary} +
+ ) : ( ++ {enabled || task.state === 'active' + ? 'A summary will appear as this execution progresses.' + : 'No summary is available for this execution yet.'} +
+ )} +
Execution details require task access.
@@ -189,6 +266,118 @@ function SessionTaskPanel({
);
}
+function getLatestTaskOutput(result: unknown) {
+ if (!result || typeof result !== 'object') return null;
+
+ return (
+ String(
+ (result as Record