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.
Files changed (79) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +383 -0
  3. package/bin/yida.js +670 -0
  4. package/lib/app/form-navigation.js +58 -0
  5. package/lib/app/get-schema.js +538 -0
  6. package/lib/auth/auth.js +294 -0
  7. package/lib/auth/cdp-browser-login.js +390 -0
  8. package/lib/auth/codex-login.js +71 -0
  9. package/lib/auth/login.js +475 -0
  10. package/lib/auth/org.js +363 -0
  11. package/lib/auth/qr-login.js +1563 -0
  12. package/lib/core/chalk.js +384 -0
  13. package/lib/core/check-update.js +82 -0
  14. package/lib/core/cli-error.js +39 -0
  15. package/lib/core/command-manifest.js +106 -0
  16. package/lib/core/env-cmd.js +545 -0
  17. package/lib/core/env-manager.js +601 -0
  18. package/lib/core/env.js +287 -0
  19. package/lib/core/i18n.js +177 -0
  20. package/lib/core/locales/ar.js +805 -0
  21. package/lib/core/locales/de.js +805 -0
  22. package/lib/core/locales/en.js +1623 -0
  23. package/lib/core/locales/es.js +805 -0
  24. package/lib/core/locales/fr.js +805 -0
  25. package/lib/core/locales/hi.js +805 -0
  26. package/lib/core/locales/ja.js +1197 -0
  27. package/lib/core/locales/ko.js +807 -0
  28. package/lib/core/locales/pt.js +805 -0
  29. package/lib/core/locales/vi.js +805 -0
  30. package/lib/core/locales/zh-HK.js +1233 -0
  31. package/lib/core/locales/zh.js +1584 -0
  32. package/lib/core/query-data.js +781 -0
  33. package/lib/core/redact.js +100 -0
  34. package/lib/core/utils.js +799 -0
  35. package/lib/core/yida-client.js +117 -0
  36. package/package.json +94 -0
  37. package/project/config.json +4 -0
  38. package/project/pages/src/demo-birthday-game.oyd.jsx +832 -0
  39. package/project/pages/src/demo-chip-insight.oyd.jsx +983 -0
  40. package/project/pages/src/demo-compat-smoke.oyd.jsx +58 -0
  41. package/project/pages/src/demo-crm-batch-entry.oyd.jsx +805 -0
  42. package/project/pages/src/demo-crm-dashboard.oyd.jsx +677 -0
  43. package/project/pages/src/demo-future-vision-2026.oyd.jsx +1102 -0
  44. package/project/pages/src/demo-ppt.oyd.jsx +1192 -0
  45. package/project/pages/src/demo-salary-calculator.oyd.jsx +904 -0
  46. package/project/pages/src/yidaconnector-knowledge-doc.oyd.jsx +1714 -0
  47. package/project/prd/demo-birthday-game.md +39 -0
  48. package/project/prd/demo-crm.md +463 -0
  49. package/project/prd/demo-dingtalk-ai-solution-center.md +425 -0
  50. package/project/prd/demo-future-vision-2026.md +78 -0
  51. package/project/prd/demo-salary-calculator.md +101 -0
  52. package/scripts/build-skills-package.js +406 -0
  53. package/scripts/check-syntax.js +59 -0
  54. package/scripts/demo-dws.sh +106 -0
  55. package/scripts/e2e-real/cleanup.js +67 -0
  56. package/scripts/e2e-real/fixtures/form-fields.json +18 -0
  57. package/scripts/e2e-real/full-runner.js +1566 -0
  58. package/scripts/e2e-real/runner.js +293 -0
  59. package/scripts/e2e-real/skill-coverage.js +115 -0
  60. package/scripts/generate-command-docs.js +109 -0
  61. package/scripts/nightly-smoke.js +134 -0
  62. package/scripts/postinstall.js +545 -0
  63. package/scripts/solution-center-runner.js +368 -0
  64. package/scripts/validate-ci.sh +50 -0
  65. package/scripts/validate-command-manifest.js +119 -0
  66. package/scripts/validate-package-size.js +78 -0
  67. package/scripts/validate-skills.js +247 -0
  68. package/scripts/validate-structure.js +66 -0
  69. package/yida-skills/SKILL.md +163 -0
  70. package/yida-skills/references/yida-api.md +1309 -0
  71. package/yida-skills/skills/large-file-write/SKILL.md +91 -0
  72. package/yida-skills/skills/large-file-write/references/write-patterns.md +149 -0
  73. package/yida-skills/skills/large-file-write/scripts/write.js +157 -0
  74. package/yida-skills/skills/yida-data-management/SKILL.md +252 -0
  75. package/yida-skills/skills/yida-data-management/references/api-matrix.md +49 -0
  76. package/yida-skills/skills/yida-data-management/references/data-format-guide.md +159 -0
  77. package/yida-skills/skills/yida-data-management/references/verified-endpoints.md +62 -0
  78. package/yida-skills/skills/yida-login/SKILL.md +159 -0
  79. package/yida-skills/skills/yida-logout/SKILL.md +67 -0
