SYMBOL INDEX (39 symbols across 6 files) FILE: backend/server.js constant PORT (line 18) | const PORT = process.env.PORT || 3001; constant FAL_API_KEY (line 19) | const FAL_API_KEY = process.env.FAL_API_KEY; constant MAX_FILE_SIZE (line 29) | const MAX_FILE_SIZE = 50 * 1024 * 1024; constant ALLOWED_MIME_TYPES (line 30) | const ALLOWED_MIME_TYPES = ['image/jpeg', 'image/png', 'image/jpg', 'ima... constant API_TIMEOUT (line 31) | const API_TIMEOUT = 120000; constant MODEL_ENDPOINTS (line 32) | const MODEL_ENDPOINTS = { function callFalAPI (line 61) | async function callFalAPI(inputPayload, modelId = 'nano') { function parseIntParam (line 91) | function parseIntParam(value, defaultValue = undefined) { function callSam2API (line 269) | async function callSam2API(imageUrl) { FILE: frontend/src/App.tsx type LayerKind (line 33) | type LayerKind = 'source' | 'ai' | 'empty' | 'segment'; type BoundingBox (line 35) | interface BoundingBox { type Layer (line 42) | interface Layer { type QuickEditAction (line 55) | interface QuickEditAction { function App (line 63) | function App() { FILE: frontend/src/api.ts constant API_BASE (line 3) | const API_BASE = '/api'; constant DEFAULT_MODEL (line 4) | const DEFAULT_MODEL = 'nano'; function handleApiResponse (line 6) | async function handleApiResponse(response: Response): Promise { function editImage (line 14) | async function editImage(params: EditImageParams): Promise { function inpaintImage (line 32) | async function inpaintImage(params: InpaintImageParams): Promise { function checkHealth (line 87) | async function checkHealth(): Promise<{ status: string; apiConfigured: b... FILE: frontend/src/react-easy-crop.d.ts type Area (line 4) | interface Area { type CropCoordinates (line 11) | interface CropCoordinates { type CropperProps (line 16) | interface CropperProps { FILE: frontend/src/types.ts type EditResponse (line 1) | interface EditResponse { type ApiError (line 6) | interface ApiError { type Mode (line 12) | type Mode = 'edit' | 'generate'; type ModelId (line 14) | type ModelId = 'nano' | 'pro'; type EditImageParams (line 16) | interface EditImageParams { type InpaintImageParams (line 23) | interface InpaintImageParams { type GenerateImageParams (line 29) | interface GenerateImageParams { FILE: frontend/src/utils.ts constant MAX_FILE_SIZE (line 3) | const MAX_FILE_SIZE = 50 * 1024 * 1024; constant ALLOWED_FILE_TYPES (line 4) | const ALLOWED_FILE_TYPES = ['image/jpeg', 'image/png', 'image/jpg', 'ima... function validateImageFile (line 6) | function validateImageFile(file: File): string | null { function extractImageUrl (line 18) | function extractImageUrl(response: EditResponse): string | null { function dataUrlToBlob (line 22) | async function dataUrlToBlob(dataUrl: string): Promise { function downloadImage (line 27) | function downloadImage(imageUrl: string, filename: string = 'image.png') { function getTimestamp (line 36) | function getTimestamp(): string {