openyida 2026.9.15 → 2026.9.16-2
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 +8 -3
- package/bin/yida.js +4 -1
- package/lib/app/app-list.js +7 -3
- package/lib/app/application-entry-urls.js +31 -0
- package/lib/app/canvas-compile.js +8 -0
- package/lib/app/canvas-icon-exports.json +6160 -0
- package/lib/app/canvas-icon-guard.js +87 -0
- package/lib/app/canvas-navigation-guard.js +84 -0
- package/lib/app/canvas-path-guard.js +78 -0
- package/lib/app/canvas-theme-guard.js +184 -0
- package/lib/app/check-prd-completeness.js +7 -0
- package/lib/app/create-app.js +4 -1
- package/lib/app/create-form.js +4 -4
- package/lib/app/services/form-compiler.js +4 -4
- package/lib/app/theme-from-design.js +8 -2
- package/lib/app/theme-presets.js +1 -1
- package/lib/asset/ai-image.js +57 -9
- package/lib/asset/asset-cmd.js +14 -6
- package/lib/asset/asset-execution.js +79 -0
- package/lib/asset/asset-plan.js +66 -4
- package/lib/asset/asset-resolve.js +51 -10
- package/lib/asset/asset-status.js +5 -4
- package/lib/asset/host-capabilities.js +11 -2
- package/lib/asset/url-verify.js +19 -4
- package/lib/core/agent-capabilities.js +12 -2
- package/lib/core/command-manifest.js +147 -20
- package/lib/core/locales/en.js +19 -2
- package/lib/core/locales/zh.js +19 -2
- package/lib/core/redact.js +15 -10
- package/lib/core/sample.js +29 -17
- package/lib/design-plan/design-plan.js +7 -2
- package/lib/design-plan/entry-navigation.js +89 -0
- package/lib/design-plan/init.js +82 -12
- package/lib/design-plan/materialize.js +113 -67
- package/lib/design-plan/navigation-policy.js +38 -0
- package/lib/design-plan/normalize.js +47 -1
- package/lib/design-plan/parallel.js +9 -3
- package/lib/design-plan/patch.js +34 -6
- package/lib/design-plan/preview.js +3 -2
- package/lib/design-plan/validate.js +30 -5
- package/lib/design-plan/visual-policy.js +17 -0
- package/lib/samples/openyida-scaffold/canvas-admin-entry.jsx +62 -0
- package/lib/samples/openyida-scaffold/canvas-form-drawer.canvas.jsx +17 -87
- package/lib/samples/openyida-scaffold/canvas-nav/content.jsx +93 -13
- package/lib/samples/openyida-scaffold/canvas-nav/data.jsx +100 -18
- package/lib/samples/openyida-scaffold/canvas-nav/top.jsx +10 -5
- package/lib/samples/openyida-scaffold/canvas-navigation.jsx +56 -0
- package/lib/samples/openyida-scaffold/canvas-view-state.jsx +74 -0
- package/lib/samples/yida-canvas-table-form/table-form-batch-submit.canvas.jsx +9 -83
- package/lib/samples/yida-rechart/trend-combo.canvas.jsx +14 -87
- package/package.json +2 -1
- package/scripts/postinstall.js +3 -3
- package/yida-skills/SKILL.md +14 -12
- package/yida-skills/skills/yida-app/SKILL.md +25 -19
- package/yida-skills/skills/yida-app/references/entry-navigation.md +171 -0
- package/yida-skills/skills/yida-app/workflow/parallel-work.md +12 -3
- 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 +11 -13
- package/yida-skills/skills/yida-app/workflow/plan/workflow.md +8 -8
- package/yida-skills/skills/yida-app/workflow/step-1-resource-context.md +4 -2
- package/yida-skills/skills/yida-app/workflow/step-2-design.md +18 -6
- package/yida-skills/skills/yida-app/workflow/step-3-create-or-reuse-app.md +4 -2
- package/yida-skills/skills/yida-app/workflow/step-4-forms-processes.md +9 -1
- package/yida-skills/skills/yida-app/workflow/step-6-main-page.md +6 -4
- package/yida-skills/skills/yida-app/workflow/step-7-page-code.md +13 -7
- package/yida-skills/skills/yida-app/workflow/step-8-publish-navigation.md +17 -6
- package/yida-skills/skills/yida-app/workflow/step-9-output-finish.md +52 -19
- package/yida-skills/skills/yida-canvas-custom-page/SKILL.md +39 -40
- package/yida-skills/skills/yida-canvas-custom-page/references/canvas-style-implementation-guide.md +19 -11
- package/yida-skills/skills/yida-canvas-custom-page/references/canvas-theme-provider.md +71 -50
- package/yida-skills/skills/yida-canvas-custom-page/references/component-library-guide.md +11 -1
- package/yida-skills/skills/yida-canvas-custom-page/references/navigation-and-entry-guide.md +100 -71
- package/yida-skills/skills/yida-canvas-custom-page/references/page-generation-guide.md +16 -13
- package/yida-skills/skills/yida-canvas-custom-page/references/view-state-recovery.md +52 -0
- package/yida-skills/skills/yida-canvas-custom-page/scripts/build-canvas-theme.js +29 -3
- package/yida-skills/skills/yida-canvas-custom-page/scripts/canvas-theme-provider.template.jsx +62 -6
- package/yida-skills/skills/yida-canvas-data-binding/SKILL.md +2 -0
- package/yida-skills/skills/yida-canvas-data-binding/references/business-action-permissions.md +31 -0
- package/yida-skills/skills/yida-create-app/SKILL.md +2 -0
- package/yida-skills/skills/yida-create-form-page/SKILL.md +23 -15
- package/yida-skills/skills/yida-custom-page/SKILL.md +2 -0
- package/yida-skills/skills/yida-custom-page/references/design-system.md +1 -1
- package/yida-skills/skills/yida-design/SKILL.md +8 -2
- package/yida-skills/skills/yida-design/references/ask-human-interaction-contract.md +61 -39
- package/yida-skills/skills/yida-design/references/asset-workflow.md +6 -2
- package/yida-skills/skills/yida-design/references/design-mode.md +2 -2
- package/yida-skills/skills/yida-design/references/navigation-decision.md +50 -0
- package/yida-skills/skills/yida-design/references/page-continuity.md +44 -0
- package/yida-skills/skills/yida-design/references/style-design-selection.md +13 -1
- package/yida-skills/skills/yida-design/references/theme/app-custom-theme-template.css +2 -2
- package/yida-skills/skills/yida-design/references/visual-decision-engine.md +5 -28
- package/yida-skills/skills/yida-design/sub_skill/yida-design-plan/SKILL.md +4 -4
- package/yida-skills/skills/yida-design/sub_skill/yida-design-plan/references/build-plan-compact-schema.md +32 -13
- package/yida-skills/skills/yida-design/sub_skill/yida-design-plan/references/build-plan-schema.md +27 -151
- package/yida-skills/skills/yida-design/sub_skill/yida-design-plan/references/visual-design.md +8 -2
- package/yida-skills/skills/yida-design/sub_skill/yida-design-plan/references/visual-theme-selection.md +17 -13
- package/yida-skills/skills/yida-design/sub_skill/yida-design-plan/scripts/render_build_plan.py +26 -0
- package/yida-skills/skills/yida-design/sub_skill/yida-design-plan/scripts/validate_design_themes.py +29 -0
- package/yida-skills/skills/yida-design/sub_skill/yida-design-plan/templates/design-themes/README.md +13 -1
- package/yida-skills/skills/yida-design/sub_skill/yida-design-plan/templates/design-themes/airy-media-grid.md +86 -87
- package/yida-skills/skills/yida-design/sub_skill/yida-design-plan/templates/design-themes/airy-modular-clarity.md +85 -103
- package/yida-skills/skills/yida-design/sub_skill/yida-design-plan/templates/design-themes/airy-structured-clarity.md +73 -97
- package/yida-skills/skills/yida-design/sub_skill/yida-design-plan/templates/design-themes/ambient-halo-layered.md +91 -95
- package/yida-skills/skills/yida-design/sub_skill/yida-design-plan/templates/design-themes/basic-tokens.json +101 -0
- package/yida-skills/skills/yida-design/sub_skill/yida-design-plan/templates/design-themes/dark-focus-layered.md +82 -110
- package/yida-skills/skills/yida-design/sub_skill/yida-design-plan/templates/design-themes/dark-luminous-modular.md +86 -94
- package/yida-skills/skills/yida-design/sub_skill/yida-design-plan/templates/design-themes/deep-stage-duotone.md +91 -98
- package/yida-skills/skills/yida-design/sub_skill/yida-design-plan/templates/design-themes/hairline-runway-clarity.md +88 -99
- package/yida-skills/skills/yida-design/sub_skill/yida-design-plan/templates/design-themes/high-contrast-modular.md +84 -109
- package/yida-skills/skills/yida-design/sub_skill/yida-design-plan/templates/design-themes/interlocked-vivid-modules.md +83 -88
- package/yida-skills/skills/yida-design/sub_skill/yida-design-plan/templates/design-themes/matrix-grid-focus.md +85 -93
- package/yida-skills/skills/yida-design/sub_skill/yida-design-plan/templates/design-themes/media-rail-inspector.md +87 -85
- package/yida-skills/skills/yida-design/sub_skill/yida-design-plan/templates/design-themes/mist-layered-signal.md +88 -95
- package/yida-skills/skills/yida-design/sub_skill/yida-design-plan/templates/design-themes/modular-rail-signal.md +90 -101
- package/yida-skills/skills/yida-design/sub_skill/yida-design-plan/templates/design-themes/mono-grid-signal.md +87 -99
- package/yida-skills/skills/yida-design/sub_skill/yida-design-plan/templates/design-themes/ribbon-ledger-lift.md +86 -92
- package/yida-skills/skills/yida-design/sub_skill/yida-design-plan/templates/design-themes/segmented-meter-clarity.md +85 -93
- package/yida-skills/skills/yida-design/sub_skill/yida-design-plan/templates/design-themes/split-rail-precision.md +86 -88
- package/yida-skills/skills/yida-design/sub_skill/yida-design-plan/templates/design-themes/status-framed-media-grid.md +82 -85
- package/yida-skills/skills/yida-design/workflow/output-design.md +5 -3
- 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 +3 -2
- package/yida-skills/skills/yida-design/workflow/step-4-wireframe-interaction.md +1 -1
- package/yida-skills/skills/yida-image-assets/SKILL.md +73 -50
- package/yida-skills/skills/yida-image-assets/references/manifest-contract.md +53 -54
- package/yida-skills/skills/yida-image-assets/references/source-policy.md +14 -15
- package/yida-skills/skills/yida-login/SKILL.md +2 -0
- package/yida-skills/skills/yida-nav-group/SKILL.md +4 -2
- package/yida-skills/skills/yida-nav-shell/SKILL.md +34 -10
- package/yida-skills/skills/yida-nav-shell/references/nav-shell-patterns.md +73 -136
- package/yida-skills/skills/yida-page-config/SKILL.md +3 -3
- package/yida-skills/skills/yida-prd/SKILL.md +2 -1
- package/yida-skills/skills/yida-prd/references/app/blueprint.md +1 -1
- package/yida-skills/skills/yida-prd/references/app/navigation-patterns.md +6 -3
- package/yida-skills/skills/yida-prd/references/plan-content.md +4 -0
- package/yida-skills/skills/yida-prd/workflow/output-prd.md +13 -7
- package/yida-skills/skills/yida-prd/workflow/plan-business.md +3 -3
- package/yida-skills/skills/yida-prd/workflow/step-2-information-architecture.md +8 -6
- package/yida-skills/skills/yida-publish-page/SKILL.md +4 -0
- package/yida-skills/skills/yida-requirement-analysis/SKILL.md +10 -39
- package/yida-skills/skills/yida-requirement-analysis/references/experience-groups.md +23 -0
- package/yida-skills/skills/yida-requirement-analysis/references/handoff.md +68 -0
- package/yida-skills/skills/yida-requirement-analysis/workflow/prepare-brief.md +32 -75
- package/yida-skills/skills-index.json +7 -7
- package/yida-skills/skills/yida-design/references/app/blueprint.md +0 -70
- package/yida-skills/skills/yida-design/references/app/navigation-patterns.md +0 -43
- package/yida-skills/skills/yida-design/references/app/role-journey.md +0 -30
- package/yida-skills/skills/yida-design/workflow/output-prd.md +0 -185
package/README.md
CHANGED
|
@@ -396,11 +396,12 @@ Run `openyida --help` or `openyida <command> --help` for detailed usage.
|
|
|
396
396
|
| `openyida app-list [--type managed\|created] [--page N] [--size N]` | Page through apps I manage or created |
|
|
397
397
|
| `openyida corp-efficiency [overview\|details\|detail\|groups\|notify] [options] [--open\|--no-open]` | Query enterprise efficiency overview and detail reports |
|
|
398
398
|
| `openyida create-app "<name>"\|--name <name> [options] [--locale zh_CN\|en_US\|ja_JP] [--open\|--no-open]` | Create a Yida app |
|
|
399
|
+
| `openyida design-plan catalog [--json]` | List available planning themes and page patterns |
|
|
399
400
|
| `openyida design-plan init <requirement-brief.json> [--theme-id <id>] [--output-dir <dir>] [--json]` | Initialize a plan draft from confirmed requirements |
|
|
400
401
|
| `openyida design-plan preview <build-plan.json> --part-file <module.json> [--json]` | Update plan drafts by module |
|
|
401
402
|
| `openyida design-plan materialize <build-plan.json> [--from-preview \| --business-file <json> --visual-file <json>] [--output-dir <dir>] [--check] [--json]` | Generate and validate design-plan artifacts from build-plan.json |
|
|
402
|
-
| `openyida design-plan patch <build-plan.json> --set <path=value> [--set <path=value> ...] [--materialize] [--output-dir <dir>] [--json]` | Patch a design plan
|
|
403
|
-
| `openyida 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]` | Update app info |
|
|
403
|
+
| `openyida design-plan patch <build-plan.json> --set <path=value> [--set <path=value> ...] [--materialize] [--output-dir <dir>] [--json]` | Patch a design plan; asset progress preserves existing approval |
|
|
404
|
+
| `openyida update-app <appType> [--name "..."] [--desc "..."] [--icon <name>] [--icon-color <color>] [--colour <key>] [--theme-color <color>] [--theme-file <css>] [--nav-theme light\|dark\|white\|gray] [--logo-source appIcon\|customImage] [--layout side\|top\|l_shape] [--hide-app-nav\|--show-app-nav]` | Update app info |
|
|
404
405
|
| `openyida app-online <appType> [--to-ding-app-center] [--show-app-center]` | Enable a Yida app |
|
|
405
406
|
| `openyida app-offline <appType> [--to-ding-app-center] [--show-app-center]` | Disable a Yida app |
|
|
406
407
|
| `openyida nav-group <list\|create\|rename\|delete\|move\|order\|auto-order\|hide\|show> <appType> ...` | Manage app sidebar navigation groups |
|
|
@@ -649,10 +650,14 @@ npx clawhub@latest install nicky1108/yida-app
|
|
|
649
650
|
```bash
|
|
650
651
|
git clone https://github.com/openyida/openyida.git
|
|
651
652
|
cd openyida
|
|
652
|
-
|
|
653
|
+
nvm install
|
|
654
|
+
nvm use
|
|
655
|
+
npm ci --ignore-scripts
|
|
653
656
|
npm run check:ci
|
|
654
657
|
```
|
|
655
658
|
|
|
659
|
+
Use the Node.js version in `.nvmrc` to match CI validation. If you do not use nvm, install that version directly.
|
|
660
|
+
|
|
656
661
|
Useful checks:
|
|
657
662
|
|
|
658
663
|
| Command | Purpose |
|
package/bin/yida.js
CHANGED
|
@@ -697,7 +697,10 @@ async function main() {
|
|
|
697
697
|
console.log(JSON.stringify(listAuthProfiles(buildTokenLoginOptions(authArgs)), null, 2));
|
|
698
698
|
} else if (subCommand === 'profile') {
|
|
699
699
|
const profileSubCommand = authArgs[0];
|
|
700
|
-
if (profileSubCommand === '
|
|
700
|
+
if (profileSubCommand === 'list') {
|
|
701
|
+
const { listAuthProfiles } = require('../lib/auth/profile');
|
|
702
|
+
console.log(JSON.stringify(listAuthProfiles(buildTokenLoginOptions(authArgs.slice(1))), null, 2));
|
|
703
|
+
} else if (profileSubCommand === 'switch') {
|
|
701
704
|
const target = getFirstPositionalArg(authArgs, 1);
|
|
702
705
|
const { switchAuthProfile } = require('../lib/auth/profile');
|
|
703
706
|
console.log(JSON.stringify(switchAuthProfile(target, buildTokenLoginOptions(authArgs)), null, 2));
|
package/lib/app/app-list.js
CHANGED
|
@@ -6,13 +6,16 @@
|
|
|
6
6
|
* 输出字段:
|
|
7
7
|
* appName - 应用名称(zh_CN)
|
|
8
8
|
* appType - 应用唯一标识
|
|
9
|
-
* systemLink -
|
|
9
|
+
* systemLink - 平台返回的应用访问地址
|
|
10
|
+
* appUrl / workbenchUrl - 应用工作台地址
|
|
11
|
+
* adminUrl - 开发者管理后台地址(不表示已验证访问权限)
|
|
10
12
|
*/
|
|
11
13
|
|
|
12
14
|
'use strict';
|
|
13
15
|
|
|
14
16
|
const { createAuthRef, createYidaClient } = require('../core/yida-client');
|
|
15
17
|
const { t } = require('../core/i18n');
|
|
18
|
+
const { buildApplicationEntryUrls } = require('./application-entry-urls');
|
|
16
19
|
const { throwCommandError, throwUsage } = require('../core/command-errors');
|
|
17
20
|
|
|
18
21
|
const API_PATH = '/query/app/getAppList.json';
|
|
@@ -76,11 +79,12 @@ function parseArgs(args = []) {
|
|
|
76
79
|
/**
|
|
77
80
|
* 将应用原始数据提取为输出字段
|
|
78
81
|
*/
|
|
79
|
-
function formatApp(app) {
|
|
82
|
+
function formatApp(app, baseUrl) {
|
|
80
83
|
return {
|
|
81
84
|
appName: (app.appName && app.appName.zh_CN) || '',
|
|
82
85
|
appType: app.appType || '',
|
|
83
86
|
systemLink: app.systemLink || '',
|
|
87
|
+
...buildApplicationEntryUrls({ appType: app.appType, systemLink: app.systemLink, baseUrl }),
|
|
84
88
|
};
|
|
85
89
|
}
|
|
86
90
|
|
|
@@ -141,7 +145,7 @@ async function run(args) {
|
|
|
141
145
|
const totalCount = Number.isFinite(Number(content.totalCount)) ? Number(content.totalCount) : apps.length;
|
|
142
146
|
const totalPages = Math.max(1, Math.ceil(totalCount / options.pageSize));
|
|
143
147
|
const scopeLabel = t(`app_list.scope_${options.type}`);
|
|
144
|
-
const formattedApps = apps.map(formatApp);
|
|
148
|
+
const formattedApps = apps.map(app => formatApp(app, authRef.baseUrl));
|
|
145
149
|
|
|
146
150
|
// stdout 输出 JSON,方便 AI 工具解析
|
|
147
151
|
console.log(JSON.stringify(formattedApps, null, 2));
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
// URLs derived by the CLI from a successful app result and its authenticated
|
|
4
|
+
// base URL. Constructing a route does not verify the recipient's access rights.
|
|
5
|
+
function buildApplicationEntryUrls({ appType, baseUrl, systemLink }) {
|
|
6
|
+
if (typeof appType !== 'string' || !/^APP_[A-Za-z0-9_-]+$/.test(appType)) { return {}; }
|
|
7
|
+
let origin;
|
|
8
|
+
const params = new URLSearchParams();
|
|
9
|
+
try {
|
|
10
|
+
const base = new URL(baseUrl);
|
|
11
|
+
if (!['https:', 'http:'].includes(base.protocol) || base.username || base.password) { return {}; }
|
|
12
|
+
origin = base.origin;
|
|
13
|
+
} catch { return {}; }
|
|
14
|
+
try {
|
|
15
|
+
if (systemLink) {
|
|
16
|
+
const app = new URL(systemLink, origin);
|
|
17
|
+
if (['https:', 'http:'].includes(app.protocol) && !app.username && !app.password && (app.pathname === `/${appType}` || app.pathname.startsWith(`/${appType}/`))) {
|
|
18
|
+
origin = app.origin;
|
|
19
|
+
for (const key of ['corpid', 'locale']) {
|
|
20
|
+
if (app.searchParams.has(key)) { params.set(key, app.searchParams.get(key)); }
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
} catch { /* Ignore malformed optional links; retain the authenticated base. */ }
|
|
25
|
+
const query = params.toString();
|
|
26
|
+
const suffix = query ? `?${query}` : '';
|
|
27
|
+
const workbenchUrl = `${origin}/${appType}/workbench${suffix}`;
|
|
28
|
+
return { appUrl: workbenchUrl, workbenchUrl, adminUrl: `${origin}/${appType}/admin${suffix}` };
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
module.exports = { buildApplicationEntryUrls };
|
|
@@ -50,6 +50,10 @@ const {
|
|
|
50
50
|
} = require('./form-detail-link-guard');
|
|
51
51
|
const { t } = require('../core/i18n');
|
|
52
52
|
const { assertInlineCssStructure } = require('./inline-css-guard');
|
|
53
|
+
const { assertCanvasThemeStructure } = require('./canvas-theme-guard');
|
|
54
|
+
const { assertCanvasIconExports } = require('./canvas-icon-guard');
|
|
55
|
+
const { assertCanvasNavigationStructure } = require('./canvas-navigation-guard');
|
|
56
|
+
const { assertCanvasNavigationPaths } = require('./canvas-path-guard');
|
|
53
57
|
|
|
54
58
|
/**
|
|
55
59
|
* 依赖 → window 别名白名单,用于把 import 改写到运行时全局对象。
|
|
@@ -966,7 +970,11 @@ function compileCanvasLocal(source, options = {}) {
|
|
|
966
970
|
assertNoSelfReferentialDependencyBindings(source, options);
|
|
967
971
|
assertNoBareDependencyGlobals(source, options);
|
|
968
972
|
assertNoManualDependencyGlobals(source, options);
|
|
973
|
+
assertCanvasIconExports(source, options);
|
|
974
|
+
assertCanvasNavigationStructure(source, options);
|
|
975
|
+
assertCanvasNavigationPaths(source, options);
|
|
969
976
|
assertInlineCssStructure(source, options);
|
|
977
|
+
assertCanvasThemeStructure(source, options);
|
|
970
978
|
|
|
971
979
|
const importedModules = extractImportedModules(source);
|
|
972
980
|
|