@microi.net/cli 5.1.9 → 5.2.1

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 (38) 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 +6 -6
  7. package/cordis.patch.yml +1 -1
  8. package/package.json +1 -1
  9. package/scripts/mcp-server.js +122 -101
  10. package/scripts/microi-cli.js +2 -2
  11. package/scripts/microi-skills.meta.json +215 -200
  12. package/skills/.microi-skills-version.json +2 -2
  13. package/skills/.progressive-disclosure-manifest.json +3566 -3566
  14. package/skills/README.md +2 -1
  15. package/skills/app-store/SKILL.md +7 -5
  16. package/skills/job-engine/SKILL.md +1 -1
  17. package/skills/microi-client-frontend/references/progressive-01-3-/345/212/250/346/200/201/346/214/211/351/222/256/347/263/273/347/273/237.md +1 -1
  18. package/skills/microi-docs-coverage/references/capability-map.md +1 -0
  19. package/skills/microi-form-engine/SKILL.md +34 -2
  20. package/skills/microi-form-layout/SKILL.md +8 -3
  21. package/skills/microi-left-right-layout/SKILL.md +2 -0
  22. package/skills/microi-sso/SKILL.md +82 -0
  23. package/skills/microi-sso/references/acceptance.md +49 -0
  24. package/skills/microi-sso/references/configuration-and-security.md +53 -0
  25. package/skills/microi-sso/references/inbound.md +53 -0
  26. package/skills/microi-sso/references/outbound.md +39 -0
  27. package/skills/microi-system-delivery/SKILL.md +9 -3
  28. package/skills/microi-system-delivery/references/progressive-01-/346/240/207/345/207/206/345/267/245/344/275/234/346/265/201.md +8 -3
  29. package/skills/microi-ui/SKILL.md +11 -7
  30. package/skills/module-engine/SKILL.md +4 -4
  31. package/skills/module-engine/references/module-config.md +4 -1
  32. package/skills/ui-design/SKILL.md +13 -9
  33. package/skills/v8-cache-pattern/SKILL.md +1 -0
  34. package/skills/v8-crud-api/SKILL.md +2 -2
  35. package/skills/v8-debugging/SKILL.md +3 -1
  36. package/skills/v8-menu-buttons/references/progressive-01-2-/346/214/211/351/222/256/345/257/271/350/261/241-schema.md +3 -2
  37. package/skills/v8-table-event/SKILL.md +1 -1
  38. package/skills/v8-table-event/references/progressive-02-/345/211/215/347/253/257/344/272/213/344/273/266/345/220/215-v8-eventname-/345/217/257/350/203/275/347/232/204/345/200/274.md +1 -1
@@ -10,7 +10,7 @@ description: Microi V8 CRUD 接口引擎开发。用于编写服务端 JavaScrip
10
10
  你正在开发 Microi 吾码平台的 V8 接口引擎。接口引擎是运行在服务端的 JavaScript 函数,通过 `V8.FormEngine` 操作数据库,通过 `V8.Result` 或 `return` 返回结果。
11
11
 
12
12
  <!-- microi-progressive:begin -->
13
- <!-- microi-progressive:chunk id=v8-crud-api-000 sha256=bfeaae480ebf6028fe98904cc6f8feb630b140b99551fefcc551c8038a2ca078 -->
13
+ <!-- microi-progressive:chunk id=v8-crud-api-000 sha256=6b43119f4eae78fb6b185d48c5c289878ba86093ae62ce44ad0bdaa48093f605 -->
14
14
  ## 本地优先与版本头(必做)
15
15
 
16
16
  AI 本地开发接口引擎时,优先修改 `microi-v8-engine/<租户>/<项目>/接口引擎/.../*.js` 本地文件,再通过 MCP 或 VS Code 插件同步到数据库。插件提示“本地和远端不一致”时,必须先读取本地与远端代码并合并有效差异,不能盲目用任一侧覆盖另一侧。
