UNPKG

openclaw

Version:

Multi-channel AI gateway with extensible messaging integrations

843 lines 199 kB
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./composer-draft-store.runtime-BBDzpAf3.js","./control-ui-boot-shared-DfZ39Yj9.js","./rolldown-runtime-DkW27tQK.js","./control-ui-foundation-Cydpkyqa.js","./control-ui-core-Rwzhj6nO.js","./lit-runtime-CV_MH99K.js","./control-ui-core-YphAl4aM.js","./control-ui-core-vvcQQV2m.js","./gateway-runtime-Bqqcp9-I.js","./control-ui-core-ClxHIvNM.css","./control-ui-boot-shared-BYq7Cchl.js","./control-ui-boot-shared-Deak_Sjt.js","./control-ui-boot-shared-gfE6fZcA.js","./markdown-runtime-Bn6OdBVq.js","./control-ui-boot-shared-CXVvK2AW.js","./control-ui-boot-shared-3juXI2I2.js","./control-ui-boot-shared-BVNXvWX-.js","./control-ui-boot-shared-KspYIvAF.css"])))=>i.map(i=>d[i]);
import{n as e,r as t}from"./rolldown-runtime-DkW27tQK.js";import{Cn as n,Ii as r,Kn as i,Qi as a,R as o,_i as s,en as c,ii as l,in as u,qt as d,ri as f,ta as p,vt as m,wr as h,xt as g,z as _}from"./control-ui-foundation-Cydpkyqa.js";import{As as v,At as y,Bi as b,Bn as x,Cc as S,E as ee,Eo as C,F as te,Fa as ne,Ga as w,H as re,Nt as T,Oo as E,Pt as D,Qn as ie,Sc as ae,Ts as oe,Un as se,Vn as ce,Wa as O,Wi as le,Xn as ue,Xs as de,Zn as fe,_t as pe,ac as me,b as he,bc as ge,bt as _e,c as ve,ea as ye,ec as be,ht as xe,ic as Se,k as Ce,ls as we,nc as Te,oa as Ee,os as De,qn as Oe,s as ke,sa as Ae,ss as je,ta as k,vt as Me,w as Ne,ws as Pe,yc as Fe,yt as Ie,za as Le,zn as Re}from"./control-ui-core-Rwzhj6nO.js";import{$ as ze,C as Be,K as A,L as Ve,Q as He,X as j,at as Ue,b as We,c as Ge,d as Ke,f as qe,q as M,st as Je,u as Ye,z as Xe}from"./lit-runtime-CV_MH99K.js";import{F as Ze,Fn as Qe,J as $e,Jt as et,Mt as tt,Nn as nt,Yn as rt,Z as it,Zt as at,_ as ot,at as st,cn as ct,g as lt,jt as ut,lr as dt,nn as N,qt as ft,rn as pt,sn as mt,tn as ht,ur as gt}from"./control-ui-core-YphAl4aM.js";import{Gt as P,Ht as _t,Kt as vt,Rt as yt,Wt as F,Yt as I,an as bt,en as L,in as xt,qt as St}from"./control-ui-core-vvcQQV2m.js";import{At as Ct,B as wt,Ot as Tt,U as R,V as Et,n as Dt,z as Ot}from"./control-ui-boot-shared-BYq7Cchl.js";import{a as z,n as B,r as V}from"./gateway-runtime-Bqqcp9-I.js";import{At as kt,Cr as At,Dt as jt,Et as Mt,Ft as Nt,G as Pt,Hn as Ft,I as It,Io as Lt,L as H,Ma as Rt,Ot as zt,Ro as Bt,Sr as Vt,Tt as Ht,U as Ut,Wn as Wt,ar as Gt,co as Kt,fo as qt,gt as Jt,ir as Yt,ja as Xt,kt as Zt,po as U,ro as Qt,xr as $t,yt as en,zo as tn}from"./control-ui-boot-shared-DfZ39Yj9.js";import{$ as nn,$n as rn,A as an,Au as on,B as sn,Bc as cn,Bu as ln,C as un,Cn as dn,D as fn,Dn as pn,Du as mn,Ec as hn,Eu as gn,Fc as _n,G as vn,Gt as yn,H as bn,Ho as xn,Hu as Sn,I as Cn,J as wn,Jc as Tn,Jt as En,K as Dn,Ku as On,Mu as kn,N as An,Nc as jn,O as Mn,On as Nn,Ou as W,Pc as Pn,Q as Fn,Rc as In,Ru as Ln,S as Rn,St as zn,T as Bn,Tn as Vn,Tu as Hn,U as Un,Un as Wn,V as Gn,Vn as Kn,Vo as qn,W as Jn,Wu as Yn,X as Xn,Y as Zn,Yc as Qn,Z as $n,_ as er,_a as tr,_n as nr,_t as rr,aa as ir,at as ar,b as or,bu as sr,ca as cr,cn as lr,ct as ur,da as dr,dn as fr,ds as pr,dt as mr,er as hr,et as gr,f as _r,fa as vr,fn as yr,fs as br,ft as xr,ga as Sr,gn as Cr,gs as wr,gt as Tr,h as Er,in as Dr,ir as Or,it as kr,ju as G,k as Ar,kc as jr,ku as Mr,la as Nr,ln as Pr,lt as Fr,m as Ir,ma as Lr,mn as K,mt as Rr,nn as zr,nt as Br,oa as Vr,ot as Hr,p as Ur,pa as Wr,pn as Gr,qc as Kr,rn as qr,rt as Jr,sn as Yr,st as Xr,tn as Zr,tr as Qr,tt as $r,ua as ei,un as ti,ut as ni,v as ri,vn as ii,vs as ai,vt as oi,vu as si,w as ci,wn as li,x as ui,xn as di,xu as fi,y as pi,yn as mi,z as hi,zc as gi,zu as _i}from"./control-ui-boot-shared-CXVvK2AW.js";function vi(){return(vi=e((()=>{Rt(),customElements.get(`openclaw-agent-select`)||customElements.define(`openclaw-agent-select`,Xt)})))()}var yi,bi;function xi(){return(xi=e((()=>{bt(),yi={login:{passwordPlaceholder:`optional`,showToken:`Show token`,hideToken:`Hide token`,toggleTokenVisibility:`Toggle token visibility`,showPassword:`Show password`,hidePassword:`Hide password`,togglePasswordVisibility:`Toggle password visibility`,failure:{rawError:`Raw error`,profileUnavailable:{title:`Profile verification unavailable`,stepRetry:`Retry shortly.`,stepAdmin:`If this continues, ask a Gateway administrator to check the identity provider and GitHub API credential.`},verifiedUserRequired:{title:`Verified identity required`,summary:`This Gateway has named roles enabled. Device and setup tokens cannot identify a person.`,stepIdentity:`Reconnect through the trusted proxy or Tailscale so the Gateway can verify your identity.`,stepSharedSecret:`For trusted local operator access, use the shared Gateway token or password.`},authRequired:{title:`Auth required`,summary:`The Gateway is reachable, but it needs a matching token or password before this browser can connect.`,stepPaste:`Paste the token from openclaw gateway auth-token --show or enter the configured password.`,stepGenerate:`If no token is configured, run openclaw doctor --generate-gateway-token on the gateway host.`,stepConnect:`Click Connect again after updating the credential.`},authFailed:{title:`Auth did not match`,summary:`The supplied credential was rejected. The most common cause is a stale token or a token copied from another Gateway URL.`,stepDashboard:`Run openclaw dashboard --no-open for a fresh URL, or openclaw gateway auth-token --show to recover the token.`,stepReplace:`Replace stale token/password values; do not reuse a token from another Gateway URL.`,stepMode:`Use one matching auth mode at a time: gateway token for token mode, password for password mode.`},trustedProxy:{title:`Proxy authentication required`,summary:`The Gateway is reachable, but it rejected the proxy identity or forwarding information.`,stepSignIn:`Open the configured authenticated proxy or SSO dashboard URL and sign in there, rather than visiting the Gateway directly.`,stepHeaders:`Ask the Gateway administrator to check for missing identity headers and required-header forwarding on WebSocket upgrade requests, and confirm your account is permitted.`,stepNoToken:`A Gateway token cannot replace proxy authentication.`},rateLimited:{title:`Too many failed attempts`,summary:`The Gateway is temporarily limiting authentication attempts for this client.`,stepStop:`Stop retrying from this tab for a moment.`,stepWait:`Wait for the auth limiter to cool down, then reconnect with the corrected credential.`,stepCheckClients:`If this is a shared host, check other clients for repeated bad retries.`},pairing:{title:`Device pairing required`,scopeTitle:`Scope upgrade pending`,roleTitle:`Role upgrade pending`,metadataTitle:`Device refresh pending`,summary:`This browser needs one-time approval from the Gateway host before it can use the Control UI.`,upgradeSummary:`This browser is already known, but the requested access changed and needs a fresh approval.`,stepDashboard:`On the Gateway host, run openclaw dashboard to open a secure one-time pairing link.`,stepList:`Run openclaw devices list on the Gateway host.`,stepApproveId:`Approve this request: openclaw devices approve {requestId}.`,stepApprove:`Approve the pending browser/device request from that list.`,stepReconnect:`Reconnect after the approval completes.`},insecure:{title:`Secure browser context required`,summary:`This page is running over plain HTTP, so the browser cannot create the device identity the Gateway expects.`,stepHttps:`Use HTTPS/Tailscale Serve, or open http://127.0.0.1:18789 on the Gateway host.`,stepAvoidDisable:`Do not use a remote plain-HTTP URL; a token or password cannot replace browser device identity.`},origin:{title:`Browser origin not allowed`,summary:`The Gateway rejected this page origin before accepting the Control UI connection.`,stepAllowedOrigins:`Add this browser origin to gateway.controlUi.allowedOrigins.`,stepFullOrigin:`Use full origins such as http://localhost:5173, not wildcard patterns.`,stepRestart:`Restart or reload the Gateway after changing allowed origins.`},protocol:{title:`Protocol mismatch`,summary:`The served Control UI and the running Gateway do not agree on the supported connection protocol.`,refresh:`Refresh page`,stepDashboard:`Reopen the served dashboard with openclaw dashboard so the UI and Gateway come from the same install.`,stepDevUi:`If using pnpm ui:dev, rebuild or restart the dev UI against the current checkout.`,stepRestart:`Restart the Gateway after updating OpenClaw so it serves the current protocol.`},network:{title:`Could not connect`,summary:`The browser could not complete the Gateway connection. Check the target and transport before retrying credentials.`,stepGateway:`Confirm the Gateway is running with openclaw status or openclaw gateway run.`,stepUrl:`Check the WebSocket URL and use wss:// when the Gateway is behind HTTPS/Tailscale Serve.`,stepDashboard:`Reopen the dashboard with openclaw dashboard --no-open to recopy the current URL and auth details.`}}}},bi=Object.assign(()=>{Object.assign(xt.login,yi.login)},{catalog:yi})})))()}function q(e){let t=e.docsHref??`https://docs.openclaw.ai/web/dashboard`,n=pe(e.rawError);return{kind:e.kind,title:L(e.titleKey,e.stepParams),summary:e.summaryKey?L(e.summaryKey,e.stepParams):n,refreshAction:e.refreshAction,steps:e.stepKeys.map(t=>typeof t==`string`?{text:L(t,e.stepParams),commands:[]}:{text:L(t.key,e.stepParams),commands:t.commands}),docsHref:t,rawError:n}}function Si(e){if(e.connected||!e.lastError)return null;let t=e.lastError,n=e.lastErrorCode??null,r=a(t);if(n===c.AUTHENTICATED_PROFILE_UNAVAILABLE)return q({kind:`profile-unavailable`,rawError:t,titleKey:`login.failure.profileUnavailable.title`,stepKeys:[`login.failure.profileUnavailable.stepRetry`,`login.failure.profileUnavailable.stepAdmin`],docsHref:`https://docs.openclaw.ai/concepts/user-model#gateway-profile-and-github-credit`});if(n===c.AUTH_VERIFIED_USER_REQUIRED)return q({kind:`verified-user-required`,rawError:t,titleKey:`login.failure.verifiedUserRequired.title`,summaryKey:`login.failure.verifiedUserRequired.summary`,stepKeys:[`login.failure.verifiedUserRequired.stepIdentity`,`login.failure.verifiedUserRequired.stepSharedSecret`],docsHref:`https://docs.openclaw.ai/gateway/operator-scopes`});if(n===c.CONTROL_UI_BUILD_MISMATCH)return q({kind:`build-mismatch`,rawError:t,titleKey:`chat.sidebar.serverUpdatedTitle`,summaryKey:`chat.sidebar.serverUpdatedRefresh`,refreshAction:{label:L(`login.failure.protocol.refresh`)},stepKeys:[],docsHref:`https://docs.openclaw.ai/web/control-ui`});let i=Ie(!1,t,n);if(i){let e=i.requestId?`openclaw devices approve ${i.requestId}`:null;return q({kind:`pairing-required`,rawError:t,docsHref:`https://docs.openclaw.ai/web/control-ui#device-pairing-first-connection`,titleKey:i.kind===`scope-upgrade-pending`?`login.failure.pairing.scopeTitle`:i.kind===`role-upgrade-pending`?`login.failure.pairing.roleTitle`:i.kind===`metadata-upgrade-pending`?`login.failure.pairing.metadataTitle`:`login.failure.pairing.title`,summaryKey:i.kind===`pairing-required`?`login.failure.pairing.summary`:`login.failure.pairing.upgradeSummary`,stepKeys:[{key:`login.failure.pairing.stepDashboard`,commands:[`openclaw dashboard`]},{key:`login.failure.pairing.stepList`,commands:[`openclaw devices list`]},e?{key:`login.failure.pairing.stepApproveId`,commands:[e]}:`login.failure.pairing.stepApprove`,`login.failure.pairing.stepReconnect`],stepParams:{requestId:i.requestId??``}})}if(n===c.AUTH_RATE_LIMITED||r.includes(`too many failed authentication attempts`)||r.includes(`rate limit`))return q({kind:`auth-rate-limited`,rawError:t,titleKey:`login.failure.rateLimited.title`,summaryKey:`login.failure.rateLimited.summary`,stepKeys:[`login.failure.rateLimited.stepStop`,`login.failure.rateLimited.stepWait`,`login.failure.rateLimited.stepCheckClients`]});if(_e(!1,t,n))return q({kind:`insecure-context`,rawError:t,docsHref:`https://docs.openclaw.ai/web/control-ui#insecure-http`,titleKey:`login.failure.insecure.title`,summaryKey:`login.failure.insecure.summary`,stepKeys:[`login.failure.insecure.stepHttps`,`login.failure.insecure.stepAvoidDisable`]});if(n===c.CONTROL_UI_ORIGIN_NOT_ALLOWED||r.includes(`origin not allowed`))return q({kind:`origin-not-allowed`,rawError:t,docsHref:`https://docs.openclaw.ai/web/control-ui#debuggingtesting-dev-server--remote-gateway`,titleKey:`login.failure.origin.title`,summaryKey:`login.failure.origin.summary`,stepKeys:[`login.failure.origin.stepAllowedOrigins`,`login.failure.origin.stepFullOrigin`,`login.failure.origin.stepRestart`]});if(r.includes(`protocol mismatch`))return q({kind:`protocol-mismatch`,rawError:t,docsHref:`https://docs.openclaw.ai/web/control-ui#debuggingtesting-dev-server--remote-gateway`,titleKey:`login.failure.protocol.title`,summaryKey:`login.failure.protocol.summary`,refreshAction:{label:L(`login.failure.protocol.refresh`)},stepKeys:[{key:`login.failure.protocol.stepDashboard`,commands:[`openclaw dashboard`]},{key:`login.failure.protocol.stepDevUi`,commands:[`pnpm ui:dev`]},`login.failure.protocol.stepRestart`]});let o=Me(e);return q(o===`trusted-proxy`?{kind:`trusted-proxy`,rawError:t,titleKey:`login.failure.trustedProxy.title`,summaryKey:`login.failure.trustedProxy.summary`,stepKeys:[`login.failure.trustedProxy.stepSignIn`,`login.failure.trustedProxy.stepHeaders`,`login.failure.trustedProxy.stepNoToken`],docsHref:`https://docs.openclaw.ai/gateway/trusted-proxy-auth`}:o===`required`?{kind:`auth-required`,rawError:t,titleKey:`login.failure.authRequired.title`,summaryKey:`login.failure.authRequired.summary`,stepKeys:[{key:`login.failure.authRequired.stepPaste`,commands:[`openclaw gateway auth-token --show`]},{key:`login.failure.authRequired.stepGenerate`,commands:[`openclaw doctor --generate-gateway-token`]},`login.failure.authRequired.stepConnect`]}:o===`failed`?{kind:`auth-failed`,rawError:t,titleKey:`login.failure.authFailed.title`,summaryKey:`login.failure.authFailed.summary`,stepKeys:[{key:`login.failure.authFailed.stepDashboard`,commands:[`openclaw dashboard --no-open`,`openclaw gateway auth-token --show`]},`login.failure.authFailed.stepReplace`,`login.failure.authFailed.stepMode`]}:{kind:`network`,rawError:t,titleKey:`login.failure.network.title`,summaryKey:`login.failure.network.summary`,stepKeys:[{key:`login.failure.network.stepGateway`,commands:[`openclaw status`,`openclaw gateway run`]},`login.failure.network.stepUrl`,{key:`login.failure.network.stepDashboard`,commands:[`openclaw dashboard --no-open`]}]})}function Ci(){ft(!0)&&window.location.reload()}function wi({text:e,commands:t}){let n=new Set(t),r=[...n].map(t=>[t,e.indexOf(t)]).toSorted(([e,t],[n,r])=>t-r||n.length-e.length),i=[],a=0;for(let[t,o]of r)o<a||(i.push(e.slice(a,o),H(t)),n.delete(t),a=o+t.length);i.push(e.slice(a));for(let e of n)i.push(` `,H(e));return i}function Ti(e){return j`
    <div
      class="callout danger login-gate__failure"
      role="alert"
      aria-live="polite"
      data-kind=${e.kind}
    >
      <div class="login-gate__failure-title">${e.title}</div>
      <div class="login-gate__failure-summary">${e.summary}</div>
      ${e.refreshAction?j`
              <button
                type="button"
                class="btn primary login-gate__failure-refresh"
                @click=${Ci}
              >
                ${e.refreshAction.label}
              </button>
            `:M}
      <ol class="login-gate__failure-steps">
        ${e.steps.map(e=>j`<li>${wi(e)}</li>`)}
      </ol>
      <details class="login-gate__failure-detail">
        <summary>${L(`login.failure.rawError`)}</summary>
        <div class="login-gate__failure-raw mono">${e.rawError}</div>
      </details>
      <a
        class="session-link login-gate__failure-docs"
        href=${e.docsHref}
        target=${$t}
        rel=${Vt()}
        >${L(`common.learnMore`)}</a
      >
    </div>
  `}function Ei(e){let t=s(e.resourceBasePath),n=nt(`favicon.svg`,t),r=Si(e);return j`
    <div class="login-gate">
      <openclaw-toast-host></openclaw-toast-host>
      <div class="login-gate__card">
        <div class="login-gate__header">
          <img class="login-gate__logo" src=${n} alt="OpenClaw" />
          <div class="login-gate__title">OpenClaw</div>
          <div class="login-gate__sub">${L(`login.subtitle`)}</div>
        </div>
        <div class="login-gate__form">
          <label class="field">
            <span>${L(`connection.access.wsUrl`)}</span>
            <input
              inputmode="url"
              autocapitalize="none"
              autocorrect="off"
              autocomplete="off"
              spellcheck="false"
              enterkeyhint="go"
              .value=${e.gatewayUrl}
              @input=${t=>{e.onGatewayUrlChange(t.target.value)}}
              @keydown=${t=>{t.key===`Enter`&&e.onConnect()}}
              placeholder="ws://127.0.0.1:18789"
            />
          </label>
          <label class="field">
            <span>${L(`connection.access.token`)}</span>
            <span class="settings-secret">
              <input
                type=${e.showGatewayToken?`text`:`password`}
                autocomplete="off"
                spellcheck="false"
                enterkeyhint="go"
                .value=${e.token}
                @input=${t=>{e.onTokenChange(t.target.value)}}
                placeholder="OPENCLAW_GATEWAY_TOKEN (${L(`login.passwordPlaceholder`)})"
                @keydown=${t=>{t.key===`Enter`&&e.onConnect()}}
              />
              <openclaw-tooltip
                .content=${e.showGatewayToken?L(`login.hideToken`):L(`login.showToken`)}
              >
                <button
                  type="button"
                  class="settings-secret__toggle"
                  aria-label=${L(`login.toggleTokenVisibility`)}
                  aria-pressed=${e.showGatewayToken}
                  @click=${e.onToggleGatewayToken}
                >
                  ${e.showGatewayToken?F.eye:F.eyeOff}
                </button>
              </openclaw-tooltip>
            </span>
          </label>
          <label class="field">
            <span>${L(`connection.access.password`)}</span>
            <span class="settings-secret">
              <input
                type=${e.showGatewayPassword?`text`:`password`}
                autocomplete="off"
                spellcheck="false"
                enterkeyhint="go"
                .value=${e.password}
                @input=${t=>{e.onPasswordChange(t.target.value)}}
                placeholder="${L(`login.passwordPlaceholder`)}"
                @keydown=${t=>{t.key===`Enter`&&e.onConnect()}}
              />
              <openclaw-tooltip
                .content=${e.showGatewayPassword?L(`login.hidePassword`):L(`login.showPassword`)}
              >
                <button
                  type="button"
                  class="settings-secret__toggle"
                  aria-label=${L(`login.togglePasswordVisibility`)}
                  aria-pressed=${e.showGatewayPassword}
                  @click=${e.onToggleGatewayPassword}
                >
                  ${e.showGatewayPassword?F.eye:F.eyeOff}
                </button>
              </openclaw-tooltip>
            </span>
          </label>
          <button class="btn primary login-gate__connect" @click=${e.onConnect}>
            ${L(`common.connect`)}
          </button>
        </div>
        ${r?Ti(r):``}
        <details class="login-gate__help">
          <summary class="login-gate__help-title">${L(`connection.help.title`)}</summary>
          <ol class="login-gate__steps">
            <li>${L(`connection.help.step1`)}${H(`openclaw gateway run`)}</li>
            <li>${L(`connection.help.step2`)} ${H(`openclaw dashboard`)}</li>
            <li>${L(`connection.help.step3`)}</li>
          </ol>
          <div class="login-gate__docs">
            <a
              class="session-link"
              href="https://docs.openclaw.ai/web/dashboard"
              target="_blank"
              rel="noreferrer"
              >${L(`connection.help.docsLink`)}</a
            >
          </div>
        </details>
      </div>
    </div>
  `}var Di;function Oi(){return(Oi=e((()=>{A(),ze(),u(),rt(),et(),Qe(),I(),Ee(),xi(),xe(),At(),ae(),It(),P(),bi(),Di=class extends Fe{render(){return this.props?Ei(this.props):M}},h([Je({attribute:!1})],Di.prototype,`props`,void 0),customElements.get(`openclaw-login-gate`)||customElements.define(`openclaw-login-gate`,Di)})))()}function J(e){return e.split(/[\\/]/).findLast(e=>e.length>0)??e}function ki(e){let t=e.replace(/[\\/]+$/u,``),n=Math.max(t.lastIndexOf(`/`),t.lastIndexOf(`\\`));if(!(n<0))return J(n===0?t.slice(0,1):t.slice(0,n))||void 0}function Ai(e){return e.startsWith(`/`)||e.startsWith(`\\`)||/^[A-Za-z]:[\\/]/.test(e)}function ji(e){if(!Ai(e))return null;let t=e.trim().replaceAll(`\\`,`/`),n=/^[A-Za-z]:\//u.test(t)||t.startsWith(`//`),r=[],i=/^[A-Za-z]:\//u.test(t)?1:t.startsWith(`//`)?2:0;for(let e of t.split(`/`))if(!(!e||e===`.`)){if(e===`..`){r.length>i&&r.pop();continue}r.push(e)}let a=`${t.startsWith(`//`)?`//`:t.startsWith(`/`)?`/`:``}${r.join(`/`)}`.replace(/\/+$/u,``)||`/`;return n?a.toLowerCase():a}function Mi(e,t){let n=ji(e),r=ji(t);return!n||!r?!1:r===n||r.startsWith(n===`/`?n:`${n}/`)}function Ni(e,t){return e.some(e=>Mi(e,t))}function Pi(){return(Pi=e((()=>{})))()}function Fi(e){let t=e.listing?.entries??[],n=e.registerProjectPath;return j`
    <div
      class="new-session-page__browser"
      @keydown=${t=>{t.key===`Escape`&&(t.preventDefault(),t.stopImmediatePropagation(),e.onBack())}}
    >
      <div class="new-session-page__browser-head">
        <button
          type="button"
          class="new-session-page__browser-nav"
          title=${L(`newSession.browserUp`)}
          aria-label=${L(`newSession.browserUp`)}
          @click=${()=>{e.listing?.parent?e.onNavigate(e.listing.parent):e.onBack()}}
        >
          ${F.arrowLeft}
        </button>
        <input
          class="new-session-page__browser-path"
          type="text"
          aria-label=${L(`newSession.folder`)}
          placeholder=${e.label}
          .value=${e.pathDraft}
          @input=${t=>{e.onPathDraftChange(t.target.value)}}
          @keydown=${t=>{t.key===`Enter`&&(t.preventDefault(),e.onNavigate(e.pathDraft.trim()||void 0))}}
        />
        ${e.loading?j`<span class="new-session-page__browser-loading">${L(`common.loading`)}</span>`:M}
        <button
          type="button"
          class="new-session-page__browser-nav"
          title=${L(`common.close`)}
          aria-label=${L(`common.close`)}
          @click=${e.onClose}
        >
          ${F.x}
        </button>
      </div>
      ${e.error?j`<div class="new-session-page__error">${e.error}</div>`:M}
      <div class="new-session-page__browser-list" role="group" aria-label=${L(`newSession.folder`)}>
        ${e.listing&&t.length===0&&!e.loading?j`<div class="new-session-page__browser-empty">
                ${L(`newSession.browserEmpty`)}
              </div>`:M}
        ${t.map(t=>j`
            <button
              type="button"
              class="new-session-page__browser-entry ${t.hidden?`new-session-page__browser-entry--hidden`:``}"
              title=${t.hidden?L(`newSession.hiddenFolder`):M}
              @click=${()=>e.onNavigate(t.path)}
            >
              <span class="new-session-page__target-icon" aria-hidden="true">${F.folder}</span>
              <span>${t.name}</span>
            </button>
          `)}
      </div>
      <div class="new-session-page__browser-actions">
        ${n?j`
                <button
                  type="button"
                  class="new-session-page__browser-register"
                  ?disabled=${e.registeringProject}
                  @click=${()=>e.onRegisterProject(n)}
                >
                  ${L(`newSession.registerProject`)}
                </button>
              `:M}
        <button
          type="button"
          class="new-session-page__browser-use"
          ?disabled=${e.usablePath===null||e.registeringProject}
          @click=${()=>{e.usablePath!==null&&(e.onApplyFolder(e.usablePath),e.onClose())}}
        >
          ${L(`newSession.browserUse`)}
        </button>
      </div>
    </div>
  `}function Ii(){return(Ii=e((()=>{A(),P(),I()})))()}function Li(){return(Li=e((()=>{})))()}function Ri(){return(Ri=e((()=>{Dt()})))()}var zi;function Bi(){return(Bi=e((()=>{zi=class{constructor(){this.overrides=new Map}clear(){this.overrides.clear()}applyPending(e,t){t?this.overrides.set(e,t):this.overrides.delete(e)}resolve(e){return this.overrides.get(e)??``}select(e,t,n,r=!1,i){if(r)return!1;let a=n.find(t=>t.id===e)?.machines?.find(e=>e.id===t);return a?(a.default===!0?this.overrides.delete(e):this.overrides.set(e,a.id),i?.(),!0):!1}}})))()}var Vi,Hi;function Ui(){return(Ui=e((()=>{bt(),Vi={newSession:{cloudRequiresWorktree:`Cloud needs a Git checkout`,restoringPreferences:`Restoring your last session setup…`,checkingPlace:`Checking the selected place…`,agentsUnavailable:`No agents are available on this Gateway yet.`,terminalHostUnavailable:`Native CLI host unavailable. Check that the CLI is installed and the node is connected with its fresh-start command approved, then retry the catalog.`,terminalDisabled:`Enable CLI agents and terminals in Gateway settings to start a native CLI.`,terminalPlacementUnsupported:`Native CLI sessions use a specific host, not OpenClaw worker placement. Reset this draft and choose a native host.`,terminalNeedsFolder:`Pick a folder before starting in a terminal.`,noSessionHosts:`No session hosts are paired. Connect a machine with session hosting enabled.`,deviceUnavailable:`Device unavailable. Reconnect it and try again.`,sessionHostingDisabled:`Session hosting is disabled. Run openclaw connect --service --session-host on the device.`,deviceCapacityUnavailable:`Worker capacity is unavailable. Restart the device session host and try again.`,deviceNoSlots:`No worker slots are available. Wait for a slot or pick another device.`,connectMachineTitle:`Connect a machine`,connectMachineDescription:`Run this command on the machine you want to connect.`,connectMachineGenerating:`Creating a secure connection link…`,connectMachineFailed:`Couldn't create a connection link.`,connectMachineMissingUrl:`The Gateway did not return a join URL. Update it and try again.`,connectMachineUnavailable:`Reconnect to the Gateway and try again.`,connectMachineTeamHint:`Running it pairs that machine as a device for your team.`,connectMachineSingleUse:`This link is single-use and expires soon.`,connectMachineSingleUseExpires:`This link is single-use and expires at {time}.`,connectMachineFreshCode:`Mint fresh code`,connectMachineRefreshing:`Minting…`,connectMachineManageDevices:`Manage devices`}},Hi=Object.assign(()=>{Object.assign(xt.newSession,Vi.newSession)},{catalog:Vi})})))()}function Wi(e){let[t=``,...n]=e.trim().split(/\s+/u),r=t===t.toLowerCase()?`${t.charAt(0).toUpperCase()}${t.slice(1)}`:t;return[Gi[t.toLowerCase()]??r,...n].join(` `)}var Gi;function Ki(){return(Ki=e((()=>{Gi={macos:`macOS`,darwin:`macOS`,win32:`Windows`,windows:`Windows`,linux:`Linux`,ios:`iOS`,ipados:`iPadOS`,watchos:`watchOS`,android:`Android`,web:`Web`}})))()}function qi(e){if(e.connected)return;let t=e.environment;if(t?.lastConnectedAtMs===void 0)return L(`newSession.neverConnected`);if(t.lastDisconnectedAtMs!==void 0){let n=he(Math.max(0,e.nowMs-t.lastDisconnectedAtMs))??L(`common.justNow`);return L(`newSession.offlineFor`,{duration:n})}let n=t.lastSeenAtMs??t.lastConnectedAtMs;return L(`newSession.lastSeen`,{time:Ne(n)})}function Ji(e,t={}){let n=e?.issues?.find(e=>e.code===`update-required`),r=qi({environment:e,connected:t.connected??!0,nowMs:t.nowMs??Date.now()}),i=n?L(`newSession.nodeUpdateRequired`,{updateCommand:n.updateCommand,restartCommand:n.headlessReconnectCommand}):r,a=i?[i]:[];e?.platform&&a.push(Wi(e.platform));for(let t of e?.capabilities??[]){let e=t.split(`.`,1)[0]?.toLowerCase(),n=e?Yi[e]:void 0,r=n?L(n):void 0;if(r&&!a.includes(r)&&a.push(r),a.length>=4)break}return a}var Yi;function Xi(){return(Xi=e((()=>{I(),Ce(),Ki(),Yi={camera:`newSession.capabilityCamera`,location:`newSession.capabilityLocation`,talk:`newSession.capabilityTalk`,screen:`newSession.capabilityScreenCapture`,canvas:`newSession.capabilityCanvas`,microphone:`newSession.capabilityVoice`,voice:`newSession.capabilityVoice`}})))()}function Zi(e,t,n){let r=new Map;for(let[n,i]of e.entries()){let e=t(i);r.set(e,[...r.get(e)??[],n])}let i=e.map(()=>void 0);for(let t of r.values()){if(t.length<2)continue;let r=n.at(-1);if(!r)continue;let a=n.find(n=>{let i=t.map(t=>n(e[t])??r(e[t]));return i.every(e=>e!==void 0)&&new Set(i).size===t.length})??r;for(let n of t)i[n]=a(e[n])??r(e[n])}return i}function Qi(e,t){let n=e.issues?.find(e=>e.code===`update-required`);if(n)return L(`newSession.nodeUpdateRequired`,{updateCommand:n.updateCommand,restartCommand:n.headlessReconnectCommand});if(e.status!==`available`)return L(`newSession.deviceUnavailable`);if(e.sessionHost!==!0)return L(`newSession.sessionHostingDisabled`);if(t.requiredNodeCommands.length>0){let t=e.requiredNodeCommand;if(!t)return L(`newSession.placementNotReady`);if(t.state===`pending-approval`)return L(`newSession.nodeCommandPendingApproval`,{command:t.command});if(t.state===`undeclared`)return L(`newSession.nodeCommandUndeclared`,{command:t.command});if(t.state===`unauthorized`)return L(`newSession.nodeCommandUnauthorized`,{command:t.command})}if(t.consumesWorkerSlot)return e.workerSlots?e.workerSlots.available===0?L(`newSession.deviceNoSlots`):void 0:L(`newSession.deviceCapacityUnavailable`)}function $i(e,t=ta,n){let r=(e??[]).flatMap(e=>{if(e.type!==`node`||!e.id.startsWith(`node:`))return[];let r=e.id.slice(5).trim();if(!r)return[];let i=n??Qi(e,t),a=Ji(e,{connected:e.status===`available`}),o=+((e.issues?.length??0)>0||e.status!==`available`),s=i&&!a.includes(i)?[...a.slice(0,o),i,...a.slice(o)].slice(0,4):a;return[{deviceId:r,label:e.label??r,facts:n?[n]:s,workerSlots:e.workerSlots,capabilities:e.capabilities,invocableCommands:e.invocableCommands,selectable:i===void 0,...i?{disabledReason:i}:{}}]}).toSorted((e,t)=>e.label.localeCompare(t.label)||e.deviceId.localeCompare(t.deviceId)),i=Zi(r,e=>e.label,[e=>e.deviceId.slice(0,8)]),a=[];for(let[e,t]of r.entries()){let n=i[e];a.push(n?{...t,subtitle:n}:t)}return a}function ea(e,t,n){if(n)return n;let r=new Set((e??[]).filter(e=>e.type===`node`&&e.sessionHost===!0).map(e=>e.id));if(r.size===0){let t=(e??[]).find(e=>e.issues?.some(e=>e.code===`update-required`));return t?Qi(t,ta):L(`newSession.noSessionHosts`)}return t.some(e=>e.selectable)?void 0:t.find(e=>r.has(`node:${e.deviceId}`))?.disabledReason}var ta;function na(){return(na=e((()=>{I(),Ui(),Xi(),Hi(),ta={requiredNodeCommands:[],consumesWorkerSlot:!0}})))()}function ra(e){if(e.mode===`discrete`&&e.total<=12)return j`<span
      class="capacity-meter-pips session-context-meter--${e.tone}"
      role="img"
      aria-label=${e.label}
    >
      ${Array.from({length:e.total},(t,n)=>j`
          <span
            class="capacity-meter-pips__pip ${e.used!==null&&n<e.used?`capacity-meter-pips__pip--filled`:``}"
          ></span>
        `)}
    </span>`;let t=e.mode===`continuous`?e.percent:e.used===null?0:e.used/e.total*100;return j`<span
    class="session-context-meter session-context-meter--${e.tone}"
    role="img"
    aria-label=${e.label}
  >
    <span class="session-context-meter__fill" style=${`width: ${t}%`}></span>
  </span>`}function ia(){return(ia=e((()=>{A()})))()}function aa(e){let t=e.workerSlots;if(t){let n=e.unavailable?null:t.total-t.available,r=n===null?L(`capacityMeter.unavailable`):L(`capacityMeter.workerSlots`,{used:String(n),total:String(t.total)}),i=e.unavailable?`stale`:t.available===0?`warn`:`accent`;return{label:r,title:n===null?void 0:r,meter:ra({mode:`discrete`,total:t.total,used:n,tone:i,label:r})}}if(!(e.capabilities?.some(e=>e===`codex.exec-server`||e===`codex.exec-server.stdio.v1`)||e.commands?.includes(`codex.exec-server.stdio.v1`)))return;let n=L(`capacityMeter.execHost`);return{label:n,title:n,meter:j`<span class="capacity-meter-exec" role="img" aria-label=${n}>
      <span aria-hidden="true">${F.terminal}</span>${n}
    </span>`}}function oa(){return(oa=e((()=>{A(),I(),ia(),P()})))()}function sa(e,t,n){return JSON.stringify([e,t,n])}function ca(e){return sa(e?.requestedAgentId??``,e?.catalogId??``,e?.group??``)}function la(e){let t=ke(e);return sa(t.agentId,t.catalogId,t.group??``)}function Y(e){return!!e?.catalogId}function ua(e){return!!(e?.catalogId&&e.startTerminal&&e.catalogLabel)}function da(e){return Y(e)&&!ua(e)||!!(e?.group&&e.groupStatus!==`resolved`)}function fa(e){return JSON.stringify([e?.groupStatus??``,e?.groupCwd??``,e?.groupWorktree===!0,e?.groupCatalogGeneration??-1,e?.groupDefaultsStatus??`idle`])}function pa(e,t){let n=e?.group?.trim();if(!n)return!1;let r=t.groupsGeneration(),i=t.groupsStatus();if(e?.groupCatalogGeneration!==r||e.groupDefaultsStatus!==i)return!0;if(i!==`ready`)return!1;let a=t.state.groupSettings.find(e=>e.name===n);return a?e.groupStatus!==`resolved`||(e.groupCwd??``)!==(a.cwd??``)||e.groupWorktree!==(a.worktree===!0):e.groupStatus===`resolved`}function ma(e,t){let n=t.state.groupSettings.find(t=>t.name===e?.group);return JSON.stringify([e?.group??``,t.groupsGeneration(),t.groupsStatus(),!!n,n?.cwd??``,n?.worktree===!0])}function ha(e,t){return!!(e?.group&&(!t||pa(e,t)))}function ga(e,t){return da(e)||ha(e,t)}function _a(e,t){return e?.groupStatus===`resolved`&&!ha(e,t)?e.group:void 0}function va(e,t,n){let i=e?.agentId?.trim();if(!i)return n&&r(n);let a=r(i);return t.some(e=>r(e.id)===a)?a:n&&r(n)}function ya(e,t){return!Y(e)||ua(e)&&!!t}async function ba(e,t,n){try{let r=(await e.request(`sessions.catalog.list`,{...n?{agentId:n}:{},catalogId:t,limitPerHost:1})).catalogs.find(e=>e.id===t),i=r?.capabilities.startTerminal;return r&&i===!0?{model:``,catalogLabel:r.label,startTerminal:!0,terminalHosts:r.hosts.filter(e=>e.canStartTerminal===!0).map(({hostId:e,label:t})=>({hostId:e,label:t}))}:void 0}catch{return}}function xa(e){if(!Y(e))return M;let t=ua(e),n=e?.catalogLabel||e?.catalogId||``;return j`<span
    class="new-session-page__trigger new-session-page__runtime"
    title=${L(t?`newSession.nativeTerminalHint`:`newSession.catalogUnavailable`)}
  >
    <span class="new-session-page__target-icon" aria-hidden="true">${F.terminal}</span>
    <span>${n}</span>
  </span>`}function Sa(e){let t=da(e.data)||e.groupPending===!0;return j`
    <div class="new-session-page__triggers">
      ${xa(e.data)} ${Y(e.data)?M:e.agentSelect}
      ${e.placeSelect}
      ${t?j`<span class="new-session-page__catalog-unavailable">
              ${L(`newSession.catalogUnavailable`)}
              <button
                class="btn btn--sm"
                type="button"
                ?disabled=${e.retrying}
                @click=${e.onRetry}
              >
                ${e.retrying?L(`common.loading`):L(`lazyView.retry`)}
              </button>
            </span>`:M}
    </div>
  `}var Ca,wa;function X(){return(X=e((()=>{A(),P(),I(),V(),v(),Ca=class{constructor(e,t){this.readData=e,this.revalidate=t,this.pending=null,this.lastKey=``}synchronize(e){if(this.pending)return;let t=this.readData(),n=ma(t,e);if(this.lastKey===n||!pa(t,e))return;let r=this.revalidate();r&&(this.lastKey=n,this.pending=r,r.catch(()=>void 0).finally(()=>{this.pending===r&&(this.pending=null,this.synchronize(e))}))}},wa=class{constructor(e){this.notify=e,this.requestId=0,this.state={status:`idle`}}clear(){let e=this.state;this.state={status:`idle`},this.requestId+=1,e.status===`loading`&&e.controller.abort(),e.status!==`idle`&&this.notify()}startRequest(e){let t=new AbortController,n=++this.requestId;this.state={status:`loading`,owner:e,controller:t,requestId:n},this.notify(),e.client.request(`sessions.catalog.list`,{agentId:e.agentId,limitPerHost:1},{signal:t.signal}).then(t=>{let r=this.state;r.status===`loading`&&r.requestId===n&&(this.state={status:`ready`,owner:e,targets:t.catalogs.filter(e=>e.capabilities.startTerminal===!0).map(({id:e,label:t})=>({id:e,label:t}))},this.notify())},()=>{let t=this.state;t.status===`loading`&&t.requestId===n&&(this.state={status:`error`,owner:e},this.notify())})}load(e,t,n){let i=e?.gateway.snapshot,a=i?.client,o=t.trim()?r(t):``;if(!n||i?.phase!==`connected`||!a||!o||z(i,`sessions.catalog.list`)!==!0){this.clear();return}let s={agentId:o,client:a},c=this.state;(c.status===`idle`||c.owner.client!==s.client||c.owner.agentId!==s.agentId)&&(this.clear(),this.startRequest(s))}retry(e,t){let n=this.state;n.status===`error`&&n.owner.client===e&&n.owner.agentId===t&&this.startRequest(n.owner)}groups(){let e=this.state;if(!(e.status===`idle`||e.status===`ready`&&!e.targets.length))return[{errorLabel:L(`newSession.cliAgentsUnavailable`),id:`cliAgents`,label:L(`newSession.cliAgentsGroup`),options:e.status===`ready`?e.targets.map(({id:e,label:t})=>({value:e,label:t})):[],status:e.status}]}}})))()}var Ta;function Ea(){return(Ea=e((()=>{A(),$e(),I(),Bn(),bn(),sn(),Ta=class{constructor(e){this.options=e,this.dictation=null,this.owner=null,this.devicePicker=new hi(e.requestUpdate)}dispose(){this.owner=null,this.dictation?.dispose(),this.dictation=null,this.devicePicker.dispose()}get active(){return this.dictation?.active===!0}previewDraft(){let e=this.dictation;return e?.active?this.options.textarea.previewTranscript(e.transcript):void 0}renderStatus(){return Mn(this.dictation??void 0)}render(e,t){this.owner?.key!==e&&(this.owner={key:e},this.dictation?.dispose(),this.dictation=null);let n=this.owner,r=()=>this.owner===n,i=this.options.getClient(),a=this.options.isConnected()&&i!==null;this.devicePicker.syncCatalog(i,a);let o=this.options.canCommit(),s={client:i,connected:a,enabled:o,dictationAvailable:this.devicePicker.dictationStatus===`ready`,realtimeTalkActive:!1,onCommit:(e,t)=>{if(!r()||!this.options.canCommit())return;let n=this.options.textarea.insertTranscript(e,t);n!==null&&this.options.onMessage(n),this.options.requestUpdate()},onError:e=>{r()&&this.options.onError(e)},onStateChange:()=>{r()&&this.options.requestUpdate()},onDictationUnavailable:this.devicePicker.handleOpen};this.dictation??=new Gn(s),this.dictation.update(s);let c=this.dictation;return j`
      ${Ar({connected:a,sending:!1,isBusy:!o,dictation:c,idleLabel:L(`newSession.dictate`),microphonePicker:an({devices:this.devicePicker.devices,loading:this.devicePicker.loading,open:this.devicePicker.open,selectedDeviceId:t?.trim()??``,voiceActive:!1,issue:this.devicePicker.issue,showRealtimeCapability:!1,realtimeStatus:this.devicePicker.realtimeStatus,dictationStatus:this.devicePicker.dictationStatus,onOpen:this.devicePicker.handleOpen,onClose:this.devicePicker.handleClose,onSelect:e=>{st({realtimeTalkInputDeviceId:e.trim()||void 0}),this.devicePicker.handleClose()}}),onDirectDictationStart:()=>this.options.textarea.captureSelection()})}
      ${fn(c,()=>{r()&&this.options.canCommit()&&this.options.onSubmit()})}
    `}}})))()}function Da(e){return/^[A-Za-z0-9_/:=.,@%+-]+$/.test(e)?e:`'${e.replaceAll(`'`,`'\\''`)}'`}function Oa(e){if(!e.open)return M;let t=L(`newSession.connectMachineTitle`),n=e.setup?.joinUrl?.trim(),r=n?`npx openclaw connect ${Da(n)}`:null,i=e.setup?.expiresAtMs?ee(e.setup.expiresAtMs,{hour:`numeric`,minute:`2-digit`},``):``;return j`
    <openclaw-modal-dialog
      class="connect-machine-dialog"
      label=${t}
      description=${L(`newSession.connectMachineDescription`)}
      @modal-cancel=${e.onClose}
    >
      <section class="exec-approval-card connect-machine-dialog__card">
        <header class="exec-approval-header">
          <div>
            <h2 class="exec-approval-title">${t}</h2>
            <p class="exec-approval-sub">${L(`newSession.connectMachineDescription`)}</p>
          </div>
          <button
            class="btn btn--icon btn--ghost"
            type="button"
            aria-label=${L(`common.dismiss`)}
            @click=${e.onClose}
          >
            ${F.x}
          </button>
        </header>

        <div class="connect-machine-dialog__body">
          ${e.loading&&!r?j`<p class="connect-machine-dialog__status" role="status">
                  ${L(`newSession.connectMachineGenerating`)}
                </p>`:M}
          ${e.error?j`<p class="exec-approval-error" role="alert">
                  ${L(`newSession.connectMachineFailed`)} ${e.error}
                </p>`:M}
          ${r?j`
                  ${H(r)}
                  <p class="connect-machine-dialog__hint">
                    ${L(`newSession.connectMachineTeamHint`)}
                  </p>
                  <p class="connect-machine-dialog__hint">
                    ${i?L(`newSession.connectMachineSingleUseExpires`,{time:i}):L(`newSession.connectMachineSingleUse`)}
                  </p>
                `:M}
        </div>

        <footer class="exec-approval-actions connect-machine-dialog__actions">
          ${r||e.error?j`<button
                  class="btn"
                  type="button"
                  ?disabled=${e.loading}
                  @click=${e.onRefresh}
                >
                  ${F.refresh}
                  ${e.loading?L(`newSession.connectMachineRefreshing`):L(`newSession.connectMachineFreshCode`)}
                </button>`:M}
          <button class="btn btn--ghost" type="button" @click=${e.onManageDevices}>
            ${L(`newSession.connectMachineManageDevices`)}
          </button>
        </footer>
      </section>
    </openclaw-modal-dialog>
  `}var ka;function Aa(){return(Aa=e((()=>{A(),It(),P(),yt(),I(),Ui(),te(),E(),Ce(),Hi(),ka=class{constructor(e,t){this.gateway=e,this.requestUpdate=t,this.openValue=!1,this.loadingValue=!1,this.errorValue=null,this.setupValue=null,this.requestId=0}get open(){return this.openValue}get loading(){return this.loadingValue}get error(){return this.errorValue}get setup(){return this.setupValue}start(){this.openValue=!0,this.errorValue=null,this.setupValue=null,this.requestUpdate(),this.refresh()}close(){this.requestId+=1,this.openValue=!1,this.loadingValue=!1,this.errorValue=null,this.setupValue=null}async refresh(){if(!this.openValue||this.loadingValue)return;let{client:e,connected:t}=this.gateway();if(!t||!e){this.errorValue=L(`newSession.connectMachineUnavailable`),this.requestUpdate();return}let n=++this.requestId;this.loadingValue=!0,this.errorValue=null,this.requestUpdate();try{let t=await re(e);if(!this.stillCurrent(n,e))return;if(!t.joinUrl?.trim()){this.setupValue=null,this.errorValue=L(`newSession.connectMachineMissingUrl`);return}this.setupValue=t}catch(t){this.stillCurrent(n,e)&&(this.errorValue=C(t))}finally{n===this.requestId&&(this.loadingValue=!1,this.requestUpdate())}}stillCurrent(e,t){let n=this.gateway();return e===this.requestId&&t===n.client&&n.connected&&this.openValue}}})))()}function ja(e){let t=e.visibility===`draft`,n=e.submitting||e.messageLocked,r=L(`newSession.draft`);return j`
    <button
      type="button"
      class="new-session-page__visibility new-session-page__visibility--draft ${t?`new-session-page__visibility--active`:``}"
      role="switch"
      aria-label=${r}
      aria-checked=${String(t)}
      ?disabled=${n}
      title=${L(`newSession.draftDescription`)}
      @click=${()=>e.onVisibilityChange?.(t?`normal`:`draft`)}
    >
      <span class="new-session-page__visibility-icon" aria-hidden="true">${F.pencil}</span>
      <span class="new-session-page__visibility-label">${r}</span>
    </button>
  `}function Ma(e,t){let n=e.visibility===`draft`,r=e.submitting||e.messageLocked===!0,i=e.textareaController;return ci({attachments:t,capabilityMenu:e.capabilityMenu,disabled:r,open:i.capabilityMenuOpen,view:i.capabilityMenuView,toolOverrides:e.toolOverrides,rootToggles:e.draftAvailable?[{value:`new-session-draft`,label:L(`newSession.draft`),icon:F.pencil,checked:n,disabled:r,title:L(`newSession.draftDescription`),onChange:t=>e.onVisibilityChange?.(t?`draft`:`normal`)}]:void 0,onOpenChange:t=>{i.capabilityMenuOpen=t,t||(i.capabilityMenuView=`root`),e.requestUpdate()},onViewChange:t=>{i.capabilityMenuView=t,e.requestUpdate()}})}function Na(e){let t=Dr(e.toolOverrides);if(t===0)return M;let n=e.submitting||e.messageLocked===!0;return j`
    <button
      type="button"
      class="new-session-page__selection-status"
      ?disabled=${n}
      @click=${()=>{e.textareaController.capabilityMenuView=`root`,e.textareaController.capabilityMenuOpen=!0,e.requestUpdate()}}
    >
      ${L(t===1?`chat.composer.overrides.countOne`:`chat.composer.overrides.count`,{count:String(t)})}
    </button>
  `}function Pa(){return(Pa=e((()=>{A(),P(),I(),un()})))()}function Fa(e){e.textareaController.mentionMenu.close(),Xr(e.textareaController.skillMenuState),Fn(e.textareaController.slashMenuState),e.onSubmit()}function Ia(e){let t=e.submitting?L(`newSession.starting`):L(e.nativeTerminal?`newSession.startInTerminal`:`newSession.start`),n=!e.canSubmit&&e.submitDisabledReason!==void 0;return j` <openclaw-tooltip content=${e.submitDisabledReason??t}>
    <button
      type="button"
      class="chat-send-btn new-session-page__start-submit ${n?`new-session-page__start-submit--blocked`:``}"
      ?disabled=${!e.canSubmit&&!n}
      aria-disabled=${String(!e.canSubmit)}
      aria-busy=${String(e.submitting)}
      aria-label=${t}
      @click=${()=>Fa(e)}
    >
      ${e.submitting?F.loader:e.nativeTerminal?F.squareTerminal:F.arrowUp}
    </button>
  </openclaw-tooltip>`}function La(e,t,n,r,i){if(t.dictationActive||e.isComposing||e.keyCode===229||t.textareaController.mentionMenu.handleKeydown(e,i,t.requestUpdate)||Jr(e,t.textareaController.skillMenuState,n,t.requestUpdate)||wn(e,t.textareaController.slashMenuState,r,t.requestUpdate)||e.key!==`Enter`)return;let a=e.metaKey||e.ctrlKey,o=t.requiresModifier?a&&e.shiftKey:a&&!e.shiftKey;if(!e.altKey&&o&&t.onBackgroundSubmit){(t.canSubmit||t.submitDisabledReason!==void 0)&&(e.preventDefault(),Xr(t.textareaController.skillMenuState),Fn(t.textareaController.slashMenuState),t.textareaController.mentionMenu.close(),t.onBackgroundSubmit());return}e.shiftKey||t.requiresModifier&&!a||(t.canSubmit||t.submitDisabledReason!==void 0)&&(e.preventDefault(),Fa(t))}function Ra(e){let t=e.textareaController.skillMenuState,n=e.textareaController.slashMenuState,r=e.textareaController.mentionMenu;r.syncDirectory(e.submitting||e.messageLocked||e.dictationActive?void 0:e.mentionDirectory);let i={paneId:`new-session`,getDraft:()=>e.textareaController.getTextarea()?.value??e.message,commitDraft:e.onInput,getTextarea:e.textareaController.getTextarea,refreshCommands:e.refreshCommands},a={paneId:i.paneId,getDraft:i.getDraft,commitDraft:i.commitDraft,getTextarea:i.getTextarea,resolveArgOptions:e=>e.argOptions??[],runCommand:()=>Fa(e),canRun:e=>!e,refreshCommands:e.refreshCommands,commandFilter:e=>e.executeLocal!==!0},o={paneId:i.paneId,getDraft:i.getDraft,getTextarea:i.getTextarea,getMentions:()=>e.getMentions?.()??e.mentions??[],commitDraft:e.onInput},s=(o,s)=>{e.nativeTerminal||(nn(o.value,n,a,e.requestUpdate),ur(o.value,o.selectionStart,t,i,e.requestUpdate),s?.inputType===`insertFromPaste`||s?.inputType===`insertFromDrop`||s?.isComposing?r.close():r.update(o.value,o.selectionStart,e.requestUpdate,s?.inputType===`insertText`&&s.data?.includes(`@`)===!0))},c=e=>{let t=e.currentTarget;t instanceof HTMLTextAreaElement&&s(t)},l=e.submitting||e.messageLocked===!0||e.dictationActive===!0,u={attachmentLimits:e.attachmentLimits,attachments:e.attachments,disabled:l,getAttachments:e.getAttachments,draft:e.message,getDraft:()=>e.message,onAttachmentsChange:e.onAttachmentsChange,onDraftChange:e.onInput,onPendingReadsChange:e.onPendingReadsChange,onOpenImage:e.onOpenImage,readSignal:e.readSignal},d=dn({...u,canCompose:!l&&!e.nativeTerminal}),f=e.dictationPreview??e.message;e.textareaController.syncDraft(f);let p=L(e.nativeTerminal?`newSession.nativeTerminalPrompt`:`newSession.messagePlaceholder`),m=e.dictationActive?``:e.textareaController.getPlaceholder(p,e.message,e.requestUpdate),h=!e.nativeTerminal&&!l&&ar(t),g=!e.nativeTerminal&&!l&&Xn(n),_=h||g||r.open;r.open&&An();let v=oi(i.paneId,r.open?`mention-menu-listbox`:h?`skill-menu-listbox`:`slash-menu-listbox`),y=r.open?r.activeId(i.paneId):h?$r(t,i.paneId):vn(n,a.paneId),b=r.open?r.activeLabel():h?Br(t):Dn(n),x=oi(i.paneId,`active-menu-announcement`),S=e.requiresModifier?`Control+Enter Meta+Enter`:`Enter`,ee=e.requiresModifier?`Control+Shift+Enter Meta+Shift+Enter`:`Control+Enter Meta+Enter`,C=e.onBackgroundSubmit?`${S} ${ee}`:S;return j`
    <div
      class="agent-chat__composer-shell new-session-page__composer"
      @drop=${t=>{e.nativeTerminal&&t.dataTransfer?.files.length?(t.preventDefault(),e.onUnsupportedAttachment?.()):d.onDrop(t)}}
      @dragenter=${d.onDragenter}
      @dragleave=${d.onDragleave}
      @dragover=${d.onDragover}
    >
      <div
        class="agent-chat__input agent-chat__input--mobile-toolbar${e.dictationActive?` agent-chat__input--dictating`:``}"
        @openclaw-composer-dismiss-invocations=${()=>{r.close(),e.requestUpdate()}}
      >
        ${r.render(o,e.requestUpdate)}
        ${e.nativeTerminal?M:Nn(u)}
        ${pn(u)}
        ${mr(e.message,e.mentions,()=>e.onInput(e.message,[]))}
        <div class="agent-chat__composer-lede">${e.dictationStatus??M}</div>
        <div class="agent-chat__composer-input-row">
          <div class="agent-chat__composer-combobox">
            ${g?$n(n,a,e.message,e.requestUpdate):M}
            ${h?Hr(t,i,e.requestUpdate):M}
            <textarea
              ${Be(e.textareaController.ref)}
              class="new-session-page__message"
              rows="1"
              ?autofocus=${globalThis.matchMedia?.(`(max-width: 560px)`)?.matches??!1}
              ?disabled=${e.submitting||e.messageLocked}
              ?readonly=${e.dictationActive}
              placeholder=${m}
              aria-label=${p}
              aria-keyshortcuts=${C}
              .value=${qe([f],()=>Ye(f))}
              aria-autocomplete="list"
              aria-controls=${Xe(_?v:void 0)}
              aria-expanded=${Xe(_?`true`:void 0)}
              aria-activedescendant=${Xe(y??void 0)}
              aria-describedby=${x}
              @input=${t=>{if(e.dictationActive)return;let n=t.target;xr(n);let r=o.getMentions();e.onInput(n.value,r.length?tn(e.message,n.value,r,e.textareaController.mentionInput):void 0),e.textareaController.mentionInput=void 0,s(n,t)}}
              @beforeinput=${t=>{let n=t.target;e.textareaController.mentionInput={value:n.value,start:n.selectionStart,end:n.selectionEnd,inputType:t.inputType}}}
              @select=${c}
              @keydown=${t=>La(t,e,i,a,o)}
              @compositionstart=${()=>{r.close(),e.requestUpdate()}}
              @paste=${t=>{e.nativeTerminal&&t.clipboardData?.files.length?(t.preventDefault(),e.onUnsupportedAttachment?.()):!l&&!e.nativeTerminal&&li(t,u)}}
            ></textarea>
            <span
              id=${x}
              class="sr-only"
              role="status"
              aria-live="polite"
              aria-atomic="true"
              >${b}</span
            >
          </div>
        </div>
        <div class="agent-chat__composer-footer">
          <div class="agent-chat__composer-lead">
            ${e.nativeTerminal?M:Ma(e,u)}
            ${e.permissionControl??M}
            ${!e.nativeTerminal&&e.draftAvailable?ja(e):M}
            ${e.nativeTerminal?M:Na(e)}
          </div>
          <div class="agent-chat__composer-trail">
            <div class="agent-chat__composer-controls">
              ${e.modelControl&&e.modelControl!==M?j`<div class="chat-composer-model-control">${e.modelControl}</div>`:M}
            </div>
            <div class="agent-chat__composer-actions">
              ${e.voiceControl??M}${e.dictationActive?M:Ia(e)}
            </div>
          </div>
        </div>
        ${e.pendingAttachmentReads>0?j`<span class="sr-only" role="status">${L(`newSession.readingAttachment`)}</span>`:M}
      </div>
      ${e.blockedSubmitNotice?j`<div
              class="new-session-page__blocked-submit agent-chat__composer-underlaps"
              data-tone="info"
              role="status"
            >
              <div class="agent-chat__composer-status-band">
                <span class="agent-chat__composer-status-icon" aria-hidden="true"
                  >${F.info}</span
                >
                <span class="agent-chat__composer-status-text">${e.blockedSubmitNotice}</span>
              </div>
            </div>`:M}
    </div>
  `}var za;function Ba(){return(Ba=e((()=>{A(),Ke(),Ve(),Ge(),We(),P(),I(),_t(),Lt(),Vn(),Tr(),ni(),kr(),Zn(),Cn(),bn(),Pa(),za=class{constructor(){this.textarea=null,this.placeholderFrame=null,this.placeholderStartedAt=null,this.placeholderText=``,this.placeholderTarget=``,this.placeholderEntered=!1,this.capturedSelection=null,this.skillCommandClient=null,this.skillCommandAgentId=``,this.skillCommandDraftOwnerKey=``,this.skillMenuState=gr(),this.slashMenuState=Jn(),this.mentionMenu=new Fr,this.capabilityMenuOpen=!1,this.capabilityMenuView=`root`,this.ref=e=>{let t=e instanceof HTMLTextAreaElement?e:null;this.textarea&&this.textarea!==t&&Rr(this.textarea),this.textarea&&!t&&this.resetPlaceholder(),this.textarea=t,t&&(rr(t),zn(t))},this.getTextarea=()=>this.textarea}syncDraft(e){this.textarea?.isConnected&&this.textarea.value!==e&&zn(this.textarea)}getPlaceholder(e,t,n){if(t.length>0||this.placeholderEntered)return this.placeholderEntered=!0,this.placeholderFrame!==null&&(globalThis.cancelAnimationFrame?.(this.placeholderFrame),this.placeholderFrame=null),e;this.placeholderTarget!==e&&(this.resetPlaceholder(),this.placeholderTarget=e);let r=globalThis.requestAnimationFrame?.bind(globalThis);if(!r||(globalThis.matchMedia?.(`(prefers-reduced-motion: reduce)`).matches??!1))return this.placeholderText=e,this.placeholderEntered=!0,e;if(this.placeholderFrame===null){let t=i=>{this.placeholderStartedAt??=i;let a=Math.max(0,i-this.placeholderStartedAt-180),o=Math.min(e.length,Math.floor(a/26));if(o!==this.placeholderText.length&&(this.placeholderText=e.slice(0,o),n()),o<e.length){this.placeholderFrame=r(t);return}this.placeholderFrame=null,this.placeholderEntered=!0};this.placeholderFrame=r(t)}return this.placeholderText}resetPlaceholder(){this.placeholderFrame!==null&&(globalThis.cancelAnimationFrame?.(this.placeholderFrame),this.placeholderFrame=null),this.placeholderStartedAt=null,this.placeholderText=``,this.placeholderTarget=``,this.placeholderEntered=!1}captureSelection(){let e=this.textarea;this.capturedSelection=e?{start:e.selectionStart,end:e.selectionEnd,value:e.value}:null}previewTranscript(e){let t=this.textarea;if(!t)return;let n=this.capturedSelection??{start:t.selectionStart,end:t.selectionEnd,value:t.value};return Un(n.value,e,n.start,n.end).value}insertTranscript(e,t){let n=this.textarea;if(!n)return null;let r=this.capturedSelection,i=r&&(!t||r.value===n.value)?r:{start:t?n.selectionStart:n.value.length,end:t?n.selectionEnd:n.value.length,value:n.value};this.capturedSelection=null;let a=Un(i.value,e,i.start,i.end);return a.value===i.value?null:(n.value=a.value,xr(n),queueMicrotask(()=>{n.isConnected&&(n.focus({preventScroll:!0}),n.selectionStart=a.caret,n.selectionEnd=a.caret)}),a.value)}syncSkillCommandOwner(e,t,n){let r=t.trim();(this.skillCommandClient!==e||this.skillCommandAgentId!==r||this.skillCommandDraftOwnerKey!==n)&&(this.skillCommandClient=e,this.skillCommandAgentId=r,this.skillCommandDraftOwnerKey=n,Xr(this.skillMenuState))}ownsSkillCommands(e,t,n){return this.skillCommandClient===e&&this.skillCommandAgentId===t.trim()&&this.skillCommandDraftOwnerKey===n}disconnect(){this.mentionMenu.dispose(),this.resetPlaceholder(),this.skillCommandClient=null,this.skillCommandAgentId=``,this.skillCommandDraftOwnerKey=``,Xr(this.skillMenuState),Fn(this.slashMenuState),this.capabilityMenuOpen=!1,this.capabilityMenuView=`root`,this.textarea&&=(Rr(this.textarea),null)}}})))()}function Va(e){return e.allowedVisibilities?.includes(`draft`)===!0&&e.hasMultipleIdentities===!0}function Ha(e){let t=e.trim();return!t||Wa.test(t)}function Ua(e){let t=p(e.cwd),n=p(e.workspace),i=p(e.catalogId),a=p(e.category),o=p(e.model),s=p(e.contextWindow),c=p(e.thinkingLevel),l=p(e.projectId),u=!l&&(e.message.trim()||e.attachments?.length)?p(e.projectGitUrl):void 0,d=!l&&!u&&t&&t!==n?t:void 0;return{...p(e.key)?{key:p(e.key)}:{},agentId:r(e.agentId),message:e.message,...e.mentions?.length?{mentions:e.mentions.map(e=>({...e}))}:{},...p(e.displayName)?{displayName:p(e.displayName)}:{},...e.visibility===`incognito`?{incognito:!0}:{},...e.visibility===`draft`?{visibility:`draft`}:{},...e.attachments?.length?{attachments:e.attachments}:{},...i?{catalogId:i}:{},...a?{category:a}:{},...!i&&o?{model:o}:{},...!i&&s?{contextWindow:s}:{},...!i&&c?{thinkingLevel:c}:{},...!i&&e.fastMode!==void 0?{fastMode:e.fastMode}:{},...e.toolOverrides?{toolOverrides:e.toolOverrides}:{},...e.permissionMode?{permissionMode:e.permissionMode}:{},...l?{projectId:l}:{},...u?{projectGitUrl:u}:{},...d?{cwd:d}:{},...e.worktree?{worktree:!0,...p(e.baseRef)?{worktreeBaseRef:p(e.baseRef)}:{},...p(e.worktreeName)?{worktreeName:p(e.worktreeName)}:{}}:{}}}var Wa;function Ga(){return(Ga=e((()=>{v(),Wa=/^[a-z0-9][a-z0-9-]{0,63}$/})))()}function Ka(e,t){return j`
    <div class="callout danger new-session-page__error new-session-page__alert" role="alert">
      <span class="new-session-page__alert-icon" aria-hidden="true">${F.alertTriangle}</span>
      <span class="callout__content new-session-page__alert-message"
        >${C(e)}</span
      >
      ${t?j`<button class="btn btn--sm" type="button" @click=${t.onClick}>
              ${t.label}
            </button>`:M}
    </div>
  `}function qa(e,t,n){let r=e.worktree&&!Ha(e.worktreeName),i=t.capabilities;return j`
    ${r?Ka(L(`newSession.worktreeNameInvalid`)):M}
    ${n&&i.toolOverrides?Ka(L(`newSession.terminalCapabilityOverridesUnsupported`),{label:L(`common.reset`),onClick:()=>i.setToolOverrides(null)}):M}
    ${t.submissionOutcomeUnknown?Ka(L(t.submissionOutcomeUnknown===`gateway-changed`?`newSession.createOutcomeUnknown`:`newSession.placementSetupInterrupted`),t.pendingPlacement.sessionKey?{label:L(`common.reset`),onClick:()=>t.clearPendingPlacementRecovery()}:void 0):M}
  `}function Ja(e){let{pendingMessage:t}=e,n=e.submitting&&!t;return j`
    <div class="sr-only" role="status" aria-live="polite">
      ${t?L(`newSession.starting`):M}
    </div>
    <div
      class="new-session-page__scroll ${t?`chat-thread chat-thread--direct`:``}"
      ?inert=${n}
      aria-busy=${String(n)}
      @mousedown=${dt}
    >
      ${e.error?Ka(e.error):M}
      ${t?Ya(t,e.onOpenImage):e.renderDraft()}
    </div>
  `}function Ya(e,t){let n=`new-session-submission`,r=Wt(e),i=r.sender?jr(r.sender):null,{images:a,attachments:o}=xn(e,r.content),s=vr(e,r),c=cr(s),l={onOpenImage:t};return j`<div class="new-session-page__starting chat-thread-inner">
    <div
      class="chat-group user ${i===null?``:`chat-group--sender-tint`}"
      style=${i===null?M:`--chat-sender-hue: ${i}`}
      data-chat-row-key=${n}
    >
      <div class="chat-group-messages">
        <div
          class="chat-bubble ${a.length?`chat-bubble--with-images`:``}"
          data-message-id=${n}
          data-message-text=${s||M}
        >
          ${tr(a,l)}
          ${Lr(o,l,void 0,void 0,!1)}
          ${c?ei(c):s?dr(s,n,{role:`user`,isStreaming:!1},{codeBlockChrome:`none`}):M}
        </div>
      </div>
    </div>
    <div class="chat-group assistant chat-group--working">
      <div class="chat-group-messages">
        ${Vr({kind:`reading-indicator`,key:n,startedAt:e.timestamp},{startupLabel:L(`newSession.starting`)})}
      </div>
    </div>
  </div>`}function Xa(e){let t=e.attachmentDraft.readSignal,n=e.nativeTerminal?null:e.context?.gateway.snapshot.client??null,r=e.context?.gateway,i=r?.snapshot.selfUser?.identity,a=n&&r?.snapshot.phase===`connected`&&i?.type===`profile`&&ht(r.snapshot.hello?.auth??null)&&!e.isCatalogTarget&&e.visibility!==`incognito`?{client:n,ownerKey:JSON.stringify([r.connectionRevision,n.recoveryScope,i.id,e.draftOwnerKey]),params:{agentId:e.agentId,...e.visibility===`draft`?{visibility:`draft`}:{}}}:void 0;return e.textareaController.syncSkillCommandOwner(n,e.agentId,e.draftOwnerKey),Ra({attachmentLimits:e.context?.gateway.snapshot.hello?.policy?.attachments,attachments:e.attachmentDraft.attachments,canSubmit:e.canSubmit,getAttachments:()=>e.attachmentDraft.attachments,message:e.message,mentions:e.mentions,getMentions:e.getMentions,mentionDirectory:a,visibility:e.visibility,draftAvailable:e.draftAvailable,capabilityMenu:e.capabilityMenu,toolOverrides:e.toolOverrides,modelControl:e.isCatalogTarget?M:e.modelControl.render({agent:e.agent,agentId:e.agentId,context:e.context,sending:e.submitting}),permissionControl:e.permissionControl,pendingAttachmentReads:e.attachmentDraft.pendingReads,readSignal:t,requiresModifier:e.requiresModifier,requestUpdate:e.requestUpdate,refreshCommands:n?()=>En({client:n,agentId:e.agentId,shouldApply:()=>e.textareaController.ownsSkillCommands(n,e.agentId,e.draftOwnerKey)}):void 0,submitDisabledReason:e.submitDisabledReason,blockedSubmitNotice:e.blockedSubmitNotice,dictationActive:e.dictationActive,dictationPreview:e.dictationPreview,dictationStatus:e.dictationStatus,nativeTerminal:e.nativeTerminal,onUnsupportedAttachment:e.onUnsupportedAttachment,submitting:e.submitting,textareaController:e.textareaController,voiceControl:e.voiceControl,messageLocked:e.messageLocked,onAttachmentsChange:t=>{!e.submitting&&!e.messageLocked&&e.attachmentDraft.replace(t)},onPendingReadsChange:n=>e.attachmentDraft.updatePending(t,n),onInput:e.onInput,onOpenImage:e.onOpenImage,onVisibilityChange:e.onVisibilityChange,onSubmit:e.onSubmit,onBackgroundSubmit:e.onBackgroundSubmit})}function Za(){return(Za=e((()=>{A(),gt(),N(),P(),I(),Ft(),E(),hn(),yn(),Wr(),Sr(),qn(),Nr(),ir(),Ba(),Ga()})))()}async function Qa(e,t,n){if(!e||!t)return``;try{let t=await e.request(`system.info`,{},{signal:n});return p(t.machineName)??p(t.hostname)?.split(`.`,1)[0]??``}catch{return``}}function $a(){return($a=e((()=>{})))()}function eo(e){return e.cloudProfileId?{kind:`cloud`,id:e.cloudProfileId}:e.deviceId?{kind:`device`,id:e.deviceId}:e.autoDevice?{kind:`auto-device`}:{kind:`local`}}function to(e){return`${uo}${d(e)}`}function Z(e){if(!i(e))return null;let t=e,n=p(t.workspace),r=p(t.folder),a=p(t.projectId),o=p(t.baseRef),s=p(t.worktreeName),c=p(t.model),l=p(t.thinkingLevel),u=typeof t.worktree==`boolean`?t.worktree:void 0,d=no(t.where);return!n&&!r&&!d&&!a&&u===void 0&&!o&&!s&&!c&&!l?null:{...n?{workspace:n}:{},...r?{folder:r}:{},...d?{where:d}:{},...a?{projectId:a}:{},...u===void 0?{}:{worktree:u},...o?{baseRef:o}:{},...s?{worktreeName:s}:{},...c?{model:c}:{},...l?{thinkingLevel:l}:{}}}function no(e){if(!i(e)||typeof e.kind!=`string`)return;if(e.kind===`local`||e.kind===`auto-device`)return{kind:e.kind};let t=p(e.id);return t&&(e.kind===`device`||e.kind===`cloud`)?{kind:e.kind,id:t}:void 0}function ro(e,t){try{let n=JSON.parse(e.getItem(to(t))??`null`);return i(n)?n:{}}catch{return{}}}function io(e,t){let n=S(),i=r(t);return!n||!e||!i?null:Z(ro(n,e).agents?.[i])}function ao(e){let t=S();if(!t||!e)return{};let n=Object.entries(ro(t,e).agents??{}).flatMap(([e,t])=>{let n=r(e),i=Z(t);return n&&i?[[n,i]]:[]});return Object.fromEntries(n)}function oo(e){return Object.fromEntries(Object.entries(e).toSorted(([e],[t])=>e.localeCompare(t)).map(([e,t])=>[`${fo}${e}`,t]))}function so(e){return Object.fromEntries(Object.entries(e).flatMap(([e,t])=>{if(!e.startsWith(fo))return[];let n=r(e.slice(15)),i=Z(t);return n&&i?[[n,i]]:[]}))}function co(e,t,n){let i=S(),a=r(t),o=Z(n);if(!i||!e||!a||!o)return;let s=ro(i,e);try{i.setItem(to(e),JSON.stringify({...s,agents:{...s.agents,[a]:o}}))}catch{}}function lo(e,t,n){let i=S(),a=r(t);if(!i||!e||!a)return;let o=ro(i,e),s=Z({...Z(o.agents?.[a])??{},...n});if(s)try{i.setItem(to(e),JSON.stringify({...o,agents:{...o.agents,[a]:s}}))}catch{}}var uo,fo,po;function mo(){return(mo=e((()=>{v(),uo=`openclaw.new-session.preferences.v1:`,fo=`new-session.v1:`,po=`new-session.migration.v1`})))()}function ho(e){return e.gatewayIdentityChanged||!e.placementDraftOwned?`gateway-changed`:`placement-interrupted`}var go;function _o(){return(_o=e((()=>{_i(),w(),go=class{constructor(){this.sessionKey=``,this.messageId=``,this.message=``,this.target=null,this.agentId=``,this.gatewayUrl=``,this.recoveryScope=``,this.phase=`dispatching`,this.retryAllowed=!1,this.restored=!1,this.persistent=!0}clear(){this.persistent&&Ln(this.gatewayUrl,this.recoveryScope,this.sessionKey,this.messageId),this.reset()}owns(e,t,n){return this.gatewayUrl===e&&this.recoveryScope===t&&this.sessionKey===n}reset(){this.sessionKey=``,this.messageId=``,this.message=``,this.mentions=void 0,this.attachments=void 0,this.target=null,this.agentId=``,this.gatewayUrl=``,this.recoveryScope=``,this.phase=`dispatching`,this.createParams=void 0,this.retryAllowed=!1,this.restored=!1,this.persistent=!0}restore(e,t){let n=ln(e,t).find(e=>e.phase===`creating`);return!n||n.phase!==`creating`?null:(this.apply(n,!0,!0),n)}capture(){return this.snapshot(this.sessionKey,this.phase)}stageCreate(e){let t=`agent:${e.agentId}:dashboard:${O()}`,n=Sn({...e.createParams,key:t},t,e.agentId);if(!n)return null;let r=e.persistent!==!1;r||delete n.key;let i={sessionKey:t,messageId:O(),message:e.message,...e.mentions?.length?{mentions:e.mentions.map(e=>({...e}))}:{},attachments:e.attachments,target:e.target,agentId:e.agentId,gatewayUrl:e.gatewayUrl,recoveryScope:e.recoveryScope,phase:`creating`,createParams:n};return r&&!On(i)?null:(this.apply(i,!1,r),n)}promoteToDispatching(e){let t=this.sessionKey,n=this.snapshot(e,`dispatching`);return!n||this.persistent&&!Yn(t,n)?!1:(this.sessionKey=e,this.phase=`dispatching`,this.createParams=void 0,!0)}snapshot(e,t){return!this.sessionKey||!this.messageId||!this.target||!this.agentId||t===`creating`&&!this.createParams?null:{sessionKey:e,messageId:this.messageId,message:this.message,...this.mentions?.length?{mentions:this.mentions.map(e=>({...e}))}:{},attachments:this.attachments?[...this.attachments]:void 0,target:{...this.target},agentId:this.agentId,gatewayUrl:this.gatewayUrl,recoveryScope:this.recoveryScope,phase:t,...t===`creating`&&this.createParams?{createParams:{...this.createParams}}:{}}}apply(e,t,n){this.sessionKey=e.sessionKey,this.messageId=e.messageId,this.message=e.message,this.mentions=e.mentions,this.attachments=e.attachments,this.target={...e.target},this.agentId=e.agentId,this.gatewayUrl=e.gatewayUrl,this.recoveryScope=e.recoveryScope,this.phase=e.phase,this.createParams=e.createParams,this.retryAllowed=!0,this.restored=t,this.persistent=n}}})))()}var vo,yo;function bo(){return(bo=e((()=>{Ot(),N(),I(),V(),v(),X(),Pr(),$a(),mo(),_o(),vo=[0,1e3,3e3],yo=class{constructor(e,t,n){this.read=t,this.callbacks=n,this.cloudProfilesValue=[],this.environmentsValue=null,this.cloudProfilesReadyValue=!1,this.catalogRetryingValue=!1,this.gatewaySource=null,this.gatewayClientValue=null,this.gatewayUrlValue=``,this.gatewayBootIdValue=``,this.gatewayRecoveryScopeValue=``,this.gatewayRecoveryScopeReady=!1,this.gatewayConnectedValue=!1,this.gatewayConnectionEpochValue=0,this.catalogRetryScope=``,this.catalogRetryAttempt=0,this.cloudProfileRetryAttempt=0,this.preferenceScope=``,this.preferenceModeValue=`local`,this.identityPreferences={},this.preferenceLoad=Promise.resolve(),this.preferenceWrite=Promise.resolve(),this.handleCatalogRetry=()=>{let{context:e,data:t}=this.read();if(this.catalogRetryingValue||!this.gatewayConnectedValue||t?.group&&e?.sessions.groupsStatus()===`loading`||!t?.startTerminal&&!ga(t,e?.sessions))return;t?.group&&e?.sessions.groupsInvalidate();let n=e?.revalidate(`new-session`);n&&(globalThis.clearTimeout(this.catalogRetryTimer),this.catalogRetryTimer=void 0,this.catalogRetryingValue=!0,this.callbacks.requestUpdate(),n.catch(()=>void 0).then(()=>this.callbacks.updateComplete()).finally(()=>{this.catalogRetryingValue=!1,this.retryPendingCatalogTarget(),this.callbacks.requestUpdate()}))},this.gatewayNameTask=new wt(e,{args:()=>[this.read().isConnected&&this.gatewayConnectedValue?this.gatewayClientValue:null,z(this.read().context?.gateway.snapshot??{},`system.info`)===!0,this.gatewayConnectionEpochValue],task:([e,t,n],{signal:r})=>Qa(e,t,r)}),this.cloudProfileTask=new wt(e,{args:()=>[this.read().isConnected&&this.gatewayConnectedValue?this.gatewayClientValue:null,this.gatewayConnectionEpochValue,ht(this.read().context?.gateway.snapshot.hello?.auth??null),this.read().isAdmin,this.gatewayRecoveryScopeValue,this.read().runtimeId],task:([e,t,n,r,i,a])=>e?lr(e,n,r,a):Et,onComplete:e=>{this.resetCloudProfileRetry(),this.environmentsValue=e.environments,this.applyCloudProfiles(e.profiles),this.cloudProfilesReadyValue=!0,this.callbacks.requestUpdate()},onError:()=>{this.scheduleCloudProfileRetry(),this.callbacks.requestUpdate()}})}get gatewayName(){return this.gatewayNameTask.status===R.COMPLETE?this.gatewayNameTask.value??``:``}get cloudProfiles(){return this.cloudProfilesValue}get environments(){return this.environmentsValue}get cloudProfilesReady(){return this.cloudProfilesReadyValue}get cloudProfilesPending(){return this.cloudProfileTask.status===R.PENDING}get deviceCatalogDisabledReason(){return this.cloudProfilesReadyValue&&this.cloudProfileTask.status===R.COMPLETE?void 0:L(`newSession.placementNotReady`)}get catalogRetrying(){return this.catalogRetryingValue}get client(){return this.gatewayClientValue}get gatewayUrl(){return this.gatewayUrlValue}get recoveryScope(){return this.gatewayRecoveryScopeValue}get sessionCreateScope(){let e=[this.gatewayUrlValue,this.gatewayRecoveryScopeValue,this.gatewayBootIdValue];return e.every(Boolean)?JSON.stringify(e):``}get connected(){return this.gatewayConnectedValue}get connectionEpoch(){return this.gatewayConnectionEpochValue}get preferenceLoading(){return this.preferenceModeValue===`loading`}resolvedGroupCategory(){let e=this.read();return z(e.context?.gateway.snapshot??{},`sessions.groups.defaults`)===!0?_a(e.data,e.context?.sessions):void 0}refreshCloudProfiles(){return this.cloudProfileTask.run()}synchronize(e){let t=e.snapshot,n=t.phase===`connected`,r=this.gatewaySource===null,i=n?t.hello?.server?.bootId?.trim()??``:this.gatewayBootIdValue,a=!r&&n&&!!this.gatewayBootIdValue&&i!==this.gatewayBootIdValue,o=!r&&this.gatewayUrlValue!==e.connection.gatewayUrl,s=!r&&this.gatewaySource!==e,c=!r&&(s||this.gatewayClientValue!==t.client),l=!r&&this.gatewayConnectedValue!==n,u=n&&(c||!this.gatewayConnectedValue),d=n&&t.client?.recoveryScopeReady===!0&&!this.gatewayRecoveryScopeReady,f=n?t.hello?.auth?.recoveryScope??``:this.gatewayRecoveryScopeValue,p=!r&&this.gatewayRecoveryScopeValue!==f;if(this.gatewaySource=e,this.gatewayClientValue=t.client,this.gatewayUrlValue=e.connection.gatewayUrl,this.gatewayBootIdValue=i,this.gatewayRecoveryScopeValue=f,this.gatewayRecoveryScopeReady=t.client?.recoveryScopeReady===!0,this.gatewayConnectedValue=n,this.read().visibility===`draft`&&!this.read().canStartAsDraft&&this.callbacks.onVisibilityRetired(),o||a||c||l||p){let e=s||o||p,t=o||p;this.invalidateDiscovery(e,ho({gatewayIdentityChanged:t,placementDraftOwned:!!this.read().pendingPlacement.sessionKey}))}if(r||o||p||d||u){let e=this.read().pendingPlacement;e.gatewayUrl&&(e.gatewayUrl!==this.gatewayUrlValue||e.recoveryScope!==this.gatewayRecoveryScopeValue)&&this.callbacks.onPendingPlacementReset(),n&&t.client?.recoveryScopeReady&&this.callbacks.onRecoveryReady(this.gatewayUrlValue,this.gatewayRecoveryScopeValue)}u&&(this.gatewayConnectionEpochValue+=1,this.retryPendingCatalogTarget()),this.synchronizeIdentityPreferences(t.selfUser?.id),this.callbacks.requestUpdate()}invalidateDiscovery(e,t){this.cloudProfileTask.run([null,-1,!1,!1,``]),this.cloudProfilesValue=[],this.cloudProfilesReadyValue=!1,e&&(this.environmentsValue=null),this.resetCloudProfileRetry(),this.callbacks.onInvalidate(e,t),this.callbacks.requestUpdate()}retryPendingCatalogTarget(){let{context:e,data:t}=this.read();if(this.catalogRetryingValue)return;if(t?.group&&e?.sessions.groupsStatus()===`loading`){globalThis.clearTimeout(this.catalogRetryTimer),this.catalogRetryTimer=void 0;return}if(!this.gatewayConnectedValue||!ga(t,e?.sessions)){globalThis.clearTimeout(this.catalogRetryTimer),this.catalogRetryTimer=void 0,this.catalogRetryScope=``,this.catalogRetryAttempt=0;return}let n=`${this.gatewayConnectionEpochValue}:${ca(t)}`;if(this.catalogRetryScope!==n&&(globalThis.clearTimeout(this.catalogRetryTimer),this.catalogRetryTimer=void 0,this.catalogRetryScope=n,this.catalogRetryAttempt=0),this.catalogRetryTimer||this.catalogRetryAttempt>=vo.length)return;let r=vo[this.catalogRetryAttempt];this.catalogRetryAttempt+=1,this.catalogRetryTimer=globalThis.setTimeout(()=>{this.catalogRetryTimer=void 0;let e=this.read();if(this.catalogRetryScope!==n||!this.gatewayConnectedValue||e.data?.group&&e.context?.sessions.groupsStatus()===`loading`||!ga(e.data,e.context?.sessions))return;e.data?.group&&e.context?.sessions.groupsInvalidate();let t=e.context?.revalidate(`new-session`);t&&t.catch(()=>void 0).then(()=>this.callbacks.updateComplete()).then(()=>this.retryPendingCatalogTarget())},r)}readPreference(e){let t=this.read();return Y(t.data)||t.data?.group||t.pendingPlacement.sessionKey?null:this.preferenceModeValue===`remote`?this.identityPreferences[r(e)]??null:io(this.gatewayUrlValue,e)}persistPreference(e,t,n){let i=this.read();if(Y(i.data)||i.data?.group||i.pendingPlacement.sessionKey)return;let a=r(e),o={workspace:t,...n};if(this.preferenceModeValue===`local`){lo(this.gatewayUrlValue,a,o);return}let s=this.preferenceScope,c=this.gatewayClientValue,l=this.gatewayUrlValue,u=async()=>{if(await this.preferenceLoad,!c||this.preferenceScope!==s)return;if(this.preferenceModeValue===`local`){lo(l,a,o);return}let e={...this.identityPreferences[a],...o};try{if((await c.request(`users.prefs.set`,{entries:oo({[a]:e})})).status!==`ok`||this.preferenceScope!==s)return;this.identityPreferences={...this.identityPreferences,[a]:e},co(l,a,e),this.callbacks.requestUpdate()}catch{}};this.preferenceWrite=this.preferenceWrite.then(u,u)}disconnect(){this.gatewaySource=null,this.gatewayClientValue=null,this.gatewayConnectedValue=!1,this.gatewayConnectionEpochValue=0,this.catalogRetryScope=``,this.catalogRetryAttempt=0,globalThis.clearTimeout(this.catalogRetryTimer),this.catalogRetryTimer=void 0,this.gatewayNameTask.run([null,!1,-1]),this.cloudProfileTask.run([null,-1,!1,!1,``]),this.resetCloudProfileRetry()}applyCloudProfiles(e){let t=e.length>0&&!this.gatewayRecoveryScopeValue;this.cloudProfilesValue=t?[]:e;let n=this.read(),r=!!n.pendingPlacement.sessionKey,i=ht(n.context?.gateway.snapshot.hello?.auth??null);(!this.gatewayConnectedValue||!i)&&!r&&this.callbacks.onCloudProfileCleared(),!r&&n.cloudProfileId&&!e.some(e=>e.id===n.cloudProfileId)?this.callbacks.onCloudState(L(`newSession.catalogUnavailable`)):t?this.callbacks.onCloudState(L(`newSession.cloudRecoveryUnavailable`)):this.callbacks.onCloudState(null)}resetCloudProfileRetry(){globalThis.clearTimeout(this.cloudProfileRetryTimer),this.cloudProfileRetryTimer=void 0,this.cloudProfileRetryAttempt=0}scheduleCloudProfileRetry(){if(this.cloudProfileRetryTimer||!this.gatewayConnectedValue||!this.gatewayClientValue)return;if(this.cloudProfileRetryAttempt>=Yr.length){this.cloudProfilesReadyValue||=(this.applyCloudProfiles([]),!0);return}let e=Yr[this.cloudProfileRetryAttempt];this.cloudProfileRetryAttempt+=1,this.cloudProfileRetryTimer=globalThis.setTimeout(()=>{this.cloudProfileRetryTimer=void 0,this.gatewayConnectedValue&&this.cloudProfileTask.run()},e)}synchronizeIdentityPreferences(e){let t=this.gatewayConnectedValue?this.gatewayClientValue:null,n=this.read().context,r=n&&z(n.gateway.snapshot,`users.prefs.get`)===!0&&z(n.gateway.snapshot,`users.prefs.set`)===!0,i=t&&e&&r?`${this.gatewayConnectionEpochValue}\0${e}`:`local`;if(i!==this.preferenceScope){if(this.preferenceScope=i,this.identityPreferences={},!t||!e||!r){this.preferenceModeValue=`local`,this.preferenceLoad=Promise.resolve();return}this.preferenceModeValue=`loading`,this.preferenceLoad=this.loadIdentityPreferences({client:t,gatewayUrl:this.gatewayUrlValue,scope:i})}}async loadIdentityPreferences(e){try{let t=await e.client.request(`users.prefs.get`,{});if(this.preferenceScope!==e.scope)return;if(t.status!==`ok`){this.preferenceModeValue=`local`;return}let n=so(t.entries),r=ao(e.gatewayUrl);if(t.entries[`new-session.migration.v1`]!==!0){let t=Object.fromEntries(Object.entries(r).filter(([e])=>!Object.hasOwn(n,e))),i=[...Object.entries(oo(t)),[po,!0]],a=!1;for(let t=0;t<i.length;t+=32){let r=Object.fromEntries(i.slice(t,t+32)),o;try{o=await e.client.request(`users.prefs.set`,{entries:r})}catch{a=!0;break}if(this.preferenceScope!==e.scope)return;if(o.status!==`ok`){a=!0;break}Object.assign(n,so(r))}a&&(n={...r,...n})}this.identityPreferences=n,this.preferenceModeValue=`remote`;for(let[t,r]of Object.entries(n))co(e.gatewayUrl,t,r);this.read().agentsHydrated&&this.callbacks.onAdoptAgentDefaults(),this.callbacks.requestUpdate()}catch{this.preferenceScope===e.scope&&(this.preferenceModeValue=`local`,this.callbacks.requestUpdate())}}}})))()}var xo=t({activateDraft:()=>wo,restoreDraft:()=>Co,restoreDraftOwner:()=>To,retainDraft:()=>So});function So(e,t,n,r){t.draftPersistence.persistNow();let i=e?.gateway.snapshot.client;if(!e||!i||t.submitting||t.pendingPlacement.sessionKey)return;let a=n??la(window.location.search);e.chatAttachmentHandoff.prepare({owner:i,paneId:Eo,scopeKey:a,message:r===a?t.message:``,mentions:r===a?t.mentions:void 0,attachments:t.attachmentDraft.take(),fallbacks:{}})}function Co(e,t,n,r,i){t.draftPersistence.selectRoute(n);let a=e?.gateway.snapshot.client,o=e&&a?e.chatAttachmentHandoff.consume({owner:a,paneId:Eo,scopeKey:n}):null;return o?t.restoreDraftState({message:r||o.message||``,mentions:r?i:o.mentions,attachments:o.attachments,visibility:t.visibility}):r&&t.restoreMessage(r,i),wo(t,n),n}function wo(e,t){e.pendingPlacement.sessionKey||e.draftPersistence.activateRoute(t)}function To(e,t,n){e.restorePendingPlacementRecovery(t,n),e.draftPersistence.setOwner(t,n,!!e.pendingPlacement.sessionKey)}var Eo;function Do(){return(Do=e((()=>{X(),Eo=`new-session-draft`})))()}function Oo(e){let t=e.trim();return!t||t.startsWith(`-`)||/\s/u.test(t)?null:/^(?:https:\/\/|ssh:\/\/git@|git@[^:]+:)/iu.test(t)?t:null}function ko(e){return e.target instanceof HTMLInputElement?e.target.value:``}function Ao(e){let t=e.folder.trim(),n=e.projects.find(t=>t.id===e.projectId),r=e.projectQuery.trim().toLowerCase(),i=r?e.projects.filter(e=>[e.displayName,e.originUrl??``,e.repoRoot??``].join(`
`).toLowerCase().includes(r)):e.projects;return{label:n?n.displayName:e.selectedRemoteProject?.identity?e.selectedRemoteProject.identity:t?J(t):J(e.workspace)||L(`newSession.folderPlaceholder`),localProjects:i,recents:r?[]:e.recents.filter(e=>e.kind===`folder`),showWorkspace:!r||[J(e.workspace),e.workspace].join(`
`).toLowerCase().includes(r)}}function jo(e){let t=e.folder.trim(),n=Oo(e.projectQuery),r=e.projectQuery.trim(),i=!e.browseAvailable&&!e.isAdmin,a=e.state.recents,o=Zi(a,e=>e.displayName,[e=>e.kind===`folder`?ki(e.folder):void 0,e=>e.kind===`folder`?e.folder:void 0,e=>e.kind===`folder`?e.folder:e.projectId]),s=j`
    <button
      type="button"
      class="session-menu__item"
      data-value="browse"
      aria-pressed="false"
      aria-disabled=${i?`true`:M}
      ?disabled=${e.submitting||e.pendingPlacement||!e.browseAvailable&&!i}
      @click=${()=>{e.browseAvailable&&!e.submitting&&!e.pendingPlacement&&e.onBrowse()}}
    >
      <span class="session-menu__check" aria-hidden="true"></span>
      <span class="session-menu__text">${L(`newSession.browse`)}</span>
      <span class="new-session-page__menu-chevron" aria-hidden="true">${F.chevronRight}</span>
    </button>
  `;return j`
    <span class="new-session-page__select">
      <button
        id="new-session-project-trigger"
        type="button"
        class="new-session-page__trigger ${e.popoverHiding?`new-session-page__trigger--hiding`:``}"
        title=${L(`newSession.what`)}
        aria-label="${L(`newSession.what`)}: ${e.state.label}"
        data-project-id=${e.projectId||M}
        aria-haspopup="dialog"
        aria-expanded=${String(e.popoverOpen)}
        ?disabled=${e.submitting||e.pendingPlacement}
        @click=${e.onGuardTransition}
      >
        <span class="new-session-page__target-icon" aria-hidden="true"
          >${e.projectId?F.gitBranch:F.folder}</span
        >
        <span class="new-session-page__trigger-label">${e.state.label}</span>
        <span
          class="new-session-page__trigger-chevron new-session-page__trigger-chevron--desktop"
          aria-hidden="true"
          >${F.chevronDown}</span
        >
        <span
          class="new-session-page__trigger-chevron new-session-page__trigger-chevron--mobile"
          aria-hidden="true"
          >${F.chevronsUpDown}</span
        >
      </button>
    </span>
    <wa-popover
      class="new-session-page__select new-session-page__project-popover new-session-page__picker-popover"
      for="new-session-project-trigger"
      placement="bottom-start"
      without-arrow
      @wa-show=${e.onPopoverShow}
      @wa-hide=${e.onPopoverHide}
      @wa-after-hide=${e.onPopoverAfterHide}
    >
      ${e.browserOpen?Fi({listing:e.browserListing,label:e.gatewayLabel,loading:e.browserLoading,error:e.browserError,pathDraft:e.browserPathDraft,usablePath:e.usableBrowserPath,registerProjectPath:e.registerProjectPath,registeringProject:e.registeringProject,onPathDraftChange:e.onBrowserPathDraftChange,onNavigate:e.onBrowserNavigate,onBack:e.onBrowserBack,onRegisterProject:e.onRegisterProject,onClose:e.onClose,onApplyFolder:e.onApplyFolder}):j`
              <div class="new-session-page__picker-root">
                <div class="new-session-page__menu-title">${L(`newSession.projects`)}</div>
                ${j`
                  ${e.workspace&&e.state.showWorkspace?K({value:`workspace`,label:J(e.workspace),icon:F.folder,checked:!e.projectId&&t===e.workspace,onSelect:()=>e.onApplyFolder(e.workspace)},e.submitting):M}
                  <label class="new-session-page__project-search">
                    <span class="sr-only">${L(`newSession.projectSearchPlaceholder`)}</span>
                    <input
                      type="search"
                      placeholder=${L(`newSession.projectSearchPlaceholder`)}
                      .value=${e.projectQuery}
                      ?disabled=${e.submitting||e.pendingPlacement}
                      @input=${t=>e.onProjectQueryInput(ko(t))}
                      @keydown=${t=>{t.key===`Enter`&&n&&e.projectAddAvailable&&(t.preventDefault(),e.onSelectRemoteProject({identity:n,cloneUrl:n}))}}
                    />
                  </label>
                  ${e.state.localProjects.map(t=>K({value:`project:${t.id}`,label:t.displayName,icon:F.gitBranch,checked:e.projectId===t.id,title:t.repoRoot,onSelect:()=>e.onSelectProject(t.id)},e.submitting))}
                  ${n&&e.projectAddAvailable?K({value:`project-clone-url`,label:n,icon:F.gitBranch,sub:L(`newSession.cloneProject`),checked:e.selectedRemoteProject?.cloneUrl===n,onSelect:()=>e.onSelectRemoteProject({identity:n,cloneUrl:n})},e.submitting):M}
                  ${!n&&r.length>=2&&e.projectSearchAvailable?j`
                          <div class="new-session-page__menu-title">
                            ${L(`newSession.githubProjects`)}
                          </div>
                          ${e.projectSearchCredentialMissing?j`<div class="new-session-page__menu-note">
                                  ${L(`newSession.githubTokenHint`)}
                                </div>`:M}
                          ${e.projectSearchLoading?j`<div class="new-session-page__project-status" role="status">
                                  ${L(`common.loading`)}
                                </div>`:M}
                          ${e.projectSearchError?j`<div class="new-session-page__project-error" role="alert">
                                  ${e.projectSearchError}
                                </div>`:M}
                          ${e.remoteProjects.map(t=>K({value:`remote-project:${t.fullName}`,label:t.fullName,icon:F.gitBranch,sub:t.description??L(`newSession.cloneProject`),checked:e.selectedRemoteProject?.cloneUrl===t.cloneUrl,title:t.webUrl,onSelect:()=>e.onSelectRemoteProject({identity:t.fullName,cloneUrl:t.cloneUrl})},e.submitting||!e.projectAddAvailable))}
                        `:M}
                  ${e.projects.length===0&&e.canWrite&&!e.isAdmin?j`<div class="new-session-page__menu-note">
                          ${L(`newSession.projectsAdminHint`)}
                        </div>`:M}
                `}
                ${e.state.recents.length>0?j`
                        <div class="new-session-page__menu-title">
                          ${L(`newSession.recentFolders`)}
                        </div>
                        ${a.map((n,r)=>K({value:n.kind===`project`?`recent-project:${n.projectId}`:`recent:${n.folder}`,label:n.displayName,icon:n.kind===`project`?F.gitBranch:F.folder,sub:o[r],checked:n.kind===`project`?e.projectId===n.projectId:!e.projectId&&t===n.folder,title:n.kind===`project`?void 0:n.folder,onSelect:()=>n.kind===`project`?e.onSelectProject(n.projectId):e.onApplyFolder(n.folder)},e.submitting))}
                      `:M}
                ${i?j`<openclaw-tooltip .content=${L(`newSession.browseRequiresAdmin`)}>
                        ${s}
                      </openclaw-tooltip>`:s}
              </div>
            `}
    </wa-popover>
  `}function Mo(){return(Mo=e((()=>{A(),P(),I(),ti(),Ii()})))()}function No(e,t){let n=new Set,r=[];for(let i of e){let e=p(i.execCwd)??p(i.worktree?.repoRoot),a=p(i.execNode);if(!e||a||e===t.workspace||!t.allowGatewayFolder(e))continue;let o=e;if(!n.has(o)&&(n.add(o),r.push({folder:e}),r.length>=4))break}return r}function Po(){return(Po=e((()=>{})))()}var Fo,Io;function Lo(){return(Lo=e((()=>{Ot(),m(),I(),E(),V(),Mo(),Po(),Fo=300,Io=class{constructor(e,t,n,r){this.gateway=t,this.read=n,this.callbacks=r,this.projectsValue=[],this.projectSelection=null,this.projectQueryValue=``,this.debouncedProjectQuery=``,this.browserLoadingValue=!1,this.browserErrorValue=null,this.browserListingValue=null,this.browserOpenValue=!1,this.browserProjectPathValue=null,this.browserRegisteringValue=!1,this.openPopoverValue=null,this.hidingPopovers=new Set,this.browserPathDraftValue=``,this.browserRequestToken=0,this.projectsTask=new wt(e,{args:()=>[this.read().context&&this.gateway.connected?this.gateway.client:null,z(this.read().context?.gateway.snapshot??{},`projects.list`)===!0,this.gateway.connectionEpoch],task:async([e,t])=>e?t?await e.request(`projects.list`,{}):{projects:[]}:Et,onComplete:e=>{let t=e.projects??[];this.projectsValue=t,this.projectRecentsValue=e.recents,this.projectId&&!t.some(e=>e.id===this.projectId)&&this.callbacks.onProjectMissing(),this.callbacks.requestUpdate()},onError:()=>{this.callbacks.requestUpdate()}}),this.projectSearchTask=new wt(e,{args:()=>[this.read().context&&this.gateway.connected?this.gateway.client:null,this.read().context?B(this.read().context?.gateway.snapshot,`projects.searchRemote`,`operator.read`):!1,this.debouncedProjectQuery,this.gateway.connectionEpoch],task:([e,t,n],{signal:r})=>!e||!t||n.length<2||Oo(n)?Et:e.request(`projects.searchRemote`,{query:n},{signal:r})})}get projects(){return this.projectsValue}get projectsReady(){return this.projectsTask.status===R.COMPLETE||this.projectsTask.status===R.ERROR}get projectRecents(){return this.projectRecentsValue}get projectId(){return this.projectSelection?.kind===`local`?this.projectSelection.id:``}get remoteProject(){return this.projectSelection?.kind===`remote`?this.projectSelection.project:null}get projectQuery(){return this.projectQueryValue}get projectSearchResult(){return this.projectSearchTask.status===R.COMPLETE&&this.debouncedProjectQuery===this.projectQueryValue.trim()?this.projectSearchTask.value??null:null}get projectSearchLoading(){return this.debouncedProjectQuery.length>=2&&this.debouncedProjectQuery===this.projectQueryValue.trim()&&this.projectSearchTask.status===R.PENDING}get projectSearchError(){if(this.projectSearchTask.status!==R.ERROR||this.debouncedProjectQuery!==this.projectQueryValue.trim())return null;let e=this.projectSearchTask.error;return C(e)}get browserLoading(){return this.browserLoadingValue}get browserError(){return this.browserErrorValue}get browserListing(){return this.browserListingValue}get browserOpen(){return this.browserOpenValue}get browserProjectPath(){return this.browserProjectPathValue}get browserRegistering(){return this.browserRegisteringValue}popoverOpen(e){return this.openPopoverValue===e}popoverHiding(e){return this.hidingPopovers.has(e)}popoverCallbacks(e){return{popoverOpen:this.popoverOpen(e),popoverHiding:this.popoverHiding(e),onGuardTransition:t=>this.guardPopoverTransition(t,e),onPopoverShow:()=>this.onPopoverShow(e),onPopoverHide:()=>this.onPopoverHide(e),onPopoverAfterHide:()=>this.onPopoverAfterHide(e)}}get browserPathDraft(){return this.browserPathDraftValue}set browserPathDraft(e){this.browserPathDraftValue=e,this.callbacks.requestUpdate()}async refreshProjects(){let e=this.read().context;return await this.projectsTask.run([this.gateway.connected?this.gateway.client:null,e?z(e.gateway.snapshot,`projects.list`)===!0:!1,this.gateway.connectionEpoch])}selectedProject(){return this.projectsValue.find(e=>e.id===this.projectId)}selectProject(e){this.projectSelection=e}recordRemoteProjectId(e,t){let n=this.remoteProject;n?.cloneUrl===e&&(this.projectSelection={kind:`remote`,project:{...n,projectId:t}})}clearProjectSelection(){this.projectSelection=null}resolveProjectRecents(e){let t=t=>e.isAdmin||Ni(e.workspaceRoots,t);return this.projectRecentsValue?.filter(e=>e.kind===`project`?this.projectsValue.some(t=>t.id===e.projectId):!e.execNode&&t(e.folder))??No(e.sessions,{workspace:e.workspace,allowGatewayFolder:t}).map(e=>({kind:`folder`,folder:e.folder,displayName:J(e.folder)}))}changeProjectQuery(e){this.projectQueryValue=e,this.clearProjectSearchTimer(),this.debouncedProjectQuery=``,this.projectSearchTask.run([null,!1,``,this.gateway.connectionEpoch]);let t=e.trim(),n=this.read().context;if(t.length<2||Oo(t)||!this.gateway.connected||!this.gateway.client||!n||!B(n.gateway.snapshot,`projects.searchRemote`,`operator.read`)){this.callbacks.requestUpdate();return}let r=this.gateway.client,i=this.gateway.connectionEpoch;this.projectSearchTimer=globalThis.setTimeout(()=>{this.projectSearchTimer=void 0,r===this.gateway.client&&i===this.gateway.connectionEpoch&&(this.debouncedProjectQuery=t,this.projectSearchTask.run([r,!0,t,i]),this.callbacks.requestUpdate())},Fo),this.callbacks.requestUpdate()}resetProjectSearch(){this.clearProjectSearchTimer(),this.projectQueryValue=``,this.debouncedProjectQuery=``,this.callbacks.requestUpdate()}resetProjects(e=!0){this.projectsTask.run([null,!1,-1]),e&&(this.projectsValue=[],this.projectRecentsValue=void 0,this.clearProjectSelection(),this.resetProjectSearch())}close(){this.resetBrowser(!0);for(let e of[`where`,`project`,`checkout`]){let t=this.callbacks.querySelector(`.new-session-page__${e}-popover`);t&&(t.open=!1)}}showRoot(){this.resetBrowser(!1)}usableBrowserPath(){let e=this.browserPathDraftValue.trim();return e.length===0?``:Ai(e)?e:null}selectGatewayBrowser(e){this.browserOpenValue=!0,this.loadBrowser(e&&Ai(e)?e:void 0)}loadBrowser(e,t=null){let n=this.read(),r=n.context?.gateway.snapshot,i=r?.client;if(r?.phase!==`connected`||!i||!this.browserOpenValue)return;let a=++this.browserRequestToken;this.browserLoadingValue=!0,this.browserErrorValue=t,this.browserProjectPathValue=null,this.browserListingValue=null,this.browserPathDraftValue=e??``;let o=this.browserPathDraftValue;this.callbacks.requestUpdate(),i.request(`fs.listDir`,e?{path:e}:{}).then(e=>{a===this.browserRequestToken&&(this.browserListingValue=e??null,e&&this.callbacks.onApprovedListing(e),e?.path&&this.browserPathDraftValue===o&&(this.browserPathDraftValue=e.path),e?.path&&n.isAdmin&&i.request(`worktrees.branches`,{repoRoot:e.path,includeRepositoryStatus:!0}).then(t=>{a===this.browserRequestToken&&this.browserListingValue?.path===e.path&&t.repositoryStatus===`git`&&(this.browserProjectPathValue=e.path,this.callbacks.requestUpdate())}).catch(()=>void 0),this.callbacks.requestUpdate())}).catch(t=>{if(a===this.browserRequestToken){if(e){this.loadBrowser(void 0,g(t)?.missingScope===`operator.admin`?L(`newSession.browseRequiresAdmin`):L(`newSession.browserLoadFailed`));return}this.browserErrorValue=L(`newSession.browserLoadFailed`),this.callbacks.requestUpdate()}}).finally(()=>{a===this.browserRequestToken&&(this.browserLoadingValue=!1,this.callbacks.requestUpdate())})}async registerBrowserProject(e){let t=this.read(),n=t.context?.gateway.snapshot,r=n?.client;if(n?.phase!==`connected`||!r||!t.isAdmin||this.browserProjectPathValue!==e||this.browserRegisteringValue)return;let i=this.browserRequestToken,a=this.gateway.connectionEpoch;this.browserRegisteringValue=!0,this.browserErrorValue=null,this.callbacks.requestUpdate();try{let t=await r.request(`projects.register`,{path:e});if(i!==this.browserRequestToken||r!==this.gateway.client||(await this.projectsTask.run([r,!0,a]),i!==this.browserRequestToken||r!==this.gateway.client))return;this.callbacks.onSelectProject(t.id),this.close()}catch(e){i===this.browserRequestToken&&r===this.gateway.client&&(this.browserErrorValue=C(e))}finally{i===this.browserRequestToken&&(this.browserRegisteringValue=!1,this.callbacks.requestUpdate())}}onPopoverShow(e){this.openPopoverValue=e,e===`project`?this.showRoot():this.callbacks.requestUpdate()}onPopoverHide(e){this.openPopoverValue===e&&(this.openPopoverValue=null),this.hidingPopovers.add(e),e===`project`?this.showRoot():this.callbacks.requestUpdate()}onPopoverAfterHide(e){this.hidingPopovers.delete(e),this.restorePopoverTrigger(`new-session-${e}-trigger`,`.new-session-page__${e}-popover`),this.callbacks.requestUpdate()}guardPopoverTransition(e,t){this.hidingPopovers.has(t)&&(e.preventDefault(),e.stopImmediatePropagation())}clearPopoverHiding(){this.hidingPopovers.clear(),this.callbacks.requestUpdate()}disconnect(){this.clearProjectSearchTimer(),this.projectsTask.run([null,!1,-1]),this.projectSearchTask.run([null,!1,``,-1])}resetBrowser(e){this.browserRequestToken+=1,this.browserLoadingValue=!1,this.browserErrorValue=null,this.browserListingValue=null,this.browserOpenValue=!1,this.browserProjectPathValue=null,this.browserRegisteringValue=!1,this.browserPathDraftValue=``,e&&(this.openPopoverValue=null),this.callbacks.requestUpdate()}clearProjectSearchTimer(){globalThis.clearTimeout(this.projectSearchTimer),this.projectSearchTimer=void 0}restorePopoverTrigger(e,t){let n=this.callbacks.activeElement(),r=this.callbacks.querySelector(t),i=this.callbacks.body();n&&n!==i&&!r?.contains(n)||this.callbacks.querySelector(`#${e}`)?.focus()}}})))()}function Ro(e){if(e.remoteProject)return{kind:`pending-clone`,cloneUrl:e.remoteProject.cloneUrl};let t=e.selectedProject?.repoRoot??(e.folder.trim()||e.workspace);return!t||e.selectedProject&&!e.selectedProject.repoRoot?{kind:`idle`}:!e.selectedProject&&t===e.workspace&&!e.workspaceGit?{kind:`direct`,repoRoot:t}:{kind:`checking`,repoRoot:t}}var zo;function Bo(){return(Bo=e((()=>{zo=class{constructor(e,t){this.read=e,this.callbacks=t,this.worktreeValue=!1,this.worktreeNameValue=``,this.repositoryValue={kind:`idle`},this.requestToken=0,this.preferredWorktreeRestore=!1,this.worktreeSelectedByUser=!1,this.detailsSelectedByUser=!1}get worktree(){return this.worktreeValue}get worktreeName(){return this.worktreeNameValue}get baseRef(){let e=this.repositoryValue.kind===`git`?this.repositoryValue:void 0;return this.baseRefOverride??(e?.defaultBranch||e?.headBranch||``)}get repository(){return this.repositoryValue}get preferenceReady(){return!this.preferredWorktreeRestore}get hasUserSelection(){return this.worktreeSelectedByUser||this.detailsSelectedByUser}adoptPreference(e){this.worktreeSelectedByUser||(this.worktreeValue=!1,this.preferredWorktreeRestore=e?.worktree===!0),this.detailsSelectedByUser||(this.baseRefOverride=e?.baseRef||void 0,this.worktreeNameValue=e?.worktreeName??``),this.matchesCurrentRepo()?this.repositoryValue.kind!==`checking`&&this.adoptResolvedRepository(this.repositoryValue):this.invalidate()}reset(){this.invalidate(),this.worktreeValue=!1,this.clearDetails(),this.preferredWorktreeRestore=!1,this.worktreeSelectedByUser=!1}clearDetails(e=!1){this.baseRefOverride=void 0,this.worktreeNameValue=``,this.detailsSelectedByUser=!1,e&&this.callbacks.persistPreference({baseRef:``,worktreeName:``})}invalidate(){this.requestToken+=1,this.repositoryValue={kind:`idle`}}selectWorktree(e,t=!0){this.preferredWorktreeRestore=!1,this.worktreeSelectedByUser=!0,this.worktreeValue=e,t&&this.clearDetails(!0)}forceWorktree(e){this.worktreeValue=e}rejectPreferredWorktree(){this.preferredWorktreeRestore=!1,this.worktreeValue=!1,this.clearDetails(!0)}select(e){this.worktreeValue===e||this.read().remotePlacement||(this.selectWorktree(e,!1),this.callbacks.persistPreference({folder:this.read().folder.trim()||this.read().workspace,worktree:this.worktreeValue}),this.worktreeValue&&!this.available()&&this.load(),this.callbacks.requestUpdate())}setBaseRef(e,t){t||(this.baseRefOverride=e,this.detailsSelectedByUser=!0,this.callbacks.persistPreference({baseRef:e}),this.callbacks.requestUpdate())}setWorktreeName(e,t){t||(this.worktreeNameValue=e,this.detailsSelectedByUser=!0,this.callbacks.persistPreference({worktreeName:e}),this.callbacks.requestUpdate())}available(){let e=this.repositoryValue;return e.kind===`git`||e.kind===`pending-clone`}matchesCurrentRepo(){let e=this.read(),t=this.repositoryValue;if(t.kind===`pending-clone`)return e.remoteProject?.cloneUrl===t.cloneUrl;if(t.kind===`idle`||e.remoteProject)return!1;let n=e.selectedProject?.repoRoot??(e.folder.trim()||e.workspace);return t.repoRoot===n}load(){let e=++this.requestToken,t=this.read(),n=Ro(t);if(n.kind!==`checking`)return this.adoptResolvedRepository(n);let r=t.gateway?.client;if(t.gateway?.phase!==`connected`||!r)return this.adoptResolvedRepository({kind:`idle`});let{repoRoot:i}=n;this.repositoryValue=n,r.request(`worktrees.branches`,{repoRoot:i,includeRepositoryStatus:!0}).then(t=>{e===this.requestToken&&this.adoptResolvedRepository(t?.repositoryStatus===`git`?{kind:`git`,repoRoot:i,branches:t.branches,...t.defaultBranch?{defaultBranch:t.defaultBranch}:{},...t.headBranch?{headBranch:t.headBranch}:{}}:{kind:t?.repositoryStatus===`not_git`?`direct`:`unavailable`,repoRoot:i})}).catch(()=>{e===this.requestToken&&this.adoptResolvedRepository({kind:`unavailable`,repoRoot:i})})}adoptResolvedRepository(e){if(this.repositoryValue=e,e.kind===`direct`){if(!this.read().remotePlacement){let e=this.worktreeValue||this.preferredWorktreeRestore;this.worktreeValue=!1,e&&this.callbacks.persistPreference({worktree:!1})}}else this.preferredWorktreeRestore&&!this.worktreeSelectedByUser&&this.available()&&(this.worktreeValue=!0);this.preferredWorktreeRestore=!1,this.callbacks.requestUpdate()}}})))()}function Vo(e){return e instanceof mt&&e.gatewayCode===`INVALID_REQUEST`&&/^(?:Error:\s+)?(?:ENOENT|ENOTDIR):/u.test(e.message)}function Ho(){return(Ho=e((()=>{ct()})))()}function Q(e,t,n){let r=me(e,t,n);if(!r)return null;let i=r.toLowerCase(),a=n.find(e=>be(e.id,e.provider).toLowerCase()===i);if(a)return{entry:a,model:a.id,provider:Se(a.provider)||null};let o=r.indexOf(`/`);return o>0?{model:r.slice(o+1),provider:Se(r.slice(0,o))||null}:{model:r,provider:Se(t??``)||null}}function Uo(){return(Uo=e((()=>{Te()})))()}var Wo;function Go(){return(Go=e((()=>{N(),I(),Oe(),Te(),zt(),Ut(),ce(),v(),Ir(),_r(),X(),nr(),Uo(),Wo=class{constructor(e,t=()=>void 0,n=()=>void 0){this.notify=e,this.onSelectionChange=t,this.onCatalogTargetSelect=n,this.selectionGeneration=0,this.agentId=``,this.metadataState={catalog:[],hasSnapshot:!1,status:`idle`},this.metadataLoading=!1,this.restoringPreference=!1,this.pendingSelectionGeneration=0,this.selected=``,this.contextWindow=``,this.thinkingLevel=``,this.catalogTargets=new wa(e)}get catalog(){return this.metadataState.catalog}get effectiveModel(){return this.draftAccount?.model??this.selected}clearMetadataSubscription(){this.metadataUnsubscribe?.(),this.metadataUnsubscribe=void 0,this.metadataScope=void 0}ownsMetadata(e,t){let n=this.pendingContext?.gateway.snapshot;return this.metadataClient===e&&this.metadataScope===t&&n?.phase===`connected`&&n.client===e&&n.hello===this.metadataHello&&n.selfUser?.id===this.metadataIdentityId}bindMetadataSubscription(e,t){this.metadataClient===e&&this.metadataScope?.agentId===t.agentId&&this.metadataScope?.authProfileId===t.authProfileId&&this.metadataUnsubscribe||(this.clearMetadataSubscription(),this.metadataClient=e,this.metadataScope=t,this.metadataUnsubscribe=ie(e,t,n=>{if(this.metadataClient===e&&this.metadataScope===t){if(!this.ownsMetadata(e,t)){this.metadataLoading=!1,this.restoringPreference=!1,this.draftAccount=void 0,this.clearMetadataSubscription(),this.updateMetadataState({catalog:[],hasSnapshot:!1,status:`offline`});return}if(n.type===`invalidated`){this.startMetadataRequest(e,t);return}if(this.metadataLoading=n.type===`loading`,n.type===`result`)this.publishMetadataCatalog(n.result);else if(n.type===`loading`){let e=this.metadataState.hasSnapshot?`ready`:`loading`;this.metadataState.status!==e&&this.updateMetadataState({...this.metadataState,status:e})}else!this.draftAccount&&this.pendingSelectionGeneration===this.selectionGeneration&&(this.pendingPreference?.model||this.pendingPreference?.thinkingLevel)&&(this.selected=this.pendingPreference.model??``,this.thinkingLevel=this.pendingPreference.thinkingLevel??``),this.restoringPreference=!1,this.updateMetadataState({...this.metadataState,status:`error`})}}))}loadCatalogTargets(e,t,n){this.catalogTargets.load(e,t,n)}updateMetadataState(e){this.metadataState=e,this.notify()}publishMetadataCatalog(e){this.metadataState={catalog:Array.isArray(e.models)?e.models:[],accountSelection:e.accountSelection,hasSnapshot:!0,status:`ready`},!this.draftAccount&&this.pendingSelectionGeneration===this.selectionGeneration&&this.restorePreference(this.pendingPreference,this.pendingAgent,this.pendingContext),this.restoringPreference=!1,this.notify()}startMetadataRequest(e,t){this.metadataLoading=!0;let n=ue(e,t);return Array.isArray(n?.models)?this.publishMetadataCatalog(n):this.updateMetadataState({...this.metadataState,status:this.metadataState.hasSnapshot?`ready`:`loading`}),fe(e,t,{startupRetryWindowMs:6e4}).catch(()=>void 0)}selectDraftAccount(e,t){let n=this.metadataClient;if(!n||!t)return Promise.resolve(!1);this.selectionGeneration+=1,this.restoringPreference=!1,this.draftAccount={authProfileId:e.authProfileId,provider:e.provider,model:t};let r={agentId:this.agentId,authProfileId:e.authProfileId};return this.metadataState={catalog:[],accountSelection:this.metadataState.accountSelection,hasSnapshot:!1,status:`loading`},this.bindMetadataSubscription(n,r),this.startMetadataRequest(n,r).then(e=>!!e&&this.ownsMetadata(n,r))}clearDraftAccount(){this.draftAccount&&(this.draftAccount=void 0,this.metadataLoading=!1,this.clearMetadataSubscription(),this.metadataState={catalog:[],hasSnapshot:!1,status:`idle`})}retryPickerCatalogs(e=!1){let t=this.metadataClient,n=this.metadataScope;if(this.metadataState.status===`error`&&t&&n)this.startMetadataRequest(t,n);else if(e&&this.metadataState.status===`ready`&&t&&this.agentId){let e=this.agentId;se(t,{agentId:e,refreshIfDue:!0}).catch(()=>{this.metadataClient===t&&this.metadataScope===n&&this.updateMetadataState({...this.metadataState,status:`error`})})}this.catalogTargets.retry(t,this.agentId)}invalidate(e=!1){if(this.metadataLoading=!1,this.clearDraftAccount(),this.catalogTargets.clear(),this.restoringPreference=!1,e){this.agentId=``,this.metadataClient=void 0,this.clearMetadataSubscription(),this.selected=``,this.contextWindow=``,this.thinkingLevel=``,this.fastMode=void 0,this.updateMetadataState({catalog:[],hasSnapshot:!1,status:`idle`});return}this.updateMetadataState({...this.metadataState,status:this.metadataState.hasSnapshot?`error`:`idle`})}reset(){this.invalidate(!0)}load(e,t,n,i={}){let a=e?.gateway.snapshot,o=a?.client,s=t.trim()?r(t):``;this.pendingContext=e,(this.agentId!==s||this.metadataClient&&this.metadataClient!==o||this.metadataIdentityId!==a?.selfUser?.id||this.metadataHello&&this.metadataHello!==a?.hello)&&(this.metadataLoading=!1,this.draftAccount=void 0,this.clearMetadataSubscription(),this.agentId!==s&&(this.selected=``,this.contextWindow=``,this.thinkingLevel=``,this.fastMode=void 0),this.agentId=s,this.metadataClient=void 0,this.metadataState={catalog:[],hasSnapshot:!1,status:`idle`}),this.metadataIdentityId=a?.selfUser?.id,this.metadataHello=a?.hello;let c=this.selectionGeneration;if(!e||a?.phase!==`connected`||!o||!s||!n){this.metadataLoading=!1,this.clearDraftAccount(),this.clearMetadataSubscription(),this.metadataClient=void 0,this.restoringPreference=!1,e&&a?.phase!==`connected`&&(this.metadataState={catalog:[],hasSnapshot:!1,status:`offline`}),this.notify();return}let l={agentId:s,...this.draftAccount?{authProfileId:this.draftAccount.authProfileId}:{}};this.bindMetadataSubscription(o,l),this.pendingPreference=i.preference,this.pendingAgent=i.agent,this.pendingSelectionGeneration=c,this.restoringPreference=!!(!this.draftAccount&&(i.preference?.model||i.preference?.thinkingLevel));let u=ue(o,l);if(this.metadataLoading){u?this.publishMetadataCatalog(u):this.notify();return}if(u&&this.metadataState.status!==`error`){this.publishMetadataCatalog(u);return}this.startMetadataRequest(o,this.metadataScope??l)}isRestoringPreference(){return this.restoringPreference}modelUnavailableReason(e){return this.metadataState.hasSnapshot&&this.metadataState.status!==`offline`?Nt(this.effectiveModel||e?.model?.primary,void 0,this.catalog):void 0}modelSelectionBlockedReason(e){if(this.draftAccount){if(this.metadataState.status===`error`)return L(`chat.modelControls.modelsUnavailable`);if(this.metadataLoading||!this.metadataState.hasSnapshot)return L(`chat.modelControls.loadingModels`);if(!this.accountSelectionReady())return jt(this.modelUnavailableReason(e))??L(`chat.modelControls.modelsUnavailable`)}return jt(this.modelUnavailableReason(e))}modelForSubmission(){return this.draftAccount?`${this.draftAccount.model}@${this.draftAccount.authProfileId}`:this.selected}accountSelectionReady(){if(!this.draftAccount)return!0;let e=this.metadataState.accountSelection;if(!this.metadataClient||!this.metadataScope||!this.ownsMetadata(this.metadataClient,this.metadataScope)||this.metadataLoading||this.metadataState.status!==`ready`||e?.kind!==`personal`||e.authProfileId!==this.draftAccount.authProfileId)return!1;let t=Q(this.draftAccount.model,void 0,this.catalog);return t?.entry?.available===!0&&t.provider===this.draftAccount.provider}restorePreference(e,t,n){if(!e)return;let r=this.reconcileSelection(e.model??``,e.thinkingLevel??``,{agent:t,context:n});this.selected=r.model,this.thinkingLevel=r.thinkingLevel,r.repaired&&this.onSelectionChange({model:r.model,thinkingLevel:r.thinkingLevel})}reconcileSelection(e,t,n){let r=e.trim(),i=r?Q(r,void 0,this.catalog):null;if(r&&(!i?.entry||i.entry.available===!1))return{model:``,thinkingLevel:``,repaired:!0};let a=i?.entry?be(i.entry.id,i.entry.provider):``;if(!t)return{model:a,thinkingLevel:``,repaired:!1};let o=n.context?.sessions.state.result?.defaults,s=n.agent?.model?.primary,c=a?null:Q(s??o?.model,s?void 0:o?.modelProvider,this.catalog),l=i?.entry??c?.entry,u=a?l?.thinkingLevels:n.agent?.thinkingLevels??o?.thinkingLevels??l?.thinkingLevels,d=Pt(t),f=u?.some(e=>Pt(e.id)===d);return l?.reasoning===!1||u!==void 0&&!f?{model:a,thinkingLevel:``,repaired:!0}:{model:a,thinkingLevel:t,repaired:!1}}resolveAgentRuntime(e){let t=e.context?.sessions.state.result?.defaults,n=e.agent?.model?.primary,r;r=this.effectiveModel?Q(this.effectiveModel,void 0,this.catalog)?.entry?.agentRuntime:Q(n??t?.model,n?void 0:t?.modelProvider,this.catalog)?.entry?.agentRuntime??e.agent?.agentRuntime??t?.agentRuntime;let i=r?.id.trim();if(!(!r||!i||i===`auto`||i==="default"))return i===r.id?r:{...r,id:i}}devicePlacementUnsupportedReason(){let e=this.resolveAgentRuntime({agent:this.pendingAgent,context:this.pendingContext});return e&&!e.devicePlacement?L(`newSession.deviceRuntimeUnsupported`):void 0}autoPlacementSelectionMode(){return this.resolveAgentRuntime({agent:this.pendingAgent,context:this.pendingContext})?.cloudPlacementExecutionMode===`remote-exec`?`eligible-order`:`least-busy`}cloudRuntimeUnsupportedReason(e){let t=this.resolveAgentRuntime({agent:this.pendingAgent,context:this.pendingContext});return t?.cloudPlacementSupported===!1?L(`newSession.cloudRuntimeUnsupported`,{runtime:t.id}):t&&e&&t.cloudPlacementExecutionMode&&!Cr(e,t.cloudPlacementExecutionMode)?L(`newSession.cloudProfileRuntimeUnsupported`,{runtime:t.id}):void 0}render(e){let t=e.context?.gateway.snapshot,n=`new-session:${r(e.agentId)}`,i=e.context?.sessions.state.result??null,a=e.agent!==void 0,o=e.agent?.model?.primary,s=Q(o??i?.defaults.model,o?void 0:i?.defaults.modelProvider,this.catalog),c=Q(this.effectiveModel,void 0,this.catalog),l=t?.client,u=this.metadataScope,d=this.metadataState.accountSelection,f=()=>!!(l&&u&&this.ownsMetadata(l,u)&&this.metadataState.accountSelection===d),p=c?.entry??s?.entry,m=p?.contextWindowDefault,h=this.contextWindow||m,g={model:c?.model,modelProvider:c?.provider??void 0,thinkingLevel:this.thinkingLevel||void 0},_={...i?.defaults,modelProvider:s?.provider??i?.defaults.modelProvider??null,model:s?.model??i?.defaults.model??null,contextTokens:i?.defaults.contextTokens??null,agentRuntime:e.agent?.agentRuntime??i?.defaults.agentRuntime,thinkingLevels:e.agent?.thinkingLevels??i?.defaults.thinkingLevels,thinkingOptions:e.agent?.thinkingOptions??i?.defaults.thinkingOptions,thinkingDefault:e.agent?.thinkingDefault??i?.defaults.thinkingDefault??`medium`};return Ur({renderAccountControl:n=>Er({owner:this,client:l,selection:f()&&t?.selfUser?d:void 0,model:n,disabled:e.sending||!n||!ht(t?.hello?.auth??null),ownsSelection:f,onSelect:e=>f()?this.selectDraftAccount(e,n):Promise.resolve(!1),onAutomatic:this.draftAccount?()=>{f()&&(this.selectionGeneration+=1,this.clearDraftAccount(),this.load(e.context,e.agentId,!0,{agent:e.agent}))}:void 0,onManage:()=>e.context?.navigate(`profile`),onRequestUpdate:this.notify,hint:L(`chat.modelAccounts.draftHint`)}),activeRunId:null,agentDefaultModel:o,connected:t?.phase===`connected`,gatewayAvailable:!!t?.client,loading:!1,modelCatalog:this.catalog,modelCatalogState:{hasSnapshot:a&&this.metadataState.hasSnapshot,status:!a&&this.metadataState.status!==`error`?`loading`:this.metadataState.status},contextWindowTarget:p?.contextWindows&&h?{contextWindow:h,contextWindows:p.contextWindows,...m?{contextWindowDefault:m}:{}}:void 0,fastModeTarget:{model:c?.model??s?.model,modelProvider:c?.provider??s?.provider??void 0,fastMode:this.fastMode,effectiveFastMode:this.fastMode??(c?.entry??s?.entry)?.effectiveFastMode},modelOverrides:{[n]:this.effectiveModel},modelPickerTargetGroups:this.catalogTargets.groups(),modelSwitching:!1,sending:e.sending,sessionKey:n,selectedSession:void 0,sessionsResult:i,stream:null,thinkingDefaults:_,thinkingSession:g,onModelSelect:t=>{this.selectionGeneration+=1,this.restoringPreference=!1;let n=this.reconcileSelection(t,this.thinkingLevel,e);this.selected=n.model;let r=Q(n.model,void 0,this.catalog)??s;this.draftAccount&&this.draftAccount.provider!==r?.provider?(this.clearDraftAccount(),this.load(e.context,e.agentId,!0,{agent:e.agent})):this.draftAccount&&r&&(this.draftAccount={...this.draftAccount,model:be(r.model,r.provider)}),this.contextWindow=``,this.thinkingLevel=n.thinkingLevel,this.fastMode=Zt((Q(n.model,void 0,this.catalog)??s)?.provider)?this.fastMode:void 0,this.onSelectionChange({model:n.model,thinkingLevel:this.thinkingLevel})},onModelPickerTargetSelect:(e,t)=>{e===`cliAgents`&&this.onCatalogTargetSelect(t)},onModelPickerTargetRetry:e=>{e===`cliAgents`&&this.retryPickerCatalogs()},onThinkingSelect:e=>{this.selectionGeneration+=1,this.restoringPreference=!1,this.thinkingLevel=e,this.onSelectionChange({model:this.selected,thinkingLevel:this.thinkingLevel})},onFastModeSelect:e=>{this.selectionGeneration+=1,this.restoringPreference=!1,this.fastMode=kt(e),this.notify()},onContextWindowSelect:e=>{this.selectionGeneration+=1,this.restoringPreference=!1,this.contextWindow=e,this.notify()},onModelSetup:()=>e.context?.navigate(`model-setup`),onModelPickerOpen:()=>this.retryPickerCatalogs(!0),onRequestUpdate:this.notify})}}})))()}var Ko;function qo(){return(qo=e((()=>{N(),I(),De(),v(),X(),Ga(),na(),Bi(),Bo(),Ho(),Go(),mo(),Ko=class{get terminalOnNode(){return this.terminalHostId.startsWith(`node:`)}selectTerminalHost(e){this.read().submitting||e===this.terminalHostId||(this.terminalHostId=e,this.cancelRestoredFolderValidation(),this.browser.clearProjectSelection(),this.repositoryState.reset(),this.folderValue=this.terminalOnNode?``:this.workspacePath(),this.folderSelectedByUser=!0,this.terminalOnNode||this.repositoryState.load(),this.callbacks.requestUpdate())}constructor(e,t,n,r){this.gateway=e,this.browser=t,this.read=n,this.callbacks=r,this.terminalHostId=`gateway:local`,this.agentIdValue=``,this.folderValue=``,this.deviceIdValue=``,this.autoDeviceValue=!1,this.cloudProfileIdValue=``,this.cloudMachines=new zi,this.restoredFolderValidation=`none`,this.gatewayApprovedWorkspaceRoots=[],this.agentsHydratedValue=!1,this.agentSelectedByUser=!1,this.folderSelectedByUser=!1,this.preferredWhereRestore=null,this.preferredProjectRestore=``,this.whereSelectedByUser=!1,this.projectSelectedByUser=!1,this.restoredFolderValidationToken=0,this.repositoryState=new zo(()=>({remotePlacement:this.remotePlacement,selectedProject:this.browser.selectedProject(),remoteProject:this.browser.remoteProject,folder:this.folderValue,workspace:this.workspacePath(),workspaceGit:this.selectedAgent()?.workspaceGit===!0,gateway:this.read().context?.gateway.snapshot}),{requestUpdate:r.requestUpdate,persistPreference:e=>this.persistPreference(e)}),this.modelControl=new Wo(r.requestUpdate,e=>this.persistPreference(e),e=>this.read().context?.navigate(`new-session`,{search:ve(this.agentIdValue,{catalogId:e})}))}buildSessionCreateParams(e){return Ua({...e,agentId:this.agentId,model:this.modelControl.modelForSubmission(),contextWindow:this.modelControl.contextWindow,thinkingLevel:this.modelControl.thinkingLevel,fastMode:this.modelControl.fastMode,projectId:this.browser.remoteProject?.projectId??this.browser.projectId,projectGitUrl:this.browser.remoteProject?.cloneUrl,worktree:this.worktree,baseRef:this.baseRef,worktreeName:this.worktreeName,cwd:this.folder,workspace:this.workspacePath()})}get agentId(){return this.agentIdValue}get folder(){return this.folderValue}get worktree(){return this.repositoryState.worktree}get worktreeName(){return this.repositoryState.worktreeName}get baseRef(){return this.repositoryState.baseRef}get repository(){return this.repositoryState.repository}get deviceId(){return this.deviceIdValue}get autoDevice(){return this.autoDeviceValue}get remotePlacement(){return!!(this.deviceIdValue||this.autoDeviceValue||this.cloudProfileIdValue)}get cloudProfileId(){return this.cloudProfileIdValue}get machineClass(){return this.cloudMachines.resolve(this.cloudProfileIdValue)}get agentsHydrated(){return this.agentsHydratedValue}get placementPreferenceReady(){return this.repositoryState.preferenceReady&&this.preferredWhereRestore===null}canAdoptGroupDefaults(){return!this.folderSelectedByUser&&!this.whereSelectedByUser&&!this.projectSelectedByUser&&!this.repositoryState.hasUserSelection}adoptGroupDefaults(){this.read().data?.groupStatus!==`resolved`||!this.canAdoptGroupDefaults()||this.adoptAgentDefaults({preserveSelectedAgent:!0})}setAgentsHydrated(e){this.agentsHydratedValue=e}agents(){return je(this.read().context?.agents.state.agentsList?.agents??[])}selectedAgent(){let e=r(this.agentIdValue);return this.agents().find(t=>r(t.id)===e)}devicePlacementRuntime(){return this.modelControl.resolveAgentRuntime({agent:this.selectedAgent(),context:this.read().context})}devices(){return $i(this.gateway.environments,this.devicePlacementRuntime()?.devicePlacement,this.gateway.deviceCatalogDisabledReason)}findDevice(e){return this.devices().find(t=>t.deviceId===e)}devicePlacementReady(){return this.autoDeviceValue?this.devices().some(e=>e.selectable):!this.deviceIdValue||this.findDevice(this.deviceIdValue)?.selectable===!0}devicePlacementDisabledReason(){if(this.autoDeviceValue)return ea(this.gateway.environments,this.devices());if(this.deviceIdValue)return this.findDevice(this.deviceIdValue)?.disabledReason??L(`newSession.nodeUnavailable`)}isAdmin(){return at(this.read().context?.gateway.snapshot.hello?.auth??null)}canWrite(){return ht(this.read().context?.gateway.snapshot.hello?.auth??null)}workspacePath(){return p(this.selectedAgent()?.workspace)??``}knownWorkspaceRoots(){let e=this.workspacePath();return e?[e,...this.gatewayApprovedWorkspaceRoots]:this.gatewayApprovedWorkspaceRoots}recordGatewayApprovedListing(e){if(this.isAdmin())return;let t=new Set(this.gatewayApprovedWorkspaceRoots);t.add(e.path),e.parent&&t.add(e.parent),t.size!==this.gatewayApprovedWorkspaceRoots.length&&(this.gatewayApprovedWorkspaceRoots=[...t],this.callbacks.requestUpdate())}folderSubmissionBlocked(){return this.browser.projectId||this.browser.remoteProject?!this.browser.remoteProject&&!this.browser.selectedProject():this.restoredFolderValidation!==`none`}adoptAgentDefaults(e={}){let t=this.read(),n=this.agents(),r=t.context?.agents.state.agentsList?.defaultId,i=n.some(e=>e.id===r)?r??``:n[0]?.id??``;if(e.preserveSelectedAgent&&this.agentSelectedByUser&&this.selectedAgent()||(this.agentIdValue=va(t.data,n,i),this.agentSelectedByUser=!1),Y(t.data)&&this.terminalOnNode){this.callbacks.requestUpdate();return}let a=this.agentIdValue?this.gateway.readPreference(this.agentIdValue):null,o=e.preserveSelectedFolder&&this.folderSelectedByUser;if(!o&&!t.pendingPlacementSessionKey){let e=this.workspacePath(),n=a?.folder??``,r=!!n&&n===a?.workspace&&a.workspace!==e,i=!!n&&!r,o=!!t.data?.group,s=t.data?.groupCwd??``,c=t.data?.groupWorktree===!0;this.folderValue=o?s||e:i?n:e,this.folderSelectedByUser=!1,this.repositoryState.adoptPreference(o?{worktree:c}:a);let l=o||Y(t.data)?{kind:`local`}:a?.where??{kind:`local`};this.whereSelectedByUser||(this.preferredWhereRestore=l.kind===`local`?null:l),this.preferredProjectRestore=o||Y(t.data)?``:a?.projectId??``,this.projectSelectedByUser=!1,r&&!o&&this.persistPreference({folder:e})}o&&!t.pendingPlacementSessionKey&&this.agentIdValue&&this.persistPreference({folder:this.folderValue,worktree:this.worktree}),this.remotePlacement&&this.repositoryState.forceWorktree(!0),this.modelControl.load(t.context,this.agentIdValue,!Y(t.data),{agent:this.selectedAgent(),preference:a}),this.preferredProjectRestore?this.cancelRestoredFolderValidation():!this.folderSelectedByUser&&this.folderValue!==this.workspacePath()&&!t.pendingPlacementSessionKey?this.validateRestoredFolder(this.folderValue):(this.cancelRestoredFolderValidation(),this.repositoryState.matchesCurrentRepo()||this.repositoryState.load()),this.callbacks.requestUpdate()}resetPlaceSelection(){this.folderSelectedByUser=!1,this.gatewayApprovedWorkspaceRoots=[],this.preferredWhereRestore=null,this.preferredProjectRestore=``,this.whereSelectedByUser=!1,this.projectSelectedByUser=!1,this.deviceIdValue=``,this.autoDeviceValue=!1,this.cloudProfileIdValue=``,this.repositoryState.reset()}resetDraft(){this.terminalHostId=`gateway:local`,this.agentSelectedByUser=!1,this.folderValue=``,this.browser.clearProjectSelection(),this.resetPlaceSelection(),this.browser.resetProjectSearch(),this.cancelRestoredFolderValidation(),this.modelControl.reset(),this.cloudMachines.clear(),this.callbacks.requestUpdate()}invalidateGatewayDiscovery(e){if(this.repositoryState.invalidate(),this.agentsHydratedValue=!1,this.modelControl.invalidate(e),this.browser.close(),this.cancelRestoredFolderValidation(),this.gatewayApprovedWorkspaceRoots=[],this.browser.resetProjectSearch(),this.browser.resetProjects(e),!e){this.callbacks.requestUpdate();return}this.agentIdValue=``,this.agentSelectedByUser=!1,this.folderValue=``,this.resetPlaceSelection(),this.cloudMachines.clear(),this.callbacks.requestUpdate()}applyPendingPlacement(e){this.agentIdValue=e.agentId,this.deviceIdValue=e.deviceId??``,this.autoDeviceValue=e.autoDevice===!0,this.cloudProfileIdValue=e.profileId,this.cloudMachines.applyPending(e.profileId,e.machineClass),this.repositoryState.forceWorktree(!0),this.folderValue=e.cwd??``,this.callbacks.requestUpdate()}clearCloudProfile(){this.cloudProfileIdValue=``,this.browser.close(),this.callbacks.requestUpdate()}clearProjectSelection(){(this.browser.projectId||this.browser.remoteProject)&&this.repositoryState.clearDetails(!0),this.browser.clearProjectSelection(),this.repositoryState.load(),this.callbacks.requestUpdate()}selectAgentId(e){let t=this.read();t.submitting||t.pendingPlacementSessionKey||Y(t.data)||r(e)!==r(this.agentIdValue)&&(this.agentIdValue=r(e),this.cancelRestoredFolderValidation(),this.modelControl.reset(),this.callbacks.onError(null),this.agentSelectedByUser=!0,this.browser.clearProjectSelection(),this.resetPlaceSelection(),this.browser.close(),this.adoptAgentDefaults({preserveSelectedAgent:!0}))}applyFolder(e){let t=this.read();if(!(t.submitting||t.pendingPlacementSessionKey)){if(this.browser.clearProjectSelection(),this.cancelRestoredFolderValidation(),this.callbacks.onError(null),this.folderValue=e.trim(),this.folderSelectedByUser=!0,this.projectSelectedByUser=!0,this.preferredProjectRestore=``,Y(t.data)&&this.terminalOnNode){this.callbacks.requestUpdate();return}this.repositoryState.selectWorktree(this.remotePlacement),this.agentsHydratedValue&&this.persistPreference({folder:this.folderValue,projectId:``,worktree:this.worktree}),this.repositoryState.load()}}selectProjectId(e){let t=this.browser.projects.find(t=>t.id===e);t&&this.selectProject({kind:`local`,id:t.id})}selectRemoteProject(e){this.selectProject({kind:`remote`,project:e})}selectProject(e){let t=this.read();t.submitting||t.pendingPlacementSessionKey||(this.browser.selectProject(e),this.cancelRestoredFolderValidation(),this.browser.resetProjectSearch(),this.callbacks.onError(null),this.folderSelectedByUser=!1,this.projectSelectedByUser=!0,this.preferredProjectRestore=``,this.repositoryState.selectWorktree(this.remotePlacement),e.kind===`local`&&this.persistPreference({projectId:e.id,where:eo({cloudProfileId:this.cloudProfileIdValue,deviceId:this.deviceIdValue,autoDevice:this.autoDeviceValue}),worktree:this.worktree,worktreeName:``}),this.repositoryState.load(),this.browser.close())}selectDevice(e,t=!1){let n=this.read();n.submitting||n.pendingPlacementSessionKey||e&&this.findDevice(e)?.selectable!==!0||t&&!this.devices().some(e=>e.selectable)||e===this.deviceIdValue&&t===this.autoDeviceValue&&!this.cloudProfileIdValue||(this.cancelRestoredFolderValidation(),this.deviceIdValue=e,this.autoDeviceValue=t,this.cloudProfileIdValue=``,this.whereSelectedByUser=!0,this.preferredWhereRestore=null,(e||t)&&!this.worktreeAvailable()&&((this.folderValue!==this.workspacePath()||this.browser.projectId)&&this.repositoryState.clearDetails(!0),this.folderValue=this.workspacePath(),this.folderSelectedByUser=!1,this.browser.clearProjectSelection(),this.projectSelectedByUser=!0),this.repositoryState.forceWorktree(!!(e||t)),this.persistPreference({where:eo({cloudProfileId:``,deviceId:e,autoDevice:t}),projectId:this.browser.projectId,folder:this.folderValue,worktree:!!(e||t)||this.worktree}),this.browser.close(),this.repositoryState.matchesCurrentRepo()||this.repositoryState.load(),this.callbacks.requestUpdate())}selectCloudProfile(e){let t=this.read(),n=this.gateway.cloudProfiles.find(t=>t.id===e);t.submitting||t.pendingPlacementSessionKey||!this.isAdmin()||!this.worktreeAvailable()||!n||this.modelControl.cloudRuntimeUnsupportedReason(n)||(this.cloudProfileIdValue=e,this.deviceIdValue=``,this.autoDeviceValue=!1,this.whereSelectedByUser=!0,this.preferredWhereRestore=null,this.callbacks.onError(null),this.repositoryState.forceWorktree(!0),this.persistPreference({where:{kind:`cloud`,id:e},projectId:this.browser.projectId,worktree:!0}),this.browser.close(),this.repositoryState.matchesCurrentRepo()||this.repositoryState.load(),this.callbacks.requestUpdate())}selectWorktree(e){this.repositoryState.select(e)}setBaseRef(e){this.repositoryState.setBaseRef(e,this.read().submitting)}setWorktreeName(e){this.repositoryState.setWorktreeName(e,this.read().submitting)}restorePreferenceSelections(){let e=!1,t=this.whereSelectedByUser?null:this.preferredWhereRestore,n=this.projectSelectedByUser?``:this.preferredProjectRestore;if(t?.kind!==`device`&&t?.kind!==`auto-device`&&n){let t=this.browser.projects.find(e=>e.id===n);t?(this.browser.selectProject({kind:`local`,id:t.id}),this.folderSelectedByUser=!1,this.preferredProjectRestore=``,e=!0):this.browser.projectsReady&&(this.preferredProjectRestore=``,n=``,e=!0)}if((t?.kind===`device`||t?.kind===`auto-device`)&&this.gateway.cloudProfilesReady){let n=t.kind===`auto-device`;this.autoDeviceValue=n,this.deviceIdValue=t.kind===`device`?t.id:``,this.cloudProfileIdValue=``,this.repositoryState.forceWorktree(this.remotePlacement),this.preferredWhereRestore=null,e=!0}else if(t?.kind===`cloud`&&this.gateway.cloudProfilesReady){let r=this.gateway.cloudProfiles.find(e=>e.id===t.id),i=!!(this.isAdmin()&&r&&!this.modelControl.cloudRuntimeUnsupportedReason(r)),a=(!n||this.browser.projectId===n)&&this.repositoryState.matchesCurrentRepo()&&this.repository.kind!==`checking`;i&&a&&this.worktreeAvailable()?(this.deviceIdValue=``,this.autoDeviceValue=!1,this.cloudProfileIdValue=t.id,this.repositoryState.forceWorktree(!0),this.preferredWhereRestore=null,e=!0):(!i||a)&&(this.cloudProfileIdValue=``,e=!0,this.preferredWhereRestore=null,(!i||this.repository.kind===`direct`)&&this.persistPreference({where:{kind:`local`}}))}e&&(this.repositoryState.matchesCurrentRepo()||this.repositoryState.load(),this.callbacks.requestUpdate())}browseAvailable(){return this.gateway.connected&&(this.isAdmin()||!!this.workspacePath())}worktreeAvailable(){return this.repositoryState.available()}persistPreference(e){this.gateway.persistPreference(this.agentIdValue,this.workspacePath(),e)}cancelRestoredFolderValidation(){this.restoredFolderValidationToken+=1,this.restoredFolderValidation=`none`}restoreWorkspaceFolder(){this.restoredFolderValidation=`none`,this.callbacks.onClearError(L(`newSession.browserLoadFailed`)),this.folderValue=this.workspacePath(),this.repositoryState.rejectPreferredWorktree(),this.persistPreference({folder:this.folderValue,worktree:!1}),this.repositoryState.load()}validateRestoredFolder(e){let t=this.read().context?.gateway.snapshot,n=t?.client;if(t?.phase!==`connected`||!n){this.restoreWorkspaceFolder();return}let r=++this.restoredFolderValidationToken;this.restoredFolderValidation=`checking`;let i=()=>r===this.restoredFolderValidationToken&&!this.folderSelectedByUser&&this.folderValue===e;n.request(`fs.listDir`,{path:e}).then(e=>{i()&&(this.recordGatewayApprovedListing(e),this.restoredFolderValidation=`none`,this.callbacks.onClearError(L(`newSession.browserLoadFailed`)),this.repositoryState.load())}).catch(e=>{if(i()){if(!this.isAdmin()||Vo(e)){this.restoreWorkspaceFolder();return}this.restoredFolderValidation=`failed`,this.callbacks.onError(L(`newSession.browserLoadFailed`))}})}}})))()}var Jo;function Yo(){return(Yo=e((()=>{y(),Vn(),Jo=class{constructor(e,t){this.notify=e,this.onUserChange=t,this.attachments=[],this.reads=new di(e)}get pendingReads(){return this.reads.pendingReads}get readSignal(){return this.reads.readSignal}replace(e){this.attachments=e,this.onUserChange(),this.notify()}restore(e){D(this.attachments,[e]),this.attachments=e,this.notify()}updatePending(e,t){this.reads.updatePending(e,t)}abortReads(){this.reads.abortReads()}take(){this.abortReads();let e=this.attachments;return this.attachments=[],this.notify(),e}reset(e){this.abortReads(),e.release&&T(this.attachments),this.attachments=[],this.notify()}clearAfterSubmit(e){e&&T(this.attachments),this.attachments=[],this.notify()}}})))()}async function Xo(e){let t;for(;!t;)try{let n=await e.client.request(`agent.wait`,{runId:e.runId,timeoutMs:3e4},{timeoutMs:null});if(e.context.gateway.snapshot.client!==e.client)return;let r=n.status===`timeout`&&n.endedAt===void 0&&!n.error&&!n.stopReason&&n.providerStarted!==!0;if(n.status===`pending`||n.pendingError===!0)await $o();else if(r){let n=e.context.placementStartup.get(e.key)?.initialTurn;n?.sendState===`failed`&&n.sendRunId===e.runId?t={status:`error`,error:n.sendError}:await $o()}else t=n}catch{let t=e.context.gateway.snapshot,n=t.phase===`connecting`||t.phase===`starting`||t.phase===`reconnecting`;if(t.client!==e.client||!n)return;await $o()}let n=e.context.gateway.snapshot;if(de({...n,sessionKey:n.sessionKey},e.key,e.agentId))return;let r=e.context.sessions.state.result?.sessions.find(t=>Pe(t.key,e.key)),i=t.status===`ok`?L(`sessionsView.statusDone`):t.status===`timeout`?L(`sessionsView.statusTimeout`):t.stopReason===`rpc`?L(`sessionsView.statusKilled`):L(`sessionsView.statusFailed`),a=le({face:`chat`,sessionKey:e.key,fallbackAgentId:e.agentId,exactKey:!0});e.context.nativeNotifications?.backgroundSessionCompleted({runId:e.runId,path:a.options.pathname,...a.options.search?{search:a.options.search}:{}}),Ae({fifo:!0,message:`${Le(e.key,r)}: ${i}`,actionLabel:L(`sessionsView.openSession`),onAction:()=>{tt({selection:e.context.agentSelection,gateway:e.context.gateway,sessionKey:e.key,agentId:e.agentId}),e.context.navigate(`chat`,le({context:e.context,face:`chat`,sessionKey:e.key,agentId:e.agentId}).options)}})}function Zo(e){return(t,n)=>{let r=n?.trim();return!e.enabled||!r?!1:(e.clearDraft(),Xo({agentId:e.agentId,client:e.client,context:e.context,key:t,runId:r}),!0)}}var Qo,$o;function es(){return(es=e((()=>{ut(),I(),ne(),b(),v(),Ee(),Qo=1e3,$o=()=>new Promise(e=>{globalThis.setTimeout(e,Qo)})})))()}var ts;function ns(){return(ns=e((()=>{N(),I(),Jt(),qr(),Ga(),ts=class{constructor(e){this.notify=e,this.toolOverridesValue=null,this.onMutation=()=>{},this.skillCatalog=new Zr(e)}setMutationCallback(e){this.onMutation=e}get toolOverrides(){return this.toolOverridesValue}setToolOverrides(e){let t=Dr(e)>0?e:null;t!==this.toolOverridesValue&&(this.onMutation(),this.toolOverridesValue=t,this.notify())}reset(){this.toolOverridesValue=null}restoreToolOverrides(e){e!==void 0&&this.setToolOverrides(e)}canStartAsDraft(e){return Va({allowedVisibilities:e?.gateway.snapshot.hello?.policy?.allowedSessionVisibilities,hasMultipleIdentities:e?.gateway.snapshot.hello?.policy?.hasMultipleSessionSharingIdentities})}composerProps(e,t,n){return{toolOverrides:this.toolOverridesValue,capabilityMenu:e?this.props(e,t,n):void 0}}props(e,t,n){this.skillCatalog.synchronize(t.client,t.connectionEpoch);let r=e.runtimeConfig.state;!r.configSnapshot&&!r.configLoading&&e.runtimeConfig.ensureLoaded().finally(this.notify);let i=r.configSnapshot?.runtimeConfig??null,a=t.connected&&!!t.client,o=pt(e.gateway.snapshot),s=a?i?o.canAdmin?null:L(`chat.composer.menu.adminBlocked`):L(`common.loading`):L(`chat.composer.menu.offlineBlocked`);return{basePath:e.basePath,skills:this.skillCatalog.rows(n,this.toolOverridesValue),skillsLoading:this.skillCatalog.isLoading(n),skillsError:this.skillCatalog.hasError(n),mcpServers:en(i)??[],toolsEffectiveResult:null,toolsEffectiveLoading:!1,toolsEffectiveError:!1,toolAccessMutationBlockedReason:s,webSearchBaseEnabled:zr(i),mutationBlockedReason:s,canAdmin:o.canAdmin&&a,adminBlockedReason:o.canAdmin?a?null:L(`chat.composer.menu.offlineBlocked`):L(`chat.composer.menu.adminBlocked`),onLoadSkills:()=>{let e=t.client,r=t.connectionEpoch;this.skillCatalog.load(e,r,n,()=>t.connected&&t.client===e&&t.connectionEpoch===r)},onPatchToolOverrides:e=>this.setToolOverrides(e),onNavigate:(t,n)=>e.navigate(t,n)}}}})))()}var rs,is,as;function os(){return(os=e((()=>{qt(),Qt(),on(),l(),rs=f(()=>import(`./composer-draft-store.runtime-BBDzpAf3.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17]),import.meta.url),is=200,as=class{constructor(e,t,n){this.read=e,this.apply=t,this.onStorageError=n,this.gatewayOwner=``,this.recoveryScope=``,this.routeKey=``,this.revision=0,this.mutationGeneration=0,this.pristineMutationBaseline=0,this.restoreGeneration=0,this.restoredIdentity=``,this.pending=null,this.timer=null,this.incognitoRetirement=Promise.resolve(),this.lineageByScope=new Map}setOwner(e,t,n=!1){let r=Kt(e).gatewayOwner,i=JSON.stringify([r,t]),a=this.gatewayOwner?JSON.stringify([this.gatewayOwner,this.recoveryScope]):``;if(a===i)return;let o=this.routeKey;this.persistNow(),this.restoreGeneration+=1,this.restoredIdentity=``,this.routeKey=``,this.gatewayOwner=r,this.recoveryScope=t,a&&!n&&this.apply(``,[],!0),n||this.activateRoute(o)}setIncognito(e){return e&&(this.incognitoRetirement=this.retireActive()),this.incognitoRetirement}transitionIncognito(e,t,n){let r=this.setIncognito(t);if(e&&!t){r.finally(n);return}n()}selectRoute(e){e&&this.routeKey!==e&&(this.persistNow(),this.routeKey=e,this.revision=0)}activateRoute(e){this.selectRoute(e);let t=this.scope();if(!t)return;let n=W(t);if(n===this.restoredIdentity)return;if(this.restoredIdentity=n,this.read().incognito){this.retireActive();return}let r=++this.restoreGeneration,i=this.mutationGeneration,a=this.read(),o=gn(a.message,a.attachments,void 0,a.mentions);this.restoreScope(t,r,i,o)}noteDraftReplaced(){this.pristineMutationBaseline=this.mutationGeneration}noteUserMutation(){if(this.mutationGeneration+=1,this.revision=U(this.revision),this.read().incognito)return;this.discardPending();let e=this.snapshot();e&&(this.pending=e,this.timer=globalThis.setTimeout(()=>this.persistNow(),is))}async retireActive(){this.mutationGeneration+=1,this.discardPending();let e=U(this.revision);this.revision=e;let t=this.scope();if(!t)return;let{retireDurableComposerDraft:n}=await rs,r=this.lineage(t),i=Math.max(e,r.revision),a=await n(t,i);a.status===`storage-failed`?G(t,this.onStorageError):a.status===`persisted`&&(r.localWriteIds.clear(),this.adoptCommittedRevision(t,a.revision??i,a.writeId))}async clearSubmittedDraft(){this.persistNow(),this.mutationGeneration+=1;let e=this.scope();if(!e)return;let t=this.read(),n=Hn(t.attachments),{readDurableComposerDraft:r}=await rs,i=this.lineage(e),a=i.revision,o=i.writeId;for(let i=0;i<3;i+=1){let i=await r(e);if(i.status===`storage-failed`){G(e,this.onStorageError);return}let s=(i.status===`found`?i.draft.revision:i.revision)??0,c=i.status===`found`?i.draft.writeId:i.writeId;if(s!==a||c!==o){if(i.status!==`found`||!await mn(i.draft,t.message,n,t.mentions))return;a=s,o=c,this.adoptCommittedRevision(e,s,c)}let l=U(Math.max(this.revision,a)),u=`clear:${l}`,{result:d}=await kn({scope:e,expectedRevision:a,...o?{expectedWriteId:o}:{},revision:l,text:``,storedAttachments:[],writeId:u});if(d.status===`persisted`){this.adoptCommittedRevision(e,d.revision??l,d.writeId??u);return}if(d.status===`storage-failed`){G(e,this.onStorageError);return}}}persistNow(){this.clearTimer();let e=this.pending;if(e){if(this.read().incognito){this.discardPending();return}this.pending=null,(async()=>{try{let{result:t,payloadUnavailable:n}=await kn(e);if(n&&G(e.scope,this.onStorageError),t.status===`persisted`||t.status===`payload-too-large`){let n=t.revision??e.revision;this.adoptCommittedRevision(e.scope,n,t.writeId??e.writeId),t.status===`payload-too-large`&&G(e.scope,this.onStorageError);return}if(t.status===`storage-failed`){G(e.scope,this.onStorageError);return}if(this.routeKey!==e.scope.scopeKey||this.revision!==e.revision)return;this.restoredIdentity=``,this.activateRoute(this.routeKey)}finally{this.forgetLocalWrite(e)}})()}}disconnect(){this.persistNow(),this.restoreGeneration+=1}scope(){return!this.gatewayOwner||!this.recoveryScope||!this.routeKey?null:{gatewayOwner:this.gatewayOwner,recoveryScope:this.recoveryScope,scopeKey:this.routeKey}}snapshot(){let e=this.scope();if(!e||this.revision<=0)return null;let t=this.read(),n=this.lineage(e),r=[...n.localWriteIds],i=`${this.revision}:${Math.random().toString(36).slice(2)}`;return n.localWriteIds.add(i),{scope:e,expectedRevision:n.revision,...n.writeId?{expectedWriteId:n.writeId}:{},expectedWriteIds:r,revision:this.revision,text:t.message,...t.mentions?.length?{mentions:t.mentions.map(e=>({...e}))}:{},storedAttachments:Hn(t.attachments),writeId:i}}async restoreScope(e,t,n,r){let{readDurableComposerDraft:i}=await rs,a=await i(e);if(a.status===`storage-failed`){G(e,this.onStorageError);return}let o=a.status===`found`?a.draft.revision:a.revision,s=a.status===`found`?a.draft.writeId:a.writeId,c=this.lineage(e);c.revision=o??0,c.writeId=s;let l=this.read(),u=this.scope();if(t!==this.restoreGeneration||n!==this.mutationGeneration||!u||W(e)!==W(u)||r!==gn(l.message,l.attachments,void 0,l.mentions))return;if(o===void 0||o<this.revision||n>this.pristineMutationBaseline){o!==void 0&&o>=this.revision?this.revision=U(o):this.revision<=0&&n>this.pristineMutationBaseline&&(this.revision=U(0)),this.pending=this.snapshot(),this.persistNow();return}let d=[];if(a.status===`found`)try{d=await Mr(a.draft.attachments)}catch{G(e,this.onStorageError);return}let f=this.read(),p=this.scope();t!==this.restoreGeneration||n!==this.mutationGeneration||!p||W(e)!==W(p)||r!==gn(f.message,f.attachments,void 0,f.mentions)||(this.revision=o,a.status===`found`&&a.draft.mentions?this.apply(a.draft.text,d,void 0,a.draft.mentions):this.apply(a.status===`found`?a.draft.text:``,d))}clearTimer(){this.timer!==null&&(globalThis.clearTimeout(this.timer),this.timer=null)}discardPending(){this.clearTimer();let e=this.pending;this.pending=null,e&&this.forgetLocalWrite(e)}forgetLocalWrite(e){let t=W(e.scope),n=this.lineageByScope.get(t);n&&(n.localWriteIds.delete(e.writeId),!n.revision&&!n.writeId&&!n.localWriteIds.size&&this.lineageByScope.delete(t))}lineage(e){let t=W(e),n=this.lineageByScope.get(t);return n||(n={revision:0,localWriteIds:new Set},this.lineageByScope.set(t,n)),n}adoptCommittedRevision(e,t,n){let r=W(e),i=this.lineage(e);i.revision=t,n&&(i.writeId=n);let a=this.scope();a&&W(a)===r&&t>this.revision&&(this.revision=t)}}})))()}function ss(e,t){return{target:e.sessionKey?e.target:t.cloudProfileId?{kind:`profile`,profileId:t.cloudProfileId,...t.machineClass?{machineClass:t.machineClass}:{}}:t.deviceId?{kind:`device`,deviceId:t.deviceId}:t.autoDevice?{kind:`auto-device`}:null}}function cs(e){let t=e.createParams?.incognito?`incognito`:e.createParams?.visibility===`draft`?`draft`:`normal`;return{placement:{agentId:e.agentId,profileId:e.target.kind===`profile`?e.target.profileId:``,...e.target.kind===`profile`?{machineClass:e.target.machineClass}:e.target.kind===`device`?{deviceId:e.target.deviceId}:{autoDevice:!0},cwd:e.createParams?.cwd},draft:{message:e.message,...e.mentions?.length?{mentions:e.mentions}:{},attachments:_n(e.attachments),visibility:t,toolOverrides:e.createParams?.toolOverrides??null,permissionMode:e.createParams?.permissionMode}}}function ls(){return(ls=e((()=>{Pn()})))()}var us;function ds(){return(ds=e((()=>{Ct(),w(),us=class{constructor(e){this.gateway=e,this.pending=null}get active(){return this.pending!==null}start(e){let t=this.gateway.sessionCreateScope;if(!t)return e;if(!this.pending){let n=Date.now();this.pending={params:Object.freeze({...e,idempotencyKey:O()}),scope:t,startedAt:n,deadline:n+Tt,interrupted:!1}}return this.pending.params}clear(){this.pending=null}interrupt(){return!this.pending||!this.matchesGateway()?(this.clear(),!1):(this.pending.interrupted=!0,!0)}retireChangedOwner(){return!this.pending||this.matchesGateway()?!1:(this.clear(),!0)}resume(){return this.pending?.interrupted?Date.now()>=this.pending.deadline?(this.clear(),{kind:`expired`}):this.matchesGateway()?this.gateway.connected?(this.pending.interrupted=!1,{kind:`resume`,params:this.pending.params,startedAt:this.pending.startedAt}):{kind:`wait`}:(this.clear(),{kind:`owner-changed`}):{kind:`wait`}}matchesGateway(){return this.pending?.scope===this.gateway.sessionCreateScope}}})))()}var fs;function ps(){return(ps=e((()=>{fs=class{constructor(e){this.requestUpdate=e}setMutationCallback(e){this.onMutation=e}set(e){this.value=e,this.onMutation?.(),this.requestUpdate()}restore(e){this.value=e}reset(){this.value=void 0}}})))()}function ms(e){let t=e.context.gateway.snapshot,n={id:O(),text:e.message,...e.mentions?.length?{mentions:e.mentions}:{},attachments:e.attachments,createdAt:Date.now(),kind:`queued`,refreshSessions:!0,sendAttempts:1,sendError:e.error,sendState:`failed`,sessionKey:e.sessionKey,agentId:r(e.agentId)},i={scope:{sessionKey:n.sessionKey,agentId:n.agentId},awaitingDefaults:!1};return!sr({settings:it(),assistantAgentId:t.assistantAgentId,agentsList:e.context.agents.state.agentsList,hello:t.hello},i,n)&&(ri(e.sessionKey,{...n,sendRunId:O()}),!0)}function hs(){return(hs=e((()=>{$e(),v(),w(),fi(),er()})))()}var gs;function _s(){return(_s=e((()=>{ut(),Yt(),pr(),b(),v(),gs=class{constructor(){this.current=null}isCurrent(e,t){let n=this.current,i=e?.gateway.snapshot;return!!(n&&i?.phase===`connected`&&i.client===n.client&&i.hello===n.hello&&i.sessionKey===n.key&&r(t)===n.agentId)}async navigate(e,t){let n={...t,hello:e.gateway.snapshot.hello};this.current=n,tt({selection:e.agentSelection,gateway:e.gateway,sessionKey:t.key,agentId:t.agentId});let r=le({context:e,face:`chat`,sessionKey:t.key,agentId:t.agentId,focusComposer:!0,navigationKey:t.key}).options;await Gt({document,from:`new-session`,to:`chat`,prefersReducedMotion:globalThis.matchMedia?.(`(prefers-reduced-motion: reduce)`).matches??!1,navigate:()=>{if(this.current!==n||!this.isCurrent(e,t.agentId))throw new DOMException(`Session navigation interrupted`,`AbortError`);return br(e.gateway,r.pathname,t.key),e.navigateAndWait(`chat`,r)}}),this.current===n&&(this.current=null)}}})))()}async function vs(e,t){let n=t.name?.trim(),r=t.baseRef?.trim();return e.request(`worktrees.create`,{repoRoot:t.repoRoot.trim(),...n?{name:n}:{},...r?{baseRef:r}:{}})}function ys(){return(ys=e((()=>{})))()}function bs(e,t){let n=k(e,{method:`sessions.catalog.startTerminal`,requiredScope:`operator.admin`});return!n.allowed||!t?n:k(e,{method:`worktrees.create`,requiredScope:`operator.admin`})}async function xs(e,t,n){let r=t.cwd;if(t.worktree){let i=await vs(e,{repoRoot:r,name:t.worktreeName,baseRef:t.baseRef});if(!n())return null;r=i.path}return e.request(`sessions.catalog.startTerminal`,{catalogId:t.catalogId,agentId:t.agentId,hostId:t.hostId,cwd:r,...t.initialMessage?{initialMessage:t.initialMessage}:{}})}function Ss(e){return j`<div class="new-session-page__select new-session-page__menu-field">
    <span>${L(`newSession.where`)}</span>
    <select
      class="new-session-page__trigger"
      aria-label=${L(`newSession.where`)}
      .value=${e.hostId}
      ?disabled=${e.submitting}
      @change=${t=>{t.currentTarget instanceof HTMLSelectElement&&e.onSelect(t.currentTarget.value)}}
    >
      ${e.hosts.some(t=>t.hostId===e.hostId)?M:j`<option value=${e.hostId} disabled>
              ${L(`newSession.chooseNativeHost`)}
            </option>`}
      ${e.hosts.map(e=>j`<option value=${e.hostId}>${e.label}</option>`)}
    </select>
    <button
      type="button"
      class="btn btn--sm"
      ?disabled=${e.refreshing||e.submitting}
      @click=${e.onRefresh}
    >
      ${L(`common.refresh`)}
    </button>
  </div>`}function Cs(){return(Cs=e((()=>{A(),I(),ye()})))()}function ws(e){return e.modelControl.cloudRuntimeUnsupportedReason()||(e.repository.kind===`checking`?L(`newSession.checkingGit`):e.repository.kind===`unavailable`?L(`newSession.gitCheckUnavailable`):e.worktreeAvailable()?void 0:L(`newSession.cloudRequiresWorktree`))}function Ts(e){let{gateway:t,place:n,pendingPlacement:r,hasInitialTurn:i,createParams:a}=e,o=!!r.sessionKey,s=ss(r,n).target,c=s||!i?n.browser.remoteProject:null;if(!o&&c&&!c.projectId){let e=k(t,{method:`projects.add`,requiredScope:`operator.write`});if(!e.allowed)return e}if(!s||!o||r.phase===`creating`){let e=k(t,{method:`sessions.create`,params:a});if(!e.allowed||!s)return e}return k(t,{method:`sessions.dispatch`,requiredScope:s.kind===`profile`?`operator.admin`:`operator.write`,params:cn({key:r.sessionKey,agentId:r.agentId||n.agentId,target:s})})}function Es(e){let{snapshot:t,gateway:n,place:r,pendingPlacement:i}=e,a=r.selectedAgent();return hr({catalog:Y(t.data)||r.remotePlacement||!!i.sessionKey,connected:n.connected,agentsLoaded:t.context?.agents.state.agentsList!==null,selectedAgentFound:a!==void 0,agentModel:a?.model?.primary})}function Ds(e){let t=e.gatewayState,n=e.placeState,r=e.submissionSnapshot(),i=Y(r.data)?`terminal`:`session`,a=!!e.pendingPlacement.sessionKey;if(e.submitting)return{gate:`submitting`};if(e.mentions.length>0&&(i===`terminal`||e.visibility===`incognito`||e.message.trimStart().startsWith(`/`)))return{gate:`mentions-unsupported`,reason:L(`chat.mentions.unsupported`)};if(t.preferenceLoading||i===`session`&&n.modelControl.isRestoringPreference()||!n.placementPreferenceReady)return{gate:`preference-restore`,reason:L(`newSession.restoringPreferences`)};if(i===`session`&&e.requiresModelSetup())return{gate:`model-setup`,reason:L(`modelSetup.required.title`)};if(ga(r.data,r.context?.sessions))return{gate:`route-pending`,reason:L(`newSession.catalogUnavailable`)};if(e.pendingAttachmentReads>0)return{gate:`attachment-reads`,reason:L(`newSession.readingAttachment`)};if(!a&&e.submissionOutcomeUnknown)return{gate:`outcome-unknown`,reason:L(e.submissionOutcomeUnknown===`gateway-changed`?`newSession.createOutcomeUnknown`:`newSession.placementSetupInterrupted`)};let o=r.context?.gateway,s=o?.snapshot.phase===`connected`?o.snapshot.client??null:null;if(!o||!s)return{gate:`disconnected`,reason:L(`sessionsView.actionRequiresConnection`)};let c=i===`terminal`?bs(o.snapshot,n.worktree):e.submissionAccess();if(!c.allowed)return{gate:`access`,reason:c.reason};if(i===`terminal`){if(r.context?.config.current.cliAgentsEnabled!==!0||!r.context.config.current.terminalEnabled)return{gate:`terminal-capabilities`,reason:L(`newSession.terminalDisabled`)};if(!r.data?.terminalHosts?.some(e=>e.hostId===n.terminalHostId))return{gate:`device`,reason:L(`newSession.terminalHostUnavailable`)};if(e.hasDraftAttachments)return{gate:`terminal-capabilities`,reason:L(`newSession.terminalAttachmentsUnsupported`)};if(n.remotePlacement||e.pendingPlacement.sessionKey)return{gate:`device`,reason:L(`newSession.terminalPlacementUnsupported`)}}if(i===`terminal`&&e.hasCapabilityOverrides)return{gate:`terminal-capabilities`,reason:L(`newSession.terminalCapabilityOverridesUnsupported`)};if(n.folderSubmissionBlocked())return{gate:`folder`,reason:L(`newSession.checkingPlace`)};if(a)return e.pendingPlacement.retryAllowed&&s.recoveryScopeReady&&e.placementTargetForSubmission()&&e.pendingPlacement.agentId&&e.pendingPlacement.gatewayUrl===o.connection.gatewayUrl&&e.pendingPlacement.recoveryScope===s.recoveryScope?Os(e,i,a):{gate:`placement-recovery`,reason:L(`newSession.placementNotReady`)};let l=i===`session`&&n.modelControl.modelSelectionBlockedReason(n.selectedAgent());if(l)return{gate:`model-unavailable`,reason:l};if(n.agents().length===0)return{gate:`agents`,reason:L(`newSession.agentsUnavailable`)};if(!ya(r.data,n.selectedAgent()))return{gate:`agent-not-allowed`,reason:L(`newSession.catalogUnavailable`)};if(i===`session`&&!n.devicePlacementReady())return{gate:`device`,reason:n.devicePlacementDisabledReason()??L(`newSession.nodeUnavailable`)};let u=n.modelControl.devicePlacementUnsupportedReason();if((n.deviceId||n.autoDevice)&&u)return{gate:`device-runtime`,reason:u};let d=e.placementTargetForSubmission();if(d&&(!s.recoveryScope||!s.recoveryScopeReady||t.cloudProfilesPending))return{gate:`placement-recovery`,reason:L(`newSession.placementNotReady`)};let f=d?.kind===`profile`?d.profileId:``;return f&&(!t.cloudProfilesReady||!n.worktree||!t.cloudProfiles.some(e=>e.id===f)||e.cloudRuntimeUnsupportedReason())?{gate:`cloud`,reason:e.cloudDisabledReason()??(n.worktree?L(`newSession.placementNotReady`):L(`newSession.cloudRequiresWorktree`))}:n.worktree&&!n.worktreeAvailable()?{gate:`worktree-unavailable`,reason:n.repository.kind===`checking`?L(`newSession.checkingGit`):L(`newSession.worktreeUnavailable`)}:n.worktree&&!Ha(n.worktreeName)?{gate:`worktree-name`,reason:L(`newSession.worktreeNameInvalid`)}:i===`terminal`&&!(n.folder.trim()||!n.terminalOnNode&&n.workspacePath())?{gate:`terminal-folder`,reason:L(`newSession.terminalNeedsFolder`)}:Os(e,i,a)}function Os(e,t,n){if(t!==`session`)return;let r=n?e.pendingPlacement.message:e.message.trim(),i=n?!!e.pendingPlacement.attachments?.length:e.hasDraftAttachments;return r||i?void 0:{gate:`empty-draft`}}var ks;function As(){return(As=e((()=>{I(),Ui(),ye(),gi(),rn(),X(),Ga(),ls(),Cs(),Hi(),ks=new Set([`outcome-unknown`,`worktree-name`])})))()}var js;function Ms(){return(Ms=e((()=>{I(),Ht(),Lt(),ye(),wr(),v(),gi(),Pn(),fi(),Qn(),Yo(),es(),ns(),X(),Ba(),os(),ls(),ds(),ps(),hs(),_o(),_s(),As(),Cs(),js=class{constructor(e,t,n,r){this.gateway=e,this.place=t,this.read=n,this.callbacks=r,this.visibilityValue=`normal`,this.messageValue=``,this.mentionsValue=[],this.activeSubmission=null,this.blockedSubmitGate=null,this.submissionOutcomeUnknown=null,this.startedSession=new gs,this.error=null,this.submitRequestToken=0,this.pendingPlacement=new go,this.composerTextarea=new za,this.permission=new fs(()=>this.callbacks.requestUpdate()),this.cloudDisabledReason=()=>ws(this.place),this.placement=()=>ss(this.pendingPlacement,this.place),this.capabilities=new ts(r.requestUpdate),this.capabilities.setMutationCallback(()=>this.startedSession.current=null),this.permission.setMutationCallback(()=>this.startedSession.current=null),this.sessionStartup=new us(e),this.draftPersistence=new as(()=>({message:this.messageValue,mentions:this.mentionsValue,attachments:this.attachmentDraft.attachments,incognito:this.visibilityValue===`incognito`}),(e,t,n,r)=>{this.restoreDraftState({message:e,mentions:r,attachments:t,visibility:n?`normal`:this.visibilityValue})},()=>this.setError(si)),this.attachmentDraft=new Jo(r.requestUpdate,()=>{this.startedSession.current=null,this.draftPersistence.noteUserMutation()})}get visibility(){return this.visibilityValue}get message(){return this.messageValue}get mentions(){return this.mentionsValue}get submitting(){return this.activeSubmission!==null||this.sessionStartup.active}get pendingMessage(){return this.activeSubmission?.message??null}resumeInterruptedSubmission(){let e=this.sessionStartup.resume();e.kind===`resume`?this.submit(e):e.kind!==`wait`&&(this.activeSubmission=null,this.submissionOutcomeUnknown=`gateway-changed`,this.callbacks.requestUpdate())}setMessage(e,t){this.startedSession.current=null,this.mentionsValue=t??tn(this.messageValue,e,this.mentionsValue),this.messageValue=e,this.draftPersistence.noteUserMutation(),this.callbacks.requestUpdate()}restoreMessage(e,t=[]){this.draftPersistence.noteDraftReplaced(),this.messageValue=e,this.mentionsValue=t,this.callbacks.requestUpdate()}restoreDraftState(e){this.draftPersistence.noteDraftReplaced(),this.messageValue=e.message,this.mentionsValue=e.mentions??[],this.visibilityValue=e.visibility,this.capabilities.restoreToolOverrides(e.toolOverrides),`permissionMode`in e&&this.permission.restore(e.permissionMode),this.attachmentDraft.restore(e.attachments)}setVisibility(e){this.startedSession.current=null;let t=this.visibilityValue===`incognito`,n=this.callbacks.requestUpdate;this.visibilityValue=e,this.draftPersistence.transitionIncognito(t,e===`incognito`,n)}setError(e){(e!==null||this.error===L(`newSession.cloudRecoveryUnavailable`))&&(this.error=e),this.callbacks.requestUpdate()}clearError(){this.error=null,this.callbacks.requestUpdate()}clearErrorIf(e){this.error===e&&this.clearError()}markPendingPlacementUnavailable(e){this.pendingPlacement.retryAllowed=!1,this.submissionOutcomeUnknown=e,this.callbacks.requestUpdate()}noteBlockedSubmitAttempt(){this.blockedSubmitGate=this.submitBlock()?.gate??null,this.callbacks.requestUpdate()}blockedSubmitNotice(){let e=this.blockedSubmitGate?this.submitBlock():void 0;return e?.gate===this.blockedSubmitGate&&!ks.has(e.gate)?e.reason:void 0}buildDraftSessionCreateParams(e={}){return this.place.buildSessionCreateParams({...e,message:e.message??``,toolOverrides:this.capabilities.toolOverrides,permissionMode:this.permission.value,visibility:e.visibility??this.visibilityValue,catalogId:this.read().data?.catalogId,category:this.gateway.resolvedGroupCategory()})}submissionAccess(e=this.pendingPlacement.createParams??this.buildDraftSessionCreateParams()){return Ts({gateway:this.read().context?.gateway.snapshot,place:this.place,pendingPlacement:this.pendingPlacement,hasInitialTurn:!!(this.messageValue.trim()||this.attachmentDraft.attachments.length),createParams:e})}submitDisabledReason(){return this.submitBlock()?.reason}incognitoDisabledReason(){let e=k(this.read().context?.gateway.snapshot,{method:`sessions.create`,params:this.buildDraftSessionCreateParams({visibility:`incognito`})});return e.allowed?void 0:e.reason}canSubmit(){return this.submitBlock()===void 0}submitBlock(){return!Y(this.read().data)&&this.attachmentDraft.pendingReads===0&&this.startedSession.isCurrent(this.read().context,this.place.agentId)?this.activeSubmission?{gate:`submitting`}:void 0:Ds({gatewayState:this.gateway,placeState:this.place,pendingPlacement:this.pendingPlacement,submitting:this.activeSubmission!==null,message:this.messageValue,submissionOutcomeUnknown:this.submissionOutcomeUnknown,pendingAttachmentReads:this.attachmentDraft.pendingReads,hasDraftAttachments:this.attachmentDraft.attachments.length>0,hasCapabilityOverrides:this.capabilities.toolOverrides!==null,mentions:this.mentionsValue,visibility:this.visibilityValue,submissionSnapshot:()=>this.read(),requiresModelSetup:()=>this.requiresModelSetup(),submissionAccess:()=>this.submissionAccess(),placementTargetForSubmission:()=>this.placement().target,cloudDisabledReason:()=>this.cloudDisabledReason(),cloudRuntimeUnsupportedReason:()=>this.place.modelControl.cloudRuntimeUnsupportedReason(this.gateway.cloudProfiles.find(e=>e.id===this.place.cloudProfileId))})}requiresModelSetup(){return Es({snapshot:this.read(),gateway:this.gateway,place:this.place,pendingPlacement:this.pendingPlacement})}invalidate(e=null){this.submitRequestToken+=1,this.startedSession.current=null;let t=e!==null&&this.activeSubmission!==null&&this.sessionStartup.interrupt();(e&&this.activeSubmission&&!t||this.sessionStartup.retireChangedOwner())&&(this.submissionOutcomeUnknown=e),t||(this.activeSubmission=null),this.callbacks.requestUpdate()}resetDraft(){this.sessionStartup.clear();let e=!!this.pendingPlacement.sessionKey;this.blockedSubmitGate=null,this.invalidate(),this.submissionOutcomeUnknown=e?this.submissionOutcomeUnknown??`placement-interrupted`:null,this.visibilityValue=`normal`,this.capabilities.reset(),this.permission.reset(),this.attachmentDraft.reset({release:!0}),e?(this.pendingPlacement.restored||(this.pendingPlacement.retryAllowed=!1),this.applyRecoveryDraft(this.pendingPlacement.capture()),this.pendingPlacement.restored=!1):(this.clearPendingPlacementRecovery(),this.draftPersistence.noteDraftReplaced(),this.messageValue=``,this.mentionsValue=[]),this.error=null,this.callbacks.requestUpdate()}clearPendingPlacementRecovery(){this.pendingPlacement.clear(),this.submissionOutcomeUnknown=null,this.callbacks.requestUpdate()}releasePendingPlacementOwner(){this.pendingPlacement.reset(),this.submissionOutcomeUnknown=null,this.callbacks.requestUpdate()}restorePendingPlacementRecovery(e,t){this.applyRecoveryDraft(this.pendingPlacement.restore(e,t))}async submit(e,t=!1){if(!e&&Y(this.read().data))return this.startInTerminal();let n=t&&!e&&this.visibilityValue!==`draft`,i=this.read().context;if(!i||!e&&!this.canSubmit()){this.noteBlockedSubmitAttempt();return}let a=this.callbacks.takePreparedTitle?.();this.blockedSubmitGate=null;let o=!e&&!!this.pendingPlacement.sessionKey,s=Bt(this.messageValue,this.mentions),c=e?.params.message??(o?this.pendingPlacement.message:s.text),l=(e?e.params.mentions:o?this.pendingPlacement.mentions:s.mentions)?.map(({profileId:e,start:t,end:n})=>({profileId:e,start:t,end:n})),u=this.attachmentDraft.attachments,d=e?e.params.attachments:o?void 0:jn(u),f=o?this.pendingPlacement.attachments:d,p=e?.params.agentId??(o?this.pendingPlacement.agentId:r(this.place.agentId)),m=o?this.pendingPlacement.gatewayUrl:i.gateway.connection.gatewayUrl,h=i.gateway.snapshot.client;if(!h||!i.gateway.snapshot.hello)return;let g=Zo({enabled:n,agentId:p,client:h,context:i,clearDraft:()=>{this.messageValue=``,this.mentionsValue=[],this.sessionStartup.clear()}}),_=o?this.pendingPlacement.recoveryScope:h.recoveryScope,v=++this.submitRequestToken,y=e?.startedAt??Date.now(),{hello:b,selfUser:x}=i.gateway.snapshot,S={text:c,mentions:l,attachments:u,createdAt:y,sender:Mt(b,h.instanceId,x)??void 0};this.activeSubmission={message:n?null:Tn(S,`available`)},this.error=null,this.place.browser.close(),this.callbacks.closeTransientUi(),this.callbacks.requestUpdate();try{let t=this.startedSession.current;if(t&&this.startedSession.isCurrent(i,this.place.agentId)){await this.startedSession.navigate(i,t);return}this.startedSession.current=null;let n=e?null:this.placement().target,r=c||f?.length,s=!e&&!o&&(n||!r)?this.place.browser.remoteProject:null;if(s&&!s.projectId&&!this.place.browser.projectId){let e=await h.request(`projects.add`,{gitUrl:s.cloneUrl},{timeoutMs:null});if(v!==this.submitRequestToken||this.gateway.client!==h)return;this.place.browser.recordRemoteProjectId(s.cloneUrl,e.id)}let b=e?.params??this.buildDraftSessionCreateParams({message:n?``:c,mentions:n?void 0:l,displayName:a,visibility:this.visibilityValue===`draft`&&!this.capabilities.canStartAsDraft(this.read().context)?`normal`:this.visibilityValue,attachments:n?void 0:d}),x=n?o?this.pendingPlacement.createParams:this.pendingPlacement.stageCreate({agentId:p,target:n,message:c,mentions:l,attachments:f,gatewayUrl:m,recoveryScope:_,createParams:b,persistent:this.visibilityValue!==`incognito`}):void 0,ee=e?k(i.gateway.snapshot,{method:`sessions.create`,params:b}):this.submissionAccess(x??b);if(!ee.allowed){this.sessionStartup.clear(),this.error=ee.reason;return}let C=n?this.pendingPlacement.capture():null;if(n&&!C){this.setPlacementRecoveryUnavailable();return}let te=C?.sessionKey??``,ne=e=>this.pendingPlacement.owns(m,_,e),w=()=>ne(te),re=()=>this.read().isConnected&&h.recoveryScopeReady&&v===this.submitRequestToken&&this.gateway.client===h&&this.gateway.gatewayUrl===m&&this.gateway.recoveryScope===_,T=o&&this.pendingPlacement.phase!==`creating`?{key:this.pendingPlacement.sessionKey,initialRun:{status:`idle`}}:await i.sessions.createResult(x??e?.params??this.sessionStartup.start(b),{reconciliation:`background`});if(v!==this.submitRequestToken&&!n)return;if(!T){if(v!==this.submitRequestToken)return;this.sessionStartup.clear(),this.error=i.sessions.state.error??L(`newSession.createFailed`);return}if(n&&C){if(C.phase===`creating`&&(!re()||!w())){let e=await In(h,T.key,p);e?(w()&&(this.pendingPlacement.promoteToDispatching(T.key),this.pendingPlacement.retryAllowed=!0),this.error=L(`newSession.placementStartFailed`,{error:e}),this.callbacks.requestUpdate()):w()&&this.clearPendingPlacementRecovery();return}if(C.phase===`creating`&&re()&&w()&&!this.pendingPlacement.promoteToDispatching(T.key)){this.setPlacementRecoveryUnavailable();return}let e=this.pendingPlacement.capture();if(!e||e.phase===`creating`){this.setPlacementRecoveryUnavailable();return}if(v!==this.submitRequestToken)return;i.placementStartup.start({recovery:e,persistRecovery:this.pendingPlacement.persistent,recovering:C.phase!==`creating`,createdAt:y});let t=()=>re()&&ne(e.sessionKey);if(!t()||(await this.draftPersistence.clearSubmittedDraft(),!t())||(this.pendingPlacement.reset(),this.attachmentDraft.clearAfterSubmit(!0),g(e.sessionKey,e.messageId)))return;await this.startedSession.navigate(i,{client:h,key:T.key,agentId:p});return}if(v!==this.submitRequestToken)return;let{key:E,initialRun:D}=T,ie=D.status===`rejected`&&ms({agentId:this.place.agentId,attachments:u,context:i,error:D.error,message:c,mentions:l,sessionKey:E});if(D.status===`started`&&i.chatSubmissions.retain(Kr(E,S,h,D.runId)),await this.draftPersistence.clearSubmittedDraft(),v!==this.submitRequestToken||(this.attachmentDraft.clearAfterSubmit(!ie),g(E,D.status===`started`?D.runId:void 0)))return;await this.startedSession.navigate(i,{client:h,key:E,agentId:p}),this.sessionStartup.clear()}catch(e){v===this.submitRequestToken&&this.gateway.client===h&&(this.sessionStartup.clear(),this.error=e instanceof Error?e.message:String(e))}finally{v===this.submitRequestToken&&(this.activeSubmission=null,this.callbacks.requestUpdate())}}async startInTerminal(){let{context:e,data:t}=this.read(),n=e?.gateway.snapshot.client,i=t?.catalogId.trim()??``,a=r(this.place.agentId);if(!e||!n||!i||!a||!this.canSubmit()){this.noteBlockedSubmitAttempt();return}this.blockedSubmitGate=null;let o=++this.submitRequestToken,s=this.messageValue.trim();this.activeSubmission={message:null},this.error=null,this.place.browser.close(),this.callbacks.closeTransientUi(),this.callbacks.requestUpdate();try{let e=await xs(n,{catalogId:i,agentId:a,hostId:this.place.terminalHostId,cwd:this.place.folder.trim()||(this.place.terminalOnNode?``:this.place.workspacePath()),initialMessage:s,worktree:this.place.worktree,worktreeName:this.place.worktreeName,baseRef:this.place.baseRef},()=>o===this.submitRequestToken&&this.gateway.client===n);if(!e||o!==this.submitRequestToken||this.gateway.client!==n||(this.startedSession.current=null,await this.draftPersistence.clearSubmittedDraft(),o!==this.submitRequestToken||this.gateway.client!==n))return;this.messageValue=``,this.mentionsValue=[],this.attachmentDraft.clearAfterSubmit(!0),ai(e.sessionId)}catch(e){o===this.submitRequestToken&&this.gateway.client===n&&(this.error=e instanceof Error?e.message:String(e))}finally{o===this.submitRequestToken&&(this.activeSubmission=null,this.callbacks.requestUpdate())}}disconnect(){this.startedSession.current=null,this.draftPersistence.disconnect(),this.attachmentDraft.reset({release:!0}),this.composerTextarea.disconnect()}setPlacementRecoveryUnavailable(){this.error=L(`newSession.placementStartFailed`,{error:`placement recovery storage is unavailable`})}applyRecoveryDraft(e){if(!e)return;let t=cs(e);this.place.applyPendingPlacement(t.placement),this.restoreDraftState(t.draft)}}})))()}function Ns(e,t){return e?.client===t?.client&&e?.agentId===t?.agentId&&e?.ownerKey===t?.ownerKey&&e?.message===t?.message&&e?.model===t?.model}var Ps;function Fs(){return(Fs=e((()=>{V(),X(),Ps=class{constructor(e,t){this.read=t,this.current=null,this.title=null,this.active=!1,this.pending=!1,this.readyAt=0,this.connected=!1,this.composing=!1,this.submitted=null,e.addController(this)}hostConnected(){this.connected=!0}hostUpdated(){this.sync(this.input())}hostDisconnected(){this.connected=!1,this.sync(null),this.submitted=null}setComposing(e){this.composing=e,this.hostUpdated()}takePreparedTitle(){let e=this.input(),t=Ns(this.current,e)?this.title??void 0:void 0;return this.submitted=e??this.submitted,this.sync(null),t}sync(e){let t=e?.message.trim()??``,n=e&&t.length>=12&&!t.startsWith(`/`)?{...e,message:t}:null;Ns(this.current,n)||(clearTimeout(this.timer),this.current=n,this.title=null,this.pending=n!==null,this.readyAt=Date.now()+1e3,this.schedule())}schedule(){!this.pending||this.active||(this.timer=setTimeout(()=>void this.prepare(),Math.max(0,this.readyAt-Date.now())))}async prepare(){let e=this.current;if(!(!e||!this.pending)){this.pending=!1,this.active=!0;try{let t=await e.client.request(`sessions.title.prepare`,{agentId:e.agentId,message:n(e.message,1e3),...e.model?{model:e.model}:{}},{timeoutMs:2e4});this.current===e&&(this.title=t.title)}catch{}finally{this.active=!1,this.schedule()}}}input(){let{context:e,data:t,place:n,submission:r,dictating:i}=this.read(),a=e?.gateway.snapshot;if(!this.connected||Y(t)||this.composing||i||r.submitting||r.visibility===`incognito`||r.pendingPlacement.sessionKey||!n.agentId||!n.modelControl.accountSelectionReady()||!B(a,`sessions.title.prepare`,`operator.write`)||!a?.client)return null;let o={client:a.client,ownerKey:ca(t),agentId:n.agentId,message:r.message.trim(),model:n.modelControl.modelForSubmission()};return Ns(o,this.submitted)?null:o}}})))()}function Is(e,t){let n=e.visibility===`incognito`,r=e.visibility===`draft`,i=e.incognitoDisabledReason(),a=e.submitting||!!e.pendingPlacement.sessionKey||!!i,o=i??L(`newSession.incognitoDescription`);return j`
    <div class="new-session-page__incognito-rail">
      ${t?j`
              <openclaw-tooltip
                class="new-session-page__draft-tooltip"
                .content=${L(`newSession.draftDescription`)}
              >
                <button
                  type="button"
                  class="shell-chrome-controls__button new-session-page__draft-toggle ${r?`new-session-page__draft-toggle--active`:``}"
                  role="switch"
                  aria-label=${`${L(`newSession.draft`)}: ${L(`newSession.draftDescription`)}`}
                  aria-checked=${String(r)}
                  ?disabled=${e.submitting||!!e.pendingPlacement.sessionKey}
                  title=${L(`newSession.draftDescription`)}
                  @click=${()=>e.setVisibility(r?`normal`:`draft`)}
                >
                  ${F.pencil}
                  ${r?j`<span class="new-session-page__draft-toggle-label"
                          >${L(`newSession.draft`)}</span
                        >`:M}
                </button>
              </openclaw-tooltip>
            `:M}
      <openclaw-tooltip .content=${o}>
        <button
          type="button"
          class="shell-chrome-controls__button new-session-page__incognito-toggle ${n?`new-session-page__incognito-toggle--active`:``}"
          role="switch"
          aria-label=${L(`newSession.incognito`)}
          aria-checked=${String(n)}
          ?disabled=${a}
          title=${o}
          @click=${()=>{a||e.setVisibility(n?`normal`:`incognito`)}}
        >
          ${Rs}
        </button>
      </openclaw-tooltip>
    </div>
  `}function Ls(e){let t=L(`newSession.incognitoDescription`);return j`
    <div
      class="new-session-page__incognito-notice ${e?`new-session-page__incognito-notice--visible`:``}"
      role="status"
      aria-hidden=${String(!e)}
    >
      <span class="new-session-page__incognito-notice-icon" aria-hidden="true">
        ${Rs}
      </span>
      <span>${t}</span>
    </div>
  `}var Rs;function zs(){return(zs=e((()=>{A(),vt(),P(),_t(),I(),Rs=St(He` <path
    d="M4 13V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.706.706l3.588 3.588A2.4 2.4 0 0 1 20 8v5"
  />
  <path d="M14 2v5a1 1 0 0 0 1 1h5" />
  <path d="M10 22v-5" />
  <path d="M14 19v-2" />
  <path d="M18 20v-3" />
  <path d="M2 13h20" />
  <path d="M6 20v-3" />`)})))()}function Bs(e){let{context:t,gateway:n,place:r,submission:i,dictation:a,titlePreparation:o,draftOwnerKey:s,isCatalogTarget:c,renderTargetBar:l,requestUpdate:u,onMessage:d,onOpenImage:f}=e,p=i.capabilities,m=t?.theme.settings,h=a.render(s,m?.realtimeTalkInputDeviceId),g=a.active;return j`
    <div
      class="new-session-page__draft"
      aria-busy=${String(i.submitting)}
      @compositionstart=${()=>{o.setComposing(!0)}}
      @compositionend=${()=>{o.setComposing(!1)}}
      @focusout=${()=>{o.setComposing(!1)}}
    >
      ${l()} ${qa(r,i,c)}
      ${Xa({agent:r.selectedAgent(),agentId:r.agentId,attachmentDraft:i.attachmentDraft,canSubmit:!i.submitting&&!g&&i.canSubmit(),submitDisabledReason:i.submitDisabledReason(),blockedSubmitNotice:i.blockedSubmitNotice(),dictationActive:a.active,dictationPreview:a.previewDraft(),dictationStatus:a.renderStatus(),context:t,isCatalogTarget:c,draftOwnerKey:s,message:i.message,mentions:i.mentions,getMentions:()=>i.mentions,visibility:i.visibility,draftAvailable:p.canStartAsDraft(t),...p.composerProps(t,n,r.agentId),modelControl:r.modelControl,permissionControl:c?void 0:Rn({canSelectFull:r.isAdmin(),defaultMode:r.selectedAgent()?.defaultPermissionMode,disabled:i.submitting||!!i.pendingPlacement.sessionKey,disabledReason:i.submitting?L(`newSession.starting`):void 0,mode:i.permission.value,onSelect:e=>i.permission.set(e??void 0)}),requiresModifier:m?.chatSendShortcut===`modifier-enter`,requestUpdate:u,submitting:i.submitting,textareaController:i.composerTextarea,voiceControl:h,messageLocked:!!i.pendingPlacement.sessionKey,nativeTerminal:c,onUnsupportedAttachment:()=>i.setError(L(`newSession.terminalAttachmentsUnsupported`)),onInput:d,onOpenImage:f,onVisibilityChange:e=>{!i.submitting&&!i.pendingPlacement.sessionKey&&i.setVisibility(e)},onSubmit:()=>void i.submit(),onBackgroundSubmit:i.visibility===`draft`||c?void 0:()=>void i.submit(void 0,!0)})}
      ${c?M:Ls(i.visibility===`incognito`)}
    </div>
  `}function Vs(){return(Vs=e((()=>{A(),I(),ui(),Za(),zs()})))()}function Hs(e){return Js.has(e)}function Us(e){let t=new Map;for(let n of e){let e=(n.deviceId??n.instanceId)?.trim().toLowerCase();!e||n.mode?.trim().toLowerCase()===`gateway`||t.set(e,n.reason?.trim().toLowerCase()===`disconnect`?`offline`:`connected`)}return JSON.stringify([...t].toSorted(([e],[t])=>e.localeCompare(t)))}function Ws(e){return{addController:t=>e.addController(t),removeController:t=>e.removeController(t),requestUpdate:()=>e.requestUpdate(),get updateComplete(){return e.updateComplete}}}function Gs(e){let t=e.querySelector(`.new-session-page__select--agent wa-dropdown`);t&&(t.open=!1)}function Ks(e){for(let t of[`wa-dropdown[open]`,`wa-popover.new-session-page__picker-popover`])for(let n of e.querySelectorAll(t))n.open=!1}function qs(e,t){if(document.querySelector(`.shell-nav[aria-modal='true']`))return;let n=e.querySelectorAll(`.chat-controls__inline-select[open]`);if(n.length!==0){if(t.type===`keydown`){let e=t;if(pi(e),e.defaultPrevented||e.key!==`Escape`)return;let r=[...n].find(e=>t.composedPath().includes(e))??n[0];if(!r)return;let i=t.composedPath().includes(r);e.preventDefault(),r.open=!1,i&&r.querySelector(`summary`)?.focus();return}for(let e of n)t.composedPath().includes(e)||(e.open=!1)}}var Js;function Ys(){return(Ys=e((()=>{or(),Js=new Set([`config.changed`,`node.pair.requested`,`node.pair.resolved`,`node.runnerInventory.changed`,`device.pair.requested`,`device.pair.resolved`])})))()}function Xs(e){return e.destination===`local`&&!e.worktreeAvailable&&!e.worktree?null:e.worktree?{label:e.baseRef?L(`newSession.checkoutWorktreeFrom`,{branch:e.baseRef}):L(`newSession.checkoutWorktree`)}:{label:e.headBranch||L(`newSession.checkoutCurrent`)}}function Zs(e){return j`
    <label class="new-session-page__menu-field">
      <span>${L(`newSession.worktreeBaseRef`)}</span>
      <input
        type="text"
        list="new-session-branches"
        ?disabled=${e.submitting||e.pendingPlacement}
        placeholder=${e.branchesLoading?L(`common.loading`):e.branches?.defaultBranch??L(`newSession.worktreeBaseRef`)}
        .value=${e.baseRef}
        @input=${t=>{t.currentTarget instanceof HTMLInputElement&&e.onBaseRefInput(t.currentTarget.value.trim())}}
      />
      <datalist id="new-session-branches">
        ${(e.branches?.branches??[]).map(e=>j`<option value=${e.name}></option>`)}
      </datalist>
    </label>
    <label class="new-session-page__menu-field">
      <span>${L(`newSession.worktreeName`)}</span>
      <input
        type="text"
        ?disabled=${e.submitting||e.pendingPlacement}
        placeholder=${L(`newSession.worktreeNamePlaceholder`)}
        .value=${e.worktreeName}
        @input=${t=>{t.currentTarget instanceof HTMLInputElement&&e.onWorktreeNameInput(t.currentTarget.value.trim())}}
      />
    </label>
    <div class="new-session-page__menu-note">${L(`newSession.worktreeBranchNote`)}</div>
  `}function Qs(e){return j`
    <span class="new-session-page__select">
      <button
        id="new-session-checkout-trigger"
        type="button"
        class="new-session-page__trigger ${e.popoverHiding?`new-session-page__trigger--hiding`:``}"
        title=${L(`newSession.checkout`)}
        aria-label="${L(`newSession.checkout`)}: ${e.state.label}"
        data-worktree=${String(e.worktree)}
        aria-haspopup="dialog"
        aria-expanded=${String(e.popoverOpen)}
        ?disabled=${e.submitting||e.pendingPlacement}
        @click=${e.onGuardTransition}
      >
        <span class="new-session-page__target-icon" aria-hidden="true">${F.gitBranch}</span>
        <span class="new-session-page__trigger-label">${e.state.label}</span>
        <span
          class="new-session-page__trigger-chevron new-session-page__trigger-chevron--desktop"
          aria-hidden="true"
          >${F.chevronDown}</span
        >
        <span
          class="new-session-page__trigger-chevron new-session-page__trigger-chevron--mobile"
          aria-hidden="true"
          >${F.chevronsUpDown}</span
        >
      </button>
    </span>
    <wa-popover
      class="new-session-page__select new-session-page__checkout-popover new-session-page__picker-popover"
      for="new-session-checkout-trigger"
      placement="bottom-start"
      without-arrow
      @wa-show=${e.onPopoverShow}
      @wa-hide=${e.onPopoverHide}
      @wa-after-hide=${e.onPopoverAfterHide}
    >
      <div class="new-session-page__picker-root">
        <div class="new-session-page__menu-title">${L(`newSession.checkout`)}</div>
        ${K({value:`checkout`,label:L(`newSession.checkoutCurrent`),icon:F.folder,sub:e.branches?.headBranch,checked:!e.worktree,disabled:e.remotePlacement,title:e.remotePlacement?L(`newSession.checkoutRemoteLocked`):void 0,onSelect:()=>e.onSelectWorktree(!1),keepOpen:!0},e.submitting)}
        ${K({value:`worktree`,label:L(`newSession.checkoutWorktree`),icon:F.gitBranch,sub:L(`newSession.checkoutWorktreeSub`),checked:e.worktree,disabled:!e.worktreeAvailable,title:e.worktreeAvailable?void 0:e.repositoryUnavailable?L(`newSession.gitCheckUnavailable`):L(`newSession.worktreeUnavailable`),onSelect:()=>e.onSelectWorktree(!0),keepOpen:!0},e.submitting)}
        ${e.worktree?Zs(e):M}
        ${e.remotePlacement?j`<div class="new-session-page__menu-note">
                ${L(`newSession.placementSyncsFolder`,{folder:e.folderLabel})}
              </div>`:M}
      </div>
    </wa-popover>
  `}function $s(){return($s=e((()=>{A(),P(),I(),ti()})))()}function ec(e){let t=$i(e.environments,e.devicePlacement,e.deviceDisabledReason),n=ea(e.environments,t,e.deviceDisabledReason),r=t.find(t=>t.deviceId===e.deviceId),i=e.cloudProfiles.find(t=>t.id===e.cloudProfileId);if(e.cloudProfileId){let r=i?.machines??[],a=r.find(e=>e.default===!0),o=e.machineClass?r.find(t=>t.id===e.machineClass):a;return{kind:`cloud`,label:e.machineClass?L(`newSession.cloudWorkerMachine`,{profile:i?.id??e.cloudProfileId,machine:o?.label??e.machineClass}):i?.id??e.cloudProfileId,cloudMachines:r,selectedMachineId:o?.id??``,devices:t,cloudProfiles:e.cloudProfiles,autoDeviceDisabledReason:n}}return e.deviceId?{kind:`device`,label:r?.label??e.deviceId,cloudMachines:[],selectedMachineId:``,devices:t,cloudProfiles:e.cloudProfiles,autoDeviceDisabledReason:n}:e.autoDevice?{kind:`auto-device`,label:L(`newSession.autoDevice`),cloudMachines:[],selectedMachineId:``,devices:t,cloudProfiles:e.cloudProfiles,autoDeviceDisabledReason:n}:{kind:`local`,label:L(`newSession.local`),cloudMachines:[],selectedMachineId:``,devices:t,cloudProfiles:e.cloudProfiles,autoDeviceDisabledReason:n}}function tc(e){let t=e.state.kind===`cloud`?F.server:F.monitor,n=e.gatewayName?L(`newSession.gatewayNamed`,{name:e.gatewayName}):L(`newSession.gateway`);return j`
    <span class="new-session-page__select">
      <button
        id="new-session-where-trigger"
        type="button"
        class="new-session-page__trigger ${e.popoverHiding?`new-session-page__trigger--hiding`:``}"
        title=${L(`newSession.where`)}
        aria-label="${L(`newSession.where`)}: ${e.state.label}"
        data-cloud-profile=${e.cloudProfileId||M}
        data-machine-class=${e.machineClass||M}
        data-device-id=${e.deviceId||M}
        data-auto-device=${e.autoDevice?`true`:M}
        aria-haspopup="dialog"
        aria-expanded=${String(e.popoverOpen)}
        ?disabled=${e.submitting||e.pendingPlacement}
        @click=${e.onGuardTransition}
      >
        <span class="new-session-page__target-icon" aria-hidden="true">${t}</span>
        <span class="new-session-page__trigger-label">${e.state.label}</span>
        <span
          class="new-session-page__trigger-chevron new-session-page__trigger-chevron--desktop"
          aria-hidden="true"
          >${F.chevronDown}</span
        >
        <span
          class="new-session-page__trigger-chevron new-session-page__trigger-chevron--mobile"
          aria-hidden="true"
          >${F.chevronsUpDown}</span
        >
      </button>
    </span>
    <wa-popover
      class="new-session-page__select new-session-page__where-popover new-session-page__picker-popover"
      for="new-session-where-trigger"
      placement="bottom-start"
      without-arrow
      @wa-show=${e.onPopoverShow}
      @wa-hide=${e.onPopoverHide}
      @wa-after-hide=${e.onPopoverAfterHide}
    >
      <div class="new-session-page__picker-root">
        <div class="new-session-page__menu-title">${L(`newSession.environments`)}</div>
        ${K({value:`gateway`,label:L(`newSession.local`),icon:F.monitor,sub:e.gatewayName||void 0,checked:!e.deviceId&&!e.autoDevice&&!e.cloudProfileId,title:n,onSelect:()=>e.onSelectDevice(``)},e.submitting)}
        ${e.state.devices.length>0?j`
                <div class="new-session-page__menu-title">${L(`newSession.yourDevices`)}</div>
                ${K({value:`auto-device`,label:L(`newSession.autoDevice`),sub:L(e.autoPlacementMode===`eligible-order`?`newSession.autoDeviceSubEligible`:`newSession.autoDeviceSub`),icon:F.monitor,checked:e.autoDevice===!0,disabled:!!e.state.autoDeviceDisabledReason,title:e.state.autoDeviceDisabledReason,facts:e.state.autoDeviceDisabledReason?[e.state.autoDeviceDisabledReason]:void 0,onSelect:e.onSelectAutoDevice},e.submitting)}
                ${e.state.devices.map(t=>{let n=aa({workerSlots:t.workerSlots,capabilities:t.capabilities,commands:t.invocableCommands,unavailable:!t.selectable});return K({value:`device:${t.deviceId}`,label:t.label,sub:t.subtitle,icon:F.monitor,facts:t.facts,meter:n?.meter,checked:e.deviceId===t.deviceId,disabled:!t.selectable,title:[t.disabledReason,n?.title].filter(Boolean).join(` · `)||void 0,onSelect:()=>e.onSelectDevice(t.deviceId)},e.submitting)})}
              `:M}
        ${e.isAdmin&&(e.state.cloudProfiles.length>0||e.cloudProfileId)?j`
                <div class="new-session-page__menu-title">${L(`newSession.cloud`)}</div>
                ${yr({profiles:e.state.cloudProfiles,selectedId:e.cloudProfileId,submitting:e.submitting,icon:F.server,disabled:!e.worktreeAvailable||!!e.cloudDisabledReason,disabledReason:e.cloudDisabledReason,profileDisabledReason:e.cloudProfileDisabledReason,onSelect:e.onSelectCloudProfile})}
                ${e.cloudProfileId&&!e.state.cloudProfiles.some(t=>t.id===e.cloudProfileId)?K({value:`cloud:${e.cloudProfileId}`,label:L(`newSession.cloudWorker`,{profile:e.cloudProfileId}),icon:F.server,checked:!0,disabled:!0,title:L(`newSession.catalogUnavailable`),onSelect:()=>void 0},e.submitting):M}
              `:M}
        ${e.state.kind===`cloud`&&e.state.cloudMachines.length>0?j`
                <div class="new-session-page__menu-title">${L(`newSession.machine`)}</div>
                ${fr({machines:e.state.cloudMachines,selectedId:e.state.selectedMachineId,submitting:e.submitting,onSelect:e.onSelectCloudMachine??(()=>void 0)})}
              `:M}
        ${e.isAdmin?Gr({disabled:e.submitting||e.pendingPlacement,onSelect:e.onConnectMachine}):M}
      </div>
    </wa-popover>
  `}function nc(){return(nc=e((()=>{A(),P(),oa(),I(),ti(),na()})))()}function rc(e){let t=r(e.agentId);return j`
    <span class="new-session-page__select new-session-page__select--agent">
      <openclaw-agent-select
        class="agent-select--compact"
        .options=${e.agents.map(t=>({value:r(t.id),label:we(t,e.agentIdentity?.get(t.id)),agent:t}))}
        .value=${t}
        .accessibleLabel=${L(`newSession.agent`)}
        .menuLabel=${L(`newSession.agents`)}
        .disabled=${e.disabled}
        .onSelect=${e.onSelect}
        @wa-show=${()=>e.onOpenChange(!0)}
        @wa-hide=${()=>e.onOpenChange(!1)}
      ></openclaw-agent-select>
    </span>
  `}function ic({context:e,data:t,gateway:n,place:r,submitting:i,pendingPlacement:a,onConnectMachine:o,requestUpdate:s}){let c=r.browser,l=Y(t),u=l||!r.isAdmin()?[]:n.cloudProfiles,d=r.repository.kind===`git`?r.repository:null,f=l?[]:c.projects,p=l?[]:c.resolveProjectRecents({sessions:e?.sessions.state.result?.sessions??[],workspace:r.workspacePath(),workspaceRoots:r.knownWorkspaceRoots(),isAdmin:r.isAdmin()}),m=ec({environments:r.canWrite()?n.environments:[],cloudProfiles:u,cloudProfileId:r.cloudProfileId,machineClass:r.machineClass,deviceId:r.deviceId,autoDevice:r.autoDevice,devicePlacement:r.devicePlacementRuntime()?.devicePlacement,deviceDisabledReason:r.modelControl.devicePlacementUnsupportedReason()??n.deviceCatalogDisabledReason}),h=Ao({folder:r.folder,workspace:r.workspacePath(),projectId:c.projectId,selectedRemoteProject:c.remoteProject,projects:f,recents:p,projectQuery:c.projectQuery}),g=Xs({destination:r.remotePlacement?`remote`:`local`,worktree:r.worktree,worktreeAvailable:r.worktreeAvailable(),headBranch:d?.headBranch,baseRef:r.baseRef}),_=n.gatewayName?L(`newSession.gatewayNamed`,{name:n.gatewayName}):L(`newSession.gateway`);return j`${l?Ss({hosts:t?.terminalHosts??[],hostId:r.terminalHostId,submitting:i,refreshing:n.catalogRetrying,onSelect:e=>r.selectTerminalHost(e),onRefresh:n.handleCatalogRetry}):tc({state:m,gatewayName:n.gatewayName,cloudProfileId:r.cloudProfileId,machineClass:r.machineClass,deviceId:r.deviceId,autoDevice:r.autoDevice,autoPlacementMode:r.modelControl.autoPlacementSelectionMode(),worktreeAvailable:r.worktreeAvailable(),cloudDisabledReason:ws(r),cloudProfileDisabledReason:e=>r.modelControl.cloudRuntimeUnsupportedReason(e),submitting:i,pendingPlacement:a,isAdmin:r.isAdmin(),...c.popoverCallbacks(`where`),onSelectDevice:e=>r.selectDevice(e),onSelectAutoDevice:()=>r.selectDevice(``,!0),onSelectCloudProfile:e=>r.selectCloudProfile(e),onSelectCloudMachine:e=>r.cloudMachines.select(r.cloudProfileId,e,u,i||a,s),onConnectMachine:o})}${l&&r.terminalOnNode?j`<label class="new-session-page__select new-session-page__menu-field"
          ><span>${L(`newSession.terminalNodeFolder`)}</span
          ><input
            aria-label=${L(`newSession.terminalNodeFolder`)}
            .value=${r.folder}
            ?disabled=${i}
            @input=${e=>{e.currentTarget instanceof HTMLInputElement&&r.applyFolder(e.currentTarget.value)}}
        /></label>`:jo({state:h,browseAvailable:r.browseAvailable(),isAdmin:r.isAdmin(),canWrite:r.canWrite(),folder:r.folder,workspace:r.workspacePath(),projects:f,projectQuery:c.projectQuery,projectSearchAvailable:!l&&B(e?.gateway.snapshot,`projects.searchRemote`,`operator.read`),projectAddAvailable:!l&&B(e?.gateway.snapshot,`projects.add`,`operator.write`),remoteProjects:c.projectSearchResult?.projects??[],selectedRemoteProject:c.remoteProject,projectSearchCredentialMissing:c.projectSearchResult?.credential===`missing`,projectSearchLoading:c.projectSearchLoading,projectSearchError:c.projectSearchError,projectId:c.projectId,gatewayLabel:_,submitting:i,pendingPlacement:a,...c.popoverCallbacks(`project`),browserOpen:c.browserOpen,browserListing:c.browserListing,browserLoading:c.browserLoading,browserError:c.browserError,browserPathDraft:c.browserPathDraft,usableBrowserPath:c.usableBrowserPath(),registerProjectPath:c.browserProjectPath,registeringProject:c.browserRegistering,onSelectProject:e=>r.selectProjectId(e),onProjectQueryInput:e=>c.changeProjectQuery(e),onSelectRemoteProject:e=>r.selectRemoteProject(e),onApplyFolder:e=>r.applyFolder(e),onBrowse:()=>c.selectGatewayBrowser(r.folder.trim()||r.workspacePath()),onBrowserPathDraftChange:e=>{c.browserPathDraft=e},onBrowserNavigate:e=>c.loadBrowser(e),onBrowserBack:()=>c.showRoot(),onRegisterProject:e=>void c.registerBrowserProject(e),onClose:()=>c.close()})}${g&&!(l&&r.terminalOnNode)?Qs({state:g,remotePlacement:r.remotePlacement,folderLabel:h.label,worktree:r.worktree,worktreeAvailable:r.worktreeAvailable(),repositoryUnavailable:r.repository.kind===`unavailable`,branches:d,branchesLoading:r.repository.kind===`checking`,baseRef:r.baseRef,worktreeName:r.worktreeName,submitting:i,pendingPlacement:a,...c.popoverCallbacks(`checkout`),onSelectWorktree:e=>r.selectWorktree(e),onBaseRefInput:e=>r.setBaseRef(e),onWorktreeNameInput:e=>r.setWorktreeName(e)}):M}`}function ac(){return(ac=e((()=>{A(),I(),De(),V(),v(),X(),$s(),vi(),Mo(),As(),Cs(),nc()})))()}var oc,sc,cc,lc,$;function uc(){return(uc=e((()=>{_(),A(),ze(),ut(),ot(),I(),De(),Ri(),b(),v(),ae(),x(),Wn(),Qr(),ii(),X(),Ea(),Aa(),Za(),bo(),Do(),Lo(),qo(),Ms(),Fs(),Vs(),zs(),Ys(),ac(),{activateDraft:oc,restoreDraft:sc,restoreDraftOwner:cc,retainDraft:lc}=xo,$=class extends ge{constructor(){super(),this.openedFor=null,this.openedGroupDefaults=``,this.openedAgentId=``,this.messageOwnerKey=``,this.presenceSignature=``,this.imageLightbox=null,this.agentPickerOpen=!1,this.groupRouteRevalidation=new Ca(()=>this.data,()=>this.context?.revalidate(`new-session`)),this.titlePreparation=new Ps(this,()=>({context:this.context,data:this.data,place:this.place,submission:this.submission,dictating:this.dictation.active})),this.flushDraft=()=>this.submission.draftPersistence.persistNow(),this.setImageLightbox=e=>{this.imageLightbox=e};let e=Ws(this);this.gateway=new yo(e,()=>({context:this.context,data:this.data,isConnected:this.isConnected,isAdmin:this.place?.isAdmin()??!1,canStartAsDraft:this.submission?.capabilities.canStartAsDraft(this.context)??!1,visibility:this.submission?.visibility??`normal`,cloudProfileId:this.place?.cloudProfileId??``,pendingPlacement:this.submission?.pendingPlacement??{sessionKey:``,gatewayUrl:``,recoveryScope:``},agentsHydrated:this.place?.agentsHydrated??!1,runtimeId:this.place?.devicePlacementRuntime()?.id??``}),{requestUpdate:()=>this.requestUpdate(),updateComplete:()=>this.updateComplete,onInvalidate:(e,t)=>this.invalidateGatewayDiscovery(e,t),onVisibilityRetired:()=>this.submission.setVisibility(`normal`),onCloudProfileCleared:()=>this.place.clearCloudProfile(),onCloudState:e=>this.submission.setError(e),onPendingPlacementReset:()=>this.submission.releasePendingPlacementOwner(),onRecoveryReady:(e,t)=>cc(this.submission,e,t),onAdoptAgentDefaults:()=>this.place.adoptAgentDefaults({preserveSelectedAgent:!0,preserveSelectedFolder:!0})}),this.browser=new Io(e,this.gateway,()=>({context:this.context,isAdmin:this.place?.isAdmin()??!1}),{requestUpdate:()=>this.requestUpdate(),onProjectMissing:()=>this.place.clearProjectSelection(),onSelectProject:e=>this.place.selectProjectId(e),onApprovedListing:e=>this.place.recordGatewayApprovedListing(e),querySelector:e=>this.querySelector(e),activeElement:()=>this.ownerDocument.activeElement,body:()=>this.ownerDocument.body}),this.place=new Ko(this.gateway,this.browser,()=>({context:this.context,data:this.data,submitting:this.submission?.submitting??!1,pendingPlacementSessionKey:this.submission?.pendingPlacement.sessionKey??``}),{requestUpdate:()=>this.requestUpdate(),onError:e=>e===null?this.submission.clearError():this.submission.setError(e),onClearError:e=>this.submission.clearErrorIf(e)}),this.submission=new js(this.gateway,this.place,()=>({context:this.context,data:this.data,isConnected:this.isConnected}),{requestUpdate:()=>this.requestUpdate(),closeTransientUi:()=>Ks(this),takePreparedTitle:()=>this.titlePreparation.takePreparedTitle()}),this.connectMachine=new ka(()=>({client:this.gateway.client,connected:this.gateway.connected}),()=>this.requestUpdate()),this.dictation=new Ta({textarea:this.submission.composerTextarea,getClient:()=>this.gateway.client,isConnected:()=>this.gateway.connected,canCommit:()=>!this.submission.submitting&&!this.submission.pendingPlacement.sessionKey,onMessage:e=>this.setMessageFromUser(e),onError:e=>this.submission.setError(e),onSubmit:()=>void this.submission.submit(),requestUpdate:()=>this.requestUpdate()}),this.subscriptions=new Re(this).watch(()=>this.context?.theme,(e,t)=>e.subscribe(t)).watch(()=>this.context?.gateway,(e,t)=>e.subscribe(t),e=>this.gateway.synchronize(e)).effect(()=>this.context?.gateway,e=>(this.presenceSignature=Us(Ze(e.snapshot.hello?.snapshot)??[]),e.subscribeEvents(t=>{if(this.context?.gateway!==e)return;if(Hs(t.event)){this.gateway.refreshCloudProfiles();return}let n=t.event===`presence`?Ze(t.payload):null;if(!n)return;let r=Us(n);r!==this.presenceSignature&&(this.presenceSignature=r,this.gateway.refreshCloudProfiles())}))).watch(()=>this.context?.agents,(e,t)=>e.subscribe(t)).watch(()=>this.context?.agentIdentity,(e,t)=>e.subscribe(t)).watch(()=>this.context?.sessions,(e,t)=>e.subscribe(t),e=>this.groupRouteRevalidation.synchronize(e)).watch(()=>this.context?.config,(e,t)=>e.subscribe(()=>t()))}handleEvent(e){e instanceof KeyboardEvent&&Kn(this,e),qs(this,e)}connectedCallback(){super.connectedCallback(),document.addEventListener(`keydown`,this,!0),document.addEventListener(`pointerdown`,this,!0),window.addEventListener(`beforeunload`,this.flushDraft)}disconnectedCallback(){document.removeEventListener(`keydown`,this,!0),document.removeEventListener(`pointerdown`,this,!0),window.removeEventListener(`beforeunload`,this.flushDraft),lc(this.context,this.submission,this.openedFor,this.messageOwnerKey),this.subscriptions.clear(),this.gateway.invalidateDiscovery(!0,this.submission.pendingPlacement.sessionKey?`placement-interrupted`:`gateway-changed`),this.gateway.disconnect(),this.browser.disconnect(),this.submission.disconnect(),this.dictation.dispose(),this.connectMachine.close(),super.disconnectedCallback()}updated(){this.connectMachine.open&&!this.place.isAdmin()&&this.connectMachine.close(),this.gateway.retryPendingCatalogTarget(),this.context?.agentIdentity.ensure(this.agentPickerOpen?this.place.agents().map(e=>e.id):[this.place.agentId]);let e=this.context?.agents.state,t=!!(this.gateway.connected&&this.gateway.client&&e?.connected&&e.client===this.gateway.client&&this.place.agents().length>0);this.place.modelControl.loadCatalogTargets(this.context,t&&this.place.agentId?this.place.selectedAgent()?.id??``:``,this.context?.config.current.cliAgentsEnabled===!0&&!Y(this.data));let n=this.routeOwnerKey(),r=this.data?.agentId??``,i=fa(this.data);if(this.openedFor!==n){let e=this.messageOwnerKey===n?this.submission.message:``,a=this.messageOwnerKey===n?this.submission.mentions:void 0;this.openedFor=n,this.openedGroupDefaults=i,this.openedAgentId=r,this.place.setAgentsHydrated(t),this.resetDraft(),this.messageOwnerKey=sc(this.context,this.submission,n,e,a);return}this.openedGroupDefaults!==i&&(this.openedGroupDefaults=i,this.place.adoptGroupDefaults()),this.openedAgentId!==r&&(this.openedAgentId=r,this.place.setAgentsHydrated(!1)),!this.place.agentsHydrated&&t&&(this.place.setAgentsHydrated(!0),this.place.adoptAgentDefaults({preserveSelectedAgent:!0,preserveSelectedFolder:!0})),this.place.restorePreferenceSelections(),oc(this.submission,n),this.submission.resumeInterruptedSubmission()}invalidateGatewayDiscovery(e,t){this.place.invalidateGatewayDiscovery(e),this.submission.attachmentDraft.abortReads(),this.submission.invalidate(t),e&&this.submission.pendingPlacement.sessionKey&&this.submission.markPendingPlacementUnavailable(t),e&&this.submission.clearError(),this.connectMachine.close()}resetDraft(){this.place.resetDraft(),this.submission.resetDraft(),this.messageOwnerKey=ca(this.data),this.browser.clearPopoverHiding(),Gs(this),this.browser.close(),this.connectMachine.close(),this.place.adoptAgentDefaults()}routeOwnerKey(){return this.data?ca(this.data):la(window.location.search)}setMessageFromUser(e,t){!this.submission.submitting&&!this.submission.pendingPlacement.sessionKey&&(this.submission.setMessage(e,t),this.messageOwnerKey=la(window.location.search))}renderTargetBar(){let e=this.place.agents(),t=this.context?.sessions;return Sa({data:this.data,groupPending:ha(this.data,t),agentSelect:e.length>1?rc({agents:e,agentId:this.place.agentId,agentIdentity:this.context?.agentIdentity,disabled:this.submission.submitting||!!this.submission.pendingPlacement.sessionKey,onSelect:e=>this.place.selectAgentId(e),onOpenChange:e=>{this.agentPickerOpen=e}}):M,placeSelect:ic({context:this.context,data:this.data,gateway:this.gateway,place:this.place,submitting:this.submission.submitting,pendingPlacement:!!this.submission.pendingPlacement.sessionKey,onConnectMachine:()=>this.openConnectMachine(),requestUpdate:()=>this.requestUpdate()}),retrying:this.gateway.catalogRetrying||!!(this.data?.group&&t?.groupsStatus()===`loading`),onRetry:this.gateway.handleCatalogRetry})}openConnectMachine(){this.place.isAdmin()&&(this.browser.close(),this.connectMachine.start())}renderDraftBlock(){return Bs({context:this.context,gateway:this.gateway,place:this.place,submission:this.submission,dictation:this.dictation,titlePreparation:this.titlePreparation,draftOwnerKey:this.routeOwnerKey(),isCatalogTarget:Y(this.data),renderTargetBar:()=>this.renderTargetBar(),requestUpdate:()=>this.requestUpdate(),onMessage:(e,t)=>this.setMessageFromUser(e,t),onOpenImage:this.setImageLightbox})}renderWelcome(){let e=this.place.selectedAgent(),t=this.context?.agentIdentity.get(this.place.agentId),n=this.context?.gateway.snapshot;return mi({assistantName:e?we(e,t):``,assistantAvatar:e?.identity?.avatar??e?.identity?.emoji??null,assistantAvatarUrl:e?.identity?.avatarUrl??null,hint:L(Y(this.data)?`newSession.nativeTerminalHint`:`newSession.hint`),composer:this.renderDraftBlock(),hideSecondaryContent:this.submission.visibility===`incognito`,fadeSecondaryContent:this.submission.message.trim().length>0,modelSetupRequired:this.submission.requiresModelSetup(),onModelSetup:()=>this.context?.navigate(`model-setup`),sessions:this.context?.sessions.state.result,sessionKey:oe({agentId:this.place.agentId||`main`,mainKey:this.context?.agents.state.agentsList?.mainKey}),sessionHost:{assistantAgentId:n?.assistantAgentId??null,agentsList:this.context?.agents.state.agentsList??null,hello:n?.hello??null},onDraftChange:e=>this.setMessageFromUser(e),onSend:()=>void this.submission.submit(),onOpenSession:e=>{let{context:t,submission:n}=this;!t||n.submitting||n.pendingPlacement.sessionKey||(tt({selection:t.agentSelection,gateway:t.gateway,sessionKey:e,agentId:this.place.agentId}),t.navigate(`chat`,le({context:t,face:`chat`,sessionKey:e}).options))}})}render(){let e=this.submission.pendingMessage,t=this.submission.visibility===`incognito`;return j`
      <div
        class="new-session-page ${e?`chat`:``} ${t?`new-session-page--incognito`:``}"
      >
        ${Y(this.data)?M:Is(this.submission,this.submission.capabilities.canStartAsDraft(this.context))}
        ${Ja({error:this.submission.error,pendingMessage:e,submitting:this.submission.submitting,renderDraft:()=>this.renderWelcome(),onOpenImage:this.setImageLightbox})}
        ${Oa({open:this.connectMachine.open&&this.place.isAdmin(),loading:this.connectMachine.loading,error:this.connectMachine.error,setup:this.connectMachine.setup,onRefresh:()=>void this.connectMachine.refresh(),onClose:()=>{this.connectMachine.close(),this.requestUpdate()},onManageDevices:()=>{this.connectMachine.close(),this.context?.navigate(`devices`)}})}
        ${Or(this.imageLightbox,()=>this.setImageLightbox(null))}
      </div>
    `}},h([Je({attribute:!1})],$.prototype,`data`,void 0),h([o({context:lt,subscribe:!0})],$.prototype,`context`,void 0),h([Ue()],$.prototype,`imageLightbox`,void 0),h([Ue()],$.prototype,`agentPickerOpen`,void 0)})))()}var dc;function fc(){return(fc=e((()=>{A(),uc(),customElements.get(`openclaw-new-session-page`)||customElements.define(`openclaw-new-session-page`,$),dc=e=>j`<openclaw-new-session-page .data=${e}></openclaw-new-session-page>`})))()}async function pc(e,t){let n=ke(t),i=n.agentId.trim(),a=``,o=!1,s,c,l;if(n.group){let t=e.sessions.groupsGeneration(),r=await e.sessions.groupsLoad();c=e.sessions.groupsGeneration(),l=e.sessions.groupsStatus();let i=t===c&&l===`ready`?r:null,u=i?.find(e=>e.name===n.group);s=i===null?`unavailable`:u?`resolved`:`missing`,a=u?.cwd??``,o=u?.worktree===!0}if(!n.catalogId)return{...n,requestedAgentId:i,groupStatus:s,groupCwd:a,groupWorktree:o,groupCatalogGeneration:c,groupDefaultsStatus:l,model:``,catalogLabel:``,startTerminal:!1};let u=(e=``)=>({...n,agentId:e,requestedAgentId:i,groupStatus:s,groupCwd:a,groupWorktree:o,groupCatalogGeneration:c,groupDefaultsStatus:l,model:``,catalogLabel:``,startTerminal:!1}),d=e.gateway.snapshot,f=e.agents.state;if(d.phase!==`connected`||!d.client||!f.connected||f.client!==d.client)return u();let p=f.agentsList??await e.agents.ensureList(),m=e.gateway.snapshot,h=e.agents.state;if(m.phase!==`connected`||!m.client||m.client!==d.client||!h.connected||h.client!==m.client||h.agentsList!==p)return u();let g=p,_=je(g?.agents??[]),v=m.phase===`connected`&&m.hello?m.assistantAgentId:null;if(!g&&i&&(!v||r(i)!==r(v)))return u();let y=g?_.some(e=>e.id===g.defaultId)?g.defaultId:_[0]?.id:v,b=y?g?va(n,_,y):va(void 0,[],y):``,x=u(b);if(m.phase!==`connected`||!m.client||!b)return x;let S=await ba(m.client,n.catalogId,b);return S?{...x,...S}:x}function mc(){return(mc=e((()=>{De(),v(),X()})))()}export{Ai as C,vi as D,bi as E,Pi as S,xi as T,Ri as _,vs as a,Fi as b,aa as c,na as d,$i as f,Bi as g,zi as h,dc as i,ia as l,Wi as m,pc as n,ys as o,Ki as p,fc as r,oa as s,mc as t,ra as u,Li as v,Oi as w,J as x,Ii as y};
//# sourceMappingURL=control-ui-boot-new-Bj2SAUyl.js.map