yugoo-design 0.2.6 → 0.2.8

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 (221) hide show
  1. package/README.md +4 -4
  2. package/bin/npm-agent-installation.mjs +12 -5
  3. package/bin/npm-desktop-preparation.mjs +47 -33
  4. package/bin/npm-installer-dsh.mjs +2 -1
  5. package/bin/npm-node-runtime.mjs +4 -3
  6. package/package.json +1 -1
  7. package/payload/desktop-preparation/materials.json +46 -46
  8. package/payload/desktop-preparation/qwenwork-package.mjs +26 -11
  9. package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/material.json +1 -1
  10. package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/.agents/skills/design-bundle-creator/references/bundle-checklist.md +1 -1
  11. package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/.agents/skills/design-bundle-creator/references/panel-authoring.md +6 -4
  12. package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/.agents/skills/design-bundle-creator/scripts/inspect-panel-component.mjs +27 -33
  13. package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/docs/dsl-spec.md +104 -19
  14. package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/docs/panel-uiux-standard.md +361 -90
  15. package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/docs/system-design-baseline.md +1 -1
  16. package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/packages/skills-web-app/bundles/flow_design/SKILL.md +7 -4
  17. package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/packages/skills-web-app/bundles/flow_design/reference/artifact-contract.md +12 -5
  18. package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/packages/skills-web-app/bundles/flow_design/reference/bpmn_authoring.md +13 -10
  19. package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/packages/skills-web-app/bundles/flow_design/reference/canvas-guide.md +2 -1
  20. package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/packages/skills-web-app/bundles/flow_design/schema.yaml +1 -1
  21. package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/packages/skills-web-app/bundles/function_modules/reference/artifact-contract.md +5 -0
  22. package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/packages/skills-web-app/bundles/function_modules/reference/preview.json +1 -0
  23. package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/packages/skills-web-app/bundles/function_modules/schema.yaml +4 -0
  24. package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/packages/skills-web-app/bundles/smart_questions/SKILL.md +4 -2
  25. package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/packages/skills-web-app/bundles/smart_questions/reference/artifact-contract.md +16 -8
  26. package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/packages/skills-web-app/bundles/smart_questions/schema.yaml +2 -2
  27. package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/packages/skills-web-app/bundles/web_app_prd_assembly/SKILL.md +4 -0
  28. package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/packages/skills-web-app/bundles/web_app_prd_assembly/reference/artifact-contract.md +6 -0
  29. package/payload/desktop-preparation/qwenwork-template/scripts/native-hook-transport.mjs +21 -15
  30. package/payload/desktop-preparation/qwenwork-template/scripts/qwenwork-connection.mjs +56 -11
  31. package/payload/desktop-preparation/src/native-hook-transport.mjs +21 -15
  32. package/payload/desktop-preparation/src/qwenwork-connection.mjs +56 -11
  33. package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/material.json +1 -1
  34. package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/.agents/skills/design-bundle-creator/references/bundle-checklist.md +1 -1
  35. package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/.agents/skills/design-bundle-creator/references/panel-authoring.md +6 -4
  36. package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/.agents/skills/design-bundle-creator/scripts/inspect-panel-component.mjs +27 -33
  37. package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/docs/dsl-spec.md +104 -19
  38. package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/docs/panel-uiux-standard.md +361 -90
  39. package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/docs/system-design-baseline.md +1 -1
  40. package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/packages/skills-web-app/bundles/flow_design/SKILL.md +7 -4
  41. package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/packages/skills-web-app/bundles/flow_design/reference/artifact-contract.md +12 -5
  42. package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/packages/skills-web-app/bundles/flow_design/reference/bpmn_authoring.md +13 -10
  43. package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/packages/skills-web-app/bundles/flow_design/reference/canvas-guide.md +2 -1
  44. package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/packages/skills-web-app/bundles/flow_design/schema.yaml +1 -1
  45. package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/packages/skills-web-app/bundles/function_modules/reference/artifact-contract.md +5 -0
  46. package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/packages/skills-web-app/bundles/function_modules/reference/preview.json +1 -0
  47. package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/packages/skills-web-app/bundles/function_modules/schema.yaml +4 -0
  48. package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/packages/skills-web-app/bundles/smart_questions/SKILL.md +4 -2
  49. package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/packages/skills-web-app/bundles/smart_questions/reference/artifact-contract.md +16 -8
  50. package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/packages/skills-web-app/bundles/smart_questions/schema.yaml +2 -2
  51. package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/packages/skills-web-app/bundles/web_app_prd_assembly/SKILL.md +4 -0
  52. package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/packages/skills-web-app/bundles/web_app_prd_assembly/reference/artifact-contract.md +6 -0
  53. package/payload/desktop-preparation/workbuddy-package.mjs +13 -8
  54. package/payload/overlays/claude-code/.claude-plugin/plugin.json +1 -1
  55. package/payload/overlays/claude-code/authoring/studio-creators/material.json +1 -1
  56. package/payload/overlays/claude-code/authoring/studio-creators/source/.agents/skills/design-bundle-creator/references/bundle-checklist.md +1 -1
  57. package/payload/overlays/claude-code/authoring/studio-creators/source/.agents/skills/design-bundle-creator/references/panel-authoring.md +6 -4
  58. package/payload/overlays/claude-code/authoring/studio-creators/source/.agents/skills/design-bundle-creator/scripts/inspect-panel-component.mjs +27 -33
  59. package/payload/overlays/claude-code/authoring/studio-creators/source/docs/dsl-spec.md +104 -19
  60. package/payload/overlays/claude-code/authoring/studio-creators/source/docs/panel-uiux-standard.md +361 -90
  61. package/payload/overlays/claude-code/authoring/studio-creators/source/docs/system-design-baseline.md +1 -1
  62. package/payload/overlays/claude-code/authoring/studio-creators/source/packages/skills-web-app/bundles/flow_design/SKILL.md +7 -4
  63. package/payload/overlays/claude-code/authoring/studio-creators/source/packages/skills-web-app/bundles/flow_design/reference/artifact-contract.md +12 -5
  64. package/payload/overlays/claude-code/authoring/studio-creators/source/packages/skills-web-app/bundles/flow_design/reference/bpmn_authoring.md +13 -10
  65. package/payload/overlays/claude-code/authoring/studio-creators/source/packages/skills-web-app/bundles/flow_design/reference/canvas-guide.md +2 -1
  66. package/payload/overlays/claude-code/authoring/studio-creators/source/packages/skills-web-app/bundles/flow_design/schema.yaml +1 -1
  67. package/payload/overlays/claude-code/authoring/studio-creators/source/packages/skills-web-app/bundles/function_modules/reference/artifact-contract.md +5 -0
  68. package/payload/overlays/claude-code/authoring/studio-creators/source/packages/skills-web-app/bundles/function_modules/reference/preview.json +1 -0
  69. package/payload/overlays/claude-code/authoring/studio-creators/source/packages/skills-web-app/bundles/function_modules/schema.yaml +4 -0
  70. package/payload/overlays/claude-code/authoring/studio-creators/source/packages/skills-web-app/bundles/smart_questions/SKILL.md +4 -2
  71. package/payload/overlays/claude-code/authoring/studio-creators/source/packages/skills-web-app/bundles/smart_questions/reference/artifact-contract.md +16 -8
  72. package/payload/overlays/claude-code/authoring/studio-creators/source/packages/skills-web-app/bundles/smart_questions/schema.yaml +2 -2
  73. package/payload/overlays/claude-code/authoring/studio-creators/source/packages/skills-web-app/bundles/web_app_prd_assembly/SKILL.md +4 -0
  74. package/payload/overlays/claude-code/authoring/studio-creators/source/packages/skills-web-app/bundles/web_app_prd_assembly/reference/artifact-contract.md +6 -0
  75. package/payload/overlays/claude-code/scripts/native-hook-transport.mjs +21 -15
  76. package/payload/overlays/codex/.codex-plugin/plugin.json +1 -1
  77. package/payload/overlays/codex/authoring/studio-creators/material.json +1 -1
  78. package/payload/overlays/codex/authoring/studio-creators/source/.agents/skills/design-bundle-creator/references/bundle-checklist.md +1 -1
  79. package/payload/overlays/codex/authoring/studio-creators/source/.agents/skills/design-bundle-creator/references/panel-authoring.md +6 -4
  80. package/payload/overlays/codex/authoring/studio-creators/source/.agents/skills/design-bundle-creator/scripts/inspect-panel-component.mjs +27 -33
  81. package/payload/overlays/codex/authoring/studio-creators/source/docs/dsl-spec.md +104 -19
  82. package/payload/overlays/codex/authoring/studio-creators/source/docs/panel-uiux-standard.md +361 -90
  83. package/payload/overlays/codex/authoring/studio-creators/source/docs/system-design-baseline.md +1 -1
  84. package/payload/overlays/codex/authoring/studio-creators/source/packages/skills-web-app/bundles/flow_design/SKILL.md +7 -4
  85. package/payload/overlays/codex/authoring/studio-creators/source/packages/skills-web-app/bundles/flow_design/reference/artifact-contract.md +12 -5
  86. package/payload/overlays/codex/authoring/studio-creators/source/packages/skills-web-app/bundles/flow_design/reference/bpmn_authoring.md +13 -10
  87. package/payload/overlays/codex/authoring/studio-creators/source/packages/skills-web-app/bundles/flow_design/reference/canvas-guide.md +2 -1
  88. package/payload/overlays/codex/authoring/studio-creators/source/packages/skills-web-app/bundles/flow_design/schema.yaml +1 -1
  89. package/payload/overlays/codex/authoring/studio-creators/source/packages/skills-web-app/bundles/function_modules/reference/artifact-contract.md +5 -0
  90. package/payload/overlays/codex/authoring/studio-creators/source/packages/skills-web-app/bundles/function_modules/reference/preview.json +1 -0
  91. package/payload/overlays/codex/authoring/studio-creators/source/packages/skills-web-app/bundles/function_modules/schema.yaml +4 -0
  92. package/payload/overlays/codex/authoring/studio-creators/source/packages/skills-web-app/bundles/smart_questions/SKILL.md +4 -2
  93. package/payload/overlays/codex/authoring/studio-creators/source/packages/skills-web-app/bundles/smart_questions/reference/artifact-contract.md +16 -8
  94. package/payload/overlays/codex/authoring/studio-creators/source/packages/skills-web-app/bundles/smart_questions/schema.yaml +2 -2
  95. package/payload/overlays/codex/authoring/studio-creators/source/packages/skills-web-app/bundles/web_app_prd_assembly/SKILL.md +4 -0
  96. package/payload/overlays/codex/authoring/studio-creators/source/packages/skills-web-app/bundles/web_app_prd_assembly/reference/artifact-contract.md +6 -0
  97. package/payload/overlays/qoder/.qoder-plugin/plugin.json +1 -1
  98. package/payload/overlays/qoder/authoring/studio-creators/material.json +1 -1
  99. package/payload/overlays/qoder/authoring/studio-creators/source/.agents/skills/design-bundle-creator/references/bundle-checklist.md +1 -1
  100. package/payload/overlays/qoder/authoring/studio-creators/source/.agents/skills/design-bundle-creator/references/panel-authoring.md +6 -4
  101. package/payload/overlays/qoder/authoring/studio-creators/source/.agents/skills/design-bundle-creator/scripts/inspect-panel-component.mjs +27 -33
  102. package/payload/overlays/qoder/authoring/studio-creators/source/docs/dsl-spec.md +104 -19
  103. package/payload/overlays/qoder/authoring/studio-creators/source/docs/panel-uiux-standard.md +361 -90
  104. package/payload/overlays/qoder/authoring/studio-creators/source/docs/system-design-baseline.md +1 -1
  105. package/payload/overlays/qoder/authoring/studio-creators/source/packages/skills-web-app/bundles/flow_design/SKILL.md +7 -4
  106. package/payload/overlays/qoder/authoring/studio-creators/source/packages/skills-web-app/bundles/flow_design/reference/artifact-contract.md +12 -5
  107. package/payload/overlays/qoder/authoring/studio-creators/source/packages/skills-web-app/bundles/flow_design/reference/bpmn_authoring.md +13 -10
  108. package/payload/overlays/qoder/authoring/studio-creators/source/packages/skills-web-app/bundles/flow_design/reference/canvas-guide.md +2 -1
  109. package/payload/overlays/qoder/authoring/studio-creators/source/packages/skills-web-app/bundles/flow_design/schema.yaml +1 -1
  110. package/payload/overlays/qoder/authoring/studio-creators/source/packages/skills-web-app/bundles/function_modules/reference/artifact-contract.md +5 -0
  111. package/payload/overlays/qoder/authoring/studio-creators/source/packages/skills-web-app/bundles/function_modules/reference/preview.json +1 -0
  112. package/payload/overlays/qoder/authoring/studio-creators/source/packages/skills-web-app/bundles/function_modules/schema.yaml +4 -0
  113. package/payload/overlays/qoder/authoring/studio-creators/source/packages/skills-web-app/bundles/smart_questions/SKILL.md +4 -2
  114. package/payload/overlays/qoder/authoring/studio-creators/source/packages/skills-web-app/bundles/smart_questions/reference/artifact-contract.md +16 -8
  115. package/payload/overlays/qoder/authoring/studio-creators/source/packages/skills-web-app/bundles/smart_questions/schema.yaml +2 -2
  116. package/payload/overlays/qoder/authoring/studio-creators/source/packages/skills-web-app/bundles/web_app_prd_assembly/SKILL.md +4 -0
  117. package/payload/overlays/qoder/authoring/studio-creators/source/packages/skills-web-app/bundles/web_app_prd_assembly/reference/artifact-contract.md +6 -0
  118. package/payload/overlays/qoder/scripts/native-hook-transport.mjs +21 -15
  119. package/payload/shared/authoring/panel-components.json +1015 -878
  120. package/payload/shared/authoring/studio-creators/material.json +1 -1
  121. package/payload/shared/authoring/studio-creators/source/.agents/skills/design-bundle-creator/references/bundle-checklist.md +1 -1
  122. package/payload/shared/authoring/studio-creators/source/.agents/skills/design-bundle-creator/references/panel-authoring.md +6 -4
  123. package/payload/shared/authoring/studio-creators/source/.agents/skills/design-bundle-creator/scripts/inspect-panel-component.mjs +27 -33
  124. package/payload/shared/authoring/studio-creators/source/docs/dsl-spec.md +104 -19
  125. package/payload/shared/authoring/studio-creators/source/docs/panel-uiux-standard.md +361 -90
  126. package/payload/shared/authoring/studio-creators/source/docs/system-design-baseline.md +1 -1
  127. package/payload/shared/authoring/studio-creators/source/packages/skills-web-app/bundles/flow_design/SKILL.md +7 -4
  128. package/payload/shared/authoring/studio-creators/source/packages/skills-web-app/bundles/flow_design/reference/artifact-contract.md +12 -5
  129. package/payload/shared/authoring/studio-creators/source/packages/skills-web-app/bundles/flow_design/reference/bpmn_authoring.md +13 -10
  130. package/payload/shared/authoring/studio-creators/source/packages/skills-web-app/bundles/flow_design/reference/canvas-guide.md +2 -1
  131. package/payload/shared/authoring/studio-creators/source/packages/skills-web-app/bundles/flow_design/schema.yaml +1 -1
  132. package/payload/shared/authoring/studio-creators/source/packages/skills-web-app/bundles/function_modules/reference/artifact-contract.md +5 -0
  133. package/payload/shared/authoring/studio-creators/source/packages/skills-web-app/bundles/function_modules/reference/preview.json +1 -0
  134. package/payload/shared/authoring/studio-creators/source/packages/skills-web-app/bundles/function_modules/schema.yaml +4 -0
  135. package/payload/shared/authoring/studio-creators/source/packages/skills-web-app/bundles/smart_questions/SKILL.md +4 -2
  136. package/payload/shared/authoring/studio-creators/source/packages/skills-web-app/bundles/smart_questions/reference/artifact-contract.md +16 -8
  137. package/payload/shared/authoring/studio-creators/source/packages/skills-web-app/bundles/smart_questions/schema.yaml +2 -2
  138. package/payload/shared/authoring/studio-creators/source/packages/skills-web-app/bundles/web_app_prd_assembly/SKILL.md +4 -0
  139. package/payload/shared/authoring/studio-creators/source/packages/skills-web-app/bundles/web_app_prd_assembly/reference/artifact-contract.md +6 -0
  140. package/payload/shared/bundles/ai_agent_capabilities/locales/en-US.json +29 -28
  141. package/payload/shared/bundles/ai_agent_capabilities/locales/zh-CN.json +35 -34
  142. package/payload/shared/bundles/ai_agent_capabilities/panel.yaml +55 -75
  143. package/payload/shared/bundles/business_data/locales/en-US.json +2 -2
  144. package/payload/shared/bundles/business_data/locales/zh-CN.json +1 -1
  145. package/payload/shared/bundles/business_rules/locales/en-US.json +2 -3
  146. package/payload/shared/bundles/business_rules/locales/zh-CN.json +2 -3
  147. package/payload/shared/bundles/business_rules/panel.yaml +4 -10
  148. package/payload/shared/bundles/design_style/locales/en-US.json +4 -4
  149. package/payload/shared/bundles/design_style/locales/zh-CN.json +4 -4
  150. package/payload/shared/bundles/flow_design/LICENSE +202 -0
  151. package/payload/shared/bundles/flow_design/NOTICE +13 -0
  152. package/payload/shared/bundles/flow_design/SKILL.md +7 -4
  153. package/payload/shared/bundles/flow_design/THIRD_PARTY_NOTICES.md +35 -0
  154. package/payload/shared/bundles/flow_design/licenses/bundled-js/bpmn-moddle@9.0.4/LICENSE +21 -0
  155. package/payload/shared/bundles/flow_design/licenses/bundled-js/min-dash@4.2.3/LICENSE +21 -0
  156. package/payload/shared/bundles/flow_design/licenses/bundled-js/moddle-xml@11.0.0/LICENSE +21 -0
  157. package/payload/shared/bundles/flow_design/licenses/bundled-js/moddle@7.2.0/LICENSE +21 -0
  158. package/payload/shared/bundles/flow_design/licenses/bundled-js/rolldown@1.2.4/LICENSE +25 -0
  159. package/payload/shared/bundles/flow_design/licenses/bundled-js/rolldown@1.2.4/THIRD-PARTY-LICENSE +33 -0
  160. package/payload/shared/bundles/flow_design/licenses/bundled-js/saxen@10.0.0/LICENSE +21 -0
  161. package/payload/shared/bundles/flow_design/licenses/flow-build.json +204 -0
  162. package/payload/shared/bundles/flow_design/licenses/third-party/elkjs-0.10.2/DEPENDENCIES +631 -0
  163. package/payload/shared/bundles/flow_design/licenses/third-party/elkjs-0.10.2/LICENSE.md +264 -0
  164. package/payload/shared/bundles/flow_design/licenses/third-party/elkjs-0.10.2/NOTICE.md +55 -0
  165. package/payload/shared/bundles/flow_design/licenses/third-party/elkjs-0.10.2/SOURCE.md +62 -0
  166. package/payload/shared/bundles/flow_design/licenses/third-party/elkjs-0.10.2/graph-layout-worker.ts +33 -0
  167. package/payload/shared/bundles/flow_design/licenses/third-party/elkjs-0.10.2/release-source-binding.json +81 -0
  168. package/payload/shared/bundles/flow_design/licenses/third-party/elkjs-0.10.2/upstream-README.md +391 -0
  169. package/payload/shared/bundles/flow_design/licenses/third-party/elkjs-0.10.2/upstream-build.gradle +322 -0
  170. package/payload/shared/bundles/flow_design/licenses/third-party/elkjs-0.10.2/upstream-ci.yml +67 -0
  171. package/payload/shared/bundles/flow_design/reference/artifact-contract.md +12 -5
  172. package/payload/shared/bundles/flow_design/reference/bpmn_authoring.md +13 -10
  173. package/payload/shared/bundles/flow_design/reference/canvas-guide.md +2 -1
  174. package/payload/shared/bundles/flow_design/schema.yaml +1 -1
  175. package/payload/shared/bundles/flow_design/scripts/bpmn-validator.mjs +35 -20
  176. package/payload/shared/bundles/function_modules/locales/en-US.json +2 -2
  177. package/payload/shared/bundles/function_modules/panel.yaml +1 -0
  178. package/payload/shared/bundles/function_modules/reference/artifact-contract.md +5 -0
  179. package/payload/shared/bundles/function_modules/reference/preview.json +1 -0
  180. package/payload/shared/bundles/function_modules/schema.yaml +4 -0
  181. package/payload/shared/bundles/integration_design/locales/en-US.json +3 -1
  182. package/payload/shared/bundles/integration_design/locales/zh-CN.json +3 -1
  183. package/payload/shared/bundles/integration_design/panel.yaml +18 -2
  184. package/payload/shared/bundles/notification_design/locales/en-US.json +2 -0
  185. package/payload/shared/bundles/notification_design/locales/zh-CN.json +2 -0
  186. package/payload/shared/bundles/notification_design/panel.yaml +18 -6
  187. package/payload/shared/bundles/page_design/locales/en-US.json +12 -1
  188. package/payload/shared/bundles/page_design/locales/zh-CN.json +12 -1
  189. package/payload/shared/bundles/page_design/panel.yaml +23 -1
  190. package/payload/shared/bundles/quality_acceptance/locales/en-US.json +2 -2
  191. package/payload/shared/bundles/quality_acceptance/locales/zh-CN.json +2 -2
  192. package/payload/shared/bundles/quality_acceptance/panel.yaml +10 -7
  193. package/payload/shared/bundles/role_access/locales/en-US.json +5 -5
  194. package/payload/shared/bundles/role_access/locales/zh-CN.json +5 -5
  195. package/payload/shared/bundles/smart_questions/SKILL.md +4 -2
  196. package/payload/shared/bundles/smart_questions/reference/artifact-contract.md +16 -8
  197. package/payload/shared/bundles/smart_questions/schema.yaml +2 -2
  198. package/payload/shared/bundles/web_app_prd_assembly/SKILL.md +4 -0
  199. package/payload/shared/bundles/web_app_prd_assembly/locales/en-US.json +2 -2
  200. package/payload/shared/bundles/web_app_prd_assembly/locales/zh-CN.json +1 -1
  201. package/payload/shared/bundles/web_app_prd_assembly/reference/artifact-contract.md +6 -0
  202. package/payload/shared/bundles/web_app_prd_assembly/scripts/prd.mjs +28 -16
  203. package/payload/shared/scripts/{content-archive-CnwVcuWA.mjs → content-archive-BvVmbecb.mjs} +2 -2
  204. package/payload/shared/scripts/{core-entry-DESmwP78.mjs → core-entry-S65aB8cC.mjs} +47 -0
  205. package/payload/shared/scripts/design.mjs +2 -2
  206. package/payload/shared/scripts/git-runtime-check.mjs +1 -1
  207. package/payload/shared/scripts/knowledge-snapshot-query.mjs +1 -1
  208. package/payload/shared/scripts/{load-C-RwS23Y.mjs → load-D1xLlKL_.mjs} +1 -1
  209. package/payload/shared/scripts/{panel-preview-BeVRYFk1.mjs → panel-preview-D-OD9mro.mjs} +2 -2
  210. package/payload/shared/scripts/{server-BnEtfptI.mjs → server-B6kGo8xO.mjs} +159 -55
  211. package/payload/shared/scripts/{studio-CFUWk0vJ.mjs → studio-DumCCbFT.mjs} +6 -6
  212. package/payload/shared/scripts/{studio-instance-composition-BJzYMyvV.mjs → studio-instance-composition-DfbZVetl.mjs} +2 -2
  213. package/payload/shared/scripts/{studio-instances-gQFR9yqL.mjs → studio-instances-BnVSHNCf.mjs} +3 -3
  214. package/payload/shared/scripts/{studio-panel-drafts-Dq171F6x.mjs → studio-panel-drafts-DSxfgHfk.mjs} +1 -1
  215. package/payload/shared/scripts/workbuddy-panel-service.mjs +1 -1
  216. package/payload/shared/web/{_dsh-design-css_owned_89a065927fa266797ef9ce977561ca0c4a3502195b0ba467350b7673cd701bdf_bpmn-embedded.css-CS3_MdFX.js → _dsh-design-css_owned_89a065927fa266797ef9ce977561ca0c4a3502195b0ba467350b7673cd701bdf_bpmn-embedded.css-BVX0LPx6.js} +3 -3
  217. package/payload/shared/web/{_dsh-design-css_owned_cc41a10f41ce4c8219d75daefaa99c08ac76f04537f7ec1abc92622e819f5bba_bpmn-js.css-BMPB0-R-.js → _dsh-design-css_owned_cc41a10f41ce4c8219d75daefaa99c08ac76f04537f7ec1abc92622e819f5bba_bpmn-js.css-TpJpFSU5.js} +3 -3
  218. package/payload/shared/web/{_dsh-design-css_owned_f311e6c6d8e65aed0c9a7ee24ef653d3c38574a3505babc3e0cad2a40b94a188_diagram-js.css-C11OT7zU.js → _dsh-design-css_owned_f311e6c6d8e65aed0c9a7ee24ef653d3c38574a3505babc3e0cad2a40b94a188_diagram-js.css-DreYyNMC.js} +3 -3
  219. package/payload/shared/web/client.js +3389 -1843
  220. package/release-hosts.json +1 -1
  221. package/release-manifest.json +223 -203
