docs: reconcile official scaffold plugin integration
This commit is contained in:
@@ -2,30 +2,30 @@
|
||||
|
||||
- Status: Accepted / implemented
|
||||
- Date: 2026-09-04
|
||||
- Applies to: Project creation, `ProjectType`, Device Packages, scaffold Skill, release readiness
|
||||
- Applies to: Project creation, `ProjectType`, official bundled Marketplace Plugins, scaffold Skill, release readiness
|
||||
|
||||
## Context
|
||||
|
||||
历史客户端把 `mini_game` 和 `mini_program` 作为两个可发布产品类型,并在创建项目时自动生成两套业务模板。这把项目身份、起步文件和发布规则绑定在同一次创建操作中,使模板演进和平台发布约束难以独立维护。
|
||||
|
||||
项目服务当前已经只负责 `.makelore/project.json` 与 `knowledge/`。用户确认将小游戏和小程序合并为一个“交互式 AI 应用”类型,并把生成文件、目录以及提交审批要求放进可独立分发的 Skill。
|
||||
项目服务当前已经只负责 `.makelore/project.json` 与 `knowledge/`。用户确认将小游戏和小程序合并为一个“交互式 AI 应用”类型,并把生成文件、目录以及提交审批要求放进由官方 Marketplace 管理、随签名客户端交付的 Skill。
|
||||
|
||||
## Decision
|
||||
|
||||
- 新建项目只提供规范产品类型 `interactive_ai_app`(显示为“交互式 AI 应用”)和 `custom`。`ProjectType` 创建后仍不可变。
|
||||
- `mini_game` 与 `mini_program` 只作为历史读取和脚手架兼容别名,在内存中归一为 `interactive_ai_app`。读取或运行脚手架不会改写原配置;后续普通配置变更可以保存规范值。缺少类型字段的旧项目仍归一为 `custom`。
|
||||
- 项目创建只生成 `.makelore/project.json` 和 `knowledge/`,不生成业务源码、依赖、锁文件或发布模板。
|
||||
- 独立 Device Package `makelore-project-scaffold` 提供显式 Scaffold Skill。其脚本按固定版本生成六个交互式 AI 应用起步文件;写入前预检全部目标,不覆盖已有路径,受控失败时只回滚本次创建的文件和目录。
|
||||
- 代码内置的官方 Marketplace Plugin `makelore.project-scaffold` 提供显式 Skill `makelore-project-scaffold`。它保留 Account Library 获取、项目启用和 Agent 分配语义,但固定版本资源随 MakeLore 客户端交付,不经过 Package Store 下载。其脚本生成六个交互式 AI 应用起步文件;写入前预检全部目标,不覆盖已有路径,受控失败时只回滚本次创建的文件和目录。
|
||||
- Scaffold Skill 不安装依赖、不访问网络、不执行构建、不上传、不提交审核,也不提供 `--force`、类型覆盖或模板迁移状态。Main 继续独占固定 npm/Vite 构建、同字节预检、打包和上传;Works Square 继续独占服务端校验、不可变 Release 与运营审核。
|
||||
- 非空标准 Skill `scripts/` 目录属于可执行代码,即使 Device Package 仍为 `skill-only`,也必须在预览和独立后续确认中披露文件、网络、进程及桌面用户权限。应用通过不可覆盖的 `MAKELORE_NODE_EXECUTABLE` 向父 Pi worker/Agent Server 提供自身 Node;不得回退系统 Node。
|
||||
- 官方 Plugin 的 `.mjs` 仅因它位于客户端固定、代码所有的 bundled resource root 中而可执行。应用通过不可覆盖的 `MAKELORE_NODE_EXECUTABLE` 向父 Pi worker/Agent Server 提供自身 Node;不得回退系统 Node。该例外不适用于 Marketplace 下载 artifact:P0 下载包仍只接受文本/图片 Skill 资源并拒绝 `.mjs`。第三方 Device Package 的可执行代码继续走自身的披露与确认边界。
|
||||
- Skill 的发布检查只是只读准备度指导:区分确定阻断、源码包排除影响、运行时/平台待确认项和静态已满足项,并引用项目相对证据。它不能宣称构建、上传、审核或生产发布成功。
|
||||
|
||||
## Consequences
|
||||
|
||||
- 模板可随独立插件版本演进,不再扩大项目创建服务的职责。
|
||||
- 模板可随官方 Plugin 版本演进,不再扩大项目创建服务的职责,也不需要把脚本上传为 Marketplace artifact。
|
||||
- 旧项目无需批量迁移即可继续打开、生成脚手架和发布;新写入只使用规范类型。
|
||||
- 发布规则在 Skill 中可被 Agent 解释和预检,但权威执行仍只有 Main 与 Works Square,避免形成第二套发布实现。
|
||||
- 对外分发仍需不可变 SemVer/Git 版本、真实 Device Package 安装链和已安装 Windows、签名 macOS、native Linux 运行证据;工作区测试不能替代这些发布门禁。
|
||||
- 对外分发仍需不可变 SemVer/Git 版本、服务端 bundled Release 元数据、已安装 Windows、签名 macOS 与 native Linux 运行证据;工作区测试不能替代这些发布门禁。
|
||||
|
||||
## Supersedes
|
||||
|
||||
@@ -35,5 +35,9 @@
|
||||
|
||||
- Source commit: `959b633`
|
||||
- Integration merge: `4bc3e0ea5331a7d3f3576768c0119c02c0f0f952`
|
||||
- Official Marketplace source commit: `ddb678b46ff10a28e04beeafcfc00c8c8a23ff9f`
|
||||
- Official Marketplace integration merge: `2bc3e4420852388ce46841e05c1cbf49e80b250c`
|
||||
- Source task: `20260904-project-scaffold-implementation-7e4c2a91`
|
||||
- Marketplace source task: `20260904-marketplace-scaffold-client-6c4e8a21`
|
||||
- Marketplace integration task: `20260904-project-scaffold-integration-client-4f2a8c71`
|
||||
- Proposal: `10-decisions/proposals/20260904-project-scaffold-implementation-7e4c2a91__interactive-ai-app-type.md`
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
| ID | Decision | Status | Date | Applies To | Detail |
|
||||
|---|---|---|---|---|---|
|
||||
| ADR-008 | 交互式 AI 应用使用单一规范类型,项目创建与显式 Scaffold Skill、发布权威分离 | Accepted / implemented | 2026-09-04 | Project creation、`ProjectType`、Device Packages、scaffold、release readiness | `adr-008-interactive-ai-app-scaffold.md` |
|
||||
| ADR-008 | 交互式 AI 应用使用单一规范类型,项目创建与官方 bundled Scaffold Skill、发布权威分离 | Accepted / implemented, amended 2026-09-04 | 2026-09-04 | Project creation、`ProjectType`、Official Plugins、Marketplace delivery、release readiness | `adr-008-interactive-ai-app-scaffold.md` |
|
||||
| ADR-007 | AI Design 采用单一 Current Specification、Living Form 与不可变 Quote 的 V2 权威 | Accepted / implemented | 2026-08-30 | AI Design Renderer、Electron Main、Works Square V2 API | `adr-007-ai-design-living-form-v2.md` |
|
||||
| ADR-002 | Robot V1 采用 Main 门控的引导式热点配网并衔接现有六位 Binding | Accepted / implemented, default on | 2026-08-16 | Robot Renderer、Host API、Electron Main、现有固件热点入口 | `adr-002-robot-guided-hotspot-binding-v1.md` |
|
||||
| ADR-003 | Robot 配网页内扫描并连接 Windows/macOS 热点 | Accepted / implemented with physical release gates pending | 2026-08-16 | Robot Renderer、Host API、Electron Main、Windows WLAN、macOS CoreWLAN/CoreLocation | `adr-003-robot-in-app-hotspot-connection.md` |
|
||||
|
||||
@@ -1,45 +0,0 @@
|
||||
# 交互式 AI 应用统一类型提案
|
||||
|
||||
## 文档信息
|
||||
|
||||
- 状态:Proposed,等待 Integration Gate 提升
|
||||
- 所有者:`20260904-project-scaffold-implementation-7e4c2a91`
|
||||
- 日期:2026-09-04
|
||||
- 影响范围:项目创建、项目配置读取、脚手架、发布打包与作品元数据
|
||||
|
||||
## 决策
|
||||
|
||||
新建项目的唯一可发布类型改为:
|
||||
|
||||
- 稳定标识:`interactive_ai_app`
|
||||
- 展示名称:`交互式 AI 应用`
|
||||
|
||||
`mini_game` 与 `mini_program` 不再出现在新建入口,也不再由新客户端写入。两者作为历史只读别名,在项目配置读取边界统一归一化为 `interactive_ai_app`,不批量改写用户已有的 `.makelore/project.json`。归一化后的打包清单和后续提交元数据只输出规范值。
|
||||
|
||||
`custom` 仍是独立的工作空间类型,并继续禁止进入平台的一键发布流程。
|
||||
|
||||
## 脚手架与发布合同
|
||||
|
||||
- 脚手架只维护一套通用 Vite 静态应用模板,不再按小游戏/小程序维护两套业务模板。
|
||||
- 历史项目调用脚手架时使用相同的统一模板,脚本返回规范类型,但保留原始项目元数据。
|
||||
- 固定 npm/Vite 构建、静态产物合同、浏览器预检、上传和审批要求不因类型合并而放宽。
|
||||
- 平台服务应先兼容接收三个值并统一输出 `interactive_ai_app`,再发布只写规范值的新客户端,以支持滚动升级。
|
||||
|
||||
## 兼容与迁移边界
|
||||
|
||||
- 不执行数据库或本地配置的批量历史迁移。
|
||||
- 不增加版本开关、双写、模板迁移框架或类型特有构建分支。
|
||||
- 旧客户端上传 `mini_game` / `mini_program` 时,服务端在校验边界接受并归一化;`custom`、未知值仍拒绝。
|
||||
- 历史发布记录保持不可变;公开读取和信息流投影使用规范类型。
|
||||
|
||||
## 被取代的语义
|
||||
|
||||
本提案在集成后取代既有文档中“小游戏与小程序是两个可发布项目类型”以及“二者分别生成不同模板”的部分。既有关于静态 Vite 发布、安全预检、制品不可变与审批流程的约束继续有效。
|
||||
|
||||
## 验收
|
||||
|
||||
- 新建界面只显示“交互式 AI 应用”和“自定义项目”。
|
||||
- 新建可发布项目落盘 `interactive_ai_app`,脚手架生成统一模板。
|
||||
- 两种历史配置均可打开和发布,原配置文件不会仅因读取而被改写。
|
||||
- 客户端清单、上传元数据和平台公开投影均使用 `interactive_ai_app`。
|
||||
- `custom` 与未知类型仍被拒绝发布。
|
||||
Reference in New Issue
Block a user