lovarch-cli 0.2.1__py3-none-any.whl

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 (122) hide show
  1. lovarch_cli/__init__.py +16 -0
  2. lovarch_cli/__main__.py +10 -0
  3. lovarch_cli/ai/__init__.py +21 -0
  4. lovarch_cli/ai/gateway.py +240 -0
  5. lovarch_cli/api.py +111 -0
  6. lovarch_cli/auth/__init__.py +32 -0
  7. lovarch_cli/auth/keyring_store.py +214 -0
  8. lovarch_cli/auth/local_server.py +165 -0
  9. lovarch_cli/auth/pkce.py +57 -0
  10. lovarch_cli/auth/session.py +189 -0
  11. lovarch_cli/cli.py +262 -0
  12. lovarch_cli/clients/__init__.py +33 -0
  13. lovarch_cli/clients/factory.py +54 -0
  14. lovarch_cli/clients/local_client.py +432 -0
  15. lovarch_cli/clients/lovarch_storage.py +174 -0
  16. lovarch_cli/clients/lovarch_supabase.py +295 -0
  17. lovarch_cli/clients/persistence.py +166 -0
  18. lovarch_cli/clients/storage.py +66 -0
  19. lovarch_cli/commands/__init__.py +10 -0
  20. lovarch_cli/commands/account.py +172 -0
  21. lovarch_cli/commands/audit.py +394 -0
  22. lovarch_cli/commands/config_cmd.py +80 -0
  23. lovarch_cli/commands/consolidate.py +217 -0
  24. lovarch_cli/commands/context_cmd.py +73 -0
  25. lovarch_cli/commands/dev.py +287 -0
  26. lovarch_cli/commands/do_cmd.py +120 -0
  27. lovarch_cli/commands/init.py +218 -0
  28. lovarch_cli/commands/jobs_cmd.py +95 -0
  29. lovarch_cli/commands/login.py +202 -0
  30. lovarch_cli/commands/mcp_cmd.py +26 -0
  31. lovarch_cli/commands/run.py +375 -0
  32. lovarch_cli/commands/signup.py +185 -0
  33. lovarch_cli/commands/status.py +243 -0
  34. lovarch_cli/commands/upgrade.py +108 -0
  35. lovarch_cli/commands/verifica_cmd.py +174 -0
  36. lovarch_cli/config.py +101 -0
  37. lovarch_cli/config_store.py +111 -0
  38. lovarch_cli/credits/__init__.py +35 -0
  39. lovarch_cli/credits/base.py +84 -0
  40. lovarch_cli/credits/factory.py +36 -0
  41. lovarch_cli/credits/local.py +34 -0
  42. lovarch_cli/credits/lovarch.py +56 -0
  43. lovarch_cli/i18n/__init__.py +27 -0
  44. lovarch_cli/i18n/loader.py +121 -0
  45. lovarch_cli/i18n/translations/en.json +168 -0
  46. lovarch_cli/i18n/translations/es.json +168 -0
  47. lovarch_cli/i18n/translations/it.json +168 -0
  48. lovarch_cli/i18n/translations/pt.json +168 -0
  49. lovarch_cli/mcp/__init__.py +9 -0
  50. lovarch_cli/mcp/server.py +199 -0
  51. lovarch_cli/mcp/tools.py +372 -0
  52. lovarch_cli/sample_downloader.py +255 -0
  53. lovarch_cli/squad/README.md +206 -0
  54. lovarch_cli/squad/agents/auditor-input.md +353 -0
  55. lovarch_cli/squad/agents/bim-engineer.md +404 -0
  56. lovarch_cli/squad/agents/briefing-architect.md +249 -0
  57. lovarch_cli/squad/agents/cad-engineer.md +278 -0
  58. lovarch_cli/squad/agents/capitolato-writer.md +256 -0
  59. lovarch_cli/squad/agents/computo-engineer.md +258 -0
  60. lovarch_cli/squad/agents/concept-designer.md +399 -0
  61. lovarch_cli/squad/agents/contratto-architect.md +243 -0
  62. lovarch_cli/squad/agents/deliverable-builder.md +253 -0
  63. lovarch_cli/squad/agents/energy-prelim.md +388 -0
  64. lovarch_cli/squad/agents/pratiche-it.md +251 -0
  65. lovarch_cli/squad/agents/progetto-chief.md +768 -0
  66. lovarch_cli/squad/agents/quality-dati.md +409 -0
  67. lovarch_cli/squad/agents/quality-misure.md +418 -0
  68. lovarch_cli/squad/agents/quality-normativa.md +417 -0
  69. lovarch_cli/squad/agents/quality-output.md +436 -0
  70. lovarch_cli/squad/agents/regolatorio-it.md +278 -0
  71. lovarch_cli/squad/checklists/handoff-quality-gate.md +232 -0
  72. lovarch_cli/squad/checklists/quality-dati-checklist.md +134 -0
  73. lovarch_cli/squad/checklists/quality-misure-checklist.md +139 -0
  74. lovarch_cli/squad/checklists/quality-normativa-checklist.md +121 -0
  75. lovarch_cli/squad/checklists/quality-output-checklist.md +116 -0
  76. lovarch_cli/squad/config.yaml +408 -0
  77. lovarch_cli/squad/data/CHANGELOG.md +272 -0
  78. lovarch_cli/squad/data/agents-prd.md +428 -0
  79. lovarch_cli/squad/data/architettura-progetto-rules.md +328 -0
  80. lovarch_cli/squad/data/handoff-card-template.md +231 -0
  81. lovarch_cli/squad/data/mocks/catasto-visura.json +72 -0
  82. lovarch_cli/squad/data/mocks/firma-envelope.json +43 -0
  83. lovarch_cli/squad/data/prezzario-lombardia-sample.json +312 -0
  84. lovarch_cli/squad/scripts/api_clients.py +206 -0
  85. lovarch_cli/squad/scripts/architect_profile.py +276 -0
  86. lovarch_cli/squad/scripts/deliverable_generators.py +844 -0
  87. lovarch_cli/squad/scripts/generate_attico_brera_dwg.py +369 -0
  88. lovarch_cli/squad/scripts/generate_chianti_dxf.py +368 -0
  89. lovarch_cli/squad/scripts/generate_chianti_images.py +223 -0
  90. lovarch_cli/squad/scripts/generate_real_sample_images.py +189 -0
  91. lovarch_cli/squad/scripts/generate_sample_assets.py +382 -0
  92. lovarch_cli/squad/scripts/lovarch_client.py +1046 -0
  93. lovarch_cli/squad/scripts/pipeline_runner.py +2095 -0
  94. lovarch_cli/squad/scripts/render_dxf_to_png.py +57 -0
  95. lovarch_cli/squad/scripts/run_palestra_demo.sh +277 -0
  96. lovarch_cli/squad/scripts/simulate_squad_execution.py +515 -0
  97. lovarch_cli/squad/scripts/validate-squad.py +383 -0
  98. lovarch_cli/squad/tasks/audit-input.md +146 -0
  99. lovarch_cli/squad/tasks/compute-metric.md +105 -0
  100. lovarch_cli/squad/tasks/consolidate-dossier.md +187 -0
  101. lovarch_cli/squad/tasks/generate-cad-plan.md +120 -0
  102. lovarch_cli/squad/tasks/generate-ifc-model.md +108 -0
  103. lovarch_cli/squad/tasks/write-capitolato.md +100 -0
  104. lovarch_cli/squad/templates/asseverazione-tecnica.md +126 -0
  105. lovarch_cli/squad/templates/capitolato-uni-11337.md +235 -0
  106. lovarch_cli/squad/templates/cila-comune-milano.md +177 -0
  107. lovarch_cli/squad/templates/contratto-cnappc.md +220 -0
  108. lovarch_cli/squad/workflows/dal-brief-al-cantiere.yaml +218 -0
  109. lovarch_cli/squad_loader.py +114 -0
  110. lovarch_cli/verify/__init__.py +15 -0
  111. lovarch_cli/verify/contratto.py +110 -0
  112. lovarch_cli/verify/dossier.py +97 -0
  113. lovarch_cli/verify/misure.py +83 -0
  114. lovarch_cli/verify/normativa.py +178 -0
  115. lovarch_cli/version.py +13 -0
  116. lovarch_cli/workflows/__init__.py +9 -0
  117. lovarch_cli/workflows/platform.py +212 -0
  118. lovarch_cli-0.2.1.dist-info/METADATA +232 -0
  119. lovarch_cli-0.2.1.dist-info/RECORD +122 -0
  120. lovarch_cli-0.2.1.dist-info/WHEEL +4 -0
  121. lovarch_cli-0.2.1.dist-info/entry_points.txt +3 -0
  122. lovarch_cli-0.2.1.dist-info/licenses/LICENSE +38 -0
