diff --git a/.env.example b/.env.example index dab31445..a1fd6326 100644 --- a/.env.example +++ b/.env.example @@ -17,3 +17,6 @@ OPENAI_API_KEY= AWS_ACCESS_KEY_ID= AWS_SECRET_ACCESS_KEY= + +# OPTIONAL url for openrag link to langflow in the UI +LANGFLOW_PUBLIC_URL= diff --git a/docker-compose-cpu.yml b/docker-compose-cpu.yml index 9adc488d..6f27042a 100644 --- a/docker-compose-cpu.yml +++ b/docker-compose-cpu.yml @@ -48,7 +48,10 @@ services: environment: - OPENSEARCH_HOST=opensearch - LANGFLOW_URL=http://langflow:7860 + - LANGFLOW_PUBLIC_URL=${LANGFLOW_PUBLIC_URL} - LANGFLOW_SECRET_KEY=${LANGFLOW_SECRET_KEY} + - LANGFLOW_SUPERUSER=${LANGFLOW_SUPERUSER} + - LANGFLOW_SUPERUSER_PASSWORD=${LANGFLOW_SUPERUSER_PASSWORD} - FLOW_ID=${FLOW_ID} - OPENSEARCH_PORT=9200 - OPENSEARCH_USERNAME=admin @@ -95,3 +98,8 @@ services: - OPENRAG-QUERY-FILTER="{}" - LANGFLOW_VARIABLES_TO_GET_FROM_ENVIRONMENT=JWT,OPENRAG-QUERY-FILTER - LANGFLOW_LOG_LEVEL=DEBUG + - LANGFLOW_AUTO_LOGIN=${LANGFLOW_AUTO_LOGIN} + - LANGFLOW_SUPERUSER=${LANGFLOW_SUPERUSER} + - LANGFLOW_SUPERUSER_PASSWORD=${LANGFLOW_SUPERUSER_PASSWORD} + - LANGFLOW_NEW_USER_IS_ACTIVE=${LANGFLOW_NEW_USER_IS_ACTIVE} + - LANGFLOW_ENABLE_SUPERUSER_CLI=${LANGFLOW_ENABLE_SUPERUSER_CLI} diff --git a/docker-compose.yml b/docker-compose.yml index f7519bbd..8e2fdee2 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -49,7 +49,9 @@ services: environment: - OPENSEARCH_HOST=opensearch - LANGFLOW_URL=http://langflow:7860 - - LANGFLOW_SECRET_KEY=${LANGFLOW_SECRET_KEY} + - LANGFLOW_PUBLIC_URL=${LANGFLOW_PUBLIC_URL} + - LANGFLOW_SUPERUSER=${LANGFLOW_SUPERUSER} + - LANGFLOW_SUPERUSER_PASSWORD=${LANGFLOW_SUPERUSER_PASSWORD} - FLOW_ID=${FLOW_ID} - OPENSEARCH_PORT=9200 - OPENSEARCH_USERNAME=admin @@ -97,3 +99,8 @@ services: - OPENRAG-QUERY-FILTER="{}" - LANGFLOW_VARIABLES_TO_GET_FROM_ENVIRONMENT=JWT,OPENRAG-QUERY-FILTER - LANGFLOW_LOG_LEVEL=DEBUG + - LANGFLOW_AUTO_LOGIN=${LANGFLOW_AUTO_LOGIN} + - LANGFLOW_SUPERUSER=${LANGFLOW_SUPERUSER} + - LANGFLOW_SUPERUSER_PASSWORD=${LANGFLOW_SUPERUSER_PASSWORD} + - LANGFLOW_NEW_USER_IS_ACTIVE=${LANGFLOW_NEW_USER_IS_ACTIVE} + - LANGFLOW_ENABLE_SUPERUSER_CLI=${LANGFLOW_ENABLE_SUPERUSER_CLI} diff --git a/frontend/src/app/settings/page.tsx b/frontend/src/app/settings/page.tsx index 4461c617..6b7fd76b 100644 --- a/frontend/src/app/settings/page.tsx +++ b/frontend/src/app/settings/page.tsx @@ -51,8 +51,33 @@ function KnowledgeSourcesPage() { const [isSyncing, setIsSyncing] = useState(null) const [syncResults, setSyncResults] = useState<{[key: string]: SyncResult | null}>({}) const [maxFiles, setMaxFiles] = useState(10) + + // Settings state + // Note: backend internal Langflow URL is not needed on the frontend + const [flowId, setFlowId] = useState('1098eea1-6649-4e1d-aed1-b77249fb8dd0') + const [langflowEditUrl, setLangflowEditUrl] = useState('') + const [publicLangflowUrl, setPublicLangflowUrl] = useState('') - + // Fetch settings from backend + const fetchSettings = useCallback(async () => { + try { + const response = await fetch('/api/settings') + if (response.ok) { + const settings = await response.json() + if (settings.flow_id) { + setFlowId(settings.flow_id) + } + if (settings.langflow_edit_url) { + setLangflowEditUrl(settings.langflow_edit_url) + } + if (settings.langflow_public_url) { + setPublicLangflowUrl(settings.langflow_public_url) + } + } + } catch (error) { + console.error('Failed to fetch settings:', error) + } + }, []) // Helper function to get connector icon const getConnectorIcon = (iconName: string) => { @@ -239,6 +264,13 @@ function KnowledgeSourcesPage() { } } + // Fetch settings on mount when authenticated + useEffect(() => { + if (isAuthenticated) { + fetchSettings() + } + }, [isAuthenticated, fetchSettings]) + // Check connector status on mount and when returning from OAuth useEffect(() => { if (isAuthenticated) { @@ -291,7 +323,15 @@ function KnowledgeSourcesPage() {

Adjust your retrieval agent flow