diff --git a/apps/agent/.env.example b/apps/agent/.env.example index 3ba30eaa..1334cee7 100644 --- a/apps/agent/.env.example +++ b/apps/agent/.env.example @@ -15,6 +15,9 @@ VITE_PUBLIC_SENTRY_DSN= # BrowserOS API URL VITE_PUBLIC_BROWSEROS_API=https://api.browseros.com +# Launch feature flags +VITE_PUBLIC_KIMI_LAUNCH=false + # GraphQL Schema Path (optional — falls back to schema/schema.graphql) GRAPHQL_SCHEMA_PATH= diff --git a/apps/agent/entrypoints/app/ai-settings/NewProviderDialog.tsx b/apps/agent/entrypoints/app/ai-settings/NewProviderDialog.tsx index c981988a..24853006 100644 --- a/apps/agent/entrypoints/app/ai-settings/NewProviderDialog.tsx +++ b/apps/agent/entrypoints/app/ai-settings/NewProviderDialog.tsx @@ -45,6 +45,7 @@ import { track } from '@/lib/metrics/track' import { getModelContextLength, getModelOptions } from './models' const providerTypeEnum = z.enum([ + 'moonshot', 'anthropic', 'openai', 'openai-compatible', @@ -413,6 +414,12 @@ export const NewProviderDialog: FC = ({ const providerTemplate = getProviderTemplate(watchedType as ProviderType) const setupGuideUrl = providerTemplate?.setupGuideUrl const providerName = providerTemplate?.name + const setupGuideText = + watchedType === 'moonshot' + ? 'How to get a Kimi API key' + : providerName + ? `${providerName} setup guide` + : 'Provider setup guide' const handleSetupGuideClick = (e: React.MouseEvent) => { e.preventDefault() @@ -596,7 +603,7 @@ export const NewProviderDialog: FC = ({ className="inline-flex cursor-pointer items-center gap-1 text-primary hover:underline" > - {providerName} setup guide + {setupGuideText} )} diff --git a/apps/agent/entrypoints/app/ai-settings/ProviderCard.tsx b/apps/agent/entrypoints/app/ai-settings/ProviderCard.tsx index 93846541..faab4e9d 100644 --- a/apps/agent/entrypoints/app/ai-settings/ProviderCard.tsx +++ b/apps/agent/entrypoints/app/ai-settings/ProviderCard.tsx @@ -2,6 +2,7 @@ import { Check, Loader2, Trash2 } from 'lucide-react' import type { FC } from 'react' import { Badge } from '@/components/ui/badge' import { Button } from '@/components/ui/button' +import { useKimiLaunch } from '@/lib/feature-flags/useKimiLaunch' import { BrowserOSIcon, ProviderIcon } from '@/lib/llm-providers/providerIcons' import type { LlmProviderConfig } from '@/lib/llm-providers/types' import { cn } from '@/lib/utils' @@ -29,6 +30,7 @@ export const ProviderCard: FC = ({ isTesting = false, }) => { const inputId = `provider-${provider.id}` + const kimiLaunch = useKimiLaunch() return (