openxiangda-skill-kit 2.3.98 → 2.3.100

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "openxiangda-skill-kit",
3
- "version": "2.3.98",
3
+ "version": "2.3.100",
4
4
  "description": "OpenXiangda 2.0 中文 AI 技能的校验、分发与安装。",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -17,7 +17,7 @@
17
17
  "README.md"
18
18
  ],
19
19
  "dependencies": {
20
- "openxiangda-devkit-core": "2.57.1"
20
+ "openxiangda-devkit-core": "2.59.0"
21
21
  },
22
22
  "devDependencies": {
23
23
  "tsx": "4.23.12",
@@ -622,3 +622,23 @@ CAS与写后范围检查同事务执行。应用仍负责业务规则和字典gu
622
622
  没有新增独立的部门可见范围策略。任何部门不存在或已删除时,整组失败,不按姓名匹配,
623
623
  不接受客户端标签,也不回退到应用内复制的组织表。`snapshotRevision` 描述返回事实,
624
624
  `resolvedAt` 来自数据库时间;快照不能替代后续业务事务的权限检查。
625
+
626
+ ## action-owned 资源的受控事件与机器回调事务
627
+
628
+ 声明 `platformAccess.dataMutations`,把资源、操作、字段和单事务数量上限固定到事件订阅或机器操作:
629
+
630
+ ```ts
631
+ platformAccess: { dataMutations: [
632
+ { resourceCode: 'contracts', operations: ['update'], fieldCodes: ['status', 'signingStatus'], maxOperations: 1 },
633
+ { resourceCode: 'performance-plans', operations: ['update'], fieldCodes: ['planDate', 'status'], maxOperations: 50 },
634
+ ] }
635
+ ```
636
+
637
+ 该能力要求平台 `data.service-mutations` 1.0.0。受验证的 `@OpenXiangdaEventHandler` 内继续使用 `OpenXiangdaApplicationDataApiService.transaction`;SDK 自动携带事件来源,平台在同一事务锁定原投递与 processing receipt 的有效租约,并解析当前不可变订阅声明。
638
+
639
+ 机器回调在 `@OpenXiangdaOperation` 已验证请求内使用 `applicationData.transactionFromServiceAction(request, transaction)`。`request` 必须是平台已验证的 service 具名操作上下文;平台独立验证原始短期网关 invocation、机器的操作 capability 和当前部署,同时仍验证运行凭据。用户/developer、裸 OAuth data:write 和调用方填写的 operation/source 对象不能替代此证明。
640
+
641
+ 字段、资源、操作或数量超出声明时整事务拒绝;CAS、原幂等键、额度终态与文件绑定校验继续生效。不分批提交 50 个节点,不绕过 Native owner 门禁,不把 JWT/租约 nonce 保存到业务表。role-member/actor-authority 仍需要真实用户动作,服务源不冒充用户成员。声明相同原事件在新的有效投递租约下可按原键重试;证明不能离开处理器执行使用。
642
+
643
+ 可信 Scheduler/补偿 Worker:给可供后台执行的同一具名操作 `dataMutations` 条目加 `allowRuntimeWorker: true`,并使用
644
+ `await applicationData.withWorkerAction('callback-operation-code', () => callbackService.handle(originalInput))`。此作用域中的 `.transaction()` 自动携带当前 RuntimeLeaseService 的持有者与租约证明;平台在原事务锁定当前运行凭据、部署/Head 和该后台租约,并逐资源拒绝没有该 opt-in 的条目。无需 HTTP 请求或用户身份;没有活动租约、普通 OAuth 或已过期/被替代的实例仍被拒绝。该作用域可调用现有 CallbackService、DueSweep 等服务,整批操作同事务,保持原业务幂等键。
@@ -121,30 +121,29 @@ AppSpec 随开发持续维护:测试发布前补齐总纲、关联变更与验
121
121
 
122
122
  前端启动使用根目录 `dev:web`。声明了后端的应用同时运行配置的 `backend.root` 包内的 `dev`,无需增加根目录 `dev:server`;纯前端应用只启动 Web 和代理。已有前端测试版本后,可以启用本地 Nest 联调,不必先构建或发布后端镜像。平台返回的活动应用版本和开发会话绑定本次联调,环境版本变化导致会话不一致时,停止后重新运行 `dev`。
123
123
 
124
- 在已有测试环境的应用中,`dev` 先将当前完整资源、权限、具名操作和固定流程配置
125
- 提交给平台。平台使用同源编译器校验配置与契约,保存真实配置版本和同步回执,
126
- 选择该应用 test 的配置 Head,然后 CLI 重新读取环境并创建开发会话。这个过程
127
- 不运行应用 `build`、打包或容器部署;代码继续在本机运行。相同配置与契约再次启动
128
- 时复用当前版本;旧 Head 的开发会话失效,需要重新启动。新增模型和流程可以在
129
- 同一批开发中联调,不需要每次冻结 SDK 和正式部署应用。
130
-
131
- 完整开发配置要求平台提供 `application.development-configuration` 1.0.0,并且
132
- 应用已有 test Native Head;当前尚不支持无测试基线的新应用直接同步。同步会改变
133
- test 的配置选择,历史正式版本、数据和原运行保留。开发配置不能用于生产晋级、
134
- 正式部署或回滚候选。
135
-
136
- 声明后端的应用还要求 `application.development-backend-events` 1.0.0。CLI自动连接
137
- 当前test开发版本,把平台已签名的后台事件和流程业务步骤投递到本机Nest源码,
138
- 并复用平台的持久执行回执与失败恢复。应用运行凭据只进入本地Nest环境,不传入Web、
139
- 页面或终端状态。开发连接关闭或失联时,事件保留在平台队列,不回退到旧后端制品;
140
- 同一测试环境同时只能连接一个开发会话,环境版本变化后重新运行dev。
141
- 临时运输故障会在20秒内恢复原连接;已执行处理器的回复只重发原响应,不重复执行业务。
142
- 授权、环境版本或连接归属变化会立即停止;超过恢复窗口则保留平台原执行记录,重新运行dev继续。
143
-
144
- 开发连接会启用当前后台事件订阅,保留手工暂停;正常关闭时暂停本连接开启的订阅。
145
- Timer和DateTrigger继续暂停,日期提醒仍须确认测试副作用意图并完成专门验收。
146
- 当前投递范围是标准后台事件与流程业务步骤;自定义审批人provider、managed-command
147
- planner等调用仍须正式后端或后续能力。不要把本地开发者联调视为普通角色验收。
124
+ 在已有测试环境的应用中,`dev` 将当前配置与契约提交给平台。平台使用同源编译器校验,
125
+ 保存独立的开发 AppVersion 和准备回执,由开发会话引用。**开发会话不会选择或切换 test 的发布 Head**;
126
+ 线上前端、后端、权限、流程、订阅与调度仍由已部署版本拥有。代码继续在本机运行,不构建或部署应用制品。
127
+
128
+ 该模式要求平台提供 `application.development-configuration` 2.0.0 和一个已部署的 test Native 基线。
129
+ 旧平台需要先升级配套版本;旧 SDK 在协商失败时必须先升级,不能使用旧的 dev 同步路径。
130
+ 开发 AppVersion 不能用于生产晋级、部署或回滚候选。发布或授权基线变化时,停止并重新运行 dev,
131
+ 平台不会自动把旧会话改绑到新版本。
132
+
133
+ 已有模型上的新增字段使用可空物理列 overlay(必填约束仅由开发请求契约校验);页面和具名操作读取开发会话的独立配置。
134
+ 已有字段类型、约束、数据策略、新模型以及角色或流程定义的变更须先在独立测试环境正式部署。
135
+ 不兼容声明会明确报错,不能把旧流程偷偷当作本地新流程。共享测试数据的真实写入仍会影响同一数据集,
136
+ 配置隔离不等于数据隔离。
137
+
138
+ 本地 Nest 使用开发会话自身的短期 OAuth 凭证,凭证只进入 Nest 环境。
139
+ 它不会读取、旋转或撤销已部署后端的凭证。普通浏览器联调保留实际登录人的身份与角色;
140
+ loopback 代理仅注入配置选择证明,平台和 Nest 将该证明与签名调用中的 sessionId 核对。
141
+ 同一环境可以存在多个会话,源码连接、响应、关闭和撤销按 sessionId 隔离,并保留环境总并发上限。
142
+
143
+ 只有显式选择开发会话的请求会到本机源码。开发连接断开时,该请求报连接错误;普通线上请求、
144
+ 发布回调和后台事件继续到部署制品。启动和退出 dev 都不会启停环境订阅、Timer 或 DateTrigger。
145
+ 后台事件和业务日期调度仍通过正式部署批次验收,本次回执明确 `backendEventsAvailable=false`。
146
+ 浏览器文件流操作要求部署制品;本地联调会明确提示该能力边界。
148
147
 
149
148
  同步失败保留原配置运行 ID;相同输入重试复用原回执与版本,并由平台锁和 Head
150
149
  CAS 判断是否允许继续。并发请求返回进行中;服务重启释放锁后允许恢复原运行。
@@ -1210,3 +1210,5 @@ subject update和来源guards提交实际改变的派生字段;普通补填仍
1210
1210
  缺少规则、返回 `undefined` 或回调失败均保持原显示。PC/手机共用这一规则,
1211
1211
  最后一个字段被省略后对应空分组也消失。这是同步展示扩展,不发请求、不写数据,
1212
1212
  不改变字段授权、审批参数或流程版本;不提供该选项的应用保持既有行为。
1213
+
1214
+ `commandHandlers.resubmit` 仅绑定固定 correction 节点的业务重校验。普通 `return_review` 任务继续由 Kernel 标准 `resubmit` 办理:Surface 不返回 correction operationCode,审批人不需要起草提交 capability。无需增加 `taskKinds` 字段、改动已有定义版本或重建在途实例;直接对普通退回任务调用 correction 业务动作仍被拒绝。