openyida 2026.5.27 → 2026.6.1-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.
Files changed (107) hide show
  1. package/README.md +144 -92
  2. package/bin/yida.js +64 -91
  3. package/lib/agent-center/api.js +6 -31
  4. package/lib/aggregate-table/aggregate-table.js +24 -59
  5. package/lib/ai/ai.js +81 -62
  6. package/lib/app/app-list.js +7 -28
  7. package/lib/app/check-page.js +2 -0
  8. package/lib/app/compile.js +3 -1
  9. package/lib/app/create-form.js +173 -320
  10. package/lib/app/export-app.js +48 -35
  11. package/lib/app/form-navigation.js +5 -12
  12. package/lib/app/page-compat.js +4 -0
  13. package/lib/app/page-compiler.js +2 -0
  14. package/lib/app/page-size-guard.js +120 -0
  15. package/lib/app/publish.js +3 -1
  16. package/lib/app-permission/app-permission.js +15 -42
  17. package/lib/auth/auth.js +3 -3
  18. package/lib/basic-info/basic-info.js +8 -11
  19. package/lib/cdn/cdn-config.js +1 -1
  20. package/lib/cdn/cdn-refresh.js +1 -1
  21. package/lib/cdn/cdn-upload.js +1 -1
  22. package/lib/connector/api.js +5 -30
  23. package/lib/connector/connector-add-action.js +1 -1
  24. package/lib/connector/connector-create-connection.js +1 -1
  25. package/lib/connector/connector-create.js +1 -1
  26. package/lib/connector/connector-delete-action.js +1 -1
  27. package/lib/connector/connector-delete.js +1 -1
  28. package/lib/connector/connector-detail.js +1 -1
  29. package/lib/connector/connector-gen-template.js +1 -1
  30. package/lib/connector/connector-list-actions.js +1 -1
  31. package/lib/connector/connector-list-connections.js +1 -1
  32. package/lib/connector/connector-parse-api.js +1 -1
  33. package/lib/connector/connector-test.js +9 -8
  34. package/lib/conversation/collector.js +1 -1
  35. package/lib/conversation/export-conversation.js +1 -1
  36. package/lib/core/check-data.js +31 -45
  37. package/lib/core/cli-error.js +39 -0
  38. package/lib/core/command-manifest.js +28 -0
  39. package/lib/core/copy.js +1 -48
  40. package/lib/core/locales/ar.js +13 -0
  41. package/lib/core/locales/de.js +13 -0
  42. package/lib/core/locales/en.js +81 -1
  43. package/lib/core/locales/es.js +13 -0
  44. package/lib/core/locales/fr.js +13 -0
  45. package/lib/core/locales/hi.js +13 -0
  46. package/lib/core/locales/ja.js +13 -0
  47. package/lib/core/locales/ko.js +13 -0
  48. package/lib/core/locales/pt.js +13 -0
  49. package/lib/core/locales/vi.js +13 -0
  50. package/lib/core/locales/zh-HK.js +13 -0
  51. package/lib/core/locales/zh.js +81 -1
  52. package/lib/core/query-data.js +28 -46
  53. package/lib/core/redact.js +100 -0
  54. package/lib/core/sample.js +1 -1
  55. package/lib/core/task-center.js +26 -42
  56. package/lib/core/utils.js +83 -1
  57. package/lib/core/yida-client.js +117 -0
  58. package/lib/corp-efficiency/corp-efficiency.js +11 -32
  59. package/lib/corp-manager/api.js +6 -31
  60. package/lib/db/db-seq-fix.js +1 -29
  61. package/lib/dws/dws-wrapper.js +1 -1
  62. package/lib/flash-note/flash-to-prd.js +66 -40
  63. package/lib/i18n-management/i18n-management.js +12 -44
  64. package/lib/integration/integration-api.js +100 -127
  65. package/lib/integration/integration-check.js +18 -2
  66. package/lib/integration/integration-create.js +35 -12
  67. package/lib/integration/integration-diagnose.js +77 -0
  68. package/lib/integration/integration-diagnostics.js +350 -0
  69. package/lib/integration/integration-process-builder.js +69 -56
  70. package/lib/integration/integration-view-builder.js +61 -61
  71. package/lib/page-config/get-page-config.js +70 -66
  72. package/lib/page-config/save-share-config.js +94 -169
  73. package/lib/page-config/verify-short-url.js +92 -197
  74. package/lib/permission/get-permission.js +27 -85
  75. package/lib/permission/save-permission.js +111 -193
  76. package/lib/process/ai-form-setting.js +85 -171
  77. package/lib/process/configure-process.js +123 -79
  78. package/lib/process/create-process.js +68 -45
  79. package/lib/process/preview-process.js +32 -25
  80. package/lib/report/append.js +70 -58
  81. package/lib/report/create-report.js +1 -1
  82. package/lib/report/field-utils.js +0 -4
  83. package/lib/report/filter-builder.js +0 -1
  84. package/lib/report/http.js +9 -12
  85. package/lib/report/index.js +65 -64
  86. package/package.json +10 -1
  87. package/scripts/e2e-real/skill-coverage.js +1 -0
  88. package/scripts/generate-command-docs.js +109 -0
  89. package/scripts/validate-ci.sh +17 -5
  90. package/scripts/validate-command-manifest.js +119 -0
  91. package/scripts/validate-package-size.js +78 -0
  92. package/yida-skills/SKILL.md +5 -1
  93. package/yida-skills/references/official-example-schema-patterns.md +217 -0
  94. package/yida-skills/skills/large-file-write/SKILL.md +18 -4
  95. package/yida-skills/skills/large-file-write/references/write-patterns.md +25 -0
  96. package/yida-skills/skills/yida-create-form-page/SKILL.md +10 -0
  97. package/yida-skills/skills/yida-custom-page/SKILL.md +15 -0
  98. package/yida-skills/skills/yida-dashboard/SKILL.md +1 -1
  99. package/yida-skills/skills/yida-dashboard/references/pitfalls.md +1 -0
  100. package/yida-skills/skills/yida-data-management/SKILL.md +21 -2
  101. package/yida-skills/skills/yida-data-source-connectors/SKILL.md +143 -0
  102. package/yida-skills/skills/yida-formula/SKILL.md +2 -0
  103. package/yida-skills/skills/yida-integration/SKILL.md +29 -2
  104. package/yida-skills/skills/yida-report/SKILL.md +3 -0
  105. package/project/pages/src/demo-agent-chatbox.oyd.jsx +0 -9514
  106. package/project/pages/src/demo-dingtalk-ai-solution-center.oyd.jsx +0 -4931
  107. package/project/pages/src/demo-openyida-image2-slider.oyd.jsx +0 -599
