diff --git a/src/app/(dashboard)/dashboard/agents/page.tsx b/src/app/(dashboard)/dashboard/agents/page.tsx index 1be6096a2a..8dda1bdc6c 100644 --- a/src/app/(dashboard)/dashboard/agents/page.tsx +++ b/src/app/(dashboard)/dashboard/agents/page.tsx @@ -3,6 +3,7 @@ import { useState, useEffect, useCallback } from "react"; import Link from "next/link"; import { Card, Button, Input } from "@/shared/components"; +import ProviderIcon from "@/shared/components/ProviderIcon"; import { useTranslations } from "next-intl"; import { AI_PROVIDERS } from "@/shared/constants/config"; import { CLI_COMPAT_PROVIDER_IDS } from "@/shared/constants/cliCompatProviders"; @@ -25,6 +26,35 @@ interface AgentSummary { custom: number; } +// Map agent binary IDs to provider icon IDs for ProviderIcon component +const AGENT_ICON_MAP: Record = { + claude: "anthropic", + "claude-code": "anthropic", + codex: "openai", + "gemini-cli": "google", + gemini: "google", + opencode: "opencode", + openclaw: "openclaw", + cline: "cline", + kilocode: "kilocode", + kilo: "kilocode", + cursor: "cursor", + antigravity: "antigravity", + droid: "droid", + goose: "goose", + aider: "aider", + iflow: "iflow", + kiro: "kiro", + nanobot: "nanobot", + picoclaw: "picoclaw", + zeroclaw: "zeroclaw", + ironclaw: "ironclaw", +}; + +function getAgentIconId(agentId: string): string | null { + return AGENT_ICON_MAP[agentId] || null; +} + export default function AgentsPage() { const [agents, setAgents] = useState([]); const [summary, setSummary] = useState(null); @@ -304,9 +334,13 @@ export default function AgentsPage() { : "bg-zinc-500/10 text-zinc-400" }`} > - - {agent.installed ? "smart_toy" : "block"} - + {getAgentIconId(agent.id) ? ( + + ) : ( + + {agent.installed ? "smart_toy" : "block"} + + )}
diff --git a/src/app/api/v1/audio/transcriptions/route.ts b/src/app/api/v1/audio/transcriptions/route.ts index 1ca1139bbe..9236d9912e 100644 --- a/src/app/api/v1/audio/transcriptions/route.ts +++ b/src/app/api/v1/audio/transcriptions/route.ts @@ -1,4 +1,7 @@ import { CORS_ORIGIN } from "@/shared/utils/cors"; + +// Allow large audio/video file uploads — 5min for processing large files (up to 2GB) +export const maxDuration = 300; import { handleAudioTranscription } from "@omniroute/open-sse/handlers/audioTranscription.ts"; import { getProviderCredentials,