@nac3/forge-cli 0.2.1-alpha.60 → 1.0.1

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 (303) hide show
  1. package/README.md +5 -1
  2. package/dist/agents/bridge.d.ts.map +1 -1
  3. package/dist/agents/bridge.js +27 -0
  4. package/dist/agents/bridge.js.map +1 -1
  5. package/dist/agents/config_resolver.d.ts.map +1 -1
  6. package/dist/agents/config_resolver.js +15 -15
  7. package/dist/agents/config_resolver.js.map +1 -1
  8. package/dist/agents/runner.d.ts +8 -0
  9. package/dist/agents/runner.d.ts.map +1 -1
  10. package/dist/agents/runner.js +58 -11
  11. package/dist/agents/runner.js.map +1 -1
  12. package/dist/agents/system_prompt.d.ts.map +1 -1
  13. package/dist/agents/system_prompt.js +2 -1
  14. package/dist/agents/system_prompt.js.map +1 -1
  15. package/dist/bin/yf.d.ts.map +1 -1
  16. package/dist/bin/yf.js +18 -0
  17. package/dist/bin/yf.js.map +1 -1
  18. package/dist/chat/claude.d.ts +13 -0
  19. package/dist/chat/claude.d.ts.map +1 -1
  20. package/dist/chat/claude.js +95 -10
  21. package/dist/chat/claude.js.map +1 -1
  22. package/dist/chat/claude_cli.d.ts +10 -0
  23. package/dist/chat/claude_cli.d.ts.map +1 -1
  24. package/dist/chat/claude_cli.js +97 -16
  25. package/dist/chat/claude_cli.js.map +1 -1
  26. package/dist/chat/completion_hallucination_detector.d.ts +11 -0
  27. package/dist/chat/completion_hallucination_detector.d.ts.map +1 -1
  28. package/dist/chat/completion_hallucination_detector.js +37 -2
  29. package/dist/chat/completion_hallucination_detector.js.map +1 -1
  30. package/dist/chat/doctrine_digest.d.ts.map +1 -1
  31. package/dist/chat/doctrine_digest.js +10 -6
  32. package/dist/chat/doctrine_digest.js.map +1 -1
  33. package/dist/chat/panel.d.ts.map +1 -1
  34. package/dist/chat/panel.js +923 -50
  35. package/dist/chat/panel.js.map +1 -1
  36. package/dist/chat/refusal_detector.d.ts.map +1 -1
  37. package/dist/chat/refusal_detector.js +2 -1
  38. package/dist/chat/refusal_detector.js.map +1 -1
  39. package/dist/chat/server.d.ts +1 -0
  40. package/dist/chat/server.d.ts.map +1 -1
  41. package/dist/chat/server.js +960 -73
  42. package/dist/chat/server.js.map +1 -1
  43. package/dist/chat/session_projects.d.ts +31 -0
  44. package/dist/chat/session_projects.d.ts.map +1 -0
  45. package/dist/chat/session_projects.js +36 -0
  46. package/dist/chat/session_projects.js.map +1 -0
  47. package/dist/chat/session_store.d.ts +32 -0
  48. package/dist/chat/session_store.d.ts.map +1 -0
  49. package/dist/chat/session_store.js +58 -0
  50. package/dist/chat/session_store.js.map +1 -0
  51. package/dist/chat/tooling_section.d.ts +11 -0
  52. package/dist/chat/tooling_section.d.ts.map +1 -0
  53. package/dist/chat/tooling_section.js +70 -0
  54. package/dist/chat/tooling_section.js.map +1 -0
  55. package/dist/chat/tools/app_backend_dispatch.d.ts.map +1 -1
  56. package/dist/chat/tools/app_backend_dispatch.js +44 -1
  57. package/dist/chat/tools/app_backend_dispatch.js.map +1 -1
  58. package/dist/chat/tools/fs_editor.d.ts.map +1 -1
  59. package/dist/chat/tools/fs_editor.js +53 -3
  60. package/dist/chat/tools/fs_editor.js.map +1 -1
  61. package/dist/chat/tools/graph.js +2 -2
  62. package/dist/chat/tools/graph.js.map +1 -1
  63. package/dist/chat/tools/keys.d.ts.map +1 -1
  64. package/dist/chat/tools/keys.js +5 -18
  65. package/dist/chat/tools/keys.js.map +1 -1
  66. package/dist/chat/tools/nac3_invoke.d.ts.map +1 -1
  67. package/dist/chat/tools/nac3_invoke.js +16 -7
  68. package/dist/chat/tools/nac3_invoke.js.map +1 -1
  69. package/dist/chat/tools/shell.d.ts +6 -0
  70. package/dist/chat/tools/shell.d.ts.map +1 -1
  71. package/dist/chat/tools/shell.js +39 -0
  72. package/dist/chat/tools/shell.js.map +1 -1
  73. package/dist/chat/tools/workflow.d.ts +20 -0
  74. package/dist/chat/tools/workflow.d.ts.map +1 -1
  75. package/dist/chat/tools/workflow.js +98 -0
  76. package/dist/chat/tools/workflow.js.map +1 -1
  77. package/dist/chat/tools.d.ts.map +1 -1
  78. package/dist/chat/tools.js +79 -1
  79. package/dist/chat/tools.js.map +1 -1
  80. package/dist/chat/turn_control.d.ts +42 -0
  81. package/dist/chat/turn_control.d.ts.map +1 -0
  82. package/dist/chat/turn_control.js +53 -0
  83. package/dist/chat/turn_control.js.map +1 -0
  84. package/dist/commands/brain.js +1 -1
  85. package/dist/commands/chat.d.ts.map +1 -1
  86. package/dist/commands/chat.js +61 -10
  87. package/dist/commands/chat.js.map +1 -1
  88. package/dist/commands/graph.js +9 -9
  89. package/dist/commands/graph.js.map +1 -1
  90. package/dist/commands/keys_setup.d.ts +10 -28
  91. package/dist/commands/keys_setup.d.ts.map +1 -1
  92. package/dist/commands/keys_setup.js +54 -228
  93. package/dist/commands/keys_setup.js.map +1 -1
  94. package/dist/commands/license.d.ts.map +1 -1
  95. package/dist/commands/license.js +52 -28
  96. package/dist/commands/license.js.map +1 -1
  97. package/dist/commands/mcp.d.ts.map +1 -1
  98. package/dist/commands/mcp.js +62 -6
  99. package/dist/commands/mcp.js.map +1 -1
  100. package/dist/commands/mobile.d.ts +1 -1
  101. package/dist/commands/mobile.d.ts.map +1 -1
  102. package/dist/commands/mobile.js +32 -28
  103. package/dist/commands/mobile.js.map +1 -1
  104. package/dist/commands/onboard.d.ts +19 -0
  105. package/dist/commands/onboard.d.ts.map +1 -0
  106. package/dist/commands/onboard.js +126 -0
  107. package/dist/commands/onboard.js.map +1 -0
  108. package/dist/commands/pending.d.ts.map +1 -1
  109. package/dist/commands/pending.js +25 -1
  110. package/dist/commands/pending.js.map +1 -1
  111. package/dist/commands/projects.js +25 -1
  112. package/dist/commands/projects.js.map +1 -1
  113. package/dist/commands/review-screens.js +28 -1
  114. package/dist/commands/review-screens.js.map +1 -1
  115. package/dist/commands/workflow.d.ts +18 -0
  116. package/dist/commands/workflow.d.ts.map +1 -0
  117. package/dist/commands/workflow.js +253 -0
  118. package/dist/commands/workflow.js.map +1 -0
  119. package/dist/core/brain_config.d.ts +2 -0
  120. package/dist/core/brain_config.d.ts.map +1 -1
  121. package/dist/core/brain_config.js +18 -3
  122. package/dist/core/brain_config.js.map +1 -1
  123. package/dist/core/cf_tunnel.d.ts.map +1 -1
  124. package/dist/core/cf_tunnel.js +8 -2
  125. package/dist/core/cf_tunnel.js.map +1 -1
  126. package/dist/core/cost_router.d.ts.map +1 -1
  127. package/dist/core/cost_router.js +11 -2
  128. package/dist/core/cost_router.js.map +1 -1
  129. package/dist/core/desktop_open.d.ts +16 -0
  130. package/dist/core/desktop_open.d.ts.map +1 -0
  131. package/dist/core/desktop_open.js +114 -0
  132. package/dist/core/desktop_open.js.map +1 -0
  133. package/dist/core/keys_envelope.d.ts.map +1 -1
  134. package/dist/core/keys_envelope.js +5 -1
  135. package/dist/core/keys_envelope.js.map +1 -1
  136. package/dist/core/limits_config.d.ts +5 -0
  137. package/dist/core/limits_config.d.ts.map +1 -1
  138. package/dist/core/limits_config.js +5 -0
  139. package/dist/core/limits_config.js.map +1 -1
  140. package/dist/core/logger.d.ts.map +1 -1
  141. package/dist/core/logger.js +3 -0
  142. package/dist/core/logger.js.map +1 -1
  143. package/dist/core/pairing.d.ts +6 -0
  144. package/dist/core/pairing.d.ts.map +1 -1
  145. package/dist/core/pairing.js +41 -2
  146. package/dist/core/pairing.js.map +1 -1
  147. package/dist/core/provider_keys.d.ts.map +1 -1
  148. package/dist/core/provider_keys.js +25 -12
  149. package/dist/core/provider_keys.js.map +1 -1
  150. package/dist/core/provider_models.js +1 -1
  151. package/dist/deploy/cloudflare.d.ts.map +1 -1
  152. package/dist/deploy/cloudflare.js +13 -2
  153. package/dist/deploy/cloudflare.js.map +1 -1
  154. package/dist/design/yujin_design_resolver.d.ts +16 -0
  155. package/dist/design/yujin_design_resolver.d.ts.map +1 -1
  156. package/dist/design/yujin_design_resolver.js +103 -20
  157. package/dist/design/yujin_design_resolver.js.map +1 -1
  158. package/dist/docs/doctrine/default-design-system.md +32 -0
  159. package/dist/docs/doctrine/office-tools.md +20 -0
  160. package/dist/docs/doctrine/pizarron.md +40 -0
  161. package/dist/docs/doctrine/verb-composition.md +16 -0
  162. package/dist/docs/doctrine/workflow-kinds.md +39 -22
  163. package/dist/docs/doctrine/workflow.md +12 -4
  164. package/dist/license/auto_sync.d.ts +22 -0
  165. package/dist/license/auto_sync.d.ts.map +1 -0
  166. package/dist/license/auto_sync.js +91 -0
  167. package/dist/license/auto_sync.js.map +1 -0
  168. package/dist/license/handle_key.d.ts +32 -0
  169. package/dist/license/handle_key.d.ts.map +1 -0
  170. package/dist/license/handle_key.js +56 -0
  171. package/dist/license/handle_key.js.map +1 -0
  172. package/dist/license/hito4_client.d.ts.map +1 -1
  173. package/dist/license/hito4_client.js +63 -25
  174. package/dist/license/hito4_client.js.map +1 -1
  175. package/dist/llm/gemini_client.d.ts.map +1 -1
  176. package/dist/llm/gemini_client.js +5 -2
  177. package/dist/llm/gemini_client.js.map +1 -1
  178. package/dist/llm/managed_client.d.ts.map +1 -1
  179. package/dist/llm/managed_client.js +14 -9
  180. package/dist/llm/managed_client.js.map +1 -1
  181. package/dist/mcp/plan_bridges.d.ts +17 -0
  182. package/dist/mcp/plan_bridges.d.ts.map +1 -0
  183. package/dist/mcp/plan_bridges.js +119 -0
  184. package/dist/mcp/plan_bridges.js.map +1 -0
  185. package/dist/migrate/ai-apply.d.ts.map +1 -1
  186. package/dist/migrate/ai-apply.js +25 -2
  187. package/dist/migrate/ai-apply.js.map +1 -1
  188. package/dist/nac3/internal_manifest.d.ts.map +1 -1
  189. package/dist/nac3/internal_manifest.js +200 -10
  190. package/dist/nac3/internal_manifest.js.map +1 -1
  191. package/dist/nac3/verb_tier_map.d.ts.map +1 -1
  192. package/dist/nac3/verb_tier_map.js +3 -0
  193. package/dist/nac3/verb_tier_map.js.map +1 -1
  194. package/dist/onboarding/concierge_client.d.ts +34 -0
  195. package/dist/onboarding/concierge_client.d.ts.map +1 -0
  196. package/dist/onboarding/concierge_client.js +80 -0
  197. package/dist/onboarding/concierge_client.js.map +1 -0
  198. package/dist/onboarding/next_step.d.ts +32 -0
  199. package/dist/onboarding/next_step.d.ts.map +1 -0
  200. package/dist/onboarding/next_step.js +60 -0
  201. package/dist/onboarding/next_step.js.map +1 -0
  202. package/dist/pending/store.d.ts +7 -0
  203. package/dist/pending/store.d.ts.map +1 -1
  204. package/dist/pending/store.js +19 -0
  205. package/dist/pending/store.js.map +1 -1
  206. package/dist/pending/types.d.ts +20 -0
  207. package/dist/pending/types.d.ts.map +1 -1
  208. package/dist/pending/types.js.map +1 -1
  209. package/dist/reader/parsers/epub.d.ts.map +1 -1
  210. package/dist/reader/parsers/epub.js +6 -1
  211. package/dist/reader/parsers/epub.js.map +1 -1
  212. package/dist/relay/board_snapshot.d.ts +69 -0
  213. package/dist/relay/board_snapshot.d.ts.map +1 -0
  214. package/dist/relay/board_snapshot.js +149 -0
  215. package/dist/relay/board_snapshot.js.map +1 -0
  216. package/dist/relay/command_consumer.d.ts +97 -0
  217. package/dist/relay/command_consumer.d.ts.map +1 -0
  218. package/dist/relay/command_consumer.js +135 -0
  219. package/dist/relay/command_consumer.js.map +1 -0
  220. package/dist/relay/mock_relay.d.ts +34 -0
  221. package/dist/relay/mock_relay.d.ts.map +1 -0
  222. package/dist/relay/mock_relay.js +93 -0
  223. package/dist/relay/mock_relay.js.map +1 -0
  224. package/dist/relay/relay_client.d.ts +28 -0
  225. package/dist/relay/relay_client.d.ts.map +1 -0
  226. package/dist/relay/relay_client.js +80 -0
  227. package/dist/relay/relay_client.js.map +1 -0
  228. package/dist/relay/relay_publisher.d.ts +59 -0
  229. package/dist/relay/relay_publisher.d.ts.map +1 -0
  230. package/dist/relay/relay_publisher.js +101 -0
  231. package/dist/relay/relay_publisher.js.map +1 -0
  232. package/dist/relay/types.d.ts +54 -0
  233. package/dist/relay/types.d.ts.map +1 -0
  234. package/dist/relay/types.js +8 -0
  235. package/dist/relay/types.js.map +1 -0
  236. package/dist/semantic_graph/ast_extract.d.ts +5 -0
  237. package/dist/semantic_graph/ast_extract.d.ts.map +1 -1
  238. package/dist/semantic_graph/ast_extract.js +46 -0
  239. package/dist/semantic_graph/ast_extract.js.map +1 -1
  240. package/dist/semantic_graph/derive.d.ts +12 -0
  241. package/dist/semantic_graph/derive.d.ts.map +1 -1
  242. package/dist/semantic_graph/derive.js +325 -6
  243. package/dist/semantic_graph/derive.js.map +1 -1
  244. package/dist/semantic_graph/store.d.ts +9 -0
  245. package/dist/semantic_graph/store.d.ts.map +1 -1
  246. package/dist/semantic_graph/store.js +23 -1
  247. package/dist/semantic_graph/store.js.map +1 -1
  248. package/dist/semantic_graph/types.d.ts +1 -1
  249. package/dist/semantic_graph/types.d.ts.map +1 -1
  250. package/dist/support/github_dispatcher.d.ts.map +1 -1
  251. package/dist/support/github_dispatcher.js +30 -2
  252. package/dist/support/github_dispatcher.js.map +1 -1
  253. package/dist/tasks/supervisor.d.ts +88 -0
  254. package/dist/tasks/supervisor.d.ts.map +1 -0
  255. package/dist/tasks/supervisor.js +308 -0
  256. package/dist/tasks/supervisor.js.map +1 -0
  257. package/dist/tasks/task_type.d.ts +11 -0
  258. package/dist/tasks/task_type.d.ts.map +1 -0
  259. package/dist/tasks/task_type.js +21 -0
  260. package/dist/tasks/task_type.js.map +1 -0
  261. package/dist/vault/store.d.ts.map +1 -1
  262. package/dist/vault/store.js +6 -1
  263. package/dist/vault/store.js.map +1 -1
  264. package/dist/version.d.ts +3 -5
  265. package/dist/version.d.ts.map +1 -1
  266. package/dist/version.js +3 -5
  267. package/dist/version.js.map +1 -1
  268. package/dist/voice/providers/google.d.ts.map +1 -1
  269. package/dist/voice/providers/google.js +6 -4
  270. package/dist/voice/providers/google.js.map +1 -1
  271. package/dist/workflow/config.d.ts +43 -0
  272. package/dist/workflow/config.d.ts.map +1 -0
  273. package/dist/workflow/config.js +199 -0
  274. package/dist/workflow/config.js.map +1 -0
  275. package/dist/workflow/instances.d.ts +40 -0
  276. package/dist/workflow/instances.d.ts.map +1 -0
  277. package/dist/workflow/instances.js +122 -0
  278. package/dist/workflow/instances.js.map +1 -0
  279. package/dist/workflow/multi_view.d.ts +27 -0
  280. package/dist/workflow/multi_view.d.ts.map +1 -0
  281. package/dist/workflow/multi_view.js +76 -0
  282. package/dist/workflow/multi_view.js.map +1 -0
  283. package/dist/workflow/orchestrator.d.ts +111 -0
  284. package/dist/workflow/orchestrator.d.ts.map +1 -0
  285. package/dist/workflow/orchestrator.js +241 -0
  286. package/dist/workflow/orchestrator.js.map +1 -0
  287. package/docs/doctrine/default-design-system.md +32 -0
  288. package/docs/doctrine/office-tools.md +20 -0
  289. package/docs/doctrine/pizarron.md +40 -0
  290. package/docs/doctrine/verb-composition.md +16 -0
  291. package/docs/doctrine/workflow-kinds.md +39 -22
  292. package/docs/doctrine/workflow.md +12 -4
  293. package/package.json +2 -1
  294. package/src/i18n/catalogs/ar.json +223 -210
  295. package/src/i18n/catalogs/de.json +223 -210
  296. package/src/i18n/catalogs/en.json +223 -210
  297. package/src/i18n/catalogs/es.json +223 -210
  298. package/src/i18n/catalogs/fr.json +223 -210
  299. package/src/i18n/catalogs/hi.json +223 -210
  300. package/src/i18n/catalogs/it.json +223 -210
  301. package/src/i18n/catalogs/ja.json +223 -210
  302. package/src/i18n/catalogs/pt.json +223 -210
  303. package/src/i18n/catalogs/zh.json +223 -210