package/README.md CHANGED
@@ -272,125 +272,172 @@ openyida append-chart APP_XXX REPORT_XXX .cache/openyida/reports/chart.json
272
272
 
273
273
  Run `openyida --help` or `openyida <command> --help` for detailed usage.
274
274
 
275
- ### Environment and Authentication
275
+ <!-- OPENYIDA_COMMANDS_START -->
276
+ <!-- This section is generated by `npm run docs:commands`. Do not edit command rows by hand. -->
277
+
278
+ ### Auth & Environment
276
279
 
277
280
  | Command | Description |
278
281
  |---------|-------------|
279
- | `openyida env [--json]` | Detect the active AI tool environment and login state |
280
- | `openyida env setup` | Choose a customer-friendly login environment preset: public, overseas, Alibaba intranet, or private deployment |
281
- | `openyida env <list\|show\|switch\|add\|remove>` | Manage public/private Yida environment profiles |
282
- | `openyida commands [--json]` | Emit the machine-readable command manifest |
283
- | `openyida login [--qr\|--agent-qr\|--codex\|--browser] [--env <name>\|--intl\|--overseas\|--global\|--yidaapps] [--corp-id <corpId>]` | Log in to Yida |
284
- | `openyida logout` | Log out or switch account |
285
- | `openyida auth <status\|login\|refresh\|logout>` | Manage login status |
286
- | `openyida org list` | List accessible organizations |
287
- | `openyida org switch --corp-id <corpId>` | Switch organization without logging in again |
282
+ | `openyida login [--qr\|--agent-qr\|--codex\|--browser] [--env <name>\|--intl\|--overseas\|--global\|--yidaapps] [--corp-id <corpId>]` | Login (cache first, --browser or --agent-qr when needed) |
283
+ | `openyida logout` | Logout / switch account |
284
+ | `openyida auth <status\|login\|refresh\|logout>` | Login state management |
285
+ | `openyida org <list\|switch>` | Organization management (list / switch) |
286
+ | `openyida env [--json]` | Detect AI tool environment & login state |
287
+ | `openyida env <setup\|list\|show\|switch\|add\|remove>` | Manage public/private Yida environment profiles |
288
288
 
