- Create centralized config module (apps/web/src/lib/config.ts) exporting: - API_BASE_URL: Main API server URL from NEXT_PUBLIC_API_URL - ORCHESTRATOR_URL: Orchestrator service URL from NEXT_PUBLIC_ORCHESTRATOR_URL - Helper functions for building full URLs - Update client.ts to import from central config - Update LoginButton.tsx to use API_BASE_URL from config - Update useWebSocket.ts to use API_BASE_URL from config - Update AgentStatusWidget.tsx to use ORCHESTRATOR_URL from config - Update TaskProgressWidget.tsx to use ORCHESTRATOR_URL from config - Update useGraphData.ts to use API_BASE_URL from config - Fixed wrong default port (was 8000, now uses correct 3001) - Add comprehensive tests for config module - Update useWebSocket tests to properly mock config module Refs #338 Co-Authored-By: Claude Opus 4.5 <[email protected]>
61 lines
1.8 KiB
TypeScript
61 lines
1.8 KiB
TypeScript
/**
|
|
* Centralized API Configuration
|
|
*
|
|
* This module provides a single source of truth for all API endpoints and URLs.
|
|
* All components should import from here instead of reading environment variables directly.
|
|
*
|
|
* Environment Variables:
|
|
* - NEXT_PUBLIC_API_URL: The main API server URL (default: http://localhost:3001)
|
|
* - NEXT_PUBLIC_ORCHESTRATOR_URL: The orchestrator service URL (default: same as API URL)
|
|
*/
|
|
|
|
/**
|
|
* Default API server URL for local development
|
|
*/
|
|
const DEFAULT_API_URL = "http://localhost:3001";
|
|
|
|
/**
|
|
* Main API server URL
|
|
* Used for authentication, tasks, events, knowledge, and all core API calls
|
|
*/
|
|
export const API_BASE_URL = process.env.NEXT_PUBLIC_API_URL ?? DEFAULT_API_URL;
|
|
|
|
/**
|
|
* Orchestrator service URL
|
|
* Used for agent management, task progress, and orchestration features
|
|
* Falls back to main API URL if not specified (they may run on the same server)
|
|
*/
|
|
export const ORCHESTRATOR_URL = process.env.NEXT_PUBLIC_ORCHESTRATOR_URL ?? API_BASE_URL;
|
|
|
|
/**
|
|
* Build a full API endpoint URL
|
|
* @param endpoint - The API endpoint path (should start with /)
|
|
* @returns The full URL for the endpoint
|
|
*/
|
|
export function buildApiUrl(endpoint: string): string {
|
|
return `${API_BASE_URL}${endpoint}`;
|
|
}
|
|
|
|
/**
|
|
* Build a full orchestrator endpoint URL
|
|
* @param endpoint - The orchestrator endpoint path (should start with /)
|
|
* @returns The full URL for the endpoint
|
|
*/
|
|
export function buildOrchestratorUrl(endpoint: string): string {
|
|
return `${ORCHESTRATOR_URL}${endpoint}`;
|
|
}
|
|
|
|
/**
|
|
* Configuration object for convenient access to all URLs
|
|
*/
|
|
export const apiConfig = {
|
|
/** Main API base URL */
|
|
baseUrl: API_BASE_URL,
|
|
/** Orchestrator service URL */
|
|
orchestratorUrl: ORCHESTRATOR_URL,
|
|
/** Build full API URL for an endpoint */
|
|
buildUrl: buildApiUrl,
|
|
/** Build full orchestrator URL for an endpoint */
|
|
buildOrchestratorUrl,
|
|
} as const;
|