mindspace: close authority boundaries
This commit is contained in:
@@ -339,6 +339,51 @@ MindSpace Domain
|
||||
- 现有 H5、公开页、页面发布、文件下载行为不变。
|
||||
- 代码搜索可以证明新增业务不再直接依赖物理路径。
|
||||
|
||||
2026-07-27 增量进展:
|
||||
|
||||
- Chat Save 的错误资源引用修复、私有图片物化和 HTML 写回已收进
|
||||
`chatSaveService.materializeWorkspaceHtml`。
|
||||
- local adapter 与 remote RPC 使用同一 contract;Portal 不再在
|
||||
`resolveChatSaveBundle` 中读取 `storageRoot` 或直接 `writeFile`。
|
||||
- 已增加源码门禁,防止这条已完成的写路径重新泄漏回 `server.mjs`。
|
||||
- 公开页交付、Finish public HTML 同步和其它 Portal 路径仍需按后续
|
||||
P1 切片继续收口;本增量不代表 P1 整体完成。
|
||||
- 新增 `conversationArtifactService`,local 与 remote adapter/RPC
|
||||
共用同一契约。
|
||||
- Finish 的 public HTML、聊天导出的 DOCX、发布长图不再由 Portal
|
||||
直接调用 conversation package registry;物理目录解析、backing file
|
||||
校验、artifact/package 登记与 manifest 刷新由 MindSpace 负责。
|
||||
- Portal 的 Finish 保留 SSE/锁/页面同步时序,仅向 artifact 服务传
|
||||
user/session/relativePath/messageId 等逻辑信息。
|
||||
- 新增 `publicFinishService`:SSE `write_file/edit_file` 兼容落盘、
|
||||
Finish HTML/私有资源物化、DOCX 同步、workspace asset sync、
|
||||
artifact 登记和 canonical URL 生成均在 MindSpace 内完成。
|
||||
- Quick Share 的私有资源内联、`public/shared/*.html` 落盘和 public
|
||||
URL 生成也已收进 `chatSaveService.createSharedHtml`。
|
||||
- `workspacePublicationDeliveryService` 已成为 `/MindSpace`、
|
||||
`/u/:slug/public`、workspace 长图、recent HTML discovery 和
|
||||
Agent Run deliverable validation 的统一读交付入口;返回 HTML 或
|
||||
Base64 body 等逻辑交付对象,禁止把绝对路径返回 Portal。
|
||||
- publication resolve 由 MindSpace 返回 `workspacePublicUrl`;
|
||||
Portal 不再拼接 canonical workspace URL。
|
||||
- Finish 的 HTML 完整性检查、Page Data 自动绑定/验收,以及
|
||||
`workspacePageDeliveryService.syncAndDeliver` 已迁入 local/remote
|
||||
adapter;`portal-session-routes` 不再接收 `publishDir`、
|
||||
`storageRoot` 或 `h5Root`。
|
||||
- 微信 Page Data 验收、HTML 链接交付和 fresh thumbnail 校验/修复
|
||||
均改为调用 `publicFinishService.prepareWechatPageDataDelivery`、
|
||||
`prepareWechatHtmlDelivery` 与 `ensureWechatFreshPageThumbnails`;
|
||||
Portal bootstrap 只注入这些逻辑能力,不再向微信模块注入 MindSpace
|
||||
pool、storage root、publishDir 或 H5 root。
|
||||
- 资产下载、from-asset 读取和 Agent Job 输入资产交付改为
|
||||
`bodyBase64` 契约;远程 adapter 不再暴露会泄漏物理路径的
|
||||
`readAsset` / `readPublicAsset`。
|
||||
- Portal 仅保留鉴权、HTTP 响应头、HTML 展示层注入、Finish 锁、
|
||||
修复触发与 analytics 转发,并等待流式写入完成后才标记页面 ready。
|
||||
- P1 的 H5/Portal/微信 HTML/Page Data 主读写与交付链路已收拢;P4
|
||||
仍需补齐真实 split-service 端到端 smoke,并继续收敛剩余
|
||||
`workingDir` 兼容上下文。
|
||||
|
||||
### P2: Conversation Package 首先落地
|
||||
|
||||
目标: 用户每次对话生成的图片、文件、页面、公开链接都能在一个包里看到。
|
||||
@@ -409,6 +454,39 @@ MindSpace Domain
|
||||
- Agent 生成文件后,MindSpace package manifest 自动更新。
|
||||
- Policy 泄漏时也只能访问当前 package 范围。
|
||||
|
||||
2026-07-27 第一批实现进展:
|
||||
|
||||
- 新增 `workspaceToolService`,以
|
||||
`workspaceRef + sessionId + packageId + relativePath` 承载
|
||||
`read_file`、`write_file`、`edit_file`、目录操作和
|
||||
`publish_page`;local/remote adapter 使用同一契约,返回值不暴露绝对路径。
|
||||
- MindSpace Service 新增专用 `/mindspace/v1/mcp/:tool` 入口。
|
||||
HMAC scoped token 同时绑定 user、session、package、workspace 和
|
||||
tool allowlist;请求不能覆盖 token 中的作用域。
|
||||
- Agent policy 在取得真实 session 后重新生成 scoped extension 配置;
|
||||
签名 secret 只留在 Portal/MindSpace Service,Goose sandbox 只接收
|
||||
短期 token。
|
||||
- sandbox MCP 在配置 scoped endpoint 时通过 MindSpace Service 完成
|
||||
逻辑读写;`publish_page` 只在该配置完整时开放。
|
||||
- `write_file` / `edit_file` 对公开 HTML 使用专用 public artifact
|
||||
登记,对其它文件使用通用 workspace artifact 登记;每次写入均刷新
|
||||
package manifest,不依赖 asset sync 是否因相同 checksum 跳过。
|
||||
- 本批已完成核心工具的逻辑写入与 package 自动登记,但 P4 尚未整体
|
||||
关闭:当前 scoped token 能防止跨 user/session/package 身份写入,
|
||||
`read_file` 的内容范围仍是该用户的逻辑 workspace,并非仅限当前
|
||||
package 已登记对象。要满足“token 泄漏也只能读取当前 package”
|
||||
的完整验收,还需增加 package artifact read capability。
|
||||
- 第二批已新增受 scoped token 保护的 `write_binary_file` 内部操作:
|
||||
`generate_docx` 只在 sandbox 临时目录生成文件,随后把二进制交给
|
||||
MindSpace Service 写入目标 workspace 并登记 package;remote 模式
|
||||
不再把 DOCX 直接写到 Goose 的 workspace path。
|
||||
- `generate_long_image` 已改为由 MindSpace Service 校验 backing HTML、
|
||||
生成 canonical source URL、渲染 PNG、写入 workspace 并登记 artifact;
|
||||
sandbox 不再读取目标 HTML 的物理路径或写目标 PNG。
|
||||
- 微信 HTML 交付与 fresh thumbnail 已改为 MindSpace Service 内部解析
|
||||
backing file、生成 canonical URL 并返回逻辑 artifact;真实
|
||||
split-service 端到端 smoke 仍需后续切片收口。
|
||||
|
||||
### P5: NAS/S3 Adapter
|
||||
|
||||
目标: 存储后端可替换。
|
||||
|
||||
Reference in New Issue
Block a user