289
- Environment selectors such as `--env intl`, `--intl`, `--overseas`, `--global`, and `--yidaapps` can be used on login-required commands to choose the target Yida environment for that run. The `intl` preset uses `https://www.yidaapps.com` as the built-in Global YiDA entrypoint (not the bare `https://yidaapps.com` domain) and DingTalk International OAuth at `https://login.dingtalk.io`; business API requests still use the authenticated environment `baseUrl`, so customer custom subdomains are supported.
289
+ ### App Management
290
290
 
291
- For overseas apps, pass `--locale en_US` or `--locale ja_JP` on creation commands, or set `OPENYIDA_CONTENT_LOCALE`. OpenYida writes YiDA resource names with `zh_CN`, `en_US`, and `ja_JP` values so Global YiDA does not fall back to Chinese-only metadata.
292
-
293
- ### Applications
291
+ | Command | Description |
292
+ |---------|-------------|
293
+ | `openyida app-list [--size N]` | List my Yida apps |
294
+ | `openyida corp-efficiency [overview\|details\|detail\|groups\|notify] [options] [--open\|--no-open]` | Query enterprise efficiency overview and detail reports |
295
+ | `openyida create-app "<name>"\|--name <name> [options] [--locale zh_CN\|en_US\|ja_JP] [--open\|--no-open]` | Create a Yida app |
296
+ | `openyida update-app <appType> [--name "..."] [--layout slide\|ver] [--theme deepBlue]` | Update app info |
297
+ | `openyida nav-group <list\|create\|rename\|delete\|move\|hide\|show> <appType> ...` | Manage app sidebar navigation groups |
298
+ | `openyida app-permission <get\|set\|add\|remove\|search-user> ...` | Manage app primary, data, and developer admins |
299
+ | `openyida i18n <overview\|config\|languages\|list\|upsert\|delete\|translate\|translate-all\|upgrade> <appType> ...` | Manage app multilingual copy and language config |
300
+ | `openyida export <appType> [output]` | Export app (generate migration package) |
301
+ | `openyida import <file> [name]` | Import migration package, rebuild app |
302
+
303
+ ### Forms & Pages
294
304
 
295
305
  | Command | Description |
296
306
  |---------|-------------|
297
- | `openyida app-list [--size N]` | List Yida applications |
298
- | `openyida corp-efficiency [overview\|details\|detail\|groups\|notify] [options] [--open\|--no-open]` | Query enterprise efficiency metrics, detail report entries, and related notification actions |
299
- | `openyida create-app "<name>"\|--name <name> [options] [--locale zh_CN\|en_US\|ja_JP] [--open\|--no-open]` | Create an application and output `appType` |
300
- | `openyida update-app <appType> [--name "..."] [--layout slide\|ver] [--theme deepBlue]` | Update application metadata and theme/layout fields |
301
- | `openyida nav-group <list\|create\|rename\|delete\|move\|hide\|show> <appType> ...` | Manage sidebar navigation groups and move pages between groups |
302
- | `openyida app-permission <get\|set\|add\|remove\|search-user> ...` | Manage app primary admins, data admins, and developer members |
303
- | `openyida i18n <overview\|config\|languages\|list\|upsert\|delete\|translate\|translate-all\|upgrade> <appType> ...` | Manage app multilingual copy and language configuration |
304
- | `openyida export <appType> [output]` | Export an application migration package |
305
- | `openyida import <file> [name]` | Import a migration package into a target environment |
306
-
307
- ### Forms and Pages
307
+ | `openyida create-form create <appType> ... [--locale zh_CN\|en_US\|ja_JP] [--open\|--no-open]` | Create a form page |
308
+ | `openyida create-form update <appType> ... [--locale zh_CN\|en_US\|ja_JP] [--open\|--no-open]` | Update a form page |
309
+ | `openyida create-form patch <appType> <formUuid> <patchJsonOrFile> [--open\|--no-open]` | Update a form page |
310
+ | `openyida create-form rule <appType> <formUuid> <rulesJsonOrFile> [--open\|--no-open]` | Update a form page |
311
+ | `openyida create-form validation <appType> <formUuid> <validationsJsonOrFile> [--open\|--no-open]` | Update a form page |
312
+ | `openyida add-validation <appType> <formUuid> --field <labelOrId> --type <phone\|regex\|idCard\|email\|...> [--message <text>]` | Update a form page |
313
+ | `openyida create-form bind-datasource <appType> <formUuid> <fieldLabelOrId> <dataSourceJsonOrFile> [--open\|--no-open]` | Update a form page |
314
+ | `openyida create-form add-option <appType> <formUuid> <fieldLabel> <option1> [option2] ...` | Update a form page |
315
+ | `openyida list-forms <appType> [--keyword <text>]` | List forms/pages in an app |
316
+ | `openyida aggregate-table <list\|create-empty\|inspect\|preview\|save\|publish\|status> <appType> ...` | Manage aggregate tables (virtualView) |
317
+ | `openyida get-schema <appType> <formUuid\|--all>` | Get one form Schema or all form Schemas |
318
+ | `openyida create-page <appType> "<name>" [--mode dashboard] [--locale zh_CN\|en_US\|ja_JP] [--open\|--no-open]` | Create a custom display page |
319
+ | `openyida generate-page <template>` | Generate page from curated template |
320
+ | `openyida build-page <sourceFile> [--output file\|--write]` | Build Yida-compatible page source |
321
+ | `openyida check-page <src> [--compat]` | Check custom page standards |
322
+ | `openyida compile <src>` | Compile custom page locally |
323
+ | `openyida publish <src> <appType> <formUuid> [--health-check] [--force] [--open\|--no-open]` | Compile and publish custom page |
324
+ | `openyida update-form-config <appType> ...` | Update form configuration |
325
+
326
+ ### Data & Permissions
308
327
 
