// Host service-loader entry: intentionally no `server-only` marker. // // 组件橱窗(REQ-012)的公开清单只在这里维护一份:Host 把自己合成的组件目录喂进来, // 得到一批可访问的展示页。服务端 showcase 入口只在前面加 `server-only` 哨兵后整体转口 // ——Host 服务装载器(jiti,纯 Node)里那个哨兵会直接抛错,所以两个入口不能互换。 // // 为什么在 soma-ai 而不是 soma-core 或 soma-ui: // · soma-core 不认识任何组件(soma-ui 依赖它,不是反过来),拼不出蓝图; // · soma-ui 是组件库,没有页面运行时,也不发布页面; // · soma-ai 只依赖 soma-core、不依赖 soma-ui:组件目录由 Host 注入,而它本来就是 // 「页面生成、预览、可视化」的落点,橱窗只是一份不经过模型、由程序直接拼出来的蓝图。 // // 只在非生产环境:生成器的 assertShowcaseAllowed 在 NODE_ENV=production 时默认拒绝 // (显式 force 才放行);Host 的橱窗服务在生产环境也应直接不提供(soma-web 返回 404)。 export { generateShowcasePages, assertShowcaseAllowed, ShowcaseGenerationError, type GenerateShowcaseOptions, type GenerateShowcaseResult, type ShowcasePage, } from '../../domain/showcase/ShowcaseGenerator'; export { publishShowcasePages, SHOWCASE_TAG, type PublishShowcaseOptions, type PublishShowcaseResult, } from '../../domain/showcase/ShowcasePublisher'; export { buildShowcaseBlueprint, selectShowcaseComponents, showcaseSlug, SHOWCASE_SLUG_PREFIX, SPEC_PANEL_COMPONENT, type ShowcaseCatalogEntry, type ShowcaseComponent, type ShowcaseSelection, type ShowcaseSelectionOptions, } from '../../domain/showcase/ShowcaseBlueprint';