@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": "Sprachgesteuerter Entwicklungsassistent",
5
- "panel.input.placeholder": "Frag Yujin",
6
- "panel.button.send": "Senden",
7
- "panel.button.mic": "Sprechen (gedrueckt halten)",
8
- "panel.button.mic.recording": "Druecken, um die Aufnahme zu stoppen",
9
- "panel.button.tts": "Stimme aktiviert",
10
- "panel.button.keys": "Schluessel",
11
- "panel.button.minimise": "Verkleinern",
12
- "panel.button.maximise": "Vergroessern",
13
- "panel.button.close": "Schliessen",
14
- "panel.button.language": "Sprache",
15
- "panel.trace.title": "Aktionsprotokoll",
16
- "panel.trace.count.one": "{n} Werkzeugaufruf",
17
- "panel.trace.count.other": "{n} Werkzeugaufrufe",
18
- "panel.trace.empty.kanji": "空",
19
- "panel.trace.empty.body": "Yujin Forge zeigt hier jedes Werkzeug, das es aufruft, um zu antworten: Manifest lesen, SPEC durchsuchen, Komponenten bearbeiten, Dokumente lesen. Stelle eine Frage, die diese benoetigt.",
20
- "panel.trace.badge.tool": "WERKZEUG",
21
- "panel.trace.badge.voice": "STIMME",
22
- "panel.trace.badge.error": "FEHLER",
23
- "panel.stream.empty.kanji": "侑仁",
24
- "panel.stream.empty.body": "Yujin Forge online. Bitte um Aenderungen am Projekt.",
25
- "panel.status.no_audio": "Kein Audio aufgenommen. Das Mikrofon hat vermutlich nichts erfasst.",
26
- "panel.status.did_not_catch": "Ich habe das nicht verstanden. Versuche es nochmal.",
27
- "panel.status.mic_denied": "Mikrofonberechtigung verweigert oder nicht verfuegbar: {error}",
28
- "panel.status.voice_failed": "Stimme fehlgeschlagen: {error}",
29
- "panel.status.voice_reply_failed": "Konnte die Antwort nicht abspielen: {error}",
30
- "panel.status.audio_play_error": "Konnte das Audio nicht abspielen: {error}",
31
- "panel.status.reading": "Lese {filename}...",
32
- "panel.status.ingest_failed": "Aufnahme fehlgeschlagen: {error}",
33
- "panel.status.read_failed": "Konnte die Spezifikation nicht lesen: {error}",
34
- "panel.drop.title": "Spezifikation hier ablegen",
35
- "panel.drop.hint": "PDF, DOCX, HTML, MD, RTF, EPUB, CSV, XLSX, TXT",
36
- "panel.ingest.spec_attached": "Spezifikation angehaengt: {filename}, {kb} KB",
37
- "panel.ingest.read_label": "Gelesen.",
38
- "panel.ingest.title_label": "Titel: {title}",
39
- "panel.ingest.no_title": "(kein Titel)",
40
- "panel.ingest.format_label": "Format: {format} / {sections} Abschnitt(e) / {kb} KB",
41
- "panel.ingest.first_lines": "Erste Zeilen:",
42
- "panel.ingest.action_done": "Aktion {tool} abgeschlossen.",
43
- "vault.modal.title": "Zugangsdaten (Vault)",
44
- "vault.modal.aria.close": "Zugangsdaten-Modal schliessen",
45
- "vault.tab.list": "Geladene Slots",
46
- "vault.tab.add": "Hinzufuegen",
47
- "vault.list.loading": "Laedt...",
48
- "vault.list.empty": "Du hast noch keinen Schluessel geladen. Klicke auf \"Hinzufuegen\" um zu beginnen.",
49
- "vault.add.slot_label": "Slot-Name",
50
- "vault.add.slot_hint": "Kleinbuchstaben, Ziffern, Unterstrich, Bindestrich. Muss mit einem Buchstaben beginnen.",
51
- "vault.add.value_label": "Klartextwert (maskiert)",
52
- "vault.add.value_hint": "Wird nur einmal beim Speichern angezeigt. Danach nur ersetzbar, nicht lesbar.",
53
- "vault.add.button_save": "Speichern",
54
- "vault.add.button_cancel": "Abbrechen",
55
- "vault.add.success": "Slot {slot} gespeichert.",
56
- "vault.add.overwrite": "Slot {slot} ueberschrieben.",
57
- "manual.intro": "Yujin Forge -- Benutzerhandbuch",
58
- "manual.section.welcome": "Willkommen",
59
- "manual.section.install": "Installation",
60
- "manual.section.first_run": "Erste Ausfuehrung",
61
- "manual.section.voice": "Sprachbefehle",
62
- "manual.section.spec_ingest": "Spezifikations-Ingestion",
63
- "manual.section.troubleshooting": "Fehlerbehebung",
64
- "manual.section.support": "Support",
65
- "lang.name.es": "Spanisch",
66
- "lang.name.en": "Englisch",
67
- "lang.name.pt": "Portugiesisch",
68
- "lang.name.fr": "Franzoesisch",
69
- "lang.name.ja": "Japanisch",
70
- "lang.name.zh": "Chinesisch",
71
- "lang.name.hi": "Hindi",
72
- "lang.name.ar": "Arabisch",
73
- "lang.name.de": "Deutsch",
74
- "lang.name.it": "Italienisch",
75
- "recap.fallback_period": ".",
76
- "recap.empty": "Es gibt noch nichts zusammenzufassen.",
77
- "error_ui.severity.info": "INFO",
78
- "error_ui.severity.warning": "WARNUNG",
79
- "error_ui.severity.error": "FEHLER",
80
- "error_ui.severity.fatal": "FATAL",
81
- "error_ui.label.what": "Was ist passiert",
82
- "error_ui.label.why": "Warum",
83
- "error_ui.label.fix": "Wie beheben",
84
- "error_ui.label.cmd": "Befehl",
85
- "error_ui.label.docs": "Lokale Docs",
86
- "error_ui.label.retry": "Erneut versuchen in",
87
- "error_ui.copy_btn": "Befehl kopieren",
88
- "error_ui.unknown.what": "Forge hat einen internen Fehler gefunden (unbekannter Code).",
89
- "error_ui.unknown.why": "Der Code {code} ist nicht im Katalog. Das ist ein Bug.",
90
- "error_ui.unknown.fix": "Issue oeffnen auf https://github.com/yujinapp/yujin-forge/issues mit dem Code + Traceback.",
91
- "error.cap_frontier_exhausted.what": "Monatliches Token-Cap des Frontier-Tier erschoepft (grosses Modell).",
92
- "error.cap_frontier_exhausted.why": "Ihr Plan {plan} erlaubt bis zu {cap} Tokens/Monat auf Frontier. Sie haben {used} verwendet. Reset zum Anfang des naechsten UTC-Monats.",
93
- "error.cap_frontier_exhausted.fix": "Wechseln Sie zu direktem Anthropic BYOK: umgeht das monatliche Worker-Cap. Ihre Kosten sind dann was Anthropic direkt berechnet.",
94
- "error.cap_frontier_exhausted.cmd": "yf brain config --frontier-provider anthropic --frontier-model claude-opus-4-7",
95
- "error.cap_eco_exhausted.what": "Monatliches Token-Cap des Eco-Tier erschoepft (kleines Modell).",
96
- "error.cap_eco_exhausted.why": "Ihr Plan {plan} erlaubt bis zu {cap} Tokens/Monat auf Eco. Sie haben {used} verwendet. Reset zum Anfang des naechsten UTC-Monats.",
97
- "error.cap_eco_exhausted.fix": "Wechseln Sie zu direktem BYOK oder upgraden Sie Ihren Plan. BYOK umgeht das Worker-Cap.",
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 {tier} ist in Ihrem Plan nicht aktiviert.",
100
- "error.tier_not_in_plan.why": "Ihr Plan {plan} enthaelt den {tier}-Tier nicht. Sie sind wahrscheinlich auf free-public oder Ihre Lizenz ist abgelaufen.",
101
- "error.tier_not_in_plan.fix": "Aktivieren Sie eine bezahlte Lizenz oder wechseln Sie zu direktem BYOK (Ihre Kosten, ohne Worker-Cap).",
102
- "error.tier_not_in_plan.cmd": "yf license activate --key <jwt>",
103
- "error.response_truncated.what": "Die Modellantwort wurde vor dem Ende abgeschnitten.",
104
- "error.response_truncated.why": "Limit managed_max_tokens_per_turn = {limit} Tokens mitten im Turn erreicht. Das Modell hat aufgehoert zu generieren.",
105
- "error.response_truncated.fix": "Erhoehen Sie das Limit via yf limits. Gilt fuer den naechsten Turn ohne Chat-Neustart.",
106
- "error.response_truncated.cmd": "yf limits set managed_max_tokens_per_turn 16384",
107
- "error.response_truncated.banner": "[Antwort durch max_tokens={max} abgeschnitten. Limit erhoehen mit: yf limits set managed_max_tokens_per_turn {suggested}]",
108
- "error.modal_trace_stale.what": "Das Approval-Modal ist abgelaufen oder verwaist.",
109
- "error.modal_trace_stale.why": "Die trace_id {trace_id} hat keine pendente Approval im Dispatcher. Wahrscheinlich Race Condition zwischen Invoke und Panel-State, oder ein vorheriger Cancel hat den Trace als Zombie hinterlassen.",
110
- "error.modal_trace_stale.fix": "Verb erneut aus dem Chat aufrufen: startet einen neuen sauberen Trace. Wenn es weiterhin passiert, fuehren Sie yf doctor aus, um das Panel zu pruefen.",
111
- "error.modal_trace_stale.cmd": "yf doctor",
112
- "error.byok_key_missing.what": "API-Key fuer Provider {provider} fehlt.",
113
- "error.byok_key_missing.why": "Sie haben {provider} als Provider des {tier}-Tiers konfiguriert, aber der Slot byok_{slot} ist nicht im verschluesselten Vault.",
114
- "error.byok_key_missing.fix": "Konfigurieren Sie den Key mit yf keys set (atomar, mode 0600, niemals geloggt).",
115
- "error.byok_key_missing.cmd": "yf keys set {slot}",
116
- "error.worker_unreachable.what": "Konnte den yujin.app-Worker nicht erreichen.",
117
- "error.worker_unreachable.why": "Netzwerk-Timeout oder Worker ausgefallen (HTTP {status}). {attempts} mal wiederholt.",
118
- "error.worker_unreachable.fix": "Pruefen Sie Ihr Internet. Falls OK, wechseln Sie temporaer zu direktem BYOK, um die Worker-Abhaengigkeit zu vermeiden.",
119
- "error.worker_unreachable.cmd": "yf brain config --frontier-provider anthropic",
120
- "error.vault_decrypt_failed.what": "Konnte einen Schluessel aus dem Vault nicht entschluesseln.",
121
- "error.vault_decrypt_failed.why": "Der Master-Key ist falsch oder die Vault-Datei ist beschaedigt. Kann passieren, wenn Sie die Konfiguration zwischen Maschinen verschoben haben ohne den Master zu migrieren, oder durch Disk-Error.",
122
- "error.vault_decrypt_failed.fix": "Holen Sie die Server-Kopie (verschluesselt mit Ihrem lokalen Master neu), falls Sie Server-Backup aktiv haben.",
123
- "error.vault_decrypt_failed.cmd": "yf keys setup --pull",
124
- "error.shell_exec_rejected.what": "Sie haben das R8-Modal von yujin.shell.exec abgelehnt.",
125
- "error.shell_exec_rejected.why": "Der Befehl {command} wurde als {classification} klassifiziert. shell.exec verlangt immer Approval aus Sicherheit, auch wenn der Befehl read-only ist.",
126
- "error.shell_exec_rejected.fix": "Wenn der Befehl read-only war (yf projects active, git status, ls), nutzen Sie das aequivalente native Verb. Wenn er notwendig war und Sie irrtuemlich abgelehnt haben, rufen Sie ihn erneut auf.",
127
- "error.project_not_registered.what": "Kein Adopter-Projekt registriert.",
128
- "error.project_not_registered.why": "Das aufgerufene Verb benoetigt einen aktiven Project-Root, aber ~/.yujin-forge/projects.json hat keine Eintraege.",
129
- "error.project_not_registered.fix": "Erstellen Sie eines mit yujin.project.init oder registrieren Sie ein existierendes mit yf projects add.",
130
- "error.project_not_registered.cmd": "yf projects scan",
131
- "panel.button.agents": "Agenten",
132
- "panel.agents.title": "Agenten",
133
- "panel.agents.subtitle": "Director und Sub-Agenten registriert in diesem Projekt",
134
- "panel.agents.empty.title": "Noch keine Agenten",
135
- "panel.agents.empty.body": "Fuehre `yf agent install --defaults` aus, um den Director und seine 4 Sub-Agenten (Analyst, Coder, Tester, Scaffolder) zu registrieren.",
136
- "panel.agents.legend.eco": "Eco",
137
- "panel.agents.legend.managed": "Managed",
138
- "panel.agents.legend.frontier": "Frontier",
139
- "panel.agents.status.disabled": "Agent-Runtime nicht gestartet",
140
- "panel.agents.event.running": "Laeuft",
141
- "panel.agents.event.idle": "Inaktiv",
142
- "panel.agents.tick.live": "Verbunden",
143
- "panel.agents.tick.lost": "Verbindung verloren",
144
- "workflow.phase.i": "Triage und Intention",
145
- "workflow.phase.ii": "Klaerung (funktional + 4 NFR + Bloecke)",
146
- "workflow.phase.iii": "Spezifikationen (RFP + Arch + Design + Genehmigungen)",
147
- "workflow.phase.iv": "Bootstrap",
148
- "workflow.phase.v": "Blockentwicklung",
149
- "workflow.phase.vi": "Deploy + Post-Launch",
150
- "wizard.title": "Willkommen bei Yujin Forge",
151
- "wizard.close": "Schliessen",
152
- "wizard.intro": "Wahlen Sie zum Start, wie Forge mit Ihrem KI-Modell verbindet. Sie konnen das spater in Settings andern.",
153
- "wizard.back": "Zuruck",
154
- "wizard.start": "Starten",
155
- "wizard.plan.badge": "Empfohlen",
156
- "wizard.plan.title": "Claude Plan",
157
- "wizard.plan.desc": "Monatliches Claude Abonnement. Gunstigste Option fur Dauernutzung. Forge nutzt Ihre claude -p Sitzung.",
158
- "wizard.plan.price": "Fester Monatsbeitrag (Plan)",
159
- "wizard.plan.step.title": "Claude Plan verbinden",
160
- "wizard.plan.step.1": "Offnen Sie ein neues Terminal.",
161
- "wizard.plan.step.2": "Fuhren Sie den Befehl claude (ohne Argumente) aus und schliessen Sie den Browser-Login ab.",
162
- "wizard.plan.step.3": "Kommen Sie hierher zuruck und klicken Sie Ich bin eingeloggt zur Verifizierung.",
163
- "wizard.plan.done": "Ich bin eingeloggt",
164
- "wizard.byok.title": "Console API Schlussel (BYOK)",
165
- "wizard.byok.desc": "Ihr eigener Anthropic Console Schlussel. Zahlung pro Nutzung. Flexibler aber variable Kosten.",
166
- "wizard.byok.price": "Pay-per-use (Console)",
167
- "wizard.byok.step.title": "Anthropic API Schlussel einfugen",
168
- "wizard.byok.step.intro": "Ihr Schlussel beginnt mit sk-ant- und wird auf console.anthropic.com bezogen. Forge speichert ihn verschlusselt im lokalen Vault; er verlasst nie Ihren Rechner.",
169
- "wizard.byok.test": "Validieren und speichern",
170
- "wizard.skip.title": "Ich bin bereits eingerichtet",
171
- "wizard.skip.desc": "Assistent uberspringen. Sie konnen ihn spater in Settings offnen.",
172
- "wizard.done.kanji": "Fertig",
173
- "wizard.done.title": "Fertig",
174
- "wizard.done.msg": "Forge ist eingerichtet. Starten Sie das Gesprach.",
175
- "pizarron.button.read": "Vorlesen",
176
- "pizarron.button.copy": "Kopieren",
177
- "pizarron.button.edit": "Bearbeiten",
178
- "pizarron.graph.refresh": "Aktualisieren",
179
- "pizarron.graph.regenerating": "Wird neu erstellt...",
180
- "pizarron.graph.detail.hint": "Tippe auf einen Knoten fur Details.",
181
- "pizarron.graph.detail.empty": "Kein Detail fur diesen Knoten.",
182
- "pizarron.graph.detail.weight": "Gewicht",
183
- "startup.tab.graph": "Visuelles Diagramm",
184
- "startup.tab.graphSem": "Semantischer Graph",
185
- "startup.tab.pendings": "Ausstehend",
186
- "startup.tab.workflow": "Workflow",
187
- "settings.startupTabs": "Tabs beim Start (Graph, ausstehend, Workflow)",
188
- "graph.term.nodes": "Knoten",
189
- "graph.term.edges": "Kanten",
190
- "coding.read": "Lese {x}",
191
- "coding.read_bare": "Lese eine Datei",
192
- "coding.edit": "Bearbeite {x}",
193
- "coding.edit_bare": "Bearbeite eine Datei",
194
- "coding.write": "Schreibe {x}",
195
- "coding.write_bare": "Schreibe eine Datei",
196
- "coding.notebook_bare": "Bearbeite Notebook",
197
- "coding.bash": "Fuehre aus: {x}",
198
- "coding.bash_bare": "Fuehre einen Befehl aus",
199
- "coding.grep": "Suche \"{x}\"",
200
- "coding.grep_bare": "Suche im Code",
201
- "coding.glob": "Liste {x}",
202
- "coding.glob_bare": "Liste Dateien",
203
- "coding.web_bare": "Lese das Web",
204
- "coding.websearch": "Web-Suche: {x}",
205
- "coding.websearch_bare": "Web-Suche",
206
- "coding.task": "Sub-Agent: {x}",
207
- "coding.task_bare": "Starte einen Sub-Agenten",
208
- "coding.todo": "Aktualisiere seine Aufgabenliste",
209
- "coding.verb_bare": "Fuehre ein yujin-Verb aus"
210
- }
1
+ {
2
+ "panel.brand": "Yujin Forge",
3
+ "panel.brand.kanji": "侑",
4
+ "panel.tagline": "Sprachgesteuerter Entwicklungsassistent",
5
+ "panel.input.placeholder": "Frag Yujin",
6
+ "panel.button.send": "Senden",
7
+ "panel.button.mic": "Sprechen (gedrueckt halten)",
8
+ "panel.button.mic.recording": "Druecken, um die Aufnahme zu stoppen",
9
+ "panel.button.tts": "Stimme aktiviert",
10
+ "panel.button.keys": "Schluessel",
11
+ "panel.button.minimise": "Verkleinern",
12
+ "panel.button.maximise": "Vergroessern",
13
+ "panel.button.close": "Schliessen",
14
+ "panel.button.language": "Sprache",
15
+ "panel.trace.title": "Aktionsprotokoll",
16
+ "panel.trace.count.one": "{n} Werkzeugaufruf",
17
+ "panel.trace.count.other": "{n} Werkzeugaufrufe",
18
+ "panel.trace.empty.kanji": "空",
19
+ "panel.trace.empty.body": "Yujin Forge zeigt hier jedes Werkzeug, das es aufruft, um zu antworten: Manifest lesen, SPEC durchsuchen, Komponenten bearbeiten, Dokumente lesen. Stelle eine Frage, die diese benoetigt.",
20
+ "panel.trace.badge.tool": "WERKZEUG",
21
+ "panel.trace.badge.voice": "STIMME",
22
+ "panel.trace.badge.error": "FEHLER",
23
+ "panel.stream.empty.kanji": "侑仁",
24
+ "panel.stream.empty.body": "Yujin Forge online. Bitte um Aenderungen am Projekt.",
25
+ "panel.status.no_audio": "Kein Audio aufgenommen. Das Mikrofon hat vermutlich nichts erfasst.",
26
+ "panel.status.did_not_catch": "Ich habe das nicht verstanden. Versuche es nochmal.",
27
+ "panel.status.mic_denied": "Mikrofonberechtigung verweigert oder nicht verfuegbar: {error}",
28
+ "panel.status.voice_failed": "Stimme fehlgeschlagen: {error}",
29
+ "panel.status.voice_reply_failed": "Konnte die Antwort nicht abspielen: {error}",
30
+ "panel.status.audio_play_error": "Konnte das Audio nicht abspielen: {error}",
31
+ "panel.status.reading": "Lese {filename}...",
32
+ "panel.status.ingest_failed": "Aufnahme fehlgeschlagen: {error}",
33
+ "panel.status.read_failed": "Konnte die Spezifikation nicht lesen: {error}",
34
+ "panel.drop.title": "Spezifikation hier ablegen",
35
+ "panel.drop.hint": "PDF, DOCX, HTML, MD, RTF, EPUB, CSV, XLSX, TXT",
36
+ "panel.ingest.spec_attached": "Spezifikation angehaengt: {filename}, {kb} KB",
37
+ "panel.ingest.read_label": "Gelesen.",
38
+ "panel.ingest.title_label": "Titel: {title}",
39
+ "panel.ingest.no_title": "(kein Titel)",
40
+ "panel.ingest.format_label": "Format: {format} / {sections} Abschnitt(e) / {kb} KB",
41
+ "panel.ingest.first_lines": "Erste Zeilen:",
42
+ "panel.ingest.action_done": "Aktion {tool} abgeschlossen.",
43
+ "vault.modal.title": "Zugangsdaten (Vault)",
44
+ "vault.modal.aria.close": "Zugangsdaten-Modal schliessen",
45
+ "vault.tab.list": "Geladene Slots",
46
+ "vault.tab.add": "Hinzufuegen",
47
+ "vault.list.loading": "Laedt...",
48
+ "vault.list.empty": "Du hast noch keinen Schluessel geladen. Klicke auf \"Hinzufuegen\" um zu beginnen.",
49
+ "vault.add.slot_label": "Slot-Name",
50
+ "vault.add.slot_hint": "Kleinbuchstaben, Ziffern, Unterstrich, Bindestrich. Muss mit einem Buchstaben beginnen.",
51
+ "vault.add.value_label": "Klartextwert (maskiert)",
52
+ "vault.add.value_hint": "Wird nur einmal beim Speichern angezeigt. Danach nur ersetzbar, nicht lesbar.",
53
+ "vault.add.button_save": "Speichern",
54
+ "vault.add.button_cancel": "Abbrechen",
55
+ "vault.add.success": "Slot {slot} gespeichert.",
56
+ "vault.add.overwrite": "Slot {slot} ueberschrieben.",
57
+ "manual.intro": "Yujin Forge -- Benutzerhandbuch",
58
+ "manual.section.welcome": "Willkommen",
59
+ "manual.section.install": "Installation",
60
+ "manual.section.first_run": "Erste Ausfuehrung",
61
+ "manual.section.voice": "Sprachbefehle",
62
+ "manual.section.spec_ingest": "Spezifikations-Ingestion",
63
+ "manual.section.troubleshooting": "Fehlerbehebung",
64
+ "manual.section.support": "Support",
65
+ "lang.name.es": "Spanisch",
66
+ "lang.name.en": "Englisch",
67
+ "lang.name.pt": "Portugiesisch",
68
+ "lang.name.fr": "Franzoesisch",
69
+ "lang.name.ja": "Japanisch",
70
+ "lang.name.zh": "Chinesisch",
71
+ "lang.name.hi": "Hindi",
72
+ "lang.name.ar": "Arabisch",
73
+ "lang.name.de": "Deutsch",
74
+ "lang.name.it": "Italienisch",
75
+ "recap.fallback_period": ".",
76
+ "recap.empty": "Es gibt noch nichts zusammenzufassen.",
77
+ "error_ui.severity.info": "INFO",
78
+ "error_ui.severity.warning": "WARNUNG",
79
+ "error_ui.severity.error": "FEHLER",
80
+ "error_ui.severity.fatal": "FATAL",
81
+ "error_ui.label.what": "Was ist passiert",
82
+ "error_ui.label.why": "Warum",
83
+ "error_ui.label.fix": "Wie beheben",
84
+ "error_ui.label.cmd": "Befehl",
85
+ "error_ui.label.docs": "Lokale Docs",
86
+ "error_ui.label.retry": "Erneut versuchen in",
87
+ "error_ui.copy_btn": "Befehl kopieren",
88
+ "error_ui.unknown.what": "Forge hat einen internen Fehler gefunden (unbekannter Code).",
89
+ "error_ui.unknown.why": "Der Code {code} ist nicht im Katalog. Das ist ein Bug.",
90
+ "error_ui.unknown.fix": "Issue oeffnen auf https://github.com/yujinapp/yujin-forge/issues mit dem Code + Traceback.",
91
+ "error.cap_frontier_exhausted.what": "Monatliches Token-Cap des Frontier-Tier erschoepft (grosses Modell).",
92
+ "error.cap_frontier_exhausted.why": "Ihr Plan {plan} erlaubt bis zu {cap} Tokens/Monat auf Frontier. Sie haben {used} verwendet. Reset zum Anfang des naechsten UTC-Monats.",
93
+ "error.cap_frontier_exhausted.fix": "Wechseln Sie zu direktem Anthropic BYOK: umgeht das monatliche Worker-Cap. Ihre Kosten sind dann was Anthropic direkt berechnet.",
94
+ "error.cap_frontier_exhausted.cmd": "yf brain config --frontier-provider anthropic --frontier-model claude-opus-4-7",
95
+ "error.cap_eco_exhausted.what": "Monatliches Token-Cap des Eco-Tier erschoepft (kleines Modell).",
96
+ "error.cap_eco_exhausted.why": "Ihr Plan {plan} erlaubt bis zu {cap} Tokens/Monat auf Eco. Sie haben {used} verwendet. Reset zum Anfang des naechsten UTC-Monats.",
97
+ "error.cap_eco_exhausted.fix": "Wechseln Sie zu direktem BYOK oder upgraden Sie Ihren Plan. BYOK umgeht das Worker-Cap.",
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 {tier} ist in Ihrem Plan nicht aktiviert.",
100
+ "error.tier_not_in_plan.why": "Ihr Plan {plan} enthaelt den {tier}-Tier nicht. Sie sind wahrscheinlich auf free-public oder Ihre Lizenz ist abgelaufen.",
101
+ "error.tier_not_in_plan.fix": "Aktivieren Sie eine bezahlte Lizenz oder wechseln Sie zu direktem BYOK (Ihre Kosten, ohne Worker-Cap).",
102
+ "error.tier_not_in_plan.cmd": "yf license activate --key <jwt>",
103
+ "error.response_truncated.what": "Die Modellantwort wurde vor dem Ende abgeschnitten.",
104
+ "error.response_truncated.why": "Limit managed_max_tokens_per_turn = {limit} Tokens mitten im Turn erreicht. Das Modell hat aufgehoert zu generieren.",
105
+ "error.response_truncated.fix": "Erhoehen Sie das Limit via yf limits. Gilt fuer den naechsten Turn ohne Chat-Neustart.",
106
+ "error.response_truncated.cmd": "yf limits set managed_max_tokens_per_turn 16384",
107
+ "error.response_truncated.banner": "[Antwort durch max_tokens={max} abgeschnitten. Limit erhoehen mit: yf limits set managed_max_tokens_per_turn {suggested}]",
108
+ "error.modal_trace_stale.what": "Das Approval-Modal ist abgelaufen oder verwaist.",
109
+ "error.modal_trace_stale.why": "Die trace_id {trace_id} hat keine pendente Approval im Dispatcher. Wahrscheinlich Race Condition zwischen Invoke und Panel-State, oder ein vorheriger Cancel hat den Trace als Zombie hinterlassen.",
110
+ "error.modal_trace_stale.fix": "Verb erneut aus dem Chat aufrufen: startet einen neuen sauberen Trace. Wenn es weiterhin passiert, fuehren Sie yf doctor aus, um das Panel zu pruefen.",
111
+ "error.modal_trace_stale.cmd": "yf doctor",
112
+ "error.byok_key_missing.what": "API-Key fuer Provider {provider} fehlt.",
113
+ "error.byok_key_missing.why": "Sie haben {provider} als Provider des {tier}-Tiers konfiguriert, aber der Slot byok_{slot} ist nicht im verschluesselten Vault.",
114
+ "error.byok_key_missing.fix": "Konfigurieren Sie den Key mit yf keys set (atomar, mode 0600, niemals geloggt).",
115
+ "error.byok_key_missing.cmd": "yf keys set {slot}",
116
+ "error.worker_unreachable.what": "Konnte den yujin.app-Worker nicht erreichen.",
117
+ "error.worker_unreachable.why": "Netzwerk-Timeout oder Worker ausgefallen (HTTP {status}). {attempts} mal wiederholt.",
118
+ "error.worker_unreachable.fix": "Pruefen Sie Ihr Internet. Falls OK, wechseln Sie temporaer zu direktem BYOK, um die Worker-Abhaengigkeit zu vermeiden.",
119
+ "error.worker_unreachable.cmd": "yf brain config --frontier-provider anthropic",
120
+ "error.vault_decrypt_failed.what": "Konnte einen Schluessel aus dem Vault nicht entschluesseln.",
121
+ "error.vault_decrypt_failed.why": "Der Master-Key ist falsch oder die Vault-Datei ist beschaedigt. Kann passieren, wenn Sie die Konfiguration zwischen Maschinen verschoben haben ohne den Master zu migrieren, oder durch Disk-Error.",
122
+ "error.vault_decrypt_failed.fix": "Holen Sie die Server-Kopie (verschluesselt mit Ihrem lokalen Master neu), falls Sie Server-Backup aktiv haben.",
123
+ "error.vault_decrypt_failed.cmd": "yf keys setup --pull",
124
+ "error.shell_exec_rejected.what": "Sie haben das R8-Modal von yujin.shell.exec abgelehnt.",
125
+ "error.shell_exec_rejected.why": "Der Befehl {command} wurde als {classification} klassifiziert. shell.exec verlangt immer Approval aus Sicherheit, auch wenn der Befehl read-only ist.",
126
+ "error.shell_exec_rejected.fix": "Wenn der Befehl read-only war (yf projects active, git status, ls), nutzen Sie das aequivalente native Verb. Wenn er notwendig war und Sie irrtuemlich abgelehnt haben, rufen Sie ihn erneut auf.",
127
+ "error.project_not_registered.what": "Kein Adopter-Projekt registriert.",
128
+ "error.project_not_registered.why": "Das aufgerufene Verb benoetigt einen aktiven Project-Root, aber ~/.yujin-forge/projects.json hat keine Eintraege.",
129
+ "error.project_not_registered.fix": "Erstellen Sie eines mit yujin.project.init oder registrieren Sie ein existierendes mit yf projects add.",
130
+ "error.project_not_registered.cmd": "yf projects scan",
131
+ "panel.button.agents": "Agenten",
132
+ "panel.agents.title": "Agenten",
133
+ "panel.agents.subtitle": "Director und Sub-Agenten registriert in diesem Projekt",
134
+ "panel.agents.empty.title": "Noch keine Agenten",
135
+ "panel.agents.empty.body": "Fuehre `yf agent install --defaults` aus, um den Director und seine 4 Sub-Agenten (Analyst, Coder, Tester, Scaffolder) zu registrieren.",
136
+ "panel.agents.legend.eco": "Eco",
137
+ "panel.agents.legend.managed": "Managed",
138
+ "panel.agents.legend.frontier": "Frontier",
139
+ "panel.agents.status.disabled": "Agent-Runtime nicht gestartet",
140
+ "panel.agents.event.running": "Laeuft",
141
+ "panel.agents.event.idle": "Inaktiv",
142
+ "panel.agents.tick.live": "Verbunden",
143
+ "panel.agents.tick.lost": "Verbindung verloren",
144
+ "workflow.phase.i": "Triage und Intention",
145
+ "workflow.phase.ii": "Klaerung (funktional + 4 NFR + Bloecke)",
146
+ "workflow.phase.iii": "Spezifikationen (RFP + Arch + Design + Genehmigungen)",
147
+ "workflow.phase.iv": "Bootstrap",
148
+ "workflow.phase.v": "Blockentwicklung",
149
+ "workflow.phase.vi": "Deploy + Post-Launch",
150
+ "wizard.title": "Willkommen bei Yujin Forge",
151
+ "wizard.close": "Schliessen",
152
+ "wizard.intro": "Wahlen Sie zum Start, wie Forge mit Ihrem KI-Modell verbindet. Sie konnen das spater in Settings andern.",
153
+ "wizard.back": "Zuruck",
154
+ "wizard.start": "Starten",
155
+ "wizard.plan.badge": "Empfohlen",
156
+ "wizard.plan.title": "Claude Plan",
157
+ "wizard.plan.desc": "Monatliches Claude Abonnement. Gunstigste Option fur Dauernutzung. Forge nutzt Ihre claude -p Sitzung.",
158
+ "wizard.plan.price": "Fester Monatsbeitrag (Plan)",
159
+ "wizard.plan.step.title": "Claude Plan verbinden",
160
+ "wizard.plan.step.1": "Offnen Sie ein neues Terminal.",
161
+ "wizard.plan.step.2": "Fuhren Sie den Befehl claude (ohne Argumente) aus und schliessen Sie den Browser-Login ab.",
162
+ "wizard.plan.step.3": "Kommen Sie hierher zuruck und klicken Sie Ich bin eingeloggt zur Verifizierung.",
163
+ "wizard.plan.done": "Ich bin eingeloggt",
164
+ "wizard.byok.title": "Console API Schlussel (BYOK)",
165
+ "wizard.byok.desc": "Ihr eigener Anthropic Console Schlussel. Zahlung pro Nutzung. Flexibler aber variable Kosten.",
166
+ "wizard.byok.price": "Pay-per-use (Console)",
167
+ "wizard.byok.step.title": "Anthropic API Schlussel einfugen",
168
+ "wizard.byok.step.intro": "Ihr Schlussel beginnt mit sk-ant- und wird auf console.anthropic.com bezogen. Forge speichert ihn verschlusselt im lokalen Vault; er verlasst nie Ihren Rechner.",
169
+ "wizard.byok.test": "Validieren und speichern",
170
+ "wizard.skip.title": "Ich bin bereits eingerichtet",
171
+ "wizard.skip.desc": "Assistent uberspringen. Sie konnen ihn spater in Settings offnen.",
172
+ "wizard.done.kanji": "Fertig",
173
+ "wizard.done.title": "Fertig",
174
+ "wizard.done.msg": "Forge ist eingerichtet. Starten Sie das Gesprach.",
175
+ "pizarron.button.read": "Vorlesen",
176
+ "pizarron.button.copy": "Kopieren",
177
+ "pizarron.button.edit": "Bearbeiten",
178
+ "pizarron.graph.refresh": "Aktualisieren",
179
+ "pizarron.graph.regenerating": "Wird neu erstellt...",
180
+ "pizarron.graph.detail.hint": "Tippe auf einen Knoten fur Details.",
181
+ "pizarron.graph.detail.empty": "Kein Detail fur diesen Knoten.",
182
+ "pizarron.graph.detail.weight": "Gewicht",
183
+ "startup.tab.graph": "Visuelles Diagramm",
184
+ "startup.tab.graphSem": "Semantischer Graph",
185
+ "startup.tab.pendings": "Ausstehend",
186
+ "startup.tab.workflow": "Workflow",
187
+ "settings.startupTabs": "Tabs beim Start (Graph, ausstehend, Workflow)",
188
+ "graph.term.nodes": "Knoten",
189
+ "graph.term.edges": "Kanten",
190
+ "coding.read": "Lese {x}",
191
+ "coding.read_bare": "Lese eine Datei",
192
+ "coding.edit": "Bearbeite {x}",
193
+ "coding.edit_bare": "Bearbeite eine Datei",
194
+ "coding.write": "Schreibe {x}",
195
+ "coding.write_bare": "Schreibe eine Datei",
196
+ "coding.notebook_bare": "Bearbeite Notebook",
197
+ "coding.bash": "Fuehre aus: {x}",
198
+ "coding.bash_bare": "Fuehre einen Befehl aus",
199
+ "coding.grep": "Suche \"{x}\"",
200
+ "coding.grep_bare": "Suche im Code",
201
+ "coding.glob": "Liste {x}",
202
+ "coding.glob_bare": "Liste Dateien",
203
+ "coding.web_bare": "Lese das Web",
204
+ "coding.websearch": "Web-Suche: {x}",
205
+ "coding.websearch_bare": "Web-Suche",
206
+ "coding.task": "Sub-Agent: {x}",
207
+ "coding.task_bare": "Starte einen Sub-Agenten",
208
+ "coding.todo": "Aktualisiere seine Aufgabenliste",
209
+ "coding.verb_bare": "Fuehre ein yujin-Verb aus",
210
+ "panel.button.stop": "Stopp",
211
+ "panel.status.stopping": "Stoppe...",
212
+ "panel.status.noActiveTurn": "Es lief kein Zug.",
213
+ "panel.status.interruptFailed": "Unterbrechung konnte nicht gesendet werden.",
214
+ "panel.status.turnInterrupted": "Zug unterbrochen.",
215
+ "panel.label.interrupted": "(unterbrochen)",
216
+ "panel.queue.label": "In Warteschlange",
217
+ "panel.queue.remove": "Aus Warteschlange entfernen",
218
+ "panel.project.switchHint": "Projekt wechseln",
219
+ "panel.project.title": "Projekte",
220
+ "panel.project.add": "Projekt hinzufuegen...",
221
+ "panel.project.addPrompt": "Absoluter Pfad des hinzuzufuegenden Projekts:",
222
+ "panel.project.switching": "Projekt wird gewechselt..."
223
+ }