@alisio/server 0.6.0 → 0.8.0

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 (61) hide show
  1. package/dist/bridges/interaction-bridge.js +5 -0
  2. package/dist/host/sessions.d.ts +3 -1
  3. package/dist/host/sessions.js +4 -1
  4. package/dist/index.js +4 -0
  5. package/dist/routes/commands.js +3 -0
  6. package/dist/routes/goal.d.ts +1 -0
  7. package/dist/routes/goal.js +14 -1
  8. package/dist/routes/proof.d.ts +5 -0
  9. package/dist/routes/proof.js +123 -0
  10. package/dist/web/assets/{AgentPicker-BH-tahQA.js → AgentPicker-CHCnAWFV.js} +1 -1
  11. package/dist/web/assets/{AgentsModal-C3tHYoW2.js → AgentsModal-C9JANTC0.js} +2 -2
  12. package/dist/web/assets/{ArtifactPanel-BSU3p4Me.js → ArtifactPanel-CMy7S56f.js} +3 -3
  13. package/dist/web/assets/{BtwPanel-BDofONkj.js → BtwPanel-DXZdSCeO.js} +1 -1
  14. package/dist/web/assets/{ChangelogDialog-B5zSEON8.js → ChangelogDialog-B1zYDaIS.js} +1 -1
  15. package/dist/web/assets/{CopyButton-CMHaee_H.js → CopyButton-DEf4thwH.js} +1 -1
  16. package/dist/web/assets/{GoalBar-JOJIfBUX.js → GoalBar-CCT6XlB-.js} +1 -1
  17. package/dist/web/assets/{MemoryTab-C3rFMsRH.js → MemoryTab-lph1Kv8C.js} +1 -1
  18. package/dist/web/assets/{PermissionsMenu-9enV9rs4.js → PermissionsMenu-oMuzx7AI.js} +1 -1
  19. package/dist/web/assets/PlanReviewPanel-BXl-gcFF.js +1 -0
  20. package/dist/web/assets/PlanReviewPanel-DebrpVm2.css +1 -0
  21. package/dist/web/assets/{PlanViewer-D05Fnb6D.js → PlanViewer-TxP_h0KX.js} +1 -1
  22. package/dist/web/assets/ProofCard-CxJcKB8q.css +1 -0
  23. package/dist/web/assets/ProofCard-DFVScMg6.js +1 -0
  24. package/dist/web/assets/ScratchTab-f751fxOV.js +1 -0
  25. package/dist/web/assets/SettingsModal-DZhl5vvS.js +1 -0
  26. package/dist/web/assets/{SpreadsheetPanel-BIo8rckB.js → SpreadsheetPanel-Db_lqwkD.js} +1 -1
  27. package/dist/web/assets/{TasksTab-C1obfmnr.js → TasksTab-BnafNW7J.js} +1 -1
  28. package/dist/web/assets/{TextPreview-DPHScW4M.js → TextPreview-DHQCGoiY.js} +1 -1
  29. package/dist/web/assets/{TrajectoryTab-DcmVZkfm.js → TrajectoryTab-DMJw5g-T.js} +1 -1
  30. package/dist/web/assets/{agents.module-Brrjzfmx.js → agents.module-BlfBTz7i.js} +1 -1
  31. package/dist/web/assets/app-BknkHksg.js +3 -0
  32. package/dist/web/assets/{es-DwvaEaQO.js → es-ySPgx3os.js} +1 -1
  33. package/dist/web/assets/goal-B1jQsfH5.js +1 -0
  34. package/dist/web/assets/{i18n-BGlOHOa5.js → i18n-C54K0mc6.js} +1 -1
  35. package/dist/web/assets/{icons-BWy-tv8u.js → icons-DTCoNVsk.js} +1 -1
  36. package/dist/web/assets/index-XYSVNCIf.js +79 -0
  37. package/dist/web/assets/{jsxRuntime-CU76aMLO.js → jsxRuntime-DWBdSTGf.js} +1 -1
  38. package/dist/web/assets/{panel-INm2KdPq.js → panel-LBWYDX9B.js} +1 -1
  39. package/dist/web/assets/{shared-DF0YqvHb.js → shared-DLevBtPm.js} +1 -1
  40. package/dist/web/assets/strings-DDeSYQDZ.js +1 -0
  41. package/dist/web/assets/{tasks-Dlp_xs_J.js → tasks-Sc_vWQpd.js} +1 -1
  42. package/dist/web/assets/{view-B4LIdGiS.js → view-BFzfUho9.js} +1 -1
  43. package/dist/web/assets/{view-CpEZmnjL.js → view-C4NPIs0Y.js} +1 -1
  44. package/dist/web/assets/{view-CjV4GnT8.js → view-CChCbdid.js} +1 -1
  45. package/dist/web/assets/view-Cp3A_Nly.js +1 -0
  46. package/dist/web/assets/{view-DOYsFrMs.js → view-Cs6w0jid.js} +1 -1
  47. package/dist/web/assets/{view-Ce_7xHIu.js → view-DF9hOwPO.js} +1 -1
  48. package/dist/web/assets/{view-Dm0LR0Rz.js → view-D_Sw63-N.js} +1 -1
  49. package/dist/web/assets/{view-BRtrf5cD.js → view-DooqXXnU.js} +1 -1
  50. package/dist/web/assets/{view-D5UQr-hn.js → view-s7NM5Jdr.js} +1 -1
  51. package/dist/web/index.html +7 -7
  52. package/package.json +4 -4
  53. package/dist/web/assets/PlanReviewPanel-Bv7qk6nv.js +0 -1
  54. package/dist/web/assets/PlanReviewPanel-DWit05Bs.css +0 -1
  55. package/dist/web/assets/ScratchTab-Z-Klh15S.js +0 -1
  56. package/dist/web/assets/SettingsModal-Bax8Y4UT.js +0 -1
  57. package/dist/web/assets/app-B_dNXnFa.js +0 -3
  58. package/dist/web/assets/goal-D5qC2_WT.js +0 -1
  59. package/dist/web/assets/index-CcgO2jIy.js +0 -79
  60. package/dist/web/assets/strings-Dn5dLhWb.js +0 -1
  61. package/dist/web/assets/view-CWZ2W6Nn.js +0 -1
