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