@microi.net/cli 5.0.0 → 5.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (26) hide show
  1. package/.codebuddy-plugin/marketplace.json +2 -2
  2. package/.codebuddy-plugin/plugin.json +1 -1
  3. package/.codex-plugin/plugin.json +1 -1
  4. package/.workbuddy-plugin/marketplace.json +2 -2
  5. package/.workbuddy-plugin/plugin.json +1 -1
  6. package/assets/build-meta.json +4 -4
  7. package/package.json +1 -1
  8. package/scripts/mcp-server.js +85 -85
  9. package/scripts/microi-codex-router.js +9 -1
  10. package/scripts/microi-skills.meta.json +190 -190
  11. package/skills/.microi-skills-version.json +2 -2
  12. package/skills/.progressive-disclosure-manifest.json +33 -33
  13. package/skills/microi-client-frontend/SKILL.md +23 -4
  14. package/skills/microi-client-frontend/references/progressive-03-vue3-/345/211/215/347/253/257/345/276/256/346/234/215/345/212/241/345/256/277/344/270/273/350/247/204/345/210/231.md +29 -6
  15. package/skills/microi-deployment/SKILL.md +14 -1
  16. package/skills/microi-deployment/references/deployment-matrix.md +7 -0
  17. package/skills/microi-docs-coverage/references/capability-map.md +1 -1
  18. package/skills/microi-microservice/SKILL.md +33 -2
  19. package/skills/microi-microservice/references/runtime-delivery.md +44 -1
  20. package/skills/playwright-e2e/SKILL.md +23 -5
  21. package/skills/playwright-e2e/references/progressive-04-ci-/345/273/272/350/256/256.md +51 -5
  22. package/skills/unity-integration/SKILL.md +2 -0
  23. package/skills/unity-integration/references/ai-app-delivery.md +2 -0
  24. package/skills/v8-file-upload/SKILL.md +16 -5
  25. package/skills/workspace-conventions/SKILL.md +17 -2
  26. package/skills/workspace-conventions/references/progressive-02-microi-net-api-/346/234/254/345/234/260/345/220/257/345/212/250/347/272/246/345/256/232.md +20 -2
@@ -38,7 +38,7 @@ description: Microi V8 与 MCP 文件上传下载指南。用于处理流式 AI
38
38
  可信后端 V8 可用 `V8.Http.GetResponse({ Url: url }).RawBytes` 下载,再用 `System.Convert.ToBase64String` 和 `V8.Method.Upload` 上传。该路径同样必须校验域名、大小、Content-Type、后缀和最终重定向目标。
39
39
 
40
40
  <!-- /microi-progressive:chunk -->
41
- <!-- microi-progressive:chunk id=v8-file-upload-002 sha256=ab3fa9eda3090868f45651aaddfa6b5ecd390535123f4666c9b67fba6a6e34f7 -->
41
+ <!-- microi-progressive:chunk id=v8-file-upload-002 sha256=01111b2fe994a2a5e424f45d405821f0b4f5c29235bc93757352d4c7e10d8d84 -->
42
42
  ## 接收前端上传的文件
43
43
 
44
44
  前端发起文件上传时,平台自动把文件以 base64 形式注入到 `V8.FilesByteBase64`:
@@ -69,9 +69,20 @@ var filePath = upResult.Data[0].Path; // 相对路径,存数据库
69
69
  var fullUrl = upResult.Data[0].FullPath; // 完整 URL(公有桶)