309
328
  | Command | Description |
310
329
  |---------|-------------|
311
- | `openyida create-form create <appType> "<name>" <fields.json> [--locale zh_CN\|en_US\|ja_JP] [--open\|--no-open]` | Create a form page |
312
- | `openyida create-form update <appType> <formUuid> <changes.json> [--locale zh_CN\|en_US\|ja_JP] [--open\|--no-open]` | Update a form page |
313
- | `openyida create-form patch <appType> <formUuid> <patch.json> [--open\|--no-open]` | Apply controlled schema patches for designer-only form settings |
314
- | `openyida create-form rule <appType> <formUuid> <rules.json> [--open\|--no-open]` | Configure field show/hide linkage and onChange auto-assignment rules |
315
- | `openyida create-form validation <appType> <formUuid> <validations.json> [--open\|--no-open]` | Configure form validations using Yida-visible field `props.validation` rules and `customValidate` JSExpression functions for regex, bank card, cross-field, conditional, or async checks |
316
- | `openyida add-validation <appType> <formUuid> --field <labelOrId> --type <phone\|regex\|idCard\|email\|...> [--message <text>]` | Add one smart validation rule without writing a JSON file |
317
- | `openyida create-form bind-datasource <appType> <formUuid> <fieldLabelOrId> <datasource.json> [--open\|--no-open]` | Bind URL/search data sources to SelectField/MultiSelectField-style option fields |
318
- | `openyida create-form add-option <appType> <formUuid> <fieldLabel> <option1> [option2] ...` | Append options to a SelectField/RadioField/CheckboxField/MultiSelectField |
319
- | `openyida list-forms <appType> [--keyword <text>]` | List forms in an application |
320
- | `openyida aggregate-table <list\|create-empty\|inspect\|preview\|save\|publish\|status> <appType> ...` | Manage Yida aggregate tables (`virtualView`) |
321
- | `openyida get-schema <appType> <formUuid\|--all> [--field <labelOrFieldId>]` | Fetch one form schema, batch export all, or pick a single field's full props |
322
- | `openyida create-page <appType> "<name>" [--mode dashboard] [--locale zh_CN\|en_US\|ja_JP] [--open\|--no-open]` | Create a custom display page; dashboard mode hides top/workbench chrome |
323
- | `openyida generate-page <template> [--spec file]` | Generate custom page source from templates (`product-homepage`, `todo-mvc`) |
324
- | `openyida build-page <sourceFile> [--output file\|--write]` | Build/fix Yida-compatible page source from OpenYida authoring JSX |
325
- | `openyida check-page <sourceFile> [--compat] [--json]` | Check page compatibility; `.oyd.jsx` is compatibility-built before linting |
326
- | `openyida compile <sourceFile> [--compat]` | Compile a custom page locally; `.oyd.jsx` sources are compatibility-built first |
327
- | `openyida publish <sourceFile> <appType> <formUuid> [--compat] [--health-check] [--force] [--open\|--no-open]` | Compile and publish a custom display page; by default the target must be `formType=display` |
328
- | `openyida update-form-config <appType> <formUuid> <isRenderNav> <title> [--locale zh_CN\|en_US\|ja_JP]` | Update page/form display configuration |
330
+ | `openyida data <action> <resource> [args]` | Unified data management (form/process/task/subform) |
331
+ | `openyida task-center <type> [options]` | Global task center (todo/processed/cc etc.) |
332
+ | `openyida basic-info <overview\|commodity\|grant\|capacity\|quota\|abs-path\|dataflow\|i18n\|domain>` | Query organization basic info, capacity, quotas, and domain settings |
333
+ | `openyida get-permission <appType> <formUuid>` | Query form permission config |
334
+ | `openyida save-permission <appType> <formUuid> ...` | Save form permission config |
335
+ | `openyida corp-manager <search-user\|list\|add\|remove\|address-book> ...` | Manage platform admins and address book permissions |
336
+ | `openyida agent-center <list\|create\|update\|cancel\|range\|search-user> ...` | Manage process and departure delegation |
329
337
 