@@ -1,3 +1,3 @@
1
1
  var e={"app.name":`Alisio`,"app.skip":`Saltar a la conversación`,"auth.title":`Abre el enlace de inicio`,"auth.body":`Este navegador no tiene sesión en este servidor. Abre la URL que alisio serve imprimió en la terminal; termina en ?token=….`,"reloadCmd.done":`Configuración recargada`,"changelog.title":`Novedades`,"changelog.notFound":`No hay entrada para la versión {version}.`,"changelog.unreleased":`Aún sin publicar`,"changelog.loadFailed":`No se pudo cargar el changelog.`,"changelog.news":`Alisio se actualizó a {version}. Escribe /changelog para ver las novedades.`,"reload.title":`Hay que recargar`,"reload.body":`El servidor se actualizó mientras esta pestaña estaba abierta. Recarga para seguir.`,"reload.action":`Recargar`,"stream.reconnecting":`Reconectando…`,"common.copy":`Copiar`,"common.copied":`Copiado`,"common.close":`Cerrar`,"common.cancel":`Cancelar`,"common.retry":`Reintentar`,"common.loading":`Cargando…`,"sidebar.label":`Sesiones`,"sidebar.newSession":`Nueva sesión`,"sidebar.workspaces":`Workspaces`,"sidebar.search":`Buscar sesiones`,"sidebar.showArchived":`Mostrar archivados`,"sidebar.hideArchived":`Ocultar archivados`,"sidebar.addWorkspace":`Abrir un workspace`,"sidebar.addWorkspacePrompt":`Ruta absoluta del directorio`,"sidebar.addWorkspaceAction":`Abrir`,"sidebar.noSessions":`Aún no hay sesiones`,"sidebar.noMatches":`Ninguna sesión coincide con «{query}»`,"sidebar.settings":`Ajustes`,"sidebar.collapse":`Contraer la barra lateral`,"sidebar.expand":`Expandir la barra lateral`,"sidebar.untrusted":`no confiable`,"sidebar.untrustedHint":`Los recursos del proyecto no se cargan. Confía en esta carpeta desde su menú ⋯ (o ejecutando alisio en ella desde la terminal).`,"sidebar.newIn":`Nueva sesión en {name}`,"sidebar.missing":`carpeta no encontrada`,"sidebar.missingHint":`Esta carpeta se eliminó o se movió. Sus sesiones siguen visibles; no se pueden crear sesiones nuevas.`,"sidebar.openWorkspaceFirst":`Abre una carpeta de workspace para empezar una sesión.`,"error.workspaceMissing":`La carpeta {path} ya no existe. Sus sesiones siguen visibles, pero las sesiones nuevas necesitan una carpeta existente.`,"sidebar.pickWaiting":`Elige una carpeta en el diálogo que se abrió en tu escritorio…`,"sidebar.typePath":`Escribir una ruta`,"sidebar.browseFolders":`Explorar carpetas`,"sidebar.archived":`archivado`,"workspace.actions":`Acciones de {name}`,"workspace.pin":`Fijar`,"workspace.unpin":`Desfijar`,"workspace.archive":`Archivar`,"workspace.unarchive":`Desarchivar`,"workspace.archivedHint":`Workspace archivado: sus sesiones siguen visibles. Desarchívalo para crear sesiones nuevas.`,"browser.title":`Abrir un workspace`,"browser.up":`Carpeta superior`,"browser.home":`Inicio`,"browser.drives":`Este equipo`,"browser.hidden":`Mostrar carpetas ocultas`,"browser.open":`Abrir esta carpeta`,"browser.empty":`No hay subcarpetas aquí`,"browser.truncated":`Solo se muestran las primeras {count} carpetas.`,"browser.path":`Ruta de la carpeta`,"browser.breadcrumbs":`Ubicación de la carpeta`,"error.workspaceArchived":`El workspace {path} está archivado. Desarchívalo para crear sesiones nuevas.`,"error.pickerBusy":`Ya hay un diálogo de carpetas abierto en el escritorio del servidor.`,"sidebar.toggleFolder":`Mostrar u ocultar las sesiones de {name}`,"session.untitled":`Sesión sin título`,"session.actions":`Acciones de {title}`,"session.pin":`Fijar`,"session.unpin":`Desfijar`,"session.archive":`Archivar`,"session.unarchive":`Restaurar`,"status.idle":`Inactiva`,"status.queued":`En cola`,"status.running":`En ejecución`,"status.awaiting_input":`Esperando tu respuesta`,"status.locked":`En uso por otro proceso`,"status.error":`La última ejecución falló`,"header.conversation":`Conversación`,"header.trajectory":`Trayectoria`,"header.memory":`Memoria`,"trajectory.time":`Hora`,"trajectory.turn":`Turno`,"trajectory.type":`Evento`,"trajectory.summary":`Resumen`,"trajectory.duration":`Duración`,"trajectory.empty":`Aún no hay eventos. Envía un mensaje para iniciar un run.`,"trajectory.earlier":`Mostrar {count} runs anteriores`,"trajectory.status.running":`en curso`,"trajectory.status.completed":`completado`,"trajectory.status.failed":`fallido`,"trajectory.status.cancelled":`cancelado`,"trajectory.view":`Vista`,"trajectory.view.table":`Tabla`,"trajectory.view.timeline":`Línea de tiempo`,"trajectory.waterfall":`Línea de tiempo de ejecución`,"trajectory.lane.model":`Modelo`,"trajectory.lane.tool":`Herramientas`,"trajectory.lane.user":`Usuario / permisos`,"trajectory.legend.model":`Modelo`,"trajectory.legend.tool":`Herramientas`,"trajectory.legend.question":`Preguntas al usuario`,"trajectory.legend.approval":`Aprobaciones`,"trajectory.tokensIn":`Tokens de entrada por turno`,"trajectory.tokensOut":`Tokens de salida por turno`,"trajectory.toolDuration":`Duración por herramienta`,"trajectory.axis.time":`Tiempo desde el inicio (min:seg)`,"trajectory.axis.turn":`Turno`,"stats.turn":`{count} turno`,"stats.turns":`{count} turnos`,"stats.step":`{count} paso`,"stats.steps":`{count} pasos`,"stats.llm":`LLM {time}`,"stats.tools":`tools {time}`,"stats.ttft":`TTFT {time}`,"stats.throughput":`{value} tok/s`,"stats.cache":`caché {value}`,"stats.input":`entrada {value}`,"stats.label":`Último run: {stats}`,"stats.session":`Sesión ({runs} runs): {stats}`,"stats.decisions":`Decisiones {requests} ({completed} ok, {fallbacks} con respaldo)`,"stats.decisionsLatency":`media {avg} ms · p95 {p95} ms`,"stats.decisionsFallback":`último respaldo: {reason}`,"header.sessionLog":`Log de sesión`,"header.sessionLogHint":`Descarga todos los eventos y mensajes como JSON Lines`,"header.rename":`Renombrar la sesión`,"header.titleLabel":`Título de la sesión`,"header.agent":`Agente {agent}`,"header.openSidebar":`Abrir la lista de sesiones`,"preset.read-only":`Solo lectura`,"preset.ask":`Preguntar`,"preset.workspace-write":`Escritura en workspace`,"preset.full-access":`Acceso total`,"presetHint.read-only":`Solo lee; nada pide aprobación.`,"presetHint.ask":`Cada escritura, proceso y llamada de red pregunta antes.`,"presetHint.workspace-write":`Escribe en el workspace; procesos y red preguntan antes.`,"presetHint.full-access":`Escribe, ejecuta procesos y accede a la red sin preguntar.`,"transcript.label":`Conversación`,"transcript.emptyTitle":`¿En qué trabajamos?`,"transcript.emptyBody":`Describe un cambio, un error o una pregunta sobre este workspace. Escribe / para ver los comandos.`,"transcript.noSessionTitle":`No hay ninguna sesión abierta`,"transcript.noSessionBody":`Elige una sesión en la barra lateral o empieza una nueva.`,"transcript.loadOlder":`Cargar mensajes anteriores`,"transcript.showEarlier":`Mostrar {count} turnos anteriores`,"transcript.scrollToBottom":`Ir al último mensaje`,"transcript.copyMessage":`Copiar el mensaje`,"transcript.think":`Razonamiento`,"transcript.context":`Inyección de contexto`,"run.phase.waiting":`Esperando al modelo…`,"run.phase.thinking":`Pensando…`,"run.phase.writing":`Redactando la respuesta…`,"run.phase.compacting":`Compactando el contexto…`,"run.phase.retrying":`El modelo no respondió; reintentando ({attempt}/{of})…`,"run.phase.recovering":`La respuesta se cortó; reintentando en pasos más pequeños ({attempt}/{of})…`,"run.phase.approval":`Esperando tu aprobación: {name}`,"run.phase.python":`Ejecutando Python…`,"run.phase.pythonWith":`Ejecutando Python ({detail})…`,"run.phase.data":`Leyendo tus datos…`,"run.phase.dataWith":`Leyendo tus datos ({detail})…`,"run.phase.artifact":`Publicando el artefacto…`,"run.phase.artifactWith":`Publicando el artefacto ({detail})…`,"run.phase.question":`Esperando tu respuesta…`,"run.phase.agent":`Un subagente está trabajando…`,"run.phase.tool":`Ejecutando {name}…`,"run.phase.toolWith":`Ejecutando {name} ({detail})…`,"run.elapsed":`Ejecución {time}`,"run.stepElapsed":`este paso {time}`,"run.lastUpdateNow":`actualizado ahora mismo`,"run.lastUpdate":`última actualización hace {seconds} s`,"run.quiet.model":`Sin respuesta del modelo desde hace {seconds} s.`,"run.stalled.model":`Sin respuesta del modelo desde hace {seconds} s. El proveedor puede estar ocupado o la conexión atascada: sigue esperando o detén la ejecución.`,"run.quiet.tool":`{name} no ha producido salida desde hace {seconds} s.`,"run.stalled.tool":`{name} no ha producido salida desde hace {seconds} s. Puede seguir trabajando; detén la ejecución si no quieres esperar.`,"run.announce.quiet":`Sin novedades desde hace más de {seconds} segundos.`,"run.announce.stalled":`Sin respuesta desde hace más de {seconds} segundos. Puedes detener la ejecución.`,"run.stop":`Detener`,"notice.run_timeout_waiting":`{who} no respondió en {seconds} s: no llegó ningún token. Reintenta, cambia de modelo o aumenta limits.timeoutMs.`,"notice.run_timeout_waiting_later":`La ejecución alcanzó su límite de {seconds} s de tiempo activo (el tiempo de espera a tu respuesta no cuenta) mientras esperaba a {who}. Lo producido hasta ahora se conserva: escribe de nuevo para continuar, cambia de modelo o aumenta limits.timeoutMs.`,"notice.run_timeout_streaming":`La ejecución alcanzó su límite de {seconds} s de tiempo activo (el tiempo de espera a tu respuesta no cuenta) mientras {who} respondía. Lo producido hasta ahora se conserva: escribe de nuevo para continuar o aumenta limits.timeoutMs.`,"notice.run_timeout_tool":`La ejecución alcanzó su límite de {seconds} s de tiempo activo (el tiempo de espera a tu respuesta no cuenta) mientras ejecutaba {tool}. Lo producido hasta ahora se conserva: escribe de nuevo para continuar o aumenta limits.timeoutMs.`,"notice.run_timeout_other":`La ejecución alcanzó su límite de {seconds} s de tiempo activo (el tiempo de espera a tu respuesta no cuenta). Lo producido hasta ahora se conserva: escribe de nuevo para continuar o aumenta limits.timeoutMs.`,"notice.run_timeout_first_token":`{who} no envió nada en {seconds} s desde la petición, por lo que se detuvo la ejecución. Reintenta, cambia de modelo o aumenta o desactiva limits.firstTokenTimeoutMs.`,"notice.run_timeout_first_token_retried":`{who} no respondió tras {attempts} intentos de {seconds} s cada uno, por lo que se detuvo la ejecución. Reintenta, cambia de modelo o aumenta o desactiva limits.firstTokenTimeoutMs; limits.firstTokenRetries indica cuántas veces se reenvía una petición silenciosa.`,"notice.run_output_truncated":`La respuesta de {who} se cortó {attempts} vez/veces por el límite de tokens de salida ({maxOutputTokens} tokens, {source}) antes de producir una respuesta útil, por lo que se detuvo la ejecución. Aumenta limits.maxOutputTokens (/settings o el archivo de configuración), baja el esfuerzo de razonamiento (/effort) o pide el resultado en partes más pequeñas.`,"transcript.sending":`Enviando…`,"transcript.notSent":`No se envió: {error}`,"transcript.images":`{count} imagen(es)`,"transcript.turnDone":`Respuesta completa`,"tool.input":`Entrada`,"tool.output":`Salida`,"tool.running":`En ejecución`,"tool.failed":`Falló`,"tool.pending":`Sin resultado registrado`,"tool.noOutput":`Aún no hay salida`,"tool.truncated":`El resultado se recortó para el streaming; recarga la sesión para verlo completo.`,"tool.rawOutput":`Salida en bruto`,"tool.expand":`Mostrar los detalles de {name}`,"tool.duration":`{ms} ms`,"notice.summary":`Los mensajes anteriores se compactaron en un resumen`,"notice.run_failed":`La ejecución falló: {error}`,"notice.run_cancelled":`La ejecución se detuvo`,"notice.run_turns_exceeded":`Se detuvo tras {turns} turnos (límite de turnos)`,"notice.response_truncated":`La respuesta llegó al límite de salida ({maxOutputTokens} tokens, {source})`,"limitSource.user":`fijado por ti`,"limitSource.model":`del catálogo del modelo`,"limitSource.default":`por defecto`,"limitSource.unknown":`límite actual`,"notice.model_changed":`El modelo cambió de {previous} a {model}`,"notice.compaction_completed":`Historial compactado: ~{before} → ~{after} tokens`,"notice.compaction_failed":`La compactación falló: {error}`,"notice.context_reduced":`Se acortaron {messages} resultados de tools para caber en el contexto`,"notice.plugin_hook_failed":`El plugin {source} falló en {hook}: {error}`,"block.unsupported":`Bloque no soportado: {kind}`,"block.showJson":`Mostrar el bloque en bruto`,"diff.title":`Cambios`,"diff.files":`{count} archivos`,"diff.untitled":`(archivo sin nombre)`,"diff.unified":`Unificado`,"diff.split":`Lado a lado`,"diff.binary":`Archivo binario modificado`,"diff.noChanges":`Sin cambios`,"diff.status.modified":`modificado`,"diff.status.added":`nuevo`,"diff.status.deleted":`eliminado`,"diff.status.renamed":`renombrado`,"terminal.output":`Salida`,"terminal.copyCommand":`Copiar comando`,"terminal.copyOutput":`Copiar salida`,"terminal.showAll":`Mostrar {count} líneas anteriores`,"terminal.empty":`Sin salida`,"terminal.waiting":`Esperando salida…`,"terminal.running":`En ejecución…`,"terminal.exit":`salida {code}`,"terminal.truncated":`salida truncada`,"json.copyValue":`Copiar valor`,"json.copyPath":`Copiar ruta`,"json.more":`… {count} más`,"json.source":`Ver como código`,"json.tree":`Ver como árbol`,"tests.passed":`{count} correctas`,"tests.failed":`{count} fallidas`,"tests.skipped":`{count} omitidas`,"tests.onlyFailed":`Solo fallos`,"tests.error":`Error`,"tests.status.passed":`correcta`,"tests.status.failed":`fallida`,"tests.status.skipped":`omitida`,"tests.status.todo":`pendiente`,"progress.title":`Progreso`,"progress.status.pending":`pendiente`,"progress.status.running":`en curso`,"progress.status.completed":`completado`,"progress.status.failed":`fallido`,"progress.status.cancelled":`cancelado`,"dock.label":`Archivos del workspace`,"dock.files":`Archivos`,"dock.changes":`Cambios`,"dock.preview":`Vista previa`,"dock.tasks":`Tareas`,"dock.tasksLive":`{count} en curso`,"dock.close":`Cerrar el panel`,"dock.more":`Mostrar más`,"dock.symlink":`Enlace simbólico (no se sigue)`,"dock.noChanges":`Esta sesión aún no ha cambiado ningún archivo.`,"dock.gitStatus":`Estado en git`,"dock.noPreview":`Elige un archivo en Archivos o Cambios, o una ruta de la conversación.`,"dock.truncated":`Se muestran los primeros 2 MB de {size} KB.`,"dock.download":`Descargar`,"dock.binary":`Archivo binario.`,"dock.copyPath":`Copiar ruta`,"dock.mention":`Mencionar en el mensaje`,"dock.noSession":`Abre una sesión para explorar su workspace.`,"dock.copyAbsolute":`Copiar ruta absoluta`,"dock.copyRelative":`Copiar ruta relativa`,"dock.copyName":`Copiar nombre del archivo`,"dock.htmlView":`Vista HTML`,"dock.viewRendered":`Renderizado`,"dock.viewSource":`Código fuente`,"header.toggleDock":`Mostrar u ocultar archivos y cambios`,"tool.openFile":`Abrir {path} en el panel lateral`,"diff.open":`Abrir el archivo`,"mermaid.source":`Fuente`,"mermaid.diagram":`Diagrama`,"mermaid.export":`Exportar SVG`,"mermaid.fullscreen":`Pantalla completa`,"mermaid.zoomIn":`Acercar`,"mermaid.zoomOut":`Alejar`,"mermaid.zoomReset":`Restablecer zoom`,"mermaid.error":`No se pudo dibujar el diagrama: {message}`,"math.error":`No se pudo mostrar la fórmula: {message}`,"math.copy":`Copiar la fuente TeX`,"code.wrap":`Ajustar líneas`,"composer.label":`Mensaje para el agente`,"composer.placeholder":`Describe lo que quieres construir. / para comandos`,"composer.attach":`Adjuntar imágenes o archivos de datos (PNG, JPEG, GIF, WebP, CSV, TSV, JSON, JSONL, XLSX; también puedes pegarlas o soltarlas)`,"composer.attachments":`Archivos para enviar`,"composer.uploadFailed":`Falló`,"composer.removeAttachment":`Quitar {name}`,"composer.reject.too-large":`Las imágenes están limitadas a 10 MB cada una.`,"composer.reject.unsupported":`Adjunta imágenes PNG, JPEG, GIF o WebP, o archivos de datos CSV, TSV, JSON, JSONL o XLSX.`,"composer.reject.too-many":`Hasta 8 archivos por mensaje.`,"composer.reject.empty":`El archivo está vacío.`,"composer.send":`Enviar`,"composer.compacting":`Compactando el contexto. Podrás enviar de nuevo cuando termine.`,"composer.stop":`Detener la ejecución`,"composer.preset":`Permisos: {preset}`,"composer.agent":`Agente: {agent}`,"composer.agentHint":`Cambiar de agente (Mayús+Tab alterna)`,"composer.agentApplied":`Agente: {agent}. Se aplica desde el siguiente mensaje.`,"composer.model":`Modelo y esfuerzo`,"composer.effort":`Esfuerzo de razonamiento`,"composer.effortDefault":`Predeterminado`,"composer.models":`Modelos`,"composer.modelsUnavailable":`El proveedor no listó sus modelos`,"composer.context":`Contexto: {used} de {total} tokens ({percent}%)`,"composer.contextUnknown":`Contexto: unos {used} tokens (ventana desconocida)`,"composer.locked":`Otro proceso de Alisio está usando esta sesión; aquí es de solo lectura.`,"composer.child":`Es una sesión hija; la conduce su sesión padre.`,"btw.title":`Pregunta lateral`,"btw.subtitle":`No se añade a la conversación`,"btw.history":`Historial de preguntas laterales`,"btw.earlier":`Respuesta anterior (←)`,"btw.later":`Respuesta siguiente (→)`,"btw.position":`{n}/{total}`,"btw.copy":`Copiar respuesta`,"btw.thinking":`Pensando…`,"btw.usage":`Haz una pregunta lateral sobre la sesión actual sin añadirla a la conversación.`,"btw.tokens":`{model} · {input} de entrada · {output} de salida (tokens)`,"btw.truncated":`truncada`,"palette.label":`Comandos`,"palette.empty":`Ningún comando coincide`,"palette.source.builtin":`integrado`,"palette.source.plugin":`plugin`,"palette.source.prompt":`prompt`,"palette.source.skill":`skill`,"palette.source.agent":`agente`,"approval.title":`Se necesita aprobación`,"approval.effect.write":`escribir archivos`,"approval.effect.process":`ejecutar un proceso`,"approval.effect.external":`acceder fuera del workspace`,"approval.wants":`{tool} quiere {effect}`,"approval.directory":`¿Permitir acceso a un directorio fuera del workspace?`,"approval.from":`Lo pide {label}`,"approval.child":`Desde una sesión hija`,"approval.more":`{count} más en espera`,"approval.deny":`Denegar`,"approval.once":`Permitir una vez`,"approval.session":`Permitir en la sesión`,"approval.keys":`Teclas: D denegar · O permitir una vez · S permitir en la sesión`,"approval.announce":`Se necesita aprobación: {tool}`,"artifact.kind.dashboard":`Dashboard`,"artifact.kind.document":`Documento`,"artifact.kind.spreadsheet":`Hoja de cálculo`,"artifact.kind.image":`Imagen`,"artifact.kind.data":`Datos`,"artifact.kind.code":`Texto`,"artifact.kind.archive":`Archivo comprimido`,"artifact.kind.file":`Archivo`,"artifact.open":`Abrir archivo`,"artifact.openNamed":`Abrir {name}, {kind}`,"artifact.download":`Descargar`,"artifact.downloadNamed":`Descargar {name}`,"artifact.downloadNamedKind":`Descargar {name}, {kind}`,"artifact.meta":`{size} · {date}`,"artifact.partial":`Parcial`,"artifact.expired":`Caducado`,"artifact.deleted":`Eliminado`,"artifact.unavailable":`No disponible`,"artifact.retry":`Reintentar`,"artifact.noPreview":`Este tipo de archivo no se puede previsualizar.`,"artifact.loading":`Cargando…`,"artifact.tooLarge":`Demasiado grande para previsualizar ({size}).`,"artifact.downloadInstead":`Descarga el archivo para abrirlo.`,"artifactPanel.label":`Visor de artefactos`,"artifactPanel.switch":`Cambiar de artefacto`,"artifactPanel.filter":`Filtrar artefactos`,"artifactPanel.new":`Nuevo`,"artifactPanel.empty":`Aún no hay artefactos en esta sesión.`,"artifactPanel.noMatch":`Ningún artefacto coincide.`,"artifactPanel.fullscreen":`Pantalla completa`,"artifactPanel.exitFullscreen":`Salir de pantalla completa`,"artifactPanel.close":`Cerrar`,"artifactPanel.expand":`Expandir panel`,"artifactPanel.restore":`Restaurar panel`,"artifactPanel.resize":`Redimensionar panel`,"artifactPanel.openNewTab":`Abrir en una pestaña nueva`,"artifactPanel.sources":`Descargar fuentes del análisis`,"artifactPanel.export":`Copiar al workspace…`,"artifactPanel.details":`Detalles`,"artifactPanel.delete":`Eliminar`,"artifactPanel.deleteConfirm":`¿Eliminar {name}? No se puede deshacer.`,"artifactPanel.loadFailed":`No se pudo cargar la vista previa.`,"artifactPanel.reload":`Recargar`,"artifactPanel.gone":`Este artefacto ya no está disponible. Elige otro de la lista.`,"artifactPanel.fit":`Ajustar`,"artifactPanel.actualSize":`100 %`,"artifactPanel.exportTitle":`Copiar al workspace`,"artifactPanel.exportTarget":`Carpeta del workspace`,"artifactPanel.exportHint":`Relativa al workspace; «.» es su raíz. Alisio pregunta antes de escribir salvo que la escritura esté permitida.`,"artifactPanel.overwrite":`Reemplazar archivos existentes`,"artifactPanel.exportSubmit":`Copiar`,"artifactPanel.exportStarted":`Copiando {name} al workspace…`,"artifactPanel.detailsTitle":`Detalles`,"artifactPanel.created":`Creado`,"artifactPanel.size":`Tamaño`,"artifactPanel.files":`Archivos`,"artifactPanel.model":`Modelo`,"artifactPanel.provider":`Proveedor`,"artifactPanel.dashboard":`Dashboard`,"artifactPanel.plannerRules":`Reglas`,"artifactPanel.plannerDecisions":`Reglas y decisiones`,"artifactPanel.runtime":`Runtime`,"artifactPanel.inputs":`Entradas`,"artifactPanel.execution":`Ejecución`,"artifactPanel.script":`SHA-256 del script`,"artifactPanel.none":`—`,"dataset.uploading":`Leyendo {name}…`,"dataset.failed":`No se pudo leer {name}: {error}`,"dataset.shape":`{rows} filas × {columns} columnas`,"dataset.sheets":`{count} hojas`,"dataset.open":`Abrir {name} como tabla`,"dataset.defaultPrompt":`Revisa los datos adjuntos y cuéntame qué contienen.`,"dataset.attached":`Datos adjuntos`,"sheet.label":`Visor de tablas`,"sheet.sheet":`Hoja`,"sheet.filterColumn":`Columna del filtro`,"sheet.allColumns":`Todas las columnas`,"sheet.filter":`Filtrar filas`,"sheet.rows":`{total} filas`,"sheet.matches":`{matched} de {total} filas coinciden`,"sheet.loading":`Cargando filas…`,"sheet.preparing":`Preparando la tabla…`,"sheet.empty":`Esta hoja no tiene filas.`,"sheet.noMatches":`Ninguna fila coincide.`,"sheet.error":`No se pudo cargar la tabla.`,"sheet.notInteractive":`El orden y el filtro se desactivan por encima de {limit} filas: el archivo no tiene índices.`,"sheet.needColumn":`Elige una columna para filtrar una hoja tan grande.`,"sheet.jumpLimited":`Con orden o filtro activo solo se llega por salto a las primeras {limit} filas; sigue desplazándote.`,"sheet.sortBy":`Ordenar por {column}`,"sheet.resizeColumn":`Redimensionar la columna {column}`,"sheet.copyRow":`Copiar fila`,"sheet.copied":`Copiado`,"sheet.downloadOriginal":`Descargar el original`,"sheet.rowNumber":`Fila`,"artifactPanel.frameTitle":`{name} (vista previa aislada)`,"approval.analysisRun.title":`¿Ejecutar análisis en Python?`,"approval.analysisRun.notSandboxed":`Python administrado no es un sandbox: el script se ejecuta con tus permisos y puede leer tus archivos y usar la red.`,"approval.analysisRun.container":`Se ejecuta en un contenedor sin acceso a la red.`,"approval.analysisRun.repo":`Este paso no modifica archivos del repositorio.`,"approval.analysisRun.repoManaged":`Alisio no modifica archivos del repositorio en este paso, pero el script podría hacerlo.`,"approval.analysisRun.script":`Script (primeras 40 líneas)`,"approval.allowForSession":`Permitir en esta sesión`,"mode.auto":`Auto`,"modes.title":`Modo de permisos`,"modes.status":`Estado: {mode}`,"modes.statusReadOnly":`Solo lectura: nada puede escribir ni ejecutar.`,"modes.fullConfirm":`¿Activar el acceso total? Las escrituras, los comandos y la red se ejecutan sin preguntar. No es un sandbox: el agente tiene los permisos de tu usuario.`,"modes.manage":`Gestionar permisos guardados…`,"permissions.title":`Permisos de la sesión`,"permissions.analysisRun":`Análisis en Python`,"permissions.allowedSession":`Permitido en esta sesión · desde {time}`,"permissions.revoke":`Revocar`,"permissions.none":`No hay permisos guardados en esta sesión.`,"permissions.loadFailed":`No se pudieron cargar los permisos.`,"interaction.title":`Un plugin pregunta`,"interaction.from":`Pregunta de {label}`,"interaction.questionOf":`Pregunta {n} de {total}`,"interaction.recommended":`Recomendada`,"interaction.skip":`Omitir`,"interaction.next":`Siguiente`,"interaction.submit":`Enviar`,"plan.review.eyebrow":`Revisión del plan`,"plan.review.revision":`Revisión {n}`,"plan.review.title":`Plan completo. ¿Qué quieres hacer?`,"plan.option.approve":`Aceptar y empezar la implementación`,"plan.option.approve.hint":`El agente build implementa exactamente este plan.`,"plan.option.skip":`Omitir por ahora`,"plan.option.skip.hint":`Sigues en modo plan; no cambia nada.`,"plan.option.context":`Añadir contexto`,"plan.option.context.hint":`Dile al agente de plan qué cambiar; vuelve a planificar.`,"plan.review.contextLabel":`Contexto para el plan`,"plan.review.contextPlaceholder":`Añade contexto para el plan`,"plan.review.send":`Enviar contexto`,"plan.review.back":`Volver`,"settings.title":`Ajustes`,"settings.general":`General`,"settings.appearance":`Apariencia`,"settings.language":`Idioma`,"settings.theme":`Tema`,"settings.density":`Filas de proceso`,"settings.plugins":`Plugins`,"settings.skills":`Skills`,"settings.mcp":`Servidores MCP`,"settings.agents":`Presets de agente`,"settings.about":`Acerca de`,"settings.workspace":`Workspace: {path}`,"settings.noWorkspace":`Abre o añade primero un workspace; estos ajustes pertenecen a un workspace.`,"settings.default":`Predeterminado`,"settings.agentSettings":`Ajustes del agente`,"settings.agentSettingsLead":`Se guardan para este usuario en`,"settings.readOnly":`alisio serve se ejecuta con --read-only: no se pueden cambiar los ajustes.`,"plugins.lead":`Configura e inspecciona los plugins cargados en este workspace.`,"plugins.tab.configuration":`Configuración de plugins`,"plugins.tab.list":`Lista de plugins`,"plugins.search":`Buscar plugins`,"plugins.none":`Ningún plugin coincide.`,"plugins.status.enabled":`Habilitado`,"plugins.status.disabled":`Deshabilitado`,"plugins.status.failed":`Con fallo`,"plugins.status.restart":`Requiere reinicio`,"plugins.id":`Id`,"plugins.version":`Versión`,"plugins.source":`Origen`,"plugins.builtin":`integrado`,"plugins.categories":`Categorías`,"plugins.tools":`Tools`,"plugins.commands":`Comandos`,"plugins.enable":`Habilitado en este workspace`,"plugins.enableNamed":`Habilitar {name}`,"plugins.deferred":`Guardado. Se aplica cuando terminen los runs del workspace.`,"plugins.notSandboxed":`Los plugins no están aislados: se ejecutan dentro del proceso de alisio serve con los permisos de tu usuario. Habilita solo plugins de confianza.`,"plugins.howToInstall":`Los plugins se instalan desde la terminal (alisio plugins o el archivo de configuración); la web solo habilita o deshabilita los ya configurados.`,"plugins.applyNote":`Habilitar o deshabilitar un plugin guarda un ajuste del proyecto y recarga el workspace en cuanto no tiene runs; las sesiones abiertas conservan su historial.`,"plugins.projectFile":`Archivo de configuración del proyecto:`,"skills.lead":`Skills que el agente puede cargar en este workspace. Las deshabilitadas salen de la paleta de comandos y del catálogo del modelo.`,"skills.search":`Buscar skills`,"skills.none":`No se encontró ninguna skill.`,"skills.shadowed":`Ocultada`,"skills.meta":`{scope} · unos {tokens} tokens`,"skills.shadowedBy":`ocultada por {id}`,"skills.locked":`bloqueada por su plugin`,"mcp.lead":`Servidores Model Context Protocol configurados para este workspace.`,"mcp.notGranted":`El acceso MCP no está concedido para este workspace: los servidores siguen desconectados.`,"mcp.granted":`Acceso MCP concedido hasta que se detenga alisio serve.`,"mcp.grantedPersisted":`Acceso MCP concedido para este usuario (mcp.allow).`,"mcp.readOnly":`alisio serve se ejecuta con --read-only: MCP no está disponible.`,"mcp.grant":`Conceder acceso MCP`,"mcp.consentTitle":`¿Permitir que se ejecuten servidores MCP?`,"mcp.consentBody":`Los servidores MCP son procesos locales o servicios remotos que se ejecutan con los privilegios de tu usuario y pueden leer archivos y acceder a la red. Concede acceso solo si confías en los servidores configurados.`,"mcp.remember":`Recordar para este usuario (escribe mcp.allow en tu configuración)`,"mcp.none":`No hay servidores MCP configurados.`,"mcp.status":`{status}`,"mcp.meta":`{transport} · {source} · {tools} tools · {resources} recursos · {prompts} prompts`,"mcp.needsGrant":`Concede primero el acceso MCP`,"mcp.connect":`Conectar`,"agents.lead":`Agentes que pueden conducir una sesión. Elige uno para la sesión abierta; las definiciones se editan fuera de la web.`,"agents.source.builtin":`integrado`,"agents.source.user":`usuario`,"agents.source.plugin":`plugin`,"agents.readOnly":`solo lectura`,"agents.default":`predeterminado del workspace`,"agents.model":`Modelo sugerido: {model}`,"agents.instructions":`Instrucciones`,"agents.inUse":`En uso`,"agents.use":`Usar en esta sesión`,"appearance.lead":`Cómo se ve la interfaz en este navegador.`,"appearance.iconTheme":`Tema de iconos`,"appearance.iconTheme.none":`Ninguno`,"appearance.iconTheme.empty":`No hay ningún plugin de tema de iconos instalado. Instale uno (por ejemplo @alisio/plugin-material-icons) y vuelva a abrir Ajustes.`,"about.description":`Alisio es un entorno para agentes de programación que se conecta a endpoints compatibles con OpenAI y se ejecuta en la terminal o el navegador, con núcleo propio en TypeScript y herramientas, plugins y skills extensibles.`,"about.version":`Alisio {version}`,"about.versionUnknown":`Versión no disponible`,"about.versionTitle":`Versión de Alisio {version}`,"about.repository":`Ver el repositorio en GitHub`,"about.repositoryLabel":`Ver el repositorio de Alisio en GitHub (se abre en una pestaña nueva)`,"config.open":`Abrir archivo de configuración`,"config.lead":`alisio serve no abre editores; copia una ruta y ábrela tú.`,"config.effective":`Archivo de configuración efectivo`,"config.settings":`Ajustes de usuario (los escribe esta página)`,"config.providers":`Perfiles de proveedor`,"config.copy":`Copiar ruta`,"config.untrusted":`Este workspace no es de confianza, así que su .alisio/config.json se ignora. Confía en él desde su menú ⋯ de la barra lateral (o desde la terminal).`,"settings.models":`Modelos`,"models.lead":`Perfiles de proveedor, sus credenciales y el proveedor que usa este workspace.`,"models.running":`Este workspace usa {provider} · {model} (perfil: {profile}).`,"models.none":`Aún no hay perfiles de proveedor. Añade uno abajo o ejecuta alisio connect en una terminal.`,"models.activeGlobal":`Perfil predeterminado`,"models.current":`Este workspace`,"models.edit":`Editar`,"models.activate":`Activar en este workspace`,"models.activated":`{name} ya está activo en este workspace.`,"models.unchanged":`Ese perfil y modelo ya están activos.`,"models.add":`Añadir un perfil`,"models.form.name":`Nombre del perfil`,"models.form.type":`Proveedor`,"models.form.model":`Modelo`,"models.form.save":`Guardar perfil`,"models.form.secretsNote":`Los secretos no forman parte del perfil: configúralos debajo tras guardarlo; se guardan aparte y no se vuelven a mostrar.`,"models.credential.missing":`Sin configurar`,"models.credential.env":`Tomada de una variable de entorno`,"models.credential.stored":`Guardada`,"models.credential.storedTail":`Guardada · termina en {tail}`,"models.credential.enter":`Pega un valor nuevo`,"models.credential.replace":`Reemplazar el valor guardado`,"models.credential.save":`Guardar`,"models.credential.remove":`Eliminar`,"models.credential.saved":`Credencial guardada. Activa el perfil para usarla ya.`,"theme.dark":`Oscuro`,"theme.light":`Claro`,"theme.system":`Sistema`,"density.compact":`Compactas`,"density.detailed":`Detalladas`,"language.en":`English`,"language.es":`Español`,"error.generic":`{message}`,"sidebar.agents":`Agentes`,"agentsWin.title":`Agentes`,"agentsWin.maximize":`Maximizar`,"agentsWin.restore":`Restaurar tamaño`,"agentsWin.lead":`Los agentes son archivos Markdown que otras herramientas también pueden leer: los de proyecto viven en .agents/agents del workspace y los globales en ~/.agents/agents.`,"agentsWin.create":`Crear`,"agentsWin.yours":`Tus agentes`,"agentsWin.none":`Aún no hay agentes. Crea uno o parte de una plantilla de abajo.`,"agentsWin.templates":`Plantillas`,"agentsWin.scope.project":`Proyecto`,"agentsWin.scope.global":`Global`,"agentsWin.overrides":`Reemplaza al global`,"agentsWin.overridden":`Reemplazado por el de proyecto`,"agentsWin.delete":`Eliminar`,"agentsWin.deleteConfirm":`¿Eliminar {path}? Las demás herramientas que leen este archivo también pierden el agente.`,"agentsWin.deleted":`Agente eliminado.`,"agentsWin.deletedRestart":`Archivo del agente eliminado. Reinicia Alisio para quitarlo de los agentes en ejecución.`,"agentsWin.newAgent":`Nuevo agente`,"agentsWin.setup":`Configuración`,"agentsWin.sessions":`Sesiones`,"agentsWin.definition":`Definición del agente`,"agentsWin.name":`Nombre`,"agentsWin.description":`Descripción`,"agentsWin.descriptionPlaceholder":`Una frase: qué hace este agente (se deriva de las instrucciones si está vacía)`,"agentsWin.instructions":`Instrucciones`,"agentsWin.instructionsPlaceholder":`Describe el comportamiento deseado del modelo (tono, uso de herramientas, estilo de respuesta)`,"agentsWin.scope":`Ámbito`,"agentsWin.scopeHint":`Dónde se guarda el archivo. Un agente de proyecto reemplaza a uno global con el mismo nombre.`,"agentsWin.scopeUntrusted":`Este workspace no es de confianza: sus agentes de proyecto se guardan pero no se cargan hasta que confíes en él desde la terminal.`,"agentsWin.model":`Modelo`,"agentsWin.modelSection":`Modelo`,"agentsWin.chooseModel":`Elige un modelo`,"agentsWin.modelActive":`{name} (activo)`,"agentsWin.capsUnknown":`El proveedor no declara capacidades; se ofrecen todas las opciones.`,"agentsWin.textFormat":`Formato de texto`,"agentsWin.format.text":`Texto`,"agentsWin.format.json_object":`JSON`,"agentsWin.format.json_schema":`JSON Schema`,"agentsWin.effort":`Esfuerzo de razonamiento`,"agentsWin.verbosity":`Verbosidad`,"agentsWin.summary":`Resumen`,"agentsWin.modelDefault":`Predeterminado del modelo`,"agentsWin.unsupported":`No compatible con este modelo`,"agentsWin.level.minimal":`Mínimo`,"agentsWin.level.low":`Bajo`,"agentsWin.level.medium":`Medio`,"agentsWin.level.high":`Alto`,"agentsWin.level.xhigh":`Muy alto`,"agentsWin.summary.auto":`Automático`,"agentsWin.summary.none":`Ninguno`,"agentsWin.summary.concise":`Conciso`,"agentsWin.summary.detailed":`Detallado`,"agentsWin.save":`Guardar definición del agente`,"agentsWin.saved":`Agente guardado y disponible ya.`,"agentsWin.savedRestart":`Agente guardado. Reinicia Alisio para usarlo.`,"agentsWin.saveFailed":`No se pudo guardar el agente: {message}`,"agentsWin.assistTitle":`Crear con Alisio`,"agentsWin.assistLead":`Describe el agente; el modelo activo escribe sus instrucciones siguiendo estándares de autoría de agentes y luego lo revisas.`,"agentsWin.assistRefineLead":`Opcional: ¿qué debe cambiar? El modelo activo refina estas instrucciones según los estándares de autoría.`,"agentsWin.assistPlaceholder":`p. ej. revisa pull requests en busca de problemas de seguridad y explica cómo corregirlos`,"agentsWin.assistCreate":`Crear con Alisio`,"agentsWin.assistRefine":`Refinar con Alisio`,"agentsWin.building":`Construyendo con Alisio`,"agentsWin.buildingBody":`{model} está escribiendo el rol, objetivo, alcance, reglas de herramientas, restricciones y formato de salida del agente…`,"agentsWin.buildingElapsed":`{seconds} s`,"agentsWin.buildFailed":`Alisio no pudo construir el agente: {message}`,"agentsWin.buildDone":`Borrador de {model} ({guidance}). Revísalo antes de guardar.`,"agentsWin.createdTitle":`{name} está listo`,"agentsWin.createdBody":`Pruébalo en un chat nuevo con el agente activo, o sigue editando.`,"agentsWin.createdRestart":`Se guardó, pero este Alisio no lo ha cargado; reinicia Alisio para probarlo.`,"agentsWin.tryIt":`Probarlo en un chat nuevo`,"agentsWin.stay":`Seguir en el editor`,"agentsWin.config":`Configuración del agente`,"agentsWin.configCopy":`Copiar petición`,"agentsWin.configLead":`La misma definición mediante la API propia de Alisio (alisio serve).`,"agentsWin.gettingStarted":`Primeros pasos para crear un agente`,"agentsWin.dismiss":`Descartar`,"agentsWin.step.define":`Define un agente`,"agentsWin.step.defineBody":`Elige un modelo, instrucciones y herramientas opcionales.`,"agentsWin.step.runtime":`Elige un entorno`,"agentsWin.step.runtimeBody":`Los agentes se ejecutan en local, en un workspace que abres en Alisio, con sus permisos.`,"agentsWin.step.session":`Crea una sesión`,"agentsWin.step.sessionBody":`Inicia un espacio de trabajo duradero del agente con una entrada inicial opcional.`,"agentsWin.step.events":`Intercambia eventos`,"agentsWin.step.eventsBody":`Los mensajes, llamadas a herramientas y resultados llegan al chat.`,"agentsWin.sessionsEmpty":`Ninguna sesión usa este agente todavía.`,"agentsWin.sessionsUnsaved":`Guarda el agente para iniciar sesiones con él.`,"agentsWin.startSession":`Iniciar una sesión con este agente`,"agentsWin.untitled":`Sesión sin título`,"agentsWin.noWorkspace":`Abre un workspace para usar agentes de proyecto e iniciar sesiones; los agentes globales siguen funcionando.`,"agentsWin.modelFallback":`{model} no está en los perfiles configurados; el chat usa el modelo actual.`,"agentsWin.unsavedLeave":`¿Descartar los cambios sin guardar?`,"agentsWin.picker":`Cambiar de agente`,"agentsWin.pickerSearch":`Buscar agentes`,"agentsWin.pickerLead":`Se aplica desde el siguiente mensaje de este chat.`,"agentsWin.current":`Actual`,"agentsWin.defaultAgent":`Predeterminado`,"agentsWin.builtin":`Integrado`,"agentsWin.plugin":`Plugin`,"agentsWin.pickerEmpty":`Ningún agente coincide con «{query}».`,"agentsWin.manage":`Gestionar agentes…`,"agentsWin.activeBadge":`Agente activo: {name}. Cámbialo con /agents.`,"agentsWin.back":`Agentes`,"agentsWin.nameError.required":`El nombre es obligatorio.`,"agentsWin.nameError.tooLong":`Usa como máximo 80 caracteres.`,"agentsWin.nameError.noLetters":`Incluye al menos una letra o un dígito.`,"trust.grant":`Confiar en este workspace…`,"trust.revoke":`Dejar de confiar en este workspace…`,"trust.menuHint":`Configuración, plugins, agentes, skills y prompts del proyecto`,"trust.confirm":`¿Confiar en {path}?
2
2
 
3
- Alisio cargará la configuración de proyecto de esta carpeta (que puede cambiar el endpoint y la clave del proveedor), sus plugins (código que se ejecuta con tus privilegios de usuario), agentes, skills y prompts. Confía solo en carpetas cuyo contenido conozcas. Si .alisio/config.json cambia más adelante, se te volverá a preguntar.`,"trust.confirmRevoke":`¿Dejar de confiar en {path}? Su configuración de proyecto, plugins, agentes, skills y prompts dejan de cargarse.`,"trust.granted":`Workspace de confianza: sus recursos de proyecto están cargados.`,"trust.revoked":`El workspace ya no es de confianza: sus recursos de proyecto se descargaron.`,"settings.analysis.lead":`Los scripts de Python que escribe el agente se ejecutan aquí y sus resultados se convierten en archivos descargables. Nada de esta página es obligatorio: Python se detecta automáticamente.`,"settings.analysis.status":`Runtime`,"settings.analysis.mode":`Modo`,"settings.analysis.mode.managed":`Administrado: tu propio Python`,"settings.analysis.mode.oci":`Contenedor: Docker o Podman`,"settings.analysis.managedNote":`Python administrado no es un sandbox: el script se ejecuta con tus permisos y puede leer tus archivos y usar la red.`,"settings.analysis.containerNote":`Se ejecuta en un contenedor sin acceso a la red, con raíz de solo lectura y solo las carpetas del trabajo. Limita el daño; no es un sandbox reforzado.`,"settings.analysis.runtime":`Runtime de Python`,"settings.analysis.detected":`Python {version} · {path} (detectado automáticamente)`,"settings.analysis.notFound":`No se encontró Python 3.10+ en esta máquina.`,"settings.analysis.installHint.title":`Cómo instalar Python en este sistema`,"settings.analysis.installHint.afterInstall":`Tras instalarlo no hace falta reiniciar.`,"settings.analysis.runtimeVersion":`Versión del entorno`,"settings.analysis.extras":`Paquetes opcionales`,"settings.analysis.extras.none":`Ninguno instalado. La biblioteca estándar basta para la mayoría de los análisis.`,"settings.analysis.extras.installed":`Instalados: {extras}`,"settings.analysis.extras.hint":`Cuando un análisis necesita pandas, numpy o similares, Alisio pregunta una vez antes de descargarlos. También puedes ejecutar alisio analysis setup --extras analysis.`,"settings.analysis.oci":`Runtime de contenedor`,"settings.analysis.oci.engine":`Motor`,"settings.analysis.oci.image":`Imagen`,"settings.analysis.oci.noImage":`Sin imagen. Define analysis.oci.image (fijada por digest) en tu configuración de usuario.`,"settings.analysis.oci.available":`Disponible ({version})`,"settings.analysis.oci.unavailable":`No disponible: {reason}`,"settings.analysis.oci.unused":`No se usa en modo administrado.`,"settings.analysis.oci.limits":`{memory} MB de memoria · {cpus} CPU`,"settings.analysis.enabled":`Activar el análisis de datos`,"settings.analysis.enabledHint":`Activa o desactiva python_run, los artefactos y las herramientas de datos. El workspace recarga sus herramientas cuando terminan sus ejecuciones.`,"settings.analysis.smartDashboard":`Smart Dashboard`,"settings.analysis.smartDashboardHint":`Ofrece dashboard_generate, que construye un dashboard a partir de un dataset sin código. Desactivado, la herramienta no se ofrece. Se aplica cuando el workspace recarga sus herramientas.`,"settings.analysis.timeout":`Tiempo máximo de ejecución (segundos)`,"settings.analysis.retention":`Retención`,"settings.analysis.retention.lead":`Los archivos antiguos se limpian automáticamente, como máximo una vez al día. 0 no borra nunca ese tipo de archivo.`,"settings.analysis.retention.jobs":`Conservar registros de trabajos y datasets sin uso (días)`,"settings.analysis.retention.intermediate":`Conservar archivos temporales (días)`,"settings.analysis.retention.artifacts":`Caducar artefactos tras (días)`,"settings.analysis.retention.lastSweep":`Última limpieza: {time}`,"settings.analysis.retention.never":`Todavía no se ha hecho ninguna limpieza.`,"settings.analysis.disabled":`El análisis de datos está desactivado: python_run y las herramientas de datos no están disponibles.`,"settings.analysis.readOnlyRuntime":`alisio serve se ejecuta con --read-only: python_run no está disponible.`,"approval.analysisInstall.title":`¿Instalar paquetes de Python?`,"approval.analysisInstall.packages":`Paquetes: {packages}`,"approval.analysisInstall.dependencies":`Más sus dependencias ({count} wheels fijadas en total).`,"approval.analysisInstall.size":`Descarga: unos {size}.`,"approval.analysisInstall.network":`Necesita acceso a la red.`,"approval.analysisInstall.safety":`Solo wheels, verificadas por hash, en un entorno privado; no se compila nada.`,"approval.analysisInstall.once":`Este permiso nunca se recuerda: se pregunta cada vez.`,"approval.keysInstall":`Teclas: D denegar · O permitir una vez`,"artifactPanel.rerun":`Ejecutar de nuevo`,"artifactPanel.rerunStarted":`Ejecutando de nuevo el análisis de {name}…`,"artifactPanel.rerunOf":`Repetición de`,"artifactPanel.status":`Estado`,"artifactPanel.expiredHint":`La política de retención eliminó los archivos. Ejecuta el análisis de nuevo para recrearlos.`,"forge.badge.javascript":`JavaScript · aislado en WASM`,"forge.badge.pythonOci":`Python · contenedor OCI`,"forge.badge.pythonWasm":`Python · proceso WASM`,"forge.badge.pythonHost":`Python · host (sin aislamiento)`,"settings.analysis.mode.auto":`Automático: el backend más aislado que esté listo`,"settings.analysis.mode.wasm":`WebAssembly: Pyodide, sin contenedor`,"forge.isolation.osContainer":`Contenedor: aislado por el sistema operativo`,"forge.isolation.wasmIsolate":`Aislado en WASM: sin acceso al host`,"forge.isolation.wasmProcess":`Proceso WASM: con restricciones parciales`,"forge.isolation.none":`Ninguno: se ejecuta en el host con tus privilegios`,"forge.live.running":`En ejecución`,"forge.live.runningCalls":`En ejecución: {done} de {total} llamadas terminadas`,"forge.live.done":`Terminado`,"forge.live.failed":`Fallido`,"forge.sandboxed":`El código se ejecuta aislado de tu equipo`,"forge.notSandboxed":`Sin aislamiento: el código se ejecuta en este equipo con tus privilegios`,"forge.progress":`Progreso`,"forge.progressText":`{completed} de {total}`,"forge.js.title":`JavaScript`,"forge.code":`Código`,"forge.copyCode":`Copiar código`,"forge.copyPath":`Copiar ruta`,"forge.codeFile":`El script es un archivo del scratchpad de la sesión.`,"forge.noCode":`Esta llamada no trae código.`,"forge.calls":`Llamadas anidadas`,"forge.callsSummary":`{total} llamadas · {failed} con error · {denied} denegadas`,"forge.call.started":`En ejecución`,"forge.call.succeeded":`Hecha`,"forge.call.failed":`Con error`,"forge.call.denied":`Denegada`,"forge.noValue":`El script no devolvió nada.`,"forge.reason":`Motor elegido: {reason}`,"forge.outputCut":`La salida se cortó en el límite; devuelve menos desde el script.`,"run.phase.javascript":`Ejecutando JavaScript…`,"run.phase.javascriptWith":`Ejecutando JavaScript ({detail})…`,"artifactPanel.engine":`Motor`,"artifactPanel.isolation":`Aislamiento`,"artifactPanel.engineReason":`Por qué este motor`,"artifactPanel.startup":`Arranque`,"artifactPanel.peakMemory":`Memoria máxima`,"settings.forge":`Forja`,"settings.forge.title":`Forja`,"settings.forge.lead":`Dónde el agente ejecuta código: JavaScript en un motor aislado y Python en el backend más seguro disponible. Los valores sin interruptor son de solo lectura; la clave indicada es la que cambias en tu archivo de configuración.`,"forge.javascript":`JavaScript`,"forge.javascript.lead":`js_run deja que el agente combine herramientas en un script corto. Se ejecuta en un motor WASM sin archivos, red ni acceso al sistema; cada herramienta que llama pasa por tus permisos.`,"forge.status":`Estado`,"forge.js.off":`Desactivado`,"forge.js.ready":`Listo`,"forge.js.unverified":`Sin verificar`,"forge.js.engine":`Motor`,"forge.js.hash":`Módulo WASM (SHA-256)`,"forge.js.host":`Se ejecuta en`,"forge.host.worker":`Un hilo de este proceso`,"forge.host.process":`Un proceso aparte`,"forge.limit.timeout":`Límite de tiempo`,"forge.limit.memory":`Memoria`,"forge.limit.stack":`Pila`,"forge.limit.toolCalls":`Llamadas a herramientas por script`,"forge.limit.concurrency":`Llamadas en paralelo`,"forge.limit.outputChars":`Salida devuelta (caracteres)`,"forge.limitsHint":`Los límites vienen de forge.javascript.* en tu archivo de configuración.`,"forge.scratch":`Scratchpad`,"forge.scratchValue":`Hasta {size} por sesión; se elimina tras {days} días sin uso`,"forge.scratchOff":`Desactivado`,"forge.js.enable":`Activar JavaScript (js_run)`,"forge.js.enableHint":`Desactivado, vuelve la herramienta execute anterior. El espacio de trabajo recarga sus herramientas cuando terminan sus ejecuciones.`,"forge.python":`Python`,"forge.backends":`Backends de Python`,"forge.backend.oci":`Contenedor (Docker o Podman)`,"forge.backend.wasm":`WebAssembly (Pyodide)`,"forge.backend.managed":`Gestionado (tu propio Python)`,"forge.ready":`Listo`,"forge.notReady":`No está listo`,"forge.inUse":`En uso`,"forge.profiles":`Paquetes:`,"forge.copyCommand":`Copiar comando`,"forge.runtimeSetting":`Runtime`,"forge.isolationPolicy":`Política de aislamiento`,"forge.runsOn":`Se ejecuta en`,"forge.noneReady":`Ningún backend está listo con esta política`,"forge.policyHint":`Con la política {policy}, auto prueba el contenedor, luego WebAssembly y luego tu propio Python. Cámbialos con analysis.runtime y analysis.isolation en tu archivo de configuración.`,"forge.guides":`Guías`,"forge.guides.enable":`Activar las guías (forge_guide)`,"forge.guides.hint":`Las guías enseñan al agente la API de los scripts y los patrones habituales. Desactivadas, se quitan forge_guide y las pistas de los errores.`,"settings.analysis.wasmNote":`Se ejecuta en un intérprete WebAssembly en un proceso aparte, sin red y solo con las carpetas del trabajo. Sus restricciones son parciales: no es un contenedor.`,"dock.scratch":`Scratch`};export{e as es};
3
+ Alisio cargará la configuración de proyecto de esta carpeta (que puede cambiar el endpoint y la clave del proveedor), sus plugins (código que se ejecuta con tus privilegios de usuario), agentes, skills y prompts. Confía solo en carpetas cuyo contenido conozcas. Si .alisio/config.json cambia más adelante, se te volverá a preguntar.`,"trust.confirmRevoke":`¿Dejar de confiar en {path}? Su configuración de proyecto, plugins, agentes, skills y prompts dejan de cargarse.`,"trust.granted":`Workspace de confianza: sus recursos de proyecto están cargados.`,"trust.revoked":`El workspace ya no es de confianza: sus recursos de proyecto se descargaron.`,"settings.analysis.lead":`Los scripts de Python que escribe el agente se ejecutan aquí y sus resultados se convierten en archivos descargables. Nada de esta página es obligatorio: Python se detecta automáticamente.`,"settings.analysis.status":`Runtime`,"settings.analysis.mode":`Modo`,"settings.analysis.mode.managed":`Administrado: tu propio Python`,"settings.analysis.mode.oci":`Contenedor: Docker o Podman`,"settings.analysis.managedNote":`Python administrado no es un sandbox: el script se ejecuta con tus permisos y puede leer tus archivos y usar la red.`,"settings.analysis.containerNote":`Se ejecuta en un contenedor sin acceso a la red, con raíz de solo lectura y solo las carpetas del trabajo. Limita el daño; no es un sandbox reforzado.`,"settings.analysis.runtime":`Runtime de Python`,"settings.analysis.detected":`Python {version} · {path} (detectado automáticamente)`,"settings.analysis.notFound":`No se encontró Python 3.10+ en esta máquina.`,"settings.analysis.installHint.title":`Cómo instalar Python en este sistema`,"settings.analysis.installHint.afterInstall":`Tras instalarlo no hace falta reiniciar.`,"settings.analysis.runtimeVersion":`Versión del entorno`,"settings.analysis.extras":`Paquetes opcionales`,"settings.analysis.extras.none":`Ninguno instalado. La biblioteca estándar basta para la mayoría de los análisis.`,"settings.analysis.extras.installed":`Instalados: {extras}`,"settings.analysis.extras.hint":`Cuando un análisis necesita pandas, numpy o similares, Alisio pregunta una vez antes de descargarlos. También puedes ejecutar alisio analysis setup --extras analysis.`,"settings.analysis.oci":`Runtime de contenedor`,"settings.analysis.oci.engine":`Motor`,"settings.analysis.oci.image":`Imagen`,"settings.analysis.oci.noImage":`Sin imagen. Define analysis.oci.image (fijada por digest) en tu configuración de usuario.`,"settings.analysis.oci.available":`Disponible ({version})`,"settings.analysis.oci.unavailable":`No disponible: {reason}`,"settings.analysis.oci.unused":`No se usa en modo administrado.`,"settings.analysis.oci.limits":`{memory} MB de memoria · {cpus} CPU`,"settings.analysis.enabled":`Activar el análisis de datos`,"settings.analysis.enabledHint":`Activa o desactiva python_run, los artefactos y las herramientas de datos. El workspace recarga sus herramientas cuando terminan sus ejecuciones.`,"settings.analysis.smartDashboard":`Smart Dashboard`,"settings.analysis.smartDashboardHint":`Ofrece dashboard_generate, que construye un dashboard a partir de un dataset sin código. Desactivado, la herramienta no se ofrece. Se aplica cuando el workspace recarga sus herramientas.`,"settings.analysis.timeout":`Tiempo máximo de ejecución (segundos)`,"settings.analysis.retention":`Retención`,"settings.analysis.retention.lead":`Los archivos antiguos se limpian automáticamente, como máximo una vez al día. 0 no borra nunca ese tipo de archivo.`,"settings.analysis.retention.jobs":`Conservar registros de trabajos y datasets sin uso (días)`,"settings.analysis.retention.intermediate":`Conservar archivos temporales (días)`,"settings.analysis.retention.artifacts":`Caducar artefactos tras (días)`,"settings.analysis.retention.lastSweep":`Última limpieza: {time}`,"settings.analysis.retention.never":`Todavía no se ha hecho ninguna limpieza.`,"settings.analysis.disabled":`El análisis de datos está desactivado: python_run y las herramientas de datos no están disponibles.`,"settings.analysis.readOnlyRuntime":`alisio serve se ejecuta con --read-only: python_run no está disponible.`,"approval.analysisInstall.title":`¿Instalar paquetes de Python?`,"approval.analysisInstall.packages":`Paquetes: {packages}`,"approval.analysisInstall.dependencies":`Más sus dependencias ({count} wheels fijadas en total).`,"approval.analysisInstall.size":`Descarga: unos {size}.`,"approval.analysisInstall.network":`Necesita acceso a la red.`,"approval.analysisInstall.safety":`Solo wheels, verificadas por hash, en un entorno privado; no se compila nada.`,"approval.analysisInstall.once":`Este permiso nunca se recuerda: se pregunta cada vez.`,"approval.keysInstall":`Teclas: D denegar · O permitir una vez`,"artifactPanel.rerun":`Ejecutar de nuevo`,"artifactPanel.rerunStarted":`Ejecutando de nuevo el análisis de {name}…`,"artifactPanel.rerunOf":`Repetición de`,"artifactPanel.status":`Estado`,"artifactPanel.expiredHint":`La política de retención eliminó los archivos. Ejecuta el análisis de nuevo para recrearlos.`,"forge.badge.javascript":`JavaScript · aislado en WASM`,"forge.badge.pythonOci":`Python · contenedor OCI`,"forge.badge.pythonWasm":`Python · proceso WASM`,"forge.badge.pythonHost":`Python · host (sin aislamiento)`,"settings.analysis.mode.auto":`Automático: el backend más aislado que esté listo`,"settings.analysis.mode.wasm":`WebAssembly: Pyodide, sin contenedor`,"forge.isolation.osContainer":`Contenedor: aislado por el sistema operativo`,"forge.isolation.wasmIsolate":`Aislado en WASM: sin acceso al host`,"forge.isolation.wasmProcess":`Proceso WASM: con restricciones parciales`,"forge.isolation.none":`Ninguno: se ejecuta en el host con tus privilegios`,"forge.live.running":`En ejecución`,"forge.live.runningCalls":`En ejecución: {done} de {total} llamadas terminadas`,"forge.live.done":`Terminado`,"forge.live.failed":`Fallido`,"forge.sandboxed":`El código se ejecuta aislado de tu equipo`,"forge.notSandboxed":`Sin aislamiento: el código se ejecuta en este equipo con tus privilegios`,"forge.progress":`Progreso`,"forge.progressText":`{completed} de {total}`,"forge.js.title":`JavaScript`,"forge.code":`Código`,"forge.copyCode":`Copiar código`,"forge.copyPath":`Copiar ruta`,"forge.codeFile":`El script es un archivo del scratchpad de la sesión.`,"forge.noCode":`Esta llamada no trae código.`,"forge.calls":`Llamadas anidadas`,"forge.callsSummary":`{total} llamadas · {failed} con error · {denied} denegadas`,"forge.call.started":`En ejecución`,"forge.call.succeeded":`Hecha`,"forge.call.failed":`Con error`,"forge.call.denied":`Denegada`,"forge.noValue":`El script no devolvió nada.`,"forge.reason":`Motor elegido: {reason}`,"forge.outputCut":`La salida se cortó en el límite; devuelve menos desde el script.`,"run.phase.javascript":`Ejecutando JavaScript…`,"run.phase.javascriptWith":`Ejecutando JavaScript ({detail})…`,"artifactPanel.engine":`Motor`,"artifactPanel.isolation":`Aislamiento`,"artifactPanel.engineReason":`Por qué este motor`,"artifactPanel.startup":`Arranque`,"artifactPanel.peakMemory":`Memoria máxima`,"settings.forge":`Forja`,"settings.forge.title":`Forja`,"settings.forge.lead":`Dónde el agente ejecuta código: JavaScript en un motor aislado y Python en el backend más seguro disponible. Los valores sin interruptor son de solo lectura; la clave indicada es la que cambias en tu archivo de configuración.`,"forge.javascript":`JavaScript`,"forge.javascript.lead":`js_run deja que el agente combine herramientas en un script corto. Se ejecuta en un motor WASM sin archivos, red ni acceso al sistema; cada herramienta que llama pasa por tus permisos.`,"forge.status":`Estado`,"forge.js.off":`Desactivado`,"forge.js.ready":`Listo`,"forge.js.unverified":`Sin verificar`,"forge.js.engine":`Motor`,"forge.js.hash":`Módulo WASM (SHA-256)`,"forge.js.host":`Se ejecuta en`,"forge.host.worker":`Un hilo de este proceso`,"forge.host.process":`Un proceso aparte`,"forge.limit.timeout":`Límite de tiempo`,"forge.limit.memory":`Memoria`,"forge.limit.stack":`Pila`,"forge.limit.toolCalls":`Llamadas a herramientas por script`,"forge.limit.concurrency":`Llamadas en paralelo`,"forge.limit.outputChars":`Salida devuelta (caracteres)`,"forge.limitsHint":`Los límites vienen de forge.javascript.* en tu archivo de configuración.`,"forge.scratch":`Scratchpad`,"forge.scratchValue":`Hasta {size} por sesión; se elimina tras {days} días sin uso`,"forge.scratchOff":`Desactivado`,"forge.js.enable":`Activar JavaScript (js_run)`,"forge.js.enableHint":`Desactivado, vuelve la herramienta execute anterior. El espacio de trabajo recarga sus herramientas cuando terminan sus ejecuciones.`,"forge.python":`Python`,"forge.backends":`Backends de Python`,"forge.backend.oci":`Contenedor (Docker o Podman)`,"forge.backend.wasm":`WebAssembly (Pyodide)`,"forge.backend.managed":`Gestionado (tu propio Python)`,"forge.ready":`Listo`,"forge.notReady":`No está listo`,"forge.inUse":`En uso`,"forge.profiles":`Paquetes:`,"forge.copyCommand":`Copiar comando`,"forge.runtimeSetting":`Runtime`,"forge.isolationPolicy":`Política de aislamiento`,"forge.runsOn":`Se ejecuta en`,"forge.noneReady":`Ningún backend está listo con esta política`,"forge.policyHint":`Con la política {policy}, auto prueba el contenedor, luego WebAssembly y luego tu propio Python. Cámbialos con analysis.runtime y analysis.isolation en tu archivo de configuración.`,"forge.guides":`Guías`,"forge.guides.enable":`Activar las guías (forge_guide)`,"forge.guides.hint":`Las guías enseñan al agente la API de los scripts y los patrones habituales. Desactivadas, se quitan forge_guide y las pistas de los errores.`,"settings.analysis.wasmNote":`Se ejecuta en un intérprete WebAssembly en un proceso aparte, sin red y solo con las carpetas del trabajo. Sus restricciones son parciales: no es un contenedor.`,"dock.scratch":`Scratch`,"dock.proof":`Proof`};export{e as es};
@@ -0,0 +1 @@
1
+ import{h as e,o as t,r as n}from"./i18n-C54K0mc6.js";import{E as r,M as i,St as a,Vt as o,_n as s,bt as c,d as l,mt as u,vn as d}from"./app-BknkHksg.js";var f={label:`Session goal`,"status.active":`Active`,"status.paused":`Paused`,"status.blocked":`Blocked`,"status.budget_limited":`Budget reached`,"status.complete":`Complete`,"waiting.approval":`Waiting for permission`,"waiting.question":`Waiting for your answer`,"waiting.user_input":`Waiting for you to send what you typed`,"waiting.plan_mode":`Waiting: plan mode is on (switch to the build agent)`,"waiting.background_tasks":`Waiting for background tasks`,"reason.created":`Started`,"reason.resumed":`Resumed`,"reason.edited":`Objective edited`,"reason.user_paused":`Paused by you`,"reason.user_interrupt":`You interrupted the turn`,"reason.model_complete":`The agent reports the goal complete`,"reason.model_blocked":`The agent reports it cannot continue`,"reason.policy_denied":`A permission was denied`,"reason.run_error":`A turn failed`,"reason.token_budget":`The token budget was reached`,"reason.max_turns":`The turn limit was reached`,"reason.max_wall":`The time limit was reached`,"reason.no_progress":`No progress`,"reason.restart":`Alisio restarted while the goal was running`,"reason.user_override":`You completed the goal over unmet acceptance criteria`,"detail.repeated_reply":`the same reply repeated`,"detail.no_tool_turns":`several turns without tool calls`,"detail.completion_refused":`completion was refused while required criteria were not verified`,pause:`Pause`,resume:`Resume`,edit:`Edit`,clear:`Clear`,clearConfirm:`Clear this goal? The agent stops working on it.`,save:`Save`,cancel:`Cancel`,objective:`Objective`,budget:`Token budget`,budgetHint:`e.g. 50k or 1.5M; leave empty or write clear for none`,budgetLabel:`{used} of {budget} tokens`,noBudget:`{used} tokens · no budget`,budgetBar:`Token budget used`,turns:`Turn {used}/{max}`,time:`{time} in runs`,report:`Agent's report`,evidence:`Evidence`,failed:`Couldn't update the goal: {error}`,changed:`The goal changed in another window. It was reloaded.`,replace:`This session already has a goal. Replace it with the new one?`,more:`Show details`,less:`Hide details`,noLimit:`No token budget: only the turn and time limits stop this goal.`},p={label:`Objetivo de la sesión`,"status.active":`Activo`,"status.paused":`En pausa`,"status.blocked":`Bloqueado`,"status.budget_limited":`Presupuesto agotado`,"status.complete":`Completado`,"waiting.approval":`Esperando un permiso`,"waiting.question":`Esperando tu respuesta`,"waiting.user_input":`Esperando que envíes lo que escribiste`,"waiting.plan_mode":`En espera: el modo plan está activo (cambia al agente build)`,"waiting.background_tasks":`Esperando tareas en segundo plano`,"reason.created":`Iniciado`,"reason.resumed":`Reanudado`,"reason.edited":`Objetivo editado`,"reason.user_paused":`Pausado por ti`,"reason.user_interrupt":`Interrumpiste el turno`,"reason.model_complete":`El agente informa que el objetivo está completo`,"reason.model_blocked":`El agente informa que no puede continuar`,"reason.policy_denied":`Se denegó un permiso`,"reason.run_error":`Un turno falló`,"reason.token_budget":`Se alcanzó el presupuesto de tokens`,"reason.max_turns":`Se alcanzó el límite de turnos`,"reason.max_wall":`Se alcanzó el límite de tiempo`,"reason.no_progress":`Sin avance`,"reason.restart":`Alisio se reinició mientras el objetivo estaba en marcha`,"reason.user_override":`Completaste el objetivo con criterios de aceptación sin cumplir`,"detail.repeated_reply":`se repitió la misma respuesta`,"detail.no_tool_turns":`varios turnos sin llamar a herramientas`,"detail.completion_refused":`se rechazó completar mientras había criterios requeridos sin verificar`,pause:`Pausar`,resume:`Reanudar`,edit:`Editar`,clear:`Borrar`,clearConfirm:`¿Borrar este objetivo? El agente deja de trabajar en él.`,save:`Guardar`,cancel:`Cancelar`,objective:`Objetivo`,budget:`Presupuesto de tokens`,budgetHint:`p. ej. 50k o 1.5M; déjalo vacío o escribe clear para quitarlo`,budgetLabel:`{used} de {budget} tokens`,noBudget:`{used} tokens · sin presupuesto`,budgetBar:`Presupuesto de tokens usado`,turns:`Turno {used}/{max}`,time:`{time} en ejecuciones`,report:`Informe del agente`,evidence:`Evidencia`,failed:`No se pudo actualizar el objetivo: {error}`,changed:`El objetivo cambió en otra ventana. Se recargó.`,replace:`Esta sesión ya tiene un objetivo. ¿Reemplazarlo por el nuevo?`,more:`Ver detalles`,less:`Ocultar detalles`,noLimit:`Sin presupuesto de tokens: solo los límites de turnos y de tiempo detienen este objetivo.`},m=(e,r)=>t((n.value===`es`?p:f)[e]??f[e],r),h=e=>m(`status.${e}`),g=e=>m(`waiting.${e}`);function _(e,t){if(!e)return``;let n=m(`reason.${e}`);if(!t)return n;let r=`detail.${t}`;return`${n}: ${r in f?m(r):t}`}var v=e(!1),y=e(!1);function b(e){if(e.tokenBudget)return Math.min(100,Math.max(0,Math.round(e.tokensUsed/e.tokenBudget*100)))}function x(e){return e===void 0?`ok`:e>=100?`danger`:e>=80?`warn`:`ok`}function S(e){if(!Number.isFinite(e)||e<0)return`0`;if(e<1e3)return String(Math.round(e));let t=e=>e.replace(/\.0$/,``);if(e<1e6){let n=e/1e3;return`${n<100?t(n.toFixed(1)):Math.round(n)}k`}return`${t((e/1e6).toFixed(1))}M`}function C(e){let t=Math.max(0,Math.round(e/1e3));if(t<60)return`${t}s`;let n=Math.floor(t/60);return n<60?`${n}m ${String(t%60).padStart(2,`0`)}s`:`${Math.floor(n/60)}h ${String(n%60).padStart(2,`0`)}m`}function w(e){return[`pause`,`resume`,`edit`,`clear`].filter(t=>e.actions.includes(t))}var T=e=>!!e.summary&&(e.status===`complete`||e.status===`blocked`),E=e=>({goalId:e.goalId,epoch:e.epoch});async function D(e){try{let{goal:t}=await l.request(`GET`,`/api/sessions/${encodeURIComponent(e)}/goal`);r.value===e&&(i.value=t)}catch{}}async function O(e,t){y.value=!0;try{return await t()}catch(t){t instanceof s&&t.code===`goal_conflict`?(u(m(`changed`)),await D(e)):u(m(`failed`,{error:o(t)}));return}finally{y.value=!1}}var k=e=>`/api/sessions/${encodeURIComponent(e)}/goal`;async function A(e){await O(e.sessionId,()=>l.request(`POST`,`${k(e.sessionId)}/pause`,{expect:E(e)}))}async function j(e){await O(e.sessionId,()=>l.request(`POST`,`${k(e.sessionId)}/resume`,{expect:E(e)}))}async function M(e,t){return await O(e.sessionId,()=>l.request(`POST`,`${k(e.sessionId)}/override`,{reason:t,expect:E(e)}))!==void 0}async function N(e){if(!window.confirm(m(`clearConfirm`)))return;let{goalId:t,epoch:n}=E(e);await O(e.sessionId,()=>l.request(`DELETE`,`${k(e.sessionId)}?goalId=${encodeURIComponent(t)}&epoch=${n}`))}async function P(e,t){let n=t.objective.trim(),r=t.budget.trim(),i=e.sessionId,a=E(e),o=await O(i,async()=>{if(n&&n!==e.objective){let{goal:e}=await l.request(`PATCH`,k(i),{objective:n,expect:a});e&&(a=E(e))}let t=r===``?`clear`:r,o=e.tokenBudget===void 0?`clear`:String(e.tokenBudget);return t!==o&&t.toLowerCase()!==o&&await l.request(`POST`,`/api/sessions/${encodeURIComponent(i)}/commands`,{requestId:d(),name:`goal`,args:`budget=${t}`}),!0});return o&&(v.value=!1),!!o}async function F(e,t){let n=n=>l.request(`POST`,`/api/sessions/${encodeURIComponent(e)}/commands`,{requestId:d(),name:`goal`,...t?{args:t}:{},...n?{confirm:!0}:{}}),i=t=>{r.value===e&&(c.value=a(c.value,t))};try{let t;try{t=await n(!1)}catch(e){if(!(e instanceof s&&e.code===`goal_conflict`&&e.details?.reason===`exists`)||!window.confirm(m(`replace`)))throw e;t=await n(!0)}t.effects?.includes(`goal_edit`)?v.value=!0:t.output&&i(t.output),t.effects?.includes(`goal`)&&await D(e)}catch(e){i(`**/goal**: ${o(e)}`)}}export{w as barActions,x as budgetLevel,b as budgetPercent,N as clearGoal,S as compactTokens,v as editing,C as formatElapsed,T as hasReport,g as i,_ as n,M as overrideGoal,A as pauseGoal,h as r,j as resumeGoal,F as runGoalCommand,P as saveGoal,m as t,y as working};
@@ -1,3 +1,3 @@
1
1
  import{t as e}from"./preload-helper-B3nfOi5I.js";var t,n,r,i,a,o,s,c,l,u,d,f,p,m,h,g,_={},v=[],y=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,b=Array.isArray;function x(e,t){for(var n in t)e[n]=t[n];return e}function ee(e){e&&e.parentNode&&e.parentNode.removeChild(e)}function S(e,n,r){var i,a,o,s={};for(o in n)o==`key`?i=n[o]:o==`ref`?a=n[o]:s[o]=n[o];if(arguments.length>2&&(s.children=arguments.length>3?t.call(arguments,2):r),typeof e==`function`&&e.defaultProps!=null)for(o in e.defaultProps)s[o]===void 0&&(s[o]=e.defaultProps[o]);return C(e,s,i,a,null)}function C(e,t,i,a,o){var s={type:e,props:t,key:i,ref:a,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:o??++r,__i:-1,__u:0};return o==null&&n.vnode!=null&&n.vnode(s),s}function w(e){return e.children}function T(e,t){this.props=e,this.context=t}function E(e,t){if(t==null)return e.__?E(e.__,e.__i+1):null;for(var n;t<e.__k.length;t++)if((n=e.__k[t])!=null&&n.__e!=null)return n.__e;return typeof e.type==`function`?E(e):null}function D(e){if(e.__P&&e.__d){var t=e.__v,r=t.__e,i=[],a=[],o=x({},t);o.__v=t.__v+1,n.vnode&&n.vnode(o),ae(e.__P,o,t,e.__n,e.__P.namespaceURI,32&t.__u?[r]:null,i,r??E(t),!!(32&t.__u),a),o.__v=t.__v,o.__.__k[o.__i]=o,se(i,o,a),t.__e=t.__=null,o.__e!=r&&O(o)}}function O(e){if((e=e.__)!=null&&e.__c!=null)return e.__e=e.__c.base=null,e.__k.some(function(t){if(t!=null&&t.__e!=null)return e.__e=e.__c.base=t.__e}),O(e)}function k(e){(!e.__d&&(e.__d=!0)&&a.push(e)&&!A.__r++||o!=n.debounceRendering)&&((o=n.debounceRendering)||s)(A)}function A(){try{for(var e,t=1;a.length;)a.length>t&&a.sort(c),e=a.shift(),t=a.length,D(e)}finally{a.length=A.__r=0}}function te(e,t,n,r,i,a,o,s,c,l,u){var d,f,p,m,h,g,y=r&&r.__k||v,b=t.length;for(c=j(n,t,y,c,b),d=0;d<b;d++)(p=n.__k[d])!=null&&(f=p.__i!=-1&&y[p.__i]||_,p.__i=d,g=ae(e,p,f,i,a,o,s,c,l,u),m=p.__e,p.ref&&f.ref!=p.ref&&(f.ref&&ue(f.ref,null,p),u.push(p.ref,p.__c||m,p)),h==null&&m!=null&&(h=m),4&p.__u?(c=M(p,c,e),f.__e&&(f.__e=null)):typeof p.type==`function`&&g!==void 0?c=g:m&&(c=m.nextSibling),p.__u&=-7);return n.__e=h,c}function j(e,t,n,r,i){var a,o,s,c,l,u=n.length,d=u,f=0;for(e.__k=Array(i),a=0;a<i;a++)(o=t[a])!=null&&typeof o!=`boolean`&&typeof o!=`function`?(typeof o==`string`||typeof o==`number`||typeof o==`bigint`||o.constructor==String?o=e.__k[a]=C(null,o,null,null,null):b(o)?o=e.__k[a]=C(w,{children:o},null,null,null):o.constructor===void 0&&o.__b>0?o=e.__k[a]=C(o.type,o.props,o.key,o.ref?o.ref:null,o.__v):e.__k[a]=o,c=a+f,o.__=e,o.__b=e.__b+1,s=null,(l=o.__i=N(o,n,c,d))!=-1&&(d--,(s=n[l])&&(s.__u|=2)),s==null||s.__v==null?(l==-1&&(i>u?f--:i<u&&f++),typeof o.type!=`function`&&(o.__u|=4)):l!=c&&(l==c-1?f--:l==c+1?f++:(l>c?f--:f++,o.__u|=4))):e.__k[a]=null;if(d)for(a=0;a<u;a++)(s=n[a])!=null&&!(2&s.__u)&&(s.__e==r&&(r=E(s)),de(s,s));return r}function M(e,t,n){var r,i;if(typeof e.type==`function`){for(r=e.__k,i=0;r&&i<r.length;i++)r[i]&&(r[i].__=e,t=M(r[i],t,n));return t}e.__e!=t&&(t&&e.type&&!t.parentNode&&(t=E(e)),t=n.insertBefore(e.__e,t||null));do t&&=t.nextSibling;while(t!=null&&t.nodeType==8);return t}function N(e,t,n,r){var i,a,o,s=e.key,c=e.type,l=t[n],u=l!=null&&!(2&l.__u);if(l===null&&s==null||u&&s==l.key&&c==l.type)return n;if(r>+!!u){for(i=n-1,a=n+1;i>=0||a<t.length;)if((l=t[o=i>=0?i--:a++])!=null&&!(2&l.__u)&&s==l.key&&c==l.type)return o}return-1}function ne(e,t,n){t[0]==`-`?e.setProperty(t,n??``):e[t]=n==null?``:typeof n!=`number`||y.test(t)?n:n+`px`}function re(e,t,n,r,i){var a,o;n:if(t==`style`){if(typeof n==`string`)e.style.cssText=n;else{if(typeof r==`string`&&(e.style.cssText=r=``),r)for(t in r)n&&t in n||ne(e.style,t,``);if(n)for(t in n)r&&n[t]==r[t]||ne(e.style,t,n[t])}}else if(t[0]==`o`&&t[1]==`n`)a=t!=(t=t.replace(f,`$1`)),o=t.toLowerCase(),t=o in e||t==`onFocusOut`||t==`onFocusIn`?o.slice(2):t.slice(2),e.l||={},e.l[t+a]=n,n?r?n[d]=r[d]:(n[d]=p,e.addEventListener(t,a?h:m,a)):e.removeEventListener(t,a?h:m,a);else{if(i==`http://www.w3.org/2000/svg`)t=t.replace(/xlink(H|:h)/,`h`).replace(/sName$/,`s`);else if(t!=`width`&&t!=`height`&&t!=`href`&&t!=`list`&&t!=`form`&&t!=`tabIndex`&&t!=`download`&&t!=`rowSpan`&&t!=`colSpan`&&t!=`role`&&t!=`popover`&&t in e)try{e[t]=n??``;break n}catch{}typeof n==`function`||(n==null||!1===n&&t[4]!=`-`?e.removeAttribute(t):e.setAttribute(t,t==`popover`&&n==1?``:n))}}function ie(e){return function(t){if(this.l){var r=this.l[t.type+e];if(t[u]==null)t[u]=p++;else if(t[u]<r[d])return;return r(n.event?n.event(t):t)}}}function ae(e,t,r,i,a,o,s,c,l,u){var d,f,p,m,h,g,_,y,S,C,D,O,k,A,j,M,N=t.type;if(t.constructor!==void 0)return null;128&r.__u&&(l=!!(32&r.__u),o=[c=t.__e=r.__e]),(d=n.__b)&&d(t);n:if(typeof N==`function`){f=s.length;try{if(S=t.props,C=N.prototype&&N.prototype.render,D=(d=N.contextType)&&i[d.__c],O=d?D?D.props.value:d.__:i,r.__c?y=(p=t.__c=r.__c).__=p.__E:(C?t.__c=p=new N(S,O):(t.__c=p=new T(S,O),p.constructor=N,p.render=fe),D&&D.sub(p),p.state||(p.state={}),p.__n=i,m=p.__d=!0,p.__h=[],p._sb=[]),C&&p.__s==null&&(p.__s=p.state),C&&N.getDerivedStateFromProps!=null&&(p.__s==p.state&&(p.__s=x({},p.__s)),x(p.__s,N.getDerivedStateFromProps(S,p.__s))),h=p.props,g=p.state,p.__v=t,m)C&&N.getDerivedStateFromProps==null&&p.componentWillMount!=null&&p.componentWillMount(),C&&p.componentDidMount!=null&&p.__h.push(p.componentDidMount);else{if(C&&N.getDerivedStateFromProps==null&&S!==h&&p.componentWillReceiveProps!=null&&p.componentWillReceiveProps(S,O),t.__v==r.__v||!p.__e&&p.shouldComponentUpdate!=null&&!1===p.shouldComponentUpdate(S,p.__s,O)){t.__v!=r.__v&&(p.props=S,p.state=p.__s,p.__d=!1),t.__e=r.__e,t.__k=r.__k,t.__k.some(function(e){e&&(e.__=t)}),v.push.apply(p.__h,p._sb),p._sb=[],p.__h.length&&s.push(p),c=E(r);break n}p.componentWillUpdate!=null&&p.componentWillUpdate(S,p.__s,O),C&&p.componentDidUpdate!=null&&p.__h.push(function(){p.componentDidUpdate(h,g,_)})}if(p.context=O,p.props=S,p.__P=e,p.__e=!1,k=n.__r,A=0,C)p.state=p.__s,p.__d=!1,k&&k(t),d=p.render(p.props,p.state,p.context),v.push.apply(p.__h,p._sb),p._sb=[];else do p.__d=!1,k&&k(t),d=p.render(p.props,p.state,p.context),p.state=p.__s;while(p.__d&&++A<25);p.state=p.__s,p.getChildContext!=null&&(i=x(x({},i),p.getChildContext())),C&&!m&&p.getSnapshotBeforeUpdate!=null&&(_=p.getSnapshotBeforeUpdate(h,g)),j=d!=null&&d.type===w&&d.key==null?ce(d.props.children):d,c=te(e,b(j)?j:[j],t,r,i,a,o,s,c,l,u),p.base=t.__e,t.__u&=-161,p.__h.length&&s.push(p),y&&(p.__E=p.__=null)}catch(e){if(s.length=f,t.__v=null,l||o!=null){if(e.then){for(t.__u|=l?160:128;c&&c.nodeType==8&&c.nextSibling;)c=c.nextSibling;o!=null&&(o[o.indexOf(c)]=null),t.__e=c}else if(o!=null)for(M=o.length;M--;)ee(o[M])}else t.__e=r.__e;t.__k??=r.__k||[],e.then||oe(t),n.__e(e,t,r)}}else o==null&&t.__v==r.__v?(t.__k=r.__k,t.__e=r.__e):c=t.__e=le(r.__e,t,r,i,a,o,s,l,u);return(d=n.diffed)&&d(t),128&t.__u?void 0:c}function oe(e){e&&(e.__c&&(e.__c.__e=!0),e.__k&&e.__k.some(oe))}function se(e,t,r){for(var i=0;i<r.length;i++)ue(r[i],r[++i],r[++i]);n.__c&&n.__c(t,e),e.some(function(t){try{e=t.__h,t.__h=[],e.some(function(e){e.call(t)})}catch(e){n.__e(e,t.__v)}})}function ce(e){return typeof e!=`object`||!e||e.__b>0?e:b(e)?e.map(ce):e.constructor===void 0?x({},e):null}function le(e,r,i,a,o,s,c,l,u){var d,f,p,m,h,g,v,y=i.props||_,x=r.props,S=r.type;if(S==`svg`?o=`http://www.w3.org/2000/svg`:S==`math`?o=`http://www.w3.org/1998/Math/MathML`:o||=`http://www.w3.org/1999/xhtml`,s!=null){for(d=0;d<s.length;d++)if((h=s[d])&&`setAttribute`in h==!!S&&(S?h.localName==S:h.nodeType==3)){e=h,s[d]=null;break}}if(e==null){if(S==null)return document.createTextNode(x);e=document.createElementNS(o,S,x.is&&x),l&&=(n.__m&&n.__m(r,s),!1),s=null}if(S==null)y===x||l&&e.data==x||(e.data=x);else{if(s=S==`textarea`&&x.defaultValue!=null?null:s&&t.call(e.childNodes),!l&&s!=null)for(y={},d=0;d<e.attributes.length;d++)y[(h=e.attributes[d]).name]=h.value;for(d in y)h=y[d],d==`dangerouslySetInnerHTML`?p=h:d==`children`||d in x||d==`value`&&`defaultValue`in x||d==`checked`&&`defaultChecked`in x||re(e,d,null,h,o);for(d in x)h=x[d],d==`children`?m=h:d==`dangerouslySetInnerHTML`?f=h:d==`value`?g=h:d==`checked`?v=h:l&&typeof h!=`function`||y[d]===h||re(e,d,h,y[d],o);if(f)l||p&&(f.__html==p.__html||f.__html==e.innerHTML)||(e.innerHTML=f.__html),r.__k=[];else if(p&&(e.innerHTML=``),te(r.type==`template`?e.content:e,b(m)?m:[m],r,i,a,S==`foreignObject`?`http://www.w3.org/1999/xhtml`:o,s,c,s?s[0]:i.__k&&E(i,0),l,u),s!=null)for(d=s.length;d--;)ee(s[d]);l&&S!=`textarea`||(d=`value`,S==`progress`&&g==null?e.removeAttribute(`value`):g!=null&&(g!==e[d]||S==`progress`&&!g||S==`option`&&g!=y[d])&&re(e,d,g,y[d],o),d=`checked`,v!=null&&v!=e[d]&&re(e,d,v,y[d],o))}return e}function ue(e,t,r){try{if(typeof e==`function`){var i=typeof e.__u==`function`;i&&e.__u(),i&&t==null||(e.__u=e(t))}else e.current=t}catch(e){n.__e(e,r)}}function de(e,t,r){var i,a;if(n.unmount&&n.unmount(e),(i=e.ref)&&(i.current&&i.current!=e.__e||ue(i,null,t)),(i=e.__c)!=null){if(i.componentWillUnmount)try{i.componentWillUnmount()}catch(e){n.__e(e,t)}i.base=i.__P=i.__n=null}if(i=e.__k)for(a=0;a<i.length;a++)i[a]&&de(i[a],t,r||typeof e.type!=`function`);r||ee(e.__e),e.__c=e.__=e.__e=void 0}function fe(e,t,n){return this.constructor(e,n)}function pe(e,r,i){var a,o,s,c;r==document&&(r=document.documentElement),n.__&&n.__(e,r),o=(a=typeof i==`function`)?null:i&&i.__k||r.__k,s=[],c=[],ae(r,e=(!a&&i||r).__k=S(w,null,[e]),o||_,_,r.namespaceURI,!a&&i?[i]:o?null:r.firstChild?t.call(r.childNodes):null,s,!a&&i?i:o?o.__e:r.firstChild,a,c),se(s,e,c),e.props.children=null}function me(e){function t(e){var n,r;return this.getChildContext||(n=new Set,(r={})[t.__c]=this,this.getChildContext=function(){return r},this.componentWillUnmount=function(){n=null},this.shouldComponentUpdate=function(e){this.props.value!=e.value&&n.forEach(function(e){e.__e=!0,k(e)})},this.sub=function(e){n.add(e);var t=e.componentWillUnmount;e.componentWillUnmount=function(){n&&n.delete(e),t&&t.call(e)}}),e.children}return t.__c=`__cC`+g++,t.__=e,t.Provider=t.__l=(t.Consumer=function(e,t){return e.children(t)}).contextType=t,t}t=v.slice,n={__e:function(e,t,n,r){for(var i,a,o;t=t.__;)if((i=t.__c)&&!i.__)try{if((a=i.constructor)&&a.getDerivedStateFromError!=null&&(i.setState(a.getDerivedStateFromError(e)),o=i.__d),i.componentDidCatch!=null&&(i.componentDidCatch(e,r||{}),o=i.__d),o)return i.__E=i}catch(t){e=t}throw e}},r=0,i=function(e){return e!=null&&e.constructor===void 0},T.prototype.setState=function(e,t){var n=this.__s!=null&&this.__s!=this.state?this.__s:this.__s=x({},this.state);typeof e==`function`&&(e=e(x({},n),this.props)),e&&x(n,e),e!=null&&this.__v&&(t&&this._sb.push(t),k(this))},T.prototype.forceUpdate=function(e){this.__v&&(this.__e=!0,e&&this.__h.push(e),k(this))},T.prototype.render=w,a=[],s=typeof Promise==`function`?Promise.prototype.then.bind(Promise.resolve()):setTimeout,c=function(e,t){return e.__v.__b-t.__v.__b},A.__r=0,l=Math.random().toString(8),u=`__d`+l,d=`__a`+l,f=/(PointerCapture)$|Capture$/i,p=0,m=ie(!1),h=ie(!0),g=0;var P,F,he,ge,I=0,_e=[],L=n,ve=L.__b,ye=L.__r,be=L.diffed,xe=L.__c,Se=L.unmount,Ce=L.__;function R(e,t){L.__h&&L.__h(F,e,I||t),I=0;var n=F.__H||(F.__H={__:[],__h:[]});return e>=n.__.length&&n.__.push({}),n.__[e]}function we(e){return I=1,Te(Le,e)}function Te(e,t,n){var r=R(P++,2);if(r.t=e,!r.__c&&(r.__=[n?n(t):Le(void 0,t),function(e){var t=r.__N?r.__N[0]:r.__[0],n=r.t(t,e);t!==n&&(r.__N=[n,r.__[1]],r.__c.setState({}))}],r.__c=F,!F.__f)){var i=function(e,t,n){if(!r.__c.__H)return!0;var i=!1,o=r.__c.props!==e;if(r.__c.__H.__.some(function(e){if(e.__N){i=!0;var t=e.__[0];e.__=e.__N,e.__N=void 0,t!==e.__[0]&&(o=!0)}}),a){var s=a.call(this,e,t,n);return i?s||o:s}return!i||o};F.__f=!0;var a=F.shouldComponentUpdate,o=F.componentWillUpdate;F.componentWillUpdate=function(e,t,n){if(this.__e){var r=a;a=void 0,i(e,t,n),a=r}o&&o.call(this,e,t,n)},F.shouldComponentUpdate=i}return r.__N||r.__}function Ee(e,t){var n=R(P++,3);!L.__s&&Ie(n.__H,t)&&(n.__=e,n.u=t,F.__H.__h.push(n))}function De(e,t){var n=R(P++,4);!L.__s&&Ie(n.__H,t)&&(n.__=e,n.u=t,F.__h.push(n))}function Oe(e){return I=5,z(function(){return{current:e}},[])}function z(e,t){var n=R(P++,7);return Ie(n.__H,t)&&(n.__=e(),n.__H=t,n.__h=e),n.__}function ke(e,t){return I=8,z(function(){return e},t)}function Ae(e){var t=F.context[e.__c],n=R(P++,9);return n.c=e,t?(n.__??(n.__=!0,t.sub(F)),t.props.value):e.__}function je(){for(var e;e=_e.shift();){var t=e.__H;if(e.__P&&t)try{t.__h.some(Pe),t.__h.some(Fe),t.__h=[]}catch(n){t.__h=[],L.__e(n,e.__v)}}}L.__b=function(e){F=null,ve&&ve(e)},L.__=function(e,t){e&&t.__k&&t.__k.__m&&(e.__m=t.__k.__m),Ce&&Ce(e,t)},L.__r=function(e){ye&&ye(e),P=0;var t=(F=e.__c).__H;t&&(he===F?(t.__h=[],F.__h=[],t.__.some(function(e){e.__N&&(e.__=e.__N),e.u=e.__N=void 0})):(t.__h.some(Pe),t.__h.some(Fe),t.__h=[],P=0)),he=F},L.diffed=function(e){be&&be(e);var t=e.__c;t&&t.__H&&(t.__H.__h.length&&(_e.push(t)!==1&&ge===L.requestAnimationFrame||((ge=L.requestAnimationFrame)||Ne)(je)),t.__H.__.some(function(e){e.u&&=(e.__H=e.u,void 0)})),he=F=null},L.__c=function(e,t){t.some(function(e){try{e.__h.some(Pe),e.__h=e.__h.filter(function(e){return!e.__||Fe(e)})}catch(n){t.some(function(e){e.__h&&=[]}),t=[],L.__e(n,e.__v)}}),xe&&xe(e,t)},L.unmount=function(e){Se&&Se(e);var t,n=e.__c;n&&n.__H&&(n.__H.__.some(function(e){try{Pe(e)}catch(e){t=e}}),n.__H=void 0,t&&L.__e(t,n.__v))};var Me=typeof requestAnimationFrame==`function`;function Ne(e){var t,n=function(){clearTimeout(r),Me&&cancelAnimationFrame(t),setTimeout(e)},r=setTimeout(n,35);Me&&(t=requestAnimationFrame(n))}function Pe(e){var t=F,n=e.__c;typeof n==`function`&&(e.__c=void 0,n()),F=t}function Fe(e){var t=F;e.__c=e.__(),F=t}function Ie(e,t){return!e||e.length!==t.length||t.some(function(t,n){return t!==e[n]})}function Le(e,t){return typeof t==`function`?t(e):t}var Re=Symbol.for(`preact-signals`);function B(){if(K>1){K--;return}let e,t=!1;for((function(){let e=G;for(G=void 0;e!==void 0;){let t=e.S;if(t.v===e.v)for(let n=t.t;n!==void 0;n=n.x)n.i===e.i&&(n.i=t.i);e=e.o}})();U!==void 0;){let n=U;for(U=void 0,Be++;n!==void 0;){let r=n.u;if(n.u=void 0,n.f&=-3,!(8&n.f)&&Ke(n))try{n.c()}catch(n){t||=(e=n,!0)}n=r}}if(Be=0,K--,t)throw e}function ze(e){if(K>0)return e();He=++Ve,K++;try{return e()}finally{B()}}var V,H,U;function W(e){let t=V,n=H;V=void 0,H=void 0;try{return e()}finally{V=t,H=n}}var G,K=0,Be=0,Ve=0,He=0,Ue=0;function We(e){if(V===void 0)return;let t=e.n;if(t===void 0||t.t!==V)return t={i:0,S:e,p:V.s,n:void 0,t:V,e:void 0,x:void 0,r:t},V.s!==void 0&&(V.s.n=t),V.s=t,e.n=t,32&V.f&&e.S(t),t;if(t.i===-1)return t.i=0,t.n!==void 0&&(t.n.p=t.p,t.p!==void 0&&(t.p.n=t.n),t.p=V.s,t.n=void 0,V.s.n=t,V.s=t),t}function q(e,t){this.v=e,this.i=0,this.n=void 0,this.t=void 0,this.l=0,this.W=t?.watched,this.Z=t?.unwatched,this.name=t?.name}q.prototype.brand=Re,q.prototype.h=function(){return!0},q.prototype.S=function(e){let t=this.t;t!==e&&e.e===void 0&&(e.x=t,this.t=e,t===void 0?W(()=>{var e;(e=this.W)==null||e.call(this)}):t.e=e)},q.prototype.U=function(e){if(this.t!==void 0){let t=e.e,n=e.x;t!==void 0&&(t.x=n,e.e=void 0),n!==void 0&&(n.e=t,e.x=void 0),e===this.t&&(this.t=n,n===void 0&&W(()=>{var e;(e=this.Z)==null||e.call(this)}))}},q.prototype.subscribe=function(e){return X(()=>{let t=this.value;W(()=>e(t))},{name:`sub`})},q.prototype.valueOf=function(){return this.value},q.prototype.toString=function(){return this.value+``},q.prototype.toJSON=function(){return this.value},q.prototype.peek=function(){return W(()=>this.value)},Object.defineProperty(q.prototype,"value",{get(){let e=We(this);return e!==void 0&&(e.i=this.i),this.v},set(e){if(e!==this.v){if(Be>100)throw Error(`Cycle detected`);(function(e){K!==0&&Be===0&&e.l!==He&&(e.l=He,G={S:e,v:e.v,i:e.i,o:G})})(this),this.v=e,this.i++,Ue++,K++;try{for(let e=this.t;e!==void 0;e=e.x)e.t.N()}finally{B()}}}});function Ge(e,t){return new q(e,t)}function Ke(e){for(let t=e.s;t!==void 0;t=t.n)if(t.S.i!==t.i||!t.S.h()||t.S.i!==t.i)return!0;return!1}function qe(e){for(let t=e.s;t!==void 0;t=t.n){let n=t.S.n;if(n!==void 0&&(t.r=n),t.S.n=t,t.i=-1,t.n===void 0){e.s=t;break}}}function Je(e){let t,n=e.s;for(;n!==void 0;){let e=n.p;n.i===-1?(n.S.U(n),e!==void 0&&(e.n=n.n),n.n!==void 0&&(n.n.p=e)):t=n,n.S.n=n.r,n.r!==void 0&&(n.r=void 0),n=e}e.s=t}function J(e,t){q.call(this,void 0,t),this.x=e,this.s=void 0,this.g=Ue-1,this.f=4}J.prototype=new q,J.prototype.h=function(){if(this.f&=-3,1&this.f)return!1;if((36&this.f)==32||(this.f&=-5,this.g===Ue))return!0;if(this.g=Ue,this.f|=1,this.i>0&&!Ke(this))return this.f&=-2,!0;let e=V;try{qe(this),V=this;let e=this.x();(16&this.f||this.v!==e||this.i===0)&&(this.v=e,this.f&=-17,this.i++)}catch(e){this.v=e,this.f|=16,this.i++}return V=e,Je(this),this.f&=-2,!0},J.prototype.S=function(e){if(this.t===void 0){this.f|=36;for(let e=this.s;e!==void 0;e=e.n)e.S.S(e)}q.prototype.S.call(this,e)},J.prototype.U=function(e){if(this.t!==void 0&&(q.prototype.U.call(this,e),this.t===void 0)){this.f&=-33;for(let e=this.s;e!==void 0;e=e.n)e.S.U(e)}},J.prototype.N=function(){if(!(2&this.f)){this.f|=6;for(let e=this.t;e!==void 0;e=e.x)e.t.N()}},Object.defineProperty(J.prototype,"value",{get(){if(1&this.f)throw Error(`Cycle detected`);let e=We(this);if(this.h(),e!==void 0&&(e.i=this.i),16&this.f)throw this.v;return this.v}});function Ye(e,t){return new J(e,t)}function Xe(e){let t=e.m;if(e.m=void 0,typeof t==`function`){K++;let n=V;V=void 0;try{t()}catch(t){throw e.f&=-2,e.f|=8,Ze(e),t}finally{V=n,B()}}}function Ze(e){for(let t=e.s;t!==void 0;t=t.n)t.S.U(t);e.x=void 0,e.s=void 0,Xe(e)}function Qe(e){if(V!==this)throw Error(`Out-of-order effect`);Je(this),V=e,this.f&=-2,8&this.f&&Ze(this),B()}function Y(e,t){this.x=e,this.m=void 0,this.s=void 0,this.u=void 0,this.f=32,this.name=t?.name,H&&H.push(this)}Y.prototype.c=function(){let e=this.S();try{if(8&this.f||this.x===void 0)return;let e=this.x();typeof e==`function`&&(this.m=e)}finally{e()}},Y.prototype.S=function(){if(1&this.f)throw Error(`Cycle detected`);this.f|=1,this.f&=-9,Xe(this),qe(this),K++;let e=V;return V=this,Qe.bind(this,e)},Y.prototype.N=function(){2&this.f||(this.f|=2,this.u=U,U=this)},Y.prototype.d=function(){this.f|=8,1&this.f||Ze(this)},Y.prototype.dispose=function(){this.d()};function X(e,t){let n=new Y(e,t);try{n.c()}catch(e){throw n.d(),e}let r=n.d.bind(n);return r[Symbol.dispose]=r,r}var $e=typeof window<`u`&&!!window.__PREACT_SIGNALS_DEVTOOLS__,et,Z,tt,nt=[];X(function(){et=this.N})();function Q(e,t){n[e]=t.bind(null,n[e]||(()=>{}))}function $(e){if(tt){let e=tt;tt=void 0,e()}tt=e&&e.S()}function rt({data:e}){let t=at(e);t.name=`ReactiveDom`,t.value=e;let[n,r]=z(()=>{let e=this,n=this.__v;for(;n=n.__;)if(n.__c){n.__c.__$f|=4;break}let r=Ye(()=>{let e=t.value.value;return e===0?0:!0===e?``:e||``}),a=Ye(()=>!Array.isArray(r.value)&&!i(r.value)),o=X(function(){if(this.N=lt,a.value){let t=r.value;e.__v&&e.__v.__e&&e.__v.__e.nodeType===3&&(e.__v.__e.data=t)}}),s=this.__$u.d;return this.__$u.d=function(){o(),s.call(this)},[a,r]},[]);return n.value?r.peek():r.value}rt.displayName=`ReactiveTextNode`,Object.defineProperties(q.prototype,{constructor:{configurable:!0,value:void 0},type:{configurable:!0,value:rt},props:{configurable:!0,get(){let e=this;return{data:{get value(){return e.value}}}}},__b:{configurable:!0,value:1}}),Q(`__b`,(e,t)=>{if($(),Z=void 0,typeof t.type==`string`){let e,n=t.props;for(let r in n){if(r===`children`)continue;let i=n[r];i instanceof q&&(e||(t.__np=e={}),e[r]=i,n[r]=i.peek())}}e(t)}),Q(`__r`,(e,t)=>{if(e(t),t.type!==w){$();let e,n=t.__c;n&&(n.__$f&=-2,e=n.__$u,e===void 0&&(n.__$u=e=function(e,t){let n;return X(function(){n=this},{name:t}),n.c=e,n}(function(e){return function(){var t;$e&&((t=this.y)==null||t.call(this)),e.__$f|=1,e.setState({})}}(n),typeof t.type==`function`?t.type.displayName||t.type.name:``))),Z=n,$(e)}}),Q(`__e`,(e,t,n,r)=>{$(),Z=void 0,e(t,n,r)}),Q(`diffed`,(e,t)=>{$(),Z=void 0;let n;if(typeof t.type==`string`&&(n=t.__e)){let e=t.__np,r=t.props,i=n.U;if(i)for(let t in i){let n=i[t];n===void 0||e&&t in e||(n.d(),i[t]=void 0)}if(e){i||(i={},n.U=i);for(let t in e){let a=i[t],o=e[t];a===void 0?(a=it(n,t,o,r),i[t]=a):a.o(o,r)}}}e(t)});function it(e,t,n,r){let i=t in e&&e.ownerSVGElement===void 0,a=Ge(n);return{o:(e,t)=>{a.value=e,r=t},d:X(function(){this.N=lt;let n=a.value.value;r[t]!==n&&(r[t]=n,i?e[t]=n:n!=null&&(!1!==n||t[4]===`-`)?e.setAttribute(t,n):e.removeAttribute(t))})}}Q(`unmount`,(e,t)=>{if(typeof t.type==`string`){let e=t.__e;if(e){let t=e.U;if(t){e.U=void 0;for(let e in t){let n=t[e];n&&n.d()}}}let n=t.__np;if(n){let e=t.props;for(let t in n)e[t]=n[t]}t.__np=void 0}else{let e=t.__c;if(e){let t=e.__$u;t&&(e.__$u=void 0,t.d())}}e(t)}),Q(`__h`,(e,t,n,r)=>{r<3&&(t.__$f|=2),e(t,n,r)}),T.prototype.shouldComponentUpdate=function(e,t){if(this.__R)return!0;let n=this.__$u,r=n&&n.s!==void 0;for(let e in t)return!0;if(this.__f||typeof this.u==`boolean`&&!0===this.u){let e=2&this.__$f;if(!(r||e||4&this.__$f)||1&this.__$f)return!0}else if(!(r||4&this.__$f)||3&this.__$f)return!0;for(let t in e)if(t!==`__source`&&e[t]!==this.props[t])return!0;for(let t in this.props)if(!(t in e))return!0;return!1};function at(e,t){return z(()=>Ge(e,t),[])}function ot(e,t){let n=Oe(e);return n.current=e,Z.__$f|=4,z(()=>Ye(()=>n.current(),t),[])}var st=e=>{queueMicrotask(()=>{queueMicrotask(e)})};function ct(){ze(()=>{let e;for(;e=nt.shift();)et.call(e)})}function lt(){nt.push(this)===1&&(n.requestAnimationFrame||st)(ct)}function ut(e){try{return globalThis.localStorage?.getItem(e)??void 0}catch{return}}function dt(e,t){try{t===void 0?globalThis.localStorage?.removeItem(e):globalThis.localStorage?.setItem(e,t)}catch{}}function ft(e,t){let n=ut(e);if(!n)return t;try{return JSON.parse(n)}catch{return t}}var pt={"app.name":`Alisio`,"app.skip":`Skip to the conversation`,"auth.title":`Open the launch link`,"auth.body":`This browser has no session for this server. Open the URL that alisio serve printed in the terminal; it ends in ?token=….`,"reloadCmd.done":`Configuration reloaded`,"changelog.title":`What's new`,"changelog.notFound":`No entry for version {version}.`,"changelog.unreleased":`Not released yet`,"changelog.loadFailed":`Couldn't load the changelog.`,"changelog.news":`Alisio updated to {version}. Type /changelog to see what's new.`,"reload.title":`Reload required`,"reload.body":`The server was updated while this tab was open. Reload to continue.`,"reload.action":`Reload`,"stream.reconnecting":`Reconnecting…`,"common.copy":`Copy`,"common.copied":`Copied`,"common.close":`Close`,"common.cancel":`Cancel`,"common.retry":`Retry`,"common.loading":`Loading…`,"sidebar.label":`Sessions`,"sidebar.newSession":`New session`,"sidebar.workspaces":`Workspaces`,"sidebar.search":`Search sessions`,"sidebar.showArchived":`Show archived`,"sidebar.hideArchived":`Hide archived`,"sidebar.addWorkspace":`Open a workspace`,"sidebar.addWorkspacePrompt":`Absolute path of the directory`,"sidebar.addWorkspaceAction":`Open`,"sidebar.noSessions":`No sessions yet`,"sidebar.noMatches":`No sessions match “{query}”`,"sidebar.settings":`Settings`,"sidebar.collapse":`Collapse sidebar`,"sidebar.expand":`Expand sidebar`,"sidebar.untrusted":`untrusted`,"sidebar.untrustedHint":`Project resources are not loaded. Trust this folder from its ⋯ menu (or by running alisio in it from the terminal).`,"sidebar.newIn":`New session in {name}`,"sidebar.missing":`folder not found`,"sidebar.missingHint":`This folder was deleted or moved. Its sessions stay readable; new sessions are disabled.`,"sidebar.openWorkspaceFirst":`Open a workspace folder to start a session.`,"error.workspaceMissing":`The folder {path} no longer exists. Its sessions stay readable, but new sessions need an existing folder.`,"sidebar.pickWaiting":`Choose a folder in the dialog that opened on your desktop…`,"sidebar.typePath":`Type a path instead`,"sidebar.browseFolders":`Browse folders`,"sidebar.archived":`archived`,"workspace.actions":`Actions for {name}`,"workspace.pin":`Pin`,"workspace.unpin":`Unpin`,"workspace.archive":`Archive`,"workspace.unarchive":`Unarchive`,"workspace.archivedHint":`Archived workspace: its sessions stay readable. Unarchive it to start new sessions.`,"browser.title":`Open a workspace`,"browser.up":`Parent folder`,"browser.home":`Home`,"browser.drives":`This PC`,"browser.hidden":`Show hidden folders`,"browser.open":`Open this folder`,"browser.empty":`No subfolders here`,"browser.truncated":`Only the first {count} folders are shown.`,"browser.path":`Folder path`,"browser.breadcrumbs":`Folder location`,"error.workspaceArchived":`The workspace {path} is archived. Unarchive it to start new sessions.`,"error.pickerBusy":`A folder dialog is already open on the server's desktop.`,"sidebar.toggleFolder":`Show or hide sessions of {name}`,"session.untitled":`Untitled session`,"session.actions":`Actions for {title}`,"session.pin":`Pin`,"session.unpin":`Unpin`,"session.archive":`Archive`,"session.unarchive":`Restore`,"status.idle":`Idle`,"status.queued":`Queued`,"status.running":`Running`,"status.awaiting_input":`Waiting for you`,"status.locked":`In use by another process`,"status.error":`Last run failed`,"header.conversation":`Conversation`,"header.trajectory":`Trajectory`,"header.memory":`Memory`,"trajectory.time":`Time`,"trajectory.turn":`Turn`,"trajectory.type":`Event`,"trajectory.summary":`Summary`,"trajectory.duration":`Duration`,"trajectory.empty":`No events yet. Send a message to start a run.`,"trajectory.earlier":`Show {count} earlier runs`,"trajectory.status.running":`running`,"trajectory.status.completed":`completed`,"trajectory.status.failed":`failed`,"trajectory.status.cancelled":`cancelled`,"trajectory.view":`View`,"trajectory.view.table":`Table`,"trajectory.view.timeline":`Timeline`,"trajectory.waterfall":`Execution timeline`,"trajectory.lane.model":`Model`,"trajectory.lane.tool":`Tools`,"trajectory.lane.user":`User / permissions`,"trajectory.legend.model":`Model`,"trajectory.legend.tool":`Tools`,"trajectory.legend.question":`Questions to the user`,"trajectory.legend.approval":`Approvals`,"trajectory.tokensIn":`Input tokens per turn`,"trajectory.tokensOut":`Output tokens per turn`,"trajectory.toolDuration":`Time by tool`,"trajectory.axis.time":`Time from start (min:sec)`,"trajectory.axis.turn":`Turn`,"stats.turn":`{count} turn`,"stats.turns":`{count} turns`,"stats.step":`{count} step`,"stats.steps":`{count} steps`,"stats.llm":`LLM {time}`,"stats.tools":`tools {time}`,"stats.ttft":`TTFT {time}`,"stats.throughput":`{value} tok/s`,"stats.cache":`cache {value}`,"stats.input":`in {value}`,"stats.label":`Last run: {stats}`,"stats.session":`Session ({runs} runs): {stats}`,"stats.decisions":`Decisions {requests} ({completed} ok, {fallbacks} fallback)`,"stats.decisionsLatency":`avg {avg} ms · p95 {p95} ms`,"stats.decisionsFallback":`last fallback: {reason}`,"header.sessionLog":`Session log`,"header.sessionLogHint":`Download every event and message as JSON Lines`,"header.rename":`Rename session`,"header.titleLabel":`Session title`,"header.agent":`Agent {agent}`,"header.openSidebar":`Open the session list`,"preset.read-only":`Read only`,"preset.ask":`Ask`,"preset.workspace-write":`Workspace write`,"preset.full-access":`Full access`,"presetHint.read-only":`Reads only; nothing asks for approval.`,"presetHint.ask":`Every write, process and network call asks first.`,"presetHint.workspace-write":`Writes in the workspace; processes and network ask first.`,"presetHint.full-access":`Writes, runs processes and reaches the network without asking.`,"transcript.label":`Conversation`,"transcript.emptyTitle":`What should we work on?`,"transcript.emptyBody":`Describe a change, a bug or a question about this workspace. Type / for commands.`,"transcript.noSessionTitle":`No session open`,"transcript.noSessionBody":`Pick a session in the sidebar or start a new one.`,"transcript.loadOlder":`Load earlier messages`,"transcript.showEarlier":`Show {count} earlier turns`,"transcript.scrollToBottom":`Jump to the latest message`,"transcript.copyMessage":`Copy message`,"transcript.think":`Think`,"transcript.context":`Context injection`,"run.phase.waiting":`Waiting for the model…`,"run.phase.thinking":`Thinking…`,"run.phase.writing":`Writing the answer…`,"run.phase.compacting":`Compacting context…`,"run.phase.retrying":`The model did not respond; retrying ({attempt}/{of})…`,"run.phase.recovering":`The response was cut off; retrying in smaller steps ({attempt}/{of})…`,"run.phase.approval":`Waiting for your approval: {name}`,"run.phase.python":`Running Python…`,"run.phase.pythonWith":`Running Python ({detail})…`,"run.phase.data":`Reading your data…`,"run.phase.dataWith":`Reading your data ({detail})…`,"run.phase.artifact":`Publishing the artifact…`,"run.phase.artifactWith":`Publishing the artifact ({detail})…`,"run.phase.question":`Waiting for your answer…`,"run.phase.agent":`A sub-agent is working…`,"run.phase.tool":`Running {name}…`,"run.phase.toolWith":`Running {name} ({detail})…`,"run.elapsed":`Run {time}`,"run.stepElapsed":`this step {time}`,"run.lastUpdateNow":`updated just now`,"run.lastUpdate":`last update {seconds} s ago`,"run.quiet.model":`No response from the model for {seconds} s.`,"run.stalled.model":`No response from the model for {seconds} s. The provider may be busy or the connection stuck: keep waiting or stop the run.`,"run.quiet.tool":`No output from {name} for {seconds} s.`,"run.stalled.tool":`No output from {name} for {seconds} s. It may still be working; stop the run if you do not want to wait.`,"run.announce.quiet":`No news for over {seconds} seconds.`,"run.announce.stalled":`No response for over {seconds} seconds. You can stop the run.`,"run.stop":`Stop`,"notice.run_timeout_waiting":`{who} did not respond within {seconds} s: no tokens were received. Retry, switch to another model, or raise limits.timeoutMs.`,"notice.run_timeout_waiting_later":`The run reached its limit of {seconds} s of active time (time spent waiting for you is not counted) while waiting for {who}. What was produced so far is kept: prompt again to continue, switch model, or raise limits.timeoutMs.`,"notice.run_timeout_streaming":`The run reached its limit of {seconds} s of active time (time spent waiting for you is not counted) while {who} was answering. What was produced so far is kept: prompt again to continue or raise limits.timeoutMs.`,"notice.run_timeout_tool":`The run reached its limit of {seconds} s of active time (time spent waiting for you is not counted) while running {tool}. What was produced so far is kept: prompt again to continue or raise limits.timeoutMs.`,"notice.run_timeout_other":`The run reached its limit of {seconds} s of active time (time spent waiting for you is not counted). What was produced so far is kept: prompt again to continue or raise limits.timeoutMs.`,"notice.run_timeout_first_token":`{who} sent nothing within {seconds} s of the request, so the run was stopped. Retry, switch to another model, or raise or disable limits.firstTokenTimeoutMs.`,"notice.run_timeout_first_token_retried":`{who} did not respond after {attempts} attempts of {seconds} s each, so the run was stopped. Retry, switch to another model, or raise or disable limits.firstTokenTimeoutMs; limits.firstTokenRetries sets how many times a silent request is sent again.`,"notice.run_output_truncated":`The response of {who} was cut off {attempts} time(s) by the output-token limit ({maxOutputTokens} tokens, {source}) before it produced a usable response, so the run was stopped. Raise limits.maxOutputTokens (/settings or the config file), lower the reasoning effort (/effort), or ask for the result in smaller parts.`,"transcript.sending":`Sending…`,"transcript.notSent":`Not sent: {error}`,"transcript.images":`{count} image(s)`,"transcript.turnDone":`Response complete`,"tool.input":`Input`,"tool.output":`Output`,"tool.running":`Running`,"tool.failed":`Failed`,"tool.pending":`No result recorded`,"tool.noOutput":`No output yet`,"tool.truncated":`The result was truncated for streaming; reload the session to see all of it.`,"tool.rawOutput":`Raw output`,"tool.expand":`Show details of {name}`,"tool.duration":`{ms} ms`,"notice.summary":`Earlier messages were compacted into a summary`,"notice.run_failed":`The run failed: {error}`,"notice.run_cancelled":`The run was stopped`,"notice.run_turns_exceeded":`Stopped after {turns} turns (turn limit)`,"notice.response_truncated":`The answer hit the output limit ({maxOutputTokens} tokens, {source})`,"limitSource.user":`set by you`,"limitSource.model":`from the model catalog`,"limitSource.default":`default`,"limitSource.unknown":`current limit`,"notice.model_changed":`Model changed from {previous} to {model}`,"notice.compaction_completed":`History compacted: ~{before} → ~{after} tokens`,"notice.compaction_failed":`Compaction failed: {error}`,"notice.context_reduced":`{messages} tool results were shortened to fit the context`,"notice.plugin_hook_failed":`Plugin {source} failed in {hook}: {error}`,"block.unsupported":`Unsupported block: {kind}`,"block.showJson":`Show the raw block`,"diff.title":`Changes`,"diff.files":`{count} files`,"diff.untitled":`(unnamed file)`,"diff.unified":`Unified`,"diff.split":`Side by side`,"diff.binary":`Binary file changed`,"diff.noChanges":`No changes`,"diff.status.modified":`modified`,"diff.status.added":`added`,"diff.status.deleted":`deleted`,"diff.status.renamed":`renamed`,"terminal.output":`Output`,"terminal.copyCommand":`Copy command`,"terminal.copyOutput":`Copy output`,"terminal.showAll":`Show {count} earlier lines`,"terminal.empty":`No output`,"terminal.waiting":`Waiting for output…`,"terminal.running":`Running…`,"terminal.exit":`exit {code}`,"terminal.truncated":`output truncated`,"json.copyValue":`Copy value`,"json.copyPath":`Copy path`,"json.more":`… {count} more`,"json.source":`View as code`,"json.tree":`View as tree`,"tests.passed":`{count} passed`,"tests.failed":`{count} failed`,"tests.skipped":`{count} skipped`,"tests.onlyFailed":`Only failures`,"tests.error":`Error`,"tests.status.passed":`passed`,"tests.status.failed":`failed`,"tests.status.skipped":`skipped`,"tests.status.todo":`to do`,"progress.title":`Progress`,"progress.status.pending":`pending`,"progress.status.running":`running`,"progress.status.completed":`completed`,"progress.status.failed":`failed`,"progress.status.cancelled":`cancelled`,"dock.label":`Workspace files`,"dock.files":`Files`,"dock.changes":`Changes`,"dock.preview":`Preview`,"dock.tasks":`Tasks`,"dock.tasksLive":`{count} running`,"dock.close":`Close the panel`,"dock.more":`Show more`,"dock.symlink":`Symbolic link (not followed)`,"dock.noChanges":`This session has not changed any file yet.`,"dock.gitStatus":`Git status`,"dock.noPreview":`Pick a file in Files or Changes, or a path in the conversation.`,"dock.truncated":`Showing the first 2 MB of {size} KB.`,"dock.download":`Download`,"dock.binary":`Binary file.`,"dock.copyPath":`Copy path`,"dock.mention":`Mention in the message`,"dock.noSession":`Open a session to browse its workspace.`,"dock.copyAbsolute":`Copy absolute path`,"dock.copyRelative":`Copy relative path`,"dock.copyName":`Copy file name`,"dock.htmlView":`HTML view`,"dock.viewRendered":`Rendered`,"dock.viewSource":`Source`,"header.toggleDock":`Show or hide files and changes`,"tool.openFile":`Open {path} in the side panel`,"diff.open":`Open the file`,"mermaid.source":`Source`,"mermaid.diagram":`Diagram`,"mermaid.export":`Export SVG`,"mermaid.fullscreen":`Full screen`,"mermaid.zoomIn":`Zoom in`,"mermaid.zoomOut":`Zoom out`,"mermaid.zoomReset":`Reset zoom`,"mermaid.error":`The diagram could not be drawn: {message}`,"math.error":`The formula could not be rendered: {message}`,"math.copy":`Copy TeX source`,"code.wrap":`Wrap lines`,"composer.label":`Message the agent`,"composer.placeholder":`Describe what you want to build. / for commands`,"composer.attach":`Attach images or data files (PNG, JPEG, GIF, WebP, CSV, TSV, JSON, JSONL, XLSX; paste or drop them too)`,"composer.attachments":`Files to send`,"composer.uploadFailed":`Failed`,"composer.removeAttachment":`Remove {name}`,"composer.reject.too-large":`Images are limited to 10 MB each.`,"composer.reject.unsupported":`Attach PNG, JPEG, GIF or WebP images, or CSV, TSV, JSON, JSONL or XLSX data files.`,"composer.reject.too-many":`Up to 8 files per message.`,"composer.reject.empty":`The file is empty.`,"composer.send":`Send`,"composer.compacting":`Compacting the context. You can send again when it finishes.`,"composer.stop":`Stop the run`,"composer.preset":`Permissions: {preset}`,"composer.agent":`Agent: {agent}`,"composer.agentHint":`Switch agent (Shift+Tab cycles)`,"composer.agentApplied":`Agent: {agent}. Applies from the next prompt.`,"composer.model":`Model and effort`,"composer.effort":`Reasoning effort`,"composer.effortDefault":`Default`,"composer.models":`Models`,"composer.modelsUnavailable":`The provider did not list its models`,"composer.context":`Context: {used} of {total} tokens ({percent}%)`,"composer.contextUnknown":`Context: about {used} tokens (window unknown)`,"composer.locked":`Another Alisio process is using this session; it is read-only here.`,"composer.child":`This is a child session; its parent session drives it.`,"btw.title":`Side question`,"btw.subtitle":`Not added to the conversation`,"btw.history":`Side question history`,"btw.earlier":`Earlier answer (←)`,"btw.later":`Later answer (→)`,"btw.position":`{n}/{total}`,"btw.copy":`Copy answer`,"btw.thinking":`Thinking…`,"btw.usage":`Ask a side question about the current session without adding to the conversation.`,"btw.tokens":`{model} · {input} in · {output} out tokens`,"btw.truncated":`truncated`,"palette.label":`Commands`,"palette.empty":`No command matches`,"palette.source.builtin":`built-in`,"palette.source.plugin":`plugin`,"palette.source.prompt":`prompt`,"palette.source.skill":`skill`,"palette.source.agent":`agent`,"approval.title":`Approval required`,"approval.effect.write":`write files`,"approval.effect.process":`run a process`,"approval.effect.external":`reach outside the workspace`,"approval.wants":`{tool} wants to {effect}`,"approval.directory":`Allow access to a directory outside the workspace?`,"approval.from":`Requested by {label}`,"approval.child":`From a child session`,"approval.more":`{count} more waiting`,"approval.deny":`Deny`,"approval.once":`Allow once`,"approval.session":`Allow for session`,"approval.keys":`Keys: D deny · O allow once · S allow for session`,"approval.announce":`Approval required: {tool}`,"artifact.kind.dashboard":`Dashboard`,"artifact.kind.document":`Document`,"artifact.kind.spreadsheet":`Spreadsheet`,"artifact.kind.image":`Image`,"artifact.kind.data":`Data`,"artifact.kind.code":`Text`,"artifact.kind.archive":`Archive`,"artifact.kind.file":`File`,"artifact.open":`Open file`,"artifact.openNamed":`Open {name}, {kind}`,"artifact.download":`Download`,"artifact.downloadNamed":`Download {name}`,"artifact.downloadNamedKind":`Download {name}, {kind}`,"artifact.meta":`{size} · {date}`,"artifact.partial":`Partial`,"artifact.expired":`Expired`,"artifact.deleted":`Deleted`,"artifact.unavailable":`Unavailable`,"artifact.retry":`Retry`,"artifact.noPreview":`This file type can't be previewed.`,"artifact.loading":`Loading…`,"artifact.tooLarge":`Too large to preview ({size}).`,"artifact.downloadInstead":`Download the file to open it.`,"artifactPanel.label":`Artifact viewer`,"artifactPanel.switch":`Switch artifact`,"artifactPanel.filter":`Filter artifacts`,"artifactPanel.new":`New`,"artifactPanel.empty":`No artifacts in this session yet.`,"artifactPanel.noMatch":`No artifacts match.`,"artifactPanel.fullscreen":`Full screen`,"artifactPanel.exitFullscreen":`Exit full screen`,"artifactPanel.close":`Close`,"artifactPanel.expand":`Expand panel`,"artifactPanel.restore":`Restore panel`,"artifactPanel.resize":`Resize panel`,"artifactPanel.openNewTab":`Open in new tab`,"artifactPanel.sources":`Download analysis sources`,"artifactPanel.export":`Copy to workspace…`,"artifactPanel.details":`Details`,"artifactPanel.delete":`Delete`,"artifactPanel.deleteConfirm":`Delete {name}? This can't be undone.`,"artifactPanel.loadFailed":`Couldn't load the preview.`,"artifactPanel.reload":`Reload`,"artifactPanel.gone":`This artifact is no longer available. Choose another one from the list.`,"artifactPanel.fit":`Fit`,"artifactPanel.actualSize":`100 %`,"artifactPanel.exportTitle":`Copy to workspace`,"artifactPanel.exportTarget":`Folder in the workspace`,"artifactPanel.exportHint":`Relative to the workspace; “.” is its root. Alisio asks before writing unless writes are allowed.`,"artifactPanel.overwrite":`Replace existing files`,"artifactPanel.exportSubmit":`Copy`,"artifactPanel.exportStarted":`Copying {name} to the workspace…`,"artifactPanel.detailsTitle":`Details`,"artifactPanel.created":`Created`,"artifactPanel.size":`Size`,"artifactPanel.files":`Files`,"artifactPanel.model":`Model`,"artifactPanel.provider":`Provider`,"artifactPanel.dashboard":`Dashboard`,"artifactPanel.plannerRules":`Rules`,"artifactPanel.plannerDecisions":`Rules and decisions`,"artifactPanel.runtime":`Runtime`,"artifactPanel.inputs":`Inputs`,"artifactPanel.execution":`Execution`,"artifactPanel.script":`Script SHA-256`,"artifactPanel.none":`—`,"dataset.uploading":`Reading {name}…`,"dataset.failed":`Couldn't read {name}: {error}`,"dataset.shape":`{rows} rows × {columns} columns`,"dataset.sheets":`{count} sheets`,"dataset.open":`Open {name} as a table`,"dataset.defaultPrompt":`Take a look at the attached data and tell me what is in it.`,"dataset.attached":`Attached data`,"sheet.label":`Table viewer`,"sheet.sheet":`Sheet`,"sheet.filterColumn":`Filter column`,"sheet.allColumns":`All columns`,"sheet.filter":`Filter rows`,"sheet.rows":`{total} rows`,"sheet.matches":`{matched} of {total} rows match`,"sheet.loading":`Loading rows…`,"sheet.preparing":`Preparing the table…`,"sheet.empty":`This sheet has no rows.`,"sheet.noMatches":`No rows match.`,"sheet.error":`Couldn't load the table.`,"sheet.notInteractive":`Sorting and filtering are off above {limit} rows: the file has no indexes.`,"sheet.needColumn":`Choose a column to filter a sheet this large.`,"sheet.jumpLimited":`While sorted or filtered you can only reach the first {limit} rows by jumping; keep scrolling.`,"sheet.sortBy":`Sort by {column}`,"sheet.resizeColumn":`Resize column {column}`,"sheet.copyRow":`Copy row`,"sheet.copied":`Copied`,"sheet.downloadOriginal":`Download original`,"sheet.rowNumber":`Row`,"artifactPanel.frameTitle":`{name} (isolated preview)`,"approval.analysisRun.title":`Run Python analysis?`,"approval.analysisRun.notSandboxed":`Managed Python is not a sandbox: the script runs with your user permissions and can read your files and use the network.`,"approval.analysisRun.container":`Runs in a container without network access.`,"approval.analysisRun.repo":`Repository files are not modified by this step.`,"approval.analysisRun.repoManaged":`Alisio does not modify repository files in this step, but the script could.`,"approval.analysisRun.script":`Script (first 40 lines)`,"approval.allowForSession":`Allow for this session`,"mode.auto":`Auto`,"modes.title":`Permission mode`,"modes.status":`Status: {mode}`,"modes.statusReadOnly":`Read-only: nothing can write or run.`,"modes.fullConfirm":`Enable full access? Writes, commands and network calls run without asking. Not a sandbox: the agent has your user's permissions.`,"modes.manage":`Manage saved permissions…`,"permissions.title":`Session permissions`,"permissions.analysisRun":`Python analysis`,"permissions.allowedSession":`Allowed for this session · since {time}`,"permissions.revoke":`Revoke`,"permissions.none":`No saved permissions in this session.`,"permissions.loadFailed":`Couldn't load the permissions.`,"interaction.title":`A plugin is asking`,"interaction.from":`Asked by {label}`,"interaction.questionOf":`Question {n} of {total}`,"interaction.recommended":`Recommended`,"interaction.skip":`Skip`,"interaction.next":`Next`,"interaction.submit":`Submit`,"plan.review.eyebrow":`Plan review`,"plan.review.revision":`Revision {n}`,"plan.review.title":`Plan complete. What would you like to do?`,"plan.option.approve":`Agree and start implementation`,"plan.option.approve.hint":`The build agent implements exactly this plan.`,"plan.option.skip":`Skip for now`,"plan.option.skip.hint":`Stay in plan mode; nothing changes.`,"plan.option.context":`Add context`,"plan.option.context.hint":`Tell the plan agent what to change; it plans again.`,"plan.review.contextLabel":`Context for the plan`,"plan.review.contextPlaceholder":`Add context for the plan`,"plan.review.send":`Send context`,"plan.review.back":`Back`,"settings.title":`Settings`,"settings.general":`General`,"settings.appearance":`Appearance`,"settings.language":`Language`,"settings.theme":`Theme`,"settings.density":`Process rows`,"settings.plugins":`Plugins`,"settings.skills":`Skills`,"settings.mcp":`MCP servers`,"settings.agents":`Agent presets`,"settings.about":`About`,"settings.workspace":`Workspace: {path}`,"settings.noWorkspace":`Open or add a workspace first; these settings belong to a workspace.`,"settings.default":`Default`,"settings.agentSettings":`Agent settings`,"settings.agentSettingsLead":`Saved for this user in`,"settings.readOnly":`alisio serve runs with --read-only: settings cannot be changed.`,"plugins.lead":`Configure and inspect the plugins loaded in this workspace.`,"plugins.tab.configuration":`Plugin configuration`,"plugins.tab.list":`Plugin list`,"plugins.search":`Search plugins`,"plugins.none":`No plugin matches.`,"plugins.status.enabled":`Enabled`,"plugins.status.disabled":`Disabled`,"plugins.status.failed":`Failed`,"plugins.status.restart":`Restart required`,"plugins.id":`Id`,"plugins.version":`Version`,"plugins.source":`Source`,"plugins.builtin":`built in`,"plugins.categories":`Categories`,"plugins.tools":`Tools`,"plugins.commands":`Commands`,"plugins.enable":`Enabled in this workspace`,"plugins.enableNamed":`Enable {name}`,"plugins.deferred":`Saved. It applies when the workspace's runs finish.`,"plugins.notSandboxed":`Plugins are not sandboxed: they run inside the alisio serve process with your user's permissions. Enable only plugins you trust.`,"plugins.howToInstall":`Plugins are installed from the terminal (alisio plugins or the configuration file); the web only enables or disables the ones already configured.`,"plugins.applyNote":`Enabling or disabling a plugin saves a project override and reloads the workspace as soon as it has no runs; open sessions keep their history.`,"plugins.projectFile":`Project configuration file:`,"skills.lead":`Skills the agent can load in this workspace. Disabled skills leave the slash palette and the model's catalog.`,"skills.search":`Search skills`,"skills.none":`No skill found.`,"skills.shadowed":`Shadowed`,"skills.meta":`{scope} · about {tokens} tokens`,"skills.shadowedBy":`shadowed by {id}`,"skills.locked":`locked by its plugin`,"mcp.lead":`Model Context Protocol servers configured for this workspace.`,"mcp.notGranted":`MCP access is not granted for this workspace: servers stay disconnected.`,"mcp.granted":`MCP access granted until alisio serve stops.`,"mcp.grantedPersisted":`MCP access granted for this user (mcp.allow).`,"mcp.readOnly":`alisio serve runs with --read-only: MCP is unavailable.`,"mcp.grant":`Grant MCP access`,"mcp.consentTitle":`Allow MCP servers to run?`,"mcp.consentBody":`MCP servers are local processes or remote services that run with your user's privileges and can read files and reach the network. Grant access only if you trust the configured servers.`,"mcp.remember":`Remember for this user (writes mcp.allow to your configuration)`,"mcp.none":`No MCP servers are configured.`,"mcp.status":`{status}`,"mcp.meta":`{transport} · {source} · {tools} tools · {resources} resources · {prompts} prompts`,"mcp.needsGrant":`Grant MCP access first`,"mcp.connect":`Connect`,"agents.lead":`Agents that can drive a session. Pick one for the open session; definitions are edited outside the web.`,"agents.source.builtin":`built in`,"agents.source.user":`user`,"agents.source.plugin":`plugin`,"agents.readOnly":`read-only`,"agents.default":`workspace default`,"agents.model":`Suggested model: {model}`,"agents.instructions":`Instructions`,"agents.inUse":`In use`,"agents.use":`Use in this session`,"appearance.lead":`How the interface looks in this browser.`,"appearance.iconTheme":`Icon theme`,"appearance.iconTheme.none":`None`,"appearance.iconTheme.empty":`No icon theme plugin is installed. Install one (for example @alisio/plugin-material-icons) and reopen Settings.`,"about.description":`Alisio is a coding-agent harness that connects to OpenAI-compatible endpoints and runs in your terminal or browser, with its own TypeScript core and extensible tools, plugins and skills.`,"about.version":`Alisio {version}`,"about.versionUnknown":`Version unavailable`,"about.versionTitle":`Alisio version {version}`,"about.repository":`View the repository on GitHub`,"about.repositoryLabel":`View the Alisio repository on GitHub (opens in a new tab)`,"config.open":`Open configuration file`,"config.lead":`alisio serve does not open editors; copy a path and open it yourself.`,"config.effective":`Effective configuration file`,"config.settings":`User settings (written by this page)`,"config.providers":`Provider profiles`,"config.copy":`Copy path`,"config.untrusted":`This workspace is not trusted, so its .alisio/config.json is ignored. Trust it from its ⋯ menu in the sidebar (or from the terminal).`,"settings.models":`Models`,"models.lead":`Provider profiles, their credentials and the provider this workspace runs.`,"models.running":`This workspace runs {provider} · {model} (profile: {profile}).`,"models.none":`No provider profiles yet. Add one below or run alisio connect in a terminal.`,"models.activeGlobal":`Default profile`,"models.current":`This workspace`,"models.edit":`Edit`,"models.activate":`Activate in this workspace`,"models.activated":`{name} is now active in this workspace.`,"models.unchanged":`That profile and model are already active.`,"models.add":`Add a profile`,"models.form.name":`Profile name`,"models.form.type":`Provider`,"models.form.model":`Model`,"models.form.save":`Save profile`,"models.form.secretsNote":`Secrets are not part of a profile: set them below it after saving; they are stored apart and never shown again.`,"models.credential.missing":`Not set`,"models.credential.env":`Taken from an environment variable`,"models.credential.stored":`Stored`,"models.credential.storedTail":`Stored · ends in {tail}`,"models.credential.enter":`Paste a new value`,"models.credential.replace":`Replace the stored value`,"models.credential.save":`Save`,"models.credential.remove":`Remove`,"models.credential.saved":`Credential saved. Activate the profile to use it now.`,"theme.dark":`Dark`,"theme.light":`Light`,"theme.system":`System`,"density.compact":`Compact`,"density.detailed":`Detailed`,"language.en":`English`,"language.es":`Español`,"error.generic":`{message}`,"sidebar.agents":`Agents`,"agentsWin.title":`Agents`,"agentsWin.maximize":`Maximize`,"agentsWin.restore":`Restore size`,"agentsWin.lead":`Agents are Markdown files other harnesses can read too: project agents live in .agents/agents of the workspace, global agents in ~/.agents/agents.`,"agentsWin.create":`Create`,"agentsWin.yours":`Your agents`,"agentsWin.none":`No agents yet. Create one, or start from a template below.`,"agentsWin.templates":`Templates`,"agentsWin.scope.project":`Project`,"agentsWin.scope.global":`Global`,"agentsWin.overrides":`Overrides global`,"agentsWin.overridden":`Overridden by project`,"agentsWin.delete":`Delete`,"agentsWin.deleteConfirm":`Delete {path}? Other tools that read this file lose the agent too.`,"agentsWin.deleted":`Agent deleted.`,"agentsWin.deletedRestart":`Agent file deleted. Restart Alisio to drop it from the running agents.`,"agentsWin.newAgent":`New agent`,"agentsWin.setup":`Setup`,"agentsWin.sessions":`Sessions`,"agentsWin.definition":`Agent definition`,"agentsWin.name":`Name`,"agentsWin.description":`Description`,"agentsWin.descriptionPlaceholder":`One sentence: what this agent does (derived from the instructions when empty)`,"agentsWin.instructions":`Instructions`,"agentsWin.instructionsPlaceholder":`Describe desired model behavior (tone, tool usage, response style)`,"agentsWin.scope":`Scope`,"agentsWin.scopeHint":`Where the file is saved. A project agent overrides a global one with the same name.`,"agentsWin.scopeUntrusted":`This workspace is not trusted: its project agents are saved but not loaded until you trust it from the terminal.`,"agentsWin.model":`Model`,"agentsWin.modelSection":`Model`,"agentsWin.chooseModel":`Choose a model`,"agentsWin.modelActive":`{name} (active)`,"agentsWin.capsUnknown":`Capabilities not declared by the provider; every option is offered.`,"agentsWin.textFormat":`Text format`,"agentsWin.format.text":`Text`,"agentsWin.format.json_object":`JSON`,"agentsWin.format.json_schema":`JSON Schema`,"agentsWin.effort":`Reasoning effort`,"agentsWin.verbosity":`Verbosity`,"agentsWin.summary":`Summary`,"agentsWin.modelDefault":`Model default`,"agentsWin.unsupported":`Not supported by this model`,"agentsWin.level.minimal":`Minimal`,"agentsWin.level.low":`Low`,"agentsWin.level.medium":`Medium`,"agentsWin.level.high":`High`,"agentsWin.level.xhigh":`Extra high`,"agentsWin.summary.auto":`Auto`,"agentsWin.summary.none":`None`,"agentsWin.summary.concise":`Concise`,"agentsWin.summary.detailed":`Detailed`,"agentsWin.save":`Save agent definition`,"agentsWin.saved":`Agent saved and available now.`,"agentsWin.savedRestart":`Agent saved. Restart Alisio to use it.`,"agentsWin.saveFailed":`Could not save the agent: {message}`,"agentsWin.assistTitle":`Create with Alisio`,"agentsWin.assistLead":`Describe the agent; the active model writes its instructions following agent-authoring standards, then you review it.`,"agentsWin.assistRefineLead":`Optional: what should change? The active model refines these instructions to the authoring standards.`,"agentsWin.assistPlaceholder":`e.g. reviews pull requests for security issues and explains fixes`,"agentsWin.assistCreate":`Create with Alisio`,"agentsWin.assistRefine":`Refine with Alisio`,"agentsWin.building":`Building with Alisio`,"agentsWin.buildingBody":`{model} is writing the agent's role, goal, scope, tool rules, constraints and output format…`,"agentsWin.buildingElapsed":`{seconds} s`,"agentsWin.buildFailed":`Alisio could not build the agent: {message}`,"agentsWin.buildDone":`Draft by {model} ({guidance}). Review it before saving.`,"agentsWin.createdTitle":`{name} is ready`,"agentsWin.createdBody":`Try it in a new chat with the agent active, or keep editing.`,"agentsWin.createdRestart":`It was saved, but this Alisio has not loaded it; restart Alisio to try it.`,"agentsWin.tryIt":`Try it in a new chat`,"agentsWin.stay":`Stay in editor`,"agentsWin.config":`Agent config`,"agentsWin.configCopy":`Copy request`,"agentsWin.configLead":`The same definition through Alisio's own API (alisio serve).`,"agentsWin.gettingStarted":`Get started creating an agent`,"agentsWin.dismiss":`Dismiss`,"agentsWin.step.define":`Define an agent`,"agentsWin.step.defineBody":`Choose a model, instructions, and optional function tools.`,"agentsWin.step.runtime":`Choose a runtime`,"agentsWin.step.runtimeBody":`Agents run locally in a workspace you open in Alisio, with its permission presets.`,"agentsWin.step.session":`Create a session`,"agentsWin.step.sessionBody":`Start a durable agent workspace with optional initial input.`,"agentsWin.step.events":`Exchange events`,"agentsWin.step.eventsBody":`Messages, tool calls and results stream into the chat.`,"agentsWin.sessionsEmpty":`No sessions use this agent yet.`,"agentsWin.sessionsUnsaved":`Save the agent to start sessions with it.`,"agentsWin.startSession":`Start a session with this agent`,"agentsWin.untitled":`Untitled session`,"agentsWin.noWorkspace":`Open a workspace to use project agents and start sessions; global agents still work.`,"agentsWin.modelFallback":`{model} is not in the configured profiles; the chat uses the current model.`,"agentsWin.unsavedLeave":`Discard unsaved changes?`,"agentsWin.picker":`Switch agent`,"agentsWin.pickerSearch":`Search agents`,"agentsWin.pickerLead":`Applies from the next prompt of this chat.`,"agentsWin.current":`Current`,"agentsWin.defaultAgent":`Default`,"agentsWin.builtin":`Built-in`,"agentsWin.plugin":`Plugin`,"agentsWin.pickerEmpty":`No agents match "{query}".`,"agentsWin.manage":`Manage agents…`,"agentsWin.activeBadge":`Active agent: {name}. Change it with /agents.`,"agentsWin.back":`Agents`,"agentsWin.nameError.required":`A name is required.`,"agentsWin.nameError.tooLong":`Use at most 80 characters.`,"agentsWin.nameError.noLetters":`Include at least one letter or digit.`,"trust.grant":`Trust this workspace…`,"trust.revoke":`Stop trusting this workspace…`,"trust.menuHint":`Project config, plugins, agents, skills and prompts`,"trust.confirm":`Trust {path}?
