openxiangda 2.67.1 → 2.67.3

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/dist/browser/runtime-capabilities.d.ts +5 -0
  2. package/dist/browser/runtime-capabilities.d.ts.map +1 -0
  3. package/dist/browser/runtime-capabilities.js +4 -0
  4. package/dist/browser/runtime-capabilities.js.map +1 -0
  5. package/dist/browser/runtime.d.ts.map +1 -1
  6. package/dist/browser/runtime.js +2 -4
  7. package/dist/browser/runtime.js.map +1 -1
  8. package/documentation/AGENTS.md +1 -0
  9. package/documentation/application-operations.md +58 -0
  10. package/documentation/appspec.md +4 -0
  11. package/documentation/concepts.md +2 -0
  12. package/documentation/data-authz.md +2 -0
  13. package/documentation/getting-started.md +7 -7
  14. package/documentation/manifest.json +15 -9
  15. package/documentation/multi-organization.md +152 -0
  16. package/documentation/product-design.md +2 -0
  17. package/documentation/reference/mcp.md +381 -0
  18. package/documentation/workflow-events.md +5 -0
  19. package/package.json +29 -25
  20. package/releases/2.67.3.json +39 -0
  21. package/skills/manifest.json +1 -1
  22. package/skills/openxiangda-v2/SKILL.md +7 -4
  23. package/skills/openxiangda-v2/references/application-operations.md +58 -0
  24. package/skills/openxiangda-v2/references/appspec.md +4 -0
  25. package/skills/openxiangda-v2/references/concepts.md +2 -0
  26. package/skills/openxiangda-v2/references/data-authz.md +2 -0
  27. package/skills/openxiangda-v2/references/getting-started.md +7 -7
  28. package/skills/openxiangda-v2/references/mcp.md +381 -0
  29. package/skills/openxiangda-v2/references/multi-organization.md +152 -0
  30. package/skills/openxiangda-v2/references/product-design.md +2 -0
  31. package/skills/openxiangda-v2/references/workflow-events.md +5 -0
  32. package/releases/2.63.0.json +0 -45
  33. package/releases/2.63.1.json +0 -46
  34. package/releases/2.66.0.json +0 -29
  35. package/releases/2.66.1.json +0 -29
  36. package/releases/2.66.2.json +0 -29
  37. package/releases/2.67.0.json +0 -33
  38. package/releases/2.67.1.json +0 -35