@@ -0,0 +1,322 @@
1
+ /*
2
+ # Task depencencies
3
+ The dependencies are specified at the end of this file,
4
+ not within the task definitions.
5
+
6
+ 1) copy (and preprocess) relevant source code
7
+ 2) generate code for .melk and .xtend files
8
+ 3) compile java source code
9
+ 4) run gwt compiler
10
+
11
+ # Build directory layout
12
+ src
13
+ +-- elk
14
+ +-- elkjs
15
+ +-- melk
16
+ +-- xtend-gen
17
+ */
18
+ plugins {
19
+ // The documentation of the plugin [1] states "tested up to [gradle] 7.2".
20
+ // [1] https://xtext.github.io/xtext-gradle-plugin/xtext-builder.html
21
+ id 'org.xtext.builder' version '3.0.2' // according to the docu, tested up to gradle 7.2
22
+ id 'org.xtext.xtend' version '3.0.2'
23
+ id 'java'
24
+ }
25
+
26
+ // make sure all compile tasks use utf8
27
+ tasks.withType(JavaCompile) {
28
+ options.encoding = 'UTF-8'
29
+ }
30
+
31
+ // GWT 2.10 allows to run Java [8, 17]
32
+ // (http://www.gwtproject.org/release-notes.html#Release_Notes_2_10_0)
33
+ if (!JavaVersion.current().isCompatibleWith(JavaVersion.VERSION_1_8)
34
+ || JavaVersion.current().isCompatibleWith(JavaVersion.VERSION_18)) {
35
+ throw new GradleException("elkjs build requires to be run with Java [8, 17] (due to GWT compilation). You are running " + JavaVersion.current() + ".")
36
+ }
37
+
38
+ // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
39
+ // Settings
40
+ // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
41
+
42
+ ext.versions = [
43
+ emfGwt: '2.12.4',
44
+ gwt: '2.11.0',
45
+ guava: '31.1-jre',
46
+ melk: '0.11.0-SNAPSHOT',
47
+ xtext: '2.36.0',
48
+
49
+ // From 2.26 on Xtext supports Java 17, however,
50
+ // "Xtext now supports running on Java 17 with Java 8 and 11 targets. Source and Target 17 are not supported yet".
51
+ // https://www.eclipse.org/Xtext/releasenotes.html#/releasenotes/2022/08/29/version-2-28-0
52
+ sourceTargetCompatibility: JavaVersion.current().ordinal() < 11 - 1 ? '1.8' : '11'
53
+ ]
54
+
55
+ java {
56
+ sourceCompatibility = "$versions.sourceTargetCompatibility"
57
+ targetCompatibility = "$versions.sourceTargetCompatibility"
58
+ }
59
+
60
+ project.logger.lifecycle("You are running Java version ${JavaVersion.current()}.")
61
+ project.logger.lifecycle("Due to current Xtext's limitations ($versions.xtext), source and target compatibility have been set to ${versions.sourceTargetCompatibility}.")
62
+
63
+ if (!hasProperty('elkRepo')) {
64
+ ext.elkRepo = '../elk'
65
+ }
66
+
67
+ def elkSources = [
68
+ // The core and graph format
69
+ "${elkRepo}/plugins/org.eclipse.elk.core/src",
70
+ "${elkRepo}/plugins/org.eclipse.elk.graph/src",
71
+ "${elkRepo}/plugins/org.eclipse.elk.graph.json/src",
72
+ "${elkRepo}/plugins/org.eclipse.elk.alg.common/src",
73
+ // The algorithms
74
+ // FIXME: DisCo breaks Github Actions for unknown reasons, see https://github.com/kieler/elkjs/issues/291
75
+ //"${elkRepo}/plugins/org.eclipse.elk.alg.disco/src",
76
+ "${elkRepo}/plugins/org.eclipse.elk.alg.force/src",
77
+ "${elkRepo}/plugins/org.eclipse.elk.alg.layered/src",
78
+ "${elkRepo}/plugins/org.eclipse.elk.alg.mrtree/src",
79
+ "${elkRepo}/plugins/org.eclipse.elk.alg.rectpacking/src",
80
+ "${elkRepo}/plugins/org.eclipse.elk.alg.radial/src",
81
+ "${elkRepo}/plugins/org.eclipse.elk.alg.spore/src"
82
+ ]
83
+
84
+ // the directory to which all sources are copied for compilation
85
+ def srcDir = "${buildDir}/src"
86
+ def distDir = "${buildDir}/js"
87
+
88
+ def gwtModule = "org.eclipse.elk.js.ElkJs"
89
+
90
+ // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
91
+ // Repositories, Source Sets, and Dependencies
92
+ // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
93
+
94
+ repositories {
95
+ jcenter()
96
+ // for melk compiler
97
+ maven {
98
+ url 'https://oss.sonatype.org/content/repositories/snapshots'
99
+ }
100
+ }
101
+
102
+ configurations {
103
+ gwt
104
+ }
105
+
106
+ sourceSets {
107
+ // compile xtext related sources. This includes:
108
+ // xtend -> java
109
+ // melk -> java
110
+ xtext {
111
+ java {
112
+ srcDirs = [ "$srcDir/elk" ]
113
+ }
114
+ xtendOutputDir = "$srcDir/xtend-gen"
115
+ }
116
+
117
+ main {
118
+ java {
119
+ srcDirs = [ srcDir ]
120
+ }
121
+ }
122
+ }
123
+
124
+ def gwtClasspath = [
125
+ // gwt requires the folder structure to equal the package structure
126
+ "$srcDir/elk",
127
+ "$srcDir/elkjs",
128
+ "$srcDir/melk",
129
+ "$srcDir/xtend-gen",
130
+ sourceSets.main.output.classesDirs,
131
+
132
+ configurations.gwt
133
+ ]
134
+
135
+ dependencies {
136
+ // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
137
+
138
+ // melk language
139
+ xtextLanguages "org.eclipse.elk:org.eclipse.elk.core.meta:$versions.melk"
140
+
141
+ // for the minus sign to work in melk files
142
+ xtextImplementation "org.eclipse.xtext:org.eclipse.xtext.xbase.lib:$versions.xtext"
143
+
144
+ xtextImplementation "com.google.guava:guava:$versions.guava"
145
+
146
+ xtextImplementation "org.gwtproject:gwt-dev:$versions.gwt"
147
+ xtextImplementation "org.gwtproject:gwt-user:$versions.gwt"
148
+
149
+ xtextImplementation "com.genmymodel.emf.gwt:emf-common:$versions.emfGwt"
150
+ xtextImplementation "com.genmymodel.emf.gwt:emf-ecore:$versions.emfGwt"
151
+
152
+ // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
153
+
154
+ // emf for gwt
155
+ implementation "com.genmymodel.emf.gwt:emf-common:$versions.emfGwt"
156
+ implementation "com.genmymodel.emf.gwt:emf-ecore:$versions.emfGwt"
157
+ // guava
158
+ implementation "com.google.guava:guava:$versions.guava"
159
+ // gwt
160
+ implementation "org.gwtproject:gwt-user:$versions.gwt"
161
+ implementation "org.gwtproject:gwt-dev:$versions.gwt"
162
+ // xtend libs
163
+ implementation "org.eclipse.xtend:org.eclipse.xtend.lib:$versions.xtext"
164
+ implementation "org.eclipse.xtext:org.eclipse.xtext.xbase.lib:$versions.xtext"
165
+
166
+ // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
167
+
168
+ gwt "com.google.guava:guava-gwt:$versions.guava"
169
+
170
+ gwt "org.gwtproject:gwt:$versions.gwt"
171
+ gwt "org.gwtproject:gwt-dev:$versions.gwt"
172
+ gwt "org.gwtproject:gwt-user:$versions.gwt"
173
+
174
+ gwt "com.genmymodel.emf.gwt:emf-common:$versions.emfGwt:sources"
175
+ gwt "com.genmymodel.emf.gwt:emf-ecore:$versions.emfGwt:sources"
176
+
177
+ // the xtext/xtend gwt plugins only contain the '.gwt.xml' files
178
+ // thus the source code has to be retrieved separately
179
+ gwt "org.eclipse.xtext:org.eclipse.xtext.xbase.lib:$versions.xtext:sources"
180
+ gwt "org.eclipse.xtend:org.eclipse.xtend.lib:$versions.xtext:sources"
181
+ gwt "org.eclipse.xtext:org.eclipse.xtext.xbase.lib.gwt:$versions.xtext"
182
+ gwt "org.eclipse.xtend:org.eclipse.xtend.lib.gwt:$versions.xtext"
183
+
184
+ }
185
+
186
+ // configure the melk language
187
+ xtext {
188
+ languages {
189
+ melk {
190
+ fileExtension = 'melk'
191
+ setup = 'org.eclipse.elk.core.meta.MetaDataStandaloneSetup'
192
+ generator.outlet.producesJava = true
193
+ }
194
+ }
195
+ }
196
+
197
+ // don't bother the xtext generator with irrelevant source sets
198
+ generateXtext.enabled = false
199
+
200
+ clean {
201
+ delete distDir
202
+ }
203
+
204
+ // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
205
+ // Copy Tasks
206
+ // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
207
+
208
+ task copyElk(type: Copy) {
209
+ from elkSources
210
+ into "$srcDir/elk/"
211
+
212
+ include "**/*.java"
213
+ include "**/*.xtend"
214
+ include "**/*.melk"
215
+
216
+ // the gson based json import
217
+ exclude "**/ElkGraphJson.java" // java-based api
218
+ exclude "**/JsonAdapter.xtend" // the gson implementation
219
+ exclude "**/JsonExporter.xtend" // not required here (should be compatible though)
220
+
221
+ // class is in there for convenience reasons
222
+ // usually the factories are generated by the melk compiler
223
+ exclude "**/AlgorithmFactory.java"
224
+
225
+ // exclude because they require ecore.xmi
226
+ exclude "**/ElkGraphResource.java"
227
+ exclude "**/ElkGraphXMIHelper.java"
228
+ exclude "**/ElkGraphXMISave.java"
229
+ exclude "**/ElkGraphResourceFactory.java"
230
+
231
+ // incompatible api, an emulating class is used (java-additional)
232
+ exclude "**/alg/common/utils/SVGImage.java"
233
+
234
+ // after copying, remove those parts of the code
235
+ // that have been marked to be incompatible with gwt
236
+ doLast {
237
+ ant.replaceregexp(
238
+ match: '// elkjs-exclude-start(.+?)elkjs-exclude-end',
239
+ replace: '',
240
+ flags: 'gis',
241
+ byline: false) {
242
+ fileset(dir: "$srcDir/elk/")
243
+ }
244
+ }
245
+ }
246
+
247
+ task copyEmul(type: Copy) {
248
+ from([
249
+ // contains the implementation for json->elk graph importer
250
+ // using gwt's json
251
+ "./src/java-additional"
252
+ ])
253
+ into "$srcDir/elk/"
254
+ }
255
+
256
+ task copyMelk(type: Copy) {
257
+ from "$buildDir/melk/xtext"
258
+ into "$srcDir/melk"
259
+ }
260
+
261
+ task copyElkJs(type: Copy) {
262
+ from "./src/java"
263
+ into "$srcDir/elkjs"
264
+ }
265
+
266
+ // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
267
+ // GWT Compilation
268
+ // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
269
+
270
+ def gwtInputs = [
271
+ fileTree(srcDir),
272
+ sourceSets.main.output.classesDirs
273
+ ]
274
+
275
+ task gwtc (type: JavaExec) {
276
+ main = 'com.google.gwt.dev.Compiler'
277
+ classpath { gwtClasspath }
278
+ args = [ gwtModule, '-war', "$buildDir/dist", '-style', 'PRETTY' ]
279
+ maxHeapSize = '2G'
280
+
281
+ inputs.files(gwtInputs)
282
+ outputs.dir("$buildDir/dist/elk")
283
+ }
284
+
285
+ task gwtcMinified (type: JavaExec) {
286
+ main = 'com.google.gwt.dev.Compiler'
287
+ classpath { gwtClasspath }
288
+ args = [ gwtModule, '-war', "$buildDir/distMinified" ]
289
+ maxHeapSize = '2G'
290
+
291
+ inputs.files(gwtInputs)
292
+ outputs.dir("$buildDir/distMinified/elk")
293
+ }
294
+
295
+ task copyPretty(type: Copy) {
296
+ from "$buildDir/dist/elk"
297
+ into distDir
298
+ include "**/*.js"
299
+ }
300
+
301
+ task copyMinified(type: Copy) {
302
+ from "$buildDir/distMinified/elk"
303
+ into distDir
304
+ include "**/*.js"
305
+ rename '(.*).js', '$1.min.js'
306
+ }
307
+
308
+ task lib(dependsOn: [ copyPretty, copyMinified ])
309
+
310
+ // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
311
+ // Task Dependencies
312
+ // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
313
+
314
+ generateXtextXtext.dependsOn copyElk
315
+ generateXtextXtext.dependsOn copyEmul
316
+ copyMelk.dependsOn generateXtextXtext
317
+ compileJava.dependsOn copyMelk
318
+ compileJava.dependsOn copyElkJs
319
+ gwtc.dependsOn compileJava
320
+ gwtcMinified.dependsOn compileJava
321
+ copyPretty.dependsOn gwtc
322
+ copyMinified.dependsOn gwtcMinified
@@ -0,0 +1,67 @@
1
+ name: elkjs CI
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - master
7
+ repository_dispatch:
8
+ schedule:
9
+ - cron: '0 3 * * *'
10
+ pull_request:
11
+ branches:
12
+ - master
13
+
14
+ jobs:
15
+ build:
16
+
17
+ runs-on: ubuntu-latest
18
+
19
+ continue-on-error: true
20
+
21
+ strategy:
22
+ fail-fast: false
23
+ matrix:
24
+ node-version: [ 14.x, 22.x ]
25
+ java-version: [ 17 ]
26
+
27
+ steps:
28
+ - uses: actions/checkout@v4
29
+ with:
30
+ path: elkjs
31
+ - uses: actions/checkout@v4
32
+ with:
33
+ repository: eclipse/elk
34
+ ref: master
35
+ path: elk
36
+ - name: Set up JDK ${{ matrix.java-version }}
37
+ uses: actions/setup-java@v4
38
+ with:
39
+ distribution: 'zulu'
40
+ java-version: ${{ matrix.java-version }}
41
+ - name: Cache gradle packages
42
+ uses: actions/cache@v4
43
+ with:
44
+ path: ~/.gradle/caches
45
+ key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle') }}
46
+ restore-keys: ${{ runner.os }}-gradle
47
+ - name: Cache npm
48
+ uses: actions/cache@v4
49
+ with:
50
+ path: ~/.npm
51
+ key: ${{ runner.os }}-node-${{ hashFiles('**/package.json') }}
52
+ restore-keys: ${{ runner.os }}-node-
53
+ - name: Grant execute permission for gradlew
54
+ run: |
55
+ chmod +x elkjs/gradlew
56
+ - name: Use Node.js ${{ matrix.node-version }}
57
+ uses: actions/setup-node@v4
58
+ with:
59
+ node-version: ${{ matrix.node-version }}
60
+ - name: npm install, build, and test
61
+ run: |
62
+ cd elkjs
63
+ npm install
64
+ npm run build --if-present
65
+ npm test
66
+ env:
67
+ CI: true
@@ -6,10 +6,14 @@ new design and reconstruction without replacing domain-specific rules.
6
6
 
