@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} 不在目录中。这是一个bug。",
90
- "error_ui.unknown.fix": "请在 https://github.com/yujinapp/yujin-forge/issues 提交issue,附上代码和traceback。",
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 提高限制。下一轮生效,无需重启chat。",
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中没有待处理的审批。可能是invoke和panel状态之间的竞争条件,或之前的取消使trace成为僵尸。",
110
- "error.modal_trace_stale.fix": "从chat重新调用verb: 启动一个干净的新trace。如果持续,运行 yf doctor 检查panel。",
111
- "error.modal_trace_stale.cmd": "yf doctor",
112
- "error.byok_key_missing.what": "缺少提供商 {provider} 的API密钥。",
113
- "error.byok_key_missing.why": "您将 {provider} 配置为 {tier} 层级的提供商,但插槽 byok_{slot} 不在加密的Vault中。",
114
- "error.byok_key_missing.fix": "使用 yf keys set 配置密钥(原子,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": "检查您的互联网。如果正常,临时切换到直接BYOK以避免worker依赖。",
119
- "error.worker_unreachable.cmd": "yf brain config --frontier-provider anthropic",
120
- "error.vault_decrypt_failed.what": "无法解密Vault中的密钥。",
121
- "error.vault_decrypt_failed.why": "主密钥不正确或Vault文件已损坏。如果您在机器之间移动配置而没有迁移主密钥,或由于磁盘错误,可能会发生。",
122
- "error.vault_decrypt_failed.fix": "如果您有服务器备份激活,拉取服务器副本(用您的本地主密钥重新加密)。",
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 始终出于安全考虑请求审批,即使命令是只读的。",
126
- "error.shell_exec_rejected.fix": "如果命令是只读的 (yf projects active, git status, ls),请使用等效的原生verb。如果是必要的而您错误地拒绝了,请重新调用。",
127
- "error.project_not_registered.what": "没有注册的adopter项目。",
128
- "error.project_not_registered.why": "调用的verb需要活动的project root,但 ~/.yujin-forge/projects.json 没有条目。",
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": "运行 `yf agent install --defaults` 来注册总监和4个子智能体(分析师、编码器、测试员、脚手架)。",
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} 不在目录中。这是一个bug。",
90
+ "error_ui.unknown.fix": "请在 https://github.com/yujinapp/yujin-forge/issues 提交issue,附上代码和traceback。",
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 提高限制。下一轮生效,无需重启chat。",
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中没有待处理的审批。可能是invoke和panel状态之间的竞争条件,或之前的取消使trace成为僵尸。",
110
+ "error.modal_trace_stale.fix": "从chat重新调用verb: 启动一个干净的新trace。如果持续,运行 yf doctor 检查panel。",
111
+ "error.modal_trace_stale.cmd": "yf doctor",
112
+ "error.byok_key_missing.what": "缺少提供商 {provider} 的API密钥。",
113
+ "error.byok_key_missing.why": "您将 {provider} 配置为 {tier} 层级的提供商,但插槽 byok_{slot} 不在加密的Vault中。",
114
+ "error.byok_key_missing.fix": "使用 yf keys set 配置密钥(原子,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": "检查您的互联网。如果正常,临时切换到直接BYOK以避免worker依赖。",
119
+ "error.worker_unreachable.cmd": "yf brain config --frontier-provider anthropic",
120
+ "error.vault_decrypt_failed.what": "无法解密Vault中的密钥。",
121
+ "error.vault_decrypt_failed.why": "主密钥不正确或Vault文件已损坏。如果您在机器之间移动配置而没有迁移主密钥,或由于磁盘错误,可能会发生。",
122
+ "error.vault_decrypt_failed.fix": "如果您有服务器备份激活,拉取服务器副本(用您的本地主密钥重新加密)。",
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 始终出于安全考虑请求审批,即使命令是只读的。",
126
+ "error.shell_exec_rejected.fix": "如果命令是只读的 (yf projects active, git status, ls),请使用等效的原生verb。如果是必要的而您错误地拒绝了,请重新调用。",
127
+ "error.project_not_registered.what": "没有注册的adopter项目。",
128
+ "error.project_not_registered.why": "调用的verb需要活动的project root,但 ~/.yujin-forge/projects.json 没有条目。",
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": "运行 `yf agent install --defaults` 来注册总监和4个子智能体(分析师、编码器、测试员、脚手架)。",
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
+ }