@@ -0,0 +1,805 @@
1
+ 'use strict';
2
+
3
+ /**
4
+ * Deutsches Sprachpaket (German)
5
+ */
6
+ module.exports = {
7
+ // ── bin/yida.js printHelp() ────────────────────────
8
+ help: {
9
+ subtitle: 'KI-gestütztes Low-Code-Entwicklungstool für Yida',
10
+ usage: 'Verwendung:',
11
+ alias: 'Alias:',
12
+ group_auth: 'Umgebung & Authentifizierung',
13
+ cmd_login: 'Anmelden (Cache zuerst, bei Bedarf --browser oder --agent-qr)',
14
+ cmd_logout: 'Abmelden / Konto wechseln',
15
+ cmd_auth: 'Anmeldestatus-Verwaltung',
16
+ cmd_org: 'Organisationsverwaltung (auflisten / wechseln)',
17
+ cmd_env: 'KI-Tool-Umgebung und Anmeldestatus erkennen',
18
+ cmd_env_management: 'Public/private environment profiles verwalten',
19
+ group_app: 'App-Verwaltung',
20
+ cmd_app_list: 'Meine Yida-Apps auflisten',
21
+ cmd_corp_efficiency: 'Unternehmenseffizienz-Übersicht und Detailberichte abrufen',
22
+ cmd_create_app: 'Yida-App erstellen',
23
+ cmd_update_app: 'App-Informationen aktualisieren',
24
+ cmd_nav_group: 'Navigationsgruppen der App-Seitenleiste verwalten',
25
+ cmd_app_permission: 'App-Haupt-, Daten- und Entwicklungsadmins verwalten',
26
+ cmd_i18n: 'Mehrsprachige App-Texte und Sprachen verwalten',
27
+ cmd_export: 'App exportieren (Migrationspaket erstellen)',
28
+ cmd_import: 'Migrationspaket importieren, App neu aufbauen',
29
+ group_form: 'Formulare & Seiten',
30
+ cmd_create_form: 'Formularseite erstellen',
31
+ cmd_update_form: 'Formularseite aktualisieren',
32
+ cmd_list_forms: 'Formulare/Seiten einer App auflisten',
33
+ cmd_aggregate_table: 'Manage aggregate tables (virtualView)',
34
+ cmd_get_schema: 'Formular-Schema abrufen',
35
+ cmd_create_page: 'Benutzerdefinierte Anzeigeseite erstellen',
36
+ cmd_generate_page: 'Generate page from curated template',
37
+ cmd_check_page: 'Check custom page standards',
38
+ cmd_compile: 'Benutzerdefinierte Seite lokal kompilieren',
39
+ cmd_publish: 'Benutzerdefinierte Seite kompilieren & veröffentlichen',
40
+ cmd_update_form_config: 'Formularkonfiguration aktualisieren',
41
+ group_data: 'Daten & Berechtigungen',
42
+ cmd_data: 'Einheitliche Datenverwaltung (Formular/Prozess/Aufgabe/Unterformular)',
43
+ cmd_task_center: 'Globales Aufgabenzentrum (Aufgaben/Bearbeitet/CC etc.)',
44
+ cmd_basic_info: 'Organisationsinfos, Kapazitaeten, Quoten und Domain-Einstellungen abfragen',
45
+ cmd_get_permission: 'Formularberechtigungen abfragen',
46
+ cmd_save_permission: 'Formularberechtigungen speichern',
47
+ cmd_corp_manager: 'Plattformberechtigungen verwalten',
48
+ cmd_agent_center: 'Prozess- und Austrittsvertretungen verwalten',
49
+ group_process: 'Prozesse',
50
+ cmd_configure_process: 'Prozessregeln konfigurieren & veröffentlichen',
51
+ cmd_create_process: 'Prozessformular erstellen (All-in-One)',
52
+ cmd_ai_form_setting: 'Manage process form AI approval prompts',
53
+ cmd_process_preview: 'Prozessinstanz-Vorschau (Flussdiagramm)',
54
+ group_share: 'Seitenkonfiguration & Freigabe',
55
+ cmd_verify_url: 'Kurz-URL überprüfen',
56
+ cmd_save_share: 'Öffentlichen Zugang / Freigabe speichern',
57
+ cmd_get_page_config: 'Öffentliche Zugangskonfiguration abfragen',
58
+ cmd_externalize_form: 'Plan external access-safe mirror fields',
59
+ group_report: 'Berichte',
60
+ cmd_create_report: 'Yida-Bericht erstellen',
61
+ cmd_append_chart: 'Diagramm zu bestehendem Bericht hinzufügen',
62
+ group_connector: 'Konnektoren',
63
+ cmd_connector_list: 'HTTP-Konnektoren auflisten',
64
+ cmd_connector_create: 'Konnektor erstellen',
65
+ cmd_connector_detail: 'Konnektor-Details anzeigen',
66
+ cmd_connector_delete: 'Konnektor löschen',
67
+ cmd_connector_add_action: 'Aktion hinzufügen',
68
+ cmd_connector_list_actions: 'Aktionen auflisten',
69
+ cmd_connector_delete_action: 'Aktion löschen',
70
+ cmd_connector_test: 'Aktion testen',
71
+ cmd_connector_list_connections: 'Auth-Verbindungen auflisten',
72
+ cmd_connector_create_connection: 'Auth-Verbindung erstellen',
73
+ cmd_connector_smart: 'Smart-Erstellung (aus cURL)',
74
+ cmd_connector_parse_api: 'API-Informationen parsen',
75
+ cmd_connector_gen_template: 'API-Dokumentvorlage generieren',
76
+ cmd_connector_more: 'Weitere Unterbefehle anzeigen',
77
+ group_integration: 'Integration & DingTalk',
78
+ cmd_integration: 'Integrations-Automatisierungsflow erstellen',
79
+ cmd_integration_list: 'Integrations-Automatisierungsflows auflisten',
80
+ cmd_integration_enable: 'Integrations-Automatisierungsflow aktivieren',
81
+ cmd_integration_disable: 'Integrations-Automatisierungsflow deaktivieren',
82
+ cmd_integration_check: 'Check abnormal integration automation run logs',
83
+ cmd_dws: 'DingTalk CLI (Kontakte/Kalender/Aufgaben/Genehmigung etc.)',
84
+ cmd_dingtalk_link: 'DingTalk AppLink / alte dingtalk:// Seitenlinks erzeugen',
85
+ group_utility: 'Werkzeuge',
86
+ cmd_commands: 'Maschinenlesbares Command Manifest ausgeben',
87
+ cmd_a2a: 'Lokalen schreibgeschützten A2A-Adapter starten oder Agent Card ausgeben',
88
+ cmd_bridge: 'Lokalen YidaConnector Web-Bridge-Dienst starten',
89
+ cmd_db_seq_fix: 'Detect and repair PostgreSQL sequence drift',
90
+ cmd_copy: 'project-Arbeitsverzeichnis kopieren',
91
+ cmd_sample: 'Codebeispiele/Vorlagen ausgeben',
92
+ cmd_doctor: 'Umgebungsdiagnose & automatische Reparatur',
93
+ cmd_update: 'Auf neueste Version aktualisieren',
94
+ cmd_export_conversation: 'KI-Gesprächsaufzeichnungen exportieren',
95
+ cmd_feedback: 'Feedback-Formular und lokalen Erinnerungsstatus konfigurieren',
96
+ cmd_batch: 'YidaConnector-Befehle im Batch ausführen',
97
+ cmd_flash_to_prd: 'Flash Notes oder Meeting Notes in PRD-Prompt umwandeln',
98
+ cmd_ai: 'Call Yida AI text and image recognition APIs',
99
+ cmd_cdn: 'CDN-Bildverwaltung (Konfiguration/Upload/Aktualisierung)',
100
+ cmd_cdn_config: 'CDN / OSS Upload konfigurieren',
101
+ cmd_cdn_upload: 'Bild zu CDN hochladen',
102
+ cmd_cdn_refresh: 'CDN-Cache aktualisieren',
103
+ quickstart_title: 'Schnellstart',
104
+ quickstart_app_name: 'Anwesenheitsverwaltung',
105
+ quickstart_form_name: 'Mitarbeiterinfo',
106
+ docs: '📚 Dokumentation:',
107
+ },
108
+
109
+ // ── bin/yida.js ────────────────────────────────────
110
+ cli: {
111
+ integration_help: 'Verwendung: yidaconnector integration <create|list|enable|disable> ...',
112
+ integration_unknown: 'Unbekannter integration-Unterbefehl: {0}',
113
+ integration_help_hint: 'Führen Sie yidaconnector integration --help aus, um verfügbare Unterbefehle anzuzeigen',
114
+ integration_list_usage: 'Verwendung: yidaconnector integration list <appType> [--form-uuid <uuid>] [--status y|n] [--key <kw>] [--page <n>] [--size <n>] [--json]',
115
+ integration_list_example: 'Beispiel: yidaconnector integration list APP_XXX --form-uuid FORM-XXX --json',
116
+ integration_enable_usage: 'Verwendung: yidaconnector integration enable <appType> <formUuid> <processCode>',
117
+ integration_enable_example: 'Beispiel: yidaconnector integration enable APP_XXX FORM-XXX LPROC-XXX',
118
+ integration_disable_usage: 'Verwendung: yidaconnector integration disable <appType> <formUuid> <processCode>',
119
+ integration_disable_example: 'Beispiel: yidaconnector integration disable APP_XXX FORM-XXX LPROC-XXX',
120
+ compile_usage: 'Verwendung: yidaconnector compile <sourceFile>',
121
+ compile_example: 'Beispiel: yidaconnector compile pages/src/home.oyd.jsx',
122
+ check_page_usage: 'Usage: yidaconnector check-page <sourceFile> [--compat] [--json]',
123
+ check_page_example: 'Example: yidaconnector check-page pages/src/home.oyd.jsx --json',
124
+ generate_page_usage: 'Usage: yidaconnector generate-page <template> --output pages/src/home.oyd.jsx [--spec .cache/yidaconnector/page-specs/home.json] [--compile]',
125
+ generate_page_example: 'Example: yidaconnector generate-page product-homepage --brand-name OpenKuma --brand-initials OK --output pages/src/home.oyd.jsx --compile',
126
+ },
127
+
128
+ // ── lib/integration/integration-check.js ─────────
129
+ integration_check: {
130
+ result_sheet: 'Result',
131
+ header_app: 'App',
132
+ header_form_title: 'Form name',
133
+ header_form_uuid: 'Form ID',
134
+ header_flow_name: 'Automation name',
135
+ header_process_code: 'Automation ID',
136
+ header_flow_status: 'Automation status',
137
+ header_event_name: 'Trigger event',
138
+ header_last_action: 'Last action',
139
+ header_modifier: 'Modifier',
140
+ header_modified_time: 'Modified time',
141
+ header_abnormal_log_count: 'Abnormal log count',
142
+ header_proc_inst_id: 'Run instance ID',
143
+ header_form_inst_id: 'Form instance ID',
144
+ header_execution_status: 'Execution status',
145
+ header_exception: 'Exception',
146
+ header_diagnosis: 'Diagnosis',
147
+ header_recommendation: 'Recommendation',
148
+ header_start_time: 'Start time',
149
+ header_finish_time: 'Finish time',
150
+ header_elapsed_ms: 'Elapsed (ms)',
151
+ no_abnormal: 'No abnormal execution logs found',
152
+ app_failed: 'App check failed: {0}',
153
+ summary: 'Check complete: {0} apps, {1} automations, {2} with abnormal logs',
154
+ apps_failed: '{0} app(s) failed to check. See JSON output or error summary for details.',
155
+ no_logs: 'No abnormal execution logs found.',
156
+ 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]',
157
+ example: 'yidaconnector integration check APP_XXX --output project/output/automation-errors.xlsx',
158
+ missing_app: 'Missing appType. Usage: yidaconnector integration check <appType...>',
159
+ banner_title: 'Check integration automation abnormal logs',
160
+ status_filter: 'Execution status filter: {0}',
161
+ checking_app: 'Checking app: {0}',
162
+ progress: 'Progress {0}{1}',
163
+ current: ', current: {0}',
164
+ excel_exported: 'Excel exported: {0}',
165
+ },
166
+
167
+ // ── lib/env.js ─────────────────────────────────────
168
+ env: {
169
+ title: ' yidaconnector env - KI-Tool-Umgebungserkennung',
170
+ detecting: ' KI-Tool-Umgebung wird erkannt...',
171
+ tool_label: ' KI-Tool: {0}',
172
+ login_label: ' Anmeldestatus: {0}',
173
+ logged_in: 'Angemeldet',
174
+ not_logged_in: 'Nicht angemeldet',
175
+ corp_label: ' Organisation: {0}',
176
+ version_label: ' Version: {0}',
177
+ },
178
+
179
+ // ── lib/login.js ────────────────────────────────────
180
+ login: {
181
+ title: '🔐 Yida-Anmeldung',
182
+ cache_found: ' Zwischengespeicherte Anmeldedaten gefunden, Validierung läuft...',
183
+ cache_valid: '✅ Zwischengespeicherte Anmeldedaten sind gültig!',
184
+ cache_invalid: ' Zwischengespeicherte Anmeldedaten sind abgelaufen. Erneute Anmeldung erforderlich.',
185
+ starting_qr: ' QR-Code-Anmeldung wird gestartet...',
186
+ success: '✅ Anmeldung erfolgreich!',
187
+ failed: '❌ Anmeldung fehlgeschlagen: {0}',
188
+ usage: 'Verwendung: yidaconnector login',
189
+ },
190
+
191
+ // ── lib/logout.js ───────────────────────────────────
192
+ logout: {
193
+ title: '🚪 Yida-Abmeldung',
194
+ success: '✅ Abmeldung erfolgreich! Anmeldedaten wurden gelöscht.',
195
+ no_cache: ' Keine Anmeldedaten gefunden. Bereits abgemeldet.',
196
+ failed: '❌ Abmeldung fehlgeschlagen: {0}',
197
+ },
198
+
199
+ // ── lib/create-app.js ───────────────────────────────
200
+ create_app: {
201
+ usage: 'Verwendung: yidaconnector create-app "<App-Name>" oder yidaconnector create-app --name "<App-Name>" [--desc "..."] [--theme deepBlue]',
202
+ example: 'Beispiel: yidaconnector create-app --name "Meine App" --desc "App-Beschreibung" --theme deepBlue',
203
+ title: ' create-app - Yida-App-Erstellungstool',
204
+ app_name: '\n App-Name: {0}',
205
+ app_desc: ' Beschreibung: {0}',
206
+ app_icon: ' Symbol: {0} ({1})',
207
+ app_theme: ' Thema: colour={0} navTheme={1} layout={2}',
208
+ step_create: '\n🚀 App wird erstellt...',
209
+ sending_request: ' createApp-Anfrage wird gesendet...',
210
+ success: ' ✅ App erfolgreich erstellt!',
211
+ app_id: ' App-ID: {0}',
212
+ failed: ' ❌ Erstellung fehlgeschlagen: {0}',
213
+ error: '\n❌ Erstellungsfehler: {0}',
214
+ },
215
+
216
+ // ── lib/create-form.js ──────────────────────────────
217
+ create_form: {
218
+ usage: 'Verwendung: yidaconnector create-form <appType> <Seitenname> [Schema-JSON]',
219
+ title: ' create-form - Yida-Formularseiten-Erstellungs-/Aktualisierungstool',
220
+ app_id: '\n App-ID: {0}',
221
+ page_name: ' Seitenname: {0}',
222
+ step_create: '\n📝 Formularseite wird erstellt...',
223
+ sending_request: ' saveFormSchema-Anfrage wird gesendet...',
224
+ success: ' ✅ Formularseite erfolgreich erstellt!',
225
+ form_uuid: ' Formular-UUID: {0}',
226
+ failed: ' ❌ Erstellung fehlgeschlagen: {0}',
227
+ error: '\n❌ Erstellungsfehler: {0}',
228
+ step_check_data: '\n🔍 Schritt {0}: Prüfen, ob das Formular vorhandene Daten hat',
229
+ data_exists_warning: ' ⚠️ Dieses Formular enthält bereits {0} Datensätze! Eine Strukturänderung kann verursachen:',
230
+ data_exists_impact: ' - Verlust oder Beschädigung historischer Daten\n - Anomalien im Prozessstatus\n - Dateninkonsistenz',
231
+ data_exists_abort: ' ❌ Änderung abgebrochen. Fügen Sie --force hinzu, um fortzufahren.',
232
+ data_exists_confirm_message: 'Dieses Formular hat {0} vorhandene Datensätze. Eine Strukturänderung kann bestehende Daten beeinflussen. Fügen Sie --force zur Bestätigung hinzu.',
233
+ data_exists_force_hint: 'Verwendung: yidaconnector create-form update <appType> <formUuid> <changesJson> --force',
234
+ data_exists_force_proceed: ' ⚠️ --force Modus: Bestätigung übersprungen, erzwungene Strukturänderung mit {0} vorhandenen Datensätzen',
235
+ data_check_empty: ' ✅ Formular hat keine Daten, Änderung sicher möglich',
236
+ data_check_failed: ' ⚠️ Datenprüfung fehlgeschlagen, Änderung wird fortgesetzt',
237
+ },
238
+
239
+ // ── lib/create-page.js ──────────────────────────────
240
+ create_page: {
241
+ usage: 'Verwendung: yidaconnector create-page <appType> <Seitenname> [--mode dashboard]',
242
+ example: 'Beispiel: yidaconnector create-page APP_XXX "Dashboard" --mode dashboard',
243
+ title: ' create-page - Yida-Benutzerdefinierte-Seiten-Erstellungstool',
244
+ app_id: '\n App-ID: {0}',
245
+ page_name: ' Seitenname: {0}',
246
+ step_create: '\n📄 Benutzerdefinierte Seite wird erstellt...',
247
+ success: ' ✅ Benutzerdefinierte Seite erfolgreich erstellt!',
248
+ step_dashboard_config: '\n🖥️ Step 3: Configure dashboard fullscreen mode',
249
+ dashboard_config_ok: ' ✅ Dashboard mode configured: top nav hidden, chromeless custom URL enabled',
250
+ dashboard_config_failed: ' ⚠️ Dashboard mode config failed: {0}',
251
+ err_mode_invalid: 'Unsupported page mode: {0}',
252
+ mode_hint: 'Available modes: default, dashboard',
253
+ form_uuid: ' Seiten-UUID: {0}',
254
+ failed: ' ❌ Erstellung fehlgeschlagen: {0}',
255
+ error: '\n❌ Erstellungsfehler: {0}',
256
+ },
257
+
258
+ // ── lib/get-schema.js ───────────────────────────────
259
+ get_schema: {
260
+ usage: 'Verwendung: yidaconnector get-schema <appType> <formUuid>',
261
+ title: ' get-schema - Yida-Formular-Schema-Abruftool',
262
+ app_id: '\n App-ID: {0}',
263
+ form_uuid: ' Formular-UUID: {0}',
264
+ step_get: '\n📋 Formular-Schema wird abgerufen...',
265
+ success: ' ✅ Schema erfolgreich abgerufen!',
266
+ failed: ' ❌ Abruf fehlgeschlagen: {0}',
267
+ error: '\n❌ Abruffehler: {0}',
268
+ },
269
+
270
+ // ── lib/check-update.js ─────────────────────────────
271
+ check_update: {
272
+ new_version: '\n🎉 Neue Version verfügbar: {0} → {1}',
273
+ update_cmd: ' Aktualisierung: npm install -g yidaconnector',
274
+ check_failed: 'Versionsüberprüfung fehlgeschlagen: {0}',
275
+ },
276
+
277
+ // ── lib/update.js ──────────────────────────────────
278
+ update: {
279
+ checking: 'Neueste Version wird überprüft...',
280
+ fetch_failed: 'Neueste Version konnte nicht abgerufen werden. Bitte Netzwerkverbindung prüfen',
281
+ already_latest: 'Bereits auf dem neuesten Stand ({0}), kein Update erforderlich',
282
+ found_new_version: 'Neue Version gefunden: {0} (aktuell: {1})',
283
+ installing: 'yidaconnector@latest wird installiert...',
284
+ success: 'Update erfolgreich! Aktuelle Version: {0}',
285
+ install_failed: 'Update fehlgeschlagen: {0}',
286
+ manual_hint: 'Bitte manuell ausführen: npm install -g yidaconnector@latest',
287
+ available: 'Update verfügbar',
288
+ up_to_date: 'aktuell',
289
+ label_install: 'Install',
290
+ label_channel: 'Channel',
291
+ label_version: 'Version',
292
+ label_update: 'Update',
293
+ done: 'Update abgeschlossen!',
294
+ done_hint: 'Führen Sie yidaconnector --version aus, um die neue Version zu bestätigen',
295
+ },
296
+
297
+ // ── lib/export-app.js ───────────────────────────────
298
+ export_app: {
299
+ usage: 'Verwendung: yidaconnector export-app <appType>',
300
+ title: ' export-app - Yida-App-Exporttool',
301
+ app_id: '\n App-ID: {0}',
302
+ step_export: '\n📦 App wird exportiert...',
303
+ success: ' ✅ App erfolgreich exportiert!',
304
+ failed: ' ❌ Export fehlgeschlagen: {0}',
305
+ error: '\n❌ Exportfehler: {0}',
306
+ },
307
+
308
+ // ── lib/import-app.js ───────────────────────────────
309
+ import_app: {
310
+ usage: 'Verwendung: yidaconnector import-app <Dateipfad>',
311
+ title: ' import-app - Yida-App-Importtool',
312
+ file_path: '\n Dateipfad: {0}',
313
+ step_import: '\n📥 App wird importiert...',
314
+ success: ' ✅ App erfolgreich importiert!',
315
+ failed: ' ❌ Import fehlgeschlagen: {0}',
316
+ error: '\n❌ Importfehler: {0}',
317
+ },
318
+
319
+ // ── lib/get-page-config.js ──────────────────────────
320
+ get_page_config: {
321
+ usage: 'Verwendung: yidaconnector get-page-config <appType> <formUuid>',
322
+ title: ' get-page-config - Yida-Seitenkonfigurationsabruftool',
323
+ app_id: '\n App-ID: {0}',
324
+ form_uuid: ' Formular-UUID: {0}',
325
+ step_get: '\n🔍 Seitenkonfiguration wird abgerufen...',
326
+ success: ' ✅ Konfiguration erfolgreich abgerufen!',
327
+ failed: ' ❌ Abruf fehlgeschlagen: {0}',
328
+ error: '\n❌ Abruffehler: {0}',
329
+ },
330
+
331
+ // ── lib/save-share-config.js ────────────────────────
332
+ save_share_config: {
333
+ usage: 'Verwendung: yidaconnector save-share-config <appType> <formUuid> <openUrl> <isOpen> [openAuth]',
334
+ title: ' save-share-config - Yida-Öffentlicher-Zugang-Konfigurationsspeichertool',
335
+ app_id: '\n App-ID: {0}',
336
+ form_uuid: ' Formular-UUID: {0}',
337
+ open_url: ' Öffentliche URL: {0}',
338
+ is_open: ' Öffentlich: {0}',
339
+ open_auth: ' Auth erforderlich: {0}',
340
+ step_validate: '\n📋 Step 0: Parameter validieren',
341
+ validate_ok: ' ✅ Validierung erfolgreich',
342
+ validate_failed: ' ❌ Validierung fehlgeschlagen: {0}',
343
+ step_save: '\n💾 Step 2: Öffentliche Zugang-Konfiguration speichern',
344
+ sending_request: ' saveShareConfig-Anfrage wird gesendet...',
345
+ save_ok: ' ✅ Konfiguration erfolgreich gespeichert!',
346
+ save_ok_msg: 'Öffentliche Zugang-Konfiguration gespeichert',
347
+ save_failed: ' ❌ Speichern fehlgeschlagen: {0}',
348
+ save_failed_msg: 'Speichern fehlgeschlagen',
349
+ err_is_open_invalid: 'isOpen muss y oder n sein. Aktueller Wert: {0}',
350
+ err_open_auth_invalid: 'openAuth muss y oder n sein. Aktueller Wert: {0}',
351
+ err_open_url_required: 'openUrl ist erforderlich, wenn öffentlicher Zugang aktiviert ist',
352
+ err_open_url_prefix: 'openUrl muss mit /o/ beginnen. Aktueller Wert: {0}',
353
+ err_open_url_chars: 'openUrl-Pfad unterstützt nur a-z A-Z 0-9 _ - und / als Segmenttrenner. Aktueller Wert: {0}',
354
+ err_open_url_empty: 'openUrl-Pfad darf nicht leer sein: {0}',
355
+ },
356
+
357
+ // ── lib/update-form-config.js ──────────────────────
358
+ update_form_config: {
359
+ usage: 'Verwendung: yidaconnector update-form-config <appType> <formUuid> <isRenderNav> <title>',
360
+ title: ' update-form-config - Yida-Formularkonfigurationsaktualisierungstool',
361
+ app_id: '\n App-ID: {0}',
362
+ form_uuid: ' Formular-UUID: {0}',
363
+ is_render_nav: ' Nav anzeigen: {0}',
364
+ page_title: ' Seitentitel: {0}',
365
+ step_update: '\n💾 Step 2: Formularkonfiguration aktualisieren',
366
+ sending_request: ' updateFormSchemaInfo-Anfrage wird gesendet...',
367
+ update_ok: ' ✅ Konfiguration erfolgreich aktualisiert!',
368
+ nav_shown: 'Obere Navigation angezeigt',
369
+ nav_hidden: 'Obere Navigation ausgeblendet',
370
+ update_failed: ' ❌ Aktualisierung fehlgeschlagen: {0}',
371
+ update_failed_msg: 'Aktualisierung fehlgeschlagen',
372
+ },
373
+
374
+ // ── lib/verify-short-url.js ────────────────────────
375
+ verify_short_url: {
376
+ usage: 'Verwendung: yidaconnector verify-short-url <appType> <formUuid> <url>',
377
+ title: ' verify-short-url - Yida-URL-Überprüfungstool',
378
+ app_id: '\n App-ID: {0}',
379
+ form_uuid: ' Formular-UUID: {0}',
380
+ step_validate: '\n📋 Step 0: URL-Format validieren',
381
+ validate_ok: ' ✅ Format validiert',
382
+ validate_failed: ' ❌ Validierung fehlgeschlagen: {0}',
383
+ step_verify: '\n🔍 Step 2: URL überprüfen',
384
+ sending_request: ' verifyShortUrl-Anfrage wird gesendet...',
385
+ url_available: ' ✅ URL ist verfügbar!',
386
+ open_available_msg: 'Diese öffentliche Zugang-URL ist verfügbar',
387
+ share_available_msg: 'Diese interne Freigabe-URL ist verfügbar',
388
+ url_taken: ' ❌ URL ist bereits vergeben',
389
+ url_taken_msg: 'Diese Kurz-URL ist bereits vergeben',
390
+ verify_failed: ' ❌ Überprüfungsanfrage fehlgeschlagen',
391
+ err_url_prefix: 'URL muss mit /o/ oder /s/ beginnen. Aktueller Wert: {0}',
392
+ err_url_chars: 'URL-Pfad unterstützt nur a-z A-Z 0-9 _ - und / als Segmenttrenner. Aktueller Wert: {0}',
393
+ err_url_empty: 'URL-Pfad darf nicht leer sein: {0}',
394
+ },
395
+
396
+ // ── lib/copy.js ────────────────────────────────────
397
+ copy: {
398
+ title: ' yidaconnector copy - Yida-Arbeitsverzeichnis initialisieren',
399
+ package_root: '\n📦 Paketstamm: {0}',
400
+ dest_root: '🤖 Zielverzeichnis: {0}',
401
+ dest_empty_flatten: '📂 Zielverzeichnis ist leer, project/-Inhalte werden direkt hineinkopiert (kein project/-Unterverzeichnis)',
402
+ force_mode: '⚠️ --force-Modus: Zielverzeichnis wird vor dem Kopieren geleert',
403
+ no_package: '\n❌ yidaconnector-Paketverzeichnis nicht gefunden',
404
+ no_package_hint1: ' Stellen Sie sicher, dass yidaconnector global installiert ist:',
405
+ no_package_hint2: ' npm install -g yidaconnector',
406
+ no_active_tool: '\n❌ Keine aktive KI-Tool-Umgebung erkannt',
407
+ supported_tools: ' Unterstützte Tools: Wukong, Codex, OpenCode, Claude Code, Aone Copilot, Cursor, Qoder',
408
+ current_result: '\n Aktuelle Erkennungsergebnisse:',
409
+ force_hint: '\n Um in das aktuelle Verzeichnis zu kopieren:\n yidaconnector copy --force',
410
+ force_cmd: ' yidaconnector copy --force',
411
+ copying_label: '\n📂 {0} wird kopiert...',
412
+ creating_symlink: '\n📂 yida-skills/-Symlink wird erstellt...',
413
+ file_copied: ' Kopiert: {0}',
414
+ cleared: ' 🗑️ Geleert: {0}',
415
+ symlink_removed: ' 🗑️ Alter Symlink entfernt: {0}',
416
+ dir_deleted: ' 🗑️ Verzeichnis gelöscht: {0}',
417
+ removed: ' 🗑️ Entfernt: {0}',
418
+ symlink_created: ' 🔗 Symlink: {0} -> {1}',
419
+ symlink_label: 'Symlink',
420
+ done: '✅ Fertig!',
421
+ files_copied: ' Kopierte Dateien: {0}',
422
+ files_count: '{0} Dateien',
423
+ symlinks_created: ' Erstellte Symlinks: {0}',
424
+ result_symlink: ' {0} → {1} (Symlink)',
425
+ result_copy: ' {0} → {1} ({2} Dateien)',
426
+ wukong_skills_cleanup: '\n🗑️ Wukong-Umgebung: yida-skills/-Symlink wird bereinigt...',
427
+ wukong_skills_cleaned: 'bereinigt',
428
+ wukong_skills_not_found: ' ℹ️ Kein yida-skills/-Symlink oder -Verzeichnis gefunden: {0}',
429
+ remove_failed: ' ❌ Entfernen fehlgeschlagen: {0} ({1})',
430
+ symlink_fallback_copy: ' ⚠️ Windows-Symlink-Erstellung fehlgeschlagen (Admin-Rechte erforderlich), Verzeichniskopie wird verwendet: {0}',
431
+ symlink_failed: ' ❌ Symlink-Erstellung fehlgeschlagen: {0} ({1})',
432
+ },
433
+
434
+ // ── lib/publish.js ─────────────────────────────────
435
+ generate_page: {
436
+ spec_not_found: 'Spec file not found: {0}',
437
+ spec_invalid: 'Failed to parse spec JSON: {0}',
438
+ unknown_template: 'Unknown page template: {0}',
439
+ available_templates: 'Available templates: {0}',
440
+ template_not_found: 'Template file not found: {0}',
441
+ done: 'Page generated: {0}',
442
+ hint: 'Next run yidaconnector compile <file>, or pass --compile to compile immediately.',
443
+ success: 'Page generation complete',
444
+ },
445
+ page_size: {
446
+ large_source: 'Große Seitenquelle erkannt: {0} ({1}, ca. {2} Zeilen)',
447
+ long_line_hint: 'Sehr lange Einzelzeile erkannt (ca. {0} Zeichen), meist minifizierter Vendor-Code oder base64; bitte auslagern.',
448
+ base64_hint: 'Langer inline base64-Inhalt erkannt; bitte nach CDN/OSS hochladen und per URL referenzieren.',
449
+ memory_hint: 'Publish/compile hält Source, Build-Ausgabe, Minify-Ausgabe und Schema-Kopien im Speicher; Vendor/base64 bitte aufteilen oder mit this.utils.loadScript laden.',
450
+ windows_hint: 'Unter Windows große JSX-Dateien nicht mit PowerShell Get-Content -Raw + ConvertTo-Json schreiben; Node fs.writeFileSync/appendFileSync in Teilen verwenden.',
451
+ },
452
+ publish: {
453
+ title: ' yida-publish - Yida-Seitenveröffentlichungstool',
454
+ platform: ' Plattform: {0}',
455
+ app_id: ' App-ID: {0}',
456
+ form_uuid: ' Formular-ID: {0}',
457
+ source_file: ' Quelle: {0}',
458
+ compiled_file: ' Ausgabe: {0}',
459
+ step_lint: '\n🔍 Step 0: Yida Coding-Standards Vorprüfung\n',
460
+ lint_title: '⚠️ Yida page code check:',
461
+ lint_error_line: ' ❌ Zeile {0}: {1}',
462
+ lint_warning_line: ' ⚠️ Zeile {0}: {1}',
463
+ lint_event_function: 'Event-Bindung verwendet function, verwenden Sie stattdessen Arrow-Funktion (e) => { this.xxx() }',
464
+ lint_missing_render_jsx: 'Missing export function renderJsx(); Yida custom pages must export renderJsx',
465
+ lint_import_require: 'Found import/require. Yida custom pages cannot import modules; load third-party scripts with this.utils.loadScript',
466
+ lint_react_hooks: 'Found React Hooks. Yida runtime uses React 16 class-component style and does not support useState/useEffect hooks',
467
+ lint_export_default: 'Found export default. Yida needs named exports such as export function renderJsx/didMount',
468
+ lint_jsx_extension: 'This .js file contains JSX; prefer .jsx for source files. The compiled output is still .js',
469
+ lint_event_direct_method: 'Event binding passes this.xxx directly and will lose this; use (e) => { this.xxx(e); }',
470
+ lint_event_bind_this: 'Event binding uses .bind(this); use (e) => { this.xxx(e); } instead',
471
+ lint_lifecycle_case: 'Detected lifecycle export {0}; Yida only recognizes {1} (case-sensitive)',
472
+ lint_react_lifecycle_method: 'Detected React lifecycle {0}; export {1} for Yida custom pages',
473
+ lint_event_lowercase: 'Detected lowercase event prop {0}; React/Yida will not bind it. Use {1}',
474
+ lint_event_call_result: 'Event binding invokes a function or is not an expression handler; use (e) => { self.xxx(e); }',
475
+ lint_event_noop_arrow: 'Event arrow function references a handler without calling it; use (e) => { self.xxx(e); }',
476
+ 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',
477
+ lint_array_callback_function: '.{0}(function ...) may lose this in callbacks; use .{0}((item) => ...) instead',
478
+ lint_foreach_callback_function: '.forEach(function ...) may lose this in callbacks; prefer .forEach((item) => ...)',
479
+ lint_controlled_input: 'input uses controlled value mode. Yida pages should use defaultValue + onChange to update _customState',
480
+ 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',
481
+ 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.',
482
+ lint_page_size_limit: 'pageSize={0} exceeds the Yida API limit of 100; use 100 or less',
483
+ lint_yida_api_catch: 'this.utils.yida API call has no detected .catch(); add error handling and toast the user',
484
+ 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',
485
+ 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',
486
+ lint_const_let: 'Verwendet const/let-Deklaration, empfohlen auf var zu ändern (Yida-Laufzeitkompatibilität)',
487
+ lint_computed_property: 'Verwendet ES6 berechneten Eigenschaftsnamen { [key]: value }, wird von der Yida JS-Engine nicht unterstützt und verursacht stilles Fehlschlagen. Verwenden Sie var obj = {}; obj[key] = value;',
488
+ lint_pad_method: 'Verwendet String.{0}(), wird von der Yida JS-Engine nicht unterstützt und verursacht stilles Abbrechen von Promise-Callbacks. Verwenden Sie den ternären Operator: x < 10 ? "0" + x : "" + x',
489
+ lint_large_then_callback: 'Promise .then()-Callback ist zu groß ({0} Zeilen, empfohlenes Maximum {1} Zeilen), kann stilles Abschneiden verursachen. Extrahieren Sie die Logik in eine separate Export-Funktion',
490
+ lint_fix_errors: '❌ Bitte beheben Sie die obigen Fehler vor der Veröffentlichung',
491
+ lint_skip_hint: '💡 Fügen Sie --skip-lint hinzu, um die Prüfung zu überspringen',
492
+ lint_passed: ' ✅ Code-Prüfung bestanden\n',
493
+ lint_skipped: '\n⏭️ Code-Vorprüfung übersprungen (--skip-lint)\n',
494
+ duplicate_source_mismatch: ' ⚠️ Found another copy with the same file name but different content. Publishing: {0}; other copy: {1}',
495
+ data_source_fetching: ' Reading existing page data sources...',
496
+ data_source_preserved: ' ✅ Preserved existing page data sources: {0}',
497
+ data_source_none: ' No custom page data sources to preserve',
498
+ data_source_fetch_failed: 'Could not read the existing page Schema, so publishing stopped to avoid clearing existing data sources: {0}',
499
+ target_checking: ' Checking publish target type...',
500
+ target_check_forced: ' ⚠️ Skipped publish target type check (--force)',
501
+ target_check_ok: ' ✅ Publish target confirmed: {0} ({1})',
502
+ target_check_failed: 'Could not verify publish target: {0}',
503
+ target_not_found: 'Publish target was not found in app navigation: {0}',
504
+ target_type_invalid: 'Publish target is not a custom display page: {0} current type is {1}',
505
+ 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.',
506
+ target_list_hint: 'Run yidaconnector list-forms {0} --keyword <page name>, then choose a custom page formUuid with formType=display.',
507
+ 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.',
508
+ step_compile: '\n📦 Step 1: Quellcode kompilieren und Schema erstellen\n',
509
+ reading_source: '[1/4] {0}-Quellcode wird gelesen...',
510
+ compiling: '[2/4] Babel kompiliert {0}...',
511
+ compile_failed: ' ❌ Kompilierung fehlgeschlagen: {0}',
512
+ compile_location: '\n Ort: Zeile {0}, Spalte {1}',
513
+ compile_error_code: ' Fehlercode: {0}',
514
+ minifying: '[3/4] UglifyJS minimiert → {0}...',
515
+ minify_failed: ' Minimierung fehlgeschlagen: {0}',
516
+ compile_done: ' ✅ Kompilierung abgeschlossen: {0}',
517
+ building_schema: '[4/4] Schema wird erstellt...',
518
+ schema_built: ' ✅ Schema erfolgreich erstellt!',
519
+ step_login: '\n🔑 Step 2: Anmeldedaten lesen',
520
+ step_publish: '\n📤 Step 3: Schema veröffentlichen\n',
521
+ publish_failed: '\n❌ Veröffentlichung fehlgeschlagen: {0}',
522
+ schema_published: ' ✅ Schema erfolgreich veröffentlicht!',
523
+ step_config: '\n⚙️ Step 4: Formularkonfiguration aktualisieren\n',
524
+ success: ' ✅ Erfolgreich veröffentlicht!',
525
+ config_failed: ' ⚠️ Konfigurationsaktualisierung fehlgeschlagen: {0}',
526
+ schema_ok_config_failed: 'Schema published, but config update failed',
527
+ step_health_check: '\n🩺 Step 5: Health check published page\n',
528
+ health_check_ok: ' ✅ Health check passed: HTTP {0}',
529
+ health_check_failed: ' ⚠️ Health check failed: HTTP {0} {1}',
530
+ exception: '\n❌ Veröffentlichungsfehler: {0}',
531
+ source_not_found: '❌ Quelldatei nicht gefunden: {0}',
532
+ usage: 'Verwendung: yidaconnector publish <Quelldatei> <appType> <formUuid> [--health-check]',
533
+ example: 'Beispiel: yidaconnector publish pages/src/xxx.js APP_XXX FORM-XXX --health-check',
534
+ },
535
+
536
+ // ── lib/qr-login.js ────────────────────────────────
537
+ qr_login: {
538
+ title: '🔐 Yida Terminal-QR-Code-Anmeldung',
539
+ step_init: ' Step 1: Sitzung wird initialisiert...',
540
+ step_get_qr: ' Step 2: QR-Code wird abgerufen...',
541
+ scan_hint: ' 📱 Scannen Sie den QR-Code unten mit DingTalk:',
542
+ qr_url_label: ' QR-Code-URL: {0}',
543
+ waiting_scan: ' ⏳ Warten auf Scan (bis zu 2 Minuten)...',
544
+ scanned_confirm: ' ✅ QR-Code gescannt! Bitte bestätigen Sie die Anmeldung auf Ihrem Telefon...',
545
+ scan_success: ' ✅ Scan bestätigt!',
546
+ step_exchange: ' Step 4: Anmeldedaten werden ausgetauscht...',
547
+ step_get_corps: ' Step 5: Organisationsliste wird abgerufen...',
548
+ step_switch_corp: ' Step 7: Zur ausgewählten Organisation wechseln...',
549
+ only_one_corp: ' ✅ Eine Organisation erkannt: {0}, automatisch ausgewählt',
550
+ select_corp_prompt: ' 🏢 Mehrere Organisationen gefunden, bitte wählen Sie eine:',
551
+ select_corp_input: ' Nummer eingeben (1-{0}): ',
552
+ select_corp_invalid: ' ❌ Ungültige Eingabe, bitte eine Zahl zwischen 1 und {0} eingeben',
553
+ target_corp_not_found: 'Die angegebene corpId wurde in den zugänglichen Organisationen nicht gefunden: {0}',
554
+ corp_selected: ' ✅ Organisation ausgewählt: {0}',
555
+ login_success: '✅ Anmeldung erfolgreich!',
556
+ qrcode_fallback: ' ⚠️ qrcode-Paket nicht installiert, besuchen Sie die URL unten manuell:',
557
+ qrcode_render_failed: ' ⚠️ QR-Code-Rendering fehlgeschlagen ({0}), besuchen Sie die URL unten:',
558
+ qr_expired: 'QR-Code abgelaufen, bitte erneut anmelden',
559
+ poll_timeout: 'Scan-Timeout (2 Minuten), bitte erneut anmelden',
560
+ no_corp_available: 'Keine zugänglichen Organisationen gefunden',
561
+ no_csrf_in_cookie: 'Anmeldung erfolgreich, aber csrf_token nicht gefunden, bitte erneut versuchen',
562
+ stdin_closed: 'Eingabestream geschlossen, Organisation kann nicht ausgewählt werden',
563
+ },
564
+
565
+ // ── scripts/postinstall.js ─────────────────────────
566
+ postinstall: {
567
+ welcome_title: ' 🎉 Willkommen bei YidaConnector! ',
568
+ install_success: ' ✅ Installation abgeschlossen! {0} Yida KI-Entwicklungstool ist bereit.',
569
+ update_success: ' ✅ Update abgeschlossen! {0} YidaConnector wurde auf die neueste Version aktualisiert.',
570
+ ai_mode_title: ' 🚀 KI-Gesprächsmodus',
571
+ ai_mode_desc: ' In Codex / Claude Code / Aone Copilot / Cursor direkt chatten:',
572
+ prompt1: " 📋 'Erstelle mir ein Anwesenheitsverwaltungssystem mit Yida'",
573
+ prompt2: " 💰 'Baue eine persönliche Gehaltsrechner-App'",
574
+ prompt3: " 🏢 'Erstelle ein CRM-Kundenverwaltungssystem'",
575
+ prompt4: " 🎂 'Mache eine Geburtstags-Mini-App'",
576
+ steps_title: ' 📖 Erste Schritte',
577
+ step1: ' {0}Step 1{1} KI-Coding-Tool öffnen (Codex / Claude Code / Cursor usw.)',
578
+ step2: ' {0}Step 2{1} Gewünschte App in natürlicher Sprache beschreiben',
579
+ step3: ' {0}Step 3{1} KI führt automatisch yidaconnector-Befehle aus',
580
+ step4: ' {0}Step 4{1} Yida-App-Link erhalten 🎉',
581
+ commands_title: ' ⚡ Schnellbefehle',
582
+ cmd_env: ' {0}yidaconnector env{1} {2}# KI-Tool-Umgebung und Anmeldestatus erkennen{3}',
583
+ cmd_login: ' {0}yidaconnector login{1} {2}# Bei Yida anmelden{3}',
584
+ cmd_help: ' {0}yidaconnector --help{1} {2}# Alle Befehle anzeigen{3}',
585
+ footer1: ' 📚 Dokumentation: https://github.com/bunnyrui/yidaconnector',
586
+ footer2: ' 💬 Community: YidaConnector-Community auf DingTalk beitreten',
587
+ },
588
+
589
+ // ── lib/cdn-*.js ───────────────────────────────────
590
+ cdn: {
591
+ config_load_error: 'CDN-Konfiguration konnte nicht geladen werden: {0}',
592
+ config_saved: '✅ CDN-Konfiguration gespeichert in: {0}',
593
+ config_usage: 'Verwendung: yidaconnector cdn-config [Optionen]',
594
+ config_file_path: '📄 Konfigurationsdatei: {0}',
595
+ config_section_aliyun: '🔐 Alibaba Cloud-Anmeldedaten',
596
+ config_section_cdn: '🌐 CDN-Konfiguration',
597
+ config_section_oss: '📦 OSS-Konfiguration',
598
+ config_section_upload: '📤 Upload-Konfiguration',
599
+ config_cdn_domain: 'CDN-Domain',
600
+ config_oss_region: 'OSS-Region',
601
+ config_oss_bucket: 'OSS-Bucket',
602
+ config_oss_endpoint: 'OSS-Endpunkt',
603
+ config_upload_path: 'Upload-Pfad',
604
+ config_compress: 'Bildkomprimierung',
605
+ config_max_width: 'Maximale Breite',
606
+ config_quality: 'Bildqualität',
607
+ config_not_set: 'Nicht gesetzt',
608
+ config_enabled: 'Aktiviert',
609
+ config_disabled: 'Deaktiviert',
610
+ config_status_valid: '✅ Konfiguration vollständig, einsatzbereit',
611
+ config_status_invalid: '⚠️ Konfiguration unvollständig',
612
+ config_missing: ' Fehlende Felder: {0}',
613
+ config_updated: '✅ Konfiguration aktualisiert!',
614
+ config_init_title: '🔧 CDN-Konfigurationsassistent',
615
+ config_init_desc: 'Für CDN-Bild-Upload konfigurieren Sie Folgendes:',
616
+ upload_no_files: '❌ Bitte Bilddateien zum Hochladen angeben',
617
+ config_incomplete: '❌ CDN-Konfiguration unvollständig',
618
+ missing_fields: ' Fehlende Felder: {0}',
619
+ run_config_init: ' Bitte zuerst ausführen: yidaconnector cdn-config --init',
620
+ no_config: '❌ CDN-Konfiguration nicht gefunden',
621
+ oss_sdk_required: '❌ ali-oss SDK fehlt',
622
+ run_npm_install: ' Ausführen: npm install {0}',
623
+ no_images_found: '❌ Keine unterstützten Bilddateien gefunden',
624
+ uploading_images: '📤 {0} Bilder werden hochgeladen...',
625
+ uploading_file: ' Hochladen: {0}',
626
+ upload_success: ' ✅ {0}',
627
+ upload_failed: ' ❌ {0} Upload fehlgeschlagen: {1}',
628
+ upload_summary: '\n📊 Upload-Zusammenfassung',
629
+ upload_success_count: ' Erfolgreich: {0}',
630
+ upload_fail_count: ' Fehlgeschlagen: {0}',
631
+ cdn_urls: '\n🔗 CDN-URLs:',
632
+ upload_error: '❌ Upload fehlgeschlagen: {0}',
633
+ refresh_no_targets: '❌ Bitte URLs oder Verzeichnisse zum Aktualisieren angeben',
634
+ cdn_sdk_required: '❌ Alibaba Cloud CDN SDK fehlt',
635
+ querying_quota: '📊 Aktualisierungskontingent wird abgefragt...',
636
+ quota_info: ' URL-Aktualisierung: {0}/Tag, {1} verbleibend | Verzeichnisse: {2}/Tag, {3} verbleibend',
637
+ refreshing_urls: '🔄 {0} URLs werden aktualisiert...',
638
+ refreshing_paths: '🔄 {0} Verzeichnisse werden aktualisiert...',
639
+ refresh_task_id: ' ✅ Aufgaben-ID: {0}',
640
+ refresh_urls_failed: ' ❌ URL-Aktualisierung fehlgeschlagen: {0}',
641
+ refresh_paths_failed: ' ❌ Verzeichnisaktualisierung fehlgeschlagen: {0}',
642
+ refresh_summary: '\n📊 Aktualisierungszusammenfassung',
643
+ url_refresh_success: ' ✅ URL-Aktualisierung erfolgreich, Aufgaben-ID: {0}',
644
+ path_refresh_success: ' ✅ Verzeichnisaktualisierung erfolgreich, Aufgaben-ID: {0}',
645
+ refresh_error: '❌ Aktualisierung fehlgeschlagen: {0}',
646
+ file_not_found: '❌ Datei nicht gefunden: {0}',
647
+ },
648
+
649
+ // ── src/flash-note/flash-to-prd.ts ──────────────
650
+ flashNote: {
651
+ toPrd: {
652
+ title: '📋 DingTalk Flash-Notiz zu PRD',
653
+ help_usage: 'Verwendung: yidaconnector flash-to-prd --file <Pfad> [--name <Projektname>]',
654
+ help_usage2: ' yidaconnector flash-to-prd --name <Projektname> (von stdin lesen)',
655
+ help_args_title: 'Argumente:',
656
+ help_arg_file: ' --file, -f <Pfad> Flash-Notiz-Dateipfad (.txt / .md)',
657
+ help_arg_name: ' --name, -n <Name> Projektname (optional, automatisch extrahiert)',
658
+ help_arg_max_tokens: ' --max-tokens <Anzahl> Max. AI-Ausgabe-Tokens (Standard 8000)',
659
+ help_examples_title: 'Beispiele:',
660
+ help_example1: ' yidaconnector flash-to-prd --file ./meeting-notes.txt --name "Geraeteinspektion"',
661
+ help_example2: ' cat meeting.txt | yidaconnector flash-to-prd --name "Geraeteinspektion"',
662
+ step_read: '[Schritt 1] Flash-Notiz-Inhalt wird gelesen...',
663
+ file_not_found: 'Datei nicht gefunden: {0}',
664
+ no_input: 'Kein Flash-Notiz-Inhalt angegeben. Verwenden Sie --file oder leiten Sie Inhalt ueber stdin weiter.',
665
+ stdin_empty: 'Standardeingabe ist leer',
666
+ read_success: '✅ Erfolgreich gelesen, {0} Zeichen',
667
+ step_load_module: '[Schritt 2] Prompt-Builder-Modul wird geladen...',
668
+ module_loaded_builtin: '✅ Integriertes Prompt-Modul geladen',
669
+ module_loaded_local: '✅ Lokales Prompt-Modul geladen: {0}',
670
+ module_not_found: '❌ build-flash-note-prompt.js Modul nicht gefunden',
671
+ module_path_tried: ' Versuchter Pfad {0}: {1}',
672
+ step_preprocess: '[Schritt 3] Vorverarbeitung + Meeting-Erkennung...',
673
+ preprocess_result: ' Vorverarbeitung: {0} Zeichen -> {1} Zeichen',
674
+ meeting_meta: ' Meeting-Metadaten: {0} Felder{1}',
675
+ a1_sections: ' A1-Zusammenfassungsabschnitte: {0}{1}',
676
+ speakers: ' Erkannte Sprecher: {0}{1}',
677
+ speakers_with_role: ' (davon {0} mit Rollenangabe)',
678
+ step_login: '[Schritt 4] Anmeldestatus wird geprueft...',
679
+ no_login: ' Keine Anmeldesitzung gefunden, Anmeldung wird gestartet...',
680
+ login_ready: '✅ Anmeldung bereit ({0})',
681
+ step_ai: '[Schritt 5] AI wird aufgerufen um PRD zu generieren...',
682
+ single_segment: ' Einzelsegment-Modus, Prompt-Laenge: {0} Zeichen',
683
+ multi_segment: ' Mehrsegment-Modus, insgesamt {0} Segmente',
684
+ extracting_segment: ' Segment {0}/{1} wird extrahiert ({2} Zeichen)...',
685
+ merging_segments: ' Segmentergebnisse werden zusammengefuehrt...',
686
+ ai_success: '✅ PRD erfolgreich generiert',
687
+ ai_error: 'AI-API-Aufruf fehlgeschlagen: {0}',
688
+ done: '✅ Flash-Notiz zu PRD Konvertierung abgeschlossen',
689
+ done_project: ' Projektname: {0}',
690
+ done_file: ' Ausgabedatei: {0}',
691
+ done_size: ' Dateigroesse: {0} Zeichen',
692
+ done_meeting: ' Meeting-Erkennung: {0} Metadaten, {1} A1-Abschnitte, {2} Sprecher',
693
+ },
694
+ },
695
+ update_app: {
696
+ 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.',
697
+ },
698
+ aggregate_table: {
699
+ usage: 'Usage: yidaconnector aggregate-table <list|create-empty|inspect|preview|save|publish|status> <appType> ...',
700
+ commands_title: 'Subcommands:',
701
+ cmd_list: 'list <appType> [--keyword <text>] [--json] List aggregate tables in an app',
702
+ cmd_create_empty: 'create-empty <appType> "<name>" [--open|--no-open] Create a blank aggregate table and return the designer URL',
703
+ cmd_inspect: 'inspect <appType> <formUuid> [--json] Read aggregate table design config',
704
+ cmd_preview: 'preview <appType> <formUuid> <design.json> [--json] Preview config without saving',
705
+ cmd_save: 'save <appType> <formUuid> <design.json> [--json] Save an aggregate table draft',
706
+ cmd_publish: 'publish <appType> <formUuid> <design.json> [--json] Publish aggregate table config',
707
+ cmd_status: 'status <appType> <formUuid> [--json] Query aggregate table build status',
708
+ examples_title: 'Examples:',
709
+ example_list: 'yidaconnector aggregate-table list APP_XXX',
710
+ example_create_empty: 'yidaconnector aggregate-table create-empty APP_XXX "Customer Contract Aggregate" --open',
711
+ example_inspect: 'yidaconnector aggregate-table inspect APP_XXX FORM_XXX --json',
712
+ example_preview: 'yidaconnector aggregate-table preview APP_XXX FORM_XXX .cache/yidaconnector/aggregate/design.json',
713
+ example_save: 'yidaconnector aggregate-table save APP_XXX FORM_XXX .cache/yidaconnector/aggregate/design.json',
714
+ example_publish: 'yidaconnector aggregate-table publish APP_XXX FORM_XXX .cache/yidaconnector/aggregate/design.json',
715
+ example_status: 'yidaconnector aggregate-table status APP_XXX FORM_XXX',
716
+ list_usage: 'Usage: yidaconnector aggregate-table list <appType> [--keyword <text>] [--json]',
717
+ create_empty_usage: 'Usage: yidaconnector aggregate-table create-empty <appType> "<name>" [--locale zh_CN|en_US|ja_JP] [--open|--no-open]',
718
+ inspect_usage: 'Usage: yidaconnector aggregate-table inspect <appType> <formUuid> [--json]',
719
+ preview_usage: 'Usage: yidaconnector aggregate-table preview <appType> <formUuid> <design.json> [--json]',
720
+ save_usage: 'Usage: yidaconnector aggregate-table save <appType> <formUuid> <design.json> [--json]',
721
+ publish_usage: 'Usage: yidaconnector aggregate-table publish <appType> <formUuid> <design.json> [--json]',
722
+ status_usage: 'Usage: yidaconnector aggregate-table status <appType> <formUuid> [--json]',
723
+ no_login: 'No login state found. Run yidaconnector login first.',
724
+ unsupported_locale: 'Unsupported locale: {0}',
725
+ unknown_subcommand: 'Unknown aggregate-table subcommand: {0}',
726
+ design_required: 'Missing aggregate table design JSON or file path',
727
+ invalid_json: 'Aggregate table design config is not valid JSON: {0}',
728
+ design_object_required: 'Aggregate table design config must be a JSON object',
729
+ check_feature: 'Check aggregate table capability',
730
+ feature_disabled: 'Aggregate table is not enabled for this app/org, or the edition quota has been reached',
731
+ create_empty: 'Create blank aggregate table',
732
+ inspect: 'Read aggregate table config',
733
+ preview: 'Preview aggregate table config',
734
+ save: 'Save aggregate table draft',
735
+ publish: 'Publish aggregate table config',
736
+ status: 'Query aggregate table build status',
737
+ publish_requires_source: 'Publishing requires at least one data source. Configure relationForms first.',
738
+ list_success: 'Aggregate table list',
739
+ create_empty_success: 'Aggregate table created',
740
+ inspect_success: 'Aggregate table config loaded',
741
+ preview_success: 'Aggregate table preview succeeded',
742
+ save_success: 'Aggregate table draft saved',
743
+ publish_success: 'Aggregate table published',
744
+ status_success: 'Aggregate table status loaded',
745
+ },
746
+ ai_form_setting: {
747
+ usage: 'Usage: yidaconnector ai-form-setting <get|fields|models|enable|disable|save> <appType> ...',
748
+ commands_title: 'Subcommands:',
749
+ cmd_get: 'get <appType> <formUuid> [--raw] [--json] Query AI approval prompt config',
750
+ cmd_fields: 'fields <appType> <formUuid> [--type TEXT|IMAGE|ATTACHMENT] List insertable fields',
751
+ cmd_models: 'models <appType> [--type TEXT|IMAGE|ATTACHMENT] List available models',
752
+ cmd_enable: 'enable <appType> <formUuid> [--json] Enable AI approval prompts',
753
+ cmd_disable: 'disable <appType> <formUuid> [--json] Disable AI approval prompts',
754
+ cmd_save: 'save <appType> <formUuid> <config.json> [--enable] Save prompts and model config',
755
+ examples_title: 'Examples:',
756
+ example_get: 'yidaconnector ai-form-setting get APP_XXX FORM_XXX --json',
757
+ example_fields: 'yidaconnector ai-form-setting fields APP_XXX FORM_XXX --type ATTACHMENT',
758
+ example_models: 'yidaconnector ai-form-setting models APP_XXX --type IMAGE',
759
+ example_enable: 'yidaconnector ai-form-setting enable APP_XXX FORM_XXX',
760
+ example_save: 'yidaconnector ai-form-setting save APP_XXX FORM_XXX .cache/yidaconnector/ai-form-setting/config.json --enable',
761
+ enable_disable_conflict: '--enable and --disable cannot be used together',
762
+ invalid_type: 'Invalid prompt type: {0}. Valid values: {1}',
763
+ invalid_status: 'Invalid AI approval prompt status: {0}',
764
+ config_required: 'Missing AI approval prompt JSON config or file path',
765
+ invalid_json: 'AI approval prompt config is not valid JSON: {0}',
766
+ invalid_variable: 'Variable #{0} must be an object',
767
+ variable_required: 'Variable #{0} must contain varName and fieldId',
768
+ prompt_required: 'Prompt {0} is missing prompt/content',
769
+ variables_array_required: 'variables must be an array',
770
+ invalid_item: 'Prompt config #{0} must be an object',
771
+ model_required: 'Prompt {0} is missing modelId',
772
+ invalid_config_part: '{0} must be a JSON object or a valid JSON string',
773
+ config_object_required: 'AI approval prompt config must be a JSON object or array',
774
+ items_array_required: 'AI approval prompt config must contain an items array',
775
+ too_many_items: 'AI approval prompts support up to {0} items',
776
+ duplicate_item_id: 'Duplicate itemId: {0}',
777
+ no_login: 'No login state found. Run yidaconnector login first.',
778
+ get_usage: 'Usage: yidaconnector ai-form-setting get <appType> <formUuid> [--raw] [--json]',
779
+ fields_usage: 'Usage: yidaconnector ai-form-setting fields <appType> <formUuid> [--type TEXT|IMAGE|ATTACHMENT] [--json]',
780
+ models_usage: 'Usage: yidaconnector ai-form-setting models <appType> [--type TEXT|IMAGE|ATTACHMENT] [--json]',
781
+ status_usage: 'Usage: yidaconnector ai-form-setting <enable|disable> <appType> <formUuid> [--json]',
782
+ save_usage: 'Usage: yidaconnector ai-form-setting save <appType> <formUuid> <config.json> [--enable|--disable] [--json]',
783
+ get_action: 'Query AI approval prompt config',
784
+ fields_action: 'Query AI approval prompt fields',
785
+ models_action: 'Query AI approval prompt models',
786
+ status_action: 'Update AI approval prompt status',
787
+ save_action: 'Save AI approval prompt config',
788
+ get_success: 'AI approval prompt config',
789
+ fields_success: 'AI approval prompt fields',
790
+ models_success: 'AI approval prompt models',
791
+ save_success: 'AI approval prompt config saved',
792
+ enabled: 'AI approval prompts enabled',
793
+ disabled: 'AI approval prompts disabled',
794
+ unknown_subcommand: 'Unknown ai-form-setting subcommand: {0}',
795
+ },
796
+ codex_login: {
797
+ title: ' yidaconnector login {0} - {1} Login Mode',
798
+ not_codex: 'Current environment is not detected as Codex / Qoder / Wukong; returning an in-app browser login handoff only.',
799
+ no_playwright: '{0} mode does not require Playwright or a separate Chromium install.',
800
+ using_browser: '{0} in-app Browser is only suitable for unauthenticated page previews; use yidaconnector login --browser for Yida login cookies.',
801
+ browser_handoff_hint: '{0} in-app Browser does not support authentication Cookie export. Use yidaconnector login --browser when CLI cookies are required.',
802
+ handoff_message: '{0} in-app Browser cannot export Yida login cookies. Run fallback_command when CLI cookies are required.',
803
+ cache_available: 'Existing CLI Cookie cache is available; no browser login needed.',
804
+ },
805
+ };