7
7
  Shared by authoring and reconstruction; convert established behavior into BPMN without inventing policy. Canonical state is `flow_design/flow_design.json`; active processes are listed by `process_order`, stakeholders reuse `roles[].name`. The installed schema/validation are unchanged.
8
8
 
9
- For product automation, the existing built-in role is
10
- `{"id":"System","name":"系统"}`. `System` is its ID, not its stakeholder or
11
- lane label: process stakeholders and BPMN lanes use the exact name `系统`.
12
- Check this in the canonical plan as well as the XML before accepting a file.
9
+ For product automation, keep exactly one built-in role with stable `id: "System"`
10
+ and a non-empty display name in the authored language, for example
11
+ `{"id":"System","name":"系统"}` in Chinese or
12
+ `{"id":"System","name":"System"}` in English. Role IDs and display names
13
+ remain unique. Process stakeholders and BPMN lanes reuse the exact canonical
14
+ `roles[].name`; resolve the product's display name by its `System` ID, never by
15
+ a translated-name whitelist or lane ID. Check the cast, participating roles and
16
+ automated/human task ownership before accepting a file.
13
17
 
14
18
  Bind serial/delegated activity using `artifact_kind: "flow_bpmn"`, the stable process ID and `artifact_file: "flow_design/<process_id>.bpmn"`. A Worker receives the matching process descriptor, focused evidence and this shared contract; the Producer integrates its returned file reference.
