import type { ApiModule } from '../infra/types.js' async function discoverModules(): Promise { return await getStaticModules() } async function getStaticModules(): Promise { const modules: ApiModule[] = [] try { const { createTodoModule } = await import('./todo/index.js') modules.push(createTodoModule()) } catch (e) { console.warn('[ModuleLoader] Failed to load todo module:', e) } try { const { createTimeTrackingModule } = await import('./time-tracking/index.js') modules.push(createTimeTrackingModule()) } catch (e) { console.warn('[ModuleLoader] Failed to load time-tracking module:', e) } try { const { createRecycleBinModule } = await import('./recycle-bin/index.js') modules.push(createRecycleBinModule()) } catch (e) { console.warn('[ModuleLoader] Failed to load recycle-bin module:', e) } try { const { createPyDemosModule } = await import('./pydemos/index.js') modules.push(createPyDemosModule()) } catch (e) { console.warn('[ModuleLoader] Failed to load pydemos module:', e) } try { const { createDocumentParserModule } = await import('./document-parser/index.js') modules.push(createDocumentParserModule()) } catch (e) { console.warn('[ModuleLoader] Failed to load document-parser module:', e) } try { const { createAiModule } = await import('./ai/index.js') modules.push(createAiModule()) } catch (e) { console.warn('[ModuleLoader] Failed to load ai module:', e) } try { const { createRemoteModule } = await import('./remote/index.js') modules.push(createRemoteModule()) } catch (e) { console.warn('[ModuleLoader] Failed to load remote module:', e) } modules.sort((a, b) => { const orderA = a.metadata.order ?? 0 const orderB = b.metadata.order ?? 0 return orderA - orderB }) return modules } export const apiModules: ApiModule[] = await discoverModules() export * from './todo/index.js' export * from './time-tracking/index.js' export * from './recycle-bin/index.js' export * from './pydemos/index.js' export * from './document-parser/index.js' export * from './ai/index.js' export * from './remote/index.js'