70
70
  ```
71
71
 
72
- ### 平台上传分层限制
72
+ ### AI 应用超大资产断点续传
73
73
 
74
- Token 不是无限上传授权。所有 HTTP、表单、V8 和移动端上传入口必须在解码 Base64、解析图片或调用对象存储前执行服务端校验。上传限制分为四层,不能把租户业务值误称为平台硬上限:
74
+ Unity `Data`、WASM、Windows 安装包、视频模型等发布资产不得进入 Base64、JSON 或 Jint。`microi_publish_application_directory_stream` 在协议 v3 下与 `@microi.net/cli` 共用同一套传输客户端:单文件大于 128 MiB 时自动切换为原始字节断点续传,小文件继续兼容旧版单请求链路。
75
+
76
+ - 默认分片 16 MiB;5 GiB 文件为 320 片。分片通过 `application/octet-stream` 发送,必须携带精确 `Content-Length` 与 SHA-256。
77
+ - 服务端逐片写入 HDFS 后重新流式回读校验;完成时按顺序合并、再次核对整文件 SHA-256,再生成不可变版本完整性标记。
78
+ - 会话 Id 由租户、应用、版本、路径和文件摘要确定。网络中断或进程重启后先读取远端状态,只续传缺失分片;已成功的相同摘要请求直接幂等返回。
79
+ - 吾码不为协议 v3 设置业务文件/目录字节上限,状态中的 `ApplicationAssetResumableProductSizeLimitBytes=0` 表示没有产品配置上限。每个对象仍受协议技术边界(最多 10000 片、单片最多 1 GiB)、JavaScript 安全整数、对象存储、磁盘、网关和网络条件约束。
80
+ - 该链路只允许通过能力鉴权的当前租户超级管理员,并继续受 `FileUploadEnabled` 总开关控制;它不是普通用户上传或任意 HDFS 路径写入接口。
81
+ - 每个会话都在 `mci_ai_app_file` 保留审计记录,`StorageScope=ApplicationAssetMultipartSession`。管理员在 **系统引擎 → 超大文件上传记录** 查看状态、阶段、已传字节/分片、进度、心跳、错误和恢复建议;成功、失败和取消记录都不静默删除。
82
+
83
+ ### 普通业务上传的分层限制
84
+
85
+ 以下限制适用于 HTTP、表单、V8、移动端和旧版应用资产单请求,不适用于上面的受信任 v3 断点续传。Token 不是无限上传授权;普通入口必须在解码 Base64、解析图片或调用对象存储前执行服务端校验:
75
86
 
76
87
  1. **租户业务配置**:有效正数/布尔值按 `sys_osclients` 当前租户 → 代码默认值解析。租户可以按业务需要提高或降低默认值,不要求安装者维护额外环境变量或修改 `appsettings`。
77
88
  2. **平台绝对上限**:最终业务值再与代码内固定灾难保护上限取较小值,租户和安装参数都不能放大。
@@ -91,7 +102,7 @@ Token 不是无限上传授权。所有 HTTP、表单、V8 和移动端上传入
91
102
 
92
103
  - `sys_osclients` 六个字段全部可空;空值、无效值或老数据库缺列时使用代码默认值,不会因升级自动停用上传。`FileUploadMaxRequestMB` 指一次上传所有文件的业务合计大小,不等于 Kestrel HTTP 请求正文上限。
93
104
  - 固定灾难保护和 HTTP/Multipart/Form 解析上限不属于安装配置;租户值即使更大也会被这些边界截断。最终单次总量还不能超过帐号或租户的有效日额度,单文件不能超过最终单次总量。
94
- - `FileUploadEnabled=0` 表示禁用当前租户的交互式上传,不表示绕过限制。平台内部受控任务仍受全局大小硬上限;租户配置刷新应走现有 SaaS 引擎重载和共享 Redis 发布订阅,不能依赖单节点内存。
105
+ - `FileUploadEnabled=0` 表示禁用当前租户上传,也会阻止 AI 应用资产断点续传;不能把内部发布协议当成绕过开关的后门。普通单请求继续受全局大小硬上限,v3 只移除产品级字节上限;租户配置刷新应走现有 SaaS 引擎重载和共享 Redis 发布订阅,不能依赖单节点内存。
95
106
  - 帐号与租户每日额度在共享 Redis 中用单次原子脚本预留,支持多节点;Redis 不可用时失败关闭,不能降级成无限上传。
96
107
  - 额度按 UTC 日期统计。为防并发重试绕过限制,后续对象存储失败也不退还已经预留的额度。
97
108
  - 每日额度只阻断短期滥用;对象存储必须另外配置租户/桶总容量、账单告警、生命周期与实际用量对账。Redis 计数不能作为长期容量事实源。
@@ -116,7 +127,7 @@ Token 不是无限上传授权。所有 HTTP、表单、V8 和移动端上传入
116
127
  4. 保存后逐条远程回读;FormEngine 会排队重载 SaaS 运行配置,再用真实小文件上传做生效冒烟。只看到 MCP 返回“更新成功”不算验收。
117
128
  5. 提高每日配额保留当天已用计数,剩余额度为新上限减已用量。计数按 UTC 日期,失败上传不退款;除非用户明确授权事故处置,不得删除 Redis 配额 Key。
118
129
 
119
- 租户 MCP 只能调整业务层配置;平台固定灾难保护、HTTP/Multipart/Form 解析上限和反向代理上限不能通过 `sys_osclients` 绕过。写入 `sys_osclients` 属于控制面操作,只允许当前租户的 `Level >= 9999` 管理身份,并且必须保留 MCP 审计与写后回读。
130
+ 租户 MCP 只能调整普通业务上传配置;平台固定灾难保护、HTTP/Multipart/Form 解析上限和反向代理上限不能通过 `sys_osclients` 绕过。协议 v3 的原始分片不读取普通单请求大小字段,但仍要求能力鉴权、总开关、版本快照、逐片/整文件哈希和审计。写入 `sys_osclients` 属于控制面操作,只允许当前租户的 `Level >= 9999` 管理身份,并且必须保留 MCP 审计与写后回读。
120
131
 
121
132
  ### UniApp / H5 客户端直传路径规则
122
133
 
@@ -161,7 +161,7 @@ AI 在工作区任意任务中生成的**一次性临时脚本、诊断文件、
161
161
  - 文档改动后执行 `npm run docs:build`;验收时检查本次没有无理由新增 `.md` 页面或导航路由。
162
162
 
163
163
  <!-- /microi-progressive:chunk -->
164
- <!-- microi-progressive:chunk id=workspace-conventions-009 sha256=3e9f3fbe30417e8b309ebc5b52544d70390db36b30cebe3e96f1fa5928a9b99a -->
164
+ <!-- microi-progressive:chunk id=workspace-conventions-009 sha256=dc7dbe2d2f60466a7170fff65a5df8769bc795b4ab23151a24b665380d7c6e37 -->
165
165
  ## 多对话共享工作区变更归属保护(强制)
166
166
 
167
167
  同一工作区可能同时被用户、其它 Codex 对话、IDE、自动化任务或外部 Git 操作修改。任务启动前已经存在、或无法用本对话证据严格证明归属的差异,一律视为他人资产并保留;“工作区是脏的”不是清理授权。
@@ -174,7 +174,22 @@ AI 在工作区任意任务中生成的**一次性临时脚本、诊断文件、
174
174
  - 修复误撤回时,只恢复被本对话删除的原始字节/行,随后断言目标 hunk 已恢复、其它既有差异保持不变,并在最终说明中明确列出仍存在但未触碰的并行改动。
175
175
  - 对 `microi.doc/docs/doc/about/update-log.md` 尤其严格:已经发布的条目即使日期是当天、位于最新提交或内容覆盖当前任务,也必须默认属于既有发布成果。除非用户明确要求修改,或本对话持有精确新增证据,否则不得删除、重写或降级该条目。
176
176
 
177
- <!-- /microi-progressive:chunk -->
177
+ ## 本地多租户浏览器隔离(强制)
178
+
179
+ - 本地 `Microi.Client` 使用 `src/config.json.ApiBaseDev` 作为默认 API;URL 中位于 `#` 之前的
180
+ `ApiBase` 与 `OsClient` 是当前页面最高优先级,标准形式为
181
+ `http://localhost:61500/?OsClient=<tenant>&ApiBase=<encodeURIComponent(apiBase)>#/route`。
182
+ - 同一个浏览器 Profile/Context 下的 localhost 页面共享 localStorage、Pinia、Token、CurrentUser、
183
+ ApiBase 和 OsClient。并行测试不同目标时,一组 `ApiBase + OsClient` 必须对应一个独立浏览器
184
+ Context/Profile;Playwright/Codex 使用 `browser.newContext()`,不得只在同一 context 中新开 Page。
185
+ - 人工测试的第二个不同租户至少使用无痕窗口;多个无痕窗口可能共享同一临时会话,三个以上并行
186
+ 目标必须使用独立 Profile、独立 `--user-data-dir` 或自动化独立 context。
187
+ - AI 收到线上吾码地址时,先在一次性独立 context 读取
188
+ `window.__MICROI_RUNTIME_ENDPOINT__`;旧版再回退到页面全局值、同源缓存和域名解析。确认实际
189
+ ApiBase/OsClient 后,才在新的独立 context 打开本地 URL。详细流程读取 `microi-client-frontend`、
190
+ `playwright-e2e` 与 `microi-deployment`。
191
+
192
+ <!-- /microi-progressive:chunk -->
178
193
  ## 详细参考路由(渐进披露)