15
19
 
@@ -25,10 +29,13 @@ model tool arguments.
25
29
  Validate the file with `run_skill_script`: use `path: "bpmn-validator.mjs"`,
26
30
  `args: ["validate-bpmn-file"]`, `input_file` equal to the pre-bound BPMN path,
27
31
  and `input_context` containing
28
- `{"process_id":"P-...","process":{...}}`. The bounded `process` object is the
32
+ `{"process_id":"P-...","process":{...},"roles":[...]}`. `roles` is the existing
33
+ canonical role cast, not a new process field. The bounded `process` object is the
29
34
  matching canonical descriptor; it needs the supplied stakeholders,
30
35
  system_responsibilities, trigger_hints, and process_type. The validator returns
31
36
  only validity and diagnostics. Repair the same file and retry until it passes.
37
+ Older calls without `roles` retain the original Chinese system-lane semantics;
38
+ always include the canonical cast for new or revised localized files.
32
39
 
33
40
  Next call `run_skill_script` with `path: "layout.mjs"`, the same `input_file`, no
34
41
  args, and `output_file` equal to that same BPMN path. On exit 0 the Host writes the
@@ -26,9 +26,11 @@ not useful.
26
26
 
27
27
  ## Product boundary and lanes
28
28
 
29
- `系统` is the product being designed, not an invented organization role. The
30
- brief always states its grounded responsibilities. Realize those
31
- responsibilities in the `系统` lane; if a proposed process has no product
29
+ The role with stable `id: "System"` is the product being designed, not an invented
30
+ organization role. Its display name comes from the supplied canonical cast
31
+ (`系统` in the Chinese example below, `System` in English). The brief always
32
+ states its grounded responsibilities. Realize those responsibilities in that
33
+ role's exact display-name lane; if a proposed process has no product
32
34
  responsibility, it should not have reached this worker.