330
- Form field definitions can include `alias` or `componentAlias` to populate Yida designer component aliases, stored as `pages[0].componentAlias.items`. Yida runtime resolves these aliases in page JS, so `this.$('phone')` can be used instead of `this.$('textField_xxx')`; OpenYida form rules, validations, and `openyida data ... --resolve-aliases` JSON inputs also accept aliases as field references. For server-side DingTalk OpenAPI calls, use `GET /v2.0/yida/forms/component/alias/{appType}/{formUuid}` to read the `{ fieldId, alias }` mapping, then translate aliases before sending form data/search JSON. That endpoint requires `systemToken`, `userId`, an access token, and the Yida form data read permission; grant that permission in DingTalk developer console API permissions and publish the DingTalk app. Yida app code and app secret are available under app settings > deployment/maintenance.
338
+ ### Process
331
339
 
332
- `openyida publish` preserves existing custom page data sources by default. Before saving the new compiled JSX Schema, it reads the current page Schema and merges the Page-level `dataSource` with the built-in `urlParams` and `timestamp` sources, so manually configured data sources are not deleted during republish.
340
+ | Command | Description |
341
+ |---------|-------------|
342
+ | `openyida configure-process <appType> ...` | Configure and publish process rules |
343
+ | `openyida create-process <appType> ...` | Create process form (all-in-one) |
344
+ | `openyida ai-form-setting <get\|fields\|models\|enable\|disable\|save> <appType> ...` | Manage process form AI approval prompts |
345
+ | `openyida process preview <appType> ...` | Preview process instance (visual flowchart) |
333
346
 
334
- ### Data, Permissions, and Sharing
347
+ ### Page Config & Sharing
335
348
 
336
349
  | Command | Description |
337
350
  |---------|-------------|
338
- | `openyida data <action> <resource> [args]` | Unified data management for forms, processes, tasks, and subforms; form queries support `--all`, `--form-uuid` subform hydration, and `--resolve-aliases` for component alias JSON keys |
339
- | `openyida data check <appType> <formUuid> <rules.json>` | Detect anomalous process-form records |
340
- | `openyida task-center <type> [options]` | Query todo, created, processed, CC, or proxy-submitted tasks |
341
- | `openyida agent-center <sub-command>` | Manage Yida process delegation and departure delegation |
342
- | `openyida basic-info <overview\|commodity\|grant\|capacity\|quota\|abs-path\|dataflow\|i18n\|domain>` | Query organization basic info, capacity, quotas, fixed-domain records, and domain settings |
343
- | `openyida get-permission <appType> <formUuid>` | Query form permission configuration |
344
- | `openyida save-permission <appType> <formUuid> [options]` | Save form permission configuration, including raw `--field-permission <json>` |
345
- | `openyida corp-manager <sub-command>` | Manage platform admins, sub-admins, app admins, and address book visibility |
346
- | `openyida verify-short-url <appType> <formUuid> <url>` | Verify a short URL |
347
- | `openyida save-share-config <appType> <formUuid> <url> <isOpen> [openAuth]` | Save public access or sharing configuration |
348
- | `openyida get-page-config <appType> <formUuid>` | Query public access or sharing configuration |
349
- | `openyida externalize-form <appType> <formUuid> [--schema-file file]` | Assess public-access blockers and generate external-safe mirror fields |
350
-
351
- `openyida externalize-form` is useful when a form contains fields such as `AssociationFormField`, `EmployeeField`, or `DepartmentSelectField` that depend on internal organization permissions. It produces a report plus optional `--mirror-fields-output` JSON that can be used with `openyida create-form create` to build a separate public intake form while keeping the internal form and its association fields private.
351
+ | `openyida verify-short-url <appType> ...` | Verify short URL |
352
+ | `openyida save-share-config <appType> ...` | Save public access / share config |
353
+ | `openyida get-page-config <appType> <formUuid>` | Query page public access config |
354
+ | `openyida externalize-form <appType> <formUuid> [--schema-file file]` | Plan external access-safe mirror fields |
352
355
 
