diff --git a/apps/web/src/components/github/open-pr-button.tsx b/apps/web/src/components/github/open-pr-button.tsx index aba83cf5..8577286e 100644 --- a/apps/web/src/components/github/open-pr-button.tsx +++ b/apps/web/src/components/github/open-pr-button.tsx @@ -23,10 +23,11 @@ export function OpenPRButton() { useEffect(() => { const baseBranch = - stream.values.targetRepository?.branch ?? - stream.values.targetRepository?.baseCommit ?? + stream.values?.targetRepository?.branch ?? + stream.values?.targetRepository?.baseCommit ?? branch; if ( + !stream.values || !stream.values.branchName || !stream.values.targetRepository || !baseBranch @@ -49,7 +50,7 @@ export function OpenPRButton() { setPrState(pr.state); } }); - }, [stream.values?.branchName, stream.values.targetRepository, branch]); + }, [stream.values?.branchName, stream.values?.targetRepository, branch]); if (!pullRequest) { return null; diff --git a/apps/web/src/components/thread-item.tsx b/apps/web/src/components/thread-item.tsx index df362401..28550915 100644 --- a/apps/web/src/components/thread-item.tsx +++ b/apps/web/src/components/thread-item.tsx @@ -86,12 +86,12 @@ export const ThreadItem = memo(function ThreadItem({ className="flex-shrink-0" /> - {thread.values.targetRepository.repo} + {thread.values?.targetRepository?.repo || "x"} / - {thread.values.targetRepository.branch} + {thread.values?.targetRepository?.branch || "x"} diff --git a/apps/web/src/components/thread/history/index.tsx b/apps/web/src/components/thread/history/index.tsx index ef9d6950..e967dde2 100644 --- a/apps/web/src/components/thread/history/index.tsx +++ b/apps/web/src/components/thread/history/index.tsx @@ -32,10 +32,10 @@ function ThreadList({ typeof t.values === "object" && t.values && "messages" in t.values && - Array.isArray(t.values.messages) && - t.values.messages?.length > 0 + Array.isArray(t.values?.messages) && + t.values?.messages?.length > 0 ) { - const firstMessage = t.values.messages[0]; + const firstMessage = t.values?.messages[0]; itemText = getContentString(firstMessage.content); } return ( diff --git a/apps/web/src/lib/thread.ts b/apps/web/src/lib/thread.ts index 55d3ac4f..89cf4c21 100644 --- a/apps/web/src/lib/thread.ts +++ b/apps/web/src/lib/thread.ts @@ -4,7 +4,7 @@ import { GraphState } from "@open-swe/shared/open-swe/types"; import { getActivePlanItems } from "@open-swe/shared/open-swe/tasks"; export function getThreadTitle(thread: Thread): string { - const messages = thread?.values.messages; + const messages = thread?.values?.messages; if (!messages?.length || !messages[0]?.content) { return `Thread ${thread.thread_id.substring(0, 8)}`; } @@ -16,7 +16,7 @@ export function getThreadTasks(thread: Thread): { totalTasks: number; completedTasks: number; } { - if (!thread.values.plan) { + if (!thread.values || !thread.values?.plan) { return { totalTasks: 0, completedTasks: 0,