openyida 2026.7.18 → 2026.7.21

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 (200) hide show
  1. package/README.md +37 -2
  2. package/bin/yida.js +113 -18
  3. package/docs/capabilities.md +202 -0
  4. package/lib/agent-center/agent-center.js +2 -3
  5. package/lib/app/app-list.js +3 -4
  6. package/lib/app/build-page.js +13 -6
  7. package/lib/app/check-page.js +16 -6
  8. package/lib/app/compile.js +17 -7
  9. package/lib/app/create-app.js +14 -2
  10. package/lib/app/create-form/api-path.js +25 -0
  11. package/lib/app/create-form/args.js +13 -0
  12. package/lib/app/create-form/commands.js +4 -0
  13. package/lib/app/create-form/definition-reader.js +23 -23
  14. package/lib/app/create-form/field-normalizers.js +26 -7
  15. package/lib/app/create-form/schema-patch.js +4 -1
  16. package/lib/app/create-form.js +155 -68
  17. package/lib/app/create-page.js +47 -10
  18. package/lib/app/generate-page.js +20 -1
  19. package/lib/app/get-form-config.js +2 -1
  20. package/lib/app/get-schema.js +67 -15
  21. package/lib/app/import-app.js +94 -42
  22. package/lib/app/list-forms.js +4 -8
  23. package/lib/app/page-ir.js +140 -0
  24. package/lib/app/publish.js +289 -556
  25. package/lib/app/schema-field-resolution.js +370 -0
  26. package/lib/app/services/app-reader.js +85 -0
  27. package/lib/app/services/app-service.js +235 -0
  28. package/lib/app/services/canvas-page-compiler.js +91 -0
  29. package/lib/app/services/canvas-page-schema-builder.js +149 -0
  30. package/lib/app/services/field-bindings.js +68 -0
  31. package/lib/app/services/form-compiler.js +1922 -0
  32. package/lib/app/services/form-mode-service.js +182 -0
  33. package/lib/app/services/form-schema-patcher.js +333 -0
  34. package/lib/app/services/form-schema-reader.js +59 -0
  35. package/lib/app/services/form-service.js +379 -0
  36. package/lib/app/services/form-validation.js +562 -0
  37. package/lib/app/services/native-page-compiler.js +92 -0
  38. package/lib/app/services/native-page-schema-builder.js +428 -0
  39. package/lib/app/services/page-resource-service.js +185 -0
  40. package/lib/app/update-app.js +22 -9
  41. package/lib/app/update-form-config.js +4 -2
  42. package/lib/asset/asset-cmd.js +19 -6
  43. package/lib/auth/oauth-loopback.js +376 -15
  44. package/lib/auth/token-auth.js +34 -3
  45. package/lib/auth/token-store.js +22 -4
  46. package/lib/basic-info/basic-info.js +2 -1
  47. package/lib/bridge/bridge.js +43 -18
  48. package/lib/core/agent-capabilities.js +5 -3
  49. package/lib/core/command-errors.js +38 -0
  50. package/lib/core/command-manifest.js +59 -1
  51. package/lib/core/copy.js +12 -0
  52. package/lib/core/doctor.js +15 -4
  53. package/lib/core/env-cmd.js +1 -1
  54. package/lib/core/env.js +7 -6
  55. package/lib/core/i18n.js +66 -8
  56. package/lib/core/legacy-schema-guard.js +408 -0
  57. package/lib/core/locales/en.js +38 -46
  58. package/lib/core/locales/zh.js +30 -46
  59. package/lib/core/sample.js +12 -2
  60. package/lib/core/utils.js +334 -66
  61. package/lib/core/yida-client.js +108 -5
  62. package/lib/corp-efficiency/corp-efficiency.js +2 -2
  63. package/lib/corp-manager/corp-manager.js +3 -3
  64. package/lib/formula/evaluate.js +11 -68
  65. package/lib/formula/field-refs.js +83 -0
  66. package/lib/i18n-management/i18n-management.js +2 -3
  67. package/lib/process/configure-process.js +44 -1992
  68. package/lib/process/create-process.js +54 -87
  69. package/lib/process/preview-process.js +20 -8
  70. package/lib/process/services/process-compiler.js +2056 -0
  71. package/lib/process/services/process-reader.js +232 -0
  72. package/lib/process/services/process-resource-service.js +571 -0
  73. package/lib/process/services/process-service.js +122 -0
  74. package/lib/process/services/process-stage-checkpoint.js +246 -0
  75. package/lib/report/append.js +7 -26
  76. package/lib/report/http.js +31 -5
  77. package/lib/report/index.js +10 -2
  78. package/lib/samples/yida-canvas-custom-page/business-list.canvas.jsx +63 -14
  79. package/lib/samples/yida-canvas-custom-page/dashboard-overview.canvas.jsx +176 -32
  80. package/lib/samples/yida-canvas-custom-page/dashboard-starter.canvas.jsx +5 -2
  81. package/lib/samples/yida-canvas-custom-page/data-management.canvas.jsx +228 -14
  82. package/lib/samples/yida-canvas-custom-page/portal-shell-home.canvas.jsx +2 -2
  83. package/lib/samples/yida-canvas-custom-page/split-pane-detail.canvas.jsx +206 -10
  84. package/lib/samples/yida-custom-page/data-management.oyd.jsx +14 -3
  85. package/lib/samples/yida-custom-page/design-tokens.js +2 -2
  86. package/lib/samples/yida-custom-page/detail-profile.oyd.jsx +1 -1
  87. package/lib/samples/yida-custom-page/portal-shell-home.oyd.jsx +7 -2
  88. package/lib/samples/yida-custom-page/split-pane-detail.oyd.jsx +2 -1
  89. package/lib/schema/adapters/app-adapter.js +210 -0
  90. package/lib/schema/adapters/form-adapter.js +1362 -0
  91. package/lib/schema/adapters/keys.js +19 -0
  92. package/lib/schema/adapters/page-adapter.js +566 -0
  93. package/lib/schema/adapters/process-adapter.js +519 -0
  94. package/lib/schema/applier.js +1878 -0
  95. package/lib/schema/apply-store.js +1083 -0
  96. package/lib/schema/command.js +645 -0
  97. package/lib/schema/dependency-graph.js +83 -0
  98. package/lib/schema/errors.js +481 -0
  99. package/lib/schema/hash.js +9 -0
  100. package/lib/schema/manifest-limits.js +177 -0
  101. package/lib/schema/manifest-loader.js +309 -0
  102. package/lib/schema/manifest-schema-v1.json +193 -0
  103. package/lib/schema/normalize-manifest.js +281 -0
  104. package/lib/schema/page-canvas-foundation.js +447 -0
  105. package/lib/schema/page-data-source-builder.js +561 -0
  106. package/lib/schema/page-foundation.js +556 -0
  107. package/lib/schema/page-source-loader.js +314 -0
  108. package/lib/schema/planner.js +691 -0
  109. package/lib/schema/remote-dispatch-boundary.js +39 -0
  110. package/lib/schema/remote-missing.js +21 -0
  111. package/lib/schema/remote-reader.js +189 -0
  112. package/lib/schema/resource-registry.js +157 -0
  113. package/lib/schema/server-revision.js +71 -0
  114. package/lib/schema/sort.js +28 -0
  115. package/lib/schema/state-store.js +589 -0
  116. package/package.json +10 -8
  117. package/scripts/check-release-risks.js +254 -0
  118. package/scripts/generate-command-docs.js +6 -1
  119. package/scripts/i18n-baseline.json +11 -11
  120. package/scripts/postinstall.js +8 -12
  121. package/scripts/validate-ci.sh +15 -11
  122. package/scripts/validate-i18n.js +30 -9
  123. package/scripts/validate-package-size.js +5 -2
  124. package/scripts/validate-skills.js +4 -0
  125. package/scripts/validate-structure.js +15 -0
  126. package/yida-skills/SKILL.md +117 -30
  127. package/yida-skills/references/schema-as-code-phase1.md +99 -0
  128. package/yida-skills/references/setup-and-env.md +59 -59
  129. package/yida-skills/references/task-retrospective.md +6 -6
  130. package/yida-skills/skills/yida-app/SKILL.md +78 -17
  131. package/yida-skills/skills/yida-canvas-custom-page/SKILL.md +18 -7
  132. package/yida-skills/skills/yida-canvas-custom-page/references/data-bridge-guide.md +3 -3
  133. package/yida-skills/skills/yida-canvas-custom-page/references/page-generation-guide.md +15 -0
  134. package/yida-skills/skills/yida-create-app/SKILL.md +21 -3
  135. package/yida-skills/skills/yida-create-form-page/SKILL.md +19 -1
  136. package/yida-skills/skills/yida-create-page/SKILL.md +16 -3
  137. package/yida-skills/skills/yida-create-process/SKILL.md +100 -4
  138. package/yida-skills/skills/yida-custom-page/SKILL.md +19 -4
  139. package/yida-skills/skills/yida-dashboard/SKILL.md +1 -1
  140. package/yida-skills/skills/yida-dashboard/references/pitfalls.md +1 -1
  141. package/yida-skills/skills/yida-get-schema/SKILL.md +49 -5
  142. package/yida-skills/skills/yida-i18n/SKILL.md +1 -1
  143. package/yida-skills/skills/yida-integration/SKILL.md +7 -1
  144. package/yida-skills/skills/yida-login/SKILL.md +50 -99
  145. package/yida-skills/skills/yida-page-config/SKILL.md +7 -1
  146. package/yida-skills/skills/yida-page-uiux/references/app/blueprint.md +0 -1
  147. package/yida-skills/skills/yida-page-uiux/references/app/navigation-patterns.md +0 -1
  148. package/yida-skills/skills/yida-page-uiux/references/app/role-journey.md +0 -1
  149. package/yida-skills/skills/yida-page-uiux/references/dashboard/app-blueprint.md +0 -1
  150. package/yida-skills/skills/yida-page-uiux/references/dashboard/chart-contracts.md +0 -1
  151. package/yida-skills/skills/yida-page-uiux/references/dashboard/component-contracts.md +0 -1
  152. package/yida-skills/skills/yida-page-uiux/references/dashboard/layout-patterns.md +0 -1
  153. package/yida-skills/skills/yida-page-uiux/references/dashboard/theme-recipes.md +0 -1
  154. package/yida-skills/skills/yida-page-uiux/references/detail/object-narrative.md +0 -1
  155. package/yida-skills/skills/yida-page-uiux/references/detail/section-patterns.md +0 -1
  156. package/yida-skills/skills/yida-page-uiux/references/detail/timeline-and-related.md +0 -1
  157. package/yida-skills/skills/yida-page-uiux/references/landing/assets-workflow.md +0 -1
  158. package/yida-skills/skills/yida-page-uiux/references/landing/industry-playbooks.md +0 -1
  159. package/yida-skills/skills/yida-page-uiux/references/landing/research-levels.md +0 -1
  160. package/yida-skills/skills/yida-page-uiux/references/landing/section-patterns.md +0 -1
  161. package/yida-skills/skills/yida-page-uiux/references/list/drawer-detail.md +0 -1
  162. package/yida-skills/skills/yida-page-uiux/references/list/empty-loading-error.md +0 -1
  163. package/yida-skills/skills/yida-page-uiux/references/list/filter-patterns.md +0 -1
  164. package/yida-skills/skills/yida-page-uiux/references/list/table-patterns.md +0 -1
  165. package/yida-skills/skills/yida-page-uiux/references/scenes/screen.md +0 -1
  166. package/yida-skills/skills/yida-page-uiux/references/workbench/entry-patterns.md +0 -1
  167. package/yida-skills/skills/yida-page-uiux/references/workbench/portal-layouts.md +0 -1
  168. package/yida-skills/skills/yida-page-uiux/references/workbench/task-feed.md +0 -1
  169. package/yida-skills/skills/yida-page-uiux/workflow/output-decision-block.md +1 -1
  170. package/yida-skills/skills/yida-process-rule/SKILL.md +35 -1
  171. package/yida-skills/skills/yida-publish-page/SKILL.md +46 -4
  172. package/yida-skills/skills/yida-report/SKILL.md +9 -235
  173. package/yida-skills/skills/yida-report/references/schema-builder-details.md +239 -0
  174. package/yida-skills/skills/yida-skill-evaluator/SKILL.md +170 -0
  175. package/yida-skills/skills-index.json +238 -54
  176. package/lib/core/locales/ar.js +0 -834
  177. package/lib/core/locales/de.js +0 -834
  178. package/lib/core/locales/es.js +0 -834
  179. package/lib/core/locales/fr.js +0 -834
  180. package/lib/core/locales/hi.js +0 -834
  181. package/lib/core/locales/ja.js +0 -1227
  182. package/lib/core/locales/ko.js +0 -836
  183. package/lib/core/locales/pt.js +0 -834
  184. package/lib/core/locales/vi.js +0 -834
  185. package/lib/core/locales/zh-HK.js +0 -1263
  186. package/project/pages/src/demo-birthday-game.oyd.jsx +0 -832
  187. package/project/pages/src/demo-chip-insight.oyd.jsx +0 -983
  188. package/project/pages/src/demo-compat-smoke.oyd.jsx +0 -58
  189. package/project/pages/src/demo-crm-batch-entry.oyd.jsx +0 -805
  190. package/project/pages/src/demo-crm-dashboard.oyd.jsx +0 -677
  191. package/project/pages/src/demo-future-vision-2026.oyd.jsx +0 -1102
  192. package/project/pages/src/demo-ppt.oyd.jsx +0 -1192
  193. package/project/pages/src/demo-salary-calculator.oyd.jsx +0 -904
  194. package/project/pages/src/openyida-knowledge-doc.oyd.jsx +0 -1714
  195. package/yida-skills/skills/large-file-write/SKILL.md +0 -93
  196. package/yida-skills/skills/large-file-write/references/write-patterns.md +0 -147
  197. package/yida-skills/skills/large-file-write/scripts/write.js +0 -157
  198. package/yida-skills/skills/sls-log-workbench/SKILL.md +0 -134
  199. package/yida-skills/skills/sls-log-workbench/references/workbench-reference.md +0 -130
  200. package/yida-skills/skills/sls-log-workbench/sls-query.js +0 -295