33
35
 
34
36
  For two or more participating roles, create exactly one lane per supplied role
@@ -57,14 +59,15 @@ decoration and do not flatten known semantics into generic tasks.
57
59
  |---|---|
58
60
  | Human works in/with the product | `userTask` in that human role lane |
59
61
  | Human performs offline work | `manualTask` in that human role lane |
60
- | Product runs an automated operation | `serviceTask` in `系统` |
61
- | Product evaluates a stated decision table/rule | `businessRuleTask` in `系统` |
62
- | Product sends a message/notification | `sendTask` in `系统` |
63
- | Product waits for a message | `receiveTask` in `系统` |
62
+ | Product runs an automated operation | `serviceTask` in the System role lane |
63
+ | Product evaluates a stated decision table/rule | `businessRuleTask` in the System role lane |
64
+ | Product sends a message/notification | `sendTask` in the System role lane |
65
+ | Product waits for a message | `receiveTask` in the System role lane |
64
66
  | Evidence does not distinguish a more specific activity | `task` |
65
67
 
66
- Never place `userTask`/`manualTask` in `系统`. Never place
67
- `serviceTask`/`businessRuleTask`/`sendTask`/`receiveTask` in a human lane.
68
+ Never place `userTask`/`manualTask` in the System role lane, and do not use a generic
69
+ `task` for its automated responsibility. Never place
70
+ `serviceTask`/`businessRuleTask`/`scriptTask`/`sendTask`/`receiveTask` in a human lane.
68
71
 
