@loicngr/kobo 2.1.18 → 2.1.20

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 (114) hide show
  1. package/AGENTS.md +49 -0
  2. package/CHANGELOG.md +8 -0
  3. package/CONFIGURATION.md +60 -1
  4. package/README.md +2 -0
  5. package/dist/mcp-server/kobo-tasks-server.js +28 -6
  6. package/dist/mcp-server/progress-bar-client.js +20 -0
  7. package/dist/mcp-server/workspace-dialogue-client.js +27 -7
  8. package/dist/server/db/migrations.js +2 -0
  9. package/dist/server/db/progress-bar-schema.js +27 -0
  10. package/dist/server/db/schema.js +2 -0
  11. package/dist/server/index.js +4 -0
  12. package/dist/server/routes/mcp.js +19 -9
  13. package/dist/server/routes/progress-bars.js +56 -0
  14. package/dist/server/routes/workspaces.js +33 -63
  15. package/dist/server/services/agent/engines/claude-code/engine.js +59 -16
  16. package/dist/server/services/agent/engines/claude-code/options-builder.js +13 -34
  17. package/dist/server/services/agent/engines/claude-code/stop-hook.js +8 -27
  18. package/dist/server/services/agent/engines/codex/engine.js +8 -1
  19. package/dist/server/services/agent/engines/codex/options-builder.js +11 -16
  20. package/dist/server/services/agent/orchestrator.js +53 -7
  21. package/dist/server/services/auto-loop-final-review-service.js +1 -1
  22. package/dist/server/services/auto-loop-service.js +10 -10
  23. package/dist/server/services/progress-bar-mcp-service.js +44 -0
  24. package/dist/server/services/progress-bar-runtime.js +29 -0
  25. package/dist/server/services/progress-bar-service.js +232 -0
  26. package/dist/shared/auto-loop-prompts.js +12 -12
  27. package/dist/shared/launch-instructions.js +57 -0
  28. package/dist/shared/progress-bar-prompts.js +11 -0
  29. package/dist/shared/progress-bar-tools.js +73 -0
  30. package/dist/shared/progress-bars.js +3 -0
  31. package/package.json +1 -1
  32. package/src/client/dist/pwa/assets/ActivityFeed-DiUxnmGJ.js +2 -0
  33. package/src/client/dist/pwa/assets/{AutoLoopFinalReviewSettings-CC8ICe_I.js → AutoLoopFinalReviewSettings-f4VDR5dd.js} +1 -1
  34. package/src/client/dist/pwa/assets/{ChangelogPage-C1aiPBoi.js → ChangelogPage-dEWpjTlp.js} +1 -1
  35. package/src/client/dist/pwa/assets/ComparisonPanel-Bwbqgvr4.js +2 -0
  36. package/src/client/dist/pwa/assets/CreatePage-CCCCAhrx.js +2 -0
  37. package/src/client/dist/pwa/assets/{DashboardPage-D1S3QGp4.js → DashboardPage-3byhBITf.js} +1 -1
  38. package/src/client/dist/pwa/assets/DiffViewer-Bj_NTfCF.js +8 -0
  39. package/src/client/dist/pwa/assets/{DocumentsPanel-C4AvyZF3.js → DocumentsPanel-xyLDV3T1.js} +1 -1
  40. package/src/client/dist/pwa/assets/{DrawerToggleButton-LzIEeeJY.js → DrawerToggleButton-pwBSstQP.js} +1 -1
  41. package/src/client/dist/pwa/assets/GitPanel-DvIdrkVw.js +3 -0
  42. package/src/client/dist/pwa/assets/{HealthPage-Cm13vxOi.js → HealthPage-BSwhZQRo.js} +1 -1
  43. package/src/client/dist/pwa/assets/MainLayout-DZJ9BvZw.js +2 -0
  44. package/src/client/dist/pwa/assets/{MemoryPanel-C6tzCv6D.js → MemoryPanel-ChR032zP.js} +1 -1
  45. package/src/client/dist/pwa/assets/{MemoryProposalList-CzpzIirK.js → MemoryProposalList-BRKSoS4K.js} +1 -1
  46. package/src/client/dist/pwa/assets/{QBtnDropdown-BnuKPevV.js → QBtnDropdown-o3QH0Bb8.js} +1 -1
  47. package/src/client/dist/pwa/assets/{QExpansionItem-DjaUhgjt.js → QExpansionItem-BhFHiyq9.js} +1 -1
  48. package/src/client/dist/pwa/assets/{QScrollArea-Dpksslru.js → QScrollArea-BsNY6slB.js} +1 -1
  49. package/src/client/dist/pwa/assets/QSelect-bEq3g_io.js +1 -0
  50. package/src/client/dist/pwa/assets/{QTooltip-CH45NuVs.js → QTooltip-xYZ6KNu2.js} +1 -1
  51. package/src/client/dist/pwa/assets/{SchedulePanel-QAjXuTIN.js → SchedulePanel-DIFv_FTY.js} +1 -1
  52. package/src/client/dist/pwa/assets/{SearchPage-B1pbwDej.js → SearchPage-BqTBIt5E.js} +1 -1
  53. package/src/client/dist/pwa/assets/SettingsPage-BLD0xWFB.js +9 -0
  54. package/src/client/dist/pwa/assets/{SplitWorkspacePage-CJ7e-KPh.js → SplitWorkspacePage-D6r2pl5g.js} +1 -1
  55. package/src/client/dist/pwa/assets/{TerminalPanel-DVomz3oo.js → TerminalPanel-CladK9Vv.js} +9 -9
  56. package/src/client/dist/pwa/assets/{ToolCallItem-BntDHc6p.js → ToolCallItem-CdzEME4w.js} +3 -3
  57. package/src/client/dist/pwa/assets/{TouchPan-DwqfsAxH.js → TouchPan-B4gQPwGN.js} +1 -1
  58. package/src/client/dist/pwa/assets/{TourReplayButton-OIavXdUg.js → TourReplayButton-B0j6AZwU.js} +1 -1
  59. package/src/client/dist/pwa/assets/{WorkspaceAttentionLabels-CYwN1-Rf.js → WorkspaceAttentionLabels-CeVhoidC.js} +1 -1
  60. package/src/client/dist/pwa/assets/WorkspacePage-CK5XCuG_.js +4 -0
  61. package/src/client/dist/pwa/assets/{WorkspacePage-B248nKIU.css → WorkspacePage-w2bF8wTd.css} +1 -1
  62. package/src/client/dist/pwa/assets/{browser-Cl0d1gbu.js → browser-B8tNScg1.js} +1 -1
  63. package/src/client/dist/pwa/assets/{build-path-tree-J3YQeMuV.js → build-path-tree-kmVAcvs_.js} +1 -1
  64. package/src/client/dist/pwa/assets/custom-sounds-CJwd-8TL.js +1 -0
  65. package/src/client/dist/pwa/assets/{de-C-RtXLqL.js → de-BaO6kbdO.js} +1 -1
  66. package/src/client/dist/pwa/assets/{editor.api-BoFiCjBZ.js → editor.api-CgbPVW9s.js} +1 -1
  67. package/src/client/dist/pwa/assets/{efforts-Y6XotW97.js → efforts-y7Wf_Rgd.js} +2 -2
  68. package/src/client/dist/pwa/assets/{es-CBlW91ZK.js → es-DTvSsbD0.js} +1 -1
  69. package/src/client/dist/pwa/assets/{expand-template-sfOHWudd.js → expand-template-BFbbjj7X.js} +1 -1
  70. package/src/client/dist/pwa/assets/{format-mWov137C.js → format-BETfc4z9.js} +1 -1
  71. package/src/client/dist/pwa/assets/{formatters-B_XsveM0.js → formatters-C22K9vlC.js} +1 -1
  72. package/src/client/dist/pwa/assets/{fr-Hfzp_sF5.js → fr-BH7V66Yz.js} +1 -1
  73. package/src/client/dist/pwa/assets/{freemarker2-2pGNakhH.js → freemarker2-DiRVvp9O.js} +1 -1
  74. package/src/client/dist/pwa/assets/{handlebars-Bn2V6Liw.js → handlebars-BLYRroSQ.js} +1 -1
  75. package/src/client/dist/pwa/assets/{html-BBhkJkf2.js → html-DAW2vteY.js} +1 -1
  76. package/src/client/dist/pwa/assets/i18n-DnuTmw3O.js +1 -0
  77. package/src/client/dist/pwa/assets/{index-DCpe-Tfm.js → index-CbyHfF8I.js} +2 -2
  78. package/src/client/dist/pwa/assets/{it-Bl-v27qg.js → it-DZGbkkoy.js} +1 -1
  79. package/src/client/dist/pwa/assets/{javascript-Ba0G68U2.js → javascript-Bb5J8n0k.js} +1 -1
  80. package/src/client/dist/pwa/assets/{liquid-C5VrzHr_.js → liquid-Dqx3adnJ.js} +1 -1
  81. package/src/client/dist/pwa/assets/{mdx-DrPRiuKb.js → mdx-D_7igLV3.js} +1 -1
  82. package/src/client/dist/pwa/assets/{monaco-contributions-qQUY6VS7.js → monaco-contributions-C-0CbrAy.js} +1 -1
  83. package/src/client/dist/pwa/assets/{monaco.contribution-Dtq2RsyB.js → monaco.contribution-c6JPBEZI.js} +2 -2
  84. package/src/client/dist/pwa/assets/network-auth-BE4qbvWm.js +1 -0
  85. package/src/client/dist/pwa/assets/notify-theme-BVFBBGrJ.js +1 -0
  86. package/src/client/dist/pwa/assets/{project-color-Dzvvmaml.js → project-color-CHOR2jB5.js} +1 -1
  87. package/src/client/dist/pwa/assets/{python-Cuf_7umq.js → python-Dqubw1F5.js} +1 -1
  88. package/src/client/dist/pwa/assets/{razor-DcVpxFeh.js → razor-BQphc9Kt.js} +1 -1
  89. package/src/client/dist/pwa/assets/{typescript-Bjcc3kYC.js → typescript-Dep00l0X.js} +1 -1
  90. package/src/client/dist/pwa/assets/{use-search-index-status-Bwf40BEI.js → use-search-index-status-CQHHvHwM.js} +1 -1
  91. package/src/client/dist/pwa/assets/{use-tours-CWafZt-m.js → use-tours-IVbXTmz2.js} +2 -2
  92. package/src/client/dist/pwa/assets/{use-worktree-restore-DkcM2FAZ.js → use-worktree-restore-B3s5xDGR.js} +1 -1
  93. package/src/client/dist/pwa/assets/{workspace-templates-DL_Cs7mD.js → workspace-templates-CyuTpztP.js} +1 -1
  94. package/src/client/dist/pwa/assets/{xml-BmJwqJOz.js → xml-BMS2dvaF.js} +1 -1
  95. package/src/client/dist/pwa/assets/{yaml-DAssfLhS.js → yaml-CYw92aic.js} +1 -1
  96. package/src/client/dist/pwa/index.html +1 -1
  97. package/src/client/dist/pwa/sw.js +1 -1
  98. package/src/mcp-server/README.md +112 -1
  99. package/src/mcp-server/kobo-tasks-server.ts +34 -6
  100. package/src/mcp-server/progress-bar-client.ts +27 -0
  101. package/src/mcp-server/workspace-dialogue-client.ts +26 -7
  102. package/src/client/dist/pwa/assets/ActivityFeed-S3XGw3WW.js +0 -2
  103. package/src/client/dist/pwa/assets/ComparisonPanel-DElbn4ac.js +0 -2
  104. package/src/client/dist/pwa/assets/CreatePage-Bx58t4YW.js +0 -2
  105. package/src/client/dist/pwa/assets/DiffViewer-BH4X9ru1.js +0 -8
  106. package/src/client/dist/pwa/assets/GitPanel-BP3N_4nh.js +0 -3
  107. package/src/client/dist/pwa/assets/MainLayout-DGmMkfuw.js +0 -2
  108. package/src/client/dist/pwa/assets/QSelect-Dh4CjliE.js +0 -1
  109. package/src/client/dist/pwa/assets/SettingsPage-CUQefsDh.js +0 -9
  110. package/src/client/dist/pwa/assets/WorkspacePage-CAsY7Hl-.js +0 -4
  111. package/src/client/dist/pwa/assets/custom-sounds-D-T5rpgv.js +0 -1
  112. package/src/client/dist/pwa/assets/i18n-sBCWwf8Y.js +0 -1
  113. package/src/client/dist/pwa/assets/network-auth-BPJpXK4L.js +0 -1
  114. package/src/client/dist/pwa/assets/notify-theme-Bl9iRsZB.js +0 -1
