yidaconnector 2026.6.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (79) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +383 -0
  3. package/bin/yida.js +670 -0
  4. package/lib/app/form-navigation.js +58 -0
  5. package/lib/app/get-schema.js +538 -0
  6. package/lib/auth/auth.js +294 -0
  7. package/lib/auth/cdp-browser-login.js +390 -0
  8. package/lib/auth/codex-login.js +71 -0
  9. package/lib/auth/login.js +475 -0
  10. package/lib/auth/org.js +363 -0
  11. package/lib/auth/qr-login.js +1563 -0
  12. package/lib/core/chalk.js +384 -0
  13. package/lib/core/check-update.js +82 -0
  14. package/lib/core/cli-error.js +39 -0
  15. package/lib/core/command-manifest.js +106 -0
  16. package/lib/core/env-cmd.js +545 -0
  17. package/lib/core/env-manager.js +601 -0
  18. package/lib/core/env.js +287 -0
  19. package/lib/core/i18n.js +177 -0
  20. package/lib/core/locales/ar.js +805 -0
  21. package/lib/core/locales/de.js +805 -0
  22. package/lib/core/locales/en.js +1623 -0
  23. package/lib/core/locales/es.js +805 -0
  24. package/lib/core/locales/fr.js +805 -0
  25. package/lib/core/locales/hi.js +805 -0
  26. package/lib/core/locales/ja.js +1197 -0
  27. package/lib/core/locales/ko.js +807 -0
  28. package/lib/core/locales/pt.js +805 -0
  29. package/lib/core/locales/vi.js +805 -0
  30. package/lib/core/locales/zh-HK.js +1233 -0
  31. package/lib/core/locales/zh.js +1584 -0
  32. package/lib/core/query-data.js +781 -0
  33. package/lib/core/redact.js +100 -0
  34. package/lib/core/utils.js +799 -0
  35. package/lib/core/yida-client.js +117 -0
  36. package/package.json +94 -0
  37. package/project/config.json +4 -0
  38. package/project/pages/src/demo-birthday-game.oyd.jsx +832 -0
  39. package/project/pages/src/demo-chip-insight.oyd.jsx +983 -0
  40. package/project/pages/src/demo-compat-smoke.oyd.jsx +58 -0
  41. package/project/pages/src/demo-crm-batch-entry.oyd.jsx +805 -0
  42. package/project/pages/src/demo-crm-dashboard.oyd.jsx +677 -0
  43. package/project/pages/src/demo-future-vision-2026.oyd.jsx +1102 -0
  44. package/project/pages/src/demo-ppt.oyd.jsx +1192 -0
  45. package/project/pages/src/demo-salary-calculator.oyd.jsx +904 -0
  46. package/project/pages/src/yidaconnector-knowledge-doc.oyd.jsx +1714 -0
  47. package/project/prd/demo-birthday-game.md +39 -0
  48. package/project/prd/demo-crm.md +463 -0
  49. package/project/prd/demo-dingtalk-ai-solution-center.md +425 -0
  50. package/project/prd/demo-future-vision-2026.md +78 -0
  51. package/project/prd/demo-salary-calculator.md +101 -0
  52. package/scripts/build-skills-package.js +406 -0
  53. package/scripts/check-syntax.js +59 -0
  54. package/scripts/demo-dws.sh +106 -0
  55. package/scripts/e2e-real/cleanup.js +67 -0
  56. package/scripts/e2e-real/fixtures/form-fields.json +18 -0
  57. package/scripts/e2e-real/full-runner.js +1566 -0
  58. package/scripts/e2e-real/runner.js +293 -0
  59. package/scripts/e2e-real/skill-coverage.js +115 -0
  60. package/scripts/generate-command-docs.js +109 -0
  61. package/scripts/nightly-smoke.js +134 -0
  62. package/scripts/postinstall.js +545 -0
  63. package/scripts/solution-center-runner.js +368 -0
  64. package/scripts/validate-ci.sh +50 -0
  65. package/scripts/validate-command-manifest.js +119 -0
  66. package/scripts/validate-package-size.js +78 -0
  67. package/scripts/validate-skills.js +247 -0
  68. package/scripts/validate-structure.js +66 -0
  69. package/yida-skills/SKILL.md +163 -0
  70. package/yida-skills/references/yida-api.md +1309 -0
  71. package/yida-skills/skills/large-file-write/SKILL.md +91 -0
  72. package/yida-skills/skills/large-file-write/references/write-patterns.md +149 -0
  73. package/yida-skills/skills/large-file-write/scripts/write.js +157 -0
  74. package/yida-skills/skills/yida-data-management/SKILL.md +252 -0
  75. package/yida-skills/skills/yida-data-management/references/api-matrix.md +49 -0
  76. package/yida-skills/skills/yida-data-management/references/data-format-guide.md +159 -0
  77. package/yida-skills/skills/yida-data-management/references/verified-endpoints.md +62 -0
  78. package/yida-skills/skills/yida-login/SKILL.md +159 -0
  79. package/yida-skills/skills/yida-logout/SKILL.md +67 -0