353
- ### Workflow, Reports, and Integrations
356
+ ### Reports
354
357
 
355
358
  | Command | Description |
356
359
  |---------|-------------|
357
- | `openyida create-process <appType> ...` | Create a process form and configure workflow |
358
- | `openyida configure-process <appType> ...` | Configure and publish process rules |
359
- | `openyida ai-form-setting <get\|fields\|models\|enable\|disable\|save> <appType> ...` | Manage process-form AI approval prompts from `/settings/aiFormSetting` |
360
- | `openyida process preview <appType> <processInstanceId> [--output <path>]` | Generate a visual process preview |
361
- | `openyida create-report <appType> "<name>" <charts.json> [--open\|--no-open]` | Create a Yida report |
362
- | `openyida append-chart <appType> <reportId> <charts.json> [--open\|--no-open]` | Append a chart to an existing report |
363
- | `openyida connector <sub-command>` | Manage HTTP connectors, actions, tests, and auth accounts |
364
- | `openyida integration create <appType> <formUuid> <flowName> [options]` | Create an integration automation flow, including form and approval-process events |
365
- | `openyida integration list <appType> [--form-uuid <uuid>] [--status y\|n] [--json]` | List automation flows in an app, optionally filtered by form/status |
366
- | `openyida integration enable <appType> <formUuid> <processCode>` | Enable an automation flow |
367
- | `openyida integration disable <appType> <formUuid> <processCode>` | Disable an automation flow |
368
- | `openyida dws <command> [args]` | Access DingTalk CLI capabilities such as contacts, calendar, todo, and approval |
369
- | `openyida dingtalk-link <url> [--target fullScreen] [--legacy-scheme] [--json]` | Generate DingTalk AppLink URLs for opening pages in DingTalk; use `--legacy-scheme` only when old `dingtalk://` links are required |
360
+ | `openyida create-report <appType> "<name>" ... [--open\|--no-open]` | Create a Yida report |
361
+ | `openyida append-chart <appType> <reportId> ... [--open\|--no-open]` | Append chart to existing report |
370
362
 
371
- `openyida integration create` supports form events (`insert`, `update`, `delete`, `comment`) and approval events (`processFinish`, `activityTask`; aliases: `approval`, `approvalNode`). Approval events require `--approval-actions agree,disagree,terminated`; `activityTask` also requires `--approval-node-ids <nodeId,...>`.
363
+ ### Connectors
372
364
 
373
- ### Utilities
365
+ | Command | Description |
366
+ |---------|-------------|
367
+ | `openyida connector list` | List HTTP connectors |
368
+ | `openyida connector create "name" "domain" ...` | Create a connector |
369
+ | `openyida connector detail <id>` | View connector details |
370
+ | `openyida connector delete <id>` | Delete a connector |
371
+ | `openyida connector add-action --operations <file> --connector-id <id>` | Add an action |
372
+ | `openyida connector list-actions <id>` | List actions |
373
+ | `openyida connector delete-action <id> <operation-id>` | Delete an action |
374
+ | `openyida connector test --connector-id <id> --action <actionId>` | Test an action |
375
+ | `openyida connector list-connections <id>` | List auth connections |
376
+ | `openyida connector create-connection <id> <name>` | Create an auth connection |
377
+ | `openyida connector smart-create --curl "..."` | Smart create connector (from cURL) |
378
+ | `openyida connector parse-api [options]` | Parse API information |
379
+ | `openyida connector gen-template [output]` | Generate API document template |
380
+
381
+ ### Integration & DingTalk
382
+
383
+ | Command | Description |
384
+ |---------|-------------|
385
+ | `openyida integration create <appType> ...` | Create integration automation flow |
386
+ | `openyida integration list <appType> [--form-uuid <uuid>] [--status y\|n] [--json]` | List integration automation flows |
387
+ | `openyida integration enable <appType> <formUuid> <processCode>` | Enable integration automation flow |
388
+ | `openyida integration disable <appType> <formUuid> <processCode>` | Disable integration automation flow |
389
+ | `openyida integration check <appType...>` | Check abnormal integration automation run logs |
390
+ | `openyida integration diagnose (--text <text>\|--file <path>\|--rules) [--json]` | Diagnose integration automation tickets and common pitfalls |
391
+ | `openyida dws <command> [args]` | DingTalk CLI (contacts/calendar/todo/approval etc.) |
392
+ | `openyida dws contact user search --keyword <text>` | DingTalk CLI (contacts/calendar/todo/approval etc.) |
393
+ | `openyida dingtalk-link <url> [--target fullScreen] [--legacy-scheme] [--json]` | Generate DingTalk AppLink / legacy dingtalk:// page links |
394
+
395
+ ### Utility
374
396
 
