@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": "Assistente di sviluppo a voce",
5
- "panel.input.placeholder": "Chiedi a Yujin",
6
- "panel.button.send": "Invia",
7
- "panel.button.mic": "Parla (tieni premuto)",
8
- "panel.button.mic.recording": "Premi per fermare la registrazione",
9
- "panel.button.tts": "Voce attiva",
10
- "panel.button.keys": "Chiavi",
11
- "panel.button.minimise": "Riduci",
12
- "panel.button.maximise": "Ingrandisci",
13
- "panel.button.close": "Chiudi",
14
- "panel.button.language": "Lingua",
15
- "panel.trace.title": "Traccia delle azioni",
16
- "panel.trace.count.one": "{n} chiamata a strumento",
17
- "panel.trace.count.other": "{n} chiamate a strumenti",
18
- "panel.trace.empty.kanji": "空",
19
- "panel.trace.empty.body": "Yujin Forge mostra qui ogni strumento che invoca per risponderti: lettura del manifest, ricerca nella SPEC, modifica di componenti, lettura di documenti. Fai una domanda che ne richieda la consultazione.",
20
- "panel.trace.badge.tool": "STRUMENTO",
21
- "panel.trace.badge.voice": "VOCE",
22
- "panel.trace.badge.error": "ERRORE",
23
- "panel.stream.empty.kanji": "侑仁",
24
- "panel.stream.empty.body": "Yujin Forge online. Chiedi modifiche al progetto.",
25
- "panel.status.no_audio": "Nessun audio catturato. Il microfono probabilmente non ha ricevuto nulla.",
26
- "panel.status.did_not_catch": "Non ho capito. Riproviamo.",
27
- "panel.status.mic_denied": "Permesso microfono negato o non disponibile: {error}",
28
- "panel.status.voice_failed": "La voce ha fallito: {error}",
29
- "panel.status.voice_reply_failed": "Non sono riuscito a riprodurre la risposta: {error}",
30
- "panel.status.audio_play_error": "Non sono riuscito a riprodurre l'audio: {error}",
31
- "panel.status.reading": "Sto leggendo {filename}...",
32
- "panel.status.ingest_failed": "L'acquisizione e fallita: {error}",
33
- "panel.status.read_failed": "Non sono riuscito a leggere la specifica: {error}",
34
- "panel.drop.title": "Rilascia qui la specifica",
35
- "panel.drop.hint": "PDF, DOCX, HTML, MD, RTF, EPUB, CSV, XLSX, TXT",
36
- "panel.ingest.spec_attached": "Specifica allegata: {filename}, {kb} KB",
37
- "panel.ingest.read_label": "Letta.",
38
- "panel.ingest.title_label": "Titolo: {title}",
39
- "panel.ingest.no_title": "(senza titolo)",
40
- "panel.ingest.format_label": "Formato: {format} / {sections} sezione(i) / {kb} KB",
41
- "panel.ingest.first_lines": "Prime righe:",
42
- "panel.ingest.action_done": "Azione {tool} completata.",
43
- "vault.modal.title": "Credenziali (vault)",
44
- "vault.modal.aria.close": "Chiudi modale delle credenziali",
45
- "vault.tab.list": "Slot caricati",
46
- "vault.tab.add": "Aggiungi",
47
- "vault.list.loading": "Caricamento...",
48
- "vault.list.empty": "Non hai ancora caricato nessuna chiave. Clicca su \"Aggiungi\" per iniziare.",
49
- "vault.add.slot_label": "Nome dello slot",
50
- "vault.add.slot_hint": "Lettere minuscole, cifre, underscore, trattino. Deve iniziare con una lettera.",
51
- "vault.add.value_label": "Valore in chiaro (mascherato)",
52
- "vault.add.value_hint": "Mostrato una sola volta al salvataggio. Dopo si puo sostituire ma non rileggere.",
53
- "vault.add.button_save": "Salva",
54
- "vault.add.button_cancel": "Annulla",
55
- "vault.add.success": "Slot {slot} salvato.",
56
- "vault.add.overwrite": "Slot {slot} sovrascritto.",
57
- "manual.intro": "Yujin Forge -- manuale utente",
58
- "manual.section.welcome": "Benvenuto",
59
- "manual.section.install": "Installazione",
60
- "manual.section.first_run": "Primo avvio",
61
- "manual.section.voice": "Comandi vocali",
62
- "manual.section.spec_ingest": "Acquisizione di specifiche",
63
- "manual.section.troubleshooting": "Risoluzione dei problemi",
64
- "manual.section.support": "Supporto",
65
- "lang.name.es": "Spagnolo",
66
- "lang.name.en": "Inglese",
67
- "lang.name.pt": "Portoghese",
68
- "lang.name.fr": "Francese",
69
- "lang.name.ja": "Giapponese",
70
- "lang.name.zh": "Cinese",
71
- "lang.name.hi": "Hindi",
72
- "lang.name.ar": "Arabo",
73
- "lang.name.de": "Tedesco",
74
- "lang.name.it": "Italiano",
75
- "recap.fallback_period": ".",
76
- "recap.empty": "Non c'e ancora nulla da riassumere.",
77
- "error_ui.severity.info": "INFO",
78
- "error_ui.severity.warning": "ATTENZIONE",
79
- "error_ui.severity.error": "ERRORE",
80
- "error_ui.severity.fatal": "FATALE",
81
- "error_ui.label.what": "Cosa e successo",
82
- "error_ui.label.why": "Perche",
83
- "error_ui.label.fix": "Come risolvere",
84
- "error_ui.label.cmd": "Comando",
85
- "error_ui.label.docs": "Docs locali",
86
- "error_ui.label.retry": "Riprovare tra",
87
- "error_ui.copy_btn": "Copia comando",
88
- "error_ui.unknown.what": "Forge ha incontrato un errore interno (codice sconosciuto).",
89
- "error_ui.unknown.why": "Il codice {code} non e nel catalogo. E un bug.",
90
- "error_ui.unknown.fix": "Apri un issue su https://github.com/yujinapp/yujin-forge/issues con il codice + traceback.",
91
- "error.cap_frontier_exhausted.what": "Cap mensile di token del tier frontier esaurito (modello grande).",
92
- "error.cap_frontier_exhausted.why": "Il tuo piano {plan} permette fino a {cap} token/mese su frontier. Hai usato {used}. Reset all'inizio del prossimo mese UTC.",
93
- "error.cap_frontier_exhausted.fix": "Passa a BYOK Anthropic diretto: bypassa il cap mensile del worker. Il tuo costo diventa quello che Anthropic addebita.",
94
- "error.cap_frontier_exhausted.cmd": "yf brain config --frontier-provider anthropic --frontier-model claude-opus-4-7",
95
- "error.cap_eco_exhausted.what": "Cap mensile di token del tier eco esaurito (modello piccolo).",
96
- "error.cap_eco_exhausted.why": "Il tuo piano {plan} permette fino a {cap} token/mese su eco. Hai usato {used}. Reset all'inizio del prossimo mese UTC.",
97
- "error.cap_eco_exhausted.fix": "Passa a BYOK diretto o aggiorna il piano. BYOK bypassa il cap del 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": "Il tier {tier} non e abilitato sul tuo piano.",
100
- "error.tier_not_in_plan.why": "Il tuo piano {plan} non include il tier {tier}. Probabilmente sei su free-public o la tua licenza e scaduta.",
101
- "error.tier_not_in_plan.fix": "Attiva una licenza a pagamento o passa a BYOK diretto (tuo costo, senza cap del worker).",
102
- "error.tier_not_in_plan.cmd": "yf license activate --key <jwt>",
103
- "error.response_truncated.what": "La risposta del modello e stata tagliata prima di finire.",
104
- "error.response_truncated.why": "Limite managed_max_tokens_per_turn = {limit} token raggiunto a meta turno. Il modello ha smesso di generare.",
105
- "error.response_truncated.fix": "Alza il limite via yf limits. Si applica al prossimo turno senza riavviare la chat.",
106
- "error.response_truncated.cmd": "yf limits set managed_max_tokens_per_turn 16384",
107
- "error.response_truncated.banner": "[Risposta troncata da max_tokens={max}. Alza il limite con: yf limits set managed_max_tokens_per_turn {suggested}]",
108
- "error.modal_trace_stale.what": "Il modal di approvazione e scaduto o e orfano.",
109
- "error.modal_trace_stale.why": "Il trace_id {trace_id} non ha approval pending nel dispatcher. Probabile race condition tra invoke e stato del panel, o un cancel precedente ha lasciato il trace zombi.",
110
- "error.modal_trace_stale.fix": "Reinvoca il verb dalla chat: avvia un nuovo trace pulito. Se persiste, esegui yf doctor per controllare il panel.",
111
- "error.modal_trace_stale.cmd": "yf doctor",
112
- "error.byok_key_missing.what": "API key mancante per il provider {provider}.",
113
- "error.byok_key_missing.why": "Hai configurato {provider} come provider del tier {tier} ma lo slot byok_{slot} non e nel Vault crittografato.",
114
- "error.byok_key_missing.fix": "Configura la key con yf keys set (atomico, mode 0600, mai loggato).",
115
- "error.byok_key_missing.cmd": "yf keys set {slot}",
116
- "error.worker_unreachable.what": "Non sono riuscito a raggiungere il worker yujin.app.",
117
- "error.worker_unreachable.why": "Timeout di rete o worker down (HTTP {status}). Riprovato {attempts} volte.",
118
- "error.worker_unreachable.fix": "Controlla la tua internet. Se OK, passa temporaneamente a BYOK diretto per evitare la dipendenza dal worker.",
119
- "error.worker_unreachable.cmd": "yf brain config --frontier-provider anthropic",
120
- "error.vault_decrypt_failed.what": "Non sono riuscito a decifrare una chiave dal Vault.",
121
- "error.vault_decrypt_failed.why": "La master key e errata o il file del Vault e corrotto. Puo succedere se hai spostato la config tra macchine senza migrare la master o per disk error.",
122
- "error.vault_decrypt_failed.fix": "Tira la copia dal server (ricripta con la tua master locale) se hai server backup attivo.",
123
- "error.vault_decrypt_failed.cmd": "yf keys setup --pull",
124
- "error.shell_exec_rejected.what": "Hai rifiutato il modal R8 di yujin.shell.exec.",
125
- "error.shell_exec_rejected.why": "Il comando {command} e stato classificato come {classification}. shell.exec chiede sempre approvazione per sicurezza, anche se il comando e read-only.",
126
- "error.shell_exec_rejected.fix": "Se il comando era read-only (yf projects active, git status, ls), usa il verb nativo equivalente. Se era necessario e l'hai rifiutato per errore, reinvoca.",
127
- "error.project_not_registered.what": "Nessun progetto adopter registrato.",
128
- "error.project_not_registered.why": "Il verb invocato richiede un project root attivo ma ~/.yujin-forge/projects.json non ha voci.",
129
- "error.project_not_registered.fix": "Creane uno con yujin.project.init o registrane uno esistente con yf projects add.",
130
- "error.project_not_registered.cmd": "yf projects scan",
131
- "panel.button.agents": "Agenti",
132
- "panel.agents.title": "Agenti",
133
- "panel.agents.subtitle": "Director e sub-agenti registrati in questo progetto",
134
- "panel.agents.empty.title": "Nessun agente ancora",
135
- "panel.agents.empty.body": "Esegui `yf agent install --defaults` per registrare il Director e i suoi 4 sub-agenti (Analista, Coder, Tester, Scaffolder).",
136
- "panel.agents.legend.eco": "Eco",
137
- "panel.agents.legend.managed": "Managed",
138
- "panel.agents.legend.frontier": "Frontier",
139
- "panel.agents.status.disabled": "Runtime degli agenti non avviato",
140
- "panel.agents.event.running": "In esecuzione",
141
- "panel.agents.event.idle": "Inattivo",
142
- "panel.agents.tick.live": "Connesso",
143
- "panel.agents.tick.lost": "Connessione persa",
144
- "workflow.phase.i": "Triage e intento",
145
- "workflow.phase.ii": "Chiarimento (funzionale + 4 NFR + blocchi)",
146
- "workflow.phase.iii": "Specifiche (RFP + Arch + Design + approvazioni)",
147
- "workflow.phase.iv": "Bootstrap",
148
- "workflow.phase.v": "Sviluppo a blocchi",
149
- "workflow.phase.vi": "Deploy + post-lancio",
150
- "wizard.title": "Benvenuto in Yujin Forge",
151
- "wizard.close": "Chiudi",
152
- "wizard.intro": "Per iniziare, scegli come Forge si connette al tuo modello AI. Puoi cambiare la scelta in seguito da Settings.",
153
- "wizard.back": "Indietro",
154
- "wizard.start": "Inizia",
155
- "wizard.plan.badge": "Consigliato",
156
- "wizard.plan.title": "Piano Claude",
157
- "wizard.plan.desc": "Abbonamento mensile Claude. Opzione piu economica per uso continuo. Forge usa la tua sessione claude -p.",
158
- "wizard.plan.price": "Canone mensile fisso (Piano)",
159
- "wizard.plan.step.title": "Connetti il tuo Piano Claude",
160
- "wizard.plan.step.1": "Apri un nuovo terminale.",
161
- "wizard.plan.step.2": "Esegui il comando claude (senza argomenti) e completa il login nel browser.",
162
- "wizard.plan.step.3": "Torna qui e clicca Sono loggato per verificare.",
163
- "wizard.plan.done": "Sono loggato",
164
- "wizard.byok.title": "Chiave API Console (BYOK)",
165
- "wizard.byok.desc": "La tua chiave Anthropic Console. Pagamento a uso. Piu flessibile ma costo variabile.",
166
- "wizard.byok.price": "Pagamento a uso (Console)",
167
- "wizard.byok.step.title": "Incolla la tua chiave API Anthropic",
168
- "wizard.byok.step.intro": "La chiave inizia con sk-ant- e si ottiene su console.anthropic.com. Forge la conserva crittografata nel Vault locale; non lascia mai la tua macchina.",
169
- "wizard.byok.test": "Valida e salva",
170
- "wizard.skip.title": "Sono gia configurato",
171
- "wizard.skip.desc": "Salta il wizard. Puoi riaprirlo in seguito da Settings.",
172
- "wizard.done.kanji": "Fatto",
173
- "wizard.done.title": "Fatto",
174
- "wizard.done.msg": "Forge e configurato. Inizia a chattare.",
175
- "pizarron.button.read": "Leggimi",
176
- "pizarron.button.copy": "Copia",
177
- "pizarron.button.edit": "Modifica",
178
- "pizarron.graph.refresh": "Aggiorna",
179
- "pizarron.graph.regenerating": "Rigenerando...",
180
- "pizarron.graph.detail.hint": "Tocca un nodo per il dettaglio.",
181
- "pizarron.graph.detail.empty": "Nessun dettaglio per questo nodo.",
182
- "pizarron.graph.detail.weight": "peso",
183
- "startup.tab.graph": "Grafo visuale",
184
- "startup.tab.graphSem": "Grafo semantico",
185
- "startup.tab.pendings": "In sospeso",
186
- "startup.tab.workflow": "Workflow",
187
- "settings.startupTabs": "Schede all'avvio (grafo, in sospeso, workflow)",
188
- "graph.term.nodes": "nodi",
189
- "graph.term.edges": "archi",
190
- "coding.read": "Lettura di {x}",
191
- "coding.read_bare": "Lettura di un file",
192
- "coding.edit": "Modifica di {x}",
193
- "coding.edit_bare": "Modifica di un file",
194
- "coding.write": "Scrittura di {x}",
195
- "coding.write_bare": "Scrittura di un file",
196
- "coding.notebook_bare": "Modifica del notebook",
197
- "coding.bash": "Esecuzione: {x}",
198
- "coding.bash_bare": "Esecuzione di un comando",
199
- "coding.grep": "Ricerca \"{x}\"",
200
- "coding.grep_bare": "Ricerca nel codice",
201
- "coding.glob": "Elenco di {x}",
202
- "coding.glob_bare": "Elenco dei file",
203
- "coding.web_bare": "Lettura del web",
204
- "coding.websearch": "Ricerca web: {x}",
205
- "coding.websearch_bare": "Ricerca web",
206
- "coding.task": "Sub-agente: {x}",
207
- "coding.task_bare": "Avvio di un sub-agente",
208
- "coding.todo": "Aggiornamento della sua lista attivita",
209
- "coding.verb_bare": "Esecuzione di un verbo yujin"
210
- }
1
+ {
2
+ "panel.brand": "Yujin Forge",
3
+ "panel.brand.kanji": "侑",
4
+ "panel.tagline": "Assistente di sviluppo a voce",
5
+ "panel.input.placeholder": "Chiedi a Yujin",
6
+ "panel.button.send": "Invia",
7
+ "panel.button.mic": "Parla (tieni premuto)",
8
+ "panel.button.mic.recording": "Premi per fermare la registrazione",
9
+ "panel.button.tts": "Voce attiva",
10
+ "panel.button.keys": "Chiavi",
11
+ "panel.button.minimise": "Riduci",
12
+ "panel.button.maximise": "Ingrandisci",
13
+ "panel.button.close": "Chiudi",
14
+ "panel.button.language": "Lingua",
15
+ "panel.trace.title": "Traccia delle azioni",
16
+ "panel.trace.count.one": "{n} chiamata a strumento",
17
+ "panel.trace.count.other": "{n} chiamate a strumenti",
18
+ "panel.trace.empty.kanji": "空",
19
+ "panel.trace.empty.body": "Yujin Forge mostra qui ogni strumento che invoca per risponderti: lettura del manifest, ricerca nella SPEC, modifica di componenti, lettura di documenti. Fai una domanda che ne richieda la consultazione.",
20
+ "panel.trace.badge.tool": "STRUMENTO",
21
+ "panel.trace.badge.voice": "VOCE",
22
+ "panel.trace.badge.error": "ERRORE",
23
+ "panel.stream.empty.kanji": "侑仁",
24
+ "panel.stream.empty.body": "Yujin Forge online. Chiedi modifiche al progetto.",
25
+ "panel.status.no_audio": "Nessun audio catturato. Il microfono probabilmente non ha ricevuto nulla.",
26
+ "panel.status.did_not_catch": "Non ho capito. Riproviamo.",
27
+ "panel.status.mic_denied": "Permesso microfono negato o non disponibile: {error}",
28
+ "panel.status.voice_failed": "La voce ha fallito: {error}",
29
+ "panel.status.voice_reply_failed": "Non sono riuscito a riprodurre la risposta: {error}",
30
+ "panel.status.audio_play_error": "Non sono riuscito a riprodurre l'audio: {error}",
31
+ "panel.status.reading": "Sto leggendo {filename}...",
32
+ "panel.status.ingest_failed": "L'acquisizione e fallita: {error}",
33
+ "panel.status.read_failed": "Non sono riuscito a leggere la specifica: {error}",
34
+ "panel.drop.title": "Rilascia qui la specifica",
35
+ "panel.drop.hint": "PDF, DOCX, HTML, MD, RTF, EPUB, CSV, XLSX, TXT",
36
+ "panel.ingest.spec_attached": "Specifica allegata: {filename}, {kb} KB",
37
+ "panel.ingest.read_label": "Letta.",
38
+ "panel.ingest.title_label": "Titolo: {title}",
39
+ "panel.ingest.no_title": "(senza titolo)",
40
+ "panel.ingest.format_label": "Formato: {format} / {sections} sezione(i) / {kb} KB",
41
+ "panel.ingest.first_lines": "Prime righe:",
42
+ "panel.ingest.action_done": "Azione {tool} completata.",
43
+ "vault.modal.title": "Credenziali (vault)",
44
+ "vault.modal.aria.close": "Chiudi modale delle credenziali",
45
+ "vault.tab.list": "Slot caricati",
46
+ "vault.tab.add": "Aggiungi",
47
+ "vault.list.loading": "Caricamento...",
48
+ "vault.list.empty": "Non hai ancora caricato nessuna chiave. Clicca su \"Aggiungi\" per iniziare.",
49
+ "vault.add.slot_label": "Nome dello slot",
50
+ "vault.add.slot_hint": "Lettere minuscole, cifre, underscore, trattino. Deve iniziare con una lettera.",
51
+ "vault.add.value_label": "Valore in chiaro (mascherato)",
52
+ "vault.add.value_hint": "Mostrato una sola volta al salvataggio. Dopo si puo sostituire ma non rileggere.",
53
+ "vault.add.button_save": "Salva",
54
+ "vault.add.button_cancel": "Annulla",
55
+ "vault.add.success": "Slot {slot} salvato.",
56
+ "vault.add.overwrite": "Slot {slot} sovrascritto.",
57
+ "manual.intro": "Yujin Forge -- manuale utente",
58
+ "manual.section.welcome": "Benvenuto",
59
+ "manual.section.install": "Installazione",
60
+ "manual.section.first_run": "Primo avvio",
61
+ "manual.section.voice": "Comandi vocali",
62
+ "manual.section.spec_ingest": "Acquisizione di specifiche",
63
+ "manual.section.troubleshooting": "Risoluzione dei problemi",
64
+ "manual.section.support": "Supporto",
65
+ "lang.name.es": "Spagnolo",
66
+ "lang.name.en": "Inglese",
67
+ "lang.name.pt": "Portoghese",
68
+ "lang.name.fr": "Francese",
69
+ "lang.name.ja": "Giapponese",
70
+ "lang.name.zh": "Cinese",
71
+ "lang.name.hi": "Hindi",
72
+ "lang.name.ar": "Arabo",
73
+ "lang.name.de": "Tedesco",
74
+ "lang.name.it": "Italiano",
75
+ "recap.fallback_period": ".",
76
+ "recap.empty": "Non c'e ancora nulla da riassumere.",
77
+ "error_ui.severity.info": "INFO",
78
+ "error_ui.severity.warning": "ATTENZIONE",
79
+ "error_ui.severity.error": "ERRORE",
80
+ "error_ui.severity.fatal": "FATALE",
81
+ "error_ui.label.what": "Cosa e successo",
82
+ "error_ui.label.why": "Perche",
83
+ "error_ui.label.fix": "Come risolvere",
84
+ "error_ui.label.cmd": "Comando",
85
+ "error_ui.label.docs": "Docs locali",
86
+ "error_ui.label.retry": "Riprovare tra",
87
+ "error_ui.copy_btn": "Copia comando",
88
+ "error_ui.unknown.what": "Forge ha incontrato un errore interno (codice sconosciuto).",
89
+ "error_ui.unknown.why": "Il codice {code} non e nel catalogo. E un bug.",
90
+ "error_ui.unknown.fix": "Apri un issue su https://github.com/yujinapp/yujin-forge/issues con il codice + traceback.",
91
+ "error.cap_frontier_exhausted.what": "Cap mensile di token del tier frontier esaurito (modello grande).",
92
+ "error.cap_frontier_exhausted.why": "Il tuo piano {plan} permette fino a {cap} token/mese su frontier. Hai usato {used}. Reset all'inizio del prossimo mese UTC.",
93
+ "error.cap_frontier_exhausted.fix": "Passa a BYOK Anthropic diretto: bypassa il cap mensile del worker. Il tuo costo diventa quello che Anthropic addebita.",
94
+ "error.cap_frontier_exhausted.cmd": "yf brain config --frontier-provider anthropic --frontier-model claude-opus-4-7",
95
+ "error.cap_eco_exhausted.what": "Cap mensile di token del tier eco esaurito (modello piccolo).",
96
+ "error.cap_eco_exhausted.why": "Il tuo piano {plan} permette fino a {cap} token/mese su eco. Hai usato {used}. Reset all'inizio del prossimo mese UTC.",
97
+ "error.cap_eco_exhausted.fix": "Passa a BYOK diretto o aggiorna il piano. BYOK bypassa il cap del 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": "Il tier {tier} non e abilitato sul tuo piano.",
100
+ "error.tier_not_in_plan.why": "Il tuo piano {plan} non include il tier {tier}. Probabilmente sei su free-public o la tua licenza e scaduta.",
101
+ "error.tier_not_in_plan.fix": "Attiva una licenza a pagamento o passa a BYOK diretto (tuo costo, senza cap del worker).",
102
+ "error.tier_not_in_plan.cmd": "yf license activate --key <jwt>",
103
+ "error.response_truncated.what": "La risposta del modello e stata tagliata prima di finire.",
104
+ "error.response_truncated.why": "Limite managed_max_tokens_per_turn = {limit} token raggiunto a meta turno. Il modello ha smesso di generare.",
105
+ "error.response_truncated.fix": "Alza il limite via yf limits. Si applica al prossimo turno senza riavviare la chat.",
106
+ "error.response_truncated.cmd": "yf limits set managed_max_tokens_per_turn 16384",
107
+ "error.response_truncated.banner": "[Risposta troncata da max_tokens={max}. Alza il limite con: yf limits set managed_max_tokens_per_turn {suggested}]",
108
+ "error.modal_trace_stale.what": "Il modal di approvazione e scaduto o e orfano.",
109
+ "error.modal_trace_stale.why": "Il trace_id {trace_id} non ha approval pending nel dispatcher. Probabile race condition tra invoke e stato del panel, o un cancel precedente ha lasciato il trace zombi.",
110
+ "error.modal_trace_stale.fix": "Reinvoca il verb dalla chat: avvia un nuovo trace pulito. Se persiste, esegui yf doctor per controllare il panel.",
111
+ "error.modal_trace_stale.cmd": "yf doctor",
112
+ "error.byok_key_missing.what": "API key mancante per il provider {provider}.",
113
+ "error.byok_key_missing.why": "Hai configurato {provider} come provider del tier {tier} ma lo slot byok_{slot} non e nel Vault crittografato.",
114
+ "error.byok_key_missing.fix": "Configura la key con yf keys set (atomico, mode 0600, mai loggato).",
115
+ "error.byok_key_missing.cmd": "yf keys set {slot}",
116
+ "error.worker_unreachable.what": "Non sono riuscito a raggiungere il worker yujin.app.",
117
+ "error.worker_unreachable.why": "Timeout di rete o worker down (HTTP {status}). Riprovato {attempts} volte.",
118
+ "error.worker_unreachable.fix": "Controlla la tua internet. Se OK, passa temporaneamente a BYOK diretto per evitare la dipendenza dal worker.",
119
+ "error.worker_unreachable.cmd": "yf brain config --frontier-provider anthropic",
120
+ "error.vault_decrypt_failed.what": "Non sono riuscito a decifrare una chiave dal Vault.",
121
+ "error.vault_decrypt_failed.why": "La master key e errata o il file del Vault e corrotto. Puo succedere se hai spostato la config tra macchine senza migrare la master o per disk error.",
122
+ "error.vault_decrypt_failed.fix": "Tira la copia dal server (ricripta con la tua master locale) se hai server backup attivo.",
123
+ "error.vault_decrypt_failed.cmd": "yf keys setup --pull",
124
+ "error.shell_exec_rejected.what": "Hai rifiutato il modal R8 di yujin.shell.exec.",
125
+ "error.shell_exec_rejected.why": "Il comando {command} e stato classificato come {classification}. shell.exec chiede sempre approvazione per sicurezza, anche se il comando e read-only.",
126
+ "error.shell_exec_rejected.fix": "Se il comando era read-only (yf projects active, git status, ls), usa il verb nativo equivalente. Se era necessario e l'hai rifiutato per errore, reinvoca.",
127
+ "error.project_not_registered.what": "Nessun progetto adopter registrato.",
128
+ "error.project_not_registered.why": "Il verb invocato richiede un project root attivo ma ~/.yujin-forge/projects.json non ha voci.",
129
+ "error.project_not_registered.fix": "Creane uno con yujin.project.init o registrane uno esistente con yf projects add.",
130
+ "error.project_not_registered.cmd": "yf projects scan",
131
+ "panel.button.agents": "Agenti",
132
+ "panel.agents.title": "Agenti",
133
+ "panel.agents.subtitle": "Director e sub-agenti registrati in questo progetto",
134
+ "panel.agents.empty.title": "Nessun agente ancora",
135
+ "panel.agents.empty.body": "Esegui `yf agent install --defaults` per registrare il Director e i suoi 4 sub-agenti (Analista, Coder, Tester, Scaffolder).",
136
+ "panel.agents.legend.eco": "Eco",
137
+ "panel.agents.legend.managed": "Managed",
138
+ "panel.agents.legend.frontier": "Frontier",
139
+ "panel.agents.status.disabled": "Runtime degli agenti non avviato",
140
+ "panel.agents.event.running": "In esecuzione",
141
+ "panel.agents.event.idle": "Inattivo",
142
+ "panel.agents.tick.live": "Connesso",
143
+ "panel.agents.tick.lost": "Connessione persa",
144
+ "workflow.phase.i": "Triage e intento",
145
+ "workflow.phase.ii": "Chiarimento (funzionale + 4 NFR + blocchi)",
146
+ "workflow.phase.iii": "Specifiche (RFP + Arch + Design + approvazioni)",
147
+ "workflow.phase.iv": "Bootstrap",
148
+ "workflow.phase.v": "Sviluppo a blocchi",
149
+ "workflow.phase.vi": "Deploy + post-lancio",
150
+ "wizard.title": "Benvenuto in Yujin Forge",
151
+ "wizard.close": "Chiudi",
152
+ "wizard.intro": "Per iniziare, scegli come Forge si connette al tuo modello AI. Puoi cambiare la scelta in seguito da Settings.",
153
+ "wizard.back": "Indietro",
154
+ "wizard.start": "Inizia",
155
+ "wizard.plan.badge": "Consigliato",
156
+ "wizard.plan.title": "Piano Claude",
157
+ "wizard.plan.desc": "Abbonamento mensile Claude. Opzione piu economica per uso continuo. Forge usa la tua sessione claude -p.",
158
+ "wizard.plan.price": "Canone mensile fisso (Piano)",
159
+ "wizard.plan.step.title": "Connetti il tuo Piano Claude",
160
+ "wizard.plan.step.1": "Apri un nuovo terminale.",
161
+ "wizard.plan.step.2": "Esegui il comando claude (senza argomenti) e completa il login nel browser.",
162
+ "wizard.plan.step.3": "Torna qui e clicca Sono loggato per verificare.",
163
+ "wizard.plan.done": "Sono loggato",
164
+ "wizard.byok.title": "Chiave API Console (BYOK)",
165
+ "wizard.byok.desc": "La tua chiave Anthropic Console. Pagamento a uso. Piu flessibile ma costo variabile.",
166
+ "wizard.byok.price": "Pagamento a uso (Console)",
167
+ "wizard.byok.step.title": "Incolla la tua chiave API Anthropic",
168
+ "wizard.byok.step.intro": "La chiave inizia con sk-ant- e si ottiene su console.anthropic.com. Forge la conserva crittografata nel Vault locale; non lascia mai la tua macchina.",
169
+ "wizard.byok.test": "Valida e salva",
170
+ "wizard.skip.title": "Sono gia configurato",
171
+ "wizard.skip.desc": "Salta il wizard. Puoi riaprirlo in seguito da Settings.",
172
+ "wizard.done.kanji": "Fatto",
173
+ "wizard.done.title": "Fatto",
174
+ "wizard.done.msg": "Forge e configurato. Inizia a chattare.",
175
+ "pizarron.button.read": "Leggimi",
176
+ "pizarron.button.copy": "Copia",
177
+ "pizarron.button.edit": "Modifica",
178
+ "pizarron.graph.refresh": "Aggiorna",
179
+ "pizarron.graph.regenerating": "Rigenerando...",
180
+ "pizarron.graph.detail.hint": "Tocca un nodo per il dettaglio.",
181
+ "pizarron.graph.detail.empty": "Nessun dettaglio per questo nodo.",
182
+ "pizarron.graph.detail.weight": "peso",
183
+ "startup.tab.graph": "Grafo visuale",
184
+ "startup.tab.graphSem": "Grafo semantico",
185
+ "startup.tab.pendings": "In sospeso",
186
+ "startup.tab.workflow": "Workflow",
187
+ "settings.startupTabs": "Schede all'avvio (grafo, in sospeso, workflow)",
188
+ "graph.term.nodes": "nodi",
189
+ "graph.term.edges": "archi",
190
+ "coding.read": "Lettura di {x}",
191
+ "coding.read_bare": "Lettura di un file",
192
+ "coding.edit": "Modifica di {x}",
193
+ "coding.edit_bare": "Modifica di un file",
194
+ "coding.write": "Scrittura di {x}",
195
+ "coding.write_bare": "Scrittura di un file",
196
+ "coding.notebook_bare": "Modifica del notebook",
197
+ "coding.bash": "Esecuzione: {x}",
198
+ "coding.bash_bare": "Esecuzione di un comando",
199
+ "coding.grep": "Ricerca \"{x}\"",
200
+ "coding.grep_bare": "Ricerca nel codice",
201
+ "coding.glob": "Elenco di {x}",
202
+ "coding.glob_bare": "Elenco dei file",
203
+ "coding.web_bare": "Lettura del web",
204
+ "coding.websearch": "Ricerca web: {x}",
205
+ "coding.websearch_bare": "Ricerca web",
206
+ "coding.task": "Sub-agente: {x}",
207
+ "coding.task_bare": "Avvio di un sub-agente",
208
+ "coding.todo": "Aggiornamento della sua lista attivita",
209
+ "coding.verb_bare": "Esecuzione di un verbo yujin",
210
+ "panel.button.stop": "Ferma",
211
+ "panel.status.stopping": "Arresto...",
212
+ "panel.status.noActiveTurn": "Non c'era nessun turno in corso.",
213
+ "panel.status.interruptFailed": "Impossibile inviare l'interruzione.",
214
+ "panel.status.turnInterrupted": "Turno interrotto.",
215
+ "panel.label.interrupted": "(interrotto)",
216
+ "panel.queue.label": "In coda",
217
+ "panel.queue.remove": "Rimuovi dalla coda",
218
+ "panel.project.switchHint": "Cambia progetto",
219
+ "panel.project.title": "Progetti",
220
+ "panel.project.add": "Aggiungi progetto...",
221
+ "panel.project.addPrompt": "Percorso assoluto del progetto da aggiungere:",
222
+ "panel.project.switching": "Cambio progetto..."
223
+ }