Unified · Split
| @@ -35,6 +35,7 @@ interface PendingApproval { · 34 unmodified lines | ||
| 35 | 35 | interface TaskState { |
| 36 | 36 | readonly status: "running" | "completed" | "failed" | "cancelled"; |
| 37 | 37 | readonly statusMessage: string; |
| 38 | + readonly lastCode: string | null; | |
| 38 | 39 | readonly toolResults: string[]; |
| 39 | 40 | readonly pendingApprovals: PendingApproval[]; |
| 40 | 41 | readonly agentMessage: string | null; |
| @@ -44,6 +45,7 @@ interface TaskState { · 3 unmodified lines | ||
| 44 | 45 | const INITIAL_STATE: TaskState = { |
| 45 | 46 | status: "running", |
| 46 | 47 | statusMessage: "Thinking...", |
| 48 | + lastCode: null, | |
| 47 | 49 | toolResults: [], |
| 48 | 50 | pendingApprovals: [], |
| 49 | 51 | agentMessage: null, |
| @@ -56,7 +58,7 @@ function reduceEvent(state: TaskState, event: TaskEvent): TaskState { · 6 unmodified lines | ||
| 56 | 58 | return { ...state, statusMessage: event.message }; |
| 57 | 59 | |
| 58 | 60 | case "code_generated": |
| 59 | − return { ...state, statusMessage: "Running code..." }; | |
| 61 | + return { ...state, lastCode: event.code, statusMessage: "Running code..." }; | |
| 60 | 62 | |
| 61 | 63 | case "approval_request": |
| 62 | 64 | return { |
| @@ -163,6 +165,13 @@ export function TaskMessage({ taskId, prompt, api }: TaskMessageProps) { · 100 unmodified lines | ||
| 163 | 165 | <TextDisplay>{`${statusEmoji(state.status)} **${state.statusMessage}**`}</TextDisplay> |
| 164 | 166 | <TextDisplay>{`> ${prompt.length > 200 ? prompt.slice(0, 200) + "..." : prompt}`}</TextDisplay> |
| 165 | 167 | |
| 168 | + {state.lastCode && ( | |
| 169 | + <> | |
| 170 | + <Separator /> | |
| 171 | + <TextDisplay>{`\`\`\`ts\n${state.lastCode.length > 800 ? state.lastCode.slice(0, 800) + "\n// ..." : state.lastCode}\n\`\`\``}</TextDisplay> | |
| 172 | + </> | |
| 173 | + )} | |
| 174 | + | |
| 166 | 175 | {state.toolResults.length > 0 && ( |
| 167 | 176 | <> |
| 168 | 177 | <Separator /> |