@alisio/server 0.4.5 → 0.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/host/icon-theme.d.ts +16 -0
- package/dist/host/icon-theme.js +41 -0
- package/dist/index.js +2 -0
- package/dist/routes/files.js +26 -0
- package/dist/routes/icon-theme.d.ts +5 -0
- package/dist/routes/icon-theme.js +78 -0
- package/dist/web/assets/{AgentPicker-Df4kGcSw.js → AgentPicker-Cl47N-cj.js} +1 -1
- package/dist/web/assets/{AgentsModal-ptps84vt.js → AgentsModal-h5tfJEeX.js} +1 -1
- package/dist/web/assets/{ArtifactPanel-CclaGOfP.js → ArtifactPanel-C6ipdg_g.js} +3 -3
- package/dist/web/assets/{BtwPanel-BnCwJTFw.js → BtwPanel-Dq4_mguL.js} +1 -1
- package/dist/web/assets/{ChangelogDialog-C6LKoCq7.js → ChangelogDialog-DKij7ZgR.js} +1 -1
- package/dist/web/assets/{CopyButton-Dk4uAAds.js → CopyButton-DsWaaJHr.js} +1 -1
- package/dist/web/assets/{GoalBar-3TCGJK7W.js → GoalBar-Dk2Cst9Y.js} +1 -1
- package/dist/web/assets/{MemoryTab-D92e3sZg.js → MemoryTab-C9XUOnpA.js} +1 -1
- package/dist/web/assets/{PermissionsMenu-CaRSP_Pn.js → PermissionsMenu-DPV6xncG.js} +1 -1
- package/dist/web/assets/{PlanReviewPanel-BDEr3UMf.js → PlanReviewPanel-TPQ-MbDK.js} +1 -1
- package/dist/web/assets/{PlanViewer-C23TtFVH.js → PlanViewer-CeY05Jhh.js} +1 -1
- package/dist/web/assets/SettingsModal-CPOy4DEJ.js +1 -0
- package/dist/web/assets/{SpreadsheetPanel-Cv4ZddRt.js → SpreadsheetPanel-CaPNTLXV.js} +1 -1
- package/dist/web/assets/{TasksTab-B7vrraq4.js → TasksTab-CxB3XymZ.js} +1 -1
- package/dist/web/assets/TrajectoryTab-BChapHNU.js +1 -0
- package/dist/web/assets/TrajectoryTab-C9Y_oYSz.css +1 -0
- package/dist/web/assets/{agents.module-Dkf3qqQJ.js → agents.module-SodPbgcJ.js} +1 -1
- package/dist/web/assets/app-D95B_PAO.js +3 -0
- package/dist/web/assets/es-CLK996jq.js +3 -0
- package/dist/web/assets/{goal-BEpD2X-p.js → goal-ChMqHxdJ.js} +1 -1
- package/dist/web/assets/{i18n-cdcw61GT.js → i18n-BZax1Psk.js} +2 -2
- package/dist/web/assets/{icons-CxEvdUqL.js → icons-nQx96NOf.js} +1 -1
- package/dist/web/assets/index-Bfl4EFzp.js +74 -0
- package/dist/web/assets/index-DtwMJ910.css +1 -0
- package/dist/web/assets/{jsxRuntime-B0JBTZJT.js → jsxRuntime-C-CM9h-f.js} +1 -1
- package/dist/web/assets/{panel-SiMYWT2U.js → panel-Drs6RETP.js} +1 -1
- package/dist/web/assets/{shared-Cot-KlBr.js → shared-CyriJLTb.js} +1 -1
- package/dist/web/assets/{strings-DL3oOguC.js → strings-im5j6AkX.js} +1 -1
- package/dist/web/assets/{tasks-Ce-PPBff.js → tasks-CwT_L2cD.js} +1 -1
- package/dist/web/assets/{view-rxd914aL.js → view-2dNgOSpB.js} +1 -1
- package/dist/web/assets/{view-D2Osnx-w.js → view-5vTUSCyJ.js} +1 -1
- package/dist/web/assets/{view-DZuiWwj_.js → view-B8k9wN-a.js} +1 -1
- package/dist/web/assets/{view-652PG12c.js → view-BEMrRtHS.js} +1 -1
- package/dist/web/assets/{view-CHjsdmqv.js → view-BKUCEmox.js} +1 -1
- package/dist/web/assets/{view-k1GHIbUp.js → view-CYrBJLQz.js} +1 -1
- package/dist/web/assets/{view-BTj63-sN.js → view-D7gclAAt.js} +1 -1
- package/dist/web/assets/view-chgkTSYd.js +1 -0
- package/dist/web/assets/{view-DyqkHeMd.js → view-siaTb2If.js} +1 -1
- package/dist/web/index.html +8 -8
- package/package.json +4 -4
- package/dist/web/assets/SettingsModal-RSArhC01.js +0 -1
- package/dist/web/assets/TrajectoryTab-PJHG3yJv.css +0 -1
- package/dist/web/assets/TrajectoryTab-vR70zuwL.js +0 -1
- package/dist/web/assets/app-CDFfZ2Xi.js +0 -3
- package/dist/web/assets/es-B4DBw6dD.js +0 -3
- package/dist/web/assets/index-BztkMOHM.css +0 -1
- package/dist/web/assets/index-o3hyCt4o.js +0 -74
- package/dist/web/assets/view-b9slXtZa.js +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{T as e,a as t,b as n,g as r,i,r as a,t as o,y as s}from"./i18n-BZax1Psk.js";import{K as c,d as l,dt as u,f as d,k as f,ut as p}from"./app-D95B_PAO.js";import{t as m}from"./jsxRuntime-C-CM9h-f.js";import{t as h}from"./icons-nQx96NOf.js";import{t as g}from"./CopyButton-DsWaaJHr.js";import{f as _,g as v,h as y,m as b,v as x,y as ee}from"./index-Bfl4EFzp.js";import{t as S}from"./settings.module-DoTtRfeo.js";import{a as C,c as w,i as T,l as E,n as D,o as O,r as k,s as A,t as j}from"./shared-CyriJLTb.js";var te=`https://github.com/GustavoGutierrez/alisio`;function M(){return m(`section`,{class:S.about,children:[m(D,{title:t(`settings.about`)}),m(`img`,{class:S.aboutLogo,src:`/alisio-wordmark.png`,alt:`Alisio`,width:320,height:150}),m(`p`,{class:S.aboutVersion,children:d.value?t(`about.version`,{version:d.value}):t(`about.versionUnknown`)}),m(`p`,{class:S.aboutDescription,children:t(`about.description`)}),m(`p`,{class:S.aboutAttribution,children:`Gustavo Gutiérrez · Bogotá, Colombia`}),m(`a`,{class:S.aboutLink,href:te,target:`_blank`,rel:`noopener noreferrer`,"aria-label":t(`about.repositoryLabel`),children:[m(h,{name:`github`,size:19}),t(`about.repository`)]})]})}function N(){let n=w(),[r,i]=s(),a=E(n?()=>l.agents(n.id):void 0,[n?.id],[`agents`,`plugins`]),o=f.value,u=o?.agent??a.data?.find(e=>e.default)?.id;return m(e,{children:[m(D,{title:t(`settings.agents`),body:t(`agents.lead`),workspace:n?.path}),m(C,{loading:a.loading&&!a.data,error:a.error,empty:n?void 0:`settings.noWorkspace`}),m(`ul`,{class:S.rows,children:(a.data??[]).map(n=>m(`li`,{class:S.row,"data-current":n.id===u,children:[m(`div`,{class:S.rowMain,children:[m(`div`,{class:S.rowTitle,children:[m(`span`,{class:S.cardName,children:n.name}),m(k,{tone:`off`,children:t(`agents.source.${n.source}`)}),n.readOnly?m(k,{tone:`warn`,children:t(`agents.readOnly`)}):null,n.default?m(k,{tone:`ok`,children:t(`agents.default`)}):null]}),m(`p`,{class:S.cardText,children:n.description}),n.model?m(`p`,{class:S.meta,children:t(`agents.model`,{model:n.model})}):null,n.instructions?m(e,{children:[m(`button`,{type:`button`,class:S.linkButton,"aria-expanded":r===n.id,onClick:()=>i(r===n.id?void 0:n.id),children:[m(h,{name:r===n.id?`chevronDown`:`chevronRight`,size:14}),t(`agents.instructions`)]}),r===n.id?m(`pre`,{class:S.instructions,children:n.instructions}):null]}):null]}),m(`div`,{class:S.rowActions,children:o&&!o.parentId?n.id===u?m(`span`,{class:S.meta,children:t(`agents.inUse`)}):m(`button`,{type:`button`,class:S.secondary,onClick:()=>void c({agent:n.id}),children:t(`agents.use`)}):null})]},n.id))})]})}var P={min:1,max:900},F={min:0,max:3650};function I(e,t,n){let r=e.trim();if(!/^\d+$/.test(r))return;let i=Number(r);return i>=t&&i<=n?i:void 0}function L(e){let t=I(e,P.min,P.max);return t===void 0?void 0:t*1e3}var R=e=>Math.round(e/1e3);function z(e,t){return e.find(e=>e.key===t)?.value}function B(e){return e.join(`, `)}function V(e){let[t,n]=s(),[r,i]=s(!1),a=async()=>{if(t===void 0)return;let r=e.parse?e.parse(t):I(t,e.min,e.max);if(n(void 0),r!==void 0){i(!0);try{await e.onSave(r)}catch{}finally{i(!1)}}};return m(`li`,{class:S.settingRow,children:[m(`label`,{class:S.settingLabel,for:e.id,children:[m(`span`,{children:e.label}),m(`code`,{class:S.settingKey,children:e.keyName})]}),m(`input`,{id:e.id,class:S.input,type:`number`,inputMode:`numeric`,min:e.min,max:e.max,step:1,disabled:e.disabled||r,value:t??String(e.value),onInput:e=>n(e.target.value),onBlur:()=>void a(),onKeyDown:e=>{e.key===`Enter`&&a(),e.key===`Escape`&&t!==void 0&&(e.stopPropagation(),n(void 0))}})]})}function H(n){let{status:r}=n,{python:i,oci:a}=r;return m(e,{children:[m(`h4`,{class:S.sectionTitle,children:t(`settings.analysis.status`)}),m(`dl`,{class:S.facts,"data-testid":`analysis-status`,children:[m(`dt`,{children:t(`settings.analysis.mode`)}),m(`dd`,{children:m(k,{tone:r.mode===`oci`?`ok`:`warn`,children:t(r.mode===`oci`?`settings.analysis.mode.oci`:`settings.analysis.mode.managed`)})}),m(`dt`,{children:t(`settings.analysis.runtime`)}),m(`dd`,{children:i.found?t(`settings.analysis.detected`,{version:i.version,path:i.path}):m(`span`,{children:t(`settings.analysis.notFound`)})}),i.found&&i.runtimeVersion?m(e,{children:[m(`dt`,{children:t(`settings.analysis.runtimeVersion`)}),m(`dd`,{children:m(`code`,{children:i.runtimeVersion})})]}):null,m(`dt`,{children:t(`settings.analysis.extras`)}),m(`dd`,{children:i.found&&i.extras.length?t(`settings.analysis.extras.installed`,{extras:B(i.extras)}):t(`settings.analysis.extras.none`)}),m(`dt`,{children:t(`settings.analysis.oci`)}),m(`dd`,{children:r.mode===`managed`&&!a.image&&a.available===void 0?t(`settings.analysis.oci.unused`):m(e,{children:[m(`span`,{children:[a.engine,` ·`,` `,t(`settings.analysis.oci.limits`,{memory:a.memoryMb,cpus:a.cpus})]}),m(`br`,{}),a.image?m(`code`,{children:a.image}):t(`settings.analysis.oci.noImage`),a.available===void 0?null:m(e,{children:[m(`br`,{}),a.available?t(`settings.analysis.oci.available`,{version:a.version??``}):t(`settings.analysis.oci.unavailable`,{reason:a.reason??``})]})]})})]}),m(`p`,{class:S.note,role:`note`,children:t(r.mode===`oci`?`settings.analysis.containerNote`:`settings.analysis.managedNote`)}),i.found?m(`p`,{class:S.note,children:t(`settings.analysis.extras.hint`)}):m(`div`,{role:`group`,"aria-label":t(`settings.analysis.installHint.title`),children:[m(`h4`,{class:S.sectionTitle,children:t(`settings.analysis.installHint.title`)}),m(`p`,{class:S.note,children:[i.hints.system,i.hints.heading?` · ${i.hints.heading}`:``]}),m(`pre`,{class:S.note,children:m(`code`,{children:i.hints.primary})}),i.hints.alternatives.map(e=>m(`p`,{class:S.note,children:e},e)),i.hints.notes.map(e=>m(`p`,{class:S.note,children:e},e)),m(`p`,{class:S.note,children:t(`settings.analysis.installHint.afterInstall`)})]})]})}function U(){let n=w(),r=E(n?()=>l.analysis(n.id):void 0,[n?.id]),i=E(n?()=>l.settings(n.id):void 0,[n?.id]),[a,o]=s(!1),c=!!i.data?.readOnly,d=i.data?.settings??[],f=async(e,t)=>{if(n&&i.data)try{await l.setSetting(n.id,e,t),i.set({...i.data,settings:i.data.settings.map(n=>n.key===e?{...n,value:t}:n)}),r.reload()}catch(e){throw u(A(e)),e}},p=z(d,`analysis.enabled`),h=z(d,`analysis.smartDashboard`),g=(e,t)=>{let n=z(d,e);return typeof n==`number`?n:t},_=r.data?.retention.lastSweep;return m(e,{children:[m(D,{title:t(`settings.analysis.title`),body:t(`settings.analysis.lead`)}),m(C,{loading:i.loading&&!i.data||r.loading&&!r.data,error:i.error??r.error,empty:n?void 0:`settings.noWorkspace`}),r.data?.readOnly?m(`p`,{class:S.note,children:t(`settings.analysis.readOnlyRuntime`)}):p===!1?m(`p`,{class:S.note,children:t(`settings.analysis.disabled`)}):null,r.data?m(H,{status:r.data}):null,i.data?m(e,{children:[c?m(`p`,{class:S.note,children:t(`settings.readOnly`)}):null,m(`ul`,{class:S.settingList,children:[m(`li`,{class:S.settingRow,children:[m(`label`,{class:S.settingLabel,for:`analysis-enabled`,children:[m(`span`,{children:t(`settings.analysis.enabled`)}),m(`code`,{class:S.settingKey,children:`analysis.enabled`})]}),m(O,{checked:p!==!1,label:t(`settings.analysis.enabled`),disabled:c,busy:a,onChange:e=>{o(!0),f(`analysis.enabled`,e).catch(()=>void 0).finally(()=>o(!1))}})]}),m(`li`,{class:S.settingRow,children:[m(`label`,{class:S.settingLabel,for:`analysis-smart-dashboard`,children:[m(`span`,{children:t(`settings.analysis.smartDashboard`)}),m(`code`,{class:S.settingKey,children:`analysis.smartDashboard`})]}),m(O,{checked:h!==!1,label:t(`settings.analysis.smartDashboard`),disabled:c,busy:a,onChange:e=>{o(!0),f(`analysis.smartDashboard`,e).catch(()=>void 0).finally(()=>o(!1))}})]}),m(V,{id:`analysis-timeout`,label:t(`settings.analysis.timeout`),keyName:`analysis.limits.timeoutMs`,value:R(g(`analysis.limits.timeoutMs`,12e4)),min:P.min,max:P.max,disabled:c,parse:L,onSave:e=>f(`analysis.limits.timeoutMs`,e)})]}),m(`p`,{class:S.note,children:t(`settings.analysis.enabledHint`)}),m(`p`,{class:S.note,children:t(`settings.analysis.smartDashboardHint`)}),m(`h4`,{class:S.sectionTitle,children:t(`settings.analysis.retention`)}),m(`p`,{class:S.note,children:t(`settings.analysis.retention.lead`)}),m(`ul`,{class:S.settingList,children:[[`analysis.retention.jobsDays`,`settings.analysis.retention.jobs`,30],[`analysis.retention.intermediateDays`,`settings.analysis.retention.intermediate`,7],[`analysis.retention.artifactsDays`,`settings.analysis.retention.artifacts`,0]].map(([e,n,r])=>m(V,{id:`analysis-${e}`,label:t(n),keyName:e,value:g(e,r),min:F.min,max:F.max,disabled:c,onSave:t=>f(e,t)},e))}),m(`p`,{class:S.note,children:_===void 0?t(`settings.analysis.retention.never`):t(`settings.analysis.retention.lastSweep`,{time:new Date(_).toLocaleString()})})]}):null]})}function W(){let n=w(),r=E(n?()=>l.settings(n.id):void 0,[n?.id]),i=E(n?()=>l.iconThemes(n.id):void 0,[n?.id]),a=r.data?.settings.find(e=>e.key===`web.iconTheme`)?.value??`none`,o=i.data?.themes??[],s=async e=>{if(n&&r.data)try{await l.setSetting(n.id,`web.iconTheme`,e),r.set({...r.data,settings:r.data.settings.map(t=>t.key===`web.iconTheme`?{...t,value:e}:t)}),ee(),x(n.id)}catch(e){u(A(e))}};return m(e,{children:[m(D,{title:t(`settings.appearance`),body:t(`appearance.lead`)}),m(j,{legend:t(`settings.theme`),value:v.value,options:[`dark`,`light`,`system`].map(e=>({id:e,label:t(`theme.${e}`)})),onChange:y}),m(j,{legend:t(`settings.density`),value:_.value,options:[`compact`,`detailed`].map(e=>({id:e,label:t(`density.${e}`)})),onChange:b}),m(C,{loading:i.loading&&!i.data,error:i.error,empty:n?void 0:`settings.noWorkspace`}),i.data?m(e,{children:[m(j,{legend:t(`appearance.iconTheme`),value:a,options:[{id:`none`,label:t(`appearance.iconTheme.none`)},...o.map(e=>({id:e.id,label:e.label}))],onChange:e=>void s(e)}),o.length===0?m(`p`,{class:S.note,children:t(`appearance.iconTheme.empty`)}):null]}):null]})}var G={en:{"compaction.auto":`Compact the context automatically`,"compaction.threshold":`Compaction threshold (fraction of the window)`,"compaction.keepTurns":`Recent turns kept verbatim`,"compaction.maxOutputTokens":`Summary length (tokens)`,"context.claudeMdFallback":`Read CLAUDE.md when there is no AGENTS.md`,"context.maxBytes":`Project instructions limit (bytes)`,"limits.maxTurns":`Turns per run`,"limits.maxOutputTokens":`Output tokens per turn`,"limits.maxContextChars":`Context characters sent`,"limits.timeoutMs":`Run time limit, active time (ms)`,"limits.firstTokenTimeoutMs":`First-token timeout (ms)`,"limits.firstTokenRetries":`Retries when the model stays silent`,"limits.truncationRecoveries":`Recoveries from truncated output`,"pluginHooks.timeoutMs":`Plugin hook timeout (ms)`,"pluginHooks.disposeTimeoutMs":`Plugin shutdown timeout (ms)`,"decisions.enabled":`Decision Intelligence`,"decisions.provider":`Decision provider`,"decisions.timeoutMs":`Decision timeout (ms)`,"decisions.minConfidence":`Decision minimum confidence`,"decisions.telemetry":`Record decision telemetry`,"websearch.provider":`Web search provider`,"web.iconTheme":`Icon theme (web)`,"tui.paddingX":`Terminal horizontal padding`,"tui.contentPaddingX":`Terminal content padding`,"tui.skillSlashCommands":`Skills as slash commands (terminal)`,"agents.active":`Active agent`,"agents.effort":`Agent reasoning effort`,"analysis.enabled":`Data analysis`,"analysis.smartDashboard":`Smart Dashboard (dashboard_generate)`,"analysis.limits.timeoutMs":`Analysis run timeout (ms)`,"analysis.retention.jobsDays":`Keep analysis jobs (days)`,"analysis.retention.intermediateDays":`Keep intermediate files (days)`,"analysis.retention.artifactsDays":`Keep artifacts (days)`,"tasks.enabled":`Background tasks`,"tasks.maxPerSession":`Live background tasks per session`,"tasks.maxRunMs":`Background task time limit (ms)`,"tasks.maxOutputBytes":`Background task log size (bytes)`,"tasks.retentionDays":`Keep finished tasks (days)`,"goal.enabled":`Session goals (/goal)`,"goal.maxTurns":`Goal turn limit`,"goal.maxMinutes":`Goal time limit (minutes)`,"goal.repeatedReplyLimit":`Pause a goal after identical replies`,"goal.noToolTurnsLimit":`Pause a goal after turns without tools`,"goal.blockedRepeats":`Turns the agent must report a blocker`,"plan.diagrams":`Plan diagrams`,"plan.maxDiagrams":`Most diagrams per plan`},es:{"compaction.auto":`Compactar el contexto automáticamente`,"compaction.threshold":`Umbral de compactación (fracción de la ventana)`,"compaction.keepTurns":`Turnos recientes conservados literalmente`,"compaction.maxOutputTokens":`Longitud del resumen (tokens)`,"context.claudeMdFallback":`Leer CLAUDE.md si no hay AGENTS.md`,"context.maxBytes":`Límite de instrucciones del proyecto (bytes)`,"limits.maxTurns":`Turnos por run`,"limits.maxOutputTokens":`Tokens de salida por turno`,"limits.maxContextChars":`Caracteres de contexto enviados`,"limits.timeoutMs":`Límite de tiempo de la ejecución, tiempo activo (ms)`,"limits.firstTokenTimeoutMs":`Tiempo máximo al primer token (ms)`,"limits.firstTokenRetries":`Reintentos cuando el modelo no responde`,"limits.truncationRecoveries":`Recuperaciones de salida truncada`,"pluginHooks.timeoutMs":`Tiempo máximo de hooks de plugins (ms)`,"pluginHooks.disposeTimeoutMs":`Tiempo máximo de cierre de plugins (ms)`,"decisions.enabled":`Decision Intelligence`,"decisions.provider":`Proveedor de decisiones`,"decisions.timeoutMs":`Tiempo máximo de decisión (ms)`,"decisions.minConfidence":`Confianza mínima de las decisiones`,"decisions.telemetry":`Registrar telemetría de decisiones`,"websearch.provider":`Proveedor de búsqueda web`,"web.iconTheme":`Tema de iconos (web)`,"tui.paddingX":`Margen horizontal del terminal`,"tui.contentPaddingX":`Margen del contenido del terminal`,"tui.skillSlashCommands":`Skills como comandos slash (terminal)`,"agents.active":`Agente activo`,"agents.effort":`Esfuerzo de razonamiento del agente`,"analysis.enabled":`Análisis de datos`,"analysis.smartDashboard":`Smart Dashboard (dashboard_generate)`,"analysis.limits.timeoutMs":`Tiempo máximo de una ejecución de análisis (ms)`,"analysis.retention.jobsDays":`Conservar trabajos de análisis (días)`,"analysis.retention.intermediateDays":`Conservar archivos intermedios (días)`,"analysis.retention.artifactsDays":`Conservar artefactos (días)`,"tasks.enabled":`Tareas en segundo plano`,"tasks.maxPerSession":`Tareas en segundo plano activas por sesión`,"tasks.maxRunMs":`Tiempo máximo de una tarea en segundo plano (ms)`,"tasks.maxOutputBytes":`Tamaño del registro de una tarea (bytes)`,"tasks.retentionDays":`Conservar tareas terminadas (días)`,"goal.enabled":`Objetivos de sesión (/goal)`,"goal.maxTurns":`Límite de turnos de un objetivo`,"goal.maxMinutes":`Límite de tiempo de un objetivo (minutos)`,"goal.repeatedReplyLimit":`Pausar un objetivo tras respuestas idénticas`,"goal.noToolTurnsLimit":`Pausar un objetivo tras turnos sin herramientas`,"goal.blockedRepeats":`Turnos en que el agente debe reportar un bloqueo`,"plan.diagrams":`Diagramas del plan`,"plan.maxDiagrams":`Máximo de diagramas por plan`}},K=(e,t)=>G[t][e]??G.en[e]??e,q=/^(tui|agents|analysis|web)\./;function J(e){let{setting:n}=e,[r,i]=s(),[o,c]=s(!1),l=async t=>{c(!0);try{await e.onSave(t),i(void 0)}finally{c(!1)}},u=K(n.key,a.value),d=`setting-${n.key}`,f=()=>{if(r!==void 0){if(n.kind===`number`){let e=Number(r);if(r.trim()===``||!Number.isFinite(e))return i(void 0);l(e)}else l(r.trim()===``?null:r)}};return m(`li`,{class:S.settingRow,children:[m(`label`,{class:S.settingLabel,for:d,children:[m(`span`,{children:u}),m(`code`,{class:S.settingKey,children:n.key})]}),n.kind===`boolean`?m(O,{checked:n.value===!0,label:u,disabled:e.disabled,busy:o,onChange:e=>void l(e)}):n.kind===`enum`?m(`select`,{id:d,class:S.input,disabled:e.disabled||o,value:typeof n.value==`string`?n.value:``,onChange:e=>{let t=e.target.value;l(t===``?null:t)},children:[m(`option`,{value:``,children:t(`settings.default`)}),(n.options??[]).map(e=>m(`option`,{value:e,children:e},e))]}):m(`input`,{id:d,class:S.input,type:n.kind===`number`?`number`:`text`,disabled:e.disabled||o,value:r??(n.value===void 0?``:String(n.value)),onInput:e=>i(e.target.value),onBlur:f,onKeyDown:e=>{e.key===`Enter`&&f(),e.key===`Escape`&&r!==void 0&&(e.stopPropagation(),i(void 0))}})]})}function Y(){let n=w(),r=E(n?()=>l.settings(n.id):void 0,[n?.id]),s=async(e,t)=>{if(n&&r.data)try{await l.setSetting(n.id,e,t),r.set({...r.data,settings:r.data.settings.map(n=>n.key===e?{...n,...t===null?{value:void 0}:{value:t}}:n)})}catch(e){throw u(A(e)),e}},c=(r.data?.settings??[]).filter(e=>!q.test(e.key));return m(e,{children:[m(D,{title:t(`settings.general`)}),m(j,{legend:t(`settings.language`),value:a.value,options:o.map(e=>({id:e,label:t(`language.${e}`)})),onChange:i}),m(`h4`,{class:S.sectionTitle,children:t(`settings.agentSettings`)}),m(`p`,{class:S.note,children:[t(`settings.agentSettingsLead`),r.data?m(e,{children:[` `,m(`code`,{children:r.data.settingsPath})]}):null]}),m(C,{loading:r.loading&&!r.data,error:r.error,empty:n?void 0:`settings.noWorkspace`}),r.data?.readOnly?m(`p`,{class:S.note,children:t(`settings.readOnly`)}):null,m(`ul`,{class:S.settingList,children:c.map(e=>m(J,{setting:e,disabled:!!r.data?.readOnly,onSave:t=>s(e.key,t)},e.key))})]})}var X={connected:`ok`,connecting:`warn`,failed:`danger`,"needs-authentication":`warn`,"restart-required":`warn`};function Z(e){let[n,r]=s(!1);return m(`div`,{class:S.confirm,role:`alertdialog`,"aria-labelledby":`mcp-consent-title`,children:[m(`h4`,{id:`mcp-consent-title`,class:S.confirmTitle,children:[m(h,{name:`alert`,size:17}),t(`mcp.consentTitle`)]}),m(`p`,{class:S.cardText,children:t(`mcp.consentBody`)}),m(`label`,{class:S.checkRow,children:[m(`input`,{type:`checkbox`,checked:n,onChange:e=>r(e.target.checked)}),m(`span`,{children:t(`mcp.remember`)})]}),m(`div`,{class:S.actions,children:[m(`button`,{type:`button`,class:S.secondary,onClick:e.onCancel,children:t(`common.cancel`)}),m(`button`,{type:`button`,class:S.primary,onClick:()=>e.onGrant(n),children:t(`mcp.grant`)})]})]})}function ne(){let n=w(),[r,i]=s(!1),[a,o]=s(),c=E(n?()=>l.mcp(n.id):void 0,[n?.id],[`mcp`]),d=c.data,f=e=>{d&&c.set({...d,servers:d.servers.map(t=>t.name===e.name?e:t)})},p=async(e,t,r)=>{if(n){o(e.name);try{let i=await l.setMcp(n.id,e.name,t,r);f(i),r&&i.status!==`connected`&&i.diagnostic&&u(i.diagnostic)}catch(e){u(A(e))}finally{o(void 0)}}},h=async e=>{if(n){i(!1);try{c.set(await l.mcpConsent(n.id,e))}catch(e){u(A(e))}}},g=d?.permission===`granted`;return m(e,{children:[m(D,{title:t(`settings.mcp`),body:t(`mcp.lead`),workspace:n?.path}),d?m(`div`,{class:S.banner,"data-tone":g?`ok`:`warn`,children:[m(`span`,{children:d.permission===`read-only`?t(`mcp.readOnly`):g?d.persisted?t(`mcp.grantedPersisted`):t(`mcp.granted`):t(`mcp.notGranted`)}),d.permission===`not-granted`&&!r?m(`button`,{type:`button`,class:S.primary,onClick:()=>i(!0),children:t(`mcp.grant`)}):null]}):null,r?m(Z,{onCancel:()=>i(!1),onGrant:e=>void h(e)}):null,m(C,{loading:c.loading&&!d,error:c.error,empty:n?d&&!d.servers.length?`mcp.none`:void 0:`settings.noWorkspace`}),m(`ul`,{class:S.rows,children:(d?.servers??[]).map(e=>m(`li`,{class:S.row,children:[m(`div`,{class:S.rowMain,children:[m(`div`,{class:S.rowTitle,children:[m(`span`,{class:S.cardName,children:e.displayName}),m(k,{tone:X[e.status]??`off`,children:t(`mcp.status`,{status:e.status})})]}),m(`p`,{class:S.meta,children:t(`mcp.meta`,{transport:e.transport,source:e.source,tools:e.counts.tools,resources:e.counts.resources,prompts:e.counts.prompts})}),e.diagnostic?m(`p`,{class:S.diagnostic,children:e.diagnostic}):null]}),m(`div`,{class:S.rowActions,children:[e.enabled&&e.status!==`connected`?m(`button`,{type:`button`,class:S.secondary,disabled:!g||a===e.name,title:g?void 0:t(`mcp.needsGrant`),onClick:()=>void p(e,!0,!0),children:t(`mcp.connect`)}):null,m(O,{checked:e.enabled,label:t(`plugins.enableNamed`,{name:e.displayName}),disabled:d?.permission===`read-only`,busy:a===e.name,onChange:t=>void p(e,t,!1)})]})]},e.name))})]})}var re={apiKey:`API key`,bearerToken:`Bearer token`};function ie(e){return e.configured?e.source===`env`?t(`models.credential.env`):e.tail?t(`models.credential.storedTail`,{tail:e.tail}):t(`models.credential.stored`):t(`models.credential.missing`)}function ae(e){let[n,r]=s(``),[i,a]=s(!1),o=re[e.field]??e.field,c=`cred-${e.profile}-${e.field}`,d=async()=>{let i=n.trim();if(i){a(!0);try{let n=await l.setCredentials(e.profile,{[e.field]:i});e.onChange({...n,source:`file`}),r(``),u(t(`models.credential.saved`))}catch(e){u(A(e))}finally{a(!1)}}},f=async()=>{a(!0);try{await l.deleteCredentials(e.profile),e.onChange({configured:!1})}catch(e){u(A(e))}finally{a(!1)}};return m(`div`,{class:S.credential,children:[m(`label`,{for:c,class:S.settingLabel,children:[m(`span`,{children:o}),m(`span`,{class:S.meta,"data-configured":e.status.configured,children:ie(e.status)})]}),m(`form`,{class:S.credentialForm,onSubmit:e=>{e.preventDefault(),d()},children:[m(`input`,{id:c,class:S.input,type:`password`,autocomplete:`off`,spellcheck:!1,placeholder:e.status.configured?t(`models.credential.replace`):t(`models.credential.enter`),value:n,disabled:i,onInput:e=>r(e.target.value)}),m(`button`,{type:`submit`,class:S.primary,disabled:i||!n.trim(),children:t(`models.credential.save`)}),e.status.configured&&e.status.source===`file`?m(`button`,{type:`button`,class:S.secondary,disabled:i,onClick:()=>void f(),children:t(`models.credential.remove`)}):null]})]})}function Q(e){let[n,r]=s(e.initial?.name??``),[i,a]=s(e.initial?.provider??e.types[0]?.id??``),[o,c]=s(e.initial?.model??``),[d,f]=s(e.initial?.values??{}),[p,h]=s(!1),g=(e.types.find(e=>e.id===i)?.fields??[]).filter(e=>e.kind!==`secret`),_=(e,t)=>d[e]??t,v=async()=>{h(!0);try{let t={};for(let e of g){let n=_(e.key,e.defaultValue);n!==void 0&&n!==``&&(t[e.key]=n)}e.onSaved(await l.saveProfile(e.workspace,n.trim(),{provider:i,values:t,model:o}))}catch(e){u(A(e))}finally{h(!1)}};return m(`form`,{class:S.profileForm,onSubmit:e=>{e.preventDefault(),v()},children:[m(`label`,{class:S.formRow,children:[m(`span`,{children:t(`models.form.name`)}),m(`input`,{class:S.input,required:!0,pattern:`[A-Za-z0-9][A-Za-z0-9._\\-]{0,63}`,disabled:!!e.initial,value:n,onInput:e=>r(e.target.value)})]}),m(`label`,{class:S.formRow,children:[m(`span`,{children:t(`models.form.type`)}),m(`select`,{class:S.input,value:i,onChange:e=>a(e.target.value),children:e.types.map(e=>m(`option`,{value:e.id,children:e.name},e.id))})]}),g.map(e=>m(`label`,{class:S.formRow,title:e.description,children:[m(`span`,{children:e.label}),e.kind===`select`?m(`select`,{class:S.input,value:String(_(e.key,e.defaultValue)??``),onChange:t=>f({...d,[e.key]:t.target.value}),children:(e.options??[]).map(e=>m(`option`,{value:e.value,children:e.label},e.value))}):e.kind===`boolean`?m(`input`,{type:`checkbox`,checked:_(e.key,e.defaultValue)===!0,onChange:t=>f({...d,[e.key]:t.target.checked})}):m(`input`,{class:S.input,type:e.kind===`url`?`url`:`text`,required:e.required,value:String(_(e.key,e.defaultValue)??``),onInput:t=>f({...d,[e.key]:t.target.value})})]},e.key)),m(`label`,{class:S.formRow,children:[m(`span`,{children:t(`models.form.model`)}),m(`input`,{class:S.input,required:!0,value:o,onInput:e=>c(e.target.value)})]}),m(`p`,{class:S.note,children:t(`models.form.secretsNote`)}),m(`div`,{class:S.actions,children:[m(`button`,{type:`button`,class:S.secondary,onClick:e.onCancel,children:t(`common.cancel`)}),m(`button`,{type:`submit`,class:S.primary,disabled:p,children:t(`models.form.save`)})]})]})}function oe(n){let{profile:r,overview:i}=n,[a,o]=s(!1),[c,d]=s(r.model),[f,p]=s(!1),g=i.types.find(e=>e.id===r.provider),_=i.current?.profile===r.name,v=async()=>{p(!0);try{let{changed:e}=await l.activateProvider(n.workspace,r.name,c);u(e?t(`models.activated`,{name:r.name}):t(`models.unchanged`)),n.onActivated()}catch(e){u(A(e))}finally{p(!1)}},y=n.catalog?.models??[];return m(`li`,{class:S.row,"data-current":_,children:m(`div`,{class:S.rowMain,children:[m(`div`,{class:S.rowTitle,children:[m(`span`,{class:S.cardName,children:r.name}),m(k,{tone:`off`,children:g?.name??r.provider}),r.active?m(k,{tone:`ok`,children:t(`models.activeGlobal`)}):null,_?m(k,{tone:`ok`,children:t(`models.current`)}):null,m(`button`,{type:`button`,class:S.linkButton,"aria-expanded":a,onClick:()=>o(!a),children:[m(h,{name:`edit`,size:14}),t(`models.edit`)]})]}),a?m(Q,{types:i.types,initial:r,workspace:n.workspace,onCancel:()=>o(!1),onSaved:e=>{o(!1),n.onChange(e)}}):m(`dl`,{class:S.facts,children:[m(`dt`,{children:t(`models.form.model`)}),m(`dd`,{children:r.model}),Object.entries(r.values).map(([t,n])=>m(e,{children:[m(`dt`,{children:g?.fields.find(e=>e.key===t)?.label??t}),m(`dd`,{children:String(n)})]},t))]}),Object.entries(r.credentials).map(([e,t])=>m(ae,{profile:r.name,field:e,status:t,onChange:t=>n.onChange({...r,credentials:{...r.credentials,[e]:t}})},e)),m(`form`,{class:S.credentialForm,onSubmit:e=>{e.preventDefault(),v()},children:[y.length?m(`select`,{class:S.input,"aria-label":t(`models.form.model`),value:c,onChange:e=>d(e.target.value),children:[y.some(e=>e.id===c)?null:m(`option`,{value:c,children:c}),y.map(e=>m(`option`,{value:e.id,children:e.name??e.id},e.id))]}):m(`input`,{class:S.input,"aria-label":t(`models.form.model`),value:c,onInput:e=>d(e.target.value)}),m(`button`,{type:`submit`,class:S.secondary,disabled:f||!c.trim(),children:t(`models.activate`)}),n.catalog?.unavailable?m(`span`,{class:S.meta,children:t(`composer.modelsUnavailable`)}):null]})]})})}function se(){let n=w(),[r,i]=s(!1),a=E(n?()=>l.providers(n.id):void 0,[n?.id],[`models`]),o=E(n?()=>l.providerModels(n.id).catch(()=>[]):void 0,[n?.id],[`models`]),c=a.data,u=e=>{if(!c)return;let t=c.profiles.some(t=>t.name===e.name);a.set({...c,profiles:t?c.profiles.map(t=>t.name===e.name?e:t):[...c.profiles,e]})};return m(e,{children:[m(D,{title:t(`settings.models`),body:t(`models.lead`),workspace:n?.path}),c?.current?m(`p`,{class:S.banner,"data-tone":`ok`,children:t(`models.running`,{provider:c.current.provider,model:c.current.model,profile:c.current.profile??`—`})}):null,m(C,{loading:a.loading&&!c,error:a.error,empty:n?c&&!c.profiles.length?`models.none`:void 0:`settings.noWorkspace`}),m(`ul`,{class:S.rows,children:(c?.profiles??[]).map(e=>m(oe,{profile:e,overview:c,catalog:o.data?.find(t=>t.profile===e.name),workspace:n?.id??``,onChange:u,onActivated:()=>a.reload()},e.name))}),n&&c?.types.length?r?m(Q,{types:c.types,workspace:n.id,onCancel:()=>i(!1),onSaved:e=>{i(!1),u(e)}}):m(`button`,{type:`button`,class:`${S.secondary} ${S.addButton}`,onClick:()=>i(!0),children:t(`models.add`)}):null]})}var ce={active:`ok`,inactive:`off`,failed:`danger`,"restart-required":`warn`};function le(e){return e.status===`failed`?t(`plugins.status.failed`):e.status===`restart-required`?t(`plugins.status.restart`):e.enabled?t(`plugins.status.enabled`):t(`plugins.status.disabled`)}function $(n){let{plugin:r}=n,[i,a]=s(!1),o=`plugin-${r.id}`;return m(`li`,{class:S.card,"data-open":i,children:[m(`button`,{type:`button`,class:S.cardHead,"aria-expanded":i,"aria-controls":o,onClick:()=>a(!i),children:[m(`span`,{class:S.cardName,title:r.name,children:r.name}),m(k,{tone:ce[r.status],children:le(r)}),m(h,{name:i?`chevronDown`:`chevronRight`,size:16,class:S.chevron})]}),i?m(`div`,{id:o,class:S.cardBody,children:[r.description?m(`p`,{class:S.cardText,children:r.description}):null,m(`dl`,{class:S.facts,children:[m(`dt`,{children:t(`plugins.id`)}),m(`dd`,{children:m(`code`,{children:r.id})}),r.version?m(e,{children:[m(`dt`,{children:t(`plugins.version`)}),m(`dd`,{children:r.version})]}):null,m(`dt`,{children:t(`plugins.source`)}),m(`dd`,{children:r.builtin?t(`plugins.builtin`):r.source}),r.categories.length?m(e,{children:[m(`dt`,{children:t(`plugins.categories`)}),m(`dd`,{children:r.categories.join(`, `)})]}):null,m(`dt`,{children:t(`plugins.tools`)}),m(`dd`,{children:r.tools.length?r.tools.join(`, `):`—`}),m(`dt`,{children:t(`plugins.commands`)}),m(`dd`,{children:r.commands.length?r.commands.map(e=>`/${e}`).join(`, `):`—`})]}),r.diagnostic?m(`p`,{class:S.diagnostic,children:r.diagnostic}):null,m(`div`,{class:S.toggleRow,children:[m(`span`,{children:t(`plugins.enable`)}),m(O,{checked:r.enabled,label:t(`plugins.enableNamed`,{name:r.name}),disabled:!r.manageable,busy:n.busy,onChange:n.onToggle})]})]}):null]})}function ue(){let n=w(),[r,i]=s(`list`),[a,o]=s(``),[c,d]=s(),f=E(n?()=>l.plugins(n.id):void 0,[n?.id],[`plugins`]),p=E(n&&r===`configuration`?()=>l.settings(n.id):void 0,[n?.id,r]),g=async(e,r)=>{if(n){d(e.id);try{let i=await l.setPlugin(n.id,e.id,r);f.set((f.data??[]).map(e=>e.id===i.id?i:e)),i.status===`restart-required`&&u(t(`plugins.deferred`))}catch(e){u(A(e))}finally{d(void 0)}}},_=a.trim().toLowerCase(),v=(f.data??[]).filter(e=>!_||e.name.toLowerCase().includes(_)||e.id.toLowerCase().includes(_)||e.description.toLowerCase().includes(_));return m(e,{children:[m(D,{title:t(`settings.plugins`),body:t(`plugins.lead`),workspace:n?.path}),m(`div`,{class:S.tabs,role:`tablist`,children:[`configuration`,`list`].map(e=>m(`button`,{type:`button`,role:`tab`,class:S.tab,"aria-selected":r===e,onClick:()=>i(e),children:t(e===`list`?`plugins.tab.list`:`plugins.tab.configuration`)},e))}),r===`configuration`?m(`div`,{class:S.stack,children:[m(`p`,{class:S.callout,children:[m(h,{name:`shield`,size:16}),m(`span`,{children:t(`plugins.notSandboxed`)})]}),m(`p`,{class:S.note,children:t(`plugins.howToInstall`)}),m(`p`,{class:S.note,children:t(`plugins.applyNote`)}),p.data?m(`p`,{class:S.note,children:[t(`plugins.projectFile`),` `,m(`code`,{children:p.data.configPath})]}):null]}):m(e,{children:[m(T,{value:a,label:t(`plugins.search`),onInput:o}),m(`h4`,{class:S.listTitle,children:[t(`plugins.tab.list`),` `,m(`span`,{class:S.count,children:v.length})]}),m(C,{loading:f.loading&&!f.data,error:f.error,empty:n?f.data&&!v.length?`plugins.none`:void 0:`settings.noWorkspace`}),m(`ul`,{class:S.grid,children:v.map(e=>m($,{plugin:e,busy:c===e.id,onToggle:t=>void g(e,t)},e.id))})]})]})}function de(){let n=w(),[r,i]=s(``),[a,o]=s(),c=E(n?()=>l.skills(n.id):void 0,[n?.id],[`skills`]),d=async(e,t)=>{if(n){o(e.id);try{let r=await l.setSkill(n.id,e.id,t);c.set((c.data??[]).map(e=>e.id===r.id&&e.effective?r:e))}catch(e){u(A(e))}finally{o(void 0)}}},f=r.trim().toLowerCase(),p=(c.data??[]).filter(e=>!f||e.displayId.toLowerCase().includes(f)||e.description.toLowerCase().includes(f));return m(e,{children:[m(D,{title:t(`settings.skills`),body:t(`skills.lead`),workspace:n?.path}),m(T,{value:r,label:t(`skills.search`),onInput:i}),m(C,{loading:c.loading&&!c.data,error:c.error,empty:n?c.data&&!p.length?`skills.none`:void 0:`settings.noWorkspace`}),m(`ul`,{class:S.rows,children:p.map(e=>m(`li`,{class:S.row,"data-muted":!e.effective,children:[m(`div`,{class:S.rowMain,children:[m(`div`,{class:S.rowTitle,children:[m(`span`,{class:S.cardName,children:e.displayId}),m(k,{tone:e.enabled&&e.effective?`ok`:`off`,children:e.effective?e.enabled?t(`plugins.status.enabled`):t(`plugins.status.disabled`):t(`skills.shadowed`)})]}),m(`p`,{class:S.cardText,children:e.description}),m(`p`,{class:S.meta,children:[t(`skills.meta`,{scope:e.owner?`${e.scope} · ${e.owner.name}`:e.scope,tokens:e.approximateTokens}),e.shadowedBy?` · ${t(`skills.shadowedBy`,{id:e.shadowedBy})}`:``,e.locked?` · ${t(`skills.locked`)}`:``]})]}),m(O,{checked:e.enabled,label:t(`plugins.enableNamed`,{name:e.displayId}),disabled:!e.effective||!e.manageable||e.locked,busy:a===e.id,onChange:t=>void d(e,t)})]},`${e.id}:${e.source}`))})]})}var fe=[{id:`general`,icon:`settings`},{id:`models`,icon:`database`},{id:`plugins`,icon:`sliders`},{id:`skills`,icon:`book`},{id:`mcp`,icon:`plug`},{id:`agents`,icon:`users`},{id:`analysis`,icon:`fileChart`},{id:`appearance`,icon:`palette`},{id:`about`,icon:`info`}],pe=`button:not(:disabled), input:not(:disabled), select:not(:disabled), [tabindex='0']`;function me(e){let n=w(),r=E(n?()=>l.settings(n.id):void 0,[n?.id]),i=r.data?[{label:t(`config.effective`),path:r.data.configPath},{label:t(`config.settings`),path:r.data.settingsPath},{label:t(`config.providers`),path:r.data.providersPath}]:[];return m(`div`,{class:S.popover,role:`dialog`,"aria-label":t(`config.open`),children:[m(`div`,{class:S.popoverHead,children:[m(`strong`,{children:t(`config.open`)}),m(`button`,{type:`button`,class:`icon-btn`,"aria-label":t(`common.close`),onClick:e.onClose,children:m(h,{name:`x`,size:16})})]}),m(`p`,{class:S.note,children:t(`config.lead`)}),n?null:m(`p`,{class:S.note,children:t(`settings.noWorkspace`)}),r.error?m(`p`,{class:S.errorText,children:r.error}):null,m(`ul`,{class:S.paths,children:i.map(e=>m(`li`,{children:[m(`span`,{class:S.meta,children:e.label}),m(`span`,{class:S.pathRow,children:[m(`code`,{class:S.path,children:e.path}),m(g,{text:()=>e.path,label:t(`config.copy`)})]})]},e.label))}),r.data&&!r.data.trusted?m(`p`,{class:S.note,children:t(`config.untrusted`)}):null]})}function he(){let[e,i]=s(`general`),[a,o]=s(!1),c=r(null);n(()=>{let e=document.activeElement;return c.current?.querySelector(`nav button`)?.focus(),()=>e?.focus()},[]);let l=()=>{p.value=!1};return m(`div`,{class:S.backdrop,onMouseDown:e=>{e.target===e.currentTarget&&l()},children:m(`div`,{ref:c,class:S.dialog,role:`dialog`,"aria-modal":`true`,"aria-labelledby":`settings-title`,onKeyDown:e=>{if(e.key===`Escape`&&(a?o(!1):l()),e.key===`Tab`){let t=[...c.current?.querySelectorAll(pe)??[]],n=t[0],r=t.at(-1);e.shiftKey&&document.activeElement===n?(e.preventDefault(),r?.focus()):!e.shiftKey&&document.activeElement===r&&(e.preventDefault(),n?.focus())}},children:[m(`nav`,{class:S.nav,"aria-label":t(`settings.title`),children:[m(`h2`,{id:`settings-title`,class:S.heading,children:t(`settings.title`)}),fe.map(({id:n,icon:r})=>m(`button`,{type:`button`,class:S.navItem,"aria-current":e===n?`page`:void 0,onClick:()=>i(n),children:[m(h,{name:r,size:17}),t(`settings.${n}`)]},n))]}),m(`div`,{class:S.content,children:[m(`div`,{class:S.topBar,children:[m(`button`,{type:`button`,class:S.outline,"aria-expanded":a,onClick:()=>o(!a),children:t(`config.open`)}),m(`button`,{type:`button`,class:`icon-btn`,"aria-label":t(`common.close`),onClick:l,children:m(h,{name:`x`,size:18})})]}),a?m(me,{onClose:()=>o(!1)}):null,m(e===`general`?Y:e===`models`?se:e===`plugins`?ue:e===`skills`?de:e===`mcp`?ne:e===`agents`?N:e===`analysis`?U:e===`appearance`?W:M,{})]})]})})}export{he as SettingsModal};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{_ as e,a as t,b as n,g as r,v as i,x as a,y as o}from"./i18n-cdcw61GT.js";import{Ct as s,d as c,dt as l}from"./app-CDFfZ2Xi.js";import{t as u}from"./jsxRuntime-B0JBTZJT.js";import{t as d}from"./icons-CxEvdUqL.js";import{t as ee}from"./clipboard-hOiC7lD8.js";var te=1e5,ne=(e,t)=>JSON.stringify([e,t.sheet,t.sort??null,t.filter?.text?t.filter:null]),re=class{capacity;map=new Map;constructor(e=20){this.capacity=e}get size(){return this.map.size}has(e){return this.map.has(e)}get(e){let t=this.map.get(e);if(t!==void 0)return this.map.delete(e),this.map.set(e,t),t}peek(e){return this.map.get(e)}set(e,t){for(this.map.delete(e),this.map.set(e,t);this.map.size>this.capacity;){let e=this.map.keys().next().value;this.map.delete(e)}}clear(){this.map.clear()}keys(){return[...this.map.keys()]}};function ie(e,t,n,r=10){return n<=0?{first:0,last:-1}:{first:Math.max(0,Math.floor(e/28)-r),last:Math.min(n-1,Math.ceil((e+t)/28)+r)}}function ae(e,t){if(t<e)return[];let n=[];for(let r=Math.floor(e/200);r<=Math.floor(t/200);r++)n.push(r);return n}function oe(e,t,n,r){let i={limit:200};if(n&&t.sort&&(i.sort=t.sort.column,i.dir=t.sort.dir),n&&t.filter?.text&&(i.filter=t.filter.text,t.filter.column!==void 0&&(i.column=t.filter.column)),e===0)return{request:i};let a=r.peek(e-1)?.page.next;if(a)return{request:{...i,after:a}};let o=e*200;return!i.sort&&!i.filter||o<=1e5?{request:{...i,offset:o}}:{need:e-1}}function se(e,t){if(e?.column!==t)return{column:t,dir:`asc`};if(e.dir===`asc`)return{column:t,dir:`desc`}}var ce=(e,t)=>e?.column===t?e.dir===`asc`?`ascending`:`descending`:`none`;function le(e,t,n,r,i){let a=Math.max(0,r.rows-1),o=Math.max(0,r.cols-1),s=e=>({row:Math.min(a,Math.max(0,e.row)),col:Math.min(o,Math.max(0,e.col))});switch(e){case`ArrowDown`:return s({...n,row:n.row+1});case`ArrowUp`:return s({...n,row:n.row-1});case`ArrowRight`:return s({...n,col:n.col+1});case`ArrowLeft`:return s({...n,col:n.col-1});case`PageDown`:return s({...n,row:n.row+Math.max(1,i-1)});case`PageUp`:return s({...n,row:n.row-Math.max(1,i-1)});case`Home`:return s(t?{row:0,col:0}:{...n,col:0});case`End`:return s(t?{row:a,col:o}:{...n,col:o});default:return}}function ue(e,t,n,r=28){let i=e*28,a=i+28,o=Math.max(28,n-r);return i<t?i:a>t+o?a-o:t}var f=e=>Math.min(800,Math.max(60,Math.round(e)));function de(e,t,n){let r=t?64:16;switch(e){case`ArrowRight`:return f(n+r);case`ArrowLeft`:return f(n-r);case`Home`:return 60;case`End`:return 800;case`Enter`:return 140;default:return}}var p=e=>e==null?``:String(e),fe=e=>e.map(e=>p(e).replace(/[\t\r\n]+/g,` `)).join(` `),m=e=>e.toLocaleString(`en-US`),h={root:`_root_1scuo_2`,toolbar:`_toolbar_1scuo_12`,field:`_field_1scuo_21`,filter:`_filter_1scuo_22`,iconButton:`_iconButton_1scuo_40`,linkButton:`_linkButton_1scuo_41`,button:`_button_1scuo_42`,count:`_count_1scuo_52`,notice:`_notice_1scuo_79`,error:`_error_1scuo_88`,scroller:`_scroller_1scuo_103`,sizer:`_sizer_1scuo_112`,header:`_header_1scuo_116`,headerCell:`_headerCell_1scuo_125`,headerText:`_headerText_1scuo_153`,type:`_type_1scuo_158`,handle:`_handle_1scuo_166`,rows:`_rows_1scuo_180`,row:`_row_1scuo_180`,cell:`_cell_1scuo_195`,rowNumber:`_rowNumber_1scuo_201`,empty:`_empty_1scuo_259`,state:`_state_1scuo_270`,muted:`_muted_1scuo_283`,sheetShimmer:`_sheet-shimmer_1scuo_1`},g=64;function _(s){let{datasetId:_}=s,[v,y]=o(),[pe,me]=o(),[he,ge]=o(0),[b,x]=o({sheet:``}),[S,_e]=o(``),[C,ve]=o(),[w,T]=o({}),[E,D]=o({top:0,left:0,width:600,height:400}),[O,k]=o({row:0,col:0}),[ye,A]=o(0),[j,be]=o({interactive:!0}),[xe,M]=o(),N=r(null),P=r(new re),F=r(new Map),I=r(0),L=r(void 0),R=r(0);n(()=>{let e=!0;return y(void 0),me(void 0),c.dataset(_).then(t=>{e&&(y(t),x({sheet:t.sheetDetails[0]?.name??``}))},t=>{e&&me(t instanceof Error?t.message:String(t))}),()=>{e=!1}},[_,he]);let z=v?.sheetDetails.find(e=>e.name===b.sheet),B=z?.columns??[],V=!!z&&z.rows<=(v?.maxInteractiveRows??0),H=!!z&&z.rows>1e5,U=V&&!!b.filter?.text,W=U?j.matched??0:z?.rows??0,Se=ne(_,b);n(()=>{I.current++,P.current.clear(),F.current.clear(),M(void 0),be({interactive:!0}),k({row:0,col:0}),N.current&&(N.current.scrollTop=0),D(e=>({...e,top:0})),A(e=>e+1)},[Se]);let G=e(()=>{let e=[],t=g;for(let n of B)e.push(t),t+=w[n.name]??140;return{starts:e,total:t}},[B,w]),K=a(e=>{let t=F.current.get(e);if(t)return t;if(P.current.has(e)||!z)return Promise.resolve();let n=I.current,r=(async()=>{let t=oe(e,b,V,P.current);if(`need`in t&&(await K(t.need),n!==I.current||(t=oe(e,b,V,P.current),`need`in t)))return;let r=await c.datasetRows(_,{sheet:z.name,...t.request});n===I.current&&(P.current.set(e,{page:r}),e===0&&be({...r.matched===void 0?{}:{matched:r.matched},interactive:r.interactive}),A(e=>e+1))})().catch(e=>{n===I.current&&M(e instanceof Error?e.message:String(e))}).finally(()=>{F.current.get(e)===r&&F.current.delete(e)});return F.current.set(e,r),r},[_,z,b,V]),q=ie(E.top,E.height-28,W),Ce=ae(q.first,q.last),we=Ce.join(`,`);n(()=>{if(!z)return;let e=new Set([0,...Ce]);for(let t of[...e].sort((e,t)=>e-t))K(t)},[we,K,z]),i(()=>{let e=L.current;if(!e||!N.current)return;let t=N.current.querySelector(`[data-r="${e.row}"][data-c="${e.col}"]`);t&&(t.focus({preventScroll:!0}),L.current=void 0)}),n(()=>{let e=N.current;if(!e)return;let t=()=>D(t=>({...t,width:e.clientWidth,height:e.clientHeight}));if(t(),typeof ResizeObserver>`u`)return;let n=new ResizeObserver(t);return n.observe(e),()=>n.disconnect()},[z]);let Te=()=>{let e=N.current;e&&!R.current&&(R.current=requestAnimationFrame(()=>{R.current=0,D(t=>({...t,top:e.scrollTop,left:e.scrollLeft,width:e.clientWidth,height:e.clientHeight}))}))},J=e=>P.current.peek(Math.floor(e/200))?.page.rows[e%200],Ee=e=>P.current.peek(Math.floor(e/200))?.page.rowids[e%200],Y=e=>{k(e),L.current=e;let t=N.current;if(t&&e.row>=0){let n=ue(e.row,t.scrollTop,t.clientHeight);n!==t.scrollTop&&(t.scrollTop=n);let r=G.starts[e.col]??0,i=r+(w[B[e.col]?.name??``]??140);r-g<t.scrollLeft?t.scrollLeft=Math.max(0,r-g):i>t.scrollLeft+t.clientWidth&&(t.scrollLeft=i-t.clientWidth)}},De=e=>{if(!V)return;let t=se(b.sort,e);x({...b,...t?{sort:t}:{sort:void 0}})},X=async e=>{await ee(e)&&l(t(`sheet.copied`))},Oe=e=>{if(!z||!B.length)return;let t=e.ctrlKey||e.metaKey;if(t&&e.key.toLowerCase()===`c`&&!window.getSelection()?.toString()){if(e.preventDefault(),O.row<0)X(B[O.col]?.label??``);else{let t=J(O.row);t&&X(e.shiftKey?fe(t):p(t[O.col]))}return}if(O.row<0&&(e.key===`Enter`||e.key===` `)){e.preventDefault();let t=B[O.col];t&&De(t.name);return}if(e.altKey&&O.row<0&&(e.key===`ArrowLeft`||e.key===`ArrowRight`)){e.preventDefault();let t=B[O.col];if(!t)return;let n=w[t.name]??140,r=de(e.key,e.shiftKey,n);r!==void 0&&T({...w,[t.name]:r});return}let n=le(e.key,t,O,{rows:W,cols:B.length},Math.floor((E.height-28)/28));if(n){if(e.preventDefault(),e.key===`ArrowUp`&&O.row===0)return Y({row:-1,col:O.col});if(e.key===`ArrowDown`&&O.row===-1)return Y({row:W?0:-1,col:O.col});Y(n)}};n(()=>{if(!z)return;let e=setTimeout(()=>{let e=S.trim(),t=C??(H?B[0]?.name:void 0);x(n=>{if((n.filter?.text??``)===e&&n.filter?.column===t)return n;let{filter:r,...i}=n;return e?{...i,filter:{text:e,...t===void 0?{}:{column:t}}}:i})},300);return()=>clearTimeout(e)},[S,C,z,H]);let ke=(e,t)=>{e.preventDefault(),e.stopPropagation();let n=e.currentTarget;n.setPointerCapture(e.pointerId);let r=e.clientX,i=w[t]??140,a=e=>T(n=>({...n,[t]:f(i+e.clientX-r)})),o=()=>{n.removeEventListener(`pointermove`,a),n.removeEventListener(`pointerup`,o),n.removeEventListener(`pointercancel`,o)};n.addEventListener(`pointermove`,a),n.addEventListener(`pointerup`,o),n.addEventListener(`pointercancel`,o)};if(pe)return u(`div`,{class:h.state,role:`status`,children:[u(`p`,{children:t(`sheet.error`)}),u(`p`,{class:h.muted,children:pe}),u(`button`,{type:`button`,class:h.button,onClick:()=>ge(e=>e+1),children:t(`artifact.retry`)})]});if(!v||!z)return u(`div`,{class:h.state,"aria-busy":`true`,children:t(`sheet.loading`)});let Ae=q.first,je=[];for(let e=q.first;e<=q.last;e++)je.push(e);let Z=0;for(;Z<B.length-1&&(G.starts[Z+1]??G.total)-g<E.left;)Z++;let Q=Z;for(;Q<B.length-1&&(G.starts[Q+1]??G.total)<E.left+E.width;)Q++;Z=Math.max(0,Z-3),Q=Math.min(B.length-1,Q+3);let $=[];for(let e=Z;e<=Q;e++)$.push(e);let Me=e=>w[B[e]?.name??``]??140;return u(`div`,{class:h.root,children:[u(`div`,{class:h.toolbar,children:[v.sheetDetails.length>1?u(`label`,{class:h.field,children:[u(`span`,{class:`sr-only`,children:t(`sheet.sheet`)}),u(`select`,{value:b.sheet,"aria-label":t(`sheet.sheet`),onChange:e=>{_e(``),x({sheet:e.target.value})},children:v.sheetDetails.map(e=>u(`option`,{value:e.name,children:e.name},e.name))})]}):null,u(`label`,{class:h.field,children:[u(`span`,{class:`sr-only`,children:t(`sheet.filterColumn`)}),u(`select`,{disabled:!V,"aria-label":t(`sheet.filterColumn`),value:C??(H?B[0]?.name??``:``),onChange:e=>{let t=e.target.value;ve(t===``?void 0:t)},children:[H?null:u(`option`,{value:``,children:t(`sheet.allColumns`)}),B.map(e=>u(`option`,{value:e.name,children:e.label},e.name))]})]}),u(`input`,{type:`search`,class:h.filter,disabled:!V,placeholder:t(`sheet.filter`),"aria-label":t(`sheet.filter`),value:S,onInput:e=>_e(e.target.value)}),u(`span`,{class:h.count,"aria-live":`polite`,children:U&&j.matched!==void 0?t(`sheet.matches`,{matched:m(j.matched),total:m(z.rows)}):t(`sheet.rows`,{total:m(z.rows)})}),u(`button`,{type:`button`,class:h.iconButton,disabled:O.row<0||!J(O.row),"aria-label":t(`sheet.copyRow`),title:t(`sheet.copyRow`),onClick:()=>{let e=J(O.row);e&&X(fe(e))},children:u(d,{name:`copy`,size:15})}),s.downloadHref?u(`a`,{class:h.iconButton,href:s.downloadHref,download:``,"aria-label":t(`sheet.downloadOriginal`),title:t(`sheet.downloadOriginal`),children:u(d,{name:`download`,size:15})}):null]}),V?H?u(`p`,{class:h.notice,children:t(`sheet.needColumn`)}):(b.sort||U)&&W>1e5?u(`p`,{class:h.notice,children:t(`sheet.jumpLimited`,{limit:m(te)})}):null:u(`p`,{class:h.notice,role:`status`,children:t(`sheet.notInteractive`,{limit:m(v.maxInteractiveRows)})}),xe?u(`p`,{class:`${h.notice} ${h.error}`,role:`alert`,children:[t(`sheet.error`),` `,xe,` `,u(`button`,{type:`button`,class:h.linkButton,onClick:()=>{I.current++,P.current.clear(),F.current.clear(),M(void 0),A(e=>e+1)},children:t(`artifact.retry`)})]}):null,u(`div`,{ref:N,class:h.scroller,role:`grid`,"aria-label":t(`sheet.label`),"aria-rowcount":W+1,"aria-colcount":B.length+1,"data-version":ye,onScroll:Te,onKeyDown:Oe,children:u(`div`,{class:h.sizer,style:{width:`${G.total}px`,height:`${(W+1)*28}px`},children:[u(`div`,{class:h.header,role:`row`,"aria-rowindex":1,style:{width:`${G.total}px`},children:[u(`div`,{class:`${h.rowNumber} ${h.headerCell}`,role:`columnheader`,"aria-colindex":1,children:t(`sheet.rowNumber`)}),$.map(e=>{let n=B[e];if(!n)return null;let r=O.row===-1&&O.col===e,i=ce(b.sort,n.name);return u(`div`,{class:h.headerCell,role:`columnheader`,"aria-colindex":e+2,"aria-sort":i,"data-r":-1,"data-c":e,tabIndex:r?0:-1,style:{left:`${G.starts[e]}px`,width:`${Me(e)}px`},title:`${n.label} · ${n.type}`,onFocus:()=>k({row:-1,col:e}),onClick:()=>{k({row:-1,col:e}),De(n.name)},children:[u(`span`,{class:h.headerText,children:n.label}),u(`span`,{class:h.type,children:n.type}),i===`none`?null:u(d,{name:i===`ascending`?`arrowUp`:`arrowDown`,size:13}),u(`span`,{class:`sr-only`,children:V?t(`sheet.sortBy`,{column:n.label}):``}),u(`span`,{class:h.handle,role:`separator`,"aria-orientation":`vertical`,"aria-label":t(`sheet.resizeColumn`,{column:n.label}),"aria-valuenow":Me(e),onPointerDown:e=>ke(e,n.name),onClick:e=>e.stopPropagation(),onDblClick:e=>{e.stopPropagation(),T({...w,[n.name]:140})}})]},n.name)})]}),W===0&&j.matched===0&&U?u(`p`,{class:h.empty,children:t(`sheet.noMatches`)}):W===0&&z.rows===0?u(`p`,{class:h.empty,children:t(`sheet.empty`)}):null,u(`div`,{class:h.rows,style:{top:`${(Ae+1)*28}px`},children:je.map(e=>{let t=J(e),n=Ee(e);return u(`div`,{class:h.row,role:`row`,"aria-rowindex":e+2,"data-odd":e%2==1?`true`:void 0,"data-loading":t?void 0:`true`,style:{width:`${G.total}px`},children:[u(`div`,{class:h.rowNumber,role:`rowheader`,"aria-colindex":1,title:n===void 0?void 0:String(n),children:n??``}),$.map(n=>{let r=O.row===e&&O.col===n,i=t?.[n];return u(`div`,{class:h.cell,role:`gridcell`,"aria-colindex":n+2,"data-r":e,"data-c":n,"data-null":t&&i===null?`true`:void 0,"data-number":typeof i==`number`?`true`:void 0,"data-active":r?`true`:void 0,tabIndex:r?0:-1,style:{left:`${G.starts[n]}px`,width:`${Me(n)}px`},onFocus:()=>k({row:e,col:n}),onMouseDown:()=>k({row:e,col:n}),title:t?p(i):void 0,children:t?p(i):``},n)})]},e)})})]})}),U||b.sort?u(`span`,{class:`sr-only`,"aria-live":`polite`,children:(b.sort?b.sort.column:``)+(U?` ${b.filter?.text}`:``)}):null]})}function v(e){let[r,i]=o(),[a,l]=o(),[d,ee]=o(0);return n(()=>{let t=!0,n;i(void 0),l(void 0);let r=()=>c.artifactDataset(e.artifactId).then(e=>{t&&(e.dataset?i(e.dataset):n=setTimeout(r,2e3))},e=>{t&&l(e instanceof Error?e.message:String(e))});return r(),()=>{t=!1,clearTimeout(n)}},[e.artifactId,d]),a?u(`div`,{class:h.state,role:`status`,children:[u(`p`,{children:t(`sheet.error`)}),u(`p`,{class:h.muted,children:a}),u(`button`,{type:`button`,class:h.button,onClick:()=>ee(e=>e+1),children:t(`artifact.retry`)})]}):r?u(_,{datasetId:r.id,name:e.name,downloadHref:s(e.artifactId)}):u(`div`,{class:h.state,"aria-busy":`true`,children:t(`sheet.preparing`)})}function y(e){return u(_,{datasetId:e.dataset.id,name:e.dataset.name,...e.original?{downloadHref:c.datasetDownloadUrl(e.dataset.id)}:{}})}export{v as ArtifactSpreadsheet,y as DatasetSpreadsheet,_ as SpreadsheetView};
|
|
1
|
+
import{_ as e,a as t,b as n,g as r,v as i,x as a,y as o}from"./i18n-BZax1Psk.js";import{Ct as s,d as c,dt as l}from"./app-D95B_PAO.js";import{t as u}from"./jsxRuntime-C-CM9h-f.js";import{t as d}from"./icons-nQx96NOf.js";import{t as ee}from"./clipboard-hOiC7lD8.js";var te=1e5,ne=(e,t)=>JSON.stringify([e,t.sheet,t.sort??null,t.filter?.text?t.filter:null]),re=class{capacity;map=new Map;constructor(e=20){this.capacity=e}get size(){return this.map.size}has(e){return this.map.has(e)}get(e){let t=this.map.get(e);if(t!==void 0)return this.map.delete(e),this.map.set(e,t),t}peek(e){return this.map.get(e)}set(e,t){for(this.map.delete(e),this.map.set(e,t);this.map.size>this.capacity;){let e=this.map.keys().next().value;this.map.delete(e)}}clear(){this.map.clear()}keys(){return[...this.map.keys()]}};function ie(e,t,n,r=10){return n<=0?{first:0,last:-1}:{first:Math.max(0,Math.floor(e/28)-r),last:Math.min(n-1,Math.ceil((e+t)/28)+r)}}function ae(e,t){if(t<e)return[];let n=[];for(let r=Math.floor(e/200);r<=Math.floor(t/200);r++)n.push(r);return n}function oe(e,t,n,r){let i={limit:200};if(n&&t.sort&&(i.sort=t.sort.column,i.dir=t.sort.dir),n&&t.filter?.text&&(i.filter=t.filter.text,t.filter.column!==void 0&&(i.column=t.filter.column)),e===0)return{request:i};let a=r.peek(e-1)?.page.next;if(a)return{request:{...i,after:a}};let o=e*200;return!i.sort&&!i.filter||o<=1e5?{request:{...i,offset:o}}:{need:e-1}}function se(e,t){if(e?.column!==t)return{column:t,dir:`asc`};if(e.dir===`asc`)return{column:t,dir:`desc`}}var ce=(e,t)=>e?.column===t?e.dir===`asc`?`ascending`:`descending`:`none`;function le(e,t,n,r,i){let a=Math.max(0,r.rows-1),o=Math.max(0,r.cols-1),s=e=>({row:Math.min(a,Math.max(0,e.row)),col:Math.min(o,Math.max(0,e.col))});switch(e){case`ArrowDown`:return s({...n,row:n.row+1});case`ArrowUp`:return s({...n,row:n.row-1});case`ArrowRight`:return s({...n,col:n.col+1});case`ArrowLeft`:return s({...n,col:n.col-1});case`PageDown`:return s({...n,row:n.row+Math.max(1,i-1)});case`PageUp`:return s({...n,row:n.row-Math.max(1,i-1)});case`Home`:return s(t?{row:0,col:0}:{...n,col:0});case`End`:return s(t?{row:a,col:o}:{...n,col:o});default:return}}function ue(e,t,n,r=28){let i=e*28,a=i+28,o=Math.max(28,n-r);return i<t?i:a>t+o?a-o:t}var f=e=>Math.min(800,Math.max(60,Math.round(e)));function de(e,t,n){let r=t?64:16;switch(e){case`ArrowRight`:return f(n+r);case`ArrowLeft`:return f(n-r);case`Home`:return 60;case`End`:return 800;case`Enter`:return 140;default:return}}var p=e=>e==null?``:String(e),fe=e=>e.map(e=>p(e).replace(/[\t\r\n]+/g,` `)).join(` `),m=e=>e.toLocaleString(`en-US`),h={root:`_root_1scuo_2`,toolbar:`_toolbar_1scuo_12`,field:`_field_1scuo_21`,filter:`_filter_1scuo_22`,iconButton:`_iconButton_1scuo_40`,linkButton:`_linkButton_1scuo_41`,button:`_button_1scuo_42`,count:`_count_1scuo_52`,notice:`_notice_1scuo_79`,error:`_error_1scuo_88`,scroller:`_scroller_1scuo_103`,sizer:`_sizer_1scuo_112`,header:`_header_1scuo_116`,headerCell:`_headerCell_1scuo_125`,headerText:`_headerText_1scuo_153`,type:`_type_1scuo_158`,handle:`_handle_1scuo_166`,rows:`_rows_1scuo_180`,row:`_row_1scuo_180`,cell:`_cell_1scuo_195`,rowNumber:`_rowNumber_1scuo_201`,empty:`_empty_1scuo_259`,state:`_state_1scuo_270`,muted:`_muted_1scuo_283`,sheetShimmer:`_sheet-shimmer_1scuo_1`},g=64;function _(s){let{datasetId:_}=s,[v,y]=o(),[pe,me]=o(),[he,ge]=o(0),[b,x]=o({sheet:``}),[S,_e]=o(``),[C,ve]=o(),[w,T]=o({}),[E,D]=o({top:0,left:0,width:600,height:400}),[O,k]=o({row:0,col:0}),[ye,A]=o(0),[j,be]=o({interactive:!0}),[xe,M]=o(),N=r(null),P=r(new re),F=r(new Map),I=r(0),L=r(void 0),R=r(0);n(()=>{let e=!0;return y(void 0),me(void 0),c.dataset(_).then(t=>{e&&(y(t),x({sheet:t.sheetDetails[0]?.name??``}))},t=>{e&&me(t instanceof Error?t.message:String(t))}),()=>{e=!1}},[_,he]);let z=v?.sheetDetails.find(e=>e.name===b.sheet),B=z?.columns??[],V=!!z&&z.rows<=(v?.maxInteractiveRows??0),H=!!z&&z.rows>1e5,U=V&&!!b.filter?.text,W=U?j.matched??0:z?.rows??0,Se=ne(_,b);n(()=>{I.current++,P.current.clear(),F.current.clear(),M(void 0),be({interactive:!0}),k({row:0,col:0}),N.current&&(N.current.scrollTop=0),D(e=>({...e,top:0})),A(e=>e+1)},[Se]);let G=e(()=>{let e=[],t=g;for(let n of B)e.push(t),t+=w[n.name]??140;return{starts:e,total:t}},[B,w]),K=a(e=>{let t=F.current.get(e);if(t)return t;if(P.current.has(e)||!z)return Promise.resolve();let n=I.current,r=(async()=>{let t=oe(e,b,V,P.current);if(`need`in t&&(await K(t.need),n!==I.current||(t=oe(e,b,V,P.current),`need`in t)))return;let r=await c.datasetRows(_,{sheet:z.name,...t.request});n===I.current&&(P.current.set(e,{page:r}),e===0&&be({...r.matched===void 0?{}:{matched:r.matched},interactive:r.interactive}),A(e=>e+1))})().catch(e=>{n===I.current&&M(e instanceof Error?e.message:String(e))}).finally(()=>{F.current.get(e)===r&&F.current.delete(e)});return F.current.set(e,r),r},[_,z,b,V]),q=ie(E.top,E.height-28,W),Ce=ae(q.first,q.last),we=Ce.join(`,`);n(()=>{if(!z)return;let e=new Set([0,...Ce]);for(let t of[...e].sort((e,t)=>e-t))K(t)},[we,K,z]),i(()=>{let e=L.current;if(!e||!N.current)return;let t=N.current.querySelector(`[data-r="${e.row}"][data-c="${e.col}"]`);t&&(t.focus({preventScroll:!0}),L.current=void 0)}),n(()=>{let e=N.current;if(!e)return;let t=()=>D(t=>({...t,width:e.clientWidth,height:e.clientHeight}));if(t(),typeof ResizeObserver>`u`)return;let n=new ResizeObserver(t);return n.observe(e),()=>n.disconnect()},[z]);let Te=()=>{let e=N.current;e&&!R.current&&(R.current=requestAnimationFrame(()=>{R.current=0,D(t=>({...t,top:e.scrollTop,left:e.scrollLeft,width:e.clientWidth,height:e.clientHeight}))}))},J=e=>P.current.peek(Math.floor(e/200))?.page.rows[e%200],Ee=e=>P.current.peek(Math.floor(e/200))?.page.rowids[e%200],Y=e=>{k(e),L.current=e;let t=N.current;if(t&&e.row>=0){let n=ue(e.row,t.scrollTop,t.clientHeight);n!==t.scrollTop&&(t.scrollTop=n);let r=G.starts[e.col]??0,i=r+(w[B[e.col]?.name??``]??140);r-g<t.scrollLeft?t.scrollLeft=Math.max(0,r-g):i>t.scrollLeft+t.clientWidth&&(t.scrollLeft=i-t.clientWidth)}},De=e=>{if(!V)return;let t=se(b.sort,e);x({...b,...t?{sort:t}:{sort:void 0}})},X=async e=>{await ee(e)&&l(t(`sheet.copied`))},Oe=e=>{if(!z||!B.length)return;let t=e.ctrlKey||e.metaKey;if(t&&e.key.toLowerCase()===`c`&&!window.getSelection()?.toString()){if(e.preventDefault(),O.row<0)X(B[O.col]?.label??``);else{let t=J(O.row);t&&X(e.shiftKey?fe(t):p(t[O.col]))}return}if(O.row<0&&(e.key===`Enter`||e.key===` `)){e.preventDefault();let t=B[O.col];t&&De(t.name);return}if(e.altKey&&O.row<0&&(e.key===`ArrowLeft`||e.key===`ArrowRight`)){e.preventDefault();let t=B[O.col];if(!t)return;let n=w[t.name]??140,r=de(e.key,e.shiftKey,n);r!==void 0&&T({...w,[t.name]:r});return}let n=le(e.key,t,O,{rows:W,cols:B.length},Math.floor((E.height-28)/28));if(n){if(e.preventDefault(),e.key===`ArrowUp`&&O.row===0)return Y({row:-1,col:O.col});if(e.key===`ArrowDown`&&O.row===-1)return Y({row:W?0:-1,col:O.col});Y(n)}};n(()=>{if(!z)return;let e=setTimeout(()=>{let e=S.trim(),t=C??(H?B[0]?.name:void 0);x(n=>{if((n.filter?.text??``)===e&&n.filter?.column===t)return n;let{filter:r,...i}=n;return e?{...i,filter:{text:e,...t===void 0?{}:{column:t}}}:i})},300);return()=>clearTimeout(e)},[S,C,z,H]);let ke=(e,t)=>{e.preventDefault(),e.stopPropagation();let n=e.currentTarget;n.setPointerCapture(e.pointerId);let r=e.clientX,i=w[t]??140,a=e=>T(n=>({...n,[t]:f(i+e.clientX-r)})),o=()=>{n.removeEventListener(`pointermove`,a),n.removeEventListener(`pointerup`,o),n.removeEventListener(`pointercancel`,o)};n.addEventListener(`pointermove`,a),n.addEventListener(`pointerup`,o),n.addEventListener(`pointercancel`,o)};if(pe)return u(`div`,{class:h.state,role:`status`,children:[u(`p`,{children:t(`sheet.error`)}),u(`p`,{class:h.muted,children:pe}),u(`button`,{type:`button`,class:h.button,onClick:()=>ge(e=>e+1),children:t(`artifact.retry`)})]});if(!v||!z)return u(`div`,{class:h.state,"aria-busy":`true`,children:t(`sheet.loading`)});let Ae=q.first,je=[];for(let e=q.first;e<=q.last;e++)je.push(e);let Z=0;for(;Z<B.length-1&&(G.starts[Z+1]??G.total)-g<E.left;)Z++;let Q=Z;for(;Q<B.length-1&&(G.starts[Q+1]??G.total)<E.left+E.width;)Q++;Z=Math.max(0,Z-3),Q=Math.min(B.length-1,Q+3);let $=[];for(let e=Z;e<=Q;e++)$.push(e);let Me=e=>w[B[e]?.name??``]??140;return u(`div`,{class:h.root,children:[u(`div`,{class:h.toolbar,children:[v.sheetDetails.length>1?u(`label`,{class:h.field,children:[u(`span`,{class:`sr-only`,children:t(`sheet.sheet`)}),u(`select`,{value:b.sheet,"aria-label":t(`sheet.sheet`),onChange:e=>{_e(``),x({sheet:e.target.value})},children:v.sheetDetails.map(e=>u(`option`,{value:e.name,children:e.name},e.name))})]}):null,u(`label`,{class:h.field,children:[u(`span`,{class:`sr-only`,children:t(`sheet.filterColumn`)}),u(`select`,{disabled:!V,"aria-label":t(`sheet.filterColumn`),value:C??(H?B[0]?.name??``:``),onChange:e=>{let t=e.target.value;ve(t===``?void 0:t)},children:[H?null:u(`option`,{value:``,children:t(`sheet.allColumns`)}),B.map(e=>u(`option`,{value:e.name,children:e.label},e.name))]})]}),u(`input`,{type:`search`,class:h.filter,disabled:!V,placeholder:t(`sheet.filter`),"aria-label":t(`sheet.filter`),value:S,onInput:e=>_e(e.target.value)}),u(`span`,{class:h.count,"aria-live":`polite`,children:U&&j.matched!==void 0?t(`sheet.matches`,{matched:m(j.matched),total:m(z.rows)}):t(`sheet.rows`,{total:m(z.rows)})}),u(`button`,{type:`button`,class:h.iconButton,disabled:O.row<0||!J(O.row),"aria-label":t(`sheet.copyRow`),title:t(`sheet.copyRow`),onClick:()=>{let e=J(O.row);e&&X(fe(e))},children:u(d,{name:`copy`,size:15})}),s.downloadHref?u(`a`,{class:h.iconButton,href:s.downloadHref,download:``,"aria-label":t(`sheet.downloadOriginal`),title:t(`sheet.downloadOriginal`),children:u(d,{name:`download`,size:15})}):null]}),V?H?u(`p`,{class:h.notice,children:t(`sheet.needColumn`)}):(b.sort||U)&&W>1e5?u(`p`,{class:h.notice,children:t(`sheet.jumpLimited`,{limit:m(te)})}):null:u(`p`,{class:h.notice,role:`status`,children:t(`sheet.notInteractive`,{limit:m(v.maxInteractiveRows)})}),xe?u(`p`,{class:`${h.notice} ${h.error}`,role:`alert`,children:[t(`sheet.error`),` `,xe,` `,u(`button`,{type:`button`,class:h.linkButton,onClick:()=>{I.current++,P.current.clear(),F.current.clear(),M(void 0),A(e=>e+1)},children:t(`artifact.retry`)})]}):null,u(`div`,{ref:N,class:h.scroller,role:`grid`,"aria-label":t(`sheet.label`),"aria-rowcount":W+1,"aria-colcount":B.length+1,"data-version":ye,onScroll:Te,onKeyDown:Oe,children:u(`div`,{class:h.sizer,style:{width:`${G.total}px`,height:`${(W+1)*28}px`},children:[u(`div`,{class:h.header,role:`row`,"aria-rowindex":1,style:{width:`${G.total}px`},children:[u(`div`,{class:`${h.rowNumber} ${h.headerCell}`,role:`columnheader`,"aria-colindex":1,children:t(`sheet.rowNumber`)}),$.map(e=>{let n=B[e];if(!n)return null;let r=O.row===-1&&O.col===e,i=ce(b.sort,n.name);return u(`div`,{class:h.headerCell,role:`columnheader`,"aria-colindex":e+2,"aria-sort":i,"data-r":-1,"data-c":e,tabIndex:r?0:-1,style:{left:`${G.starts[e]}px`,width:`${Me(e)}px`},title:`${n.label} · ${n.type}`,onFocus:()=>k({row:-1,col:e}),onClick:()=>{k({row:-1,col:e}),De(n.name)},children:[u(`span`,{class:h.headerText,children:n.label}),u(`span`,{class:h.type,children:n.type}),i===`none`?null:u(d,{name:i===`ascending`?`arrowUp`:`arrowDown`,size:13}),u(`span`,{class:`sr-only`,children:V?t(`sheet.sortBy`,{column:n.label}):``}),u(`span`,{class:h.handle,role:`separator`,"aria-orientation":`vertical`,"aria-label":t(`sheet.resizeColumn`,{column:n.label}),"aria-valuenow":Me(e),onPointerDown:e=>ke(e,n.name),onClick:e=>e.stopPropagation(),onDblClick:e=>{e.stopPropagation(),T({...w,[n.name]:140})}})]},n.name)})]}),W===0&&j.matched===0&&U?u(`p`,{class:h.empty,children:t(`sheet.noMatches`)}):W===0&&z.rows===0?u(`p`,{class:h.empty,children:t(`sheet.empty`)}):null,u(`div`,{class:h.rows,style:{top:`${(Ae+1)*28}px`},children:je.map(e=>{let t=J(e),n=Ee(e);return u(`div`,{class:h.row,role:`row`,"aria-rowindex":e+2,"data-odd":e%2==1?`true`:void 0,"data-loading":t?void 0:`true`,style:{width:`${G.total}px`},children:[u(`div`,{class:h.rowNumber,role:`rowheader`,"aria-colindex":1,title:n===void 0?void 0:String(n),children:n??``}),$.map(n=>{let r=O.row===e&&O.col===n,i=t?.[n];return u(`div`,{class:h.cell,role:`gridcell`,"aria-colindex":n+2,"data-r":e,"data-c":n,"data-null":t&&i===null?`true`:void 0,"data-number":typeof i==`number`?`true`:void 0,"data-active":r?`true`:void 0,tabIndex:r?0:-1,style:{left:`${G.starts[n]}px`,width:`${Me(n)}px`},onFocus:()=>k({row:e,col:n}),onMouseDown:()=>k({row:e,col:n}),title:t?p(i):void 0,children:t?p(i):``},n)})]},e)})})]})}),U||b.sort?u(`span`,{class:`sr-only`,"aria-live":`polite`,children:(b.sort?b.sort.column:``)+(U?` ${b.filter?.text}`:``)}):null]})}function v(e){let[r,i]=o(),[a,l]=o(),[d,ee]=o(0);return n(()=>{let t=!0,n;i(void 0),l(void 0);let r=()=>c.artifactDataset(e.artifactId).then(e=>{t&&(e.dataset?i(e.dataset):n=setTimeout(r,2e3))},e=>{t&&l(e instanceof Error?e.message:String(e))});return r(),()=>{t=!1,clearTimeout(n)}},[e.artifactId,d]),a?u(`div`,{class:h.state,role:`status`,children:[u(`p`,{children:t(`sheet.error`)}),u(`p`,{class:h.muted,children:a}),u(`button`,{type:`button`,class:h.button,onClick:()=>ee(e=>e+1),children:t(`artifact.retry`)})]}):r?u(_,{datasetId:r.id,name:e.name,downloadHref:s(e.artifactId)}):u(`div`,{class:h.state,"aria-busy":`true`,children:t(`sheet.preparing`)})}function y(e){return u(_,{datasetId:e.dataset.id,name:e.dataset.name,...e.original?{downloadHref:c.datasetDownloadUrl(e.dataset.id)}:{}})}export{v as ArtifactSpreadsheet,y as DatasetSpreadsheet,_ as SpreadsheetView};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{T as e,b as t,y as n}from"./i18n-
|
|
1
|
+
import{T as e,b as t,y as n}from"./i18n-BZax1Psk.js";import{E as r}from"./app-D95B_PAO.js";import{t as i}from"./jsxRuntime-C-CM9h-f.js";import{S as a,c as o}from"./index-Bfl4EFzp.js";import{isLiveTask as s,leaveTasks as c,loadTasks as l,outputState as u,selectTask as d,selectedTask as f,stopTask as p,stopping as m,t as h,tasksState as g}from"./tasks-CwT_L2cD.js";var _={tab:`_tab_ro3y1_1`,detail:`_detail_ro3y1_2`,lead:`_lead_ro3y1_9`,muted:`_muted_ro3y1_10`,note:`_note_ro3y1_11`,error:`_error_ro3y1_18`,link:`_link_ro3y1_24`,list:`_list_ro3y1_32`,row:`_row_ro3y1_41`,rowTop:`_rowTop_ro3y1_58`,titleRow:`_titleRow_ro3y1_59`,detailHead:`_detailHead_ro3y1_60`,label:`_label_ro3y1_67`,meta:`_meta_ro3y1_75`,status:`_status_ro3y1_82`,back:`_back_ro3y1_108`,stop:`_stop_ro3y1_109`,detailTitle:`_detailTitle_ro3y1_135`,facts:`_facts_ro3y1_144`},v=(e,t)=>e.startedAt?Math.max(0,(e.endedAt??t)-e.startedAt):void 0;function y({task:e}){return i(`span`,{class:_.status,"data-status":e.status,children:h(`status.${e.status}`)})}function b(e){if(e.errorCode===`timeout`)return h(`timeout`);if(e.status===`cancelled`&&e.abortOrigin)return h(`stoppedBy`,{who:h(`who.${e.abortOrigin}`)});if(e.status===`lost`)return h(`lostHint`)}function x({task:e,now:t}){let n=v(e,t);return i(`li`,{children:i(`button`,{type:`button`,class:_.row,onClick:()=>d(e.id),children:[i(`span`,{class:_.rowTop,children:[i(`span`,{class:_.label,title:e.label,children:e.label}),i(y,{task:e})]}),i(`span`,{class:_.meta,children:[i(`span`,{children:h(`kind.${e.kind}`)}),n===void 0?null:i(`span`,{children:o(n)}),e.kind===`shell`?i(`span`,{children:h(`bytes`,{size:Math.max(1,Math.round(e.bytes/1024))})}):null]})]})})}function S({task:t,now:n}){let r=u.value,c=m.value.has(t.id)||t.status===`stopping`,l=s(t),f=b(t),g=v(t,n);return i(`div`,{class:_.detail,children:[i(`div`,{class:_.detailHead,children:[i(`button`,{type:`button`,class:_.back,onClick:()=>d(void 0),children:[i(`span`,{"aria-hidden":`true`,children:`←`}),h(`back`)]}),t.kind===`shell`&&l?i(`button`,{type:`button`,class:_.stop,disabled:c,onClick:()=>void p(t.id),children:h(c?`stopping`:`stop`)}):null]}),i(`div`,{class:_.titleRow,children:[i(`h3`,{class:_.detailTitle,children:t.label}),i(y,{task:t})]}),i(`dl`,{class:_.facts,children:[t.command?i(e,{children:[i(`dt`,{children:h(`command`)}),i(`dd`,{children:i(`code`,{children:t.command})})]}):null,t.kind===`shell`&&t.cwd?i(e,{children:[i(`dt`,{children:h(`directory`)}),i(`dd`,{children:i(`code`,{children:t.cwd})})]}):null,g===void 0?null:i(e,{children:[i(`dt`,{children:h(`time`)}),i(`dd`,{children:o(g)})]})]}),f?i(`p`,{class:_.note,children:f}):null,t.kind===`subagent`?i(`p`,{class:_.note,children:h(`subagentHint`)}):null,t.kind===`shell`?i(e,{children:[r?.error?i(`p`,{class:_.error,children:r.error}):null,r?.loading?i(`p`,{class:_.muted,children:h(`loading`)}):null,r&&!r.loading&&!r.text&&!l?i(`p`,{class:_.muted,children:h(`noOutput`)}):i(a,{block:{kind:`terminal`,output:r?.text??``,...t.command?{command:t.command}:{},...t.exitCode!==void 0&&!l?{exitCode:t.exitCode}:{},...t.truncated||r?.trimmed?{truncated:!0}:{}},live:l}),r?.trimmed?i(`p`,{class:_.muted,children:h(`outputTrimmed`)}):null,t.truncated?i(`p`,{class:_.muted,children:h(`outputCut`)}):null]}):null]})}function C(){let e=r.value,a=g.value,[o,u]=n(Date.now()),d=f.value?a.items.find(e=>e.id===f.value):void 0;t(()=>{e&&a.sessionId!==e&&l(e)},[e,a.sessionId]),t(()=>c,[]);let p=a.items.some(s);return t(()=>{if(!p)return;let e=setInterval(()=>u(Date.now()),1e3);return()=>clearInterval(e)},[p]),d?i(S,{task:d,now:o}):i(`div`,{class:_.tab,children:[i(`p`,{class:_.lead,children:h(`lead`)}),a.error?i(`p`,{class:_.error,children:[h(`loadFailed`),` `,i(`button`,{type:`button`,class:_.link,onClick:()=>e&&void l(e),children:h(`retry`)})]}):null,a.loading&&!a.items.length?i(`p`,{class:_.muted,children:h(`loading`)}):null,!a.loading&&!a.error&&!a.items.length?i(`p`,{class:_.muted,children:h(`empty`)}):null,i(`ul`,{class:_.list,"aria-label":h(`title`),children:a.items.map(e=>i(x,{task:e,now:o},e.id))})]})}export{C as TasksTab};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{T as e,a as t,b as n,u as r,y as i}from"./i18n-BZax1Psk.js";import{A as a,E as o}from"./app-D95B_PAO.js";import{t as s}from"./jsxRuntime-C-CM9h-f.js";import{c,d as l,l as u,u as d}from"./index-Bfl4EFzp.js";var f={tab:`_tab_1eaeu_1`,run:`_run_1eaeu_8`,runHead:`_runHead_1eaeu_16`,status:`_status_1eaeu_27`,runId:`_runId_1eaeu_47`,mono:`_mono_1eaeu_48`,duration:`_duration_1eaeu_53`,table:`_table_1eaeu_58`,num:`_num_1eaeu_88`,colTime:`_colTime_1eaeu_93`,colTurn:`_colTurn_1eaeu_97`,colType:`_colType_1eaeu_101`,colDuration:`_colDuration_1eaeu_105`,summary:`_summary_1eaeu_109`,empty:`_empty_1eaeu_115`,error:`_error_1eaeu_116`,more:`_more_1eaeu_125`,viewToggle:`_viewToggle_1eaeu_137`,viewButton:`_viewButton_1eaeu_146`,timeline:`_timeline_1eaeu_161`,chartFigure:`_chartFigure_1eaeu_169`,chartTitle:`_chartTitle_1eaeu_173`,chart:`_chart_1eaeu_169`,chartGrid:`_chartGrid_1eaeu_187`,laneLabel:`_laneLabel_1eaeu_193`,grid:`_grid_1eaeu_198`,axis:`_axis_1eaeu_203`,tick:`_tick_1eaeu_208`,axisLabel:`_axisLabel_1eaeu_214`,barError:`_barError_1eaeu_220`,legend:`_legend_1eaeu_225`,swatch:`_swatch_1eaeu_242`,toolBars:`_toolBars_1eaeu_248`,toolName:`_toolName_1eaeu_265`,toolTrack:`_toolTrack_1eaeu_272`,toolFill:`_toolFill_1eaeu_279`},p={model:`var(--accent)`,tool:`var(--ok)`,question:`var(--warn)`,approval:`var(--danger)`},m={model:`trajectory.lane.model`,tool:`trajectory.lane.tool`,user:`trajectory.lane.user`},h=[{kind:`model`,key:`trajectory.legend.model`},{kind:`tool`,key:`trajectory.legend.tool`},{kind:`question`,key:`trajectory.legend.question`},{kind:`approval`,key:`trajectory.legend.approval`}],g=e=>{let t=Math.max(0,Math.round(e/1e3)),n=Math.floor(t/3600),r=Math.floor(t%3600/60),i=t%60,a=`${r}:${String(i).padStart(2,`0`)}`;return n?`${n}:${String(r).padStart(2,`0`)}:${String(i).padStart(2,`0`)}`:a},_=e=>e>=1e3?`${Math.round(e/1e3)}k`:String(e),v=[1e3,2e3,5e3,1e4,15e3,3e4,6e4,12e4,3e5,6e5,18e5];function y(e){let t=e/8,n=v.find(e=>e>=t)??v[v.length-1]??6e4,r=[];for(let t=0;t<=e+1;t+=n)r.push(t);return r}var b=1e3,x={top:16,right:18,bottom:36,left:122},S=30,C=14;function w({timeline:e}){let n=Math.max(1,e.endAt-e.startAt),r=b-x.left-x.right,i=x.top+e.lanes.length*S+x.bottom,a=i-x.bottom,o=t=>x.left+(t-e.startAt)/n*r;return s(`svg`,{class:f.chart,viewBox:`0 0 ${b} ${i}`,role:`img`,"aria-label":t(`trajectory.waterfall`),children:[e.lanes.map((e,n)=>{let r=x.top+n*S;return s(`g`,{children:[s(`text`,{x:x.left-12,y:r+S/2,class:f.laneLabel,"dominant-baseline":`middle`,children:t(m[e.id])}),s(`line`,{x1:x.left,x2:b-x.right,y1:r+S/2,y2:r+S/2,class:f.grid}),e.intervals.map((e,t)=>{let n=o(e.start),i=Math.max(1.5,o(e.end)-n);return s(`rect`,{x:n,y:r+8,width:i,height:C,rx:2.5,class:e.error?f.barError:void 0,style:{fill:p[e.kind]},children:s(`title`,{children:`${e.label} · ${c(e.end-e.start)}`})},t)})]},e.id)}),s(`line`,{x1:x.left,x2:b-x.right,y1:a,y2:a,class:f.axis}),y(n).map(e=>{let t=x.left+e/n*r;return s(`g`,{children:[s(`line`,{x1:t,x2:t,y1:a,y2:a+4,class:f.axis}),s(`text`,{x:t,y:a+17,class:f.tick,"text-anchor":`middle`,children:g(e)})]},e)}),s(`text`,{x:x.left+r/2,y:i-4,class:f.axisLabel,children:t(`trajectory.axis.time`)})]})}function T({values:e,color:t,label:n,xLabel:r}){let i={top:18,right:12,bottom:30,left:54},a=Math.max(1,...e),o=Math.max(1,e.length-1),c=e=>i.left+e/o*(460-i.left-i.right),l=e=>i.top+(1-e/a)*(190-i.top-i.bottom),u=e.map((e,t)=>`${t?`L`:`M`}${c(t).toFixed(1)},${l(e).toFixed(1)}`).join(` `),d=`${u} L${c(e.length-1).toFixed(1)},${l(0).toFixed(1)} L${c(0).toFixed(1)},${l(0).toFixed(1)} Z`;return s(`figure`,{class:f.chartFigure,children:[s(`figcaption`,{class:f.chartTitle,children:n}),s(`svg`,{class:f.chart,viewBox:`0 0 460 190`,role:`img`,"aria-label":n,children:[s(`path`,{d,style:{fill:t},opacity:.14}),s(`path`,{d:u,style:{stroke:t},fill:`none`,"stroke-width":2}),s(`line`,{x1:i.left,x2:460-i.right,y1:l(0),y2:l(0),class:f.axis}),s(`line`,{x1:i.left,x2:i.left,y1:i.top,y2:l(0),class:f.axis}),s(`text`,{x:i.left-8,y:l(a)+4,class:f.tick,"text-anchor":`end`,children:_(a)}),s(`text`,{x:i.left-8,y:l(0),class:f.tick,"text-anchor":`end`,children:`0`}),s(`text`,{x:(i.left+460-i.right)/2,y:186,class:f.axisLabel,children:r})]})]})}function E({tools:e}){let t=Math.max(1,...e.map(e=>e.durationMs));return s(`ul`,{class:f.toolBars,children:e.map(e=>s(`li`,{children:[s(`span`,{class:f.toolName,title:e.name,children:e.name}),s(`span`,{class:f.toolTrack,children:s(`span`,{class:f.toolFill,style:{width:`${e.durationMs/t*100}%`,background:e.error?`var(--danger)`:`var(--ok)`}})}),s(`span`,{class:`${f.num} ${f.mono}`,children:c(e.durationMs)})]},e.name))})}function D({timeline:e}){let n=e.turns;return s(`div`,{class:f.timeline,children:[s(`figure`,{class:f.chartFigure,children:[s(`figcaption`,{class:f.chartTitle,children:t(`trajectory.waterfall`)}),s(w,{timeline:e})]}),s(`ul`,{class:f.legend,children:h.map(({kind:e,key:n})=>s(`li`,{children:[s(`span`,{class:f.swatch,style:{background:p[e]}}),t(n)]},e))}),n.length?s(`div`,{class:f.chartGrid,children:[s(T,{values:n.map(e=>e.input),color:`var(--accent)`,label:t(`trajectory.tokensIn`),xLabel:t(`trajectory.axis.turn`)}),s(T,{values:n.map(e=>e.output),color:`var(--warn)`,label:t(`trajectory.tokensOut`),xLabel:t(`trajectory.axis.turn`)})]}):null,e.tools.length?s(`figure`,{class:f.chartFigure,children:[s(`figcaption`,{class:f.chartTitle,children:t(`trajectory.toolDuration`)}),s(E,{tools:e.tools})]}):null]})}var O=e=>e?new Date(e).toLocaleTimeString(void 0,{hour12:!1}):`—`;function k({run:e,open:n}){return s(`details`,{class:f.run,open:n,children:[s(`summary`,{class:f.runHead,children:[s(`span`,{class:f.status,"data-status":e.status,children:t(`trajectory.status.${e.status}`)}),s(`span`,{class:f.runId,title:e.runId,children:e.runId.slice(0,8)}),s(`span`,{children:O(e.startedAt)}),s(`span`,{children:t(e.turns===1?`stats.turn`:`stats.turns`,{count:e.turns})}),s(`span`,{class:f.duration,children:c(e.durationMs)})]}),s(`table`,{class:f.table,children:[s(`thead`,{children:s(`tr`,{children:[s(`th`,{scope:`col`,class:f.colTime,children:t(`trajectory.time`)}),s(`th`,{scope:`col`,class:f.colTurn,children:t(`trajectory.turn`)}),s(`th`,{scope:`col`,class:f.colType,children:t(`trajectory.type`)}),s(`th`,{scope:`col`,children:t(`trajectory.summary`)}),s(`th`,{scope:`col`,class:`${f.num} ${f.colDuration}`,children:t(`trajectory.duration`)})]})}),s(`tbody`,{children:e.rows.map(e=>s(`tr`,{"data-error":e.error?`true`:void 0,children:[s(`td`,{class:f.mono,children:O(e.at)}),s(`td`,{class:f.num,children:e.turn??``}),s(`td`,{class:`${f.mono} ${f.summary}`,title:e.type,children:e.type}),s(`td`,{class:f.summary,title:e.summary,children:e.summary}),s(`td`,{class:`${f.num} ${f.mono}`,children:e.durationMs===void 0?``:c(e.durationMs)})]},e.eventId))})]})]})}function A(){let c=o.value,[p,m]=i(!1),[h,g]=i(`table`);n(()=>{u.sync()},[c,a.value]);let _=u.state.value,v=r(()=>l(u.state.value.items)),y=r(()=>d(u.state.value.items)),b=v.value,x=p?b:b.slice(-20);return s(`section`,{class:f.tab,"aria-label":t(`header.trajectory`),children:[b.length?s(`div`,{class:f.viewToggle,role:`group`,"aria-label":t(`trajectory.view`),children:[s(`button`,{type:`button`,class:f.viewButton,"aria-pressed":h===`table`,"data-active":h===`table`?`true`:void 0,onClick:()=>g(`table`),children:t(`trajectory.view.table`)}),s(`button`,{type:`button`,class:f.viewButton,"aria-pressed":h===`timeline`,"data-active":h===`timeline`?`true`:void 0,onClick:()=>g(`timeline`),children:t(`trajectory.view.timeline`)})]}):null,_.error?s(`p`,{class:f.error,children:_.error}):null,b.length?null:s(`p`,{class:f.empty,children:_.loading||!_.loaded?t(`common.loading`):t(`trajectory.empty`)}),h===`timeline`&&y.value?s(D,{timeline:y.value}):s(e,{children:[x.length<b.length?s(`button`,{type:`button`,class:f.more,onClick:()=>m(!0),children:t(`trajectory.earlier`,{count:b.length-x.length})}):null,x.map((e,t)=>s(k,{run:e,open:t===x.length-1},e.runId))]})]})}export{A as TrajectoryTab};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
._tab_1eaeu_1{flex:1;min-height:0;padding:16px 24px 24px;overflow:auto}._run_1eaeu_8{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);max-width:1000px;margin:0 auto 10px}._runHead_1eaeu_16{color:var(--muted);cursor:pointer;flex-wrap:wrap;align-items:center;gap:12px;padding:8px 12px;font-size:13px;display:flex}._status_1eaeu_27{background:var(--hover);color:var(--text);border-radius:999px;padding:1px 8px;font-size:12px}._status_1eaeu_27[data-status=completed]{color:var(--ok)}._status_1eaeu_27[data-status=failed]{color:var(--danger)}._status_1eaeu_27[data-status=running]{color:var(--accent)}._runId_1eaeu_47,._mono_1eaeu_48{font-family:var(--mono);font-size:12px}._duration_1eaeu_53{font-family:var(--mono);margin-left:auto}._table_1eaeu_58{table-layout:fixed;border-collapse:collapse;border-top:1px solid var(--border);width:100%;font-size:13px}._table_1eaeu_58 th,._table_1eaeu_58 td{border-bottom:1px solid var(--border);text-align:left;vertical-align:top;padding:4px 10px}._table_1eaeu_58 th{color:var(--faint);font-size:12px;font-weight:500}._table_1eaeu_58 tr:last-child td{border-bottom:0}._table_1eaeu_58 tr[data-error=true] td{color:var(--danger)}._num_1eaeu_88{white-space:nowrap;text-align:right!important}._colTime_1eaeu_93{width:84px}._colTurn_1eaeu_97{width:52px}._colType_1eaeu_101{width:170px}._colDuration_1eaeu_105{width:80px}._summary_1eaeu_109{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}._empty_1eaeu_115,._error_1eaeu_116{color:var(--muted);text-align:center}._error_1eaeu_116{color:var(--danger)}._more_1eaeu_125{border:1px solid var(--border);color:var(--muted);background:0 0;border-radius:999px;margin:0 auto 10px;padding:4px 12px;font-size:12.5px;display:block}._viewToggle_1eaeu_137{border:1px solid var(--border);border-radius:999px;width:-moz-fit-content;width:fit-content;margin:0 auto 12px;display:flex;overflow:hidden}._viewButton_1eaeu_146{color:var(--muted);cursor:pointer;background:0 0;border:0;padding:5px 14px;font-size:12.5px}._viewButton_1eaeu_146[data-active=true]{background:var(--accent-soft);color:var(--text)}._timeline_1eaeu_161{flex-direction:column;gap:18px;max-width:1000px;margin:0 auto;display:flex}._chartFigure_1eaeu_169{margin:0}._chartTitle_1eaeu_173{color:var(--text);margin-bottom:6px;font-size:13px;font-weight:600}._chart_1eaeu_169{width:100%;height:auto;display:block;overflow:visible}._chartGrid_1eaeu_187{grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:18px;display:grid}._laneLabel_1eaeu_193{fill:var(--muted);font-size:12px}._grid_1eaeu_198{stroke:var(--border);stroke-width:1px}._axis_1eaeu_203{stroke:var(--border-strong);stroke-width:1px}._tick_1eaeu_208{fill:var(--faint);font-family:var(--mono);font-size:10px}._axisLabel_1eaeu_214{fill:var(--faint);text-anchor:middle;font-size:11px}._barError_1eaeu_220{stroke:var(--danger);stroke-width:1.5px}._legend_1eaeu_225{color:var(--muted);flex-wrap:wrap;gap:8px 18px;margin:0;padding:0;font-size:12px;list-style:none;display:flex}._legend_1eaeu_225 li{align-items:center;gap:6px;display:inline-flex}._swatch_1eaeu_242{border-radius:3px;width:12px;height:12px}._toolBars_1eaeu_248{flex-direction:column;gap:4px;margin:0;padding:0;list-style:none;display:flex}._toolBars_1eaeu_248 li{grid-template-columns:150px 1fr 72px;align-items:center;gap:10px;font-size:12.5px;display:grid}._toolName_1eaeu_265{text-overflow:ellipsis;white-space:nowrap;font-family:var(--mono);overflow:hidden}._toolTrack_1eaeu_272{background:var(--hover);border-radius:999px;height:10px;overflow:hidden}._toolFill_1eaeu_279{border-radius:999px;height:100%;display:block}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{c as e,l as t}from"./i18n-
|
|
1
|
+
import{c as e,l as t}from"./i18n-BZax1Psk.js";var n=[`auto`,`none`,`concise`,`detailed`],r=[`low`,`medium`,`high`],i=[`text`,`json_object`,`json_schema`];function a(e,t=``){return{scope:e,name:`New agent`,description:``,instructions:``,model:t,effort:``,summary:``,verbosity:``,format:`text`}}var o=e=>({effort:e.reasoning?.effort??``,summary:e.reasoning?.summary??``,verbosity:e.text?.verbosity??``,format:e.text?.format?.type??`text`});function s(e,t,n){return{scope:t,name:e.name,description:e.description,instructions:e.instructions,model:n,...o(e)}}function c(e){return{scope:e.scope,id:e.id,name:e.name,description:e.description,instructions:e.instructions,model:e.model,...o(e)}}function l(e,t){return{...e,name:t.name,description:t.description,instructions:t.instructions,...o(t)}}var u={known:!1,reasoning:!0,effortLevels:[`low`,`medium`,`high`],summary:!0,verbosity:!0,textFormats:[...i]};function d(e,t){return e?.find(e=>e.reference===t||e.id===t)?.capabilities??u}function f(e,t){let n={...e};return t.reasoning?n.effort&&!t.effortLevels.includes(n.effort)&&(n.effort=t.defaultEffort??``):(n.effort=``,n.summary=``),t.summary||(n.summary=``),t.textFormats.includes(n.format)||(n.format=`text`),t.verbosity||(n.verbosity=``),n}function p(e){let t={...e.effort?{effort:e.effort}:{},...e.summary?{summary:e.summary}:{}};return{name:e.name.trim(),...e.description.trim()?{description:e.description.trim()}:{},...e.instructions.trim()?{instructions:e.instructions.trim()}:{},model:e.model.trim(),...Object.keys(t).length?{reasoning:t}:{},text:{format:{type:e.format},...e.verbosity?{verbosity:e.verbosity}:{}}}}var m=e=>JSON.stringify({...p(e),scope:e.scope});function h(e){let t=e.trim();if(!t)return`required`;if(t.length>80)return`tooLong`;if(!/[\p{L}\p{N}]/u.test(t))return`noLetters`}function g(e,t){return h(e.name)||!e.model.trim()||e.instructions.length>24e3||e.description.length>300?!1:!t||m(e)!==m(t)}function _(e,t){let n={...t.workspace&&e.scope===`project`?{workspace:t.workspace}:{},scope:e.scope,...p(e)},r=JSON.stringify(n,null,2),i=e.id?`-X PUT ${t.origin}/api/agents/${encodeURIComponent(e.id)}`:`-X POST ${t.origin}/api/agents`,a=``;try{let e=new URL(t.origin);a=e.port||(e.protocol===`https:`?`443`:`80`)}catch{}return[`curl ${i} \\`,` -H "Content-Type: application/json" \\`,` -H "Origin: ${t.origin}" \\`,` -H "Cookie: alisio_session_${a||`<port>`}=<session cookie>" \\`,` -d '${r.replace(/'/g,`'\\''`)}'`].join(`
|
|
2
2
|
`)}function v(e){let t=[],n=/("(?:[^"\\]|\\.)*")(\s*:)?|(-?\b\d+(?:\.\d+)?\b)|\b(true|false|null)\b|(\bcurl\b|-X|-H|-d)\b|([{}[\],])/g,r=0;for(let i of e.matchAll(n)){let n=i.index??0;n>r&&t.push({kind:`plain`,text:e.slice(r,n)}),i[1]?(t.push({kind:i[2]?`key`:`string`,text:i[1]}),i[2]&&t.push({kind:`punct`,text:i[2]})):i[3]?t.push({kind:`number`,text:i[3]}):i[4]?t.push({kind:`keyword`,text:i[4]}):i[5]?t.push({kind:`command`,text:i[5]}):i[6]&&t.push({kind:`punct`,text:i[6]}),r=n+i[0].length}return r<e.length&&t.push({kind:`plain`,text:e.slice(r)}),t}function y(e){return[{id:`define`,done:e.saved},{id:`runtime`,done:e.workspace},{id:`session`,done:e.saved&&e.sessions.length>0},{id:`events`,done:e.saved&&e.sessions.some(e=>!!e.title)}]}var b=`alisio.agents.gettingStarted`,x=()=>e(b)===`dismissed`,S=()=>t(b,`dismissed`);function C(e,t){let n=t.toLowerCase().split(/\s+/).filter(Boolean);return n.length?e.filter(e=>{let t=`${e.id} ${e.name} ${e.description}`.toLowerCase();return n.every(e=>t.includes(e))}):[...e]}function w(e,t){if(e.source!==`user`)return;let n=t.filter(t=>t.id===e.id);return n.find(e=>e.scope===`project`)?.scope??n[0]?.scope}function T(e,t=36){if(e.length<=t)return e;let n=e.includes(`\\`)&&!e.includes(`/`)?`\\`:`/`,r=e.split(n).filter(Boolean),i=``;for(let e=r.length-1;e>=0;e--){let a=i?`${r[e]}${n}${i}`:r[e];if(a.length+2>t)break;i=a}return i?`…${n}${i}`:`…${e.slice(-(t-1))}`}function E(e,t,n=36){if(!t)return``;if(e===`global`){let e=t.includes(`\\`)&&!t.includes(`/`)?`\\`:`/`;return`~${e}.agents${e}agents`}return T(t,n)}var D={shell:`_shell_eya8z_4`,maximized:`_maximized_eya8z_13`,scroll:`_scroll_eya8z_20`,breadcrumb:`_breadcrumb_eya8z_25`,crumbLink:`_crumbLink_eya8z_34`,crumbCurrent:`_crumbCurrent_eya8z_47`,listHead:`_listHead_eya8z_54`,templateCard:`_templateCard_eya8z_61`,templateName:`_templateName_eya8z_78`,templateText:`_templateText_eya8z_83`,rowButton:`_rowButton_eya8z_89`,columns:`_columns_eya8z_98`,column:`_column_eya8z_98`,section:`_section_eya8z_111`,sectionHead:`_sectionHead_eya8z_117`,sectionBody:`_sectionBody_eya8z_130`,field:`_field_eya8z_136`,fieldLabel:`_fieldLabel_eya8z_142`,control:`_control_eya8z_149`,settingsGrid:`_settingsGrid_eya8z_180`,fieldHint:`_fieldHint_eya8z_186`,fieldError:`_fieldError_eya8z_191`,saveButton:`_saveButton_eya8z_196`,assist:`_assist_eya8z_201`,assistTitle:`_assistTitle_eya8z_210`,assistActions:`_assistActions_eya8z_218`,code:`_code_eya8z_223`,codeHead:`_codeHead_eya8z_231`,codeBody:`_codeBody_eya8z_242`,codeLine:`_codeLine_eya8z_252`,lineNo:`_lineNo_eya8z_257`,tokKey:`_tok-key_eya8z_266`,tokString:`_tok-string_eya8z_270`,tokNumber:`_tok-number_eya8z_274`,tokKeyword:`_tok-keyword_eya8z_275`,tokCommand:`_tok-command_eya8z_279`,tokPunct:`_tok-punct_eya8z_284`,stepper:`_stepper_eya8z_288`,stepperHead:`_stepperHead_eya8z_296`,steps:`_steps_eya8z_304`,step:`_step_eya8z_288`,stepNode:`_stepNode_eya8z_329`,stepTitle:`_stepTitle_eya8z_347`,stepText:`_stepText_eya8z_353`,overlay:`_overlay_eya8z_359`,overlayCard:`_overlayCard_eya8z_369`,overlayTitle:`_overlayTitle_eya8z_381`,spinner:`_spinner_eya8z_386`,spin:`_spin_eya8z_386`,progress:`_progress_eya8z_396`,progressBar:`_progressBar_eya8z_403`,slide:`_slide_eya8z_1`,overlayActions:`_overlayActions_eya8z_436`,picker:`_picker_eya8z_442`,pickerHead:`_pickerHead_eya8z_450`,pickerList:`_pickerList_eya8z_457`,pickerItem:`_pickerItem_eya8z_464`,pickerTitle:`_pickerTitle_eya8z_484`};export{v as S,x as _,_ as a,w as b,S as c,f as d,c as f,p as g,m as h,r as i,a as l,s as m,n,g as o,l as p,i as r,d as s,D as t,C as u,y as v,E as x,h as y};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/tasks-CwT_L2cD.js","assets/i18n-BZax1Psk.js","assets/preload-helper-B3nfOi5I.js","assets/goal-ChMqHxdJ.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{a as e,c as t,d as n,h as r,l as i,p as a,s as o}from"./i18n-BZax1Psk.js";import{t as s}from"./preload-helper-B3nfOi5I.js";var c=class extends Error{status;code;details;constructor(e,t,n,r){super(n),this.status=e,this.code=t,this.details=r}},l=()=>typeof crypto<`u`&&`randomUUID`in crypto?crypto.randomUUID():`${Date.now().toString(36)}${Math.random().toString(36).slice(2)}`,u=class{options;fetcher;constructor(e={}){this.options=e,this.fetcher=e.fetch??((e,t)=>fetch(e,t))}async request(e,t,n,r={}){let i={"X-Request-Id":(this.options.requestId??l)().replace(/[^A-Za-z0-9_-]/g,``),Accept:`application/json`};e!==`GET`&&(i[`Content-Type`]=`application/json`);let a;try{a=await this.fetcher(t,{method:e,headers:i,credentials:`same-origin`,...e===`GET`?{}:{body:JSON.stringify(n??{})},...r.signal?{signal:r.signal}:{}})}catch(e){throw new c(0,`network`,e instanceof Error?e.message:`Network error`)}a.status===401&&this.options.onUnauthorized?.();let o=await a.text();if(!a.ok){let e;try{e=JSON.parse(o)}catch{}throw new c(a.status,e?.error?.code??`internal`,e?.error?.message??`HTTP ${a.status}`,e?.error?.details)}return o?JSON.parse(o):void 0}health=()=>this.request(`GET`,`/api/health`);workspaces=(e=`false`)=>this.request(`GET`,`/api/workspaces?archived=${e}`);addWorkspace=e=>this.request(`POST`,`/api/workspaces`,{path:e});patchWorkspace=(e,t)=>this.request(`PATCH`,`/api/workspaces/${d(e)}`,t);trustWorkspace=(e,t)=>this.request(`POST`,`/api/workspaces/${d(e)}/trust`,{trusted:t,confirmed:!0});pickFolder=e=>this.request(`POST`,`/api/workspaces/pick`,e?{start:e}:{});listDirs=(e,t=!1)=>this.request(`GET`,`/api/fs/dirs?${e===void 0?``:`path=${encodeURIComponent(e)}&`}hidden=${t}`);sessions=(e={})=>this.request(`GET`,`/api/sessions?archived=${e.archived??`false`}&limit=${e.limit??200}`);createSession=e=>this.request(`POST`,`/api/sessions`,e);session=e=>this.request(`GET`,`/api/sessions/${d(e)}`);patchSession=(e,t)=>this.request(`PATCH`,`/api/sessions/${d(e)}`,t);messages=(e,t,n=50)=>this.request(`GET`,`/api/sessions/${d(e)}/messages?before=${t}&limit=${n}`);prompt=(e,t)=>this.request(`POST`,`/api/sessions/${d(e)}/prompts`,t);cancel=e=>this.request(`POST`,`/api/sessions/${d(e)}/cancel`,{});commands=e=>this.request(`GET`,`/api/commands${e?`?session=${d(e)}`:``}`);command=(e,t)=>this.request(`POST`,`/api/sessions/${d(e)}/commands`,t);sideQuestions=e=>this.request(`GET`,`/api/sessions/${d(e)}/btw`);askSideQuestion=(e,t,n)=>this.request(`POST`,`/api/sessions/${d(e)}/btw`,{question:t},n?{signal:n}:{});cancelSideQuestions=e=>this.request(`POST`,`/api/sessions/${d(e)}/btw/cancel`,{});models=e=>this.request(`GET`,`/api/sessions/${d(e)}/models`);context=e=>this.request(`GET`,`/api/sessions/${d(e)}/context`);approvals=e=>this.request(`GET`,`/api/approvals?session=${d(e)}`);decide=(e,t)=>this.request(`POST`,`/api/approvals/${d(e)}`,{decision:t});answer=(e,t)=>this.request(`POST`,`/api/interactions/${d(e)}`,{answer:t});tasks=e=>this.request(`GET`,`/api/sessions/${d(e)}/tasks`);taskOutput=(e,t,n)=>this.request(`GET`,`/api/sessions/${d(e)}/tasks/${d(t)}/output?offset=${n}`);stopTask=(e,t)=>this.request(`POST`,`/api/sessions/${d(e)}/tasks/${d(t)}/stop`,{});exportUrl=e=>`/api/sessions/${d(e)}/export`;artifacts=e=>this.request(`GET`,`/api/sessions/${d(e)}/artifacts?limit=200`);artifact=e=>this.request(`GET`,`/api/artifacts/${d(e)}`);artifactView=e=>this.request(`POST`,`/api/artifacts/${d(e)}/view`,{});exportArtifact=(e,t,n=!1)=>this.request(`POST`,`/api/artifacts/${d(e)}/export`,{target:t,...n?{overwrite:!0}:{}});rerunArtifact=e=>this.request(`POST`,`/api/artifacts/${d(e)}/rerun`,{});deleteArtifact=e=>this.request(`DELETE`,`/api/artifacts/${d(e)}`);artifactFileUrl=(e,t)=>`/api/artifacts/${d(e)}/files/${t.split(`/`).map(d).join(`/`)}`;artifactSourcesUrl=e=>`/api/artifacts/${d(e)}/sources`;async artifactText(e,t){return(await this.raw(this.artifactFileUrl(e,t))).text()}datasets=e=>this.request(`GET`,`/api/sessions/${d(e)}/datasets`);dataset=e=>this.request(`GET`,`/api/datasets/${d(e)}`);datasetRows=(e,t,n)=>{let r=new URLSearchParams;for(let[e,n]of Object.entries(t))n!==void 0&&n!==``&&r.set(e,String(n));return this.request(`GET`,`/api/datasets/${d(e)}/rows?${r}`,void 0,n?{signal:n}:{})};datasetDownloadUrl=e=>`/api/datasets/${d(e)}/download`;artifactDataset=e=>this.request(`POST`,`/api/artifacts/${d(e)}/dataset`,{});async uploadDataset(e,t){return await(await this.raw(`/api/sessions/${d(e)}/datasets`,{method:`POST`,body:t,contentType:`application/octet-stream`,headers:{"X-File-Name":encodeURIComponent(t.name)}})).json()}capabilities=e=>this.request(`GET`,`/api/sessions/${d(e)}/capabilities`);revokeCapability=(e,t)=>this.request(`DELETE`,`/api/sessions/${d(e)}/capabilities/${d(t)}`);events=(e,t,n=1e3,r)=>this.request(`GET`,`/api/sessions/${d(e)}/events?after=${t}&limit=${n}${r?.length?`&types=${d(r.join(`,`))}`:``}`);tree=(e,t,n)=>this.request(`GET`,`/api/workspaces/${d(e)}/tree?path=${d(t)}${n?`&cursor=${d(n)}`:``}`);diff=(e,t)=>this.request(`GET`,`/api/workspaces/${d(e)}/diff?path=${d(t)}`);changes=e=>this.request(`GET`,`/api/sessions/${d(e)}/changes`);plugins=e=>this.request(`GET`,`/api/plugins?workspace=${d(e)}`);setPlugin=(e,t,n)=>this.request(`PATCH`,`/api/plugins/${d(t)}`,{workspace:e,enabled:n});skills=e=>this.request(`GET`,`/api/skills?workspace=${d(e)}`);setSkill=(e,t,n)=>this.request(`PATCH`,`/api/skills/${d(t)}`,{workspace:e,enabled:n});mcp=e=>this.request(`GET`,`/api/mcp?workspace=${d(e)}`);setMcp=(e,t,n,r=!1)=>this.request(`PATCH`,`/api/mcp/${d(t)}`,{workspace:e,enabled:n,...r?{connect:r}:{}});mcpConsent=(e,t)=>this.request(`POST`,`/api/mcp/consent`,{workspace:e,confirmed:!0,...t?{remember:t}:{}});agents=e=>this.request(`GET`,`/api/agents?workspace=${d(e)}`);changelog=(e={})=>{let t=new URLSearchParams;e.version&&t.set(`version`,e.version),e.lastSeen&&t.set(`lastSeen`,e.lastSeen);let n=t.toString();return this.request(`GET`,`/api/changelog${n?`?${n}`:``}`)};reloadWorkspace=e=>this.request(`POST`,`/api/workspaces/${d(e)}/reload`,{});agentDefinitions=e=>this.request(`GET`,`/api/agents/definitions${e?`?workspace=${d(e)}`:``}`);agentTemplates=()=>this.request(`GET`,`/api/agents/templates`);agentModels=e=>this.request(`GET`,`/api/agents/models?workspace=${d(e)}`);createAgent=e=>this.request(`POST`,`/api/agents`,e);updateAgent=(e,t)=>this.request(`PUT`,`/api/agents/${d(e)}`,t);deleteAgent=(e,t,n)=>this.request(`DELETE`,`/api/agents/${d(e)}?scope=${t}${n?`&workspace=${d(n)}`:``}`);agentDefinition=(e,t,n)=>this.request(`GET`,`/api/agents/${d(e)}?scope=${t}${n?`&workspace=${d(n)}`:``}`);draftAgent=(e,t)=>this.request(`POST`,`/api/agents/draft`,e,t?{signal:t}:{});agentSessions=e=>this.request(`GET`,`/api/sessions?agent=${d(e)}&archived=all&limit=50`);settings=e=>this.request(`GET`,`/api/settings?workspace=${d(e)}`);analysis=e=>this.request(`GET`,`/api/analysis?workspace=${d(e)}`);setSetting=(e,t,n)=>this.request(`PATCH`,`/api/settings`,{workspace:e,key:t,value:n});iconThemes=e=>this.request(`GET`,`/api/icon-themes?workspace=${d(e)}`);iconThemeManifest=e=>this.request(`GET`,`/api/icon-theme/manifest?workspace=${d(e)}`);iconThemeIconUrl=(e,t)=>`/api/icon-theme/icons/${encodeURIComponent(t)}?workspace=${d(e)}`;providers=e=>this.request(`GET`,`/api/providers${e?`?workspace=${d(e)}`:``}`);providerModels=e=>this.request(`GET`,`/api/models?workspace=${d(e)}`);saveProfile=(e,t,n)=>this.request(`PUT`,`/api/providers/${d(t)}`,{workspace:e,...n});setCredentials=(e,t)=>this.request(`PUT`,`/api/providers/${d(e)}/credentials`,t);deleteCredentials=e=>this.request(`DELETE`,`/api/providers/${d(e)}/credentials`);activateProvider=(e,t,n)=>this.request(`POST`,`/api/providers/${d(t)}/activate`,{workspace:e,model:n});fileUrl=(e,t,n=!1)=>`/api/workspaces/${d(e)}/file?path=${d(t)}${n?`&download=1`:``}`;async file(e,t){let n=await this.raw(this.fileUrl(e,t));return{contentType:n.headers.get(`Content-Type`)??`application/octet-stream`,truncated:n.headers.get(`X-Truncated`)===`true`,size:Number(n.headers.get(`X-File-Size`)??0),blob:await n.blob()}}async upload(e){return await(await this.raw(`/api/blobs`,{method:`POST`,body:e,contentType:e.type||`application/octet-stream`})).json()}async raw(e,t={}){let n={"X-Request-Id":(this.options.requestId??l)().replace(/[^A-Za-z0-9_-]/g,``),...t.headers??{}};t.contentType&&(n[`Content-Type`]=t.contentType);let r;try{r=await this.fetcher(e,{method:t.method??`GET`,headers:n,credentials:`same-origin`,...t.body?{body:t.body}:{}})}catch(e){throw new c(0,`network`,e instanceof Error?e.message:`Network error`)}if(r.status===401&&this.options.onUnauthorized?.(),!r.ok){let e;try{e=JSON.parse(await r.text())}catch{}throw new c(r.status,e?.error?.code??`internal`,e?.error?.message??`HTTP ${r.status}`,e?.error?.details)}return r}},d=encodeURIComponent,f=2,ee=e=>e.length?`/api/events?${e.map(e=>`session=${encodeURIComponent(e)}`).join(`&`)}`:`/api/events`,te=(e,t=Math.random)=>Math.round(Math.min(1e4,500*2**Math.min(e,10)*(.5+t()))),ne=class{options;source;sessions=[];key;queue=[];scheduled=!1;attempt=0;cancelRetry;stopped=!1;requestFrame;setTimer;constructor(e){this.options=e,this.requestFrame=e.requestFrame??(e=>typeof requestAnimationFrame==`function`?requestAnimationFrame(()=>e()):e()),this.setTimer=e.setTimer??((e,t)=>{let n=setTimeout(e,t);return()=>clearTimeout(n)})}subscribe(e){let t=[...new Set(e)].sort(),n=t.join(`
|
|
3
|
+
`);(n!==this.key||!this.source||this.stopped)&&(this.key=n,this.sessions=t,this.stopped=!1,this.attempt=0,this.connect())}nudge(){this.stopped||this.key===void 0||this.source&&this.source.readyState!==f||this.connect()}refresh(){this.stopped||this.key===void 0||(this.attempt=0,this.connect())}close(){this.stopped=!0,this.cancelRetry?.(),this.source?.close(),this.options.onStatus?.(`closed`)}connect(){this.cancelRetry?.(),this.cancelRetry=void 0,this.source?.close(),this.options.onStatus?.(this.attempt?`reconnecting`:`connecting`);let e=this.options.create(ee(this.sessions));this.source=e,e.onopen=()=>{this.source===e&&(this.attempt=0,this.options.onStatus?.(`open`))},e.onmessage=t=>{if(this.source!==e)return;let n;try{n=JSON.parse(t.data)}catch{return}if(n&&typeof n==`object`&&typeof n.t==`string`){if(n.t===`hello`&&n.protocolVersion!==1){this.stopped=!0,e.close(),this.options.onStatus?.(`closed`),this.options.onProtocolMismatch?.();return}this.enqueue(n),n.t===`resync`&&this.connect()}},e.onerror=()=>{if(this.source!==e||this.stopped||(this.options.onStatus?.(`reconnecting`),e.readyState!==f))return;this.options.onClosed?.();let t=te(this.attempt++,this.options.random);this.cancelRetry=this.setTimer(()=>{this.cancelRetry=void 0,this.stopped||this.connect()},t)}}enqueue(e){this.queue.push(e),!this.scheduled&&(this.scheduled=!0,this.requestFrame(()=>{this.scheduled=!1;let e=this.queue;this.queue=[],e.length&&this.options.onFrames(e)}))}};function re(e){if(typeof e==`string`)return e.trim()||void 0}function ie(e){let t=/^\s*\/([^\s/][^\s]*)(?:\s+([\s\S]*))?$/.exec(e);if(t?.[1])return{name:t[1],args:(t[2]??``).trim()}}var ae=(e,t)=>{let n=0;for(let r of t)r===e[n]&&n++;return n===e.length};function oe(e,t){let n=t.trim().toLowerCase();if(!n)return e;let r=[[],[],[],[]];for(let t of e){let e=t.name.toLowerCase(),i=e.startsWith(n)?0:t.aliases?.some(e=>e.toLowerCase().startsWith(n))?1:e.includes(n)?2:ae(n,e)?3:-1;i>=0&&r[i]?.push(t)}return r.flat()}var se={pause:`Pause the goal's automatic continuation`,resume:`Resume the paused or blocked goal`,edit:`Edit the goal's objective`,clear:`Remove the goal from this session`};function ce(e,t){let n=t.trim().toLowerCase();return!e||n.length<3||!`goal`.startsWith(n)?[]:e.actions.filter(e=>e in se).map(e=>({name:`goal ${e}`,description:se[e],source:`builtin`,surfaces:[`web`],execution:`surface`}))}function le(e,t,n){let r=oe(e,t),i=ce(n,t);if(!i.length)return r;let a=r.findIndex(e=>e.name===`goal`);return a<0?[...r,...i]:[...r.slice(0,a+1),...i,...r.slice(a+1)]}function ue(e,t,n=12){if(t.trim()||e.length<=n)return e.slice(0,n);let r=e.filter(e=>e.source!==`builtin`).slice(0,4);return[...e.filter(e=>e.source===`builtin`).slice(0,n-r.length),...r]}function de(e){return e.disabled||e.compacting}function fe(e,t,n=100){return!t.trim()||e.at(-1)===t?e:[...e,t].slice(-n)}function pe(e,t,n,r){if(!e.length)return{index:void 0,text:r};if(t===void 0){if(n===1)return{index:void 0,text:r};let t=e.length-1;return{index:t,text:e[t]}}let i=t+n;return i<0?{index:0,text:e[0]}:i>=e.length?{index:void 0,text:r}:{index:i,text:e[i]}}var me=`Usage: /btw <question>`;function he(e,t){let n=ie(e);if(!n)return;let r=n.name.toLowerCase();return t.find(e=>e.source===`builtin`&&(e.name===r||e.aliases?.includes(r)))?.name===`btw`?{question:n.args}:void 0}function ge(e,t){return t.length?{sessionId:e,entries:t,index:t.length-1}:{sessionId:e,entries:t,index:0,usage:!0}}function _e(e,t,n,r=Date.now()){return{sessionId:e,entries:t,index:Math.max(0,t.length-1),pending:{question:n,startedAt:r}}}function ve(e,t){return{sessionId:e.sessionId,entries:t,index:Math.max(0,t.length-1)}}function ye(e,t){let{pending:n,...r}=e;return{...r,error:{question:e.pending?.question??``,message:t}}}function be(e,t){if(e.pending||!e.entries.length)return e;let n=e.error?e.entries.length:e.index,r=Math.min(e.entries.length-1,Math.max(0,n+t));return r===e.index&&!e.error?e:{sessionId:e.sessionId,entries:e.entries,index:r}}function xe(e){return e.pending||e.error||e.usage?void 0:e.entries[e.index]}function Se(e){return e.pending||!e.entries.length?{earlier:!1,later:!1}:e.error?{earlier:!0,later:!1}:{earlier:e.index>0,later:e.index<e.entries.length-1}}var Ce=`alisio.lastSeenVersion`;function we(e,t){return t.current===`dev`||t.current===e?{}:{...t.news?{toast:t.news.latest}:{},record:t.current}}var Te=r([]),Ee=0;function De(e){let t;e.t===`dataset_ready`?t={n:++Ee,sessionId:e.sessionId,ready:e.dataset}:e.t===`dataset_failed`&&(t={n:++Ee,sessionId:e.sessionId,failed:{name:e.name,error:e.error}}),t&&(Te.value=[...Te.value,t].slice(-50))}function Oe(e,t){let n=t.trim().replace(/\\/g,`/`).replace(/#.*$/,``);if(!n||/^[a-z][a-z0-9+.-]*:/i.test(n)||n.startsWith(`//`))return;if(n=n.replace(/:\d+(:\d+)?$/,``),n.startsWith(`/`)){let t=e?.replace(/\\/g,`/`).replace(/\/+$/,``);if(!t)return;if(n===t)return``;if(!n.startsWith(`${t}/`))return;n=n.slice(t.length+1)}let r=[];for(let e of n.split(`/`))if(e&&e!==`.`){if(e===`..`){if(!r.length)return;r.pop()}else r.push(e)}return r.join(`/`)}var ke=e=>e.split(`/`).slice(0,-1).map((e,t,n)=>n.slice(0,t+1).join(`/`)),Ae=e=>{let t=e.split(`/`).pop()??``,n=t.lastIndexOf(`.`);return n>0?t.slice(n+1).toLowerCase():``},je=e=>e.split(`/`).pop()??e;function Me(e,t){if(!e)return;let n=e.includes(`\\`)&&!e.includes(`/`)?`\\`:`/`,r=e.replace(/[\\/]+$/,``),i=t.replace(/^[\\/]+/,``).split(`/`).filter(Boolean).join(n);return i?`${r}${n}${i}`:r}function Ne(e,t){if(t.startsWith(`image/`))return`image`;if(t===`application/pdf`)return`pdf`;if(!t.startsWith(`text/`))return`binary`;let n=Ae(e);return n===`md`||n===`markdown`||n===`mdx`?`markdown`:n===`html`||n===`htm`?`html`:n===`json`?`json`:`code`}var p=r(t(`alisio.dock`)===`open`),Pe=r(`files`),Fe=r(0),m=r({}),h=r(new Set([``])),g=r(void 0),Ie=r(void 0);function Le(e,t){e.preventDefault(),Ie.value={x:e.clientX,y:e.clientY,path:t}}function Re(){Ie.value=void 0}var _=r({files:[],loading:!1}),ze,v,Be=e=>e instanceof Error?e.message:String(e);function Ve(){a(()=>{p.value=!0,Pe.value=`tasks`}),i(`alisio.dock`,`open`),y()}function He(e){p.value=e,i(`alisio.dock`,e?`open`:void 0),e&&y()}function y(){let e=j.value?.workspaceId;return e!==ze&&(ze=e,a(()=>{m.value={},h.value=new Set([``]),_.value={files:[],loading:!1}}),e&&b(``)),e}async function b(e,t=!1){let n=y();if(!n)return;let r=m.value[e];if(!(r?.loading||r&&!t&&!r.error)){m.value={...m.value,[e]:{entries:r?.entries??[],loading:!0,...r?.next?{next:r.next}:{}}};try{let i=await G.tree(n,e,t?r?.next:void 0);if(ze!==n)return;m.value={...m.value,[e]:{entries:[...t?r?.entries??[]:[],...i.entries],loading:!1,...i.next?{next:i.next}:{}}}}catch(t){m.value={...m.value,[e]:{entries:[],loading:!1,error:Be(t)}}}}}function Ue(e){let t=new Set(h.value);t.has(e)?t.delete(e):(t.add(e),b(e)),h.value=t}function We(){m.value={};for(let e of h.value)b(e)}async function Ge(){let e=A.value;if(e){_.value={..._.value,loading:!0};try{let{files:t}=await G.changes(e);A.value===e&&(_.value={files:t,loading:!1})}catch(e){_.value={files:[],loading:!1,error:Be(e)}}}}async function Ke(e,t={}){let n=Oe(j.value?.workspace,e),r=y();if(n===void 0||!r)return;a(()=>{p.value=!0,Pe.value=`preview`,g.value={path:n,status:`loading`};let e=new Set(h.value);for(let t of ke(n))e.add(t);h.value=e}),i(`alisio.dock`,`open`);for(let e of ke(n))b(e);v&&URL.revokeObjectURL(v),v=void 0;let o;if(t.diff)try{o=await G.diff(r,n)}catch{}if(Ae(n)===`pdf`){g.value={path:n,status:`ready`,kind:`pdf`,truncated:!1,size:0,url:G.fileUrl(r,n),...o?{diff:o}:{}};return}try{let e=await G.file(r,n);if(g.value?.path!==n)return;let t=Ne(n,e.contentType);t===`image`&&(v=URL.createObjectURL(e.blob)),g.value={path:n,status:`ready`,kind:t,truncated:e.truncated,size:e.size,...t===`image`?{url:v}:t===`binary`?{}:{text:await e.blob.text()},...o?{diff:o}:{}}}catch(e){if(g.value?.path!==n)return;g.value=o?{path:n,status:`ready`,kind:`binary`,truncated:!1,size:0,diff:o}:{path:n,status:`error`,error:Be(e)}}}var qe=e=>j.value?.workspaceId?G.fileUrl(j.value.workspaceId,e,!0):void 0;function x(t){if(t instanceof c){let n=t.details?.path,r={path:typeof n==`string`?n:``};if(t.code===`workspace_missing`)return e(`error.workspaceMissing`,r);if(t.code===`workspace_archived`)return e(`error.workspaceArchived`,r);if(t.code===`picker_busy`)return e(`error.pickerBusy`)}return t instanceof Error?t.message:String(t)}function Je(e,t){if((e.t===`snapshot`||e.t===`goal_changed`)&&e.sessionId===t)return e.goal??null}function Ye(e,t){return e.key===`Tab`&&e.shiftKey&&!e.ctrlKey&&!e.altKey&&!e.metaKey&&!e.isComposing&&!t.composing&&!t.paletteOpen&&!t.disabled}function Xe(e,t,n=1){if(!e.length)return;let r=e.findIndex(e=>e.id===t);return r<0?e[0]?.id:e[(r+n+e.length)%e.length]?.id}function Ze(e,t){return e??t.find(e=>e.default)?.id??`build`}var Qe=(e,t)=>e===`full-access`&&t!==`full-access`,$e=()=>({approvals:[],interactions:[]});function et(e,t){switch(t.t){case`snapshot`:{let n=t.sessionId,r=new Set(t.pending.interactions.map(e=>e.interactionId));return{approvals:[...e.approvals.filter(e=>e.rootSessionId!==n),...t.pending.approvals],interactions:[...e.interactions.filter(e=>!r.has(e.interactionId)),...t.pending.interactions]}}case`approval`:return{...e,approvals:[...e.approvals.filter(e=>e.approvalId!==t.approval.approvalId),t.approval]};case`approval_withdrawn`:return{...e,approvals:e.approvals.filter(e=>e.approvalId!==t.approvalId)};case`interaction`:return{...e,interactions:[...e.interactions.filter(e=>e.interactionId!==t.interaction.interactionId),t.interaction]};case`interaction_withdrawn`:return{...e,interactions:e.interactions.filter(e=>e.interactionId!==t.interactionId)};default:return e}}function tt(e,t){return t?{approvals:e.approvals.filter(e=>e.rootSessionId===t.id),interactions:e.interactions.filter(e=>e.workspaceId===t.workspaceId&&(!e.sessionId||e.sessionId===t.id))}:$e()}var nt=(e,t)=>({approvals:e.approvals.filter(e=>e.approvalId!==t),interactions:e.interactions.filter(e=>e.interactionId!==t)}),rt=`memory`,it={workspace:``},at=(e,t)=>e.workspace===t&&e.list?e:{workspace:t,failed:!0};function ot(e,t,n){if(!t||e.workspace!==t)return`loading`;if(!e.list)return e.failed?`error`:`loading`;let r=e.list.find(e=>e.id===n);return r?.enabled&&r.status===`active`?`enabled`:`disabled`}var st=e=>e===`enabled`?[`conversation`,`trajectory`,`memory`]:[`conversation`,`trajectory`],ct=(e,t)=>st(t).includes(e)?e:`conversation`,lt=15e3,ut=6e4,dt=e=>e.kind===`approval`||e.kind===`tool`&&(e.category===`question`||e.category===`agent`),ft=e=>{let t=e.replace(/^p_[0-9a-f]{10}_/,``);return t===`python_run`?`python`:t===`data_inspect`||t===`data_query`?`data`:t===`artifact_create`?`artifact`:t===`ask_user_question`||t===`exit_plan`?`question`:t===`task`||t===`task_wait`?`agent`:`other`},pt=[`title`,`fileName`,`path`,`file_path`,`file`,`name`,`description`];function mt(e,t=48){let n;try{n=JSON.parse(e)}catch{return``}if(!n||typeof n!=`object`)return``;let r=n,i;for(let e of pt){let t=r[e];if(typeof t==`string`&&t.trim()){i=t;break}}if(i===void 0){let e=r.inputs,t=Array.isArray(e)?e[0]:void 0;t&&typeof t.path==`string`&&(i=t.path)}if(!i)return``;let a=(i.replace(/\\/g,`/`).split(`/`).filter(Boolean).pop()??i).replace(/\s+/g,` `).trim();return a.length>t?`${a.slice(0,t-1)}…`:a}function ht(e){let t=Object.values(e.approvals)[0];if(t!==void 0)return{kind:`approval`,name:t};let n=e.tools.at(-1);return n?{kind:`tool`,name:n.name,category:ft(n.name),summary:mt(n.arguments)}:e.compacting?{kind:`compacting`}:e.retry?{kind:`retrying`,...e.retry}:e.recovery?{kind:`recovering`,...e.recovery}:{kind:e.stream}}var gt=e=>{let t=Object.keys(e.approvals)[0];if(t!==void 0)return`approval:${t}`;let n=e.tools.at(-1);return n?`tool:${n.id}`:e.compacting?`compacting`:e.recovery?`recovery:${e.recovery.attempt}`:e.retry?`retry:${e.retry.attempt}`:e.stream},S=e=>{let{retry:t,recovery:n,...r}=e;return r},C=(e,t,n)=>{let r=gt(e);return{...e,phaseKey:r,phaseSince:t&&t.phaseKey===r?t.phaseSince:n}},_t=(e,t,n=t)=>C({runId:e,startedAt:n,lastActivityAt:t,stream:`waiting`,tools:[],approvals:{},compacting:!1},void 0,t);function vt(e,t){if(t.t===`snapshot`)return!1;if(t.t===`session_status`)return t.status===`running`||t.status===`queued`?e:!1;if(t.t!==`event`)return e;switch(t.event.type){case`compaction_started`:return!0;case`compaction_completed`:case`compaction_failed`:case`compaction_skipped`:case`run_completed`:case`run_failed`:case`run_cancelled`:case`run_turns_exceeded`:return!1;default:return e}}var w=e=>e==null?``:String(e);function yt(e,t,n){if(t.t===`snapshot`){let r=t.inflight;if(!r)return;let i={};for(let e of t.pending?.approvals??[])e.rootSessionId===t.sessionId&&(i[e.callId??e.approvalId]=e.name??e.approvalId);return C({runId:r.runId,startedAt:r.startedAt??e?.startedAt??n,lastActivityAt:n,stream:r.text?`writing`:r.reasoning?`thinking`:`waiting`,tools:r.tools.map(e=>({id:e.id,name:e.name,arguments:e.arguments,startedAt:e.startedAt})),approvals:i,compacting:!1},e?.runId===r.runId?e:void 0,n)}if(t.t===`delta`){let r=e?.runId===t.runId?e:_t(t.runId,n),i=t.text?`writing`:t.reasoning?`thinking`:r.stream;return C({...S(r),stream:i,lastActivityAt:n,compacting:!1},r,n)}if(t.t!==`event`)return e;let r=t.event,i=r.data??{};switch(r.type){case`run_started`:return _t(r.runId,n);case`run_completed`:case`run_failed`:case`run_cancelled`:case`run_turns_exceeded`:return e&&e.runId!==r.runId?e:void 0}let a=e?.runId===r.runId?e:_t(r.runId,n),o={...a,lastActivityAt:n};switch(r.type){case`tool_started`:{let e=w(i.id),t=a.tools.some(t=>t.id===e)?a.tools:[...a.tools,{id:e,name:w(i.name),arguments:w(i.arguments),startedAt:n}];return C({...S(o),tools:t,compacting:!1},a,n)}case`tool_completed`:{let e=w(i.id),{[e]:t,...r}=a.approvals;return C({...S(o),tools:a.tools.filter(t=>t.id!==e),approvals:r,stream:`waiting`},a,n)}case`tool_progress`:return{...o};case`approval_requested`:return C({...o,approvals:{...a.approvals,[w(i.id)]:w(i.name)}},a,n);case`approval_resolved`:{let{[w(i.id)]:e,...t}=a.approvals;return C({...o,approvals:t},a,n)}case`compaction_started`:return C({...S(o),compacting:!0},a,n);case`compaction_completed`:case`compaction_failed`:case`compaction_skipped`:return C({...S(o),compacting:!1,stream:`waiting`},a,n);case`turn_completed`:return C({...S(o),stream:`waiting`},a,n);case`request_retry`:return C({...o,stream:`waiting`,retry:{attempt:Number(i.attempt)||1,of:Number(i.of)||1}},a,n);case`truncation_recovery`:return C({...S(o),stream:`waiting`,recovery:{attempt:Number(i.attempt)||1,of:Number(i.of)||1}},a,n);case`artifact_published`:case`plugin_hook_failed`:case`context_reduced`:case`session_context_injected`:case`response_truncated`:return o;default:return e}}function bt(e,t,n={quietMs:lt,stalledMs:ut}){let r=Math.max(0,t-e.lastActivityAt);return dt(ht(e))?{level:`none`,idleMs:r}:r>=n.stalledMs?{level:`stalled`,idleMs:r}:r>=n.quietMs?{level:`quiet`,idleMs:r}:{level:`none`,idleMs:r}}function xt(e){let t=Math.max(0,Math.floor(e/1e3)),n=t%60,r=Math.floor(t/60)%60,i=Math.floor(t/3600),a=e=>String(e).padStart(2,`0`);return i?`${i}:${a(r)}:${a(n)}`:`${r}:${a(n)}`}var St=()=>({workspaces:[],sessions:{},stale:!1,loaded:!1});function Ct(e,t,n){return{workspaces:t,sessions:Object.fromEntries(n.filter(e=>!e.parentId).map(e=>[e.id,e])),stale:!1,loaded:!0}}var T=(e,t)=>({...e,sessions:{...e.sessions,[t.id]:{...e.sessions[t.id],...t}}}),wt=(e,t)=>({...e,workspaces:[...e.workspaces.filter(e=>e.id!==t.id),t].sort((e,t)=>e.path.localeCompare(t.path))});function Tt(e,t){let n=e.sessions[t.sessionId];return n?T(e,{...n,status:t.status,...t.title===void 0?{}:{title:t.title},...t.updatedAt===void 0?{}:{updatedAt:t.updatedAt}}):{...e,stale:!0}}var Et=e=>e.label??e.path.split(/[\\/]/).filter(Boolean).at(-1)??e.path,Dt=e=>e.split(/[\\/]/).filter(Boolean).slice(0,-1);function Ot(e){let t=new Map;for(let n of e){if(n.label)continue;let e=Et(n).toLowerCase();t.set(e,[...t.get(e)??[],n])}let n=new Map;for(let e of t.values()){if(e.length<2)continue;let t=e.map(e=>Dt(e.path)),r=Math.max(...t.map(e=>e.length)),i=e=>t.map(t=>t.length?t.slice(-e).join(`/`):`/`),a=Math.min(2,Math.max(1,r));for(;a<r&&new Set(i(a)).size<e.length;)a++;i(a).forEach((t,r)=>{let i=e[r]?.id;i&&n.set(i,t)})}return n}function kt(e,t){let n=e=>e?.exists!==!1&&!e?.archived;if(t&&(t=>n(e.workspaces.find(e=>e.id===t)))(t))return t;let r=new Map;for(let t of Object.values(e.sessions))r.set(t.workspaceId,Math.max(r.get(t.workspaceId)??0,t.updatedAt??0));let i=e=>Math.max(e.lastOpenedAt??0,r.get(e.id)??0);return e.workspaces.filter(n).sort((e,t)=>i(t)-i(e))[0]?.id}var At=(e,t)=>e.pinned===t.pinned?(t.updatedAt??-1)-(e.updatedAt??-1):e.pinned?-1:1;function jt(e,t,n=!1){let r=t.trim().toLowerCase(),i=Object.values(e.sessions).filter(e=>n||!e.archived),a=new Map(e.workspaces.map(e=>[e.id,e]));for(let e of i)a.has(e.workspaceId)||a.set(e.workspaceId,{id:e.workspaceId,path:e.workspace,pinned:!1,open:!1,exists:!0,trusted:!1,untrustedResources:!1,archived:!1});let o=[],s=[...a.values()].filter(e=>n||!e.archived),c=Ot(s);for(let e of s){let t=Et(e),n=c.get(e.id),a=i.filter(t=>t.workspaceId===e.id).filter(e=>!r||(e.title??``).toLowerCase().includes(r)||e.id.toLowerCase().startsWith(r)||t.toLowerCase().includes(r)).sort(At);(!r||a.length||t.toLowerCase().includes(r))&&o.push({workspace:e,name:t,...n?{hint:n}:{},sessions:a})}return o.sort((e,t)=>Number(e.workspace.archived)-Number(t.workspace.archived)||Number(t.workspace.pinned)-Number(e.workspace.pinned)||e.workspace.path.localeCompare(t.workspace.path))}function Mt(e){return e?.nativePicker?`native`:e?.folderBrowser?`browser`:`manual`}function Nt(e){let t=[];for(let n of e?.content??[])n.type===`ui`&&n.block.kind===`artifact`&&n.block.artifact?.id&&t.push(n.block.artifact);return t}function Pt(e,t){let n=new Map(e.map(e=>[e.id,e]));for(let e of t)n.set(e.id,e);return[...n.values()].sort((e,t)=>t.createdAt-e.createdAt||(e.id<t.id?1:-1))}function Ft(e,t){if(!t)return{artifact:e,state:`loading`};let n=t.find(t=>t.id===e.id)??e;return{artifact:n,state:n.status}}var It=e=>e.previewable&&e.status===`ready`?`open`:`download`,Lt=e=>`/api/artifacts/${encodeURIComponent(e)}/download`,Rt={dashboard:`fileChart`,document:`fileText`,spreadsheet:`fileTable`,image:`fileImage`,data:`fileCode`,code:`fileCode`,archive:`fileArchive`,file:`file`};function zt(e){return e<1024?`${e} B`:e<1048576?`${Math.max(1,Math.round(e/1024))} KB`:`${(e/1048576).toFixed(1)} MB`}function Bt(e){if(e.generator!==`dashboard_generate`)return;let t=e.planner;if(t!==`rules`&&t!==`rules+decisions`)return;let n=e.decisionProvider;return{planner:t,...typeof n==`string`&&n?{decisionProvider:n}:{}}}var Vt=e=>({sessionId:e,cursor:0,entries:[],tools:{},echoes:[],hasMore:!1,maxSeq:-1,ready:!1,version:0,counter:0}),E=(e,t)=>({...e,...t,version:e.version+1}),D=e=>({id:e.id,name:e.name,arguments:e.arguments,status:`pending`,tail:``}),Ht=e=>e.isError?`failed`:`completed`;function Ut(e,t){let n=[];for(let{seq:r,message:i}of e)if(i.role===`user`)i.summary?n.push({kind:`notice`,key:`m${r}`,seq:r,code:`summary`,tone:`info`,params:{}}):n.push({kind:`user`,key:`m${r}`,seq:r,text:i.display??i.text,attachments:i.attachments?.length??0,...i.attachments?.length?{images:i.attachments.map(e=>({mimeType:e.mimeType,data:e.data}))}:{},...i.datasets?.length?{datasets:i.datasets}:{}});else if(i.role===`assistant`){for(let e of i.calls)t[e.id]={...D(e),...t[e.id]};n.push({kind:`assistant`,key:`m${r}`,seq:r,text:i.text,calls:i.calls.map(e=>e.id),...i.truncated?{truncated:!0}:{}})}else{let e=t[i.callId];t[i.callId]={...e??D({id:i.callId,name:`tool`,arguments:``}),result:i.result,status:Ht(i.result)}}return n}function Wt(e,t){if(!t.length)return e;let n=[],r=[...t];for(let t of e){let e=`seq`in t&&t.seq!==void 0?t.seq:void 0;if(e!==void 0){let t=r.filter(t=>Gt(t)<e);r=r.filter(t=>Gt(t)>=e),n.push(...t)}n.push(t)}return[...n,...r]}var Gt=e=>`anchor`in e&&e.anchor!==void 0?e.anchor:1/0,Kt=e=>`anchor`in e&&e.anchor!==void 0;function qt(e,t){let n={},r=t.messages.items,i=Ut(r,n),a=r[0]?.seq,o=e.entries.filter(e=>Kt(e)&&(a===void 0||Gt(e)>=a)),s;if(t.inflight){s={runId:t.inflight.runId,text:t.inflight.text,reasoning:t.inflight.reasoning,toolIds:t.inflight.tools.map(e=>e.id)};for(let e of t.inflight.tools)n[e.id]={...D(e),...n[e.id],effect:e.effect,status:`running`,tail:e.tail}}let c=r.map(e=>e.message).filter(e=>e.role===`user`),l=e.echoes.filter(e=>e.state===`failed`||!c.some(t=>Jt(t,e)));return E(e,{session:t.session,cursor:t.cursor,entries:Wt(i,o),tools:n,echoes:l,live:s,hasMore:t.messages.hasMore,oldestSeq:a,maxSeq:r.at(-1)?.seq??-1,ready:!0})}var Jt=(e,t)=>t.datasets?.length?e.display===(t.display??t.text)&&e.text.startsWith(t.text):t.display===void 0?e.text===t.text&&e.display===void 0:e.display===t.display&&e.text===t.text;function Yt(e,t){if(t.seq<=e.maxSeq)return e;let n={...e.tools},[r]=Ut([t],n),{echoes:i,live:a}=e,{message:o}=t;if(o.role===`user`){let e=i.findIndex(e=>e.state!==`failed`&&Jt(o,e));e>=0&&(i=i.filter((t,n)=>n!==e))}let s=r;if(o.role===`assistant`&&r?.kind===`assistant`&&a&&(a.reasoning&&(s={...r,think:a.reasoning}),a={...a,text:``,reasoning:``}),o.role===`tool`){let t=n[o.callId];t&&e.tools[o.callId]?.durationMs!==void 0&&(n[o.callId]={...t,durationMs:e.tools[o.callId]?.durationMs})}return E(e,{entries:s?[...e.entries,s]:e.entries,tools:n,echoes:i,live:a,maxSeq:t.seq,oldestSeq:e.oldestSeq??t.seq})}var Xt=(e,t,n,r={})=>({kind:`notice`,key:`n${e.counter}`,anchor:e.maxSeq,code:t,tone:n,params:r}),Zt=e=>e===`user`||e===`model`||e==="default"?e:`unknown`;function Qt(e){if(e.code!==`output_truncated`)return;let t=e.truncation;if(t&&typeof t.maxOutputTokens==`number`&&t.model)return{code:`run_output_truncated`,params:{who:t.model,attempts:String(t.attempts??1),maxOutputTokens:String(t.maxOutputTokens),source:Zt(t.source)}}}function $t(e){if(e.code!==`timeout`)return;let t=e.timeout;if(!t||typeof t.ms!=`number`)return;let n=t.model?t.provider?`${t.model} (${t.provider})`:t.model:``,r={who:n,seconds:String(Math.round(t.ms/1e3)),tool:t.tool??``,attempts:String(t.attempts??1)};return t.kind===`first_token`&&n?{code:t.attempts&&t.attempts>1?`run_timeout_first_token_retried`:`run_timeout_first_token`,params:r}:t.stage===`waiting_model`&&n?{code:t.firstRequest?`run_timeout_waiting`:`run_timeout_waiting_later`,params:r}:t.stage===`streaming`&&n?{code:`run_timeout_streaming`,params:r}:t.stage===`tool`&&t.tool?{code:`run_timeout_tool`,params:r}:{code:`run_timeout_other`,params:r}}function en(e,t){let n=Math.max(e.cursor,Number(t.eventId??0)||0),r={...e,cursor:n,counter:e.counter+1},i=t.data??{},a=e=>e===void 0?``:String(e),o=(t,n,i={})=>E(r,{entries:[...e.entries,Xt(e,t,n,i)]});switch(t.type){case`run_started`:return E(r,{live:{runId:t.runId,text:``,reasoning:``,toolIds:[]}});case`tool_started`:{let n=a(i.id),o=r.live??{runId:t.runId,text:``,reasoning:``,toolIds:[]};return E(r,{tools:{...e.tools,[n]:{...D({id:n,name:a(i.name),arguments:a(i.arguments)}),...e.tools[n],effect:i.effect,status:`running`}},live:o.toolIds.includes(n)?o:{...o,toolIds:[...o.toolIds,n]}})}case`tool_completed`:{let t=a(i.id),n=e.tools[t]??D({id:t,name:a(i.name),arguments:``});return E(r,{tools:{...e.tools,[t]:{...n,status:i.isError?`failed`:`completed`,durationMs:Number(i.durationMs)||0,preview:a(i.preview)}}})}case`run_completed`:return E(r,{live:void 0});case`run_failed`:{let e=$t(i)??Qt(i);return{...e?o(e.code,`error`,e.params):o(`run_failed`,`error`,{error:a(i.error)}),live:void 0}}case`run_cancelled`:return{...o(`run_cancelled`,`warning`),live:void 0};case`run_turns_exceeded`:return o(`run_turns_exceeded`,`warning`,{turns:a(i.turns)});case`response_truncated`:return o(`response_truncated`,`warning`,{maxOutputTokens:a(i.maxOutputTokens),source:Zt(i.source)});case`model_changed`:return o(`model_changed`,`info`,{model:a(i.model),previous:a(i.previous)});case`compaction_completed`:return o(`compaction_completed`,`info`,{before:a(i.before),after:a(i.after)});case`compaction_failed`:return o(`compaction_failed`,`error`,{error:a(i.error)});case`context_reduced`:return o(`context_reduced`,`info`,{messages:a(i.messages)});case`plugin_hook_failed`:return o(`plugin_hook_failed`,`warning`,{source:a(i.source),hook:a(i.hook),error:a(i.error)});case`session_context_injected`:return E(r,{entries:[...e.entries,{kind:`context`,key:`n${e.counter}`,anchor:e.maxSeq,sources:Array.isArray(i.sources)?i.sources.map(String):[],tokens:Number(i.tokens)||0}]});default:return n===e.cursor?e:{...e,cursor:n}}}function tn(e,t){let n=e.live?.runId===t.runId?e.live:{runId:t.runId,text:``,reasoning:``,toolIds:[]},r={...n,text:n.text+(t.text??``),reasoning:n.reasoning+(t.reasoning??``)},i=e.tools;if(t.progress?.length){i={...i};for(let{toolId:e,chunk:n}of t.progress){let t=i[e]??D({id:e,name:`tool`,arguments:``});i[e]={...t,tail:(t.tail+n).slice(-8192)}}}return E(e,{live:r,tools:i})}function nn(e,t){if(`sessionId`in t&&t.sessionId!==void 0&&t.sessionId!==e.sessionId)return e;switch(t.t){case`snapshot`:return qt(e,t);case`message`:return Yt(e,t);case`event`:return en(e,t.event);case`delta`:return tn(e,t);case`tool_result`:{let n=e.tools[t.callId]??D({id:t.callId,name:`tool`,arguments:``});return E(e,{tools:{...e.tools,[t.callId]:{...n,result:t.result,...t.truncated?{truncated:!0}:{},...n.status===`running`||n.status===`pending`?{status:Ht(t.result)}:{}}}})}case`session_status`:return e.session?E(e,{session:{...e.session,status:t.status,...t.title===void 0?{}:{title:t.title},...t.updatedAt===void 0?{}:{updatedAt:t.updatedAt}}}):e;default:return e}}var rn=(e,t)=>t.reduce(nn,e),an=(e,t)=>E(e,{echoes:[...e.echoes,{...t,state:`sending`}]}),on=(e,t,n)=>E(e,{echoes:e.echoes.map(e=>e.localId===t?{...e,state:`failed`,error:n}:e)}),sn=(e,t)=>E(e,{echoes:e.echoes.filter(e=>e.localId!==t)}),O=(e,t)=>E(e,{counter:e.counter+1,entries:[...e.entries,{kind:`note`,key:`n${e.counter}`,anchor:e.maxSeq,text:t}]});function cn(e,t){let n=e.oldestSeq??1/0,r=t.items.filter(e=>e.seq<n),i={...e.tools};return E(e,{entries:[...Ut(r,i),...e.entries],tools:i,hasMore:t.hasMore,oldestSeq:r[0]?.seq??e.oldestSeq,maxSeq:Math.max(e.maxSeq,r.at(-1)?.seq??-1)})}function ln(e){let t=[],n=new Set,r=(n,r)=>{let i=n.flatMap(t=>Nt(e.tools[t]?.result));i.length&&t.push({kind:`artifacts`,key:r,artifacts:i})};for(let i of e.entries)if(i.kind===`assistant`){let{calls:a,...o}=i;(i.text||i.think)&&t.push(o);for(let r of a){let i=e.tools[r];i&&(n.add(r),t.push({kind:`tool`,key:`t${r}`,tool:i}))}r(a,`a${i.key}`)}else t.push(i);for(let n of e.echoes)t.push({kind:`echo`,key:`e${n.localId}`,echo:n});let i=e.live;if(i){i.reasoning&&t.push({kind:`think`,key:`think-${i.runId}`,text:i.reasoning});let a=i.toolIds.filter(t=>e.tools[t]&&!n.has(t));for(let n of a){let r=e.tools[n];r&&t.push({kind:`tool`,key:`t${n}`,tool:r})}r(a,`live-a${i.runId}`),i.text&&t.push({kind:`streaming`,key:`live-${i.runId}`,text:i.text})}return t}var un=r(`ok`),dn=r(!1),fn=r(`connecting`),k=r(St()),A=r(void 0),j=r(void 0),M=r(Vt(``)),N=r(void 0),P=r(!1),F=r($e()),I=r([]),L=r(void 0),pn=r(void 0),R=r(o(`alisio.history`,[])),mn=r(``),hn=r(``),gn=r(Date.now()),_n=r(!1),vn=r(!1),yn=r(!1),z=r([]),bn=r(``),xn=r(void 0),Sn=r(!1),B=r(0),V=r(void 0),Cn=r(void 0),wn=r(0),Tn=r(0),H=r({}),U=r(void 0),En=r(`conversation`),W=r(it),Dn=n(()=>Object.fromEntries((W.value.list??[]).map(e=>[e.toolPrefix,e.name]))),On=()=>ot(W.value,j.value?.workspaceId,rt),kn=()=>ct(En.value,On());function An(e,t){W.value={workspace:e,list:t},H.value={...H.value,agents:(H.value.agents??0)+1},On()===`disabled`&&(En.value=ct(En.value,`disabled`))}function jn(e){W.value=at(W.value,e)}var Mn=r(!1),Nn=r(null),Pn=r(0),Fn=r(void 0),In=r(void 0),Ln=n(()=>tt(F.value,M.value.session)),Rn=n(()=>M.value.session?.status??j.value?.status??`idle`),zn=n(()=>{let e=Rn.value;return!!M.value.live||e===`running`||e===`queued`||e===`awaiting_input`}),G=new u({onUnauthorized:()=>{un.value=`unauthorized`}}),K,Bn,Vn=r(0),q=r(void 0),Hn=n(()=>re(q.value?.version)),Un=n(()=>Mt(q.value?.capabilities)),Wn=r(!1);function Gn(e){Cn.value={text:e,n:(Cn.value?.n??0)+1},B.value++}function J(e){V.value=e,setTimeout(()=>{V.value===e&&(V.value=void 0)},5e3)}async function Y(){return Bn??=(async()=>{try{let[e,t]=await Promise.all([G.workspaces(`all`),G.sessions({archived:`all`})]);k.value=Ct(k.value,e,t.items)}catch(e){e instanceof c&&e.status===401||J(x(e))}finally{Bn=void 0}})(),Bn}async function X(){let e=A.value;if(e)try{let t=await G.context(e);A.value===e&&(pn.value=t)}catch{}}async function Z(){let e=A.value;if(e)try{let t=await G.models(e);A.value===e&&(L.value=t)}catch{L.value=void 0}}async function Kn(){let e=A.value;try{let t=await G.commands(e);A.value===e&&(I.value=t)}catch{}}async function qn(){let e=j.value?.workspaceId;if(!e){z.value=[];return}try{let t=await G.agents(e);j.value?.workspaceId===e&&(z.value=t)}catch{}}async function Jn(){let e=j.value?.workspaceId;if(e)try{let t=await G.plugins(e);if(j.value?.workspaceId!==e)return;An(e,t),qn()}catch{jn(e)}}async function Yn(){let e=A.value;if(e)try{let t=await G.session(e);A.value===e&&(j.value=t,k.value=T(k.value,t))}catch{}}var Xn=!1;function Zn(e){let t=!1,n=!1,r=!1,i=!1,o=!1,c=[],l=new Set;a(()=>{M.value=rn(M.value,e);let a=Date.now(),u=N.value;for(let t of e)(!(`sessionId`in t)||t.sessionId===M.value.sessionId)&&(u=yt(u,t,a));N.value=u;let d=P.value;for(let t of e)(!(`sessionId`in t)||t.sessionId===M.value.sessionId)&&(d=vt(d,t));d!==P.value&&(P.value=d);let f=F.value,ee=k.value;for(let a of e){f=et(f,a),a.t===`session_status`&&(ee=Tt(ee,a)),a.t===`approval`&&a.approval.rootSessionId===A.value&&(hn.value=a.approval.name??a.approval.approvalId),a.t===`capabilities_changed`&&a.sessionId===A.value&&Pn.value++,(a.t===`dataset_ready`||a.t===`dataset_failed`)&&De(a),a.t===`tasks_changed`&&s(()=>import(`./tasks-CwT_L2cD.js`).then(e=>e.receiveTask(a.sessionId,a.task)),__vite__mapDeps([0,1,2]));let e=Je(a,A.value);if(e!==void 0&&(Nn.value=e),a.t===`catalog_changed`&&(l.add(a.scope),a.scope===`commands`&&(i=!0)),a.t===`event`&&a.sessionId===A.value){o=!0;let e=a.event.type;if(e===`run_completed`&&(mn.value=`${Date.now()}`),(e===`run_completed`||e===`run_failed`||e===`run_cancelled`)&&(t=!0),e===`compaction_completed`&&(r=!0),e===`artifact_published`){let e=a.event.data;e.artifact&&c.push(e.artifact)}e===`model_changed`&&(t=!0),e===`plan_decided`&&(Xn=a.event.data.decision===`approve`),e===`run_started`&&Xn&&(Xn=!1,n=!0)}}F.value=f,k.value=ee}),o&&Tn.value++,n&&Yn();let u=A.value;if(c.length&&u&&(In.value={sessionId:u,artifacts:c}),k.value.stale&&Y(),t&&(wn.value++,X()),i&&Kn(),l.size){let e={...H.value};for(let t of l)e[t]=(e[t]??0)+1;H.value=e,l.has(`models`)&&Z(),l.has(`plugins`)&&Jn(),l.has(`agents`)&&qn()}r&&(K?.refresh(),X())}async function Q(e){if(e===A.value&&e)return;a(()=>{A.value=e,j.value=void 0,M.value=Vt(e??``),N.value=void 0,P.value=!1,L.value=void 0,pn.value=void 0,Sn.value=!1,U.value=void 0,Nn.value=null});let t=e?`#/s/${encodeURIComponent(e)}`:`#/`;if(location.hash!==t&&Qn(t),K?.subscribe(e?[e]:[]),e&&i(`alisio.lastSession`,e),Kn(),Fe.value=0,e){s(()=>import(`./tasks-CwT_L2cD.js`).then(t=>t.loadTasks(e)),__vite__mapDeps([0,1,2]));try{let t=await G.session(e);A.value===e&&(j.value=t)}catch(e){if(e instanceof c&&e.code===`not_found`){J(x(e)),Q(void 0);return}}Z(),X(),Jn(),qn()}}function Qn(e){try{window.history.replaceState(null,``,e)}catch{location.hash=e}}var $n=()=>{let e=/^#\/s\/(.+)$/.exec(location.hash);return e?.[1]?decodeURIComponent(e[1]):void 0};async function er(){let n=t(Ce);try{let t=await G.changelog(n?{lastSeen:n}:{}),r=we(n,t);return r.toast&&J(e(`changelog.news`,{version:r.toast})),r.record&&i(Ce,r.record),t}catch{return}}async function tr(){if(K=new ne({create:e=>new EventSource(e),onFrames:Zn,onStatus:e=>{fn.value=e},onProtocolMismatch:()=>{dn.value=!0},onClosed:()=>{G.workspaces().catch(()=>{})}}),window.addEventListener(`online`,()=>K?.nudge()),document.addEventListener(`visibilitychange`,()=>{document.visibilityState===`visible`&&K?.nudge()}),window.addEventListener(`hashchange`,()=>{let e=$n();e!==A.value&&Q(e)}),setInterval(()=>{gn.value=Date.now()},3e4),G.health().then(e=>{q.value=e}).catch(()=>{}),await Y(),un.value!==`ok`)return;er();let e=$n(),n=t(`alisio.lastSession`),r=k.value.sessions,i=e??(n&&r[n]&&!r[n]?.archived?n:Object.values(r).filter(e=>!e.archived).sort((e,t)=>(t.updatedAt??-1)-(e.updatedAt??-1))[0]?.id);i?await Q(i):(K.subscribe([]),Kn())}async function nr(t){let n=t??kt(k.value,j.value?.workspaceId);if(!n){J(e(`sidebar.openWorkspaceFirst`)),Vn.value++;return}try{let e=await G.createSession({workspace:n});k.value=T(k.value,e),await Q(e.id),B.value++}catch(e){J(x(e)),e instanceof c&&e.code===`workspace_missing`&&Y()}}async function rr(t){try{let n=await G.addWorkspace(t.trim());return k.value=wt(k.value,n),n.untrustedResources&&J(e(`sidebar.untrustedHint`)),!0}catch(e){return J(x(e)),!1}}async function ir(){if(Wn.value)return`cancelled`;Wn.value=!0;try{let e=await G.pickFolder();return`cancelled`in e?`cancelled`:await rr(e.path)?`added`:`cancelled`}catch(e){return e instanceof c&&e.code===`picker_unavailable`?(q.value&&={...q.value,capabilities:{...q.value.capabilities,nativePicker:!1}},`unavailable`):(J(x(e)),`cancelled`)}finally{Wn.value=!1}}async function ar(e,t){try{let n=await G.patchWorkspace(e,t);k.value=wt(k.value,n)}catch(e){J(x(e))}}async function or(e,t=A.value){if(t)try{let n=await G.patchSession(t,e);k.value=T(k.value,n),t===A.value&&(j.value=n,(e.model!==void 0||e.effort!==void 0)&&(Z(),X()))}catch(e){J(x(e))}}async function sr(e){let t=A.value;if(t)try{let n=await G.command(t,{requestId:l(),name:`agent:${e}`});n.output&&(M.value=O(M.value,n.output)),Yn(),n.effects?.includes(`model`)&&(Z(),X())}catch(e){J(x(e))}}async function cr(t=1){let n=j.value;if(!n||tt(F.value,n).interactions.length)return;let r=z.value,i=n.agent??r.find(e=>e.default)?.id,a=Xe(r,i,t);if(!a||a===i)return;await sr(a);let o=r.find(e=>e.id===a)?.name??a;bn.value=e(`composer.agentApplied`,{agent:o})}async function lr(t,n,r){try{let i;try{i=await G.createSession({workspace:t,agent:n,...r?{model:r}:{}})}catch(a){if(!r||!(a instanceof c)||a.code!==`validation_failed`)throw a;i=await G.createSession({workspace:t,agent:n}),J(e(`agentsWin.modelFallback`,{model:r}))}return k.value=T(k.value,i),await Q(i.id),B.value++,!0}catch(e){return J(x(e)),!1}}async function ur(t,n){let r=e(n?`trust.confirm`:`trust.confirmRevoke`,{path:t.path});if(!window.confirm(r))return!1;try{let r=await G.trustWorkspace(t.id,n);return k.value=wt(k.value,r),J(e(r.trusted?`trust.granted`:`trust.revoked`)),j.value?.workspaceId===t.id&&Kn(),!0}catch(e){return J(x(e)),!1}}var dr=e=>or({preset:e}),fr=e=>or({model:e}),pr=e=>or({effort:e});function mr(e){R.value=fe(R.value,e),i(`alisio.history`,JSON.stringify(R.value))}async function hr(e,t,n=l(),r,i){let a=A.value;if(!a)return;let o=l(),s=r?.refs.length?r.refs:void 0;M.value=an(M.value,{localId:o,requestId:n,text:e,...t?{display:t}:{},...s?{attachments:s,thumbs:r?.thumbs??[]}:{},...i?.length?{datasets:i}:{}});try{await G.prompt(a,{requestId:n,text:e,...t?{display:t}:{},...s?{attachments:s}:{},...i?.length?{datasets:i.map(e=>e.id)}:{}})}catch(e){A.value===a&&(M.value=on(M.value,o,x(e)))}}function gr(e){let t=M.value.echoes.find(t=>t.localId===e);t&&(M.value=sn(M.value,e),hr(t.text,t.display,t.requestId,t.attachments?{refs:t.attachments,thumbs:t.thumbs??[]}:void 0,t.datasets))}async function _r(t,n,r){let i=A.value;if(!i||!t.trim()&&!n?.refs.length&&!r?.length)return;if(t.trim()&&mr(t),n?.refs.length||r?.length)return hr(t.trim()||!r?.length?t:e(`dataset.defaultPrompt`),void 0,l(),n,r);let a=ie(t);if((a?.name===`permission`||a?.name===`permissions`)&&!a.args){Mn.value=!0;return}if(a?.name===`changelog`){xn.value={version:a.args??``,at:Date.now()};return}if(a?.name===`tasks`){Ve();return}if(a?.name===`goal`&&I.value.some(e=>e.name===`goal`)){s(()=>import(`./goal-ChMqHxdJ.js`).then(e=>e.runGoalCommand(i,a.args??``)),__vite__mapDeps([3,1,2]));return}if(a?.name===`artifacts`){Fn.value={filter:a.args??``,at:Date.now()};return}if(a?.name===`agents`&&!a.args){yn.value=!0;return}let o=a?I.value.find(e=>e.name===a.name||e.aliases?.includes(a.name.toLowerCase())):void 0;if(!a||!o)return hr(t);let c=he(t,I.value);if(c)return vr(i,c.question);try{let t=await G.command(i,{requestId:l(),name:o.name,...a.args?{args:a.args}:{}});t.output&&(M.value=O(M.value,t.output)),o.name===`reload`&&J(e(`reloadCmd.done`)),t.prompt&&await hr(t.prompt.text,t.prompt.display),t.effects?.length&&(Yn(),Z(),X()),t.sessionId&&(await Y(),await Q(t.sessionId))}catch(e){M.value=O(M.value,`**/${o.name}**: ${x(e)}`)}}var $;async function vr(e,t){let n=U.value?.sessionId===e?U.value.entries:[];if(!t){U.value=ge(e,n);try{n=await G.sideQuestions(e)}catch(e){J(x(e));return}U.value?.sessionId===e&&!U.value.pending&&(U.value=ge(e,n));return}$?.abort();let r=new AbortController;$=r,U.value=_e(e,n,t);try{await G.askSideQuestion(e,t,r.signal);let n=await G.sideQuestions(e);U.value?.sessionId===e&&U.value.pending?.question===t&&(U.value=ve(U.value,n))}catch(t){if(r.signal.aborted)return;U.value?.sessionId===e&&U.value.pending&&(U.value=ye(U.value,x(t)))}finally{$===r&&($=void 0)}}function yr(){let e=U.value;e?.pending&&($?.abort(),$=void 0,G.cancelSideQuestions(e.sessionId).catch(()=>{})),U.value=void 0,B.value++}async function br(){let e=A.value;if(e)try{await G.cancel(e)}catch(e){J(x(e))}}async function xr(){let e=M.value;if(e.hasMore&&e.oldestSeq!==void 0)try{let t=await G.messages(e.sessionId,e.oldestSeq);M.value.sessionId===e.sessionId&&(M.value=cn(M.value,t))}catch(e){J(x(e))}}async function Sr(e,t){try{await G.decide(e,t)}catch(e){e instanceof c&&(e.status===409||e.status===404)||J(x(e))}F.value=nt(F.value,e),B.value++}async function Cr(e,t){try{await G.answer(e,t)}catch(e){e instanceof c&&(e.status===409||e.status===404)||J(x(e))}F.value=nt(F.value,e),B.value++}function wr(e,t){i(`alisio.draft.${e}`,t||void 0)}var Tr=e=>t(`alisio.draft.${e}`)??``;export{dn as $,We as $t,Tn as A,ut as At,L as B,Re as Bt,P as C,Lt as Ct,cr as D,Ft as Dt,A as E,It as Et,Gn as F,Ze as Ft,Vn as G,h as Gt,gn as H,p as Ht,Tr as I,Qe as It,Mn as J,Ge as Jt,or as K,Ie as Kt,xr as L,Ye as Lt,Nn as M,xt as Mt,R as N,bt as Nt,Sr as O,jt as Ot,tr as P,st as Pt,In as Q,g as Qt,On as R,x as Rt,I as S,Bt as St,pn as T,Pt as Tt,Un as U,Pe as Ut,nr as V,m as Vt,Q as W,qe as Wt,Wn as X,Le as Xt,ir as Y,b as Yt,Dn as Z,Ke as Zt,br as _,M as _t,yn as a,Oe as an,En as at,xn as b,ln as bt,hn as c,xe as cn,dr as ct,G as d,de as dn,J as dt,He as en,Y as et,Hn as f,pe as fn,k as ft,zn as g,l as gn,V as gt,U as h,c as hn,_r as ht,z as i,je as in,wr as it,B as j,ht as jt,j as k,lt as kt,mn as l,Se as ln,ur as lt,un as m,ue as mn,fn as mt,kn as n,Me as nn,wn as nt,vn as o,Te as on,pr as ot,Fn as p,le as pn,lr as pt,ar as q,Fe as qt,rr as r,Ae as rn,N as rt,bn as s,me as sn,fr as st,sr as t,Ue as tn,gr as tt,Cr as u,be as un,_n as ut,Pn as v,Ln as vt,Cn as w,zt as wt,yr as x,Rt as xt,H as y,O as yt,Sn as z,_ as zt};
|
|
@@ -0,0 +1,3 @@
|
|
|
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
|
+
|
|
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":`Análisis de datos`,"settings.analysis.title":`Análisis de datos`,"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.`};export{e as es};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{h as e,o as t,r as n}from"./i18n-
|
|
1
|
+
import{h as e,o as t,r as n}from"./i18n-BZax1Psk.js";import{E as r,M as i,Rt as a,_t as o,d as s,dt as c,gn as l,hn as u,yt as d}from"./app-D95B_PAO.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`,"detail.repeated_reply":`the same reply repeated`,"detail.no_tool_turns":`several turns without tool calls`,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`,"detail.repeated_reply":`se repitió la misma respuesta`,"detail.no_tool_turns":`varios turnos sin llamar a herramientas`,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 s.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 u&&t.code===`goal_conflict`?(c(m(`changed`)),await D(e)):c(m(`failed`,{error:a(t)}));return}finally{y.value=!1}}var k=e=>`/api/sessions/${encodeURIComponent(e)}/goal`;async function A(e){await O(e.sessionId,()=>s.request(`POST`,`${k(e.sessionId)}/pause`,{expect:E(e)}))}async function j(e){await O(e.sessionId,()=>s.request(`POST`,`${k(e.sessionId)}/resume`,{expect:E(e)}))}async function M(e){if(!window.confirm(m(`clearConfirm`)))return;let{goalId:t,epoch:n}=E(e);await O(e.sessionId,()=>s.request(`DELETE`,`${k(e.sessionId)}?goalId=${encodeURIComponent(t)}&epoch=${n}`))}async function N(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 s.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 s.request(`POST`,`/api/sessions/${encodeURIComponent(i)}/commands`,{requestId:l(),name:`goal`,args:`budget=${t}`}),!0});return o&&(v.value=!1),!!o}async function P(e,t){let n=n=>s.request(`POST`,`/api/sessions/${encodeURIComponent(e)}/commands`,{requestId:l(),name:`goal`,...t?{args:t}:{},...n?{confirm:!0}:{}}),i=t=>{r.value===e&&(o.value=d(o.value,t))};try{let t;try{t=await n(!1)}catch(e){if(!(e instanceof u&&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**: ${a(e)}`)}}export{w as barActions,x as budgetLevel,b as budgetPercent,M as clearGoal,S as compactTokens,v as editing,C as formatElapsed,T as hasReport,g as i,_ as n,A as pauseGoal,h as r,j as resumeGoal,P as runGoalCommand,N as saveGoal,m as t,y as working};
|