yidaconnector 2026.6.11
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/LICENSE +21 -0
- package/README.md +383 -0
- package/bin/yida.js +670 -0
- package/lib/app/form-navigation.js +58 -0
- package/lib/app/get-schema.js +538 -0
- package/lib/auth/auth.js +294 -0
- package/lib/auth/cdp-browser-login.js +390 -0
- package/lib/auth/codex-login.js +71 -0
- package/lib/auth/login.js +475 -0
- package/lib/auth/org.js +363 -0
- package/lib/auth/qr-login.js +1563 -0
- package/lib/core/chalk.js +384 -0
- package/lib/core/check-update.js +82 -0
- package/lib/core/cli-error.js +39 -0
- package/lib/core/command-manifest.js +106 -0
- package/lib/core/env-cmd.js +545 -0
- package/lib/core/env-manager.js +601 -0
- package/lib/core/env.js +287 -0
- package/lib/core/i18n.js +177 -0
- package/lib/core/locales/ar.js +805 -0
- package/lib/core/locales/de.js +805 -0
- package/lib/core/locales/en.js +1623 -0
- package/lib/core/locales/es.js +805 -0
- package/lib/core/locales/fr.js +805 -0
- package/lib/core/locales/hi.js +805 -0
- package/lib/core/locales/ja.js +1197 -0
- package/lib/core/locales/ko.js +807 -0
- package/lib/core/locales/pt.js +805 -0
- package/lib/core/locales/vi.js +805 -0
- package/lib/core/locales/zh-HK.js +1233 -0
- package/lib/core/locales/zh.js +1584 -0
- package/lib/core/query-data.js +781 -0
- package/lib/core/redact.js +100 -0
- package/lib/core/utils.js +799 -0
- package/lib/core/yida-client.js +117 -0
- package/package.json +94 -0
- package/project/config.json +4 -0
- package/project/pages/src/demo-birthday-game.oyd.jsx +832 -0
- package/project/pages/src/demo-chip-insight.oyd.jsx +983 -0
- package/project/pages/src/demo-compat-smoke.oyd.jsx +58 -0
- package/project/pages/src/demo-crm-batch-entry.oyd.jsx +805 -0
- package/project/pages/src/demo-crm-dashboard.oyd.jsx +677 -0
- package/project/pages/src/demo-future-vision-2026.oyd.jsx +1102 -0
- package/project/pages/src/demo-ppt.oyd.jsx +1192 -0
- package/project/pages/src/demo-salary-calculator.oyd.jsx +904 -0
- package/project/pages/src/yidaconnector-knowledge-doc.oyd.jsx +1714 -0
- package/project/prd/demo-birthday-game.md +39 -0
- package/project/prd/demo-crm.md +463 -0
- package/project/prd/demo-dingtalk-ai-solution-center.md +425 -0
- package/project/prd/demo-future-vision-2026.md +78 -0
- package/project/prd/demo-salary-calculator.md +101 -0
- package/scripts/build-skills-package.js +406 -0
- package/scripts/check-syntax.js +59 -0
- package/scripts/demo-dws.sh +106 -0
- package/scripts/e2e-real/cleanup.js +67 -0
- package/scripts/e2e-real/fixtures/form-fields.json +18 -0
- package/scripts/e2e-real/full-runner.js +1566 -0
- package/scripts/e2e-real/runner.js +293 -0
- package/scripts/e2e-real/skill-coverage.js +115 -0
- package/scripts/generate-command-docs.js +109 -0
- package/scripts/nightly-smoke.js +134 -0
- package/scripts/postinstall.js +545 -0
- package/scripts/solution-center-runner.js +368 -0
- package/scripts/validate-ci.sh +50 -0
- package/scripts/validate-command-manifest.js +119 -0
- package/scripts/validate-package-size.js +78 -0
- package/scripts/validate-skills.js +247 -0
- package/scripts/validate-structure.js +66 -0
- package/yida-skills/SKILL.md +163 -0
- package/yida-skills/references/yida-api.md +1309 -0
- package/yida-skills/skills/large-file-write/SKILL.md +91 -0
- package/yida-skills/skills/large-file-write/references/write-patterns.md +149 -0
- package/yida-skills/skills/large-file-write/scripts/write.js +157 -0
- package/yida-skills/skills/yida-data-management/SKILL.md +252 -0
- package/yida-skills/skills/yida-data-management/references/api-matrix.md +49 -0
- package/yida-skills/skills/yida-data-management/references/data-format-guide.md +159 -0
- package/yida-skills/skills/yida-data-management/references/verified-endpoints.md +62 -0
- package/yida-skills/skills/yida-login/SKILL.md +159 -0
- package/yida-skills/skills/yida-logout/SKILL.md +67 -0
|
@@ -0,0 +1,1623 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* en.js - English translations
|
|
3
|
+
*/
|
|
4
|
+
'use strict';
|
|
5
|
+
|
|
6
|
+
module.exports = {
|
|
7
|
+
// ── 通用 ──────────────────────────────────────────
|
|
8
|
+
|
|
9
|
+
// ── bin/yida.js printHelp() ────────────────────────
|
|
10
|
+
help: {
|
|
11
|
+
subtitle: 'AI-powered low-code development tool for Yida',
|
|
12
|
+
usage: 'Usage:',
|
|
13
|
+
alias: 'Alias:',
|
|
14
|
+
group_auth: 'Auth & Environment',
|
|
15
|
+
cmd_login: 'Login (cache first, --browser or --agent-qr when needed)',
|
|
16
|
+
cmd_logout: 'Logout / switch account',
|
|
17
|
+
cmd_auth: 'Login state management',
|
|
18
|
+
cmd_org: 'Organization management (list / switch)',
|
|
19
|
+
cmd_env: 'Detect AI tool environment & login state',
|
|
20
|
+
cmd_env_management: 'Manage public/private Yida environment profiles',
|
|
21
|
+
group_app: 'App Management',
|
|
22
|
+
cmd_app_list: 'List my Yida apps',
|
|
23
|
+
cmd_corp_efficiency: 'Query enterprise efficiency overview and detail reports',
|
|
24
|
+
cmd_create_app: 'Create a Yida app',
|
|
25
|
+
cmd_update_app: 'Update app info',
|
|
26
|
+
cmd_nav_group: 'Manage app sidebar navigation groups',
|
|
27
|
+
cmd_app_permission: 'Manage app primary, data, and developer admins',
|
|
28
|
+
cmd_i18n: 'Manage app multilingual copy and language config',
|
|
29
|
+
cmd_export: 'Export app (generate migration package)',
|
|
30
|
+
cmd_import: 'Import migration package, rebuild app',
|
|
31
|
+
group_form: 'Forms & Pages',
|
|
32
|
+
cmd_create_form: 'Create a form page',
|
|
33
|
+
cmd_update_form: 'Update a form page',
|
|
34
|
+
cmd_list_forms: 'List forms/pages in an app',
|
|
35
|
+
cmd_aggregate_table: 'Manage aggregate tables (virtualView)',
|
|
36
|
+
cmd_get_schema: 'Get one form Schema or all form Schemas',
|
|
37
|
+
cmd_create_page: 'Create a custom display page',
|
|
38
|
+
cmd_generate_page: 'Generate page from curated template',
|
|
39
|
+
cmd_build_page: 'Build Yida-compatible page source',
|
|
40
|
+
cmd_check_page: 'Check custom page standards',
|
|
41
|
+
cmd_compile: 'Compile custom page locally',
|
|
42
|
+
cmd_publish: 'Compile and publish custom page',
|
|
43
|
+
cmd_update_form_config: 'Update form configuration',
|
|
44
|
+
group_data: 'Data & Permissions',
|
|
45
|
+
cmd_data: 'Unified data management (form/process/task/subform)',
|
|
46
|
+
cmd_task_center: 'Global task center (todo/processed/cc etc.)',
|
|
47
|
+
cmd_basic_info: 'Query organization basic info, capacity, quotas, and domain settings',
|
|
48
|
+
cmd_get_permission: 'Query form permission config',
|
|
49
|
+
cmd_save_permission: 'Save form permission config',
|
|
50
|
+
cmd_corp_manager: 'Manage platform admins and address book permissions',
|
|
51
|
+
cmd_agent_center: 'Manage process and departure delegation',
|
|
52
|
+
group_process: 'Process',
|
|
53
|
+
cmd_configure_process: 'Configure and publish process rules',
|
|
54
|
+
cmd_create_process: 'Create process form (all-in-one)',
|
|
55
|
+
cmd_ai_form_setting: 'Manage process form AI approval prompts',
|
|
56
|
+
cmd_process_preview: 'Preview process instance (visual flowchart)',
|
|
57
|
+
group_share: 'Page Config & Sharing',
|
|
58
|
+
cmd_verify_url: 'Verify short URL',
|
|
59
|
+
cmd_save_share: 'Save public access / share config',
|
|
60
|
+
cmd_get_page_config: 'Query page public access config',
|
|
61
|
+
cmd_externalize_form: 'Plan external access-safe mirror fields',
|
|
62
|
+
group_report: 'Reports',
|
|
63
|
+
cmd_create_report: 'Create a Yida report',
|
|
64
|
+
cmd_append_chart: 'Append chart to existing report',
|
|
65
|
+
group_connector: 'Connectors',
|
|
66
|
+
cmd_connector_list: 'List HTTP connectors',
|
|
67
|
+
cmd_connector_create: 'Create a connector',
|
|
68
|
+
cmd_connector_detail: 'View connector details',
|
|
69
|
+
cmd_connector_delete: 'Delete a connector',
|
|
70
|
+
cmd_connector_add_action: 'Add an action',
|
|
71
|
+
cmd_connector_list_actions: 'List actions',
|
|
72
|
+
cmd_connector_delete_action: 'Delete an action',
|
|
73
|
+
cmd_connector_test: 'Test an action',
|
|
74
|
+
cmd_connector_list_connections: 'List auth connections',
|
|
75
|
+
cmd_connector_create_connection: 'Create an auth connection',
|
|
76
|
+
cmd_connector_smart: 'Smart create connector (from cURL)',
|
|
77
|
+
cmd_connector_parse_api: 'Parse API information',
|
|
78
|
+
cmd_connector_gen_template: 'Generate API document template',
|
|
79
|
+
cmd_connector_more: 'View more sub-commands',
|
|
80
|
+
group_integration: 'Integration & DingTalk',
|
|
81
|
+
cmd_integration: 'Create integration automation flow',
|
|
82
|
+
cmd_integration_list: 'List integration automation flows',
|
|
83
|
+
cmd_integration_enable: 'Enable integration automation flow',
|
|
84
|
+
cmd_integration_disable: 'Disable integration automation flow',
|
|
85
|
+
cmd_integration_check: 'Check abnormal integration automation run logs',
|
|
86
|
+
cmd_integration_diagnose: 'Diagnose integration automation tickets and common pitfalls',
|
|
87
|
+
cmd_dws: 'DingTalk CLI (contacts/calendar/todo/approval etc.)',
|
|
88
|
+
cmd_dingtalk_link: 'Generate DingTalk AppLink / legacy dingtalk:// page links',
|
|
89
|
+
group_utility: 'Utility',
|
|
90
|
+
cmd_commands: 'Output machine-readable command manifest',
|
|
91
|
+
cmd_a2a: 'Start local read-only A2A adapter or print Agent Card',
|
|
92
|
+
cmd_bridge: 'Start YidaConnector local web bridge service',
|
|
93
|
+
cmd_copy: 'Copy project working directory',
|
|
94
|
+
cmd_sample: 'Output code samples/templates',
|
|
95
|
+
cmd_doctor: 'Environment diagnostics & auto-fix',
|
|
96
|
+
cmd_db_seq_fix: 'Detect and repair PostgreSQL sequence drift',
|
|
97
|
+
cmd_formula_evaluate: 'Static-check Yida formula syntax and field refs',
|
|
98
|
+
cmd_update: 'Check and update to latest version',
|
|
99
|
+
cmd_export_conversation: 'Export AI conversation records',
|
|
100
|
+
cmd_feedback: 'Configure experience feedback form and local reminder state',
|
|
101
|
+
cmd_batch: 'Run YidaConnector commands in batch',
|
|
102
|
+
cmd_flash_to_prd: 'Convert flash notes or meeting notes to a PRD prompt',
|
|
103
|
+
cmd_ai: 'Call Yida AI text and image recognition APIs',
|
|
104
|
+
cmd_cdn: 'CDN image management (config/upload/refresh)',
|
|
105
|
+
cmd_cdn_config: 'Configure CDN / OSS upload',
|
|
106
|
+
cmd_cdn_upload: 'Upload image to CDN',
|
|
107
|
+
cmd_cdn_refresh: 'Refresh CDN cache',
|
|
108
|
+
quickstart_title: 'Quick Start',
|
|
109
|
+
quickstart_app_name: 'Attendance',
|
|
110
|
+
quickstart_form_name: 'Employee Info',
|
|
111
|
+
docs: '📚 Docs:',
|
|
112
|
+
},
|
|
113
|
+
|
|
114
|
+
// ── bin/yida.js ────────────────────────────────────
|
|
115
|
+
cli: {
|
|
116
|
+
help: `
|
|
117
|
+
yidaconnector - Yida CLI Tool
|
|
118
|
+
|
|
119
|
+
Usage:
|
|
120
|
+
yidaconnector <command> [args...] (alias: yida)
|
|
121
|
+
|
|
122
|
+
Commands:
|
|
123
|
+
env Detect AI tool environment and login status
|
|
124
|
+
copy [--force] Copy project directory to current AI tool environment
|
|
125
|
+
login Manage login credentials (cache first, then QR scan)
|
|
126
|
+
logout Logout / switch account
|
|
127
|
+
create-app "<name>" [desc] [icon] [color] [theme] [nav] [layout] Create an app, output appType
|
|
128
|
+
create-page <appType> "<pageName>" [--mode dashboard] Create a custom page, output pageId
|
|
129
|
+
create-form create <appType> "<formName>" <fieldsJSON> [--layout <layout>] [--theme <theme>] [--label-align <align>] Create a form page
|
|
130
|
+
create-form update <appType> <formUuid> <changesJSON> Update a form page
|
|
131
|
+
list-forms <appType> [--keyword <text>] List forms/pages in an app
|
|
132
|
+
get-schema <appType> <formUuid|--all> Get one form Schema or all form Schemas
|
|
133
|
+
formula evaluate <formula|file> [--schema <schema.json>] Static-check Yida formulas
|
|
134
|
+
publish <sourceFile> <appType> <formUuid> [--health-check] Compile and publish a custom page
|
|
135
|
+
verify-short-url <appType> <formUuid> <url> Verify if a short URL is available
|
|
136
|
+
save-share-config <appType> <formUuid> <url> <isOpen> [auth] Save public access / share config
|
|
137
|
+
get-page-config <appType> <formUuid> Query page public access / share config
|
|
138
|
+
update-form-config <appType> <formUuid> <isRenderNav> <title> Update form config
|
|
139
|
+
data <action> <resource> [args] Unified data management (form/process/task/sub-form)
|
|
140
|
+
task-center <type> [--page N] [--size N] [--keyword TEXT] Global task center (todo/created/processed/cc/proxy)
|
|
141
|
+
doctor [options] Check environment, diagnose issues
|
|
142
|
+
--fix / --repair Diagnose and auto-fix
|
|
143
|
+
--production --app <appId> Production app diagnosis
|
|
144
|
+
--monitor Start real-time health monitoring
|
|
145
|
+
--report <format> Generate report (json | markdown | html)
|
|
146
|
+
--create-ticket Create ticket from diagnosis
|
|
147
|
+
--create-voc Create VOC (feedback)
|
|
148
|
+
--auto-submit Auto-submit ticket or VOC
|
|
149
|
+
auth status Check current login status
|
|
150
|
+
auth login Execute login
|
|
151
|
+
auth refresh Refresh login credentials
|
|
152
|
+
auth logout Logout
|
|
153
|
+
org list List accessible organizations
|
|
154
|
+
org switch --corp-id <corpId> Switch organization (no re-login needed)
|
|
155
|
+
export <appType> [output] Export all form schemas (migration package)
|
|
156
|
+
import <file> [name] Import migration package, rebuild app
|
|
157
|
+
get-permission <appType> <formUuid> Query form permission config
|
|
158
|
+
save-permission <appType> <formUuid> [--data-permission <json>] [--action-permission <json>] Save form permission config
|
|
159
|
+
configure-process <appType> <formUuid> <processDefinitionFile> [processCode] Configure and publish process
|
|
160
|
+
create-process <appType> <formTitle> <fieldsJsonFile> <processDefinitionFile> Create process form (all-in-one)
|
|
161
|
+
create-process <appType> --formUuid <formUuid> <processDefinitionFile> Reuse existing form for process
|
|
162
|
+
connector list [options] List HTTP connectors
|
|
163
|
+
connector create "<name>" "<domain>" --operations <file> [options] Create connector
|
|
164
|
+
connector detail <connector-id> View connector details
|
|
165
|
+
connector delete <connector-id> [--force] Delete connector
|
|
166
|
+
connector add-action --operations <file> --connector-id <id> Add action to connector
|
|
167
|
+
connector list-actions <connector-id> List actions
|
|
168
|
+
connector delete-action <connector-id> <operation-id> Delete action
|
|
169
|
+
connector test --connector-id <id> --action <actionId> Test action
|
|
170
|
+
connector list-connections <connector-id> List auth accounts
|
|
171
|
+
connector create-connection <connector-id> <name> [options] Create auth account
|
|
172
|
+
connector smart-create --curl "curl command" [options] Smart-create connector from cURL
|
|
173
|
+
connector parse-api [options] Parse API info
|
|
174
|
+
connector gen-template [output] Generate API doc template
|
|
175
|
+
integration create <appType> <formUuid> <flowName> [options] Create integration & automation flow
|
|
176
|
+
integration check <appType...> [--json] [--output xlsx] Check abnormal integration automation run logs
|
|
177
|
+
create-report <appType> "<name>" <chartsJSON|file> Create Yida report
|
|
178
|
+
append-chart <appType> <reportId> <chartsJSON|file> Append chart to existing report
|
|
179
|
+
dws <command> [args] DingTalk CLI (contacts/calendar/todo/approval etc.)
|
|
180
|
+
export-conversation [options] Export AI conversation records
|
|
181
|
+
--output, -o <path> Specify output file path
|
|
182
|
+
--input, -i <file> Specify input conversation file
|
|
183
|
+
--latest Export latest conversation only (default)
|
|
184
|
+
--list List available conversations
|
|
185
|
+
cdn-config [options] Configure CDN image upload (Alibaba Cloud OSS + CDN)
|
|
186
|
+
cdn-upload <image-path> [options] Upload images to CDN
|
|
187
|
+
cdn-refresh [options] Refresh CDN cache
|
|
188
|
+
|
|
189
|
+
Examples:
|
|
190
|
+
yidaconnector login
|
|
191
|
+
yidaconnector logout
|
|
192
|
+
yidaconnector create-app "Attendance"
|
|
193
|
+
yidaconnector create-app "Attendance" "Employee Attendance" "xian-daka" "#00B853" "deepBlue" "dark" "slide"
|
|
194
|
+
yidaconnector create-page APP_XXX "Game Home"
|
|
195
|
+
yidaconnector create-form create APP_XXX "Employee Info" .cache/yidaconnector/forms/employee-fields.json
|
|
196
|
+
yidaconnector create-form update APP_XXX FORM-XXX '[{"action":"add","field":{"type":"TextField","label":"Notes"}}]'
|
|
197
|
+
yidaconnector list-forms APP_XXX
|
|
198
|
+
yidaconnector list-forms APP_XXX --keyword customer
|
|
199
|
+
yidaconnector get-schema APP_XXX FORM-XXX
|
|
200
|
+
yidaconnector get-schema APP_XXX --all --output-dir .cache/schemas
|
|
201
|
+
yidaconnector formula evaluate 'IF(GT(#{numberField_total}, 100), "high", "low")' --schema .cache/schema.json
|
|
202
|
+
yidaconnector publish pages/src/home.oyd.jsx APP_XXX FORM-XXX
|
|
203
|
+
yidaconnector verify-short-url APP_XXX FORM-XXX /o/myapp
|
|
204
|
+
yidaconnector save-share-config APP_XXX FORM-XXX /o/myapp y n
|
|
205
|
+
yidaconnector get-page-config APP_XXX FORM-XXX
|
|
206
|
+
yidaconnector update-form-config APP_XXX FORM-XXX false "Page Title"
|
|
207
|
+
yidaconnector data query form APP_XXX FORM-XXX --page 1 --size 20
|
|
208
|
+
yidaconnector dws contact user search --keyword "wukong"
|
|
209
|
+
yidaconnector dws calendar event list
|
|
210
|
+
yidaconnector dws todo task create --title "Task"
|
|
211
|
+
yidaconnector create-report APP_XXX "Sales Report" .cache/yidaconnector/reports/charts.json
|
|
212
|
+
yidaconnector append-chart APP_XXX REPORT-XXX .cache/yidaconnector/reports/charts.json
|
|
213
|
+
yidaconnector configure-process APP_XXX FORM-YYY .cache/yidaconnector/process/process-def.json
|
|
214
|
+
yidaconnector create-process APP_XXX "Order Form" .cache/yidaconnector/process/fields.json .cache/yidaconnector/process/process-def.json
|
|
215
|
+
yidaconnector create-process APP_XXX --formUuid FORM-YYY .cache/yidaconnector/process/process-def.json
|
|
216
|
+
yidaconnector export APP_XXX
|
|
217
|
+
yidaconnector export APP_XXX ./my-app-backup.json
|
|
218
|
+
yidaconnector import ./yida-export.json
|
|
219
|
+
yidaconnector import ./yida-export.json "Quality Traceability System (Production)"
|
|
220
|
+
yidaconnector doctor Full diagnosis
|
|
221
|
+
yidaconnector doctor --fix Diagnose and auto-fix
|
|
222
|
+
yidaconnector doctor --production --app APP_XXX Production app diagnosis
|
|
223
|
+
yidaconnector doctor --monitor Real-time monitoring
|
|
224
|
+
yidaconnector doctor --report markdown Generate Markdown report
|
|
225
|
+
yidaconnector doctor --create-ticket Create ticket
|
|
226
|
+
yidaconnector doctor --create-voc Create VOC
|
|
227
|
+
yidaconnector doctor --auto-submit Auto-submit
|
|
228
|
+
yidaconnector export-conversation Export current conversation
|
|
229
|
+
yidaconnector export-conversation -o output.md Specify output path
|
|
230
|
+
yidaconnector export-conversation --list List available conversations
|
|
231
|
+
`,
|
|
232
|
+
unknown_command: 'Unknown command: {0}',
|
|
233
|
+
run_help: 'Run yidaconnector --help for usage',
|
|
234
|
+
integration_help: 'Usage: yidaconnector integration <create|list|enable|disable|check|diagnose> ...',
|
|
235
|
+
integration_unknown: 'Unknown integration subcommand: {0}',
|
|
236
|
+
integration_help_hint: 'Run yidaconnector integration --help for available subcommands',
|
|
237
|
+
integration_list_usage: 'Usage: yidaconnector integration list <appType> [--form-uuid <uuid>] [--status y|n] [--key <kw>] [--page <n>] [--size <n>] [--json]',
|
|
238
|
+
integration_list_example: 'Example: yidaconnector integration list APP_XXX --form-uuid FORM-XXX --json',
|
|
239
|
+
integration_enable_usage: 'Usage: yidaconnector integration enable <appType> <formUuid> <processCode>',
|
|
240
|
+
integration_enable_example: 'Example: yidaconnector integration enable APP_XXX FORM-XXX LPROC-XXX',
|
|
241
|
+
integration_disable_usage: 'Usage: yidaconnector integration disable <appType> <formUuid> <processCode>',
|
|
242
|
+
integration_disable_example: 'Example: yidaconnector integration disable APP_XXX FORM-XXX LPROC-XXX',
|
|
243
|
+
compile_usage: 'Usage: yidaconnector compile <sourceFile>',
|
|
244
|
+
compile_example: 'Example: yidaconnector compile pages/src/home.oyd.jsx',
|
|
245
|
+
check_page_usage: 'Usage: yidaconnector check-page <sourceFile> [--compat] [--json]',
|
|
246
|
+
check_page_example: 'Example: yidaconnector check-page pages/src/home.oyd.jsx --json',
|
|
247
|
+
generate_page_usage: 'Usage: yidaconnector generate-page <template> --output pages/src/home.oyd.jsx [--spec .cache/yidaconnector/page-specs/home.json] [--compile]',
|
|
248
|
+
generate_page_example: 'Example: yidaconnector generate-page product-homepage --brand-name OpenKuma --brand-initials OK --output pages/src/home.oyd.jsx --compile',
|
|
249
|
+
build_page_usage: 'Usage: yidaconnector build-page <sourceFile> [--output pages/build/page.yida.jsx|--write] [--json]',
|
|
250
|
+
build_page_example: 'Example: yidaconnector build-page pages/src/dashboard.oyd.jsx --output pages/build/dashboard.yida.jsx',
|
|
251
|
+
publish_usage: 'Usage: yidaconnector publish <sourceFile> <appType> <formUuid> [--health-check]',
|
|
252
|
+
publish_example: 'Example: yidaconnector publish pages/src/home.oyd.jsx APP_XXX FORM-XXX --health-check',
|
|
253
|
+
formula_usage: 'Usage: yidaconnector formula evaluate <formula|file> [--schema schema.json] [--json] [--strict]',
|
|
254
|
+
formula_example: 'Example: yidaconnector formula evaluate \'IF(GT(#{numberField_total}, 100), "high", "low")\' --schema .cache/schema.json',
|
|
255
|
+
verify_usage: 'Usage: yidaconnector verify-short-url <appType> <formUuid> <url>',
|
|
256
|
+
verify_example: 'Example: yidaconnector verify-short-url APP_XXX FORM-XXX /o/myapp',
|
|
257
|
+
share_usage: 'Usage: yidaconnector save-share-config <appType> <formUuid> <url> <isOpen> [openAuth]',
|
|
258
|
+
share_example: 'Example: yidaconnector save-share-config APP_XXX FORM-XXX /o/myapp y n',
|
|
259
|
+
page_config_usage: 'Usage: yidaconnector get-page-config <appType> <formUuid>',
|
|
260
|
+
page_config_example: 'Example: yidaconnector get-page-config APP_XXX FORM-XXX',
|
|
261
|
+
form_config_usage: 'Usage: yidaconnector update-form-config <appType> <formUuid> <isRenderNav> <title>',
|
|
262
|
+
form_config_example: 'Example: yidaconnector update-form-config APP_XXX FORM-XXX false "Page Title"',
|
|
263
|
+
update_app_usage: 'Usage: yidaconnector update-app <appType> --name "New Name" [--desc "Description"] [--icon "icon-name"]',
|
|
264
|
+
update_app_example: 'Example: yidaconnector update-app APP_XXX --name "New App Name" --desc "New Description"',
|
|
265
|
+
export_usage: 'Usage: yidaconnector export <appType> [output]',
|
|
266
|
+
export_example1: 'Example: yidaconnector export APP_XXX',
|
|
267
|
+
export_example2: ' yidaconnector export APP_XXX ./my-app-backup.json',
|
|
268
|
+
import_usage: 'Usage: yidaconnector import <file> [name]',
|
|
269
|
+
import_example1: 'Example: yidaconnector import ./yida-export.json',
|
|
270
|
+
import_example2: ' yidaconnector import ./yida-export.json "Quality System (Production)"',
|
|
271
|
+
configure_process_usage: 'Usage: yidaconnector configure-process <appType> <formUuid> <processDefinitionFile> [processCode]',
|
|
272
|
+
configure_process_example: 'Example: yidaconnector configure-process "APP_XXX" "FORM-YYY" .cache/yidaconnector/process/process-definition.json',
|
|
273
|
+
create_process_usage: 'Usage: yidaconnector create-process <appType> <formTitle> <fieldsJsonFile> <processDefinitionFile>\n yidaconnector create-process <appType> --formUuid <formUuid> <processDefinitionFile>',
|
|
274
|
+
create_process_example: 'Example: yidaconnector create-process "APP_XXX" "Order Form" .cache/yidaconnector/process/fields.json .cache/yidaconnector/process/process-definition.json',
|
|
275
|
+
process_usage: 'Usage: yidaconnector process <subcommand>\n\nSubcommands:\n preview <appType> <processInstanceId> [--output <path>] Preview process instance (generate visual flowchart)',
|
|
276
|
+
process_preview_usage: 'Usage: yidaconnector process preview <appType> <processInstanceId> [--output <path>]',
|
|
277
|
+
process_preview_example: 'Example: yidaconnector process preview APP_XXX proc-inst-id-xxx',
|
|
278
|
+
get_permission_usage: 'Usage: yidaconnector get-permission <appType> <formUuid>',
|
|
279
|
+
get_permission_example: 'Example: yidaconnector get-permission APP_XXX FORM-XXX',
|
|
280
|
+
save_permission_usage: 'Usage: yidaconnector save-permission <appType> <formUuid> [--data-permission <json>] [--action-permission <json>]',
|
|
281
|
+
save_permission_example: "Example: yidaconnector save-permission APP_XXX FORM-XXX --data-permission '{\"role\":\"DEFAULT\",\"dataRange\":\"SELF\"}'",
|
|
282
|
+
exec_failed: '\n❌ Execution failed: {0}',
|
|
283
|
+
auth_usage: 'Usage: yidaconnector auth <status|login|refresh|logout>',
|
|
284
|
+
auth_example: 'Examples:\n yidaconnector auth status # View login status\n yidaconnector auth login # Perform login\n yidaconnector auth login --codex # Codex browser login\n yidaconnector auth refresh # Refresh login session\n yidaconnector auth logout # Logout',
|
|
285
|
+
org_usage: 'Usage: yidaconnector org <list|switch>',
|
|
286
|
+
org_example: 'Examples:\n yidaconnector org list # List accessible organizations\n yidaconnector org switch --corp-id dingXXX # Switch to specified organization',
|
|
287
|
+
first_run_title: ' 🤖 YidaConnector - AI Conversation Mode Activated! ',
|
|
288
|
+
first_run_welcome: " {0}Welcome to YidaConnector!{1} Here's a quick start guide:",
|
|
289
|
+
first_run_way1_title: ' 📝 Option 1: Describe your needs directly',
|
|
290
|
+
first_run_way1_desc: ' In your AI tool, just tell the AI what you want:',
|
|
291
|
+
first_run_prompt1: ' "Help me create an attendance management system with Yida"',
|
|
292
|
+
first_run_prompt2: ' "Create a CRM customer management system"',
|
|
293
|
+
first_run_prompt3: ' "Build a personal salary calculator app"',
|
|
294
|
+
first_run_way2_title: ' 💡 Option 2: Specify detailed requirements',
|
|
295
|
+
first_run_prompt4: ' "Create an employee onboarding flow with info form, department approval, and HR filing"',
|
|
296
|
+
first_run_examples_title: ' 📋 Example Apps',
|
|
297
|
+
first_run_examples: ' Salary Calculator • Birthday Greeting App • Company Landing Page',
|
|
298
|
+
first_run_tips_title: ' 🔧 Getting Started Tips',
|
|
299
|
+
first_run_tip1: ' 1. Run {0}yidaconnector env{1} to detect environment and login status',
|
|
300
|
+
first_run_tip2: ' 2. Run {0}yidaconnector login{1} to log in to Yida',
|
|
301
|
+
first_run_tip3: ' 3. Chat with your AI tool and describe the app you want 🚀',
|
|
302
|
+
first_run_footer1: ' Supported AI tools: Codex / Claude Code / Aone Copilot / Cursor / OpenCode',
|
|
303
|
+
first_run_footer2: ' 📚 Docs: https://github.com/bunnyrui/yidaconnector',
|
|
304
|
+
first_run_footer3: ' (This guide only shows on first run. Use yidaconnector --help to see all commands)',
|
|
305
|
+
},
|
|
306
|
+
|
|
307
|
+
// ── lib/integration/integration-check.js ─────────
|
|
308
|
+
integration_check: {
|
|
309
|
+
result_sheet: 'Result',
|
|
310
|
+
header_app: 'App',
|
|
311
|
+
header_form_title: 'Form name',
|
|
312
|
+
header_form_uuid: 'Form ID',
|
|
313
|
+
header_flow_name: 'Automation name',
|
|
314
|
+
header_process_code: 'Automation ID',
|
|
315
|
+
header_flow_status: 'Automation status',
|
|
316
|
+
header_event_name: 'Trigger event',
|
|
317
|
+
header_last_action: 'Last action',
|
|
318
|
+
header_modifier: 'Modifier',
|
|
319
|
+
header_modified_time: 'Modified time',
|
|
320
|
+
header_abnormal_log_count: 'Abnormal log count',
|
|
321
|
+
header_proc_inst_id: 'Run instance ID',
|
|
322
|
+
header_form_inst_id: 'Form instance ID',
|
|
323
|
+
header_execution_status: 'Execution status',
|
|
324
|
+
header_exception: 'Exception',
|
|
325
|
+
header_diagnosis: 'Diagnosis',
|
|
326
|
+
header_recommendation: 'Recommendation',
|
|
327
|
+
header_start_time: 'Start time',
|
|
328
|
+
header_finish_time: 'Finish time',
|
|
329
|
+
header_elapsed_ms: 'Elapsed (ms)',
|
|
330
|
+
no_abnormal: 'No abnormal execution logs found',
|
|
331
|
+
app_failed: 'App check failed: {0}',
|
|
332
|
+
summary: 'Check complete: {0} apps, {1} automations, {2} with abnormal logs',
|
|
333
|
+
apps_failed: '{0} app(s) failed to check. See JSON output or error summary for details.',
|
|
334
|
+
no_logs: 'No abnormal execution logs found.',
|
|
335
|
+
usage: 'yidaconnector integration check <appType...> [--json] [--output result.xlsx] [--no-progress] [--flow-types 1,2,3,5,6] [--log-page-size 10] [--max-log-pages 1]',
|
|
336
|
+
example: 'yidaconnector integration check APP_XXX --output project/output/automation-errors.xlsx',
|
|
337
|
+
missing_app: 'Missing appType. Usage: yidaconnector integration check <appType...>',
|
|
338
|
+
banner_title: 'Check integration automation abnormal logs',
|
|
339
|
+
status_filter: 'Execution status filter: {0}',
|
|
340
|
+
checking_app: 'Checking app: {0}',
|
|
341
|
+
progress: 'Progress {0}{1}',
|
|
342
|
+
current: ', current: {0}',
|
|
343
|
+
excel_exported: 'Excel exported: {0}',
|
|
344
|
+
},
|
|
345
|
+
|
|
346
|
+
// ── lib/integration/integration-create.js ─────────
|
|
347
|
+
integration: {
|
|
348
|
+
create_usage: 'Usage: yidaconnector integration create <appType> <formUuid> <flowName> [options]',
|
|
349
|
+
create_args_title: 'Arguments:',
|
|
350
|
+
create_arg_app_type: ' appType App ID, such as APP_XXX',
|
|
351
|
+
create_arg_form_uuid: ' formUuid Trigger form UUID, such as FORM-XXX',
|
|
352
|
+
create_arg_flow_name: ' flowName Integration automation name',
|
|
353
|
+
create_options_title: 'Options:',
|
|
354
|
+
create_opt_process_code: ' --process-code <code> Update an existing logic flow processCode',
|
|
355
|
+
create_opt_receivers: ' --receivers <ids> DingTalk notification receiver userIds, comma-separated',
|
|
356
|
+
create_opt_title: ' --title <text> Notification title, supports #{fieldId-ComponentType}#',
|
|
357
|
+
create_opt_content: ' --content <text> Notification content, supports #{fieldId-ComponentType}#',
|
|
358
|
+
create_opt_events: ' --events <list> Trigger events: insert/update/delete/comment/processFinish/activityTask',
|
|
359
|
+
create_opt_data_form_uuid: ' --data-form-uuid <uuid> Target form UUID for a get-single-data node',
|
|
360
|
+
create_opt_data_condition: ' --data-condition <rule> Get-data condition: targetField:label:triggerField[:component[:opCode[:valueType]]]',
|
|
361
|
+
create_opt_get_self: ' --get-self Insert a get-self node (pid equals trigger form instance ID)',
|
|
362
|
+
create_opt_get_self_field: ' --get-self-field <field> Override the trigger-side system field, default __masterdata_form_inst_id',
|
|
363
|
+
create_opt_get_self_query_field: ' --get-self-query-field <f> Override the query-side system field, default pid',
|
|
364
|
+
create_opt_add_data_form_uuid: ' --add-data-form-uuid <uuid> Target form UUID for an add-data node',
|
|
365
|
+
create_opt_add_data_assignment: ' --add-data-assignment <rule> Add-data assignment: targetField:valueType:value',
|
|
366
|
+
create_opt_publish: ' --publish Publish after saving',
|
|
367
|
+
create_examples_title: 'Examples:',
|
|
368
|
+
create_example1: ' yidaconnector integration create APP_XXX FORM-XXX "New record notice" --receivers user123 --publish',
|
|
369
|
+
create_example2: ' yidaconnector integration create APP_XXX FORM-XXX "Get self then notify" --get-self --publish',
|
|
370
|
+
create_missing_args: 'Missing required arguments.',
|
|
371
|
+
create_invalid_events: 'No valid trigger event was recognized.',
|
|
372
|
+
create_no_receivers: 'No notification receiver or user field specified; no message node will be generated.',
|
|
373
|
+
create_title: 'Create integration automation flow',
|
|
374
|
+
create_app_type: 'App ID: {0}',
|
|
375
|
+
create_form_uuid: 'Trigger form: {0}',
|
|
376
|
+
create_flow_name: 'Flow name: {0}',
|
|
377
|
+
create_mode_update: 'Mode: update existing logic flow',
|
|
378
|
+
create_mode_new: 'Mode: create new logic flow',
|
|
379
|
+
create_process_code: 'Logic flow ID: {0}',
|
|
380
|
+
create_events: 'Trigger events: {0}',
|
|
381
|
+
create_receivers: 'Notification receivers: {0}',
|
|
382
|
+
create_receivers_empty: 'none',
|
|
383
|
+
create_notify_title: 'Notification title: {0}',
|
|
384
|
+
create_notify_content: 'Notification content: {0}',
|
|
385
|
+
create_data_form: 'Get-data form: {0}',
|
|
386
|
+
create_data_conditions: 'Get-data condition count: {0}',
|
|
387
|
+
create_get_self_summary: 'Get-self guardrail: {0} equals field {1}',
|
|
388
|
+
create_op_mode_publish: 'Mode: save and publish',
|
|
389
|
+
create_op_mode_draft: 'Mode: save draft only',
|
|
390
|
+
create_step: '[{0}/{1}] {2}',
|
|
391
|
+
create_step_login: 'Load login session',
|
|
392
|
+
create_no_cache: 'No login cache found, starting login',
|
|
393
|
+
create_login_ok: 'Login session ready: {0}',
|
|
394
|
+
create_step_new_flow: 'Create logic flow binding',
|
|
395
|
+
create_new_flow_ok: 'Logic flow created: {0}',
|
|
396
|
+
create_new_flow_failed: 'Failed to create logic flow: {0}',
|
|
397
|
+
create_step_get_schema: 'Fetch target form Schema',
|
|
398
|
+
create_get_schema_ok: 'Target form field count: {0}',
|
|
399
|
+
create_get_schema_warn: 'Failed to fetch target form Schema, continuing: {0}',
|
|
400
|
+
create_step_save: 'Save logic flow draft',
|
|
401
|
+
create_save_failed: 'Failed to save logic flow: {0}',
|
|
402
|
+
create_save_ok: 'Logic flow draft saved',
|
|
403
|
+
create_step_publish: 'Publish logic flow',
|
|
404
|
+
create_publish_warn: 'Publish failed: {0}',
|
|
405
|
+
create_publish_draft_hint: 'Draft is kept. Fix the config and publish again.',
|
|
406
|
+
create_published_ok: 'Logic flow published',
|
|
407
|
+
create_done_published: 'Integration automation created and published',
|
|
408
|
+
create_done_draft: 'Integration automation draft saved',
|
|
409
|
+
create_draft_hint: 'You can confirm the config in Yida designer and publish manually.',
|
|
410
|
+
},
|
|
411
|
+
|
|
412
|
+
// ── lib/check-update.js ────────────────────────────
|
|
413
|
+
check_update: {
|
|
414
|
+
new_version: '\n💡 New version available: {0} (current: {1})\n Run the following command to update:\n npm install -g yidaconnector@latest\n',
|
|
415
|
+
},
|
|
416
|
+
|
|
417
|
+
// ── lib/update.js ──────────────────────────────────
|
|
418
|
+
update: {
|
|
419
|
+
checking: 'Checking for the latest version...',
|
|
420
|
+
fetch_failed: 'Failed to fetch the latest version. Please check your network connection',
|
|
421
|
+
already_latest: 'Already up to date ({0}), no update needed',
|
|
422
|
+
found_new_version: 'New version available: {0} (current: {1})',
|
|
423
|
+
installing: 'Installing yidaconnector@latest...',
|
|
424
|
+
success: 'Update successful! Current version: {0}',
|
|
425
|
+
install_failed: 'Update failed: {0}',
|
|
426
|
+
manual_hint: 'Please try manually: npm install -g yidaconnector@latest',
|
|
427
|
+
available: 'update available',
|
|
428
|
+
up_to_date: 'up to date',
|
|
429
|
+
label_install: 'Install',
|
|
430
|
+
label_channel: 'Channel',
|
|
431
|
+
label_version: 'Version',
|
|
432
|
+
label_update: 'Update',
|
|
433
|
+
done: 'Update complete!',
|
|
434
|
+
done_hint: 'Run yidaconnector --version to confirm the new version',
|
|
435
|
+
},
|
|
436
|
+
|
|
437
|
+
// ── lib/env.js ─────────────────────────────────────
|
|
438
|
+
env: {
|
|
439
|
+
title: ' yidaconnector env - Environment Detection',
|
|
440
|
+
system_info: '\n📋 System Info',
|
|
441
|
+
os: ' OS: {0} ({1})',
|
|
442
|
+
node: ' Node.js: {0}',
|
|
443
|
+
home: ' Home dir: {0}',
|
|
444
|
+
cwd: ' Working dir: {0}',
|
|
445
|
+
ai_tools: '\n🤖 AI Tool Detection',
|
|
446
|
+
no_tools: ' ⚠️ No known AI tools detected',
|
|
447
|
+
tool_active_ready: '← Active, project ready',
|
|
448
|
+
tool_active_no_project: '← Active, but no project directory',
|
|
449
|
+
tool_installed_has_project: '(Installed, project exists, but not active)',
|
|
450
|
+
tool_installed: '(Installed, not active)',
|
|
451
|
+
active_env: '\n🎯 Current Active Environment',
|
|
452
|
+
ai_tool_label: ' AI Tool: {0}',
|
|
453
|
+
project_root_label: ' Project root: {0}',
|
|
454
|
+
active_no_project: ' AI Tool: {0} (active, but no project directory)',
|
|
455
|
+
no_active_tool: ' AI Tool: No active tool detected',
|
|
456
|
+
project_fallback: ' Project root: {0} (fallback)',
|
|
457
|
+
login_status: '\n🔐 Login Status',
|
|
458
|
+
logged_in: ' Status: ✅ Logged in',
|
|
459
|
+
base_url_label: ' Domain: {0}',
|
|
460
|
+
corp_id_label: ' Org ID: {0}',
|
|
461
|
+
user_id_label: ' User ID: {0}',
|
|
462
|
+
csrf_label: ' csrf_token: {0}...',
|
|
463
|
+
not_logged_in: ' Status: ❌ Not logged in (run yidaconnector login to authenticate)',
|
|
464
|
+
unknown: '(unknown)',
|
|
465
|
+
},
|
|
466
|
+
|
|
467
|
+
// ── lib/login.js ───────────────────────────────────
|
|
468
|
+
login: {
|
|
469
|
+
title: ' yidaconnector login - Yida Login Tool',
|
|
470
|
+
logout_title: ' yidaconnector logout - Yida Logout Tool',
|
|
471
|
+
cookie_file_label: '\n Cookie file: {0}',
|
|
472
|
+
logout_success: ' ✅ Cookie cleared, login session invalidated.',
|
|
473
|
+
logout_hint: ' Next time you run yidaconnector login, a QR scan will be triggered.',
|
|
474
|
+
logout_no_file: ' ℹ️ Cookie file does not exist, nothing to clear.',
|
|
475
|
+
using_cache: '🔍 Local Cookie found, using it directly...',
|
|
476
|
+
csrf_ok: ' ✅ csrf_token: {0}...',
|
|
477
|
+
corp_id_ok: ' ✅ corpId: {0}',
|
|
478
|
+
no_playwright: '\n❌ Local browser login prefers Chrome/Edge/Chromium CDP first; CDP is unavailable and no Playwright fallback was found. Use yidaconnector login or yidaconnector login --qr by default; install Playwright only if you need local browser login:',
|
|
479
|
+
playwright_install1: ' npm install -g playwright',
|
|
480
|
+
playwright_install2: ' npx playwright install chromium',
|
|
481
|
+
browser_opening: '\n🔐 Opening browser for QR code login...',
|
|
482
|
+
login_url_label: ' Login URL: {0}',
|
|
483
|
+
waiting_login: ' Waiting for login (up to 10 minutes)...',
|
|
484
|
+
login_timeout: ' ⏰ Login timed out (10 minutes). Please try again.',
|
|
485
|
+
login_success: ' ✅ Login successful!',
|
|
486
|
+
no_csrf_in_cookie: ' ❌ Login succeeded but no tianshu_csrf_token in Cookie. Please retry.',
|
|
487
|
+
no_cookie_cache: ' ❌ No valid local Cookie found. Cannot refresh. Please log in again.',
|
|
488
|
+
no_csrf_in_cache: ' ❌ No tianshu_csrf_token in Cookie. Please log in again.',
|
|
489
|
+
csrf_extracted: ' ✅ csrf_token extracted: {0}...',
|
|
490
|
+
trigger_login: '\n🔐 Login session expired, opening browser for QR code login...\n',
|
|
491
|
+
csrf_refresh: '\n🔄 csrf_token expired, re-extracting from Cookie...\n',
|
|
492
|
+
},
|
|
493
|
+
|
|
494
|
+
// ── lib/auth.js ────────────────────────────────────
|
|
495
|
+
auth: {
|
|
496
|
+
status_title: ' yidaconnector auth status - Login Status Query',
|
|
497
|
+
not_logged_in: ' Status: ❌ Not logged in',
|
|
498
|
+
login_hint: ' Hint: Run yidaconnector auth login to authenticate',
|
|
499
|
+
no_csrf_token: ' Status: ❌ Invalid login (no csrf_token)',
|
|
500
|
+
relogin_hint: ' Hint: Run yidaconnector auth login to re-authenticate',
|
|
501
|
+
logged_in: ' Status: ✅ Logged in',
|
|
502
|
+
base_url_label: ' Domain: {0}',
|
|
503
|
+
corp_id_label: ' Org ID: {0}',
|
|
504
|
+
user_id_label: ' User ID: {0}',
|
|
505
|
+
csrf_label: ' csrf_token: {0}...',
|
|
506
|
+
login_type_label: ' Login type: {0}',
|
|
507
|
+
login_time_label: ' Login time: {0}',
|
|
508
|
+
login_start: '\n🔐 Starting login (method: {0})...',
|
|
509
|
+
login_success: '\n✅ Login successful!',
|
|
510
|
+
corp_id_ok: ' ✅ corpId: {0}',
|
|
511
|
+
refresh_start: '\n🔄 Refreshing login session...',
|
|
512
|
+
no_cookie_cache: ' ❌ No local Cookie cache, cannot refresh',
|
|
513
|
+
no_csrf_in_cache: ' ❌ No csrf_token in Cookie, need to re-login',
|
|
514
|
+
refresh_success: ' ✅ Login session refreshed!',
|
|
515
|
+
csrf_ok: ' ✅ csrf_token: {0}...',
|
|
516
|
+
auth_config_cleared: ' ✅ Auth config cleared',
|
|
517
|
+
},
|
|
518
|
+
|
|
519
|
+
// ── lib/org.js ─────────────────────────────────────
|
|
520
|
+
org: {
|
|
521
|
+
list_title: ' yidaconnector org list - Organization List',
|
|
522
|
+
no_corp_id: ' ❌ Cannot get current org ID, please login first',
|
|
523
|
+
current_org: 'Current organization',
|
|
524
|
+
current: 'current',
|
|
525
|
+
no_organizations: ' ⚠️ No organization info available',
|
|
526
|
+
switch_title: ' yidaconnector org switch - Organization Switch',
|
|
527
|
+
switch_from: ' Current org: {0}',
|
|
528
|
+
switch_to: ' Target org: {0}',
|
|
529
|
+
already_in_org: ' ✅ Already in target organization',
|
|
530
|
+
step1: '\n Step 1: Initiating switch request...',
|
|
531
|
+
step2: ' Step 2: Confirming switch...',
|
|
532
|
+
step3: ' Step 3: Getting new credentials...',
|
|
533
|
+
redirect: ' Step 4: Following redirect ({0})...',
|
|
534
|
+
switch_failed_no_csrf: ' ❌ Switch failed: no new csrf_token obtained',
|
|
535
|
+
switch_success: '\n ✅ Organization switched successfully!',
|
|
536
|
+
new_corp_id: ' New org ID: {0}',
|
|
537
|
+
new_csrf: ' csrf_token: {0}...',
|
|
538
|
+
switch_error: ' ❌ Switch failed: {0}',
|
|
539
|
+
only_one_org: ' ⚠️ Only one organization available',
|
|
540
|
+
select_prompt: '\n Select organization to switch:',
|
|
541
|
+
use_corp_id_hint: '\n 💡 Hint: use --corp-id option to specify target organization',
|
|
542
|
+
no_login: '❌ Not logged in, please run yidaconnector login first',
|
|
543
|
+
switched_org: 'Switched organization',
|
|
544
|
+
unknown: 'unknown',
|
|
545
|
+
},
|
|
546
|
+
|
|
547
|
+
// ── lib/create-app.js ──────────────────────────────
|
|
548
|
+
create_app: {
|
|
549
|
+
title: ' yidaconnector create-app - Yida App Creation Tool',
|
|
550
|
+
usage: 'Usage: yidaconnector create-app "<appName>" [description] [icon] [iconColor] [themeColor] or yidaconnector create-app --name "<appName>" [--desc "..."] [--theme deepBlue]',
|
|
551
|
+
example: 'Example: yidaconnector create-app --name "Attendance" --desc "Employee attendance system" --theme deepBlue',
|
|
552
|
+
available_icons: '\nAvailable icons:',
|
|
553
|
+
icons_list: ' xian-xinwen, xian-zhengfu, xian-yingyong, xian-xueshimao, xian-qiye,\n xian-danju, xian-shichang, xian-jingli, xian-falv, xian-baogao,\n huoche, xian-shenbao, xian-diqiu, xian-qiche, xian-feiji,\n xian-diannao, xian-gongzuozheng, xian-gouwuche, xian-xinyongka,\n xian-huodong, xian-jiangbei, xian-liucheng, xian-chaxun, xian-daka',
|
|
554
|
+
available_colors: '\nAvailable colors:',
|
|
555
|
+
colors_list: ' #0089FF #00B853 #FFA200 #FF7357 #5C72FF\n #85C700 #FFC505 #FF6B7A #8F66FF #14A9FF',
|
|
556
|
+
app_name: ' App name: {0}',
|
|
557
|
+
app_desc: ' Description: {0}',
|
|
558
|
+
app_icon: ' Icon: {0} ({1})',
|
|
559
|
+
app_theme: ' Theme: colour={0} navTheme={1} layout={2}',
|
|
560
|
+
step_create: '\n📦 Step 2: Create App\n',
|
|
561
|
+
success: ' ✅ App created successfully!',
|
|
562
|
+
app_type_label: ' appType: {0}',
|
|
563
|
+
corp_id_label: ' corpId: {0}',
|
|
564
|
+
url_label: ' URL: {0}',
|
|
565
|
+
failed: ' ❌ Creation failed: {0}',
|
|
566
|
+
prd_config_title: '## App Config',
|
|
567
|
+
prd_config_key: 'Key',
|
|
568
|
+
prd_config_value: 'Value',
|
|
569
|
+
prd_not_found: '\n ⚠️ PRD document not found, skipping corpId update',
|
|
570
|
+
prd_updated: ' ✅ PRD document updated: {0}',
|
|
571
|
+
prd_update_failed: ' ⚠️ Failed to update PRD document: {0}',
|
|
572
|
+
},
|
|
573
|
+
|
|
574
|
+
// ── lib/create-page.js ─────────────────────────────
|
|
575
|
+
create_page: {
|
|
576
|
+
title: ' yidaconnector create-page - Yida Custom Page Creation Tool',
|
|
577
|
+
usage: 'Usage: yidaconnector create-page <appType> "<pageName>" [--mode dashboard]',
|
|
578
|
+
example: 'Example: yidaconnector create-page "APP_XXX" "Game Home" --mode dashboard',
|
|
579
|
+
app_id: ' App ID: {0}',
|
|
580
|
+
page_name: ' Page name: {0}',
|
|
581
|
+
step_create: '\n📄 Step 2: Create Custom Page\n',
|
|
582
|
+
sending: ' Sending saveFormSchemaInfo request...',
|
|
583
|
+
success: ' ✅ Page created successfully!',
|
|
584
|
+
step_dashboard_config: '\n🖥️ Step 3: Configure dashboard fullscreen mode',
|
|
585
|
+
dashboard_config_ok: ' ✅ Dashboard mode configured: top nav hidden, chromeless custom URL enabled',
|
|
586
|
+
dashboard_config_failed: ' ⚠️ Dashboard mode config failed: {0}',
|
|
587
|
+
err_mode_invalid: 'Unsupported page mode: {0}',
|
|
588
|
+
mode_hint: 'Available modes: default, dashboard',
|
|
589
|
+
page_id_label: ' pageId: {0}',
|
|
590
|
+
url_label: ' URL: {0}',
|
|
591
|
+
failed: ' ❌ Creation failed: {0}',
|
|
592
|
+
},
|
|
593
|
+
|
|
594
|
+
// ── lib/get-schema.js ──────────────────────────────
|
|
595
|
+
get_schema: {
|
|
596
|
+
title: ' yidaconnector get-schema - Yida Form Schema Tool',
|
|
597
|
+
usage: 'Usage: yidaconnector get-schema <appType> <formUuid> or yidaconnector get-schema <appType> --all [--output-dir <dir>]',
|
|
598
|
+
example: 'Example: yidaconnector get-schema "APP_XXX" "FORM-XXX"; yidaconnector get-schema "APP_XXX" --all --output-dir .cache/schemas',
|
|
599
|
+
app_id: ' App ID: {0}',
|
|
600
|
+
form_uuid: ' Form UUID: {0}',
|
|
601
|
+
step_get: '\n📄 Step 2: Get Form Schema',
|
|
602
|
+
sending: ' Sending getFormSchema request...',
|
|
603
|
+
success: ' ✅ Schema retrieved successfully!',
|
|
604
|
+
failed: ' ❌ Failed to get Schema: {0}',
|
|
605
|
+
},
|
|
606
|
+
|
|
607
|
+
list_forms: {
|
|
608
|
+
title: ' yidacli list-forms - App form/page list tool',
|
|
609
|
+
usage: 'Usage: yidaconnector list-forms <appType> [--keyword <text>]',
|
|
610
|
+
example1: 'Example: yidaconnector list-forms APP_XXX',
|
|
611
|
+
example2: ' yidaconnector list-forms APP_XXX --keyword customer',
|
|
612
|
+
app_id: ' App ID: {0}',
|
|
613
|
+
keyword: ' Keyword: {0}',
|
|
614
|
+
step_get: '\n📋 Step 2: Fetch app forms/pages',
|
|
615
|
+
found: ' ✅ Found {0} matching items',
|
|
616
|
+
empty: ' ⚠️ No matching forms/pages found, outputting []',
|
|
617
|
+
unnamed_form: 'Unnamed page',
|
|
618
|
+
fetch_failed: 'Failed to fetch app navigation list',
|
|
619
|
+
failed: ' ❌ Query failed: {0}',
|
|
620
|
+
no_login: ' ❌ Unable to get valid login credentials',
|
|
621
|
+
},
|
|
622
|
+
|
|
623
|
+
// ── lib/create-form.js ─────────────────────────────
|
|
624
|
+
create_form: {
|
|
625
|
+
create_title: ' yida-create-form-page - Yida Form Page Creation Tool',
|
|
626
|
+
update_title: ' yida-create-form-page - Yida Form Page Update Tool',
|
|
627
|
+
app_id: '\n App ID: {0}',
|
|
628
|
+
form_title: ' Form name: {0}',
|
|
629
|
+
form_uuid: ' Form UUID: {0}',
|
|
630
|
+
form_uuid_input: ' Form UUID: {0}',
|
|
631
|
+
fields_def: ' Fields def: {0}',
|
|
632
|
+
changes_def: ' Changes: {0}',
|
|
633
|
+
step_read_fields: '\n📋 Step {0}: Read field definitions',
|
|
634
|
+
fields_loaded: ' ✅ Loaded {0} field definitions',
|
|
635
|
+
pc_columns: ' PC columns: {0}',
|
|
636
|
+
step_fields: '\n📋 Step 2: Read field definitions',
|
|
637
|
+
columns: ' PC columns: {0}',
|
|
638
|
+
step_create_blank: '\n📄 Step {0}: Create blank form',
|
|
639
|
+
step_create_form: '\n📄 Step 3: Create blank form',
|
|
640
|
+
sending_create: ' Sending saveFormSchemaInfo request...',
|
|
641
|
+
blank_created: ' ✅ Blank form created: {0}',
|
|
642
|
+
create_blank_failed: ' ❌ Failed to create blank form: {0}',
|
|
643
|
+
form_created: ' ✅ Blank form created: {0}',
|
|
644
|
+
create_failed: ' ❌ Failed to create blank form: {0}',
|
|
645
|
+
no_corp_id_warning: ' ⚠️ Warning: Could not get corpId, SerialNumberField formula may not work correctly',
|
|
646
|
+
no_corp_id: ' ⚠️ Warning: Could not get corpId, SerialNumberField formula may not work correctly',
|
|
647
|
+
corp_id_ok: ' ✅ corpId: {0}',
|
|
648
|
+
step_save_schema: '\n📝 Step {0}: Save form Schema',
|
|
649
|
+
sending_save: ' Sending saveFormSchema request...',
|
|
650
|
+
schema_saved: ' ✅ Schema saved successfully!',
|
|
651
|
+
save_success: ' ✅ Schema saved successfully!',
|
|
652
|
+
current_version: ' Current version: {0}',
|
|
653
|
+
version_label: ' Current version: {0}',
|
|
654
|
+
save_schema_failed: '\n❌ Failed to save Schema: {0}',
|
|
655
|
+
save_failed: '\n❌ Failed to save Schema: {0}',
|
|
656
|
+
step_update_config: '\n⚙️ Step {0}: Update form config',
|
|
657
|
+
sending_config: ' Sending updateFormConfig request...',
|
|
658
|
+
step_get_schema: '\n📄 Step {0}: Get current form Schema',
|
|
659
|
+
sending_get_schema: ' Sending getFormSchema request...',
|
|
660
|
+
sending_get: ' Sending getFormSchema request...',
|
|
661
|
+
get_schema_failed: ' ❌ Failed to get form Schema: {0}',
|
|
662
|
+
get_failed: ' ❌ Failed to get form Schema: {0}',
|
|
663
|
+
schema_empty_init: ' ⚠️ Schema is empty, initializing with base form template',
|
|
664
|
+
schema_empty: ' ⚠️ Schema is empty, initializing with base form template',
|
|
665
|
+
schema_got_fields: ' ✅ Schema retrieved, {0} fields currently:',
|
|
666
|
+
schema_got_empty: ' ✅ Schema retrieved (no fields yet)',
|
|
667
|
+
schema_success_with_fields: ' ✅ Schema retrieved, {0} fields currently:',
|
|
668
|
+
schema_success_no_fields: ' ✅ Schema retrieved (no fields yet)',
|
|
669
|
+
step_read_changes: '\n📋 Step {0}: Read change definitions',
|
|
670
|
+
changes_loaded: ' ✅ Loaded {0} change operations',
|
|
671
|
+
action_add: 'Add',
|
|
672
|
+
action_delete: 'Delete',
|
|
673
|
+
action_update: 'Update',
|
|
674
|
+
step_apply_changes: '\n🔧 Step {0}: Apply changes',
|
|
675
|
+
step_apply: '\n🔧 Step 4: Apply changes',
|
|
676
|
+
request_timeout: ' ❌ Request timed out',
|
|
677
|
+
create_success: ' ✅ Form created successfully!',
|
|
678
|
+
update_success: ' ✅ Form updated successfully!',
|
|
679
|
+
form_uuid_label: ' formUuid: {0}',
|
|
680
|
+
url_label: ' URL: {0}',
|
|
681
|
+
config_updated_0: ' Config updated: MINI_RESOURCE = 0',
|
|
682
|
+
config_updated: ' Config updated: MINI_RESOURCE = 0',
|
|
683
|
+
changes_applied: ' Changes applied: {0}',
|
|
684
|
+
config_failed: ' ⚠️ Config update failed: {0}',
|
|
685
|
+
schema_ok_config_failed: ' Schema saved, but config update failed',
|
|
686
|
+
schema_saved_config_failed: ' Schema saved, but config update failed',
|
|
687
|
+
error: '\n❌ Error: {0}',
|
|
688
|
+
usage_create: 'Usage: yidaconnector create-form create <appType> <formTitle> <fieldsJsonFile>',
|
|
689
|
+
example_create: 'Example: yidaconnector create-form create "APP_XXX" "Employee Info" .cache/yidaconnector/forms/employee-fields.json',
|
|
690
|
+
usage_update: 'Usage: yidaconnector create-form update <appType> <formUuid> <changesJsonOrFile>',
|
|
691
|
+
example_update: 'Example: yidaconnector create-form update "APP_XXX" "FORM-YYY" \'[{"action":"add","field":{"type":"TextField","label":"Note"}}]\'',
|
|
692
|
+
usage_label: 'Usage:',
|
|
693
|
+
usage_create_short: ' create: yidaconnector create-form create <appType> <formTitle> <fieldsJsonFile>',
|
|
694
|
+
usage_update_short: ' update: yidaconnector create-form update <appType> <formUuid> <changesJsonOrFile>',
|
|
695
|
+
example_label: '\nExamples:',
|
|
696
|
+
fields_file_not_found: ' ❌ Fields definition file not found: ',
|
|
697
|
+
fields_format_invalid: 'Invalid fields definition format',
|
|
698
|
+
fields_must_be_array: 'Fields definition must be a non-empty array',
|
|
699
|
+
fields_parse_failed: ' ❌ Failed to parse fields definition: ',
|
|
700
|
+
changes_file_not_found: ' ❌ Changes definition file not found: ',
|
|
701
|
+
changes_must_be_array: 'Changes definition must be a non-empty array',
|
|
702
|
+
changes_parse_failed: ' ❌ Failed to parse changes definition: ',
|
|
703
|
+
no_components_tree: ' ❌ componentsTree not found in Schema',
|
|
704
|
+
no_form_container: ' ❌ FormContainer not found in Schema',
|
|
705
|
+
add_missing_field: ' - missing field.type or field.label, skipped',
|
|
706
|
+
add_after_ok: ' - added field "{1}" ({2}) after "{0}"',
|
|
707
|
+
add_after_not_found: ' - "{0}" not found, field "{1}" appended to end',
|
|
708
|
+
add_before_ok: ' - added field "{1}" ({2}) before "{0}"',
|
|
709
|
+
add_before_not_found: ' - "{0}" not found, field "{1}" appended to end',
|
|
710
|
+
add_ok: ' - added field "{0}" ({1})',
|
|
711
|
+
delete_missing_label: ' - missing label, skipped',
|
|
712
|
+
delete_ok: ' - deleted field "{0}"',
|
|
713
|
+
delete_not_found: ' - field "{0}" not found, skipped',
|
|
714
|
+
update_missing_label: ' - missing label, skipped',
|
|
715
|
+
update_missing_changes: ' - missing changes, skipped',
|
|
716
|
+
update_table_not_found: ' - sub-table "{0}" not found, skipped',
|
|
717
|
+
update_not_table: ' - "{0}" is not a valid TableField, skipped',
|
|
718
|
+
in_table: 'in sub-table "{0}" ',
|
|
719
|
+
update_ok: ' - updated {0}field "{1}" props: {2}',
|
|
720
|
+
update_not_found: ' - {0}field "{1}" not found, skipped',
|
|
721
|
+
unknown_action: ' - unknown action "{0}", skipped',
|
|
722
|
+
filling_rule_resolved: ' 🔗 Filling rule resolved: @label:{0} → {1}',
|
|
723
|
+
filling_rule_failed: ' ⚠️ Filling rule failed: field with label "{0}" not found, please check the field name',
|
|
724
|
+
table_filling_rule: ' 📋 Processing sub-table filling rule [{0}]: tableId={1}',
|
|
725
|
+
table_rule_resolved: ' 🔗 Sub-table rule resolved [{0}]: @label:{1} → {2}',
|
|
726
|
+
table_rule_failed: ' ⚠️ Sub-table rule failed: field with label "{0}" not found, please check the field name',
|
|
727
|
+
serial_number_formula_set: ' 🔢 SerialNumberField "{0}" formula set',
|
|
728
|
+
schema_extract_failed: ' ❌ Unable to extract Schema from response',
|
|
729
|
+
schema_response_structure: ' Response structure: {0}',
|
|
730
|
+
schema_parse_failed: 'Unable to parse Schema structure',
|
|
731
|
+
action_label: 'Action {0}: {1}',
|
|
732
|
+
step_check_data: '\n🔍 Step {0}: Check if form has existing data',
|
|
733
|
+
data_exists_warning: ' ⚠️ This form already has {0} records! Modifying form structure may cause:',
|
|
734
|
+
data_exists_impact: ' - Historical data loss or corruption\n - Process status anomalies\n - Data inconsistency',
|
|
735
|
+
data_exists_abort: ' ❌ Modification aborted. Add --force to proceed.',
|
|
736
|
+
data_exists_confirm_message: 'This form has {0} existing records. Modifying the structure may affect existing data. Add --force to confirm.',
|
|
737
|
+
data_exists_force_hint: 'Usage: yidaconnector create-form update <appType> <formUuid> <changesJson> --force',
|
|
738
|
+
data_exists_force_proceed: ' ⚠️ --force mode: skipping confirmation, force-modifying form structure with {0} existing records',
|
|
739
|
+
data_check_empty: ' ✅ Form has no data, safe to modify',
|
|
740
|
+
data_check_failed: ' ⚠️ Data check failed, proceeding with modification',
|
|
741
|
+
},
|
|
742
|
+
common: {
|
|
743
|
+
http_status: ' HTTP status: {0}',
|
|
744
|
+
http_response: ' HTTP response: {0}',
|
|
745
|
+
response_body: ' Response body: {0}',
|
|
746
|
+
response_detail: ' Response detail: {0}',
|
|
747
|
+
response_not_json: 'response is not JSON',
|
|
748
|
+
login_expired: ' Login session expired: {0}',
|
|
749
|
+
csrf_expired: ' CSRF token expired: {0}',
|
|
750
|
+
csrf_refreshed: ' csrf_token refreshed',
|
|
751
|
+
request_timeout: ' ❌ Request timed out',
|
|
752
|
+
request_failed: 'request failed',
|
|
753
|
+
request_failed_label: ' ❌ Request failed',
|
|
754
|
+
unknown_error: 'unknown error',
|
|
755
|
+
step_login: '\n🔑 Step 1: Read login credentials',
|
|
756
|
+
step_login_label: '\n🔑 Read login credentials',
|
|
757
|
+
no_login_cache: ' ⚠️ No local login session found, triggering login...',
|
|
758
|
+
login_no_cache: ' ⚠️ No local login session found, triggering login...',
|
|
759
|
+
login_ready: ' ✅ Login session ready ({0})',
|
|
760
|
+
resend: ' 🔄 Resending request...',
|
|
761
|
+
resend_csrf: ' 🔄 Resending request (csrf_token refreshed)...',
|
|
762
|
+
relogin_retry: ' 🔄 Resending request after re-login...',
|
|
763
|
+
exception: '\n❌ Exception: {0}',
|
|
764
|
+
yes: 'Yes',
|
|
765
|
+
no: 'No',
|
|
766
|
+
empty: '(empty)',
|
|
767
|
+
},
|
|
768
|
+
|
|
769
|
+
// ── lib/export-app.js ──────────────────────────────
|
|
770
|
+
export: {
|
|
771
|
+
usage: 'Usage: yidaconnector export <appType> [output]',
|
|
772
|
+
example1: 'Example: yidaconnector export APP_XXXXXXXXXXXXX',
|
|
773
|
+
example2: ' yidaconnector export APP_XXXXXXXXXXXXX ./my-app-backup.json',
|
|
774
|
+
title: ' yidaconnector export - Yida App Export Tool',
|
|
775
|
+
app_id: '\n App ID: {0}',
|
|
776
|
+
output_file: ' Output file: {0}',
|
|
777
|
+
step_get_forms: '\n📋 Step 2: Get app form list',
|
|
778
|
+
no_forms: ' ⚠️ No form pages found. Please verify the app ID.',
|
|
779
|
+
forms_found: ' ✅ Found {0} form pages',
|
|
780
|
+
step_export_schema: '\n📦 Step 3: Export form Schema',
|
|
781
|
+
exporting: '\n Exporting: {0} ({1})',
|
|
782
|
+
export_ok: ' ✅ Export successful',
|
|
783
|
+
export_failed: ' ⚠️ Export failed, skipped',
|
|
784
|
+
step_write_file: '\n💾 Step 4: Write export file',
|
|
785
|
+
done: ' ✅ Export complete!',
|
|
786
|
+
success_count: ' Success: {0} forms',
|
|
787
|
+
fail_count: ' Failed: {0} forms (skipped)',
|
|
788
|
+
fetch_forms_failed: 'Failed to fetch form list',
|
|
789
|
+
unnamed_form: 'Unnamed form',
|
|
790
|
+
},
|
|
791
|
+
|
|
792
|
+
// ── lib/import-app.js ──────────────────────────────
|
|
793
|
+
import: {
|
|
794
|
+
usage: 'Usage: yidaconnector import <file> [name]',
|
|
795
|
+
example1: 'Example: yidaconnector import ./yida-export.json',
|
|
796
|
+
example2: ' yidaconnector import ./yida-export.json "Quality Traceability (Production)"',
|
|
797
|
+
title: ' yidaconnector import - Yida App Import Tool',
|
|
798
|
+
import_file: '\n Import file: {0}',
|
|
799
|
+
step_read_file: '\n📂 Step 1: Read export file',
|
|
800
|
+
file_not_found: ' ❌ File not found: {0}',
|
|
801
|
+
parse_failed: ' ❌ Failed to parse export file: {0}',
|
|
802
|
+
invalid_format: ' ❌ Invalid export file format. Please use yidaconnector export to generate.',
|
|
803
|
+
migration_suffix: ' (migrated)',
|
|
804
|
+
read_ok: ' ✅ Read successfully, {0} forms total',
|
|
805
|
+
source_app_id: ' Source app ID: {0}',
|
|
806
|
+
target_app_name: ' Target app name: {0}',
|
|
807
|
+
step_create_app: '\n📦 Step 3: Create new app',
|
|
808
|
+
app_created: ' ✅ New app created: {0}',
|
|
809
|
+
step_rebuild_forms: '\n🔨 Step 4: Rebuild form pages',
|
|
810
|
+
migrating: '\n Migrating: {0} ({1})',
|
|
811
|
+
blank_form_created: ' ✅ Blank form created: {0}',
|
|
812
|
+
create_form_failed: ' ❌ Failed to create form: {0}',
|
|
813
|
+
schema_empty: ' ⚠️ Schema is empty, skipped',
|
|
814
|
+
schema_empty_msg: 'Schema is empty',
|
|
815
|
+
save_schema_failed: ' ❌ Failed to save Schema: {0}',
|
|
816
|
+
schema_saved: ' ✅ Schema saved',
|
|
817
|
+
config_failed: ' ⚠️ Config update failed (Schema saved): {0}',
|
|
818
|
+
config_updated: ' ✅ Form config updated',
|
|
819
|
+
step_write_report: '\n📄 Step 5: Write migration report',
|
|
820
|
+
report_written: ' ✅ Migration report written: {0}',
|
|
821
|
+
done: ' ✅ Migration complete!',
|
|
822
|
+
new_app_id: ' New app ID: {0}',
|
|
823
|
+
new_app_name: ' New app name: {0}',
|
|
824
|
+
app_url: ' URL: {0}',
|
|
825
|
+
success_count: ' Migrated: {0} forms',
|
|
826
|
+
fail_count: ' Failed/skipped: {0} forms',
|
|
827
|
+
report_path: ' Report: {0}',
|
|
828
|
+
notice_label: '\n ⚠️ Notes:',
|
|
829
|
+
notice_association: ' - Cross-form references (associationFormField) must be updated manually based on the migration report',
|
|
830
|
+
notice_custom_page: ' - Custom pages must be re-published separately using yidaconnector publish',
|
|
831
|
+
create_app_error: 'Failed to create app',
|
|
832
|
+
create_form_error: 'Failed to create form',
|
|
833
|
+
},
|
|
834
|
+
|
|
835
|
+
// ── lib/get-page-config.js ─────────────────────────
|
|
836
|
+
get_page_config: {
|
|
837
|
+
usage: 'Usage: yidaconnector get-page-config <appType> <formUuid>',
|
|
838
|
+
example: 'Example: yidaconnector get-page-config APP_XXX FORM-XXX',
|
|
839
|
+
title: ' get-page-config - Yida Page Config Query Tool',
|
|
840
|
+
app_id: '\n App ID: {0}',
|
|
841
|
+
form_uuid: ' Form UUID: {0}',
|
|
842
|
+
step_query: '\n🔍 Step 2: Query page config',
|
|
843
|
+
sending_request: ' Sending getShareConfig request...',
|
|
844
|
+
query_ok: ' ✅ Query successful!',
|
|
845
|
+
open_url: ' Public access: {0}',
|
|
846
|
+
share_url: ' Org share: {0}',
|
|
847
|
+
no_config: ' (No public access or share link configured)',
|
|
848
|
+
query_failed: ' ❌ Query failed: {0}',
|
|
849
|
+
},
|
|
850
|
+
|
|
851
|
+
// ── lib/save-share-config.js ───────────────────────
|
|
852
|
+
save_share_config: {
|
|
853
|
+
usage: 'Usage: yidaconnector save-share-config <appType> <formUuid> <openUrl> <isOpen> [openAuth]',
|
|
854
|
+
example: 'Example: yidaconnector save-share-config "APP_XXX" "FORM-XXX" "/o/xxx" "y" "n"',
|
|
855
|
+
is_open_hint: ' isOpen: y=enable public access, n=disable public access',
|
|
856
|
+
open_auth_hint: ' openAuth: y=require auth, n=no auth required (default)',
|
|
857
|
+
title: ' save-share-config - Yida Public Access Config Tool',
|
|
858
|
+
app_id: '\n App ID: {0}',
|
|
859
|
+
form_uuid: ' Form UUID: {0}',
|
|
860
|
+
open_url: ' Open URL: {0}',
|
|
861
|
+
is_open: ' Is open: {0}',
|
|
862
|
+
open_auth: ' Require auth: {0}',
|
|
863
|
+
step_validate: '\n📋 Step 0: Validate parameters',
|
|
864
|
+
validate_ok: ' ✅ Parameters validated',
|
|
865
|
+
validate_failed: ' ❌ Validation failed: {0}',
|
|
866
|
+
step_save: '\n💾 Step 2: Save public access config',
|
|
867
|
+
sending_request: ' Sending saveShareConfig request...',
|
|
868
|
+
save_ok: ' ✅ Config saved successfully!',
|
|
869
|
+
save_ok_msg: 'Public access config saved',
|
|
870
|
+
save_failed: ' ❌ Save failed: {0}',
|
|
871
|
+
save_failed_msg: 'Save failed',
|
|
872
|
+
err_is_open_invalid: 'isOpen must be y or n, current value: {0}',
|
|
873
|
+
err_open_auth_invalid: 'openAuth must be y or n, current value: {0}',
|
|
874
|
+
err_open_url_required: 'openUrl is required when enabling public access',
|
|
875
|
+
err_open_url_prefix: 'openUrl must start with /o/, current value: {0}',
|
|
876
|
+
err_open_url_chars: 'openUrl path only supports a-z A-Z 0-9 _ - and / as a segment separator, current value: {0}',
|
|
877
|
+
},
|
|
878
|
+
|
|
879
|
+
// ── lib/update-app.js ─────────────────────────────
|
|
880
|
+
update_app: {
|
|
881
|
+
usage: 'Usage: yidaconnector update-app <appType> [--name "New Name"] [--desc "Description"] [--layout slide|ver] [--theme deepBlue]',
|
|
882
|
+
example: 'Example: yidaconnector update-app APP_XXX --name "New App Name" --layout ver --theme deepBlue',
|
|
883
|
+
options: 'Options:\n --name, -n App name (specify at least one update field)\n --desc, -d App description\n --icon Icon name (e.g. xian-yingyong)\n --icon-color Icon color (default: #0089FF)\n --theme App theme colour\n --nav-theme Navigation theme navTheme\n --layout Layout direction layoutDirection (slide or ver)',
|
|
884
|
+
missing_app_type: 'Error: missing appType argument',
|
|
885
|
+
missing_update_field: 'Error: at least one update field must be specified (--name, --desc, --icon, --theme, --nav-theme, --layout)',
|
|
886
|
+
title: ' update-app - Yida App Info Update Tool',
|
|
887
|
+
app_type: '\n App ID: {0}',
|
|
888
|
+
new_name: ' New name: {0}',
|
|
889
|
+
new_desc: ' New desc: {0}',
|
|
890
|
+
new_icon: ' New icon: {0} ({1})',
|
|
891
|
+
step_update: '\n💾 Step 2: Update app info',
|
|
892
|
+
success: ' ✅ App info updated successfully!',
|
|
893
|
+
app_type_label: ' appType: {0}',
|
|
894
|
+
name_label: ' App name: {0}',
|
|
895
|
+
failed: ' ❌ Update failed: {0}',
|
|
896
|
+
layout_notice: 'Note: layoutDirection is consumed by the Yida app shell during creation/refresh. If the top action bar does not recover immediately after a backend switch, reopen the workbench or recreate the app with the target layout.',
|
|
897
|
+
},
|
|
898
|
+
|
|
899
|
+
// ── lib/update-form-config.js ──────────────────────
|
|
900
|
+
update_form_config: {
|
|
901
|
+
usage: 'Usage: yidaconnector update-form-config <appType> <formUuid> <isRenderNav> <title>',
|
|
902
|
+
example: 'Example: yidaconnector update-form-config "APP_XXX" "FORM_XXX" "false" "My Page"',
|
|
903
|
+
params_label: 'Parameters:',
|
|
904
|
+
param_is_render_nav: ' isRenderNav: true=show top nav, false=hide top nav',
|
|
905
|
+
param_title: ' title: page title (required)',
|
|
906
|
+
title: ' update-form-config - Yida Form Config Update Tool',
|
|
907
|
+
app_id: '\n App ID: {0}',
|
|
908
|
+
form_uuid: ' Form UUID: {0}',
|
|
909
|
+
is_render_nav: ' Show nav: {0}',
|
|
910
|
+
page_title: ' Page title: {0}',
|
|
911
|
+
step_update: '\n💾 Step 2: Update form config (hide top nav)',
|
|
912
|
+
sending_request: ' Sending updateFormSchemaInfo request...',
|
|
913
|
+
update_ok: ' ✅ Config updated successfully!',
|
|
914
|
+
nav_shown: 'Top nav shown',
|
|
915
|
+
nav_hidden: 'Top nav hidden',
|
|
916
|
+
update_failed: ' ❌ Update failed: {0}',
|
|
917
|
+
update_failed_msg: 'Update failed',
|
|
918
|
+
},
|
|
919
|
+
|
|
920
|
+
// ── lib/verify-short-url.js ────────────────────────
|
|
921
|
+
verify_short_url: {
|
|
922
|
+
usage: 'Usage: yidaconnector verify-short-url <appType> <formUuid> <url>',
|
|
923
|
+
example: 'Example: yidaconnector verify-short-url "APP_XXX" "FORM-XXX" "/o/aaa"',
|
|
924
|
+
formats_label: ' Supported formats:',
|
|
925
|
+
format_open: ' /o/xxx - public access (external)',
|
|
926
|
+
format_share: ' /s/xxx - org share (internal)',
|
|
927
|
+
open_url_label: 'Public access URL',
|
|
928
|
+
share_url_label: 'Org share URL',
|
|
929
|
+
title: ' verify-short-url - Yida URL Verification Tool',
|
|
930
|
+
app_id: '\n App ID: {0}',
|
|
931
|
+
form_uuid: ' Form UUID: {0}',
|
|
932
|
+
step_validate: '\n📋 Step 0: Validate URL format',
|
|
933
|
+
validate_ok: ' ✅ Format validated',
|
|
934
|
+
validate_failed: ' ❌ Validation failed: {0}',
|
|
935
|
+
step_verify: '\n🔍 Step 2: Verify URL',
|
|
936
|
+
sending_request: ' Sending verifyShortUrl request...',
|
|
937
|
+
url_available: ' ✅ URL is available!',
|
|
938
|
+
open_available_msg: 'This public access URL is available',
|
|
939
|
+
share_available_msg: 'This org share URL is available',
|
|
940
|
+
url_taken: ' ❌ URL is taken',
|
|
941
|
+
url_taken_msg: 'This short URL is already taken',
|
|
942
|
+
verify_failed: ' ❌ Verification request failed',
|
|
943
|
+
err_url_prefix: 'URL must start with /o/ or /s/, current value: {0}',
|
|
944
|
+
err_url_chars: 'URL path only supports a-z A-Z 0-9 _ - and / as a segment separator, current value: {0}',
|
|
945
|
+
err_url_empty: 'URL path cannot be empty: {0}',
|
|
946
|
+
},
|
|
947
|
+
|
|
948
|
+
// ── lib/copy.js ────────────────────────────────────
|
|
949
|
+
copy: {
|
|
950
|
+
title: ' yidaconnector copy - Initialize Yida Working Directory',
|
|
951
|
+
package_root: '\n📦 Package root: {0}',
|
|
952
|
+
dest_base: '🤖 Target root: {0}',
|
|
953
|
+
dest_root: '🤖 Target root: {0}',
|
|
954
|
+
dest_empty_flatten: '📂 Target directory is empty, flattening project/ contents directly into it (no project/ subdirectory)',
|
|
955
|
+
force_mode: '⚠️ --force mode: target directory will be cleared before copying',
|
|
956
|
+
no_package: '\n❌ yidaconnector package directory not found',
|
|
957
|
+
no_package_hint1: ' Please ensure yidaconnector is installed globally:',
|
|
958
|
+
no_package_hint2: ' npm install -g yidaconnector',
|
|
959
|
+
no_ai_tool: '\n❌ No active AI tool environment detected\n Supported tools: Wukong, Codex, OpenCode, Claude Code, Aone Copilot, Cursor, Qoder\n\n Current detection results:',
|
|
960
|
+
no_active_tool: '\n❌ No active AI tool environment detected',
|
|
961
|
+
supported_tools: ' Supported tools: Wukong, Codex, OpenCode, Claude Code, Aone Copilot, Cursor, Qoder',
|
|
962
|
+
current_result: '\n Current detection results:',
|
|
963
|
+
force_hint: '\n To force copy to current directory, run:\n yidaconnector copy --force',
|
|
964
|
+
force_cmd: ' yidaconnector copy --force',
|
|
965
|
+
copying: ' Copied: {0}',
|
|
966
|
+
copying_label: '\n📂 Copying {0}...',
|
|
967
|
+
creating_symlink: '\n📂 Creating yida-skills/ symlink...',
|
|
968
|
+
file_copied: ' Copied: {0}',
|
|
969
|
+
cleared: ' 🗑️ Cleared: {0}',
|
|
970
|
+
symlink_removed: ' 🗑️ Removed old symlink: {0}',
|
|
971
|
+
old_symlink_removed: ' 🗑️ Removed old symlink: {0}',
|
|
972
|
+
dir_deleted: ' 🗑️ Deleted directory: {0}',
|
|
973
|
+
removed: ' 🗑️ Removed: {0}',
|
|
974
|
+
symlink_created: ' 🔗 Symlink: {0} -> {1}',
|
|
975
|
+
symlink_label: 'symlink',
|
|
976
|
+
done: '✅ Done!',
|
|
977
|
+
files_copied: ' Files copied: {0}',
|
|
978
|
+
files_count: '{0} files',
|
|
979
|
+
symlinks_created: ' Symlinks created: {0}',
|
|
980
|
+
wukong_skills_cleanup: '\n🗑️ Wukong env: Cleaning up yida-skills/ symlink (Wukong uses manual skill upload, no symlink needed)...',
|
|
981
|
+
wukong_skills_cleaned: 'cleaned up',
|
|
982
|
+
wukong_skills_not_found: ' ℹ️ No yida-skills/ symlink or directory found, nothing to clean: {0}',
|
|
983
|
+
remove_failed: ' ❌ Remove failed: {0} ({1})',
|
|
984
|
+
symlink_fallback_copy: ' ⚠️ Windows symlink creation failed (requires admin privileges), falling back to directory copy: {0}',
|
|
985
|
+
symlink_failed: ' ❌ Symlink creation failed: {0} ({1})',
|
|
986
|
+
result_symlink: ' {0} → {1} (symlink)',
|
|
987
|
+
result_copy: ' {0} → {1} ({2} files)',
|
|
988
|
+
},
|
|
989
|
+
|
|
990
|
+
// ── lib/publish.js ─────────────────────────────────
|
|
991
|
+
generate_page: {
|
|
992
|
+
spec_not_found: 'Spec file not found: {0}',
|
|
993
|
+
spec_invalid: 'Failed to parse spec JSON: {0}',
|
|
994
|
+
unknown_template: 'Unknown page template: {0}',
|
|
995
|
+
available_templates: 'Available templates: {0}',
|
|
996
|
+
template_not_found: 'Template file not found: {0}',
|
|
997
|
+
done: 'Page generated: {0}',
|
|
998
|
+
hint: 'Next run yidaconnector compile <file>, or pass --compile to compile immediately.',
|
|
999
|
+
success: 'Page generation complete',
|
|
1000
|
+
},
|
|
1001
|
+
page_size: {
|
|
1002
|
+
large_source: 'Large page source detected: {0} ({1}, about {2} lines)',
|
|
1003
|
+
long_line_hint: 'Detected a very long single line (about {0} characters), usually minified vendor code or base64; move it out of the page source.',
|
|
1004
|
+
base64_hint: 'Detected long inline base64 content; upload it to CDN/OSS and reference the URL instead.',
|
|
1005
|
+
memory_hint: 'Publish/compile keeps source, built output, minified output, and schema copies in memory; split vendor/base64 content or load it with this.utils.loadScript.',
|
|
1006
|
+
windows_hint: 'On Windows, do not write large JSX through PowerShell Get-Content -Raw + ConvertTo-Json; use Node fs.writeFileSync/appendFileSync in chunks.',
|
|
1007
|
+
},
|
|
1008
|
+
build_page: {
|
|
1009
|
+
step: 'Build Yida-compatible page source',
|
|
1010
|
+
preparing: 'Building Yida-compatible page source...',
|
|
1011
|
+
output: 'Yida-compatible source: {0}',
|
|
1012
|
+
success: 'Yida-compatible page source built',
|
|
1013
|
+
done: 'Page build complete',
|
|
1014
|
+
},
|
|
1015
|
+
publish: {
|
|
1016
|
+
title: ' yida-publish - Yida Page Publishing Tool',
|
|
1017
|
+
platform: ' Platform: {0}',
|
|
1018
|
+
base_url: '\n Platform: {0}',
|
|
1019
|
+
app_type: ' App ID: {0}',
|
|
1020
|
+
app_id: ' App ID: {0}',
|
|
1021
|
+
form_uuid: ' Form ID: {0}',
|
|
1022
|
+
source_file: ' Source: {0}',
|
|
1023
|
+
compiled_file: ' Output: {0}',
|
|
1024
|
+
output_dir: ' Output dir: pages/dist/',
|
|
1025
|
+
step_lint: '\n🔍 Step 0: Yida Coding Standards Pre-check\n',
|
|
1026
|
+
lint_title: '⚠️ Yida page code check:',
|
|
1027
|
+
lint_error_line: ' ❌ Line {0}: {1}',
|
|
1028
|
+
lint_warning_line: ' ⚠️ Line {0}: {1}',
|
|
1029
|
+
lint_event_function: 'Event binding uses function, should use arrow function (e) => { this.xxx() }',
|
|
1030
|
+
lint_missing_render_jsx: 'Missing export function renderJsx(); Yida custom pages must export renderJsx',
|
|
1031
|
+
lint_import_require: 'Found import/require. Yida custom pages cannot import modules; load third-party scripts with this.utils.loadScript',
|
|
1032
|
+
lint_react_hooks: 'Found React Hooks. Yida runtime uses React 16 class-component style and does not support useState/useEffect hooks',
|
|
1033
|
+
lint_export_default: 'Found export default. Yida needs named exports such as export function renderJsx/didMount',
|
|
1034
|
+
lint_jsx_extension: 'This .js file contains JSX; prefer .jsx for source files. The compiled output is still .js',
|
|
1035
|
+
lint_event_direct_method: 'Event binding passes this.xxx directly and will lose this; use (e) => { this.xxx(e); }',
|
|
1036
|
+
lint_event_bind_this: 'Event binding uses .bind(this); use (e) => { this.xxx(e); } instead',
|
|
1037
|
+
lint_lifecycle_case: 'Detected lifecycle export {0}; Yida only recognizes {1} (case-sensitive)',
|
|
1038
|
+
lint_react_lifecycle_method: 'Detected React lifecycle {0}; export {1} for Yida custom pages',
|
|
1039
|
+
lint_event_lowercase: 'Detected lowercase event prop {0}; React/Yida will not bind it. Use {1}',
|
|
1040
|
+
lint_event_call_result: 'Event binding invokes a function or is not an expression handler; use (e) => { self.xxx(e); }',
|
|
1041
|
+
lint_event_noop_arrow: 'Event arrow function references a handler without calling it; use (e) => { self.xxx(e); }',
|
|
1042
|
+
lint_button_missing_handler: 'Visible <button> has no onClick/onMouseDown/onKeyDown or disabled state; bind an event handler or use span/div for static labels',
|
|
1043
|
+
lint_array_callback_function: '.{0}(function ...) may lose this in callbacks; use .{0}((item) => ...) instead',
|
|
1044
|
+
lint_foreach_callback_function: '.forEach(function ...) may lose this in callbacks; prefer .forEach((item) => ...)',
|
|
1045
|
+
lint_controlled_input: 'input uses controlled value mode. Yida pages should use defaultValue + onChange to update _customState',
|
|
1046
|
+
lint_native_select_ui: 'Found a native select. User-facing custom page dropdowns should use a Tailwind-styled custom dropdown component for consistent visual quality',
|
|
1047
|
+
lint_iframe_self_navigation: 'Yida custom pages run in an iframe. Use target="_top"/target="_blank" or window.top.location for Yida page navigation to avoid nested pages.',
|
|
1048
|
+
lint_page_size_limit: 'pageSize={0} exceeds the Yida API limit of 100; use 100 or less',
|
|
1049
|
+
lint_yida_api_catch: 'this.utils.yida API call has no detected .catch(); add error handling and toast the user',
|
|
1050
|
+
lint_echarts_legacy_map_china: 'ECharts 5 no longer supports echarts/map/js/china.js. Load DataV GeoJSON and call echarts.registerMap("china", geoJson) instead',
|
|
1051
|
+
lint_echarts_rich_label_formatter: 'ECharts label.formatter returning rich text templates is unstable in Yida custom pages; prefer plain formatter strings or precomputed label text',
|
|
1052
|
+
lint_const_let: 'Uses const/let declaration, recommend changing to var (Yida runtime compatibility)',
|
|
1053
|
+
lint_computed_property: 'Uses ES6 computed property name { [key]: value }, which is not supported by Yida JS engine and causes silent failure. Use var obj = {}; obj[key] = value; instead',
|
|
1054
|
+
lint_pad_method: 'Uses String.{0}(), which is not supported by Yida JS engine and causes Promise callbacks to silently abort. Use ternary operator instead, e.g.: x < 10 ? "0" + x : "" + x',
|
|
1055
|
+
lint_large_then_callback: 'Promise .then() callback is too large ({0} lines, recommended max {1} lines), may cause silent truncation. Extract logic into a separate export function',
|
|
1056
|
+
lint_fix_errors: '❌ Please fix the above errors before publishing',
|
|
1057
|
+
lint_skip_hint: '💡 Add --skip-lint parameter to skip checking',
|
|
1058
|
+
lint_passed: ' ✅ Code check passed\n',
|
|
1059
|
+
lint_skipped: '\n⏭️ Skipped code pre-check (--skip-lint)\n',
|
|
1060
|
+
duplicate_source_mismatch: ' ⚠️ Found another copy with the same file name but different content. Publishing: {0}; other copy: {1}',
|
|
1061
|
+
data_source_fetching: ' Reading existing page data sources...',
|
|
1062
|
+
data_source_preserved: ' ✅ Preserved existing page data sources: {0}',
|
|
1063
|
+
data_source_none: ' No custom page data sources to preserve',
|
|
1064
|
+
data_source_fetch_failed: 'Could not read the existing page Schema, so publishing stopped to avoid clearing existing data sources: {0}',
|
|
1065
|
+
target_checking: ' Checking publish target type...',
|
|
1066
|
+
target_check_forced: ' ⚠️ Skipped publish target type check (--force)',
|
|
1067
|
+
target_check_ok: ' ✅ Publish target confirmed: {0} ({1})',
|
|
1068
|
+
target_check_failed: 'Could not verify publish target: {0}',
|
|
1069
|
+
target_not_found: 'Publish target was not found in app navigation: {0}',
|
|
1070
|
+
target_type_invalid: 'Publish target is not a custom display page: {0} current type is {1}',
|
|
1071
|
+
target_type_hint: 'The current target "{0}" does not look like a custom page (type: {1}). Do not publish JSX to data forms or process forms.',
|
|
1072
|
+
target_list_hint: 'Run yidaconnector list-forms {0} --keyword <page name>, then choose a custom page formUuid with formType=display.',
|
|
1073
|
+
target_force_hint: 'Append --force only when you intentionally bypass this guard; it overwrites the target Schema and should be used only for a known custom page.',
|
|
1074
|
+
step_compile: '\n📦 Step 1: Compile source & build Schema\n',
|
|
1075
|
+
reading_source: '[1/4] Reading {0} source...',
|
|
1076
|
+
compiling: '[2/4] Babel compiling {0}...',
|
|
1077
|
+
compile_failed: ' ❌ Compilation failed: {0}',
|
|
1078
|
+
compile_location: '\n Location: line {0}, column {1}',
|
|
1079
|
+
compile_error_loc: ' Location: line {0}, column {1}',
|
|
1080
|
+
compile_error_code: ' Error code: {0}',
|
|
1081
|
+
minifying: '[3/4] UglifyJS minifying → {0}...',
|
|
1082
|
+
minify_failed: ' Minification failed: {0}',
|
|
1083
|
+
uglifying: '[3/4] UglifyJS minifying → {0}...',
|
|
1084
|
+
uglify_failed: ' Minification failed: {0}',
|
|
1085
|
+
compile_done: ' ✅ Compilation complete: {0}',
|
|
1086
|
+
building_schema: '[4/4] Building Schema...',
|
|
1087
|
+
schema_built: ' ✅ Schema built successfully!',
|
|
1088
|
+
step_login: '\n🔑 Step 2: Read login credentials',
|
|
1089
|
+
step_publish: '\n📤 Step 3: Publish Schema\n',
|
|
1090
|
+
resend_save_csrf: ' 🔄 Resending saveFormSchema request (csrf_token refreshed)...',
|
|
1091
|
+
resend_save: ' 🔄 Resending saveFormSchema request after re-login...',
|
|
1092
|
+
csrf_retry: ' 🔄 Resending saveFormSchema request (csrf_token refreshed)...',
|
|
1093
|
+
relogin_retry: ' 🔄 Resending saveFormSchema request after re-login...',
|
|
1094
|
+
publish_failed: '\n❌ Publish failed: {0}',
|
|
1095
|
+
schema_published: ' ✅ Schema published successfully!',
|
|
1096
|
+
schema_success: ' ✅ Schema published successfully!',
|
|
1097
|
+
form_uuid_label: ' formUuid: {0}',
|
|
1098
|
+
version_label: ' version: {0}',
|
|
1099
|
+
step_config: '\n⚙️ Step 4: Update form config\n',
|
|
1100
|
+
sending_config: ' Sending updateFormConfig request...',
|
|
1101
|
+
resend_config_csrf: ' 🔄 Resending updateFormConfig request (csrf_token refreshed)...',
|
|
1102
|
+
resend_config: ' 🔄 Resending updateFormConfig request after re-login...',
|
|
1103
|
+
config_csrf_retry: ' 🔄 Resending updateFormConfig request (csrf_token refreshed)...',
|
|
1104
|
+
config_relogin_retry: ' 🔄 Resending updateFormConfig request after re-login...',
|
|
1105
|
+
success: ' ✅ Published successfully!',
|
|
1106
|
+
publish_success: ' ✅ Published successfully!',
|
|
1107
|
+
config_updated: ' Config updated: MINI_RESOURCE = 8',
|
|
1108
|
+
config_failed: ' ⚠️ Config update failed: {0}',
|
|
1109
|
+
schema_ok_config_failed: ' Schema published, but config update failed',
|
|
1110
|
+
schema_published_config_failed: ' Schema published, but config update failed',
|
|
1111
|
+
step_health_check: '\n🩺 Step 5: Health check published page\n',
|
|
1112
|
+
health_check_ok: ' ✅ Health check passed: HTTP {0}',
|
|
1113
|
+
health_check_failed: ' ⚠️ Health check failed: HTTP {0} {1}',
|
|
1114
|
+
exception: '\n❌ Publish error: {0}',
|
|
1115
|
+
error: '\n❌ Publish error: {0}',
|
|
1116
|
+
source_not_found: '❌ Source file not found: {0}',
|
|
1117
|
+
usage: 'Usage: yidaconnector publish <sourceFile> <appType> <formUuid> [--health-check]',
|
|
1118
|
+
example: 'Example: yidaconnector publish pages/src/xxx.js APP_XXX FORM-XXX --health-check',
|
|
1119
|
+
},
|
|
1120
|
+
|
|
1121
|
+
// ── lib/qr-login.js ────────────────────────────────
|
|
1122
|
+
qr_login: {
|
|
1123
|
+
title: '🔐 Yida Terminal QR Code Login',
|
|
1124
|
+
step_init: ' Step 1: Initializing session...',
|
|
1125
|
+
step_get_qr: ' Step 2: Fetching QR code...',
|
|
1126
|
+
scan_hint: ' 📱 Please scan the QR code below with DingTalk:',
|
|
1127
|
+
qr_url_label: ' QR code URL: {0}',
|
|
1128
|
+
waiting_scan: ' ⏳ Waiting for scan (up to 2 minutes)...',
|
|
1129
|
+
scanned_confirm: ' ✅ QR code scanned! Please confirm login on your phone...',
|
|
1130
|
+
scan_success: ' ✅ Scan confirmed!',
|
|
1131
|
+
step_exchange: ' Step 4: Exchanging login credentials...',
|
|
1132
|
+
step_get_corps: ' Step 5: Fetching organization list...',
|
|
1133
|
+
step_switch_corp: ' Step 7: Switching to selected organization...',
|
|
1134
|
+
only_one_corp: ' ✅ Single organization detected: {0}, auto-selected',
|
|
1135
|
+
select_corp_prompt: ' 🏢 Multiple organizations found, please select one:',
|
|
1136
|
+
select_corp_input: ' Enter number (1-{0}): ',
|
|
1137
|
+
select_corp_invalid: ' ❌ Invalid input, please enter a number between 1 and {0}',
|
|
1138
|
+
target_corp_not_found: 'Specified corpId was not found in accessible organizations: {0}',
|
|
1139
|
+
corp_selected: ' ✅ Selected organization: {0}',
|
|
1140
|
+
login_success: '✅ Login successful!',
|
|
1141
|
+
qrcode_fallback: ' ⚠️ qrcode package not installed, please visit the URL below manually:',
|
|
1142
|
+
qrcode_render_failed: ' ⚠️ QR code render failed ({0}), please visit the URL below:',
|
|
1143
|
+
get_qr_failed: 'Failed to parse QR code response: {0}',
|
|
1144
|
+
get_qr_api_failed: 'QR code API failed: {0}',
|
|
1145
|
+
get_qr_error: 'Failed to get QR code: {0}',
|
|
1146
|
+
qr_expired: 'QR code expired, please login again',
|
|
1147
|
+
poll_timeout: 'Scan timeout (2 minutes), please login again',
|
|
1148
|
+
poll_error: 'Failed to poll scan status: {0}',
|
|
1149
|
+
exchange_failed: 'Failed to parse auth code exchange response: {0}',
|
|
1150
|
+
exchange_api_failed: 'Auth code exchange API failed: {0}',
|
|
1151
|
+
exchange_error: 'Failed to exchange auth code: {0}',
|
|
1152
|
+
get_corp_list_failed: 'Failed to parse organization list response: {0}',
|
|
1153
|
+
get_corp_list_api_failed: 'Organization list API failed: {0}',
|
|
1154
|
+
get_corps_warn: ' ⚠️ Failed to get organization list ({0}), using default organization',
|
|
1155
|
+
switch_corp_failed: 'Failed to switch organization: {0}',
|
|
1156
|
+
switch_corp_warn: ' ⚠️ Failed to switch organization ({0}), using current organization',
|
|
1157
|
+
select_corp_warn: ' ⚠️ Organization selection failed ({0}), using default organization',
|
|
1158
|
+
no_corp_available: 'No accessible organizations found',
|
|
1159
|
+
no_csrf_in_cookie: 'Login succeeded but no csrf_token found, please try again',
|
|
1160
|
+
stdin_closed: 'Input stream closed, cannot select organization',
|
|
1161
|
+
},
|
|
1162
|
+
|
|
1163
|
+
// ── scripts/postinstall.js ─────────────────────────
|
|
1164
|
+
postinstall: {
|
|
1165
|
+
welcome_title: ' 🎉 Welcome to YidaConnector! ',
|
|
1166
|
+
install_success: ' ✅ Installation complete! {0} Yida AI development tool is ready.',
|
|
1167
|
+
update_success: ' ✅ Update complete! {0} YidaConnector has been upgraded to the latest version.',
|
|
1168
|
+
ai_mode_title: ' 🚀 AI Conversation Mode',
|
|
1169
|
+
ai_mode_desc: ' In Codex / Claude Code / Aone Copilot / Cursor and other AI tools, just chat:',
|
|
1170
|
+
prompt1: ' 📋 "Help me create an attendance management system with Yida"',
|
|
1171
|
+
prompt2: ' 💰 "Build a personal salary calculator app"',
|
|
1172
|
+
prompt3: ' 🏢 "Create a CRM customer management system"',
|
|
1173
|
+
prompt4: ' 🎂 "Make a birthday greeting mini app"',
|
|
1174
|
+
steps_title: ' 📖 Getting Started',
|
|
1175
|
+
step1: ' {0}Step 1{1} Open your AI coding tool (Codex / Claude Code / Cursor, etc.)',
|
|
1176
|
+
step2: ' {0}Step 2{1} Describe the app you want in natural language',
|
|
1177
|
+
step3: ' {0}Step 3{1} AI automatically runs yidaconnector commands to create and publish',
|
|
1178
|
+
step4: ' {0}Step 4{1} Get a working Yida app link 🎉',
|
|
1179
|
+
commands_title: ' ⚡ Quick Commands',
|
|
1180
|
+
cmd_env: ' {0}yidaconnector env{1} {2}# Detect AI tool environment and login status{3}',
|
|
1181
|
+
cmd_login: ' {0}yidaconnector login{1} {2}# Log in to Yida{3}',
|
|
1182
|
+
cmd_help: ' {0}yidaconnector --help{1} {2}# Show all commands{3}',
|
|
1183
|
+
footer1: ' 📚 Docs: https://github.com/bunnyrui/yidaconnector',
|
|
1184
|
+
footer2: ' 💬 Community: Join YidaConnector community on DingTalk',
|
|
1185
|
+
},
|
|
1186
|
+
|
|
1187
|
+
// ── lib/conversation/export-conversation.js ────────
|
|
1188
|
+
exportConv: {
|
|
1189
|
+
// CLI option descriptions
|
|
1190
|
+
outputDesc: 'Specify output file path',
|
|
1191
|
+
inputDesc: 'Specify conversation record file manually',
|
|
1192
|
+
latestDesc: 'Export only the latest conversation',
|
|
1193
|
+
listDesc: 'List available conversation records',
|
|
1194
|
+
// Main flow messages
|
|
1195
|
+
title: '📝 Export AI Conversation Records',
|
|
1196
|
+
detectEnv: '🔍 Detecting environment...',
|
|
1197
|
+
currentTool: ' Current AI tool: {0}',
|
|
1198
|
+
collecting: '📥 Collecting conversation records...',
|
|
1199
|
+
noConversation: '❌ No conversation records found',
|
|
1200
|
+
messagesFound: ' Found {0} messages',
|
|
1201
|
+
loadingConfig: '⚙️ Loading app config...',
|
|
1202
|
+
appName: ' App name: {0}',
|
|
1203
|
+
noConfig: ' No app config found, using defaults',
|
|
1204
|
+
formatting: '📄 Formatting Markdown...',
|
|
1205
|
+
writing: '💾 Writing file...',
|
|
1206
|
+
success: '✅ Export successful!',
|
|
1207
|
+
outputPath: '📁 Output path: {0}',
|
|
1208
|
+
error: '❌ Export failed: {0}',
|
|
1209
|
+
// collector.js messages
|
|
1210
|
+
inputNotFound: '❌ Input file not found: {0}',
|
|
1211
|
+
unsupportedFormat: '❌ Unsupported file format, please use .json or .jsonl',
|
|
1212
|
+
noClaudeProject: '❌ No Claude Code project found for current directory',
|
|
1213
|
+
useInputHint: '💡 Please use --input to specify a conversation file manually',
|
|
1214
|
+
noConversations: '❌ No conversation records found',
|
|
1215
|
+
availableConversations: '📋 Available conversations:',
|
|
1216
|
+
usingLatest: ' Using latest conversation: {0}',
|
|
1217
|
+
envNotSupported: '❌ Current environment does not support automatic conversation detection',
|
|
1218
|
+
// formatter.js messages
|
|
1219
|
+
noKeySteps: 'No tool calls recorded',
|
|
1220
|
+
},
|
|
1221
|
+
|
|
1222
|
+
// ── lib/cdn-*.js ───────────────────────────────────
|
|
1223
|
+
cdn: {
|
|
1224
|
+
// Configuration
|
|
1225
|
+
config_load_error: 'Failed to load CDN config: {0}',
|
|
1226
|
+
config_saved: '✅ CDN config saved to: {0}',
|
|
1227
|
+
config_usage: 'Usage: yidaconnector cdn-config [options]',
|
|
1228
|
+
config_examples: `
|
|
1229
|
+
Examples:
|
|
1230
|
+
yidaconnector cdn-config --init
|
|
1231
|
+
yidaconnector cdn-config --show
|
|
1232
|
+
yidaconnector cdn-config --set-domain cdn.example.com`,
|
|
1233
|
+
config_options: `
|
|
1234
|
+
Options:
|
|
1235
|
+
--init Initialize config (interactive)
|
|
1236
|
+
--show Show current config
|
|
1237
|
+
--set-key <key> Set AccessKey ID
|
|
1238
|
+
--set-secret <secret> Set AccessKey Secret
|
|
1239
|
+
--set-domain <domain> Set CDN domain
|
|
1240
|
+
--set-bucket <bucket> Set OSS Bucket name
|
|
1241
|
+
--set-region <region> Set OSS region
|
|
1242
|
+
--set-path <path> Set upload path prefix`,
|
|
1243
|
+
config_file_path: '📄 Config file: {0}',
|
|
1244
|
+
config_section_aliyun: '🔐 Alibaba Cloud Credentials',
|
|
1245
|
+
config_section_cdn: '🌐 CDN Config',
|
|
1246
|
+
config_section_oss: '📦 OSS Config',
|
|
1247
|
+
config_section_upload: '📤 Upload Config',
|
|
1248
|
+
config_cdn_domain: 'CDN Domain',
|
|
1249
|
+
config_oss_region: 'OSS Region',
|
|
1250
|
+
config_oss_bucket: 'OSS Bucket',
|
|
1251
|
+
config_oss_endpoint: 'OSS Endpoint',
|
|
1252
|
+
config_upload_path: 'Upload Path',
|
|
1253
|
+
config_compress: 'Image Compression',
|
|
1254
|
+
config_max_width: 'Max Width',
|
|
1255
|
+
config_quality: 'Image Quality',
|
|
1256
|
+
config_not_set: 'Not set',
|
|
1257
|
+
config_enabled: 'Enabled',
|
|
1258
|
+
config_disabled: 'Disabled',
|
|
1259
|
+
config_status_valid: '✅ Config complete, ready to use',
|
|
1260
|
+
config_status_invalid: '⚠️ Config incomplete',
|
|
1261
|
+
config_missing: ' Missing fields: {0}',
|
|
1262
|
+
config_updated: '✅ Config updated!',
|
|
1263
|
+
config_init_title: '🔧 CDN Config Initialization Wizard',
|
|
1264
|
+
config_init_desc: 'To use CDN image upload, configure the following:',
|
|
1265
|
+
config_init_example: 'Example config:',
|
|
1266
|
+
config_init_hint: '💡 Use these commands to set each parameter:',
|
|
1267
|
+
config_init_or: ' Or set all at once:',
|
|
1268
|
+
// Option descriptions (separate keys for help text concatenation)
|
|
1269
|
+
config_opt_init: 'Initialize config (interactive)',
|
|
1270
|
+
config_opt_show: 'Show current config',
|
|
1271
|
+
config_opt_key: 'Set AccessKey ID',
|
|
1272
|
+
config_opt_secret: 'Set AccessKey Secret',
|
|
1273
|
+
config_opt_domain: 'Set CDN domain',
|
|
1274
|
+
config_opt_bucket: 'Set OSS Bucket name',
|
|
1275
|
+
config_opt_region: 'Set OSS region',
|
|
1276
|
+
config_opt_path: 'Set upload path prefix',
|
|
1277
|
+
|
|
1278
|
+
// Upload
|
|
1279
|
+
upload_usage: 'Usage: yidaconnector cdn-upload <image-path> [options]',
|
|
1280
|
+
upload_examples: `
|
|
1281
|
+
Examples:
|
|
1282
|
+
yida cdn-upload ./image.png
|
|
1283
|
+
yida cdn-upload ./images/*.png --domain cdn.example.com
|
|
1284
|
+
yida cdn-upload ./photo.jpg --path products/`,
|
|
1285
|
+
upload_options: `
|
|
1286
|
+
Options:
|
|
1287
|
+
--domain <domain> CDN domain (optional)
|
|
1288
|
+
--path <path> Upload path prefix (optional)
|
|
1289
|
+
--compress Enable image compression (default)
|
|
1290
|
+
--no-compress Disable image compression`,
|
|
1291
|
+
// Option descriptions (separate keys)
|
|
1292
|
+
upload_opt_domain: 'CDN domain (optional)',
|
|
1293
|
+
upload_opt_path: 'Upload path prefix (optional)',
|
|
1294
|
+
upload_opt_compress: 'Enable image compression (default)',
|
|
1295
|
+
upload_opt_no_compress: 'Disable image compression',
|
|
1296
|
+
upload_no_files: '❌ Please specify image files to upload',
|
|
1297
|
+
config_incomplete: '❌ CDN config incomplete',
|
|
1298
|
+
missing_fields: ' Missing fields: {0}',
|
|
1299
|
+
run_config_init: ' Please run: yidaconnector cdn-config --init',
|
|
1300
|
+
no_config: '❌ CDN config not found',
|
|
1301
|
+
oss_sdk_required: '❌ Missing ali-oss SDK',
|
|
1302
|
+
run_npm_install: ' Please run: npm install {0}',
|
|
1303
|
+
no_images_found: '❌ No supported image files found',
|
|
1304
|
+
uploading_images: '📤 Uploading {0} images...',
|
|
1305
|
+
uploading_file: ' Uploading: {0}',
|
|
1306
|
+
upload_success: ' ✅ {0}',
|
|
1307
|
+
upload_failed: ' ❌ {0} upload failed: {1}',
|
|
1308
|
+
upload_summary: '\n📊 Upload Summary',
|
|
1309
|
+
upload_success_count: ' Success: {0}',
|
|
1310
|
+
upload_fail_count: ' Failed: {0}',
|
|
1311
|
+
cdn_urls: '\n🔗 CDN URLs:',
|
|
1312
|
+
upload_error: '❌ Upload failed: {0}',
|
|
1313
|
+
|
|
1314
|
+
// Refresh
|
|
1315
|
+
refresh_usage: 'Usage: yidaconnector cdn-refresh [options]',
|
|
1316
|
+
refresh_examples: `
|
|
1317
|
+
Examples:
|
|
1318
|
+
yida cdn-refresh --urls "https://cdn.example.com/image.png"
|
|
1319
|
+
yida cdn-refresh --paths "/yida-images/"
|
|
1320
|
+
yida cdn-refresh --file urls.txt`,
|
|
1321
|
+
refresh_options: `
|
|
1322
|
+
Options:
|
|
1323
|
+
--urls <url-list> URLs to refresh (comma-separated)
|
|
1324
|
+
--paths <path-list> Directory paths to refresh (comma-separated)
|
|
1325
|
+
--file <file> Read URL list from file (one per line)`,
|
|
1326
|
+
// Option descriptions (separate keys)
|
|
1327
|
+
refresh_opt_urls: 'URLs to refresh (comma-separated)',
|
|
1328
|
+
refresh_opt_paths: 'Directory paths to refresh (comma-separated)',
|
|
1329
|
+
refresh_opt_file: 'Read URL list from file (one per line)',
|
|
1330
|
+
refresh_no_targets: '❌ Please specify URLs or directories to refresh',
|
|
1331
|
+
cdn_sdk_required: '❌ Missing Alibaba Cloud CDN SDK',
|
|
1332
|
+
querying_quota: '📊 Querying refresh quota...',
|
|
1333
|
+
quota_info: ' URL refresh: {0}/day, {1} remaining | Dir refresh: {2}/day, {3} remaining',
|
|
1334
|
+
quota_query_failed: ' ⚠️ Failed to query quota: {0}',
|
|
1335
|
+
refreshing_urls: '🔄 Refreshing {0} URLs...',
|
|
1336
|
+
refreshing_paths: '🔄 Refreshing {0} directories...',
|
|
1337
|
+
refresh_task_id: ' ✅ Task ID: {0}',
|
|
1338
|
+
refresh_urls_failed: ' ❌ URL refresh failed: {0}',
|
|
1339
|
+
refresh_paths_failed: ' ❌ Directory refresh failed: {0}',
|
|
1340
|
+
refresh_summary: '\n📊 Refresh Summary',
|
|
1341
|
+
url_refresh_success: ' ✅ URL refresh success, Task ID: {0}',
|
|
1342
|
+
path_refresh_success: ' ✅ Directory refresh success, Task ID: {0}',
|
|
1343
|
+
refresh_error: '❌ Refresh failed: {0}',
|
|
1344
|
+
file_not_found: '❌ File not found: {0}',
|
|
1345
|
+
},
|
|
1346
|
+
|
|
1347
|
+
// ── src/flash-note/flash-to-prd.ts ──────────────
|
|
1348
|
+
flashNote: {
|
|
1349
|
+
toPrd: {
|
|
1350
|
+
title: '📋 DingTalk Flash Note to PRD',
|
|
1351
|
+
help_usage: 'Usage: yidaconnector flash-to-prd --file <flash-note-path> [--name <project-name>]',
|
|
1352
|
+
help_usage2: ' yidaconnector flash-to-prd --name <project-name> (read from stdin)',
|
|
1353
|
+
help_args_title: 'Arguments:',
|
|
1354
|
+
help_arg_file: ' --file, -f <path> Flash note file path (.txt / .md)',
|
|
1355
|
+
help_arg_name: ' --name, -n <name> Project name (optional, auto-extracted from content)',
|
|
1356
|
+
help_arg_max_tokens: ' --max-tokens <count> Max AI output tokens (default 8000)',
|
|
1357
|
+
help_examples_title: 'Examples:',
|
|
1358
|
+
help_example1: ' yidaconnector flash-to-prd --file ./meeting-notes.txt --name "Equipment Inspection"',
|
|
1359
|
+
help_example2: ' cat meeting.txt | yidaconnector flash-to-prd --name "Equipment Inspection"',
|
|
1360
|
+
step_read: '[Step 1] Reading flash note content...',
|
|
1361
|
+
file_not_found: 'File not found: {0}',
|
|
1362
|
+
no_input: 'No flash note content provided. Use --file to specify a file, or pipe content via stdin.',
|
|
1363
|
+
stdin_empty: 'Standard input is empty',
|
|
1364
|
+
read_success: '✅ Read successfully, {0} characters',
|
|
1365
|
+
step_load_module: '[Step 2] Loading prompt builder module...',
|
|
1366
|
+
module_loaded_builtin: '✅ Built-in prompt module loaded',
|
|
1367
|
+
module_loaded_local: '✅ Local prompt module loaded: {0}',
|
|
1368
|
+
module_not_found: '❌ build-flash-note-prompt.js module not found',
|
|
1369
|
+
module_path_tried: ' Tried path {0}: {1}',
|
|
1370
|
+
step_preprocess: '[Step 3] Preprocessing + meeting recognition...',
|
|
1371
|
+
preprocess_result: ' Preprocessed: {0} chars -> {1} chars',
|
|
1372
|
+
meeting_meta: ' Meeting metadata: {0} fields{1}',
|
|
1373
|
+
a1_sections: ' A1 summary sections: {0}{1}',
|
|
1374
|
+
speakers: ' Speakers identified: {0}{1}',
|
|
1375
|
+
speakers_with_role: ' (with {0} role annotations)',
|
|
1376
|
+
step_login: '[Step 4] Checking login status...',
|
|
1377
|
+
no_login: ' No login session found, triggering login...',
|
|
1378
|
+
login_ready: '✅ Login ready ({0})',
|
|
1379
|
+
step_ai: '[Step 5] Calling AI to generate PRD...',
|
|
1380
|
+
single_segment: ' Single segment mode, prompt length: {0} chars',
|
|
1381
|
+
multi_segment: ' Multi-segment mode, {0} segments total',
|
|
1382
|
+
extracting_segment: ' Extracting segment {0}/{1} ({2} chars)...',
|
|
1383
|
+
merging_segments: ' Merging segment results...',
|
|
1384
|
+
ai_success: '✅ PRD generated successfully',
|
|
1385
|
+
ai_error: 'AI API call failed: {0}',
|
|
1386
|
+
done: '✅ Flash note to PRD complete',
|
|
1387
|
+
done_project: ' Project name: {0}',
|
|
1388
|
+
done_file: ' Output file: {0}',
|
|
1389
|
+
done_size: ' File size: {0} characters',
|
|
1390
|
+
done_meeting: ' Meeting recognition: {0} metadata fields, {1} A1 sections, {2} speakers',
|
|
1391
|
+
},
|
|
1392
|
+
},
|
|
1393
|
+
|
|
1394
|
+
// ── lib/process/preview-process.js ─────────────────
|
|
1395
|
+
preview_process: {
|
|
1396
|
+
usage: 'Usage: yidaconnector process preview <appType> <processInstanceId> [--output <path>]',
|
|
1397
|
+
example: 'Example: yidaconnector process preview APP_XXX proc-inst-id-xxx',
|
|
1398
|
+
no_login: '❌ Unable to obtain valid login credentials. Please run yidaconnector login first',
|
|
1399
|
+
fetch_instance_failed: 'Failed to fetch process instance details',
|
|
1400
|
+
fetch_records_warning: 'Failed to fetch operation records, will show basic flowchart only',
|
|
1401
|
+
fetching: 'Fetching process instance {0} ...',
|
|
1402
|
+
data_fetched: 'Process data fetched successfully',
|
|
1403
|
+
nodes_count: 'Parsed {0} flow nodes',
|
|
1404
|
+
output_success: 'Process preview generated: {0}',
|
|
1405
|
+
browser_opened: 'Opened in browser',
|
|
1406
|
+
browser_hint: 'Please open in browser: {0}',
|
|
1407
|
+
node_submit: 'Submit',
|
|
1408
|
+
node_end: 'End',
|
|
1409
|
+
node_approval: 'Approval Node',
|
|
1410
|
+
},
|
|
1411
|
+
|
|
1412
|
+
// ── db-index ────────────────────────────────────────────
|
|
1413
|
+
db_index: {
|
|
1414
|
+
usage: 'Usage: yidaconnector db-index [options]',
|
|
1415
|
+
commands: 'Commands:',
|
|
1416
|
+
cmd_form: 'Check index status for a specific form',
|
|
1417
|
+
cmd_form_suggest: 'Get index suggestions',
|
|
1418
|
+
cmd_app_list: 'View index overview for all forms',
|
|
1419
|
+
examples: 'Examples:',
|
|
1420
|
+
checking_login: 'Checking login status... ({0})',
|
|
1421
|
+
querying_corp_config: 'Querying enterprise exclusive configuration...',
|
|
1422
|
+
querying_db_config: 'Querying exclusive database configuration...',
|
|
1423
|
+
triggering_check: 'Triggering database configuration check...',
|
|
1424
|
+
no_exclusive_config: 'No exclusive database configuration found',
|
|
1425
|
+
corp_config_title: 'Enterprise Exclusive Configuration',
|
|
1426
|
+
force_exclusive_db: 'Force Exclusive Database',
|
|
1427
|
+
force_physical_column: 'Force Physical Column',
|
|
1428
|
+
analyzing_form: 'Analyzing indexes for form {0}...',
|
|
1429
|
+
listing_forms: 'Listing all form indexes for app {0}...',
|
|
1430
|
+
missing_args: 'Missing required arguments',
|
|
1431
|
+
error: 'Execution failed: {0}',
|
|
1432
|
+
report_title: 'Index Analysis Report for Form "{0}"',
|
|
1433
|
+
existing_indexes: 'Existing Indexes',
|
|
1434
|
+
no_existing_indexes: 'No existing indexes',
|
|
1435
|
+
suggested_indexes: 'Suggested Indexes',
|
|
1436
|
+
no_suggestions: 'No index suggestions',
|
|
1437
|
+
reason: 'Reason',
|
|
1438
|
+
field_used_in_filter: 'This field is commonly used in filter queries',
|
|
1439
|
+
forms_overview: 'Form Index Overview',
|
|
1440
|
+
feature_coming_soon: 'This feature is coming soon',
|
|
1441
|
+
},
|
|
1442
|
+
|
|
1443
|
+
// ── db-seq-fix ────────────────────────────────────────────
|
|
1444
|
+
db_seq_fix: {
|
|
1445
|
+
usage: 'Usage: yidaconnector db-seq-fix [options]',
|
|
1446
|
+
commands: 'Commands:',
|
|
1447
|
+
cmd_check: 'Check all Sequence status (default)',
|
|
1448
|
+
cmd_fix: 'Automatically fix problematic Sequences',
|
|
1449
|
+
cmd_dry_run: 'Preview fix SQL without executing',
|
|
1450
|
+
examples: 'Examples:',
|
|
1451
|
+
example_check: 'Check all Sequence status',
|
|
1452
|
+
example_fix: 'Automatically fix problematic Sequences',
|
|
1453
|
+
example_dry_run: 'Preview fix SQL',
|
|
1454
|
+
checking_login: 'Checking login status... ({0})',
|
|
1455
|
+
querying_db_config: 'Querying exclusive database configuration...',
|
|
1456
|
+
no_db_config: 'No exclusive database configuration found',
|
|
1457
|
+
checking_sequences: 'Checking all Sequence status...',
|
|
1458
|
+
fixing_sequences: 'Fixing {0} Sequences...',
|
|
1459
|
+
fixing: 'Fixing',
|
|
1460
|
+
fix_done: 'Fix completed',
|
|
1461
|
+
error: 'Execution failed: {0}',
|
|
1462
|
+
report_title: 'Sequence Status Report',
|
|
1463
|
+
need_fix: 'Need Fix ({0})',
|
|
1464
|
+
ok: 'OK ({0})',
|
|
1465
|
+
errors: 'Errors ({0})',
|
|
1466
|
+
sequence: 'Sequence',
|
|
1467
|
+
max_id: 'Max ID',
|
|
1468
|
+
current_seq: 'Current Sequence Value',
|
|
1469
|
+
suggested: 'Suggested Start Value',
|
|
1470
|
+
fix_sql: 'Fix SQL',
|
|
1471
|
+
summary_need_fix: 'Found {0} Sequences that need fixing',
|
|
1472
|
+
run_fix_hint: 'Run yidaconnector db-seq-fix --fix to fix them',
|
|
1473
|
+
summary_ok: 'All Sequences are OK',
|
|
1474
|
+
},
|
|
1475
|
+
|
|
1476
|
+
// ── lib/process/create-process.js ─────────────────
|
|
1477
|
+
create_process: {
|
|
1478
|
+
title: 'Yida Process Form Creation',
|
|
1479
|
+
app_id: 'App ID',
|
|
1480
|
+
mode: 'Mode',
|
|
1481
|
+
reuse_form: 'Reuse existing form',
|
|
1482
|
+
new_form: 'Create new form',
|
|
1483
|
+
form_title: 'Form title',
|
|
1484
|
+
fields_file: 'Fields definition file',
|
|
1485
|
+
process_def: 'Process definition file',
|
|
1486
|
+
loading_auth: 'Loading auth session',
|
|
1487
|
+
auth_loaded: 'Auth session loaded',
|
|
1488
|
+
reusing_form: 'Reusing existing form',
|
|
1489
|
+
using_form: 'Using form',
|
|
1490
|
+
creating_form: 'Creating form',
|
|
1491
|
+
form_created: 'Form created successfully',
|
|
1492
|
+
create_form_failed: 'Failed to create form',
|
|
1493
|
+
switching_form_type: 'Switching form type',
|
|
1494
|
+
switch_success: 'Form type switched successfully',
|
|
1495
|
+
already_process: 'Already a process form',
|
|
1496
|
+
switch_failed: 'Failed to switch form type',
|
|
1497
|
+
getting_process_code: 'Getting process code',
|
|
1498
|
+
method1: 'Method 1: Get from app params',
|
|
1499
|
+
method2: 'Method 2: Get from schema',
|
|
1500
|
+
got_process_code: 'Got process code successfully',
|
|
1501
|
+
got_from_schema: 'Got process code from schema',
|
|
1502
|
+
no_process_code: 'Unable to get process code',
|
|
1503
|
+
manual_hint: 'Please configure the process manually in Yida admin. Form UUID: {0}',
|
|
1504
|
+
configuring_process: 'Configuring and publishing process',
|
|
1505
|
+
configure_failed: 'Failed to configure process',
|
|
1506
|
+
retry_hint: 'Process configuration failed, but the form was created. Fix the process definition and retry with this command:',
|
|
1507
|
+
fields_not_found: 'Fields definition file not found',
|
|
1508
|
+
process_def_not_found: 'Process definition file not found',
|
|
1509
|
+
done: 'Process form creation completed',
|
|
1510
|
+
url: 'URL',
|
|
1511
|
+
usage: 'Usage: yidaconnector create-process <appType> <formTitle> <fieldsJsonFile> <processDefinitionFile>',
|
|
1512
|
+
usage2: ' yidaconnector create-process <appType> --formUuid <formUuid> <processDefinitionFile>',
|
|
1513
|
+
example: 'Example: yidaconnector create-process "APP_XXX" "Order Form" .cache/yidaconnector/process/fields.json .cache/yidaconnector/process/process-definition.json',
|
|
1514
|
+
example2: ' yidaconnector create-process "APP_XXX" --formUuid FORM-YYY .cache/yidaconnector/process/process-definition.json',
|
|
1515
|
+
},
|
|
1516
|
+
aggregate_table: {
|
|
1517
|
+
usage: 'Usage: yidaconnector aggregate-table <list|create-empty|inspect|preview|save|publish|status> <appType> ...',
|
|
1518
|
+
commands_title: 'Subcommands:',
|
|
1519
|
+
cmd_list: 'list <appType> [--keyword <text>] [--json] List aggregate tables in an app',
|
|
1520
|
+
cmd_create_empty: 'create-empty <appType> "<name>" [--open|--no-open] Create a blank aggregate table and return the designer URL',
|
|
1521
|
+
cmd_inspect: 'inspect <appType> <formUuid> [--json] Read aggregate table design config',
|
|
1522
|
+
cmd_preview: 'preview <appType> <formUuid> <design.json> [--json] Preview config without saving',
|
|
1523
|
+
cmd_save: 'save <appType> <formUuid> <design.json> [--json] Save an aggregate table draft',
|
|
1524
|
+
cmd_publish: 'publish <appType> <formUuid> <design.json> [--json] Publish aggregate table config',
|
|
1525
|
+
cmd_status: 'status <appType> <formUuid> [--json] Query aggregate table build status',
|
|
1526
|
+
examples_title: 'Examples:',
|
|
1527
|
+
example_list: 'yidaconnector aggregate-table list APP_XXX',
|
|
1528
|
+
example_create_empty: 'yidaconnector aggregate-table create-empty APP_XXX "Customer Contract Aggregate" --open',
|
|
1529
|
+
example_inspect: 'yidaconnector aggregate-table inspect APP_XXX FORM_XXX --json',
|
|
1530
|
+
example_preview: 'yidaconnector aggregate-table preview APP_XXX FORM_XXX .cache/yidaconnector/aggregate/design.json',
|
|
1531
|
+
example_save: 'yidaconnector aggregate-table save APP_XXX FORM_XXX .cache/yidaconnector/aggregate/design.json',
|
|
1532
|
+
example_publish: 'yidaconnector aggregate-table publish APP_XXX FORM_XXX .cache/yidaconnector/aggregate/design.json',
|
|
1533
|
+
example_status: 'yidaconnector aggregate-table status APP_XXX FORM_XXX',
|
|
1534
|
+
list_usage: 'Usage: yidaconnector aggregate-table list <appType> [--keyword <text>] [--json]',
|
|
1535
|
+
create_empty_usage: 'Usage: yidaconnector aggregate-table create-empty <appType> "<name>" [--locale zh_CN|en_US|ja_JP] [--open|--no-open]',
|
|
1536
|
+
inspect_usage: 'Usage: yidaconnector aggregate-table inspect <appType> <formUuid> [--json]',
|
|
1537
|
+
preview_usage: 'Usage: yidaconnector aggregate-table preview <appType> <formUuid> <design.json> [--json]',
|
|
1538
|
+
save_usage: 'Usage: yidaconnector aggregate-table save <appType> <formUuid> <design.json> [--json]',
|
|
1539
|
+
publish_usage: 'Usage: yidaconnector aggregate-table publish <appType> <formUuid> <design.json> [--json]',
|
|
1540
|
+
status_usage: 'Usage: yidaconnector aggregate-table status <appType> <formUuid> [--json]',
|
|
1541
|
+
no_login: 'No login state found. Run yidaconnector login first.',
|
|
1542
|
+
unsupported_locale: 'Unsupported locale: {0}',
|
|
1543
|
+
unknown_subcommand: 'Unknown aggregate-table subcommand: {0}',
|
|
1544
|
+
design_required: 'Missing aggregate table design JSON or file path',
|
|
1545
|
+
invalid_json: 'Aggregate table design config is not valid JSON: {0}',
|
|
1546
|
+
design_object_required: 'Aggregate table design config must be a JSON object',
|
|
1547
|
+
check_feature: 'Check aggregate table capability',
|
|
1548
|
+
feature_disabled: 'Aggregate table is not enabled for this app/org, or the edition quota has been reached',
|
|
1549
|
+
create_empty: 'Create blank aggregate table',
|
|
1550
|
+
inspect: 'Read aggregate table config',
|
|
1551
|
+
preview: 'Preview aggregate table config',
|
|
1552
|
+
save: 'Save aggregate table draft',
|
|
1553
|
+
publish: 'Publish aggregate table config',
|
|
1554
|
+
status: 'Query aggregate table build status',
|
|
1555
|
+
publish_requires_source: 'Publishing requires at least one data source. Configure relationForms first.',
|
|
1556
|
+
list_success: 'Aggregate table list',
|
|
1557
|
+
create_empty_success: 'Aggregate table created',
|
|
1558
|
+
inspect_success: 'Aggregate table config loaded',
|
|
1559
|
+
preview_success: 'Aggregate table preview succeeded',
|
|
1560
|
+
save_success: 'Aggregate table draft saved',
|
|
1561
|
+
publish_success: 'Aggregate table published',
|
|
1562
|
+
status_success: 'Aggregate table status loaded',
|
|
1563
|
+
},
|
|
1564
|
+
ai_form_setting: {
|
|
1565
|
+
usage: 'Usage: yidaconnector ai-form-setting <get|fields|models|enable|disable|save> <appType> ...',
|
|
1566
|
+
commands_title: 'Subcommands:',
|
|
1567
|
+
cmd_get: 'get <appType> <formUuid> [--raw] [--json] Query AI approval prompt config',
|
|
1568
|
+
cmd_fields: 'fields <appType> <formUuid> [--type TEXT|IMAGE|ATTACHMENT] List insertable fields',
|
|
1569
|
+
cmd_models: 'models <appType> [--type TEXT|IMAGE|ATTACHMENT] List available models',
|
|
1570
|
+
cmd_enable: 'enable <appType> <formUuid> [--json] Enable AI approval prompts',
|
|
1571
|
+
cmd_disable: 'disable <appType> <formUuid> [--json] Disable AI approval prompts',
|
|
1572
|
+
cmd_save: 'save <appType> <formUuid> <config.json> [--enable] Save prompts and model config',
|
|
1573
|
+
examples_title: 'Examples:',
|
|
1574
|
+
example_get: 'yidaconnector ai-form-setting get APP_XXX FORM_XXX --json',
|
|
1575
|
+
example_fields: 'yidaconnector ai-form-setting fields APP_XXX FORM_XXX --type ATTACHMENT',
|
|
1576
|
+
example_models: 'yidaconnector ai-form-setting models APP_XXX --type IMAGE',
|
|
1577
|
+
example_enable: 'yidaconnector ai-form-setting enable APP_XXX FORM_XXX',
|
|
1578
|
+
example_save: 'yidaconnector ai-form-setting save APP_XXX FORM_XXX .cache/yidaconnector/ai-form-setting/config.json --enable',
|
|
1579
|
+
enable_disable_conflict: '--enable and --disable cannot be used together',
|
|
1580
|
+
invalid_type: 'Invalid prompt type: {0}. Valid values: {1}',
|
|
1581
|
+
invalid_status: 'Invalid AI approval prompt status: {0}',
|
|
1582
|
+
config_required: 'Missing AI approval prompt JSON config or file path',
|
|
1583
|
+
invalid_json: 'AI approval prompt config is not valid JSON: {0}',
|
|
1584
|
+
invalid_variable: 'Variable #{0} must be an object',
|
|
1585
|
+
variable_required: 'Variable #{0} must contain varName and fieldId',
|
|
1586
|
+
prompt_required: 'Prompt {0} is missing prompt/content',
|
|
1587
|
+
variables_array_required: 'variables must be an array',
|
|
1588
|
+
invalid_item: 'Prompt config #{0} must be an object',
|
|
1589
|
+
model_required: 'Prompt {0} is missing modelId',
|
|
1590
|
+
invalid_config_part: '{0} must be a JSON object or a valid JSON string',
|
|
1591
|
+
config_object_required: 'AI approval prompt config must be a JSON object or array',
|
|
1592
|
+
items_array_required: 'AI approval prompt config must contain an items array',
|
|
1593
|
+
too_many_items: 'AI approval prompts support up to {0} items',
|
|
1594
|
+
duplicate_item_id: 'Duplicate itemId: {0}',
|
|
1595
|
+
no_login: 'No login state found. Run yidaconnector login first.',
|
|
1596
|
+
get_usage: 'Usage: yidaconnector ai-form-setting get <appType> <formUuid> [--raw] [--json]',
|
|
1597
|
+
fields_usage: 'Usage: yidaconnector ai-form-setting fields <appType> <formUuid> [--type TEXT|IMAGE|ATTACHMENT] [--json]',
|
|
1598
|
+
models_usage: 'Usage: yidaconnector ai-form-setting models <appType> [--type TEXT|IMAGE|ATTACHMENT] [--json]',
|
|
1599
|
+
status_usage: 'Usage: yidaconnector ai-form-setting <enable|disable> <appType> <formUuid> [--json]',
|
|
1600
|
+
save_usage: 'Usage: yidaconnector ai-form-setting save <appType> <formUuid> <config.json> [--enable|--disable] [--json]',
|
|
1601
|
+
get_action: 'Query AI approval prompt config',
|
|
1602
|
+
fields_action: 'Query AI approval prompt fields',
|
|
1603
|
+
models_action: 'Query AI approval prompt models',
|
|
1604
|
+
status_action: 'Update AI approval prompt status',
|
|
1605
|
+
save_action: 'Save AI approval prompt config',
|
|
1606
|
+
get_success: 'AI approval prompt config',
|
|
1607
|
+
fields_success: 'AI approval prompt fields',
|
|
1608
|
+
models_success: 'AI approval prompt models',
|
|
1609
|
+
save_success: 'AI approval prompt config saved',
|
|
1610
|
+
enabled: 'AI approval prompts enabled',
|
|
1611
|
+
disabled: 'AI approval prompts disabled',
|
|
1612
|
+
unknown_subcommand: 'Unknown ai-form-setting subcommand: {0}',
|
|
1613
|
+
},
|
|
1614
|
+
codex_login: {
|
|
1615
|
+
title: ' yidaconnector login {0} - {1} Login Mode',
|
|
1616
|
+
not_codex: 'Current environment is not detected as Codex / Qoder / Wukong; returning an in-app browser login handoff only.',
|
|
1617
|
+
no_playwright: '{0} mode does not require Playwright or a separate Chromium install.',
|
|
1618
|
+
using_browser: '{0} in-app Browser is only suitable for unauthenticated page previews; use yidaconnector login --browser for Yida login cookies.',
|
|
1619
|
+
browser_handoff_hint: '{0} in-app Browser does not support authentication Cookie export. Use yidaconnector login --browser when CLI cookies are required.',
|
|
1620
|
+
handoff_message: '{0} in-app Browser cannot export Yida login cookies. Run fallback_command when CLI cookies are required.',
|
|
1621
|
+
cache_available: 'Existing CLI Cookie cache is available; no browser login needed.',
|
|
1622
|
+
},
|
|
1623
|
+
};
|