@@ -1,834 +0,0 @@
1
- 'use strict';
2
-
3
- /**
4
- * Paquete de idioma español (Spanish)
5
- */
6
- module.exports = {
7
- // ── bin/yida.js printHelp() ────────────────────────
8
- help: {
9
- subtitle: 'Herramienta de desarrollo IA low-code para Yida',
10
- usage: 'Uso:',
11
- alias: 'Alias:',
12
- group_auth: 'Entorno & Autenticación',
13
- cmd_login: 'Login with OAuth token mode',
14
- cmd_logout: 'Cerrar sesión / cambiar cuenta',
15
- cmd_auth: 'Gestión del estado de sesión',
16
- cmd_org: 'Gestión de organizaciones (listar / cambiar)',
17
- cmd_env: 'Detectar entorno de herramienta IA y estado de sesión',
18
- cmd_env_management: 'Gestionar perfiles de entorno público/privado',
19
- group_app: 'Gestión de aplicaciones',
20
- cmd_app_list: 'Listar mis aplicaciones Yida',
21
- cmd_corp_efficiency: 'Consultar resumen de eficiencia empresarial e informes detallados',
22
- cmd_create_app: 'Crear una aplicación Yida',
23
- cmd_update_app: 'Actualizar información de la aplicación',
24
- cmd_nav_group: 'Gestionar grupos de navegación lateral de la aplicación',
25
- cmd_app_permission: 'Gestionar admins principales, de datos y desarrollo de la app',
26
- cmd_i18n: 'Gestionar textos multilingües e idiomas de la app',
27
- cmd_export: 'Exportar aplicación (paquete de migración)',
28
- cmd_import: 'Importar paquete de migración, reconstruir app',
29
- group_form: 'Formularios & Páginas',
30
- cmd_create_form: 'Crear página de formulario',
31
- cmd_update_form: 'Actualizar página de formulario',
32
- cmd_list_forms: 'Listar formularios/páginas de una app',
33
- cmd_aggregate_table: 'Manage aggregate tables (virtualView)',
34
- cmd_er: 'Export app entity relationship diagram',
35
- cmd_get_schema: 'Obtener Schema del formulario',
36
- cmd_create_page: 'Crear página de visualización personalizada',
37
- cmd_generate_page: 'Generate page from curated template',
38
- cmd_check_page: 'Check custom page standards',
39
- cmd_compile: 'Compilar página personalizada localmente',
40
- cmd_publish: 'Compilar y publicar página personalizada',
41
- cmd_update_form_config: 'Actualizar configuración del formulario',
42
- group_data: 'Datos & Permisos',
43
- cmd_data: 'Gestión unificada de datos (formulario/proceso/tarea/subformulario)',
44
- cmd_task_center: 'Centro de tareas global (pendiente/procesado/CC etc.)',
45
- cmd_basic_info: 'Consultar informacion de organizacion, capacidad, cuotas y dominio',
46
- cmd_get_permission: 'Consultar configuración de permisos',
47
- cmd_save_permission: 'Guardar configuración de permisos',
48
- cmd_corp_manager: 'Gestionar permisos de plataforma',
49
- cmd_agent_center: 'Gestionar delegaciones de proceso y baja',
50
- group_process: 'Procesos',
51
- cmd_configure_process: 'Configurar y publicar reglas de proceso',
52
- cmd_create_process: 'Crear formulario de proceso (todo en uno)',
53
- cmd_ai_form_setting: 'Manage process form AI approval prompts',
54
- cmd_process_preview: 'Vista previa de instancia de proceso (diagrama de flujo)',
55
- group_share: 'Configuración & Compartir página',
56
- cmd_verify_url: 'Verificar URL corta',
57
- cmd_save_share: 'Guardar configuración de acceso público / compartir',
58
- cmd_get_page_config: 'Consultar configuración de acceso público',
59
- cmd_externalize_form: 'Plan external access-safe mirror fields',
60
- group_report: 'Informes',
61
- cmd_create_report: 'Crear informe Yida',
62
- cmd_append_chart: 'Agregar gráfico a informe existente',
63
- group_connector: 'Conectores',
64
- cmd_connector_list: 'Listar conectores HTTP',
65
- cmd_connector_create: 'Crear conector',
66
- cmd_connector_detail: 'Ver detalles del conector',
67
- cmd_connector_delete: 'Eliminar conector',
68
- cmd_connector_add_action: 'Agregar acción',
69
- cmd_connector_list_actions: 'Listar acciones',
70
- cmd_connector_delete_action: 'Eliminar acción',
71
- cmd_connector_test: 'Probar acción',
72
- cmd_connector_list_connections: 'Listar conexiones de autenticación',
73
- cmd_connector_create_connection: 'Crear conexión de autenticación',
74
- cmd_connector_smart: 'Creación inteligente (desde cURL)',
75
- cmd_connector_parse_api: 'Analizar información de API',
76
- cmd_connector_gen_template: 'Generar plantilla de documento API',
77
- cmd_connector_more: 'Ver más subcomandos',
78
- group_integration: 'Integración & DingTalk',
79
- cmd_integration: 'Crear flujo de automatización',
80
- cmd_integration_list: 'Listar flujos de automatización',
81
- cmd_integration_enable: 'Habilitar flujo de automatización',
82
- cmd_integration_disable: 'Deshabilitar flujo de automatización',
83
- cmd_integration_check: 'Check abnormal integration automation run logs',
84
- cmd_dws: 'DingTalk CLI (contactos/calendario/tareas/aprobación etc.)',
85
- cmd_dingtalk_link: 'Generar enlaces DingTalk AppLink / dingtalk:// heredados',
86
- group_utility: 'Utilidades',
87
- cmd_commands: 'Emitir manifiesto de comandos legible por máquina',
88
- cmd_agent_capabilities: 'Emitir snapshot único de capacidades para agentes',
89
- cmd_a2a: 'Iniciar adaptador A2A local de solo lectura o imprimir Agent Card',
90
- cmd_bridge: 'Iniciar servicio local OpenYida web bridge',
91
- cmd_db_seq_fix: 'Detect and repair PostgreSQL sequence drift',
92
- cmd_copy: 'Copiar directorio de trabajo project',
93
- cmd_sample: 'Generar ejemplos/plantillas de código',
94
- cmd_doctor: 'Diagnóstico de entorno y reparación automática',
95
- cmd_update: 'Verificar y actualizar a la última versión',
96
- cmd_export_conversation: 'Exportar registros de conversación IA',
97
- cmd_feedback: 'Configurar formulario de feedback y recordatorios locales',
98
- cmd_batch: 'Ejecutar comandos OpenYida en lote',
99
- cmd_flash_to_prd: 'Convertir notas rápidas o de reunión a prompt PRD',
100
- cmd_ai: 'Call Yida AI text and image recognition APIs',
101
- cmd_asset: 'Detectar capacidad de materiales / verificar URLs de imágenes / resolver assets',
102
- cmd_cdn: 'Gestión de imágenes CDN (config/subir/refrescar)',
103
- cmd_cdn_config: 'Configurar carga CDN / OSS',
104
- cmd_cdn_upload: 'Subir imagen a CDN',
105
- cmd_cdn_refresh: 'Refrescar caché CDN',
106
- quickstart_title: 'Inicio rápido',
107
- quickstart_app_name: 'Gestión de asistencia',
108
- quickstart_form_name: 'Info del empleado',
109
- docs: '📚 Documentación:',
110
- },
111
-
112
- // ── bin/yida.js ────────────────────────────────────
113
- cli: {
114
- integration_help: 'Uso: openyida integration <create|list|enable|disable> ...',
115
- integration_unknown: 'Subcomando integration desconocido: {0}',
116
- integration_help_hint: 'Use openyida integration --help para ver los subcomandos disponibles',
117
- integration_list_usage: 'Uso: openyida integration list <appType> [--form-uuid <uuid>] [--status y|n] [--key <kw>] [--page <n>] [--size <n>] [--json]',
118
- integration_list_example: 'Ejemplo: openyida integration list APP_XXX --form-uuid FORM-XXX --json',
119
- integration_enable_usage: 'Uso: openyida integration enable <appType> <formUuid> <processCode>',
120
- integration_enable_example: 'Ejemplo: openyida integration enable APP_XXX FORM-XXX LPROC-XXX',
121
- integration_disable_usage: 'Uso: openyida integration disable <appType> <formUuid> <processCode>',
122
- integration_disable_example: 'Ejemplo: openyida integration disable APP_XXX FORM-XXX LPROC-XXX',
123
- compile_usage: 'Uso: openyida compile <sourceFile>',
124
- compile_example: 'Ejemplo: openyida compile pages/src/home.canvas.jsx',
125
- check_page_usage: 'Usage: openyida check-page <sourceFile> [--compat] [--json]',
126
- check_page_example: 'Example: openyida check-page pages/src/home.canvas.jsx --json',
127
- generate_page_usage: 'Usage: openyida generate-page <template> --output pages/src/home.canvas.jsx [--spec .cache/openyida/page-specs/home.json] [--theme-scope page|app] [--compile]',
128
- generate_page_example: 'Example: openyida generate-page product-homepage --brand-name OpenKuma --brand-initials OK --theme-scope page --output pages/src/home.canvas.jsx --compile',
129
- },
130
-
131
- // ── lib/integration/integration-check.js ─────────
132
- integration_check: {
133
- result_sheet: 'Result',
134
- header_app: 'App',
135
- header_form_title: 'Form name',
136
- header_form_uuid: 'Form ID',
137
- header_flow_name: 'Automation name',
138
- header_process_code: 'Automation ID',
139
- header_flow_status: 'Automation status',
140
- header_event_name: 'Trigger event',
141
- header_last_action: 'Last action',
142
- header_modifier: 'Modifier',
143
- header_modified_time: 'Modified time',
144
- header_abnormal_log_count: 'Abnormal log count',
145
- header_proc_inst_id: 'Run instance ID',
146
- header_form_inst_id: 'Form instance ID',
147
- header_execution_status: 'Execution status',
148
- header_exception: 'Exception',
149
- header_diagnosis: 'Diagnosis',
150
- header_recommendation: 'Recommendation',
151
- header_start_time: 'Start time',
152
- header_finish_time: 'Finish time',
153
- header_elapsed_ms: 'Elapsed (ms)',
154
- no_abnormal: 'No abnormal execution logs found',
155
- app_failed: 'App check failed: {0}',
156
- summary: 'Check complete: {0} apps, {1} automations, {2} with abnormal logs',
157
- apps_failed: '{0} app(s) failed to check. See JSON output or error summary for details.',
158
- no_logs: 'No abnormal execution logs found.',
159
- usage: 'openyida integration check <appType...> [--json] [--output result.xlsx] [--no-progress] [--flow-types 1,2,3,5,6] [--log-page-size 10] [--max-log-pages 1]',
160
- example: 'openyida integration check APP_XXX --output project/output/automation-errors.xlsx',
161
- missing_app: 'Missing appType. Usage: openyida integration check <appType...>',
162
- banner_title: 'Check integration automation abnormal logs',
163
- status_filter: 'Execution status filter: {0}',
164
- checking_app: 'Checking app: {0}',
165
- progress: 'Progress {0}{1}',
166
- current: ', current: {0}',
167
- excel_exported: 'Excel exported: {0}',
168
- },
169
-
170
- // ── lib/env.js ─────────────────────────────────────
171
- env: {
172
- title: ' openyida env - Detección del entorno de herramienta IA',
173
- detecting: ' Detectando entorno de herramienta IA...',
174
- tool_label: ' Herramienta IA: {0}',
175
- login_label: ' Estado de sesión: {0}',
176
- logged_in: 'Conectado',
177
- not_logged_in: 'No conectado',
178
- corp_label: ' Organización: {0}',
179
- version_label: ' Versión: {0}',
180
- },
181
-
182
- // ── lib/auth/token-auth.js ────────────────────────────────────
183
- login: {
184
- title: '🔐 Inicio de sesión en Yida',
185
- cache_found: ' Credenciales en caché encontradas, validando...',
186
- cache_valid: '✅ Las credenciales en caché son válidas!',
187
- cache_invalid: ' Las credenciales en caché han expirado. Se requiere volver a iniciar sesión.',
188
- starting_qr: ' Iniciando sesión con código QR...',
189
- success: '✅ ¡Inicio de sesión exitoso!',
190
- failed: '❌ Error al iniciar sesión: {0}',
191
- usage: 'Uso: openyida login',
192
- },
193
-
194
- // ── lib/logout.js ───────────────────────────────────
195
- logout: {
196
- title: '🚪 Cierre de sesión de Yida',
197
- success: '✅ ¡Sesión cerrada exitosamente! Las credenciales han sido eliminadas.',
198
- no_cache: ' No se encontraron credenciales. Ya está desconectado.',
199
- failed: '❌ Error al cerrar sesión: {0}',
200
- },
201
-
202
- // ── lib/create-app.js ───────────────────────────────
203
- create_app: {
204
- usage: 'Uso: openyida create-app "<nombre de la app>" o openyida create-app --name "<nombre de la app>" [--desc "..."] [--theme deepBlue]',
205
- example: 'Ejemplo: openyida create-app --name "Mi App" --desc "Descripcion de la app" --theme deepBlue',
206
- title: ' create-app - Herramienta de creación de aplicaciones Yida',
207
- app_name: '\n Nombre de la app: {0}',
208
- app_desc: ' Descripción: {0}',
209
- app_icon: ' Icono: {0} ({1})',
210
- app_theme: ' Tema: colour={0} navTheme={1} layout={2}',
211
- step_create: '\n🚀 Creando la aplicación...',
212
- sending_request: ' Enviando solicitud createApp...',
213
- success: ' ✅ ¡Aplicación creada exitosamente!',
214
- app_id: ' ID de la app: {0}',
215
- failed: ' ❌ Error al crear: {0}',
216
- error: '\n❌ Error de creación: {0}',
217
- },
218
-
219
- // ── lib/create-form.js ──────────────────────────────
220
- create_form: {
221
- usage: 'Uso: openyida create-form <appType> <nombre de página> [JSON del esquema]',
222
- title: ' create-form - Herramienta de creación/actualización de formularios Yida',
223
- app_id: '\n ID de la app: {0}',
224
- page_name: ' Nombre de página: {0}',
225
- step_create: '\n📝 Creando página de formulario...',
226
- sending_request: ' Enviando solicitud saveFormSchema...',
227
- success: ' ✅ ¡Página de formulario creada exitosamente!',
228
- form_uuid: ' UUID del formulario: {0}',
229
- failed: ' ❌ Error al crear: {0}',
230
- error: '\n❌ Error de creación: {0}',
231
- step_check_data: '\n🔍 Paso {0}: Verificar si el formulario tiene datos existentes',
232
- data_exists_warning: ' ⚠️ ¡Este formulario ya tiene {0} registros! Modificar la estructura puede causar:',
233
- data_exists_impact: ' - Pérdida o corrupción de datos históricos\n - Anomalías en el estado del proceso\n - Inconsistencia de datos',
234
- data_exists_abort: ' ❌ Modificación cancelada. Agregue --force para continuar.',
235
- data_exists_confirm_message: 'Este formulario tiene {0} registros existentes. Modificar la estructura puede afectar los datos existentes. Agregue --force para confirmar.',
236
- data_exists_force_hint: 'Uso: openyida create-form update <appType> <formUuid> <changesJson> --force',
237
- data_exists_force_proceed: ' ⚠️ Modo --force: omitiendo confirmación, modificación forzada de la estructura con {0} registros existentes',
238
- data_check_empty: ' ✅ El formulario no tiene datos, es seguro modificar',
239
- data_check_failed: ' ⚠️ Verificación de datos fallida, continuando con la modificación',
240
- },
241
-
242
- // ── lib/create-page.js ──────────────────────────────
243
- create_page: {
244
- usage: 'Uso: openyida create-page <appType> <nombre de página> [--mode dashboard]',
245
- example: 'Ejemplo: openyida create-page APP_XXX "Dashboard" --mode dashboard',
246
- title: ' create-page - Herramienta de creación de páginas personalizadas Yida',
247
- app_id: '\n ID de la app: {0}',
248
- page_name: ' Nombre de página: {0}',
249
- step_create: '\n📄 Creando página personalizada...',
250
- success: ' ✅ ¡Página personalizada creada exitosamente!',
251
- step_dashboard_config: '\n🖥️ Step 3: Configure dashboard fullscreen mode',
252
- dashboard_config_ok: ' ✅ Dashboard mode configured: top nav hidden, chromeless custom URL enabled',
253
- dashboard_config_failed: ' ⚠️ Dashboard mode config failed: {0}',
254
- err_mode_invalid: 'Unsupported page mode: {0}',
255
- mode_hint: 'Available modes: default, dashboard',
256
- form_uuid: ' UUID de la página: {0}',
257
- failed: ' ❌ Error al crear: {0}',
258
- error: '\n❌ Error de creación: {0}',
259
- },
260
-
261
- // ── lib/get-schema.js ───────────────────────────────
262
- get_schema: {
263
- usage: 'Uso: openyida get-schema <appType> <formUuid>',
264
- title: ' get-schema - Herramienta de obtención de esquema Yida',
265
- app_id: '\n ID de la app: {0}',
266
- form_uuid: ' UUID del formulario: {0}',
267
- step_get: '\n📋 Obteniendo esquema del formulario...',
268
- success: ' ✅ ¡Esquema obtenido exitosamente!',
269
- failed: ' ❌ Error al obtener: {0}',
270
- error: '\n❌ Error de obtención: {0}',
271
- },
272
-
273
- // ── lib/check-update.js ─────────────────────────────
274
- check_update: {
275
- new_version: '\n🎉 Nueva versión disponible: {0} → {1}',
276
- update_cmd: ' Actualizar: npm install -g openyida',
277
- check_failed: 'Error al verificar versión: {0}',
278
- },
279
-
280
- // ── lib/update.js ──────────────────────────────────
281
- update: {
282
- checking: 'Comprobando la última versión...',
283
- fetch_failed: 'No se pudo obtener la última versión. Verifique su conexión de red',
284
- already_latest: 'Ya está actualizado ({0}), no se necesita actualización',
285
- found_new_version: 'Nueva versión disponible: {0} (actual: {1})',
286
- installing: 'Instalando openyida@latest...',
287
- success: '¡Actualización exitosa! Versión actual: {0}',
288
- install_failed: 'Error en la actualización: {0}',
289
- manual_hint: 'Intente manualmente: npm install -g openyida@latest',
290
- available: 'actualización disponible',
291
- up_to_date: 'actualizado',
292
- label_install: 'Install',
293
- label_channel: 'Channel',
294
- label_version: 'Version',
295
- label_update: 'Update',
296
- done: '¡Actualización completada!',
297
- done_hint: 'Ejecute openyida --version para confirmar la nueva versión',
298
- },
299
-
300
- // ── lib/export-app.js ───────────────────────────────
301
- export_app: {
302
- usage: 'Uso: openyida export-app <appType>',
303
- title: ' export-app - Herramienta de exportación de aplicaciones Yida',
304
- app_id: '\n ID de la app: {0}',
305
- step_export: '\n📦 Exportando aplicación...',
306
- success: ' ✅ ¡Aplicación exportada exitosamente!',
307
- failed: ' ❌ Error al exportar: {0}',
308
- error: '\n❌ Error de exportación: {0}',
309
- },
310
-
311
- // ── lib/import-app.js ───────────────────────────────
312
- import_app: {
313
- usage: 'Uso: openyida import-app <ruta del archivo>',
314
- title: ' import-app - Herramienta de importación de aplicaciones Yida',
315
- file_path: '\n Ruta del archivo: {0}',
316
- step_import: '\n📥 Importando aplicación...',
317
- success: ' ✅ ¡Aplicación importada exitosamente!',
318
- failed: ' ❌ Error al importar: {0}',
319
- error: '\n❌ Error de importación: {0}',
320
- },
321
-
322
- // ── lib/get-page-config.js ──────────────────────────
323
- get_page_config: {
324
- usage: 'Uso: openyida get-page-config <appType> <formUuid>',
325
- title: ' get-page-config - Herramienta de obtención de configuración de página Yida',
326
- app_id: '\n ID de la app: {0}',
327
- form_uuid: ' UUID del formulario: {0}',
328
- step_get: '\n🔍 Obteniendo configuración de página...',
329
- success: ' ✅ ¡Configuración obtenida exitosamente!',
330
- failed: ' ❌ Error al obtener: {0}',
331
- error: '\n❌ Error de obtención: {0}',
332
- },
333
-
334
- // ── lib/save-share-config.js ────────────────────────
335
- save_share_config: {
336
- usage: 'Uso: openyida save-share-config <appType> <formUuid> <openUrl> <isOpen> [openAuth]',
337
- title: ' save-share-config - Herramienta de guardado de configuración de acceso público Yida',
338
- app_id: '\n ID de la app: {0}',
339
- form_uuid: ' UUID del formulario: {0}',
340
- open_url: ' URL pública: {0}',
341
- is_open: ' Acceso público: {0}',
342
- open_auth: ' Auth requerida: {0}',
343
- step_validate: '\n📋 Step 0: Validar parámetros',
344
- validate_ok: ' ✅ Validación exitosa',
345
- validate_failed: ' ❌ Validación fallida: {0}',
346
- step_save: '\n💾 Step 2: Guardar configuración de acceso público',
347
- sending_request: ' Enviando solicitud saveShareConfig...',
348
- save_ok: ' ✅ ¡Configuración guardada exitosamente!',
349
- save_ok_msg: 'Configuración de acceso público guardada',
350
- save_failed: ' ❌ Error al guardar: {0}',
351
- save_failed_msg: 'Error al guardar',
352
- err_is_open_invalid: 'isOpen debe ser y o n. Valor actual: {0}',
353
- err_open_auth_invalid: 'openAuth debe ser y o n. Valor actual: {0}',
354
- err_open_url_required: 'openUrl es requerido para habilitar el acceso público',
355
- err_open_url_prefix: 'openUrl debe comenzar con /o/. Valor actual: {0}',
356
- err_open_url_chars: 'La ruta openUrl solo admite a-z A-Z 0-9 _ - y / como separador de segmentos. Valor actual: {0}',
357
- err_open_url_empty: 'La ruta openUrl no puede estar vacía: {0}',
358
- },
359
-
360
- // ── lib/update-form-config.js ──────────────────────
361
- update_form_config: {
362
- usage: 'Uso: openyida update-form-config <appType> <formUuid> <isRenderNav> <title>',
363
- title: ' update-form-config - Herramienta de actualización de configuración de formulario Yida',
364
- app_id: '\n ID de la app: {0}',
365
- form_uuid: ' UUID del formulario: {0}',
366
- is_render_nav: ' Mostrar nav: {0}',
367
- page_title: ' Título de página: {0}',
368
- step_update: '\n💾 Step 2: Actualizar configuración del formulario',
369
- sending_request: ' Enviando solicitud updateFormSchemaInfo...',
370
- update_ok: ' ✅ ¡Configuración actualizada exitosamente!',
371
- nav_shown: 'Navegación superior mostrada',
372
- nav_hidden: 'Navegación superior oculta',
373
- update_failed: ' ❌ Error al actualizar: {0}',
374
- update_failed_msg: 'Error al actualizar',
375
- },
376
-
377
- // ── lib/verify-short-url.js ────────────────────────
378
- verify_short_url: {
379
- usage: 'Uso: openyida verify-short-url <appType> <formUuid> <url>',
380
- title: ' verify-short-url - Herramienta de verificación de URL Yida',
381
- app_id: '\n ID de la app: {0}',
382
- form_uuid: ' UUID del formulario: {0}',
383
- step_validate: '\n📋 Step 0: Validar formato de URL',
384
- validate_ok: ' ✅ Formato validado',
385
- validate_failed: ' ❌ Validación fallida: {0}',
386
- step_verify: '\n🔍 Step 2: Verificar URL',
387
- sending_request: ' Enviando solicitud verifyShortUrl...',
388
- url_available: ' ✅ ¡La URL está disponible!',
389
- open_available_msg: 'Esta URL de acceso público está disponible',
390
- share_available_msg: 'Esta URL de compartición interna está disponible',
391
- url_taken: ' ❌ La URL ya está en uso',
392
- url_taken_msg: 'Esta URL corta ya está tomada',
393
- verify_failed: ' ❌ Error en la solicitud de verificación',
394
- err_url_prefix: 'La URL debe comenzar con /o/ o /s/. Valor actual: {0}',
395
- err_url_chars: 'La ruta URL solo admite a-z A-Z 0-9 _ - y / como separador de segmentos. Valor actual: {0}',
396
- err_url_empty: 'La ruta URL no puede estar vacía: {0}',
397
- },
398
-
399
- // ── lib/copy.js ────────────────────────────────────
400
- copy: {
401
- title: ' openyida copy - Inicializar directorio de trabajo Yida',
402
- package_root: '\n📦 Raíz del paquete: {0}',
403
- dest_root: '🤖 Directorio destino: {0}',
404
- dest_empty_flatten: '📂 El directorio destino está vacío, los contenidos de project/ se copiarán directamente (sin crear subdirectorio project/)',
405
- force_mode: '⚠️ Modo --force: el directorio destino será vaciado antes de copiar',
406
- no_package: '\n❌ Directorio del paquete openyida no encontrado',
407
- no_package_hint1: ' Asegúrese de que openyida esté instalado globalmente:',
408
- no_package_hint2: ' npm install -g openyida',
409
- no_active_tool: '\n❌ No se detectó ningún entorno de herramienta IA activo',
410
- supported_tools: ' Herramientas soportadas: Wukong, Codex, OpenCode, Claude Code, Aone Copilot, Cursor, Qoder',
411
- current_result: '\n Resultados de detección actuales:',
412
- force_hint: '\n Para forzar la copia al directorio actual:\n openyida copy --force',
413
- force_cmd: ' openyida copy --force',
414
- copying_label: '\n📂 Copiando {0}...',
415
- creating_symlink: '\n📂 Creando enlace simbólico yida-skills/...',
416
- file_copied: ' Copiado: {0}',
417
- cleared: ' 🗑️ Vaciado: {0}',
418
- symlink_removed: ' 🗑️ Enlace simbólico antiguo eliminado: {0}',
419
- dir_deleted: ' 🗑️ Directorio eliminado: {0}',
420
- removed: ' 🗑️ Eliminado: {0}',
421
- symlink_created: ' 🔗 Enlace simbólico: {0} -> {1}',
422
- symlink_label: 'enlace simbólico',
423
- done: '✅ ¡Completado!',
424
- files_copied: ' Archivos copiados: {0}',
425
- files_count: '{0} archivos',
426
- symlinks_created: ' Enlaces simbólicos creados: {0}',
427
- result_symlink: ' {0} → {1} (enlace simbólico)',
428
- result_copy: ' {0} → {1} ({2} archivos)',
429
- wukong_skills_cleanup: '\n🗑️ Entorno Wukong: Limpiando enlace simbólico yida-skills/...',
430
- wukong_skills_cleaned: 'limpiado',
431
- wukong_skills_not_found: ' ℹ️ No se encontró enlace simbólico o directorio yida-skills/: {0}',
432
- remove_failed: ' ❌ Error al eliminar: {0} ({1})',
433
- symlink_fallback_copy: ' ⚠️ Creación de enlace simbólico Windows fallida (requiere permisos de admin), usando copia de directorio: {0}',
434
- symlink_failed: ' ❌ Error al crear enlace simbólico: {0} ({1})',
435
- },
436
-
437
- // ── lib/publish.js ─────────────────────────────────
438
- generate_page: {
439
- spec_not_found: 'Spec file not found: {0}',
440
- spec_invalid: 'Failed to parse spec JSON: {0}',
441
- unknown_template: 'Unknown page template: {0}',
442
- available_templates: 'Available templates: {0}',
443
- template_not_found: 'Template file not found: {0}',
444
- done: 'Page generated: {0}',
445
- hint: 'Next run openyida compile <file>, or pass --compile to compile immediately.',
446
- success: 'Page generation complete',
447
- },
448
- page_size: {
449
- large_source: 'Fuente de página grande detectada: {0} ({1}, unas {2} líneas)',
450
- long_line_hint: 'Se detectó una línea muy larga (unas {0} letras), normalmente vendor minificado o base64; muévala fuera del código de página.',
451
- base64_hint: 'Se detectó contenido base64 inline largo; súbalo a CDN/OSS y use una URL.',
452
- memory_hint: 'publish/compile conserva en memoria la fuente, el build, el minificado y copias del schema; separe vendor/base64 o cargue con this.utils.loadScript.',
453
- windows_hint: 'En Windows no escriba JSX grande con PowerShell Get-Content -Raw + ConvertTo-Json; use Node fs.writeFileSync/appendFileSync por partes.',
454
- },
455
- publish: {
456
- title: ' yida-publish - Herramienta de publicación de páginas Yida',
457
- platform: ' Plataforma: {0}',
458
- app_id: ' ID de la app: {0}',
459
- form_uuid: ' ID del formulario: {0}',
460
- source_file: ' Fuente: {0}',
461
- compiled_file: ' Salida: {0}',
462
- step_lint: '\n🔍 Step 0: Pre-verificación de estándares de código Yida\n',
463
- lint_title: '⚠️ Yida page code check:',
464
- lint_error_line: ' ❌ Línea {0}: {1}',
465
- lint_warning_line: ' ⚠️ Línea {0}: {1}',
466
- lint_event_function: 'El enlace de evento usa function, use función flecha (e) => { this.xxx() }',
467
- lint_missing_render_jsx: 'Falta export function renderJsx(); las páginas personalizadas de Yida deben exportar renderJsx',
468
- lint_import_require: 'Se encontró import/require. Las páginas personalizadas de Yida no pueden importar módulos; cargue scripts de terceros con this.utils.loadScript',
469
- lint_react_hooks: 'Se encontraron React Hooks. El runtime de Yida usa el estilo de componentes de clase de React 16 y no admite useState/useEffect',
470
- lint_export_default: 'Se encontró export default. Yida necesita exports con nombre, como export function renderJsx/didMount',
471
- lint_jsx_extension: 'Este archivo .js contiene JSX; prefiera .jsx para los archivos fuente. La salida compilada sigue siendo .js',
472
- lint_event_direct_method: 'El enlace de evento pasa this.xxx directamente y perderá this; use (e) => { this.xxx(e); }',
473
- lint_event_bind_this: 'El enlace de evento usa .bind(this); use (e) => { this.xxx(e); } en su lugar',
474
- lint_lifecycle_case: 'Se detectó el export de ciclo de vida {0}; Yida solo reconoce {1} (distingue mayúsculas y minúsculas)',
475
- lint_react_lifecycle_method: 'Se detectó el ciclo de vida React {0}; exporte {1} para páginas personalizadas de Yida',
476
- lint_event_lowercase: 'Se detectó la prop de evento en minúsculas {0}; React/Yida no la enlazará. Use {1}',
477
- lint_event_call_result: 'El enlace de evento invoca una función o no es un manejador de expresión; use (e) => { self.xxx(e); }',
478
- lint_event_noop_arrow: 'La función flecha del evento referencia un manejador sin llamarlo; use (e) => { self.xxx(e); }',
479
- lint_button_missing_handler: 'Un <button> visible no tiene onClick/onMouseDown/onKeyDown ni estado disabled; enlace un manejador de evento o use span/div para etiquetas estáticas',
480
- lint_array_callback_function: '.{0}(function ...) puede perder this en callbacks; use .{0}((item) => ...) en su lugar',
481
- lint_foreach_callback_function: '.forEach(function ...) puede perder this en callbacks; prefiera .forEach((item) => ...)',
482
- lint_controlled_input: 'input usa el modo controlado con value. Las páginas de Yida deben usar defaultValue + onChange para actualizar _customState',
483
- lint_native_select_ui: 'Se encontró un <select> nativo. En páginas personalizadas normales use un desplegable button+menu+option con flecha, marcador seleccionado y reset de foco; no renderice un SelectField de formulario directamente como filtro de página.',
484
- lint_iframe_self_navigation: 'Las páginas personalizadas de Yida se ejecutan en un iframe. Use target="_top"/target="_blank" o window.top.location para navegar a páginas de Yida y evitar páginas anidadas.',
485
- lint_page_size_limit: 'pageSize={0} supera el límite de la API de Yida de 100; use 100 o menos',
486
- lint_page_size_recommend: 'pageSize={0} es grande; el valor recomendado es 50 (mejor rendimiento, máximo 100). Prefiera 10/20/50',
487
- lint_searchformdata_http_post: 'Una llamada directa a searchFormDatas.json debe usar GET + parámetros de query (coloque formUuid/appType en la query de la URL). Usar POST con formUuid en el body provoca «参数校验失败formUuid» y los paneles/listas muestran ceros',
488
- lint_searchformdata_http_pagenumber: 'searchFormDatas.json pagina con currentPage (no pageNumber); usar pageNumber rompe la paginación',
489
- lint_searchformdata_http_unwrap: 'La respuesta del navegador de searchFormDatas.json anida la lista en content.data ({ content: { data: [...] } }); leer solo json.data devuelve 0 filas: desempaquete con (json.content && json.content.data)',
490
- lint_setstate_non_timestamp: 'this.setState escribe un campo distinto de timestamp. El estado de negocio de una página personalizada debe vivir en _customState y actualizarse con forceUpdate()/setCustomState(); this.setState solo debe llevar el campo contractual timestamp',
491
- lint_self_binding_missing: 'renderJsx usa this sin declarar var self = this;. Agregue var self = this; al inicio de renderJsx y use self dentro de closures/callbacks para evitar perder this',
492
- lint_echarts_dom_ready: 'echarts.init no está envuelto en setTimeout; puede que el contenedor aún no esté montado y el gráfico no se renderice. Use setTimeout(function(){ /* echarts.init */ }, 300)',
493
- lint_yida_api_catch: 'La llamada API this.utils.yida no tiene un .catch() detectado; agregue manejo de errores y muestre un toast al usuario',
494
- lint_echarts_legacy_map_china: 'ECharts 5 ya no admite echarts/map/js/china.js. Cargue el GeoJSON de DataV y llame a echarts.registerMap("china", geoJson) en su lugar',
495
- lint_echarts_rich_label_formatter: 'Las plantillas rich text devueltas por ECharts label.formatter son inestables en páginas personalizadas de Yida; prefiera cadenas formatter simples o texto de etiqueta precalculado',
496
- lint_const_let: 'Usa declaración const/let, se recomienda cambiar a var (compatibilidad del entorno Yida)',
497
- lint_computed_property: 'Usa nombre de propiedad calculada ES6 { [key]: value }, no soportado por el motor JS de Yida, causa fallo silencioso. Use var obj = {}; obj[key] = value;',
498
- lint_pad_method: 'Usa String.{0}(), no soportado por el motor JS de Yida, causa interrupción silenciosa de callbacks Promise. Use operador ternario: x < 10 ? "0" + x : "" + x',
499
- lint_large_then_callback: 'El callback de Promise .then() es demasiado grande ({0} líneas, máximo recomendado {1} líneas), puede causar truncamiento silencioso. Extraiga la lógica a una función export separada',
500
- lint_fix_errors: '❌ Por favor corrija los errores anteriores antes de publicar',
501
- lint_skip_hint: '💡 Agregue --skip-lint para omitir la verificación',
502
- lint_passed: ' ✅ Verificación de código aprobada\n',
503
- lint_skipped: '\n⏭️ Pre-verificación de código omitida (--skip-lint)\n',
504
- duplicate_source_mismatch: ' ⚠️ Found another copy with the same file name but different content. Publishing: {0}; other copy: {1}',
505
- data_source_fetching: ' Reading existing page data sources...',
506
- data_source_preserved: ' ✅ Preserved existing page data sources: {0}',
507
- data_source_none: ' No custom page data sources to preserve',
508
- data_source_fetch_failed: 'Could not read the existing page Schema, so publishing stopped to avoid clearing existing data sources: {0}',
509
- target_checking: ' Checking publish target type...',
510
- target_check_forced: ' ⚠️ Skipped publish target type check (--force)',
511
- target_check_ok: ' ✅ Publish target confirmed: {0} ({1})',
512
- target_check_failed: 'Could not verify publish target: {0}',
513
- target_not_found: 'Publish target was not found in app navigation: {0}',
514
- target_type_invalid: 'Publish target is not a custom display page: {0} current type is {1}',
515
- 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.',
516
- target_list_hint: 'Run openyida list-forms {0} --keyword <page name>, then choose a custom page formUuid with formType=display.',
517
- 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.',
518
- step_compile: '\n📦 Step 1: Compilar fuente y construir esquema\n',
519
- reading_source: '[1/4] Leyendo fuente {0}...',
520
- compiling: '[2/4] Compilando {0} con Babel...',
521
- compile_failed: ' ❌ Error de compilación: {0}',
522
- compile_location: '\n Ubicación: línea {0}, columna {1}',
523
- compile_error_code: ' Código de error: {0}',
524
- minifying: '[3/4] Minificando con UglifyJS → {0}...',
525
- minify_failed: ' Error de minificación: {0}',
526
- compile_done: ' ✅ Compilación completada: {0}',
527
- building_schema: '[4/4] Construyendo esquema...',
528
- formula_prefix_fixed: ' 🔧 {0} referencia(s) de prefijo de fórmula de subtabla corregida(s) automáticamente',
529
- schema_built: ' ✅ ¡Esquema construido exitosamente!',
530
- step_canvas_compile: '\n📦 Step 1: Compilar fuente de Code Canvas\n',
531
- canvas_compiling: ' 🎨 Compilando la fuente de Code Canvas localmente...',
532
- canvas_compile_done: ' ✅ ¡Code Canvas compilado!',
533
- canvas_compile_failed: ' ❌ Error al compilar Code Canvas: {0}',
534
- step_login: '\n🔑 Step 2: Leer credenciales de sesión',
535
- step_publish: '\n📤 Step 3: Publicar esquema\n',
536
- publish_failed: '\n❌ Error al publicar: {0}',
537
- schema_published: ' ✅ ¡Esquema publicado exitosamente!',
538
- step_config: '\n⚙️ Step 4: Actualizar configuración del formulario\n',
539
- success: ' ✅ ¡Publicado exitosamente!',
540
- config_failed: ' ⚠️ Error al actualizar configuración: {0}',
541
- schema_ok_config_failed: 'Schema published, but config update failed',
542
- step_health_check: '\n🩺 Step 5: Health check published page\n',
543
- health_check_ok: ' ✅ Health check passed: HTTP {0}',
544
- health_check_failed: ' ⚠️ Health check failed: HTTP {0} {1}',
545
- exception: '\n❌ Error de publicación: {0}',
546
- source_not_found: '❌ Archivo fuente no encontrado: {0}',
547
- usage: 'Uso: openyida publish <archivoFuente> <appType> <formUuid> [--health-check] [--canvas]',
548
- example: 'Ejemplo: openyida publish pages/src/xxx.js APP_XXX FORM-XXX --health-check',
549
- },
550
-
551
- // ── token-only disabled QR login ────────────────────────────────
552
- qr_login: {
553
- title: '🔐 Inicio de sesión Yida con código QR en terminal',
554
- step_init: ' Step 1: Inicializando sesión...',
555
- step_get_qr: ' Step 2: Obteniendo código QR...',
556
- scan_hint: ' 📱 Escanee el código QR a continuación con DingTalk:',
557
- browser_alternative: ' 💡 If this is not a cloud/remote machine, use browser login instead; if QR scan fails, try: {0}',
558
- qr_url_label: ' URL del código QR: {0}',
559
- waiting_scan: ' ⏳ Esperando escaneo (hasta 2 minutos)...',
560
- scanned_confirm: ' ✅ ¡Código QR escaneado! Por favor confirme el inicio de sesión en su teléfono...',
561
- scan_success: ' ✅ ¡Escaneo confirmado!',
562
- step_exchange: ' Step 4: Intercambiando credenciales...',
563
- step_get_corps: ' Step 5: Obteniendo lista de organizaciones...',
564
- step_switch_corp: ' Step 7: Cambiando a la organización seleccionada...',
565
- only_one_corp: ' ✅ Una organización detectada: {0}, seleccionada automáticamente',
566
- select_corp_prompt: ' 🏢 Se encontraron múltiples organizaciones, por favor seleccione una:',
567
- select_corp_input: ' Ingrese el número (1-{0}): ',
568
- select_corp_invalid: ' ❌ Entrada inválida, ingrese un número entre 1 y {0}',
569
- target_corp_not_found: 'El corpId especificado no se encontró en las organizaciones accesibles: {0}',
570
- corp_selected: ' ✅ Organización seleccionada: {0}',
571
- login_success: '✅ ¡Inicio de sesión exitoso!',
572
- qrcode_fallback: ' ⚠️ Paquete qrcode no instalado, visite la URL a continuación manualmente:',
573
- qrcode_render_failed: ' ⚠️ Error al renderizar código QR ({0}), visite la URL a continuación:',
574
- qr_expired: 'Código QR expirado, por favor inicie sesión nuevamente',
575
- poll_timeout: 'Tiempo de espera de escaneo agotado (2 minutos), por favor inicie sesión nuevamente',
576
- no_corp_available: 'No se encontraron organizaciones accesibles',
577
- no_csrf_in_cookie: 'Inicio de sesión exitoso pero csrf_token no encontrado, intente nuevamente',
578
- stdin_closed: 'Flujo de entrada cerrado, no se puede seleccionar organización',
579
- },
580
-
581
- // ── scripts/postinstall.js ─────────────────────────
582
- postinstall: {
583
- welcome_title: ' 🎉 ¡Bienvenido a OpenYida! ',
584
- install_success: ' ✅ ¡Instalación completada! {0} La herramienta de desarrollo IA Yida está lista.',
585
- update_success: ' ✅ ¡Actualización completada! {0} OpenYida ha sido actualizado a la última versión.',
586
- ai_mode_title: ' 🚀 Modo de conversación IA',
587
- ai_mode_desc: ' En Codex / Claude Code / Aone Copilot / Cursor, chatea directamente:',
588
- prompt1: ' 📋 "Crea un sistema de gestión de asistencia con Yida"',
589
- prompt2: ' 💰 "Construye una app de calculadora de salario personal"',
590
- prompt3: ' 🏢 "Crea un sistema CRM de gestión de clientes"',
591
- prompt4: ' 🎂 "Haz una mini-app de felicitaciones de cumpleaños"',
592
- steps_title: ' 📖 Primeros pasos',
593
- step1: ' {0}Step 1{1} Abre tu herramienta IA (Codex / Claude Code / Cursor, etc.)',
594
- step2: ' {0}Step 2{1} Describe la app que deseas en lenguaje natural',
595
- step3: ' {0}Step 3{1} La IA ejecuta automáticamente los comandos openyida',
596
- step4: ' {0}Step 4{1} Obtén el enlace de tu app Yida 🎉',
597
- commands_title: ' ⚡ Comandos rápidos',
598
- cmd_env: ' {0}openyida env{1} {2}# Detectar entorno de herramienta IA y estado de sesión{3}',
599
- cmd_login: ' {0}openyida login{1} {2}# Iniciar sesión en Yida{3}',
600
- cmd_help: ' {0}openyida --help{1} {2}# Ver todos los comandos{3}',
601
- footer1: ' 📚 Documentación: https://github.com/openyida/openyida',
602
- footer2: ' 💬 Comunidad: Únete a la comunidad OpenYida en DingTalk',
603
- },
604
-
605
- // ── lib/cdn-*.js ───────────────────────────────────
606
- cdn: {
607
- config_load_error: 'Error al cargar configuración CDN: {0}',
608
- config_saved: '✅ Configuración CDN guardada en: {0}',
609
- config_usage: 'Uso: openyida cdn-config [opciones]',
610
- config_file_path: '📄 Archivo de configuración: {0}',
611
- config_section_aliyun: '🔐 Credenciales de Alibaba Cloud',
612
- config_section_cdn: '🌐 Configuración CDN',
613
- config_section_oss: '📦 Configuración OSS',
614
- config_section_upload: '📤 Configuración de carga',
615
- config_cdn_domain: 'Dominio CDN',
616
- config_oss_region: 'Región OSS',
617
- config_oss_bucket: 'Bucket OSS',
618
- config_oss_endpoint: 'Endpoint OSS',
619
- config_upload_path: 'Ruta de carga',
620
- config_compress: 'Compresión de imagen',
621
- config_max_width: 'Ancho máximo',
622
- config_quality: 'Calidad de imagen',
623
- config_not_set: 'No configurado',
624
- config_enabled: 'Habilitado',
625
- config_disabled: 'Deshabilitado',
626
- config_status_valid: '✅ Configuración completa, lista para usar',
627
- config_status_invalid: '⚠️ Configuración incompleta',
628
- config_missing: ' Campos faltantes: {0}',
629
- config_updated: '✅ ¡Configuración actualizada!',
630
- config_init_title: '🔧 Asistente de inicialización CDN',
631
- config_init_desc: 'Para usar la carga de imágenes CDN, configure lo siguiente:',
632
- upload_no_files: '❌ Por favor especifique archivos de imagen para cargar',
633
- config_incomplete: '❌ Configuración CDN incompleta',
634
- missing_fields: ' Campos faltantes: {0}',
635
- run_config_init: ' Por favor ejecute primero: openyida cdn-config --init',
636
- no_config: '❌ Configuración CDN no encontrada',
637
- oss_sdk_required: '❌ SDK ali-oss faltante',
638
- run_npm_install: ' Ejecute: npm install {0}',
639
- no_images_found: '❌ No se encontraron archivos de imagen soportados',
640
- uploading_images: '📤 Cargando {0} imágenes...',
641
- uploading_file: ' Cargando: {0}',
642
- upload_success: ' ✅ {0}',
643
- upload_failed: ' ❌ {0} error al cargar: {1}',
644
- upload_summary: '\n📊 Resumen de carga',
645
- upload_success_count: ' Exitosos: {0}',
646
- upload_fail_count: ' Fallidos: {0}',
647
- cdn_urls: '\n🔗 URLs CDN:',
648
- upload_error: '❌ Error al cargar: {0}',
649
- refresh_no_targets: '❌ Por favor especifique URLs o directorios para actualizar',
650
- cdn_sdk_required: '❌ SDK CDN de Alibaba Cloud faltante',
651
- querying_quota: '📊 Consultando cuota de actualización...',
652
- quota_info: ' Actualización URL: {0}/día, {1} restantes | Directorios: {2}/día, {3} restantes',
653
- refreshing_urls: '🔄 Actualizando {0} URLs...',
654
- refreshing_paths: '🔄 Actualizando {0} directorios...',
655
- refresh_task_id: ' ✅ ID de tarea: {0}',
656
- refresh_urls_failed: ' ❌ Error al actualizar URLs: {0}',
657
- refresh_paths_failed: ' ❌ Error al actualizar directorios: {0}',
658
- refresh_summary: '\n📊 Resumen de actualización',
659
- url_refresh_success: ' ✅ Actualización URL exitosa, ID de tarea: {0}',
660
- path_refresh_success: ' ✅ Actualización de directorio exitosa, ID de tarea: {0}',
661
- refresh_error: '❌ Error al actualizar: {0}',
662
- file_not_found: '❌ Archivo no encontrado: {0}',
663
- },
664
-
665
- // ── src/flash-note/flash-to-prd.ts ──────────────
666
- flashNote: {
667
- toPrd: {
668
- title: '📋 Nota Flash DingTalk a PRD',
669
- help_usage: 'Uso: openyida flash-to-prd --file <ruta> [--name <nombre-proyecto>]',
670
- help_usage2: ' openyida flash-to-prd --name <nombre-proyecto> (leer desde stdin)',
671
- help_args_title: 'Argumentos:',
672
- help_arg_file: ' --file, -f <ruta> Ruta del archivo de nota flash (.txt / .md)',
673
- help_arg_name: ' --name, -n <nombre> Nombre del proyecto (opcional, extraido automaticamente)',
674
- help_arg_max_tokens: ' --max-tokens <cantidad> Tokens max. de salida AI (predeterminado 8000)',
675
- help_examples_title: 'Ejemplos:',
676
- help_example1: ' openyida flash-to-prd --file ./meeting-notes.txt --name "Inspeccion de equipos"',
677
- help_example2: ' cat meeting.txt | openyida flash-to-prd --name "Inspeccion de equipos"',
678
- step_read: '[Paso 1] Leyendo contenido de la nota flash...',
679
- file_not_found: 'Archivo no encontrado: {0}',
680
- no_input: 'No se proporciono contenido. Use --file para especificar un archivo o redirija contenido via stdin.',
681
- stdin_empty: 'La entrada estandar esta vacia',
682
- read_success: '✅ Lectura exitosa, {0} caracteres',
683
- step_load_module: '[Paso 2] Cargando modulo constructor de prompt...',
684
- module_loaded_builtin: '✅ Modulo de prompt integrado cargado',
685
- module_loaded_local: '✅ Modulo de prompt local cargado: {0}',
686
- module_not_found: '❌ Modulo build-flash-note-prompt.js no encontrado',
687
- module_path_tried: ' Ruta intentada {0}: {1}',
688
- step_preprocess: '[Paso 3] Preprocesamiento + reconocimiento de reunion...',
689
- preprocess_result: ' Preprocesamiento: {0} car. -> {1} car.',
690
- meeting_meta: ' Metadatos de reunion: {0} campos{1}',
691
- a1_sections: ' Secciones resumen A1: {0}{1}',
692
- speakers: ' Ponentes identificados: {0}{1}',
693
- speakers_with_role: ' (con {0} anotaciones de rol)',
694
- step_login: '[Paso 4] Verificando estado de inicio de sesion...',
695
- no_login: ' No se encontro sesion, iniciando sesion...',
696
- login_ready: '✅ Sesion lista ({0})',
697
- step_ai: '[Paso 5] Llamando a AI para generar PRD...',
698
- single_segment: ' Modo segmento unico, longitud del prompt: {0} car.',
699
- multi_segment: ' Modo multi-segmento, {0} segmentos en total',
700
- extracting_segment: ' Extrayendo segmento {0}/{1} ({2} car.)...',
701
- merging_segments: ' Fusionando resultados de segmentos...',
702
- ai_success: '✅ PRD generado exitosamente',
703
- ai_error: 'Error en llamada API AI: {0}',
704
- done: '✅ Conversion de nota flash a PRD completada',
705
- done_project: ' Nombre del proyecto: {0}',
706
- done_file: ' Archivo de salida: {0}',
707
- done_size: ' Tamano del archivo: {0} caracteres',
708
- done_meeting: ' Reconocimiento de reunion: {0} metadatos, {1} secciones A1, {2} ponentes',
709
- },
710
- },
711
- update_app: {
712
- 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.',
713
- },
714
- aggregate_table: {
715
- usage: 'Usage: openyida aggregate-table <list|create-empty|inspect|preview|save|publish|status> <appType> ...',
716
- commands_title: 'Subcommands:',
717
- cmd_list: 'list <appType> [--keyword <text>] [--json] List aggregate tables in an app',
718
- cmd_create_empty: 'create-empty <appType> "<name>" [--open|--no-open] Create a blank aggregate table and return the designer URL',
719
- cmd_inspect: 'inspect <appType> <formUuid> [--json] Read aggregate table design config',
720
- cmd_preview: 'preview <appType> <formUuid> <design.json> [--json] Preview config without saving',
721
- cmd_save: 'save <appType> <formUuid> <design.json> [--json] Save an aggregate table draft',
722
- cmd_publish: 'publish <appType> <formUuid> <design.json> [--json] Publish aggregate table config',
723
- cmd_status: 'status <appType> <formUuid> [--json] Query aggregate table build status',
724
- examples_title: 'Examples:',
725
- example_list: 'openyida aggregate-table list APP_XXX',
726
- example_create_empty: 'openyida aggregate-table create-empty APP_XXX "Customer Contract Aggregate" --open',
727
- example_inspect: 'openyida aggregate-table inspect APP_XXX FORM_XXX --json',
728
- example_preview: 'openyida aggregate-table preview APP_XXX FORM_XXX .cache/openyida/aggregate/design.json',
729
- example_save: 'openyida aggregate-table save APP_XXX FORM_XXX .cache/openyida/aggregate/design.json',
730
- example_publish: 'openyida aggregate-table publish APP_XXX FORM_XXX .cache/openyida/aggregate/design.json',
731
- example_status: 'openyida aggregate-table status APP_XXX FORM_XXX',
732
- list_usage: 'Usage: openyida aggregate-table list <appType> [--keyword <text>] [--json]',
733
- create_empty_usage: 'Usage: openyida aggregate-table create-empty <appType> "<name>" [--locale zh_CN|en_US|ja_JP] [--open|--no-open]',
734
- inspect_usage: 'Usage: openyida aggregate-table inspect <appType> <formUuid> [--json]',
735
- preview_usage: 'Usage: openyida aggregate-table preview <appType> <formUuid> <design.json> [--json]',
736
- save_usage: 'Usage: openyida aggregate-table save <appType> <formUuid> <design.json> [--json]',
737
- publish_usage: 'Usage: openyida aggregate-table publish <appType> <formUuid> <design.json> [--json]',
738
- status_usage: 'Usage: openyida aggregate-table status <appType> <formUuid> [--json]',
739
- no_login: 'No login state found. Run openyida login first.',
740
- unsupported_locale: 'Unsupported locale: {0}',
741
- unknown_subcommand: 'Unknown aggregate-table subcommand: {0}',
742
- design_required: 'Missing aggregate table design JSON or file path',
743
- invalid_json: 'Aggregate table design config is not valid JSON: {0}',
744
- design_object_required: 'Aggregate table design config must be a JSON object',
745
- check_feature: 'Check aggregate table capability',
746
- feature_disabled: 'Aggregate table is not enabled for this app/org, or the edition quota has been reached',
747
- create_empty: 'Create blank aggregate table',
748
- inspect: 'Read aggregate table config',
749
- preview: 'Preview aggregate table config',
750
- save: 'Save aggregate table draft',
751
- publish: 'Publish aggregate table config',
752
- status: 'Query aggregate table build status',
753
- publish_requires_source: 'Publishing requires at least one data source. Configure relationForms first.',
754
- list_success: 'Aggregate table list',
755
- create_empty_success: 'Aggregate table created',
756
- inspect_success: 'Aggregate table config loaded',
757
- preview_success: 'Aggregate table preview succeeded',
758
- save_success: 'Aggregate table draft saved',
759
- publish_success: 'Aggregate table published',
760
- status_success: 'Aggregate table status loaded',
761
- },
762
- ai_form_setting: {
763
- usage: 'Usage: openyida ai-form-setting <get|fields|models|enable|disable|save> <appType> ...',
764
- commands_title: 'Subcommands:',
765
- cmd_get: 'get <appType> <formUuid> [--raw] [--json] Query AI approval prompt config',
766
- cmd_fields: 'fields <appType> <formUuid> [--type TEXT|IMAGE|ATTACHMENT] List insertable fields',
767
- cmd_models: 'models <appType> [--type TEXT|IMAGE|ATTACHMENT] List available models',
768
- cmd_enable: 'enable <appType> <formUuid> [--json] Enable AI approval prompts',
769
- cmd_disable: 'disable <appType> <formUuid> [--json] Disable AI approval prompts',
770
- cmd_save: 'save <appType> <formUuid> <config.json> [--enable] Save prompts and model config',
771
- examples_title: 'Examples:',
772
- example_get: 'openyida ai-form-setting get APP_XXX FORM_XXX --json',
773
- example_fields: 'openyida ai-form-setting fields APP_XXX FORM_XXX --type ATTACHMENT',
774
- example_models: 'openyida ai-form-setting models APP_XXX --type IMAGE',
775
- example_enable: 'openyida ai-form-setting enable APP_XXX FORM_XXX',
776
- example_save: 'openyida ai-form-setting save APP_XXX FORM_XXX .cache/openyida/ai-form-setting/config.json --enable',
777
- enable_disable_conflict: '--enable and --disable cannot be used together',
778
- invalid_type: 'Invalid prompt type: {0}. Valid values: {1}',
779
- invalid_status: 'Invalid AI approval prompt status: {0}',
780
- config_required: 'Missing AI approval prompt JSON config or file path',
781
- invalid_json: 'AI approval prompt config is not valid JSON: {0}',
782
- invalid_variable: 'Variable #{0} must be an object',
783
- variable_required: 'Variable #{0} must contain varName and fieldId',
784
- prompt_required: 'Prompt {0} is missing prompt/content',
785
- variables_array_required: 'variables must be an array',
786
- invalid_item: 'Prompt config #{0} must be an object',
787
- model_required: 'Prompt {0} is missing modelId',
788
- invalid_config_part: '{0} must be a JSON object or a valid JSON string',
789
- config_object_required: 'AI approval prompt config must be a JSON object or array',
790
- items_array_required: 'AI approval prompt config must contain an items array',
791
- too_many_items: 'AI approval prompts support up to {0} items',
792
- duplicate_item_id: 'Duplicate itemId: {0}',
793
- no_login: 'No login state found. Run openyida login first.',
794
- get_usage: 'Usage: openyida ai-form-setting get <appType> <formUuid> [--raw] [--json]',
795
- fields_usage: 'Usage: openyida ai-form-setting fields <appType> <formUuid> [--type TEXT|IMAGE|ATTACHMENT] [--json]',
796
- models_usage: 'Usage: openyida ai-form-setting models <appType> [--type TEXT|IMAGE|ATTACHMENT] [--json]',
797
- status_usage: 'Usage: openyida ai-form-setting <enable|disable> <appType> <formUuid> [--json]',
798
- save_usage: 'Usage: openyida ai-form-setting save <appType> <formUuid> <config.json> [--enable|--disable] [--json]',
799
- get_action: 'Query AI approval prompt config',
800
- fields_action: 'Query AI approval prompt fields',
801
- models_action: 'Query AI approval prompt models',
802
- status_action: 'Update AI approval prompt status',
803
- save_action: 'Save AI approval prompt config',
804
- get_success: 'AI approval prompt config',
805
- fields_success: 'AI approval prompt fields',
806
- models_success: 'AI approval prompt models',
807
- save_success: 'AI approval prompt config saved',
808
- enabled: 'AI approval prompts enabled',
809
- disabled: 'AI approval prompts disabled',
810
- unknown_subcommand: 'Unknown ai-form-setting subcommand: {0}',
811
- },
812
- safe_json: {
813
- hint_unquoted_key: 'A key looks unquoted (JSON requires all keys wrapped in double quotes, e.g. {"name":1})',
814
- hint_single_quote: 'Single quotes were likely used (JSON only allows double quotes ", not single quotes \')',
815
- hint_trailing_comma: 'There is likely a trailing comma (JSON does not allow a comma right before } or ])',
816
- hint_smart_quote: 'Smart / curly quotes were likely used (“ ” ‘ ’); replace them with standard ASCII double quotes "',
817
- hint_generic: 'Invalid JSON; please check it against the standard JSON syntax',
818
- label_cause: 'Likely cause: ',
819
- label_position: 'Error position: char ',
820
- label_raw: 'Raw error: ',
821
- label_suggestion: 'Suggestion: ',
822
- suggestion_file: 'For long or special-character content, pass it via a file path (--spec ./xxx.json / <file path>) to avoid shell-escaping issues',
823
- recovered_smart_quote: 'Detected smart / curly quotes; auto-normalized them to standard double quotes and parsed successfully. Prefer standard ASCII quotes at the source.',
824
- },
825
- codex_login: {
826
- title: ' openyida login {0} - {1} Login Mode',
827
- not_codex: 'Current environment is not detected as Codex / Qoder / Wukong; returning an in-app browser login handoff only.',
828
- no_playwright: '{0} mode does not require Playwright or a separate Chromium install.',
829
- using_browser: '{0} in-app Browser is only suitable for unauthenticated page previews; use openyida login for CLI auth.',
830
- browser_handoff_hint: '{0} in-app Browser is not used for CLI auth. Use openyida login.',
831
- handoff_message: '{0} in-app Browser cannot complete CLI token login. Run openyida login.',
832
- cache_available: 'Existing CLI token session cache is available; no browser login needed.',
833
- },
834
- };