179
194
 
180
195
  仅在当前任务涉及对应主题时读取;下列文件合计保留了原 SKILL.md 的全部详细知识。
@@ -20,7 +20,7 @@ Pop-Location
20
20
  **本地后端自动重启要求(强制)**:本地联调需要启动或重启 `Microi.net.Api` 时,先检查 `.tmp/microi-process-state/release.lock`;发布锁存在时禁止启动或重启。无发布时先回读标准端口和 `/api/Diagnostics/liveness`,健康服务默认复用;只有本任务修改了需重载的后端代码、服务不健康或用户明确要求重启时,才可精确停止当前工作区的后端进程,然后在 `Microi.Server/Microi.net.Api` 目录执行 `dotnet run --launch-profile Microi.net.Api`。优先使用用户能在 VS Code 中看到和停止的终端(包含 VS Code 集成终端、VS Code 任务终端、用户明确允许的 VS Code 可追踪隐藏终端);如果当前工具没有 VS Code 终端能力,允许使用本机可见的 `cmd`/PowerShell 窗口启动,禁止使用脱离用户可见窗口的后台服务或守护进程。不要误杀数据库、Redis、Node 前端或其它业务进程。
21
21
 
22
22
  <!-- /microi-progressive:chunk -->
23
- <!-- microi-progressive:chunk id=workspace-conventions-025 sha256=4b9936ad45a2893f4b9c32f3acd7230e4f57cb4314fd67e16d13ce09f368c003 -->
23
+ <!-- microi-progressive:chunk id=workspace-conventions-025 sha256=07c3d729c8f1e9a2bf93ff00937e5d6eae4602d346e4f9254b03a33211ac4848 -->
24
24
  ## 多 AI 对话共享本地服务与发布互斥(强制)