@@ -33,7 +33,7 @@ AI 本地开发接口引擎时,优先修改 `microi-v8-engine/<租户>/<项目
33
33
 
34
34
  Microi.net.Api 普通本地启动不要额外设置 `ASPNETCORE_ENVIRONMENT` / `DOTNET_ENVIRONMENT`,让 `Program.cs` 读取 `Microi.Server/Microi.net.Api/.microi-local` 并加载对应的 `appsettings.{Env}.json`。
35
35
 
36
- 版本与历史同步规则:通过 MCP 或 VS Code 插件保存接口引擎时,必须同步写入 `sys_apiengine.Version`;修改记录只写入 `sys_apiengine.ChangeHistory`,不得写进代码头。`ChangeHistory` 是“修改历史说明”,每次更新都必须把最新说明拼接到最前面,并保留原有全部历史文字,禁止覆盖、清空或只保留最新一条。旧数据库可能没有 `Version`、`ChangeHistory` 字段,工具必须检测字段或失败回退,保证旧库仍可只更新 `ApiV8Code` 与 `UpdateTime`。
36
+ 版本与历史同步规则:通过 MCP 或 VS Code 插件保存接口引擎时,必须同步写入 `sys_apiengine.Version`;新版平台把每次修改说明作为独立记录写入 `mci_apiengine_change_history`,表单中的“修改历史”使用 `TableChild` 展示,不再让客户端拼接或覆盖 `sys_apiengine.ChangeHistory` 多行文本。写入必须携带版本号与简明说明,并使用幂等 `EntryKey` 防止网络重试产生重复记录。安装/升级表单引擎官方应用时,旧 `ChangeHistory` 按非空行迁入子表并保留旧物理列作滚动兼容;尚未安装该子表、旧库缺字段或迁移期间,后端应自动回退旧字段或仅更新 `ApiV8Code` 与 `UpdateTime`,不得因此阻断代码同步。
37
37
 
38
38
  生成接口引擎代码时,代码内容本身(文件头、普通注释、`console.log`、返回 `Msg` 等)不要包含 `Microi`、`吾码` 等平台品牌文字,除非业务数据或字段值本身必须如此。生成代码要有可维护注释:每个 `function` 前写清用途、关键参数和返回值;跨表事务、权限校验、状态机、金额/库存计算、复杂 `_Where` 条件等代码段前写短注释说明业务原因;避免“给变量赋值”这类无信息量注释。
39
39
 
@@ -89,7 +89,9 @@ return {
89
89
  `HasMore + Checkpoint` 续跑,不要只提高单次超时或内存。
90
90
  - 接口引擎的正向开关是 `sys_apiengine.V8Limit`:默认关闭时
91
91
  `V8.Limits.UnlimitedRuntime=true`,打开后才应用超时、语句、函数递归、
92
- 累计分配和 Promise 等待限制。表后端事件仍用 `diy_table.V8Unlimited`。
92
+ 累计分配和 Promise 等待限制。表后端事件同样使用正向 `diy_table.V8Limit`:
93
+ 缺失、`null`、`0/false` 不设置单次预算,只有 `1/true` 才启用限制;旧
94
+ `V8Unlimited` 仅在新字段不存在时反向兼容。
93
95
  常驻内存保护、外部取消、并发、接口嵌套深度、权限沙箱与数据库限制始终
94
96
  生效;两类开关都只能来自持久化可信元数据,不能从请求参数启用。
95
97
  - 服务端另有一个内置受信任特例:主租户中由持久队列恢复的
@@ -74,9 +74,10 @@ return {
74
74
 
75
75
  - 列表页固定顺序为“模块 Hero(标题/副标题/动态指标)→ PageTabs → 查询与表格”;PageTabs 不能渲染到 Hero 上方,也不能重复承担模块标题。
76
76
  - `TargetSysMenuId` 为空时,页签仍在当前模块执行 `V8Code` 和重新查询。
77
- - `TargetSysMenuId` 指向其它模块时,点击会替换当前路由,并使用目标模块自己的表单引擎、字段、查询接口替换、按钮和分页配置完整初始化。
77
+ - `TargetSysMenuId` 指向其它模块时,点击会在当前 `diy-table` 实例内加载目标模块自己的表单引擎、字段、查询接口替换、按钮和分页配置;入口路由、面包屑、顶部访问标签和宿主 Hero 不变,URL 只更新 `Tab` 查询参数。
78
78
  - 目标模块可以设置 `Display=0、AppDisplay=0` 隐藏左侧菜单,但必须给使用角色分配菜单权限,否则动态路由中找不到目标模块。
79
- - 组成一组的所有模块应保存同一套 PageTabs;跨模块页签负责导航,目标模块加载后再根据路由 `Tab` 执行对应页签 V8。
79
+ - 一组 PageTabs 只保存在入口模块;隐藏目标模块设置 `ParentId=入口菜单Id、HasChild=0、PageTabs=[]`,不得复制同一套 PageTabs。入口菜单保持 `HasChild=0`,仍然直接打开业务页面。
80
+ - 模块设计器的 PageTabs 必须显示【关联模块】可搜索菜单树,展示模块名称并保存 `TargetSysMenuId`,不能让该协议只能手工改 JSON。
80
81
  - 禁止在 `diy-table` 或 mixin 中按模块名、Url、表名写死页签数据源。
81
82
 
82
83
  ### V8CodeShow(显隐控制)—— 支持 `return` 和 `V8.Result`
@@ -58,7 +58,7 @@ AI 本地开发表单 V8 事件时,优先修改 `microi-v8-engine/<租户>/<
58
58
  - 传入 `_InvokeType: 'Client'` → **触发**表单 V8 事件