@@ -0,0 +1,805 @@
1
+ 'use strict';
2
+
3
+ /**
4
+ * 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 (cache primeiro, use --browser ou --agent-qr se necessário)',
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_get_schema: 'Obter Schema do formulário',
35
+ cmd_create_page: 'Criar página de exibição personalizada',
36
+ cmd_generate_page: 'Generate page from curated template',
37
+ cmd_check_page: 'Check custom page standards',
38
+ cmd_compile: 'Compilar página personalizada localmente',
39
+ cmd_publish: 'Compilar e publicar página personalizada',
40
+ cmd_update_form_config: 'Atualizar configuração do formulário',
41
+ group_data: 'Dados & Permissões',
42
+ cmd_data: 'Gerenciamento unificado de dados (formulário/processo/tarefa/subformulário)',
43
+ cmd_task_center: 'Centro de tarefas global (pendente/processado/CC etc.)',
44
+ cmd_basic_info: 'Consultar info da organizacao, capacidade, cotas e dominio',
45
+ cmd_get_permission: 'Consultar configuração de permissões',
46
+ cmd_save_permission: 'Salvar configuração de permissões',
47
+ cmd_corp_manager: 'Gerenciar permissões da plataforma',
48
+ cmd_agent_center: 'Gerenciar delegações de processo e desligamento',
49
+ group_process: 'Processos',
50
+ cmd_configure_process: 'Configurar e publicar regras de processo',
51
+ cmd_create_process: 'Criar formulário de processo (tudo-em-um)',
52
+ cmd_ai_form_setting: 'Manage process form AI approval prompts',
53
+ cmd_process_preview: 'Pré-visualizar instância de processo (fluxograma)',
54
+ group_share: 'Configuração & Compartilhamento de página',
55
+ cmd_verify_url: 'Verificar URL curta',
56
+ cmd_save_share: 'Salvar configuração de acesso público / compartilhamento',
57
+ cmd_get_page_config: 'Consultar configuração de acesso público',
58
+ cmd_externalize_form: 'Plan external access-safe mirror fields',
59
+ group_report: 'Relatórios',
60
+ cmd_create_report: 'Criar relatório Yida',
61
+ cmd_append_chart: 'Adicionar gráfico a relatório existente',
62
+ group_connector: 'Conectores',
63
+ cmd_connector_list: 'Listar conectores HTTP',
64
+ cmd_connector_create: 'Criar conector',
65
+ cmd_connector_detail: 'Ver detalhes do conector',
66
+ cmd_connector_delete: 'Excluir conector',
67
+ cmd_connector_add_action: 'Adicionar ação',
68
+ cmd_connector_list_actions: 'Listar ações',
69
+ cmd_connector_delete_action: 'Excluir ação',
70
+ cmd_connector_test: 'Testar ação',
71
+ cmd_connector_list_connections: 'Listar conexões de autenticação',
72
+ cmd_connector_create_connection: 'Criar conexão de autenticação',
73
+ cmd_connector_smart: 'Criação inteligente (de cURL)',
74
+ cmd_connector_parse_api: 'Analisar informações da API',
75
+ cmd_connector_gen_template: 'Gerar modelo de documento API',
76
+ cmd_connector_more: 'Ver mais subcomandos',
77
+ group_integration: 'Integração & DingTalk',
78
+ cmd_integration: 'Criar fluxo de automação',
79
+ cmd_integration_list: 'Listar fluxos de automação',
80
+ cmd_integration_enable: 'Ativar fluxo de automação',
81
+ cmd_integration_disable: 'Desativar fluxo de automação',
82
+ cmd_integration_check: 'Check abnormal integration automation run logs',
83
+ cmd_dws: 'DingTalk CLI (contatos/calendário/tarefas/aprovação etc.)',
84
+ cmd_dingtalk_link: 'Gerar links DingTalk AppLink / dingtalk:// legados',
85
+ group_utility: 'Utilitários',
86
+ cmd_commands: 'Emitir manifesto de comandos legível por máquina',
87
+ cmd_a2a: 'Iniciar adaptador A2A local somente leitura ou imprimir Agent Card',
88
+ cmd_bridge: 'Iniciar serviço local YidaConnector web bridge',
89
+ cmd_db_seq_fix: 'Detect and repair PostgreSQL sequence drift',
90
+ cmd_copy: 'Copiar diretório de trabalho project',
91
+ cmd_sample: 'Gerar exemplos/modelos de código',
92
+ cmd_doctor: 'Diagnóstico de ambiente e reparo automático',
93
+ cmd_update: 'Verificar e atualizar para a versão mais recente',
94
+ cmd_export_conversation: 'Exportar registros de conversa IA',
95
+ cmd_feedback: 'Configurar formulário de feedback e lembretes locais',
96
+ cmd_batch: 'Executar comandos YidaConnector em lote',
97
+ cmd_flash_to_prd: 'Converter notas rápidas ou de reunião para prompt PRD',
98
+ cmd_ai: 'Call Yida AI text and image recognition APIs',
99
+ cmd_cdn: 'Gerenciamento de imagens CDN (config/upload/atualizar)',
100
+ cmd_cdn_config: 'Configurar upload CDN / OSS',
101
+ cmd_cdn_upload: 'Enviar imagem para CDN',
102
+ cmd_cdn_refresh: 'Atualizar cache CDN',
103
+ quickstart_title: 'Início rápido',
104
+ quickstart_app_name: 'Gestão de presença',
105
+ quickstart_form_name: 'Info do funcionário',
106
+ docs: '📚 Documentação:',
107
+ },
108
+
109
+ // ── bin/yida.js ────────────────────────────────────
110
+ cli: {
111
+ integration_help: 'Uso: yidaconnector integration <create|list|enable|disable> ...',
112
+ integration_unknown: 'Subcomando integration desconhecido: {0}',
113
+ integration_help_hint: 'Use yidaconnector integration --help para ver os subcomandos disponíveis',
114
+ integration_list_usage: 'Uso: yidaconnector integration list <appType> [--form-uuid <uuid>] [--status y|n] [--key <kw>] [--page <n>] [--size <n>] [--json]',
115
+ integration_list_example: 'Exemplo: yidaconnector integration list APP_XXX --form-uuid FORM-XXX --json',
116
+ integration_enable_usage: 'Uso: yidaconnector integration enable <appType> <formUuid> <processCode>',
117
+ integration_enable_example: 'Exemplo: yidaconnector integration enable APP_XXX FORM-XXX LPROC-XXX',
118
+ integration_disable_usage: 'Uso: yidaconnector integration disable <appType> <formUuid> <processCode>',
119
+ integration_disable_example: 'Exemplo: yidaconnector integration disable APP_XXX FORM-XXX LPROC-XXX',
120
+ compile_usage: 'Uso: yidaconnector compile <sourceFile>',
121
+ compile_example: 'Exemplo: yidaconnector compile pages/src/home.oyd.jsx',
122
+ check_page_usage: 'Usage: yidaconnector check-page <sourceFile> [--compat] [--json]',
123
+ check_page_example: 'Example: yidaconnector check-page pages/src/home.oyd.jsx --json',
124
+ generate_page_usage: 'Usage: yidaconnector generate-page <template> --output pages/src/home.oyd.jsx [--spec .cache/yidaconnector/page-specs/home.json] [--compile]',
125
+ generate_page_example: 'Example: yidaconnector generate-page product-homepage --brand-name OpenKuma --brand-initials OK --output pages/src/home.oyd.jsx --compile',
126
+ },
127
+
128
+ // ── lib/integration/integration-check.js ─────────
129
+ integration_check: {
130
+ result_sheet: 'Result',
131
+ header_app: 'App',
132
+ header_form_title: 'Form name',
133
+ header_form_uuid: 'Form ID',
134
+ header_flow_name: 'Automation name',
135
+ header_process_code: 'Automation ID',
136
+ header_flow_status: 'Automation status',
137
+ header_event_name: 'Trigger event',
138
+ header_last_action: 'Last action',
139
+ header_modifier: 'Modifier',
140
+ header_modified_time: 'Modified time',
141
+ header_abnormal_log_count: 'Abnormal log count',
142
+ header_proc_inst_id: 'Run instance ID',
143
+ header_form_inst_id: 'Form instance ID',
144
+ header_execution_status: 'Execution status',
145
+ header_exception: 'Exception',
146
+ header_diagnosis: 'Diagnosis',
147
+ header_recommendation: 'Recommendation',
148
+ header_start_time: 'Start time',
149
+ header_finish_time: 'Finish time',
150
+ header_elapsed_ms: 'Elapsed (ms)',
151
+ no_abnormal: 'No abnormal execution logs found',
152
+ app_failed: 'App check failed: {0}',
153
+ summary: 'Check complete: {0} apps, {1} automations, {2} with abnormal logs',
154
+ apps_failed: '{0} app(s) failed to check. See JSON output or error summary for details.',
155
+ no_logs: 'No abnormal execution logs found.',
156
+ usage: 'yidaconnector integration check <appType...> [--json] [--output result.xlsx] [--no-progress] [--flow-types 1,2,3,5,6] [--log-page-size 10] [--max-log-pages 1]',
157
+ example: 'yidaconnector integration check APP_XXX --output project/output/automation-errors.xlsx',
158
+ missing_app: 'Missing appType. Usage: yidaconnector integration check <appType...>',
159
+ banner_title: 'Check integration automation abnormal logs',
160
+ status_filter: 'Execution status filter: {0}',
161
+ checking_app: 'Checking app: {0}',
162
+ progress: 'Progress {0}{1}',
163
+ current: ', current: {0}',
164
+ excel_exported: 'Excel exported: {0}',
165
+ },
166
+
167
+ // ── lib/env.js ─────────────────────────────────────
168
+ env: {
169
+ title: ' yidaconnector env - Detecção do ambiente de ferramenta IA',
170
+ detecting: ' Detectando ambiente de ferramenta IA...',
171
+ tool_label: ' Ferramenta IA: {0}',
172
+ login_label: ' Status de login: {0}',
173
+ logged_in: 'Conectado',
174
+ not_logged_in: 'Não conectado',
175
+ corp_label: ' Organização: {0}',
176
+ version_label: ' Versão: {0}',
177
+ },
178
+
179
+ // ── lib/login.js ────────────────────────────────────
180
+ login: {
181
+ title: '🔐 Login no Yida',
182
+ cache_found: ' Credenciais em cache encontradas, validando...',
183
+ cache_valid: '✅ As credenciais em cache são válidas!',
184
+ cache_invalid: ' As credenciais em cache expiraram. É necessário fazer login novamente.',
185
+ starting_qr: ' Iniciando login com código QR...',
186
+ success: '✅ Login realizado com sucesso!',
187
+ failed: '❌ Falha no login: {0}',
188
+ usage: 'Uso: yidaconnector login',
189
+ },
190
+
191
+ // ── lib/logout.js ───────────────────────────────────
192
+ logout: {
193
+ title: '🚪 Logout do Yida',
194
+ success: '✅ Logout realizado com sucesso! As credenciais foram removidas.',
195
+ no_cache: ' Nenhuma credencial encontrada. Já está desconectado.',
196
+ failed: '❌ Falha no logout: {0}',
197
+ },
198
+
199
+ // ── lib/create-app.js ───────────────────────────────
200
+ create_app: {
201
+ usage: 'Uso: yidaconnector create-app "<nome do app>" ou yidaconnector create-app --name "<nome do app>" [--desc "..."] [--theme deepBlue]',
202
+ example: 'Exemplo: yidaconnector create-app --name "Meu App" --desc "Descricao do app" --theme deepBlue',
203
+ title: ' create-app - Ferramenta de criação de aplicativos Yida',
204
+ app_name: '\n Nome do app: {0}',
205
+ app_desc: ' Descrição: {0}',
206
+ app_icon: ' Ícone: {0} ({1})',
207
+ app_theme: ' Tema: colour={0} navTheme={1} layout={2}',
208
+ step_create: '\n🚀 Criando o aplicativo...',
209
+ sending_request: ' Enviando requisição createApp...',
210
+ success: ' ✅ Aplicativo criado com sucesso!',
211
+ app_id: ' ID do app: {0}',
212
+ failed: ' ❌ Falha na criação: {0}',
213
+ error: '\n❌ Erro de criação: {0}',
214
+ },
215
+
216
+ // ── lib/create-form.js ──────────────────────────────
217
+ create_form: {
218
+ usage: 'Uso: yidaconnector create-form <appType> <nome da página> [JSON do esquema]',
219
+ title: ' create-form - Ferramenta de criação/atualização de formulários Yida',
220
+ app_id: '\n ID do app: {0}',
221
+ page_name: ' Nome da página: {0}',
222
+ step_create: '\n📝 Criando página de formulário...',
223
+ sending_request: ' Enviando requisição saveFormSchema...',
224
+ success: ' ✅ Página de formulário criada com sucesso!',
225
+ form_uuid: ' UUID do formulário: {0}',
226
+ failed: ' ❌ Falha na criação: {0}',
227
+ error: '\n❌ Erro de criação: {0}',
228
+ step_check_data: '\n🔍 Passo {0}: Verificar se o formulário possui dados existentes',
229
+ data_exists_warning: ' ⚠️ Este formulário já possui {0} registros! Modificar a estrutura pode causar:',
230
+ data_exists_impact: ' - Perda ou corrupção de dados históricos\n - Anomalias no status do processo\n - Inconsistência de dados',
231
+ data_exists_abort: ' ❌ Modificação cancelada. Adicione --force para continuar.',
232
+ data_exists_confirm_message: 'Este formulário possui {0} registros existentes. Modificar a estrutura pode afetar os dados existentes. Adicione --force para confirmar.',
233
+ data_exists_force_hint: 'Uso: yidaconnector create-form update <appType> <formUuid> <changesJson> --force',
234
+ data_exists_force_proceed: ' ⚠️ Modo --force: confirmação ignorada, modificação forçada da estrutura com {0} registros existentes',
235
+ data_check_empty: ' ✅ Formulário sem dados, seguro para modificar',
236
+ data_check_failed: ' ⚠️ Verificação de dados falhou, continuando com a modificação',
237
+ },
238
+
239
+ // ── lib/create-page.js ──────────────────────────────
240
+ create_page: {
241
+ usage: 'Uso: yidaconnector create-page <appType> <nome da página> [--mode dashboard]',
242
+ example: 'Exemplo: yidaconnector create-page APP_XXX "Dashboard" --mode dashboard',
243
+ title: ' create-page - Ferramenta de criação de páginas personalizadas Yida',
244
+ app_id: '\n ID do app: {0}',
245
+ page_name: ' Nome da página: {0}',
246
+ step_create: '\n📄 Criando página personalizada...',
247
+ success: ' ✅ Página personalizada criada com sucesso!',
248
+ step_dashboard_config: '\n🖥️ Step 3: Configure dashboard fullscreen mode',
249
+ dashboard_config_ok: ' ✅ Dashboard mode configured: top nav hidden, chromeless custom URL enabled',
250
+ dashboard_config_failed: ' ⚠️ Dashboard mode config failed: {0}',
251
+ err_mode_invalid: 'Unsupported page mode: {0}',
252
+ mode_hint: 'Available modes: default, dashboard',
253
+ form_uuid: ' UUID da página: {0}',
254
+ failed: ' ❌ Falha na criação: {0}',
255
+ error: '\n❌ Erro de criação: {0}',
256
+ },
257
+
258
+ // ── lib/get-schema.js ───────────────────────────────
259
+ get_schema: {
260
+ usage: 'Uso: yidaconnector get-schema <appType> <formUuid>',
261
+ title: ' get-schema - Ferramenta de obtenção de esquema Yida',
262
+ app_id: '\n ID do app: {0}',
263
+ form_uuid: ' UUID do formulário: {0}',
264
+ step_get: '\n📋 Obtendo esquema do formulário...',
265
+ success: ' ✅ Esquema obtido com sucesso!',
266
+ failed: ' ❌ Falha na obtenção: {0}',
267
+ error: '\n❌ Erro de obtenção: {0}',
268
+ },
269
+
270
+ // ── lib/check-update.js ─────────────────────────────
271
+ check_update: {
272
+ new_version: '\n🎉 Nova versão disponível: {0} → {1}',
273
+ update_cmd: ' Atualizar: npm install -g yidaconnector',
274
+ check_failed: 'Falha ao verificar versão: {0}',
275
+ },
276
+
277
+ // ── lib/update.js ──────────────────────────────────
278
+ update: {
279
+ checking: 'Verificando a versão mais recente...',
280
+ fetch_failed: 'Não foi possível obter a versão mais recente. Verifique sua conexão de rede',
281
+ already_latest: 'Já está atualizado ({0}), nenhuma atualização necessária',
282
+ found_new_version: 'Nova versão disponível: {0} (atual: {1})',
283
+ installing: 'Instalando yidaconnector@latest...',
284
+ success: 'Atualização bem-sucedida! Versão atual: {0}',
285
+ install_failed: 'Falha na atualização: {0}',
286
+ manual_hint: 'Tente manualmente: npm install -g yidaconnector@latest',
287
+ available: 'atualização disponível',
288
+ up_to_date: 'atualizado',
289
+ label_install: 'Install',
290
+ label_channel: 'Channel',
291
+ label_version: 'Version',
292
+ label_update: 'Update',
293
+ done: 'Atualização concluída!',
294
+ done_hint: 'Execute yidaconnector --version para confirmar a nova versão',
295
+ },
296
+
297
+ // ── lib/export-app.js ───────────────────────────────
298
+ export_app: {
299
+ usage: 'Uso: yidaconnector export-app <appType>',
300
+ title: ' export-app - Ferramenta de exportação de aplicativos Yida',
301
+ app_id: '\n ID do app: {0}',
302
+ step_export: '\n📦 Exportando aplicativo...',
303
+ success: ' ✅ Aplicativo exportado com sucesso!',
304
+ failed: ' ❌ Falha na exportação: {0}',
305
+ error: '\n❌ Erro de exportação: {0}',
306
+ },
307
+
308
+ // ── lib/import-app.js ───────────────────────────────
309
+ import_app: {
310
+ usage: 'Uso: yidaconnector import-app <caminho do arquivo>',
311
+ title: ' import-app - Ferramenta de importação de aplicativos Yida',
312
+ file_path: '\n Caminho do arquivo: {0}',
313
+ step_import: '\n📥 Importando aplicativo...',
314
+ success: ' ✅ Aplicativo importado com sucesso!',
315
+ failed: ' ❌ Falha na importação: {0}',
316
+ error: '\n❌ Erro de importação: {0}',
317
+ },
318
+
319
+ // ── lib/get-page-config.js ──────────────────────────
320
+ get_page_config: {
321
+ usage: 'Uso: yidaconnector get-page-config <appType> <formUuid>',
322
+ title: ' get-page-config - Ferramenta de obtenção de configuração de página Yida',
323
+ app_id: '\n ID do app: {0}',
324
+ form_uuid: ' UUID do formulário: {0}',
325
+ step_get: '\n🔍 Obtendo configuração da página...',
326
+ success: ' ✅ Configuração obtida com sucesso!',
327
+ failed: ' ❌ Falha na obtenção: {0}',
328
+ error: '\n❌ Erro de obtenção: {0}',
329
+ },
330
+
331
+ // ── lib/save-share-config.js ────────────────────────
332
+ save_share_config: {
333
+ usage: 'Uso: yidaconnector save-share-config <appType> <formUuid> <openUrl> <isOpen> [openAuth]',
334
+ title: ' save-share-config - Ferramenta de salvamento de configuração de acesso público Yida',
335
+ app_id: '\n ID do app: {0}',
336
+ form_uuid: ' UUID do formulário: {0}',
337
+ open_url: ' URL pública: {0}',
338
+ is_open: ' Acesso público: {0}',
339
+ open_auth: ' Auth necessária: {0}',
340
+ step_validate: '\n📋 Step 0: Validar parâmetros',
341
+ validate_ok: ' ✅ Validação bem-sucedida',
342
+ validate_failed: ' ❌ Validação falhou: {0}',
343
+ step_save: '\n💾 Step 2: Salvar configuração de acesso público',
344
+ sending_request: ' Enviando requisição saveShareConfig...',
345
+ save_ok: ' ✅ Configuração salva com sucesso!',
346
+ save_ok_msg: 'Configuração de acesso público salva',
347
+ save_failed: ' ❌ Falha ao salvar: {0}',
348
+ save_failed_msg: 'Falha ao salvar',
349
+ err_is_open_invalid: 'isOpen deve ser y ou n. Valor atual: {0}',
350
+ err_open_auth_invalid: 'openAuth deve ser y ou n. Valor atual: {0}',
351
+ err_open_url_required: 'openUrl é obrigatório para habilitar o acesso público',
352
+ err_open_url_prefix: 'openUrl deve começar com /o/. Valor atual: {0}',
353
+ err_open_url_chars: 'O caminho openUrl suporta apenas a-z A-Z 0-9 _ - e / como separador de segmentos. Valor atual: {0}',
354
+ err_open_url_empty: 'O caminho openUrl não pode estar vazio: {0}',
355
+ },
356
+
357
+ // ── lib/update-form-config.js ──────────────────────
358
+ update_form_config: {
359
+ usage: 'Uso: yidaconnector update-form-config <appType> <formUuid> <isRenderNav> <title>',
360
+ title: ' update-form-config - Ferramenta de atualização de configuração de formulário Yida',
361
+ app_id: '\n ID do app: {0}',
362
+ form_uuid: ' UUID do formulário: {0}',
363
+ is_render_nav: ' Mostrar nav: {0}',
364
+ page_title: ' Título da página: {0}',
365
+ step_update: '\n💾 Step 2: Atualizar configuração do formulário',
366
+ sending_request: ' Enviando requisição updateFormSchemaInfo...',
367
+ update_ok: ' ✅ Configuração atualizada com sucesso!',
368
+ nav_shown: 'Navegação superior exibida',
369
+ nav_hidden: 'Navegação superior oculta',
370
+ update_failed: ' ❌ Falha na atualização: {0}',
371
+ update_failed_msg: 'Falha na atualização',
372
+ },
373
+
374
+ // ── lib/verify-short-url.js ────────────────────────
375
+ verify_short_url: {
376
+ usage: 'Uso: yidaconnector verify-short-url <appType> <formUuid> <url>',
377
+ title: ' verify-short-url - Ferramenta de verificação de URL Yida',
378
+ app_id: '\n ID do app: {0}',
379
+ form_uuid: ' UUID do formulário: {0}',
380
+ step_validate: '\n📋 Step 0: Validar formato de URL',
381
+ validate_ok: ' ✅ Formato validado',
382
+ validate_failed: ' ❌ Validação falhou: {0}',
383
+ step_verify: '\n🔍 Step 2: Verificar URL',
384
+ sending_request: ' Enviando requisição verifyShortUrl...',
385
+ url_available: ' ✅ A URL está disponível!',
386
+ open_available_msg: 'Esta URL de acesso público está disponível',
387
+ share_available_msg: 'Esta URL de compartilhamento interno está disponível',
388
+ url_taken: ' ❌ A URL já está em uso',
389
+ url_taken_msg: 'Esta URL curta já está sendo usada',
390
+ verify_failed: ' ❌ Falha na requisição de verificação',
391
+ err_url_prefix: 'A URL deve começar com /o/ ou /s/. Valor atual: {0}',
392
+ err_url_chars: 'O caminho URL suporta apenas a-z A-Z 0-9 _ - e / como separador de segmentos. Valor atual: {0}',
393
+ err_url_empty: 'O caminho URL não pode estar vazio: {0}',
394
+ },
395
+
396
+ // ── lib/copy.js ────────────────────────────────────
397
+ copy: {
398
+ title: ' yidaconnector copy - Inicializar diretório de trabalho Yida',
399
+ package_root: '\n📦 Raiz do pacote: {0}',
400
+ dest_root: '🤖 Diretório destino: {0}',
401
+ dest_empty_flatten: '📂 O diretório destino está vazio, os conteúdos de project/ serão copiados diretamente (sem criar subdiretório project/)',
402
+ force_mode: '⚠️ Modo --force: o diretório destino será esvaziado antes de copiar',
403
+ no_package: '\n❌ Diretório do pacote yidaconnector não encontrado',
404
+ no_package_hint1: ' Certifique-se de que o yidaconnector está instalado globalmente:',
405
+ no_package_hint2: ' npm install -g yidaconnector',
406
+ no_active_tool: '\n❌ Nenhum ambiente de ferramenta IA ativo detectado',
407
+ supported_tools: ' Ferramentas suportadas: Wukong, Codex, OpenCode, Claude Code, Aone Copilot, Cursor, Qoder',
408
+ current_result: '\n Resultados de detecção atuais:',
409
+ force_hint: '\n Para forçar a cópia para o diretório atual:\n yidaconnector copy --force',
410
+ force_cmd: ' yidaconnector copy --force',
411
+ copying_label: '\n📂 Copiando {0}...',
412
+ creating_symlink: '\n📂 Criando link simbólico yida-skills/...',
413
+ file_copied: ' Copiado: {0}',
414
+ cleared: ' 🗑️ Esvaziado: {0}',
415
+ symlink_removed: ' 🗑️ Link simbólico antigo removido: {0}',
416
+ dir_deleted: ' 🗑️ Diretório excluído: {0}',
417
+ removed: ' 🗑️ Removido: {0}',
418
+ symlink_created: ' 🔗 Link simbólico: {0} -> {1}',
419
+ symlink_label: 'link simbólico',
420
+ done: '✅ Concluído!',
421
+ files_copied: ' Arquivos copiados: {0}',
422
+ files_count: '{0} arquivos',
423
+ symlinks_created: ' Links simbólicos criados: {0}',
424
+ result_symlink: ' {0} → {1} (link simbólico)',
425
+ result_copy: ' {0} → {1} ({2} arquivos)',
426
+ wukong_skills_cleanup: '\n🗑️ Ambiente Wukong: Limpando link simbólico yida-skills/...',
427
+ wukong_skills_cleaned: 'limpo',
428
+ wukong_skills_not_found: ' ℹ️ Link simbólico ou diretório yida-skills/ não encontrado: {0}',
429
+ remove_failed: ' ❌ Falha ao remover: {0} ({1})',
430
+ symlink_fallback_copy: ' ⚠️ Criação de link simbólico Windows falhou (requer permissões de admin), usando cópia de diretório: {0}',
431
+ symlink_failed: ' ❌ Falha ao criar link simbólico: {0} ({1})',
432
+ },
433
+
434
+ // ── lib/publish.js ─────────────────────────────────
435
+ generate_page: {
436
+ spec_not_found: 'Spec file not found: {0}',
437
+ spec_invalid: 'Failed to parse spec JSON: {0}',
438
+ unknown_template: 'Unknown page template: {0}',
439
+ available_templates: 'Available templates: {0}',
440
+ template_not_found: 'Template file not found: {0}',
441
+ done: 'Page generated: {0}',
442
+ hint: 'Next run yidaconnector compile <file>, or pass --compile to compile immediately.',
443
+ success: 'Page generation complete',
444
+ },
445
+ page_size: {
446
+ large_source: 'Código de página grande detectado: {0} ({1}, cerca de {2} linhas)',
447
+ long_line_hint: 'Linha única muito longa detectada (cerca de {0} caracteres), geralmente vendor minificado ou base64; mova para fora da página.',
448
+ base64_hint: 'Conteúdo base64 inline longo detectado; envie para CDN/OSS e referencie a URL.',
449
+ 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.',
450
+ windows_hint: 'No Windows, não escreva JSX grande com PowerShell Get-Content -Raw + ConvertTo-Json; use Node fs.writeFileSync/appendFileSync em partes.',
451
+ },
452
+ publish: {
453
+ title: ' yida-publish - Ferramenta de publicação de páginas Yida',
454
+ platform: ' Plataforma: {0}',
455
+ app_id: ' ID do app: {0}',
456
+ form_uuid: ' ID do formulário: {0}',
457
+ source_file: ' Fonte: {0}',
458
+ compiled_file: ' Saída: {0}',
459
+ step_lint: '\n🔍 Step 0: Pré-verificação de padrões de código Yida\n',
460
+ lint_title: '⚠️ Yida page code check:',
461
+ lint_error_line: ' ❌ Linha {0}: {1}',
462
+ lint_warning_line: ' ⚠️ Linha {0}: {1}',
463
+ lint_event_function: 'Ligação de evento usa function, use função de seta (e) => { this.xxx() }',
464
+ lint_missing_render_jsx: 'Missing export function renderJsx(); Yida custom pages must export renderJsx',
465
+ lint_import_require: 'Found import/require. Yida custom pages cannot import modules; load third-party scripts with this.utils.loadScript',
466
+ lint_react_hooks: 'Found React Hooks. Yida runtime uses React 16 class-component style and does not support useState/useEffect hooks',
467
+ lint_export_default: 'Found export default. Yida needs named exports such as export function renderJsx/didMount',
468
+ lint_jsx_extension: 'This .js file contains JSX; prefer .jsx for source files. The compiled output is still .js',
469
+ lint_event_direct_method: 'Event binding passes this.xxx directly and will lose this; use (e) => { this.xxx(e); }',
470
+ lint_event_bind_this: 'Event binding uses .bind(this); use (e) => { this.xxx(e); } instead',
471
+ lint_lifecycle_case: 'Detected lifecycle export {0}; Yida only recognizes {1} (case-sensitive)',
472
+ lint_react_lifecycle_method: 'Detected React lifecycle {0}; export {1} for Yida custom pages',
473
+ lint_event_lowercase: 'Detected lowercase event prop {0}; React/Yida will not bind it. Use {1}',
474
+ lint_event_call_result: 'Event binding invokes a function or is not an expression handler; use (e) => { self.xxx(e); }',
475
+ lint_event_noop_arrow: 'Event arrow function references a handler without calling it; use (e) => { self.xxx(e); }',
476
+ lint_button_missing_handler: 'Visible <button> has no onClick/onMouseDown/onKeyDown or disabled state; bind an event handler or use span/div for static labels',
477
+ lint_array_callback_function: '.{0}(function ...) may lose this in callbacks; use .{0}((item) => ...) instead',
478
+ lint_foreach_callback_function: '.forEach(function ...) may lose this in callbacks; prefer .forEach((item) => ...)',
479
+ lint_controlled_input: 'input uses controlled value mode. Yida pages should use defaultValue + onChange to update _customState',
480
+ lint_native_select_ui: 'Found a native select. User-facing custom page dropdowns should use a Tailwind-styled custom dropdown component for consistent visual quality',
481
+ lint_iframe_self_navigation: 'Yida custom pages run in an iframe. Use target="_top"/target="_blank" or window.top.location for Yida page navigation to avoid nested pages.',
482
+ lint_page_size_limit: 'pageSize={0} exceeds the Yida API limit of 100; use 100 or less',
483
+ lint_yida_api_catch: 'this.utils.yida API call has no detected .catch(); add error handling and toast the user',
484
+ lint_echarts_legacy_map_china: 'ECharts 5 no longer supports echarts/map/js/china.js. Load DataV GeoJSON and call echarts.registerMap("china", geoJson) instead',
485
+ lint_echarts_rich_label_formatter: 'ECharts label.formatter returning rich text templates is unstable in Yida custom pages; prefer plain formatter strings or precomputed label text',
486
+ lint_const_let: 'Usa declaração const/let, recomenda-se mudar para var (compatibilidade do ambiente Yida)',
487
+ 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;',
488
+ 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',
489
+ 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',
490
+ lint_fix_errors: '❌ Por favor corrija os erros acima antes de publicar',
491
+ lint_skip_hint: '💡 Adicione --skip-lint para pular a verificação',
492
+ lint_passed: ' ✅ Verificação de código aprovada\n',
493
+ lint_skipped: '\n⏭️ Pré-verificação de código ignorada (--skip-lint)\n',
494
+ duplicate_source_mismatch: ' ⚠️ Found another copy with the same file name but different content. Publishing: {0}; other copy: {1}',
495
+ data_source_fetching: ' Reading existing page data sources...',
496
+ data_source_preserved: ' ✅ Preserved existing page data sources: {0}',
497
+ data_source_none: ' No custom page data sources to preserve',
498
+ data_source_fetch_failed: 'Could not read the existing page Schema, so publishing stopped to avoid clearing existing data sources: {0}',
499
+ target_checking: ' Checking publish target type...',
500
+ target_check_forced: ' ⚠️ Skipped publish target type check (--force)',
501
+ target_check_ok: ' ✅ Publish target confirmed: {0} ({1})',
502
+ target_check_failed: 'Could not verify publish target: {0}',
503
+ target_not_found: 'Publish target was not found in app navigation: {0}',
504
+ target_type_invalid: 'Publish target is not a custom display page: {0} current type is {1}',
505
+ target_type_hint: 'The current target "{0}" does not look like a custom page (type: {1}). Do not publish JSX to data forms or process forms.',
506
+ target_list_hint: 'Run yidaconnector list-forms {0} --keyword <page name>, then choose a custom page formUuid with formType=display.',
507
+ target_force_hint: 'Append --force only when you intentionally bypass this guard; it overwrites the target Schema and should be used only for a known custom page.',
508
+ step_compile: '\n📦 Step 1: Compilar fonte e construir esquema\n',
509
+ reading_source: '[1/4] Lendo fonte {0}...',
510
+ compiling: '[2/4] Compilando {0} com Babel...',
511
+ compile_failed: ' ❌ Falha na compilação: {0}',
512
+ compile_location: '\n Localização: linha {0}, coluna {1}',
513
+ compile_error_code: ' Código de erro: {0}',
514
+ minifying: '[3/4] Minificando com UglifyJS → {0}...',
515
+ minify_failed: ' Falha na minificação: {0}',
516
+ compile_done: ' ✅ Compilação concluída: {0}',
517
+ building_schema: '[4/4] Construindo esquema...',
518
+ schema_built: ' ✅ Esquema construído com sucesso!',
519
+ step_login: '\n🔑 Step 2: Ler credenciais de login',
520
+ step_publish: '\n📤 Step 3: Publicar esquema\n',
521
+ publish_failed: '\n❌ Falha na publicação: {0}',
522
+ schema_published: ' ✅ Esquema publicado com sucesso!',
523
+ step_config: '\n⚙️ Step 4: Atualizar configuração do formulário\n',
524
+ success: ' ✅ Publicado com sucesso!',
525
+ config_failed: ' ⚠️ Falha ao atualizar configuração: {0}',
526
+ schema_ok_config_failed: 'Schema published, but config update failed',
527
+ step_health_check: '\n🩺 Step 5: Health check published page\n',
528
+ health_check_ok: ' ✅ Health check passed: HTTP {0}',
529
+ health_check_failed: ' ⚠️ Health check failed: HTTP {0} {1}',
530
+ exception: '\n❌ Erro de publicação: {0}',
531
+ source_not_found: '❌ Arquivo fonte não encontrado: {0}',
532
+ usage: 'Uso: yidaconnector publish <arquivoFonte> <appType> <formUuid> [--health-check]',
533
+ example: 'Exemplo: yidaconnector publish pages/src/xxx.js APP_XXX FORM-XXX --health-check',
534
+ },
535
+
536
+ // ── lib/qr-login.js ────────────────────────────────
537
+ qr_login: {
538
+ title: '🔐 Login Yida com código QR no terminal',
539
+ step_init: ' Step 1: Inicializando sessão...',
540
+ step_get_qr: ' Step 2: Obtendo código QR...',
541
+ scan_hint: ' 📱 Escaneie o código QR abaixo com o DingTalk:',
542
+ qr_url_label: ' URL do código QR: {0}',
543
+ waiting_scan: ' ⏳ Aguardando escaneamento (até 2 minutos)...',
544
+ scanned_confirm: ' ✅ Código QR escaneado! Por favor confirme o login no seu telefone...',
545
+ scan_success: ' ✅ Escaneamento confirmado!',
546
+ step_exchange: ' Step 4: Trocando credenciais...',
547
+ step_get_corps: ' Step 5: Obtendo lista de organizações...',
548
+ step_switch_corp: ' Step 7: Mudando para a organização selecionada...',
549
+ only_one_corp: ' ✅ Uma organização detectada: {0}, selecionada automaticamente',
550
+ select_corp_prompt: ' 🏢 Múltiplas organizações encontradas, por favor selecione uma:',
551
+ select_corp_input: ' Digite o número (1-{0}): ',
552
+ select_corp_invalid: ' ❌ Entrada inválida, digite um número entre 1 e {0}',
553
+ target_corp_not_found: 'O corpId especificado não foi encontrado nas organizações acessíveis: {0}',
554
+ corp_selected: ' ✅ Organização selecionada: {0}',
555
+ login_success: '✅ Login realizado com sucesso!',
556
+ qrcode_fallback: ' ⚠️ Pacote qrcode não instalado, visite a URL abaixo manualmente:',
557
+ qrcode_render_failed: ' ⚠️ Falha ao renderizar código QR ({0}), visite a URL abaixo:',
558
+ qr_expired: 'Código QR expirado, por favor faça login novamente',
559
+ poll_timeout: 'Tempo de espera de escaneamento esgotado (2 minutos), por favor faça login novamente',
560
+ no_corp_available: 'Nenhuma organização acessível encontrada',
561
+ no_csrf_in_cookie: 'Login bem-sucedido mas csrf_token não encontrado, tente novamente',
562
+ stdin_closed: 'Fluxo de entrada fechado, não é possível selecionar organização',
563
+ },
564
+
565
+ // ── scripts/postinstall.js ─────────────────────────
566
+ postinstall: {
567
+ welcome_title: ' 🎉 Bem-vindo ao YidaConnector! ',
568
+ install_success: ' ✅ Instalação concluída! {0} A ferramenta de desenvolvimento IA Yida está pronta.',
569
+ update_success: ' ✅ Atualização concluída! {0} YidaConnector foi atualizado para a versão mais recente.',
570
+ ai_mode_title: ' 🚀 Modo de conversa IA',
571
+ ai_mode_desc: ' No Codex / Claude Code / Aone Copilot / Cursor, converse diretamente:',
572
+ prompt1: ' 📋 "Crie um sistema de gestão de presença com Yida"',
573
+ prompt2: ' 💰 "Construa um app de calculadora de salário pessoal"',
574
+ prompt3: ' 🏢 "Crie um sistema CRM de gestão de clientes"',
575
+ prompt4: ' 🎂 "Faça um mini-app de felicitações de aniversário"',
576
+ steps_title: ' 📖 Primeiros passos',
577
+ step1: ' {0}Step 1{1} Abra sua ferramenta IA (Codex / Claude Code / Cursor, etc.)',
578
+ step2: ' {0}Step 2{1} Descreva o app que deseja em linguagem natural',
579
+ step3: ' {0}Step 3{1} A IA executa automaticamente os comandos yidaconnector',
580
+ step4: ' {0}Step 4{1} Obtenha o link do seu app Yida 🎉',
581
+ commands_title: ' ⚡ Comandos rápidos',
582
+ cmd_env: ' {0}yidaconnector env{1} {2}# Detectar ambiente de ferramenta IA e status de login{3}',
583
+ cmd_login: ' {0}yidaconnector login{1} {2}# Fazer login no Yida{3}',
584
+ cmd_help: ' {0}yidaconnector --help{1} {2}# Ver todos os comandos{3}',
585
+ footer1: ' 📚 Documentação: https://github.com/bunnyrui/yidaconnector',
586
+ footer2: ' 💬 Comunidade: Junte-se à comunidade YidaConnector no DingTalk',
587
+ },
588
+
589
+ // ── lib/cdn-*.js ───────────────────────────────────
590
+ cdn: {
591
+ config_load_error: 'Falha ao carregar configuração CDN: {0}',
592
+ config_saved: '✅ Configuração CDN salva em: {0}',
593
+ config_usage: 'Uso: yidaconnector cdn-config [opções]',
594
+ config_file_path: '📄 Arquivo de configuração: {0}',
595
+ config_section_aliyun: '🔐 Credenciais do Alibaba Cloud',
596
+ config_section_cdn: '🌐 Configuração CDN',
597
+ config_section_oss: '📦 Configuração OSS',
598
+ config_section_upload: '📤 Configuração de upload',
599
+ config_cdn_domain: 'Domínio CDN',
600
+ config_oss_region: 'Região OSS',
601
+ config_oss_bucket: 'Bucket OSS',
602
+ config_oss_endpoint: 'Endpoint OSS',
603
+ config_upload_path: 'Caminho de upload',
604
+ config_compress: 'Compressão de imagem',
605
+ config_max_width: 'Largura máxima',
606
+ config_quality: 'Qualidade de imagem',
607
+ config_not_set: 'Não configurado',
608
+ config_enabled: 'Habilitado',
609
+ config_disabled: 'Desabilitado',
610
+ config_status_valid: '✅ Configuração completa, pronta para uso',
611
+ config_status_invalid: '⚠️ Configuração incompleta',
612
+ config_missing: ' Campos faltantes: {0}',
613
+ config_updated: '✅ Configuração atualizada!',
614
+ config_init_title: '🔧 Assistente de inicialização CDN',
615
+ config_init_desc: 'Para usar o upload de imagens CDN, configure o seguinte:',
616
+ upload_no_files: '❌ Por favor especifique arquivos de imagem para upload',
617
+ config_incomplete: '❌ Configuração CDN incompleta',
618
+ missing_fields: ' Campos faltantes: {0}',
619
+ run_config_init: ' Por favor execute primeiro: yidaconnector cdn-config --init',
620
+ no_config: '❌ Configuração CDN não encontrada',
621
+ oss_sdk_required: '❌ SDK ali-oss ausente',
622
+ run_npm_install: ' Execute: npm install {0}',
623
+ no_images_found: '❌ Nenhum arquivo de imagem suportado encontrado',
624
+ uploading_images: '📤 Fazendo upload de {0} imagens...',
625
+ uploading_file: ' Enviando: {0}',
626
+ upload_success: ' ✅ {0}',
627
+ upload_failed: ' ❌ {0} falha no upload: {1}',
628
+ upload_summary: '\n📊 Resumo do upload',
629
+ upload_success_count: ' Sucesso: {0}',
630
+ upload_fail_count: ' Falhas: {0}',
631
+ cdn_urls: '\n🔗 URLs CDN:',
632
+ upload_error: '❌ Falha no upload: {0}',
633
+ refresh_no_targets: '❌ Por favor especifique URLs ou diretórios para atualizar',
634
+ cdn_sdk_required: '❌ SDK CDN do Alibaba Cloud ausente',
635
+ querying_quota: '📊 Consultando cota de atualização...',
636
+ quota_info: ' Atualização URL: {0}/dia, {1} restantes | Diretórios: {2}/dia, {3} restantes',
637
+ refreshing_urls: '🔄 Atualizando {0} URLs...',
638
+ refreshing_paths: '🔄 Atualizando {0} diretórios...',
639
+ refresh_task_id: ' ✅ ID da tarefa: {0}',
640
+ refresh_urls_failed: ' ❌ Falha ao atualizar URLs: {0}',
641
+ refresh_paths_failed: ' ❌ Falha ao atualizar diretórios: {0}',
642
+ refresh_summary: '\n📊 Resumo da atualização',
643
+ url_refresh_success: ' ✅ Atualização de URL bem-sucedida, ID da tarefa: {0}',
644
+ path_refresh_success: ' ✅ Atualização de diretório bem-sucedida, ID da tarefa: {0}',
645
+ refresh_error: '❌ Falha na atualização: {0}',
646
+ file_not_found: '❌ Arquivo não encontrado: {0}',
647
+ },
648
+
649
+ // ── src/flash-note/flash-to-prd.ts ──────────────
650
+ flashNote: {
651
+ toPrd: {
652
+ title: '📋 Nota Flash DingTalk para PRD',
653
+ help_usage: 'Uso: yidaconnector flash-to-prd --file <caminho> [--name <nome-projeto>]',
654
+ help_usage2: ' yidaconnector flash-to-prd --name <nome-projeto> (ler de stdin)',
655
+ help_args_title: 'Argumentos:',
656
+ help_arg_file: ' --file, -f <caminho> Caminho do arquivo de nota flash (.txt / .md)',
657
+ help_arg_name: ' --name, -n <nome> Nome do projeto (opcional, extraido automaticamente)',
658
+ help_arg_max_tokens: ' --max-tokens <qtd> Tokens max. de saida AI (padrao 8000)',
659
+ help_examples_title: 'Exemplos:',
660
+ help_example1: ' yidaconnector flash-to-prd --file ./meeting-notes.txt --name "Inspecao de equipamentos"',
661
+ help_example2: ' cat meeting.txt | yidaconnector flash-to-prd --name "Inspecao de equipamentos"',
662
+ step_read: '[Passo 1] Lendo conteudo da nota flash...',
663
+ file_not_found: 'Arquivo nao encontrado: {0}',
664
+ no_input: 'Nenhum conteudo fornecido. Use --file para especificar um arquivo ou redirecione conteudo via stdin.',
665
+ stdin_empty: 'A entrada padrao esta vazia',
666
+ read_success: '✅ Leitura bem-sucedida, {0} caracteres',
667
+ step_load_module: '[Passo 2] Carregando modulo construtor de prompt...',
668
+ module_loaded_builtin: '✅ Modulo de prompt integrado carregado',
669
+ module_loaded_local: '✅ Modulo de prompt local carregado: {0}',
670
+ module_not_found: '❌ Modulo build-flash-note-prompt.js nao encontrado',
671
+ module_path_tried: ' Caminho tentado {0}: {1}',
672
+ step_preprocess: '[Passo 3] Pre-processamento + reconhecimento de reuniao...',
673
+ preprocess_result: ' Pre-processamento: {0} car. -> {1} car.',
674
+ meeting_meta: ' Metadados da reuniao: {0} campos{1}',
675
+ a1_sections: ' Secoes resumo A1: {0}{1}',
676
+ speakers: ' Palestrantes identificados: {0}{1}',
677
+ speakers_with_role: ' (com {0} anotacoes de papel)',
678
+ step_login: '[Passo 4] Verificando estado de login...',
679
+ no_login: ' Nenhuma sessao encontrada, iniciando login...',
680
+ login_ready: '✅ Login pronto ({0})',
681
+ step_ai: '[Passo 5] Chamando AI para gerar PRD...',
682
+ single_segment: ' Modo segmento unico, comprimento do prompt: {0} car.',
683
+ multi_segment: ' Modo multi-segmento, {0} segmentos no total',
684
+ extracting_segment: ' Extraindo segmento {0}/{1} ({2} car.)...',
685
+ merging_segments: ' Mesclando resultados dos segmentos...',
686
+ ai_success: '✅ PRD gerado com sucesso',
687
+ ai_error: 'Falha na chamada API AI: {0}',
688
+ done: '✅ Conversao de nota flash para PRD concluida',
689
+ done_project: ' Nome do projeto: {0}',
690
+ done_file: ' Arquivo de saida: {0}',
691
+ done_size: ' Tamanho do arquivo: {0} caracteres',
692
+ done_meeting: ' Reconhecimento de reuniao: {0} metadados, {1} secoes A1, {2} palestrantes',
693
+ },
694
+ },
695
+ update_app: {
696
+ layout_notice: 'Note: layoutDirection is consumed by the Yida app shell during creation/refresh. If the top action bar does not recover immediately after a backend switch, reopen the workbench or recreate the app with the target layout.',
697
+ },
698
+ aggregate_table: {
699
+ usage: 'Usage: yidaconnector aggregate-table <list|create-empty|inspect|preview|save|publish|status> <appType> ...',
700
+ commands_title: 'Subcommands:',
701
+ cmd_list: 'list <appType> [--keyword <text>] [--json] List aggregate tables in an app',
702
+ cmd_create_empty: 'create-empty <appType> "<name>" [--open|--no-open] Create a blank aggregate table and return the designer URL',
703
+ cmd_inspect: 'inspect <appType> <formUuid> [--json] Read aggregate table design config',
704
+ cmd_preview: 'preview <appType> <formUuid> <design.json> [--json] Preview config without saving',
705
+ cmd_save: 'save <appType> <formUuid> <design.json> [--json] Save an aggregate table draft',
706
+ cmd_publish: 'publish <appType> <formUuid> <design.json> [--json] Publish aggregate table config',
707
+ cmd_status: 'status <appType> <formUuid> [--json] Query aggregate table build status',
708
+ examples_title: 'Examples:',
709
+ example_list: 'yidaconnector aggregate-table list APP_XXX',
710
+ example_create_empty: 'yidaconnector aggregate-table create-empty APP_XXX "Customer Contract Aggregate" --open',
711
+ example_inspect: 'yidaconnector aggregate-table inspect APP_XXX FORM_XXX --json',
712
+ example_preview: 'yidaconnector aggregate-table preview APP_XXX FORM_XXX .cache/yidaconnector/aggregate/design.json',
713
+ example_save: 'yidaconnector aggregate-table save APP_XXX FORM_XXX .cache/yidaconnector/aggregate/design.json',
714
+ example_publish: 'yidaconnector aggregate-table publish APP_XXX FORM_XXX .cache/yidaconnector/aggregate/design.json',
715
+ example_status: 'yidaconnector aggregate-table status APP_XXX FORM_XXX',
716
+ list_usage: 'Usage: yidaconnector aggregate-table list <appType> [--keyword <text>] [--json]',
717
+ create_empty_usage: 'Usage: yidaconnector aggregate-table create-empty <appType> "<name>" [--locale zh_CN|en_US|ja_JP] [--open|--no-open]',
718
+ inspect_usage: 'Usage: yidaconnector aggregate-table inspect <appType> <formUuid> [--json]',
719
+ preview_usage: 'Usage: yidaconnector aggregate-table preview <appType> <formUuid> <design.json> [--json]',
720
+ save_usage: 'Usage: yidaconnector aggregate-table save <appType> <formUuid> <design.json> [--json]',
721
+ publish_usage: 'Usage: yidaconnector aggregate-table publish <appType> <formUuid> <design.json> [--json]',
722
+ status_usage: 'Usage: yidaconnector aggregate-table status <appType> <formUuid> [--json]',
723
+ no_login: 'No login state found. Run yidaconnector login first.',
724
+ unsupported_locale: 'Unsupported locale: {0}',
725
+ unknown_subcommand: 'Unknown aggregate-table subcommand: {0}',
726
+ design_required: 'Missing aggregate table design JSON or file path',
727
+ invalid_json: 'Aggregate table design config is not valid JSON: {0}',
728
+ design_object_required: 'Aggregate table design config must be a JSON object',
729
+ check_feature: 'Check aggregate table capability',
730
+ feature_disabled: 'Aggregate table is not enabled for this app/org, or the edition quota has been reached',
731
+ create_empty: 'Create blank aggregate table',
732
+ inspect: 'Read aggregate table config',
733
+ preview: 'Preview aggregate table config',
734
+ save: 'Save aggregate table draft',
735
+ publish: 'Publish aggregate table config',
736
+ status: 'Query aggregate table build status',
737
+ publish_requires_source: 'Publishing requires at least one data source. Configure relationForms first.',
738
+ list_success: 'Aggregate table list',
739
+ create_empty_success: 'Aggregate table created',
740
+ inspect_success: 'Aggregate table config loaded',
741
+ preview_success: 'Aggregate table preview succeeded',
742
+ save_success: 'Aggregate table draft saved',
743
+ publish_success: 'Aggregate table published',
744
+ status_success: 'Aggregate table status loaded',
745
+ },
746
+ ai_form_setting: {
747
+ usage: 'Usage: yidaconnector ai-form-setting <get|fields|models|enable|disable|save> <appType> ...',
748
+ commands_title: 'Subcommands:',
749
+ cmd_get: 'get <appType> <formUuid> [--raw] [--json] Query AI approval prompt config',
750
+ cmd_fields: 'fields <appType> <formUuid> [--type TEXT|IMAGE|ATTACHMENT] List insertable fields',
751
+ cmd_models: 'models <appType> [--type TEXT|IMAGE|ATTACHMENT] List available models',
752
+ cmd_enable: 'enable <appType> <formUuid> [--json] Enable AI approval prompts',
753
+ cmd_disable: 'disable <appType> <formUuid> [--json] Disable AI approval prompts',
754
+ cmd_save: 'save <appType> <formUuid> <config.json> [--enable] Save prompts and model config',
755
+ examples_title: 'Examples:',
756
+ example_get: 'yidaconnector ai-form-setting get APP_XXX FORM_XXX --json',
757
+ example_fields: 'yidaconnector ai-form-setting fields APP_XXX FORM_XXX --type ATTACHMENT',
758
+ example_models: 'yidaconnector ai-form-setting models APP_XXX --type IMAGE',
759
+ example_enable: 'yidaconnector ai-form-setting enable APP_XXX FORM_XXX',
760
+ example_save: 'yidaconnector ai-form-setting save APP_XXX FORM_XXX .cache/yidaconnector/ai-form-setting/config.json --enable',
761
+ enable_disable_conflict: '--enable and --disable cannot be used together',
762
+ invalid_type: 'Invalid prompt type: {0}. Valid values: {1}',
763
+ invalid_status: 'Invalid AI approval prompt status: {0}',
764
+ config_required: 'Missing AI approval prompt JSON config or file path',
765
+ invalid_json: 'AI approval prompt config is not valid JSON: {0}',
766
+ invalid_variable: 'Variable #{0} must be an object',
767
+ variable_required: 'Variable #{0} must contain varName and fieldId',
768
+ prompt_required: 'Prompt {0} is missing prompt/content',
769
+ variables_array_required: 'variables must be an array',
770
+ invalid_item: 'Prompt config #{0} must be an object',
771
+ model_required: 'Prompt {0} is missing modelId',
772
+ invalid_config_part: '{0} must be a JSON object or a valid JSON string',
773
+ config_object_required: 'AI approval prompt config must be a JSON object or array',
774
+ items_array_required: 'AI approval prompt config must contain an items array',
775
+ too_many_items: 'AI approval prompts support up to {0} items',
776
+ duplicate_item_id: 'Duplicate itemId: {0}',
777
+ no_login: 'No login state found. Run yidaconnector login first.',
778
+ get_usage: 'Usage: yidaconnector ai-form-setting get <appType> <formUuid> [--raw] [--json]',
779
+ fields_usage: 'Usage: yidaconnector ai-form-setting fields <appType> <formUuid> [--type TEXT|IMAGE|ATTACHMENT] [--json]',
780
+ models_usage: 'Usage: yidaconnector ai-form-setting models <appType> [--type TEXT|IMAGE|ATTACHMENT] [--json]',
781
+ status_usage: 'Usage: yidaconnector ai-form-setting <enable|disable> <appType> <formUuid> [--json]',
782
+ save_usage: 'Usage: yidaconnector ai-form-setting save <appType> <formUuid> <config.json> [--enable|--disable] [--json]',
783
+ get_action: 'Query AI approval prompt config',
784
+ fields_action: 'Query AI approval prompt fields',
785
+ models_action: 'Query AI approval prompt models',
786
+ status_action: 'Update AI approval prompt status',
787
+ save_action: 'Save AI approval prompt config',
788
+ get_success: 'AI approval prompt config',
789
+ fields_success: 'AI approval prompt fields',
790
+ models_success: 'AI approval prompt models',
791
+ save_success: 'AI approval prompt config saved',
792
+ enabled: 'AI approval prompts enabled',
793
+ disabled: 'AI approval prompts disabled',
794
+ unknown_subcommand: 'Unknown ai-form-setting subcommand: {0}',
795
+ },
796
+ codex_login: {
797
+ title: ' yidaconnector login {0} - {1} Login Mode',
798
+ not_codex: 'Current environment is not detected as Codex / Qoder / Wukong; returning an in-app browser login handoff only.',
799
+ no_playwright: '{0} mode does not require Playwright or a separate Chromium install.',
800
+ using_browser: '{0} in-app Browser is only suitable for unauthenticated page previews; use yidaconnector login --browser for Yida login cookies.',
801
+ browser_handoff_hint: '{0} in-app Browser does not support authentication Cookie export. Use yidaconnector login --browser when CLI cookies are required.',
802
+ handoff_message: '{0} in-app Browser cannot export Yida login cookies. Run fallback_command when CLI cookies are required.',
803
+ cache_available: 'Existing CLI Cookie cache is available; no browser login needed.',
804
+ },
805
+ };