25
25
 
26
26
  同一工作区的 4、5 个 AI 对话共用同一份源码和固定端口时,`61500/61501` 是工作区级单例共享服务,不属于某个对话。端口相同意味着无法让每个对话拥有一套独立进程;正确模型是“复用健康服务 + 需要重载时串行重启 + 发布时独占”,不能让每个对话都无条件先杀再启动。
@@ -33,7 +33,25 @@ Pop-Location
33
33
  - Edge/Chrome 主浏览器、VS Code 持有的 Playwright Test Server、语言服务和 MCP Node 进程不属于发布文件锁清理范围。浏览器自动化必须关闭本用例创建的 context/browser;不得通过 `taskkill /IM chrome.exe|msedge.exe|node.exe|dotnet.exe` 清空整机进程。
34
34
  - 人工盘点使用:`powershell -NoProfile -ExecutionPolicy Bypass -File Microi.Server/tools/Microi.LocalProcessManager.ps1 -Action Status`。需要单独停止当前工作区服务时使用 `-Action StopBackend` 或 `-Action StopFrontend`,不再让用户根据任务管理器猜进程。
35
35
 
36
- <!-- /microi-progressive:chunk -->
36
+ ### 共享前端服务不等于共享浏览器会话
37
+
38
+ 多个 AI 对话可以复用同一个 `61500` Vite 进程,但不能复用同一个浏览器存储上下文测试不同
39
+ `ApiBase + OsClient`。`Microi.Client` 对 localhost 同源持久化 Token、CurrentUser、ApiBase、
40
+ OsClient 等状态;同一 Profile/Context 内切换租户会污染其它窗口。
41
+
42
+ - 本地 URL 的最高优先级参数位于 `#` 之前:
43
+ `/?OsClient=<tenant>&ApiBase=<encodeURIComponent(apiBase)>#/route`。
44
+ - 手工第二个不同租户至少使用无痕窗口;多个无痕窗口可能共享同一临时会话,因此更多并发目标使用
45
+ 独立 Profile 或独立 `--user-data-dir`。
46
+ - Playwright/Codex 为每组目标创建独立 `browser.newContext()`,一个 context 内不得用多个 Page
47
+ 混测不同租户。只关闭本任务创建的 context/browser,不结束用户浏览器。
48
+ - 线上目标先在一次性 context 等待页面初始化并读取 `window.__MICROI_RUNTIME_ENDPOINT__`;旧版本
49
+ 回退读取 URL、`window.ApiBase/window.OsClient`、`localStorage['microi.net']`,必要时调用域名租户
50
+ 解析接口。不能根据站点标题猜 OsClient,也不能把 Token 放入本地 URL。
51
+ - 目标 API 还需允许 `http://localhost:61500` 的 CORS。运行目标识别、本地源码验证与线上部署验收
52
+ 分层报告。
53
+
54
+ <!-- /microi-progressive:chunk -->
37
55
  <!-- microi-progressive:chunk id=workspace-conventions-026 sha256=73207c0cfcc442a177c47c36503dd6145fc826e23e79df3913861f65d8d16df3 -->
38
56
  ## 本地租户与测试凭据读取约定
39
57