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.
- package/README.md +4 -4
- package/bin/npm-agent-installation.mjs +12 -5
- package/bin/npm-desktop-preparation.mjs +47 -33
- package/bin/npm-installer-dsh.mjs +2 -1
- package/bin/npm-node-runtime.mjs +4 -3
- package/package.json +1 -1
- package/payload/desktop-preparation/materials.json +46 -46
- package/payload/desktop-preparation/qwenwork-package.mjs +26 -11
- package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/material.json +1 -1
- package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/.agents/skills/design-bundle-creator/references/bundle-checklist.md +1 -1
- package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/.agents/skills/design-bundle-creator/references/panel-authoring.md +6 -4
- package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/.agents/skills/design-bundle-creator/scripts/inspect-panel-component.mjs +27 -33
- package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/docs/dsl-spec.md +104 -19
- package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/docs/panel-uiux-standard.md +361 -90
- package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/docs/system-design-baseline.md +1 -1
- package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/packages/skills-web-app/bundles/flow_design/SKILL.md +7 -4
- package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/packages/skills-web-app/bundles/flow_design/reference/artifact-contract.md +12 -5
- package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/packages/skills-web-app/bundles/flow_design/reference/bpmn_authoring.md +13 -10
- package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/packages/skills-web-app/bundles/flow_design/reference/canvas-guide.md +2 -1
- package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/packages/skills-web-app/bundles/flow_design/schema.yaml +1 -1
- package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/packages/skills-web-app/bundles/function_modules/reference/artifact-contract.md +5 -0
- package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/packages/skills-web-app/bundles/function_modules/reference/preview.json +1 -0
- package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/packages/skills-web-app/bundles/function_modules/schema.yaml +4 -0
- package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/packages/skills-web-app/bundles/smart_questions/SKILL.md +4 -2
- package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/packages/skills-web-app/bundles/smart_questions/reference/artifact-contract.md +16 -8
- package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/packages/skills-web-app/bundles/smart_questions/schema.yaml +2 -2
- package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/packages/skills-web-app/bundles/web_app_prd_assembly/SKILL.md +4 -0
- 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
- package/payload/desktop-preparation/qwenwork-template/scripts/native-hook-transport.mjs +21 -15
- package/payload/desktop-preparation/qwenwork-template/scripts/qwenwork-connection.mjs +56 -11
- package/payload/desktop-preparation/src/native-hook-transport.mjs +21 -15
- package/payload/desktop-preparation/src/qwenwork-connection.mjs +56 -11
- package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/material.json +1 -1
- package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/.agents/skills/design-bundle-creator/references/bundle-checklist.md +1 -1
- package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/.agents/skills/design-bundle-creator/references/panel-authoring.md +6 -4
- package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/.agents/skills/design-bundle-creator/scripts/inspect-panel-component.mjs +27 -33
- package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/docs/dsl-spec.md +104 -19
- package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/docs/panel-uiux-standard.md +361 -90
- package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/docs/system-design-baseline.md +1 -1
- package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/packages/skills-web-app/bundles/flow_design/SKILL.md +7 -4
- package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/packages/skills-web-app/bundles/flow_design/reference/artifact-contract.md +12 -5
- package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/packages/skills-web-app/bundles/flow_design/reference/bpmn_authoring.md +13 -10
- package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/packages/skills-web-app/bundles/flow_design/reference/canvas-guide.md +2 -1
- package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/packages/skills-web-app/bundles/flow_design/schema.yaml +1 -1
- package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/packages/skills-web-app/bundles/function_modules/reference/artifact-contract.md +5 -0
- package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/packages/skills-web-app/bundles/function_modules/reference/preview.json +1 -0
- package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/packages/skills-web-app/bundles/function_modules/schema.yaml +4 -0
- package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/packages/skills-web-app/bundles/smart_questions/SKILL.md +4 -2
- package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/packages/skills-web-app/bundles/smart_questions/reference/artifact-contract.md +16 -8
- package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/packages/skills-web-app/bundles/smart_questions/schema.yaml +2 -2
- package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/packages/skills-web-app/bundles/web_app_prd_assembly/SKILL.md +4 -0
- 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
- package/payload/desktop-preparation/workbuddy-package.mjs +13 -8
- package/payload/overlays/claude-code/.claude-plugin/plugin.json +1 -1
- package/payload/overlays/claude-code/authoring/studio-creators/material.json +1 -1
- package/payload/overlays/claude-code/authoring/studio-creators/source/.agents/skills/design-bundle-creator/references/bundle-checklist.md +1 -1
- package/payload/overlays/claude-code/authoring/studio-creators/source/.agents/skills/design-bundle-creator/references/panel-authoring.md +6 -4
- package/payload/overlays/claude-code/authoring/studio-creators/source/.agents/skills/design-bundle-creator/scripts/inspect-panel-component.mjs +27 -33
- package/payload/overlays/claude-code/authoring/studio-creators/source/docs/dsl-spec.md +104 -19
- package/payload/overlays/claude-code/authoring/studio-creators/source/docs/panel-uiux-standard.md +361 -90
- package/payload/overlays/claude-code/authoring/studio-creators/source/docs/system-design-baseline.md +1 -1
- package/payload/overlays/claude-code/authoring/studio-creators/source/packages/skills-web-app/bundles/flow_design/SKILL.md +7 -4
- package/payload/overlays/claude-code/authoring/studio-creators/source/packages/skills-web-app/bundles/flow_design/reference/artifact-contract.md +12 -5
- package/payload/overlays/claude-code/authoring/studio-creators/source/packages/skills-web-app/bundles/flow_design/reference/bpmn_authoring.md +13 -10
- package/payload/overlays/claude-code/authoring/studio-creators/source/packages/skills-web-app/bundles/flow_design/reference/canvas-guide.md +2 -1
- package/payload/overlays/claude-code/authoring/studio-creators/source/packages/skills-web-app/bundles/flow_design/schema.yaml +1 -1
- package/payload/overlays/claude-code/authoring/studio-creators/source/packages/skills-web-app/bundles/function_modules/reference/artifact-contract.md +5 -0
- package/payload/overlays/claude-code/authoring/studio-creators/source/packages/skills-web-app/bundles/function_modules/reference/preview.json +1 -0
- package/payload/overlays/claude-code/authoring/studio-creators/source/packages/skills-web-app/bundles/function_modules/schema.yaml +4 -0
- package/payload/overlays/claude-code/authoring/studio-creators/source/packages/skills-web-app/bundles/smart_questions/SKILL.md +4 -2
- package/payload/overlays/claude-code/authoring/studio-creators/source/packages/skills-web-app/bundles/smart_questions/reference/artifact-contract.md +16 -8
- package/payload/overlays/claude-code/authoring/studio-creators/source/packages/skills-web-app/bundles/smart_questions/schema.yaml +2 -2
- package/payload/overlays/claude-code/authoring/studio-creators/source/packages/skills-web-app/bundles/web_app_prd_assembly/SKILL.md +4 -0
- package/payload/overlays/claude-code/authoring/studio-creators/source/packages/skills-web-app/bundles/web_app_prd_assembly/reference/artifact-contract.md +6 -0
- package/payload/overlays/claude-code/scripts/native-hook-transport.mjs +21 -15
- package/payload/overlays/codex/.codex-plugin/plugin.json +1 -1
- package/payload/overlays/codex/authoring/studio-creators/material.json +1 -1
- package/payload/overlays/codex/authoring/studio-creators/source/.agents/skills/design-bundle-creator/references/bundle-checklist.md +1 -1
- package/payload/overlays/codex/authoring/studio-creators/source/.agents/skills/design-bundle-creator/references/panel-authoring.md +6 -4
- package/payload/overlays/codex/authoring/studio-creators/source/.agents/skills/design-bundle-creator/scripts/inspect-panel-component.mjs +27 -33
- package/payload/overlays/codex/authoring/studio-creators/source/docs/dsl-spec.md +104 -19
- package/payload/overlays/codex/authoring/studio-creators/source/docs/panel-uiux-standard.md +361 -90
- package/payload/overlays/codex/authoring/studio-creators/source/docs/system-design-baseline.md +1 -1
- package/payload/overlays/codex/authoring/studio-creators/source/packages/skills-web-app/bundles/flow_design/SKILL.md +7 -4
- package/payload/overlays/codex/authoring/studio-creators/source/packages/skills-web-app/bundles/flow_design/reference/artifact-contract.md +12 -5
- package/payload/overlays/codex/authoring/studio-creators/source/packages/skills-web-app/bundles/flow_design/reference/bpmn_authoring.md +13 -10
- package/payload/overlays/codex/authoring/studio-creators/source/packages/skills-web-app/bundles/flow_design/reference/canvas-guide.md +2 -1
- package/payload/overlays/codex/authoring/studio-creators/source/packages/skills-web-app/bundles/flow_design/schema.yaml +1 -1
- package/payload/overlays/codex/authoring/studio-creators/source/packages/skills-web-app/bundles/function_modules/reference/artifact-contract.md +5 -0
- package/payload/overlays/codex/authoring/studio-creators/source/packages/skills-web-app/bundles/function_modules/reference/preview.json +1 -0
- package/payload/overlays/codex/authoring/studio-creators/source/packages/skills-web-app/bundles/function_modules/schema.yaml +4 -0
- package/payload/overlays/codex/authoring/studio-creators/source/packages/skills-web-app/bundles/smart_questions/SKILL.md +4 -2
- package/payload/overlays/codex/authoring/studio-creators/source/packages/skills-web-app/bundles/smart_questions/reference/artifact-contract.md +16 -8
- package/payload/overlays/codex/authoring/studio-creators/source/packages/skills-web-app/bundles/smart_questions/schema.yaml +2 -2
- package/payload/overlays/codex/authoring/studio-creators/source/packages/skills-web-app/bundles/web_app_prd_assembly/SKILL.md +4 -0
- package/payload/overlays/codex/authoring/studio-creators/source/packages/skills-web-app/bundles/web_app_prd_assembly/reference/artifact-contract.md +6 -0
- package/payload/overlays/qoder/.qoder-plugin/plugin.json +1 -1
- package/payload/overlays/qoder/authoring/studio-creators/material.json +1 -1
- package/payload/overlays/qoder/authoring/studio-creators/source/.agents/skills/design-bundle-creator/references/bundle-checklist.md +1 -1
- package/payload/overlays/qoder/authoring/studio-creators/source/.agents/skills/design-bundle-creator/references/panel-authoring.md +6 -4
- package/payload/overlays/qoder/authoring/studio-creators/source/.agents/skills/design-bundle-creator/scripts/inspect-panel-component.mjs +27 -33
- package/payload/overlays/qoder/authoring/studio-creators/source/docs/dsl-spec.md +104 -19
- package/payload/overlays/qoder/authoring/studio-creators/source/docs/panel-uiux-standard.md +361 -90
- package/payload/overlays/qoder/authoring/studio-creators/source/docs/system-design-baseline.md +1 -1
- package/payload/overlays/qoder/authoring/studio-creators/source/packages/skills-web-app/bundles/flow_design/SKILL.md +7 -4
- package/payload/overlays/qoder/authoring/studio-creators/source/packages/skills-web-app/bundles/flow_design/reference/artifact-contract.md +12 -5
- package/payload/overlays/qoder/authoring/studio-creators/source/packages/skills-web-app/bundles/flow_design/reference/bpmn_authoring.md +13 -10
- package/payload/overlays/qoder/authoring/studio-creators/source/packages/skills-web-app/bundles/flow_design/reference/canvas-guide.md +2 -1
- package/payload/overlays/qoder/authoring/studio-creators/source/packages/skills-web-app/bundles/flow_design/schema.yaml +1 -1
- package/payload/overlays/qoder/authoring/studio-creators/source/packages/skills-web-app/bundles/function_modules/reference/artifact-contract.md +5 -0
- package/payload/overlays/qoder/authoring/studio-creators/source/packages/skills-web-app/bundles/function_modules/reference/preview.json +1 -0
- package/payload/overlays/qoder/authoring/studio-creators/source/packages/skills-web-app/bundles/function_modules/schema.yaml +4 -0
- package/payload/overlays/qoder/authoring/studio-creators/source/packages/skills-web-app/bundles/smart_questions/SKILL.md +4 -2
- package/payload/overlays/qoder/authoring/studio-creators/source/packages/skills-web-app/bundles/smart_questions/reference/artifact-contract.md +16 -8
- package/payload/overlays/qoder/authoring/studio-creators/source/packages/skills-web-app/bundles/smart_questions/schema.yaml +2 -2
- package/payload/overlays/qoder/authoring/studio-creators/source/packages/skills-web-app/bundles/web_app_prd_assembly/SKILL.md +4 -0
- package/payload/overlays/qoder/authoring/studio-creators/source/packages/skills-web-app/bundles/web_app_prd_assembly/reference/artifact-contract.md +6 -0
- package/payload/overlays/qoder/scripts/native-hook-transport.mjs +21 -15
- package/payload/shared/authoring/panel-components.json +1015 -878
- package/payload/shared/authoring/studio-creators/material.json +1 -1
- package/payload/shared/authoring/studio-creators/source/.agents/skills/design-bundle-creator/references/bundle-checklist.md +1 -1
- package/payload/shared/authoring/studio-creators/source/.agents/skills/design-bundle-creator/references/panel-authoring.md +6 -4
- package/payload/shared/authoring/studio-creators/source/.agents/skills/design-bundle-creator/scripts/inspect-panel-component.mjs +27 -33
- package/payload/shared/authoring/studio-creators/source/docs/dsl-spec.md +104 -19
- package/payload/shared/authoring/studio-creators/source/docs/panel-uiux-standard.md +361 -90
- package/payload/shared/authoring/studio-creators/source/docs/system-design-baseline.md +1 -1
- package/payload/shared/authoring/studio-creators/source/packages/skills-web-app/bundles/flow_design/SKILL.md +7 -4
- package/payload/shared/authoring/studio-creators/source/packages/skills-web-app/bundles/flow_design/reference/artifact-contract.md +12 -5
- package/payload/shared/authoring/studio-creators/source/packages/skills-web-app/bundles/flow_design/reference/bpmn_authoring.md +13 -10
- package/payload/shared/authoring/studio-creators/source/packages/skills-web-app/bundles/flow_design/reference/canvas-guide.md +2 -1
- package/payload/shared/authoring/studio-creators/source/packages/skills-web-app/bundles/flow_design/schema.yaml +1 -1
- package/payload/shared/authoring/studio-creators/source/packages/skills-web-app/bundles/function_modules/reference/artifact-contract.md +5 -0
- package/payload/shared/authoring/studio-creators/source/packages/skills-web-app/bundles/function_modules/reference/preview.json +1 -0
- package/payload/shared/authoring/studio-creators/source/packages/skills-web-app/bundles/function_modules/schema.yaml +4 -0
- package/payload/shared/authoring/studio-creators/source/packages/skills-web-app/bundles/smart_questions/SKILL.md +4 -2
- package/payload/shared/authoring/studio-creators/source/packages/skills-web-app/bundles/smart_questions/reference/artifact-contract.md +16 -8
- package/payload/shared/authoring/studio-creators/source/packages/skills-web-app/bundles/smart_questions/schema.yaml +2 -2
- package/payload/shared/authoring/studio-creators/source/packages/skills-web-app/bundles/web_app_prd_assembly/SKILL.md +4 -0
- package/payload/shared/authoring/studio-creators/source/packages/skills-web-app/bundles/web_app_prd_assembly/reference/artifact-contract.md +6 -0
- package/payload/shared/bundles/ai_agent_capabilities/locales/en-US.json +29 -28
- package/payload/shared/bundles/ai_agent_capabilities/locales/zh-CN.json +35 -34
- package/payload/shared/bundles/ai_agent_capabilities/panel.yaml +55 -75
- package/payload/shared/bundles/business_data/locales/en-US.json +2 -2
- package/payload/shared/bundles/business_data/locales/zh-CN.json +1 -1
- package/payload/shared/bundles/business_rules/locales/en-US.json +2 -3
- package/payload/shared/bundles/business_rules/locales/zh-CN.json +2 -3
- package/payload/shared/bundles/business_rules/panel.yaml +4 -10
- package/payload/shared/bundles/design_style/locales/en-US.json +4 -4
- package/payload/shared/bundles/design_style/locales/zh-CN.json +4 -4
- package/payload/shared/bundles/flow_design/LICENSE +202 -0
- package/payload/shared/bundles/flow_design/NOTICE +13 -0
- package/payload/shared/bundles/flow_design/SKILL.md +7 -4
- package/payload/shared/bundles/flow_design/THIRD_PARTY_NOTICES.md +35 -0
- package/payload/shared/bundles/flow_design/licenses/bundled-js/bpmn-moddle@9.0.4/LICENSE +21 -0
- package/payload/shared/bundles/flow_design/licenses/bundled-js/min-dash@4.2.3/LICENSE +21 -0
- package/payload/shared/bundles/flow_design/licenses/bundled-js/moddle-xml@11.0.0/LICENSE +21 -0
- package/payload/shared/bundles/flow_design/licenses/bundled-js/moddle@7.2.0/LICENSE +21 -0
- package/payload/shared/bundles/flow_design/licenses/bundled-js/rolldown@1.2.4/LICENSE +25 -0
- package/payload/shared/bundles/flow_design/licenses/bundled-js/rolldown@1.2.4/THIRD-PARTY-LICENSE +33 -0
- package/payload/shared/bundles/flow_design/licenses/bundled-js/saxen@10.0.0/LICENSE +21 -0
- package/payload/shared/bundles/flow_design/licenses/flow-build.json +204 -0
- package/payload/shared/bundles/flow_design/licenses/third-party/elkjs-0.10.2/DEPENDENCIES +631 -0
- package/payload/shared/bundles/flow_design/licenses/third-party/elkjs-0.10.2/LICENSE.md +264 -0
- package/payload/shared/bundles/flow_design/licenses/third-party/elkjs-0.10.2/NOTICE.md +55 -0
- package/payload/shared/bundles/flow_design/licenses/third-party/elkjs-0.10.2/SOURCE.md +62 -0
- package/payload/shared/bundles/flow_design/licenses/third-party/elkjs-0.10.2/graph-layout-worker.ts +33 -0
- package/payload/shared/bundles/flow_design/licenses/third-party/elkjs-0.10.2/release-source-binding.json +81 -0
- package/payload/shared/bundles/flow_design/licenses/third-party/elkjs-0.10.2/upstream-README.md +391 -0
- package/payload/shared/bundles/flow_design/licenses/third-party/elkjs-0.10.2/upstream-build.gradle +322 -0
- package/payload/shared/bundles/flow_design/licenses/third-party/elkjs-0.10.2/upstream-ci.yml +67 -0
- package/payload/shared/bundles/flow_design/reference/artifact-contract.md +12 -5
- package/payload/shared/bundles/flow_design/reference/bpmn_authoring.md +13 -10
- package/payload/shared/bundles/flow_design/reference/canvas-guide.md +2 -1
- package/payload/shared/bundles/flow_design/schema.yaml +1 -1
- package/payload/shared/bundles/flow_design/scripts/bpmn-validator.mjs +35 -20
- package/payload/shared/bundles/function_modules/locales/en-US.json +2 -2
- package/payload/shared/bundles/function_modules/panel.yaml +1 -0
- package/payload/shared/bundles/function_modules/reference/artifact-contract.md +5 -0
- package/payload/shared/bundles/function_modules/reference/preview.json +1 -0
- package/payload/shared/bundles/function_modules/schema.yaml +4 -0
- package/payload/shared/bundles/integration_design/locales/en-US.json +3 -1
- package/payload/shared/bundles/integration_design/locales/zh-CN.json +3 -1
- package/payload/shared/bundles/integration_design/panel.yaml +18 -2
- package/payload/shared/bundles/notification_design/locales/en-US.json +2 -0
- package/payload/shared/bundles/notification_design/locales/zh-CN.json +2 -0
- package/payload/shared/bundles/notification_design/panel.yaml +18 -6
- package/payload/shared/bundles/page_design/locales/en-US.json +12 -1
- package/payload/shared/bundles/page_design/locales/zh-CN.json +12 -1
- package/payload/shared/bundles/page_design/panel.yaml +23 -1
- package/payload/shared/bundles/quality_acceptance/locales/en-US.json +2 -2
- package/payload/shared/bundles/quality_acceptance/locales/zh-CN.json +2 -2
- package/payload/shared/bundles/quality_acceptance/panel.yaml +10 -7
- package/payload/shared/bundles/role_access/locales/en-US.json +5 -5
- package/payload/shared/bundles/role_access/locales/zh-CN.json +5 -5
- package/payload/shared/bundles/smart_questions/SKILL.md +4 -2
- package/payload/shared/bundles/smart_questions/reference/artifact-contract.md +16 -8
- package/payload/shared/bundles/smart_questions/schema.yaml +2 -2
- package/payload/shared/bundles/web_app_prd_assembly/SKILL.md +4 -0
- package/payload/shared/bundles/web_app_prd_assembly/locales/en-US.json +2 -2
- package/payload/shared/bundles/web_app_prd_assembly/locales/zh-CN.json +1 -1
- package/payload/shared/bundles/web_app_prd_assembly/reference/artifact-contract.md +6 -0
- package/payload/shared/bundles/web_app_prd_assembly/scripts/prd.mjs +28 -16
- package/payload/shared/scripts/{content-archive-CnwVcuWA.mjs → content-archive-BvVmbecb.mjs} +2 -2
- package/payload/shared/scripts/{core-entry-DESmwP78.mjs → core-entry-S65aB8cC.mjs} +47 -0
- package/payload/shared/scripts/design.mjs +2 -2
- package/payload/shared/scripts/git-runtime-check.mjs +1 -1
- package/payload/shared/scripts/knowledge-snapshot-query.mjs +1 -1
- package/payload/shared/scripts/{load-C-RwS23Y.mjs → load-D1xLlKL_.mjs} +1 -1
- package/payload/shared/scripts/{panel-preview-BeVRYFk1.mjs → panel-preview-D-OD9mro.mjs} +2 -2
- package/payload/shared/scripts/{server-BnEtfptI.mjs → server-B6kGo8xO.mjs} +159 -55
- package/payload/shared/scripts/{studio-CFUWk0vJ.mjs → studio-DumCCbFT.mjs} +6 -6
- package/payload/shared/scripts/{studio-instance-composition-BJzYMyvV.mjs → studio-instance-composition-DfbZVetl.mjs} +2 -2
- package/payload/shared/scripts/{studio-instances-gQFR9yqL.mjs → studio-instances-BnVSHNCf.mjs} +3 -3
- package/payload/shared/scripts/{studio-panel-drafts-Dq171F6x.mjs → studio-panel-drafts-DSxfgHfk.mjs} +1 -1
- package/payload/shared/scripts/workbuddy-panel-service.mjs +1 -1
- 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
- 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
- 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
- package/payload/shared/web/client.js +3389 -1843
- package/release-hosts.json +1 -1
- package/release-manifest.json +223 -203
|
@@ -7,6 +7,8 @@
|
|
|
7
7
|
"newIntegration": "New system integration",
|
|
8
8
|
"newIntegrationNumbered": "New system integration {index}",
|
|
9
9
|
"title": "Name",
|
|
10
|
+
"connectionDetails": "Connection details",
|
|
11
|
+
"usageAndNotes": "Usage and notes",
|
|
10
12
|
"description": "Capability description",
|
|
11
13
|
"descriptionHelp": "In one sentence, explain what this connection does for the product.",
|
|
12
14
|
"descriptionExample": "For example: create a warehouse shipment and return its identifier.",
|
|
@@ -15,7 +17,7 @@
|
|
|
15
17
|
"secrets": "Credential requirements",
|
|
16
18
|
"secretsHelp": "Record credential names and purposes only. Configure actual secrets through the host credential service, never in Design Files. Leave this empty if authentication is unnecessary.",
|
|
17
19
|
"secret": "Credential",
|
|
18
|
-
"secretName": "Credential name
|
|
20
|
+
"secretName": "Credential name or configuration key",
|
|
19
21
|
"secretDescription": "Purpose",
|
|
20
22
|
"prompt": "Usage instructions",
|
|
21
23
|
"promptHelp": "Explain when to use the connection, what to do, and which results to return.",
|
|
@@ -7,6 +7,8 @@
|
|
|
7
7
|
"newIntegration": "新系统集成",
|
|
8
8
|
"newIntegrationNumbered": "新系统集成 {index}",
|
|
9
9
|
"title": "名称",
|
|
10
|
+
"connectionDetails": "连接信息",
|
|
11
|
+
"usageAndNotes": "使用与说明",
|
|
10
12
|
"description": "能力说明",
|
|
11
13
|
"descriptionHelp": "用一句话说明这个连接替产品完成什么事情。",
|
|
12
14
|
"descriptionExample": "例如:向仓储系统创建发货任务,并返回任务编号",
|
|
@@ -15,7 +17,7 @@
|
|
|
15
17
|
"secrets": "凭据需求",
|
|
16
18
|
"secretsHelp": "这里只记录宿主需要配置的凭据名称和用途。实际密钥必须通过宿主应用凭据服务提供,不能写入设计文件。如果服务不需要密钥,可以保持为空。",
|
|
17
19
|
"secret": "凭据",
|
|
18
|
-
"secretName": "
|
|
20
|
+
"secretName": "凭据名称或配置项",
|
|
19
21
|
"secretDescription": "用途说明",
|
|
20
22
|
"prompt": "使用方法",
|
|
21
23
|
"promptHelp": "告诉 Agent 何时使用这个连接、需要完成什么,以及应该返回哪些结果。",
|
|
@@ -7,7 +7,23 @@ initial_values: {schema_version: 8}
|
|
|
7
7
|
empty_description: $t:empty
|
|
8
8
|
sections:
|
|
9
9
|
- id: integrations
|
|
10
|
-
form:
|
|
10
|
+
form:
|
|
11
|
+
header: {variant: detail, title: {field: title, editable: true}}
|
|
12
|
+
body:
|
|
13
|
+
- kind: group
|
|
14
|
+
title: $t:connectionDetails
|
|
15
|
+
items:
|
|
16
|
+
- {kind: field, field: description}
|
|
17
|
+
- {kind: field, field: url}
|
|
18
|
+
- kind: group
|
|
19
|
+
title: $t:secrets
|
|
20
|
+
items:
|
|
21
|
+
- {kind: field, field: secrets, label: visually_hidden}
|
|
22
|
+
- kind: group
|
|
23
|
+
title: $t:usageAndNotes
|
|
24
|
+
items:
|
|
25
|
+
- {kind: field, field: prompt_content}
|
|
26
|
+
- {kind: field, field: business_rules}
|
|
11
27
|
title: $t:integrations
|
|
12
28
|
item_name: $t:integration
|
|
13
29
|
order: integration_order
|
|
@@ -46,7 +62,7 @@ fields:
|
|
|
46
62
|
order_field: secret_order
|
|
47
63
|
max_rows: 10
|
|
48
64
|
columns:
|
|
49
|
-
- {key: name, label: '$t:secretName', control: text
|
|
65
|
+
- {key: name, label: '$t:secretName', control: text}
|
|
50
66
|
- {key: description, label: '$t:secretDescription', control: text}
|
|
51
67
|
applies_to: [integrations]
|
|
52
68
|
- key: prompt_content
|
|
@@ -7,6 +7,8 @@
|
|
|
7
7
|
"newNotification": "New notification 1",
|
|
8
8
|
"newNotificationNumbered": "New notification {index}",
|
|
9
9
|
"title": "Notification name",
|
|
10
|
+
"deliveryGroup": "Notification delivery",
|
|
11
|
+
"messageAndAction": "Message and action",
|
|
10
12
|
"trigger": "Trigger",
|
|
11
13
|
"recipients": "Recipients",
|
|
12
14
|
"channels": "Channels",
|
|
@@ -14,11 +14,17 @@ sections:
|
|
|
14
14
|
reorder: false
|
|
15
15
|
header: {variant: detail, title: {field: title, editable: true}}
|
|
16
16
|
body:
|
|
17
|
-
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
17
|
+
- kind: group
|
|
18
|
+
title: $t:deliveryGroup
|
|
19
|
+
items:
|
|
20
|
+
- {kind: field, field: trigger}
|
|
21
|
+
- {kind: field, field: recipients}
|
|
22
|
+
- {kind: field, field: channels}
|
|
23
|
+
- kind: group
|
|
24
|
+
title: $t:messageAndAction
|
|
25
|
+
items:
|
|
26
|
+
- {kind: field, field: message}
|
|
27
|
+
- {kind: field, field: action_target}
|
|
22
28
|
create:
|
|
23
29
|
id_field: id
|
|
24
30
|
defaults: {title: '', channels: [in_app]}
|
|
@@ -30,7 +36,13 @@ sections:
|
|
|
30
36
|
fields:
|
|
31
37
|
- {key: title, label: $t:title, control: text, required: true, applies_to: [notifications]}
|
|
32
38
|
- {key: trigger, label: $t:trigger, control: textarea, required: true, applies_to: [notifications]}
|
|
33
|
-
-
|
|
39
|
+
- key: recipients
|
|
40
|
+
label: $t:recipients
|
|
41
|
+
control: token_list
|
|
42
|
+
token_add_mode: menu
|
|
43
|
+
required: true
|
|
44
|
+
options_from_panel: {panel_type: role_access, section_id: roles}
|
|
45
|
+
applies_to: [notifications]
|
|
34
46
|
- key: channels
|
|
35
47
|
required: true
|
|
36
48
|
label: $t:channels
|
|
@@ -30,5 +30,16 @@
|
|
|
30
30
|
"members": "Pages in group",
|
|
31
31
|
"map": "Page map",
|
|
32
32
|
"guidance": "Walk through the user task and check that page content, actions and navigation form a coherent path without gaps or dead ends. Map positions and groups only organize the view.",
|
|
33
|
-
"shared": "Shared
|
|
33
|
+
"shared": "Shared styles",
|
|
34
|
+
"sharedLayout": "Layout",
|
|
35
|
+
"sharedBrand": "Brand identity",
|
|
36
|
+
"sharedBrandName": "Brand name",
|
|
37
|
+
"sharedBrandDescription": "Appearance",
|
|
38
|
+
"sharedMarkRef": "Mark reference",
|
|
39
|
+
"sharedNavigation": "Navigation",
|
|
40
|
+
"sharedNavigationGroup": "Navigation group",
|
|
41
|
+
"sharedIconRef": "Icon reference",
|
|
42
|
+
"sharedNavigationId": "Navigation ID",
|
|
43
|
+
"sharedComponents": "Shared components",
|
|
44
|
+
"sharedSource": "Visual style source"
|
|
34
45
|
}
|
|
@@ -30,5 +30,16 @@
|
|
|
30
30
|
"members": "分区内页面",
|
|
31
31
|
"map": "页面地图",
|
|
32
32
|
"guidance": "从用户要完成的任务出发,检查页面内容、操作和跳转是否连贯,有没有遗漏或死路;地图位置和分区只影响组织方式。",
|
|
33
|
-
"shared": "
|
|
33
|
+
"shared": "公共样式",
|
|
34
|
+
"sharedLayout": "布局",
|
|
35
|
+
"sharedBrand": "品牌标识",
|
|
36
|
+
"sharedBrandName": "品牌名称",
|
|
37
|
+
"sharedBrandDescription": "外观说明",
|
|
38
|
+
"sharedMarkRef": "标识引用",
|
|
39
|
+
"sharedNavigation": "导航",
|
|
40
|
+
"sharedNavigationGroup": "导航分组",
|
|
41
|
+
"sharedIconRef": "图标引用",
|
|
42
|
+
"sharedNavigationId": "导航编号",
|
|
43
|
+
"sharedComponents": "共享组件",
|
|
44
|
+
"sharedSource": "视觉风格来源"
|
|
34
45
|
}
|
|
@@ -55,4 +55,26 @@ ui:
|
|
|
55
55
|
edges: {path: connections, order: connection_order, source: source_page_id, target: target_page_id, label: label, hotspot: source_element_id, hotspot_label: source_element_label, context: preview_context, new_label: '$t:newConnectionLabel'}
|
|
56
56
|
frames: {path: canvas_sections, label: label, members: page_ids, position: canvas_position, size: canvas_size}
|
|
57
57
|
children:
|
|
58
|
-
-
|
|
58
|
+
- component: structured_data
|
|
59
|
+
id: shared-specification
|
|
60
|
+
title: $t:shared
|
|
61
|
+
source: common_spec
|
|
62
|
+
read_fields:
|
|
63
|
+
- {key: layout, label: '$t:sharedLayout'}
|
|
64
|
+
- key: logo
|
|
65
|
+
label: $t:sharedBrand
|
|
66
|
+
fields:
|
|
67
|
+
- {key: name, label: '$t:sharedBrandName'}
|
|
68
|
+
- {key: description, label: '$t:sharedBrandDescription'}
|
|
69
|
+
- {key: mark_ref, label: '$t:sharedMarkRef', collapsed: true}
|
|
70
|
+
- key: navigation
|
|
71
|
+
label: $t:sharedNavigation
|
|
72
|
+
item_label_field: label
|
|
73
|
+
fields:
|
|
74
|
+
- {key: target_page_id, label: '$t:target', options_from_section: pages}
|
|
75
|
+
- {key: group, label: '$t:sharedNavigationGroup'}
|
|
76
|
+
- {key: icon_ref, label: '$t:sharedIconRef', collapsed: true}
|
|
77
|
+
- {key: id, label: '$t:sharedNavigationId', collapsed: true}
|
|
78
|
+
- {key: shared_components, label: '$t:sharedComponents'}
|
|
79
|
+
- {key: visual_pattern_refs, label: '$t:patterns', collapsed: true}
|
|
80
|
+
- {key: source, label: '$t:sharedSource', collapsed: true}
|
|
@@ -13,9 +13,9 @@
|
|
|
13
13
|
"criteria": "What counts as passing?",
|
|
14
14
|
"criteriaHelp": "Use observable or measurable criteria; avoid vague statements such as “a good experience”.",
|
|
15
15
|
"criteriaExample": "For example: an order number is created and Pending is displayed",
|
|
16
|
-
"verification": "How will this be verified?
|
|
16
|
+
"verification": "How will this be verified?",
|
|
17
17
|
"verificationHelp": "Add a method only when it is not obvious. Test code is not required.",
|
|
18
18
|
"workspace": "Acceptance criteria",
|
|
19
|
-
"group": "Group
|
|
19
|
+
"group": "Group",
|
|
20
20
|
"groupExample": "For example: Business flow, AI capabilities"
|
|
21
21
|
}
|
|
@@ -13,9 +13,9 @@
|
|
|
13
13
|
"criteria": "怎样才算通过?",
|
|
14
14
|
"criteriaHelp": "写出用户能看到、系统能确认或可以衡量的标准,避免“体验良好”一类模糊描述。",
|
|
15
15
|
"criteriaExample": "例如:生成订单号并显示待处理",
|
|
16
|
-
"verification": "
|
|
16
|
+
"verification": "如何确认?",
|
|
17
17
|
"verificationHelp": "只有检查方法不明显时才补充,不需要写测试代码。",
|
|
18
18
|
"workspace": "验收标准",
|
|
19
|
-
"group": "
|
|
19
|
+
"group": "分组",
|
|
20
20
|
"groupExample": "例如:业务流程、AI 能力"
|
|
21
21
|
}
|
|
@@ -51,13 +51,16 @@ fields:
|
|
|
51
51
|
description: $t:verificationHelp
|
|
52
52
|
applies_to: [requirements]
|
|
53
53
|
ui:
|
|
54
|
-
component:
|
|
55
|
-
guidance:
|
|
54
|
+
component: record_board
|
|
55
|
+
guidance: $t:guidance
|
|
56
56
|
sidebar_icon: clipboard-check
|
|
57
|
-
navigation_layout: list
|
|
58
|
-
navigation_group_by: group
|
|
59
57
|
id: acceptance-workspace
|
|
60
58
|
title: $t:workspace
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
59
|
+
source: requirements
|
|
60
|
+
board:
|
|
61
|
+
label: title
|
|
62
|
+
description: pass_criteria
|
|
63
|
+
group: group
|
|
64
|
+
body_fields: [condition, pass_criteria, verification]
|
|
65
|
+
overview: false
|
|
66
|
+
detail_fields: []
|
|
@@ -9,8 +9,8 @@
|
|
|
9
9
|
"newRoleNumbered": "New role {index}",
|
|
10
10
|
"title": "Role name",
|
|
11
11
|
"titleExample": "For example: sales manager",
|
|
12
|
-
"assignment": "
|
|
13
|
-
"assignmentHelp": "Choose how this role is
|
|
12
|
+
"assignment": "How is this role assigned?",
|
|
13
|
+
"assignmentHelp": "Choose how this role is assigned. If you select Other, describe how the role is assigned.",
|
|
14
14
|
"assignmentExample": "For example: granted on invitation and revoked on leaving the project",
|
|
15
15
|
"registered": "Registered users",
|
|
16
16
|
"granted": "Granted by an administrator",
|
|
@@ -19,9 +19,9 @@
|
|
|
19
19
|
"deny": "Denies",
|
|
20
20
|
"capability": "Capability",
|
|
21
21
|
"capabilityExample": "For example: approve orders or view project members",
|
|
22
|
-
"condition": "Applies when
|
|
22
|
+
"condition": "Applies when",
|
|
23
23
|
"conditionExample": "For example: only customers assigned to this person and still being followed up",
|
|
24
|
-
"requirements": "Before performing the action
|
|
24
|
+
"requirements": "Before performing the action",
|
|
25
25
|
"confirm": "Confirm again",
|
|
26
26
|
"reauthenticate": "Verify identity again",
|
|
27
27
|
"other": "Other",
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
"inherits": "Inherits permissions",
|
|
34
34
|
"childRole": "Child role",
|
|
35
35
|
"parentRole": "Source role",
|
|
36
|
-
"inheritanceReason": "Evidence for inheritance
|
|
36
|
+
"inheritanceReason": "Evidence for inheritance",
|
|
37
37
|
"addChildRole": "Add child role",
|
|
38
38
|
"guidance": "Check what each role can do and which data it can access, looking for excessive or missing permissions. Set one source role only when reuse is needed; grants remain independent.",
|
|
39
39
|
"graphHint": "Connect the child to its source role. Return to details for local permissions and read-only inherited sources.",
|
|
@@ -9,8 +9,8 @@
|
|
|
9
9
|
"newRoleNumbered": "新角色 {index}",
|
|
10
10
|
"title": "角色名称",
|
|
11
11
|
"titleExample": "例如:销售经理",
|
|
12
|
-
"assignment": "
|
|
13
|
-
"assignmentHelp": "
|
|
12
|
+
"assignment": "如何授予这个角色?",
|
|
13
|
+
"assignmentHelp": "选择角色的授予方式;选择“其他”时,请填写授予规则。",
|
|
14
14
|
"assignmentExample": "例如:受邀加入项目后拥有,离开项目时失去",
|
|
15
15
|
"registered": "注册用户",
|
|
16
16
|
"granted": "由管理员授予",
|
|
@@ -19,9 +19,9 @@
|
|
|
19
19
|
"deny": "禁止",
|
|
20
20
|
"capability": "权限内容",
|
|
21
21
|
"capabilityExample": "例如:审批订单、查看项目成员",
|
|
22
|
-
"condition": "
|
|
22
|
+
"condition": "适用条件",
|
|
23
23
|
"conditionExample": "例如:仅限自己负责的客户,且客户仍在跟进中",
|
|
24
|
-
"requirements": "
|
|
24
|
+
"requirements": "操作前需要",
|
|
25
25
|
"confirm": "再次确认",
|
|
26
26
|
"reauthenticate": "重新验证身份",
|
|
27
27
|
"other": "其他",
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
"inherits": "继承权限",
|
|
34
34
|
"childRole": "子角色",
|
|
35
35
|
"parentRole": "来源角色",
|
|
36
|
-
"inheritanceReason": "
|
|
36
|
+
"inheritanceReason": "继承依据",
|
|
37
37
|
"addChildRole": "添加子角色",
|
|
38
38
|
"guidance": "检查各角色能做什么、作用于哪些数据,是否存在权限过多或遗漏;仅在确需复用时指定一个来源角色,授予规则仍独立。",
|
|
39
39
|
"graphHint": "从子角色连向来源角色;返回详情查看本角色权限及只读的继承来源。",
|
|
@@ -58,8 +58,10 @@ The question panel remains the interaction surface: put a concise proposal,
|
|
|
58
58
|
its useful context and the decision to make in the card's `prompt`, with
|
|
59
59
|
appropriate `choices` or free-text input. Do not put the proposed answer into
|
|
60
60
|
the user's `answer` or use `detail` as a substitute for visible question text.
|
|
61
|
-
|
|
62
|
-
user-supplied explanation
|
|
61
|
+
Free-text questions have one response field: `answer`. Keep their `detail`
|
|
62
|
+
empty; any user-supplied explanation belongs with that answer. Choice questions
|
|
63
|
+
may use `detail` for an actual user-supplied explanation or a faithful summary
|
|
64
|
+
of explicit user evidence. Do not generate a second response area for free text.
|
|
63
65
|
Put your proposed scope, rationale, examples and unresolved questions in
|
|
64
66
|
`prompt`, not in user-response fields. Your earlier proposal, a Producer brief,
|
|
65
67
|
and another Agent's summary do not establish that the user said or confirmed
|
|
@@ -60,8 +60,11 @@ overview from representative entry points and user journeys, then include only
|
|
|
60
60
|
material supporting context. Do not ask the user how many Bundles to scan, or
|
|
61
61
|
replace the overview with component, SEO, billing or deployment inventories.
|
|
62
62
|
|
|
63
|
-
Put a concise source-supported answer in `answer
|
|
64
|
-
source locations, observation versus supported inference
|
|
63
|
+
Put a concise source-supported answer in `answer`. For a free-text question,
|
|
64
|
+
keep source locations, observation versus supported inference and remaining
|
|
65
|
+
limits with that answer; leave `detail` empty. A choice question may use its
|
|
66
|
+
optional `detail` for those qualifications. Free text has no separate supplement
|
|
67
|
+
input or historical supplement display.
|
|
65
68
|
A supported interpretation may explain the overall product, but label it as
|
|
66
69
|
inferred, not stated user intent. Do not infer commercial positioning or target
|
|
67
70
|
audience merely from the presence of an admin route or a technical capability.
|
|
@@ -70,8 +73,9 @@ Reconstruction prefill is reviewable, not user confirmation; it is not a license
|
|
|
70
73
|
to guess answers during ordinary questioning.
|
|
71
74
|
|
|
72
75
|
If evidence supports part of the answer, retain that part and identify remaining
|
|
73
|
-
unknowns in
|
|
74
|
-
mask a separate unknown. Leave genuinely
|
|
76
|
+
unknowns in the same answer (or `detail` for a choice). Split independent topics
|
|
77
|
+
rather than let one known fact mask a separate unknown. Leave genuinely
|
|
78
|
+
unsupported answers empty. Missing
|
|
75
79
|
information in one summary document is not proof of absence in the repository:
|
|
76
80
|
inspect a relevant source when the missing fact matters. Preserve user answers
|
|
77
81
|
and explain conflicting source evidence without replacing their decisions.
|
|
@@ -79,8 +83,9 @@ and explain conflicting source evidence without replacing their decisions.
|
|
|
79
83
|
Before closing, read the cards as a whole: can a reader understand the product's
|
|
80
84
|
purpose, intended users, main scenario and scope to the extent the source permits?
|
|
81
85
|
Are later details supporting that account rather than displacing it? Check that
|
|
82
|
-
`detail` does not contain a verified answer
|
|
83
|
-
remain honest, and
|
|
86
|
+
free-text `detail` is empty, choice `detail` does not contain a verified answer
|
|
87
|
+
missing from `answer`, unknowns remain honest, and each inference is supported.
|
|
88
|
+
This is an Agent self-check,
|
|
84
89
|
not a new validator or host gate.
|
|
85
90
|
|
|
86
91
|
## Fixed-card contract
|
|
@@ -172,7 +177,7 @@ existing panel, carry the fixed-card definition and prior user decisions
|
|
|
172
177
|
forward into the complete canonical state without adding them to the new round.
|
|
173
178
|
|
|
174
179
|
- `value` is the stable selection token. `label` is visible text. Answers always store `value`, never a label, recommendation suffix, or invented internal token.
|
|
175
|
-
- `single` stores one `value`; `multiple` stores comma-separated `value`s; `text` stores its
|
|
180
|
+
- `single` stores one `value`; `multiple` stores comma-separated `value`s; `text` stores its complete free-text response in `answer`, has no choices and leaves `detail` empty. The answer, including useful qualifications, is read and edited in one place.
|
|
176
181
|
- `recommended` is the only recommendation mechanism. Do not add a question-level `suggest` field or append `(推荐)` to stored labels.
|
|
177
182
|
- Dynamic-card `round` controls the FE's round grouping; the latest round renders
|
|
178
183
|
first. Assign a nonnegative integer explicitly: use 0 for the first dynamic
|
|
@@ -183,7 +188,10 @@ forward into the complete canonical state without adding them to the new round.
|
|
|
183
188
|
values to 0 and truncates fractions for grouping only. Preserve those saved
|
|
184
189
|
values on unrelated edits rather than silently renumbering history. Fixed
|
|
185
190
|
cards do not participate in round-number allocation.
|
|
186
|
-
- `detail` records the user's optional explanation,
|
|
191
|
+
- For a choice question, `detail` records the user's optional explanation,
|
|
192
|
+
constraints or source/provenance notes in reconstruction; it supplements rather
|
|
193
|
+
than duplicates the selection. It is not a second field for free-text questions.
|
|
194
|
+
Preserve unrelated saved data without automatic answer conversion. When the user answers
|
|
187
195
|
a choice question with wording that does not match a rendered option, keep
|
|
188
196
|
`answer` empty and preserve the exact wording in `detail`; never replace it
|
|
189
197
|
with a recommended option. On dynamic cards, `rejected` means the user
|
|
@@ -66,8 +66,8 @@ properties:
|
|
|
66
66
|
# in reconstruction belong here too, without implying user confirmation.
|
|
67
67
|
# Leave genuinely unknown answers empty; never promote a proposal as an answer.
|
|
68
68
|
answer: { type: string }
|
|
69
|
-
# Optional
|
|
70
|
-
#
|
|
69
|
+
# Optional choice-question explanation, constraints or source locations.
|
|
70
|
+
# Text questions use only answer and leave detail empty. A choice response outside the
|
|
71
71
|
# available options may be preserved here without inventing a selection.
|
|
72
72
|
# Supplementary detail alone does not mark the question answered.
|
|
73
73
|
detail: { type: string }
|
|
@@ -291,6 +291,10 @@ enters Git history, G/R/A owns ongoing cross-Bundle drift checks.
|
|
|
291
291
|
|
|
292
292
|
### 4. Finalize inside the same agentic loop
|
|
293
293
|
|
|
294
|
+
Keep `<html lang>` in the authored document's language. Fixed visual labels use
|
|
295
|
+
that language as described in the shared contract; source business names remain
|
|
296
|
+
unchanged and switching the Host UI does not translate the document.
|
|
297
|
+
|
|
294
298
|
Once prose and provenance are complete, run the shared contract’s file-mode finalization against the already-written HTML. Do not rewrite the document or transport visual bytes through model context.
|
|
295
299
|
|
|
296
300
|
If the script reports diagnostics, preserve valid content, apply the smallest
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"guidance": "Check that the PRD reflects the agreed scope and key decisions. Follow source labels back to the original design when something is wrong, or request a revision in the conversation.",
|
|
3
3
|
"bundleDescription": "- **Capability**: generate or update one development-ready Web App PRD from current design evidence and user material.\n- **Resolves**: the delivery gap where product, design, engineering, test, and operations still lack one shared implementation-ready specification.\n- **Candidate when**: the user asks to generate, export, update, or inspect a complete PRD.\n- **Do not infer**: PRD assembly is an on-demand delivery action, not a required design gate and not permission to mutate owner Bundles.\n- **Output**: one stable canonical `prd.html`; Git retains history.",
|
|
4
|
-
"contents": "Contents", "empty": "No PRD yet. Ask in the conversation to generate or
|
|
5
|
-
"pending": "Pending confirmation", "legend": "Purple
|
|
4
|
+
"contents": "Contents", "empty": "No PRD yet. Ask the agent in the conversation to generate or update the complete document.",
|
|
5
|
+
"pending": "Pending confirmation", "legend": "Purple markers show provisional content added to fill gaps. It still needs your confirmation.",
|
|
6
6
|
"questions": "Requirements", "research": "Research", "functions": "Functions", "flows": "Flows", "style": "Design style", "data": "Business data", "rules": "Business rules", "access": "Roles and access", "integration": "Integrations", "notifications": "Notifications", "quality": "Quality and acceptance", "pages": "Pages", "whiteboard": "Whiteboard", "user": "User input", "upload": "User material"
|
|
7
7
|
}
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"guidance": "核对 PRD 是否准确表达已确认的范围和关键决策;发现偏差时通过来源标签回到原设计,或在对话中提出修订。",
|
|
3
3
|
"bundleDescription": "- **能力**:从当前设计证据和用户材料生成或修改一份可直接用于研发的完整 Web App PRD。\n- **解决**:产品仍缺少一份各交付角色都能直接理解、审阅和实施的统一需求文档。\n- **适用时机**:用户要求生成、导出、修改或查看完整 PRD。\n- **不要推断**:PRD 整合是按需交付动作,不是必经设计关卡,也不允许修改证据所属 Bundle。\n- **输出**:唯一稳定的 canonical `prd.html`;Git 保留历史修订。",
|
|
4
4
|
"contents": "文档目录", "empty": "暂无 PRD。可以在对话中要求生成或修订完整 PRD。",
|
|
5
|
-
"pending": "待确认", "legend": "
|
|
5
|
+
"pending": "待确认", "legend": "紫色标记表示为补齐文档而暂拟的内容,仍需你确认。",
|
|
6
6
|
"questions": "需求问题", "research": "调研", "functions": "功能模块", "flows": "流程设计", "style": "设计风格", "data": "业务数据", "rules": "业务规则", "access": "角色权限", "integration": "集成设计", "notifications": "通知设计", "quality": "质量验收", "pages": "页面设计", "whiteboard": "自由白板", "user": "用户说明", "upload": "用户材料"
|
|
7
7
|
}
|
|
@@ -115,6 +115,12 @@ use file-mode scripts for transforms and final checks.
|
|
|
115
115
|
|
|
116
116
|
## File-mode finalization
|
|
117
117
|
|
|
118
|
+
Keep the document's `<html lang>` aligned with its authored language. The visual
|
|
119
|
+
script uses this existing language for fixed map captions, navigation legends
|
|
120
|
+
and empty-state labels (`en`/`en-*` use English; existing Chinese/default output
|
|
121
|
+
is retained otherwise). It does not translate source business text or follow
|
|
122
|
+
the Host UI language. Materialization and validation use the same document language.
|
|
123
|
+
|
|
118
124
|
Once the prose and provenance are complete, process the already-written HTML;
|
|
119
125
|
do not rewrite it for finalization. First call `run_skill_script` with
|
|
120
126
|
`path: "prd.mjs"`, `args: ["materialize-visuals"]`, and both `input_file` and
|
|
@@ -61,6 +61,16 @@ const compactLabel = (value, limit = 24) => {
|
|
|
61
61
|
return text.length <= limit ? text : `${text.slice(0, limit - 1)}…`
|
|
62
62
|
}
|
|
63
63
|
|
|
64
|
+
const VISUAL_COPY = {
|
|
65
|
+
zh: { otherFunctions: '其他功能', noFunctions: '暂无功能', functionRoot: '产品功能结构', noPages: '暂无页面结构', functionMap: '功能范围图', pageMap: '页面关系图', primaryNavigation: '主要导航', relatedNavigation: '关联跳转' },
|
|
66
|
+
en: { otherFunctions: 'Other functions', noFunctions: 'No functions yet', functionRoot: 'Product functions', noPages: 'No page structure yet', functionMap: 'Function scope map', pageMap: 'Page map', primaryNavigation: 'Main navigation', relatedNavigation: 'Related navigation' },
|
|
67
|
+
}
|
|
68
|
+
function visualCopy(html) {
|
|
69
|
+
// The authored document already owns its language; Host UI never translates facts.
|
|
70
|
+
const tag = /<html\b[^>]*>/iu.exec(html)?.[0] ?? ''
|
|
71
|
+
return /^en(?:-|$)/iu.test((attribute(tag, 'lang') ?? '').trim()) ? VISUAL_COPY.en : VISUAL_COPY.zh
|
|
72
|
+
}
|
|
73
|
+
|
|
64
74
|
function parseSourceJson(sourceFiles, path, diagnostics) {
|
|
65
75
|
const text = sourceFiles[path]
|
|
66
76
|
if (typeof text !== 'string') return undefined
|
|
@@ -160,11 +170,11 @@ function svgDocument(content, viewBox) {
|
|
|
160
170
|
return `<svg class="prd-visual-svg" xmlns="http://www.w3.org/2000/svg" viewBox="${viewBox}" role="img"><defs><marker id="prd-arrow" viewBox="0 0 10 10" refX="8" refY="5" markerWidth="6" markerHeight="6" orient="auto-start-reverse"><path d="M 0 0 L 10 5 L 0 10 z" fill="#64748b"/></marker></defs>${content}</svg>`
|
|
161
171
|
}
|
|
162
172
|
|
|
163
|
-
function functionMapSvg(state) {
|
|
173
|
+
function functionMapSvg(state, copy) {
|
|
164
174
|
const active = orderedRecords(state.functions).filter(([, item]) => item.rejected !== true)
|
|
165
175
|
const groups = new Map()
|
|
166
176
|
for (const [id, item] of active) {
|
|
167
|
-
const epic = String(item.function_epic ?? '').trim() ||
|
|
177
|
+
const epic = String(item.function_epic ?? '').trim() || copy.otherFunctions
|
|
168
178
|
if (!groups.has(epic)) groups.set(epic, [])
|
|
169
179
|
groups.get(epic).push([id, item])
|
|
170
180
|
}
|
|
@@ -175,7 +185,7 @@ function functionMapSvg(state) {
|
|
|
175
185
|
const branches = []
|
|
176
186
|
let cursorY = top
|
|
177
187
|
if (groups.size === 0) {
|
|
178
|
-
branches.push({ epic:
|
|
188
|
+
branches.push({ epic: copy.noFunctions, functions: [], color: palette[0], centerY: 68 })
|
|
179
189
|
cursorY = 108
|
|
180
190
|
} else for (const [index, [epic, functions]] of [...groups].entries()) {
|
|
181
191
|
const leaves = functions.map(([id, item], leafIndex) => ({ id, item, y: cursorY + leafIndex * rowHeight }))
|
|
@@ -190,7 +200,7 @@ function functionMapSvg(state) {
|
|
|
190
200
|
parts.push(`<path d="M ${rootX + rootWidth} ${rootY + 34} C 238 ${rootY + 34}, 246 ${branch.centerY}, ${epicX} ${branch.centerY}" fill="none" stroke="${branch.color}" stroke-width="3"/>`)
|
|
191
201
|
for (const leaf of branch.functions) parts.push(`<path d="M ${epicX + epicWidth} ${branch.centerY} C 520 ${branch.centerY}, 530 ${leaf.y + 18}, ${leafX} ${leaf.y + 18}" fill="none" stroke="${branch.color}" stroke-width="2" opacity="0.72"/>`)
|
|
192
202
|
}
|
|
193
|
-
parts.push(`<rect x="${rootX}" y="${rootY}" width="${rootWidth}" height="68" rx="18" fill="#4c1d95" stroke="#4c1d95"/><text x="${rootX + rootWidth / 2}" y="${rootY + 41}" text-anchor="middle" font-family="system-ui,sans-serif" font-size="17" font-weight="700" fill="#ffffff">${escapeHtml(compactLabel(state.title
|
|
203
|
+
parts.push(`<rect x="${rootX}" y="${rootY}" width="${rootWidth}" height="68" rx="18" fill="#4c1d95" stroke="#4c1d95"/><text x="${rootX + rootWidth / 2}" y="${rootY + 41}" text-anchor="middle" font-family="system-ui,sans-serif" font-size="17" font-weight="700" fill="#ffffff">${escapeHtml(state.title == null ? copy.functionRoot : compactLabel(state.title, 16))}</text>`)
|
|
194
204
|
for (const branch of branches) {
|
|
195
205
|
parts.push(`<rect x="${epicX}" y="${branch.centerY - 24}" width="${epicWidth}" height="48" rx="14" fill="${branch.color}" stroke="${branch.color}"/><text x="${epicX + epicWidth / 2}" y="${branch.centerY + 5}" text-anchor="middle" font-family="system-ui,sans-serif" font-size="15" font-weight="700" fill="#ffffff">${escapeHtml(compactLabel(branch.epic, 18))}</text>`)
|
|
196
206
|
for (const leaf of branch.functions) {
|
|
@@ -202,7 +212,7 @@ function functionMapSvg(state) {
|
|
|
202
212
|
return svgDocument(parts.join(''), `0 0 ${width} ${height}`)
|
|
203
213
|
}
|
|
204
214
|
|
|
205
|
-
function pageMapSvg(state) {
|
|
215
|
+
function pageMapSvg(state, copy) {
|
|
206
216
|
const pages = record(state.pages)
|
|
207
217
|
const ordered = orderedRecords(pages, state.page_order)
|
|
208
218
|
const ids = ordered.map(([id]) => id)
|
|
@@ -254,7 +264,7 @@ function pageMapSvg(state) {
|
|
|
254
264
|
const maxDepth = Math.max(0, ...depths.values())
|
|
255
265
|
const height = top + (maxDepth + 1) * cardHeight + maxDepth * verticalGap + 72
|
|
256
266
|
const parts = []
|
|
257
|
-
parts.push(
|
|
267
|
+
parts.push(`<path d="M 24 18 H 60" stroke="#6d28d9" stroke-width="3" marker-end="url(#prd-arrow)"/><text x="70" y="22" font-family="system-ui,sans-serif" font-size="12" fill="#475569">${escapeHtml(copy.primaryNavigation)}</text><path d="M 170 18 H 206" stroke="#94a3b8" stroke-width="1.5" stroke-dasharray="5 5"/><text x="216" y="22" font-family="system-ui,sans-serif" font-size="12" fill="#475569">${escapeHtml(copy.relatedNavigation)}</text>`)
|
|
258
268
|
for (const edge of connections.filter(edge => !primaryEdges.has(edge.id))) {
|
|
259
269
|
const from = positions.get(edge.source), to = positions.get(edge.target)
|
|
260
270
|
if (from === undefined || to === undefined) continue
|
|
@@ -275,7 +285,7 @@ function pageMapSvg(state) {
|
|
|
275
285
|
const isRoot = id === primaryRoot
|
|
276
286
|
parts.push(`<g data-prd-page-id="${escapeHtml(id)}"><rect x="${position.x}" y="${position.y}" width="${cardWidth}" height="${cardHeight}" rx="12" fill="${isRoot ? '#f5f3ff' : '#ffffff'}" stroke="${isRoot ? '#6d28d9' : '#94a3b8'}" stroke-width="${isRoot ? '2' : '1.2'}"/><text x="${position.x + 14}" y="${position.y + 31}" font-family="system-ui,sans-serif" font-size="14" font-weight="700" fill="#0f172a">${escapeHtml(compactLabel(page.name ?? id, 14))}</text><rect x="${position.x + 14}" y="${position.y + 45}" width="${Math.max(48, typeLabel.length * 8 + 16)}" height="20" rx="10" fill="#f1f5f9"/><text x="${position.x + 22}" y="${position.y + 59}" font-family="system-ui,sans-serif" font-size="10.5" fill="#475569">${escapeHtml(typeLabel)}</text></g>`)
|
|
277
287
|
}
|
|
278
|
-
if (ordered.length === 0) parts.push(
|
|
288
|
+
if (ordered.length === 0) parts.push(`<rect x="48" y="48" width="864" height="80" rx="12" fill="#f8fafc" stroke="#cbd5e1"/><text x="480" y="96" text-anchor="middle" font-family="system-ui,sans-serif" font-size="14" fill="#64748b">${escapeHtml(copy.noPages)}</text>`)
|
|
279
289
|
return svgDocument(parts.join(''), `0 0 ${width} ${height}`)
|
|
280
290
|
}
|
|
281
291
|
|
|
@@ -304,9 +314,9 @@ function htmlPreview(item) {
|
|
|
304
314
|
return `<figure class="prd-visual-figure" data-prd-source-ref="${escapeHtml(item.path)}" data-prd-source-digest="${digest(item.content)}" data-prd-projection-digest="${digest(item.screenshot)}"${dependencies}><figcaption class="prd-visual-caption">${escapeHtml(item.title)}</figcaption><img class="prd-page-image" loading="lazy" alt="${escapeHtml(item.title)}" width="${PAGE_VIEWPORT.width * PAGE_VIEWPORT.deviceScaleFactor}" height="${PAGE_VIEWPORT.height * PAGE_VIEWPORT.deviceScaleFactor}" src="${item.screenshot}"></figure>`
|
|
305
315
|
}
|
|
306
316
|
|
|
307
|
-
function renderVisual(item) {
|
|
308
|
-
if (item.kind === 'function-map') return `<figure class="prd-visual-figure" data-prd-source-ref="${escapeHtml(item.path)}"><figcaption class="prd-visual-caption"
|
|
309
|
-
if (item.kind === 'page-map') return `<figure class="prd-visual-figure" data-prd-source-ref="${escapeHtml(item.path)}"><figcaption class="prd-visual-caption"
|
|
317
|
+
function renderVisual(item, copy) {
|
|
318
|
+
if (item.kind === 'function-map') return `<figure class="prd-visual-figure" data-prd-source-ref="${escapeHtml(item.path)}"><figcaption class="prd-visual-caption">${escapeHtml(copy.functionMap)}</figcaption>${functionMapSvg(item.state, copy)}</figure>`
|
|
319
|
+
if (item.kind === 'page-map') return `<figure class="prd-visual-figure" data-prd-source-ref="${escapeHtml(item.path)}"><figcaption class="prd-visual-caption">${escapeHtml(copy.pageMap)}</figcaption>${pageMapSvg(item.state, copy)}</figure>`
|
|
310
320
|
if (item.kind === 'bpmn') {
|
|
311
321
|
if (typeof item.renderedSvg !== 'string') throw new Error(`BPMN visual ${JSON.stringify(item.path)} has not been rendered`)
|
|
312
322
|
return `<figure class="prd-visual-figure" data-prd-source-ref="${escapeHtml(item.path)}" data-prd-source-digest="${digest(item.content)}" data-prd-projection-digest="${digest(item.renderedSvg)}"><figcaption class="prd-visual-caption">${escapeHtml(item.title)}</figcaption>${item.renderedSvg}</figure>`
|
|
@@ -323,7 +333,7 @@ function replaceVisualRegion(html, name, content) {
|
|
|
323
333
|
|
|
324
334
|
const DISTRIBUTED_VISUAL_REGIONS = new Set(['all_bpmn', 'all_page_prototypes'])
|
|
325
335
|
|
|
326
|
-
function replaceDistributedVisualRegion(html, name, items, diagnostics) {
|
|
336
|
+
function replaceDistributedVisualRegion(html, name, items, diagnostics, copy) {
|
|
327
337
|
const regionExpression = new RegExp(`(<!--\\s*prd-visual:${name}:start\\s*-->)(?<body>[\\s\\S]*?)(<!--\\s*prd-visual:${name}:end\\s*-->)`, 'iu')
|
|
328
338
|
const region = regionExpression.exec(html)
|
|
329
339
|
if (region === null) throw new Error(`prd.html must keep one ordered ${name} visual region`)
|
|
@@ -336,7 +346,7 @@ function replaceDistributedVisualRegion(html, name, items, diagnostics) {
|
|
|
336
346
|
diagnostics.push(`visual region ${JSON.stringify(name)} must place exactly one inline visual reference for ${JSON.stringify(item.path)}`)
|
|
337
347
|
continue
|
|
338
348
|
}
|
|
339
|
-
body = body.replace(expression, (_match, start, end) => `${start}\n${renderVisual(item)}\n${end}`)
|
|
349
|
+
body = body.replace(expression, (_match, start, end) => `${start}\n${renderVisual(item, copy)}\n${end}`)
|
|
340
350
|
}
|
|
341
351
|
for (const match of body.matchAll(/<!--\s*prd-visual-item:(?<path>[A-Za-z0-9._/-]+):start\s*-->/giu)) {
|
|
342
352
|
const path = match.groups?.path ?? ''
|
|
@@ -346,6 +356,7 @@ function replaceDistributedVisualRegion(html, name, items, diagnostics) {
|
|
|
346
356
|
}
|
|
347
357
|
|
|
348
358
|
async function materializeVisuals(html, sourceFiles) {
|
|
359
|
+
const copy = visualCopy(html)
|
|
349
360
|
const { plan, diagnostics } = visualPlan(sourceFiles)
|
|
350
361
|
if (diagnostics.length > 0) return { html, diagnostics }
|
|
351
362
|
try {
|
|
@@ -365,8 +376,8 @@ async function materializeVisuals(html, sourceFiles) {
|
|
|
365
376
|
try {
|
|
366
377
|
for (const name of VISUAL_REGIONS) {
|
|
367
378
|
outputHtml = DISTRIBUTED_VISUAL_REGIONS.has(name)
|
|
368
|
-
? replaceDistributedVisualRegion(outputHtml, name, plan[name], diagnostics)
|
|
369
|
-
: replaceVisualRegion(outputHtml, name, plan[name].map(renderVisual).join('\n'))
|
|
379
|
+
? replaceDistributedVisualRegion(outputHtml, name, plan[name], diagnostics, copy)
|
|
380
|
+
: replaceVisualRegion(outputHtml, name, plan[name].map(item => renderVisual(item, copy)).join('\n'))
|
|
370
381
|
}
|
|
371
382
|
} catch (error) {
|
|
372
383
|
diagnostics.push(error instanceof Error ? error.message : String(error))
|
|
@@ -480,6 +491,7 @@ function protectedBlocks(body) {
|
|
|
480
491
|
}
|
|
481
492
|
|
|
482
493
|
function htmlDiagnostics(state, html, template, sourceFiles) {
|
|
494
|
+
const copy = visualCopy(html)
|
|
483
495
|
const diagnostics = []
|
|
484
496
|
const lower = html.toLowerCase()
|
|
485
497
|
if (!lower.includes('<html') || !lower.includes('</html>') || !lower.includes('<body') || !lower.includes('</body>')) diagnostics.push('prd.html must be a complete HTML document')
|
|
@@ -610,7 +622,7 @@ function htmlDiagnostics(state, html, template, sourceFiles) {
|
|
|
610
622
|
const expected = visual.plan[name] ?? []
|
|
611
623
|
const expectedRefs = expected.map(item => item.path)
|
|
612
624
|
if (!DISTRIBUTED_VISUAL_REGIONS.has(name) && !expected.some(item => item.kind === 'html')) {
|
|
613
|
-
const expectedMarkup = expected.map(renderVisual).join('\n')
|
|
625
|
+
const expectedMarkup = expected.map(item => renderVisual(item, copy)).join('\n')
|
|
614
626
|
if (region.trim() !== expectedMarkup.trim()) diagnostics.push(`visual region ${JSON.stringify(name)} does not match its deterministic owner projection`)
|
|
615
627
|
}
|
|
616
628
|
if (DISTRIBUTED_VISUAL_REGIONS.has(name)) {
|
|
@@ -661,7 +673,7 @@ function htmlDiagnostics(state, html, template, sourceFiles) {
|
|
|
661
673
|
if (attribute(figureTag, 'data-prd-projection-digest') !== digest(svg)) diagnostics.push(`BPMN visual ${JSON.stringify(ref)} projection integrity check failed`)
|
|
662
674
|
}
|
|
663
675
|
} else if (item !== undefined) {
|
|
664
|
-
const expectedSvg = item.kind === 'function-map' ? functionMapSvg(item.state) : pageMapSvg(item.state)
|
|
676
|
+
const expectedSvg = item.kind === 'function-map' ? functionMapSvg(item.state, copy) : pageMapSvg(item.state, copy)
|
|
665
677
|
if (!figure.includes(expectedSvg)) diagnostics.push(`visual projection ${JSON.stringify(ref)} does not match its deterministic owner projection`)
|
|
666
678
|
}
|
|
667
679
|
}
|