69
72
  Use gateways by their actual control-flow semantics:
70
73
 
@@ -184,7 +187,7 @@ the structure to the brief; never copy its business facts or ids blindly.
184
187
  2. All ids are ASCII and process-prefixed; all references resolve.
185
188
  3. Lane names exactly match supplied stakeholders; every node belongs to one
186
189
  responsible lane.
187
- 4. `系统` responsibilities are typed system activities; human work stays in
190
+ 4. The System role's responsibilities are typed system activities; human work stays in
188
191
  human lanes.
189
192
  5. Every supplied trigger hint is realized, and no ungrounded trigger appears.
190
193
  6. Exclusive outcomes are named; parallel/event-driven shapes use the matching
@@ -19,7 +19,8 @@ uses the existing SKILL's product-boundary and process-granularity methods.
19
19
  Use the installed Bundle's structure-validation → layout → final-validation
20
20
  pipeline by file path. The layout script produces BPMN DI; never hand-author a
21
21
  second layout or patch truncated output. Lane labels use actual supplied names;
22
- the built-in System ID and the exact lane/stakeholder name follow the contract.
22
+ resolve the built-in System display name from its stable ID in the canonical
23
+ role cast, and pass that cast to both file validators as the contract specifies.
23
24
  Ports/bindings and routing remain BPMN/layout behavior, not the AI midpoint rule.
24
25
  Review readable node/condition labels and real branch/return meaning; valid DI
25
26
  does not prove readability or correct process semantics. Missing sources stay
@@ -21,7 +21,7 @@ properties:
21
21
  type: object
22
22
  properties:
23
23
  id: { type: string } # ASCII slug for lane ids, e.g. "Buyer"
24
- name: { type: string } # Chinese display name, e.g. "采购员"
24
+ name: { type: string } # Canonical display name in the authored language, e.g. "采购员" or "Buyer"
25
25
  processes:
26
26
  type: map
27
27
  value:
@@ -136,13 +136,12 @@ function semanticDiagnostic(code, message, repair) {
136
136
  return `${code}: ${message} Repair: ${repair}`;
137
137
  }
138
138
  /**
139
- * Validate the canonical process plan before any BPMN artifact work begins.
140
- * @param state - complete flow_design state proposed by the Producer.
141
- * @returns actionable plan diagnostics; empty accepts the canonical role cast and active processes.
139
+ * Resolve product identity from the canonical role cast, independently of its language.
140
+ * @param rawRoles - the existing roles array from flow_design.json.
142
141
  */
143
- function flowDesignStateErrors(state) {
142
+ function flowRoleContext(rawRoles) {
144
143
  const diagnostics = [];
145
- const roles = Array.isArray(state.roles) ? state.roles.map(record$1) : [];
144
+ const roles = Array.isArray(rawRoles) ? rawRoles.map(record$1) : [];
146
145
  const roleIds = roles.map((role) => typeof role.id === "string" ? role.id.trim() : "");
147
146
  const roleNames = roles.map((role) => typeof role.name === "string" ? role.name.trim() : "");
148
147
  const normalizedRoleNames = roleNames.map((name) => name.normalize("NFKC").toLowerCase());
@@ -151,9 +150,24 @@ function flowDesignStateErrors(state) {
151
150
  const duplicateRoleNames = [...new Set(roleNames.filter((name, index) => name !== "" && normalizedRoleNames.indexOf(name.normalize("NFKC").toLowerCase()) !== index))].sort();
152
151
  if (duplicateRoleIds.length > 0) diagnostics.push(semanticDiagnostic("flow_design.duplicate_role_id", `role ids are duplicated: ${duplicateRoleIds.join(", ")}.`, "Keep one stable id for each product-wide role."));
153
152
  if (duplicateRoleNames.length > 0) diagnostics.push(semanticDiagnostic("flow_design.duplicate_role_name", `role names are duplicated: ${duplicateRoleNames.join(", ")}.`, "Keep one canonical display name for each product-wide role and reuse it in every process."));
154
- const systemRoles = roles.filter((role) => role.id === "System" || role.name === "系统");
155
- if (systemRoles.length !== 1 || systemRoles[0]?.id !== "System" || systemRoles[0]?.name !== "系统") diagnostics.push(semanticDiagnostic("flow_design.missing_system_role", "the product-wide role cast must contain exactly one canonical role {id: \"System\", name: \"系统\"}.", "Add or normalize the single built-in System/系统 role before describing active processes."));
153
+ const systemRoles = roles.filter((role) => role.id === "System");
154
+ if (systemRoles.length !== 1) diagnostics.push(semanticDiagnostic("flow_design.missing_system_role", "the product-wide role cast must contain exactly one role with stable id \"System\".", "Keep the built-in System identity and give it one non-empty canonical display name in the authored language."));
156
155
  const roleNameSet = new Set(roleNames);
156
+ const systemName = systemRoles.length === 1 && typeof systemRoles[0]?.name === "string" ? systemRoles[0].name.trim() : "";
157
+ return { diagnostics, roleNameSet, systemName };
158
+ }
159
+ function processRoleErrors(process, processId, { roleNameSet, systemName }) {
160
+ const diagnostics = [];
161
+ const stakeholders = stringList(process.stakeholders);
162
+ const unknown = stakeholders.filter((role) => !roleNameSet.has(role));
163
+ if (unknown.length > 0) diagnostics.push(semanticDiagnostic("flow_design.unknown_stakeholder", `process ${processId} uses stakeholders outside the product-wide role cast: ${[...new Set(unknown)].sort().join(", ")}.`, "Reuse exact role names from roles, or establish the missing evidenced role in the shared cast first."));
164
+ if (systemName !== "" && !stakeholders.includes(systemName)) diagnostics.push(semanticDiagnostic("flow_design.system_not_participating", `process ${processId} does not include the System role ${JSON.stringify(systemName)} as a stakeholder.`, "Include its canonical display name and established product responsibility, or omit a procedure in which the product has no responsibility."));
165
+ if (stringList(process.system_responsibilities).length === 0) diagnostics.push(semanticDiagnostic("flow_design.missing_system_responsibility", `process ${processId} does not state any product/system responsibility.`, "Describe what the product validates, stores, decides, sends, or waits for before BPMN authoring."));
166
+ return diagnostics;
167
+ }
168
+ function flowDesignStateErrors(state) {
169
+ const roleContext = flowRoleContext(state.roles);
170
+ const diagnostics = [...roleContext.diagnostics];
157
171
  const processes = record$1(state.processes);
158
172
  const order = Array.isArray(state.process_order) ? state.process_order : [];
159
173
  for (const rawProcessId of order) {
@@ -161,11 +175,7 @@ function flowDesignStateErrors(state) {
161
175
  const process = record$1(processes[processId]);
162
176
  if (Object.keys(process).length === 0 || process.deleted === true) continue;
163
177
  if (process.process_id !== processId) diagnostics.push(semanticDiagnostic("flow_design.process_id_mismatch", `process map key ${processId} does not match process_id ${JSON.stringify(process.process_id)}.`, "Set process_id to the exact process map key before authoring or laying out BPMN."));
164
- const stakeholders = stringList(process.stakeholders);
165
- const unknown = stakeholders.filter((role) => !roleNameSet.has(role));
166
- if (unknown.length > 0) diagnostics.push(semanticDiagnostic("flow_design.unknown_stakeholder", `process ${processId} uses stakeholders outside the product-wide role cast: ${[...new Set(unknown)].sort().join(", ")}.`, "Reuse exact role names from roles, or establish the missing evidenced role in the shared cast first."));
167
- if (!stakeholders.includes("系统")) diagnostics.push(semanticDiagnostic("flow_design.system_not_participating", `process ${processId} does not include 系统 as a stakeholder.`, "Add 系统 and its established product responsibility, or omit a procedure in which the product has no responsibility."));
168
- if (stringList(process.system_responsibilities).length === 0) diagnostics.push(semanticDiagnostic("flow_design.missing_system_responsibility", `process ${processId} does not state any product/system responsibility.`, "Describe what the product validates, stores, decides, sends, or waits for before BPMN authoring."));
178
+ diagnostics.push(...processRoleErrors(process, processId, roleContext));
169
179
  }
170
180
  return Object.freeze(diagnostics);
171
181
  }
@@ -174,10 +184,15 @@ function flowDesignStateErrors(state) {
174
184
  * @param xml - complete or structure-only BPMN XML after syntax validation.
175
185
  * @param processId - canonical process id used in diagnostics.
176
186
  * @param process - canonical process descriptor from flow_design.json.
187
+ * @param roles - canonical role cast; omitted only by legacy Chinese file callers.
177
188
  * @returns actionable semantic diagnostics; empty accepts the process.
178
189
  */
179
- function semanticErrors(xml, processId, process) {
180
- const diagnostics = [];
190
+ function semanticErrors(xml, processId, process, roles) {
191
+ // Old file callers have no cast and retain the original Chinese lane semantics.
192
+ // New callers supply the existing canonical cast; identity never comes from a label.
193
+ const roleContext = roles === void 0 ? void 0 : flowRoleContext(roles);
194
+ const systemName = roleContext?.systemName ?? "系统";
195
+ const diagnostics = roleContext === void 0 ? [] : [...roleContext.diagnostics, ...processRoleErrors(process, processId, roleContext)];
181
196
  const nodes = bpmnNodes(xml);
182
197
  const expectedRoles = stringList(process.stakeholders);
183
198
  const systemResponsibilities = stringList(process.system_responsibilities);
@@ -200,8 +215,8 @@ function semanticErrors(xml, processId, process) {
200
215
  const duplicated = [...nodeLanes].filter(([, owners]) => owners.length !== 1).map(([nodeId]) => nodeId).sort();
201
216
  if (duplicated.length > 0) diagnostics.push(semanticDiagnostic("flow_design.ambiguous_lane_assignment", `process ${processId}: flow nodes belong to more than one lane: ${duplicated.slice(0, 8).join(", ")}.`, "Keep exactly one flowNodeRef for each flow node in exactly one responsible lane."));
202
217
  }
203
- if (expectedRoles.includes("系统")) {
204
- const systemActivities = [...expectedRoles.length === 1 && laneNames.length === 0 ? new Set(nodes.keys()) : new Set(laneNodes.get("系统") ?? [])].map((nodeId) => [nodeId, nodes.get(nodeId)?.tag]).filter((entry) => entry[1] !== void 0 && BPMN_ACTIVITY_TAGS.has(entry[1]));
218
+ if (expectedRoles.includes(systemName)) {
219
+ const systemActivities = [...expectedRoles.length === 1 && laneNames.length === 0 ? new Set(nodes.keys()) : new Set(laneNodes.get(systemName) ?? [])].map((nodeId) => [nodeId, nodes.get(nodeId)?.tag]).filter((entry) => entry[1] !== void 0 && BPMN_ACTIVITY_TAGS.has(entry[1]));
205
220
  const humanTasks = systemActivities.filter(([, tag]) => tag === "userTask" || tag === "manualTask").map(([nodeId]) => nodeId).sort();
206
221
  if (humanTasks.length > 0) diagnostics.push(semanticDiagnostic("flow_design.human_task_in_system_lane", `process ${processId}: system lane contains human-owned tasks: ${humanTasks.slice(0, 8).join(", ")}.`, "Move human/manual actions to a human lane or use an evidenced automated activity type."));
207
222
  const genericTasks = systemActivities.filter(([, tag]) => tag === "task").map(([nodeId]) => nodeId).sort();
@@ -209,12 +224,12 @@ function semanticErrors(xml, processId, process) {
209
224
  if (systemResponsibilities.length > 0 && !systemActivities.some(([, tag]) => BPMN_SYSTEM_ACTIVITY_TAGS.has(tag))) diagnostics.push(semanticDiagnostic("flow_design.system_responsibility_unrealized", `process ${processId}: no typed automated activity realizes the supplied system responsibilities.`, "Add system-lane semantic activities for established responsibilities without inventing new ones."));
210
225
  }
211
226
  for (const [role, refs] of laneNodes) {
212
- if (role === "系统") continue;
227
+ if (role === systemName) continue;
213
228
  const automated = refs.filter((ref) => {
214
229
  const tag = nodes.get(ref)?.tag;
215
230
  return tag !== void 0 && BPMN_SYSTEM_ACTIVITY_TAGS.has(tag);
216
231
  }).sort();
217
- if (automated.length > 0) diagnostics.push(semanticDiagnostic("flow_design.automation_in_human_lane", `process ${processId}: human lane ${JSON.stringify(role)} owns automated activities: ${automated.slice(0, 8).join(", ")}.`, "Move automated work to the 系统 lane and keep human work as userTask or manualTask."));
232
+ if (automated.length > 0) diagnostics.push(semanticDiagnostic("flow_design.automation_in_human_lane", `process ${processId}: human lane ${JSON.stringify(role)} owns automated activities: ${automated.slice(0, 8).join(", ")}.`, "Move automated work to the canonical System role's lane and keep human work as userTask or manualTask."));
218
233
  }
219
234
  const hintedKinds = new Set(triggerHints.map((hint) => typeof hint.kind === "string" ? hint.kind : ""));
220
235
  const presentKinds = new Set(Object.entries(BPMN_TRIGGER_DEFINITIONS).filter(([, definition]) => new RegExp(`<bpmn:${definition}\\b`).test(xml)).map(([kind]) => kind));
@@ -404,7 +419,7 @@ async function validateFlowDesignProducerArtifacts(state, artifacts) {
404
419
  const stakeholders = Array.isArray(process.stakeholders) ? process.stakeholders : [];
405
420
  diagnostics.push(...layoutErrors(xml).map((message) => `process ${processId}: ${message}`));
406
421
  diagnostics.push(...structuralErrors(structure, processId, stakeholders.length).map((message) => `process ${processId}: ${message}`));
407
- diagnostics.push(...semanticErrors(structure, processId, process));
422
+ diagnostics.push(...semanticErrors(structure, processId, process, state.roles));
408
423
  }
409
424
  return Object.freeze(diagnostics);
410
425
  }
@@ -447,7 +462,7 @@ try {
447
462
  ...sourceDiagnostics,
448
463
  ...(operation === "validate-final-bpmn-file" ? layoutErrors(xml) : []),
449
464
  ...structuralErrors(structure, processId, (Array.isArray(processRecord.stakeholders) ? processRecord.stakeholders : []).length),
450
- ...semanticErrors(structure, processId, processRecord)
465
+ ...semanticErrors(structure, processId, processRecord, context.roles)
451
466
  ]);
452
467
  } else throw new Error("usage: bpmn-validator.mjs <validate-bpmn-file|validate-final-bpmn-file>");
453
468
  } catch (error) {
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "bundleDescription": "- **Capability**: organize the product into user-facing function cards.\n- **Resolves**: S gaps by turning an established product goal and core scenarios into a non-overlapping capability map.\n- **Candidate when**: the outcome, primary users, and material boundary are established, or the user explicitly asks to split or revise functions.\n- **Do not infer**: an app category, domain name, or generic product goal is not enough evidence to invent a function map.\n- **Output**: a function-module panel grouped by Epic for browsing.",
3
3
  "functions": "Function modules", "function": "Function", "empty": "Add a function, or describe the capability in the conversation.",
4
- "details": "Functional details", "functionId": "Function ID", "name": "Function name", "description": "Description", "epic": "Group", "epicHelp": "Groups are labels on functions, not separate design records.",
4
+ "details": "Function details", "functionId": "Function ID", "name": "Function name", "description": "Description", "epic": "Group", "epicHelp": "Groups are labels on functions, not separate design records.",
5
5
  "priority": "Priority", "high": "High", "medium": "Medium", "low": "Low", "rejected": "Rejected",
6
- "source": "Origin", "ai": "AI proposal", "user": "User added", "reason": "Notes", "references": "Pinned sources",
6
+ "source": "Origin", "ai": "AI proposal", "user": "User added", "reason": "Notes", "references": "Source references",
7
7
  "situation": "Usage scenario", "behaviors": "Core behaviors", "behavior": "Behavior", "inputs": "Inputs", "input": "Input",
8
8
  "outputs": "Outcomes", "output": "Outcome", "limits": "Scope boundaries", "limit": "Boundary", "exceptions": "Exception handling", "exception": "Exception", "condition": "Condition", "response": "System response",
9
9
  "guidance": "Check that the functions cover what users need to accomplish. Look for omissions, overlap or excess scope, and adjust descriptions and priorities.",
@@ -6,6 +6,7 @@ i18n:
6
6
  empty_description: $t:empty
7
7
  sections:
8
8
  - id: functions
9
+ order: function_order
9
10
  title: $t:functions
10
11
  item_name: $t:function
11
12
  confirm_delete: true
@@ -75,6 +75,11 @@ do not send it to a differently pinned validator or rewrite its retained state.
75
75
  }
76
76
  ```
77
77
 
78
+ - Optional `function_order` holds function map keys in the user’s chosen reading order.
79
+ Preserve it during revisions, remove deleted keys and append new keys without
80
+ changing unaffected positions. If absent, existing map order is used; the Panel
81
+ writes an order only when the user actually moves a card. Grouping still comes
82
+ from `function_epic`, not another membership list.
78
83
  - `function_id`, `function_name`, `function_description`, `function_epic`
79
84
  are required for every function. `priority` is optional (panel default Medium).
80
85
  - `rejected` means the user rejected the function. It remains visible in the
@@ -1,4 +1,5 @@
1
1
  {
2
+ "function_order": ["F-PREVIEW-001", "F-PREVIEW-002"],
2
3
  "functions": {
3
4
  "F-PREVIEW-001": {
4
5
  "function_id": "F-PREVIEW-001",