375
397
  | Command | Description |
376
398
  |---------|-------------|
377
- | `openyida copy [--force]` | Initialize the local `project/` workspace |
378
- | `openyida sample [--list]` | Emit sample templates |
379
- | `openyida bridge start [--token <pair-token>] [--port 6736] [--open]` | Start the local OpenYida web bridge for `https://demo.aliwork.com/s/openyida` |
380
- | `openyida doctor [--fix]` | Diagnose and repair environment issues |
399
+ | `openyida commands [--json]` | Output machine-readable command manifest |
400
+ | `openyida a2a <serve\|agent-card> [options]` | Start local read-only A2A adapter or print Agent Card |
401
+ | `openyida bridge start [--token <pair-token>] [--port 6736] [--origin https://demo.aliwork.com] [--open\|--no-open]` | Start OpenYida local web bridge service |
402
+ | `openyida copy [--force]` | Copy project working directory |
403
+ | `openyida sample [--list]` | Output code samples/templates |
404
+ | `openyida doctor [--fix]` | Environment diagnostics & auto-fix |
381
405
  | `openyida db-seq-fix [--fix]` | Detect and repair PostgreSQL sequence drift |
382
- | `openyida formula evaluate <formula\|file> [--schema file]` | Static-check formula syntax and field references |
383
- | `openyida update` | Update OpenYida through npm |
384
- | `openyida export-conversation [options]` | Export AI conversation history |
385
- | `openyida feedback <setup\|url\|dismiss\|status>` | Create a public Yida feedback form, generate privacy-safe feedback links, and manage local reminder snooze state |
386
- | `openyida flash-to-prd --file <path> --name "<project>"` | Convert flash notes or meeting notes into a PRD prompt |
387
- | `openyida ai text --prompt "..."` | Call Yida's text generation AI API |
388
- | `openyida ai image --file <image> --app-type APP_XXX` | Upload an image and call the image recognition connector |
389
- | `openyida cdn-config` | Configure image upload to Aliyun OSS/CDN |
390
- | `openyida cdn-upload <image-path>` | Upload an image to CDN |
406
+ | `openyida formula evaluate <formula\|file> [--schema file]` | Static-check Yida formula syntax and field refs |
407
+ | `openyida update` | Check and update to latest version |
408
+ | `openyida export-conversation [options]` | Export AI conversation records |
409
+ | `openyida feedback <setup\|url\|dismiss\|status> [options]` | Configure experience feedback form and local reminder state |
410
+ | `openyida batch <file> [--stop-on-error] [--json]` | Run OpenYida commands in batch |
411
+ | `openyida batch --commands "cmd1 ; cmd2" [--stop-on-error] [--json]` | Run OpenYida commands in batch |
412
+ | `openyida flash-to-prd --file <path> --name "<project>"` | Convert flash notes or meeting notes to a PRD prompt |
413
+ | `openyida ai <text\|image> [options]` | Call Yida AI text and image recognition APIs |
414
+ | `openyida cdn-config [options]` | Configure CDN / OSS upload |
415
+ | `openyida cdn-upload <image-path>` | Upload image to CDN |
391
416
  | `openyida cdn-refresh [options]` | Refresh CDN cache |