@@ -288,6 +288,387 @@ MCP 使用项目锁定的根包;在客户端配置下列 stdio 启动参数,
288
288
  {
289
289
  "type": "object",
290
290
  "oneOf": [
291
+ {
292
+ "type": "object",
293
+ "additionalProperties": false,
294
+ "properties": {
295
+ "operation": {
296
+ "const": "acceptance-data.prepare",
297
+ "description": "准备可回收的TEST原生数据批次及原验收身份"
298
+ },
299
+ "environment": {
300
+ "type": "string",
301
+ "enum": [
302
+ "test"
303
+ ]
304
+ },
305
+ "input": {
306
+ "type": "object",
307
+ "additionalProperties": false,
308
+ "properties": {
309
+ "requestKey": {
310
+ "type": "string",
311
+ "minLength": 1,
312
+ "maxLength": 36,
313
+ "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"
314
+ },
315
+ "expectedAppVersionId": {
316
+ "type": "string",
317
+ "minLength": 1,
318
+ "maxLength": 36,
319
+ "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"
320
+ },
321
+ "expectedHeadRevision": {
322
+ "type": "integer",
323
+ "minimum": 1,
324
+ "maximum": 9007199254740991
325
+ },
326
+ "expiresInMinutes": {
327
+ "type": "integer",
328
+ "minimum": 15,
329
+ "maximum": 1440
330
+ },
331
+ "recordLimit": {
332
+ "type": "integer",
333
+ "minimum": 1,
334
+ "maximum": 1000
335
+ },
336
+ "redirectUri": {
337
+ "type": "string",
338
+ "minLength": 1,
339
+ "maxLength": 2048
340
+ },
341
+ "actors": {
342
+ "type": "array",
343
+ "minItems": 1,
344
+ "maxItems": 12,
345
+ "items": {
346
+ "type": "object",
347
+ "additionalProperties": false,
348
+ "properties": {
349
+ "key": {
350
+ "type": "string",
351
+ "minLength": 1,
352
+ "maxLength": 80
353
+ },
354
+ "name": {
355
+ "type": "string",
356
+ "minLength": 1,
357
+ "maxLength": 255
358
+ },
359
+ "roleCodes": {
360
+ "type": "array",
361
+ "minItems": 1,
362
+ "maxItems": 32,
363
+ "uniqueItems": true,
364
+ "items": {
365
+ "type": "string",
366
+ "minLength": 1,
367
+ "maxLength": 128
368
+ }
369
+ },
370
+ "departmentIds": {
371
+ "type": "array",
372
+ "maxItems": 128,
373
+ "uniqueItems": true,
374
+ "items": {
375
+ "type": "string",
376
+ "minLength": 1,
377
+ "maxLength": 128
378
+ }
379
+ }
380
+ },
381
+ "required": [
382
+ "key",
383
+ "roleCodes"
384
+ ]
385
+ }
386
+ }
387
+ },
388
+ "required": [
389
+ "requestKey",
390
+ "expectedAppVersionId",
391
+ "expectedHeadRevision",
392
+ "actors"
393
+ ]
394
+ }
395
+ },
396
+ "required": [
397
+ "operation",
398
+ "environment",
399
+ "input"
400
+ ]
401
+ },
402
+ {
403
+ "type": "object",
404
+ "additionalProperties": false,
405
+ "properties": {
406
+ "operation": {
407
+ "const": "acceptance-data.status",
408
+ "description": "读回原TEST验收批次状态和修复引用"
409
+ },
410
+ "environment": {
411
+ "type": "string",
412
+ "enum": [
413
+ "test"
414
+ ]
415
+ },
416
+ "input": {
417
+ "type": "object",
418
+ "additionalProperties": false,
419
+ "properties": {
420
+ "runId": {
421
+ "type": "string",
422
+ "minLength": 1,
423
+ "maxLength": 36,
424
+ "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"
425
+ }
426
+ },
427
+ "required": [
428
+ "runId"
429
+ ]
430
+ }
431
+ },
432
+ "required": [
433
+ "operation",
434
+ "environment",
435
+ "input"
436
+ ]
437
+ },
438
+ {
439
+ "type": "object",
440
+ "additionalProperties": false,
441
+ "properties": {
442
+ "operation": {
443
+ "const": "acceptance-data.stop",
444
+ "description": "停止此TEST批次写入并撤销来源会话"
445
+ },
446
+ "environment": {
447
+ "type": "string",
448
+ "enum": [
449
+ "test"
450
+ ]
451
+ },
452
+ "input": {
453
+ "type": "object",
454
+ "additionalProperties": false,
455
+ "properties": {
456
+ "runId": {
457
+ "type": "string",
458
+ "minLength": 1,
459
+ "maxLength": 36,
460
+ "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"
461
+ }
462
+ },
463
+ "required": [
464
+ "runId"
465
+ ]
466
+ }
467
+ },
468
+ "required": [
469
+ "operation",
470
+ "environment",
471
+ "input"
472
+ ]
473
+ },
474
+ {
475
+ "type": "object",
476
+ "additionalProperties": false,
477
+ "properties": {
478
+ "operation": {
479
+ "const": "acceptance-data.preview-cleanup",
480
+ "description": "只读精确归属、原repair清单和剩余对象;不执行删除"
481
+ },
482
+ "environment": {
483
+ "type": "string",
484
+ "enum": [
485
+ "test"
486
+ ]
487
+ },
488
+ "input": {
489
+ "type": "object",
490
+ "additionalProperties": false,
491
+ "properties": {
492
+ "runId": {
493
+ "type": "string",
494
+ "minLength": 1,
495
+ "maxLength": 36,
496
+ "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"
497
+ }
498
+ },
499
+ "required": [
500
+ "runId"
501
+ ]
502
+ }
503
+ },
504
+ "required": [
505
+ "operation",
506
+ "environment",
507
+ "input"
508
+ ]
509
+ },
510
+ {
511
+ "type": "object",
512
+ "additionalProperties": false,
513
+ "properties": {
514
+ "operation": {
515
+ "const": "acceptance-data.execute-cleanup",
516
+ "description": "按预览digest通过原repair执行金丝雀或剩余删除"
517
+ },
518
+ "environment": {
519
+ "type": "string",
520
+ "enum": [
521
+ "test"
522
+ ]
523
+ },
524
+ "input": {
525
+ "type": "object",
526
+ "additionalProperties": false,
527
+ "properties": {
528
+ "runId": {
529
+ "type": "string",
530
+ "minLength": 1,
531
+ "maxLength": 36,
532
+ "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"
533
+ },
534
+ "manifestSha256": {
535
+ "type": "string",
536
+ "minLength": 1,
537
+ "maxLength": 64,
538
+ "pattern": "^[a-f0-9]{64}$"
539
+ },
540
+ "mode": {
541
+ "type": "string",
542
+ "enum": [
543
+ "canary",
544
+ "remaining"
545
+ ]
546
+ }
547
+ },
548
+ "required": [
549
+ "runId",
550
+ "manifestSha256",
551
+ "mode"
552
+ ]
553
+ }
554
+ },
555
+ "required": [
556
+ "operation",
557
+ "environment",
558
+ "input"
559
+ ]
560
+ },
561
+ {
562
+ "type": "object",
563
+ "additionalProperties": false,
564
+ "properties": {
565
+ "operation": {
566
+ "const": "diagnostics.semantic-audit",
567
+ "description": "绑定当前TEST版本和Head的文件值语义审计;仅观察,不修复或授予激活许可"
568
+ },
569
+ "environment": {
570
+ "type": "string",
571
+ "enum": [
572
+ "test"
573
+ ]
574
+ },
575
+ "input": {
576
+ "type": "object",
577
+ "additionalProperties": false,
578
+ "properties": {
579
+ "requirementId": {
580
+ "const": "native.file-value.v2-envelope"
581
+ },
582
+ "resourceCode": {
583
+ "type": "string",
584
+ "minLength": 1,
585
+ "maxLength": 128,
586
+ "pattern": "^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$"
587
+ },
588
+ "expectedAppVersionId": {
589
+ "type": "string",
590
+ "minLength": 1,
591
+ "maxLength": 36,
592
+ "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"
593
+ },
594
+ "expectedHeadRevision": {
595
+ "type": "integer",
596
+ "minimum": 1,
597
+ "maximum": 9007199254740991
598
+ },
599
+ "afterRecordId": {
600
+ "type": "string",
601
+ "minLength": 1,
602
+ "maxLength": 36,
603
+ "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"
604
+ },
605
+ "limit": {
606
+ "type": "integer",
607
+ "minimum": 1,
608
+ "maximum": 100
609
+ }
610
+ },
611
+ "required": [
612
+ "requirementId",
613
+ "resourceCode",
614
+ "expectedAppVersionId",
615
+ "expectedHeadRevision"
616
+ ]
617
+ }
618
+ },
619
+ "required": [
620
+ "operation",
621
+ "environment",
622
+ "input"
623
+ ]
624
+ },
625
+ {
626
+ "type": "object",
627
+ "additionalProperties": false,
628
+ "properties": {
629
+ "operation": {
630
+ "const": "diagnostics.execution-health",
631
+ "description": "按原ID核对未来计划、暂停、claim和租约;不恢复或重放"
632
+ },
633
+ "environment": {
634
+ "type": "string",
635
+ "enum": [
636
+ "test",
637
+ "production"
638
+ ]
639
+ },
640
+ "input": {
641
+ "type": "object",
642
+ "additionalProperties": false,
643
+ "properties": {
644
+ "kind": {
645
+ "type": "string",
646
+ "enum": [
647
+ "legacy-schedule",
648
+ "timer",
649
+ "date-trigger",
650
+ "event-delivery"
651
+ ]
652
+ },
653
+ "id": {
654
+ "type": "string",
655
+ "minLength": 1,
656
+ "maxLength": 36,
657
+ "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"
658
+ }
659
+ },
660
+ "required": [
661
+ "kind",
662
+ "id"
663
+ ]
664
+ }
665
+ },
666
+ "required": [
667
+ "operation",
668
+ "environment",
669
+ "input"
670
+ ]
671
+ },
291
672
  {
292
673
  "type": "object",
293
674
  "additionalProperties": false,
@@ -1230,6 +1230,11 @@ pnpm openxiangda workflow status --environment test
1230
1230
 
1231
1231
  可加 `--adopt-handling-defaults` 把办理模式与按钮开关、文案作为源码默认值。它保留原有必需动作,不把管理员指定人员复制成源码默认值。导入的摘要基线写在源码 activation 的 `sourceBase`;来源环境与修订号只保留在审计锁文件,不进入密封应用制品。锁文件与导出的规范文档可能包含合法源码用户引用,应按项目访问权限管理。
1232
1232
 
1233
+ Source v2 新增条件人员覆盖的隐私投影:有序规则、标签、`otherwise` 和非指定人员来源保留完整声明;指定人员叶子只包含数量(包含零人),不导出环境人员 ID 或运行解析结果。未选择 `--adopt-handling-defaults` 时只导入原始规范源码;显式选择时,非指定人员规则须通过本地已发布来源、节点权限与条件事实校验,才作为节点独立源码绑定采用。任一叶子含指定人员,整个人员规则不导入,返回节点及数量提示,不将角色分支与缺失名单拼接成新规则。
1234
+
1235
+ 新版 DTO/离线导入并不表示平台已经开放条件审批。v1 DTO 仍明确拒绝条件声明;旧消费者不认识 v2 时明确报错。平台 Source exporter 必须使用已发布的新 contracts 制品,且注册/发布仍受平台能力协商与验证门禁约束,不能使用导出文件绕过旧平台的能力限制。
1236
+
1237
+
1233
1238
  `plan-registration` 是服务器只读查询,返回相同内容已有的版本号或下一整数;`--write` 只把数字写入本机源码。最终准备仍检查编号冲突、内容冲突和跳号。准备成功但后续部署失败的版本保留为未启用的不可变登记,相同制品可复用这些数字;不会删除或重排。`status` 显示 `in_sync`、`behind`、`ahead`、`diverged`、`not_active` 和未启用登记数量。它没有远端写入。首次导入之前,状态比较使用目标环境当前应用版本的源码声明作为基线;跨环境导入的来源修订不会冒充目标环境基线。
1234
1239
 
1235
1240
  如果只希望把正式环境的流程规则同步到已有测试环境,可先读取两边的 `status`,记录实际流程 Head 修订号,再显式执行同步:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "openxiangda",
3
- "version": "2.67.1",
3
+ "version": "2.67.3",
4
4
  "description": "OpenXiangda 2.0 的统一命令、应用 SDK、MCP 与中文 AI 技能资料。",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -95,13 +95,13 @@
95
95
  "dayjs": "1.11.18",
96
96
  "docx-preview": "0.3.7",
97
97
  "elkjs": "0.12.0",
98
- "openxiangda-cli": "2.10.4",
99
- "openxiangda-contracts": "2.85.0",
100
- "openxiangda-devkit-core": "2.63.3",
98
+ "openxiangda-cli": "2.10.6",
99
+ "openxiangda-contracts": "2.86.0",
100
+ "openxiangda-devkit-core": "2.65.0",
101
101
  "openxiangda-legacy": "npm:openxiangda@1.0.269",
102
- "openxiangda-mcp": "2.2.8",
103
- "openxiangda-nest": "2.19.2",
104
- "openxiangda-skill-kit": "2.3.110",
102
+ "openxiangda-mcp": "2.2.10",
103
+ "openxiangda-nest": "2.19.3",
104
+ "openxiangda-skill-kit": "2.3.112",
105
105
  "xlsx": "https://github.com/1377385356/openxiangda/releases/download/vendor-mirror/xlsx-0.20.3.tgz"
106
106
  },
107
107
  "peerDependencies": {
@@ -167,38 +167,42 @@
167
167
  },
168
168
  "openxiangdaRelease": {
169
169
  "schemaVersion": "openxiangda.release-notes/v1",
170
- "version": "2.67.1",
170
+ "version": "2.67.3",
171
171
  "status": "reviewed",
172
- "title": "应用Agent及worker声明与发行恢复修复",
173
- "summary": "新增作用域内应用Agent客户端,并补齐事件worker编译上下文及节点条件配置契约。",
172
+ "title": "条件规则安全源码往返与 TEST 操作指引",
173
+ "summary": "增加 Source v2 条件人员覆盖的安全读取与显式源码采用,同时包含已合入主线的 TEST 原生数据回收操作和多组织中文指引。平台条件审批与画布能力仍遵循独立启用门禁,不包含生产部署。",
174
174
  "newFeatures": [
175
- "公开openxiangda/agent客户端与hooks,沿用平台当前身份和持久游标,未知写入不自动重放。"
175
+ "Source v2 保留条件顺序、标签、otherwise 和非指定人员来源;环境指定人员叶子只投影数量。",
176
+ "显式采用 handling 时,整个人员规则受本地冻结默认、已发布来源和事实校验约束;任一指定人员叶子使整项规则保持不导入并返回提示。",
177
+ "共享 CLI/MCP 目录提供 TEST 原生数据批次回收的 prepare/status/stop/preview/execute,复用原 repair 所有者和 digest 恢复契约,不自动执行清理。",
178
+ "增加多组织、成员、会话与家校目录中文资料的同源发现和技能指引。"
176
179
  ],
177
180
  "fixes": [
178
- "worker-effect编译传入显式emitEventTypes与实际工作流subject,避免合法声明被误拒绝。",
179
- "配置类型公开worker-effect执行声明,避免应用使用类型绕过。",
180
- "共享节点人员配置支持完整条件规则与权威来源边界。",
181
- "声明warning保持警告,真正错误仍阻断,避免正确应用被误拒绝。",
182
- "Git worktree发行计划、验证与发布共用冻结制品、回执和进程锁;发现旧私有回执时先恢复原状态。"
181
+ "条件 handling 导入使用节点独立绑定,避免改变其他共享默认绑定节点。"
183
182
  ],
184
183
  "affectedUsers": [
185
- "OpenXiangda V2应用开发者和平台维护者"
184
+ "维护条件审批源码、读取平台流程导出文件或显式采用节点办理默认值的 V2 开发者。",
185
+ "使用 TEST 原生数据回收或多组织目录操作的 CLI/MCP 用户。"
186
186
  ],
187
187
  "upgradeSteps": [
188
- "按同批版本升级工具链,重新生成并检查应用契约。",
189
- "配套升级平台共享契约后验证TEST,真实角色验收独立执行。"
188
+ "按工作区锁定工具链升级并核对当前引擎;稳定 V1 不自动迁移。",
189
+ "平台须先接入已发布的对应 contracts 制品;旧服务器不支持的能力继续明确拒绝。",
190
+ "导入前检查来源摘要和权限边界;只有明确需要时才使用 --adopt-handling-defaults。"
190
191
  ],
191
192
  "knownLimitations": [
192
- "事件至少一次投递,依赖原业务意图和平台回执去重。",
193
- "工具链发布不代表学校平台部署或应用业务验收完成。"
193
+ "Source v2/离线导入不是条件审批端到端启用证明;平台注册、capability、PC 编辑和业务验收仍须完整闭环。",
194
+ "含指定人员的条件规则整体不导入,不会复制私人名单,也不会合并角色分支作为替代。",
195
+ "本次包发布不包括平台服务部署、数据库数据修改或实际生产/用户业务验收。",
196
+ "多组织应用 SDK 与组织数据权限的未接通部分在资料中明确标注,不能按设计意图推断权限已生效。"
194
197
  ],
195
198
  "compatibility": {
196
- "node": ">=24",
197
- "pnpm": "10.15.1"
199
+ "node": "Node.js 24 or newer for the maintained toolchain",
200
+ "generation": "OpenXiangda V2; no automatic V1 migration",
201
+ "sourceBundle": "v1 remains supported; v2 requires a matching consumer"
198
202
  },
199
203
  "issues": [],
200
- "sha256": "cab78d0c354ccfe6373966f884c475e4e50e0096a5cbe9763fce2a761ba99e99",
201
- "url": "https://github.com/1377385356/openxiangda/releases/tag/v2.67.1"
204
+ "sha256": "348cb90778fad0d892cd38ba9a8c9d5de24437be95f892fbf5bc38ef62e46437",
205
+ "url": "https://github.com/1377385356/openxiangda/releases/tag/v2.67.3"
202
206
  },
203
207
  "scripts": {
204
208
  "build": "node ../../scripts/prune-package-dist.mjs && tsc -p tsconfig.json && node scripts/copy-assets.mjs",
@@ -0,0 +1,39 @@
1
+ {
2
+ "schemaVersion": "openxiangda.release-notes/v1",
3
+ "version": "2.67.3",
4
+ "status": "reviewed",
5
+ "title": "条件规则安全源码往返与 TEST 操作指引",
6
+ "summary": "增加 Source v2 条件人员覆盖的安全读取与显式源码采用,同时包含已合入主线的 TEST 原生数据回收操作和多组织中文指引。平台条件审批与画布能力仍遵循独立启用门禁,不包含生产部署。",
7
+ "newFeatures": [
8
+ "Source v2 保留条件顺序、标签、otherwise 和非指定人员来源;环境指定人员叶子只投影数量。",
9
+ "显式采用 handling 时,整个人员规则受本地冻结默认、已发布来源和事实校验约束;任一指定人员叶子使整项规则保持不导入并返回提示。",
10
+ "共享 CLI/MCP 目录提供 TEST 原生数据批次回收的 prepare/status/stop/preview/execute,复用原 repair 所有者和 digest 恢复契约,不自动执行清理。",
11
+ "增加多组织、成员、会话与家校目录中文资料的同源发现和技能指引。"
12
+ ],
13
+ "fixes": [
14
+ "条件 handling 导入使用节点独立绑定,避免改变其他共享默认绑定节点。"
15
+ ],
16
+ "affectedUsers": [
17
+ "维护条件审批源码、读取平台流程导出文件或显式采用节点办理默认值的 V2 开发者。",
18
+ "使用 TEST 原生数据回收或多组织目录操作的 CLI/MCP 用户。"
19
+ ],
20
+ "upgradeSteps": [
21
+ "按工作区锁定工具链升级并核对当前引擎;稳定 V1 不自动迁移。",
22
+ "平台须先接入已发布的对应 contracts 制品;旧服务器不支持的能力继续明确拒绝。",
23
+ "导入前检查来源摘要和权限边界;只有明确需要时才使用 --adopt-handling-defaults。"
24
+ ],
25
+ "knownLimitations": [
26
+ "Source v2/离线导入不是条件审批端到端启用证明;平台注册、capability、PC 编辑和业务验收仍须完整闭环。",
27
+ "含指定人员的条件规则整体不导入,不会复制私人名单,也不会合并角色分支作为替代。",
28
+ "本次包发布不包括平台服务部署、数据库数据修改或实际生产/用户业务验收。",
29
+ "多组织应用 SDK 与组织数据权限的未接通部分在资料中明确标注,不能按设计意图推断权限已生效。"
30
+ ],
31
+ "compatibility": {
32
+ "node": "Node.js 24 or newer for the maintained toolchain",
33
+ "generation": "OpenXiangda V2; no automatic V1 migration",
34
+ "sourceBundle": "v1 remains supported; v2 requires a matching consumer"
35
+ },
36
+ "issues": [],
37
+ "sha256": "348cb90778fad0d892cd38ba9a8c9d5de24437be95f892fbf5bc38ef62e46437",
38
+ "url": "https://github.com/1377385356/openxiangda/releases/tag/v2.67.3"
39
+ }
@@ -4,7 +4,7 @@
4
4
  {
5
5
  "name": "openxiangda-v2",
6
6
  "description": "使用 OpenXiangda 2.0 从模糊业务想法、已有资料或具体变更出发,通过对话发现模块、完成详细产品设计,由当前 AI Agent 按需用 Image 2.5 等图片能力形成视觉参考,直接实现真实页面并在浏览器修正,再检查和交付应用;维护 1.x 应用时使用对应的 1.x 技能。",
7
- "sha256": "51a121930a814af65f0902f9dbfd240ef2194131cf40a7f6bcbd3129ac4bfb4e"
7
+ "sha256": "f34c1d5b2dd63648f93d9dd0b93af195a8a1b25fe2d05135039e08788baee663"
8
8
  }
9
9
  ]
10
10
  }
@@ -40,10 +40,10 @@ AI 接到新应用、页面或改版任务时,在同一个 OpenXiangda 工作
40
40
  未创建工作区时使用本 Skill 随根包发布的精确版本:
41
41
 
42
42
  ```bash
43
- pnpm dlx openxiangda@2.67.1 auth status --cwd <应用目录> --base-url <平台地址> --json
44
- pnpm dlx openxiangda@2.67.1 login --cwd <应用目录> --base-url <平台地址>
45
- pnpm dlx openxiangda@2.67.1 create <应用目录> --base-url <同一平台地址>
46
- pnpm dlx openxiangda@2.67.1 skill install --force
43
+ pnpm dlx openxiangda@2.67.3 auth status --cwd <应用目录> --base-url <平台地址> --json
44
+ pnpm dlx openxiangda@2.67.3 login --cwd <应用目录> --base-url <平台地址>
45
+ pnpm dlx openxiangda@2.67.3 create <应用目录> --base-url <同一平台地址>
46
+ pnpm dlx openxiangda@2.67.3 skill install --force
47
47
  ```
48
48
 
49
49
  创建前把产品要求的目标平台明确带入命令,不从旧登录态推断站点。已有工作区从原绑定恢复,平台不一致时先解决登录与目标,不改 link 文件跨站创建。
@@ -68,6 +68,7 @@ pnpm dlx openxiangda@2.67.1 skill install --force
68
68
  | 图片压缩、缩略图、附件和缓存 | [图片与附件读取](references/field-components.md#图片缩略图和附件读取):卡片优先缩略图,原图按需,使用平台权限与缓存规则 |
69
69
  | 页面、标准组件与扩展 | [前端](references/frontend.md) |
70
70
  | 角色、行和字段权限 | [数据与权限](references/data-authz.md) |
71
+ | 教育局/独立学校、企业三方应用、多校家长、多组织教师、家校角色与班级范围 | 先读[多组织与家校目录](references/multi-organization.md),复用平台组织、成员与身份事实,核对已实现 HTTP 契约和待接通 SDK/组织数据权限 |
71
72
  | 外部无账号表单、续填、上传、本人记录 | [匿名公开访问](references/public-access.md) |
72
73
  | 审批、待办、消息或事件 | [工作流与通知](references/workflow-events.md) |
73
74
  | 自定义事务、校验或外部集成 | [按需后端](references/backend.md) |
@@ -107,6 +108,8 @@ pnpm exec openxiangda --mcp-stdio --cwd <workspace>
107
108
 
108
109
  平台拥有身份、授权、业务数据、环境和部署状态。应用只声明自己的模型、页面和规则;普通 CRUD 走 Data API,标准审批和通知按需声明,真实业务动作才启用 Nest。编译器生成契约,应用不改生成输出、不维护第二份权限或能力目录。菜单建议只供初次复制到应用声明,不是运行时自动发现。
109
110
 
111
+ 多组织与家校场景先按 `multi-organization` 专题识别平台已提供的事实与应用职责。`corpId` 是入口线索,真实 unionId 和平台成员关系由平台验证;不再建立应用自己的钉钉身份库或企业组织树。源码基础、SDK 可用入口、组织数据授权及目标站点启用状态分别核实,不能把组织树存在或原始响应中的字段当成自动隔离已经完成。
112
+
110
113
  匿名访问使用 frontend.publicAccess、createAnonymousPublicClient 与平台浏览器凭证,不建立 guest 角色或公开普通 Data API。提交策略的 `create` 必须配套 `draft`;只读外部数据使用 `public.list`/`public.read` 和显式 `publicRecordFields`,附件/图片/清洗后的富文本走平台代理 URL,子表用 `publicSubtableFields` 显式投影,不需要 draft,且不接受任意筛选、排序或投影。角色并集来自当前用户,Perspective 只收窄读取。
111
114
 
112
115
  ## 完成与失败
@@ -30,6 +30,41 @@ CLI与MCP共用输入Schema、服务和平台错误。成功结果在 `data.resu
30
30
  配置与恢复在已授权范围内直接执行;health访问外部健康接口并保存元信息。
31
31
  操作目录不证明远端接口已部署或当前用户有权,执行结果由平台决定。
32
32
 
33
+ ## 原执行健康 {#execution-health}
34
+
35
+ 从 `admin operations` 发现 `diagnostics.execution-health`,输入只提供原 kind 和 UUID:
36
+
37
+ ```bash
38
+ printf '%s' '{"kind":"event-delivery","id":"<原投递UUID>"}' | \
39
+ pnpm openxiangda admin execute diagnostics.execution-health --environment test --input - --json
40
+ ```
41
+
42
+ kind 为 timer、date-trigger、event-delivery 或 legacy-schedule;legacy-schedule只接受production,V1工作区仍由原V1引擎维护。按当前工作区 appCode 和原登录身份的应用管理权限只读查询,不传tenant、任意URL或恢复动作。
43
+
44
+ `admission`、`due`、`claim` 分别表示当前准入、原周期和claim;暂停可能仍有有效旧claim,未来/夜间周期不是卡住。lease过期或 `needs_review` 先核对原owner、退出证明与效果回执,不重放旧周期。timer当前按原事务行锁调度,预留lease字段不会被解释为executor空闲。缺记录/超时/schema缺失明确为未知,HTTP200只是诊断响应。
45
+
46
+ 目标平台需要提供此受管诊断路由;404先核对平台版本,不创建业务shim或替代执行。原requestId/commandId/DeploymentRun/fileId诊断继续用于原操作读回;健康投影不替代业务验收。
47
+
48
+ ## TEST 文件语义观察 {#semantic-audit}
49
+
50
+ 原平台管理员从目录发现 `diagnostics.semantic-audit`;只接受test。以下input的版本、Head修订、resourceCode均取自当前应用的实际TEST目标:
51
+
52
+ ```json
53
+ {
54
+ "requirementId":"native.file-value.v2-envelope",
55
+ "resourceCode":"records",
56
+ "expectedAppVersionId":"11111111-1111-4111-8111-111111111111",
57
+ "expectedHeadRevision":1,
58
+ "limit":50
59
+ }
60
+ ```
61
+
62
+ 把input交给 `admin execute diagnostics.semantic-audit --environment test --input <文件> --json`,或通过原MCP `application_operation`。版本/Head变化先刷新目标;不递增修订猜测当前状态。最多100行、32个file/image字段、单行文件值投影16KiB、20个原因样本。分页用原nextCursor传afterRecordId;后续页不冒充同一完整资源快照,工具不自动无限扫描。
63
+
64
+ `satisfied`、`violations`、`incomplete`、`unknown`分别描述本次快照;报告始终 `admission: observe-only`。即使complete且satisfied也不是激活许可;dataLogicalRevisionId是定义版本,dataRevision明确为空。报告没有文件名、正文或原错误正文。signature.file遵循自身Omit协议,不误当file/image数组。
65
+
66
+ 此观察不证明文件存在/下载授权或历史权限/流程兼容,不自动转换或删除。需修复时交原repair owner评审精确before-image和目标;生产不在此入口范围。404仍先核对实际平台能力;旧SDK版本不能仅凭本文认定已安装该新操作。
67
+
33
68
  ## 事件高水位与指定恢复 {#events}
34
69
 
35
70
  遇到 `EVENT_V2_BACKPRESSURE_HIGH_WATER` 先读 `events.status` 的admission:采样新鲜度、
@@ -148,3 +183,26 @@ Native记录事件才能使用 `ordering:record`。订阅错误先修正应用
148
183
  重启MCP。应用AI不需要本地平台、数据库、Docker或学校服务器账号。
149
184
  先做只读诊断、无实际收件人的健康测试及CAS拒绝验证,再验收单笔回执/落库/实际投递。
150
185
  不要用批量导入或历史群发测试恢复。首次会话授权、权限委托和外部身份owner边界沿用原合同。
186
+
187
+
188
+ ## TEST 验收数据收尾 {#acceptance-data}
189
+
190
+ 需要回收的验收先从目录选择 `acceptance-data.prepare`,显式提供原 requestKey、当前 TEST AppVersion/Head、actors;默认 100 条累计创建和 240 分钟,最高 1000 条/一天。目录的 actor schema 与原身份规则一致。普通验收身份未 opt-in,不自动归入可回收批次。平台仅接受简单 Native CRUD;workflow、文件、事件、通知、外部效果或压测批次继续使用各自 owner。
191
+
192
+ 创建结果中的 runId 和一次性登录链接用于本批真实身份操作。文件中仅存下列 input,当前 workspace 提供应用、站点和身份:
193
+
194
+ ```json
195
+ {"runId":"<原批次UUID>"}
196
+ ```
197
+
198
+ 先执行 `admin execute acceptance-data.stop --environment test --input <文件> --json`;超时先用 `acceptance-data.status` 核对原 run,stopped 表示后续批次写入被拒绝。用户/成员仍保留;会话撤销 pending 不改变已经提交的 stop 栅栏。再执行 `acceptance-data.preview-cleanup`,核对 actionCount、remainingRecordCount、manifestSha256 和原 repairReference。
199
+
200
+ 真正执行只传原 preview digest:
201
+
202
+ ```json
203
+ {"runId":"<原批次UUID>","manifestSha256":"<预览SHA256>","mode":"canary"}
204
+ ```
205
+
206
+ 在已经授权清理的范围运行 `acceptance-data.execute-cleanup`,核对金丝雀原回执,再把 mode 改为 remaining。丢响应先 preview/status,不换 run 或 digest;pending 清单复用原 repair。每份计划最多100条/1MiB,终结后重新 preview 下一批。外部修改、坏凭证、变化 Head、未知/预算结果及部分失败不会返回 purged。只有完整读回 `cleanupState: purged` 和剩余0表示此批 owned Native 数据验空;registry、参与者、凭证、审计和原修复回执保留。
207
+
208
+ MCP仍通过 `application_operations/application_operation` 使用同一目录,不提供任意URL或重建来源。生产、旧数据、其他run不接受此入口。目录可用不代表目标平台已升级;404核对版本,不用直接SQL旁路。
@@ -139,6 +139,10 @@ MCP `appspec_verify` 读取同一报告与运行事实。`spec verify` 根据当
139
139
 
140
140
  ## 新任务找回上下文
141
141
 
142
+ 读取时核对 `documentReadback` 的实际文件字节、读取字节、全文/历史索引模式和不可用原因;最多128条,`total`/`unavailable`/`truncated`明确其覆盖范围。单文件上限256KiB,正文上下文上限256KiB,按UTF-8字节计。`contextBudget.requestedContentBytes` 是预算前请求正文总量,`omitted` 每项包含实际字节及 `context-budget` 原因。
143
+
144
+ 超限、格式错误、符号链接或读取期间变化表示文件不可用;selector会提示在已成功读取的文档中无法解析,不能据此删除、重建文档或补造确认。真实不存在仍保留原not-found。先按相对路径处理原因,保留稳定ID/确认;相关正文过多时用稳定ID选择或拆分当前总纲,历史索引不是全文。81,602字节的普通资料在当前单文件预算内,不应套用旧64KiB限制。
145
+
142
146
  ### 架构决定的编号与创建
143
147
 
144
148
  需要长期引用的决定写入 `appspec/decisions/` 下的 Markdown。ADR 的 `id` 格式是 `ADR-` 加**恰好四位数字**,可选 `-` 分隔的大写字母或数字后缀,例如 `ADR-0001`、`ADR-0001-DATA-OWNER`;`ADR-001` 不合法。文件名建议与 ID 一致,引用使用元数据中的 ID。当前没有独立的 ADR 创建命令,可以手工创建,随后用 `spec context <ID>` 和 `spec check` 核对。