SuperAPI AI 工具集

workspace-app-composition

通用与其它

查看项目

更新于 10-15 21:38

技能介绍

用途:定义 Epicenter 中工作区应用(apps/*)的分层组合方式,供开发者按统一结构组织代码。

主要能力与分层:同构文档工厂 create<App>() 负责纯文档构建,返回 workspace(ydoc、tables、kv、actions),是包的 . 导出与同步契约;环境工厂 open<App>Browser({ signedIn, nodeId }) 绑定浏览器持久化与协作;扩展/Tauri 工厂绑定 chrome.storage 或 Tauri API;挂载工厂 <app>(opts?) 调用 <app>Workspace.mount({ runtime: nodeMountRuntime(), ... }) 并返回 Mount;会话单例 src/lib/session.ts 承载副作用(认证订阅、HMR 释放、持久化状态、网络)。

两种形态:形态 A 为需登录的 SvelteKit 应用(honeycrisp、vocab、fuji),由会话单例管理生命周期;形态 B 为模块级单例应用(opensidian、tab-manager、whispering)。

文件布局:单平台应用文件平铺在包根;含 src-tauri/ 的应用(fuji、whispering)将文件置于 src/lib/workspace/ 并增加 src/lib/platform/ 接缝。包导出遵循实际归属,. 为同构工厂,./mount 为挂载工厂;仅 opensidian 额外导出 ./browser。

平台 DI:多平台应用通过 package.json 的 imports 声明 #platform/* 子路径,构建时按条件选择实现;Tauri 构建在 vite.config.ts 中启用 tauri 条件,需保留 ...defaultClientConditions。接缝实现使用 : Contract 注解而非 satisfies。

守护进程与脚本:不放在应用包内,位于 workspaces/<app>/ 下,经 epicenter.config.ts 注册;公开生命周期命令为 epicenter daemon up。

限制与反模式:同构工厂不得引用 node:、bun:、chrome.、Tauri API、y-indexeddb、BroadcastChannel 或运行时单例;副作用只放会话单例;不要在 #platform/ 调用点分支平台;不要恢复 resolve.extensions 后缀或 tsconfig moduleSuffixes;不要为对称性给其他应用添加 ./browser 导出。资料未提供具体收费、平台支持范围与效果数据。