392
- | `openyida batch <file> [--stop-on-error] [--json]` | Run multiple commands from a file (one login, sequential execution) |
393
- | `openyida batch --commands "cmd1 ; cmd2" [--stop-on-error] [--json]` | Run inline batch commands |
417
+
418
+ <!-- OPENYIDA_COMMANDS_END -->
419
+
420
+ ### CLI Notes
421
+
422
+ #### Environment and Localization
423
+
424
+ Environment selectors such as `--env intl`, `--intl`, `--overseas`, `--global`, and `--yidaapps` can be used on login-required commands to choose the target Yida environment for that run. The `intl` preset uses `https://www.yidaapps.com` as the built-in Global YiDA entrypoint (not the bare `https://yidaapps.com` domain) and DingTalk International OAuth at `https://login.dingtalk.io`; business API requests still use the authenticated environment `baseUrl`, so customer custom subdomains are supported.
425
+
426
+ For overseas apps, pass `--locale en_US` or `--locale ja_JP` on creation commands, or set `OPENYIDA_CONTENT_LOCALE`. OpenYida writes YiDA resource names with `zh_CN`, `en_US`, and `ja_JP` values so Global YiDA does not fall back to Chinese-only metadata.
427
+
428
+ #### Forms and Pages
429
+
430
+ Form field definitions can include `alias` or `componentAlias` to populate Yida designer component aliases, stored as `pages[0].componentAlias.items`. Yida runtime resolves these aliases in page JS, so `this.$('phone')` can be used instead of `this.$('textField_xxx')`; OpenYida form rules, validations, and `openyida data ... --resolve-aliases` JSON inputs also accept aliases as field references. For server-side DingTalk OpenAPI calls, use `GET /v2.0/yida/forms/component/alias/{appType}/{formUuid}` to read the `{ fieldId, alias }` mapping, then translate aliases before sending form data/search JSON. That endpoint requires `systemToken`, `userId`, an access token, and the Yida form data read permission; grant that permission in DingTalk developer console API permissions and publish the DingTalk app. Yida app code and app secret are available under app settings > deployment/maintenance.
431
+
432
+ `openyida publish` preserves existing custom page data sources by default. Before saving the new compiled JSX Schema, it reads the current page Schema and merges the Page-level `dataSource` with the built-in `urlParams` and `timestamp` sources, so manually configured data sources are not deleted during republish.
433
+
434
+ #### Data, Permissions, and Sharing
435
+
436
+ `openyida externalize-form` is useful when a form contains fields such as `AssociationFormField`, `EmployeeField`, or `DepartmentSelectField` that depend on internal organization permissions. It produces a report plus optional `--mirror-fields-output` JSON that can be used with `openyida create-form create` to build a separate public intake form while keeping the internal form and its association fields private.
437
+
438
+ #### Workflow, Reports, and Integrations
439
+
440
+ `openyida integration create` supports form events (`insert`, `update`, `delete`, `comment`) and approval events (`processFinish`, `activityTask`; aliases: `approval`, `approvalNode`). Approval events require `--approval-actions agree,disagree,terminated`; `activityTask` also requires `--approval-node-ids <nodeId,...>`.
394
441
 
395
442
  ## Agent Skills
396
443
 
@@ -465,11 +512,16 @@ Useful checks:
465
512
  |---------|---------|
466
513
  | `npm test` | Run Jest tests |
467
514
  | `npm run lint` | Run ESLint |
515
+ | `npm run check:quick` | Run structure, manifest, syntax, and lint checks |
516
+ | `npm run check:commands` | Validate router, command manifest, and README alignment |
517
+ | `npm run docs:commands` | Regenerate the README command index from the manifest |
518
+ | `npm run check:docs` | Verify generated README command docs are current |
468
519
  | `npm run check:syntax` | Validate JavaScript syntax |
469
520
  | `npm run check:structure` | Validate project structure |
521
+ | `npm run check:package-size` | Validate npm package size and file-count budget |
470
522
  | `npm run check:package` | Validate npm package contents |
471
523
 
472
- When adding new CLI commands, register the route in `bin/yida.js`, add it to `lib/core/command-manifest.js`, update user-facing documentation here, and keep agent skills in `yida-skills/` aligned when the workflow changes.
524
+ When adding new CLI commands, register the route in `bin/yida.js`, add it to `lib/core/command-manifest.js`, regenerate the README command index with `npm run docs:commands`, and keep agent skills in `yida-skills/` aligned when the workflow changes. `npm run check:commands` fails if the router, manifest, or README drift apart.
473
525
 
474
526
  ## Security and Configuration
475
527