59
59
  - Postman 等直接调用接口 → 前端事件**不执行**,后端事件**仍执行**
60
60
  - 服务器端提交前/后 V8 事件在**同一事务**中执行
61
- - `diy_table.V8Unlimited` 只控制该表的后端提交前、提交后和数据处理 V8;仅当事件链必须保持一个事务且无法安全分片时开启。它解除当前 Jint Engine 的超时、语句、函数递归和累计分配限制,但不解除进程常驻内存、取消、并发、接口嵌套深度、权限和数据库保护。
61
+ - `diy_table.V8Limit` 是表后端提交前、提交后和数据处理 V8 的正向开关:缺失、`null`、`0/false` 均不设置 Jint 单次超时、语句、函数递归和累计分配预算,只有 `1/true` 才启用这些限制。旧 `V8Unlimited` 仅在新字段不存在时反向推断,新的 MCP、Manifest 和应用资源只写 `V8Limit`。进程常驻内存、取消、并发、接口嵌套深度、权限和数据库保护始终生效。
62
62
 
63
63
  <!-- /microi-progressive:chunk -->
64
64
  <!-- microi-progressive:chunk id=v8-table-event-003 sha256=65a1e728982d4e534d06dc2440eac111fe53a08f0a3012c6a9f8b1de45b4b81f -->
@@ -35,7 +35,7 @@
35
35
  - `_InvokeType:'Server'` 只表达事件调用语义,不是客户端授权开关;浏览器伪造它不会获得受信任权限
36
36
  - `V8.FormSubmitAction` 的值是 `'Insert'`/`'Update'`/`'Delete'`(非 Add/Upt/Del)
37
37
  - 在 DataFilterV8 中使用 `V8.CacheData` 缓存查询结果,避免每行执行 N+1 查询
38
- - 表事件调用下游接口时,`diy_table.V8Unlimited` 不会改变下游接口;下游接口独立读取正向 `sys_apiengine.V8Limit`(默认 0 表示不限 Jint 单次预算,1 表示启用限制)
38
+ - 表事件调用下游接口时,表级正向 `diy_table.V8Limit` 不会改变下游接口;下游接口独立读取正向 `sys_apiengine.V8Limit`(两者均默认 0 表示不限 Jint 单次预算,1 表示启用限制)
39
39
 
40
40
  ### 复盘:提交后事件误把增量表单当作完整记录
41
41