2
2
 
3
- Alisio will load this folder's project configuration (which can change the provider endpoint and key), its plugins (code that runs with your user privileges), agents, skills and prompts. Only trust folders whose contents you trust. If .alisio/config.json changes later, you will be asked again.`,"trust.confirmRevoke":`Stop trusting {path}? Its project configuration, plugins, agents, skills and prompts stop loading.`,"trust.granted":`Workspace trusted: its project resources are loaded.`,"trust.revoked":`Workspace no longer trusted: its project resources were unloaded.`,"settings.analysis.lead":`Python scripts the agent writes run here and their results become downloadable files. Nothing on this page is required: Python is detected automatically.`,"settings.analysis.status":`Runtime`,"settings.analysis.mode":`Mode`,"settings.analysis.mode.managed":`Managed: your own Python`,"settings.analysis.mode.oci":`Container: Docker or Podman`,"settings.analysis.managedNote":`Managed Python is not a sandbox: the script runs with your user permissions and can read your files and use the network.`,"settings.analysis.containerNote":`Runs in a container without network access, a read-only root and only the job folders. It limits the damage; it is not a hardened sandbox.`,"settings.analysis.runtime":`Python runtime`,"settings.analysis.detected":`Python {version} · {path} (detected automatically)`,"settings.analysis.notFound":`No Python 3.10+ found on this machine.`,"settings.analysis.installHint.title":`How to install Python on this system`,"settings.analysis.installHint.afterInstall":`After installing, no restart is needed.`,"settings.analysis.runtimeVersion":`Environment version`,"settings.analysis.extras":`Optional packages`,"settings.analysis.extras.none":`None installed. The standard library is enough for most analyses.`,"settings.analysis.extras.installed":`Installed: {extras}`,"settings.analysis.extras.hint":`When an analysis needs pandas, numpy or similar, Alisio asks once before downloading them. You can also run alisio analysis setup --extras analysis.`,"settings.analysis.oci":`Container runtime`,"settings.analysis.oci.engine":`Engine`,"settings.analysis.oci.image":`Image`,"settings.analysis.oci.noImage":`No image set. Set analysis.oci.image (pinned by digest) in your user configuration.`,"settings.analysis.oci.available":`Available ({version})`,"settings.analysis.oci.unavailable":`Not available: {reason}`,"settings.analysis.oci.unused":`Not used in managed mode.`,"settings.analysis.oci.limits":`{memory} MB of memory · {cpus} CPUs`,"settings.analysis.enabled":`Enable data analysis`,"settings.analysis.enabledHint":`Turns python_run, artifacts and the data tools on or off. The workspace reloads its tools when its runs finish.`,"settings.analysis.smartDashboard":`Smart Dashboard`,"settings.analysis.smartDashboardHint":`Offers dashboard_generate, which builds a dashboard from a dataset with no code. Off removes the tool. Applies the next time the workspace reloads its tools.`,"settings.analysis.timeout":`Execution timeout (seconds)`,"settings.analysis.retention":`Retention`,"settings.analysis.retention.lead":`Old files are cleaned up automatically, at most once a day. 0 never deletes that kind of file.`,"settings.analysis.retention.jobs":`Keep job logs and unused datasets (days)`,"settings.analysis.retention.intermediate":`Keep scratch files (days)`,"settings.analysis.retention.artifacts":`Expire artifacts after (days)`,"settings.analysis.retention.lastSweep":`Last cleanup: {time}`,"settings.analysis.retention.never":`No cleanup has run yet.`,"settings.analysis.disabled":`Data analysis is off: python_run and the data tools are not available.`,"settings.analysis.readOnlyRuntime":`alisio serve runs with --read-only: python_run is not available.`,"approval.analysisInstall.title":`Install Python packages?`,"approval.analysisInstall.packages":`Packages: {packages}`,"approval.analysisInstall.dependencies":`Plus their dependencies ({count} pinned wheels in total).`,"approval.analysisInstall.size":`Download: about {size}.`,"approval.analysisInstall.network":`This needs network access.`,"approval.analysisInstall.safety":`Wheels only, hash-verified, in a private environment; nothing is compiled.`,"approval.analysisInstall.once":`This permission is never remembered: it asks every time.`,"approval.keysInstall":`Keys: D deny · O allow once`,"artifactPanel.rerun":`Run again`,"artifactPanel.rerunStarted":`Running the analysis of {name} again…`,"artifactPanel.rerunOf":`Repeat of`,"artifactPanel.status":`Status`,"artifactPanel.expiredHint":`The files were removed by the retention policy. Run the analysis again to recreate them.`,"forge.badge.javascript":`JavaScript · WASM isolate`,"forge.badge.pythonOci":`Python · OCI container`,"forge.badge.pythonWasm":`Python · WASM process`,"forge.badge.pythonHost":`Python · host (not sandboxed)`,"settings.analysis.mode.auto":`Automatic: the most isolated backend that is ready`,"settings.analysis.mode.wasm":`WebAssembly: Pyodide, no container needed`,"forge.isolation.osContainer":`Container: isolated by the operating system`,"forge.isolation.wasmIsolate":`WASM isolate: no access to the host`,"forge.isolation.wasmProcess":`WASM process: partly restricted`,"forge.isolation.none":`None: runs on the host with your privileges`,"forge.live.running":`Running`,"forge.live.runningCalls":`Running: {done} of {total} calls finished`,"forge.live.done":`Finished`,"forge.live.failed":`Failed`,"forge.sandboxed":`The code runs isolated from your machine`,"forge.notSandboxed":`Not sandboxed: the code runs on this machine with your privileges`,"forge.progress":`Progress`,"forge.progressText":`{completed} of {total}`,"forge.js.title":`JavaScript`,"forge.code":`Code`,"forge.copyCode":`Copy code`,"forge.copyPath":`Copy path`,"forge.codeFile":`The script is a file in the session scratchpad.`,"forge.noCode":`No code in this call.`,"forge.calls":`Nested calls`,"forge.callsSummary":`{total} calls · {failed} failed · {denied} denied`,"forge.call.started":`Running`,"forge.call.succeeded":`Done`,"forge.call.failed":`Failed`,"forge.call.denied":`Denied`,"forge.noValue":`The script returned nothing.`,"forge.reason":`Engine chosen: {reason}`,"forge.outputCut":`The output was cut to the limit; return less from the script.`,"run.phase.javascript":`Running JavaScript…`,"run.phase.javascriptWith":`Running JavaScript ({detail})…`,"artifactPanel.engine":`Engine`,"artifactPanel.isolation":`Isolation`,"artifactPanel.engineReason":`Why this engine`,"artifactPanel.startup":`Startup`,"artifactPanel.peakMemory":`Peak memory`,"settings.forge":`Forja`,"settings.forge.title":`Forja`,"settings.forge.lead":`Where the agent runs code: JavaScript in an isolated engine, and Python in the safest backend available. Values without a switch are read only; the key shown is the one to change in your configuration file.`,"forge.javascript":`JavaScript`,"forge.javascript.lead":`js_run lets the agent combine tools in a short script. It runs in a WASM engine with no files, network or system access; every tool it calls goes through your permissions.`,"forge.status":`Status`,"forge.js.off":`Off`,"forge.js.ready":`Ready`,"forge.js.unverified":`Not verified`,"forge.js.engine":`Engine`,"forge.js.hash":`WASM module (SHA-256)`,"forge.js.host":`Runs in`,"forge.host.worker":`A worker thread of this process`,"forge.host.process":`A separate process`,"forge.limit.timeout":`Time limit`,"forge.limit.memory":`Memory`,"forge.limit.stack":`Stack`,"forge.limit.toolCalls":`Tool calls per script`,"forge.limit.concurrency":`Parallel calls`,"forge.limit.outputChars":`Output returned (characters)`,"forge.limitsHint":`Limits come from forge.javascript.* in your configuration file.`,"forge.scratch":`Scratchpad`,"forge.scratchValue":`Up to {size} per session, removed after {days} days without use`,"forge.scratchOff":`Off`,"forge.js.enable":`Enable JavaScript (js_run)`,"forge.js.enableHint":`Off brings back the previous execute tool. The workspace reloads its tools when its runs finish.`,"forge.python":`Python`,"forge.backends":`Python backends`,"forge.backend.oci":`Container (Docker or Podman)`,"forge.backend.wasm":`WebAssembly (Pyodide)`,"forge.backend.managed":`Managed (your own Python)`,"forge.ready":`Ready`,"forge.notReady":`Not ready`,"forge.inUse":`Used now`,"forge.profiles":`Packages:`,"forge.copyCommand":`Copy command`,"forge.runtimeSetting":`Runtime`,"forge.isolationPolicy":`Isolation policy`,"forge.runsOn":`Runs on`,"forge.noneReady":`No backend is ready under this policy`,"forge.policyHint":`With the policy {policy}, auto tries the container, then WebAssembly, then your own Python. Change them with analysis.runtime and analysis.isolation in your configuration file.`,"forge.guides":`Guides`,"forge.guides.enable":`Enable the guides (forge_guide)`,"forge.guides.hint":`The guides teach the agent the script API and common patterns. Off removes forge_guide and the hints in errors.`,"settings.analysis.wasmNote":`Runs in a WebAssembly interpreter in a separate process, with no network and only the job folders. Its restrictions are partial: it is not a container.`,"dock.scratch":`Scratch`},mt=(e,t={})=>e.replace(/\{(\w+)\}/g,(e,n)=>t[n]===void 0?e:String(t[n])),ht=[`en`,`es`],gt={en:pt},_t={en:()=>Promise.resolve(pt),es:()=>e(()=>import(`./es-DwvaEaQO.js`).then(e=>e.es),[])};async function vt(e){gt[e]||(gt[e]=await _t[e]())}var yt=Ge((()=>{let e=ut(`alisio.locale`);return e===`en`||e===`es`?e:(typeof navigator<`u`?navigator.language:`en`).toLowerCase().startsWith(`es`)?`es`:`en`})());function bt(e){let t=()=>{yt.value=e,dt(`alisio.locale`,e),document.documentElement.lang=e};return gt[e]?t():vt(e).then(t,()=>{})}var xt=(e,t)=>mt(gt[yt.value]?.[e]??pt[e]??e,t);export{T as C,n as D,me as E,Ae as S,w as T,z as _,xt as a,Ee as b,ut as c,Ye as d,X as f,Oe as g,Ge as h,bt as i,dt as l,W as m,vt as n,mt as o,ze as p,yt as r,ft as s,ht as t,ot as u,De as v,pe as w,ke as x,we as y};
3
+ Alisio will load this folder's project configuration (which can change the provider endpoint and key), its plugins (code that runs with your user privileges), agents, skills and prompts. Only trust folders whose contents you trust. If .alisio/config.json changes later, you will be asked again.`,"trust.confirmRevoke":`Stop trusting {path}? Its project configuration, plugins, agents, skills and prompts stop loading.`,"trust.granted":`Workspace trusted: its project resources are loaded.`,"trust.revoked":`Workspace no longer trusted: its project resources were unloaded.`,"settings.analysis.lead":`Python scripts the agent writes run here and their results become downloadable files. Nothing on this page is required: Python is detected automatically.`,"settings.analysis.status":`Runtime`,"settings.analysis.mode":`Mode`,"settings.analysis.mode.managed":`Managed: your own Python`,"settings.analysis.mode.oci":`Container: Docker or Podman`,"settings.analysis.managedNote":`Managed Python is not a sandbox: the script runs with your user permissions and can read your files and use the network.`,"settings.analysis.containerNote":`Runs in a container without network access, a read-only root and only the job folders. It limits the damage; it is not a hardened sandbox.`,"settings.analysis.runtime":`Python runtime`,"settings.analysis.detected":`Python {version} · {path} (detected automatically)`,"settings.analysis.notFound":`No Python 3.10+ found on this machine.`,"settings.analysis.installHint.title":`How to install Python on this system`,"settings.analysis.installHint.afterInstall":`After installing, no restart is needed.`,"settings.analysis.runtimeVersion":`Environment version`,"settings.analysis.extras":`Optional packages`,"settings.analysis.extras.none":`None installed. The standard library is enough for most analyses.`,"settings.analysis.extras.installed":`Installed: {extras}`,"settings.analysis.extras.hint":`When an analysis needs pandas, numpy or similar, Alisio asks once before downloading them. You can also run alisio analysis setup --extras analysis.`,"settings.analysis.oci":`Container runtime`,"settings.analysis.oci.engine":`Engine`,"settings.analysis.oci.image":`Image`,"settings.analysis.oci.noImage":`No image set. Set analysis.oci.image (pinned by digest) in your user configuration.`,"settings.analysis.oci.available":`Available ({version})`,"settings.analysis.oci.unavailable":`Not available: {reason}`,"settings.analysis.oci.unused":`Not used in managed mode.`,"settings.analysis.oci.limits":`{memory} MB of memory · {cpus} CPUs`,"settings.analysis.enabled":`Enable data analysis`,"settings.analysis.enabledHint":`Turns python_run, artifacts and the data tools on or off. The workspace reloads its tools when its runs finish.`,"settings.analysis.smartDashboard":`Smart Dashboard`,"settings.analysis.smartDashboardHint":`Offers dashboard_generate, which builds a dashboard from a dataset with no code. Off removes the tool. Applies the next time the workspace reloads its tools.`,"settings.analysis.timeout":`Execution timeout (seconds)`,"settings.analysis.retention":`Retention`,"settings.analysis.retention.lead":`Old files are cleaned up automatically, at most once a day. 0 never deletes that kind of file.`,"settings.analysis.retention.jobs":`Keep job logs and unused datasets (days)`,"settings.analysis.retention.intermediate":`Keep scratch files (days)`,"settings.analysis.retention.artifacts":`Expire artifacts after (days)`,"settings.analysis.retention.lastSweep":`Last cleanup: {time}`,"settings.analysis.retention.never":`No cleanup has run yet.`,"settings.analysis.disabled":`Data analysis is off: python_run and the data tools are not available.`,"settings.analysis.readOnlyRuntime":`alisio serve runs with --read-only: python_run is not available.`,"approval.analysisInstall.title":`Install Python packages?`,"approval.analysisInstall.packages":`Packages: {packages}`,"approval.analysisInstall.dependencies":`Plus their dependencies ({count} pinned wheels in total).`,"approval.analysisInstall.size":`Download: about {size}.`,"approval.analysisInstall.network":`This needs network access.`,"approval.analysisInstall.safety":`Wheels only, hash-verified, in a private environment; nothing is compiled.`,"approval.analysisInstall.once":`This permission is never remembered: it asks every time.`,"approval.keysInstall":`Keys: D deny · O allow once`,"artifactPanel.rerun":`Run again`,"artifactPanel.rerunStarted":`Running the analysis of {name} again…`,"artifactPanel.rerunOf":`Repeat of`,"artifactPanel.status":`Status`,"artifactPanel.expiredHint":`The files were removed by the retention policy. Run the analysis again to recreate them.`,"forge.badge.javascript":`JavaScript · WASM isolate`,"forge.badge.pythonOci":`Python · OCI container`,"forge.badge.pythonWasm":`Python · WASM process`,"forge.badge.pythonHost":`Python · host (not sandboxed)`,"settings.analysis.mode.auto":`Automatic: the most isolated backend that is ready`,"settings.analysis.mode.wasm":`WebAssembly: Pyodide, no container needed`,"forge.isolation.osContainer":`Container: isolated by the operating system`,"forge.isolation.wasmIsolate":`WASM isolate: no access to the host`,"forge.isolation.wasmProcess":`WASM process: partly restricted`,"forge.isolation.none":`None: runs on the host with your privileges`,"forge.live.running":`Running`,"forge.live.runningCalls":`Running: {done} of {total} calls finished`,"forge.live.done":`Finished`,"forge.live.failed":`Failed`,"forge.sandboxed":`The code runs isolated from your machine`,"forge.notSandboxed":`Not sandboxed: the code runs on this machine with your privileges`,"forge.progress":`Progress`,"forge.progressText":`{completed} of {total}`,"forge.js.title":`JavaScript`,"forge.code":`Code`,"forge.copyCode":`Copy code`,"forge.copyPath":`Copy path`,"forge.codeFile":`The script is a file in the session scratchpad.`,"forge.noCode":`No code in this call.`,"forge.calls":`Nested calls`,"forge.callsSummary":`{total} calls · {failed} failed · {denied} denied`,"forge.call.started":`Running`,"forge.call.succeeded":`Done`,"forge.call.failed":`Failed`,"forge.call.denied":`Denied`,"forge.noValue":`The script returned nothing.`,"forge.reason":`Engine chosen: {reason}`,"forge.outputCut":`The output was cut to the limit; return less from the script.`,"run.phase.javascript":`Running JavaScript…`,"run.phase.javascriptWith":`Running JavaScript ({detail})…`,"artifactPanel.engine":`Engine`,"artifactPanel.isolation":`Isolation`,"artifactPanel.engineReason":`Why this engine`,"artifactPanel.startup":`Startup`,"artifactPanel.peakMemory":`Peak memory`,"settings.forge":`Forja`,"settings.forge.title":`Forja`,"settings.forge.lead":`Where the agent runs code: JavaScript in an isolated engine, and Python in the safest backend available. Values without a switch are read only; the key shown is the one to change in your configuration file.`,"forge.javascript":`JavaScript`,"forge.javascript.lead":`js_run lets the agent combine tools in a short script. It runs in a WASM engine with no files, network or system access; every tool it calls goes through your permissions.`,"forge.status":`Status`,"forge.js.off":`Off`,"forge.js.ready":`Ready`,"forge.js.unverified":`Not verified`,"forge.js.engine":`Engine`,"forge.js.hash":`WASM module (SHA-256)`,"forge.js.host":`Runs in`,"forge.host.worker":`A worker thread of this process`,"forge.host.process":`A separate process`,"forge.limit.timeout":`Time limit`,"forge.limit.memory":`Memory`,"forge.limit.stack":`Stack`,"forge.limit.toolCalls":`Tool calls per script`,"forge.limit.concurrency":`Parallel calls`,"forge.limit.outputChars":`Output returned (characters)`,"forge.limitsHint":`Limits come from forge.javascript.* in your configuration file.`,"forge.scratch":`Scratchpad`,"forge.scratchValue":`Up to {size} per session, removed after {days} days without use`,"forge.scratchOff":`Off`,"forge.js.enable":`Enable JavaScript (js_run)`,"forge.js.enableHint":`Off brings back the previous execute tool. The workspace reloads its tools when its runs finish.`,"forge.python":`Python`,"forge.backends":`Python backends`,"forge.backend.oci":`Container (Docker or Podman)`,"forge.backend.wasm":`WebAssembly (Pyodide)`,"forge.backend.managed":`Managed (your own Python)`,"forge.ready":`Ready`,"forge.notReady":`Not ready`,"forge.inUse":`Used now`,"forge.profiles":`Packages:`,"forge.copyCommand":`Copy command`,"forge.runtimeSetting":`Runtime`,"forge.isolationPolicy":`Isolation policy`,"forge.runsOn":`Runs on`,"forge.noneReady":`No backend is ready under this policy`,"forge.policyHint":`With the policy {policy}, auto tries the container, then WebAssembly, then your own Python. Change them with analysis.runtime and analysis.isolation in your configuration file.`,"forge.guides":`Guides`,"forge.guides.enable":`Enable the guides (forge_guide)`,"forge.guides.hint":`The guides teach the agent the script API and common patterns. Off removes forge_guide and the hints in errors.`,"settings.analysis.wasmNote":`Runs in a WebAssembly interpreter in a separate process, with no network and only the job folders. Its restrictions are partial: it is not a container.`,"dock.scratch":`Scratch`,"dock.proof":`Proof`},mt=(e,t={})=>e.replace(/\{(\w+)\}/g,(e,n)=>t[n]===void 0?e:String(t[n])),ht=[`en`,`es`],gt={en:pt},_t={en:()=>Promise.resolve(pt),es:()=>e(()=>import(`./es-ySPgx3os.js`).then(e=>e.es),[])};async function vt(e){gt[e]||(gt[e]=await _t[e]())}var yt=Ge((()=>{let e=ut(`alisio.locale`);return e===`en`||e===`es`?e:(typeof navigator<`u`?navigator.language:`en`).toLowerCase().startsWith(`es`)?`es`:`en`})());function bt(e){let t=()=>{yt.value=e,dt(`alisio.locale`,e),document.documentElement.lang=e};return gt[e]?t():vt(e).then(t,()=>{})}var xt=(e,t)=>mt(gt[yt.value]?.[e]??pt[e]??e,t);export{T as C,n as D,me as E,Ae as S,w as T,z as _,xt as a,Ee as b,ut as c,Ye as d,X as f,Oe as g,Ge as h,bt as i,dt as l,W as m,vt as n,mt as o,ze as p,yt as r,ft as s,ht as t,ot as u,De as v,pe as w,ke as x,we as y};
@@ -1 +1 @@
1
- import{t as e}from"./jsxRuntime-CU76aMLO.js";var t={plus:`M12 5v14M5 12h14`,plusCircle:`M12 8v8M8 12h8M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z`,search:`M11 18a7 7 0 1 0 0-14 7 7 0 0 0 0 14ZM20 20l-4-4`,archive:`M4 7h16M5 7l1 12h12l1-12M9 11h6M3 4h18v3H3z`,folder:`M3 7a2 2 0 0 1 2-2h4l2 2h8a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V7Z`,folderPlus:`M3 7a2 2 0 0 1 2-2h4l2 2h8a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V7ZM12 10v6M9 13h6`,settings:`M12 15a3 3 0 1 0 0-6 3 3 0 0 0 0 6ZM19.4 15a1.7 1.7 0 0 0 .3 1.8l.1.1a2 2 0 1 1-2.8 2.8l-.1-.1a1.7 1.7 0 0 0-1.8-.3 1.7 1.7 0 0 0-1 1.5V21a2 2 0 1 1-4 0v-.1a1.7 1.7 0 0 0-1.1-1.5 1.7 1.7 0 0 0-1.8.3l-.1.1a2 2 0 1 1-2.8-2.8l.1-.1a1.7 1.7 0 0 0 .3-1.8 1.7 1.7 0 0 0-1.5-1H3a2 2 0 1 1 0-4h.1a1.7 1.7 0 0 0 1.5-1.1 1.7 1.7 0 0 0-.3-1.8l-.1-.1a2 2 0 1 1 2.8-2.8l.1.1a1.7 1.7 0 0 0 1.8.3H9a1.7 1.7 0 0 0 1-1.5V3a2 2 0 1 1 4 0v.1a1.7 1.7 0 0 0 1 1.5 1.7 1.7 0 0 0 1.8-.3l.1-.1a2 2 0 1 1 2.8 2.8l-.1.1a1.7 1.7 0 0 0-.3 1.8V9a1.7 1.7 0 0 0 1.5 1H21a2 2 0 1 1 0 4h-.1a1.7 1.7 0 0 0-1.5 1Z`,panel:`M4 5h16v14H4zM9 5v14`,chevronDown:`M6 9l6 6 6-6`,chevronRight:`M9 6l6 6-6 6`,copy:`M9 9h10v10H9zM5 15V5h10`,check:`M5 12l5 5 9-10`,download:`M12 4v11M7 10l5 5 5-5M5 20h14`,arrowUp:`M12 19V5M6 11l6-6 6 6`,arrowDown:`M12 5v14M6 13l6 6 6-6`,home:`M4 11l8-7 8 7M6 9.5V20h12V9.5M10 20v-5h4v5`,shield:`M12 3l7 3v6c0 4.5-3 7.5-7 9-4-1.5-7-4.5-7-9V6l7-3Z`,file:`M6 3h8l4 4v14H6zM14 3v4h4`,fileChart:`M6 3h8l4 4v14H6zM14 3v4h4M9 17v-3M12 17v-6M15 17v-4`,fileText:`M6 3h8l4 4v14H6zM14 3v4h4M9 12h6M9 15h6M9 18h4`,fileTable:`M6 3h8l4 4v14H6zM14 3v4h4M9 11h6v7H9zM9 14.5h6M12 11v7`,fileImage:`M6 3h8l4 4v14H6zM14 3v4h4M9 18l2.5-3 2 2 1.5-1.5 2 2.5M10 12.5h.01`,fileCode:`M6 3h8l4 4v14H6zM14 3v4h4M10.5 12l-2 2.5 2 2.5M13.5 12l2 2.5-2 2.5`,fileArchive:`M6 3h8l4 4v14H6zM14 3v4h4M11 3v2M11 7v2M11 11v2M10 15h2v3h-2z`,terminal:`M4 5h16v14H4zM8 10l3 2-3 2M13 15h3`,refresh:`M20 12a8 8 0 1 1-2.5-5.8M20 4v5h-5`,sparkle:`M12 4v4M12 16v4M4 12h4M16 12h4M7 7l2 2M15 15l2 2M17 7l-2 2M9 15l-2 2`,layers:`M12 4l8 4-8 4-8-4 8-4ZM4 12l8 4 8-4M4 16l8 4 8-4`,info:`M12 21a9 9 0 1 0 0-18 9 9 0 0 0 0 18ZM12 11v5M12 8h.01`,alert:`M12 3l10 18H2L12 3ZM12 10v5M12 18h.01`,x:`M6 6l12 12M18 6L6 18`,more:`M5 12h.01M12 12h.01M19 12h.01`,pin:`M9 3h6l-1 6 3 3H7l3-3-1-6ZM12 12v9`,menu:`M4 7h16M4 12h16M4 17h16`,tool:`M14 7a4 4 0 0 0-5 5l-5 5 3 3 5-5a4 4 0 0 0 5-5l-2 2-3-3 2-2Z`,globe:`M12 21a9 9 0 1 0 0-18 9 9 0 0 0 0 18ZM3 12h18M12 3c3 3 3 15 0 18M12 3c-3 3-3 15 0 18`,edit:`M4 20h4L19 9l-4-4L4 16v4ZM13 7l4 4`,question:`M12 21a9 9 0 1 0 0-18 9 9 0 0 0 0 18ZM9.5 9.5a2.5 2.5 0 1 1 3.5 2.3c-.6.3-1 .9-1 1.6v.6M12 17h.01`,expand:`M4 9V4h5M20 9V4h-5M4 15v5h5M20 15v5h-5`,shrink:`M9 4v5H4M15 4v5h5M9 20v-5H4M15 20v-5h5`,database:`M4 6c0-1.7 3.6-3 8-3s8 1.3 8 3-3.6 3-8 3-8-1.3-8-3ZM4 6v12c0 1.7 3.6 3 8 3s8-1.3 8-3V6M4 12c0 1.7 3.6 3 8 3s8-1.3 8-3`,sliders:`M4 7h10M18 7h2M4 17h4M12 17h8M14 5v4M8 15v4`,book:`M5 4h10a3 3 0 0 1 3 3v13H8a3 3 0 0 1-3-3V4ZM5 17a3 3 0 0 1 3-3h10`,plug:`M9 3v5M15 3v5M6 8h12v3a6 6 0 0 1-12 0V8ZM12 17v4`,users:`M9 11a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7ZM3 20c0-3.3 2.7-6 6-6s6 2.7 6 6M16 4.5a3.5 3.5 0 0 1 0 6.5M18 14c2 .8 3 2.8 3 6`,palette:`M12 21a9 9 0 1 1 9-9c0 2.5-2 3-3.5 3H16a2 2 0 0 0-1.5 3.3c.4.5.3 1.4-.3 1.9-.6.5-1.4.8-2.2.8ZM7.5 11h.01M10 7.5h.01M14.5 7.5h.01`,github:`M15 22v-4a4.8 4.8 0 0 0-1-3.5c3.3-.4 6.8-1.6 6.8-7A5.4 5.4 0 0 0 19.4 4 5 5 0 0 0 19.3.5S18.2.1 15 1.8a13.4 13.4 0 0 0-7 0C4.8.1 3.7.5 3.7.5A5 5 0 0 0 3.6 4a5.4 5.4 0 0 0-1.4 3.7c0 5.4 3.5 6.6 6.8 7A4.8 4.8 0 0 0 8 18v4M8 19c-3 .9-3-1.5-4-2`,key:`M15 9a4 4 0 1 1-8 0 4 4 0 0 1 8 0ZM13.8 11.8L20 18v3h-3v-2h-2v-2h-2l-1.2-1.2`},n={stop:`M9 7h6a2 2 0 0 1 2 2v6a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2V9a2 2 0 0 1 2-2Z`},r=e=>e in n;function i(i){let a=i.size??16,o=r(i.name);return e(`svg`,{class:i.class,width:a,height:a,viewBox:`0 0 24 24`,fill:o?`currentColor`:`none`,stroke:o?`none`:`currentColor`,"stroke-width":o?void 0:`1.8`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"aria-hidden":`true`,focusable:`false`,children:e(`path`,{d:o?n[i.name]:t[i.name]})})}export{i as t};
1
+ import{t as e}from"./jsxRuntime-DWBdSTGf.js";var t={plus:`M12 5v14M5 12h14`,plusCircle:`M12 8v8M8 12h8M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z`,search:`M11 18a7 7 0 1 0 0-14 7 7 0 0 0 0 14ZM20 20l-4-4`,archive:`M4 7h16M5 7l1 12h12l1-12M9 11h6M3 4h18v3H3z`,folder:`M3 7a2 2 0 0 1 2-2h4l2 2h8a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V7Z`,folderPlus:`M3 7a2 2 0 0 1 2-2h4l2 2h8a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V7ZM12 10v6M9 13h6`,settings:`M12 15a3 3 0 1 0 0-6 3 3 0 0 0 0 6ZM19.4 15a1.7 1.7 0 0 0 .3 1.8l.1.1a2 2 0 1 1-2.8 2.8l-.1-.1a1.7 1.7 0 0 0-1.8-.3 1.7 1.7 0 0 0-1 1.5V21a2 2 0 1 1-4 0v-.1a1.7 1.7 0 0 0-1.1-1.5 1.7 1.7 0 0 0-1.8.3l-.1.1a2 2 0 1 1-2.8-2.8l.1-.1a1.7 1.7 0 0 0 .3-1.8 1.7 1.7 0 0 0-1.5-1H3a2 2 0 1 1 0-4h.1a1.7 1.7 0 0 0 1.5-1.1 1.7 1.7 0 0 0-.3-1.8l-.1-.1a2 2 0 1 1 2.8-2.8l.1.1a1.7 1.7 0 0 0 1.8.3H9a1.7 1.7 0 0 0 1-1.5V3a2 2 0 1 1 4 0v.1a1.7 1.7 0 0 0 1 1.5 1.7 1.7 0 0 0 1.8-.3l.1-.1a2 2 0 1 1 2.8 2.8l-.1.1a1.7 1.7 0 0 0-.3 1.8V9a1.7 1.7 0 0 0 1.5 1H21a2 2 0 1 1 0 4h-.1a1.7 1.7 0 0 0-1.5 1Z`,panel:`M4 5h16v14H4zM9 5v14`,chevronDown:`M6 9l6 6 6-6`,chevronRight:`M9 6l6 6-6 6`,copy:`M9 9h10v10H9zM5 15V5h10`,check:`M5 12l5 5 9-10`,download:`M12 4v11M7 10l5 5 5-5M5 20h14`,arrowUp:`M12 19V5M6 11l6-6 6 6`,arrowDown:`M12 5v14M6 13l6 6 6-6`,home:`M4 11l8-7 8 7M6 9.5V20h12V9.5M10 20v-5h4v5`,shield:`M12 3l7 3v6c0 4.5-3 7.5-7 9-4-1.5-7-4.5-7-9V6l7-3Z`,file:`M6 3h8l4 4v14H6zM14 3v4h4`,fileChart:`M6 3h8l4 4v14H6zM14 3v4h4M9 17v-3M12 17v-6M15 17v-4`,fileText:`M6 3h8l4 4v14H6zM14 3v4h4M9 12h6M9 15h6M9 18h4`,fileTable:`M6 3h8l4 4v14H6zM14 3v4h4M9 11h6v7H9zM9 14.5h6M12 11v7`,fileImage:`M6 3h8l4 4v14H6zM14 3v4h4M9 18l2.5-3 2 2 1.5-1.5 2 2.5M10 12.5h.01`,fileCode:`M6 3h8l4 4v14H6zM14 3v4h4M10.5 12l-2 2.5 2 2.5M13.5 12l2 2.5-2 2.5`,fileArchive:`M6 3h8l4 4v14H6zM14 3v4h4M11 3v2M11 7v2M11 11v2M10 15h2v3h-2z`,terminal:`M4 5h16v14H4zM8 10l3 2-3 2M13 15h3`,refresh:`M20 12a8 8 0 1 1-2.5-5.8M20 4v5h-5`,sparkle:`M12 4v4M12 16v4M4 12h4M16 12h4M7 7l2 2M15 15l2 2M17 7l-2 2M9 15l-2 2`,layers:`M12 4l8 4-8 4-8-4 8-4ZM4 12l8 4 8-4M4 16l8 4 8-4`,info:`M12 21a9 9 0 1 0 0-18 9 9 0 0 0 0 18ZM12 11v5M12 8h.01`,alert:`M12 3l10 18H2L12 3ZM12 10v5M12 18h.01`,x:`M6 6l12 12M18 6L6 18`,more:`M5 12h.01M12 12h.01M19 12h.01`,pin:`M9 3h6l-1 6 3 3H7l3-3-1-6ZM12 12v9`,menu:`M4 7h16M4 12h16M4 17h16`,tool:`M14 7a4 4 0 0 0-5 5l-5 5 3 3 5-5a4 4 0 0 0 5-5l-2 2-3-3 2-2Z`,globe:`M12 21a9 9 0 1 0 0-18 9 9 0 0 0 0 18ZM3 12h18M12 3c3 3 3 15 0 18M12 3c-3 3-3 15 0 18`,edit:`M4 20h4L19 9l-4-4L4 16v4ZM13 7l4 4`,question:`M12 21a9 9 0 1 0 0-18 9 9 0 0 0 0 18ZM9.5 9.5a2.5 2.5 0 1 1 3.5 2.3c-.6.3-1 .9-1 1.6v.6M12 17h.01`,expand:`M4 9V4h5M20 9V4h-5M4 15v5h5M20 15v5h-5`,shrink:`M9 4v5H4M15 4v5h5M9 20v-5H4M15 20v-5h5`,database:`M4 6c0-1.7 3.6-3 8-3s8 1.3 8 3-3.6 3-8 3-8-1.3-8-3ZM4 6v12c0 1.7 3.6 3 8 3s8-1.3 8-3V6M4 12c0 1.7 3.6 3 8 3s8-1.3 8-3`,sliders:`M4 7h10M18 7h2M4 17h4M12 17h8M14 5v4M8 15v4`,book:`M5 4h10a3 3 0 0 1 3 3v13H8a3 3 0 0 1-3-3V4ZM5 17a3 3 0 0 1 3-3h10`,plug:`M9 3v5M15 3v5M6 8h12v3a6 6 0 0 1-12 0V8ZM12 17v4`,users:`M9 11a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7ZM3 20c0-3.3 2.7-6 6-6s6 2.7 6 6M16 4.5a3.5 3.5 0 0 1 0 6.5M18 14c2 .8 3 2.8 3 6`,palette:`M12 21a9 9 0 1 1 9-9c0 2.5-2 3-3.5 3H16a2 2 0 0 0-1.5 3.3c.4.5.3 1.4-.3 1.9-.6.5-1.4.8-2.2.8ZM7.5 11h.01M10 7.5h.01M14.5 7.5h.01`,github:`M15 22v-4a4.8 4.8 0 0 0-1-3.5c3.3-.4 6.8-1.6 6.8-7A5.4 5.4 0 0 0 19.4 4 5 5 0 0 0 19.3.5S18.2.1 15 1.8a13.4 13.4 0 0 0-7 0C4.8.1 3.7.5 3.7.5A5 5 0 0 0 3.6 4a5.4 5.4 0 0 0-1.4 3.7c0 5.4 3.5 6.6 6.8 7A4.8 4.8 0 0 0 8 18v4M8 19c-3 .9-3-1.5-4-2`,key:`M15 9a4 4 0 1 1-8 0 4 4 0 0 1 8 0ZM13.8 11.8L20 18v3h-3v-2h-2v-2h-2l-1.2-1.2`},n={stop:`M9 7h6a2 2 0 0 1 2 2v6a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2V9a2 2 0 0 1 2-2Z`},r=e=>e in n;function i(i){let a=i.size??16,o=r(i.name);return e(`svg`,{class:i.class,width:a,height:a,viewBox:`0 0 24 24`,fill:o?`currentColor`:`none`,stroke:o?`none`:`currentColor`,"stroke-width":o?void 0:`1.8`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"aria-hidden":`true`,focusable:`false`,children:e(`path`,{d:o?n[i.name]:t[i.name]})})}export{i as t};