@@ -0,0 +1,168 @@
1
+ {
2
+ "signup": {
3
+ "welcome_title": "Welcome to lovarch-cli",
4
+ "welcome_body": "FREE Mode — registration required.\n\nWe'll ask for name, email, phone, and country. We'll use this information only to:\n • Confirm your identity\n • Send lovarch-cli updates (opt-out anytime)\n • Enable future Premium upgrade with the same account\n\nYour data is GDPR-protected. You can delete it with [bold]lovarch account delete[/bold] anytime.",
5
+ "prompt_language": "Preferred language",
6
+ "prompt_full_name": "Full name",
7
+ "prompt_email": "Email",
8
+ "prompt_phone": "Phone (international format, e.g. +1 415 555 2671)",
9
+ "prompt_country": "Country code ISO 3166 (e.g. US, IT, BR, ES)",
10
+ "prompt_consent": "Do you accept the Terms of Service and Privacy Policy (GDPR)?",
11
+ "tos_url_label": "TOS:",
12
+ "consent_required": "GDPR consent is required. Signup cancelled.",
13
+ "name_too_short": "Min 3 characters",
14
+ "invalid_email": "Invalid email.",
15
+ "invalid_phone": "Phone must be in international format (e.g. +14155552671).",
16
+ "invalid_country": "Country code must be 2 letters (ISO 3166 alpha-2).",
17
+ "submitting": "Submitting...",
18
+ "next_steps": "[bold green]✓ Signup complete[/bold green]\n\nNext steps:\n 1. [cyan]lovarch init <project>[/cyan] — create a new project\n 2. [cyan]lovarch audit <project>[/cyan] — verify inputs\n 3. [cyan]lovarch run dal-brief-al-cantiere[/cyan] — run workflow\n\nUpgrade to Premium (credits included): [link]https://lovarch.com/cli-upgrade[/link]"
19
+ },
20
+ "account": {
21
+ "no_account": "No account configured. Run 'lovarch signup' or 'lovarch login'.",
22
+ "delete_warning_title": "⚠️ ACCOUNT DELETION — IRREVERSIBLE",
23
+ "delete_warning_body": "You are about to delete your lovarch-cli account (FREE mode).\n\nWhat happens:\n • Your personal data (name, email, phone) will be pseudonymized (GDPR Art. 17)\n • Your token will be revoked — you won't be able to use lovarch-cli with this account\n • The shadow account in Lovarch will be deleted\n • [bold]Optionally[/bold] we delete local projects in ~/.lovarch/projects/\n\n[red]This action CANNOT be undone.[/red]",
24
+ "confirm_delete_remote": "Confirm remote account deletion?",
25
+ "confirm_delete_local": "Also delete local projects in ~/.lovarch/projects/?",
26
+ "deletion_aborted": "Deletion aborted. No data changed.",
27
+ "deletion_success": "✓ Account deleted. Thanks for trying lovarch-cli.",
28
+ "info_title": "Current account",
29
+ "premium_delete_redirect": "Premium account deletion is handled in the Lovarch web app:\n https://lovarch.com/settings/account/delete"
30
+ },
31
+ "login": {
32
+ "choose_mode_prompt": "Choose mode",
33
+ "free_redirect": "For Free mode, run [bold cyan]lovarch signup[/bold cyan].",
34
+ "opening_browser": "Opening browser for Lovlovarch login...",
35
+ "manual_url_hint": "If the browser doesn't open, copy this URL:",
36
+ "waiting_callback": "Waiting for authorization (5 min timeout)...",
37
+ "callback_timeout": "Timeout: no response from browser in 5 minutes.",
38
+ "state_mismatch": "Security error: state mismatch (possible CSRF). Try again.",
39
+ "auth_denied": "Authorization denied by user.",
40
+ "login_success": "✓ Premium login complete",
41
+ "modes_mutex": "--free and --premium are mutually exclusive."
42
+ },
43
+ "info": {
44
+ "title": "Status",
45
+ "mode_not_configured": "not configured — run 'lovarch login' to begin",
46
+ "powered_by": "🌐 Powered by Lovarch — https://lovarch.com",
47
+ "course_promo": "🎓 Advanced AI Course for Architects — https://lovarch.com/corso"
48
+ },
49
+ "errors": {
50
+ "network": "Network error calling {function_name}: {exc}",
51
+ "invalid_json": "Invalid JSON from {function_name} (HTTP {status_code}): {snippet}",
52
+ "unknown_api_error": "API error: {error_code}",
53
+ "credits_insufficient": "Insufficient credits: you have {remaining}, need {required} (deficit: {deficit}). Top up at https://lovarch.com/credits.",
54
+ "credits_check_failed": "Credits check failed: {message}"
55
+ },
56
+ "upgrade": {
57
+ "title": "🚀 Upgrade to Premium",
58
+ "already_premium_title": "✓ Premium account active",
59
+ "body_free": "Upgrade to Premium to unlock:\n • Included AI credits (from 50,000 cr/month)\n • Cloud storage synced across devices\n • Team collaboration\n • Priority support",
60
+ "already_premium": "You're already Premium ✨ To manage credits, billing and team open the dashboard:",
61
+ "no_account_hint": "No account configured. Run [bold cyan]lovarch signup[/bold cyan] or [bold cyan]lovarch login --premium[/bold cyan] before [bold]lovarch upgrade[/bold]."
62
+ },
63
+ "run": {
64
+ "title": "Starting squad pipeline",
65
+ "summary_title": "Run verdict",
66
+ "no_project": "Project '{name}' not found. Run [bold cyan]lovarch init {name}[/bold cyan] first.",
67
+ "no_input": "Input folder not found: {path}",
68
+ "no_audit": "Run [bold cyan]lovarch audit {name}[/bold cyan] before running, or use [cyan]--skip-audit[/cyan] (risky).",
69
+ "audit_failed": "✗ Audit of '{name}' failed. Fix the critical checks and re-run [bold cyan]lovarch audit {name}[/bold cyan].",
70
+ "no_runner": "pipeline_runner not found at {path}. Reinstall with [cyan]pip install -e .[/cyan].",
71
+ "starting": "Running workflow [bold]{workflow}[/bold] on project [bold]{project}[/bold].",
72
+ "mode_label": "Mode: [bold]{mode}[/bold]",
73
+ "mode_free": "Free (dry-run · simulation, no real API calls)",
74
+ "mode_premium": "Premium (real run · debits Lovarch credits)",
75
+ "dry_run_note": "[dim]Real runs available after [cyan]lovarch login --premium[/cyan].[/dim]",
76
+ "completed": "[green]✓[/green] Pipeline completed for [bold]{project}[/bold].",
77
+ "failed": "[red]✗[/red] Pipeline failed for [bold]{project}[/bold]. See log above.",
78
+ "qa_rejected": "[yellow]⚠[/yellow] Quality control (Tier 2) rejected the dossier for [bold]{project}[/bold]. The deliverables were produced but are NOT validated for professional use. See the QA report and the log above; check your project inputs and run again. Support: info@lovarch.com",
79
+ "next_steps": "Next steps:\n 1. [cyan]lovarch status[/cyan] — inspect the execution\n 2. [cyan]lovarch consolidate {project}[/cyan] — generate DOSSIER.zip",
80
+ "subprocess_failed": "✗ Subprocess launch failed: {message}",
81
+ "interrupted": "User interrupt · pipeline aborted."
82
+ },
83
+ "consolidate": {
84
+ "title": "DOSSIER ready",
85
+ "no_project": "Project '{name}' not found. Run [bold cyan]lovarch init {name}[/bold cyan] first.",
86
+ "no_output": "Output folder not found: {path}",
87
+ "empty_output": "Output of '{name}' is empty. Run [bold cyan]lovarch run {name}[/bold cyan] first.",
88
+ "zipping": "Compressing {count} files into DOSSIER.zip…",
89
+ "created": "[green]✓[/green] DOSSIER created: [bold]{path}[/bold]\n [dim]{size_kb} KB · {count} files[/dim]",
90
+ "next_steps": "Next steps:\n 1. Open the file and inspect the layout\n 2. Share the DOSSIER with client / contractor",
91
+ "write_failed": "✗ ZIP write failed: {message}",
92
+ "zip_readme": "# DOSSIER {project} — {date}\n\nGenerated by lovarch-cli — {count} files bundled.\n\nLayout:\n- 00-validation/ Audit and input validation\n- 01-bootstrap/ Project metadata\n- 02-concept/ Moodboard and renders\n- 03-tier1/ Tier 1 agents output (CAD/IFC/PDF/XLSX)\n- 04-tier2/ QA reports\n- 05-dossier/ Briefing-architect, regulatory, energy\n- 99-other/ Files without assigned routing\n"
93
+ },
94
+ "status": {
95
+ "list_title": "lovarch projects",
96
+ "detail_title": "Project status · {name}",
97
+ "no_projects": "No projects yet. Run [bold cyan]lovarch init <name>[/bold cyan] to start.",
98
+ "no_projects_hint": "Hint: [cyan]lovarch init villa-test --sample[/cyan] to begin with the villa-chianti sample.",
99
+ "project_not_found": "Project '{name}' not found.",
100
+ "col_project": "Project",
101
+ "col_workflow": "Workflow",
102
+ "col_audit": "Audit",
103
+ "col_dossier": "Dossier",
104
+ "col_age": "Updated",
105
+ "label_workflow": "Workflow",
106
+ "label_created": "Created",
107
+ "label_sample": "Sample",
108
+ "section_audit": "Audit",
109
+ "section_dossier": "Dossier",
110
+ "section_output": "Output",
111
+ "no_audit_yet": "not run yet · use [cyan]lovarch audit {name}[/cyan]",
112
+ "no_dossier_yet": "not generated · use [cyan]lovarch consolidate {name}[/cyan]"
113
+ },
114
+ "audit": {
115
+ "no_project": "Project '{name}' not found. Run [bold cyan]lovarch init {name}[/bold cyan] first.",
116
+ "no_input": "Input folder not found: {path}",
117
+ "checklist_title": "Input audit · 18 checks",
118
+ "summary_title": "Audit verdict",
119
+ "col_check": "Check",
120
+ "col_status": "Status",
121
+ "col_detail": "Detail",
122
+ "summary_pass": "All 18 checks passed for '{name}'. Ready to run.",
123
+ "summary_concerns": "Audit of '{name}' completed with concerns (critical checks OK).",
124
+ "summary_fail": "Audit of '{name}' FAILED — fix critical checks before running.",
125
+ "next_steps_pass": "Next: [cyan]lovarch run dal-brief-al-cantiere --project {name}[/cyan]",
126
+ "next_steps_fail": "Fix the missing inputs and re-run: [cyan]lovarch audit {name}[/cyan]",
127
+ "checks": {
128
+ "briefing_present": "briefing-cliente.md present",
129
+ "briefing_cliente": "Briefing mentions the client",
130
+ "briefing_programma": "Briefing defines the program",
131
+ "dxf_present": "stato-attuale.dxf valid (≥5KB)",
132
+ "preview_png": "stato-attuale.png present",
133
+ "visura_present": "visura-catastale.pdf present",
134
+ "architetto_json": "architetto-info.json (name, ordine, CF)",
135
+ "foto_dir": "Current-state photos (≥4)",
136
+ "pinterest_dir": "Pinterest references (≥4)",
137
+ "briefing_budget": "Briefing states budget",
138
+ "briefing_tempi": "Briefing states timeline",
139
+ "briefing_vincoli": "Briefing states constraints",
140
+ "briefing_stile": "Briefing states style",
141
+ "briefing_spazi": "Briefing describes spaces",
142
+ "briefing_famiglia": "Briefing mentions family",
143
+ "briefing_abitudini": "Briefing covers habits",
144
+ "briefing_materiali": "Briefing names materials",
145
+ "briefing_sostenibilita": "Briefing addresses sustainability"
146
+ }
147
+ },
148
+ "init": {
149
+ "title": "Project '{name}' initialized",
150
+ "invalid_name": "✗ Invalid name: '{name}'. Use lowercase letters, digits, and hyphens (2-63 chars).",
151
+ "already_exists": "Project '{name}' already exists at [bold]{path}[/bold]. Use [bold cyan]--force[/bold cyan] to overwrite.",
152
+ "created": "[green]✓[/green] Folder created at [bold]{path}[/bold]",
153
+ "sample_copied": "[green]✓[/green] villa-chianti sample copied ([bold]{count}[/bold] input files)",
154
+ "no_sample": "Sample-input not found at {path}",
155
+ "sample_hint": "Retry with internet access or manually download [bold]sample-villa-chianti.zip[/bold] from [cyan]https://github.com/ArchPrime-official/lovarch-cli/releases/latest[/cyan] and unzip into the project's input folder.",
156
+ "sample_origin_cache": "↳ source: local cache (~/.lovarch/cache/sample-villa-chianti/)",
157
+ "sample_origin_download": "↳ source: downloaded from GitHub Releases + cached locally",
158
+ "downloading": "Downloading {asset}",
159
+ "fetching_sample": "Fetching sample from {url}",
160
+ "download_failed": "Download failed from {url}: {error}",
161
+ "checksum_failed": "SHA256 mismatch — expected {expected}, got {actual}. File corrupted or release tampered.",
162
+ "extract_failed": "Failed to extract archive: {error}",
163
+ "unexpected_zip_layout": "Unexpected zip layout — '{expected}/' folder not found at root.",
164
+ "zip_unsafe": "Unsafe zip entry (path traversal): {entry}",
165
+ "no_sample_offline": "Sample-input not available offline and downloads are disabled.",
166
+ "next_steps": "Next steps:\n 1. [cyan]lovarch audit {name}[/cyan] — verify the 18 inputs\n 2. [cyan]lovarch run dal-brief-al-cantiere[/cyan] — run the workflow"
167
+ }
168
+ }
@@ -0,0 +1,168 @@
1
+ {
2
+ "signup": {
3
+ "welcome_title": "Bienvenido a lovarch-cli",
4
+ "welcome_body": "Modo FREE — registro obligatorio.\n\nPediremos nombre, email, teléfono y país. Usaremos esta información solo para:\n • Confirmar tu identidad\n • Enviar actualizaciones sobre lovarch-cli (opt-out cuando quieras)\n • Permitir upgrade futuro a Premium con la misma cuenta\n\nTus datos están protegidos por GDPR. Puedes eliminarlos con [bold]lovarch account delete[/bold] cuando quieras.",
5
+ "prompt_language": "Idioma preferido",
6
+ "prompt_full_name": "Nombre completo",
7
+ "prompt_email": "Email",
8
+ "prompt_phone": "Teléfono (formato internacional, ej. +34 612 345 678)",
9
+ "prompt_country": "Código país ISO 3166 (ej. ES, IT, US, BR)",
10
+ "prompt_consent": "¿Aceptas los Términos de Servicio y Política de Privacidad (GDPR)?",
11
+ "tos_url_label": "TOS:",
12
+ "consent_required": "Consentimiento GDPR es obligatorio. Registro cancelado.",
13
+ "name_too_short": "Mínimo 3 caracteres",
14
+ "invalid_email": "Email no válido.",
15
+ "invalid_phone": "Teléfono debe estar en formato internacional (ej. +34612345678).",
16
+ "invalid_country": "Código país debe ser 2 letras (ISO 3166 alpha-2).",
17
+ "submitting": "Enviando...",
18
+ "next_steps": "[bold green]✓ Registro completado[/bold green]\n\nPróximos pasos:\n 1. [cyan]lovarch init <proyecto>[/cyan] — crea un nuevo proyecto\n 2. [cyan]lovarch audit <proyecto>[/cyan] — verifica inputs\n 3. [cyan]lovarch run dal-brief-al-cantiere[/cyan] — ejecuta workflow\n\nUpgrade a Premium (créditos incluidos): [link]https://lovarch.com/cli-upgrade[/link]"
19
+ },
20
+ "account": {
21
+ "no_account": "Sin cuenta configurada. Ejecuta 'lovarch signup' o 'lovarch login'.",
22
+ "delete_warning_title": "⚠️ ELIMINACIÓN DE CUENTA — IRREVERSIBLE",
23
+ "delete_warning_body": "Estás a punto de eliminar tu cuenta lovarch-cli (modo FREE).\n\nQué sucede:\n • Tus datos personales (nombre, email, teléfono) serán pseudonimizados (GDPR Art. 17)\n • El token será revocado — no podrás usar lovarch-cli con esta cuenta\n • La cuenta sombra en Lovarch será eliminada\n • [bold]Opcionalmente[/bold] eliminamos proyectos locales en ~/.lovarch/projects/\n\n[red]Esta acción NO se puede deshacer.[/red]",
24
+ "confirm_delete_remote": "¿Confirmas la eliminación de la cuenta remota?",
25
+ "confirm_delete_local": "¿Eliminar también los proyectos locales en ~/.lovarch/projects/?",
26
+ "deletion_aborted": "Eliminación cancelada. Ningún dato modificado.",
27
+ "deletion_success": "✓ Cuenta eliminada. Gracias por probar lovarch-cli.",
28
+ "info_title": "Cuenta actual",
29
+ "premium_delete_redirect": "La eliminación de cuenta Premium se realiza en la app web Lovarch:\n https://lovarch.com/settings/account/delete"
30
+ },
31
+ "login": {
32
+ "choose_mode_prompt": "Elige modalidad",
33
+ "free_redirect": "Para el modo Free, ejecuta [bold cyan]lovarch signup[/bold cyan].",
34
+ "opening_browser": "Abriendo navegador para login Lovarch...",
35
+ "manual_url_hint": "Si el navegador no abre, copia esta URL:",
36
+ "waiting_callback": "Esperando autorización (timeout 5 min)...",
37
+ "callback_timeout": "Timeout: ninguna respuesta del navegador en 5 minutos.",
38
+ "state_mismatch": "Error de seguridad: state no coincide (posible CSRF). Intenta de nuevo.",
39
+ "auth_denied": "Autorización denegada por el usuario.",
40
+ "login_success": "✓ Login Premium completado",
41
+ "modes_mutex": "Las opciones --free y --premium son mutuamente exclusivas."
42
+ },
43
+ "info": {
44
+ "title": "Estado",
45
+ "mode_not_configured": "no configurado — ejecuta 'lovarch login' para comenzar",
46
+ "powered_by": "🌐 Powered by Lovarch — https://lovarch.com",
47
+ "course_promo": "🎓 Curso IA Avanzado para Arquitectos — https://lovarch.com/corso"
48
+ },
49
+ "errors": {
50
+ "network": "Error de red llamando {function_name}: {exc}",
51
+ "invalid_json": "JSON inválido de {function_name} (HTTP {status_code}): {snippet}",
52
+ "unknown_api_error": "Error API: {error_code}",
53
+ "credits_insufficient": "Créditos insuficientes: tienes {remaining}, necesitas {required} (faltan {deficit}). Recarga en https://lovarch.com/credits.",
54
+ "credits_check_failed": "Verificación de créditos falló: {message}"
55
+ },
56
+ "upgrade": {
57
+ "title": "🚀 Upgrade a Premium",
58
+ "already_premium_title": "✓ Cuenta Premium activa",
59
+ "body_free": "Actualiza a Premium para desbloquear:\n • Créditos AI incluidos (desde 50.000 cr/mes)\n • Almacenamiento cloud sincronizado entre dispositivos\n • Colaboración en equipo\n • Soporte prioritario",
60
+ "already_premium": "Ya eres Premium ✨ Para gestionar créditos, facturación y equipo abre el dashboard:",
61
+ "no_account_hint": "Sin cuenta configurada. Ejecuta [bold cyan]lovarch signup[/bold cyan] o [bold cyan]lovarch login --premium[/bold cyan] antes de [bold]lovarch upgrade[/bold]."
62
+ },
63
+ "run": {
64
+ "title": "Iniciando pipeline del squad",
65
+ "summary_title": "Resultado de ejecución",
66
+ "no_project": "Proyecto '{name}' no encontrado. Ejecuta [bold cyan]lovarch init {name}[/bold cyan] primero.",
67
+ "no_input": "Carpeta input no encontrada: {path}",
68
+ "no_audit": "Ejecuta [bold cyan]lovarch audit {name}[/bold cyan] antes del run, o usa [cyan]--skip-audit[/cyan] (arriesgado).",
69
+ "audit_failed": "✗ Auditoría de '{name}' falló. Corrige los críticos y vuelve a ejecutar [bold cyan]lovarch audit {name}[/bold cyan].",
70
+ "no_runner": "pipeline_runner no encontrado en {path}. Reinstala con [cyan]pip install -e .[/cyan].",
71
+ "starting": "Ejecutando workflow [bold]{workflow}[/bold] en el proyecto [bold]{project}[/bold].",
72
+ "mode_label": "Modo: [bold]{mode}[/bold]",
73
+ "mode_free": "Free (dry-run · simulación, sin llamadas API reales)",
74
+ "mode_premium": "Premium (run real · debita créditos Lovarch)",
75
+ "dry_run_note": "[dim]Runs reales disponibles tras [cyan]lovarch login --premium[/cyan].[/dim]",
76
+ "completed": "[green]✓[/green] Pipeline completado para [bold]{project}[/bold].",
77
+ "failed": "[red]✗[/red] Pipeline falló para [bold]{project}[/bold]. Ver log arriba.",
78
+ "qa_rejected": "[yellow]⚠[/yellow] El control de calidad (Tier 2) rechazó el dossier de [bold]{project}[/bold]. Los entregables se generaron pero NO están validados para uso profesional. Consulta el informe de QA y el log de arriba; revisa los archivos de entrada del proyecto y vuelve a ejecutar. Soporte: info@lovarch.com",
79
+ "next_steps": "Próximos pasos:\n 1. [cyan]lovarch status[/cyan] — inspecciona la ejecución\n 2. [cyan]lovarch consolidate {project}[/cyan] — genera DOSSIER.zip",
80
+ "subprocess_failed": "✗ Lanzamiento de subprocess falló: {message}",
81
+ "interrupted": "Interrupción del usuario · pipeline cancelado."
82
+ },
83
+ "consolidate": {
84
+ "title": "DOSSIER listo",
85
+ "no_project": "Proyecto '{name}' no encontrado. Ejecuta [bold cyan]lovarch init {name}[/bold cyan] primero.",
86
+ "no_output": "Carpeta output no encontrada: {path}",
87
+ "empty_output": "Output de '{name}' está vacío. Ejecuta [bold cyan]lovarch run {name}[/bold cyan] primero.",
88
+ "zipping": "Comprimiendo {count} archivos en DOSSIER.zip…",
89
+ "created": "[green]✓[/green] DOSSIER creado: [bold]{path}[/bold]\n [dim]{size_kb} KB · {count} archivos[/dim]",
90
+ "next_steps": "Próximos pasos:\n 1. Abre el archivo e inspecciona la estructura\n 2. Comparte el DOSSIER con el cliente / contratista",
91
+ "write_failed": "✗ Error al escribir ZIP: {message}",
92
+ "zip_readme": "# DOSSIER {project} — {date}\n\nGenerado por lovarch-cli — {count} archivos incluidos.\n\nEstructura:\n- 00-validation/ Auditoría y validación de input\n- 01-bootstrap/ Metadata del proyecto\n- 02-concept/ Moodboard y renders\n- 03-tier1/ Salidas de Tier 1 agents (CAD/IFC/PDF/XLSX)\n- 04-tier2/ Reportes QA\n- 05-dossier/ Briefing arquitecto, regulatorio, energía\n- 99-other/ Archivos sin routing asignado\n"
93
+ },
94
+ "status": {
95
+ "list_title": "Proyectos lovarch",
96
+ "detail_title": "Estado del proyecto · {name}",
97
+ "no_projects": "Sin proyectos. Ejecuta [bold cyan]lovarch init <nombre>[/bold cyan] para empezar.",
98
+ "no_projects_hint": "Sugerencia: [cyan]lovarch init villa-test --sample[/cyan] para comenzar con el sample villa-chianti.",
99
+ "project_not_found": "Proyecto '{name}' no encontrado.",
100
+ "col_project": "Proyecto",
101
+ "col_workflow": "Workflow",
102
+ "col_audit": "Auditoría",
103
+ "col_dossier": "Dossier",
104
+ "col_age": "Actualizado",
105
+ "label_workflow": "Workflow",
106
+ "label_created": "Creado",
107
+ "label_sample": "Sample",
108
+ "section_audit": "Auditoría",
109
+ "section_dossier": "Dossier",
110
+ "section_output": "Output",
111
+ "no_audit_yet": "no ejecutada · usa [cyan]lovarch audit {name}[/cyan]",
112
+ "no_dossier_yet": "no generado · usa [cyan]lovarch consolidate {name}[/cyan]"
113
+ },
114
+ "audit": {
115
+ "no_project": "Proyecto '{name}' no encontrado. Ejecuta [bold cyan]lovarch init {name}[/bold cyan] primero.",
116
+ "no_input": "Carpeta input no encontrada: {path}",
117
+ "checklist_title": "Auditoría de inputs · 18 controles",
118
+ "summary_title": "Resultado de auditoría",
119
+ "col_check": "Control",
120
+ "col_status": "Estado",
121
+ "col_detail": "Detalle",
122
+ "summary_pass": "Los 18 controles pasaron para '{name}'. Listo para ejecutar.",
123
+ "summary_concerns": "Auditoría de '{name}' completada con avisos (los críticos están OK).",
124
+ "summary_fail": "Auditoría de '{name}' FALLÓ — corrige los críticos antes de ejecutar.",
125
+ "next_steps_pass": "Siguiente: [cyan]lovarch run dal-brief-al-cantiere --project {name}[/cyan]",
126
+ "next_steps_fail": "Corrige los inputs faltantes y vuelve a ejecutar: [cyan]lovarch audit {name}[/cyan]",
127
+ "checks": {
128
+ "briefing_present": "briefing-cliente.md presente",
129
+ "briefing_cliente": "Briefing menciona al cliente",
130
+ "briefing_programma": "Briefing define el programa",
131
+ "dxf_present": "stato-attuale.dxf válido (≥5KB)",
132
+ "preview_png": "stato-attuale.png presente",
133
+ "visura_present": "visura-catastale.pdf presente",
134
+ "architetto_json": "architetto-info.json (nombre, orden, CF)",
135
+ "foto_dir": "Fotos del estado actual (≥4)",
136
+ "pinterest_dir": "Referencias Pinterest (≥4)",
137
+ "briefing_budget": "Briefing indica presupuesto",
138
+ "briefing_tempi": "Briefing indica plazos",
139
+ "briefing_vincoli": "Briefing indica vínculos",
140
+ "briefing_stile": "Briefing indica estilo",
141
+ "briefing_spazi": "Briefing describe espacios",
142
+ "briefing_famiglia": "Briefing menciona familia",
143
+ "briefing_abitudini": "Briefing cubre hábitos",
144
+ "briefing_materiali": "Briefing menciona materiales",
145
+ "briefing_sostenibilita": "Briefing trata sostenibilidad"
146
+ }
147
+ },
148
+ "init": {
149
+ "title": "Proyecto '{name}' inicializado",
150
+ "invalid_name": "✗ Nombre no válido: '{name}'. Usa letras minúsculas, dígitos y guiones (2-63 caracteres).",
151
+ "already_exists": "El proyecto '{name}' ya existe en [bold]{path}[/bold]. Usa [bold cyan]--force[/bold cyan] para sobrescribir.",
152
+ "created": "[green]✓[/green] Carpeta creada en [bold]{path}[/bold]",
153
+ "sample_copied": "[green]✓[/green] Sample villa-chianti copiado ([bold]{count}[/bold] archivos de input)",
154
+ "no_sample": "Sample-input no encontrado en {path}",
155
+ "sample_hint": "Vuelve a intentar con conexión a internet o descarga manualmente [bold]sample-villa-chianti.zip[/bold] desde [cyan]https://github.com/ArchPrime-official/lovarch-cli/releases/latest[/cyan] y descomprímelo en la carpeta de input del proyecto.",
156
+ "sample_origin_cache": "↳ origen: caché local (~/.lovarch/cache/sample-villa-chianti/)",
157
+ "sample_origin_download": "↳ origen: descargado desde GitHub Releases + almacenado en caché",
158
+ "downloading": "Descargando {asset}",
159
+ "fetching_sample": "Descargando sample desde {url}",
160
+ "download_failed": "Descarga fallida desde {url}: {error}",
161
+ "checksum_failed": "SHA256 no coincide — esperado {expected}, recibido {actual}. Archivo corrupto o release alterada.",
162
+ "extract_failed": "Fallo al extraer el archivo: {error}",
163
+ "unexpected_zip_layout": "Layout zip inesperado — carpeta '{expected}/' no encontrada en la raíz.",
164
+ "zip_unsafe": "Entrada zip insegura (path traversal): {entry}",
165
+ "no_sample_offline": "Sample-input no disponible sin conexión y descargas deshabilitadas.",
166
+ "next_steps": "Próximos pasos:\n 1. [cyan]lovarch audit {name}[/cyan] — verifica los 18 inputs\n 2. [cyan]lovarch run dal-brief-al-cantiere[/cyan] — ejecuta el workflow"
167
+ }
168
+ }
@@ -0,0 +1,168 @@
1
+ {
2
+ "signup": {
3
+ "welcome_title": "Benvenuto in lovarch-cli",
4
+ "welcome_body": "Modalità FREE — registrazione richiesta.\n\nTi chiederemo nome, email, telefono e paese. Useremo queste informazioni solo per:\n • Confermare la tua identità\n • Inviarti aggiornamenti su lovarch-cli (opt-out in qualsiasi momento)\n • Permetterti l'upgrade futuro a Premium con stesso account\n\nI tuoi dati sono protetti dal GDPR. Puoi cancellarli con [bold]lovarch account delete[/bold] in ogni momento.",
5
+ "prompt_language": "Lingua preferita",
6
+ "prompt_full_name": "Nome completo",
7
+ "prompt_email": "Email",
8
+ "prompt_phone": "Telefono (formato internazionale, es. +39 123 456 7890)",
9
+ "prompt_country": "Codice paese ISO 3166 (es. IT, BR, US, ES)",
10
+ "prompt_consent": "Accetti i Termini di Servizio e la Privacy Policy (GDPR)?",
11
+ "tos_url_label": "TOS:",
12
+ "consent_required": "Il consenso GDPR è obbligatorio. Cadastro annullato.",
13
+ "name_too_short": "Min 3 caratteri",
14
+ "invalid_email": "Email non valida.",
15
+ "invalid_phone": "Telefono deve essere in formato internazionale (es. +391234567890).",
16
+ "invalid_country": "Codice paese deve essere 2 lettere (ISO 3166 alpha-2).",
17
+ "submitting": "Invio in corso...",
18
+ "next_steps": "[bold green]✓ Cadastro completato[/bold green]\n\nProssimi passi:\n 1. [cyan]lovarch init <progetto>[/cyan] — crea un nuovo progetto\n 2. [cyan]lovarch audit <progetto>[/cyan] — verifica gli input\n 3. [cyan]lovarch run dal-brief-al-cantiere[/cyan] — esegui workflow\n\nPer upgrade a Premium (crediti inclusi): [link]https://lovarch.com/cli-upgrade[/link]"
19
+ },
20
+ "account": {
21
+ "no_account": "Nessun account configurato. Esegui 'lovarch signup' o 'lovarch login'.",
22
+ "delete_warning_title": "⚠️ CANCELLAZIONE ACCOUNT — IRREVERSIBILE",
23
+ "delete_warning_body": "Stai per cancellare il tuo account lovarch-cli (modalità FREE).\n\nCosa succede:\n • I tuoi dati personali (nome, email, telefono) saranno pseudonimizzati (GDPR Art. 17)\n • Il token verrà revocato — non potrai più usare lovarch-cli con questo account\n • L'account ombra in Lovarch verrà eliminato\n • [bold]Opzionalmente[/bold] cancelliamo i progetti locali in ~/.lovarch/projects/\n\n[red]Questa azione NON può essere annullata.[/red]",
24
+ "confirm_delete_remote": "Confermi la cancellazione dell'account remoto?",
25
+ "confirm_delete_local": "Vuoi anche cancellare i progetti locali in ~/.lovarch/projects/?",
26
+ "deletion_aborted": "Cancellazione annullata. Nessun dato modificato.",
27
+ "deletion_success": "✓ Account cancellato. Grazie per aver provato lovarch-cli.",
28
+ "info_title": "Account corrente",
29
+ "premium_delete_redirect": "La cancellazione di un account Premium si effettua nell'app web Lovarch:\n https://lovarch.com/settings/account/delete"
30
+ },
31
+ "login": {
32
+ "choose_mode_prompt": "Scegli modalità",
33
+ "free_redirect": "Per la modalità Free, esegui [bold cyan]lovarch signup[/bold cyan].",
34
+ "opening_browser": "Apertura del browser per il login Lovarch...",
35
+ "manual_url_hint": "Se il browser non si apre, copia questo URL:",
36
+ "waiting_callback": "In attesa dell'autorizzazione (timeout 5 min)...",
37
+ "callback_timeout": "Timeout: nessuna risposta dal browser in 5 minuti.",
38
+ "state_mismatch": "Errore di sicurezza: state non corrisponde (possibile CSRF). Riprova.",
39
+ "auth_denied": "Autorizzazione negata dall'utente.",
40
+ "login_success": "✓ Login Premium completato",
41
+ "modes_mutex": "Le opzioni --free e --premium sono mutuamente esclusive."
42
+ },
43
+ "info": {
44
+ "title": "Stato",
45
+ "mode_not_configured": "non configurato — esegui 'lovarch login' per iniziare",
46
+ "powered_by": "🌐 Powered by Lovarch — https://lovarch.com",
47
+ "course_promo": "🎓 Corso IA Avanzato per Architetti — https://lovarch.com/corso"
48
+ },
49
+ "errors": {
50
+ "network": "Errore di rete chiamando {function_name}: {exc}",
51
+ "invalid_json": "JSON non valido da {function_name} (HTTP {status_code}): {snippet}",
52
+ "unknown_api_error": "Errore API: {error_code}",
53
+ "credits_insufficient": "Crediti insufficienti: hai {remaining}, ne servono {required} (mancano {deficit}). Ricarica su https://lovarch.com/credits.",
54
+ "credits_check_failed": "Verifica crediti fallita: {message}"
55
+ },
56
+ "upgrade": {
57
+ "title": "🚀 Upgrade a Premium",
58
+ "already_premium_title": "✓ Account Premium attivo",
59
+ "body_free": "Passa a Premium per sbloccare:\n • Crediti AI inclusi (a partire da 50.000 cr/mese)\n • Storage cloud sincronizzato tra device\n • Collaborazione di team\n • Supporto prioritario",
60
+ "already_premium": "Sei già Premium ✨ Per gestire crediti, fatturazione e team apri la dashboard:",
61
+ "no_account_hint": "Nessun account configurato. Esegui [bold cyan]lovarch signup[/bold cyan] o [bold cyan]lovarch login --premium[/bold cyan] prima di [bold]lovarch upgrade[/bold]."
62
+ },
63
+ "run": {
64
+ "title": "Avvio pipeline squad",
65
+ "summary_title": "Esito esecuzione",
66
+ "no_project": "Progetto '{name}' non trovato. Esegui [bold cyan]lovarch init {name}[/bold cyan] prima.",
67
+ "no_input": "Cartella input non trovata: {path}",
68
+ "no_audit": "Esegui [bold cyan]lovarch audit {name}[/bold cyan] prima del run, oppure usa [cyan]--skip-audit[/cyan] (rischioso).",
69
+ "audit_failed": "✗ Audit di '{name}' fallito. Risolvi i critici e riesegui [bold cyan]lovarch audit {name}[/bold cyan].",
70
+ "no_runner": "pipeline_runner non trovato in {path}. Reinstalla con [cyan]pip install -e .[/cyan].",
71
+ "starting": "Eseguo workflow [bold]{workflow}[/bold] sul progetto [bold]{project}[/bold].",
72
+ "mode_label": "Modalità: [bold]{mode}[/bold]",
73
+ "mode_free": "Free (dry-run · simulazione, nessuna chiamata API reale)",
74
+ "mode_premium": "Premium (run reale · debita crediti Lovarch)",
75
+ "dry_run_note": "[dim]I run reali sono disponibili dopo [cyan]lovarch login --premium[/cyan].[/dim]",
76
+ "completed": "[green]✓[/green] Pipeline completata per [bold]{project}[/bold].",
77
+ "failed": "[red]✗[/red] Pipeline fallita per [bold]{project}[/bold]. Vedi log sopra.",
78
+ "qa_rejected": "[yellow]⚠[/yellow] Il controllo qualità (Tier 2) ha respinto il dossier di [bold]{project}[/bold]. I deliverable sono stati prodotti ma NON sono validati per l'uso professionale. Consulta il report QA e il log qui sopra; verifica i file di input del progetto e rilancia. Assistenza: info@lovarch.com",
79
+ "next_steps": "Prossimi passi:\n 1. [cyan]lovarch status[/cyan] — ispeziona l'esecuzione\n 2. [cyan]lovarch consolidate {project}[/cyan] — genera DOSSIER.zip",
80
+ "subprocess_failed": "✗ Avvio subprocess fallito: {message}",
81
+ "interrupted": "Interruzione utente · pipeline annullata."
82
+ },
83
+ "consolidate": {
84
+ "title": "DOSSIER pronto",
85
+ "no_project": "Progetto '{name}' non trovato. Esegui [bold cyan]lovarch init {name}[/bold cyan] prima.",
86
+ "no_output": "Cartella output non trovata: {path}",
87
+ "empty_output": "Output di '{name}' è vuoto. Esegui [bold cyan]lovarch run {name}[/bold cyan] prima.",
88
+ "zipping": "Compressione di {count} file in DOSSIER.zip…",
89
+ "created": "[green]✓[/green] DOSSIER creato: [bold]{path}[/bold]\n [dim]{size_kb} KB · {count} file[/dim]",
90
+ "next_steps": "Prossimi passi:\n 1. Apri il file e ispeziona la struttura\n 2. Condividi il DOSSIER con il cliente / impresa",
91
+ "write_failed": "✗ Errore di scrittura ZIP: {message}",
92
+ "zip_readme": "# DOSSIER {project} — {date}\n\nGenerato da lovarch-cli — {count} file inclusi.\n\nStruttura:\n- 00-validation/ Audit e validazione input\n- 01-bootstrap/ Metadata progetto\n- 02-concept/ Moodboard e render\n- 03-tier1/ Output Tier 1 agents (CAD/IFC/PDF/XLSX)\n- 04-tier2/ Report QA\n- 05-dossier/ Briefing architetto, regolatorio, energy\n- 99-other/ File senza routing assegnato\n"
93
+ },
94
+ "status": {
95
+ "list_title": "Progetti lovarch",
96
+ "detail_title": "Stato progetto · {name}",
97
+ "no_projects": "Nessun progetto. Esegui [bold cyan]lovarch init <nome>[/bold cyan] per iniziare.",
98
+ "no_projects_hint": "Suggerimento: [cyan]lovarch init villa-test --sample[/cyan] per partire dal sample villa-chianti.",
99
+ "project_not_found": "Progetto '{name}' non trovato.",
100
+ "col_project": "Progetto",
101
+ "col_workflow": "Workflow",
102
+ "col_audit": "Audit",
103
+ "col_dossier": "Dossier",
104
+ "col_age": "Aggiornato",
105
+ "label_workflow": "Workflow",
106
+ "label_created": "Creato",
107
+ "label_sample": "Sample",
108
+ "section_audit": "Audit",
109
+ "section_dossier": "Dossier",
110
+ "section_output": "Output",
111
+ "no_audit_yet": "non eseguito · usa [cyan]lovarch audit {name}[/cyan]",
112
+ "no_dossier_yet": "non generato · usa [cyan]lovarch consolidate {name}[/cyan]"
113
+ },
114
+ "audit": {
115
+ "no_project": "Progetto '{name}' non trovato. Esegui [bold cyan]lovarch init {name}[/bold cyan] prima.",
116
+ "no_input": "Cartella input non trovata: {path}",
117
+ "checklist_title": "Audit input · 18 controlli",
118
+ "summary_title": "Esito audit",
119
+ "col_check": "Controllo",
120
+ "col_status": "Esito",
121
+ "col_detail": "Dettaglio",
122
+ "summary_pass": "Tutti i 18 controlli sono passati per '{name}'. Pronto per il run.",
123
+ "summary_concerns": "Audit di '{name}' completato con avvertenze (i critici sono OK).",
124
+ "summary_fail": "Audit di '{name}' FALLITO — risolvi i controlli critici prima del run.",
125
+ "next_steps_pass": "Prossimo: [cyan]lovarch run dal-brief-al-cantiere --project {name}[/cyan]",
126
+ "next_steps_fail": "Correggi gli input mancanti e ripeti: [cyan]lovarch audit {name}[/cyan]",
127
+ "checks": {
128
+ "briefing_present": "briefing-cliente.md presente",
129
+ "briefing_cliente": "Briefing menziona il cliente",
130
+ "briefing_programma": "Briefing definisce il programma",
131
+ "dxf_present": "stato-attuale.dxf valido (≥5KB)",
132
+ "preview_png": "stato-attuale.png presente",
133
+ "visura_present": "visura-catastale.pdf presente",
134
+ "architetto_json": "architetto-info.json (nome, ordine, CF)",
135
+ "foto_dir": "Foto stato attuale (≥4)",
136
+ "pinterest_dir": "Reference Pinterest (≥4)",
137
+ "briefing_budget": "Briefing indica budget",
138
+ "briefing_tempi": "Briefing indica tempi",
139
+ "briefing_vincoli": "Briefing indica vincoli",
140
+ "briefing_stile": "Briefing indica stile",
141
+ "briefing_spazi": "Briefing descrive spazi",
142
+ "briefing_famiglia": "Briefing menziona famiglia",
143
+ "briefing_abitudini": "Briefing copre abitudini",
144
+ "briefing_materiali": "Briefing accenna materiali",
145
+ "briefing_sostenibilita": "Briefing tratta sostenibilità"
146
+ }
147
+ },
148
+ "init": {
149
+ "title": "Progetto '{name}' inizializzato",
150
+ "invalid_name": "✗ Nome non valido: '{name}'. Usa lettere minuscole, numeri e trattini (2-63 caratteri).",
151
+ "already_exists": "Progetto '{name}' esiste già in [bold]{path}[/bold]. Usa [bold cyan]--force[/bold cyan] per sovrascrivere.",
152
+ "created": "[green]✓[/green] Cartella creata in [bold]{path}[/bold]",
153
+ "sample_copied": "[green]✓[/green] Sample villa-chianti copiato ([bold]{count}[/bold] file di input)",
154
+ "no_sample": "Sample-input non trovato in {path}",
155
+ "sample_hint": "Riprova con connessione internet o scarica manualmente [bold]sample-villa-chianti.zip[/bold] da [cyan]https://github.com/ArchPrime-official/lovarch-cli/releases/latest[/cyan] e decomprimilo nella cartella di input del progetto.",
156
+ "sample_origin_cache": "↳ origine: cache locale (~/.lovarch/cache/sample-villa-chianti/)",
157
+ "sample_origin_download": "↳ origine: scaricato da GitHub Releases + memorizzato in cache",
158
+ "downloading": "Scaricamento {asset}",
159
+ "fetching_sample": "Scaricamento sample da {url}",
160
+ "download_failed": "Download fallito da {url}: {error}",
161
+ "checksum_failed": "SHA256 non corrisponde — atteso {expected}, ottenuto {actual}. File corrotto o release manomessa.",
162
+ "extract_failed": "Estrazione del pacchetto fallita: {error}",
163
+ "unexpected_zip_layout": "Layout zip inatteso — cartella '{expected}/' non trovata alla radice.",
164
+ "zip_unsafe": "Entrata zip non sicura (path traversal): {entry}",
165
+ "no_sample_offline": "Sample-input non disponibile offline e download disabilitato.",
166
+ "next_steps": "Prossimi passi:\n 1. [cyan]lovarch audit {name}[/cyan] — verifica i 18 input\n 2. [cyan]lovarch run dal-brief-al-cantiere[/cyan] — esegui il workflow"
167
+ }
168
+ }