diff --git a/packages/session-ui/src/storybook/current-session-fixtures.ts b/packages/session-ui/src/storybook/current-session-fixtures.ts index 04ee7a33282..11a9610ff4b 100644 --- a/packages/session-ui/src/storybook/current-session-fixtures.ts +++ b/packages/session-ui/src/storybook/current-session-fixtures.ts @@ -530,6 +530,26 @@ export const expandedShellDocument = document([ }), ] satisfies SessionMessageInfo[]) +export const executeCodeDocument = document([ + user("msg_user_execute", "Verify the Code Mode runtime responds.", 52_100), + assistant({ + id: "msg_assistant_execute", + offset: 52_200, + completed: 52_900, + content: [ + completedTool({ + id: "tool_execute_code", + name: "execute", + offset: 52_300, + args: { + code: 'const greeting = "Code Mode execute completed"\nreturn { greeting, timestamp: new Date().toISOString() }', + }, + output: '{\n "greeting": "Code Mode execute completed",\n "timestamp": "2026-08-17T09:01:43.590Z"\n}', + }), + ], + }), +] satisfies SessionMessageInfo[]) + export const terminalFailedDocument = document([ user("msg_user_terminal_failed", "Run the focused Session UI tests.", 53_000), assistant({ diff --git a/packages/session-ui/src/timeline/terminal-work.stories.tsx b/packages/session-ui/src/timeline/terminal-work.stories.tsx index d5c4565df7b..2d0f8b879f1 100644 --- a/packages/session-ui/src/timeline/terminal-work.stories.tsx +++ b/packages/session-ui/src/timeline/terminal-work.stories.tsx @@ -1,5 +1,6 @@ import { CurrentSessionTimelineStory } from "../storybook/current-session-story" import { + executeCodeDocument, expandedShellDocument, recoveryDocument, standaloneShellCompletedDocument, @@ -85,6 +86,18 @@ export const ExpandedShell = { ), } +export const ExecuteCode = { + render: () => ( + + ), +} + export const TestFailed = { render: () => ( props.status === "streaming" || props.status === "running" const code = createMemo(() => (typeof props.input.code === "string" ? props.input.code : "")) - const text = createMemo(() => { - const output = stripAnsi(props.output ?? "").replace(/\r\n?/g, "\n") - return `${code()}${output ? "\n\n" + output : ""}` - }) + const output = createMemo(() => stripAnsi(props.output ?? "").replace(/\r\n?/g, "\n")) const sawPending = pending() return ( (
- - -
- +
)} > - {text()} + + {code()} + {(value) => {value()}} +
) },