@@ -14,4 +14,4 @@ KOBO_PR_NUMBER — numero della PR/MR sulla forge risolta (vuoto se nessuna
14
14
  # Oppure direttamente con git (funziona su GitHub anche dopo eliminazione del branch):
15
15
  git fetch origin pull/[numero-pr]/head:[nome-branch]
16
16
  git worktree add [percorso] [nome-branch]`,"settings.purgeDocsRestoreFootnote":`GitHub mantiene il ref HEAD della PR accessibile a lungo dopo l'eliminazione del branch sorgente (mesi / anni). Il rilevamento automatico gira nel watcher 30 s — nessuna azione UI necessaria una volta che la cartella riappare.`,"settings.purgeDocsPermissionsTitle":`Evitare errori di permessi durante la pulizia`,"settings.purgeDocsPermissionsIntro":`Docker spesso lascia file root-owned in node_modules / vendor dentro il worktree. Quando Kōbō prova a rimuoverli, ricevi EACCES / EPERM e la pulizia fallisce. Due modi per prevenirlo:`,"settings.purgeDocsPermissionsDocker":'Configurare il container per girare come utente host — direttiva USER nel Dockerfile, o `user: "${UID}:${GID}"` in docker-compose (con UID/GID esportati nella shell).',"settings.purgeDocsPermissionsAcl":`Pre-impostare una ACL di default sulla root dei worktrees — rete di sicurezza che funziona nella MAGGIOR PARTE dei casi (ext4/btrfs/xfs + bind mount Docker classico). Ogni nuovo file eredita allora una voce di accesso per il tuo utente, oltre al proprietario nominale:`,"settings.purgeDocsPermissionsAclCommand":` setfacl -d -m u:$(whoami):rwX [root-worktrees]`,"settings.purgeDocsPermissionsFootnote":"Limiti delle ACL: NON funzionano sui volumi Docker con nome (usa un bind mount), filesystem senza supporto ACL (NTFS, exFAT, tmpfs), SELinux strict con `:Z`, o quando Docker `userns-remap` è attivato. La soluzione più affidabile resta configurare l'utente nel container (opzione 1). Suggerimento: `rwX` (X maiuscola) aggiunge il bit eseguibile solo a directory e file già eseguibili — più pulito di `rwx` che renderebbe eseguibile ogni file di testo.","settings.purgeDocsPermissionsRecoverTitle":`Sbloccare un worktree già rotto (file root-owned esistenti)`,"settings.purgeDocsPermissionsRecoverIntro":`Se ti ritrovi con un worktree già pieno di file root-owned (Docker ha già girato, vendor / node_modules sono bloccati), l'ACL preventiva sopra non basta — devi sistemare i file ESISTENTI. Due approcci, entrambi da eseguire dentro la cartella del worktree:`,"settings.purgeDocsPermissionsRecoverAclIntro":`Opzione A — ACL ricorsiva (preserva l'ownership root per audit, aggiunge solo accesso per il tuo utente in parallelo):`,"settings.purgeDocsPermissionsRecoverAclCommand":`# imposta ACL di default per i file futuri E concede accesso a tutto l'esistente
17
- sudo setfacl -Rd -m u:$(whoami):rwX . && sudo setfacl -R -m u:$(whoami):rwX .`,"settings.purgeDocsPermissionsRecoverChownIntro":`Opzione B — Prendere la proprietà (più semplice, perde la traccia "creato da root nel container" ma raramente conta):`,"settings.purgeDocsPermissionsRecoverChownCommand":` sudo chown -R $(whoami):$(whoami) .`,"settings.purgeDocsPermissionsRecoverFootnote":"Suggerimento: puoi eseguire questi comandi direttamente sulla root dei worktrees (es. `~/.worktrees/`) per coprire tutti i workspace esistenti E futuri in un colpo solo. Una volta fatto, la pulizia Kōbō funzionerà senza errori di permessi.","contextMenu.runSetup":`Esegui script di setup`,"contextMenu.exportEvents":`Esporta eventi (CSV)`,"contextMenu.dismissChangesRequested":`Segna «Modifiche richieste» come visto`,"contextMenu.dismissCiFailure":`Segna «CI in errore» come visto`,"contextMenu.restoreChangesRequested":`Segna «Modifiche richieste» come non visto`,"contextMenu.restoreCiFailure":`Segna «CI in errore» come non visto`,"contextMenu.exportingEvents":`Preparazione dell'esportazione…`,"contextMenu.exportEventsError":`Esportazione degli eventi non riuscita`,"contextMenu.openNotion":`Apri in Notion`,"contextMenu.openSentry":`Apri in Sentry`,"contextMenu.openPr":`Apri PR`,"contextMenu.ignorePrWatch":`Ignora i controlli PR`,"contextMenu.resumePrWatch":`Riprendi i controlli PR`,"contextMenu.prWatchToggleFailed":`Aggiornamento dei controlli PR non riuscito`,"workspace.favorite":`Segna come preferito`,"workspace.unfavorite":`Rimuovi dai preferiti`,"workspace.showFavoritesOnly":`Mostra solo i preferiti`,"workspace.tagFilter":`Filtra per tag`,"workspace.tagFilterActive":`Filtra per tag ({count} selezionati)`,"workspace.tagFilterClear":`Cancella`,"workspace.tagFilterEmpty":`Ancora nessun tag. Definiscili nelle impostazioni e assegnali dal menu di un workspace.`,"workspace.searchArchivedToggle":`Cerca anche nei workspace archiviati`,"workspace.descriptionPlaceholder":`Aggiungi una breve descrizione`,"workspace.descriptionDialogHint":`Testo semplice, massimo 200 caratteri. Lasciare vuoto per cancellare.`,"workspace.descriptionTooLong":`La descrizione deve avere al massimo 200 caratteri.`,"workspace.descriptionSaveFailed":`Impossibile salvare la descrizione.`,"workspace.agentDescriptionTooltip":`Stato live mantenuto dall'agente`,"mcp.tool.setWorkspaceDescription":`Imposta la breve descrizione del workspace (≤ 200 caratteri).`,"tags.manage":`Gestisci tag`,"tags.manageTitle":`Gestisci i tag del workspace`,"tags.noTagsDefined":`Nessun tag definito. Aggiungine in Impostazioni > Globale > Tag.`,"tags.orphanedHint":`{count} tag non sono più nel catalogo globale. Deseleziona per rimuoverli.`,"settings.tagsTitle":`Tag dei workspace`,"settings.tagsHint":`Definisci i tag assegnabili ai workspace. Digita per aggiungere, clicca la croce per rimuovere.`,"settings.tagsLabel":`Tag disponibili`,"settings.branchPrefixesTitle":`Prefissi di branch`,"settings.branchPrefixesHint":`Gestisci i prefissi di branch Git disponibili nella pagina di creazione del workspace. Il primo è preselezionato per impostazione predefinita.`,"settings.branchPrefixesEmpty":`Nessun prefisso di branch definito. Aggiungine almeno uno qui sotto.`,"settings.branchPrefixesAddLabel":`Nuovo prefisso`,"settings.branchPrefixesEditHint":`Clicca per rinominare`,"settings.branchPrefixesMoveUp":`Sposta su`,"settings.branchPrefixesMoveDown":`Sposta giù`,"settings.worktreesTitle":`Worktree Git`,"settings.worktreesHint":`Scegli dove creare i worktree dei nuovi workspace. I percorsi relativi sono risolti dal progetto; sono supportati percorsi assoluti Linux/macOS e Windows, $HOME, ~ e %USERPROFILE%.`,"settings.worktreesPathLabel":`Percorso worktree`,"settings.worktreesPathRequired":`Il percorso worktree è obbligatorio.`,"settings.worktreesPrefixByProject":`Aggiungi il nome del progetto come prefisso ai worktree`,"settings.worktreesPrefixByProjectHint":`Posiziona ogni worktree in una sottocartella con il nome del progetto per evitare collisioni quando più progetti condividono la stessa radice.`,"settings.shareTitle":`Condividi configurazione`,"settings.shareHint":`Esporta impostazioni, template e tag come bundle JSON. Le chiavi MCP sono escluse per sicurezza.`,"settings.exportConfig":`Esporta`,"settings.importConfig":`Importa`,"settings.exportSuccess":`Configurazione esportata`,"settings.importSuccess":`Configurazione importata`,"settings.importConfirmTitle":`Importa configurazione`,"settings.importConfirmMessage":`Questo sostituirà le tue impostazioni, template e tag attuali. Le chiavi MCP vengono preservate. Continuare?`,"settings.mcp.title":`Connessioni LLM esterni (MCP)`,"settings.mcp.hint":`Collega un client MCP per creare, archiviare, liberare spazio, eliminare o ripristinare workspace, riprendere una PR e parlare con i tuoi agenti.`,"settings.mcp.remoteDisabled":`Le connessioni remote richiedono accesso alla rete e un riavvio del server dopo l’attivazione.`,"settings.mcp.clientName":`Nome del client (facoltativo)`,"settings.mcp.connection":`Connessione`,"settings.mcp.local":`HTTP locale`,"settings.mcp.remote":`HTTP remoto`,"settings.mcp.proxy":`Proxy inverso`,"settings.mcp.stdio":`Stdio locale`,"settings.mcp.copyUrl":`Copia URL`,"settings.mcp.copyConfig":`Copia configurazione`,"settings.mcp.copyWithToken":`Copia con token`,"settings.mcp.genericFormat":`Questi esempi usano il formato generico mcpServers. Adatta il contenitore al tuo client MCP. Le anteprime mostrano un segnaposto per il token.`,"settings.mcp.tokenUnavailable":`Nessun token disponibile. Attiva l’accesso alla rete prima di copiare una configurazione autenticata.`,"settings.mcp.stdioUnavailable":`Il punto di ingresso stdio non è disponibile in questa installazione. Usa HTTP o compila prima Kōbō.`,"settings.mcp.copyFailed":`Impossibile copiare negli appunti.`,"tours.settings.mcp.title":`Collega un LLM esterno`,"tours.settings.mcp.description":`Copia una configurazione HTTP o stdio per collegare un assistente esterno. Può creare un workspace con le opzioni del modulo, riprendere una PR, gestire archiviazione, eliminazione o ripristino e comunicare con i tuoi agenti.`,"settings.network.title":`Accesso di rete`,"settings.network.hint":`Controlla Kōbō da un altro dispositivo della tua LAN affidabile. Off = solo localhost. On = raggiungibile sulla rete, protetto da un token. Riavvia Kōbō dopo il cambio.`,"settings.network.enable":`Abilita accesso di rete`,"settings.network.behindProxy":`Dietro un reverse proxy`,"settings.network.behindProxyHint":`Kōbō non può più distinguere la tua macchina da una richiesta inoltrata — anche localhost dovrà presentare il token d'ora in poi. Attivalo solo se un reverse proxy (Traefik, nginx, Caddy…) si trova davanti a Kōbō.`,"settings.network.restartRequired":`Riavvia Kōbō per applicare il nuovo indirizzo di bind.`,"settings.network.token":`Token di accesso`,"settings.network.copy":`Copia`,"settings.network.copied":`Copiato`,"settings.network.regenerate":`Rigenera`,"settings.network.regenerateConfirm":`Rigenerare il token? I dispositivi connessi avranno bisogno del nuovo token.`,"settings.network.urls":`URL LAN`,"settings.network.scan":`Scansiona per connetterti`,"settings.network.noUrls":`Nessun indirizzo LAN rilevato.`,"settings.network.loadFailed":`Impossibile caricare le impostazioni di accesso di rete.`,"settings.network.updateFailed":`Impossibile aggiornare le impostazioni di accesso di rete.`,"settings.unsavedChanges.title":`Modifiche non salvate`,"settings.unsavedChanges.message":`Questo progetto ha modifiche non salvate. Cambiando progetto andranno perse.`,"settings.unsavedChanges.discard":`Scarta e cambia`,"settings.unsavedChanges.cancel":`Annulla`,"settings.loadFailed":`Impossibile caricare le impostazioni`,"settings.loadFailedHint":`Il salvataggio è disattivato: il modulo mostra i valori predefiniti e scriverli sovrascriverebbe la tua configurazione reale.`,"health.title":`Stato`,"health.tooltip":`Stato del sistema`,"changelog.title":`Changelog`,"changelog.tooltip":`Novità di Kōbō`,"changelog.empty":`Nessun changelog disponibile.`,"changelog.current":`corrente`,"changelog.currentVersion":`Versione corrente: v{version}`,"health.envTitle":`Ambiente`,"health.version":`Versione`,"health.koboHome":`Kōbō home`,"health.dbTitle":`Database`,"health.dbPath":`Percorso`,"health.dbSize":`Dimensione`,"health.schemaVersion":`Versione schema`,"health.settingsSchemaVersion":`Schema impostazioni`,"health.runtimesTitle":`Runtime agente`,"health.claudeCliTitle":`Claude Code`,"health.claudeCliMissing":`claude non trovato nel PATH`,"health.codexCliTitle":`OpenAI Codex`,"health.codexCliMissing":`binario codex non risolvibile`,"health.forgeCliTitle":`CLI di forge (gh / glab)`,"health.forgeCliMissing":`Né gh né glab trovati — pull request e monitoraggio CI non disponibili`,"health.workspacesTitle":`Workspace`,"health.workspacesCount":`{total} totali, {archived} archiviati`,"health.worktreesMissing":`{count} worktree mancanti sul disco`,"health.sessionsTitle":`Sessioni agente`,"health.sessionsOrphaned":`{n} sessione/sessioni orfana/e in esecuzione`,"health.integrationsTitle":`Integrazioni`,"health.integrationConfigured":`configurata`,"health.integrationMissing":`non configurata`,"health.integrationDisabled":`disabilitata`,"settings.integrationEnabled":`Attiva integrazione`,"health.activeTitle":`Stato attivo`,"health.activeQuotaBackoffs":`Quota backoff in attesa`,"health.activeWakeups":`Wakeup programmati`,"health.activeAutoLoop":`Auto-loop in esecuzione`,"health.activeAgentSessions":`Sessioni agente attive`,"health.activeDevServers":`Dev server in esecuzione`,"health.noneActive":`Nessuno.`,"health.quotaResumeAt":`riprende alle {time}`,"health.wakeupAt":`sveglia alle {time}`,"health.startedAgo":`avviata {time} fa`,"health.autoLoopReady":`pronto, in iterazione`,"health.autoLoopGrooming":`grooming in corso`,"session.started":`Sessione avviata`,"session.ended":`Sessione terminata`,"session.compacted":`Contesto compattato`,"session.endedCompleted":`Turno terminato — invia un messaggio per continuare`,"session.endedKilled":`Sessione interrotta`,"session.endedError":`Sessione terminata con un errore`,"session.endedWatchdog":`Sessione chiusa forzatamente dopo un periodo di inattività`,"tool.running":`In corso...`,"activity.raw_lines":`Righe di output grezze ({n})`,"api.timeout":`La richiesta ha superato il limite di {seconds} secondi.`,"api.mutationTimeout":`La richiesta ha superato il limite di {seconds} secondi. L’operazione potrebbe essere ancora in corso. Aggiorna il suo stato prima di riprovare.`,"activity.sessionsError":`Impossibile caricare le sessioni: {message}`,"activity.historyError":`Impossibile caricare la cronologia: {message}`,"activity.loading_older":`Caricamento messaggi precedenti…`,"activity.compacting":`Compattazione del contesto…`,"activity.prev_user_message":`Messaggio utente precedente`,"activity.scroll_to_bottom":`Scorri in fondo`,"activity.empty":`Ancora nulla`,"activity.emptyHint":`L’output dell’agente comparirà qui appena una sessione parte.`,"activity.a11y.region":`Annunci di attività dell’agente`,"activity.a11y.agentSaid":`Agente: {text}`,"activity.a11y.toolStarted":`Strumento {name} avviato`,"activity.a11y.toolFinished":`Strumento {name} completato`,"activity.a11y.toolFailed":`Strumento {name} fallito`,"chat.systemPrompt":`Prompt di sistema`,"chat.agent":`Agente`,"chat.cleanupScript":`Script di pulizia`,"chat.archiveScript":`Script di archiviazione`,"chat.setupScript":`Script di setup`,"chat.hookScript":`Hook {event}`,"chat.scriptDone":`Fatto`,"chat.scriptComplete":`[{phase}] Completato`,"chat.scriptError":`[{phase}] Errore: {message}`,"chat.unknownError":`sconosciuto`,"chat.you":`Tu`,"chat.session":`Sessione`,"chat.nActions":`{n} azione | {n} azioni`,"chat.lastUpdatedAt":`Ultimo aggiornamento alle {time}`,"chat.scrollToTurnTop":`Scorri all'inizio del messaggio`,"migration.backing_up":`Backup del database in corso…`,"migration.running":`Migrazione dei dati dell'agente — {processed}/{total}`,"migration.error":`Migrazione non riuscita`,"migration.backup_location":`Un backup è stato salvato in {path}. Riavvia Kōbō per riprovare.`,"migration.retry":`Riavvia Kōbō per riprovare.`,"engine.select":`Engine`,"engine.model":`Modello`,"engine.effort":`Livello di ragionamento`,"wakeup.scheduledIn":`Prossimo risveglio tra {n}s`,"wakeup.scheduledAt":`Prossimo risveglio alle {time}`,"wakeup.firing":`Risveglio in corso...`,"wakeup.reason":`Motivo: {reason}`,"wakeup.cancel":`Annulla questo risveglio`,"wakeup.pendingIndicator":`Risveglio programmato`,"cron.pendingIndicator":`{n} cron programmato/i`,"schedule.tabLabel":`Pianificazione`,"schedule.admissionTitle":`Nuova sessione automatica attualmente non disponibile.`,"schedule.admissionHint":`Le scadenze restano invariate. I messaggi in conversazioni esistenti seguono regole proprie.`,"schedule.admission.not-found":`Spazio non trovato.`,"schedule.admission.archived":`Spazio archiviato.`,"schedule.admission.purged":`Ripristina il worktree.`,"schedule.admission.shutdown":`Il server si sta arrestando.`,"schedule.admission.lifecycle":`Operazione sullo spazio in corso.`,"schedule.admission.active-session":`La sessione attuale non è ancora chiusa.`,"schedule.admission.awaiting-user":`È richiesta una risposta utente.`,"schedule.admission.compacting":`Compattazione del contesto in corso.`,"schedule.admission.quota":`In attesa del ripristino della quota.`,"schedule.admission.blocked":`Ciclo bloccato; risolvi la causa indicata.`,"schedule.admission.capacity":`Limite di concorrenza raggiunto: {running}/{limit} sessioni.`,"schedule.panelTitle":`Automazione`,"schedule.panelDescription":`Risvegliare questo workspace più tardi o eseguire istruzioni secondo una pianificazione.`,"schedule.activeTitle":`Pianificazioni attive`,"schedule.emptyTitle":`Nessuna pianificazione`,"schedule.emptyDescription":`Crea un wakeup singolo o un’attività ricorrente qui sotto.`,"schedule.cancelWakeup":`Annulla questo wakeup`,"schedule.cancelCron":`Elimina questa attività ricorrente`,"schedule.createTitle":`Crea una pianificazione`,"schedule.createDescription":`Scegli quando e come deve essere eseguito l'agente.`,"schedule.typeWakeup":`Wakeup singolo`,"schedule.typeRecurring":`Attività ricorrente`,"schedule.wakeupDescription":`Esegui il prompt una volta dopo un intervallo.`,"schedule.cronDescription":`Esegui il prompt periodicamente con una frequenza fissa.`,"schedule.promptHint":`Istruzioni che verranno inviate all'agente`,"schedule.frequencyTitle":`Frequenza`,"schedule.advancedDescription":`Usa un’espressione cron grezza`,"schedule.cronExpressionLabel":`Espressione cron`,"schedule.sessionModeTitle":`Sessione di esecuzione`,"schedule.modeResume":`Riprendi sessione`,"schedule.oneShotHint":`Rimuovi questa pianificazione dopo la prima esecuzione.`,"schedule.wakeupTitle":`Wakeup in attesa`,"schedule.cronsTitle":`Pianificazioni ricorrenti`,"schedule.noWakeup":`Nessun wakeup pianificato`,"schedule.noCrons":`Nessun cron pianificato`,"schedule.invalidCron":`Inattiva: espressione non valida. Elimina e ricrea questa pianificazione.`,"schedule.nextFireAt":`prossimo alle {time}`,"schedule.lastFiredAt":`ultimo {time} fa`,"schedule.addCronTitle":`Aggiungi un'attività ricorrente`,"schedule.addWakeupTitle":`Programma un wakeup`,"schedule.every":`Ogni`,"schedule.unitMinutes":`minuti`,"schedule.unitHours":`ore`,"schedule.unitDays":`giorni`,"schedule.daysDriftWarning":`L'intervallo può ridursi a 1 giorno a fine mese (limite di cron).`,"schedule.advancedExpression":`Espressione avanzata (opzionale)`,"schedule.advancedHint":`Cron grezzo (es. */15 * * * *) o {'@'}hourly/{'@'}daily — sostituisce il selettore se compilato.`,"schedule.promptLabel":`Prompt`,"schedule.labelOptional":`Etichetta (opzionale)`,"schedule.delayMinutes":`Ritardo (minuti)`,"schedule.modeFresh":`Nuova sessione`,"schedule.oneShot":`Esegui una sola volta`,"schedule.addCronBtn":`Aggiungi cron`,"schedule.addWakeupBtn":`Programma wakeup`,"schedule.cronCreated":`Attività ricorrente aggiunta`,"schedule.wakeupCreated":`Wakeup programmato`,"askUserQuestion.title":`L'agente sta facendo una domanda`,"askUserQuestion.submit":`Invia risposta`,"askUserQuestion.multiSelectHint":`Seleziona una o più opzioni`,"askUserQuestion.otherOption":`Altro`,"askUserQuestion.otherOptionHint":`specifica nel prossimo messaggio`,"askUserQuestion.freeFormLabel":`Specifica la tua risposta`,"askUserQuestion.freeFormHint":`Questa risposta verrà inviata direttamente all'agente.`,"askUserQuestion.noPending":`Nessuna domanda in attesa`,"askUserQuestion.next":`Avanti`,"askUserQuestion.previous":`Indietro`,"askUserQuestion.cancel":`Annulla`,"askUserQuestion.cancelTooltip":`Salta questa domanda — l'agente proseguirà senza risposta`,"askUserQuestion.collapse":`Riduci il pannello della domanda`,"askUserQuestion.expand":`Espandi il pannello della domanda`,"permissionRequest.title":`L'agente vuole usare uno strumento`,"permissionRequest.allow":`Consenti`,"permissionRequest.allowOnce":`Consenti una volta`,"permissionRequest.allowTurn":`Consenti questo turno`,"permissionRequest.operationUnavailable":`Dettagli non disponibili; autorizza una volta o l’intero strumento.`,"permissionRequest.allowOperation":`Consenti sempre questa operazione`,"permissionRequest.allowTool":`Consenti sempre questo strumento`,"permissionRequest.deny":`Nega`,"permissionRequest.tool":`Strumento`,"permissionRequest.input":`Input`,"permissionRequest.rawInput":`Dettagli tecnici`,"permissionRequest.collapse":`Riduci il pannello dei permessi`,"permissionRequest.expand":`Espandi il pannello dei permessi`,"permissionRequest.denied":`negato dall'utente`,"workspaceStatus.created":`creato`,"workspaceStatus.extracting":`estrazione`,"workspaceStatus.brainstorming":`brainstorming`,"workspaceStatus.compacting":`compattazione`,"chatInput.compactingBanner":`Compattazione del contesto in corso. Potrai inviare messaggi al termine.`,"workspaceStatus.executing":`in corso`,"workspaceStatus.awaitingUser":`in attesa della tua risposta`,"workspaceStatus.completed":`completato`,"workspaceStatus.idle":`inattivo`,"workspaceStatus.error":`errore`,"workspaceStatus.quota":`quota raggiunta`,"workspaceStatus.retrying":`ripresa automatica`,"workspaceList.prOpen":`#{n} — Pull request aperta`,"workspaceList.prWatchDisabledIndicator":`Controlli PR ignorati per questo workspace`,"workspaceList.prChangesRequested":`#{n} — Modifiche richieste`,"workspaceList.attentionCiFailed":`CI fallita`,"workspaceList.attentionChangesRequested":`Modifiche richieste`,"workspaceList.attentionReadyToMerge":`Pronto per il merge`,"autoLoop.status.active":`Attivo`,"autoLoop.status.waiting":`In attesa`,"autoLoop.status.blocked":`Bloccato`,"autoLoop.status.completed":`Completato`,"autoLoop.status.stopped":`Arrestato`,"autoLoop.phase.grooming":`Preparazione`,"autoLoop.phase.execution":`Esecuzione`,"autoLoop.phase.finalization":`Finalizzazione`,"autoLoop.iteration":`Iterazione {count}`,"autoLoop.resume":`Riprendi auto-loop`,"autoLoop.retryAt":`Ripresa prevista per`,"autoLoop.actionFailed":`Impossibile completare l’azione.`,"autoLoop.messages.count":`{count} istruzione/i in coda`,"autoLoop.messages.pending":`In coda`,"autoLoop.messages.dispatching":`Invio in corso`,"autoLoop.messages.unknown":`Consegna incerta`,"autoLoop.messages.delivered":`Consegnata`,"autoLoop.messages.cancel":`Annulla l’istruzione`,"autoLoop.messages.acknowledge":`Segna come ricevuta`,"autoLoop.messages.retry":`Invia di nuovo`,"autoLoop.messages.unknownHelp":`Non è stato possibile confermare la consegna. Controlla la conversazione prima di decidere. Un nuovo invio potrebbe duplicare un’istruzione già ricevuta.`,"autoLoop.reason.quota":`In attesa della quota del fornitore.`,"autoLoop.reason.transient":`Ripresa dopo un’interruzione temporanea.`,"autoLoop.reason.awaiting-user":`In attesa della tua risposta.`,"autoLoop.reason.capacity-or-lifecycle":`In attesa di un posto disponibile per un agente.`,"autoLoop.reason.message-delivery-unknown":`Risolvi l’istruzione con consegna incerta prima di riprendere.`,"autoLoop.reason.error":`Il ciclo richiede attenzione prima di continuare.`,"autoLoop.reason.stall":`Nessun progresso rilevato. Controlla l’ultima sessione prima di riprendere.`,"autoLoop.reason.awaiting-clarification":`È necessario un chiarimento prima di continuare.`,"autoLoop.toggle":`Auto-loop`,"autoLoop.start":`Avvia l'auto-loop`,"autoLoop.prepare":`Prepara per l'auto-loop`,"autoLoop.reprepare":`Ri-prepara per l'auto-loop`,"autoLoop.reprepareTooltip":`Rilancia la fase di grooming per aggiungere o aggiornare le attività prima di riavviare il loop`,"autoLoop.prepareBusy":`Attendi che l'agente finisca prima di preparare`,"autoLoop.forceReady":`So cosa faccio — salta la preparazione`,"autoLoop.forceReadyConfirm":`Saltare la preparazione e segnare auto-loop pronto? Il loop potrebbe bloccarsi se le attività non sono atomiche.`,"autoLoop.stop":`Ferma l'auto-loop`,"autoLoop.notReady":`Esegui prima «Prepara per l'auto-loop»`,"autoLoop.noTasks":`Aggiungi prima delle attività`,"autoLoop.progress":`Auto-loop · {done}/{total} attività`,"autoLoop.preparing":`Auto-loop · preparazione`,"autoLoop.preparingTooltip":`Grooming in corso — l'agente sta creando / revisionando le attività. Il loop partirà quando chiamerà mark_auto_loop_ready.`,"autoLoop.running":`Auto-loop in corso`,"autoLoop.startInMode":`Avvia in modalità auto-loop`,"autoLoop.brainstormModelPrefix":`Brainstorm:`,"autoLoop.brainstormModelTooltip":`Modello usato solo per la sessione di brainstorming iniziale — ogni attività successiva usa il modello scelto sopra`,"autoLoop.brainstormReasoningPrefix":`Brainstorm:`,"autoLoop.brainstormReasoningTooltip":`Livello di ragionamento usato solo per la sessione di brainstorming iniziale`,"autoLoop.executionModelPrefix":`Loop:`,"autoLoop.executionModelTooltip":`Modello usato per ogni attività dell'auto-loop dopo la sessione di brainstorming iniziale`,"autoLoop.sessionMode.perTask":`Nuova sessione per attività`,"autoLoop.sessionMode.label":`Sessione:`,"autoLoop.sessionMode.perTaskTooltip":`Ogni attività avvia una nuova sessione Claude Code senza memoria delle attività precedenti`,"autoLoop.sessionMode.continuous":`Sessione continua`,"autoLoop.sessionMode.continuousTooltip":`Tutte le attività si susseguono nella stessa sessione — l'agente mantiene tutto il contesto, ma la sessione si allunga nel tempo`,"koboCommand.prepAutoloopDesc":`Preparare le attività per la modalità auto-loop (atomicità)`,"staleSessionBanner.title":`Auto-loop in corso`,"staleSessionBanner.message":`Stai visualizzando una sessione precedente — l'agente sta lavorando nella più recente.`,"staleSessionBanner.staleTitle":`Sessione precedente`,"staleSessionBanner.staleMessage":`Stai visualizzando una sessione precedente — i messaggi inviati andranno a questa sessione, non alla più recente.`,"staleSessionBanner.switchToCurrent":`Passa a quella corrente`,"network.login.title":`Accesso di rete`,"network.login.description":`Questo Kōbō richiede un token per essere controllato dalla rete. Incolla il token mostrato nelle Impostazioni sulla macchina host.`,"network.login.tokenLabel":`Token`,"network.login.tokenPlaceholder":`Incolla il tuo token`,"network.login.connect":`Connetti`,"network.login.invalid":`Token non valido`,"network.login.serverError":`Errore del server — riprova.`,"network.login.unreachable":`Kōbō non è raggiungibile — controlla la connessione.`,"layout.toggleWorkspaces":`Mostra/nascondi il pannello degli spazi`,"layout.togglePanel":`Mostra/nascondi il pannello laterale`,"unsaved.title":`Uscire senza salvare?`,"unsaved.message":`Hai modifiche non salvate. Uscire da questa pagina le scarta.`,"unsaved.leave":`Esci`,"unsaved.stay":`Resta`,"prCheckout.staleRetriesExhausted":`Lo stato del repository ha continuato a cambiare mentre applicavamo le tue scelte. Chiudi questa finestra e riprova dal selettore delle pull request.`,"prPicker.title":`Importa da una pull request`,"prPicker.filterAll":`Tutte`,"prPicker.filterMine":`Le mie`,"prPicker.filterReviewRequested":`Revisione richiesta`,"prPicker.searchPlaceholder":`Cerca pull request…`,"prPicker.loadMore":`Carica altre`,"prPicker.empty":`Nessuna pull request aperta corrisponde.`,"prPicker.forkNotSupported":`Questa PR proviene da un fork; Kōbō non può eseguirne il checkout.`,"prPicker.loadFailed":`Impossibile caricare le pull request.`,"prPicker.badge.workspaceExists":`Già aperta in Kōbō`,"prPicker.badge.worktreePresent":`Worktree presente`,"prPicker.badge.localBranch":`Branch locale`,"prPicker.badge.new":`Nuova`,"prPicker.badge.draft":`Bozza`,"prCheckout.title":`Prepara la worktree`,"prCheckout.apply":`Applica`,"prCheckout.cancel":`Annulla`,"prCheckout.retry":`Riprova`,"prCheckout.diagnoseFailed":`Impossibile diagnosticare la pull request.`,"prCheckout.resolveFailed":`Impossibile risolvere il checkout della pull request.`,"prCheckout.path.required":`Inserisci un percorso di worktree che non esista già.`,"prCheckout.workspace.restoreNotAvailable":"Il ripristino di un workspace eliminato non è ancora disponibile da qui. Ricrea la sua cartella worktree su disco (ad es. con `git worktree add`) e Kōbō la ricollegherà automaticamente entro circa 30 secondi.","prCheckout.staleReloaded":`Il repository è cambiato; la diagnosi è stata aggiornata.`,"prCheckout.step.blocked":`Impossibile continuare`,"prCheckout.step.path":`Posizione della worktree`,"prCheckout.step.workspace":`Workspace esistente`,"prCheckout.step.worktree":`Worktree esistente`,"prCheckout.step.operation":`Operazione git in corso`,"prCheckout.step.changes":`Modifiche non commitate`,"prCheckout.step.divergence":`Branch locale vs origin`,"prCheckout.workspace.activeHint":`Un workspace chiamato "{name}" segue già questo branch.`,"prCheckout.workspace.open":`Apri quel workspace`,"prCheckout.workspace.continue":`Continua su un altro percorso`,"prCheckout.workspace.unarchive":`Ripristina e aprilo`,"prCheckout.workspace.restore":`Ricrea la sua worktree`,"prCheckout.worktree.orphanHint":`Esiste già una worktree su questo branch in {path}.`,"prCheckout.worktree.attach":`Collegala`,"prCheckout.worktree.branchInUse":`Questo branch è già estratto. Collega il worktree esistente.`,"prCheckout.worktree.createElsewhere":`Creane un'altra altrove`,"prCheckout.operation.hint":`Un {operation} è in corso in quella worktree.`,"prCheckout.operation.abort":`Interrompilo`,"prCheckout.operation.cancel":`Lascialo stare e fermati qui`,"prCheckout.changes.hint":`{modified} modificati, {staged} in stage, {untracked} non tracciati.`,"prCheckout.changes.stash":`Metti in stash`,"prCheckout.changes.commit":`Fai il commit`,"prCheckout.changes.discard":`Scartale (conservate in uno stash etichettato)`,"prCheckout.changes.keepResetConflict":`Conservare le modifiche locali è incompatibile con un reset. Usa stash o commit, oppure conserva il branch.`,"prCheckout.changes.keep":`Lasciale come sono`,"prCheckout.divergence.behindHint":`Il tuo branch è indietro di {behind} commit rispetto a origin.`,"prCheckout.divergence.aheadHint":`Il tuo branch ha {ahead} commit non pushati.`,"prCheckout.divergence.divergedHint":`{ahead} avanti, {behind} indietro rispetto a origin.`,"prCheckout.divergence.notFastForward":`Fast-forward non disponibile: il branch contiene commit locali.`,"prCheckout.divergence.fastForward":`Fast-forward su origin`,"prCheckout.divergence.rebase":`Rebase su origin`,"prCheckout.divergence.resetHard":`Reimposta su origin (viene prima creato un branch di backup)`,"prCheckout.divergence.keep":`Mantieni lo stato locale`,"prCheckout.blocked.forgeUnavailable":`Il CLI della forge manca o non è autenticato.`,"prCheckout.blocked.forkPr":`Questa PR proviene da un fork; Kōbō non può eseguirne il checkout.`,"prCheckout.blocked.headBranchDeleted":`Il branch non esiste più sul remote.`,"prCheckout.blocked.indexLock":`È in corso un altro processo git (index.lock è presente).`,"prCheckout.blocked.pathOccupied":`{path} esiste già e non è una worktree.`,"prCheckout.blocked.worktreeOtherBranch":`{path} è una worktree su un altro branch ({branch}).`,"prCheckout.blocked.noCommonAncestor":`Esiste già un branch locale chiamato {branch} con una storia non correlata.`,"split.title":`Vista doppia workspace`,"split.open":`Apri affiancati`,"split.openBeside":`Apri accanto`,"split.close":`Chiudi vista doppia`,"split.left":`Workspace sinistro`,"split.right":`Workspace destro`,"split.choose":`Scegli un workspace`,"split.recipient":`Invia a: {name}`,"absence.title":`Dalla tua ultima visita`,"settings.activityDigestHint":`Mostra un riepilogo degli eventi avvenuti durante la tua assenza. Disattivando questa opzione, la voce viene nascosta e la raccolta di nuovi eventi si interrompe, senza eliminare la cronologia esistente.`,"absence.pending":`Modifiche da consultare`,"absence.retention":`Attività importanti degli ultimi 30 giorni, registrate dall’installazione di questa funzione. Le visite sono memorizzate solo in questo browser.`,"absence.since":`Dal {date}`,"absence.error":`Impossibile caricare le attività.`,"absence.retry":`Riprova`,"absence.empty":`Nessuna nuova attività.`,"absence.more":`Carica altro`,"absence.markRead":`Segna gli eventi visualizzati come letti`,"absence.kind.question":`Domanda posta`,"absence.kind.permission":`Approvazione richiesta`,"absence.kind.completed":`Sessione terminata`,"absence.kind.error":`Errore dell’agente`,"absence.kind.pr-merged":`PR unita`,"absence.kind.pr-approved":`PR approvata`,"absence.kind.pr-changes-requested":`Modifiche richieste`,"absence.kind.pr-ci-failed":`CI non riuscita`,"absence.kind.pr-ci-recovered":`CI ripristinata`,"absence.kind.pr-merge-conflict":`Conflitto di merge`,"absence.kind.pr-ready-to-merge":`PR pronta per il merge`,"absence.kind.archived":`Workspace archiviato`,"absence.kind.purged":`Worktree eliminato`,"absence.kind.restored":`Worktree ripristinato`,"tours.split.controls.title":`Due workspace indipendenti`,"tours.split.controls.description":`Scegli un workspace per pannello. Ridimensiona il divisore; ogni conversazione mantiene il proprio destinatario e i propri pannelli.`,"tours.home.sort.title":`Ordina i workspace`,"tours.home.sort.description":`Scegli ordine e direzione in ogni gruppo. La scelta viene memorizzata.`,"tours.home.activity.title":`Consulta le attività dopo un’assenza`,"tours.home.activity.description":`In fondo al pannello sinistro trovi domande, sessioni terminate, errori e modifiche alle PR dalla tua ultima visita.`};export{e as default};
17
+ sudo setfacl -Rd -m u:$(whoami):rwX . && sudo setfacl -R -m u:$(whoami):rwX .`,"settings.purgeDocsPermissionsRecoverChownIntro":`Opzione B — Prendere la proprietà (più semplice, perde la traccia "creato da root nel container" ma raramente conta):`,"settings.purgeDocsPermissionsRecoverChownCommand":` sudo chown -R $(whoami):$(whoami) .`,"settings.purgeDocsPermissionsRecoverFootnote":"Suggerimento: puoi eseguire questi comandi direttamente sulla root dei worktrees (es. `~/.worktrees/`) per coprire tutti i workspace esistenti E futuri in un colpo solo. Una volta fatto, la pulizia Kōbō funzionerà senza errori di permessi.","contextMenu.runSetup":`Esegui script di setup`,"contextMenu.exportEvents":`Esporta eventi (CSV)`,"contextMenu.dismissChangesRequested":`Segna «Modifiche richieste» come visto`,"contextMenu.dismissCiFailure":`Segna «CI in errore» come visto`,"contextMenu.restoreChangesRequested":`Segna «Modifiche richieste» come non visto`,"contextMenu.restoreCiFailure":`Segna «CI in errore» come non visto`,"contextMenu.exportingEvents":`Preparazione dell'esportazione…`,"contextMenu.exportEventsError":`Esportazione degli eventi non riuscita`,"contextMenu.openNotion":`Apri in Notion`,"contextMenu.openSentry":`Apri in Sentry`,"contextMenu.openPr":`Apri PR`,"contextMenu.ignorePrWatch":`Ignora i controlli PR`,"contextMenu.resumePrWatch":`Riprendi i controlli PR`,"contextMenu.prWatchToggleFailed":`Aggiornamento dei controlli PR non riuscito`,"workspace.favorite":`Segna come preferito`,"workspace.unfavorite":`Rimuovi dai preferiti`,"workspace.showFavoritesOnly":`Mostra solo i preferiti`,"workspace.tagFilter":`Filtra per tag`,"workspace.tagFilterActive":`Filtra per tag ({count} selezionati)`,"workspace.tagFilterClear":`Cancella`,"workspace.tagFilterEmpty":`Ancora nessun tag. Definiscili nelle impostazioni e assegnali dal menu di un workspace.`,"workspace.searchArchivedToggle":`Cerca anche nei workspace archiviati`,"workspace.descriptionPlaceholder":`Aggiungi una breve descrizione`,"workspace.descriptionDialogHint":`Testo semplice, massimo 200 caratteri. Lasciare vuoto per cancellare.`,"workspace.descriptionTooLong":`La descrizione deve avere al massimo 200 caratteri.`,"workspace.descriptionSaveFailed":`Impossibile salvare la descrizione.`,"workspace.agentDescriptionTooltip":`Stato live mantenuto dall'agente`,"mcp.tool.setWorkspaceDescription":`Imposta la breve descrizione del workspace (≤ 200 caratteri).`,"tags.manage":`Gestisci tag`,"tags.manageTitle":`Gestisci i tag del workspace`,"tags.noTagsDefined":`Nessun tag definito. Aggiungine in Impostazioni > Globale > Tag.`,"tags.orphanedHint":`{count} tag non sono più nel catalogo globale. Deseleziona per rimuoverli.`,"settings.tagsTitle":`Tag dei workspace`,"settings.tagsHint":`Definisci i tag assegnabili ai workspace. Digita per aggiungere, clicca la croce per rimuovere.`,"settings.tagsLabel":`Tag disponibili`,"settings.branchPrefixesTitle":`Prefissi di branch`,"settings.branchPrefixesHint":`Gestisci i prefissi di branch Git disponibili nella pagina di creazione del workspace. Il primo è preselezionato per impostazione predefinita.`,"settings.branchPrefixesEmpty":`Nessun prefisso di branch definito. Aggiungine almeno uno qui sotto.`,"settings.branchPrefixesAddLabel":`Nuovo prefisso`,"settings.branchPrefixesEditHint":`Clicca per rinominare`,"settings.branchPrefixesMoveUp":`Sposta su`,"settings.branchPrefixesMoveDown":`Sposta giù`,"settings.worktreesTitle":`Worktree Git`,"settings.worktreesHint":`Scegli dove creare i worktree dei nuovi workspace. I percorsi relativi sono risolti dal progetto; sono supportati percorsi assoluti Linux/macOS e Windows, $HOME, ~ e %USERPROFILE%.`,"settings.worktreesPathLabel":`Percorso worktree`,"settings.worktreesPathRequired":`Il percorso worktree è obbligatorio.`,"settings.worktreesPrefixByProject":`Aggiungi il nome del progetto come prefisso ai worktree`,"settings.worktreesPrefixByProjectHint":`Posiziona ogni worktree in una sottocartella con il nome del progetto per evitare collisioni quando più progetti condividono la stessa radice.`,"settings.shareTitle":`Condividi configurazione`,"settings.shareHint":`Esporta impostazioni, template e tag come bundle JSON. Le chiavi MCP sono escluse per sicurezza.`,"settings.exportConfig":`Esporta`,"settings.importConfig":`Importa`,"settings.exportSuccess":`Configurazione esportata`,"settings.importSuccess":`Configurazione importata`,"settings.importConfirmTitle":`Importa configurazione`,"settings.importConfirmMessage":`Questo sostituirà le tue impostazioni, template e tag attuali. Le chiavi MCP vengono preservate. Continuare?`,"settings.mcp.title":`Connessioni LLM esterni (MCP)`,"settings.mcp.hint":`Collega un client MCP per creare, archiviare, liberare spazio, eliminare o ripristinare workspace, riprendere una PR e parlare con i tuoi agenti.`,"settings.mcp.remoteDisabled":`Le connessioni remote richiedono accesso alla rete e un riavvio del server dopo l’attivazione.`,"settings.mcp.clientName":`Nome del client (facoltativo)`,"settings.mcp.connection":`Connessione`,"settings.mcp.local":`HTTP locale`,"settings.mcp.remote":`HTTP remoto`,"settings.mcp.proxy":`Proxy inverso`,"settings.mcp.stdio":`Stdio locale`,"settings.mcp.copyUrl":`Copia URL`,"settings.mcp.copyConfig":`Copia configurazione`,"settings.mcp.copyWithToken":`Copia con token`,"settings.mcp.genericFormat":`Questi esempi usano il formato generico mcpServers. Adatta il contenitore al tuo client MCP. Le anteprime mostrano un segnaposto per il token.`,"settings.mcp.tokenUnavailable":`Nessun token disponibile. Attiva l’accesso alla rete prima di copiare una configurazione autenticata.`,"settings.mcp.stdioUnavailable":`Il punto di ingresso stdio non è disponibile in questa installazione. Usa HTTP o compila prima Kōbō.`,"settings.mcp.copyFailed":`Impossibile copiare negli appunti.`,"tours.settings.mcp.title":`Collega un LLM esterno`,"tours.settings.mcp.description":`Copia una configurazione HTTP o stdio per collegare un assistente esterno. Può creare un workspace con le opzioni del modulo, riprendere una PR, gestire archiviazione, eliminazione o ripristino e comunicare con i tuoi agenti.`,"settings.network.title":`Accesso di rete`,"settings.network.hint":`Controlla Kōbō da un altro dispositivo della tua LAN affidabile. Off = solo localhost. On = raggiungibile sulla rete, protetto da un token. Riavvia Kōbō dopo il cambio.`,"settings.network.enable":`Abilita accesso di rete`,"settings.network.behindProxy":`Dietro un reverse proxy`,"settings.network.behindProxyHint":`Kōbō non può più distinguere la tua macchina da una richiesta inoltrata — anche localhost dovrà presentare il token d'ora in poi. Attivalo solo se un reverse proxy (Traefik, nginx, Caddy…) si trova davanti a Kōbō.`,"settings.network.restartRequired":`Riavvia Kōbō per applicare il nuovo indirizzo di bind.`,"settings.network.token":`Token di accesso`,"settings.network.copy":`Copia`,"settings.network.copied":`Copiato`,"settings.network.regenerate":`Rigenera`,"settings.network.regenerateConfirm":`Rigenerare il token? I dispositivi connessi avranno bisogno del nuovo token.`,"settings.network.urls":`URL LAN`,"settings.network.scan":`Scansiona per connetterti`,"settings.network.noUrls":`Nessun indirizzo LAN rilevato.`,"settings.network.loadFailed":`Impossibile caricare le impostazioni di accesso di rete.`,"settings.network.updateFailed":`Impossibile aggiornare le impostazioni di accesso di rete.`,"settings.unsavedChanges.title":`Modifiche non salvate`,"settings.unsavedChanges.message":`Questo progetto ha modifiche non salvate. Cambiando progetto andranno perse.`,"settings.unsavedChanges.discard":`Scarta e cambia`,"settings.unsavedChanges.cancel":`Annulla`,"settings.loadFailed":`Impossibile caricare le impostazioni`,"settings.loadFailedHint":`Il salvataggio è disattivato: il modulo mostra i valori predefiniti e scriverli sovrascriverebbe la tua configurazione reale.`,"health.title":`Stato`,"health.tooltip":`Stato del sistema`,"changelog.title":`Changelog`,"changelog.tooltip":`Novità di Kōbō`,"changelog.empty":`Nessun changelog disponibile.`,"changelog.current":`corrente`,"changelog.currentVersion":`Versione corrente: v{version}`,"health.envTitle":`Ambiente`,"health.version":`Versione`,"health.koboHome":`Kōbō home`,"health.dbTitle":`Database`,"health.dbPath":`Percorso`,"health.dbSize":`Dimensione`,"health.schemaVersion":`Versione schema`,"health.settingsSchemaVersion":`Schema impostazioni`,"health.runtimesTitle":`Runtime agente`,"health.claudeCliTitle":`Claude Code`,"health.claudeCliMissing":`claude non trovato nel PATH`,"health.codexCliTitle":`OpenAI Codex`,"health.codexCliMissing":`binario codex non risolvibile`,"health.forgeCliTitle":`CLI di forge (gh / glab)`,"health.forgeCliMissing":`Né gh né glab trovati — pull request e monitoraggio CI non disponibili`,"health.workspacesTitle":`Workspace`,"health.workspacesCount":`{total} totali, {archived} archiviati`,"health.worktreesMissing":`{count} worktree mancanti sul disco`,"health.sessionsTitle":`Sessioni agente`,"health.sessionsOrphaned":`{n} sessione/sessioni orfana/e in esecuzione`,"health.integrationsTitle":`Integrazioni`,"health.integrationConfigured":`configurata`,"health.integrationMissing":`non configurata`,"health.integrationDisabled":`disabilitata`,"settings.integrationEnabled":`Attiva integrazione`,"health.activeTitle":`Stato attivo`,"health.activeQuotaBackoffs":`Quota backoff in attesa`,"health.activeWakeups":`Wakeup programmati`,"health.activeAutoLoop":`Auto-loop in esecuzione`,"health.activeAgentSessions":`Sessioni agente attive`,"health.activeDevServers":`Dev server in esecuzione`,"health.noneActive":`Nessuno.`,"health.quotaResumeAt":`riprende alle {time}`,"health.wakeupAt":`sveglia alle {time}`,"health.startedAgo":`avviata {time} fa`,"health.autoLoopReady":`pronto, in iterazione`,"health.autoLoopGrooming":`grooming in corso`,"session.started":`Sessione avviata`,"session.ended":`Sessione terminata`,"session.compacted":`Contesto compattato`,"session.endedCompleted":`Turno terminato — invia un messaggio per continuare`,"session.endedKilled":`Sessione interrotta`,"session.endedError":`Sessione terminata con un errore`,"session.endedWatchdog":`Sessione chiusa forzatamente dopo un periodo di inattività`,"tool.running":`In corso...`,"activity.raw_lines":`Righe di output grezze ({n})`,"api.timeout":`La richiesta ha superato il limite di {seconds} secondi.`,"api.mutationTimeout":`La richiesta ha superato il limite di {seconds} secondi. L’operazione potrebbe essere ancora in corso. Aggiorna il suo stato prima di riprovare.`,"activity.sessionsError":`Impossibile caricare le sessioni: {message}`,"activity.historyError":`Impossibile caricare la cronologia: {message}`,"activity.loading_older":`Caricamento messaggi precedenti…`,"activity.compacting":`Compattazione del contesto…`,"activity.prev_user_message":`Messaggio utente precedente`,"activity.scroll_to_bottom":`Scorri in fondo`,"activity.empty":`Ancora nulla`,"activity.emptyHint":`L’output dell’agente comparirà qui appena una sessione parte.`,"activity.a11y.region":`Annunci di attività dell’agente`,"activity.a11y.agentSaid":`Agente: {text}`,"activity.a11y.toolStarted":`Strumento {name} avviato`,"activity.a11y.toolFinished":`Strumento {name} completato`,"activity.a11y.toolFailed":`Strumento {name} fallito`,"chat.systemPrompt":`Istruzioni Kōbō`,"chat.agent":`Agente`,"chat.cleanupScript":`Script di pulizia`,"chat.archiveScript":`Script di archiviazione`,"chat.setupScript":`Script di setup`,"chat.hookScript":`Hook {event}`,"chat.scriptDone":`Fatto`,"chat.scriptComplete":`[{phase}] Completato`,"chat.scriptError":`[{phase}] Errore: {message}`,"chat.unknownError":`sconosciuto`,"chat.you":`Tu`,"chat.session":`Sessione`,"chat.nActions":`{n} azione | {n} azioni`,"chat.lastUpdatedAt":`Ultimo aggiornamento alle {time}`,"chat.scrollToTurnTop":`Scorri all'inizio del messaggio`,"migration.backing_up":`Backup del database in corso…`,"migration.running":`Migrazione dei dati dell'agente — {processed}/{total}`,"migration.error":`Migrazione non riuscita`,"migration.backup_location":`Un backup è stato salvato in {path}. Riavvia Kōbō per riprovare.`,"migration.retry":`Riavvia Kōbō per riprovare.`,"engine.select":`Engine`,"engine.model":`Modello`,"engine.effort":`Livello di ragionamento`,"wakeup.scheduledIn":`Prossimo risveglio tra {n}s`,"wakeup.scheduledAt":`Prossimo risveglio alle {time}`,"wakeup.firing":`Risveglio in corso...`,"wakeup.reason":`Motivo: {reason}`,"wakeup.cancel":`Annulla questo risveglio`,"wakeup.pendingIndicator":`Risveglio programmato`,"cron.pendingIndicator":`{n} cron programmato/i`,"schedule.tabLabel":`Pianificazione`,"schedule.admissionTitle":`Nuova sessione automatica attualmente non disponibile.`,"schedule.admissionHint":`Le scadenze restano invariate. I messaggi in conversazioni esistenti seguono regole proprie.`,"schedule.admission.not-found":`Spazio non trovato.`,"schedule.admission.archived":`Spazio archiviato.`,"schedule.admission.purged":`Ripristina il worktree.`,"schedule.admission.shutdown":`Il server si sta arrestando.`,"schedule.admission.lifecycle":`Operazione sullo spazio in corso.`,"schedule.admission.active-session":`La sessione attuale non è ancora chiusa.`,"schedule.admission.awaiting-user":`È richiesta una risposta utente.`,"schedule.admission.compacting":`Compattazione del contesto in corso.`,"schedule.admission.quota":`In attesa del ripristino della quota.`,"schedule.admission.blocked":`Ciclo bloccato; risolvi la causa indicata.`,"schedule.admission.capacity":`Limite di concorrenza raggiunto: {running}/{limit} sessioni.`,"schedule.panelTitle":`Automazione`,"schedule.panelDescription":`Risvegliare questo workspace più tardi o eseguire istruzioni secondo una pianificazione.`,"schedule.activeTitle":`Pianificazioni attive`,"schedule.emptyTitle":`Nessuna pianificazione`,"schedule.emptyDescription":`Crea un wakeup singolo o un’attività ricorrente qui sotto.`,"schedule.cancelWakeup":`Annulla questo wakeup`,"schedule.cancelCron":`Elimina questa attività ricorrente`,"schedule.createTitle":`Crea una pianificazione`,"schedule.createDescription":`Scegli quando e come deve essere eseguito l'agente.`,"schedule.typeWakeup":`Wakeup singolo`,"schedule.typeRecurring":`Attività ricorrente`,"schedule.wakeupDescription":`Esegui il prompt una volta dopo un intervallo.`,"schedule.cronDescription":`Esegui il prompt periodicamente con una frequenza fissa.`,"schedule.promptHint":`Istruzioni che verranno inviate all'agente`,"schedule.frequencyTitle":`Frequenza`,"schedule.advancedDescription":`Usa un’espressione cron grezza`,"schedule.cronExpressionLabel":`Espressione cron`,"schedule.sessionModeTitle":`Sessione di esecuzione`,"schedule.modeResume":`Riprendi sessione`,"schedule.oneShotHint":`Rimuovi questa pianificazione dopo la prima esecuzione.`,"schedule.wakeupTitle":`Wakeup in attesa`,"schedule.cronsTitle":`Pianificazioni ricorrenti`,"schedule.noWakeup":`Nessun wakeup pianificato`,"schedule.noCrons":`Nessun cron pianificato`,"schedule.invalidCron":`Inattiva: espressione non valida. Elimina e ricrea questa pianificazione.`,"schedule.nextFireAt":`prossimo alle {time}`,"schedule.lastFiredAt":`ultimo {time} fa`,"schedule.addCronTitle":`Aggiungi un'attività ricorrente`,"schedule.addWakeupTitle":`Programma un wakeup`,"schedule.every":`Ogni`,"schedule.unitMinutes":`minuti`,"schedule.unitHours":`ore`,"schedule.unitDays":`giorni`,"schedule.daysDriftWarning":`L'intervallo può ridursi a 1 giorno a fine mese (limite di cron).`,"schedule.advancedExpression":`Espressione avanzata (opzionale)`,"schedule.advancedHint":`Cron grezzo (es. */15 * * * *) o {'@'}hourly/{'@'}daily — sostituisce il selettore se compilato.`,"schedule.promptLabel":`Prompt`,"schedule.labelOptional":`Etichetta (opzionale)`,"schedule.delayMinutes":`Ritardo (minuti)`,"schedule.modeFresh":`Nuova sessione`,"schedule.oneShot":`Esegui una sola volta`,"schedule.addCronBtn":`Aggiungi cron`,"schedule.addWakeupBtn":`Programma wakeup`,"schedule.cronCreated":`Attività ricorrente aggiunta`,"schedule.wakeupCreated":`Wakeup programmato`,"askUserQuestion.title":`L'agente sta facendo una domanda`,"askUserQuestion.submit":`Invia risposta`,"askUserQuestion.multiSelectHint":`Seleziona una o più opzioni`,"askUserQuestion.otherOption":`Altro`,"askUserQuestion.otherOptionHint":`specifica nel prossimo messaggio`,"askUserQuestion.freeFormLabel":`Specifica la tua risposta`,"askUserQuestion.freeFormHint":`Questa risposta verrà inviata direttamente all'agente.`,"askUserQuestion.noPending":`Nessuna domanda in attesa`,"askUserQuestion.next":`Avanti`,"askUserQuestion.previous":`Indietro`,"askUserQuestion.cancel":`Annulla`,"askUserQuestion.cancelTooltip":`Salta questa domanda — l'agente proseguirà senza risposta`,"askUserQuestion.collapse":`Riduci il pannello della domanda`,"askUserQuestion.expand":`Espandi il pannello della domanda`,"permissionRequest.title":`L'agente vuole usare uno strumento`,"permissionRequest.allow":`Consenti`,"permissionRequest.allowOnce":`Consenti una volta`,"permissionRequest.allowTurn":`Consenti questo turno`,"permissionRequest.operationUnavailable":`Dettagli non disponibili; autorizza una volta o l’intero strumento.`,"permissionRequest.allowOperation":`Consenti sempre questa operazione`,"permissionRequest.allowTool":`Consenti sempre questo strumento`,"permissionRequest.deny":`Nega`,"permissionRequest.tool":`Strumento`,"permissionRequest.input":`Input`,"permissionRequest.rawInput":`Dettagli tecnici`,"permissionRequest.collapse":`Riduci il pannello dei permessi`,"permissionRequest.expand":`Espandi il pannello dei permessi`,"permissionRequest.denied":`negato dall'utente`,"workspaceStatus.created":`creato`,"workspaceStatus.extracting":`estrazione`,"workspaceStatus.brainstorming":`brainstorming`,"workspaceStatus.compacting":`compattazione`,"chatInput.compactingBanner":`Compattazione del contesto in corso. Potrai inviare messaggi al termine.`,"workspaceStatus.executing":`in corso`,"workspaceStatus.awaitingUser":`in attesa della tua risposta`,"workspaceStatus.completed":`completato`,"workspaceStatus.idle":`inattivo`,"workspaceStatus.error":`errore`,"workspaceStatus.quota":`quota raggiunta`,"workspaceStatus.retrying":`ripresa automatica`,"workspaceList.prOpen":`#{n} — Pull request aperta`,"workspaceList.prWatchDisabledIndicator":`Controlli PR ignorati per questo workspace`,"workspaceList.prChangesRequested":`#{n} — Modifiche richieste`,"workspaceList.attentionCiFailed":`CI fallita`,"workspaceList.attentionChangesRequested":`Modifiche richieste`,"workspaceList.attentionReadyToMerge":`Pronto per il merge`,"autoLoop.status.active":`Attivo`,"autoLoop.status.waiting":`In attesa`,"autoLoop.status.blocked":`Bloccato`,"autoLoop.status.completed":`Completato`,"autoLoop.status.stopped":`Arrestato`,"autoLoop.phase.grooming":`Preparazione`,"autoLoop.phase.execution":`Esecuzione`,"autoLoop.phase.finalization":`Finalizzazione`,"autoLoop.iteration":`Iterazione {count}`,"autoLoop.resume":`Riprendi auto-loop`,"autoLoop.retryAt":`Ripresa prevista per`,"autoLoop.actionFailed":`Impossibile completare l’azione.`,"autoLoop.messages.count":`{count} istruzione/i in coda`,"autoLoop.messages.pending":`In coda`,"autoLoop.messages.dispatching":`Invio in corso`,"autoLoop.messages.unknown":`Consegna incerta`,"autoLoop.messages.delivered":`Consegnata`,"autoLoop.messages.cancel":`Annulla l’istruzione`,"autoLoop.messages.acknowledge":`Segna come ricevuta`,"autoLoop.messages.retry":`Invia di nuovo`,"autoLoop.messages.unknownHelp":`Non è stato possibile confermare la consegna. Controlla la conversazione prima di decidere. Un nuovo invio potrebbe duplicare un’istruzione già ricevuta.`,"autoLoop.reason.quota":`In attesa della quota del fornitore.`,"autoLoop.reason.transient":`Ripresa dopo un’interruzione temporanea.`,"autoLoop.reason.awaiting-user":`In attesa della tua risposta.`,"autoLoop.reason.capacity-or-lifecycle":`In attesa di un posto disponibile per un agente.`,"autoLoop.reason.message-delivery-unknown":`Risolvi l’istruzione con consegna incerta prima di riprendere.`,"autoLoop.reason.error":`Il ciclo richiede attenzione prima di continuare.`,"autoLoop.reason.stall":`Nessun progresso rilevato. Controlla l’ultima sessione prima di riprendere.`,"autoLoop.reason.awaiting-clarification":`È necessario un chiarimento prima di continuare.`,"autoLoop.toggle":`Auto-loop`,"autoLoop.start":`Avvia l'auto-loop`,"autoLoop.prepare":`Prepara per l'auto-loop`,"autoLoop.reprepare":`Ri-prepara per l'auto-loop`,"autoLoop.reprepareTooltip":`Rilancia la fase di grooming per aggiungere o aggiornare le attività prima di riavviare il loop`,"autoLoop.prepareBusy":`Attendi che l'agente finisca prima di preparare`,"autoLoop.forceReady":`So cosa faccio — salta la preparazione`,"autoLoop.forceReadyConfirm":`Saltare la preparazione e segnare auto-loop pronto? Il loop potrebbe bloccarsi se le attività non sono atomiche.`,"autoLoop.stop":`Ferma l'auto-loop`,"autoLoop.notReady":`Esegui prima «Prepara per l'auto-loop»`,"autoLoop.noTasks":`Aggiungi prima delle attività`,"autoLoop.progress":`Auto-loop · {done}/{total} attività`,"autoLoop.preparing":`Auto-loop · preparazione`,"autoLoop.preparingTooltip":`Grooming in corso — l'agente sta creando / revisionando le attività. Il loop partirà quando chiamerà mark_auto_loop_ready.`,"autoLoop.running":`Auto-loop in corso`,"autoLoop.startInMode":`Avvia in modalità auto-loop`,"autoLoop.brainstormModelPrefix":`Brainstorm:`,"autoLoop.brainstormModelTooltip":`Modello usato solo per la sessione di brainstorming iniziale — ogni attività successiva usa il modello scelto sopra`,"autoLoop.brainstormReasoningPrefix":`Brainstorm:`,"autoLoop.brainstormReasoningTooltip":`Livello di ragionamento usato solo per la sessione di brainstorming iniziale`,"autoLoop.executionModelPrefix":`Loop:`,"autoLoop.executionModelTooltip":`Modello usato per ogni attività dell'auto-loop dopo la sessione di brainstorming iniziale`,"autoLoop.sessionMode.perTask":`Nuova sessione per attività`,"autoLoop.sessionMode.label":`Sessione:`,"autoLoop.sessionMode.perTaskTooltip":`Ogni attività avvia una nuova sessione Claude Code senza memoria delle attività precedenti`,"autoLoop.sessionMode.continuous":`Sessione continua`,"autoLoop.sessionMode.continuousTooltip":`Tutte le attività si susseguono nella stessa sessione — l'agente mantiene tutto il contesto, ma la sessione si allunga nel tempo`,"koboCommand.prepAutoloopDesc":`Preparare le attività per la modalità auto-loop (atomicità)`,"staleSessionBanner.title":`Auto-loop in corso`,"staleSessionBanner.message":`Stai visualizzando una sessione precedente — l'agente sta lavorando nella più recente.`,"staleSessionBanner.staleTitle":`Sessione precedente`,"staleSessionBanner.staleMessage":`Stai visualizzando una sessione precedente — i messaggi inviati andranno a questa sessione, non alla più recente.`,"staleSessionBanner.switchToCurrent":`Passa a quella corrente`,"network.login.title":`Accesso di rete`,"network.login.description":`Questo Kōbō richiede un token per essere controllato dalla rete. Incolla il token mostrato nelle Impostazioni sulla macchina host.`,"network.login.tokenLabel":`Token`,"network.login.tokenPlaceholder":`Incolla il tuo token`,"network.login.connect":`Connetti`,"network.login.invalid":`Token non valido`,"network.login.serverError":`Errore del server — riprova.`,"network.login.unreachable":`Kōbō non è raggiungibile — controlla la connessione.`,"layout.toggleWorkspaces":`Mostra/nascondi il pannello degli spazi`,"layout.togglePanel":`Mostra/nascondi il pannello laterale`,"unsaved.title":`Uscire senza salvare?`,"unsaved.message":`Hai modifiche non salvate. Uscire da questa pagina le scarta.`,"unsaved.leave":`Esci`,"unsaved.stay":`Resta`,"prCheckout.staleRetriesExhausted":`Lo stato del repository ha continuato a cambiare mentre applicavamo le tue scelte. Chiudi questa finestra e riprova dal selettore delle pull request.`,"prPicker.title":`Importa da una pull request`,"prPicker.filterAll":`Tutte`,"prPicker.filterMine":`Le mie`,"prPicker.filterReviewRequested":`Revisione richiesta`,"prPicker.searchPlaceholder":`Cerca pull request…`,"prPicker.loadMore":`Carica altre`,"prPicker.empty":`Nessuna pull request aperta corrisponde.`,"prPicker.forkNotSupported":`Questa PR proviene da un fork; Kōbō non può eseguirne il checkout.`,"prPicker.loadFailed":`Impossibile caricare le pull request.`,"prPicker.badge.workspaceExists":`Già aperta in Kōbō`,"prPicker.badge.worktreePresent":`Worktree presente`,"prPicker.badge.localBranch":`Branch locale`,"prPicker.badge.new":`Nuova`,"prPicker.badge.draft":`Bozza`,"prCheckout.title":`Prepara la worktree`,"prCheckout.apply":`Applica`,"prCheckout.cancel":`Annulla`,"prCheckout.retry":`Riprova`,"prCheckout.diagnoseFailed":`Impossibile diagnosticare la pull request.`,"prCheckout.resolveFailed":`Impossibile risolvere il checkout della pull request.`,"prCheckout.path.required":`Inserisci un percorso di worktree che non esista già.`,"prCheckout.workspace.restoreNotAvailable":"Il ripristino di un workspace eliminato non è ancora disponibile da qui. Ricrea la sua cartella worktree su disco (ad es. con `git worktree add`) e Kōbō la ricollegherà automaticamente entro circa 30 secondi.","prCheckout.staleReloaded":`Il repository è cambiato; la diagnosi è stata aggiornata.`,"prCheckout.step.blocked":`Impossibile continuare`,"prCheckout.step.path":`Posizione della worktree`,"prCheckout.step.workspace":`Workspace esistente`,"prCheckout.step.worktree":`Worktree esistente`,"prCheckout.step.operation":`Operazione git in corso`,"prCheckout.step.changes":`Modifiche non commitate`,"prCheckout.step.divergence":`Branch locale vs origin`,"prCheckout.workspace.activeHint":`Un workspace chiamato "{name}" segue già questo branch.`,"prCheckout.workspace.open":`Apri quel workspace`,"prCheckout.workspace.continue":`Continua su un altro percorso`,"prCheckout.workspace.unarchive":`Ripristina e aprilo`,"prCheckout.workspace.restore":`Ricrea la sua worktree`,"prCheckout.worktree.orphanHint":`Esiste già una worktree su questo branch in {path}.`,"prCheckout.worktree.attach":`Collegala`,"prCheckout.worktree.branchInUse":`Questo branch è già estratto. Collega il worktree esistente.`,"prCheckout.worktree.createElsewhere":`Creane un'altra altrove`,"prCheckout.operation.hint":`Un {operation} è in corso in quella worktree.`,"prCheckout.operation.abort":`Interrompilo`,"prCheckout.operation.cancel":`Lascialo stare e fermati qui`,"prCheckout.changes.hint":`{modified} modificati, {staged} in stage, {untracked} non tracciati.`,"prCheckout.changes.stash":`Metti in stash`,"prCheckout.changes.commit":`Fai il commit`,"prCheckout.changes.discard":`Scartale (conservate in uno stash etichettato)`,"prCheckout.changes.keepResetConflict":`Conservare le modifiche locali è incompatibile con un reset. Usa stash o commit, oppure conserva il branch.`,"prCheckout.changes.keep":`Lasciale come sono`,"prCheckout.divergence.behindHint":`Il tuo branch è indietro di {behind} commit rispetto a origin.`,"prCheckout.divergence.aheadHint":`Il tuo branch ha {ahead} commit non pushati.`,"prCheckout.divergence.divergedHint":`{ahead} avanti, {behind} indietro rispetto a origin.`,"prCheckout.divergence.notFastForward":`Fast-forward non disponibile: il branch contiene commit locali.`,"prCheckout.divergence.fastForward":`Fast-forward su origin`,"prCheckout.divergence.rebase":`Rebase su origin`,"prCheckout.divergence.resetHard":`Reimposta su origin (viene prima creato un branch di backup)`,"prCheckout.divergence.keep":`Mantieni lo stato locale`,"prCheckout.blocked.forgeUnavailable":`Il CLI della forge manca o non è autenticato.`,"prCheckout.blocked.forkPr":`Questa PR proviene da un fork; Kōbō non può eseguirne il checkout.`,"prCheckout.blocked.headBranchDeleted":`Il branch non esiste più sul remote.`,"prCheckout.blocked.indexLock":`È in corso un altro processo git (index.lock è presente).`,"prCheckout.blocked.pathOccupied":`{path} esiste già e non è una worktree.`,"prCheckout.blocked.worktreeOtherBranch":`{path} è una worktree su un altro branch ({branch}).`,"prCheckout.blocked.noCommonAncestor":`Esiste già un branch locale chiamato {branch} con una storia non correlata.`,"split.title":`Vista doppia workspace`,"split.open":`Apri affiancati`,"split.openBeside":`Apri accanto`,"split.close":`Chiudi vista doppia`,"split.left":`Workspace sinistro`,"split.right":`Workspace destro`,"split.choose":`Scegli un workspace`,"split.recipient":`Invia a: {name}`,"absence.title":`Dalla tua ultima visita`,"settings.activityDigestHint":`Mostra un riepilogo degli eventi avvenuti durante la tua assenza. Disattivando questa opzione, la voce viene nascosta e la raccolta di nuovi eventi si interrompe, senza eliminare la cronologia esistente.`,"absence.pending":`Modifiche da consultare`,"absence.retention":`Attività importanti degli ultimi 30 giorni, registrate dall’installazione di questa funzione. Le visite sono memorizzate solo in questo browser.`,"absence.since":`Dal {date}`,"absence.error":`Impossibile caricare le attività.`,"absence.retry":`Riprova`,"absence.empty":`Nessuna nuova attività.`,"absence.more":`Carica altro`,"absence.markRead":`Segna gli eventi visualizzati come letti`,"absence.kind.question":`Domanda posta`,"absence.kind.permission":`Approvazione richiesta`,"absence.kind.completed":`Sessione terminata`,"absence.kind.error":`Errore dell’agente`,"absence.kind.pr-merged":`PR unita`,"absence.kind.pr-approved":`PR approvata`,"absence.kind.pr-changes-requested":`Modifiche richieste`,"absence.kind.pr-ci-failed":`CI non riuscita`,"absence.kind.pr-ci-recovered":`CI ripristinata`,"absence.kind.pr-merge-conflict":`Conflitto di merge`,"absence.kind.pr-ready-to-merge":`PR pronta per il merge`,"absence.kind.archived":`Workspace archiviato`,"absence.kind.purged":`Worktree eliminato`,"absence.kind.restored":`Worktree ripristinato`,"tours.split.controls.title":`Due workspace indipendenti`,"tours.split.controls.description":`Scegli un workspace per pannello. Ridimensiona il divisore; ogni conversazione mantiene il proprio destinatario e i propri pannelli.`,"tours.home.sort.title":`Ordina i workspace`,"tours.home.sort.description":`Scegli ordine e direzione in ogni gruppo. La scelta viene memorizzata.`,"tours.home.activity.title":`Consulta le attività dopo un’assenza`,"tours.home.activity.description":`In fondo al pannello sinistro trovi domande, sessioni terminate, errori e modifiche alle PR dalla tua ultima visita.`,"progress.title":`Attività`,"progress.status.running":`In corso`,"progress.status.succeeded":`Riuscita`,"progress.status.failed":`Fallita`,"progress.status.interrupted":`Monitoraggio interrotto`,"progress.dismiss":`Nascondi {label}`,"progress.dismissHint":`Nascondi questa attività senza interrompere il lavoro`,"progress.others":`Mostra le altre ({count})`,"progress.collapse":`Mostra meno`,"progress.loadError":`Impossibile caricare le attività.`,"progress.dismissError":`Impossibile nascondere questa attività. Riprova con il pulsante di chiusura.`,"progress.retry":`Riprova`,"tours.workspace.progress.title":`Avanzamento delle attività`,"tours.workspace.progress.description":`Gli agenti e i loro sottoagenti segnalano le attività lunghe sopra il campo del messaggio. Sono mostrate tre attività; espandi per vedere le altre. I valori sono dichiarati dagli agenti e non costituiscono una verifica. I successi scompaiono dopo cinque secondi; gli errori restano visibili. Chiudere nasconde solo quella attività senza annullare il lavoro.`};export{e as default};
@@ -1 +1 @@
1
- import{conf as e,language as t}from"./typescript-Bjcc3kYC.js";var n=e,r={defaultToken:`invalid`,tokenPostfix:`.js`,keywords:`break.case.catch.class.continue.const.constructor.debugger.default.delete.do.else.export.extends.false.finally.for.from.function.get.if.import.in.instanceof.let.new.null.return.set.static.super.switch.symbol.this.throw.true.try.typeof.undefined.var.void.while.with.yield.async.await.of`.split(`.`),typeKeywords:[],operators:t.operators,symbols:t.symbols,escapes:t.escapes,digits:t.digits,octaldigits:t.octaldigits,binarydigits:t.binarydigits,hexdigits:t.hexdigits,regexpctl:t.regexpctl,regexpesc:t.regexpesc,tokenizer:t.tokenizer};export{n as conf,r as language};
1
+ import{conf as e,language as t}from"./typescript-Dep00l0X.js";var n=e,r={defaultToken:`invalid`,tokenPostfix:`.js`,keywords:`break.case.catch.class.continue.const.constructor.debugger.default.delete.do.else.export.extends.false.finally.for.from.function.get.if.import.in.instanceof.let.new.null.return.set.static.super.switch.symbol.this.throw.true.try.typeof.undefined.var.void.while.with.yield.async.await.of`.split(`.`),typeKeywords:[],operators:t.operators,symbols:t.symbols,escapes:t.escapes,digits:t.digits,octaldigits:t.octaldigits,binarydigits:t.binarydigits,hexdigits:t.hexdigits,regexpctl:t.regexpctl,regexpesc:t.regexpesc,tokenizer:t.tokenizer};export{n as conf,r as language};
@@ -1 +1 @@
1
- import{n as e}from"./editor.api-BoFiCjBZ.js";var t=[`area`,`base`,`br`,`col`,`embed`,`hr`,`img`,`input`,`keygen`,`link`,`menuitem`,`meta`,`param`,`source`,`track`,`wbr`],n={wordPattern:/(-?\d*\.\d\w*)|([^\`\~\!\@\$\^\&\*\(\)\=\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\s]+)/g,brackets:[[`<!--`,`-->`],[`<`,`>`],[`{{`,`}}`],[`{%`,`%}`],[`{`,`}`],[`(`,`)`]],autoClosingPairs:[{open:`{`,close:`}`},{open:`%`,close:`%`},{open:`[`,close:`]`},{open:`(`,close:`)`},{open:`"`,close:`"`},{open:`'`,close:`'`}],surroundingPairs:[{open:`<`,close:`>`},{open:`"`,close:`"`},{open:`'`,close:`'`}],onEnterRules:[{beforeText:RegExp(`<(?!(?:${t.join(`|`)}))(\\w[\\w\\d]*)([^/>]*(?!/)>)[^<]*$`,`i`),afterText:/^<\/(\w[\w\d]*)\s*>$/i,action:{indentAction:e.IndentAction.IndentOutdent}},{beforeText:RegExp(`<(?!(?:${t.join(`|`)}))(\\w[\\w\\d]*)([^/>]*(?!/)>)[^<]*$`,`i`),action:{indentAction:e.IndentAction.Indent}}]},r={defaultToken:``,tokenPostfix:``,builtinTags:`if.else.elseif.endif.render.assign.capture.endcapture.case.endcase.comment.endcomment.cycle.decrement.for.endfor.include.increment.layout.raw.endraw.render.tablerow.endtablerow.unless.endunless`.split(`.`),builtinFilters:`abs.append.at_least.at_most.capitalize.ceil.compact.date.default.divided_by.downcase.escape.escape_once.first.floor.join.json.last.lstrip.map.minus.modulo.newline_to_br.plus.prepend.remove.remove_first.replace.replace_first.reverse.round.rstrip.size.slice.sort.sort_natural.split.strip.strip_html.strip_newlines.times.truncate.truncatewords.uniq.upcase.url_decode.url_encode.where`.split(`.`),constants:[`true`,`false`],operators:[`==`,`!=`,`>`,`<`,`>=`,`<=`],symbol:/[=><!]+/,identifier:/[a-zA-Z_][\w]*/,tokenizer:{root:[[/\{\%\s*comment\s*\%\}/,`comment.start.liquid`,`@comment`],[/\{\{/,{token:`@rematch`,switchTo:`@liquidState.root`}],[/\{\%/,{token:`@rematch`,switchTo:`@liquidState.root`}],[/(<)([\w\-]+)(\/>)/,[`delimiter.html`,`tag.html`,`delimiter.html`]],[/(<)([:\w]+)/,[`delimiter.html`,{token:`tag.html`,next:`@otherTag`}]],[/(<\/)([\w\-]+)/,[`delimiter.html`,{token:`tag.html`,next:`@otherTag`}]],[/</,`delimiter.html`],[/\{/,`delimiter.html`],[/[^<{]+/]],comment:[[/\{\%\s*endcomment\s*\%\}/,`comment.end.liquid`,`@pop`],[/./,`comment.content.liquid`]],otherTag:[[/\{\{/,{token:`@rematch`,switchTo:`@liquidState.otherTag`}],[/\{\%/,{token:`@rematch`,switchTo:`@liquidState.otherTag`}],[/\/?>/,`delimiter.html`,`@pop`],[/"([^"]*)"/,`attribute.value`],[/'([^']*)'/,`attribute.value`],[/[\w\-]+/,`attribute.name`],[/=/,`delimiter`],[/[ \t\r\n]+/]],liquidState:[[/\{\{/,`delimiter.output.liquid`],[/\}\}/,{token:`delimiter.output.liquid`,switchTo:`@$S2.$S3`}],[/\{\%/,`delimiter.tag.liquid`],[/raw\s*\%\}/,`delimiter.tag.liquid`,`@liquidRaw`],[/\%\}/,{token:`delimiter.tag.liquid`,switchTo:`@$S2.$S3`}],{include:`liquidRoot`}],liquidRaw:[[/^(?!\{\%\s*endraw\s*\%\}).+/],[/\{\%/,`delimiter.tag.liquid`],[/@identifier/],[/\%\}/,{token:`delimiter.tag.liquid`,next:`@root`}]],liquidRoot:[[/\d+(\.\d+)?/,`number.liquid`],[/"[^"]*"/,`string.liquid`],[/'[^']*'/,`string.liquid`],[/\s+/],[/@symbol/,{cases:{"@operators":`operator.liquid`,"@default":``}}],[/\./],[/@identifier/,{cases:{"@constants":`keyword.liquid`,"@builtinFilters":`predefined.liquid`,"@builtinTags":`predefined.liquid`,"@default":`variable.liquid`}}],[/[^}|%]/,`variable.liquid`]]}};export{n as conf,r as language};
1
+ import{n as e}from"./editor.api-CgbPVW9s.js";var t=[`area`,`base`,`br`,`col`,`embed`,`hr`,`img`,`input`,`keygen`,`link`,`menuitem`,`meta`,`param`,`source`,`track`,`wbr`],n={wordPattern:/(-?\d*\.\d\w*)|([^\`\~\!\@\$\^\&\*\(\)\=\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\s]+)/g,brackets:[[`<!--`,`-->`],[`<`,`>`],[`{{`,`}}`],[`{%`,`%}`],[`{`,`}`],[`(`,`)`]],autoClosingPairs:[{open:`{`,close:`}`},{open:`%`,close:`%`},{open:`[`,close:`]`},{open:`(`,close:`)`},{open:`"`,close:`"`},{open:`'`,close:`'`}],surroundingPairs:[{open:`<`,close:`>`},{open:`"`,close:`"`},{open:`'`,close:`'`}],onEnterRules:[{beforeText:RegExp(`<(?!(?:${t.join(`|`)}))(\\w[\\w\\d]*)([^/>]*(?!/)>)[^<]*$`,`i`),afterText:/^<\/(\w[\w\d]*)\s*>$/i,action:{indentAction:e.IndentAction.IndentOutdent}},{beforeText:RegExp(`<(?!(?:${t.join(`|`)}))(\\w[\\w\\d]*)([^/>]*(?!/)>)[^<]*$`,`i`),action:{indentAction:e.IndentAction.Indent}}]},r={defaultToken:``,tokenPostfix:``,builtinTags:`if.else.elseif.endif.render.assign.capture.endcapture.case.endcase.comment.endcomment.cycle.decrement.for.endfor.include.increment.layout.raw.endraw.render.tablerow.endtablerow.unless.endunless`.split(`.`),builtinFilters:`abs.append.at_least.at_most.capitalize.ceil.compact.date.default.divided_by.downcase.escape.escape_once.first.floor.join.json.last.lstrip.map.minus.modulo.newline_to_br.plus.prepend.remove.remove_first.replace.replace_first.reverse.round.rstrip.size.slice.sort.sort_natural.split.strip.strip_html.strip_newlines.times.truncate.truncatewords.uniq.upcase.url_decode.url_encode.where`.split(`.`),constants:[`true`,`false`],operators:[`==`,`!=`,`>`,`<`,`>=`,`<=`],symbol:/[=><!]+/,identifier:/[a-zA-Z_][\w]*/,tokenizer:{root:[[/\{\%\s*comment\s*\%\}/,`comment.start.liquid`,`@comment`],[/\{\{/,{token:`@rematch`,switchTo:`@liquidState.root`}],[/\{\%/,{token:`@rematch`,switchTo:`@liquidState.root`}],[/(<)([\w\-]+)(\/>)/,[`delimiter.html`,`tag.html`,`delimiter.html`]],[/(<)([:\w]+)/,[`delimiter.html`,{token:`tag.html`,next:`@otherTag`}]],[/(<\/)([\w\-]+)/,[`delimiter.html`,{token:`tag.html`,next:`@otherTag`}]],[/</,`delimiter.html`],[/\{/,`delimiter.html`],[/[^<{]+/]],comment:[[/\{\%\s*endcomment\s*\%\}/,`comment.end.liquid`,`@pop`],[/./,`comment.content.liquid`]],otherTag:[[/\{\{/,{token:`@rematch`,switchTo:`@liquidState.otherTag`}],[/\{\%/,{token:`@rematch`,switchTo:`@liquidState.otherTag`}],[/\/?>/,`delimiter.html`,`@pop`],[/"([^"]*)"/,`attribute.value`],[/'([^']*)'/,`attribute.value`],[/[\w\-]+/,`attribute.name`],[/=/,`delimiter`],[/[ \t\r\n]+/]],liquidState:[[/\{\{/,`delimiter.output.liquid`],[/\}\}/,{token:`delimiter.output.liquid`,switchTo:`@$S2.$S3`}],[/\{\%/,`delimiter.tag.liquid`],[/raw\s*\%\}/,`delimiter.tag.liquid`,`@liquidRaw`],[/\%\}/,{token:`delimiter.tag.liquid`,switchTo:`@$S2.$S3`}],{include:`liquidRoot`}],liquidRaw:[[/^(?!\{\%\s*endraw\s*\%\}).+/],[/\{\%/,`delimiter.tag.liquid`],[/@identifier/],[/\%\}/,{token:`delimiter.tag.liquid`,next:`@root`}]],liquidRoot:[[/\d+(\.\d+)?/,`number.liquid`],[/"[^"]*"/,`string.liquid`],[/'[^']*'/,`string.liquid`],[/\s+/],[/@symbol/,{cases:{"@operators":`operator.liquid`,"@default":``}}],[/\./],[/@identifier/,{cases:{"@constants":`keyword.liquid`,"@builtinFilters":`predefined.liquid`,"@builtinTags":`predefined.liquid`,"@default":`variable.liquid`}}],[/[^}|%]/,`variable.liquid`]]}};export{n as conf,r as language};
@@ -1 +1 @@
1
- import{n as e}from"./editor.api-BoFiCjBZ.js";var t={comments:{blockComment:[`{/*`,`*/}`]},brackets:[[`{`,`}`]],autoClosingPairs:[{open:`"`,close:`"`},{open:`'`,close:`'`},{open:`“`,close:`”`},{open:`‘`,close:`’`},{open:"`",close:"`"},{open:`{`,close:`}`},{open:`(`,close:`)`},{open:`_`,close:`_`},{open:`**`,close:`**`},{open:`<`,close:`>`}],onEnterRules:[{beforeText:/^\s*- .+/,action:{indentAction:e.IndentAction.None,appendText:`- `}},{beforeText:/^\s*\+ .+/,action:{indentAction:e.IndentAction.None,appendText:`+ `}},{beforeText:/^\s*\* .+/,action:{indentAction:e.IndentAction.None,appendText:`* `}},{beforeText:/^> /,action:{indentAction:e.IndentAction.None,appendText:`> `}},{beforeText:/<\w+/,action:{indentAction:e.IndentAction.Indent}},{beforeText:/\s+>\s*$/,action:{indentAction:e.IndentAction.Indent}},{beforeText:/<\/\w+>/,action:{indentAction:e.IndentAction.Outdent}},...Array.from({length:100},(t,n)=>({beforeText:RegExp(`^${n}\\. .+`),action:{indentAction:e.IndentAction.None,appendText:`${n+1}. `}}))]},n={defaultToken:``,tokenPostfix:`.mdx`,control:/[!#()*+.[\\\]_`{}\-]/,escapes:/\\@control/,tokenizer:{root:[[/^---$/,{token:`meta.content`,next:`@frontmatter`,nextEmbedded:`yaml`}],[/^\s*import/,{token:`keyword`,next:`@import`,nextEmbedded:`js`}],[/^\s*export/,{token:`keyword`,next:`@export`,nextEmbedded:`js`}],[/<\w+/,{token:`type.identifier`,next:`@jsx`}],[/<\/?\w+>/,`type.identifier`],[/^(\s*)(>*\s*)(#{1,6}\s)/,[{token:`white`},{token:`comment`},{token:`keyword`,next:`@header`}]],[/^(\s*)(>*\s*)([*+-])(\s+)/,[`white`,`comment`,`keyword`,`white`]],[/^(\s*)(>*\s*)(\d{1,9}\.)(\s+)/,[`white`,`comment`,`number`,`white`]],[/^(\s*)(>*\s*)(\d{1,9}\.)(\s+)/,[`white`,`comment`,`number`,`white`]],[/^(\s*)(>*\s*)(-{3,}|\*{3,}|_{3,})$/,[`white`,`comment`,`keyword`]],[/`{3,}(\s.*)?$/,{token:`string`,next:`@codeblock_backtick`}],[/~{3,}(\s.*)?$/,{token:`string`,next:`@codeblock_tilde`}],[/`{3,}(\S+).*$/,{token:`string`,next:`@codeblock_highlight_backtick`,nextEmbedded:`$1`}],[/~{3,}(\S+).*$/,{token:`string`,next:`@codeblock_highlight_tilde`,nextEmbedded:`$1`}],[/^(\s*)(-{4,})$/,[`white`,`comment`]],[/^(\s*)(>+)/,[`white`,`comment`]],{include:`content`}],content:[[/(\[)(.+)(]\()(.+)(\s+".*")(\))/,[``,`string.link`,``,`type.identifier`,`string.link`,``]],[/(\[)(.+)(]\()(.+)(\))/,[``,`type.identifier`,``,`string.link`,``]],[/(\[)(.+)(]\[)(.+)(])/,[``,`type.identifier`,``,`type.identifier`,``]],[/(\[)(.+)(]:\s+)(\S*)/,[``,`type.identifier`,``,`string.link`]],[/(\[)(.+)(])/,[``,`type.identifier`,``]],[/`.*`/,`variable.source`],[/_/,{token:`emphasis`,next:`@emphasis_underscore`}],[/\*(?!\*)/,{token:`emphasis`,next:`@emphasis_asterisk`}],[/\*\*/,{token:`strong`,next:`@strong`}],[/{/,{token:`delimiter.bracket`,next:`@expression`,nextEmbedded:`js`}]],import:[[/'\s*(;|$)/,{token:`string`,next:`@pop`,nextEmbedded:`@pop`}]],expression:[[/{/,{token:`delimiter.bracket`,next:`@expression`}],[/}/,{token:`delimiter.bracket`,next:`@pop`,nextEmbedded:`@pop`}]],export:[[/^\s*$/,{token:`delimiter.bracket`,next:`@pop`,nextEmbedded:`@pop`}]],jsx:[[/\s+/,``],[/(\w+)(=)("(?:[^"\\]|\\.)*")/,[`attribute.name`,`operator`,`string`]],[/(\w+)(=)('(?:[^'\\]|\\.)*')/,[`attribute.name`,`operator`,`string`]],[/(\w+(?=\s|>|={|$))/,[`attribute.name`]],[/={/,{token:`delimiter.bracket`,next:`@expression`,nextEmbedded:`js`}],[/>/,{token:`type.identifier`,next:`@pop`}]],header:[[/.$/,{token:`keyword`,next:`@pop`}],{include:`content`},[/./,{token:`keyword`}]],strong:[[/\*\*/,{token:`strong`,next:`@pop`}],{include:`content`},[/./,{token:`strong`}]],emphasis_underscore:[[/_/,{token:`emphasis`,next:`@pop`}],{include:`content`},[/./,{token:`emphasis`}]],emphasis_asterisk:[[/\*(?!\*)/,{token:`emphasis`,next:`@pop`}],{include:`content`},[/./,{token:`emphasis`}]],frontmatter:[[/^---$/,{token:`meta.content`,nextEmbedded:`@pop`,next:`@pop`}]],codeblock_highlight_backtick:[[/\s*`{3,}\s*$/,{token:`string`,next:`@pop`,nextEmbedded:`@pop`}],[/.*$/,`variable.source`]],codeblock_highlight_tilde:[[/\s*~{3,}\s*$/,{token:`string`,next:`@pop`,nextEmbedded:`@pop`}],[/.*$/,`variable.source`]],codeblock_backtick:[[/\s*`{3,}\s*$/,{token:`string`,next:`@pop`}],[/.*$/,`variable.source`]],codeblock_tilde:[[/\s*~{3,}\s*$/,{token:`string`,next:`@pop`}],[/.*$/,`variable.source`]]}};export{t as conf,n as language};
1
+ import{n as e}from"./editor.api-CgbPVW9s.js";var t={comments:{blockComment:[`{/*`,`*/}`]},brackets:[[`{`,`}`]],autoClosingPairs:[{open:`"`,close:`"`},{open:`'`,close:`'`},{open:`“`,close:`”`},{open:`‘`,close:`’`},{open:"`",close:"`"},{open:`{`,close:`}`},{open:`(`,close:`)`},{open:`_`,close:`_`},{open:`**`,close:`**`},{open:`<`,close:`>`}],onEnterRules:[{beforeText:/^\s*- .+/,action:{indentAction:e.IndentAction.None,appendText:`- `}},{beforeText:/^\s*\+ .+/,action:{indentAction:e.IndentAction.None,appendText:`+ `}},{beforeText:/^\s*\* .+/,action:{indentAction:e.IndentAction.None,appendText:`* `}},{beforeText:/^> /,action:{indentAction:e.IndentAction.None,appendText:`> `}},{beforeText:/<\w+/,action:{indentAction:e.IndentAction.Indent}},{beforeText:/\s+>\s*$/,action:{indentAction:e.IndentAction.Indent}},{beforeText:/<\/\w+>/,action:{indentAction:e.IndentAction.Outdent}},...Array.from({length:100},(t,n)=>({beforeText:RegExp(`^${n}\\. .+`),action:{indentAction:e.IndentAction.None,appendText:`${n+1}. `}}))]},n={defaultToken:``,tokenPostfix:`.mdx`,control:/[!#()*+.[\\\]_`{}\-]/,escapes:/\\@control/,tokenizer:{root:[[/^---$/,{token:`meta.content`,next:`@frontmatter`,nextEmbedded:`yaml`}],[/^\s*import/,{token:`keyword`,next:`@import`,nextEmbedded:`js`}],[/^\s*export/,{token:`keyword`,next:`@export`,nextEmbedded:`js`}],[/<\w+/,{token:`type.identifier`,next:`@jsx`}],[/<\/?\w+>/,`type.identifier`],[/^(\s*)(>*\s*)(#{1,6}\s)/,[{token:`white`},{token:`comment`},{token:`keyword`,next:`@header`}]],[/^(\s*)(>*\s*)([*+-])(\s+)/,[`white`,`comment`,`keyword`,`white`]],[/^(\s*)(>*\s*)(\d{1,9}\.)(\s+)/,[`white`,`comment`,`number`,`white`]],[/^(\s*)(>*\s*)(\d{1,9}\.)(\s+)/,[`white`,`comment`,`number`,`white`]],[/^(\s*)(>*\s*)(-{3,}|\*{3,}|_{3,})$/,[`white`,`comment`,`keyword`]],[/`{3,}(\s.*)?$/,{token:`string`,next:`@codeblock_backtick`}],[/~{3,}(\s.*)?$/,{token:`string`,next:`@codeblock_tilde`}],[/`{3,}(\S+).*$/,{token:`string`,next:`@codeblock_highlight_backtick`,nextEmbedded:`$1`}],[/~{3,}(\S+).*$/,{token:`string`,next:`@codeblock_highlight_tilde`,nextEmbedded:`$1`}],[/^(\s*)(-{4,})$/,[`white`,`comment`]],[/^(\s*)(>+)/,[`white`,`comment`]],{include:`content`}],content:[[/(\[)(.+)(]\()(.+)(\s+".*")(\))/,[``,`string.link`,``,`type.identifier`,`string.link`,``]],[/(\[)(.+)(]\()(.+)(\))/,[``,`type.identifier`,``,`string.link`,``]],[/(\[)(.+)(]\[)(.+)(])/,[``,`type.identifier`,``,`type.identifier`,``]],[/(\[)(.+)(]:\s+)(\S*)/,[``,`type.identifier`,``,`string.link`]],[/(\[)(.+)(])/,[``,`type.identifier`,``]],[/`.*`/,`variable.source`],[/_/,{token:`emphasis`,next:`@emphasis_underscore`}],[/\*(?!\*)/,{token:`emphasis`,next:`@emphasis_asterisk`}],[/\*\*/,{token:`strong`,next:`@strong`}],[/{/,{token:`delimiter.bracket`,next:`@expression`,nextEmbedded:`js`}]],import:[[/'\s*(;|$)/,{token:`string`,next:`@pop`,nextEmbedded:`@pop`}]],expression:[[/{/,{token:`delimiter.bracket`,next:`@expression`}],[/}/,{token:`delimiter.bracket`,next:`@pop`,nextEmbedded:`@pop`}]],export:[[/^\s*$/,{token:`delimiter.bracket`,next:`@pop`,nextEmbedded:`@pop`}]],jsx:[[/\s+/,``],[/(\w+)(=)("(?:[^"\\]|\\.)*")/,[`attribute.name`,`operator`,`string`]],[/(\w+)(=)('(?:[^'\\]|\\.)*')/,[`attribute.name`,`operator`,`string`]],[/(\w+(?=\s|>|={|$))/,[`attribute.name`]],[/={/,{token:`delimiter.bracket`,next:`@expression`,nextEmbedded:`js`}],[/>/,{token:`type.identifier`,next:`@pop`}]],header:[[/.$/,{token:`keyword`,next:`@pop`}],{include:`content`},[/./,{token:`keyword`}]],strong:[[/\*\*/,{token:`strong`,next:`@pop`}],{include:`content`},[/./,{token:`strong`}]],emphasis_underscore:[[/_/,{token:`emphasis`,next:`@pop`}],{include:`content`},[/./,{token:`emphasis`}]],emphasis_asterisk:[[/\*(?!\*)/,{token:`emphasis`,next:`@pop`}],{include:`content`},[/./,{token:`emphasis`}]],frontmatter:[[/^---$/,{token:`meta.content`,nextEmbedded:`@pop`,next:`@pop`}]],codeblock_highlight_backtick:[[/\s*`{3,}\s*$/,{token:`string`,next:`@pop`,nextEmbedded:`@pop`}],[/.*$/,`variable.source`]],codeblock_highlight_tilde:[[/\s*~{3,}\s*$/,{token:`string`,next:`@pop`,nextEmbedded:`@pop`}],[/.*$/,`variable.source`]],codeblock_backtick:[[/\s*`{3,}\s*$/,{token:`string`,next:`@pop`}],[/.*$/,`variable.source`]],codeblock_tilde:[[/\s*~{3,}\s*$/,{token:`string`,next:`@pop`}],[/.*$/,`variable.source`]]}};export{t as conf,n as language};