diff --git a/packages/extension/src/agent/constants.ts b/packages/extension/src/agent/constants.ts index bba9ca8..0b90164 100644 --- a/packages/extension/src/agent/constants.ts +++ b/packages/extension/src/agent/constants.ts @@ -10,3 +10,21 @@ export const DEMO_CONFIG: LLMConfig = { baseURL: DEMO_BASE_URL, model: DEMO_MODEL, } + +/** Legacy testing endpoints that should be auto-migrated to DEMO_BASE_URL */ +export const LEGACY_TESTING_ENDPOINTS = [ + 'https://hwcxiuzfylggtcktqgij.supabase.co/functions/v1/llm-testing-proxy', +] + +export function isTestingEndpoint(url: string): boolean { + const normalized = url.replace(/\/+$/, '') + return normalized === DEMO_BASE_URL || LEGACY_TESTING_ENDPOINTS.some((ep) => normalized === ep) +} + +export function migrateLegacyEndpoint(config: LLMConfig): LLMConfig { + const normalized = config.baseURL.replace(/\/+$/, '') + if (LEGACY_TESTING_ENDPOINTS.some((ep) => normalized === ep)) { + return { ...DEMO_CONFIG } + } + return config +} diff --git a/packages/extension/src/agent/useAgent.ts b/packages/extension/src/agent/useAgent.ts index 6b28c49..db53294 100644 --- a/packages/extension/src/agent/useAgent.ts +++ b/packages/extension/src/agent/useAgent.ts @@ -11,7 +11,7 @@ import type { LLMConfig } from '@page-agent/llms' import { useCallback, useEffect, useRef, useState } from 'react' import { MultiPageAgent } from './MultiPageAgent' -import { DEMO_CONFIG } from './constants' +import { DEMO_CONFIG, migrateLegacyEndpoint } from './constants' /** Language preference: undefined means follow system */ export type LanguagePreference = SupportedLanguage | undefined @@ -41,13 +41,19 @@ export function useAgent(): UseAgentResult { useEffect(() => { chrome.storage.local.get(['llmConfig', 'language']).then((result) => { - const llmConfig = (result.llmConfig as LLMConfig) ?? DEMO_CONFIG + let llmConfig = (result.llmConfig as LLMConfig) ?? DEMO_CONFIG const language = (result.language as SupportedLanguage) || undefined - const full = { ...llmConfig, language } - if (!result.llmConfig) { + + // Auto-migrate legacy testing endpoints + const migrated = migrateLegacyEndpoint(llmConfig) + if (migrated !== llmConfig) { + llmConfig = migrated + chrome.storage.local.set({ llmConfig: migrated }) + } else if (!result.llmConfig) { chrome.storage.local.set({ llmConfig: DEMO_CONFIG }) } - setConfig(full) + + setConfig({ ...llmConfig, language }) }) }, []) diff --git a/packages/extension/src/entrypoints/sidepanel/components/ConfigPanel.tsx b/packages/extension/src/entrypoints/sidepanel/components/ConfigPanel.tsx index 977071e..efcaf88 100644 --- a/packages/extension/src/entrypoints/sidepanel/components/ConfigPanel.tsx +++ b/packages/extension/src/entrypoints/sidepanel/components/ConfigPanel.tsx @@ -2,7 +2,7 @@ import { Copy, CornerUpLeft, Eye, EyeOff, HatGlasses, Home, Loader2, Scale } fro import { useEffect, useState } from 'react' import { siGithub } from 'simple-icons' -import { DEMO_API_KEY, DEMO_BASE_URL, DEMO_MODEL } from '@/agent/constants' +import { DEMO_API_KEY, DEMO_BASE_URL, DEMO_MODEL, isTestingEndpoint } from '@/agent/constants' import type { ExtConfig, LanguagePreference } from '@/agent/useAgent' import { Button } from '@/components/ui/button' import { Input } from '@/components/ui/input' @@ -87,6 +87,23 @@ export function ConfigPanel({ config, onSave, onClose }: ConfigPanelProps) { + {/* Testing API notice */} + {isTestingEndpoint(baseURL) && ( +
+ + You are using the free testing API. By using this service you agree to the{' '} + + Terms of Use & Privacy Policy + + . No sensitive data. No guaranteed availability. +
+ )} + {/* User Auth Token Section */}