diff --git a/apps/mobile/src/agent-ui.tsx b/apps/mobile/src/agent-ui.tsx index ead833976..3f5716093 100644 --- a/apps/mobile/src/agent-ui.tsx +++ b/apps/mobile/src/agent-ui.tsx @@ -164,21 +164,6 @@ export function TaskCard({ ); } -export function ChatWork() { - const { data } = useAgentWorkspace(); - const tasks = [...(data?.tasks || [])] - .filter(activeTask) - .sort((a, b) => b.createdAt.localeCompare(a.createdAt)) - .slice(0, 2); - if (!tasks.length) return null; - return ( - - {tasks.map((task) => ( - - ))} - - ); -} export function AgentActivityScreen() { const { data } = useAgentWorkspace(); const [filter, setFilter] = useState("All"); diff --git a/apps/mobile/src/chat.tsx b/apps/mobile/src/chat.tsx index 746ce12d2..fb04389ee 100644 --- a/apps/mobile/src/chat.tsx +++ b/apps/mobile/src/chat.tsx @@ -94,8 +94,8 @@ export function WorkspaceTools() { name: "use_desktop", description: "Show the agent working on the computer's desktop", parameters: displayParameters, - render: ({ toolCallId, result, status }) => ( - + render: ({ result, status }) => ( + ), }); useRenderTool({ @@ -653,7 +653,6 @@ export function ChatScreen({ {!!latestDesktop && ( message.role === "tool" && message.toolCallId === latestDesktop, diff --git a/apps/mobile/src/desktop-tool-card.tsx b/apps/mobile/src/desktop-tool-card.tsx index cce31a1a6..2f8e07cf3 100644 --- a/apps/mobile/src/desktop-tool-card.tsx +++ b/apps/mobile/src/desktop-tool-card.tsx @@ -30,7 +30,6 @@ export function DesktopToolCard({ live = false, loading, }: { - toolCallId: string; live?: boolean; result: unknown; loading: boolean; diff --git a/apps/mobile/src/screens.tsx b/apps/mobile/src/screens.tsx index 5f2345a84..b1357dc6b 100644 --- a/apps/mobile/src/screens.tsx +++ b/apps/mobile/src/screens.tsx @@ -4,7 +4,6 @@ import { ArrowDownToLine, ArrowUpRight, CalendarDays, - Check, CheckCheck, ChevronLeft, ChevronRight, @@ -29,7 +28,6 @@ import { Pressable, Text, TextInput, - useWindowDimensions, View, } from "react-native"; import type { @@ -51,7 +49,6 @@ import { ErrorNotice, IconButton, LinkRow, - Mascot, relativeDate, resultSummary, SectionHeading, @@ -68,322 +65,6 @@ function todayDate() { function eventDate(event: CalendarEvent) { return event.allDay ? event.start : localDateTime(event.start, event.timeZone).date; } -export function TodayScreen() { - const { workspace: w, navigate, open, ask } = useWorkspace(); - const wide = useWindowDimensions().width > 1180; - const pending = w.actions.filter((a) => a.status === "awaiting_review"); - const unread = w.mail.filter((m) => m.unread); - const today = todayDate(); - const events = w.events - .filter((e) => eventDate(e) === today) - .sort((a, b) => a.start.localeCompare(b.start)); - return ( - - - - - - A little clarity, every day - - - Your day, with a little{"\n"}more room to breathe. - - - {events.length ? `${events.length} things on your calendar` : "Your calendar has room"} - {unread.length ? `, ${unread.length} unread emails` : ""}.{"\n"}Let’s make space for - what matters. - - - - {wide && ( - - - - - - - A lighter day - - - - Everything, together - - - )} - - - {[ - { - label: "UNREAD EMAILS", - value: unread.length, - note: "A fresh look at your inbox", - icon: Mail, - section: "mail" as const, - tint: colors.sky, - }, - { - label: "ON THE CALENDAR", - value: events.length, - note: "Make room for your priorities", - icon: CalendarDays, - section: "calendar" as const, - tint: colors.green, - }, - { - label: "WAITING FOR YOU", - value: pending.length, - note: "Your review keeps things moving", - icon: ShieldCheck, - section: "activity" as const, - tint: colors.lavender, - }, - ].map((item) => ( - navigate(item.section)} - style={{ flex: 1, minWidth: 180 }} - > - - - {item.label} - - - - - - {String(item.value).padStart(2, "0")} - - {item.note} - - - ))} - - - - navigate("calendar")} - /> - {events.length ? ( - events.slice(0, 3).map((e, i) => ) - ) : ( - - )} - open({ type: "event" })} - style={[ - s.row, - { - gap: 8, - paddingTop: 15, - marginTop: 9, - borderTopWidth: 1, - borderTopColor: colors.line, - }, - ]} - > - - Make time for something - - - - navigate("mail")} - /> - {w.mail.length ? ( - w.mail.slice(0, 3).map((m, i) => ( - open({ type: "mail", mail: m })} - style={[ - s.row, - { - gap: 12, - paddingVertical: 13, - borderTopWidth: i ? 1 : 0, - borderTopColor: colors.line, - }, - ]} - > - - - - {m.sender} - {timeLabel(m.date)} - - - {m.subject} - - - {m.body.replace(/\n/g, " ")} - - - {m.unread && ( - - )} - - )) - ) : ( - - )} - - - - - - - Start with a thought. We’ll take it from there. - - {[ - "What needs my attention today?", - "Help me catch up on my inbox", - "Show my recent documents", - ].map((prompt) => ( - ask(prompt)} - style={[ - s.between, - { borderTopWidth: 1, borderTopColor: "#E1E2D9", paddingVertical: 13 }, - ]} - > - {prompt} - - - ))} - - - navigate("activity")} - /> - {pending.length - ? pending - .slice(0, 3) - .map((a) => ( - open({ type: "review", action: a })} - icon={ShieldCheck} - tint={colors.lavender} - /> - )) - : w.activity.slice(0, 3).map((a) => ( - - - - - - {a.title} - {relativeDate(a.date)} - - - ))} - {!pending.length && !w.activity.length && ( - - Your workspace is ready. Things you do here will appear in your activity. - - )} - - - - ); -} function Avatar({ name, index = 0 }: { name: string; index?: number }) { return ( ; -} - export type { ComputerCommand, ComputerDirectory, ComputerSnapshot } from "./computer.ts";