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,836 +0,0 @@
1
- 'use strict';
2
-
3
- /**
4
- * 한국어 언어 팩 (Korean)
5
- */
6
- module.exports = {
7
- // ── bin/yida.js printHelp() ────────────────────────
8
- help: {
9
- subtitle: 'Yida 로우코드 AI 개발 도구',
10
- usage: '사용법:',
11
- alias: '별칭:',
12
- group_auth: '환경 & 인증',
13
- cmd_login: 'Login with OAuth token mode',
14
- cmd_logout: '로그아웃 / 계정 전환',
15
- cmd_auth: '로그인 상태 관리',
16
- cmd_org: '조직 관리 (목록 / 전환)',
17
- cmd_env: 'AI 도구 환경 및 로그인 상태 감지',
18
- cmd_env_management: 'Manage public/private environment profiles',
19
- group_app: '앱 관리',
20
- cmd_app_list: '내 Yida 앱 목록 조회',
21
- cmd_corp_efficiency: '기업 효율 개요 및 상세 보고서 조회',
22
- cmd_create_app: 'Yida 앱 생성',
23
- cmd_update_app: '앱 정보 업데이트',
24
- cmd_nav_group: '앱 사이드바 내비게이션 그룹 관리',
25
- cmd_app_permission: '앱 주관리자, 데이터 관리자, 개발 멤버 관리',
26
- cmd_i18n: '앱 다국어 문구와 언어 설정 관리',
27
- cmd_export: '앱 내보내기 (마이그레이션 패키지 생성)',
28
- cmd_import: '마이그레이션 패키지 가져오기, 앱 재구축',
29
- group_form: '양식 & 페이지',
30
- cmd_create_form: '양식 페이지 생성',
31
- cmd_update_form: '양식 페이지 업데이트',
32
- cmd_list_forms: 'List forms/pages in an app',
33
- cmd_aggregate_table: 'Manage aggregate tables (virtualView)',
34
- cmd_er: 'Export app entity relationship diagram',
35
- cmd_get_schema: '양식 Schema 가져오기',
36
- cmd_create_page: '사용자 정의 표시 페이지 생성',
37
- cmd_generate_page: 'Generate page from curated template',
38
- cmd_check_page: 'Check custom page standards',
39
- cmd_compile: '사용자 정의 페이지 로컬 컴파일',
40
- cmd_publish: '사용자 정의 페이지 컴파일 및 게시',
41
- cmd_update_form_config: '양식 설정 업데이트',
42
- group_data: '데이터 & 권한',
43
- cmd_data: '통합 데이터 관리 (양식/프로세스/작업/하위양식)',
44
- cmd_task_center: '글로벌 작업 센터 (할일/처리됨/참조 등)',
45
- cmd_basic_info: '조직 기본 정보, 용량, 할당량 및 도메인 설정 조회',
46
- cmd_get_permission: '양식 권한 설정 조회',
47
- cmd_save_permission: '양식 권한 설정 저장',
48
- cmd_corp_manager: '플랫폼 권한 관리',
49
- cmd_agent_center: '프로세스 위임 및 퇴사자 대리 관리',
50
- group_process: '프로세스',
51
- cmd_configure_process: '프로세스 규칙 설정 및 게시',
52
- cmd_create_process: '프로세스 양식 생성 (통합형)',
53
- cmd_ai_form_setting: 'Manage process form AI approval prompts',
54
- cmd_process_preview: '프로세스 인스턴스 미리보기 (플로차트)',
55
- group_share: '페이지 설정 & 공유',
56
- cmd_verify_url: '단축 URL 확인',
57
- cmd_save_share: '공개 접근 / 공유 설정 저장',
58
- cmd_get_page_config: '페이지 공개 접근 설정 조회',
59
- cmd_externalize_form: 'Plan external access-safe mirror fields',
60
- group_report: '보고서',
61
- cmd_create_report: 'Yida 보고서 생성',
62
- cmd_append_chart: '기존 보고서에 차트 추가',
63
- group_connector: '커넥터',
64
- cmd_connector_list: 'HTTP 커넥터 목록',
65
- cmd_connector_create: '커넥터 생성',
66
- cmd_connector_detail: '커넥터 상세 보기',
67
- cmd_connector_delete: '커넥터 삭제',
68
- cmd_connector_add_action: 'Add an action',
69
- cmd_connector_list_actions: 'List actions',
70
- cmd_connector_delete_action: 'Delete an action',
71
- cmd_connector_test: 'Test an action',
72
- cmd_connector_list_connections: 'List auth connections',
73
- cmd_connector_create_connection: 'Create an auth connection',
74
- cmd_connector_smart: '스마트 생성 (cURL에서)',
75
- cmd_connector_parse_api: 'Parse API information',
76
- cmd_connector_gen_template: 'Generate API document template',
77
- cmd_connector_more: '더 많은 하위 명령 보기',
78
- group_integration: '통합 & DingTalk',
79
- cmd_integration: '통합 자동화 플로우 생성',
80
- cmd_integration_list: '통합 자동화 플로우 목록',
81
- cmd_integration_enable: '통합 자동화 플로우 활성화',
82
- cmd_integration_disable: '통합 자동화 플로우 비활성화',
83
- cmd_integration_check: 'Check abnormal integration automation run logs',
84
- cmd_dws: 'DingTalk CLI (연락처/캘린더/할일/승인 등)',
85
- cmd_dingtalk_link: 'DingTalk AppLink / 기존 dingtalk:// 페이지 링크 생성',
86
- group_utility: '유틸리티',
87
- cmd_commands: 'Output machine-readable command manifest',
88
- cmd_agent_capabilities: 'Output one-shot agent capability snapshot',
89
- cmd_a2a: 'Start local read-only A2A adapter or print Agent Card',
90
- cmd_bridge: 'Start OpenYida local web bridge service',
91
- cmd_db_seq_fix: 'Detect and repair PostgreSQL sequence drift',
92
- cmd_copy: 'project 작업 디렉토리 복사',
93
- cmd_sample: '코드 샘플/템플릿 출력',
94
- cmd_doctor: '환경 진단 및 자동 수정',
95
- cmd_update: '최신 버전으로 업데이트',
96
- cmd_export_conversation: 'AI 대화 기록 내보내기',
97
- cmd_feedback: '경험 피드백 양식 및 로컬 알림 상태 구성',
98
- cmd_batch: 'OpenYida 명령 일괄 실행',
99
- cmd_flash_to_prd: 'Convert flash notes or meeting notes to a PRD prompt',
100
- cmd_ai: 'Call Yida AI text and image recognition APIs',
101
- cmd_asset: 'Detect asset capability / verify image URLs / resolve materials',
102
- cmd_cdn: 'CDN 이미지 관리 (설정/업로드/새로고침)',
103
- cmd_cdn_config: 'Configure CDN / OSS upload',
104
- cmd_cdn_upload: 'Upload image to CDN',
105
- cmd_cdn_refresh: 'Refresh CDN cache',
106
- quickstart_title: '빠른 시작',
107
- quickstart_app_name: '출석 관리',
108
- quickstart_form_name: '직원 정보',
109
- docs: '📚 문서:',
110
- },
111
-
112
- // ── bin/yida.js ────────────────────────────────────
113
- cli: {
114
- integration_help: '사용법: openyida integration <create|list|enable|disable> ...',
115
- integration_unknown: '알 수 없는 integration 하위 명령: {0}',
116
- integration_help_hint: '사용 가능한 하위 명령은 openyida integration --help로 확인하세요',
117
- integration_list_usage: '사용법: openyida integration list <appType> [--form-uuid <uuid>] [--status y|n] [--key <kw>] [--page <n>] [--size <n>] [--json]',
118
- integration_list_example: '예시: openyida integration list APP_XXX --form-uuid FORM-XXX --json',
119
- integration_enable_usage: '사용법: openyida integration enable <appType> <formUuid> <processCode>',
120
- integration_enable_example: '예시: openyida integration enable APP_XXX FORM-XXX LPROC-XXX',
121
- integration_disable_usage: '사용법: openyida integration disable <appType> <formUuid> <processCode>',
122
- integration_disable_example: '예시: openyida integration disable APP_XXX FORM-XXX LPROC-XXX',
123
- compile_usage: '사용법: openyida compile <sourceFile>',
124
- compile_example: '예: 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 - AI 도구 환경 감지',
173
- detecting: ' AI 도구 환경 감지 중...',
174
- tool_label: ' AI 도구: {0}',
175
- login_label: ' 로그인 상태: {0}',
176
- logged_in: '로그인됨',
177
- not_logged_in: '로그인 안 됨',
178
- corp_label: ' 조직: {0}',
179
- version_label: ' 버전: {0}',
180
- },
181
-
182
- // ── lib/auth/token-auth.js ────────────────────────────────────
183
- login: {
184
- title: '🔐 Yida 로그인',
185
- cache_found: ' 캐시된 로그인 정보 발견, 유효성 검사 중...',
186
- cache_valid: '✅ 캐시된 로그인 정보가 유효합니다!',
187
- cache_invalid: ' 캐시된 로그인 정보가 만료되었습니다. 재로그인이 필요합니다.',
188
- starting_qr: ' QR 코드 로그인 시작 중...',
189
- success: '✅ 로그인 성공!',
190
- failed: '❌ 로그인 실패: {0}',
191
- usage: '사용법: openyida login',
192
- },
193
-
194
- // ── lib/logout.js ───────────────────────────────────
195
- logout: {
196
- title: '🚪 Yida 로그아웃',
197
- success: '✅ 로그아웃 성공! 로그인 정보가 삭제되었습니다.',
198
- no_cache: ' 로그인 정보가 없습니다. 이미 로그아웃 상태입니다.',
199
- failed: '❌ 로그아웃 실패: {0}',
200
- },
201
-
202
- // ── lib/create-app.js ───────────────────────────────
203
- create_app: {
204
- usage: '사용법: openyida create-app "<앱 이름>" 또는 openyida create-app --name "<앱 이름>" [--desc "..."] [--theme deepBlue]',
205
- example: '예시: openyida create-app --name "내 앱" --desc "앱 설명" --theme deepBlue',
206
- title: ' create-app - Yida 앱 생성 도구',
207
- app_name: '\n 앱 이름: {0}',
208
- app_desc: ' 설명: {0}',
209
- app_icon: ' 아이콘: {0} ({1})',
210
- app_theme: ' 테마: colour={0} navTheme={1} layout={2}',
211
- step_create: '\n🚀 앱 생성 중...',
212
- sending_request: ' createApp 요청 전송 중...',
213
- success: ' ✅ 앱 생성 성공!',
214
- app_id: ' 앱 ID: {0}',
215
- failed: ' ❌ 앱 생성 실패: {0}',
216
- error: '\n❌ 앱 생성 오류: {0}',
217
- },
218
-
219
- // ── lib/create-form.js ──────────────────────────────
220
- create_form: {
221
- usage: '사용법: openyida create-form <appType> <페이지 이름> [스키마 JSON]',
222
- example: '예시: openyida create-form "APP_XXX" "내 폼"',
223
- title: ' create-form - Yida 폼 페이지 생성/업데이트 도구',
224
- app_id: '\n 앱 ID: {0}',
225
- page_name: ' 페이지 이름: {0}',
226
- step_create: '\n📝 폼 페이지 생성 중...',
227
- sending_request: ' saveFormSchema 요청 전송 중...',
228
- success: ' ✅ 폼 페이지 생성 성공!',
229
- form_uuid: ' 폼 UUID: {0}',
230
- failed: ' ❌ 폼 페이지 생성 실패: {0}',
231
- error: '\n❌ 폼 페이지 생성 오류: {0}',
232
- step_check_data: '\n🔍 단계 {0}: 양식에 기존 데이터가 있는지 확인',
233
- data_exists_warning: ' ⚠️ 이 양식에 이미 {0}개의 레코드가 있습니다! 구조 변경 시 다음이 발생할 수 있습니다:',
234
- data_exists_impact: ' - 기존 데이터 손실 또는 손상\n - 프로세스 상태 이상\n - 데이터 불일치',
235
- data_exists_abort: ' ❌ 수정이 중단되었습니다. 계속하려면 --force를 추가하세요.',
236
- data_exists_confirm_message: '이 양식에 {0}개의 기존 레코드가 있습니다. 구조 변경 시 기존 데이터에 영향을 줄 수 있습니다. 확인하려면 --force를 추가하세요.',
237
- data_exists_force_hint: '사용법: openyida create-form update <appType> <formUuid> <changesJson> --force',
238
- data_exists_force_proceed: ' ⚠️ --force 모드: 확인 건너뛰기, {0}개의 기존 레코드가 있는 양식 구조 강제 변경',
239
- data_check_empty: ' ✅ 양식에 데이터가 없습니다. 안전하게 수정할 수 있습니다',
240
- data_check_failed: ' ⚠️ 데이터 확인 실패, 수정을 계속합니다',
241
- },
242
-
243
- // ── lib/create-page.js ──────────────────────────────
244
- create_page: {
245
- usage: '사용법: openyida create-page <appType> <페이지 이름> [--mode dashboard]',
246
- example: '예: openyida create-page APP_XXX "Dashboard" --mode dashboard',
247
- title: ' create-page - Yida 커스텀 페이지 생성 도구',
248
- app_id: '\n 앱 ID: {0}',
249
- page_name: ' 페이지 이름: {0}',
250
- step_create: '\n📄 커스텀 페이지 생성 중...',
251
- success: ' ✅ 커스텀 페이지 생성 성공!',
252
- step_dashboard_config: '\n🖥️ Step 3: Configure dashboard fullscreen mode',
253
- dashboard_config_ok: ' ✅ Dashboard mode configured: top nav hidden, chromeless custom URL enabled',
254
- dashboard_config_failed: ' ⚠️ Dashboard mode config failed: {0}',
255
- err_mode_invalid: 'Unsupported page mode: {0}',
256
- mode_hint: 'Available modes: default, dashboard',
257
- form_uuid: ' 페이지 UUID: {0}',
258
- failed: ' ❌ 커스텀 페이지 생성 실패: {0}',
259
- error: '\n❌ 커스텀 페이지 생성 오류: {0}',
260
- },
261
-
262
- // ── lib/get-schema.js ───────────────────────────────
263
- get_schema: {
264
- usage: '사용법: openyida get-schema <appType> <formUuid>',
265
- example: '예시: openyida get-schema "APP_XXX" "FORM-XXX"',
266
- title: ' get-schema - Yida 폼 스키마 조회 도구',
267
- app_id: '\n 앱 ID: {0}',
268
- form_uuid: ' 폼 UUID: {0}',
269
- step_get: '\n📋 폼 스키마 조회 중...',
270
- success: ' ✅ 스키마 조회 성공!',
271
- failed: ' ❌ 스키마 조회 실패: {0}',
272
- error: '\n❌ 스키마 조회 오류: {0}',
273
- },
274
-
275
- // ── lib/check-update.js ─────────────────────────────
276
- check_update: {
277
- new_version: '\n🎉 새 버전 사용 가능: {0} → {1}',
278
- update_cmd: ' 업데이트: npm install -g openyida',
279
- check_failed: '버전 확인 실패: {0}',
280
- },
281
-
282
- // ── lib/update.js ──────────────────────────────────
283
- update: {
284
- checking: '최신 버전 확인 중...',
285
- fetch_failed: '최신 버전 정보를 가져올 수 없습니다. 네트워크 연결을 확인하세요',
286
- already_latest: '이미 최신 버전입니다 ({0}), 업데이트 불필요',
287
- found_new_version: '새 버전 발견: {0} (현재: {1})',
288
- installing: 'openyida@latest 설치 중...',
289
- success: '업데이트 성공! 현재 버전: {0}',
290
- install_failed: '업데이트 실패: {0}',
291
- manual_hint: '수동으로 실행해 보세요: npm install -g openyida@latest',
292
- available: '업데이트 가능',
293
- up_to_date: '최신 상태',
294
- label_install: 'Install',
295
- label_channel: 'Channel',
296
- label_version: 'Version',
297
- label_update: 'Update',
298
- done: '업데이트 완료!',
299
- done_hint: 'openyida --version 으로 새 버전을 확인하세요',
300
- },
301
-
302
- // ── lib/export-app.js ───────────────────────────────
303
- export_app: {
304
- usage: '사용법: openyida export-app <appType>',
305
- title: ' export-app - Yida 앱 내보내기 도구',
306
- app_id: '\n 앱 ID: {0}',
307
- step_export: '\n📦 앱 내보내기 중...',
308
- success: ' ✅ 앱 내보내기 성공!',
309
- failed: ' ❌ 앱 내보내기 실패: {0}',
310
- error: '\n❌ 앱 내보내기 오류: {0}',
311
- },
312
-
313
- // ── lib/import-app.js ───────────────────────────────
314
- import_app: {
315
- usage: '사용법: openyida import-app <파일 경로>',
316
- title: ' import-app - Yida 앱 가져오기 도구',
317
- file_path: '\n 파일 경로: {0}',
318
- step_import: '\n📥 앱 가져오기 중...',
319
- success: ' ✅ 앱 가져오기 성공!',
320
- failed: ' ❌ 앱 가져오기 실패: {0}',
321
- error: '\n❌ 앱 가져오기 오류: {0}',
322
- },
323
-
324
- // ── lib/get-page-config.js ──────────────────────────
325
- get_page_config: {
326
- usage: '사용법: openyida get-page-config <appType> <formUuid>',
327
- title: ' get-page-config - Yida 페이지 설정 조회 도구',
328
- app_id: '\n 앱 ID: {0}',
329
- form_uuid: ' 폼 UUID: {0}',
330
- step_get: '\n🔍 페이지 설정 조회 중...',
331
- success: ' ✅ 설정 조회 성공!',
332
- failed: ' ❌ 설정 조회 실패: {0}',
333
- error: '\n❌ 설정 조회 오류: {0}',
334
- },
335
-
336
- // ── lib/save-share-config.js ────────────────────────
337
- save_share_config: {
338
- usage: '사용법: openyida save-share-config <appType> <formUuid> <openUrl> <isOpen> [openAuth]',
339
- title: ' save-share-config - Yida 공개 접근 설정 저장 도구',
340
- app_id: '\n 앱 ID: {0}',
341
- form_uuid: ' 폼 UUID: {0}',
342
- open_url: ' 공개 URL: {0}',
343
- is_open: ' 공개 설정: {0}',
344
- open_auth: ' 인증 필요: {0}',
345
- step_validate: '\n📋 Step 0: 파라미터 검증',
346
- validate_ok: ' ✅ 파라미터 검증 통과',
347
- validate_failed: ' ❌ 검증 실패: {0}',
348
- step_save: '\n💾 Step 2: 공개 접근 설정 저장',
349
- sending_request: ' saveShareConfig 요청 전송 중...',
350
- save_ok: ' ✅ 설정 저장 성공!',
351
- save_ok_msg: '공개 접근 설정 저장 완료',
352
- save_failed: ' ❌ 저장 실패: {0}',
353
- save_failed_msg: '저장 실패',
354
- err_is_open_invalid: 'isOpen은 y 또는 n이어야 합니다. 현재 값: {0}',
355
- err_open_auth_invalid: 'openAuth는 y 또는 n이어야 합니다. 현재 값: {0}',
356
- err_open_url_required: '공개 접근 활성화 시 openUrl은 필수입니다',
357
- err_open_url_prefix: 'openUrl은 /o/로 시작해야 합니다. 현재 값: {0}',
358
- err_open_url_chars: 'openUrl 경로는 a-z A-Z 0-9 _ - 및 구분자 /만 사용 가능합니다. 현재 값: {0}',
359
- err_open_url_empty: 'openUrl 경로가 비어 있습니다: {0}',
360
- },
361
-
362
- // ── lib/update-form-config.js ──────────────────────
363
- update_form_config: {
364
- usage: '사용법: openyida update-form-config <appType> <formUuid> <isRenderNav> <title>',
365
- title: ' update-form-config - Yida 폼 설정 업데이트 도구',
366
- app_id: '\n 앱 ID: {0}',
367
- form_uuid: ' 폼 UUID: {0}',
368
- is_render_nav: ' 내비게이션 표시: {0}',
369
- page_title: ' 페이지 제목: {0}',
370
- step_update: '\n💾 Step 2: 폼 설정 업데이트',
371
- sending_request: ' updateFormSchemaInfo 요청 전송 중...',
372
- update_ok: ' ✅ 설정 업데이트 성공!',
373
- nav_shown: '상단 내비게이션 표시됨',
374
- nav_hidden: '상단 내비게이션 숨겨짐',
375
- update_failed: ' ❌ 업데이트 실패: {0}',
376
- update_failed_msg: '업데이트 실패',
377
- },
378
-
379
- // ── lib/verify-short-url.js ────────────────────────
380
- verify_short_url: {
381
- usage: '사용법: openyida verify-short-url <appType> <formUuid> <url>',
382
- title: ' verify-short-url - Yida URL 검증 도구',
383
- app_id: '\n 앱 ID: {0}',
384
- form_uuid: ' 폼 UUID: {0}',
385
- step_validate: '\n📋 Step 0: URL 형식 검증',
386
- validate_ok: ' ✅ 형식 검증 통과',
387
- validate_failed: ' ❌ 검증 실패: {0}',
388
- step_verify: '\n🔍 Step 2: URL 검증',
389
- sending_request: ' verifyShortUrl 요청 전송 중...',
390
- url_available: ' ✅ URL을 사용할 수 있습니다!',
391
- open_available_msg: '이 공개 접근 URL은 사용 가능합니다',
392
- share_available_msg: '이 조직 내 공유 URL은 사용 가능합니다',
393
- url_taken: ' ❌ URL이 이미 사용 중입니다',
394
- url_taken_msg: '이 단축 URL은 이미 사용 중입니다',
395
- verify_failed: ' ❌ 검증 요청 실패',
396
- err_url_prefix: 'URL은 /o/ 또는 /s/로 시작해야 합니다. 현재 값: {0}',
397
- err_url_chars: 'URL 경로는 a-z A-Z 0-9 _ - 및 구분자 /만 사용 가능합니다. 현재 값: {0}',
398
- err_url_empty: 'URL 경로가 비어 있습니다: {0}',
399
- },
400
-
401
- // ── lib/copy.js ────────────────────────────────────
402
- copy: {
403
- title: ' openyida copy - Yida 작업 디렉토리 초기화',
404
- package_root: '\n📦 패키지 루트: {0}',
405
- dest_root: '🤖 대상 루트: {0}',
406
- dest_empty_flatten: '📂 대상 디렉토리가 비어 있어 project/ 내용을 직접 복사합니다 (project/ 하위 디렉토리 생성 안 함)',
407
- force_mode: '⚠️ --force 모드: 대상 디렉토리를 초기화 후 복사합니다',
408
- no_package: '\n❌ openyida 패키지 디렉토리를 찾을 수 없습니다',
409
- no_package_hint1: ' openyida가 전역으로 설치되어 있는지 확인하세요:',
410
- no_package_hint2: ' npm install -g openyida',
411
- no_active_tool: '\n❌ 활성 AI 도구 환경이 감지되지 않았습니다',
412
- supported_tools: ' 지원 도구: Wukong, Codex, OpenCode, Claude Code, Aone Copilot, Cursor, Qoder',
413
- current_result: '\n 현재 감지 결과:',
414
- force_hint: '\n 현재 디렉토리에 강제 복사하려면:\n openyida copy --force',
415
- force_cmd: ' openyida copy --force',
416
- copying_label: '\n📂 {0} 복사 중...',
417
- creating_symlink: '\n📂 yida-skills/ 심볼릭 링크 생성 중...',
418
- file_copied: ' 복사됨: {0}',
419
- cleared: ' 🗑️ 초기화됨: {0}',
420
- symlink_removed: ' 🗑️ 이전 심볼릭 링크 제거됨: {0}',
421
- dir_deleted: ' 🗑️ 디렉토리 삭제됨: {0}',
422
- removed: ' 🗑️ 제거됨: {0}',
423
- symlink_created: ' 🔗 심볼릭 링크: {0} -> {1}',
424
- symlink_label: '심볼릭 링크',
425
- done: '✅ 완료!',
426
- files_copied: ' 복사된 파일: {0}개',
427
- files_count: '{0}개 파일',
428
- symlinks_created: ' 생성된 심볼릭 링크: {0}개',
429
- result_symlink: ' {0} → {1} (심볼릭 링크)',
430
- result_copy: ' {0} → {1} ({2}개 파일)',
431
- wukong_skills_cleanup: '\n🗑️ Wukong 환경: yida-skills/ 심볼릭 링크 정리 중...',
432
- wukong_skills_cleaned: '정리됨',
433
- wukong_skills_not_found: ' ℹ️ yida-skills/ 심볼릭 링크 또는 디렉토리를 찾을 수 없습니다: {0}',
434
- remove_failed: ' ❌ 제거 실패: {0} ({1})',
435
- symlink_fallback_copy: ' ⚠️ Windows 심볼릭 링크 생성 실패(관리자 권한 필요), 디렉토리 복사로 대체: {0}',
436
- symlink_failed: ' ❌ 심볼릭 링크 생성 실패: {0} ({1})',
437
- },
438
-
439
- // ── lib/publish.js ─────────────────────────────────
440
- generate_page: {
441
- spec_not_found: 'Spec file not found: {0}',
442
- spec_invalid: 'Failed to parse spec JSON: {0}',
443
- unknown_template: 'Unknown page template: {0}',
444
- available_templates: 'Available templates: {0}',
445
- template_not_found: 'Template file not found: {0}',
446
- done: 'Page generated: {0}',
447
- hint: 'Next run openyida compile <file>, or pass --compile to compile immediately.',
448
- success: 'Page generation complete',
449
- },
450
- page_size: {
451
- large_source: '큰 페이지 소스를 감지했습니다: {0} ({1}, 약 {2}줄)',
452
- long_line_hint: '매우 긴 한 줄을 감지했습니다(약 {0}자). 보통 minified vendor 코드 또는 base64이므로 외부로 분리하세요.',
453
- base64_hint: '긴 inline base64 콘텐츠를 감지했습니다. CDN/OSS에 업로드하고 URL로 참조하세요.',
454
- memory_hint: 'publish/compile은 source, build 출력, minify 출력, schema 사본을 메모리에 보관합니다. vendor/base64는 분리하거나 this.utils.loadScript로 로드하세요.',
455
- windows_hint: 'Windows에서 큰 JSX를 쓸 때 PowerShell Get-Content -Raw + ConvertTo-Json을 사용하지 말고 Node fs.writeFileSync/appendFileSync로 나누어 쓰세요.',
456
- },
457
- publish: {
458
- title: ' yida-publish - Yida 페이지 배포 도구',
459
- platform: ' 플랫폼: {0}',
460
- app_id: ' 앱 ID: {0}',
461
- form_uuid: ' 폼 ID: {0}',
462
- source_file: ' 소스 파일: {0}',
463
- compiled_file: ' 출력 파일: {0}',
464
- step_lint: '\n🔍 Step 0: 이다 코딩 표준 사전 검사\n',
465
- lint_title: '⚠️ Yida page code check:',
466
- lint_error_line: ' ❌ {0}번째 줄: {1}',
467
- lint_warning_line: ' ⚠️ {0}번째 줄: {1}',
468
- lint_event_function: '이벤트 바인딩에 function을 사용했습니다. 화살표 함수 (e) => { this.xxx() }를 사용하세요',
469
- lint_missing_render_jsx: 'export function renderJsx()가 없습니다. Yida 사용자 정의 페이지는 renderJsx를 export해야 합니다',
470
- lint_import_require: 'import/require가 발견되었습니다. Yida 사용자 정의 페이지는 모듈을 import할 수 없습니다. 서드파티 스크립트는 this.utils.loadScript로 로드하세요',
471
- lint_react_hooks: 'React Hooks가 발견되었습니다. Yida 런타임은 React 16 클래스 컴포넌트 스타일을 사용하며 useState/useEffect를 지원하지 않습니다',
472
- lint_export_default: 'export default가 발견되었습니다. Yida는 export function renderJsx/didMount 같은 named export가 필요합니다',
473
- lint_jsx_extension: '이 .js 파일에는 JSX가 포함되어 있습니다. 소스 파일은 .jsx를 권장합니다. 컴파일 출력은 계속 .js입니다',
474
- lint_event_direct_method: '이벤트 바인딩이 this.xxx를 직접 전달하여 this를 잃게 됩니다. (e) => { this.xxx(e); }를 사용하세요',
475
- lint_event_bind_this: '이벤트 바인딩이 .bind(this)를 사용합니다. 대신 (e) => { this.xxx(e); }를 사용하세요',
476
- lint_lifecycle_case: '라이프사이클 export {0}이 감지되었습니다. Yida는 {1}만 인식합니다(대소문자 구분)',
477
- lint_react_lifecycle_method: 'React 라이프사이클 {0}이 감지되었습니다. Yida 사용자 정의 페이지에서는 {1}을 export하세요',
478
- lint_event_lowercase: '소문자 이벤트 prop {0}이 감지되었습니다. React/Yida는 이를 바인딩하지 않습니다. {1}을 사용하세요',
479
- lint_event_call_result: '이벤트 바인딩이 함수를 호출했거나 표현식 핸들러가 아닙니다. (e) => { self.xxx(e); }를 사용하세요',
480
- lint_event_noop_arrow: '이벤트 화살표 함수가 핸들러를 참조만 하고 호출하지 않습니다. (e) => { self.xxx(e); }를 사용하세요',
481
- lint_button_missing_handler: '표시되는 <button>에 onClick/onMouseDown/onKeyDown 또는 disabled 상태가 없습니다. 이벤트 핸들러를 바인딩하거나 정적 라벨에는 span/div를 사용하세요',
482
- lint_array_callback_function: '.{0}(function ...)은 콜백에서 this를 잃을 수 있습니다. 대신 .{0}((item) => ...)를 사용하세요',
483
- lint_foreach_callback_function: '.forEach(function ...)은 콜백에서 this를 잃을 수 있습니다. .forEach((item) => ...)를 권장합니다',
484
- lint_controlled_input: 'input이 value 제어 모드를 사용합니다. Yida 페이지는 defaultValue + onChange로 _customState를 업데이트해야 합니다',
485
- lint_native_select_ui: '네이티브 <select>가 발견되었습니다. 일반 사용자 정의 페이지에서는 화살표, 선택 표시, focus reset이 있는 button+menu+option 드롭다운을 사용하세요. 폼 SelectField를 페이지 필터 컴포넌트로 직접 렌더링하지 마세요.',
486
- lint_iframe_self_navigation: 'Yida 사용자 정의 페이지는 iframe 안에서 실행됩니다. 중첩 페이지를 피하려면 Yida 페이지 이동에 target="_top"/target="_blank" 또는 window.top.location을 사용하세요.',
487
- lint_page_size_limit: 'pageSize={0}이 Yida API 제한 100을 초과합니다. 100 이하를 사용하세요',
488
- lint_page_size_recommend: 'pageSize={0}이 큽니다. 권장값은 50입니다(최고 성능, 최대 100). 10/20/50을 우선 사용하세요',
489
- lint_searchformdata_http_post: 'searchFormDatas.json을 직접 호출할 때는 GET + 쿼리 파라미터가 필수입니다(formUuid/appType을 URL 쿼리에 넣기). POST로 formUuid를 body에 넣으면 "参数校验失败formUuid" 오류가 발생하고 대시보드/목록이 모두 0으로 표시됩니다',
490
- lint_searchformdata_http_pagenumber: 'searchFormDatas.json의 페이지 파라미터 이름은 currentPage입니다(pageNumber 아님). pageNumber를 쓰면 페이징이 작동하지 않습니다',
491
- lint_searchformdata_http_unwrap: '브라우저 searchFormDatas.json 응답은 목록이 content.data에 중첩됩니다({ content: { data: [...] } }). json.data만 읽으면 0건이 됩니다. (json.content && json.content.data)로 언랩하세요',
492
- lint_setstate_non_timestamp: 'this.setState가 timestamp가 아닌 필드를 씁니다. 사용자 정의 페이지의 비즈니스 상태는 _customState에 두고 forceUpdate()/setCustomState()로 업데이트해야 합니다. this.setState는 timestamp 계약 필드만 담아야 합니다',
493
- lint_self_binding_missing: 'renderJsx가 var self = this; 선언 없이 this를 사용합니다. renderJsx 상단에 var self = this;를 추가하고 closures/callbacks 안에서는 self를 사용해 this 손실을 피하세요',
494
- lint_echarts_dom_ready: 'echarts.init이 setTimeout으로 감싸져 있지 않습니다. 컨테이너가 아직 마운트되지 않아 차트가 렌더링되지 않을 수 있습니다. setTimeout(function(){ /* echarts.init */ }, 300)을 사용하세요',
495
- lint_yida_api_catch: 'this.utils.yida API 호출에 .catch()가 감지되지 않았습니다. 오류 처리를 추가하고 사용자에게 toast를 표시하세요',
496
- lint_echarts_legacy_map_china: 'ECharts 5는 더 이상 echarts/map/js/china.js를 지원하지 않습니다. 대신 DataV GeoJSON을 로드하고 echarts.registerMap("china", geoJson)을 호출하세요',
497
- lint_echarts_rich_label_formatter: 'ECharts label.formatter가 반환하는 rich text 템플릿은 Yida 사용자 정의 페이지에서 불안정합니다. 일반 formatter 문자열이나 미리 계산한 라벨 텍스트를 권장합니다',
498
- lint_const_let: 'const/let 선언을 사용했습니다. var로 변경하는 것을 권장합니다 (이다 런타임 호환성)',
499
- lint_computed_property: 'ES6 계산된 속성 이름 { [key]: value }을 사용했습니다. 이다 JS 엔진에서 지원하지 않아 자동 실패합니다. var obj = {}; obj[key] = value;로 변경하세요',
500
- lint_pad_method: 'String.{0}()을 사용했습니다. 이다 JS 엔진에서 지원하지 않아 Promise 콜백이 자동 중단됩니다. 삼항 연산자로 대체하세요 (예: x < 10 ? "0" + x : "" + x)',
501
- lint_large_then_callback: 'Promise .then() 콜백 코드량이 너무 많습니다 ({0}줄, 권장 최대 {1}줄). 자동 잘림이 발생할 수 있습니다. 로직을 별도의 export function으로 추출하세요',
502
- lint_fix_errors: '❌ 게시 전에 위 오류를 수정해 주세요',
503
- lint_skip_hint: '💡 검사를 건너뛰려면 --skip-lint 매개변수를 추가하세요',
504
- lint_passed: ' ✅ 코드 검사 통과\n',
505
- lint_skipped: '\n⏭️ 코드 사전 검사 건너뜀 (--skip-lint)\n',
506
- duplicate_source_mismatch: ' ⚠️ Found another copy with the same file name but different content. Publishing: {0}; other copy: {1}',
507
- data_source_fetching: ' Reading existing page data sources...',
508
- data_source_preserved: ' ✅ Preserved existing page data sources: {0}',
509
- data_source_none: ' No custom page data sources to preserve',
510
- data_source_fetch_failed: 'Could not read the existing page Schema, so publishing stopped to avoid clearing existing data sources: {0}',
511
- target_checking: ' Checking publish target type...',
512
- target_check_forced: ' ⚠️ Skipped publish target type check (--force)',
513
- target_check_ok: ' ✅ Publish target confirmed: {0} ({1})',
514
- target_check_failed: 'Could not verify publish target: {0}',
515
- target_not_found: 'Publish target was not found in app navigation: {0}',
516
- target_type_invalid: 'Publish target is not a custom display page: {0} current type is {1}',
517
- 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.',
518
- target_list_hint: 'Run openyida list-forms {0} --keyword <page name>, then choose a custom page formUuid with formType=display.',
519
- 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.',
520
- step_compile: '\n📦 Step 1: 소스 컴파일 및 스키마 빌드\n',
521
- reading_source: '[1/4] {0} 소스 읽는 중...',
522
- compiling: '[2/4] Babel로 {0} 컴파일 중...',
523
- compile_failed: ' ❌ 컴파일 실패: {0}',
524
- compile_location: '\n 위치: {0}행, {1}열',
525
- compile_error_code: ' 오류 코드: {0}',
526
- minifying: '[3/4] UglifyJS로 {0} 압축 중...',
527
- minify_failed: ' 압축 실패: {0}',
528
- compile_done: ' ✅ 컴파일 완료: {0}',
529
- building_schema: '[4/4] 스키마 빌드 중...',
530
- formula_prefix_fixed: ' 🔧 하위 테이블 수식 접두사 참조 {0}개를 자동 수정했습니다',
531
- schema_built: ' ✅ 스키마 빌드 완료!',
532
- step_canvas_compile: '\n📦 Step 1: Code Canvas 소스 컴파일\n',
533
- canvas_compiling: ' 🎨 Code Canvas 소스를 로컬에서 컴파일하는 중...',
534
- canvas_compile_done: ' ✅ Code Canvas 컴파일 완료!',
535
- canvas_compile_failed: ' ❌ Code Canvas 컴파일 실패: {0}',
536
- step_login: '\n🔑 Step 2: 로그인 정보 읽기',
537
- step_publish: '\n📤 Step 3: 스키마 배포\n',
538
- publish_failed: '\n❌ 배포 실패: {0}',
539
- schema_published: ' ✅ 스키마 배포 성공!',
540
- step_config: '\n⚙️ Step 4: 폼 설정 업데이트\n',
541
- success: ' ✅ 배포 성공!',
542
- config_failed: ' ⚠️ 설정 업데이트 실패: {0}',
543
- schema_ok_config_failed: 'Schema published, but config update failed',
544
- step_health_check: '\n🩺 Step 5: Health check published page\n',
545
- health_check_ok: ' ✅ Health check passed: HTTP {0}',
546
- health_check_failed: ' ⚠️ Health check failed: HTTP {0} {1}',
547
- exception: '\n❌ 배포 오류: {0}',
548
- source_not_found: '❌ 소스 파일을 찾을 수 없습니다: {0}',
549
- usage: '사용법: openyida publish <소스 파일> <appType> <formUuid> [--health-check] [--canvas]',
550
- example: '예시: openyida publish pages/src/xxx.js APP_XXX FORM-XXX --health-check',
551
- },
552
-
553
- // ── token-only disabled QR login ────────────────────────────────
554
- qr_login: {
555
- title: '🔐 Yida 터미널 QR 코드 로그인',
556
- step_init: ' Step 1: 세션 초기화 중...',
557
- step_get_qr: ' Step 2: QR 코드 가져오는 중...',
558
- scan_hint: ' 📱 DingTalk으로 아래 QR 코드를 스캔하세요:',
559
- browser_alternative: ' 💡 If this is not a cloud/remote machine, use browser login instead; if QR scan fails, try: {0}',
560
- qr_url_label: ' QR 코드 URL: {0}',
561
- waiting_scan: ' ⏳ 스캔 대기 중(최대 2분)...',
562
- scanned_confirm: ' ✅ QR 코드 스캔 완료! 휴대폰에서 로그인을 확인하세요...',
563
- scan_success: ' ✅ 스캔 확인 완료!',
564
- step_exchange: ' Step 4: 로그인 자격 증명 교환 중...',
565
- step_get_corps: ' Step 5: 조직 목록 가져오는 중...',
566
- step_switch_corp: ' Step 7: 선택한 조직으로 전환 중...',
567
- only_one_corp: ' ✅ 조직 1개 감지됨: {0}, 자동 선택',
568
- select_corp_prompt: ' 🏢 여러 조직이 발견되었습니다. 선택하세요:',
569
- select_corp_input: ' 번호 입력 (1-{0}): ',
570
- select_corp_invalid: ' ❌ 잘못된 입력입니다. 1에서 {0} 사이의 숫자를 입력하세요',
571
- target_corp_not_found: '지정한 corpId를 액세스 가능한 조직에서 찾을 수 없습니다: {0}',
572
- corp_selected: ' ✅ 조직 선택됨: {0}',
573
- login_success: '✅ 로그인 성공!',
574
- qrcode_fallback: ' ⚠️ qrcode 패키지가 설치되지 않았습니다. 아래 URL을 직접 방문하세요:',
575
- qrcode_render_failed: ' ⚠️ QR 코드 렌더링 실패({0}). 아래 URL을 방문하세요:',
576
- qr_expired: 'QR 코드가 만료되었습니다. 다시 로그인하세요',
577
- poll_timeout: '스캔 타임아웃(2분). 다시 로그인하세요',
578
- no_corp_available: '접근 가능한 조직을 찾을 수 없습니다',
579
- no_csrf_in_cookie: '로그인 성공했지만 csrf_token을 찾을 수 없습니다. 다시 시도하세요',
580
- stdin_closed: '입력 스트림이 닫혔습니다. 조직을 선택할 수 없습니다',
581
- },
582
-
583
- // ── scripts/postinstall.js ─────────────────────────
584
- postinstall: {
585
- welcome_title: ' 🎉 OpenYida에 오신 것을 환영합니다! ',
586
- install_success: ' ✅ 설치 완료! {0} Yida AI 개발 도구가 준비되었습니다.',
587
- update_success: ' ✅ 업데이트 완료! {0} OpenYida가 최신 버전으로 업그레이드되었습니다.',
588
- ai_mode_title: ' 🚀 AI 대화 모드',
589
- ai_mode_desc: ' Codex / Claude Code / Aone Copilot / Cursor 등 AI 도구에서 바로 대화하세요:',
590
- prompt1: ' 📋 "Yida로 근태 관리 시스템을 만들어줘"',
591
- prompt2: ' 💰 "개인 급여 계산기 앱을 만들어줘"',
592
- prompt3: ' 🏢 "CRM 고객 관리 시스템을 만들어줘"',
593
- prompt4: ' 🎂 "생일 축하 미니 앱을 만들어줘"',
594
- steps_title: ' 📖 시작하기',
595
- step1: ' {0}Step 1{1} AI 코딩 도구 열기 (Codex / Claude Code / Cursor 등)',
596
- step2: ' {0}Step 2{1} 원하는 앱을 자연어로 설명하기',
597
- step3: ' {0}Step 3{1} AI가 자동으로 openyida 명령어를 실행하여 앱 생성 및 배포',
598
- step4: ' {0}Step 4{1} Yida 앱 링크 받기 🎉',
599
- commands_title: ' ⚡ 빠른 명령어',
600
- cmd_env: ' {0}openyida env{1} {2}# AI 도구 환경 및 로그인 상태 감지{3}',
601
- cmd_login: ' {0}openyida login{1} {2}# Yida 로그인{3}',
602
- cmd_help: ' {0}openyida --help{1} {2}# 모든 명령어 보기{3}',
603
- footer1: ' 📚 문서: https://github.com/openyida/openyida',
604
- footer2: ' 💬 커뮤니티: DingTalk에서 OpenYida 커뮤니티 참여',
605
- },
606
-
607
- // ── lib/cdn-*.js ───────────────────────────────────
608
- cdn: {
609
- config_load_error: 'CDN 설정 로드 실패: {0}',
610
- config_saved: '✅ CDN 설정이 저장되었습니다: {0}',
611
- config_usage: '사용법: openyida cdn-config [옵션]',
612
- config_file_path: '📄 설정 파일: {0}',
613
- config_section_aliyun: '🔐 알리바바 클라우드 자격 증명',
614
- config_section_cdn: '🌐 CDN 설정',
615
- config_section_oss: '📦 OSS 설정',
616
- config_section_upload: '📤 업로드 설정',
617
- config_cdn_domain: 'CDN 도메인',
618
- config_oss_region: 'OSS 리전',
619
- config_oss_bucket: 'OSS 버킷',
620
- config_oss_endpoint: 'OSS 엔드포인트',
621
- config_upload_path: '업로드 경로',
622
- config_compress: '이미지 압축',
623
- config_max_width: '최대 너비',
624
- config_quality: '이미지 품질',
625
- config_not_set: '설정 안 됨',
626
- config_enabled: '활성화',
627
- config_disabled: '비활성화',
628
- config_status_valid: '✅ 설정 완료, 사용 가능',
629
- config_status_invalid: '⚠️ 설정 불완전',
630
- config_missing: ' 누락된 필드: {0}',
631
- config_updated: '✅ 설정이 업데이트되었습니다!',
632
- config_init_title: '🔧 CDN 설정 초기화 마법사',
633
- config_init_desc: 'CDN 이미지 업로드를 사용하려면 다음을 설정하세요:',
634
- upload_no_files: '❌ 업로드할 이미지 파일을 지정하세요',
635
- config_incomplete: '❌ CDN 설정이 불완전합니다',
636
- missing_fields: ' 누락된 필드: {0}',
637
- run_config_init: ' 먼저 실행하세요: openyida cdn-config --init',
638
- no_config: '❌ CDN 설정을 찾을 수 없습니다',
639
- oss_sdk_required: '❌ ali-oss SDK가 없습니다',
640
- run_npm_install: ' 실행하세요: npm install {0}',
641
- no_images_found: '❌ 지원되는 이미지 파일을 찾을 수 없습니다',
642
- uploading_images: '📤 {0}개 이미지 업로드 중...',
643
- uploading_file: ' 업로드 중: {0}',
644
- upload_success: ' ✅ {0}',
645
- upload_failed: ' ❌ {0} 업로드 실패: {1}',
646
- upload_summary: '\n📊 업로드 요약',
647
- upload_success_count: ' 성공: {0}개',
648
- upload_fail_count: ' 실패: {0}개',
649
- cdn_urls: '\n🔗 CDN URL 목록:',
650
- upload_error: '❌ 업로드 실패: {0}',
651
- refresh_no_targets: '❌ 새로 고칠 URL 또는 디렉토리를 지정하세요',
652
- cdn_sdk_required: '❌ 알리바바 클라우드 CDN SDK가 없습니다',
653
- querying_quota: '📊 새로 고침 할당량 조회 중...',
654
- quota_info: ' URL 새로 고침: {0}/일, {1}개 남음 | 디렉토리 새로 고침: {2}/일, {3}개 남음',
655
- refreshing_urls: '🔄 {0}개 URL 새로 고침 중...',
656
- refreshing_paths: '🔄 {0}개 디렉토리 새로 고침 중...',
657
- refresh_task_id: ' ✅ 작업 ID: {0}',
658
- refresh_urls_failed: ' ❌ URL 새로 고침 실패: {0}',
659
- refresh_paths_failed: ' ❌ 디렉토리 새로 고침 실패: {0}',
660
- refresh_summary: '\n📊 새로 고침 요약',
661
- url_refresh_success: ' ✅ URL 새로 고침 성공, 작업 ID: {0}',
662
- path_refresh_success: ' ✅ 디렉토리 새로 고침 성공, 작업 ID: {0}',
663
- refresh_error: '❌ 새로 고침 실패: {0}',
664
- file_not_found: '❌ 파일을 찾을 수 없습니다: {0}',
665
- },
666
-
667
- // ── src/flash-note/flash-to-prd.ts ──────────────
668
- flashNote: {
669
- toPrd: {
670
- title: '📋 DingTalk 플래시 노트를 PRD로 변환',
671
- help_usage: '사용법: openyida flash-to-prd --file <경로> [--name <프로젝트명>]',
672
- help_usage2: ' openyida flash-to-prd --name <프로젝트명> (표준 입력에서 읽기)',
673
- help_args_title: '인수:',
674
- help_arg_file: ' --file, -f <경로> 플래시 노트 파일 경로 (.txt / .md)',
675
- help_arg_name: ' --name, -n <이름> 프로젝트 이름 (선택, 내용에서 자동 추출)',
676
- help_arg_max_tokens: ' --max-tokens <수> AI 최대 출력 토큰 수 (기본값 8000)',
677
- help_examples_title: '예시:',
678
- help_example1: ' openyida flash-to-prd --file ./meeting-notes.txt --name "장비점검시스템"',
679
- help_example2: ' cat meeting.txt | openyida flash-to-prd --name "장비점검시스템"',
680
- step_read: '[Step 1] 플래시 노트 내용 읽는 중...',
681
- file_not_found: '파일을 찾을 수 없습니다: {0}',
682
- no_input: '플래시 노트 내용이 제공되지 않았습니다. --file로 파일을 지정하거나 파이프로 입력하세요.',
683
- stdin_empty: '표준 입력이 비어 있습니다',
684
- read_success: '✅ 읽기 성공, {0}자',
685
- step_load_module: '[Step 2] 프롬프트 빌더 모듈 로딩 중...',
686
- module_loaded_builtin: '✅ 내장 프롬프트 모듈 로드됨',
687
- module_loaded_local: '✅ 로컬 프롬프트 모듈 로드됨: {0}',
688
- module_not_found: '❌ build-flash-note-prompt.js 모듈을 찾을 수 없습니다',
689
- module_path_tried: ' 시도한 경로 {0}: {1}',
690
- step_preprocess: '[Step 3] 전처리 + 회의 인식...',
691
- preprocess_result: ' 전처리: {0}자 → {1}자',
692
- meeting_meta: ' 회의 메타정보: {0}개 항목{1}',
693
- a1_sections: ' A1 요약 섹션: {0}개{1}',
694
- speakers: ' 발언자 식별: {0}명{1}',
695
- speakers_with_role: ' (역할 주석 {0}명 포함)',
696
- step_login: '[Step 4] 로그인 상태 확인 중...',
697
- no_login: ' 로그인 세션을 찾을 수 없습니다, 로그인 시작...',
698
- login_ready: '✅ 로그인 준비 완료 ({0})',
699
- step_ai: '[Step 5] AI로 PRD 생성 중...',
700
- single_segment: ' 단일 세그먼트 모드, 프롬프트 길이: {0}자',
701
- multi_segment: ' 다중 세그먼트 모드, 총 {0}개 세그먼트',
702
- extracting_segment: ' 세그먼트 {0}/{1} 추출 중 ({2}자)...',
703
- merging_segments: ' 세그먼트 결과 병합 중...',
704
- ai_success: '✅ PRD 생성 성공',
705
- ai_error: 'AI API 호출 실패: {0}',
706
- done: '✅ 플래시 노트에서 PRD 변환 완료',
707
- done_project: ' 프로젝트 이름: {0}',
708
- done_file: ' 출력 파일: {0}',
709
- done_size: ' 파일 크기: {0}자',
710
- done_meeting: ' 회의 인식: 메타정보 {0}개, A1 요약 {1}개, 발언자 {2}명',
711
- },
712
- },
713
- update_app: {
714
- 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.',
715
- },
716
- aggregate_table: {
717
- usage: 'Usage: openyida aggregate-table <list|create-empty|inspect|preview|save|publish|status> <appType> ...',
718
- commands_title: 'Subcommands:',
719
- cmd_list: 'list <appType> [--keyword <text>] [--json] List aggregate tables in an app',
720
- cmd_create_empty: 'create-empty <appType> "<name>" [--open|--no-open] Create a blank aggregate table and return the designer URL',
721
- cmd_inspect: 'inspect <appType> <formUuid> [--json] Read aggregate table design config',
722
- cmd_preview: 'preview <appType> <formUuid> <design.json> [--json] Preview config without saving',
723
- cmd_save: 'save <appType> <formUuid> <design.json> [--json] Save an aggregate table draft',
724
- cmd_publish: 'publish <appType> <formUuid> <design.json> [--json] Publish aggregate table config',
725
- cmd_status: 'status <appType> <formUuid> [--json] Query aggregate table build status',
726
- examples_title: 'Examples:',
727
- example_list: 'openyida aggregate-table list APP_XXX',
728
- example_create_empty: 'openyida aggregate-table create-empty APP_XXX "Customer Contract Aggregate" --open',
729
- example_inspect: 'openyida aggregate-table inspect APP_XXX FORM_XXX --json',
730
- example_preview: 'openyida aggregate-table preview APP_XXX FORM_XXX .cache/openyida/aggregate/design.json',
731
- example_save: 'openyida aggregate-table save APP_XXX FORM_XXX .cache/openyida/aggregate/design.json',
732
- example_publish: 'openyida aggregate-table publish APP_XXX FORM_XXX .cache/openyida/aggregate/design.json',
733
- example_status: 'openyida aggregate-table status APP_XXX FORM_XXX',
734
- list_usage: 'Usage: openyida aggregate-table list <appType> [--keyword <text>] [--json]',
735
- create_empty_usage: 'Usage: openyida aggregate-table create-empty <appType> "<name>" [--locale zh_CN|en_US|ja_JP] [--open|--no-open]',
736
- inspect_usage: 'Usage: openyida aggregate-table inspect <appType> <formUuid> [--json]',
737
- preview_usage: 'Usage: openyida aggregate-table preview <appType> <formUuid> <design.json> [--json]',
738
- save_usage: 'Usage: openyida aggregate-table save <appType> <formUuid> <design.json> [--json]',
739
- publish_usage: 'Usage: openyida aggregate-table publish <appType> <formUuid> <design.json> [--json]',
740
- status_usage: 'Usage: openyida aggregate-table status <appType> <formUuid> [--json]',
741
- no_login: 'No login state found. Run openyida login first.',
742
- unsupported_locale: 'Unsupported locale: {0}',
743
- unknown_subcommand: 'Unknown aggregate-table subcommand: {0}',
744
- design_required: 'Missing aggregate table design JSON or file path',
745
- invalid_json: 'Aggregate table design config is not valid JSON: {0}',
746
- design_object_required: 'Aggregate table design config must be a JSON object',
747
- check_feature: 'Check aggregate table capability',
748
- feature_disabled: 'Aggregate table is not enabled for this app/org, or the edition quota has been reached',
749
- create_empty: 'Create blank aggregate table',
750
- inspect: 'Read aggregate table config',
751
- preview: 'Preview aggregate table config',
752
- save: 'Save aggregate table draft',
753
- publish: 'Publish aggregate table config',
754
- status: 'Query aggregate table build status',
755
- publish_requires_source: 'Publishing requires at least one data source. Configure relationForms first.',
756
- list_success: 'Aggregate table list',
757
- create_empty_success: 'Aggregate table created',
758
- inspect_success: 'Aggregate table config loaded',
759
- preview_success: 'Aggregate table preview succeeded',
760
- save_success: 'Aggregate table draft saved',
761
- publish_success: 'Aggregate table published',
762
- status_success: 'Aggregate table status loaded',
763
- },
764
- ai_form_setting: {
765
- usage: 'Usage: openyida ai-form-setting <get|fields|models|enable|disable|save> <appType> ...',
766
- commands_title: 'Subcommands:',
767
- cmd_get: 'get <appType> <formUuid> [--raw] [--json] Query AI approval prompt config',
768
- cmd_fields: 'fields <appType> <formUuid> [--type TEXT|IMAGE|ATTACHMENT] List insertable fields',
769
- cmd_models: 'models <appType> [--type TEXT|IMAGE|ATTACHMENT] List available models',
770
- cmd_enable: 'enable <appType> <formUuid> [--json] Enable AI approval prompts',
771
- cmd_disable: 'disable <appType> <formUuid> [--json] Disable AI approval prompts',
772
- cmd_save: 'save <appType> <formUuid> <config.json> [--enable] Save prompts and model config',
773
- examples_title: 'Examples:',
774
- example_get: 'openyida ai-form-setting get APP_XXX FORM_XXX --json',
775
- example_fields: 'openyida ai-form-setting fields APP_XXX FORM_XXX --type ATTACHMENT',
776
- example_models: 'openyida ai-form-setting models APP_XXX --type IMAGE',
777
- example_enable: 'openyida ai-form-setting enable APP_XXX FORM_XXX',
778
- example_save: 'openyida ai-form-setting save APP_XXX FORM_XXX .cache/openyida/ai-form-setting/config.json --enable',
779
- enable_disable_conflict: '--enable and --disable cannot be used together',
780
- invalid_type: 'Invalid prompt type: {0}. Valid values: {1}',
781
- invalid_status: 'Invalid AI approval prompt status: {0}',
782
- config_required: 'Missing AI approval prompt JSON config or file path',
783
- invalid_json: 'AI approval prompt config is not valid JSON: {0}',
784
- invalid_variable: 'Variable #{0} must be an object',
785
- variable_required: 'Variable #{0} must contain varName and fieldId',
786
- prompt_required: 'Prompt {0} is missing prompt/content',
787
- variables_array_required: 'variables must be an array',
788
- invalid_item: 'Prompt config #{0} must be an object',
789
- model_required: 'Prompt {0} is missing modelId',
790
- invalid_config_part: '{0} must be a JSON object or a valid JSON string',
791
- config_object_required: 'AI approval prompt config must be a JSON object or array',
792
- items_array_required: 'AI approval prompt config must contain an items array',
793
- too_many_items: 'AI approval prompts support up to {0} items',
794
- duplicate_item_id: 'Duplicate itemId: {0}',
795
- no_login: 'No login state found. Run openyida login first.',
796
- get_usage: 'Usage: openyida ai-form-setting get <appType> <formUuid> [--raw] [--json]',
797
- fields_usage: 'Usage: openyida ai-form-setting fields <appType> <formUuid> [--type TEXT|IMAGE|ATTACHMENT] [--json]',
798
- models_usage: 'Usage: openyida ai-form-setting models <appType> [--type TEXT|IMAGE|ATTACHMENT] [--json]',
799
- status_usage: 'Usage: openyida ai-form-setting <enable|disable> <appType> <formUuid> [--json]',
800
- save_usage: 'Usage: openyida ai-form-setting save <appType> <formUuid> <config.json> [--enable|--disable] [--json]',
801
- get_action: 'Query AI approval prompt config',
802
- fields_action: 'Query AI approval prompt fields',
803
- models_action: 'Query AI approval prompt models',
804
- status_action: 'Update AI approval prompt status',
805
- save_action: 'Save AI approval prompt config',
806
- get_success: 'AI approval prompt config',
807
- fields_success: 'AI approval prompt fields',
808
- models_success: 'AI approval prompt models',
809
- save_success: 'AI approval prompt config saved',
810
- enabled: 'AI approval prompts enabled',
811
- disabled: 'AI approval prompts disabled',
812
- unknown_subcommand: 'Unknown ai-form-setting subcommand: {0}',
813
- },
814
- safe_json: {
815
- hint_unquoted_key: 'A key looks unquoted (JSON requires all keys wrapped in double quotes, e.g. {"name":1})',
816
- hint_single_quote: 'Single quotes were likely used (JSON only allows double quotes ", not single quotes \')',
817
- hint_trailing_comma: 'There is likely a trailing comma (JSON does not allow a comma right before } or ])',
818
- hint_smart_quote: 'Smart / curly quotes were likely used (“ ” ‘ ’); replace them with standard ASCII double quotes "',
819
- hint_generic: 'Invalid JSON; please check it against the standard JSON syntax',
820
- label_cause: 'Likely cause: ',
821
- label_position: 'Error position: char ',
822
- label_raw: 'Raw error: ',
823
- label_suggestion: 'Suggestion: ',
824
- suggestion_file: 'For long or special-character content, pass it via a file path (--spec ./xxx.json / <file path>) to avoid shell-escaping issues',
825
- recovered_smart_quote: 'Detected smart / curly quotes; auto-normalized them to standard double quotes and parsed successfully. Prefer standard ASCII quotes at the source.',
826
- },
827
- codex_login: {
828
- title: ' openyida login {0} - {1} Login Mode',
829
- not_codex: 'Current environment is not detected as Codex / Qoder / Wukong; returning an in-app browser login handoff only.',
830
- no_playwright: '{0} mode does not require Playwright or a separate Chromium install.',
831
- using_browser: '{0} in-app Browser is only suitable for unauthenticated page previews; use openyida login for CLI auth.',
832
- browser_handoff_hint: '{0} in-app Browser is not used for CLI auth. Use openyida login.',
833
- handoff_message: '{0} in-app Browser cannot complete CLI token login. Run openyida login.',
834
- cache_available: 'Existing CLI token session cache is available; no browser login needed.',
835
- },
836
- };