openyida 2026.9.21 → 2026.9.22-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +14 -20
- package/bin/yida.js +6 -11
- package/lib/app/app-list.js +3 -7
- package/lib/app/canvas-compile.js +12 -22
- package/lib/app/check-prd-completeness.js +0 -7
- package/lib/app/create-app.js +1 -4
- package/lib/app/create-form/args.js +12 -37
- package/lib/app/create-form/batch.js +11 -86
- package/lib/app/create-form.js +86 -193
- package/lib/app/create-page.js +17 -84
- package/lib/app/custom-theme.js +0 -11
- package/lib/app/form-field-validator.js +41 -26
- package/lib/app/form-open-guard.js +10 -97
- package/lib/app/get-form-config.js +0 -1
- package/lib/app/inline-css-guard.js +31 -1
- package/lib/app/services/form-compiler.js +4 -2
- package/lib/app/theme-from-design.js +41 -144
- package/lib/app/theme-presets.js +1 -1
- package/lib/app/update-app.js +13 -63
- package/lib/asset/ai-image.js +9 -59
- package/lib/asset/asset-cmd.js +7 -18
- package/lib/asset/asset-plan.js +9 -102
- package/lib/asset/asset-resolve.js +10 -55
- package/lib/asset/asset-status.js +4 -5
- package/lib/asset/host-capabilities.js +2 -11
- package/lib/asset/url-verify.js +4 -19
- package/lib/auth/dws-sync.js +145 -0
- package/lib/auth/token-auth.js +73 -9
- package/lib/auth/token-store.js +50 -0
- package/lib/connector/connector-test.js +5 -19
- package/lib/connector/contract.js +1 -3
- package/lib/core/agent-capabilities.js +16 -19
- package/lib/core/command-manifest.js +40 -329
- package/lib/core/locales/en.js +17 -74
- package/lib/core/locales/zh.js +16 -73
- package/lib/core/redact.js +10 -15
- package/lib/core/sample.js +30 -72
- package/lib/core/utils.js +4 -0
- package/lib/design-plan/design-plan.js +4 -51
- package/lib/design-plan/init.js +26 -121
- package/lib/design-plan/materialize.js +348 -451
- package/lib/design-plan/normalize.js +29 -74
- package/lib/design-plan/parallel.js +16 -71
- package/lib/design-plan/patch.js +16 -63
- package/lib/design-plan/preview.js +8 -6
- package/lib/design-plan/validate.js +11 -71
- package/lib/process/create-process.js +50 -84
- package/lib/samples/openyida-scaffold/canvas-form-drawer.canvas.jsx +90 -20
- package/lib/samples/openyida-scaffold/canvas-nav/content.jsx +13 -93
- package/lib/samples/openyida-scaffold/canvas-nav/data.jsx +18 -100
- package/lib/samples/openyida-scaffold/canvas-nav/mixed.jsx +4 -6
- package/lib/samples/openyida-scaffold/canvas-nav/shared.jsx +5 -5
- package/lib/samples/openyida-scaffold/canvas-nav/side.jsx +2 -1
- package/lib/samples/openyida-scaffold/canvas-nav/sidebar.jsx +1 -1
- package/lib/samples/openyida-scaffold/canvas-nav/top.jsx +9 -15
- package/lib/samples/yida-canvas-table-form/table-form-batch-submit.canvas.jsx +83 -9
- package/lib/samples/yida-rechart/trend-combo.canvas.jsx +87 -14
- package/package.json +1 -3
- package/scripts/postinstall.js +3 -3
- package/yida-skills/SKILL.md +16 -19
- package/yida-skills/references/official-example-schema-patterns.md +1 -1
- package/yida-skills/references/yida-api.md +0 -4
- package/yida-skills/skills/yida-app/SKILL.md +23 -46
- package/yida-skills/skills/yida-app/workflow/parallel-work.md +6 -15
- package/yida-skills/skills/yida-app/workflow/plan/step-1-understand.md +1 -1
- package/yida-skills/skills/yida-app/workflow/plan/step-2-confirm.md +1 -1
- package/yida-skills/skills/yida-app/workflow/plan/step-4-deliver.md +15 -29
- package/yida-skills/skills/yida-app/workflow/plan/workflow.md +11 -29
- package/yida-skills/skills/yida-app/workflow/step-1-resource-context.md +2 -4
- package/yida-skills/skills/yida-app/workflow/step-2-design.md +9 -23
- package/yida-skills/skills/yida-app/workflow/step-3-create-or-reuse-app.md +4 -6
- package/yida-skills/skills/yida-app/workflow/step-4-forms-processes.md +4 -15
- package/yida-skills/skills/yida-app/workflow/step-6-main-page.md +4 -6
- package/yida-skills/skills/yida-app/workflow/step-7-page-code.md +9 -15
- package/yida-skills/skills/yida-app/workflow/step-8-publish-navigation.md +11 -25
- package/yida-skills/skills/yida-app/workflow/step-9-output-finish.md +28 -68
- package/yida-skills/skills/yida-canvas-custom-page/SKILL.md +43 -42
- package/yida-skills/skills/yida-canvas-custom-page/references/canvas-style-implementation-guide.md +44 -60
- package/yida-skills/skills/yida-canvas-custom-page/references/canvas-theme-provider.md +50 -72
- package/yida-skills/skills/yida-canvas-custom-page/references/component-library-guide.md +1 -13
- package/yida-skills/skills/yida-canvas-custom-page/references/data-bridge-guide.md +1 -140
- package/yida-skills/skills/yida-canvas-custom-page/references/navigation-and-entry-guide.md +72 -101
- package/yida-skills/skills/yida-canvas-custom-page/references/page-generation-guide.md +32 -35
- package/yida-skills/skills/yida-canvas-custom-page/scripts/build-canvas-theme.js +3 -29
- package/yida-skills/skills/yida-canvas-custom-page/scripts/canvas-theme-provider.template.jsx +6 -69
- package/yida-skills/skills/yida-canvas-data-binding/SKILL.md +0 -26
- package/yida-skills/skills/yida-create-app/SKILL.md +0 -2
- package/yida-skills/skills/yida-create-form-page/SKILL.md +58 -72
- package/yida-skills/skills/yida-create-form-page/references/advanced-form-modes.md +5 -5
- package/yida-skills/skills/yida-create-form-page/references/association-form-field.md +4 -4
- package/yida-skills/skills/yida-create-form-page/references/batch-forms.md +5 -6
- package/yida-skills/skills/yida-create-form-page/references/field-definition-guide.md +19 -7
- package/yida-skills/skills/yida-create-form-page/references/form-field-properties.md +44 -62
- package/yida-skills/skills/yida-create-page/SKILL.md +6 -14
- package/yida-skills/skills/yida-create-process/SKILL.md +2 -13
- package/yida-skills/skills/yida-custom-page/SKILL.md +0 -2
- package/yida-skills/skills/yida-custom-page/references/design-system.md +1 -1
- package/yida-skills/skills/yida-dashboard/SKILL.md +4 -5
- package/yida-skills/skills/yida-data-management/SKILL.md +2 -4
- package/yida-skills/skills/yida-data-management/references/data-format-guide.md +4 -4
- package/yida-skills/skills/yida-design/SKILL.md +14 -29
- package/yida-skills/skills/yida-design/references/app/blueprint.md +70 -0
- package/yida-skills/skills/yida-design/references/app/navigation-patterns.md +43 -0
- package/yida-skills/skills/yida-design/references/app/role-journey.md +30 -0
- package/yida-skills/skills/yida-design/references/ask-human-interaction-contract.md +42 -67
- package/yida-skills/skills/yida-design/references/asset-workflow.md +2 -6
- package/yida-skills/skills/yida-design/references/design-mode.md +4 -4
- package/yida-skills/skills/yida-design/references/page-quality-gates.md +38 -26
- package/yida-skills/skills/yida-design/references/style-design-selection.md +137 -0
- package/yida-skills/skills/yida-design/references/style-designs/_design-md-template.md +185 -0
- package/yida-skills/skills/yida-design/references/style-designs/aqua-service-progress-dashboard.md +242 -0
- package/yida-skills/skills/yida-design/references/style-designs/blue-insight-operations-dashboard.md +243 -0
- package/yida-skills/skills/yida-design/references/style-designs/blue-productivity-insight-workbench.md +242 -0
- package/yida-skills/skills/yida-design/references/style-designs/command-filter-card-console.md +304 -0
- package/yida-skills/skills/yida-design/references/style-designs/contrast-command-analytics-workbench.md +261 -0
- package/yida-skills/skills/yida-design/references/style-designs/dark-stage-analytic-dashboard.md +369 -0
- package/yida-skills/skills/yida-design/references/style-designs/filterable-card-catalog.md +354 -0
- package/yida-skills/skills/yida-design/references/style-designs/green-timeline-progress-workbench.md +250 -0
- package/yida-skills/skills/yida-design/references/style-designs/registry.md +117 -0
- package/yida-skills/skills/yida-design/references/style-designs/soft-analytic-workbench.md +348 -0
- package/yida-skills/skills/yida-design/references/style-designs/soft-blue-grid-analytic-dashboard.md +658 -0
- package/yida-skills/skills/yida-design/references/style-designs/soft-bordered-analytic-workbench.md +385 -0
- package/yida-skills/skills/yida-design/references/style-designs/soft-curated-filter-gallery.md +300 -0
- package/yida-skills/skills/yida-design/references/style-designs/soft-modular-analytic-workbench.md +404 -0
- package/yida-skills/skills/yida-design/references/style-designs/soft-progress-analytics-workbench.md +382 -0
- package/yida-skills/skills/yida-design/references/style-designs/soft-timeline-analytics-workbench.md +367 -0
- package/yida-skills/skills/yida-design/references/style-designs/teal-rail-analytics-workbench.md +341 -0
- package/yida-skills/skills/yida-design/references/theme/app-custom-theme-template.css +432 -350
- package/yida-skills/skills/yida-design/references/visual-decision-engine.md +143 -19
- package/yida-skills/skills/yida-design/references/visual-scaffold-recipes.md +27 -15
- package/yida-skills/skills/yida-design/sub_skill/page-design/SKILL.md +0 -4
- package/yida-skills/skills/yida-design/sub_skill/yida-design-plan/SKILL.md +8 -22
- package/yida-skills/skills/yida-design/sub_skill/yida-design-plan/assets/README.md +10 -14
- package/yida-skills/skills/yida-design/sub_skill/yida-design-plan/assets/build-plan-template.html +4 -9
- package/yida-skills/skills/yida-design/sub_skill/yida-design-plan/references/build-plan-compact-schema.md +27 -49
- package/yida-skills/skills/yida-design/sub_skill/yida-design-plan/references/build-plan-schema.md +154 -33
- package/yida-skills/skills/yida-design/sub_skill/yida-design-plan/references/visual-design.md +127 -48
- package/yida-skills/skills/yida-design/sub_skill/yida-design-plan/references/visual-theme-selection.md +51 -37
- package/yida-skills/skills/yida-design/sub_skill/yida-design-plan/scripts/render_build_plan.py +48 -43
- package/yida-skills/skills/yida-design/sub_skill/yida-design-plan/scripts/validate_design_themes.py +190 -0
- package/yida-skills/skills/yida-design/sub_skill/yida-design-plan/templates/design-themes/README.md +98 -0
- package/yida-skills/skills/yida-design/sub_skill/yida-design-plan/templates/design-themes/airy-media-grid.md +339 -0
- package/yida-skills/skills/yida-design/sub_skill/yida-design-plan/templates/design-themes/airy-modular-clarity.md +348 -0
- package/yida-skills/skills/yida-design/sub_skill/yida-design-plan/templates/design-themes/airy-structured-clarity.md +344 -0
- package/yida-skills/skills/yida-design/sub_skill/yida-design-plan/templates/design-themes/ambient-halo-layered.md +345 -0
- package/yida-skills/skills/yida-design/sub_skill/yida-design-plan/templates/design-themes/dark-focus-layered.md +355 -0
- package/yida-skills/skills/yida-design/sub_skill/yida-design-plan/templates/design-themes/dark-luminous-modular.md +377 -0
- package/yida-skills/skills/yida-design/sub_skill/yida-design-plan/templates/design-themes/deep-stage-duotone.md +352 -0
- package/yida-skills/skills/yida-design/sub_skill/yida-design-plan/templates/design-themes/hairline-runway-clarity.md +389 -0
- package/yida-skills/skills/yida-design/sub_skill/yida-design-plan/templates/design-themes/high-contrast-modular.md +364 -0
- package/yida-skills/skills/yida-design/sub_skill/yida-design-plan/templates/design-themes/index.json +329 -0
- package/yida-skills/skills/yida-design/sub_skill/yida-design-plan/templates/design-themes/interlocked-vivid-modules.md +348 -0
- package/yida-skills/skills/yida-design/sub_skill/yida-design-plan/templates/design-themes/matrix-grid-focus.md +345 -0
- package/yida-skills/skills/yida-design/sub_skill/yida-design-plan/templates/design-themes/media-rail-inspector.md +379 -0
- package/yida-skills/skills/yida-design/sub_skill/yida-design-plan/templates/design-themes/mist-layered-signal.md +347 -0
- package/yida-skills/skills/yida-design/sub_skill/yida-design-plan/templates/design-themes/modular-rail-signal.md +352 -0
- package/yida-skills/skills/yida-design/sub_skill/yida-design-plan/templates/design-themes/mono-grid-signal.md +386 -0
- package/yida-skills/skills/yida-design/sub_skill/yida-design-plan/templates/design-themes/ribbon-ledger-lift.md +384 -0
- package/yida-skills/skills/yida-design/sub_skill/yida-design-plan/templates/design-themes/segmented-meter-clarity.md +388 -0
- package/yida-skills/skills/yida-design/sub_skill/yida-design-plan/templates/design-themes/split-rail-precision.md +341 -0
- package/yida-skills/skills/yida-design/sub_skill/yida-design-plan/templates/design-themes/status-framed-media-grid.md +361 -0
- package/yida-skills/skills/yida-design/workflow/output-design.md +375 -117
- package/yida-skills/skills/yida-design/workflow/output-prd.md +185 -0
- package/yida-skills/skills/yida-design/workflow/step-1-read-brief.md +1 -1
- package/yida-skills/skills/yida-design/workflow/step-2-theme-system.md +29 -33
- package/yida-skills/skills/yida-design/workflow/step-4-wireframe-interaction.md +1 -3
- package/yida-skills/skills/yida-design/workflow/step-5-visual-states.md +106 -22
- package/yida-skills/skills/yida-design/workflow/step-6-handoff.md +22 -15
- package/yida-skills/skills/yida-form-permission/SKILL.md +0 -6
- package/yida-skills/skills/yida-image-assets/SKILL.md +50 -73
- package/yida-skills/skills/yida-image-assets/references/manifest-contract.md +52 -82
- package/yida-skills/skills/yida-image-assets/references/source-policy.md +15 -14
- package/yida-skills/skills/yida-integration/SKILL.md +0 -1
- package/yida-skills/skills/yida-login/SKILL.md +0 -2
- package/yida-skills/skills/yida-nav-group/SKILL.md +2 -4
- package/yida-skills/skills/yida-nav-shell/SKILL.md +12 -36
- package/yida-skills/skills/yida-nav-shell/references/nav-shell-patterns.md +136 -79
- package/yida-skills/skills/yida-page-config/SKILL.md +4 -13
- package/yida-skills/skills/yida-prd/SKILL.md +3 -5
- package/yida-skills/skills/yida-prd/references/app/blueprint.md +4 -4
- package/yida-skills/skills/yida-prd/references/app/navigation-patterns.md +3 -6
- package/yida-skills/skills/yida-prd/references/app/role-journey.md +3 -5
- package/yida-skills/skills/yida-prd/references/plan-content.md +0 -4
- package/yida-skills/skills/yida-prd/workflow/output-prd.md +11 -18
- package/yida-skills/skills/yida-prd/workflow/plan-business.md +4 -4
- package/yida-skills/skills/yida-prd/workflow/step-2-information-architecture.md +8 -11
- package/yida-skills/skills/yida-publish-page/SKILL.md +1 -9
- package/yida-skills/skills/yida-requirement-analysis/SKILL.md +39 -10
- package/yida-skills/skills/yida-requirement-analysis/workflow/prepare-brief.md +71 -40
- package/yida-skills/skills-index.json +16 -36
- package/lib/app/application-entry-urls.js +0 -31
- package/lib/app/application-style.js +0 -69
- package/lib/app/canvas-icon-exports.json +0 -6160
- package/lib/app/canvas-icon-guard.js +0 -87
- package/lib/app/canvas-navigation-guard.js +0 -84
- package/lib/app/canvas-path-guard.js +0 -78
- package/lib/app/canvas-theme-guard.js +0 -184
- package/lib/app/form-data-response-guard.js +0 -57
- package/lib/asset/asset-execution.js +0 -79
- package/lib/core/css-structure.js +0 -37
- package/lib/design/check-design.js +0 -51
- package/lib/design/document.js +0 -458
- package/lib/design/icon-contrast.js +0 -85
- package/lib/design/page-content.js +0 -11
- package/lib/design-plan/artifact-updates.js +0 -117
- package/lib/design-plan/confirmation.js +0 -13
- package/lib/design-plan/entry-navigation.js +0 -97
- package/lib/design-plan/navigation-policy.js +0 -38
- package/lib/design-plan/rebase.js +0 -60
- package/lib/design-plan/themes.js +0 -101
- package/lib/design-plan/visual-policy.js +0 -42
- package/lib/samples/openyida-scaffold/canvas-admin-entry.jsx +0 -62
- package/lib/samples/openyida-scaffold/canvas-navigation.jsx +0 -56
- package/lib/samples/openyida-scaffold/canvas-view-state.jsx +0 -74
- package/yida-skills/skills/yida-app/references/entry-navigation.md +0 -193
- package/yida-skills/skills/yida-canvas-custom-page/references/view-state-recovery.md +0 -52
- package/yida-skills/skills/yida-canvas-data-binding/references/business-action-permissions.md +0 -31
- package/yida-skills/skills/yida-design/references/application-style-library.md +0 -93
- package/yida-skills/skills/yida-design/references/application-theme-consistency.md +0 -150
- package/yida-skills/skills/yida-design/references/native-form-styles.md +0 -208
- package/yida-skills/skills/yida-design/references/navigation-decision.md +0 -53
- package/yida-skills/skills/yida-design/references/page-continuity.md +0 -42
- package/yida-skills/skills/yida-design/references/theme/application-style-recipes.css +0 -58
- package/yida-skills/skills/yida-design/references/theme-selection.md +0 -67
- package/yida-skills/skills/yida-design/scripts/validate_design_themes.py +0 -302
- package/yida-skills/skills/yida-design/templates/application-styles.json +0 -398
- package/yida-skills/skills/yida-design/templates/design-themes/README.md +0 -73
- package/yida-skills/skills/yida-design/templates/design-themes/app-amber/app_theme.css +0 -748
- package/yida-skills/skills/yida-design/templates/design-themes/app-amber/design.md +0 -274
- package/yida-skills/skills/yida-design/templates/design-themes/app-amber/form-layout.json +0 -15
- package/yida-skills/skills/yida-design/templates/design-themes/app-editorial/app_theme.css +0 -748
- package/yida-skills/skills/yida-design/templates/design-themes/app-editorial/design.md +0 -274
- package/yida-skills/skills/yida-design/templates/design-themes/app-editorial/form-layout.json +0 -14
- package/yida-skills/skills/yida-design/templates/design-themes/app-executive/app_theme.css +0 -748
- package/yida-skills/skills/yida-design/templates/design-themes/app-executive/design.md +0 -274
- package/yida-skills/skills/yida-design/templates/design-themes/app-executive/form-layout.json +0 -13
- package/yida-skills/skills/yida-design/templates/design-themes/app-finance/app_theme.css +0 -748
- package/yida-skills/skills/yida-design/templates/design-themes/app-finance/design.md +0 -274
- package/yida-skills/skills/yida-design/templates/design-themes/app-finance/form-layout.json +0 -14
- package/yida-skills/skills/yida-design/templates/design-themes/app-glass/app_theme.css +0 -748
- package/yida-skills/skills/yida-design/templates/design-themes/app-glass/design.md +0 -274
- package/yida-skills/skills/yida-design/templates/design-themes/app-glass/form-layout.json +0 -14
- package/yida-skills/skills/yida-design/templates/design-themes/app-graphite/app_theme.css +0 -748
- package/yida-skills/skills/yida-design/templates/design-themes/app-graphite/design.md +0 -274
- package/yida-skills/skills/yida-design/templates/design-themes/app-graphite/form-layout.json +0 -14
- package/yida-skills/skills/yida-design/templates/design-themes/app-line/app_theme.css +0 -748
- package/yida-skills/skills/yida-design/templates/design-themes/app-line/design.md +0 -274
- package/yida-skills/skills/yida-design/templates/design-themes/app-line/form-layout.json +0 -13
- package/yida-skills/skills/yida-design/templates/design-themes/app-neon/app_theme.css +0 -748
- package/yida-skills/skills/yida-design/templates/design-themes/app-neon/design.md +0 -274
- package/yida-skills/skills/yida-design/templates/design-themes/app-neon/form-layout.json +0 -14
- package/yida-skills/skills/yida-design/templates/design-themes/app-nordic/app_theme.css +0 -754
- package/yida-skills/skills/yida-design/templates/design-themes/app-nordic/design.md +0 -279
- package/yida-skills/skills/yida-design/templates/design-themes/app-nordic/form-layout.json +0 -13
- package/yida-skills/skills/yida-design/templates/design-themes/app-paper/app_theme.css +0 -748
- package/yida-skills/skills/yida-design/templates/design-themes/app-paper/design.md +0 -274
- package/yida-skills/skills/yida-design/templates/design-themes/app-paper/form-layout.json +0 -13
- package/yida-skills/skills/yida-design/templates/design-themes/app-platinum/app_theme.css +0 -748
- package/yida-skills/skills/yida-design/templates/design-themes/app-platinum/design.md +0 -274
- package/yida-skills/skills/yida-design/templates/design-themes/app-platinum/form-layout.json +0 -14
- package/yida-skills/skills/yida-design/templates/design-themes/app-plum/app_theme.css +0 -748
- package/yida-skills/skills/yida-design/templates/design-themes/app-plum/design.md +0 -274
- package/yida-skills/skills/yida-design/templates/design-themes/app-plum/form-layout.json +0 -14
- package/yida-skills/skills/yida-design/templates/design-themes/app-pop/app_theme.css +0 -758
- package/yida-skills/skills/yida-design/templates/design-themes/app-pop/design.md +0 -281
- package/yida-skills/skills/yida-design/templates/design-themes/app-pop/form-layout.json +0 -14
- package/yida-skills/skills/yida-design/templates/design-themes/app-sage/app_theme.css +0 -748
- package/yida-skills/skills/yida-design/templates/design-themes/app-sage/design.md +0 -274
- package/yida-skills/skills/yida-design/templates/design-themes/app-sage/form-layout.json +0 -14
- package/yida-skills/skills/yida-design/templates/design-themes/app-teal/app_theme.css +0 -748
- package/yida-skills/skills/yida-design/templates/design-themes/app-teal/design.md +0 -274
- package/yida-skills/skills/yida-design/templates/design-themes/app-teal/form-layout.json +0 -14
- package/yida-skills/skills/yida-design/templates/design-themes/app-terminal/app_theme.css +0 -754
- package/yida-skills/skills/yida-design/templates/design-themes/app-terminal/design.md +0 -279
- package/yida-skills/skills/yida-design/templates/design-themes/app-terminal/form-layout.json +0 -14
- package/yida-skills/skills/yida-design/templates/design-themes/app-ticket/app_theme.css +0 -752
- package/yida-skills/skills/yida-design/templates/design-themes/app-ticket/design.md +0 -278
- package/yida-skills/skills/yida-design/templates/design-themes/app-ticket/form-layout.json +0 -13
- package/yida-skills/skills/yida-design/templates/design-themes/app-wire/app_theme.css +0 -748
- package/yida-skills/skills/yida-design/templates/design-themes/app-wire/design.md +0 -274
- package/yida-skills/skills/yida-design/templates/design-themes/app-wire/form-layout.json +0 -14
- package/yida-skills/skills/yida-design/templates/design-themes/basic-tokens.json +0 -118
- package/yida-skills/skills/yida-design/templates/design-themes/dark-inset-hairline/app_theme.css +0 -690
- package/yida-skills/skills/yida-design/templates/design-themes/dark-inset-hairline/design.md +0 -382
- package/yida-skills/skills/yida-design/templates/design-themes/dark-inset-hairline/form-layout.json +0 -13
- package/yida-skills/skills/yida-design/templates/design-themes/dark-rail-fine-lines/app_theme.css +0 -691
- package/yida-skills/skills/yida-design/templates/design-themes/dark-rail-fine-lines/design.md +0 -380
- package/yida-skills/skills/yida-design/templates/design-themes/dark-rail-fine-lines/form-layout.json +0 -13
- package/yida-skills/skills/yida-design/templates/design-themes/dark-rail-signal-panels/app_theme.css +0 -696
- package/yida-skills/skills/yida-design/templates/design-themes/dark-rail-signal-panels/design.md +0 -378
- package/yida-skills/skills/yida-design/templates/design-themes/dark-rail-signal-panels/form-layout.json +0 -13
- package/yida-skills/skills/yida-design/templates/design-themes/free-creative/app_theme.css +0 -689
- package/yida-skills/skills/yida-design/templates/design-themes/free-creative/design.md +0 -238
- package/yida-skills/skills/yida-design/templates/design-themes/free-creative/form-layout.json +0 -13
- package/yida-skills/skills/yida-design/templates/design-themes/graphite-bevel-grid/app_theme.css +0 -692
- package/yida-skills/skills/yida-design/templates/design-themes/graphite-bevel-grid/design.md +0 -375
- package/yida-skills/skills/yida-design/templates/design-themes/graphite-bevel-grid/form-layout.json +0 -13
- package/yida-skills/skills/yida-design/templates/design-themes/hairline-shared-bands/app_theme.css +0 -691
- package/yida-skills/skills/yida-design/templates/design-themes/hairline-shared-bands/design.md +0 -362
- package/yida-skills/skills/yida-design/templates/design-themes/hairline-shared-bands/form-layout.json +0 -13
- package/yida-skills/skills/yida-design/templates/design-themes/hairline-soft-blocks/app_theme.css +0 -691
- package/yida-skills/skills/yida-design/templates/design-themes/hairline-soft-blocks/design.md +0 -409
- package/yida-skills/skills/yida-design/templates/design-themes/hairline-soft-blocks/form-layout.json +0 -13
- package/yida-skills/skills/yida-design/templates/design-themes/index.json +0 -464
- package/yida-skills/skills/yida-design/templates/design-themes/ink-glow-soft-panels/app_theme.css +0 -701
- package/yida-skills/skills/yida-design/templates/design-themes/ink-glow-soft-panels/design.md +0 -379
- package/yida-skills/skills/yida-design/templates/design-themes/ink-glow-soft-panels/form-layout.json +0 -13
- package/yida-skills/skills/yida-design/templates/design-themes/inset-frame-pixel-rhythm/app_theme.css +0 -691
- package/yida-skills/skills/yida-design/templates/design-themes/inset-frame-pixel-rhythm/design.md +0 -404
- package/yida-skills/skills/yida-design/templates/design-themes/inset-frame-pixel-rhythm/form-layout.json +0 -13
- package/yida-skills/skills/yida-design/templates/design-themes/outlined-texture-duotone/app_theme.css +0 -698
- package/yida-skills/skills/yida-design/templates/design-themes/outlined-texture-duotone/design.md +0 -389
- package/yida-skills/skills/yida-design/templates/design-themes/outlined-texture-duotone/form-layout.json +0 -13
- package/yida-skills/skills/yida-design/templates/design-themes/soft-inset-surfaces/app_theme.css +0 -691
- package/yida-skills/skills/yida-design/templates/design-themes/soft-inset-surfaces/design.md +0 -372
- package/yida-skills/skills/yida-design/templates/design-themes/soft-inset-surfaces/form-layout.json +0 -13
- package/yida-skills/skills/yida-design/templates/design-themes/soft-outline-rhythm/app_theme.css +0 -690
- package/yida-skills/skills/yida-design/templates/design-themes/soft-outline-rhythm/design.md +0 -455
- package/yida-skills/skills/yida-design/templates/design-themes/soft-outline-rhythm/form-layout.json +0 -13
- package/yida-skills/skills/yida-design/templates/design-themes/soft-rail-bold-band/app_theme.css +0 -698
- package/yida-skills/skills/yida-design/templates/design-themes/soft-rail-bold-band/design.md +0 -394
- package/yida-skills/skills/yida-design/templates/design-themes/soft-rail-bold-band/form-layout.json +0 -13
- package/yida-skills/skills/yida-design/templates/design-themes/soft-spectral-panels/app_theme.css +0 -692
- package/yida-skills/skills/yida-design/templates/design-themes/soft-spectral-panels/design.md +0 -391
- package/yida-skills/skills/yida-design/templates/design-themes/soft-spectral-panels/form-layout.json +0 -13
- package/yida-skills/skills/yida-design/templates/design-themes/warm-canvas-contrast-panels/app_theme.css +0 -711
- package/yida-skills/skills/yida-design/templates/design-themes/warm-canvas-contrast-panels/design.md +0 -408
- package/yida-skills/skills/yida-design/templates/design-themes/warm-canvas-contrast-panels/form-layout.json +0 -13
- package/yida-skills/skills/yida-design/templates/design-themes/warm-rail-muted-panels/app_theme.css +0 -692
- package/yida-skills/skills/yida-design/templates/design-themes/warm-rail-muted-panels/design.md +0 -383
- package/yida-skills/skills/yida-design/templates/design-themes/warm-rail-muted-panels/form-layout.json +0 -13
- package/yida-skills/skills/yida-design/templates/navigation-styles.json +0 -769
- package/yida-skills/skills/yida-requirement-analysis/references/experience-groups.md +0 -79
- package/yida-skills/skills/yida-requirement-analysis/references/handoff.md +0 -68
|
@@ -1,11 +1,5 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
const { getMaterialSourcingGuidance } = require('../asset/ai-image');
|
|
4
|
-
const { getVisualDecisionPolicy } = require('../design-plan/visual-policy');
|
|
5
|
-
const { getPageNavigationContract } = require('../design-plan/navigation-policy');
|
|
6
|
-
const { ENTRY_MODES } = require('../design-plan/entry-navigation');
|
|
7
|
-
const { DIVIDER_TYPES, DEFAULT_DIVIDER_TYPE } = require('../app/form-field-validator');
|
|
8
|
-
|
|
9
3
|
const SIDE_EFFECT_BASES = Object.freeze({
|
|
10
4
|
local_read: Object.freeze({
|
|
11
5
|
kind: 'local_read',
|
|
@@ -370,13 +364,11 @@ const COMMAND_SIDE_EFFECTS = new Map([
|
|
|
370
364
|
['create-form.batch', sideEffect('remote_write', { mutates_local: true })],
|
|
371
365
|
...sideEffectEntries([
|
|
372
366
|
'agent-capabilities',
|
|
373
|
-
'check-design',
|
|
374
367
|
'check-page',
|
|
375
368
|
'commands',
|
|
376
369
|
'create-form.icons',
|
|
377
370
|
'create-form.validate-fields',
|
|
378
371
|
'dingtalk-link',
|
|
379
|
-
'design-plan.catalog',
|
|
380
372
|
'formula.evaluate',
|
|
381
373
|
'integration.diagnose',
|
|
382
374
|
], sideEffect('local_read')),
|
|
@@ -515,8 +507,8 @@ const COMMAND_SIDE_EFFECTS = new Map([
|
|
|
515
507
|
['auth', sideEffect('mixed', {
|
|
516
508
|
mutates_yida: false,
|
|
517
509
|
mutates_local: true,
|
|
518
|
-
read_actions: ['status', 'profiles'
|
|
519
|
-
mutating_actions: ['login', 'refresh', 'logout', 'profile switch'],
|
|
510
|
+
read_actions: ['status', 'profiles'],
|
|
511
|
+
mutating_actions: ['login', 'sync-dws', 'refresh', 'logout', 'profile switch'],
|
|
520
512
|
})],
|
|
521
513
|
['batch', sideEffect('mixed', {
|
|
522
514
|
mutates_yida: true,
|
|
@@ -634,7 +626,6 @@ const COMMAND_PERMISSIONS = new Map([
|
|
|
634
626
|
...permissionEntries([
|
|
635
627
|
'agent-capabilities',
|
|
636
628
|
'app-list',
|
|
637
|
-
'check-design',
|
|
638
629
|
'check-prd-completeness',
|
|
639
630
|
'check-page',
|
|
640
631
|
'commands',
|
|
@@ -645,7 +636,6 @@ const COMMAND_PERMISSIONS = new Map([
|
|
|
645
636
|
'create-form.icons',
|
|
646
637
|
'create-form.validate-fields',
|
|
647
638
|
'dingtalk-link',
|
|
648
|
-
'design-plan.catalog',
|
|
649
639
|
'dws.contact-user-search',
|
|
650
640
|
'formula.evaluate',
|
|
651
641
|
'get-form-config',
|
|
@@ -798,7 +788,7 @@ const COMMAND_PERMISSIONS = new Map([
|
|
|
798
788
|
...permissionEntries([
|
|
799
789
|
'auth',
|
|
800
790
|
], actionDependentPermission({
|
|
801
|
-
preauthorized_actions: ['login', 'refresh', 'logout', 'profile switch'],
|
|
791
|
+
preauthorized_actions: ['login', 'sync-dws', 'refresh', 'logout', 'profile switch'],
|
|
802
792
|
})),
|
|
803
793
|
|
|
804
794
|
...permissionEntries([
|
|
@@ -1017,8 +1007,6 @@ function command(id, path, usage, descriptionKey, options = {}) {
|
|
|
1017
1007
|
deprecatedPatterns: cloneJsonMetadata(options.deprecatedPatterns, []),
|
|
1018
1008
|
repairPatterns: cloneJsonMetadata(options.repairPatterns, []),
|
|
1019
1009
|
examples: cloneJsonMetadata(options.examples, []),
|
|
1020
|
-
notes: cloneJsonMetadata(options.notes, []),
|
|
1021
|
-
noteKeys: cloneJsonMetadata(options.noteKeys, []),
|
|
1022
1010
|
hidden: options.hidden === true,
|
|
1023
1011
|
sideEffect: cloneSideEffect(commandSideEffect),
|
|
1024
1012
|
permission: clonePermission(normalizedPermission),
|
|
@@ -1035,7 +1023,7 @@ const COMMAND_GROUPS = [
|
|
|
1035
1023
|
output: 'json',
|
|
1036
1024
|
}),
|
|
1037
1025
|
command('logout', ['logout'], 'logout', 'help.cmd_logout', { requiresLogin: false }),
|
|
1038
|
-
command('auth', ['auth'], 'auth <status|login|refresh|logout|profiles|profile switch>', 'help.cmd_auth', { requiresLogin: false }),
|
|
1026
|
+
command('auth', ['auth'], 'auth <status|login|sync-dws|refresh|logout|profiles|profile switch>', 'help.cmd_auth', { requiresLogin: false }),
|
|
1039
1027
|
command('org', ['org'], 'org <list|switch> [--json] [--corp-id <corpId>]', 'help.cmd_org'),
|
|
1040
1028
|
command('env', ['env'], 'env [--json|setup|list|show|switch|add|remove] [options]', 'help.cmd_env', {
|
|
1041
1029
|
requiresLogin: false,
|
|
@@ -1047,24 +1035,14 @@ const COMMAND_GROUPS = [
|
|
|
1047
1035
|
id: 'app',
|
|
1048
1036
|
titleKey: 'help.group_app',
|
|
1049
1037
|
commands: [
|
|
1050
|
-
command('app-list', ['app-list'], 'app-list [--type managed|created] [--page N] [--size N]', 'help.cmd_app_list',
|
|
1051
|
-
notes: ['Successful results include appUrl/workbenchUrl for the business workspace and adminUrl for developer administration. Complete application delivery retains adminUrl regardless of auth runtime; route construction does not verify recipient access. Preserve the frontend URL from its own page result.'],
|
|
1052
|
-
}),
|
|
1038
|
+
command('app-list', ['app-list'], 'app-list [--type managed|created] [--page N] [--size N]', 'help.cmd_app_list'),
|
|
1053
1039
|
command('corp-efficiency', ['corp-efficiency'], 'corp-efficiency [overview|details|detail|groups|notify] [options] [--open|--no-open]', 'help.cmd_corp_efficiency', {
|
|
1054
1040
|
output: 'json',
|
|
1055
1041
|
}),
|
|
1056
|
-
command('create-app', ['create-app'], 'create-app "<name>"|--name <name> [options] [--locale zh_CN|en_US|ja_JP] [--open|--no-open]', 'help.cmd_create_app',
|
|
1057
|
-
notes: ['Successful results include appUrl/workbenchUrl for the business workspace and adminUrl for developer administration. Complete application delivery retains adminUrl regardless of auth runtime; route construction does not verify recipient access. Preserve the frontend URL from its own page result.'],
|
|
1058
|
-
}),
|
|
1059
|
-
command('design-plan.catalog', ['design-plan', 'catalog'], 'design-plan catalog [--json]', 'help.cmd_design_plan_catalog', {
|
|
1060
|
-
requiresLogin: false, output: 'json',
|
|
1061
|
-
args: [{ name: 'json', type: 'boolean', source: 'option', builder_options: ['--json'] }],
|
|
1062
|
-
notes: ['Read available theme IDs and page patterns before init when the theme mapping is unknown. Theme summaries describe deep/light navigation and deep/light content in natural language; they do not expose navTheme/contentTheme assignment syntax. Reuse this result for the current planning session.'],
|
|
1063
|
-
}),
|
|
1042
|
+
command('create-app', ['create-app'], 'create-app "<name>"|--name <name> [options] [--locale zh_CN|en_US|ja_JP] [--open|--no-open]', 'help.cmd_create_app'),
|
|
1064
1043
|
command('design-plan.init', ['design-plan', 'init'], 'design-plan init <requirement-brief.json> [--theme-id <id>] [--output-dir <dir>] [--json]', 'help.cmd_design_plan_init', {
|
|
1065
1044
|
requiresLogin: false,
|
|
1066
1045
|
output: 'text|json',
|
|
1067
|
-
notes: ['Requires a selected theme from --theme-id or visualSelection.themeId. There is no navigation-tone argument: init reads navTheme from the selected theme template, overwrites stale navigationStyle.tone, and records toneSource=theme_derived. Free creative preserves an explicitly authored navigationStyle.tone and records toneSource=project_defined. Returns preserved business facts, authoring.pendingFields with file/path/message, typed examples in authoring-context.md, and materialize.command with materialize.shell (powershell on Windows, posix elsewhere). Execute the command in that shell. Complete the pending facts, review business coverage, then set ready=true. Author ordered page blocks as {name,purpose}; omitted contentPriority and contentRichness.contentLayers derive from these blocks, preserving explicit overrides. Author project-specific acceptanceCriteria; materialize merges them with resource-based checks. A string visualSelection.colorStrategy is preserved as usage text with primaryColor pending; invalid types fail before files are written. Init guidance is preliminary; materialize still validates the completed plan.'],
|
|
1068
1046
|
args: [
|
|
1069
1047
|
{ name: 'requirementBrief', type: 'file', required: true, source: 'positional', position: 0, builder_options: ['--requirement-brief'] },
|
|
1070
1048
|
{ name: 'themeId', type: 'string', required: false, source: 'option', builder_options: ['--theme-id'] },
|
|
@@ -1081,14 +1059,12 @@ const COMMAND_GROUPS = [
|
|
|
1081
1059
|
],
|
|
1082
1060
|
notes: ['Updates completed fact modules in preview/ drafts. Modules share a source base; one writer updates changed sections and preserves custom CSS. Final materialize validates the complete plan and writes PRD, design, HTML and theme together.'],
|
|
1083
1061
|
}),
|
|
1084
|
-
command('design-plan.materialize', ['design-plan', 'materialize'], 'design-plan materialize <build-plan.json> [--from-preview | --business-file <json> --visual-file <json>] [--output-dir <dir>] [--
|
|
1085
|
-
notes: ['Derives navigationStyle.tone and appConfig.navTheme from the selected theme template. Navigation appearance tokens come directly from that template plus explicit visualStyle.tokens; mode-independent tokens such as --pod-nav-menu-item-selected-shadow flow through the base token contract; materialize does not synthesize a light/dark replacement palette. Free creative uses project-authored navigation tone and tokens. Validates image slots before writing artifacts. JSON assetTasks lists taskKey/taskState, independent searches ordered by required/hero/design order, collection-wide concurrency, host-enforced time budgets, two-round limits, resume policy, output paths and resolve argv. After matching plan confirmation, executionContract requires checking background Agent and Bash separately, dispatching only verified nonblocking tools or doing authorized business work before synchronous asset batches; record real job IDs and continue app/form/page work; replace <appType> with the real ID for upload. Materialized PRD execution pages include navigationPolicy derived from app/page navigation: platform-shell is content-only; standalone without a planned menu renders no application menu. This command performs no search or upload. Local asset inputs resolve against the command cwd; absolute paths survive page-task directory changes.'],
|
|
1062
|
+
command('design-plan.materialize', ['design-plan', 'materialize'], 'design-plan materialize <build-plan.json> [--from-preview | --business-file <json> --visual-file <json>] [--output-dir <dir>] [--check] [--json]', 'help.cmd_design_plan_materialize', {
|
|
1086
1063
|
requiresLogin: false,
|
|
1087
1064
|
output: 'text|json',
|
|
1088
1065
|
args: [
|
|
1089
1066
|
{ name: 'buildPlan', type: 'file', required: true, source: 'positional', position: 0, builder_options: ['--build-plan'] },
|
|
1090
1067
|
{ name: 'fromPreview', type: 'boolean', required: false, source: 'option', builder_options: ['--from-preview'] },
|
|
1091
|
-
{ name: 'rebaseParts', type: 'boolean', source: 'option', builder_options: ['--rebase-parts'] },
|
|
1092
1068
|
{ name: 'businessFile', type: 'file', required: false, source: 'option', builder_options: ['--business-file'] },
|
|
1093
1069
|
{ name: 'visualFile', type: 'file', required: false, source: 'option', builder_options: ['--visual-file'] },
|
|
1094
1070
|
{ name: 'outputDir', type: 'string', required: false, source: 'option', builder_options: ['--output-dir'] },
|
|
@@ -1097,41 +1073,17 @@ const COMMAND_GROUPS = [
|
|
|
1097
1073
|
],
|
|
1098
1074
|
}),
|
|
1099
1075
|
command('design-plan.patch', ['design-plan', 'patch'], 'design-plan patch <build-plan.json> --set <path=value> [--set <path=value> ...] [--materialize] [--output-dir <dir>] [--json]', 'help.cmd_design_plan_patch', {
|
|
1100
|
-
notes: ['Edit the existing plan with one batch of --set assignments; do not restart init or rewrite business.json/visual.json. navigationStyle.tone, navigationStyle.toneSource and execution.appConfig.navTheme are derived and cannot be patched; change the selected theme instead. For free-creative only, navigationStyle.tone is authored and can be patched. With --materialize, update changed PRD/design/HTML sections and theme tokens, preserving unrelated local content and custom CSS. JSON updated lists artifact files actually written. The CLI maintains .build-plan-artifacts.json as the generated baseline; overlapping local edits fail before any writes. Without --materialize, validate and save source facts without rendering HTML or writing artifacts. Unpresented edits keep the draft revision; substantive edits to a presented version advance once and clear approval. Asset materialStatus/missingAssets updates preserve approval.'],
|
|
1101
1076
|
requiresLogin: false,
|
|
1102
1077
|
output: 'text|json',
|
|
1103
1078
|
args: [
|
|
1104
1079
|
{ name: 'buildPlan', type: 'file', required: true, source: 'positional', position: 0, builder_options: ['--build-plan'] },
|
|
1105
|
-
{ name: 'set', type: 'string', required: true, source: 'option', builder_options: ['--set'], repeatable: true, description: 'Field assignment path=value; repeat --set for multiple changes.
|
|
1080
|
+
{ name: 'set', type: 'string', required: true, source: 'option', builder_options: ['--set'], repeatable: true, description: 'Field assignment path=value; repeat --set for multiple changes.' },
|
|
1106
1081
|
{ name: 'materialize', type: 'boolean', source: 'option', builder_options: ['--materialize'] },
|
|
1107
1082
|
{ name: 'outputDir', type: 'string', source: 'option', builder_options: ['--output-dir'] },
|
|
1108
1083
|
{ name: 'json', type: 'boolean', source: 'option', builder_options: ['--json'] },
|
|
1109
1084
|
],
|
|
1110
1085
|
}),
|
|
1111
|
-
command('update-app', ['update-app'], 'update-app <appType> [--name "..."] [--
|
|
1112
|
-
args: [
|
|
1113
|
-
{ name: 'appType', type: 'string', required: true, source: 'positional', position: 0 },
|
|
1114
|
-
{ name: 'name', type: 'string', source: 'option', builder_options: ['--name', '-n'] },
|
|
1115
|
-
{ name: 'desc', type: 'string', source: 'option', builder_options: ['--desc', '-d'] },
|
|
1116
|
-
{ name: 'icon', type: 'string', source: 'option', builder_options: ['--icon'] },
|
|
1117
|
-
{ name: 'iconColor', type: 'string', source: 'option', builder_options: ['--icon-color'] },
|
|
1118
|
-
{ name: 'colour', type: 'string', source: 'option', builder_options: ['--colour', '--theme'], description: 'Platform theme key or custom; CSS colors belong in themeColor.' },
|
|
1119
|
-
{ name: 'themeColor', type: 'string', source: 'option', builder_options: ['--theme-color', '--themeColor'], description: 'App primary color; themeFile supplies the effective color when both are provided.' },
|
|
1120
|
-
{ name: 'themeFile', type: 'file', source: 'option', builder_options: ['--theme-file', '--custom-theme-file'], description: 'Completed application theme CSS, not a placeholder authoring bundle. Reads --color-brand1-6, uploads CSS and sets colour=custom. Supports app-theme.css or app_theme.css; use the actual generated path.' },
|
|
1121
|
-
{ name: 'navTheme', type: 'string', source: 'option', builder_options: ['--nav-theme', '--navTheme'], description: 'Platform value: light, dark, white or gray. Generated design flows pass the selected template-derived light/dark value explicitly; this option has no implicit light default.' },
|
|
1122
|
-
{ name: 'logoSource', type: 'string', source: 'option', builder_options: ['--logo-source', '--logoSource'], description: 'appIcon or customImage; customImage requires an existing homepageLogo.' },
|
|
1123
|
-
{ name: 'layoutDirection', type: 'string', source: 'option', builder_options: ['--layout', '--layout-direction', '--layoutDirection'], description: 'side, top or l_shape.' },
|
|
1124
|
-
{ name: 'hideAppNav', type: 'boolean', source: 'option', builder_options: ['--hide-app-nav'] },
|
|
1125
|
-
{ name: 'showAppNav', type: 'boolean', source: 'option', builder_options: ['--show-app-nav'] },
|
|
1126
|
-
],
|
|
1127
|
-
notes: [
|
|
1128
|
-
'Upload application CSS with --theme-file; the primary color is read from CSS and saved with the theme resource. Edit navigation radius, three border states and selected shadow in design.md, regenerate CSS, then upload; these tokens are not separate update-app flags. Unknown options, missing values and combined --hide-app-nav/--show-app-nav are rejected.',
|
|
1129
|
-
'One design document and theme CSS cover navigation, application shell, native forms, custom pages and record details. tokens.application-global.appearance.navigation defines navigation surfaces, text and interaction states, logo, groups, search, popups, borders, radius and density. Platform-supported tokens are applied through the active navigation mode; page content consumes the same application theme.',
|
|
1130
|
-
'navigationVerification reads back explicitly requested navTheme, layoutDirection, hideAppNav and logoSource. A mismatch returns APP_NAVIGATION_NOT_PERSISTED and a nonzero exit code; only readback is retried. themeVerification independently verifies the uploaded theme resource. Verify rendered navigation, form, custom page and record detail after both checks pass.',
|
|
1131
|
-
'For generated design artifacts, pass themeProfile.navTheme from design.md to --nav-theme. Do not infer it from the business brief or omit it expecting a light default.',
|
|
1132
|
-
'Platform preset keys are used independently of --theme-file and --theme-color. Choose --hide-app-nav or --show-app-nav to set navigation visibility.',
|
|
1133
|
-
],
|
|
1134
|
-
}),
|
|
1086
|
+
command('update-app', ['update-app'], 'update-app <appType> [--name "..."] [--theme-file <css>] [--nav-theme light|dark|white|gray] [--logo-source appIcon|customImage] [--layout side|top|l_shape] [--hide-app-nav|--show-app-nav]', 'help.cmd_update_app'),
|
|
1135
1087
|
command('app-online', ['app-online'], 'app-online <appType> [--to-ding-app-center] [--show-app-center]', 'help.cmd_app_online'),
|
|
1136
1088
|
command('app-offline', ['app-offline'], 'app-offline <appType> [--to-ding-app-center] [--show-app-center]', 'help.cmd_app_offline'),
|
|
1137
1089
|
command('nav-group', ['nav-group'], 'nav-group <list|create|rename|delete|move|order|auto-order|hide|show> <appType> ...', 'help.cmd_nav_group', {
|
|
@@ -1165,9 +1117,9 @@ const COMMAND_GROUPS = [
|
|
|
1165
1117
|
{ name: 'check', type: 'boolean', source: 'option', builder_options: ['--check'], description: 'Validate definitions and dependency groups locally.' },
|
|
1166
1118
|
{ name: 'json', type: 'boolean', source: 'option', builder_options: ['--json'] },
|
|
1167
1119
|
],
|
|
1168
|
-
notes: ['Creates independent normal forms concurrently after dependency validation.
|
|
1120
|
+
notes: ['Creates independent normal forms concurrently after dependency validation. References resolve from successful schema readbacks. Existing formUuid entries are read-only reuse. Saves IDs and status beside the plan; interrupted and failed creates require reconciliation. Navigation ordering and shared app configuration follow the batch.'],
|
|
1169
1121
|
}),
|
|
1170
|
-
command('create-form.create', ['create-form', 'create'], 'create-form create <appType> "<formTitle>" <fieldsJsonFile> [--
|
|
1122
|
+
command('create-form.create', ['create-form', 'create'], 'create-form create <appType> "<formTitle>" <fieldsJsonFile> [--icon auto|<iconName>] [--locale zh_CN|en_US|ja_JP] [--open|--no-open]', 'help.cmd_create_form', {
|
|
1171
1123
|
args: [
|
|
1172
1124
|
{
|
|
1173
1125
|
name: 'appType',
|
|
@@ -1198,36 +1150,6 @@ const COMMAND_GROUPS = [
|
|
|
1198
1150
|
inline_json_rejected_options: ['--fields'],
|
|
1199
1151
|
description: 'Path to a local JSON file containing field definitions.',
|
|
1200
1152
|
},
|
|
1201
|
-
{
|
|
1202
|
-
name: 'layout',
|
|
1203
|
-
type: 'string',
|
|
1204
|
-
required: false,
|
|
1205
|
-
source: 'option',
|
|
1206
|
-
builder_options: ['--layout'],
|
|
1207
|
-
default: 'single',
|
|
1208
|
-
values: ['single', 'double', 'card', 'section'],
|
|
1209
|
-
description: 'Form-wide layout preset: single, double, card or section. Numeric aliases 1 and 2 remain accepted by the CLI.',
|
|
1210
|
-
},
|
|
1211
|
-
{
|
|
1212
|
-
name: 'theme',
|
|
1213
|
-
type: 'string',
|
|
1214
|
-
required: false,
|
|
1215
|
-
source: 'option',
|
|
1216
|
-
builder_options: ['--theme'],
|
|
1217
|
-
default: 'default',
|
|
1218
|
-
values: ['default', 'compact', 'comfortable'],
|
|
1219
|
-
description: 'Form density preset: default, compact or comfortable; this is not the application visual theme.',
|
|
1220
|
-
},
|
|
1221
|
-
{
|
|
1222
|
-
name: 'labelAlign',
|
|
1223
|
-
type: 'string',
|
|
1224
|
-
required: false,
|
|
1225
|
-
source: 'option',
|
|
1226
|
-
builder_options: ['--label-align'],
|
|
1227
|
-
default: 'top',
|
|
1228
|
-
values: ['top', 'left', 'right'],
|
|
1229
|
-
description: 'PC field-label alignment: top, left or right.',
|
|
1230
|
-
},
|
|
1231
1153
|
{
|
|
1232
1154
|
name: 'icon',
|
|
1233
1155
|
type: 'string',
|
|
@@ -1238,24 +1160,13 @@ const COMMAND_GROUPS = [
|
|
|
1238
1160
|
value_catalog_command_id: 'create-form.icons',
|
|
1239
1161
|
description: 'Form navigation icon name. Use auto for semantic selection or run create-form.icons for supported values.',
|
|
1240
1162
|
},
|
|
1241
|
-
{
|
|
1242
|
-
name: 'contentLocale',
|
|
1243
|
-
type: 'string',
|
|
1244
|
-
required: false,
|
|
1245
|
-
source: 'option',
|
|
1246
|
-
builder_options: ['--locale', '--content-locale', '--lang'],
|
|
1247
|
-
values: ['zh_CN', 'en_US', 'ja_JP'],
|
|
1248
|
-
description: 'Content locale: zh_CN, en_US or ja_JP (normalized locale aliases are also accepted).',
|
|
1249
|
-
},
|
|
1250
|
-
{ name: 'open', type: 'boolean', required: false, source: 'option', builder_options: ['--open'] },
|
|
1251
|
-
{ name: 'noOpen', type: 'boolean', required: false, source: 'option', builder_options: ['--no-open'] },
|
|
1252
1163
|
],
|
|
1253
1164
|
canonical: {
|
|
1254
1165
|
command_id: 'create-form.create',
|
|
1255
1166
|
path: ['create-form', 'create'],
|
|
1256
1167
|
argv_template: ['create-form', 'create', '<appType>', '<formTitle>', '<fieldsJsonFile>'],
|
|
1257
1168
|
display: 'openyida create-form create <appType> "<formTitle>" <fieldsJsonFile>',
|
|
1258
|
-
builder: 'openyida commands build create-form.create --app-type <appType> --form-title "<formTitle>" --fields-json-file <fieldsJsonFile> [--
|
|
1169
|
+
builder: 'openyida commands build create-form.create --app-type <appType> --form-title "<formTitle>" --fields-json-file <fieldsJsonFile> [--icon <iconName>] --json',
|
|
1259
1170
|
},
|
|
1260
1171
|
deprecatedPatterns: [
|
|
1261
1172
|
{
|
|
@@ -1285,10 +1196,9 @@ const COMMAND_GROUPS = [
|
|
|
1285
1196
|
],
|
|
1286
1197
|
examples: [
|
|
1287
1198
|
'openyida create-form create APP_XXX "访客登记" .cache/openyida/visitor/fields.json',
|
|
1288
|
-
'openyida create-form create APP_XXX "访客登记" .cache/openyida/visitor/fields.json --
|
|
1289
|
-
'openyida commands build create-form.create --app-type APP_XXX --form-title "访客登记" --fields-json-file .cache/openyida/visitor/fields.json --
|
|
1199
|
+
'openyida create-form create APP_XXX "访客登记" .cache/openyida/visitor/fields.json --icon name-card',
|
|
1200
|
+
'openyida commands build create-form.create --app-type APP_XXX --form-title "访客登记" --fields-json-file .cache/openyida/visitor/fields.json --json',
|
|
1290
1201
|
],
|
|
1291
|
-
notes: ['Divider accepts the 23 visible platform styles (none is excluded) through field JSON dividerType, not a CLI flag. Omission falls back to bold-with-thin; invalid supplied styles fail. Choose per business page and keep same-level sections consistent; see summary.core_workflows.full_app_build.divider_style_contract.'],
|
|
1292
1202
|
}),
|
|
1293
1203
|
command('create-form.icons', ['create-form', 'icons'], 'create-form icons [--json]', 'help.cmd_list_form_icons', {
|
|
1294
1204
|
requiresLogin: false,
|
|
@@ -1316,9 +1226,7 @@ const COMMAND_GROUPS = [
|
|
|
1316
1226
|
requiresLogin: false,
|
|
1317
1227
|
}),
|
|
1318
1228
|
command('create-form.update', ['create-form', 'update'], 'create-form update <appType> <formUuid> (<changesJsonOrFile> | --data-file <changesJsonOrFile>) [--locale zh_CN|en_US|ja_JP] [--open|--no-open]', 'help.cmd_update_form'),
|
|
1319
|
-
command('create-form.resume', ['create-form', 'resume'], 'create-form resume <appType> <formUuid> <fieldsJsonOrFile> [--json]', 'help.cmd_update_form',
|
|
1320
|
-
notes: ['On save-schema HTTP 5xx, read back the latest schema. Accept already-applied fields or retry missing compatible fields once with the latest revision; conflicts and other failures stop. Success includes appUrl, formUrl and the compatible url field.'],
|
|
1321
|
-
}),
|
|
1229
|
+
command('create-form.resume', ['create-form', 'resume'], 'create-form resume <appType> <formUuid> <fieldsJsonOrFile> [--json]', 'help.cmd_update_form'),
|
|
1322
1230
|
command('create-form.patch', ['create-form', 'patch'], 'create-form patch <appType> <formUuid> <patchJsonOrFile> [--open|--no-open]', 'help.cmd_update_form'),
|
|
1323
1231
|
command('create-form.rule', ['create-form', 'rule'], 'create-form rule <appType> <formUuid> <rulesJsonOrFile> [--open|--no-open]', 'help.cmd_update_form'),
|
|
1324
1232
|
command('create-form.validation', ['create-form', 'validation'], 'create-form validation <appType> <formUuid> <validationsJsonOrFile> [--open|--no-open]', 'help.cmd_update_form'),
|
|
@@ -1336,100 +1244,17 @@ const COMMAND_GROUPS = [
|
|
|
1336
1244
|
}),
|
|
1337
1245
|
command('check-prd-completeness', ['check-prd-completeness'], 'check-prd-completeness <prd.md> --app-type <appType> [--build-manifest <file>] [--json]', 'help.cmd_check_prd_completeness', {
|
|
1338
1246
|
output: 'json',
|
|
1339
|
-
notes: ['Checks resource counts and optional build-manifest.assetExecution recorded intervals. Include materialize.assetTasks and taskState records plus businessWork startedAt/endedAt; missing dispatch proof, missing overlap or assets before business in synchronous fallback produces needs_review. This is record consistency, not independent verification of host events.'],
|
|
1340
|
-
}),
|
|
1341
|
-
command('check-design', ['check-design'], 'check-design <design.md> [--prd <prd.md>] [--base-dir <dir>] [--json]', 'help.cmd_check_design', {
|
|
1342
|
-
requiresLogin: false,
|
|
1343
|
-
output: 'text|json',
|
|
1344
|
-
notes: ['Checks declared iconSystem.colorPairs against resolved design tokens. Each pair has a unique name, foreground, background and an opaque surface when the background is translucent. Icon contrast must reach 3:1; JSON iconContrast reports the checked pairs. Unsupported colors and missing surfaces fail rather than count as verified. This does not inspect browser styles, inherited opacity, gradients or undeclared icon colors.'],
|
|
1345
|
-
args: [
|
|
1346
|
-
{ name: 'design', type: 'file', source: 'positional', position: 0, required: true },
|
|
1347
|
-
{ name: 'prd', type: 'file', source: 'option', builder_options: ['--prd'] },
|
|
1348
|
-
{ name: 'baseDir', type: 'string', source: 'option', builder_options: ['--base-dir'], description: 'Project root for PRD designFile references; defaults to the current working directory. Input file arguments remain relative to the working directory.' },
|
|
1349
|
-
{ name: 'json', type: 'boolean', source: 'option', builder_options: ['--json'] },
|
|
1350
|
-
],
|
|
1351
1247
|
}),
|
|
1352
1248
|
command('er', ['er'], 'er <appType> [--format mermaid|json] [--output file] [--include-system] [--include-pages]', 'help.cmd_er', {
|
|
1353
1249
|
output: 'text|json',
|
|
1354
1250
|
}),
|
|
1355
|
-
command('create-page', ['create-page'], 'create-page <appType> "<name>" [--mode dashboard] [--hide-nav] [--locale zh_CN|en_US|ja_JP] [--open|--no-open]', 'help.cmd_create_page',
|
|
1356
|
-
output: 'text|json',
|
|
1357
|
-
args: [
|
|
1358
|
-
{ name: 'appType', type: 'string', source: 'positional', position: 0, required: true },
|
|
1359
|
-
{ name: 'pageName', type: 'string', source: 'positional', position: 1, required: true },
|
|
1360
|
-
{ name: 'mode', type: 'string', source: 'option', builder_options: ['--mode'], description: 'default or dashboard; neither hides navigation automatically.' },
|
|
1361
|
-
{ name: 'hideNav', type: 'boolean', source: 'option', builder_options: ['--hide-nav', '--hide-navigation', '--no-nav'] },
|
|
1362
|
-
{ name: 'renderNav', type: 'string', source: 'option', builder_options: ['--render-nav', '--is-render-nav', '--isRenderNav'], description: 'Compatibility alias: false hides navigation, true retains the default. Accepts true/false, 1/0, yes/no, y/n; last navigation option wins.' },
|
|
1363
|
-
{ name: 'locale', type: 'string', source: 'option', builder_options: ['--locale', '--content-locale', '--lang'], description: 'Content locale: zh_CN, en_US or ja_JP (also accepts normalized locale aliases).' },
|
|
1364
|
-
{ name: 'open', type: 'boolean', source: 'option', builder_options: ['--open'] },
|
|
1365
|
-
{ name: 'noOpen', type: 'boolean', source: 'option', builder_options: ['--no-open'] },
|
|
1366
|
-
],
|
|
1367
|
-
notes: [
|
|
1368
|
-
'Returns a JSON result with progress text; there is no command-specific --json flag. pageId is the created display page formUuid.',
|
|
1369
|
-
'--hide-nav updates the created page and reads its configuration back, with at most one repair write. navigationVerification contains requestedRenderNav, renderNav (boolean|null), verified and attempts. Read renderNav first; use isRenderNav only when renderNav is absent. URL query parameters are not readback evidence.',
|
|
1370
|
-
'Without --hide-nav: hideNavRequested=false, hideNav=false, chromeless=false and navigationVerification=null. With --hide-nav: hideNav reports the readback result (null if unknown); chromeless=true and the hidden-navigation URL require verified=true.',
|
|
1371
|
-
'Unverified hiding exits nonzero with success=false, pageCreated=true, pageId and CREATE_PAGE_NAVIGATION_NOT_VERIFIED. Use recovery.command/args and recovery.verifyCommand/verifyArgs on that existing page. Never repeat create-page to repair navigation.',
|
|
1372
|
-
],
|
|
1373
|
-
}),
|
|
1251
|
+
command('create-page', ['create-page'], 'create-page <appType> "<name>" [--mode dashboard] [--hide-nav] [--locale zh_CN|en_US|ja_JP] [--open|--no-open]', 'help.cmd_create_page'),
|
|
1374
1252
|
command('build-page', ['build-page'], 'build-page <sourceFile> [--output file|--write]', 'help.cmd_build_page', { requiresLogin: false }),
|
|
1375
|
-
command('check-page', ['check-page'], 'check-page <src> [--compat]
|
|
1376
|
-
|
|
1377
|
-
|
|
1378
|
-
|
|
1379
|
-
|
|
1380
|
-
{ name: 'compat', type: 'boolean', source: 'option', builder_options: ['--compat', '--modern'] },
|
|
1381
|
-
{ name: 'json', type: 'boolean', source: 'option', builder_options: ['--json'] },
|
|
1382
|
-
],
|
|
1383
|
-
notes: ['Local source validation, including form-open-container checks for recognized form links and drawer structure. Fails with CHECK_PAGE_FAILED and per-rule diagnostics. Dynamic interactions still require runtime verification.'],
|
|
1384
|
-
}),
|
|
1385
|
-
command('compile', ['compile'], 'compile <src> [--canvas] [--compat] [--skip-lint] [--json]', 'help.cmd_compile', {
|
|
1386
|
-
requiresLogin: false,
|
|
1387
|
-
output: 'text|json',
|
|
1388
|
-
args: [
|
|
1389
|
-
{ name: 'src', type: 'file', source: 'positional', position: 0, required: true },
|
|
1390
|
-
{ name: 'canvas', type: 'boolean', source: 'option', builder_options: ['--canvas'] },
|
|
1391
|
-
{ name: 'compat', type: 'boolean', source: 'option', builder_options: ['--compat', '--modern'] },
|
|
1392
|
-
{ name: 'skipLint', type: 'boolean', source: 'option', builder_options: ['--skip-lint'], description: 'Legacy JSX lint only; does not bypass Canvas compilation checks.' },
|
|
1393
|
-
{ name: 'json', type: 'boolean', source: 'option', builder_options: ['--json'] },
|
|
1394
|
-
],
|
|
1395
|
-
notes: ['Canvas compilation checks theme provider mounting, theme reads before the provider is active, module-level theme context declarations, fixed ConfigProvider brand colors, and known navigation destinations missing appType. Extract canvas-theme and canvas-navigation before coding. Form actions also require the maintained form-open-container fragment, hook and rendered container. Dynamic colors, resource identity and runtime rendering still require verification.'],
|
|
1396
|
-
}),
|
|
1397
|
-
command('publish', ['publish'], 'publish <src> <appType> <formUuid> [--health-check] [--force] [--canvas] [--compat] [--skip-lint] [--auto-nav-order] [--open|--no-open] [--json]', 'help.cmd_publish', {
|
|
1398
|
-
args: [
|
|
1399
|
-
{ name: 'src', type: 'file', source: 'positional', position: 0, required: true },
|
|
1400
|
-
{ name: 'appType', type: 'string', source: 'positional', position: 1, required: true },
|
|
1401
|
-
{ name: 'formUuid', type: 'string', source: 'positional', position: 2, required: true },
|
|
1402
|
-
{ name: 'healthCheck', type: 'boolean', source: 'option', builder_options: ['--health-check', '--check'] },
|
|
1403
|
-
{ name: 'force', type: 'boolean', source: 'option', builder_options: ['--force'], description: 'Override target checks; does not bypass Canvas compilation checks.' },
|
|
1404
|
-
{ name: 'canvas', type: 'boolean', source: 'option', builder_options: ['--canvas'] },
|
|
1405
|
-
{ name: 'compat', type: 'boolean', source: 'option', builder_options: ['--compat', '--modern'] },
|
|
1406
|
-
{ name: 'skipLint', type: 'boolean', source: 'option', builder_options: ['--skip-lint'], description: 'Legacy JSX lint only; does not bypass Canvas compilation checks.' },
|
|
1407
|
-
{ name: 'autoNavOrder', type: 'boolean', source: 'option', builder_options: ['--auto-nav-order'] },
|
|
1408
|
-
{ name: 'open', type: 'boolean', source: 'option', builder_options: ['--open'] },
|
|
1409
|
-
{ name: 'noOpen', type: 'boolean', source: 'option', builder_options: ['--no-open'] },
|
|
1410
|
-
{ name: 'json', type: 'boolean', source: 'option', builder_options: ['--json'] },
|
|
1411
|
-
],
|
|
1412
|
-
notes: ['Canvas publishing runs the same theme and form-open-container structure checks as compile before login or remote writes. --force does not bypass Canvas compilation checks. --health-check verifies saved content; inspect the actual page for runtime behavior.'],
|
|
1413
|
-
}),
|
|
1414
|
-
command('update-form-config', ['update-form-config'], 'update-form-config <appType> <formUuid> <true|false|keep> "<title>" [--locale zh_CN|en_US|ja_JP]', 'help.cmd_update_form_config', {
|
|
1415
|
-
args: [
|
|
1416
|
-
{ name: 'appType', type: 'string', source: 'positional', position: 0, required: true },
|
|
1417
|
-
{ name: 'formUuid', type: 'string', source: 'positional', position: 1, required: true },
|
|
1418
|
-
{ name: 'isRenderNav', type: 'string', source: 'positional', position: 2, required: true, description: 'true, false or keep; use false for hide-navigation recovery.' },
|
|
1419
|
-
{ name: 'title', type: 'string', source: 'positional', position: 3, required: true },
|
|
1420
|
-
{ name: 'locale', type: 'string', source: 'option', builder_options: ['--locale', '--content-locale', '--lang'] },
|
|
1421
|
-
],
|
|
1422
|
-
notes: ['A successful write acknowledgement is not navigation readback. Follow with get-form-config <appType> <formUuid> --json; inspect renderNav, falling back to isRenderNav only when renderNav is absent.'],
|
|
1423
|
-
}),
|
|
1424
|
-
command('get-form-config', ['get-form-config'], 'get-form-config <appType> <formUuid> [--json]', 'help.cmd_get_form_config', {
|
|
1425
|
-
output: 'json',
|
|
1426
|
-
args: [
|
|
1427
|
-
{ name: 'appType', type: 'string', source: 'positional', position: 0, required: true },
|
|
1428
|
-
{ name: 'formUuid', type: 'string', source: 'positional', position: 1, required: true },
|
|
1429
|
-
{ name: 'json', type: 'boolean', source: 'option', builder_options: ['--json'] },
|
|
1430
|
-
],
|
|
1431
|
-
notes: ['Navigation readback uses renderNav first, falling back to isRenderNav only when renderNav is absent. true/false booleans and strings are recognized; missing or invalid values remain unknown. --json includes the raw configuration; the default summary preserves both navigation fields when present.'],
|
|
1432
|
-
}),
|
|
1253
|
+
command('check-page', ['check-page'], 'check-page <src> [--compat]', 'help.cmd_check_page', { output: 'text|json' }),
|
|
1254
|
+
command('compile', ['compile'], 'compile <src> [--canvas] [--json]', 'help.cmd_compile', { requiresLogin: false, output: 'text|json' }),
|
|
1255
|
+
command('publish', ['publish'], 'publish <src> <appType> <formUuid> [--health-check] [--force] [--canvas] [--auto-nav-order] [--open|--no-open]', 'help.cmd_publish'),
|
|
1256
|
+
command('update-form-config', ['update-form-config'], 'update-form-config <appType> <formUuid> <true|false|keep> "<title>" [--locale zh_CN|en_US|ja_JP]', 'help.cmd_update_form_config'),
|
|
1257
|
+
command('get-form-config', ['get-form-config'], 'get-form-config <appType> <formUuid> [--json]', 'help.cmd_get_form_config', { output: 'json' }),
|
|
1433
1258
|
],
|
|
1434
1259
|
},
|
|
1435
1260
|
{
|
|
@@ -1437,8 +1262,6 @@ const COMMAND_GROUPS = [
|
|
|
1437
1262
|
titleKey: 'help.group_data',
|
|
1438
1263
|
commands: [
|
|
1439
1264
|
command('data', ['data'], 'data <query|get|create|update> <resource> ... | delete form <appType> <formUuid> --inst-id <id> --expect-form-name <name> --expect-form-type receipt --confirm [--json]', 'help.cmd_data', {
|
|
1440
|
-
output: 'json',
|
|
1441
|
-
noteKeys: ['help.data_notes'],
|
|
1442
1265
|
examples: [
|
|
1443
1266
|
'openyida data create form APP_XXX FORM_XXX --expect-form-name 客户 --expect-form-type receipt --data-json \'{"textField_name":"客户 A","dateField_followUp":1787932800000}\'',
|
|
1444
1267
|
'openyida data delete form APP_XXX FORM_XXX --inst-id FINST_XXX --expect-form-name 客户 --expect-form-type receipt --confirm --json',
|
|
@@ -1472,9 +1295,7 @@ const COMMAND_GROUPS = [
|
|
|
1472
1295
|
command('configure-process', ['configure-process'], 'configure-process <appType> <formUuid> <definition> [processCode] [--replace]', 'help.cmd_configure_process', {
|
|
1473
1296
|
examples: ['openyida configure-process APP_XXX FORM_XXX .cache/openyida/process/process-with-actions.json'],
|
|
1474
1297
|
}),
|
|
1475
|
-
command('create-process', ['create-process'], 'create-process <appType>
|
|
1476
|
-
output: 'json',
|
|
1477
|
-
noteKeys: ['help.create_process_notes'],
|
|
1298
|
+
command('create-process', ['create-process'], 'create-process <appType> ... [--replace]', 'help.cmd_create_process', {
|
|
1478
1299
|
examples: [
|
|
1479
1300
|
'openyida create-process APP_XXX "Approval Form" .cache/openyida/process/fields.json .cache/openyida/process/process-with-actions.json',
|
|
1480
1301
|
'openyida create-process APP_XXX --formUuid FORM_XXX .cache/openyida/process/process-with-actions.json',
|
|
@@ -1520,7 +1341,7 @@ const COMMAND_GROUPS = [
|
|
|
1520
1341
|
command('connector.update-action', ['connector', 'update-action'], 'connector update-action --connector-id <id> --action <operationId> --query-json JSON --confirm', 'help.cmd_connector_update_action'),
|
|
1521
1342
|
command('connector.list-actions', ['connector', 'list-actions'], 'connector list-actions <id>', 'help.cmd_connector_list_actions'),
|
|
1522
1343
|
command('connector.delete-action', ['connector', 'delete-action'], 'connector delete-action <id> <operation-id>', 'help.cmd_connector_delete_action'),
|
|
1523
|
-
command('connector.test', ['connector', 'test'], 'connector test --connector-id <id> --action <actionId> [--path-json JSON] [--query-json JSON] [--header-json JSON] [--body-json JSON] [--account-id <id>] [--system-token-app <appType>]
|
|
1344
|
+
command('connector.test', ['connector', 'test'], 'connector test --connector-id <id> --action <actionId> [--path-json JSON] [--query-json JSON] [--header-json JSON] [--body-json JSON] [--account-id <id>] [--system-token-app <appType>]', 'help.cmd_connector_test'),
|
|
1524
1345
|
command('connector.list-connections', ['connector', 'list-connections'], 'connector list-connections <id>', 'help.cmd_connector_list_connections'),
|
|
1525
1346
|
command('connector.create-connection', ['connector', 'create-connection'], 'connector create-connection <id> <name> [--interactive]', 'help.cmd_connector_create_connection'),
|
|
1526
1347
|
command('connector.smart-create', ['connector', 'smart-create'], 'connector smart-create --curl "..."', 'help.cmd_connector_smart'),
|
|
@@ -1585,31 +1406,15 @@ const COMMAND_GROUPS = [
|
|
|
1585
1406
|
output: 'text|json',
|
|
1586
1407
|
}),
|
|
1587
1408
|
command('copy', ['copy'], 'copy [--force]', 'help.cmd_copy', { requiresLogin: false }),
|
|
1588
|
-
command('sample', ['sample'], 'sample [--list] [<skill> <name>] [--output <file
|
|
1409
|
+
command('sample', ['sample'], 'sample [--list] [<skill> <name>] [--output <file>] [--var KEY=VALUE ...] [--design-file <design.md>]', 'help.cmd_sample', {
|
|
1589
1410
|
requiresLogin: false,
|
|
1590
|
-
output: 'text|json',
|
|
1591
|
-
notes: [
|
|
1592
|
-
'yida-design app-theme reads concrete tokens from --design-file and writes CSS plus a sibling <output>.tokens.md update snapshot. The same output path preserves project CSS and applies changed tokens. Without --design-file it resets the output to the public base template. Menu radius, normal/hover/selected borders and selected shadow apply to side, L-shaped and top navigation; older CSS gains missing menu-shape rules when the design supplies menu-border tokens.',
|
|
1593
|
-
'yida-design application-style --style-id supports every catalog theme and exports a three-file design.md/app_theme.css/form-layout.json authoring bundle to an output directory without overwriting files. Brand primary and hover values remain project placeholders until app-theme --design-file generates concrete CSS. Use design-plan catalog for presets and its separate creativeOption; free creative requires independent business decisions and explicit design tokens.',
|
|
1594
|
-
'Author menu radius, normal/hover/selected borders, selected shadow, item height, padding, gap and shell spacing together in design.md navigation tokens (Fast) or visualStyle.tokens (Plan). These are design values, not separate CLI flags. Preset appearance does not override the business navigation layout. Verify native data-management navigation and business pages in workbench access mode; /admin is the development configuration surface.',
|
|
1595
|
-
'Native forms use a component tree with top, left, main, right and between-field regions. Platform form components include tabs, button groups, images/graphics, status areas, dividers, columns and business fields, serving navigation, actions, visual focus, feedback, hierarchy, decoration and data capture. Application-style form-layout.json provides an editable starting layout for openyida create-form: use the supported business fields, Divider and ColumnContainer, and retain other existing components when updating a form.',
|
|
1596
|
-
'canvas-nav-side/top/mixed/dock consume the same menu radius, normal/hover/selected borders and selected shadow as platform navigation. Side and Dock items read menu item height/padding; top and mixed header items read top-tab height/padding/max-width. Side/top/mixed menus read menu-gap; Dock reads slide-collapsed-menu-gap. Side shell padding uses slide-aside-padding and mixed uses l-aside-padding. Re-export the fragment, integrate it into existing page source and republish to upgrade existing custom navigation. canvas-nav-tabs remains an in-page tab control.',
|
|
1597
|
-
'Canvas form-drawer, table-form and trend-combo samples include the maintained CanvasThemeProvider, read the current application CSS variables, and prevent loading-mask border flashes caused by late CSS resets.',
|
|
1598
|
-
'form-fields demonstrates field layout, not a default divider design. Choose dividerType for the current business page before creating forms; keep same-level sections consistent and vary different business pages when appropriate.',
|
|
1599
|
-
'openyida-page-template canvas-theme outputs the same provider as a reusable fragment; combine its imports and code with the business page in one Canvas file, keeping its scoped loading-mask style. Existing pages must update their provider and be republished; changing application theme CSS alone does not upgrade embedded provider code.',
|
|
1600
|
-
'openyida-page-template form-open-container extracts the maintained Canvas form drawer. Merge its imports, CanvasDrawer, FormOpenContainer, useYidaFormOpen and helpers; bind openForm(request) and render formOpenContainer. Do not replace it with a similarly named custom drawer.',
|
|
1601
|
-
'canvas-admin-entry includes canvas-navigation and a theme-aware business-workbench button. Visibility uses the current app-scoped loginUser.isAppAdmin flag (y/true only), matching g_config/pageConfig app identity with conflicts kept unknown, never CLI identities or a copied admin list. Configure a verified business page ID; unknown identity stays hidden and backend authorization remains authoritative.',
|
|
1602
|
-
'canvas-view-state restores the current local task view, allowlisted non-sensitive enum filters and page through URL state, preserving unrelated query/hash/history metadata. Use only without an existing router or unsaved-edit blockers; drafts, per-task caches and scroll need explicit policies. Verify iframe refresh/return behavior in the host. Business writes require verified server-side role, record, field and state-transition authorization; hidden buttons do not grant or enforce it.',
|
|
1603
|
-
'Extract canvas-theme before antd UI and canvas-navigation before cross-page actions; use verified target types and resource IDs. Local tabs use state. Compile/publish reject known app-prefix omissions and fixed ConfigProvider brand colors; runtime theme and destination verification is still required.',
|
|
1604
|
-
],
|
|
1605
1411
|
args: [
|
|
1606
1412
|
{ name: 'skill', type: 'string', source: 'positional', position: 0, description: 'Required when copying a sample.' },
|
|
1607
1413
|
{ name: 'name', type: 'string', source: 'positional', position: 1, description: 'Required when copying a sample; use --list for available names.' },
|
|
1608
1414
|
{ name: 'list', type: 'boolean', source: 'option', builder_options: ['--list'] },
|
|
1609
|
-
{ name: 'output', type: 'file', source: 'option', builder_options: ['--output']
|
|
1610
|
-
{ name: 'var', type: 'string', source: 'option', builder_options: ['--var'], repeatable: true, description: '
|
|
1611
|
-
{ name: 'designFile', type: 'file', source: 'option', builder_options: ['--design-file'], description: '
|
|
1612
|
-
{ name: 'styleId', type: 'string', source: 'option', builder_options: ['--style-id'], description: 'Required only for yida-design application-style. Accepts any themeId from design-plan catalog, including shared themes and free-creative. Exports design.md, app_theme.css and form-layout.json with brand placeholders; accepts neither --design-file nor --var.' },
|
|
1415
|
+
{ name: 'output', type: 'file', source: 'option', builder_options: ['--output'] },
|
|
1416
|
+
{ name: 'var', type: 'string', source: 'option', builder_options: ['--var'], repeatable: true, description: 'Template assignment KEY=VALUE; repeat --var for multiple variables.' },
|
|
1417
|
+
{ name: 'designFile', type: 'file', source: 'option', builder_options: ['--design-file'], description: 'Design tokens for yida-design app-theme; preserves custom CSS when updating.' },
|
|
1613
1418
|
],
|
|
1614
1419
|
}),
|
|
1615
1420
|
command('doctor', ['doctor'], 'doctor [--fix]', 'help.cmd_doctor', { requiresLogin: false }),
|
|
@@ -1636,13 +1441,6 @@ const COMMAND_GROUPS = [
|
|
|
1636
1441
|
output: 'text|json',
|
|
1637
1442
|
}),
|
|
1638
1443
|
command('asset', ['asset'], 'asset <status|resolve|sources> [options]', 'help.cmd_asset', {
|
|
1639
|
-
noteKeys: ['asset.sourceRecords'],
|
|
1640
|
-
notes: ['resolve --page-id <pageId> selects a page from --design or input assetStrategy; output contains only that page. Use distinct --manifest paths for concurrent page jobs. Host search follows collection_policy; resolve performs one attempt per supplied candidate. Verified hotlink-allowed URLs are delivered directly without login or appType. Draft assets accept hotlinkAllowed/rehostAllowed booleans and deliveryMode=auto|upload. Stock CDN URLs allow hotlinking by default; Unsplash requires hotlinking unless separate rehosting permission is recorded. --upload-assets requests permitted hosting; upload failure keeps only a verified hotlink-allowed original URL.'],
|
|
1641
|
-
args: [
|
|
1642
|
-
{ name: 'pageId', type: 'string', source: 'option', builder_options: ['--page-id'], description: 'Resolve only this page; requires design or input assetStrategy.' },
|
|
1643
|
-
{ name: 'appType', type: 'string', source: 'option', builder_options: ['--app-type'], description: 'Target application for uploads; direct URLs need no application.' },
|
|
1644
|
-
{ name: 'uploadAssets', type: 'boolean', source: 'option', builder_options: ['--upload-assets'], description: 'Request hosting where rehosting is allowed; otherwise use verified direct URLs by default.' },
|
|
1645
|
-
],
|
|
1646
1444
|
requiresLogin: false,
|
|
1647
1445
|
output: 'text|json',
|
|
1648
1446
|
}),
|
|
@@ -1676,7 +1474,6 @@ function localizeCommand(entry, translate) {
|
|
|
1676
1474
|
deprecated_patterns: cloneJsonMetadata(entry.deprecatedPatterns, []),
|
|
1677
1475
|
repair_patterns: cloneJsonMetadata(entry.repairPatterns, []),
|
|
1678
1476
|
examples: entry.examples,
|
|
1679
|
-
notes: [...cloneJsonMetadata(entry.notes, []), ...(entry.noteKeys || []).map(key => translate(key))],
|
|
1680
1477
|
hidden: entry.hidden,
|
|
1681
1478
|
side_effect: cloneSideEffect(entry.sideEffect),
|
|
1682
1479
|
permission: clonePermission(entry.permission),
|
|
@@ -1749,35 +1546,12 @@ function summarizeLocalizedCommands(commands) {
|
|
|
1749
1546
|
default_ui_guidance_skill_id: 'yida-design',
|
|
1750
1547
|
requirement_analysis_skill_id: 'yida-requirement-analysis',
|
|
1751
1548
|
requirement_brief_path: '.cache/openyida/<project>/requirement-brief.json',
|
|
1752
|
-
visual_decision_policy: getVisualDecisionPolicy(),
|
|
1753
|
-
user_visible_expression_policy: {
|
|
1754
|
-
reference: 'yida-skills/skills/yida-design/references/ask-human-interaction-contract.md',
|
|
1755
|
-
audience: 'nontechnical_user',
|
|
1756
|
-
wording: 'Use everyday language, concrete business names and short sentences. Lead with the result or action; explain necessary technical terms on first use.',
|
|
1757
|
-
progress: 'Say what is happening and what happens next. Report completed work from verified results.',
|
|
1758
|
-
image_progress: 'Use 素材采集&应用创建 as the progress description while image collection and app creation are both running; otherwise use the active stage name. Keep the todo items separate. Record image counts, slots, subtasks and execution details internally.',
|
|
1759
|
-
todo: {
|
|
1760
|
-
templates: 'yida-skills/skills/yida-design/references/ask-human-interaction-contract.md#步骤列表与进度',
|
|
1761
|
-
titles: 'Use the exact short stage titles for the selected mode; keep app, forms, sample data, images, pages and publication as separate items.',
|
|
1762
|
-
scope: 'Select stages needed by the agreed scope; omit app creation for an existing app and omit unused sample-data/image stages.',
|
|
1763
|
-
updates: 'Keep titles and display order stable; update statuses and retain completed items. Display order permits parallel work.',
|
|
1764
|
-
details: 'Put business details in progress messages; record commands, task IDs, authorization context and timings internally. Put requested timing summaries in the report.',
|
|
1765
|
-
},
|
|
1766
|
-
questions: 'Ask one concrete decision and explain each option by what the user can do.',
|
|
1767
|
-
failures: 'State what failed, the actual impact and the next safe action. Explain only evidenced causes; describe unknown outcomes as pending verification.',
|
|
1768
|
-
waiting: 'Explain what is taking time and what can continue. Give time estimates only with a basis and update them when circumstances change.',
|
|
1769
|
-
diagnostics: 'Keep exact technical fields and error codes in tool results and implementation handoffs; explain them when the user asks for technical details.',
|
|
1770
|
-
},
|
|
1771
1549
|
optional_asset_branch: {
|
|
1772
1550
|
skill_id: 'yida-image-assets',
|
|
1773
|
-
collection_policy: getMaterialSourcingGuidance().collectionPolicy,
|
|
1774
|
-
failure_policy: getMaterialSourcingGuidance().failurePolicy,
|
|
1775
|
-
completion_policy: getMaterialSourcingGuidance().completionPolicy,
|
|
1776
|
-
scheduling_policy: getMaterialSourcingGuidance().schedulingPolicy,
|
|
1777
1551
|
trigger: 'Any page is imageNeed=required, or imageNeed=beneficial with declared image slots.',
|
|
1778
|
-
output_path: 'prd/<project>/asset-
|
|
1552
|
+
output_path: 'prd/<project>/asset-manifest.json',
|
|
1779
1553
|
skip: 'All pages are imageNeed=none.',
|
|
1780
|
-
dependency_policy: '
|
|
1554
|
+
dependency_policy: 'Only blocks pages that consume the declared image slots.',
|
|
1781
1555
|
},
|
|
1782
1556
|
artifact_generation: {
|
|
1783
1557
|
mode: 'parallel',
|
|
@@ -1790,89 +1564,26 @@ function summarizeLocalizedCommands(commands) {
|
|
|
1790
1564
|
join_owner_skill_id: 'yida-app',
|
|
1791
1565
|
},
|
|
1792
1566
|
ordinary_jsx_skill_id: 'yida-custom-page',
|
|
1793
|
-
form_page_policy: 'Use yida-create-form-page for form structure
|
|
1794
|
-
divider_style_contract: {
|
|
1795
|
-
reference: 'yida-skills/skills/yida-create-form-page/references/form-field-properties.md#divider',
|
|
1796
|
-
input: 'fields[].dividerType (also inside layout children); field JSON, not a CLI flag',
|
|
1797
|
-
schema_path: 'Divider.props.type',
|
|
1798
|
-
supported_types: DIVIDER_TYPES,
|
|
1799
|
-
fallback: DEFAULT_DIVIDER_TYPE,
|
|
1800
|
-
selection: 'Choose by each page business task and visual weight; keep same-level sections consistent within a page. Prefer suitable variation across different business pages. If the scene is unclear or suitable candidates tie, shuffle compatible candidates and rotate across pages, preferring unused styles until exhausted. Record one choice per page in design.md and dividerType before compilation; retries reuse it. Preserve existing supported styles for local edits.',
|
|
1801
|
-
invalid_input: 'INVALID_DIVIDER_TYPE diagnostics; create rejects with CREATE_FORM_INVALID_DIVIDER_TYPE. Never silently replace a supplied unsupported style.',
|
|
1802
|
-
},
|
|
1567
|
+
form_page_policy: 'Use yida-create-form-page for form structure. Use create-form.batch to create independent normal forms concurrently, resolve dependencies from real IDs and read back fields; apply shared app configuration and navigation order afterward. Never inject CSS, JavaScript, HTML, or theme code into native forms or formDetail pages; the platform renders those pages.',
|
|
1803
1568
|
page_skill_policy: 'Use YidaCodeCanvas by default for new primary custom pages. Choose yida-custom-page only when the current target has been identified as existing .oyd.jsx/.oyb.jsx/renderJsx/platform Jsx component maintenance; do not switch to yida-custom-page merely because a page needs data, forms, uploads, this.utils.yida.*, or dataSourceMap-like capabilities.',
|
|
1804
|
-
|
|
1805
|
-
scope: 'Ordinary page-level form creation, submission and detail actions in frontend and backend, Fast and Plan; full-code pages are not exempt.',
|
|
1806
|
-
reference: 'yida-skills/skills/yida-canvas-custom-page/references/navigation-and-entry-guide.md#标准-formopencontainer',
|
|
1807
|
-
sample_command: 'openyida sample openyida-page-template form-open-container --output .cache/samples/form-open-container.jsx',
|
|
1808
|
-
integration: 'Merge CanvasDrawer, FormOpenContainer, useYidaFormOpen, imports and helpers. Bind openForm(request) and render formOpenContainer. Keep iframe, header controls, resize handlers and close refresh; desktop uses the drawer, mobile opens the native form.',
|
|
1809
|
-
validation_command_ids: ['check-page', 'compile', 'publish'],
|
|
1810
|
-
verification: 'Canvas preflight uses compile <source> --json; check-page is the legacy platform JSX preflight. Source checks detect recognized direct links, homemade overlays and incomplete template wiring; verify actual form interactions after publishing. Static checks do not prove all dynamic actions.',
|
|
1811
|
-
exceptions: 'Search/filter controls are not form submission. Explicit batch entry uses the table-form skill. Planned application navigation may embed a native form in its main content; this does not exempt page action buttons.',
|
|
1812
|
-
},
|
|
1813
|
-
plan_command_ids: ['design-plan.catalog', 'design-plan.init', 'design-plan.preview', 'design-plan.materialize', 'design-plan.patch'],
|
|
1569
|
+
plan_command_ids: ['design-plan.init', 'design-plan.preview', 'design-plan.materialize', 'design-plan.patch'],
|
|
1814
1570
|
theme_command_ids: ['sample', 'create-app', 'update-app'],
|
|
1815
1571
|
navigation_command_ids: { platform: ['update-app', 'nav-group'], custom: ['update-app', 'update-form-config', 'get-form-config'] },
|
|
1816
|
-
navigation_policy: 'Before PRD planning
|
|
1817
|
-
design_mode_policy: 'Analyze requirements first
|
|
1818
|
-
product_design_policy: 'yida-requirement-analysis owns shared facts and first-time intake. yida-prd owns business planning; yida-design owns visual design. Reuse the same confirmed brief and supplied details. Prepare business and base visuals concurrently, then bind visuals to settled page tasks. yida-app merges and checks the artifacts before creating resources. Plan
|
|
1819
|
-
ui_guidance_policy: 'Page implementation consumes yida-prd prd.md for positioning, information architecture, page prototype, native form entry policy, material strategy, business-specific checks, resource creation order, page implementation delivery order, navigation order, and acceptance criteria; it consumes yida-design design.md for app custom theme CSS delivery, themeColor/navTheme, visual states, visualScaffold, surface material, rounded rules, density rules, components, state styling, and page-level imageNeed. When a page is imageNeed=required, or beneficial with declared image slots, yida-image-assets prepares a traceable asset manifest
|
|
1820
|
-
default_nav_order_policy: 'For
|
|
1821
|
-
final_link_policy: 'Return exactly one user-visible application entry group, never one artifact or link card per form, process, report, schema, manifest, PRD, design file, or intermediate artifact.
|
|
1822
|
-
entry_navigation_contract: {
|
|
1823
|
-
reference: 'yida-skills/skills/yida-app/references/entry-navigation.md',
|
|
1824
|
-
brief_path: 'entryRecommendation',
|
|
1825
|
-
plan_path: 'execution.entryRecommendation',
|
|
1826
|
-
input_transport: 'JSON file or design-plan patch --set execution.entryRecommendation=<json>; not a CLI flag',
|
|
1827
|
-
modes: [...ENTRY_MODES],
|
|
1828
|
-
mode_meaning: 'These modes describe how people use the application, not developer administration: unified shares business pages with role-based menus and permissions; service-management separates pages for people requesting a service and people processing it; frontend-only delivers only the requested frontend; backend-only delivers staff pages for recording, processing or maintaining business, with service requests originating elsewhere or no service entry required. For frontend-only submissions that need processing, record the existing system, staff entry or automation in reason and business flows; unresolved handling remains an open question. Backend-only entries use role management; new unified plans normally use workspace, while legacy unified plans retain their roles. Different roles alone do not require separate frontends and backends. Separate entries can share one application and its data.',
|
|
1829
|
-
user_facing_explanation: 'Say whether the system has separate frontend and business-backend pages, then explain who uses each entry, what they see and what they can do. Choose from confirmed tasks; if actual usage is unclear and changes the page plan, ask a concrete business-use question.',
|
|
1830
|
-
derived_summary: 'execution.entryModeSummary is generated for PRD and preview from the selected mode; do not author it in build-plan.json.',
|
|
1831
|
-
roles: ['service', 'management', 'workspace'],
|
|
1832
|
-
entry_required_fields: ['key', 'name', 'role', 'menu', 'defaultMenuKey'],
|
|
1833
|
-
service_page_binding: 'sceneKey of a standalone page',
|
|
1834
|
-
page_navigation_policy: getPageNavigationContract(),
|
|
1835
|
-
local_menu_binding: 'Every entry containing local menus, including management/workspace, requires sceneKey matching exactly one page; each local menu requires resource equal to that page name and a nonempty viewKey.',
|
|
1836
|
-
menu_target_types: ['local', 'submission', 'page', 'custom'],
|
|
1837
|
-
menu_resource_reference: 'planned resource name; resolve to real formUuid before runtime',
|
|
1838
|
-
menu_optional_fields: ['viewUuid', 'viewKey'],
|
|
1839
|
-
planned_access_fields: ['resource', 'operation', 'dataScope', 'viewUuid?'],
|
|
1840
|
-
leaf_access_required: 'Every leaf menu in every role requires access: OPERATE_CREATE for submission, OPERATE_VIEW otherwise, with matching target resource and viewUuid. These declarations do not grant permissions.',
|
|
1841
|
-
runtime: {
|
|
1842
|
-
applies_to: 'Confirmed page-owned application menus only. Platform-shell management pages use platform menus and content-only pages; same-task Tabs do not require canvas-nav-data or a navigation shell.',
|
|
1843
|
-
sample: 'canvas-nav-data',
|
|
1844
|
-
loader: 'loadCanvasNavigation',
|
|
1845
|
-
parameters: ['items', 'appType?', 'formUuid?', 'csrfToken?', 'hiddenNav?', 'signal?', 'mode?', 'resolveAccess?'],
|
|
1846
|
-
app_type_required: 'platform, independent or any declared access',
|
|
1847
|
-
modes: ['local', 'platform', 'independent'],
|
|
1848
|
-
local_policy: 'Presentation-only views require key/viewKey/targetType=local and no href/url; no platform navigation request. Declared access still requires real resolveAccess. Business data and mutations retain platform permission checks.',
|
|
1849
|
-
platform_policy: 'Every leaf binds formUuid/navUuid. Local views must not be filtered through platform navigation; configuration errors fail before network requests.',
|
|
1850
|
-
layout_policy: 'Long pages use canvas-nav-content layout=document with natural height; canvas-nav-top uses headerOnly and overlay. Default full-width sticky header; navigationPosition=fixed stays within page bounds when the host prevents sticky. Workspace retains bounded flex and inner scrolling.',
|
|
1851
|
-
default_mode: 'platform',
|
|
1852
|
-
mode_meaning: 'Permission/filtering source for an already planned custom menu; platform mode does not mean platform-shell pages should render another menu.',
|
|
1853
|
-
resolve_access_required: 'independent mode or any declared access',
|
|
1854
|
-
resolve_access_input: ['appType', 'requirements', 'signal'],
|
|
1855
|
-
requirement_fields: ['formUuid', 'operation', 'viewUuid?'],
|
|
1856
|
-
resolve_access_output: '{appType,grants:[{formUuid,operation,viewUuid?,allowed:boolean}]}',
|
|
1857
|
-
builtin_permission_adapter: false,
|
|
1858
|
-
permission_policy: 'Current viewer, exact resource/operation/view and allowed===true; errors never fall back to unrestricted menus. dataScope is enforced by platform permissions, not menu filtering.',
|
|
1859
|
-
},
|
|
1860
|
-
},
|
|
1572
|
+
navigation_policy: 'Before PRD planning, reuse explicit navigation choices. During first-time intake, ask only when ownership is unknown and offer exactly two neutral options with no preselection: "宜搭原生导航" (使用宜搭自带的导航菜单。) and "自定义导航" (在自定义页面里定制菜单的样式和操作方式,替代宜搭自带的导航菜单。). Native means platform navigation. The agent chooses layout from module count, hierarchy, switching frequency, content width and target device; do not ask layout or presentation-style questions. Prefer top for few shallow modules and wide content, side for many frequently accessed modules, L-shaped/mixed for business domains with child modules, and custom dock for lightweight mobile entries. Preserve user-specified layouts. Store resolved type/source/reason/variant in the brief, distinguishing user ownership from agent layout reasoning. Platform navigation uses update-app --layout top|side|l_shape --show-app-nav, which writes layoutDirection=top|side|l_shape and hideAppNav=n. Preserve stored navType unchanged; do not derive or invent it and do not add a --nav-type option. Without --layout, normalize stored legacy layoutDirection and navType using the yc-utils application rules (hoz plus top_side means l_shape; missing layout uses top_fold/top_side for top/l_shape). Shell page-level top_fold/none overrides do not belong in app settings. Custom side/top/mixed/dock is a page layout and requires app and per-page navigation hiding with readback. Verify persisted layoutDirection and hideAppNav; updatedFields and themeVerification do not prove navigation persistence. Navigation tone is separate from layout.',
|
|
1573
|
+
design_mode_policy: 'Analyze requirements first. First-time builds include new apps and existing apps without business pages. Reuse detailed supplied plans; if the mode is unspecified, ask whether to prepare a PRD for confirmation (Plan, more detailed and slower) or build from the supplied requirements (Fast). Without detailed requirements, offer Fast and Plan neutrally. Confirm unresolved navigation ownership, visual style and page scope before planning or resource creation; the agent determines navigation layout from the business context without a layout question. Existing business apps only clarify the current change. A named resource-only request with explicitScope.allowInferredResources=false skips unrelated navigation and visual questions. Standard Plan uses design-plan init parallelTasks, then executes the returned materialize.command exactly once with business-file and visual-file; preview and --from-preview are only for explicitly incremental large plans. Confirm the displayed revision before building, and do not materialize or patch again after confirmation.',
|
|
1574
|
+
product_design_policy: 'yida-requirement-analysis owns shared facts and first-time intake. yida-prd owns business planning; yida-design owns visual design. Reuse the same confirmed brief and supplied details. Prepare business and base visuals concurrently, then bind visuals to settled page tasks. yida-app merges and checks the artifacts before creating resources. Plan uses the compact authoring contract and selected theme context; the CLI reads full templates and renders all artifacts.',
|
|
1575
|
+
ui_guidance_policy: 'Page implementation consumes yida-prd prd.md for positioning, information architecture, page prototype, native form entry policy, material strategy, business-specific checks, resource creation order, page implementation delivery order, navigation order, and acceptance criteria; it consumes yida-design design.md for app custom theme CSS delivery, themeColor/navTheme, visual states, visualScaffold, surface material, rounded rules, density rules, components, state styling, and page-level imageNeed. When a page is imageNeed=required, or beneficial with declared image slots, yida-image-assets prepares a traceable asset manifest before that page is implemented; imageNeed=none skips the branch. prd.md and design.md remain the only design sources of truth. Page implementation may extract page-spec.json as a derived implementation handoff from prd.md + design.md; conflicts are resolved by sending business conflicts to yida-prd and visual conflicts to yida-design before regenerating the spec. Core normal forms default to 1-3 business sample records before page implementation, followed by query readback. An explicit opt-out, configuration dictionary, sensitive data, or lack of safely constructible values requires a recorded skip reason. Screenshots, public sharing, data-source deep binding, and fine navigation grouping are optional after explicit user request or PRD acceptance criteria.',
|
|
1576
|
+
default_nav_order_policy: 'For custom navigation, implement PRD navigation order in the custom shell and verify app/page navigation hiding; skip platform nav-group ordering. For platform navigation: after the primary page is successfully published, perform exactly one navigation order operation. If the PRD names a navigation order, publish without --auto-nav-order and then call openyida nav-group order <appType> <items...>. If the PRD only gives broad groups or is missing navigation order, use openyida publish ... --auto-nav-order and do not call nav-group order or auto-order afterward. Explicit and automatic ordering are mutually exclusive; never generate per-item move loops. The fallback priority is portal/home/workbench entry > business handling > data management > business analytics > system configuration.',
|
|
1577
|
+
final_link_policy: 'Return exactly one user-visible application entry group, never one artifact or link card per form, process, report, schema, manifest, PRD, design file, or intermediate artifact. The group always contains the app workbench URL. Add the clean custom page URL only when PRD entryMode=standalone and get-form-config readback confirms isRenderNav=false. Add the admin URL only when agent-capabilities application_entry_policy.entries.admin=include. Summarize other business resources in prose by default, but every resource count, seed-record count, and completed/verified claim must come from that resource\'s own successful result or readback. When the user or caller explicitly requests a resource manifest, resource UUIDs/IDs, publish status, or test-data summary, include one concise verified delivery manifest in the final prose and do not substitute link cards for it.',
|
|
1861
1578
|
application_entry_policy: {
|
|
1862
1579
|
delivery_unit: 'single_application_entry_group',
|
|
1863
|
-
workbench: {
|
|
1864
|
-
include: 'when_workspace_in_scope',
|
|
1865
|
-
url: '{base_url}/{appType}/workbench',
|
|
1866
|
-
task_url: '{base_url}/{appType}/workbench/{formUuid}',
|
|
1867
|
-
view_parameter: 'viewUuid',
|
|
1868
|
-
selection: 'one verified planned management default; use real resource/view IDs; no homepage required',
|
|
1869
|
-
},
|
|
1580
|
+
workbench: { include: 'always', url: '{base_url}/{appType}/workbench' },
|
|
1870
1581
|
custom: {
|
|
1871
1582
|
include: 'when_entry_mode_standalone_and_is_render_nav_false_readback',
|
|
1872
1583
|
url: '{base_url}/{appType}/custom/{formUuid}',
|
|
1873
1584
|
},
|
|
1874
1585
|
admin: {
|
|
1875
|
-
include: '
|
|
1586
|
+
include: 'follow_agent_capabilities_application_entry_policy',
|
|
1876
1587
|
url: '{base_url}/{appType}/admin',
|
|
1877
1588
|
},
|
|
1878
1589
|
internal_artifacts: 'never_user_visible',
|
|
@@ -1906,7 +1617,7 @@ function summarizeLocalizedCommands(commands) {
|
|
|
1906
1617
|
'yida-data-source-connectors',
|
|
1907
1618
|
'yida-dashboard',
|
|
1908
1619
|
],
|
|
1909
|
-
completion_contract: '
|
|
1620
|
+
completion_contract: 'Resolve context, organize requirements and settle navigation before PRD planning. Fast generates prd.md and design.md in parallel; Plan uses design-plan init/preview/materialize/patch and confirms the current revision. Validate both artifacts, create or reuse app and core forms/processes, seed and query-check core normal-form samples or record an allowed skip reason, then implement the primary page in PRD resource order, publish it, apply PRD navigation order or lightweight fallback navigation order for platform navigation, or verify app and per-page hiding for custom navigation, and return one named application entry group. The group contains workbench, conditionally a verified standalone custom entry, and admin only for non-cloud agents. Business resources are summarized instead of emitted as individual delivery artifacts.',
|
|
1910
1621
|
},
|
|
1911
1622
|
},
|
|
1912
1623
|
};
|