diff --git a/packages/opencode/src/cli/cmd/tui/component/dialog-status.tsx b/packages/opencode/src/cli/cmd/tui/component/dialog-status.tsx index ebc65a45b7d9..9a6c0ca98021 100644 --- a/packages/opencode/src/cli/cmd/tui/component/dialog-status.tsx +++ b/packages/opencode/src/cli/cmd/tui/component/dialog-status.tsx @@ -50,10 +50,10 @@ export function DialogStatus() { esc - 0} fallback={No MCP Servers}> + 0} fallback={No MCP Servers}> - {Object.keys(sync.data.mcp).length} MCP Servers - + {Object.keys(sync.data.mcp ?? {}).length} MCP Servers + {([key, item]) => ( - {sync.data.lsp.length > 0 && ( + {(sync.data.lsp ?? []).length > 0 && ( - {sync.data.lsp.length} LSP Servers - + {(sync.data.lsp ?? []).length} LSP Servers + {(item) => ( ): TuiPluginApi["state"] { return sync.data.part[messageID] ?? [] }, lsp() { - return sync.data.lsp.map((item) => ({ id: item.id, root: item.root, status: item.status })) + return (sync.data.lsp ?? []).map((item) => ({ id: item.id, root: item.root, status: item.status })) }, mcp() { - return Object.entries(sync.data.mcp) + return Object.entries(sync.data.mcp ?? {}) .sort(([a], [b]) => a.localeCompare(b)) .map(([name, item]) => ({ name, diff --git a/packages/opencode/src/cli/cmd/tui/routes/session/footer.tsx b/packages/opencode/src/cli/cmd/tui/routes/session/footer.tsx index 8ace2fff3725..b7735afc07a6 100644 --- a/packages/opencode/src/cli/cmd/tui/routes/session/footer.tsx +++ b/packages/opencode/src/cli/cmd/tui/routes/session/footer.tsx @@ -10,9 +10,9 @@ export function Footer() { const { theme } = useTheme() const sync = useSync() const route = useRoute() - const mcp = createMemo(() => Object.values(sync.data.mcp).filter((x) => x.status === "connected").length) - const mcpError = createMemo(() => Object.values(sync.data.mcp).some((x) => x.status === "failed")) - const lsp = createMemo(() => Object.keys(sync.data.lsp)) + const mcp = createMemo(() => Object.values(sync.data.mcp ?? {}).filter((x) => x.status === "connected").length) + const mcpError = createMemo(() => Object.values(sync.data.mcp ?? {}).some((x) => x.status === "failed")) + const lsp = createMemo(() => Object.keys(sync.data.lsp ?? [])) const permissions = createMemo(() => { if (route.data.type !== "session") return [] return sync.data.permission[route.data.sessionID] ?? []