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
- * Pacote de idioma português (Portuguese)
5
- */
6
- module.exports = {
7
- // ── bin/yida.js printHelp() ────────────────────────
8
- help: {
9
- subtitle: 'Ferramenta de desenvolvimento IA low-code para Yida',
10
- usage: 'Uso:',
11
- alias: 'Alias:',
12
- group_auth: 'Ambiente & Autenticação',
13
- cmd_login: 'Login with OAuth token mode',
14
- cmd_logout: 'Logout / trocar conta',
15
- cmd_auth: 'Gerenciamento do estado de login',
16
- cmd_org: 'Gerenciamento de organizações (listar / trocar)',
17
- cmd_env: 'Detectar ambiente de ferramenta IA e estado de login',
18
- cmd_env_management: 'Gerenciar perfis de ambiente público/privado',
19
- group_app: 'Gerenciamento de aplicativos',
20
- cmd_app_list: 'Listar meus aplicativos Yida',
21
- cmd_corp_efficiency: 'Consultar visão geral de eficiência empresarial e relatórios detalhados',
22
- cmd_create_app: 'Criar um aplicativo Yida',
23
- cmd_update_app: 'Atualizar informações do aplicativo',
24
- cmd_nav_group: 'Gerenciar grupos de navegação lateral do aplicativo',
25
- cmd_app_permission: 'Gerenciar admins principais, de dados e desenvolvimento do app',
26
- cmd_i18n: 'Gerenciar textos multilíngues e idiomas do app',
27
- cmd_export: 'Exportar aplicativo (pacote de migração)',
28
- cmd_import: 'Importar pacote de migração, reconstruir app',
29
- group_form: 'Formulários & Páginas',
30
- cmd_create_form: 'Criar página de formulário',
31
- cmd_update_form: 'Atualizar página de formulário',
32
- cmd_list_forms: 'Listar formulários/páginas de um app',
33
- cmd_aggregate_table: 'Manage aggregate tables (virtualView)',
34
- cmd_er: 'Export app entity relationship diagram',
35
- cmd_get_schema: 'Obter Schema do formulário',
36
- cmd_create_page: 'Criar página de exibição 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 e publicar página personalizada',
41
- cmd_update_form_config: 'Atualizar configuração do formulário',
42
- group_data: 'Dados & Permissões',
43
- cmd_data: 'Gerenciamento unificado de dados (formulário/processo/tarefa/subformulário)',
44
- cmd_task_center: 'Centro de tarefas global (pendente/processado/CC etc.)',
45
- cmd_basic_info: 'Consultar info da organizacao, capacidade, cotas e dominio',
46
- cmd_get_permission: 'Consultar configuração de permissões',
47
- cmd_save_permission: 'Salvar configuração de permissões',
48
- cmd_corp_manager: 'Gerenciar permissões da plataforma',
49
- cmd_agent_center: 'Gerenciar delegações de processo e desligamento',
50
- group_process: 'Processos',
51
- cmd_configure_process: 'Configurar e publicar regras de processo',
52
- cmd_create_process: 'Criar formulário de processo (tudo-em-um)',
53
- cmd_ai_form_setting: 'Manage process form AI approval prompts',
54
- cmd_process_preview: 'Pré-visualizar instância de processo (fluxograma)',
55
- group_share: 'Configuração & Compartilhamento de página',
56
- cmd_verify_url: 'Verificar URL curta',
57
- cmd_save_share: 'Salvar configuração de acesso público / compartilhamento',
58
- cmd_get_page_config: 'Consultar configuração de acesso público',
59
- cmd_externalize_form: 'Plan external access-safe mirror fields',
60
- group_report: 'Relatórios',
61
- cmd_create_report: 'Criar relatório Yida',
62
- cmd_append_chart: 'Adicionar gráfico a relatório existente',
63
- group_connector: 'Conectores',
64
- cmd_connector_list: 'Listar conectores HTTP',
65
- cmd_connector_create: 'Criar conector',
66
- cmd_connector_detail: 'Ver detalhes do conector',
67
- cmd_connector_delete: 'Excluir conector',
68
- cmd_connector_add_action: 'Adicionar ação',
69
- cmd_connector_list_actions: 'Listar ações',
70
- cmd_connector_delete_action: 'Excluir ação',
71
- cmd_connector_test: 'Testar ação',
72
- cmd_connector_list_connections: 'Listar conexões de autenticação',
73
- cmd_connector_create_connection: 'Criar conexão de autenticação',
74
- cmd_connector_smart: 'Criação inteligente (de cURL)',
75
- cmd_connector_parse_api: 'Analisar informações da API',
76
- cmd_connector_gen_template: 'Gerar modelo de documento API',
77
- cmd_connector_more: 'Ver mais subcomandos',
78
- group_integration: 'Integração & DingTalk',
79
- cmd_integration: 'Criar fluxo de automação',
80
- cmd_integration_list: 'Listar fluxos de automação',
81
- cmd_integration_enable: 'Ativar fluxo de automação',
82
- cmd_integration_disable: 'Desativar fluxo de automação',
83
- cmd_integration_check: 'Check abnormal integration automation run logs',
84
- cmd_dws: 'DingTalk CLI (contatos/calendário/tarefas/aprovação etc.)',
85
- cmd_dingtalk_link: 'Gerar links DingTalk AppLink / dingtalk:// legados',
86
- group_utility: 'Utilitários',
87
- cmd_commands: 'Emitir manifesto de comandos legível por máquina',
88
- cmd_agent_capabilities: 'Emitir snapshot único de capacidades para agentes',
89
- cmd_a2a: 'Iniciar adaptador A2A local somente leitura ou imprimir Agent Card',
90
- cmd_bridge: 'Iniciar serviço local OpenYida web bridge',
91
- cmd_db_seq_fix: 'Detect and repair PostgreSQL sequence drift',
92
- cmd_copy: 'Copiar diretório de trabalho project',
93
- cmd_sample: 'Gerar exemplos/modelos de código',
94
- cmd_doctor: 'Diagnóstico de ambiente e reparo automático',
95
- cmd_update: 'Verificar e atualizar para a versão mais recente',
96
- cmd_export_conversation: 'Exportar registros de conversa IA',
97
- cmd_feedback: 'Configurar formulário de feedback e lembretes locais',
98
- cmd_batch: 'Executar comandos OpenYida em lote',
99
- cmd_flash_to_prd: 'Converter notas rápidas ou de reunião para prompt PRD',
100
- cmd_ai: 'Call Yida AI text and image recognition APIs',
101
- cmd_asset: 'Detectar capacidade de materiais / verificar URLs de imagens / resolver assets',
102
- cmd_cdn: 'Gerenciamento de imagens CDN (config/upload/atualizar)',
103
- cmd_cdn_config: 'Configurar upload CDN / OSS',
104
- cmd_cdn_upload: 'Enviar imagem para CDN',
105
- cmd_cdn_refresh: 'Atualizar cache CDN',
106
- quickstart_title: 'Início rápido',
107
- quickstart_app_name: 'Gestão de presença',
108
- quickstart_form_name: 'Info do funcionário',
109
- docs: '📚 Documentação:',
110
- },
111
-
112
- // ── bin/yida.js ────────────────────────────────────
113
- cli: {
114
- integration_help: 'Uso: openyida integration <create|list|enable|disable> ...',
115
- integration_unknown: 'Subcomando integration desconhecido: {0}',
116
- integration_help_hint: 'Use openyida integration --help para ver os subcomandos disponíveis',
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: 'Exemplo: 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: 'Exemplo: openyida integration enable APP_XXX FORM-XXX LPROC-XXX',
121
- integration_disable_usage: 'Uso: openyida integration disable <appType> <formUuid> <processCode>',
122
- integration_disable_example: 'Exemplo: openyida integration disable APP_XXX FORM-XXX LPROC-XXX',
123
- compile_usage: 'Uso: openyida compile <sourceFile>',
124
- compile_example: 'Exemplo: 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 - Detecção do ambiente de ferramenta IA',
173
- detecting: ' Detectando ambiente de ferramenta IA...',
174
- tool_label: ' Ferramenta IA: {0}',
175
- login_label: ' Status de login: {0}',
176
- logged_in: 'Conectado',
177
- not_logged_in: 'Não conectado',
178
- corp_label: ' Organização: {0}',
179
- version_label: ' Versão: {0}',
180
- },
181
-
182
- // ── lib/auth/token-auth.js ────────────────────────────────────
183
- login: {
184
- title: '🔐 Login no Yida',
185
- cache_found: ' Credenciais em cache encontradas, validando...',
186
- cache_valid: '✅ As credenciais em cache são válidas!',
187
- cache_invalid: ' As credenciais em cache expiraram. É necessário fazer login novamente.',
188
- starting_qr: ' Iniciando login com código QR...',
189
- success: '✅ Login realizado com sucesso!',
190
- failed: '❌ Falha no login: {0}',
191
- usage: 'Uso: openyida login',
192
- },
193
-
194
- // ── lib/logout.js ───────────────────────────────────
195
- logout: {
196
- title: '🚪 Logout do Yida',
197
- success: '✅ Logout realizado com sucesso! As credenciais foram removidas.',
198
- no_cache: ' Nenhuma credencial encontrada. Já está desconectado.',
199
- failed: '❌ Falha no logout: {0}',
200
- },
201
-
202
- // ── lib/create-app.js ───────────────────────────────
203
- create_app: {
204
- usage: 'Uso: openyida create-app "<nome do app>" ou openyida create-app --name "<nome do app>" [--desc "..."] [--theme deepBlue]',
205
- example: 'Exemplo: openyida create-app --name "Meu App" --desc "Descricao do app" --theme deepBlue',
206
- title: ' create-app - Ferramenta de criação de aplicativos Yida',
207
- app_name: '\n Nome do app: {0}',
208
- app_desc: ' Descrição: {0}',
209
- app_icon: ' Ícone: {0} ({1})',
210
- app_theme: ' Tema: colour={0} navTheme={1} layout={2}',
211
- step_create: '\n🚀 Criando o aplicativo...',
212
- sending_request: ' Enviando requisição createApp...',
213
- success: ' ✅ Aplicativo criado com sucesso!',
214
- app_id: ' ID do app: {0}',
215
- failed: ' ❌ Falha na criação: {0}',
216
- error: '\n❌ Erro de criação: {0}',
217
- },
218
-
219
- // ── lib/create-form.js ──────────────────────────────
220
- create_form: {
221
- usage: 'Uso: openyida create-form <appType> <nome da página> [JSON do esquema]',
222
- title: ' create-form - Ferramenta de criação/atualização de formulários Yida',
223
- app_id: '\n ID do app: {0}',
224
- page_name: ' Nome da página: {0}',
225
- step_create: '\n📝 Criando página de formulário...',
226
- sending_request: ' Enviando requisição saveFormSchema...',
227
- success: ' ✅ Página de formulário criada com sucesso!',
228
- form_uuid: ' UUID do formulário: {0}',
229
- failed: ' ❌ Falha na criação: {0}',
230
- error: '\n❌ Erro de criação: {0}',
231
- step_check_data: '\n🔍 Passo {0}: Verificar se o formulário possui dados existentes',
232
- data_exists_warning: ' ⚠️ Este formulário já possui {0} registros! Modificar a estrutura pode causar:',
233
- data_exists_impact: ' - Perda ou corrupção de dados históricos\n - Anomalias no status do processo\n - Inconsistência de dados',
234
- data_exists_abort: ' ❌ Modificação cancelada. Adicione --force para continuar.',
235
- data_exists_confirm_message: 'Este formulário possui {0} registros existentes. Modificar a estrutura pode afetar os dados existentes. Adicione --force para confirmar.',
236
- data_exists_force_hint: 'Uso: openyida create-form update <appType> <formUuid> <changesJson> --force',
237
- data_exists_force_proceed: ' ⚠️ Modo --force: confirmação ignorada, modificação forçada da estrutura com {0} registros existentes',
238
- data_check_empty: ' ✅ Formulário sem dados, seguro para modificar',
239
- data_check_failed: ' ⚠️ Verificação de dados falhou, continuando com a modificação',
240
- },
241
-
242
- // ── lib/create-page.js ──────────────────────────────
243
- create_page: {
244
- usage: 'Uso: openyida create-page <appType> <nome da página> [--mode dashboard]',
245
- example: 'Exemplo: openyida create-page APP_XXX "Dashboard" --mode dashboard',
246
- title: ' create-page - Ferramenta de criação de páginas personalizadas Yida',
247
- app_id: '\n ID do app: {0}',
248
- page_name: ' Nome da página: {0}',
249
- step_create: '\n📄 Criando página personalizada...',
250
- success: ' ✅ Página personalizada criada com sucesso!',
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 da página: {0}',
257
- failed: ' ❌ Falha na criação: {0}',
258
- error: '\n❌ Erro de criação: {0}',
259
- },
260
-
261
- // ── lib/get-schema.js ───────────────────────────────
262
- get_schema: {
263
- usage: 'Uso: openyida get-schema <appType> <formUuid>',
264
- title: ' get-schema - Ferramenta de obtenção de esquema Yida',
265
- app_id: '\n ID do app: {0}',
266
- form_uuid: ' UUID do formulário: {0}',
267
- step_get: '\n📋 Obtendo esquema do formulário...',
268
- success: ' ✅ Esquema obtido com sucesso!',
269
- failed: ' ❌ Falha na obtenção: {0}',
270
- error: '\n❌ Erro de obtenção: {0}',
271
- },
272
-
273
- // ── lib/check-update.js ─────────────────────────────
274
- check_update: {
275
- new_version: '\n🎉 Nova versão disponível: {0} → {1}',
276
- update_cmd: ' Atualizar: npm install -g openyida',
277
- check_failed: 'Falha ao verificar versão: {0}',
278
- },
279
-
280
- // ── lib/update.js ──────────────────────────────────
281
- update: {
282
- checking: 'Verificando a versão mais recente...',
283
- fetch_failed: 'Não foi possível obter a versão mais recente. Verifique sua conexão de rede',
284
- already_latest: 'Já está atualizado ({0}), nenhuma atualização necessária',
285
- found_new_version: 'Nova versão disponível: {0} (atual: {1})',
286
- installing: 'Instalando openyida@latest...',
287
- success: 'Atualização bem-sucedida! Versão atual: {0}',
288
- install_failed: 'Falha na atualização: {0}',
289
- manual_hint: 'Tente manualmente: npm install -g openyida@latest',
290
- available: 'atualização disponível',
291
- up_to_date: 'atualizado',
292
- label_install: 'Install',
293
- label_channel: 'Channel',
294
- label_version: 'Version',
295
- label_update: 'Update',
296
- done: 'Atualização concluída!',
297
- done_hint: 'Execute openyida --version para confirmar a nova versão',
298
- },
299
-
300
- // ── lib/export-app.js ───────────────────────────────
301
- export_app: {
302
- usage: 'Uso: openyida export-app <appType>',
303
- title: ' export-app - Ferramenta de exportação de aplicativos Yida',
304
- app_id: '\n ID do app: {0}',
305
- step_export: '\n📦 Exportando aplicativo...',
306
- success: ' ✅ Aplicativo exportado com sucesso!',
307
- failed: ' ❌ Falha na exportação: {0}',
308
- error: '\n❌ Erro de exportação: {0}',
309
- },
310
-
311
- // ── lib/import-app.js ───────────────────────────────
312
- import_app: {
313
- usage: 'Uso: openyida import-app <caminho do arquivo>',
314
- title: ' import-app - Ferramenta de importação de aplicativos Yida',
315
- file_path: '\n Caminho do arquivo: {0}',
316
- step_import: '\n📥 Importando aplicativo...',
317
- success: ' ✅ Aplicativo importado com sucesso!',
318
- failed: ' ❌ Falha na importação: {0}',
319
- error: '\n❌ Erro de importação: {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 - Ferramenta de obtenção de configuração de página Yida',
326
- app_id: '\n ID do app: {0}',
327
- form_uuid: ' UUID do formulário: {0}',
328
- step_get: '\n🔍 Obtendo configuração da página...',
329
- success: ' ✅ Configuração obtida com sucesso!',
330
- failed: ' ❌ Falha na obtenção: {0}',
331
- error: '\n❌ Erro de obtenção: {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 - Ferramenta de salvamento de configuração de acesso público Yida',
338
- app_id: '\n ID do app: {0}',
339
- form_uuid: ' UUID do formulário: {0}',
340
- open_url: ' URL pública: {0}',
341
- is_open: ' Acesso público: {0}',
342
- open_auth: ' Auth necessária: {0}',
343
- step_validate: '\n📋 Step 0: Validar parâmetros',
344
- validate_ok: ' ✅ Validação bem-sucedida',
345
- validate_failed: ' ❌ Validação falhou: {0}',
346
- step_save: '\n💾 Step 2: Salvar configuração de acesso público',
347
- sending_request: ' Enviando requisição saveShareConfig...',
348
- save_ok: ' ✅ Configuração salva com sucesso!',
349
- save_ok_msg: 'Configuração de acesso público salva',
350
- save_failed: ' ❌ Falha ao salvar: {0}',
351
- save_failed_msg: 'Falha ao salvar',
352
- err_is_open_invalid: 'isOpen deve ser y ou n. Valor atual: {0}',
353
- err_open_auth_invalid: 'openAuth deve ser y ou n. Valor atual: {0}',
354
- err_open_url_required: 'openUrl é obrigatório para habilitar o acesso público',
355
- err_open_url_prefix: 'openUrl deve começar com /o/. Valor atual: {0}',
356
- err_open_url_chars: 'O caminho openUrl suporta apenas a-z A-Z 0-9 _ - e / como separador de segmentos. Valor atual: {0}',
357
- err_open_url_empty: 'O caminho openUrl não pode estar vazio: {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 - Ferramenta de atualização de configuração de formulário Yida',
364
- app_id: '\n ID do app: {0}',
365
- form_uuid: ' UUID do formulário: {0}',
366
- is_render_nav: ' Mostrar nav: {0}',
367
- page_title: ' Título da página: {0}',
368
- step_update: '\n💾 Step 2: Atualizar configuração do formulário',
369
- sending_request: ' Enviando requisição updateFormSchemaInfo...',
370
- update_ok: ' ✅ Configuração atualizada com sucesso!',
371
- nav_shown: 'Navegação superior exibida',
372
- nav_hidden: 'Navegação superior oculta',
373
- update_failed: ' ❌ Falha na atualização: {0}',
374
- update_failed_msg: 'Falha na atualização',
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 - Ferramenta de verificação de URL Yida',
381
- app_id: '\n ID do app: {0}',
382
- form_uuid: ' UUID do formulário: {0}',
383
- step_validate: '\n📋 Step 0: Validar formato de URL',
384
- validate_ok: ' ✅ Formato validado',
385
- validate_failed: ' ❌ Validação falhou: {0}',
386
- step_verify: '\n🔍 Step 2: Verificar URL',
387
- sending_request: ' Enviando requisição verifyShortUrl...',
388
- url_available: ' ✅ A URL está disponível!',
389
- open_available_msg: 'Esta URL de acesso público está disponível',
390
- share_available_msg: 'Esta URL de compartilhamento interno está disponível',
391
- url_taken: ' ❌ A URL já está em uso',
392
- url_taken_msg: 'Esta URL curta já está sendo usada',
393
- verify_failed: ' ❌ Falha na requisição de verificação',
394
- err_url_prefix: 'A URL deve começar com /o/ ou /s/. Valor atual: {0}',
395
- err_url_chars: 'O caminho URL suporta apenas a-z A-Z 0-9 _ - e / como separador de segmentos. Valor atual: {0}',
396
- err_url_empty: 'O caminho URL não pode estar vazio: {0}',
397
- },
398
-
399
- // ── lib/copy.js ────────────────────────────────────
400
- copy: {
401
- title: ' openyida copy - Inicializar diretório de trabalho Yida',
402
- package_root: '\n📦 Raiz do pacote: {0}',
403
- dest_root: '🤖 Diretório destino: {0}',
404
- dest_empty_flatten: '📂 O diretório destino está vazio, os conteúdos de project/ serão copiados diretamente (sem criar subdiretório project/)',
405
- force_mode: '⚠️ Modo --force: o diretório destino será esvaziado antes de copiar',
406
- no_package: '\n❌ Diretório do pacote openyida não encontrado',
407
- no_package_hint1: ' Certifique-se de que o openyida está instalado globalmente:',
408
- no_package_hint2: ' npm install -g openyida',
409
- no_active_tool: '\n❌ Nenhum ambiente de ferramenta IA ativo detectado',
410
- supported_tools: ' Ferramentas suportadas: Wukong, Codex, OpenCode, Claude Code, Aone Copilot, Cursor, Qoder',
411
- current_result: '\n Resultados de detecção atuais:',
412
- force_hint: '\n Para forçar a cópia para o diretório atual:\n openyida copy --force',
413
- force_cmd: ' openyida copy --force',
414
- copying_label: '\n📂 Copiando {0}...',
415
- creating_symlink: '\n📂 Criando link simbólico yida-skills/...',
416
- file_copied: ' Copiado: {0}',
417
- cleared: ' 🗑️ Esvaziado: {0}',
418
- symlink_removed: ' 🗑️ Link simbólico antigo removido: {0}',
419
- dir_deleted: ' 🗑️ Diretório excluído: {0}',
420
- removed: ' 🗑️ Removido: {0}',
421
- symlink_created: ' 🔗 Link simbólico: {0} -> {1}',
422
- symlink_label: 'link simbólico',
423
- done: '✅ Concluído!',
424
- files_copied: ' Arquivos copiados: {0}',
425
- files_count: '{0} arquivos',
426
- symlinks_created: ' Links simbólicos criados: {0}',
427
- result_symlink: ' {0} → {1} (link simbólico)',
428
- result_copy: ' {0} → {1} ({2} arquivos)',
429
- wukong_skills_cleanup: '\n🗑️ Ambiente Wukong: Limpando link simbólico yida-skills/...',
430
- wukong_skills_cleaned: 'limpo',
431
- wukong_skills_not_found: ' ℹ️ Link simbólico ou diretório yida-skills/ não encontrado: {0}',
432
- remove_failed: ' ❌ Falha ao remover: {0} ({1})',
433
- symlink_fallback_copy: ' ⚠️ Criação de link simbólico Windows falhou (requer permissões de admin), usando cópia de diretório: {0}',
434
- symlink_failed: ' ❌ Falha ao criar link 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: 'Código de página grande detectado: {0} ({1}, cerca de {2} linhas)',
450
- long_line_hint: 'Linha única muito longa detectada (cerca de {0} caracteres), geralmente vendor minificado ou base64; mova para fora da página.',
451
- base64_hint: 'Conteúdo base64 inline longo detectado; envie para CDN/OSS e referencie a URL.',
452
- memory_hint: 'publish/compile mantém source, build, minificado e cópias do schema em memória; separe vendor/base64 ou carregue com this.utils.loadScript.',
453
- windows_hint: 'No Windows, não escreva JSX grande com PowerShell Get-Content -Raw + ConvertTo-Json; use Node fs.writeFileSync/appendFileSync em partes.',
454
- },
455
- publish: {
456
- title: ' yida-publish - Ferramenta de publicação de páginas Yida',
457
- platform: ' Plataforma: {0}',
458
- app_id: ' ID do app: {0}',
459
- form_uuid: ' ID do formulário: {0}',
460
- source_file: ' Fonte: {0}',
461
- compiled_file: ' Saída: {0}',
462
- step_lint: '\n🔍 Step 0: Pré-verificação de padrões de código Yida\n',
463
- lint_title: '⚠️ Yida page code check:',
464
- lint_error_line: ' ❌ Linha {0}: {1}',
465
- lint_warning_line: ' ⚠️ Linha {0}: {1}',
466
- lint_event_function: 'Ligação de evento usa function, use função de seta (e) => { this.xxx() }',
467
- lint_missing_render_jsx: 'Falta export function renderJsx(); páginas personalizadas do Yida devem exportar renderJsx',
468
- lint_import_require: 'Import/require encontrado. Páginas personalizadas do Yida não podem importar módulos; carregue scripts de terceiros com this.utils.loadScript',
469
- lint_react_hooks: 'React Hooks encontrados. O runtime do Yida usa o estilo de componentes de classe do React 16 e não oferece suporte a useState/useEffect',
470
- lint_export_default: 'Export default encontrado. O Yida precisa de exports nomeados, como export function renderJsx/didMount',
471
- lint_jsx_extension: 'Este arquivo .js contém JSX; prefira .jsx para arquivos fonte. A saída compilada continua sendo .js',
472
- lint_event_direct_method: 'A vinculação de evento passa this.xxx diretamente e perderá this; use (e) => { this.xxx(e); }',
473
- lint_event_bind_this: 'A vinculação de evento usa .bind(this); use (e) => { this.xxx(e); } em vez disso',
474
- lint_lifecycle_case: 'Export de ciclo de vida {0} detectado; o Yida reconhece apenas {1} (diferencia maiúsculas e minúsculas)',
475
- lint_react_lifecycle_method: 'Ciclo de vida React {0} detectado; exporte {1} para páginas personalizadas do Yida',
476
- lint_event_lowercase: 'Prop de evento em minúsculas {0} detectada; React/Yida não fará a vinculação. Use {1}',
477
- lint_event_call_result: 'A vinculação de evento invoca uma função ou não é um manipulador de expressão; use (e) => { self.xxx(e); }',
478
- lint_event_noop_arrow: 'A função de seta do evento referencia um manipulador sem chamá-lo; use (e) => { self.xxx(e); }',
479
- lint_button_missing_handler: 'Um <button> visível não tem onClick/onMouseDown/onKeyDown nem estado disabled; vincule um manipulador de evento ou use span/div para rótulos estáticos',
480
- lint_array_callback_function: '.{0}(function ...) pode perder this em callbacks; use .{0}((item) => ...) em vez disso',
481
- lint_foreach_callback_function: '.forEach(function ...) pode perder this em callbacks; prefira .forEach((item) => ...)',
482
- lint_controlled_input: 'input usa modo controlado por value. Páginas do Yida devem usar defaultValue + onChange para atualizar _customState',
483
- lint_native_select_ui: 'Foi encontrado um <select> nativo. Em páginas personalizadas normais, use um dropdown button+menu+option com seta, marcador selecionado e reset de foco; não renderize um SelectField de formulário diretamente como filtro da página.',
484
- lint_iframe_self_navigation: 'Páginas personalizadas do Yida rodam em um iframe. Use target="_top"/target="_blank" ou window.top.location para navegar para páginas do Yida e evitar páginas aninhadas.',
485
- lint_page_size_limit: 'pageSize={0} excede o limite da API do Yida de 100; use 100 ou menos',
486
- lint_page_size_recommend: 'pageSize={0} é grande; o valor recomendado é 50 (melhor desempenho, máximo 100). Prefira 10/20/50',
487
- lint_searchformdata_http_post: 'Uma chamada direta a searchFormDatas.json deve usar GET + parâmetros de query (coloque formUuid/appType na query da URL). Usar POST com formUuid no body dispara «参数校验失败formUuid» e os painéis/listas mostram zeros',
488
- lint_searchformdata_http_pagenumber: 'searchFormDatas.json pagina com currentPage (não pageNumber); usar pageNumber quebra a paginação',
489
- lint_searchformdata_http_unwrap: 'A resposta do navegador de searchFormDatas.json aninha a lista em content.data ({ content: { data: [...] } }); ler apenas json.data retorna 0 linhas — desembrulhe via (json.content && json.content.data)',
490
- lint_setstate_non_timestamp: 'this.setState grava um campo diferente de timestamp. O estado de negócio da página personalizada deve ficar em _customState e ser atualizado via forceUpdate()/setCustomState(); this.setState deve carregar apenas o campo contratual timestamp',
491
- lint_self_binding_missing: 'renderJsx usa this sem declarar var self = this;. Adicione var self = this; no início de renderJsx e use self dentro de closures/callbacks para evitar perder this',
492
- lint_echarts_dom_ready: 'echarts.init não está envolvido em setTimeout; o contêiner pode ainda não estar montado e o gráfico pode não renderizar. Use setTimeout(function(){ /* echarts.init */ }, 300)',
493
- lint_yida_api_catch: 'A chamada de API this.utils.yida não tem .catch() detectado; adicione tratamento de erro e mostre um toast ao usuário',
494
- lint_echarts_legacy_map_china: 'ECharts 5 não oferece mais suporte a echarts/map/js/china.js. Carregue o GeoJSON do DataV e chame echarts.registerMap("china", geoJson) em vez disso',
495
- lint_echarts_rich_label_formatter: 'Templates rich text retornados por ECharts label.formatter são instáveis em páginas personalizadas do Yida; prefira strings formatter simples ou texto de rótulo pré-calculado',
496
- lint_const_let: 'Usa declaração const/let, recomenda-se mudar para var (compatibilidade do ambiente Yida)',
497
- lint_computed_property: 'Usa nome de propriedade computada ES6 { [key]: value }, não suportado pelo motor JS Yida, causa falha silenciosa. Use var obj = {}; obj[key] = value;',
498
- lint_pad_method: 'Usa String.{0}(), não suportado pelo motor JS Yida, causa interrupção silenciosa de callbacks Promise. Use operador ternário: x < 10 ? "0" + x : "" + x',
499
- lint_large_then_callback: 'O callback Promise .then() é muito grande ({0} linhas, máximo recomendado {1} linhas), pode causar truncamento silencioso. Extraia a lógica para uma função export separada',
500
- lint_fix_errors: '❌ Por favor corrija os erros acima antes de publicar',
501
- lint_skip_hint: '💡 Adicione --skip-lint para pular a verificação',
502
- lint_passed: ' ✅ Verificação de código aprovada\n',
503
- lint_skipped: '\n⏭️ Pré-verificação de código ignorada (--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 fonte e construir esquema\n',
519
- reading_source: '[1/4] Lendo fonte {0}...',
520
- compiling: '[2/4] Compilando {0} com Babel...',
521
- compile_failed: ' ❌ Falha na compilação: {0}',
522
- compile_location: '\n Localização: linha {0}, coluna {1}',
523
- compile_error_code: ' Código de erro: {0}',
524
- minifying: '[3/4] Minificando com UglifyJS → {0}...',
525
- minify_failed: ' Falha na minificação: {0}',
526
- compile_done: ' ✅ Compilação concluída: {0}',
527
- building_schema: '[4/4] Construindo esquema...',
528
- formula_prefix_fixed: ' 🔧 {0} referência(s) de prefixo de fórmula de subtabela corrigida(s) automaticamente',
529
- schema_built: ' ✅ Esquema construído com sucesso!',
530
- step_canvas_compile: '\n📦 Step 1: Compilar fonte do Code Canvas\n',
531
- canvas_compiling: ' 🎨 Compilando a origem do Code Canvas localmente...',
532
- canvas_compile_done: ' ✅ Code Canvas compilado!',
533
- canvas_compile_failed: ' ❌ Falha na compilação do Code Canvas: {0}',
534
- step_login: '\n🔑 Step 2: Ler credenciais de login',
535
- step_publish: '\n📤 Step 3: Publicar esquema\n',
536
- publish_failed: '\n❌ Falha na publicação: {0}',
537
- schema_published: ' ✅ Esquema publicado com sucesso!',
538
- step_config: '\n⚙️ Step 4: Atualizar configuração do formulário\n',
539
- success: ' ✅ Publicado com sucesso!',
540
- config_failed: ' ⚠️ Falha ao atualizar configuração: {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❌ Erro de publicação: {0}',
546
- source_not_found: '❌ Arquivo fonte não encontrado: {0}',
547
- usage: 'Uso: openyida publish <arquivoFonte> <appType> <formUuid> [--health-check] [--canvas]',
548
- example: 'Exemplo: 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: '🔐 Login Yida com código QR no terminal',
554
- step_init: ' Step 1: Inicializando sessão...',
555
- step_get_qr: ' Step 2: Obtendo código QR...',
556
- scan_hint: ' 📱 Escaneie o código QR abaixo com o 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 do código QR: {0}',
559
- waiting_scan: ' ⏳ Aguardando escaneamento (até 2 minutos)...',
560
- scanned_confirm: ' ✅ Código QR escaneado! Por favor confirme o login no seu telefone...',
561
- scan_success: ' ✅ Escaneamento confirmado!',
562
- step_exchange: ' Step 4: Trocando credenciais...',
563
- step_get_corps: ' Step 5: Obtendo lista de organizações...',
564
- step_switch_corp: ' Step 7: Mudando para a organização selecionada...',
565
- only_one_corp: ' ✅ Uma organização detectada: {0}, selecionada automaticamente',
566
- select_corp_prompt: ' 🏢 Múltiplas organizações encontradas, por favor selecione uma:',
567
- select_corp_input: ' Digite o número (1-{0}): ',
568
- select_corp_invalid: ' ❌ Entrada inválida, digite um número entre 1 e {0}',
569
- target_corp_not_found: 'O corpId especificado não foi encontrado nas organizações acessíveis: {0}',
570
- corp_selected: ' ✅ Organização selecionada: {0}',
571
- login_success: '✅ Login realizado com sucesso!',
572
- qrcode_fallback: ' ⚠️ Pacote qrcode não instalado, visite a URL abaixo manualmente:',
573
- qrcode_render_failed: ' ⚠️ Falha ao renderizar código QR ({0}), visite a URL abaixo:',
574
- qr_expired: 'Código QR expirado, por favor faça login novamente',
575
- poll_timeout: 'Tempo de espera de escaneamento esgotado (2 minutos), por favor faça login novamente',
576
- no_corp_available: 'Nenhuma organização acessível encontrada',
577
- no_csrf_in_cookie: 'Login bem-sucedido mas csrf_token não encontrado, tente novamente',
578
- stdin_closed: 'Fluxo de entrada fechado, não é possível selecionar organização',
579
- },
580
-
581
- // ── scripts/postinstall.js ─────────────────────────
582
- postinstall: {
583
- welcome_title: ' 🎉 Bem-vindo ao OpenYida! ',
584
- install_success: ' ✅ Instalação concluída! {0} A ferramenta de desenvolvimento IA Yida está pronta.',
585
- update_success: ' ✅ Atualização concluída! {0} OpenYida foi atualizado para a versão mais recente.',
586
- ai_mode_title: ' 🚀 Modo de conversa IA',
587
- ai_mode_desc: ' No Codex / Claude Code / Aone Copilot / Cursor, converse diretamente:',
588
- prompt1: ' 📋 "Crie um sistema de gestão de presença com Yida"',
589
- prompt2: ' 💰 "Construa um app de calculadora de salário pessoal"',
590
- prompt3: ' 🏢 "Crie um sistema CRM de gestão de clientes"',
591
- prompt4: ' 🎂 "Faça um mini-app de felicitações de aniversário"',
592
- steps_title: ' 📖 Primeiros passos',
593
- step1: ' {0}Step 1{1} Abra sua ferramenta IA (Codex / Claude Code / Cursor, etc.)',
594
- step2: ' {0}Step 2{1} Descreva o app que deseja em linguagem natural',
595
- step3: ' {0}Step 3{1} A IA executa automaticamente os comandos openyida',
596
- step4: ' {0}Step 4{1} Obtenha o link do seu app Yida 🎉',
597
- commands_title: ' ⚡ Comandos rápidos',
598
- cmd_env: ' {0}openyida env{1} {2}# Detectar ambiente de ferramenta IA e status de login{3}',
599
- cmd_login: ' {0}openyida login{1} {2}# Fazer login no Yida{3}',
600
- cmd_help: ' {0}openyida --help{1} {2}# Ver todos os comandos{3}',
601
- footer1: ' 📚 Documentação: https://github.com/openyida/openyida',
602
- footer2: ' 💬 Comunidade: Junte-se à comunidade OpenYida no DingTalk',
603
- },
604
-
605
- // ── lib/cdn-*.js ───────────────────────────────────
606
- cdn: {
607
- config_load_error: 'Falha ao carregar configuração CDN: {0}',
608
- config_saved: '✅ Configuração CDN salva em: {0}',
609
- config_usage: 'Uso: openyida cdn-config [opções]',
610
- config_file_path: '📄 Arquivo de configuração: {0}',
611
- config_section_aliyun: '🔐 Credenciais do Alibaba Cloud',
612
- config_section_cdn: '🌐 Configuração CDN',
613
- config_section_oss: '📦 Configuração OSS',
614
- config_section_upload: '📤 Configuração de upload',
615
- config_cdn_domain: 'Domínio CDN',
616
- config_oss_region: 'Região OSS',
617
- config_oss_bucket: 'Bucket OSS',
618
- config_oss_endpoint: 'Endpoint OSS',
619
- config_upload_path: 'Caminho de upload',
620
- config_compress: 'Compressão de imagem',
621
- config_max_width: 'Largura máxima',
622
- config_quality: 'Qualidade de imagem',
623
- config_not_set: 'Não configurado',
624
- config_enabled: 'Habilitado',
625
- config_disabled: 'Desabilitado',
626
- config_status_valid: '✅ Configuração completa, pronta para uso',
627
- config_status_invalid: '⚠️ Configuração incompleta',
628
- config_missing: ' Campos faltantes: {0}',
629
- config_updated: '✅ Configuração atualizada!',
630
- config_init_title: '🔧 Assistente de inicialização CDN',
631
- config_init_desc: 'Para usar o upload de imagens CDN, configure o seguinte:',
632
- upload_no_files: '❌ Por favor especifique arquivos de imagem para upload',
633
- config_incomplete: '❌ Configuração CDN incompleta',
634
- missing_fields: ' Campos faltantes: {0}',
635
- run_config_init: ' Por favor execute primeiro: openyida cdn-config --init',
636
- no_config: '❌ Configuração CDN não encontrada',
637
- oss_sdk_required: '❌ SDK ali-oss ausente',
638
- run_npm_install: ' Execute: npm install {0}',
639
- no_images_found: '❌ Nenhum arquivo de imagem suportado encontrado',
640
- uploading_images: '📤 Fazendo upload de {0} imagens...',
641
- uploading_file: ' Enviando: {0}',
642
- upload_success: ' ✅ {0}',
643
- upload_failed: ' ❌ {0} falha no upload: {1}',
644
- upload_summary: '\n📊 Resumo do upload',
645
- upload_success_count: ' Sucesso: {0}',
646
- upload_fail_count: ' Falhas: {0}',
647
- cdn_urls: '\n🔗 URLs CDN:',
648
- upload_error: '❌ Falha no upload: {0}',
649
- refresh_no_targets: '❌ Por favor especifique URLs ou diretórios para atualizar',
650
- cdn_sdk_required: '❌ SDK CDN do Alibaba Cloud ausente',
651
- querying_quota: '📊 Consultando cota de atualização...',
652
- quota_info: ' Atualização URL: {0}/dia, {1} restantes | Diretórios: {2}/dia, {3} restantes',
653
- refreshing_urls: '🔄 Atualizando {0} URLs...',
654
- refreshing_paths: '🔄 Atualizando {0} diretórios...',
655
- refresh_task_id: ' ✅ ID da tarefa: {0}',
656
- refresh_urls_failed: ' ❌ Falha ao atualizar URLs: {0}',
657
- refresh_paths_failed: ' ❌ Falha ao atualizar diretórios: {0}',
658
- refresh_summary: '\n📊 Resumo da atualização',
659
- url_refresh_success: ' ✅ Atualização de URL bem-sucedida, ID da tarefa: {0}',
660
- path_refresh_success: ' ✅ Atualização de diretório bem-sucedida, ID da tarefa: {0}',
661
- refresh_error: '❌ Falha na atualização: {0}',
662
- file_not_found: '❌ Arquivo não encontrado: {0}',
663
- },
664
-
665
- // ── src/flash-note/flash-to-prd.ts ──────────────
666
- flashNote: {
667
- toPrd: {
668
- title: '📋 Nota Flash DingTalk para PRD',
669
- help_usage: 'Uso: openyida flash-to-prd --file <caminho> [--name <nome-projeto>]',
670
- help_usage2: ' openyida flash-to-prd --name <nome-projeto> (ler de stdin)',
671
- help_args_title: 'Argumentos:',
672
- help_arg_file: ' --file, -f <caminho> Caminho do arquivo de nota flash (.txt / .md)',
673
- help_arg_name: ' --name, -n <nome> Nome do projeto (opcional, extraido automaticamente)',
674
- help_arg_max_tokens: ' --max-tokens <qtd> Tokens max. de saida AI (padrao 8000)',
675
- help_examples_title: 'Exemplos:',
676
- help_example1: ' openyida flash-to-prd --file ./meeting-notes.txt --name "Inspecao de equipamentos"',
677
- help_example2: ' cat meeting.txt | openyida flash-to-prd --name "Inspecao de equipamentos"',
678
- step_read: '[Passo 1] Lendo conteudo da nota flash...',
679
- file_not_found: 'Arquivo nao encontrado: {0}',
680
- no_input: 'Nenhum conteudo fornecido. Use --file para especificar um arquivo ou redirecione conteudo via stdin.',
681
- stdin_empty: 'A entrada padrao esta vazia',
682
- read_success: '✅ Leitura bem-sucedida, {0} caracteres',
683
- step_load_module: '[Passo 2] Carregando modulo construtor de prompt...',
684
- module_loaded_builtin: '✅ Modulo de prompt integrado carregado',
685
- module_loaded_local: '✅ Modulo de prompt local carregado: {0}',
686
- module_not_found: '❌ Modulo build-flash-note-prompt.js nao encontrado',
687
- module_path_tried: ' Caminho tentado {0}: {1}',
688
- step_preprocess: '[Passo 3] Pre-processamento + reconhecimento de reuniao...',
689
- preprocess_result: ' Pre-processamento: {0} car. -> {1} car.',
690
- meeting_meta: ' Metadados da reuniao: {0} campos{1}',
691
- a1_sections: ' Secoes resumo A1: {0}{1}',
692
- speakers: ' Palestrantes identificados: {0}{1}',
693
- speakers_with_role: ' (com {0} anotacoes de papel)',
694
- step_login: '[Passo 4] Verificando estado de login...',
695
- no_login: ' Nenhuma sessao encontrada, iniciando login...',
696
- login_ready: '✅ Login pronto ({0})',
697
- step_ai: '[Passo 5] Chamando AI para gerar PRD...',
698
- single_segment: ' Modo segmento unico, comprimento do prompt: {0} car.',
699
- multi_segment: ' Modo multi-segmento, {0} segmentos no total',
700
- extracting_segment: ' Extraindo segmento {0}/{1} ({2} car.)...',
701
- merging_segments: ' Mesclando resultados dos segmentos...',
702
- ai_success: '✅ PRD gerado com sucesso',
703
- ai_error: 'Falha na chamada API AI: {0}',
704
- done: '✅ Conversao de nota flash para PRD concluida',
705
- done_project: ' Nome do projeto: {0}',
706
- done_file: ' Arquivo de saida: {0}',
707
- done_size: ' Tamanho do arquivo: {0} caracteres',
708
- done_meeting: ' Reconhecimento de reuniao: {0} metadados, {1} secoes A1, {2} palestrantes',
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
- };