@@ -1,210 +1,223 @@
1
- {
2
- "panel.brand": "Yujin Forge",
3
- "panel.brand.kanji": "侑",
4
- "panel.tagline": "वॉइस-फर्स्ट डेवलपमेंट असिस्टेंट",
5
- "panel.input.placeholder": "Yujin से पूछें",
6
- "panel.button.send": "भेजें",
7
- "panel.button.mic": "बोलें (दबाकर रखें)",
8
- "panel.button.mic.recording": "रिकॉर्डिंग रोकने के लिए दबाएँ",
9
- "panel.button.tts": "आवाज़ चालू",
10
- "panel.button.keys": "कुंजियाँ",
11
- "panel.button.minimise": "छोटा करें",
12
- "panel.button.maximise": "बड़ा करें",
13
- "panel.button.close": "बंद करें",
14
- "panel.button.language": "भाषा",
15
- "panel.trace.title": "क्रिया लॉग",
16
- "panel.trace.count.one": "{n} टूल कॉल",
17
- "panel.trace.count.other": "{n} टूल कॉल्स",
18
- "panel.trace.empty.kanji": "空",
19
- "panel.trace.empty.body": "Yujin Forge आपको जवाब देने के लिए जो भी टूल चलाता है, वह यहाँ दिखाता है: मैनिफेस्ट पढ़ना, SPEC में खोज, कंपोनेंट्स संपादन, दस्तावेज़ पढ़ना। ऐसा कोई प्रश्न पूछें जिसमें इनकी ज़रूरत हो।",
20
- "panel.trace.badge.tool": "टूल",
21
- "panel.trace.badge.voice": "आवाज़",
22
- "panel.trace.badge.error": "त्रुटि",
23
- "panel.stream.empty.kanji": "侑仁",
24
- "panel.stream.empty.body": "Yujin Forge ऑनलाइन है। प्रोजेक्ट में बदलाव माँगें।",
25
- "panel.status.no_audio": "कोई ऑडियो कैप्चर नहीं हुआ। माइक्रोफ़ोन ने शायद कुछ नहीं पकड़ा।",
26
- "panel.status.did_not_catch": "मैं समझ नहीं पाया। फिर से कोशिश करें।",
27
- "panel.status.mic_denied": "माइक्रोफ़ोन अनुमति अस्वीकृत या अनुपलब्ध: {error}",
28
- "panel.status.voice_failed": "आवाज़ विफल: {error}",
29
- "panel.status.voice_reply_failed": "उत्तर नहीं चला सका: {error}",
30
- "panel.status.audio_play_error": "ऑडियो नहीं चला सका: {error}",
31
- "panel.status.reading": "{filename} पढ़ रहा हूँ...",
32
- "panel.status.ingest_failed": "इनजेस्ट विफल: {error}",
33
- "panel.status.read_failed": "विनिर्देश नहीं पढ़ सका: {error}",
34
- "panel.drop.title": "विनिर्देश यहाँ छोड़ें",
35
- "panel.drop.hint": "PDF, DOCX, HTML, MD, RTF, EPUB, CSV, XLSX, TXT",
36
- "panel.ingest.spec_attached": "विनिर्देश संलग्न: {filename}, {kb} KB",
37
- "panel.ingest.read_label": "पढ़ा गया।",
38
- "panel.ingest.title_label": "शीर्षक: {title}",
39
- "panel.ingest.no_title": "(कोई शीर्षक नहीं)",
40
- "panel.ingest.format_label": "प्रारूप: {format} / {sections} खंड / {kb} KB",
41
- "panel.ingest.first_lines": "पहली पंक्तियाँ:",
42
- "panel.ingest.action_done": "क्रिया {tool} पूर्ण।",
43
- "vault.modal.title": "क्रेडेंशियल्स (वॉल्ट)",
44
- "vault.modal.aria.close": "क्रेडेंशियल्स मोडल बंद करें",
45
- "vault.tab.list": "लोड किए गए स्लॉट्स",
46
- "vault.tab.add": "जोड़ें",
47
- "vault.list.loading": "लोड हो रहा है...",
48
- "vault.list.empty": "आपने अभी तक कोई कुंजी लोड नहीं की है। शुरू करने के लिए \"जोड़ें\" पर क्लिक करें।",
49
- "vault.add.slot_label": "स्लॉट का नाम",
50
- "vault.add.slot_hint": "छोटे अक्षर, अंक, अंडरस्कोर, हाइफ़न। अक्षर से शुरू होना चाहिए।",
51
- "vault.add.value_label": "सादा-पाठ मान (मास्क किया गया)",
52
- "vault.add.value_hint": "सहेजते समय केवल एक बार दिखाई देता है। बाद में बदला जा सकता है पर पढ़ा नहीं जा सकता।",
53
- "vault.add.button_save": "सहेजें",
54
- "vault.add.button_cancel": "रद्द करें",
55
- "vault.add.success": "स्लॉट {slot} सहेजा गया।",
56
- "vault.add.overwrite": "स्लॉट {slot} ओवरराइट किया गया।",
57
- "manual.intro": "Yujin Forge -- उपयोगकर्ता मैनुअल",
58
- "manual.section.welcome": "स्वागत है",
59
- "manual.section.install": "स्थापना",
60
- "manual.section.first_run": "पहला रन",
61
- "manual.section.voice": "वॉइस कमांड्स",
62
- "manual.section.spec_ingest": "विनिर्देश इनजेस्ट",
63
- "manual.section.troubleshooting": "समस्या निवारण",
64
- "manual.section.support": "सहायता",
65
- "lang.name.es": "स्पेनिश",
66
- "lang.name.en": "अंग्रेज़ी",
67
- "lang.name.pt": "पुर्तगाली",
68
- "lang.name.fr": "फ़्रांसीसी",
69
- "lang.name.ja": "जापानी",
70
- "lang.name.zh": "चीनी",
71
- "lang.name.hi": "हिन्दी",
72
- "lang.name.ar": "अरबी",
73
- "lang.name.de": "जर्मन",
74
- "lang.name.it": "इतालवी",
75
- "recap.fallback_period": "।",
76
- "recap.empty": "अभी सारांश के लिए कुछ नहीं है।",
77
- "error_ui.severity.info": "जानकारी",
78
- "error_ui.severity.warning": "चेतावनी",
79
- "error_ui.severity.error": "त्रुटि",
80
- "error_ui.severity.fatal": "घातक",
81
- "error_ui.label.what": "क्या हुआ",
82
- "error_ui.label.why": "क्यों",
83
- "error_ui.label.fix": "कैसे ठीक करें",
84
- "error_ui.label.cmd": "कमांड",
85
- "error_ui.label.docs": "स्थानीय दस्तावेज़",
86
- "error_ui.label.retry": "पुनः प्रयास करें में",
87
- "error_ui.copy_btn": "कमांड कॉपी करें",
88
- "error_ui.unknown.what": "Forge को आंतरिक त्रुटि मिली (अज्ञात कोड)।",
89
- "error_ui.unknown.why": "कोड {code} कैटलॉग में नहीं है। यह एक बग है।",
90
- "error_ui.unknown.fix": "कोड + ट्रेसबैक के साथ https://github.com/yujinapp/yujin-forge/issues पर एक issue खोलें।",
91
- "error.cap_frontier_exhausted.what": "frontier टियर (बड़ा मॉडल) की मासिक टोकन सीमा समाप्त हो गई।",
92
- "error.cap_frontier_exhausted.why": "आपकी प्लान {plan} frontier पर अधिकतम {cap} टोकन/महीना अनुमति देती है। आपने {used} उपयोग किया। अगले UTC महीने की शुरुआत में रीसेट।",
93
- "error.cap_frontier_exhausted.fix": "सीधे Anthropic BYOK पर स्विच करें: worker की मासिक सीमा बायपास करता है। आपकी लागत Anthropic का सीधा शुल्क बन जाती है।",
94
- "error.cap_frontier_exhausted.cmd": "yf brain config --frontier-provider anthropic --frontier-model claude-opus-4-7",
95
- "error.cap_eco_exhausted.what": "eco टियर (छोटा मॉडल) की मासिक टोकन सीमा समाप्त हो गई।",
96
- "error.cap_eco_exhausted.why": "आपकी प्लान {plan} eco पर अधिकतम {cap} टोकन/महीना अनुमति देती है। आपने {used} उपयोग किया। अगले UTC महीने की शुरुआत में रीसेट।",
97
- "error.cap_eco_exhausted.fix": "सीधे BYOK पर स्विच करें या प्लान अपग्रेड करें। BYOK worker की सीमा बायपास करता है।",
98
- "error.cap_eco_exhausted.cmd": "yf brain config --eco-provider google_ai --eco-model gemini-2.5-flash-lite",
99
- "error.tier_not_in_plan.what": "टियर {tier} आपकी प्लान पर सक्षम नहीं है।",
100
- "error.tier_not_in_plan.why": "आपकी प्लान {plan} में {tier} टियर शामिल नहीं है। संभवतः आप free-public पर हैं या आपका लाइसेंस समाप्त हो गया है।",
101
- "error.tier_not_in_plan.fix": "भुगतान लाइसेंस सक्रिय करें या सीधे BYOK पर स्विच करें (आपकी लागत, worker सीमा के बिना)।",
102
- "error.tier_not_in_plan.cmd": "yf license activate --key <jwt>",
103
- "error.response_truncated.what": "मॉडल की प्रतिक्रिया समाप्त होने से पहले काट दी गई।",
104
- "error.response_truncated.why": "managed_max_tokens_per_turn = {limit} टोकन सीमा टर्न के बीच में पहुंच गई। मॉडल ने जेनरेट करना बंद कर दिया।",
105
- "error.response_truncated.fix": "yf limits के माध्यम से सीमा बढ़ाएं। चैट पुनरारंभ किए बिना अगले टर्न पर लागू होता है।",
106
- "error.response_truncated.cmd": "yf limits set managed_max_tokens_per_turn 16384",
107
- "error.response_truncated.banner": "[max_tokens={max} द्वारा प्रतिक्रिया छंटनी गई। सीमा बढ़ाएं: yf limits set managed_max_tokens_per_turn {suggested}]",
108
- "error.modal_trace_stale.what": "अनुमोदन मोडल समाप्त हो गया या अनाथ है।",
109
- "error.modal_trace_stale.why": "trace_id {trace_id} dispatcher में कोई लंबित अनुमोदन नहीं है। संभावित race condition invoke और panel state के बीच, या पिछले cancel ने trace को zombie छोड़ा।",
110
- "error.modal_trace_stale.fix": "चैट से verb को पुनः invoke करें: एक नया साफ trace शुरू करता है। यदि बना रहता है, panel जांचने के लिए yf doctor चलाएं।",
111
- "error.modal_trace_stale.cmd": "yf doctor",
112
- "error.byok_key_missing.what": "प्रदाता {provider} के लिए API key गायब है।",
113
- "error.byok_key_missing.why": "आपने {provider} को {tier} टियर प्रदाता के रूप में कॉन्फ़िगर किया लेकिन स्लॉट byok_{slot} एन्क्रिप्टेड Vault में नहीं है।",
114
- "error.byok_key_missing.fix": "yf keys set के साथ key कॉन्फ़िगर करें (परमाणु, mode 0600, कभी लॉग नहीं)।",
115
- "error.byok_key_missing.cmd": "yf keys set {slot}",
116
- "error.worker_unreachable.what": "yujin.app worker तक नहीं पहुंच सका।",
117
- "error.worker_unreachable.why": "नेटवर्क टाइमआउट या worker बंद (HTTP {status})। {attempts} बार पुनः प्रयास किया।",
118
- "error.worker_unreachable.fix": "अपना इंटरनेट जांचें। यदि ठीक है, worker निर्भरता से बचने के लिए अस्थायी रूप से सीधे BYOK पर स्विच करें।",
119
- "error.worker_unreachable.cmd": "yf brain config --frontier-provider anthropic",
120
- "error.vault_decrypt_failed.what": "Vault से एक key को डिक्रिप्ट नहीं कर सका।",
121
- "error.vault_decrypt_failed.why": "मास्टर key गलत है या Vault फ़ाइल दूषित है। यदि आपने मास्टर माइग्रेट किए बिना मशीनों के बीच config स्थानांतरित किया या disk error के कारण हो सकता है।",
122
- "error.vault_decrypt_failed.fix": "यदि आपके पास server backup सक्रिय है तो server copy खींचें (आपके स्थानीय मास्टर के साथ पुनः एन्क्रिप्ट करता है)।",
123
- "error.vault_decrypt_failed.cmd": "yf keys setup --pull",
124
- "error.shell_exec_rejected.what": "आपने yujin.shell.exec के R8 मोडल को अस्वीकार किया।",
125
- "error.shell_exec_rejected.why": "कमांड {command} को {classification} के रूप में वर्गीकृत किया गया। shell.exec हमेशा सुरक्षा के लिए अनुमोदन मांगता है, भले ही कमांड read-only हो।",
126
- "error.shell_exec_rejected.fix": "यदि कमांड read-only था (yf projects active, git status, ls), समकक्ष देशी verb का उपयोग करें। यदि यह आवश्यक था और आपने गलती से अस्वीकार किया, पुनः invoke करें।",
127
- "error.project_not_registered.what": "कोई adopter प्रोजेक्ट पंजीकृत नहीं।",
128
- "error.project_not_registered.why": "invoked verb को सक्रिय project root की आवश्यकता है लेकिन ~/.yujin-forge/projects.json में कोई entries नहीं हैं।",
129
- "error.project_not_registered.fix": "yujin.project.init के साथ एक बनाएं या yf projects add के साथ एक मौजूदा पंजीकृत करें।",
130
- "error.project_not_registered.cmd": "yf projects scan",
131
- "panel.button.agents": "एजेंट",
132
- "panel.agents.title": "एजेंट",
133
- "panel.agents.subtitle": "इस परियोजना में पंजीकृत निदेशक और उप-एजेंट",
134
- "panel.agents.empty.title": "अभी तक कोई एजेंट नहीं",
135
- "panel.agents.empty.body": "निदेशक और इसके 4 उप-एजेंटों (विश्लेषक, कोडर, परीक्षक, स्कैफोल्डर) को पंजीकृत करने के लिए `yf agent install --defaults` चलाएं।",
136
- "panel.agents.legend.eco": "इको",
137
- "panel.agents.legend.managed": "प्रबंधित",
138
- "panel.agents.legend.frontier": "फ्रंटियर",
139
- "panel.agents.status.disabled": "एजेंट रनटाइम प्रारंभ नहीं हुआ",
140
- "panel.agents.event.running": "चल रहा है",
141
- "panel.agents.event.idle": "निष्क्रिय",
142
- "panel.agents.tick.live": "जुड़ा हुआ",
143
- "panel.agents.tick.lost": "कनेक्शन खो गया",
144
- "workflow.phase.i": "ट्रायेज और इरादा",
145
- "workflow.phase.ii": "स्पष्टीकरण (कार्यात्मक + 4 NFR + ब्लॉक)",
146
- "workflow.phase.iii": "विशिष्टीकरण (RFP + आर्क + डिज़ाइन + अनुमोदन)",
147
- "workflow.phase.iv": "बूटस्ट्रैप",
148
- "workflow.phase.v": "ब्लॉक विकास",
149
- "workflow.phase.vi": "परिनियोजन + लॉन्च के बाद",
150
- "wizard.title": "Yujin Forge में आपका स्वागत है",
151
- "wizard.close": "बंद करें",
152
- "wizard.intro": "शुरू करने के लिए, चुनें कि Forge आपके AI मॉडल से कैसे जुड़े। बाद में Settings से बदला जा सकता है।",
153
- "wizard.back": "वापस",
154
- "wizard.start": "शुरू करें",
155
- "wizard.plan.badge": "अनुशंसित",
156
- "wizard.plan.title": "Claude प्लान",
157
- "wizard.plan.desc": "Claude की मासिक सदस्यता। निरंतर उपयोग के लिए सबसे किफायती। Forge आपके claude -p सत्र का उपयोग करता है।",
158
- "wizard.plan.price": "निश्चित मासिक शुल्क (प्लान)",
159
- "wizard.plan.step.title": "अपना Claude प्लान कनेक्ट करें",
160
- "wizard.plan.step.1": "एक नया टर्मिनल खोलें।",
161
- "wizard.plan.step.2": "claude कमांड (बिना तर्क) चलाएं और ब्राउज़र लॉगिन पूरा करें।",
162
- "wizard.plan.step.3": "यहाँ वापस आएं और सत्यापन के लिए मैं लॉग इन हूँ पर क्लिक करें।",
163
- "wizard.plan.done": "मैं लॉग इन हूँ",
164
- "wizard.byok.title": "Console API कुंजी (BYOK)",
165
- "wizard.byok.desc": "आपकी अपनी Anthropic Console कुंजी। उपयोग के अनुसार भुगतान। अधिक लचीला लेकिन लागत बदलती है।",
166
- "wizard.byok.price": "उपयोग आधारित (Console)",
167
- "wizard.byok.step.title": "अपनी Anthropic API कुंजी पेस्ट करें",
168
- "wizard.byok.step.intro": "आपकी कुंजी sk-ant- से शुरू होती है और console.anthropic.com पर मिलती है। Forge इसे स्थानीय Vault में एन्क्रिप्टेड स्टोर करता है; यह कभी आपकी मशीन नहीं छोड़ती।",
169
- "wizard.byok.test": "सत्यापित करें और सहेजें",
170
- "wizard.skip.title": "मैं पहले से तैयार हूँ",
171
- "wizard.skip.desc": "विज़ार्ड छोड़ें। बाद में Settings से फिर से खोल सकते हैं।",
172
- "wizard.done.kanji": "पूरा",
173
- "wizard.done.title": "हो गया",
174
- "wizard.done.msg": "Forge तैयार है। चैट शुरू करें।",
175
- "pizarron.button.read": "पढ़कर सुनाओ",
176
- "pizarron.button.copy": "कॉपी",
177
- "pizarron.button.edit": "संपादित करें",
178
- "pizarron.graph.refresh": "ताज़ा करें",
179
- "pizarron.graph.regenerating": "पुनर्जनन हो रहा है...",
180
- "pizarron.graph.detail.hint": "विवरण देखने के लिए नोड पर टैप करें।",
181
- "pizarron.graph.detail.empty": "इस नोड का कोई विवरण नहीं।",
182
- "pizarron.graph.detail.weight": "भार",
183
- "startup.tab.graph": "विज़ुअल ग्राफ़",
184
- "startup.tab.graphSem": "सिमेंटिक ग्राफ़",
185
- "startup.tab.pendings": "लंबित",
186
- "startup.tab.workflow": "वर्कफ़्लो",
187
- "settings.startupTabs": "खुलने पर टैब",
188
- "graph.term.nodes": "नोड",
189
- "graph.term.edges": "किनारे",
190
- "coding.read": "{x} पढ़ रहा है",
191
- "coding.read_bare": "एक फ़ाइल पढ़ रहा है",
192
- "coding.edit": "{x} संपादित कर रहा है",
193
- "coding.edit_bare": "एक फ़ाइल संपादित कर रहा है",
194
- "coding.write": "{x} लिख रहा है",
195
- "coding.write_bare": "एक फ़ाइल लिख रहा है",
196
- "coding.notebook_bare": "नोटबुक संपादित कर रहा है",
197
- "coding.bash": "चला रहा है: {x}",
198
- "coding.bash_bare": "एक कमांड चला रहा है",
199
- "coding.grep": "\"{x}\" खोज रहा है",
200
- "coding.grep_bare": "कोड में खोज रहा है",
201
- "coding.glob": "{x} सूचीबद्ध कर रहा है",
202
- "coding.glob_bare": "फ़ाइलें सूचीबद्ध कर रहा है",
203
- "coding.web_bare": "वेब पढ़ रहा है",
204
- "coding.websearch": "वेब खोज: {x}",
205
- "coding.websearch_bare": "वेब खोज रहा है",
206
- "coding.task": "उप-एजेंट: {x}",
207
- "coding.task_bare": "एक उप-एजेंट शुरू कर रहा है",
208
- "coding.todo": "अपनी कार्य सूची अपडेट कर रहा है",
209
- "coding.verb_bare": "एक yujin क्रिया चला रहा है"
210
- }
1
+ {
2
+ "panel.brand": "Yujin Forge",
3
+ "panel.brand.kanji": "侑",
4
+ "panel.tagline": "वॉइस-फर्स्ट डेवलपमेंट असिस्टेंट",
5
+ "panel.input.placeholder": "Yujin से पूछें",
6
+ "panel.button.send": "भेजें",
7
+ "panel.button.mic": "बोलें (दबाकर रखें)",
8
+ "panel.button.mic.recording": "रिकॉर्डिंग रोकने के लिए दबाएँ",
9
+ "panel.button.tts": "आवाज़ चालू",
10
+ "panel.button.keys": "कुंजियाँ",
11
+ "panel.button.minimise": "छोटा करें",
12
+ "panel.button.maximise": "बड़ा करें",
13
+ "panel.button.close": "बंद करें",
14
+ "panel.button.language": "भाषा",
15
+ "panel.trace.title": "क्रिया लॉग",
16
+ "panel.trace.count.one": "{n} टूल कॉल",
17
+ "panel.trace.count.other": "{n} टूल कॉल्स",
18
+ "panel.trace.empty.kanji": "空",
19
+ "panel.trace.empty.body": "Yujin Forge आपको जवाब देने के लिए जो भी टूल चलाता है, वह यहाँ दिखाता है: मैनिफेस्ट पढ़ना, SPEC में खोज, कंपोनेंट्स संपादन, दस्तावेज़ पढ़ना। ऐसा कोई प्रश्न पूछें जिसमें इनकी ज़रूरत हो।",
20
+ "panel.trace.badge.tool": "टूल",
21
+ "panel.trace.badge.voice": "आवाज़",
22
+ "panel.trace.badge.error": "त्रुटि",
23
+ "panel.stream.empty.kanji": "侑仁",
24
+ "panel.stream.empty.body": "Yujin Forge ऑनलाइन है। प्रोजेक्ट में बदलाव माँगें।",
25
+ "panel.status.no_audio": "कोई ऑडियो कैप्चर नहीं हुआ। माइक्रोफ़ोन ने शायद कुछ नहीं पकड़ा।",
26
+ "panel.status.did_not_catch": "मैं समझ नहीं पाया। फिर से कोशिश करें।",
27
+ "panel.status.mic_denied": "माइक्रोफ़ोन अनुमति अस्वीकृत या अनुपलब्ध: {error}",
28
+ "panel.status.voice_failed": "आवाज़ विफल: {error}",
29
+ "panel.status.voice_reply_failed": "उत्तर नहीं चला सका: {error}",
30
+ "panel.status.audio_play_error": "ऑडियो नहीं चला सका: {error}",
31
+ "panel.status.reading": "{filename} पढ़ रहा हूँ...",
32
+ "panel.status.ingest_failed": "इनजेस्ट विफल: {error}",
33
+ "panel.status.read_failed": "विनिर्देश नहीं पढ़ सका: {error}",
34
+ "panel.drop.title": "विनिर्देश यहाँ छोड़ें",
35
+ "panel.drop.hint": "PDF, DOCX, HTML, MD, RTF, EPUB, CSV, XLSX, TXT",
36
+ "panel.ingest.spec_attached": "विनिर्देश संलग्न: {filename}, {kb} KB",
37
+ "panel.ingest.read_label": "पढ़ा गया।",
38
+ "panel.ingest.title_label": "शीर्षक: {title}",
39
+ "panel.ingest.no_title": "(कोई शीर्षक नहीं)",
40
+ "panel.ingest.format_label": "प्रारूप: {format} / {sections} खंड / {kb} KB",
41
+ "panel.ingest.first_lines": "पहली पंक्तियाँ:",
42
+ "panel.ingest.action_done": "क्रिया {tool} पूर्ण।",
43
+ "vault.modal.title": "क्रेडेंशियल्स (वॉल्ट)",
44
+ "vault.modal.aria.close": "क्रेडेंशियल्स मोडल बंद करें",
45
+ "vault.tab.list": "लोड किए गए स्लॉट्स",
46
+ "vault.tab.add": "जोड़ें",
47
+ "vault.list.loading": "लोड हो रहा है...",
48
+ "vault.list.empty": "आपने अभी तक कोई कुंजी लोड नहीं की है। शुरू करने के लिए \"जोड़ें\" पर क्लिक करें।",
49
+ "vault.add.slot_label": "स्लॉट का नाम",
50
+ "vault.add.slot_hint": "छोटे अक्षर, अंक, अंडरस्कोर, हाइफ़न। अक्षर से शुरू होना चाहिए।",
51
+ "vault.add.value_label": "सादा-पाठ मान (मास्क किया गया)",
52
+ "vault.add.value_hint": "सहेजते समय केवल एक बार दिखाई देता है। बाद में बदला जा सकता है पर पढ़ा नहीं जा सकता।",
53
+ "vault.add.button_save": "सहेजें",
54
+ "vault.add.button_cancel": "रद्द करें",
55
+ "vault.add.success": "स्लॉट {slot} सहेजा गया।",
56
+ "vault.add.overwrite": "स्लॉट {slot} ओवरराइट किया गया।",
57
+ "manual.intro": "Yujin Forge -- उपयोगकर्ता मैनुअल",
58
+ "manual.section.welcome": "स्वागत है",
59
+ "manual.section.install": "स्थापना",
60
+ "manual.section.first_run": "पहला रन",
61
+ "manual.section.voice": "वॉइस कमांड्स",
62
+ "manual.section.spec_ingest": "विनिर्देश इनजेस्ट",
63
+ "manual.section.troubleshooting": "समस्या निवारण",
64
+ "manual.section.support": "सहायता",
65
+ "lang.name.es": "स्पेनिश",
66
+ "lang.name.en": "अंग्रेज़ी",
67
+ "lang.name.pt": "पुर्तगाली",
68
+ "lang.name.fr": "फ़्रांसीसी",
69
+ "lang.name.ja": "जापानी",
70
+ "lang.name.zh": "चीनी",
71
+ "lang.name.hi": "हिन्दी",
72
+ "lang.name.ar": "अरबी",
73
+ "lang.name.de": "जर्मन",
74
+ "lang.name.it": "इतालवी",
75
+ "recap.fallback_period": "।",
76
+ "recap.empty": "अभी सारांश के लिए कुछ नहीं है।",
77
+ "error_ui.severity.info": "जानकारी",
78
+ "error_ui.severity.warning": "चेतावनी",
79
+ "error_ui.severity.error": "त्रुटि",
80
+ "error_ui.severity.fatal": "घातक",
81
+ "error_ui.label.what": "क्या हुआ",
82
+ "error_ui.label.why": "क्यों",
83
+ "error_ui.label.fix": "कैसे ठीक करें",
84
+ "error_ui.label.cmd": "कमांड",
85
+ "error_ui.label.docs": "स्थानीय दस्तावेज़",
86
+ "error_ui.label.retry": "पुनः प्रयास करें में",
87
+ "error_ui.copy_btn": "कमांड कॉपी करें",
88
+ "error_ui.unknown.what": "Forge को आंतरिक त्रुटि मिली (अज्ञात कोड)।",
89
+ "error_ui.unknown.why": "कोड {code} कैटलॉग में नहीं है। यह एक बग है।",
90
+ "error_ui.unknown.fix": "कोड + ट्रेसबैक के साथ https://github.com/yujinapp/yujin-forge/issues पर एक issue खोलें।",
91
+ "error.cap_frontier_exhausted.what": "frontier टियर (बड़ा मॉडल) की मासिक टोकन सीमा समाप्त हो गई।",
92
+ "error.cap_frontier_exhausted.why": "आपकी प्लान {plan} frontier पर अधिकतम {cap} टोकन/महीना अनुमति देती है। आपने {used} उपयोग किया। अगले UTC महीने की शुरुआत में रीसेट।",
93
+ "error.cap_frontier_exhausted.fix": "सीधे Anthropic BYOK पर स्विच करें: worker की मासिक सीमा बायपास करता है। आपकी लागत Anthropic का सीधा शुल्क बन जाती है।",
94
+ "error.cap_frontier_exhausted.cmd": "yf brain config --frontier-provider anthropic --frontier-model claude-opus-4-7",
95
+ "error.cap_eco_exhausted.what": "eco टियर (छोटा मॉडल) की मासिक टोकन सीमा समाप्त हो गई।",
96
+ "error.cap_eco_exhausted.why": "आपकी प्लान {plan} eco पर अधिकतम {cap} टोकन/महीना अनुमति देती है। आपने {used} उपयोग किया। अगले UTC महीने की शुरुआत में रीसेट।",
97
+ "error.cap_eco_exhausted.fix": "सीधे BYOK पर स्विच करें या प्लान अपग्रेड करें। BYOK worker की सीमा बायपास करता है।",
98
+ "error.cap_eco_exhausted.cmd": "yf brain config --eco-provider google_ai --eco-model gemini-2.5-flash-lite",
99
+ "error.tier_not_in_plan.what": "टियर {tier} आपकी प्लान पर सक्षम नहीं है।",
100
+ "error.tier_not_in_plan.why": "आपकी प्लान {plan} में {tier} टियर शामिल नहीं है। संभवतः आप free-public पर हैं या आपका लाइसेंस समाप्त हो गया है।",
101
+ "error.tier_not_in_plan.fix": "भुगतान लाइसेंस सक्रिय करें या सीधे BYOK पर स्विच करें (आपकी लागत, worker सीमा के बिना)।",
102
+ "error.tier_not_in_plan.cmd": "yf license activate --key <jwt>",
103
+ "error.response_truncated.what": "मॉडल की प्रतिक्रिया समाप्त होने से पहले काट दी गई।",
104
+ "error.response_truncated.why": "managed_max_tokens_per_turn = {limit} टोकन सीमा टर्न के बीच में पहुंच गई। मॉडल ने जेनरेट करना बंद कर दिया।",
105
+ "error.response_truncated.fix": "yf limits के माध्यम से सीमा बढ़ाएं। चैट पुनरारंभ किए बिना अगले टर्न पर लागू होता है।",
106
+ "error.response_truncated.cmd": "yf limits set managed_max_tokens_per_turn 16384",
107
+ "error.response_truncated.banner": "[max_tokens={max} द्वारा प्रतिक्रिया छंटनी गई। सीमा बढ़ाएं: yf limits set managed_max_tokens_per_turn {suggested}]",
108
+ "error.modal_trace_stale.what": "अनुमोदन मोडल समाप्त हो गया या अनाथ है।",
109
+ "error.modal_trace_stale.why": "trace_id {trace_id} dispatcher में कोई लंबित अनुमोदन नहीं है। संभावित race condition invoke और panel state के बीच, या पिछले cancel ने trace को zombie छोड़ा।",
110
+ "error.modal_trace_stale.fix": "चैट से verb को पुनः invoke करें: एक नया साफ trace शुरू करता है। यदि बना रहता है, panel जांचने के लिए yf doctor चलाएं।",
111
+ "error.modal_trace_stale.cmd": "yf doctor",
112
+ "error.byok_key_missing.what": "प्रदाता {provider} के लिए API key गायब है।",
113
+ "error.byok_key_missing.why": "आपने {provider} को {tier} टियर प्रदाता के रूप में कॉन्फ़िगर किया लेकिन स्लॉट byok_{slot} एन्क्रिप्टेड Vault में नहीं है।",
114
+ "error.byok_key_missing.fix": "yf keys set के साथ key कॉन्फ़िगर करें (परमाणु, mode 0600, कभी लॉग नहीं)।",
115
+ "error.byok_key_missing.cmd": "yf keys set {slot}",
116
+ "error.worker_unreachable.what": "yujin.app worker तक नहीं पहुंच सका।",
117
+ "error.worker_unreachable.why": "नेटवर्क टाइमआउट या worker बंद (HTTP {status})। {attempts} बार पुनः प्रयास किया।",
118
+ "error.worker_unreachable.fix": "अपना इंटरनेट जांचें। यदि ठीक है, worker निर्भरता से बचने के लिए अस्थायी रूप से सीधे BYOK पर स्विच करें।",
119
+ "error.worker_unreachable.cmd": "yf brain config --frontier-provider anthropic",
120
+ "error.vault_decrypt_failed.what": "Vault से एक key को डिक्रिप्ट नहीं कर सका।",
121
+ "error.vault_decrypt_failed.why": "मास्टर key गलत है या Vault फ़ाइल दूषित है। यदि आपने मास्टर माइग्रेट किए बिना मशीनों के बीच config स्थानांतरित किया या disk error के कारण हो सकता है।",
122
+ "error.vault_decrypt_failed.fix": "यदि आपके पास server backup सक्रिय है तो server copy खींचें (आपके स्थानीय मास्टर के साथ पुनः एन्क्रिप्ट करता है)।",
123
+ "error.vault_decrypt_failed.cmd": "yf keys setup --pull",
124
+ "error.shell_exec_rejected.what": "आपने yujin.shell.exec के R8 मोडल को अस्वीकार किया।",
125
+ "error.shell_exec_rejected.why": "कमांड {command} को {classification} के रूप में वर्गीकृत किया गया। shell.exec हमेशा सुरक्षा के लिए अनुमोदन मांगता है, भले ही कमांड read-only हो।",
126
+ "error.shell_exec_rejected.fix": "यदि कमांड read-only था (yf projects active, git status, ls), समकक्ष देशी verb का उपयोग करें। यदि यह आवश्यक था और आपने गलती से अस्वीकार किया, पुनः invoke करें।",
127
+ "error.project_not_registered.what": "कोई adopter प्रोजेक्ट पंजीकृत नहीं।",
128
+ "error.project_not_registered.why": "invoked verb को सक्रिय project root की आवश्यकता है लेकिन ~/.yujin-forge/projects.json में कोई entries नहीं हैं।",
129
+ "error.project_not_registered.fix": "yujin.project.init के साथ एक बनाएं या yf projects add के साथ एक मौजूदा पंजीकृत करें।",
130
+ "error.project_not_registered.cmd": "yf projects scan",
131
+ "panel.button.agents": "एजेंट",
132
+ "panel.agents.title": "एजेंट",
133
+ "panel.agents.subtitle": "इस परियोजना में पंजीकृत निदेशक और उप-एजेंट",
134
+ "panel.agents.empty.title": "अभी तक कोई एजेंट नहीं",
135
+ "panel.agents.empty.body": "निदेशक और इसके 4 उप-एजेंटों (विश्लेषक, कोडर, परीक्षक, स्कैफोल्डर) को पंजीकृत करने के लिए `yf agent install --defaults` चलाएं।",
136
+ "panel.agents.legend.eco": "इको",
137
+ "panel.agents.legend.managed": "प्रबंधित",
138
+ "panel.agents.legend.frontier": "फ्रंटियर",
139
+ "panel.agents.status.disabled": "एजेंट रनटाइम प्रारंभ नहीं हुआ",
140
+ "panel.agents.event.running": "चल रहा है",
141
+ "panel.agents.event.idle": "निष्क्रिय",
142
+ "panel.agents.tick.live": "जुड़ा हुआ",
143
+ "panel.agents.tick.lost": "कनेक्शन खो गया",
144
+ "workflow.phase.i": "ट्रायेज और इरादा",
145
+ "workflow.phase.ii": "स्पष्टीकरण (कार्यात्मक + 4 NFR + ब्लॉक)",
146
+ "workflow.phase.iii": "विशिष्टीकरण (RFP + आर्क + डिज़ाइन + अनुमोदन)",
147
+ "workflow.phase.iv": "बूटस्ट्रैप",
148
+ "workflow.phase.v": "ब्लॉक विकास",
149
+ "workflow.phase.vi": "परिनियोजन + लॉन्च के बाद",
150
+ "wizard.title": "Yujin Forge में आपका स्वागत है",
151
+ "wizard.close": "बंद करें",
152
+ "wizard.intro": "शुरू करने के लिए, चुनें कि Forge आपके AI मॉडल से कैसे जुड़े। बाद में Settings से बदला जा सकता है।",
153
+ "wizard.back": "वापस",
154
+ "wizard.start": "शुरू करें",
155
+ "wizard.plan.badge": "अनुशंसित",
156
+ "wizard.plan.title": "Claude प्लान",
157
+ "wizard.plan.desc": "Claude की मासिक सदस्यता। निरंतर उपयोग के लिए सबसे किफायती। Forge आपके claude -p सत्र का उपयोग करता है।",
158
+ "wizard.plan.price": "निश्चित मासिक शुल्क (प्लान)",
159
+ "wizard.plan.step.title": "अपना Claude प्लान कनेक्ट करें",
160
+ "wizard.plan.step.1": "एक नया टर्मिनल खोलें।",
161
+ "wizard.plan.step.2": "claude कमांड (बिना तर्क) चलाएं और ब्राउज़र लॉगिन पूरा करें।",
162
+ "wizard.plan.step.3": "यहाँ वापस आएं और सत्यापन के लिए मैं लॉग इन हूँ पर क्लिक करें।",
163
+ "wizard.plan.done": "मैं लॉग इन हूँ",
164
+ "wizard.byok.title": "Console API कुंजी (BYOK)",
165
+ "wizard.byok.desc": "आपकी अपनी Anthropic Console कुंजी। उपयोग के अनुसार भुगतान। अधिक लचीला लेकिन लागत बदलती है।",
166
+ "wizard.byok.price": "उपयोग आधारित (Console)",
167
+ "wizard.byok.step.title": "अपनी Anthropic API कुंजी पेस्ट करें",
168
+ "wizard.byok.step.intro": "आपकी कुंजी sk-ant- से शुरू होती है और console.anthropic.com पर मिलती है। Forge इसे स्थानीय Vault में एन्क्रिप्टेड स्टोर करता है; यह कभी आपकी मशीन नहीं छोड़ती।",
169
+ "wizard.byok.test": "सत्यापित करें और सहेजें",
170
+ "wizard.skip.title": "मैं पहले से तैयार हूँ",
171
+ "wizard.skip.desc": "विज़ार्ड छोड़ें। बाद में Settings से फिर से खोल सकते हैं।",
172
+ "wizard.done.kanji": "पूरा",
173
+ "wizard.done.title": "हो गया",
174
+ "wizard.done.msg": "Forge तैयार है। चैट शुरू करें।",
175
+ "pizarron.button.read": "पढ़कर सुनाओ",
176
+ "pizarron.button.copy": "कॉपी",
177
+ "pizarron.button.edit": "संपादित करें",
178
+ "pizarron.graph.refresh": "ताज़ा करें",
179
+ "pizarron.graph.regenerating": "पुनर्जनन हो रहा है...",
180
+ "pizarron.graph.detail.hint": "विवरण देखने के लिए नोड पर टैप करें।",
181
+ "pizarron.graph.detail.empty": "इस नोड का कोई विवरण नहीं।",
182
+ "pizarron.graph.detail.weight": "भार",
183
+ "startup.tab.graph": "विज़ुअल ग्राफ़",
184
+ "startup.tab.graphSem": "सिमेंटिक ग्राफ़",
185
+ "startup.tab.pendings": "लंबित",
186
+ "startup.tab.workflow": "वर्कफ़्लो",
187
+ "settings.startupTabs": "खुलने पर टैब",
188
+ "graph.term.nodes": "नोड",
189
+ "graph.term.edges": "किनारे",
190
+ "coding.read": "{x} पढ़ रहा है",
191
+ "coding.read_bare": "एक फ़ाइल पढ़ रहा है",
192
+ "coding.edit": "{x} संपादित कर रहा है",
193
+ "coding.edit_bare": "एक फ़ाइल संपादित कर रहा है",
194
+ "coding.write": "{x} लिख रहा है",
195
+ "coding.write_bare": "एक फ़ाइल लिख रहा है",
196
+ "coding.notebook_bare": "नोटबुक संपादित कर रहा है",
197
+ "coding.bash": "चला रहा है: {x}",
198
+ "coding.bash_bare": "एक कमांड चला रहा है",
199
+ "coding.grep": "\"{x}\" खोज रहा है",
200
+ "coding.grep_bare": "कोड में खोज रहा है",
201
+ "coding.glob": "{x} सूचीबद्ध कर रहा है",
202
+ "coding.glob_bare": "फ़ाइलें सूचीबद्ध कर रहा है",
203
+ "coding.web_bare": "वेब पढ़ रहा है",
204
+ "coding.websearch": "वेब खोज: {x}",
205
+ "coding.websearch_bare": "वेब खोज रहा है",
206
+ "coding.task": "उप-एजेंट: {x}",
207
+ "coding.task_bare": "एक उप-एजेंट शुरू कर रहा है",
208
+ "coding.todo": "अपनी कार्य सूची अपडेट कर रहा है",
209
+ "coding.verb_bare": "एक yujin क्रिया चला रहा है",
210
+ "panel.button.stop": "रोकें",
211
+ "panel.status.stopping": "रोका जा रहा है...",
212
+ "panel.status.noActiveTurn": "कोई टर्न नहीं चल रहा था।",
213
+ "panel.status.interruptFailed": "रुकावट नहीं भेजी जा सकी।",
214
+ "panel.status.turnInterrupted": "टर्न रोक दिया गया।",
215
+ "panel.label.interrupted": "(रोका गया)",
216
+ "panel.queue.label": "कतार में",
217
+ "panel.queue.remove": "कतार से हटाएँ",
218
+ "panel.project.switchHint": "प्रोजेक्ट बदलें",
219
+ "panel.project.title": "प्रोजेक्ट",
220
+ "panel.project.add": "प्रोजेक्ट जोड़ें...",
221
+ "panel.project.addPrompt": "जोड़ने के लिए प्रोजेक्ट का पूर्ण पथ:",
222
+ "panel.project.switching": "प्रोजेक्ट बदला जा रहा है..."
223
+ }