gestalt-mobile 0.39.0 → 0.40.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +10 -0
- package/dist/client/assets/{index-Bzk2YhTa.js → index-B07-pr2H.js} +3 -3
- package/dist/client/index.html +1 -1
- package/dist/server/server/features/sessions/model/relay-session.js +7 -2
- package/dist/server/server/features/sessions/start-session/request.js +3 -1
- package/dist/server/server/platform/codex/session-runtime.js +10 -2
- package/dist/server/server/platform/persistence/migrate.js +24 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -258,6 +258,16 @@ so it can be changed in a future configuration surface. The selected model is
|
|
|
258
258
|
stored with the relay session and shown in managed session entries; in chat,
|
|
259
259
|
`/model` lists only models of the session's own provider.
|
|
260
260
|
|
|
261
|
+
New Codex sessions select the `workspace-git` permission profile by default.
|
|
262
|
+
The Gestalt manager installs that named profile in `~/.codex-gestalt/config.toml`;
|
|
263
|
+
Mobile passes the selection to app-server as `permissions: "workspace-git"`,
|
|
264
|
+
which keeps Git metadata writable without selecting full host access. Other
|
|
265
|
+
legacy sandbox choices remain available in the session form. The approval
|
|
266
|
+
policy defaults to **Approve everything** (`never`) for new sessions. On the
|
|
267
|
+
first startup after upgrading, saved sessions that still use the former
|
|
268
|
+
default pair (`workspace-write` with `on-request`) are migrated to the new
|
|
269
|
+
defaults. Other explicit policy combinations are preserved.
|
|
270
|
+
|
|
261
271
|
Use **Open** to relaunch a released, stopped, or attention-required
|
|
262
272
|
relay session from the browser.
|
|
263
273
|
|
|
@@ -22,8 +22,8 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
|
|
|
22
22
|
`)}`)].join(`
|
|
23
23
|
`)}function Gu(e=fetch){async function t(e){let t=await e.json().catch(()=>null),n=typeof t?.code==`string`&&/^[A-Z0-9_]+$/.test(t.code)?t.code:void 0,r=n?.startsWith(`AUTOPILOT_`)&&e.status===409?`Relay request failed (${e.status}).`:typeof t?.detail==`string`&&t.detail.length<=600?t.detail:typeof t?.title==`string`?t.title:`Relay request failed (${e.status}).`;return Object.assign(Error(r),{...n?{code:n}:{},...typeof t?.replaceAllowed==`boolean`?{replaceAllowed:t.replaceAllowed}:{},status:e.status})}async function n(n,r,i={},a){let o=await e(n,{method:`POST`,headers:{"content-type":`application/json`,...i},body:JSON.stringify(r),signal:a});if(!o.ok)throw await t(o);return o.json()}async function r(n,r,i={}){let a=await e(n,{method:`PUT`,headers:{"content-type":`application/json`,...i},body:JSON.stringify(r)});if(!a.ok)throw await t(a);return a.json()}async function i(n,r,i,a){let o=await e(n,{method:`PUT`,headers:{"content-type":`application/octet-stream`,"idempotency-key":i},body:r,signal:a});if(!o.ok)throw await t(o);return o.json()}async function a(n,r,i){let a=await e(n,{method:`DELETE`,headers:{"content-type":`application/json`,"idempotency-key":i},body:JSON.stringify(r)});if(!a.ok)throw await t(a);return a.json()}async function o(n){let r=await e(n,{method:`DELETE`});if(!r.ok)throw await t(r)}async function s(n,r){let i=await e(n,r?{signal:r}:void 0);if(!i.ok)throw await t(i);return i.json()}async function c(n,r){let i=await e(n,{signal:r});if(i.status===204)return null;if(!i.ok)throw await t(i);return i.json()}return{updateRestart:()=>n(`/api/maintenance/update-restart`,{}),listSessions:e=>s(`/api/sessions`,e),listWorkspaceDirectory:(e,t={},n)=>{let r=new URLSearchParams;t.directory!==void 0&&r.set(`directory`,t.directory),t.cursor!==void 0&&r.set(`cursor`,t.cursor),t.limit!==void 0&&r.set(`limit`,String(t.limit));let i=r.size===0?``:`?${r}`;return s(`/api/workspaces/${encodeURIComponent(e)}/files${i}`,n)},copyWorkspaceEntry:(e,t,r)=>n(`/api/workspaces/${encodeURIComponent(e)}/files/copy`,t,{"idempotency-key":r}),moveWorkspaceEntry:(e,t,r)=>n(`/api/workspaces/${encodeURIComponent(e)}/files/move`,t,{"idempotency-key":r}),uploadWorkspaceFile:(e,t,n,r)=>{let a=new URLSearchParams({directory:t.directory,filename:t.filename,conflict:t.conflict});return i(`/api/workspaces/${encodeURIComponent(e)}/files/upload?${a}`,t.file,n,r)},deleteWorkspaceEntry:(e,t,n)=>a(`/api/workspaces/${encodeURIComponent(e)}/files`,{path:t,recursive:!0},n),getSession:e=>s(`/api/sessions/${encodeURIComponent(e)}`),refreshActivity:e=>n(`/api/sessions/${encodeURIComponent(e)}/activity/refresh`,{}),setAutopilot:(e,t,n)=>r(`/api/sessions/${encodeURIComponent(e)}/autopilot`,{enabled:t},n?{"idempotency-key":n}:{}),resolveAttention:(e,t,r)=>n(`/api/sessions/${encodeURIComponent(e)}/attention/${encodeURIComponent(t)}/resolve`,r),listRecentSessions:()=>s(`/api/sessions/recent-threads`),openRecentSession:(e,t,r=`codex`)=>n(`/api/sessions/recent-threads/open`,{threadId:e,cwd:t,provider:r}),listSessionModels:e=>n(`/api/session-models/${encodeURIComponent(e)}`,{}),startSession:(e,t={},r)=>n(`/api/sessions`,{workspaceId:e,profile:`default`,provider:`codex`,...t},r?{"idempotency-key":r}:{}),startTurn:(e,t,r)=>n(`/api/sessions/${encodeURIComponent(e)}/turns`,{text:t},r?{"idempotency-key":r}:{}),selectModel:(e,t)=>n(`/api/sessions/${encodeURIComponent(e)}/model`,{model:t}),interruptTurn:(e,t)=>n(`/api/sessions/${encodeURIComponent(e)}/turns/${encodeURIComponent(t)}/interrupt`,{}),queueTurnInput:(e,t,r,i)=>n(`/api/sessions/${encodeURIComponent(e)}/turns/${encodeURIComponent(t)}/queue`,{text:r},i?{"idempotency-key":i}:{}),restoreSession:e=>n(`/api/sessions/${encodeURIComponent(e)}/restore`,{}),releaseSession:e=>n(`/api/sessions/${encodeURIComponent(e)}/release`,{}),forgetSession:n=>e(`/api/sessions/${encodeURIComponent(n)}`,{method:`DELETE`}).then(async e=>{if(!e.ok)throw await t(e)}),getHistory:e=>s(`/api/sessions/${encodeURIComponent(e)}/history`),getPlan:(e,t)=>c(`/api/sessions/${encodeURIComponent(e)}/plan`,t),closePlan:e=>o(`/api/sessions/${encodeURIComponent(e)}/plan`),listWorkspacePlans:(e,t)=>s(`/api/workspaces/${encodeURIComponent(e)}/plans`,t),getWorkspacePlan:(e,t,n)=>s(`/api/workspaces/${encodeURIComponent(e)}/plans/${encodeURIComponent(t)}`,n),openSessionPlan:(e,t)=>r(`/api/sessions/${encodeURIComponent(e)}/plan`,{planName:t}),getGitSummary:(e,t)=>s(`/api/git/repositories/${encodeURIComponent(e)}`,t),cloneGitRepository:(e,t)=>n(`/api/git/clone`,{workspaceId:e,address:t}),refreshGit:(e,t)=>n(`/api/git/repositories/${encodeURIComponent(e)}/refresh`,{},t?{"idempotency-key":t}:{}),pullGit:(e,t,r)=>n(`/api/git/repositories/${encodeURIComponent(e)}/pull`,{},t?{"idempotency-key":t}:{},r),checkoutGitBranch:(e,t,r)=>n(`/api/git/repositories/${encodeURIComponent(e)}/checkout`,{branch:t},{},r),pushGit:(e,t)=>n(`/api/git/repositories/${encodeURIComponent(e)}/push`,{},t?{"idempotency-key":t}:{}),listAvailableSkills:(e,t,n=!1,r)=>s(`/api/skills?${new URLSearchParams({workspaceId:e,profile:t,...n?{refresh:`true`}:{}}).toString()}`,r),listSkillProfiles:e=>s(`/api/skill-profiles`,e),replaceSkillProfile:(e,t)=>r(`/api/skill-profiles/${encodeURIComponent(e)}`,t),deleteSkillProfile:e=>o(`/api/skill-profiles/${encodeURIComponent(e)}`),respondInteraction:(e,t,r,i)=>n(`/api/sessions/${encodeURIComponent(e)}/interactions/${encodeURIComponent(t)}`,r,i?{"idempotency-key":i}:{})}}var Ku=[`authoring-start`,`work-start`,`checkpoint`,`update`,`supervision-start`,`resync`];function qu(e){return typeof e==`string`&&Ku.includes(e)}function Ju(e){if(!e||typeof e!=`object`)return!1;let t=e;return Yu(t.plan)&&(t.reason===null||qu(t.reason))}function Yu(e){if(!e||typeof e!=`object`)return!1;let t=e;return typeof t.title==`string`&&Array.isArray(t.steps)&&typeof t.totalSteps==`number`&&typeof t.doneSteps==`number`&&typeof t.allDone==`boolean`&&typeof t.currentStepId==`string`}function Xu(e){return e instanceof Error?e.message:`Could not load the plan.`}function Zu(e){return{...e,...e.skills?{skills:[...e.skills]}:{},description:{...e.description},children:e.children.map(Zu)}}function Qu(e){return{...e,steps:e.steps.map(Zu)}}function $u(e,t){return e.kind===`unavailable`&&e.sessionId===t}function ed(e,t){let n=null,r={kind:`unavailable`,sessionId:null},i=0,a=0,o=null,s=0,c=e=>{++a,r=e,t(e)},l=(t,r)=>{o?.abort(),o=new AbortController;let a=++i,l=s;r||c({kind:`loading`,sessionId:t}),e.getPlan(t,o.signal).then(e=>{a!==i||n!==t||s===l&&c(e?{kind:`ready`,sessionId:t,plan:Qu(e)}:{kind:`unavailable`,sessionId:t})}).catch(e=>{o?.signal.aborted||a!==i||n!==t||c({kind:`error`,sessionId:t,error:Xu(e),...r?{plan:r}:{}})})};return{select(e){if(o?.abort(),n=e,s=0,!e){++i,c({kind:`unavailable`,sessionId:null});return}l(e,void 0)},refresh(e){if(n!==e)return;let t=r.kind===`ready`||r.kind===`closing`||r.kind===`error`?r.plan:void 0;l(e,t)},applyEvent(e,t){if(!(n!==e||t.sequence<=s)){if(t.type===`plan.updated`&&(Yu(t.payload)||Ju(t.payload))){let n=Ju(t.payload)?t.payload.plan:t.payload;s=t.sequence,c({kind:`ready`,sessionId:e,plan:Qu(n)})}t.type===`plan.closed`&&(s=t.sequence,c({kind:`unavailable`,sessionId:e}))}},async close(){if(r.kind!==`ready`&&r.kind!==`error`||!r.plan?.allDone)return null;let{sessionId:t,plan:i}=r;c({kind:`closing`,sessionId:t,plan:i});let o=a;try{return await e.closePlan(t),n===t?a===o?(c({kind:`unavailable`,sessionId:t}),`chat`):$u(r,t)?`chat`:null:null}catch(e){return n===t?a===o?(c({kind:`error`,sessionId:t,plan:i,error:Xu(e)}),null):$u(r,t)?`chat`:null:null}},dispose(){o?.abort(),o=null,n=null,++i,c({kind:`unavailable`,sessionId:null})}}}function td(e){if(!e)return null;let t=nd(e.steps,e.currentStepId)?.measurement?.weeklyRemainingCurrent;return typeof t==`number`&&Number.isFinite(t)&&t>=0&&t<=100?Math.round(t):null}function nd(e,t){for(let n of e){if(n.id===t)return n;let e=nd(n.children,t);if(e)return e}}function rd(e,t){return t===void 0?`L${e}`:`L${e}.${t}`}function id(e){let t=e.steps.filter(e=>e.reviewStatus===`REVIEWED`).length,n=e.steps.length,r=ad(e),i=e.steps.find(e=>e.state===`DONE`&&e.reviewStatus===`UNREVIEWED`);return i?{phase:`awaiting review`,label:`Awaiting ${rd(e.steps.indexOf(i)+1)} review`,current:r,reviewedL1s:t,totalL1s:n}:n>0&&t===n?{phase:`terminal review`,label:`Terminal review`,current:r,reviewedL1s:t,totalL1s:n}:t>0&&!r?{phase:`milestone reported`,label:`Preparing milestone summary`,current:r,reviewedL1s:t,totalL1s:n}:r?{phase:`implementing`,label:`Implementing ${r.position} ${r.title}`,current:r,reviewedL1s:t,totalL1s:n}:{phase:e.allDone?`terminal review`:`implementing`,label:e.allDone?`Terminal review`:`Implementing`,current:r,reviewedL1s:t,totalL1s:n}}function ad(e){for(let[t,n]of e.steps.entries()){if(n.id===e.currentStepId)return{id:n.id,position:rd(t+1),title:n.title,state:n.state};let r=n.children.findIndex(t=>t.id===e.currentStepId);if(r>=0){let e=n.children[r];return{id:e.id,position:rd(t+1,r+1),title:e.title,state:e.state}}}}var od=q(`<span class="wip-effort svelte-hmxg46"> </span>`),sd=q(`<li class="svelte-hmxg46"><span class="wip-position svelte-hmxg46" aria-hidden="true"> </span> <span class="wip-title svelte-hmxg46"> </span> <!></li>`),cd=q(`<ol class="wip-steps svelte-hmxg46" aria-label="Work in progress plan steps"></ol>`),ld=q(`<li class="svelte-hmxg46"><span aria-hidden="true" class="position svelte-hmxg46"> </span> <span aria-hidden="true" class="state"> </span></li>`),ud=q(`<ol class="step-markers svelte-hmxg46" aria-label="Plan step progress"></ol>`),dd=q(`<div><div class="progress-heading svelte-hmxg46"><span> </span> <span> </span></div> <progress class="svelte-hmxg46"> </progress> <span class="review-status"> </span> <!></div>`);function fd(e,t){Qe(t,!0);let n=$(t,`compact`,3,!1),r=$(t,`label`,3,`Plan progress`),i=P(()=>t.plan.steps.flatMap((e,t)=>[{id:e.id,position:rd(t+1),state:e.state,level:e.level,title:e.title,...e.description.effort?{effort:e.description.effort}:{}},...e.children.map((e,n)=>({id:e.id,position:rd(t+1,n+1),state:e.state,level:e.level,title:e.title}))])),a=P(()=>G(i).filter(e=>e.state===`WIP`)),o=P(()=>id(t.plan)),s=P(()=>Math.max(t.plan.totalSteps,1));var c=dd(),l=z(c),u=z(l),d=z(u);N(u);var f=V(u,2),p=z(f);N(f),N(l);var m=V(l,2),h=z(m);N(m);var g=V(m,2),_=z(g,!0);N(g);var v=V(g,2),y=e=>{var n=cd();Z(n,21,()=>G(a),e=>e.id,(e,n)=>{var r=sd(),i=z(r),a=z(i);N(i);var o=V(i,2),s=z(o,!0);N(o);var c=V(o,2),l=e=>{var t=od(),r=z(t);N(t),H(()=>Y(r,`Effort: ${G(n).effort??``}`)),J(e,t)};X(c,e=>{G(n).level===1&&G(n).effort&&e(l)}),N(r),H(()=>{Q(r,`aria-current`,G(n).id===t.plan.currentStepId?`step`:void 0),Q(r,`aria-label`,`${G(n).position}: ${G(n).title}, WIP${G(n).level===1&&G(n).effort?`, effort ${G(n).effort}`:``}`),Y(a,`${G(n).position??``} · WIP`),Y(s,G(n).title)}),J(e,r)}),N(n),J(e,n)},b=e=>{var n=ud();Z(n,21,()=>G(i),e=>e.id,(e,n)=>{var r=ld(),i=z(r),a=z(i,!0);N(i);var o=V(i,2),s=z(o,!0);N(o),N(r),H(()=>{Q(r,`data-state`,G(n).state),Q(r,`aria-current`,G(n).id===t.plan.currentStepId?`step`:void 0),Q(r,`aria-label`,`${G(n).position}: ${G(n).state}`),Y(a,G(n).position),Y(s,G(n).state)}),J(e,r)}),N(n),J(e,n)};X(v,e=>{n()&&G(a).length?e(y):!n()&&G(i).length&&e(b,1)}),N(c),H(()=>{gi(c,1,ui([`plan-progress`,{compact:n()}]),`svelte-hmxg46`),Y(d,`${t.plan.doneSteps??``} / ${t.plan.totalSteps??``} work items done`),Y(p,`· ${G(o).reviewedL1s??``} / ${G(o).totalL1s??``} reviewed`),Q(m,`aria-label`,r()),Oi(m,t.plan.doneSteps),Q(m,`max`,G(s)),Y(h,`${t.plan.doneSteps??``} of ${t.plan.totalSteps??``} work items done`),Q(g,`data-phase`,G(o).phase),Y(_,G(o).label)}),J(e,c),$e()}var pd=q(`<section aria-labelledby="plan-title" class="svelte-3rmyvg"><h2 id="plan-title" class="svelte-3rmyvg">Plan</h2> <p class="svelte-3rmyvg">Loading plan…</p></section>`),md=q(`<section aria-labelledby="plan-title" class="svelte-3rmyvg"><h2 id="plan-title" class="svelte-3rmyvg">Plan</h2> <p class="svelte-3rmyvg">No retained plan for this session.</p></section>`),hd=q(`<section aria-labelledby="plan-title" class="svelte-3rmyvg"><h2 id="plan-title" class="svelte-3rmyvg">Plan</h2> <p class="svelte-3rmyvg"> </p></section>`),gd=q(`<p class="svelte-3rmyvg"> </p>`),_d=q(`<div class="svelte-3rmyvg"><dt class="svelte-3rmyvg">Subtitle</dt> <dd class="svelte-3rmyvg"> </dd></div>`),vd=q(`<div class="svelte-3rmyvg"><dt class="svelte-3rmyvg">Date</dt> <dd class="svelte-3rmyvg"> </dd></div>`),yd=q(`<div class="svelte-3rmyvg"><dt class="svelte-3rmyvg">Keywords</dt> <dd class="svelte-3rmyvg"> </dd></div>`),bd=q(`<dl class="metadata svelte-3rmyvg"><!> <!> <!></dl>`),xd=q(`<p class="svelte-3rmyvg">No plan steps have been retained yet.</p>`),Sd=q(`<p class="svelte-3rmyvg"><strong class="svelte-3rmyvg"> </strong> </p>`),Cd=q(`<p class="svelte-3rmyvg"><strong class="svelte-3rmyvg">Skills:</strong> </p>`),wd=q(`<li class="svelte-3rmyvg"><details class="svelte-3rmyvg"><summary class="svelte-3rmyvg"><strong class="svelte-3rmyvg"><span class="position svelte-3rmyvg"> </span> </strong> <span class="svelte-3rmyvg"> </span> <span class="svelte-3rmyvg"> </span></summary> <!> <!></details></li>`),Td=q(`<ol class="svelte-3rmyvg"></ol>`),Ed=q(`<li class="svelte-3rmyvg"><details class="svelte-3rmyvg"><summary class="svelte-3rmyvg"><strong class="svelte-3rmyvg"><span class="position svelte-3rmyvg"> </span> </strong> <span class="svelte-3rmyvg"> </span> <span class="svelte-3rmyvg"> </span> <span class="measurement svelte-3rmyvg"> </span></summary> <!> <!> <!></details></li>`),Dd=q(`<ol class="plan-steps svelte-3rmyvg"></ol>`),Od=q(`<section class="plan svelte-3rmyvg" aria-labelledby="plan-title"><header class="svelte-3rmyvg"><div class="svelte-3rmyvg"><h2 id="plan-title" class="svelte-3rmyvg"> </h2></div> <button class="close svelte-3rmyvg" aria-label="Close plan and return to list">×</button></header> <!> <p class="svelte-3rmyvg"> </p> <!> <!> <!></section>`),kd=q(`<p class="visually-hidden svelte-3rmyvg" aria-live="polite" aria-atomic="true"> </p> <!>`,1);function Ad(e,t){Qe(t,!0);let n={effort:`Effort`,goal:`Goal`,notes:`Notes`,why:`Why`,change:`Change`,tests:`Tests`,doneWhen:`Done when`},r=I(R(new Set)),i=R({}),a=null,o=0,s=P(()=>t.state.kind===`ready`||t.state.kind===`closing`||t.state.kind===`error`?t.state.plan:void 0),c=P(()=>G(s)?p(G(s).steps,G(s).currentStepId):void 0),l=P(()=>G(s)?m(G(s).steps,G(s).currentStepId):void 0),u=P(()=>G(s)?id(G(s)):void 0),d=P(()=>G(s)?h(G(s).steps,G(s).currentStepId):new Set),f=P(()=>t.state.kind===`loading`?`Loading plan.`:t.state.kind===`unavailable`?`No retained plan for this session.`:t.state.kind===`error`&&!G(s)?t.state.error:t.state.kind===`closing`?`Closing completed plan.`:G(s)?G(c)?`${G(u)?.label??`Current step: ${G(l)} ${G(c).title}`}. ${G(s).doneSteps} of ${G(s).totalSteps} work items done.${t.state.kind===`error`?` ${t.state.error}`:``}`:`${G(u)?.label??`Plan progress`}. ${G(s).doneSteps} of ${G(s).totalSteps} work items done.${t.state.kind===`error`?` ${t.state.error}`:``}`:``);Mn(()=>{let e=G(s)?.currentStepId||null;if(!e||a===e)return;a=e;let t=++o;Cr().then(()=>{t!==o||G(s)?.currentStepId!==e||i[e]?.scrollIntoView({behavior:`auto`,block:`nearest`,inline:`nearest`})})});function p(e,t){for(let n of e){if(n.id===t)return n;let e=p(n.children,t);if(e)return e}}function m(e,t){for(let[n,r]of e.entries()){if(r.id===t)return rd(n+1);let e=r.children.findIndex(e=>e.id===t);if(e>=0)return rd(n+1,e+1)}}function h(e,t,n=[]){for(let r of e){if(r.id===t)return new Set([...n,r.id]);let e=h(r.children,t,[...n,r.id]);if(e.size)return e}return new Set}function g(e){return G(r).has(e)||G(d).has(e)}function _(e,t){L(r,t?new Set([...G(r),e]):new Set([...G(r)].filter(t=>t!==e)),!0)}function v(e){return e.description.goal??e.description.why??e.title}function y(e){let t=e.measurement;if(!t)return`Measurements unavailable`;let n=[];return t.elapsedSeconds!==void 0&&n.push(`${Math.floor(t.elapsedSeconds/60)}m ${t.elapsedSeconds%60}s elapsed`),t.weeklyPercentUsed!==void 0&&n.push(`${t.weeklyPercentUsed}% observed account-wide usage`),t.tokensUsed!==void 0&&n.push(`${t.tokensUsed.toLocaleString()} tokens used`),n.join(` · `)||`Measurements unavailable`}function b(e){return Object.keys(n).flatMap(t=>{let r=e.description[t];return r?[[n[t],r]]:[]})}var x=kd(),S=B(x),w=z(S,!0);N(S);var T=V(S,2),E=e=>{J(e,pd())},D=e=>{J(e,md())},ee=e=>{var n=hd(),r=V(z(n),2),i=z(r,!0);N(r),N(n),H(()=>Y(i,t.state.error)),J(e,n)},te=e=>{var n=Od(),r=z(n),a=z(r),o=z(a),d=z(o,!0);N(o),N(a);var f=V(a,2);N(r);var p=V(r,2);fd(p,{get plan(){return G(s)}});var m=V(p,2),h=z(m);N(m);var x=V(m,2),S=e=>{var n=gd(),r=z(n,!0);N(n),H(()=>Y(r,t.state.error)),J(e,n)};X(x,e=>{t.state.kind===`error`&&e(S)});var w=V(x,2),T=e=>{var t=bd(),n=z(t),r=e=>{var t=_d(),n=V(z(t),2),r=z(n,!0);N(n),N(t),H(()=>Y(r,G(s).subtitle)),J(e,t)};X(n,e=>{G(s).subtitle&&e(r)});var i=V(n,2),a=e=>{var t=vd(),n=V(z(t),2),r=z(n,!0);N(n),N(t),H(()=>Y(r,G(s).date)),J(e,t)};X(i,e=>{G(s).date&&e(a)});var o=V(i,2),c=e=>{var t=yd(),n=V(z(t),2),r=z(n,!0);N(n),N(t),H(()=>Y(r,G(s).keywords)),J(e,t)};X(o,e=>{G(s).keywords&&e(c)}),N(t),J(e,t)};X(w,e=>{(G(s).subtitle||G(s).date||G(s).keywords)&&e(T)});var E=V(w,2),D=e=>{J(e,xd())},ee=e=>{var t=Dd();Z(t,23,()=>G(s).steps,e=>e.id,(e,t,n)=>{var r=Ed(),a=z(r),o=z(a),s=z(o),c=z(s),l=z(c,!0);N(c);var u=V(c);N(s);var d=V(s,2),f=z(d);N(d);var p=V(d,2),m=z(p,!0);N(p);var h=V(p,2),x=z(h,!0);N(h),N(o);var S=V(o,2);Z(S,17,()=>b(G(t)),([e,t])=>e,(e,t)=>{var n=P(()=>C(G(t),2));let r=()=>G(n)[0],i=()=>G(n)[1];var a=Sd(),o=z(a),s=z(o);N(o);var c=V(o);N(a),H(()=>{Y(s,`${r()??``}:`),Y(c,` ${i()??``}`)}),J(e,a)});var w=V(S,2),T=e=>{var n=Cd(),r=V(z(n));N(n),H(e=>Y(r,` ${e??``}`),[()=>G(t).skills.join(`, `)]),J(e,n)};X(w,e=>{G(t).skills?.length&&e(T)});var E=V(w,2),D=e=>{var r=Td();Z(r,23,()=>G(t).children,e=>e.id,(e,t,r)=>{var a=wd(),o=z(a),s=z(o),c=z(s),l=z(c),u=z(l,!0);N(l);var d=V(l);N(c);var f=V(c,2),p=z(f);N(f);var m=V(f,2),h=z(m,!0);N(m),N(s);var y=V(s,2);Z(y,17,()=>b(G(t)),([e,t])=>e,(e,t)=>{var n=P(()=>C(G(t),2));let r=()=>G(n)[0],i=()=>G(n)[1];var a=Sd(),o=z(a),s=z(o);N(o);var c=V(o);N(a),H(()=>{Y(s,`${r()??``}:`),Y(c,` ${i()??``}`)}),J(e,a)});var x=V(y,2),S=e=>{var n=Cd(),r=V(z(n));N(n),H(e=>Y(r,` ${e??``}`),[()=>G(t).skills.join(`, `)]),J(e,n)};X(x,e=>{G(t).skills?.length&&e(S)}),N(o),Li(o,(e,t)=>i[t.id]=e,e=>i?.[e.id],()=>[G(t)]),N(a),H((e,n,r)=>{Q(o,`data-step-id`,G(t).id),o.open=e,Y(u,n),Y(d,` ${G(t).title??``}`),Y(p,`${G(t).state??``} · Priority ${G(t).priority??``}${G(t).reviewStatus?` · ${G(t).reviewStatus}`:``}`),Y(h,r)},[()=>g(G(t).id),()=>rd(G(n)+1,G(r)+1),()=>v(G(t))]),Nr(`toggle`,o,e=>_(G(t).id,e.currentTarget.open)),J(e,a)}),N(r),J(e,r)};X(E,e=>{G(t).children.length&&e(D)}),N(a),Li(a,(e,t)=>i[t.id]=e,e=>i?.[e.id],()=>[G(t)]),N(r),H((e,n,r,i)=>{Q(a,`data-step-id`,G(t).id),a.open=e,Y(l,n),Y(u,` ${G(t).title??``}`),Y(f,`${G(t).state??``} · Priority ${G(t).priority??``}${G(t).reviewStatus?` · ${G(t).reviewStatus}`:``}`),Y(m,r),Y(x,i)},[()=>g(G(t).id),()=>rd(G(n)+1),()=>v(G(t)),()=>y(G(t))]),Nr(`toggle`,a,e=>_(G(t).id,e.currentTarget.open)),J(e,r)}),N(t),J(e,t)};X(E,e=>{G(s).steps.length===0?e(D):e(ee,-1)}),N(n),H(()=>{Y(d,G(s).title),Y(h,`${G(u)?.label??``}. Current: ${G(c)?`${G(l)} ${G(c).title} (${G(c).state})`:`No current step`}`)}),K(`click`,f,function(...e){t.onclose?.apply(this,e)}),J(e,n)};X(T,e=>{t.state.kind===`loading`?e(E):t.state.kind===`unavailable`?e(D,1):t.state.kind===`error`&&!G(s)?e(ee,2):G(s)&&e(te,3)}),H(()=>Y(w,G(f))),J(e,x),$e()}Pr([`click`]);var jd=/^(\*+)\s+(?:(TODO|WIP|DONE)\s+)?(?:\[#([ABC])\]\s+)?(.+)$/,Md=/^#\+([A-Z][A-Z0-9_-]*):\s*(.*)$/i,Nd=/^:([A-Z][A-Z0-9_]*):\s*(.*)$/,Pd=/^-\s+([^:]+?)\s+::\s*(.*)$/;function Fd(e){let t=[],n=[],r=[],i=e.replace(/\r\n?/g,`
|
|
24
24
|
`).split(`
|
|
25
|
-
`),a=null,o=!1,s=()=>{a&&r.push({...a,properties:[...a.properties],descriptions:[...a.descriptions],body:Id(a.body)})};for(let e of i){let r=jd.exec(e);if(r){s(),a={level:r[1].length,title:r[4].trim(),...r[2]?{state:r[2]}:{},...r[3]?{priority:r[3]}:{},properties:[],descriptions:[],body:[]},o=!1;continue}if(!a){let r=Md.exec(e);r?t.push([r[1].toUpperCase(),r[2].trim()]):n.push(e);continue}if(e===`:PROPERTIES:`){o=!0;continue}if(o&&e===`:END:`){o=!1;continue}if(o){let t=Nd.exec(e);t&&a.properties.push([t[1],t[2].trim()]);continue}let i=Pd.exec(e);i?a.descriptions.push([i[1].trim(),i[2].trim()]):a.body.push(e)}return s(),{metadata:t,preamble:Id(n),sections:r}}function Id(e){let t=[...e];for(;t[0]?.trim()===``;)t.shift();for(;t.at(-1)?.trim()===``;)t.pop();return t}var Ld=q(`<div class="svelte-h7gaqo"><dt class="svelte-h7gaqo"> </dt> <dd class="svelte-h7gaqo"> </dd></div>`),Rd=q(`<dl class="metadata svelte-h7gaqo"></dl>`),zd=q(`<p class="svelte-h7gaqo"> </p>`),Bd=q(`<p class="svelte-h7gaqo">This Org document has no headings.</p>`),Vd=q(`<h3 class="svelte-h7gaqo"> </h3>`),Hd=q(`<h4 class="svelte-h7gaqo"> </h4>`),Ud=q(`<span> </span>`),Wd=q(`<span class="priority svelte-h7gaqo"> </span>`),Gd=q(`<dl class="descriptions svelte-h7gaqo"></dl>`),Kd=q(`<p> </p>`),qd=q(`<details class="properties svelte-h7gaqo"><summary class="svelte-h7gaqo">Properties</summary> <dl class="svelte-h7gaqo"></dl></details>`),Jd=q(`<section class="org-section svelte-h7gaqo"><div class="section-heading svelte-h7gaqo"><!> <!> <!></div> <!> <!> <!></section>`),Yd=q(`<div class="sections svelte-h7gaqo"></div>`),Xd=q(`<article class="org-document svelte-h7gaqo" aria-labelledby="org-document-title"><header class="svelte-h7gaqo"><div><h2 id="org-document-title" class="svelte-h7gaqo"> </h2> <code class="svelte-h7gaqo"> </code></div> <button class="close svelte-h7gaqo" type="button" aria-label="Close plan and return to list">×</button></header> <!> <!> <!></article>`);function Zd(e,t){Qe(t,!0);let n=P(()=>Fd(t.preview.source)),r=P(()=>G(n).metadata.filter(([e])=>e!==`TITLE`));var i=Xd(),a=z(i),o=z(a),s=z(o),c=z(s,!0);N(s);var l=V(s,2),u=z(l,!0);N(l),N(o);var d=V(o,2);N(a);var f=V(a,2),p=e=>{var t=Rd();Z(t,21,()=>G(r),([e,t])=>`${e}:${t}`,(e,t)=>{var n=P(()=>C(G(t),2));let r=()=>G(n)[0],i=()=>G(n)[1];var a=Ld(),o=z(a),s=z(o,!0);N(o);var c=V(o,2),l=z(c,!0);N(c),N(a),H(()=>{Y(s,r()),Y(l,i()||`—`)}),J(e,a)}),N(t),J(e,t)};X(f,e=>{G(r).length&&e(p)});var m=V(f,2);Z(m,19,()=>G(n).preamble,(e,t)=>`preamble:${t}:${e}`,(e,t)=>{var n=Hr(),r=B(n),i=e=>{var n=zd(),r=z(n,!0);N(n),H(()=>Y(r,G(t))),J(e,n)},a=P(()=>G(t).trim());X(r,e=>{G(a)&&e(i)}),J(e,n)});var h=V(m,2),g=e=>{J(e,Bd())},_=e=>{var t=Yd();Z(t,23,()=>G(n).sections,(e,t)=>`${t}:${e.level}:${e.title}`,(e,t)=>{var n=Jd();let r;var i=z(n),a=z(i),o=e=>{var n=Vd(),r=z(n,!0);N(n),H(()=>Y(r,G(t).title)),J(e,n)},s=e=>{var n=Hd(),r=z(n,!0);N(n),H(()=>Y(r,G(t).title)),J(e,n)};X(a,e=>{G(t).level===1?e(o):e(s,-1)});var c=V(a,2),l=e=>{var n=Ud(),r=z(n,!0);N(n),H(e=>{gi(n,1,e,`svelte-h7gaqo`),Y(r,G(t).state)},[()=>`state state-${G(t).state.toLowerCase()}`]),J(e,n)};X(c,e=>{G(t).state&&e(l)});var u=V(c,2),d=e=>{var n=Wd(),r=z(n);N(n),H(()=>Y(r,`Priority ${G(t).priority??``}`)),J(e,n)};X(u,e=>{G(t).priority&&e(d)}),N(i);var f=V(i,2),p=e=>{var n=Gd();Z(n,21,()=>G(t).descriptions,([e,t])=>`${e}:${t}`,(e,t)=>{var n=P(()=>C(G(t),2));let r=()=>G(n)[0],i=()=>G(n)[1];var a=Ld(),o=z(a),s=z(o,!0);N(o);var c=V(o,2),l=z(c,!0);N(c),N(a),H(()=>{Y(s,r()),Y(l,i()||`—`)}),J(e,a)}),N(n),J(e,n)};X(f,e=>{G(t).descriptions.length&&e(p)});var m=V(f,2);Z(m,19,()=>G(t).body,(e,t)=>`${t}:${e}`,(e,t)=>{var n=Hr(),r=B(n),i=e=>{var n=Kd();let r;var i=z(n,!0);N(n),H(e=>{r=gi(n,1,`svelte-h7gaqo`,null,r,e),Y(i,G(t))},[()=>({"list-item":G(t).trimStart().startsWith(`- `)})]),J(e,n)},a=P(()=>G(t).trim());X(r,e=>{G(a)&&e(i)}),J(e,n)});var h=V(m,2),g=e=>{var n=qd(),r=V(z(n),2);Z(r,21,()=>G(t).properties,([e,t])=>`${e}:${t}`,(e,t)=>{var n=P(()=>C(G(t),2));let r=()=>G(n)[0],i=()=>G(n)[1];var a=Ld(),o=z(a),s=z(o,!0);N(o);var c=V(o,2),l=z(c,!0);N(c),N(a),H(()=>{Y(s,r()),Y(l,i()||`—`)}),J(e,a)}),N(r),N(n),J(e,n)};X(h,e=>{G(t).properties.length&&e(g)}),N(n),H(e=>r=vi(n,``,r,e),[()=>({"--org-depth":Math.max(0,G(t).level-1)})]),J(e,n)}),N(t),J(e,t)};X(h,e=>{G(n).sections.length===0?e(g):e(_,-1)}),N(i),H(()=>{Y(c,t.preview.title),Y(u,t.preview.planName)}),K(`click`,d,function(...e){t.onclose?.apply(this,e)}),J(e,i),$e()}Pr([`click`]);var Qd=q(`<span> </span>`),$d=q(`<span> </span> <!>`,1),ef=q(`<span>Org document</span>`),tf=q(`<li><button class="svelte-x2ko9l"><strong> </strong> <code class="svelte-x2ko9l"> </code> <!></button></li>`),nf=q(`<p>Select a workspace to browse its local plans.</p>`),rf=q(`<p>Loading workspace plans…</p>`),af=q(`<p> </p>`),of=q(`<p>No Org files were found below this workspace.</p>`),sf=q(`<ul aria-label="Unfinished plans" class="svelte-x2ko9l"></ul>`),cf=q(`<section class="completed svelte-x2ko9l" aria-labelledby="completed-plans-title"><h3 id="completed-plans-title" class="svelte-x2ko9l">Completed</h3> <ul class="svelte-x2ko9l"></ul></section>`),lf=q(`<p class="scope svelte-x2ko9l">Org files below the selected workspace.</p> <!> <!>`,1),uf=q(`<section class="plans svelte-x2ko9l" aria-labelledby="plans-title"><h2 id="plans-title" tabindex="-1" class="svelte-x2ko9l">Plans</h2> <!></section>`);function df(e,t){Qe(t,!0);let n=(e,t=b)=>{var n=tf(),r=z(n),a=z(r),o=z(a,!0);N(a);var s=V(a,2),c=z(s,!0);N(s);var l=V(s,2),u=e=>{var n=$d(),r=B(n),i=z(r);N(r);var a=V(r,2),o=e=>{var n=Qd(),r=z(n,!0);N(n),H(()=>Y(r,t().subtitle)),J(e,n)};X(a,e=>{t().subtitle&&e(o)}),H(()=>Y(i,`${t().doneSteps??``} / ${t().totalSteps??``} complete`)),J(e,n)},f=e=>{J(e,ef())};X(l,e=>{t().previewAvailable===!1?e(f,-1):e(u)}),N(r),Li(r,e=>i[t().planName]=e,()=>i?.[t().planName]),N(n),H(()=>{Y(o,t().title),Y(c,t().planName)}),K(`click`,r,()=>d(t().planName)),J(e,n)},r=I(null),i=R({}),a=I(null),o=!1,s=!1,c=P(()=>t.catalog.kind===`ready`?t.catalog.entries.filter(e=>e.allDone!==!0):[]),l=P(()=>t.catalog.kind===`ready`?t.catalog.entries.filter(e=>e.allDone===!0):[]);function u(){t.onclose()}function d(e){L(a,e,!0),t.onopen(e)}Mn(()=>{if(t.state){o=!0;return}if(o&&(o=!1,s=!0),!s)return;let e=t.catalog.kind,n=G(a);queueMicrotask(()=>{let t=n?i[n]:void 0;t?.isConnected?(t.focus(),s=!1):e!==`loading`&&(G(r)?.focus(),s=!1)})});var f=Hr(),p=B(f),m=e=>{Zd(e,{get preview(){return t.state},onclose:u})},h=e=>{Ad(e,{get state(){return t.state},onclose:u})},g=e=>{var i=uf(),a=z(i);Li(a,e=>L(r,e),()=>G(r));var o=V(a,2),s=e=>{J(e,nf())},u=e=>{J(e,rf())},d=e=>{var n=af(),r=z(n,!0);N(n),H(()=>Y(r,t.catalog.error)),J(e,n)},f=e=>{J(e,of())},p=e=>{var t=lf(),r=V(B(t),2),i=e=>{var t=sf();Z(t,21,()=>G(c),e=>e.planName,(e,t)=>{n(e,()=>G(t))}),N(t),J(e,t)};X(r,e=>{G(c).length>0&&e(i)});var a=V(r,2),o=e=>{var t=cf(),r=V(z(t),2);Z(r,21,()=>G(l),e=>e.planName,(e,t)=>{n(e,()=>G(t))}),N(r),N(t),J(e,t)};X(a,e=>{G(l).length>0&&e(o)}),J(e,t)};X(o,e=>{t.catalog.kind===`no-workspace`?e(s):t.catalog.kind===`loading`?e(u,1):t.catalog.kind===`error`?e(d,2):t.catalog.entries.length===0?e(f,3):e(p,-1)}),N(i),J(e,i)};X(p,e=>{t.state?.kind===`org-source`?e(m):t.state?e(h,1):e(g,-1)}),J(e,f),$e()}Pr([`click`]);var ff=`settings`,pf=`drafts`,mf=`cursors`,hf=`selected-session`,gf={text:``,revision:0},_f=e=>{if(!e||typeof e!=`object`)return!1;let t=e,n=t.pending;return typeof t.text==`string`&&Number.isSafeInteger(t.revision)&&t.revision>=0&&(n===void 0||Array.isArray(n)&&n.every(e=>!!e&&typeof e.operationId==`string`&&typeof e.text==`string`&&Number.isSafeInteger(e.revision)&&e.revision>=0&&(e.kind===`send`||e.kind===`queue`||e.kind===`interrupt-send`)))};function vf(e=globalThis.indexedDB){if(!e)return yf;let t=Rc(e),n=new Map,r=new Map,i=async(e,i)=>{let a=r.get(e);if(a&&a.revision>i.revision)return;r.set(e,i);let o=(n.get(e)??Promise.resolve()).catch(()=>void 0).then(async()=>{if(r.get(e)===i)try{await Bc(await t,pf,e,i)}catch{}});n.set(e,o),await o};return{async readSelectedSession(){try{return await zc(await t,ff,hf)??null}catch{return null}},async saveSelectedSession(e){try{let n=await t;e?await Bc(n,ff,hf,e):await Vc(n,ff,hf)}catch{}},async readDraft(e){return(await this.readDraftEnvelope(e)).text},async saveDraft(e,t){let n=await this.readDraftEnvelope(e);await i(e,{text:t,revision:n.revision+1})},async readDraftEnvelope(e){try{let n=await zc(await t,pf,e),i=_f(n)?n:typeof n==`string`?{text:n,revision:0}:gf,a=r.get(e);return a&&a.revision>=i.revision?a:(r.set(e,i),i)}catch{return r.get(e)??gf}},saveDraftEnvelope:i,replaceDraftText:async(e,t,n)=>{let a=r.get(e);await i(e,{text:t,revision:n,pending:a?.pending})},addPendingDraftOperation:async(e,t)=>{let n=r.get(e)??gf;await i(e,{...n,pending:[...(n.pending??[]).filter(e=>e.operationId!==t.operationId),t].slice(-8)})},consumeAcceptedDraft:async(e,i,a)=>{let o=n.get(e)??Promise.resolve(),s=null,c=o.catch(()=>void 0).then(async()=>{let n=r.get(e);if(!n)try{let r=await zc(await t,pf,e);n=_f(r)?r:typeof r==`string`?{text:r,revision:0}:gf}catch{n=gf}if(!(n.revision!==i||!n.pending?.some(e=>e.operationId===a))){s={text:``,revision:n.revision+1,pending:n.pending.filter(e=>e.operationId!==a)},r.set(e,s);try{await Bc(await t,pf,e,s)}catch{r.get(e)===s&&r.set(e,n),s=null}}});return n.set(e,c),await c,s},async readCursor(e){try{let n=await zc(await t,mf,e);return typeof n==`number`&&Number.isSafeInteger(n)&&n>=0?n:0}catch{return 0}},async saveCursor(e,n){try{await Bc(await t,mf,e,n)}catch{}}}}var yf={readSelectedSession:async()=>null,saveSelectedSession:async()=>{},readDraft:async()=>``,saveDraft:async()=>{},readDraftEnvelope:async()=>gf,saveDraftEnvelope:async()=>{},replaceDraftText:async()=>{},addPendingDraftOperation:async()=>{},consumeAcceptedDraft:async()=>null,readCursor:async()=>0,saveCursor:async()=>{}};function bf(e,t=Date.now()){if(e===null)return`Unknown activity time`;let n=Math.max(0,t-e),r=Math.floor(n/(3600*1e3));if(r<1)return`Less than an hour ago`;if(r<24)return`${r} hour${r===1?``:`s`} ago`;let i=Math.floor(r/24);return`${i} day${i===1?``:`s`} ago`}function xf(e){let t=e.updatedAt?Date.parse(e.updatedAt):NaN;return{threadId:e.threadId??null,workspacePath:e.workspacePath??`Workspace unavailable`,updatedAt:Number.isFinite(t)?t:null}}function Sf(e,t){if(!t?.threadId||!t.workspacePath||!t.resumeCommand||e.some(e=>e.id===t.threadId&&(e.provider??`codex`)===(t.provider??`codex`)))return e;let n=t.updatedAt?Date.parse(t.updatedAt)/1e3:NaN,r={id:t.threadId,cwd:t.workspacePath,recencyAt:Number.isFinite(n)?n:null,resumeCommand:t.resumeCommand,...t.provider===void 0?{}:{provider:t.provider},...t.model===void 0?{}:{model:t.model},...t.effectiveSkillSelection?.selectedProfileName===void 0?{}:{skillProfile:t.effectiveSkillSelection.selectedProfileName},...t.lastOrgPlan===void 0?{}:{orgPlanFilename:t.lastOrgPlan.filename}};return[...e,r].sort((e,t)=>(t.recencyAt??-1/0)-(e.recencyAt??-1/0))}function Cf(e){let t=/^\/home\/[^/]+/.exec(e)?.[0];if(!t)return e;let n=e.slice(t.length);return n?`~${n}`:`~/`}function wf(e,t){let n=Date.parse(e);if(!Number.isFinite(n))return`Updated recently`;let r=Math.max(0,Math.floor((t-n)/1e3));return r<5?`Updated just now`:r<60?`Updated ${r}s ago`:`Updated ${Math.floor(r/60)}m ago`}var Tf=q(`<time class="svelte-2szxr9"> </time>`),Ef=q(`<span role="status"><span aria-hidden="true" class="dot svelte-2szxr9"></span> <span class="svelte-2szxr9"> </span> <!></span>`);function Df(e,t){Qe(t,!0);let n=$(t,`connected`,3,!0),r=P(()=>n()?t.autopilot?.state??`unknown`:`disconnected`),i=P(()=>!!t.autopilot?.health?.healthy),a=I(R(Date.now())),o=I(R(typeof document>`u`||document.visibilityState!==`hidden`)),s=P(()=>G(r)===`disconnected`?`Autopilot disconnected`:G(r)===`attentionRequired`?`Autopilot needs attention`:G(r)===`safetyPaused`?`Autopilot safety paused`:G(i)?`Autopilot continuation active`:`Autopilot continuation inactive`);function c(){L(o,document.visibilityState!==`hidden`),G(o)&&L(a,Date.now(),!0)}Mn(()=>{if(!G(i)||!G(o))return;let e=window.setInterval(()=>L(a,Date.now(),!0),1e3);return()=>window.clearInterval(e)});var l=Ef();Nr(`visibilitychange`,un,c);let u;var d=V(z(l),2),f=z(d,!0);N(d);var p=V(d,2),m=e=>{var n=Tf(),r=z(n,!0);N(n),H(e=>{Q(n,`datetime`,t.autopilot.updatedAt),Y(r,e)},[()=>wf(t.autopilot.updatedAt,G(a))]),J(e,n)};X(p,e=>{t.autopilot&&G(i)&&e(m)}),N(l),H(()=>{u=gi(l,1,`liveness svelte-2szxr9`,null,u,{active:G(i)}),Q(l,`data-state`,G(r)),Q(l,`aria-label`,G(s)),Y(f,G(s))}),J(e,l),$e()}var Of=q(`<details class="session-verdict svelte-hxb22h"><summary class="svelte-hxb22h"><span aria-hidden="true"></span> </summary> <p class="svelte-hxb22h"> </p></details>`),kf=q(`<time class="svelte-hxb22h"> </time>`),Af=q(`<div class="svelte-hxb22h"> </div>`),jf=q(`<span class="profile-badge svelte-hxb22h"> </span>`),Mf=q(`<span class="profile-badge svelte-hxb22h">Kimi</span>`),Nf=q(`<span class="org-plan-metadata svelte-hxb22h"><span class="org-plan-title svelte-hxb22h"> </span> <span class="org-plan-filename svelte-hxb22h"> </span></span>`),Pf=q(`<div class="session-plan-progress svelte-hxb22h"><!></div>`),Ff=q(`<li><div class="session-actions svelte-hxb22h" aria-label="Session actions"><!> <!> <!> <!> <!> <!></div> <div class="session-details svelte-hxb22h"><div class="session-summary svelte-hxb22h"><!> <!> <div class="workspace-path svelte-hxb22h"> </div> <!> <!> <!> <!> <!> <!></div> <!> <!></div></li>`),If=q(`<section aria-labelledby="open-sessions-title" class="svelte-hxb22h"><h3 id="open-sessions-title" class="svelte-hxb22h">Open sessions</h3> <ul class="session-list svelte-hxb22h" aria-label="Open sessions"></ul></section>`),Lf=q(`<li class="managed-session svelte-hxb22h"><div class="session-actions svelte-hxb22h"><!> <!> <!></div> <div class="session-details svelte-hxb22h"><!> <div class="workspace-path svelte-hxb22h"> </div> <!> <!> <!> <!></div></li>`),Rf=q(`<ul class="session-list svelte-hxb22h" aria-label="Saved sessions"></ul>`),zf=q(`<p class="svelte-hxb22h">No saved sessions yet.</p>`),Bf=q(`<label for="sandbox" class="svelte-hxb22h">Sandbox</label> <label for="approval-policy" class="svelte-hxb22h">Approval policy</label>`,1),Vf=q(`<option class="svelte-hxb22h"> </option>`),Hf=q(`<select id="sandbox" class="svelte-hxb22h"><option class="svelte-hxb22h">workspace-write</option><option class="svelte-hxb22h">read-only</option><option class="svelte-hxb22h">danger-full-access</option></select> <select id="approval-policy" aria-describedby="approval-policy-help" class="svelte-hxb22h"><option class="svelte-hxb22h">Ask on all commands</option><option class="svelte-hxb22h">Ask out of workspace</option><option class="svelte-hxb22h">Approve everything</option></select>`,1),Uf=q(`<p id="approval-policy-help" class="svelte-hxb22h"> </p>`),Wf=q(`<p class="skills-profile-error svelte-hxb22h" role="alert"> </p>`),Gf=q(`<option class="svelte-hxb22h">Loading models…</option>`),Kf=q(`<option class="svelte-hxb22h">Choose automatically</option>`),qf=q(`<p id="provider-availability" class="provider-availability svelte-hxb22h">Kimi is unavailable because its CLI was not found when the relay started.</p>`),Jf=q(`<li class="recent-session svelte-hxb22h"><div class="session-details svelte-hxb22h"><!> <div class="workspace-path svelte-hxb22h"> </div> <!> <!> <!> <!></div> <div class="session-actions svelte-hxb22h"><!> <!></div></li>`),Yf=q(`<ul class="session-list recent-session-list svelte-hxb22h" aria-label="Recent sessions"></ul>`),Xf=q(`<p class="svelte-hxb22h">No other recent sessions found.</p>`),Zf=q(`<section aria-labelledby="sessions-title" class="svelte-hxb22h"><h2 id="sessions-title" class="visually-hidden svelte-hxb22h">Sessions</h2> <!> <!> <form class="svelte-hxb22h"><section class="session-base svelte-hxb22h" aria-labelledby="session-base-title"><div class="session-base-heading svelte-hxb22h"><h3 id="session-base-title" class="svelte-hxb22h">Session base</h3> <p class="svelte-hxb22h"> </p></div> <!></section> <section class="session-settings svelte-hxb22h" aria-label="New session settings"><div class="session-setting-labels svelte-hxb22h"><label for="skills-profile" class="svelte-hxb22h">Skills profile</label> <!></div> <div class="session-setting-controls svelte-hxb22h"><select id="skills-profile" class="svelte-hxb22h"><option class="svelte-hxb22h">Default</option><!></select> <!></div> <!> <!> <div class="session-secondary-actions svelte-hxb22h"><!> <div class="model-control svelte-hxb22h"><label for="session-provider" class="svelte-hxb22h">Provider</label> <select id="session-provider" class="svelte-hxb22h"><option class="svelte-hxb22h">Codex</option><option class="svelte-hxb22h"> </option></select></div> <div class="model-control svelte-hxb22h"><label for="model" class="svelte-hxb22h"> </label> <select id="model" class="svelte-hxb22h"><!><!></select></div> <!></div> <!></section></form> <section aria-labelledby="recent-sessions-title" class="svelte-hxb22h"><h3 id="recent-sessions-title" class="svelte-hxb22h">Recent sessions</h3> <!></section></section>`);function Qf(e,t){Qe(t,!0);let n=$(t,`activitySnapshots`,19,()=>new Map),r=$(t,`autopilotSnapshots`,19,()=>new Map),i=$(t,`autopilotPending`,19,()=>new Set),a=$(t,`autopilotAttention`,19,()=>new Map),o=$(t,`models`,19,()=>[]),s=$(t,`selectedModel`,3,``),c=$(t,`provider`,3,`codex`),l=$(t,`kimiAvailable`,3,!1),u=$(t,`modelsLoading`,3,!1),d=$(t,`onmodelchange`,3,()=>{}),f=$(t,`onproviderchange`,3,()=>{}),p=$(t,`onautopilottoggle`,3,()=>{}),m=$(t,`onactivityopen`,3,()=>{}),h=$(t,`onautopilotresolve`,3,()=>{}),g=P(()=>t.sessions.filter(e=>e.state===`ready`||e.state===`turnActive`)),_=P(()=>t.sessions.filter(e=>e.state!==`ready`&&e.state!==`turnActive`)),v=P(()=>t.recentSessions.filter(e=>!G(g).some(t=>t.threadId===e.id&&(t.provider??`codex`)===(e.provider??`codex`)))),y=P(()=>fu(t.workspaceTree,t.workspaceId)),b=P(()=>c()===`kimi`?`Kimi`:`Codex`);var x=Zf(),S=V(z(x),2),C=e=>{var s=If(),c=V(z(s),2);Z(c,21,()=>G(g),e=>e.id,(e,s)=>{let c=P(()=>xf(G(s))),l=P(()=>Vl(G(s).sessionStatus)?G(s).sessionStatus:null);var u=Ff();let d;var f=z(u),g=z(f);{let e=P(()=>G(s).id===t.selectedSessionId?`page`:void 0);Ta(g,{compact:!0,full:!0,get current(){return G(e)},onclick:()=>t.onselectopen(G(s).id),children:(e,t)=>{He(),J(e,Vr(`Open`))},$$slots:{default:!0}})}var _=V(g,2),v=e=>{Ta(e,{compact:!0,full:!0,onclick:()=>t.oncopyresume(G(s).resumeCommand),children:(e,t)=>{He(),J(e,Vr(`Copy`))},$$slots:{default:!0}})};X(_,e=>{G(s).resumeCommand&&G(s).provider!==`kimi`&&e(v)});var y=V(_,2),b=e=>{{let t=P(()=>r().get(G(s).id)??G(s).autopilot??null),n=P(()=>`session-autopilot-${G(s).id}`),a=P(()=>i().has(G(s).id));no(e,{compact:!0,indicatorOnly:!0,get autopilot(){return G(t)},get controlId(){return G(n)},get pending(){return G(a)},ontoggle:e=>p()(G(s).id,e)})}};X(y,e=>{G(s).provider!==`kimi`&&e(b)});var x=V(y,2);{let e=P(()=>n().get(G(s).id)??G(s).agentActivity??null),t=P(()=>G(s).model??o()?.[0]);La(x,{compact:!0,get activity(){return G(e)},popupAlign:`start`,get rootModel(){return G(t)},get plan(){return G(s).plan},onopen:()=>m()(G(s).id)})}var S=V(x,2);Ta(S,{compact:!0,full:!0,onclick:()=>t.onclose(G(s).id),children:(e,t)=>{He(),J(e,Vr(`Close`))},$$slots:{default:!0}});var C=V(S,2),w=e=>{{let t=P(()=>r().get(G(s).id)??G(s).autopilot??null),i=P(()=>(n().get(G(s).id)??G(s).agentActivity)?.root.state!==`disconnected`);Df(e,{get autopilot(){return G(t)},get connected(){return G(i)}})}};X(C,e=>{G(s).provider!==`kimi`&&e(w)}),N(f);var T=V(f,2),E=z(T),D=z(E),ee=e=>{var t=Of(),n=z(t),r=z(n);let i;var a=V(r);N(n);var o=V(n,2),s=z(o);N(o),N(t),H(()=>{Q(t,`data-state`,G(l).state),Q(t,`aria-label`,`${G(l).state===`working`?`Working`:`Idle`}: ${G(l).reason}`),Q(n,`aria-label`,`${G(l).state===`working`?`Working`:`Idle`}: ${G(l).reason}`),i=gi(r,1,`verdict-dot svelte-hxb22h`,null,i,{live:G(l).state===`working`&&G(l).confidence===`fresh`}),Y(a,` ${G(l).state===`working`?`Working`:`Idle`}`),Y(s,`${G(l).reason??``}. ${G(l).nextExpectedAction??``}
|
|
26
|
-
Evidence confidence: ${G(l).confidence??``}.`)}),J(e,t)};X(D,e=>{G(l)&&e(ee)});var te=V(D,2),ne=e=>{var t=kf(),n=z(t,!0);N(t),H((e,r)=>{Q(t,`datetime`,e),Y(n,r)},[()=>new Date(G(c).updatedAt).toISOString(),()=>bf(G(c).updatedAt)]),J(e,t)},re=e=>{var t=Af(),n=z(t,!0);N(t),H(e=>Y(n,e),[()=>bf(null)]),J(e,t)};X(te,e=>{G(c).updatedAt===null?e(re,-1):e(ne)});var ie=V(te,2),O=z(ie,!0);N(ie);var k=V(ie,2),ae=e=>{var t=jf(),n=z(t);N(t),H(()=>Y(n,`Model: ${G(s).model??``}`)),J(e,t)};X(k,e=>{G(s).model&&e(ae)});var A=V(k,2),oe=e=>{J(e,Mf())};X(A,e=>{G(s).provider===`kimi`&&e(oe)});var se=V(A,2),ce=e=>{var t=jf(),n=z(t);N(t),H(()=>Y(n,`Branch: ${G(s).branch??``}`)),J(e,t)};X(se,e=>{G(s).branch&&e(ce)});var le=V(se,2),ue=e=>{var t=jf(),n=z(t);N(t),H(()=>Y(n,`Skills profile: ${G(s).effectiveSkillSelection.selectedProfileName??``}`)),J(e,t)};X(le,e=>{G(s).effectiveSkillSelection?.selectedProfileName&&e(ue)});var de=V(le,2),fe=e=>{var t=Nf(),n=z(t),r=z(n,!0);N(n);var i=V(n,2),a=z(i,!0);N(i),N(t),H(()=>{Y(r,G(s).lastOrgPlan.title),Y(a,G(s).lastOrgPlan.filename)}),J(e,t)};X(de,e=>{G(s).lastOrgPlan&&e(fe)});var pe=V(de,2),me=e=>{var t=Pf(),n=z(t);{let e=P(()=>`Plan progress for ${G(s).plan.title}`);fd(n,{compact:!0,get plan(){return G(s).plan},get label(){return G(e)}})}N(t),J(e,t)};X(pe,e=>{G(s).plan&&e(me)}),N(E);var he=V(E,2);{let e=P(()=>a().get(G(s).id)??null),t=P(()=>`session-attention-${G(s).id}`),n=P(()=>i().has(G(s).id));io(he,{get attention(){return G(e)},get controlId(){return G(t)},get pending(){return G(n)},onresolve:(e,t)=>h()(G(s).id,e,t)})}var ge=V(he,2);{let e=P(()=>r().get(G(s).id)??G(s).autopilot??null),t=P(()=>a().get(G(s).id)??null),n=P(()=>`session-autopilot-safety-${G(s).id}`),o=P(()=>i().has(G(s).id));oo(ge,{get autopilot(){return G(e)},get attention(){return G(t)},get controlId(){return G(n)},get pending(){return G(o)},onrecover:()=>p()(G(s).id,!0),ondisable:()=>p()(G(s).id,!1)})}N(T),N(u),H(e=>{d=gi(u,1,`managed-session open-session svelte-hxb22h`,null,d,{"current-session":G(s).id===t.selectedSessionId}),Y(O,e)},[()=>Cf(G(c).workspacePath)]),J(e,u)}),N(c),N(s),J(e,s)};X(S,e=>{G(g).length&&e(C)});var w=V(S,2),T=e=>{var n=Rf();Z(n,21,()=>G(_),e=>e.id,(e,n)=>{let r=P(()=>xf(G(n)));var i=Lf(),a=z(i),o=z(a);{let e=P(()=>t.openingSessionId===G(n).id);Ta(o,{compact:!0,full:!0,get disabled(){return G(e)},onclick:()=>t.onopen(G(n).id),children:(e,r)=>{He();var i=Vr();H(()=>Y(i,t.openingSessionId===G(n).id?`Opening…`:`Open`)),J(e,i)},$$slots:{default:!0}})}var s=V(o,2),c=e=>{Ta(e,{compact:!0,full:!0,onclick:()=>t.oncopyresume(G(n).resumeCommand),children:(e,t)=>{He(),J(e,Vr(`Copy`))},$$slots:{default:!0}})};X(s,e=>{G(n).resumeCommand&&G(n).provider!==`kimi`&&e(c)}),Ta(V(s,2),{compact:!0,full:!0,onclick:()=>t.onforget(G(n).id),children:(e,t)=>{He(),J(e,Vr(`Forget`))},$$slots:{default:!0}}),N(a);var l=V(a,2),u=z(l),d=e=>{var t=kf(),n=z(t,!0);N(t),H((e,r)=>{Q(t,`datetime`,e),Y(n,r)},[()=>new Date(G(r).updatedAt).toISOString(),()=>bf(G(r).updatedAt)]),J(e,t)},f=e=>{var t=Af(),n=z(t,!0);N(t),H(e=>Y(n,e),[()=>bf(null)]),J(e,t)};X(u,e=>{G(r).updatedAt===null?e(f,-1):e(d)});var p=V(u,2),m=z(p,!0);N(p);var h=V(p,2),g=e=>{var t=jf(),r=z(t);N(t),H(()=>Y(r,`Model: ${G(n).model??``}`)),J(e,t)};X(h,e=>{G(n).model&&e(g)});var _=V(h,2),v=e=>{J(e,Mf())};X(_,e=>{G(n).provider===`kimi`&&e(v)});var y=V(_,2),b=e=>{var t=jf(),r=z(t);N(t),H(()=>Y(r,`Branch: ${G(n).branch??``}`)),J(e,t)};X(y,e=>{G(n).branch&&e(b)});var x=V(y,2),S=e=>{var t=jf(),r=z(t);N(t),H(()=>Y(r,`Skills profile: ${G(n).effectiveSkillSelection.selectedProfileName??``}`)),J(e,t)};X(x,e=>{G(n).effectiveSkillSelection?.selectedProfileName&&e(S)}),N(l),N(i),H(e=>Y(m,e),[()=>Cf(G(r).workspacePath)]),J(e,i)}),N(n),J(e,n)},E=e=>{J(e,zf())};X(w,e=>{G(_).length?e(T):G(g).length||e(E,1)});var D=V(w,2),ee=z(D),te=z(ee),ne=V(z(te),2),re=z(ne);N(ne),N(te);var ie=V(te,2);{let e=P(()=>G(y)?.id??null);bu(ie,{get roots(){return t.workspaceTree},get expandedIds(){return t.expandedIds},get selectedId(){return G(e)},get isSelectable(){return su.sessionBase},label:`Session base`,get onexpandedchange(){return t.onexpandedchange},onselect:e=>t.onworkspacechange(e.id)})}N(ee);var O=V(ee,2),k=z(O);let ae;var A=V(z(k),2),oe=e=>{var t=Bf();He(2),J(e,t)};X(A,e=>{c()!==`kimi`&&e(oe)}),N(k);var se=V(k,2);let ce;var le=z(se),ue=z(le);ue.value=ue.__value=``,Z(V(ue),17,()=>t.skillProfiles,e=>e.name,(e,t)=>{var n=Vf(),r=z(n,!0);N(n);var i={};H(()=>{Y(r,G(t).name),i!==(i=G(t).name)&&(n.value=(n.__value=G(t).name)??``)}),J(e,n)}),N(le);var de;bi(le);var fe=V(le,2),pe=e=>{var n=Hf(),r=B(n),i=z(r);i.value=i.__value=`workspace-write`;var a=V(i);a.value=a.__value=`read-only`;var o=V(a);o.value=o.__value=`danger-full-access`,N(r);var s;bi(r);var c=V(r,2),l=z(c);l.value=l.__value=`untrusted`;var u=V(l);u.value=u.__value=`on-request`;var d=V(u);d.value=d.__value=`never`,N(c);var f;bi(c),H(()=>{s!==(s=t.sandbox)&&(r.value=(r.__value=t.sandbox)??``,yi(r,t.sandbox)),f!==(f=t.approvalPolicy)&&(c.value=(c.__value=t.approvalPolicy)??``,yi(c,t.approvalPolicy))}),K(`change`,r,e=>t.onsandboxchange(e.currentTarget.value)),K(`change`,c,e=>t.onapprovalpolicychange(e.currentTarget.value)),J(e,n)};X(fe,e=>{c()!==`kimi`&&e(pe)}),N(se);var me=V(se,2),he=e=>{var t=Uf(),n=z(t);N(t),H(()=>Y(n,`This controls when ${G(b)??``} asks; it does not expand the sandbox's technical permissions.`)),J(e,t)};X(me,e=>{c()!==`kimi`&&e(he)});var ge=V(me,2),_e=e=>{var n=Wf(),r=z(n,!0);N(n),H(()=>Y(r,t.skillProfileError)),J(e,n)};X(ge,e=>{t.skillProfileError&&e(_e)});var ve=V(ge,2),ye=z(ve);Ta(ye,{id:`manage-skill-profiles`,onclick:e=>t.onmanageprofiles(e.currentTarget),children:(e,t)=>{He(),J(e,Vr(`Manage skill profiles`))},$$slots:{default:!0}});var be=V(ye,2),xe=V(z(be),2),Se=z(xe);Se.value=Se.__value=`codex`;var Ce=V(Se),we=z(Ce);N(Ce),Ce.value=Ce.__value=`kimi`,N(xe);var Te;bi(xe),N(be);var Ee=V(be,2),De=z(Ee),Oe=z(De);N(De);var ke=V(De,2),Ae=z(ke),je=e=>{var t=Gf();t.value=t.__value=``,J(e,t)},Me=e=>{var t=Kf();t.value=t.__value=``,J(e,t)};X(Ae,e=>{u()?e(je):o().length===0&&e(Me,1)}),Z(V(Ae),16,o,e=>e,(e,t)=>{var n=Vf(),r=z(n,!0);N(n);var i={};H(()=>{Y(r,t),i!==(i=t)&&(n.value=(n.__value=t)??``)}),J(e,n)}),N(ke);var Ne;bi(ke),N(Ee);var Pe=V(Ee,2);{let e=P(()=>!G(y)||t.startingSession||u()||o().length>0&&!s());Ta(Pe,{class:`new-session-button`,type:`submit`,primary:!0,get disabled(){return G(e)},children:(e,n)=>{He();var r=Vr();H(()=>Y(r,t.startingSession?`Creating…`:`Create session`)),J(e,r)},$$slots:{default:!0}})}N(ve);var Fe=V(ve,2),Ie=e=>{J(e,qf())};X(Fe,e=>{l()||e(Ie)}),N(O),N(D);var Le=V(D,2),Re=V(z(Le),2),j=e=>{var n=Yf();Z(n,21,()=>G(v),e=>(e.provider??`codex`)+`:`+e.id,(e,n)=>{var r=Jf(),i=z(r),a=z(i),o=e=>{var t=kf(),r=z(t,!0);N(t),H((e,n)=>{Q(t,`datetime`,e),Y(r,n)},[()=>new Date(G(n).recencyAt*1e3).toISOString(),()=>bf(G(n).recencyAt*1e3)]),J(e,t)},s=e=>{var t=Af(),n=z(t,!0);N(t),H(e=>Y(n,e),[()=>bf(null)]),J(e,t)};X(a,e=>{G(n).recencyAt===null?e(s,-1):e(o)});var c=V(a,2),l=z(c,!0);N(c);var u=V(c,2),d=e=>{var t=jf(),r=z(t);N(t),H(()=>Y(r,`Model: ${G(n).model??``}`)),J(e,t)};X(u,e=>{G(n).model&&e(d)});var f=V(u,2),p=e=>{J(e,Mf())};X(f,e=>{G(n).provider===`kimi`&&e(p)});var m=V(f,2),h=e=>{var t=jf(),r=z(t);N(t),H(()=>Y(r,`Skills profile: ${G(n).skillProfile??``}`)),J(e,t)};X(m,e=>{G(n).skillProfile&&e(h)});var g=V(m,2),_=e=>{var t=jf(),r=z(t);N(t),H(()=>Y(r,`Org plan: ${G(n).orgPlanFilename??``}`)),J(e,t)};X(g,e=>{G(n).orgPlanFilename&&e(_)}),N(i);var v=V(i,2),y=z(v);Ta(y,{onclick:()=>t.onopenrecent(G(n)),children:(e,t)=>{He(),J(e,Vr(`Open`))},$$slots:{default:!0}});var b=V(y,2),x=e=>{Ta(e,{onclick:()=>t.oncopyresume(G(n).resumeCommand),children:(e,t)=>{He(),J(e,Vr(`Copy`))},$$slots:{default:!0}})};X(b,e=>{G(n).resumeCommand&&e(x)}),N(v),N(r),H(e=>Y(l,e),[()=>Cf(G(n).cwd)]),J(e,r)}),N(n),J(e,n)},ze=e=>{J(e,Xf())};X(Re,e=>{G(v).length?e(j):e(ze,-1)}),N(Le),N(x),H(()=>{Y(re,`Select the folder or repository ${G(b)??``} should use as its working directory.`),ae=vi(k,``,ae,{"grid-template-columns":c()===`kimi`?`minmax(0, 1fr)`:`repeat(3, minmax(0, 1fr))`}),ce=vi(se,``,ce,{"grid-template-columns":c()===`kimi`?`minmax(0, 1fr)`:`repeat(3, minmax(0, 1fr))`}),de!==(de=t.selectedSkillProfile)&&(le.value=(le.__value=t.selectedSkillProfile)??``,yi(le,t.selectedSkillProfile)),Q(xe,`aria-describedby`,l()?void 0:`provider-availability`),Ce.disabled=!l(),Y(we,`Kimi${l()?``:` (unavailable)`}`),Te!==(Te=c())&&(xe.value=(xe.__value=c())??``,yi(xe,c())),Y(Oe,`${G(b)??``} model`),ke.disabled=u()||o().length===0,Ne!==(Ne=s())&&(ke.value=(ke.__value=s())??``,yi(ke,s()))}),Nr(`submit`,D,e=>{e.preventDefault(),t.onstart()}),K(`change`,le,e=>t.onskillprofilechange(e.currentTarget.value)),K(`change`,xe,e=>f()(e.currentTarget.value)),K(`change`,ke,e=>d()(e.currentTarget.value)),J(e,x),$e()}Pr([`change`]);function $f(e){let t={};return e.workspaceId||(t.workspaceId=`Choose a workspace.`),e.profile||(t.profile=`Choose a profile.`),e.profile&&e.profileState&&e.profileState!==`ok`&&(t.profile=`Sign in to this profile before starting Codex.`),t}var ep=class{transport;key;onChange;#e={starting:!1,error:null};#t=0;#n=!1;#r=null;constructor(e,t,n){this.transport=e,this.key=t,this.onChange=n}get state(){return this.#e}async start(e,t){if(this.#n||this.#e.starting||!e)return null;let n=++this.#t;this.#a({starting:!0,error:null});let r=this.#r??=this.key();try{let i=await this.transport.start(e,t,r);return this.#i(n)&&(this.#r=null),this.#i(n)?i:null}catch(e){return this.#i(n)&&this.#a({starting:!1,error:e instanceof Error?e.message:`Could not start session.`}),null}finally{this.#i(n)&&this.#a({...this.#e,starting:!1})}}dispose(){this.#n=!0,++this.#t}#i(e){return!this.#n&&e===this.#t}#a(e){this.#n||(this.#e=e,this.onChange(e))}};function tp({chatEnabled:e}){return[`sessions`,`git`,...e?[`chat`]:[],`plan`]}function np(e,t,n={chatEnabled:!0}){let r=tp(n);return r[(r.indexOf(e)+t+r.length)%r.length]}var rp=q(`<nav class="bottom-navigation" aria-label="Primary"><button>Sessions</button> <button>Git</button> <button>Chat</button> <button>Plan</button></nav>`);function ip(e,t){Qe(t,!0);let n=$(t,`focusTab`,3,null),r=R({});Mn(()=>{n()&&r[n()]?.focus()});function i(e){let n=e.key===`ArrowRight`?1:e.key===`ArrowLeft`?-1:null;if(n===null)return;e.preventDefault();let i=np(t.activeTab,n,{chatEnabled:t.chatEnabled});t.onselect(i),r[i]?.focus()}var a=rp(),o=z(a);Li(o,e=>r.sessions=e,()=>r?.sessions);var s=V(o,2);Li(s,e=>r.git=e,()=>r?.git);var c=V(s,2);Li(c,e=>r.chat=e,()=>r?.chat);var l=V(c,2);Li(l,e=>r.plan=e,()=>r?.plan),N(a),H(()=>{Q(o,`aria-pressed`,t.activeTab===`sessions`),Q(s,`aria-pressed`,t.activeTab===`git`),Q(c,`aria-pressed`,t.activeTab===`chat`),c.disabled=!t.chatEnabled,Q(l,`aria-pressed`,t.activeTab===`plan`)}),K(`keydown`,o,i),K(`click`,o,()=>t.onselect(`sessions`)),K(`keydown`,s,i),K(`click`,s,()=>t.onselect(`git`)),K(`keydown`,c,i),K(`click`,c,()=>t.onselect(`chat`)),K(`keydown`,l,i),K(`click`,l,()=>t.onselect(`plan`)),J(e,a),$e()}Pr([`keydown`,`click`]);var ap=q(`<option> </option>`),op=q(`<p id="skills-status" aria-live="polite">Loading skills…</p>`),sp=q(`<p id="skills-status">No skills were discovered for this workspace and Codex profile.</p>`),cp=q(`<p id="skills-status" class="notice svelte-dg6sjj" role="status"> </p>`),lp=q(`<p id="skills-status" class="error svelte-dg6sjj" role="alert"> </p>`),up=q(`<p id="skills-status" class="error svelte-dg6sjj" role="alert" tabindex="-1"> </p>`),dp=q(`<p id="skills-status" role="status">Profile saved.</p>`),fp=q(`<p id="skills-status" role="status">Profile deleted.</p>`),pp=q(`<li class="svelte-dg6sjj"><div class="svelte-dg6sjj"><strong> </strong> <span class="missing-state svelte-dg6sjj">Missing · disabled</span> <span class="path svelte-dg6sjj"> </span></div> <button type="button" class="remove-missing svelte-dg6sjj">Remove</button></li>`),mp=q(`<section class="missing-skills svelte-dg6sjj" aria-labelledby="missing-skills-title"><h3 id="missing-skills-title" class="svelte-dg6sjj">Missing skills</h3> <p class="svelte-dg6sjj">These saved paths no longer exist. They are disabled for new sessions until restored or
|
|
25
|
+
`),a=null,o=!1,s=()=>{a&&r.push({...a,properties:[...a.properties],descriptions:[...a.descriptions],body:Id(a.body)})};for(let e of i){let r=jd.exec(e);if(r){s(),a={level:r[1].length,title:r[4].trim(),...r[2]?{state:r[2]}:{},...r[3]?{priority:r[3]}:{},properties:[],descriptions:[],body:[]},o=!1;continue}if(!a){let r=Md.exec(e);r?t.push([r[1].toUpperCase(),r[2].trim()]):n.push(e);continue}if(e===`:PROPERTIES:`){o=!0;continue}if(o&&e===`:END:`){o=!1;continue}if(o){let t=Nd.exec(e);t&&a.properties.push([t[1],t[2].trim()]);continue}let i=Pd.exec(e);i?a.descriptions.push([i[1].trim(),i[2].trim()]):a.body.push(e)}return s(),{metadata:t,preamble:Id(n),sections:r}}function Id(e){let t=[...e];for(;t[0]?.trim()===``;)t.shift();for(;t.at(-1)?.trim()===``;)t.pop();return t}var Ld=q(`<div class="svelte-h7gaqo"><dt class="svelte-h7gaqo"> </dt> <dd class="svelte-h7gaqo"> </dd></div>`),Rd=q(`<dl class="metadata svelte-h7gaqo"></dl>`),zd=q(`<p class="svelte-h7gaqo"> </p>`),Bd=q(`<p class="svelte-h7gaqo">This Org document has no headings.</p>`),Vd=q(`<h3 class="svelte-h7gaqo"> </h3>`),Hd=q(`<h4 class="svelte-h7gaqo"> </h4>`),Ud=q(`<span> </span>`),Wd=q(`<span class="priority svelte-h7gaqo"> </span>`),Gd=q(`<dl class="descriptions svelte-h7gaqo"></dl>`),Kd=q(`<p> </p>`),qd=q(`<details class="properties svelte-h7gaqo"><summary class="svelte-h7gaqo">Properties</summary> <dl class="svelte-h7gaqo"></dl></details>`),Jd=q(`<section class="org-section svelte-h7gaqo"><div class="section-heading svelte-h7gaqo"><!> <!> <!></div> <!> <!> <!></section>`),Yd=q(`<div class="sections svelte-h7gaqo"></div>`),Xd=q(`<article class="org-document svelte-h7gaqo" aria-labelledby="org-document-title"><header class="svelte-h7gaqo"><div><h2 id="org-document-title" class="svelte-h7gaqo"> </h2> <code class="svelte-h7gaqo"> </code></div> <button class="close svelte-h7gaqo" type="button" aria-label="Close plan and return to list">×</button></header> <!> <!> <!></article>`);function Zd(e,t){Qe(t,!0);let n=P(()=>Fd(t.preview.source)),r=P(()=>G(n).metadata.filter(([e])=>e!==`TITLE`));var i=Xd(),a=z(i),o=z(a),s=z(o),c=z(s,!0);N(s);var l=V(s,2),u=z(l,!0);N(l),N(o);var d=V(o,2);N(a);var f=V(a,2),p=e=>{var t=Rd();Z(t,21,()=>G(r),([e,t])=>`${e}:${t}`,(e,t)=>{var n=P(()=>C(G(t),2));let r=()=>G(n)[0],i=()=>G(n)[1];var a=Ld(),o=z(a),s=z(o,!0);N(o);var c=V(o,2),l=z(c,!0);N(c),N(a),H(()=>{Y(s,r()),Y(l,i()||`—`)}),J(e,a)}),N(t),J(e,t)};X(f,e=>{G(r).length&&e(p)});var m=V(f,2);Z(m,19,()=>G(n).preamble,(e,t)=>`preamble:${t}:${e}`,(e,t)=>{var n=Hr(),r=B(n),i=e=>{var n=zd(),r=z(n,!0);N(n),H(()=>Y(r,G(t))),J(e,n)},a=P(()=>G(t).trim());X(r,e=>{G(a)&&e(i)}),J(e,n)});var h=V(m,2),g=e=>{J(e,Bd())},_=e=>{var t=Yd();Z(t,23,()=>G(n).sections,(e,t)=>`${t}:${e.level}:${e.title}`,(e,t)=>{var n=Jd();let r;var i=z(n),a=z(i),o=e=>{var n=Vd(),r=z(n,!0);N(n),H(()=>Y(r,G(t).title)),J(e,n)},s=e=>{var n=Hd(),r=z(n,!0);N(n),H(()=>Y(r,G(t).title)),J(e,n)};X(a,e=>{G(t).level===1?e(o):e(s,-1)});var c=V(a,2),l=e=>{var n=Ud(),r=z(n,!0);N(n),H(e=>{gi(n,1,e,`svelte-h7gaqo`),Y(r,G(t).state)},[()=>`state state-${G(t).state.toLowerCase()}`]),J(e,n)};X(c,e=>{G(t).state&&e(l)});var u=V(c,2),d=e=>{var n=Wd(),r=z(n);N(n),H(()=>Y(r,`Priority ${G(t).priority??``}`)),J(e,n)};X(u,e=>{G(t).priority&&e(d)}),N(i);var f=V(i,2),p=e=>{var n=Gd();Z(n,21,()=>G(t).descriptions,([e,t])=>`${e}:${t}`,(e,t)=>{var n=P(()=>C(G(t),2));let r=()=>G(n)[0],i=()=>G(n)[1];var a=Ld(),o=z(a),s=z(o,!0);N(o);var c=V(o,2),l=z(c,!0);N(c),N(a),H(()=>{Y(s,r()),Y(l,i()||`—`)}),J(e,a)}),N(n),J(e,n)};X(f,e=>{G(t).descriptions.length&&e(p)});var m=V(f,2);Z(m,19,()=>G(t).body,(e,t)=>`${t}:${e}`,(e,t)=>{var n=Hr(),r=B(n),i=e=>{var n=Kd();let r;var i=z(n,!0);N(n),H(e=>{r=gi(n,1,`svelte-h7gaqo`,null,r,e),Y(i,G(t))},[()=>({"list-item":G(t).trimStart().startsWith(`- `)})]),J(e,n)},a=P(()=>G(t).trim());X(r,e=>{G(a)&&e(i)}),J(e,n)});var h=V(m,2),g=e=>{var n=qd(),r=V(z(n),2);Z(r,21,()=>G(t).properties,([e,t])=>`${e}:${t}`,(e,t)=>{var n=P(()=>C(G(t),2));let r=()=>G(n)[0],i=()=>G(n)[1];var a=Ld(),o=z(a),s=z(o,!0);N(o);var c=V(o,2),l=z(c,!0);N(c),N(a),H(()=>{Y(s,r()),Y(l,i()||`—`)}),J(e,a)}),N(r),N(n),J(e,n)};X(h,e=>{G(t).properties.length&&e(g)}),N(n),H(e=>r=vi(n,``,r,e),[()=>({"--org-depth":Math.max(0,G(t).level-1)})]),J(e,n)}),N(t),J(e,t)};X(h,e=>{G(n).sections.length===0?e(g):e(_,-1)}),N(i),H(()=>{Y(c,t.preview.title),Y(u,t.preview.planName)}),K(`click`,d,function(...e){t.onclose?.apply(this,e)}),J(e,i),$e()}Pr([`click`]);var Qd=q(`<span> </span>`),$d=q(`<span> </span> <!>`,1),ef=q(`<span>Org document</span>`),tf=q(`<li><button class="svelte-x2ko9l"><strong> </strong> <code class="svelte-x2ko9l"> </code> <!></button></li>`),nf=q(`<p>Select a workspace to browse its local plans.</p>`),rf=q(`<p>Loading workspace plans…</p>`),af=q(`<p> </p>`),of=q(`<p>No Org files were found below this workspace.</p>`),sf=q(`<ul aria-label="Unfinished plans" class="svelte-x2ko9l"></ul>`),cf=q(`<section class="completed svelte-x2ko9l" aria-labelledby="completed-plans-title"><h3 id="completed-plans-title" class="svelte-x2ko9l">Completed</h3> <ul class="svelte-x2ko9l"></ul></section>`),lf=q(`<p class="scope svelte-x2ko9l">Org files below the selected workspace.</p> <!> <!>`,1),uf=q(`<section class="plans svelte-x2ko9l" aria-labelledby="plans-title"><h2 id="plans-title" tabindex="-1" class="svelte-x2ko9l">Plans</h2> <!></section>`);function df(e,t){Qe(t,!0);let n=(e,t=b)=>{var n=tf(),r=z(n),a=z(r),o=z(a,!0);N(a);var s=V(a,2),c=z(s,!0);N(s);var l=V(s,2),u=e=>{var n=$d(),r=B(n),i=z(r);N(r);var a=V(r,2),o=e=>{var n=Qd(),r=z(n,!0);N(n),H(()=>Y(r,t().subtitle)),J(e,n)};X(a,e=>{t().subtitle&&e(o)}),H(()=>Y(i,`${t().doneSteps??``} / ${t().totalSteps??``} complete`)),J(e,n)},f=e=>{J(e,ef())};X(l,e=>{t().previewAvailable===!1?e(f,-1):e(u)}),N(r),Li(r,e=>i[t().planName]=e,()=>i?.[t().planName]),N(n),H(()=>{Y(o,t().title),Y(c,t().planName)}),K(`click`,r,()=>d(t().planName)),J(e,n)},r=I(null),i=R({}),a=I(null),o=!1,s=!1,c=P(()=>t.catalog.kind===`ready`?t.catalog.entries.filter(e=>e.allDone!==!0):[]),l=P(()=>t.catalog.kind===`ready`?t.catalog.entries.filter(e=>e.allDone===!0):[]);function u(){t.onclose()}function d(e){L(a,e,!0),t.onopen(e)}Mn(()=>{if(t.state){o=!0;return}if(o&&(o=!1,s=!0),!s)return;let e=t.catalog.kind,n=G(a);queueMicrotask(()=>{let t=n?i[n]:void 0;t?.isConnected?(t.focus(),s=!1):e!==`loading`&&(G(r)?.focus(),s=!1)})});var f=Hr(),p=B(f),m=e=>{Zd(e,{get preview(){return t.state},onclose:u})},h=e=>{Ad(e,{get state(){return t.state},onclose:u})},g=e=>{var i=uf(),a=z(i);Li(a,e=>L(r,e),()=>G(r));var o=V(a,2),s=e=>{J(e,nf())},u=e=>{J(e,rf())},d=e=>{var n=af(),r=z(n,!0);N(n),H(()=>Y(r,t.catalog.error)),J(e,n)},f=e=>{J(e,of())},p=e=>{var t=lf(),r=V(B(t),2),i=e=>{var t=sf();Z(t,21,()=>G(c),e=>e.planName,(e,t)=>{n(e,()=>G(t))}),N(t),J(e,t)};X(r,e=>{G(c).length>0&&e(i)});var a=V(r,2),o=e=>{var t=cf(),r=V(z(t),2);Z(r,21,()=>G(l),e=>e.planName,(e,t)=>{n(e,()=>G(t))}),N(r),N(t),J(e,t)};X(a,e=>{G(l).length>0&&e(o)}),J(e,t)};X(o,e=>{t.catalog.kind===`no-workspace`?e(s):t.catalog.kind===`loading`?e(u,1):t.catalog.kind===`error`?e(d,2):t.catalog.entries.length===0?e(f,3):e(p,-1)}),N(i),J(e,i)};X(p,e=>{t.state?.kind===`org-source`?e(m):t.state?e(h,1):e(g,-1)}),J(e,f),$e()}Pr([`click`]);var ff=`settings`,pf=`drafts`,mf=`cursors`,hf=`selected-session`,gf={text:``,revision:0},_f=e=>{if(!e||typeof e!=`object`)return!1;let t=e,n=t.pending;return typeof t.text==`string`&&Number.isSafeInteger(t.revision)&&t.revision>=0&&(n===void 0||Array.isArray(n)&&n.every(e=>!!e&&typeof e.operationId==`string`&&typeof e.text==`string`&&Number.isSafeInteger(e.revision)&&e.revision>=0&&(e.kind===`send`||e.kind===`queue`||e.kind===`interrupt-send`)))};function vf(e=globalThis.indexedDB){if(!e)return yf;let t=Rc(e),n=new Map,r=new Map,i=async(e,i)=>{let a=r.get(e);if(a&&a.revision>i.revision)return;r.set(e,i);let o=(n.get(e)??Promise.resolve()).catch(()=>void 0).then(async()=>{if(r.get(e)===i)try{await Bc(await t,pf,e,i)}catch{}});n.set(e,o),await o};return{async readSelectedSession(){try{return await zc(await t,ff,hf)??null}catch{return null}},async saveSelectedSession(e){try{let n=await t;e?await Bc(n,ff,hf,e):await Vc(n,ff,hf)}catch{}},async readDraft(e){return(await this.readDraftEnvelope(e)).text},async saveDraft(e,t){let n=await this.readDraftEnvelope(e);await i(e,{text:t,revision:n.revision+1})},async readDraftEnvelope(e){try{let n=await zc(await t,pf,e),i=_f(n)?n:typeof n==`string`?{text:n,revision:0}:gf,a=r.get(e);return a&&a.revision>=i.revision?a:(r.set(e,i),i)}catch{return r.get(e)??gf}},saveDraftEnvelope:i,replaceDraftText:async(e,t,n)=>{let a=r.get(e);await i(e,{text:t,revision:n,pending:a?.pending})},addPendingDraftOperation:async(e,t)=>{let n=r.get(e)??gf;await i(e,{...n,pending:[...(n.pending??[]).filter(e=>e.operationId!==t.operationId),t].slice(-8)})},consumeAcceptedDraft:async(e,i,a)=>{let o=n.get(e)??Promise.resolve(),s=null,c=o.catch(()=>void 0).then(async()=>{let n=r.get(e);if(!n)try{let r=await zc(await t,pf,e);n=_f(r)?r:typeof r==`string`?{text:r,revision:0}:gf}catch{n=gf}if(!(n.revision!==i||!n.pending?.some(e=>e.operationId===a))){s={text:``,revision:n.revision+1,pending:n.pending.filter(e=>e.operationId!==a)},r.set(e,s);try{await Bc(await t,pf,e,s)}catch{r.get(e)===s&&r.set(e,n),s=null}}});return n.set(e,c),await c,s},async readCursor(e){try{let n=await zc(await t,mf,e);return typeof n==`number`&&Number.isSafeInteger(n)&&n>=0?n:0}catch{return 0}},async saveCursor(e,n){try{await Bc(await t,mf,e,n)}catch{}}}}var yf={readSelectedSession:async()=>null,saveSelectedSession:async()=>{},readDraft:async()=>``,saveDraft:async()=>{},readDraftEnvelope:async()=>gf,saveDraftEnvelope:async()=>{},replaceDraftText:async()=>{},addPendingDraftOperation:async()=>{},consumeAcceptedDraft:async()=>null,readCursor:async()=>0,saveCursor:async()=>{}};function bf(e,t=Date.now()){if(e===null)return`Unknown activity time`;let n=Math.max(0,t-e),r=Math.floor(n/(3600*1e3));if(r<1)return`Less than an hour ago`;if(r<24)return`${r} hour${r===1?``:`s`} ago`;let i=Math.floor(r/24);return`${i} day${i===1?``:`s`} ago`}function xf(e){let t=e.updatedAt?Date.parse(e.updatedAt):NaN;return{threadId:e.threadId??null,workspacePath:e.workspacePath??`Workspace unavailable`,updatedAt:Number.isFinite(t)?t:null}}function Sf(e,t){if(!t?.threadId||!t.workspacePath||!t.resumeCommand||e.some(e=>e.id===t.threadId&&(e.provider??`codex`)===(t.provider??`codex`)))return e;let n=t.updatedAt?Date.parse(t.updatedAt)/1e3:NaN,r={id:t.threadId,cwd:t.workspacePath,recencyAt:Number.isFinite(n)?n:null,resumeCommand:t.resumeCommand,...t.provider===void 0?{}:{provider:t.provider},...t.model===void 0?{}:{model:t.model},...t.effectiveSkillSelection?.selectedProfileName===void 0?{}:{skillProfile:t.effectiveSkillSelection.selectedProfileName},...t.lastOrgPlan===void 0?{}:{orgPlanFilename:t.lastOrgPlan.filename}};return[...e,r].sort((e,t)=>(t.recencyAt??-1/0)-(e.recencyAt??-1/0))}function Cf(e){let t=/^\/home\/[^/]+/.exec(e)?.[0];if(!t)return e;let n=e.slice(t.length);return n?`~${n}`:`~/`}function wf(e,t){let n=Date.parse(e);if(!Number.isFinite(n))return`Updated recently`;let r=Math.max(0,Math.floor((t-n)/1e3));return r<5?`Updated just now`:r<60?`Updated ${r}s ago`:`Updated ${Math.floor(r/60)}m ago`}var Tf=q(`<time class="svelte-2szxr9"> </time>`),Ef=q(`<span role="status"><span aria-hidden="true" class="dot svelte-2szxr9"></span> <span class="svelte-2szxr9"> </span> <!></span>`);function Df(e,t){Qe(t,!0);let n=$(t,`connected`,3,!0),r=P(()=>n()?t.autopilot?.state??`unknown`:`disconnected`),i=P(()=>!!t.autopilot?.health?.healthy),a=I(R(Date.now())),o=I(R(typeof document>`u`||document.visibilityState!==`hidden`)),s=P(()=>G(r)===`disconnected`?`Autopilot disconnected`:G(r)===`attentionRequired`?`Autopilot needs attention`:G(r)===`safetyPaused`?`Autopilot safety paused`:G(i)?`Autopilot continuation active`:`Autopilot continuation inactive`);function c(){L(o,document.visibilityState!==`hidden`),G(o)&&L(a,Date.now(),!0)}Mn(()=>{if(!G(i)||!G(o))return;let e=window.setInterval(()=>L(a,Date.now(),!0),1e3);return()=>window.clearInterval(e)});var l=Ef();Nr(`visibilitychange`,un,c);let u;var d=V(z(l),2),f=z(d,!0);N(d);var p=V(d,2),m=e=>{var n=Tf(),r=z(n,!0);N(n),H(e=>{Q(n,`datetime`,t.autopilot.updatedAt),Y(r,e)},[()=>wf(t.autopilot.updatedAt,G(a))]),J(e,n)};X(p,e=>{t.autopilot&&G(i)&&e(m)}),N(l),H(()=>{u=gi(l,1,`liveness svelte-2szxr9`,null,u,{active:G(i)}),Q(l,`data-state`,G(r)),Q(l,`aria-label`,G(s)),Y(f,G(s))}),J(e,l),$e()}var Of=q(`<details class="session-verdict svelte-hxb22h"><summary class="svelte-hxb22h"><span aria-hidden="true"></span> </summary> <p class="svelte-hxb22h"> </p></details>`),kf=q(`<time class="svelte-hxb22h"> </time>`),Af=q(`<div class="svelte-hxb22h"> </div>`),jf=q(`<span class="profile-badge svelte-hxb22h"> </span>`),Mf=q(`<span class="profile-badge svelte-hxb22h">Kimi</span>`),Nf=q(`<span class="org-plan-metadata svelte-hxb22h"><span class="org-plan-title svelte-hxb22h"> </span> <span class="org-plan-filename svelte-hxb22h"> </span></span>`),Pf=q(`<div class="session-plan-progress svelte-hxb22h"><!></div>`),Ff=q(`<li><div class="session-actions svelte-hxb22h" aria-label="Session actions"><!> <!> <!> <!> <!> <!></div> <div class="session-details svelte-hxb22h"><div class="session-summary svelte-hxb22h"><!> <!> <div class="workspace-path svelte-hxb22h"> </div> <!> <!> <!> <!> <!> <!></div> <!> <!></div></li>`),If=q(`<section aria-labelledby="open-sessions-title" class="svelte-hxb22h"><h3 id="open-sessions-title" class="svelte-hxb22h">Open sessions</h3> <ul class="session-list svelte-hxb22h" aria-label="Open sessions"></ul></section>`),Lf=q(`<li class="managed-session svelte-hxb22h"><div class="session-actions svelte-hxb22h"><!> <!> <!></div> <div class="session-details svelte-hxb22h"><!> <div class="workspace-path svelte-hxb22h"> </div> <!> <!> <!> <!></div></li>`),Rf=q(`<ul class="session-list svelte-hxb22h" aria-label="Saved sessions"></ul>`),zf=q(`<p class="svelte-hxb22h">No saved sessions yet.</p>`),Bf=q(`<label for="sandbox" class="svelte-hxb22h">Sandbox</label> <label for="approval-policy" class="svelte-hxb22h">Approval policy</label>`,1),Vf=q(`<option class="svelte-hxb22h"> </option>`),Hf=q(`<select id="sandbox" class="svelte-hxb22h"><option class="svelte-hxb22h">workspace-git (Git writable)</option><option class="svelte-hxb22h">workspace-write</option><option class="svelte-hxb22h">read-only</option><option class="svelte-hxb22h">danger-full-access</option></select> <select id="approval-policy" aria-describedby="approval-policy-help" class="svelte-hxb22h"><option class="svelte-hxb22h">Ask on all commands</option><option class="svelte-hxb22h">Ask out of workspace</option><option class="svelte-hxb22h">Approve everything</option></select>`,1),Uf=q(`<p id="approval-policy-help" class="svelte-hxb22h"> </p>`),Wf=q(`<p class="skills-profile-error svelte-hxb22h" role="alert"> </p>`),Gf=q(`<option class="svelte-hxb22h">Loading models…</option>`),Kf=q(`<option class="svelte-hxb22h">Choose automatically</option>`),qf=q(`<p id="provider-availability" class="provider-availability svelte-hxb22h">Kimi is unavailable because its CLI was not found when the relay started.</p>`),Jf=q(`<li class="recent-session svelte-hxb22h"><div class="session-details svelte-hxb22h"><!> <div class="workspace-path svelte-hxb22h"> </div> <!> <!> <!> <!></div> <div class="session-actions svelte-hxb22h"><!> <!></div></li>`),Yf=q(`<ul class="session-list recent-session-list svelte-hxb22h" aria-label="Recent sessions"></ul>`),Xf=q(`<p class="svelte-hxb22h">No other recent sessions found.</p>`),Zf=q(`<section aria-labelledby="sessions-title" class="svelte-hxb22h"><h2 id="sessions-title" class="visually-hidden svelte-hxb22h">Sessions</h2> <!> <!> <form class="svelte-hxb22h"><section class="session-base svelte-hxb22h" aria-labelledby="session-base-title"><div class="session-base-heading svelte-hxb22h"><h3 id="session-base-title" class="svelte-hxb22h">Session base</h3> <p class="svelte-hxb22h"> </p></div> <!></section> <section class="session-settings svelte-hxb22h" aria-label="New session settings"><div class="session-setting-labels svelte-hxb22h"><label for="skills-profile" class="svelte-hxb22h">Skills profile</label> <!></div> <div class="session-setting-controls svelte-hxb22h"><select id="skills-profile" class="svelte-hxb22h"><option class="svelte-hxb22h">Default</option><!></select> <!></div> <!> <!> <div class="session-secondary-actions svelte-hxb22h"><!> <div class="model-control svelte-hxb22h"><label for="session-provider" class="svelte-hxb22h">Provider</label> <select id="session-provider" class="svelte-hxb22h"><option class="svelte-hxb22h">Codex</option><option class="svelte-hxb22h"> </option></select></div> <div class="model-control svelte-hxb22h"><label for="model" class="svelte-hxb22h"> </label> <select id="model" class="svelte-hxb22h"><!><!></select></div> <!></div> <!></section></form> <section aria-labelledby="recent-sessions-title" class="svelte-hxb22h"><h3 id="recent-sessions-title" class="svelte-hxb22h">Recent sessions</h3> <!></section></section>`);function Qf(e,t){Qe(t,!0);let n=$(t,`activitySnapshots`,19,()=>new Map),r=$(t,`autopilotSnapshots`,19,()=>new Map),i=$(t,`autopilotPending`,19,()=>new Set),a=$(t,`autopilotAttention`,19,()=>new Map),o=$(t,`models`,19,()=>[]),s=$(t,`selectedModel`,3,``),c=$(t,`provider`,3,`codex`),l=$(t,`kimiAvailable`,3,!1),u=$(t,`modelsLoading`,3,!1),d=$(t,`onmodelchange`,3,()=>{}),f=$(t,`onproviderchange`,3,()=>{}),p=$(t,`onautopilottoggle`,3,()=>{}),m=$(t,`onactivityopen`,3,()=>{}),h=$(t,`onautopilotresolve`,3,()=>{}),g=P(()=>t.sessions.filter(e=>e.state===`ready`||e.state===`turnActive`)),_=P(()=>t.sessions.filter(e=>e.state!==`ready`&&e.state!==`turnActive`)),v=P(()=>t.recentSessions.filter(e=>!G(g).some(t=>t.threadId===e.id&&(t.provider??`codex`)===(e.provider??`codex`)))),y=P(()=>fu(t.workspaceTree,t.workspaceId)),b=P(()=>c()===`kimi`?`Kimi`:`Codex`);var x=Zf(),S=V(z(x),2),C=e=>{var s=If(),c=V(z(s),2);Z(c,21,()=>G(g),e=>e.id,(e,s)=>{let c=P(()=>xf(G(s))),l=P(()=>Vl(G(s).sessionStatus)?G(s).sessionStatus:null);var u=Ff();let d;var f=z(u),g=z(f);{let e=P(()=>G(s).id===t.selectedSessionId?`page`:void 0);Ta(g,{compact:!0,full:!0,get current(){return G(e)},onclick:()=>t.onselectopen(G(s).id),children:(e,t)=>{He(),J(e,Vr(`Open`))},$$slots:{default:!0}})}var _=V(g,2),v=e=>{Ta(e,{compact:!0,full:!0,onclick:()=>t.oncopyresume(G(s).resumeCommand),children:(e,t)=>{He(),J(e,Vr(`Copy`))},$$slots:{default:!0}})};X(_,e=>{G(s).resumeCommand&&G(s).provider!==`kimi`&&e(v)});var y=V(_,2),b=e=>{{let t=P(()=>r().get(G(s).id)??G(s).autopilot??null),n=P(()=>`session-autopilot-${G(s).id}`),a=P(()=>i().has(G(s).id));no(e,{compact:!0,indicatorOnly:!0,get autopilot(){return G(t)},get controlId(){return G(n)},get pending(){return G(a)},ontoggle:e=>p()(G(s).id,e)})}};X(y,e=>{G(s).provider!==`kimi`&&e(b)});var x=V(y,2);{let e=P(()=>n().get(G(s).id)??G(s).agentActivity??null),t=P(()=>G(s).model??o()?.[0]);La(x,{compact:!0,get activity(){return G(e)},popupAlign:`start`,get rootModel(){return G(t)},get plan(){return G(s).plan},onopen:()=>m()(G(s).id)})}var S=V(x,2);Ta(S,{compact:!0,full:!0,onclick:()=>t.onclose(G(s).id),children:(e,t)=>{He(),J(e,Vr(`Close`))},$$slots:{default:!0}});var C=V(S,2),w=e=>{{let t=P(()=>r().get(G(s).id)??G(s).autopilot??null),i=P(()=>(n().get(G(s).id)??G(s).agentActivity)?.root.state!==`disconnected`);Df(e,{get autopilot(){return G(t)},get connected(){return G(i)}})}};X(C,e=>{G(s).provider!==`kimi`&&e(w)}),N(f);var T=V(f,2),E=z(T),D=z(E),ee=e=>{var t=Of(),n=z(t),r=z(n);let i;var a=V(r);N(n);var o=V(n,2),s=z(o);N(o),N(t),H(()=>{Q(t,`data-state`,G(l).state),Q(t,`aria-label`,`${G(l).state===`working`?`Working`:`Idle`}: ${G(l).reason}`),Q(n,`aria-label`,`${G(l).state===`working`?`Working`:`Idle`}: ${G(l).reason}`),i=gi(r,1,`verdict-dot svelte-hxb22h`,null,i,{live:G(l).state===`working`&&G(l).confidence===`fresh`}),Y(a,` ${G(l).state===`working`?`Working`:`Idle`}`),Y(s,`${G(l).reason??``}. ${G(l).nextExpectedAction??``}
|
|
26
|
+
Evidence confidence: ${G(l).confidence??``}.`)}),J(e,t)};X(D,e=>{G(l)&&e(ee)});var te=V(D,2),ne=e=>{var t=kf(),n=z(t,!0);N(t),H((e,r)=>{Q(t,`datetime`,e),Y(n,r)},[()=>new Date(G(c).updatedAt).toISOString(),()=>bf(G(c).updatedAt)]),J(e,t)},re=e=>{var t=Af(),n=z(t,!0);N(t),H(e=>Y(n,e),[()=>bf(null)]),J(e,t)};X(te,e=>{G(c).updatedAt===null?e(re,-1):e(ne)});var ie=V(te,2),O=z(ie,!0);N(ie);var k=V(ie,2),ae=e=>{var t=jf(),n=z(t);N(t),H(()=>Y(n,`Model: ${G(s).model??``}`)),J(e,t)};X(k,e=>{G(s).model&&e(ae)});var A=V(k,2),oe=e=>{J(e,Mf())};X(A,e=>{G(s).provider===`kimi`&&e(oe)});var se=V(A,2),ce=e=>{var t=jf(),n=z(t);N(t),H(()=>Y(n,`Branch: ${G(s).branch??``}`)),J(e,t)};X(se,e=>{G(s).branch&&e(ce)});var le=V(se,2),ue=e=>{var t=jf(),n=z(t);N(t),H(()=>Y(n,`Skills profile: ${G(s).effectiveSkillSelection.selectedProfileName??``}`)),J(e,t)};X(le,e=>{G(s).effectiveSkillSelection?.selectedProfileName&&e(ue)});var de=V(le,2),fe=e=>{var t=Nf(),n=z(t),r=z(n,!0);N(n);var i=V(n,2),a=z(i,!0);N(i),N(t),H(()=>{Y(r,G(s).lastOrgPlan.title),Y(a,G(s).lastOrgPlan.filename)}),J(e,t)};X(de,e=>{G(s).lastOrgPlan&&e(fe)});var pe=V(de,2),me=e=>{var t=Pf(),n=z(t);{let e=P(()=>`Plan progress for ${G(s).plan.title}`);fd(n,{compact:!0,get plan(){return G(s).plan},get label(){return G(e)}})}N(t),J(e,t)};X(pe,e=>{G(s).plan&&e(me)}),N(E);var he=V(E,2);{let e=P(()=>a().get(G(s).id)??null),t=P(()=>`session-attention-${G(s).id}`),n=P(()=>i().has(G(s).id));io(he,{get attention(){return G(e)},get controlId(){return G(t)},get pending(){return G(n)},onresolve:(e,t)=>h()(G(s).id,e,t)})}var ge=V(he,2);{let e=P(()=>r().get(G(s).id)??G(s).autopilot??null),t=P(()=>a().get(G(s).id)??null),n=P(()=>`session-autopilot-safety-${G(s).id}`),o=P(()=>i().has(G(s).id));oo(ge,{get autopilot(){return G(e)},get attention(){return G(t)},get controlId(){return G(n)},get pending(){return G(o)},onrecover:()=>p()(G(s).id,!0),ondisable:()=>p()(G(s).id,!1)})}N(T),N(u),H(e=>{d=gi(u,1,`managed-session open-session svelte-hxb22h`,null,d,{"current-session":G(s).id===t.selectedSessionId}),Y(O,e)},[()=>Cf(G(c).workspacePath)]),J(e,u)}),N(c),N(s),J(e,s)};X(S,e=>{G(g).length&&e(C)});var w=V(S,2),T=e=>{var n=Rf();Z(n,21,()=>G(_),e=>e.id,(e,n)=>{let r=P(()=>xf(G(n)));var i=Lf(),a=z(i),o=z(a);{let e=P(()=>t.openingSessionId===G(n).id);Ta(o,{compact:!0,full:!0,get disabled(){return G(e)},onclick:()=>t.onopen(G(n).id),children:(e,r)=>{He();var i=Vr();H(()=>Y(i,t.openingSessionId===G(n).id?`Opening…`:`Open`)),J(e,i)},$$slots:{default:!0}})}var s=V(o,2),c=e=>{Ta(e,{compact:!0,full:!0,onclick:()=>t.oncopyresume(G(n).resumeCommand),children:(e,t)=>{He(),J(e,Vr(`Copy`))},$$slots:{default:!0}})};X(s,e=>{G(n).resumeCommand&&G(n).provider!==`kimi`&&e(c)}),Ta(V(s,2),{compact:!0,full:!0,onclick:()=>t.onforget(G(n).id),children:(e,t)=>{He(),J(e,Vr(`Forget`))},$$slots:{default:!0}}),N(a);var l=V(a,2),u=z(l),d=e=>{var t=kf(),n=z(t,!0);N(t),H((e,r)=>{Q(t,`datetime`,e),Y(n,r)},[()=>new Date(G(r).updatedAt).toISOString(),()=>bf(G(r).updatedAt)]),J(e,t)},f=e=>{var t=Af(),n=z(t,!0);N(t),H(e=>Y(n,e),[()=>bf(null)]),J(e,t)};X(u,e=>{G(r).updatedAt===null?e(f,-1):e(d)});var p=V(u,2),m=z(p,!0);N(p);var h=V(p,2),g=e=>{var t=jf(),r=z(t);N(t),H(()=>Y(r,`Model: ${G(n).model??``}`)),J(e,t)};X(h,e=>{G(n).model&&e(g)});var _=V(h,2),v=e=>{J(e,Mf())};X(_,e=>{G(n).provider===`kimi`&&e(v)});var y=V(_,2),b=e=>{var t=jf(),r=z(t);N(t),H(()=>Y(r,`Branch: ${G(n).branch??``}`)),J(e,t)};X(y,e=>{G(n).branch&&e(b)});var x=V(y,2),S=e=>{var t=jf(),r=z(t);N(t),H(()=>Y(r,`Skills profile: ${G(n).effectiveSkillSelection.selectedProfileName??``}`)),J(e,t)};X(x,e=>{G(n).effectiveSkillSelection?.selectedProfileName&&e(S)}),N(l),N(i),H(e=>Y(m,e),[()=>Cf(G(r).workspacePath)]),J(e,i)}),N(n),J(e,n)},E=e=>{J(e,zf())};X(w,e=>{G(_).length?e(T):G(g).length||e(E,1)});var D=V(w,2),ee=z(D),te=z(ee),ne=V(z(te),2),re=z(ne);N(ne),N(te);var ie=V(te,2);{let e=P(()=>G(y)?.id??null);bu(ie,{get roots(){return t.workspaceTree},get expandedIds(){return t.expandedIds},get selectedId(){return G(e)},get isSelectable(){return su.sessionBase},label:`Session base`,get onexpandedchange(){return t.onexpandedchange},onselect:e=>t.onworkspacechange(e.id)})}N(ee);var O=V(ee,2),k=z(O);let ae;var A=V(z(k),2),oe=e=>{var t=Bf();He(2),J(e,t)};X(A,e=>{c()!==`kimi`&&e(oe)}),N(k);var se=V(k,2);let ce;var le=z(se),ue=z(le);ue.value=ue.__value=``,Z(V(ue),17,()=>t.skillProfiles,e=>e.name,(e,t)=>{var n=Vf(),r=z(n,!0);N(n);var i={};H(()=>{Y(r,G(t).name),i!==(i=G(t).name)&&(n.value=(n.__value=G(t).name)??``)}),J(e,n)}),N(le);var de;bi(le);var fe=V(le,2),pe=e=>{var n=Hf(),r=B(n),i=z(r);i.value=i.__value=`workspace-git`;var a=V(i);a.value=a.__value=`workspace-write`;var o=V(a);o.value=o.__value=`read-only`;var s=V(o);s.value=s.__value=`danger-full-access`,N(r);var c;bi(r);var l=V(r,2),u=z(l);u.value=u.__value=`untrusted`;var d=V(u);d.value=d.__value=`on-request`;var f=V(d);f.value=f.__value=`never`,N(l);var p;bi(l),H(()=>{c!==(c=t.sandbox)&&(r.value=(r.__value=t.sandbox)??``,yi(r,t.sandbox)),p!==(p=t.approvalPolicy)&&(l.value=(l.__value=t.approvalPolicy)??``,yi(l,t.approvalPolicy))}),K(`change`,r,e=>t.onsandboxchange(e.currentTarget.value)),K(`change`,l,e=>t.onapprovalpolicychange(e.currentTarget.value)),J(e,n)};X(fe,e=>{c()!==`kimi`&&e(pe)}),N(se);var me=V(se,2),he=e=>{var t=Uf(),n=z(t);N(t),H(()=>Y(n,`This controls when ${G(b)??``} asks; it does not expand the sandbox's technical permissions.`)),J(e,t)};X(me,e=>{c()!==`kimi`&&e(he)});var ge=V(me,2),_e=e=>{var n=Wf(),r=z(n,!0);N(n),H(()=>Y(r,t.skillProfileError)),J(e,n)};X(ge,e=>{t.skillProfileError&&e(_e)});var ve=V(ge,2),ye=z(ve);Ta(ye,{id:`manage-skill-profiles`,onclick:e=>t.onmanageprofiles(e.currentTarget),children:(e,t)=>{He(),J(e,Vr(`Manage skill profiles`))},$$slots:{default:!0}});var be=V(ye,2),xe=V(z(be),2),Se=z(xe);Se.value=Se.__value=`codex`;var Ce=V(Se),we=z(Ce);N(Ce),Ce.value=Ce.__value=`kimi`,N(xe);var Te;bi(xe),N(be);var Ee=V(be,2),De=z(Ee),Oe=z(De);N(De);var ke=V(De,2),Ae=z(ke),je=e=>{var t=Gf();t.value=t.__value=``,J(e,t)},Me=e=>{var t=Kf();t.value=t.__value=``,J(e,t)};X(Ae,e=>{u()?e(je):o().length===0&&e(Me,1)}),Z(V(Ae),16,o,e=>e,(e,t)=>{var n=Vf(),r=z(n,!0);N(n);var i={};H(()=>{Y(r,t),i!==(i=t)&&(n.value=(n.__value=t)??``)}),J(e,n)}),N(ke);var Ne;bi(ke),N(Ee);var Pe=V(Ee,2);{let e=P(()=>!G(y)||t.startingSession||u()||o().length>0&&!s());Ta(Pe,{class:`new-session-button`,type:`submit`,primary:!0,get disabled(){return G(e)},children:(e,n)=>{He();var r=Vr();H(()=>Y(r,t.startingSession?`Creating…`:`Create session`)),J(e,r)},$$slots:{default:!0}})}N(ve);var Fe=V(ve,2),Ie=e=>{J(e,qf())};X(Fe,e=>{l()||e(Ie)}),N(O),N(D);var Le=V(D,2),Re=V(z(Le),2),j=e=>{var n=Yf();Z(n,21,()=>G(v),e=>(e.provider??`codex`)+`:`+e.id,(e,n)=>{var r=Jf(),i=z(r),a=z(i),o=e=>{var t=kf(),r=z(t,!0);N(t),H((e,n)=>{Q(t,`datetime`,e),Y(r,n)},[()=>new Date(G(n).recencyAt*1e3).toISOString(),()=>bf(G(n).recencyAt*1e3)]),J(e,t)},s=e=>{var t=Af(),n=z(t,!0);N(t),H(e=>Y(n,e),[()=>bf(null)]),J(e,t)};X(a,e=>{G(n).recencyAt===null?e(s,-1):e(o)});var c=V(a,2),l=z(c,!0);N(c);var u=V(c,2),d=e=>{var t=jf(),r=z(t);N(t),H(()=>Y(r,`Model: ${G(n).model??``}`)),J(e,t)};X(u,e=>{G(n).model&&e(d)});var f=V(u,2),p=e=>{J(e,Mf())};X(f,e=>{G(n).provider===`kimi`&&e(p)});var m=V(f,2),h=e=>{var t=jf(),r=z(t);N(t),H(()=>Y(r,`Skills profile: ${G(n).skillProfile??``}`)),J(e,t)};X(m,e=>{G(n).skillProfile&&e(h)});var g=V(m,2),_=e=>{var t=jf(),r=z(t);N(t),H(()=>Y(r,`Org plan: ${G(n).orgPlanFilename??``}`)),J(e,t)};X(g,e=>{G(n).orgPlanFilename&&e(_)}),N(i);var v=V(i,2),y=z(v);Ta(y,{onclick:()=>t.onopenrecent(G(n)),children:(e,t)=>{He(),J(e,Vr(`Open`))},$$slots:{default:!0}});var b=V(y,2),x=e=>{Ta(e,{onclick:()=>t.oncopyresume(G(n).resumeCommand),children:(e,t)=>{He(),J(e,Vr(`Copy`))},$$slots:{default:!0}})};X(b,e=>{G(n).resumeCommand&&e(x)}),N(v),N(r),H(e=>Y(l,e),[()=>Cf(G(n).cwd)]),J(e,r)}),N(n),J(e,n)},ze=e=>{J(e,Xf())};X(Re,e=>{G(v).length?e(j):e(ze,-1)}),N(Le),N(x),H(()=>{Y(re,`Select the folder or repository ${G(b)??``} should use as its working directory.`),ae=vi(k,``,ae,{"grid-template-columns":c()===`kimi`?`minmax(0, 1fr)`:`repeat(3, minmax(0, 1fr))`}),ce=vi(se,``,ce,{"grid-template-columns":c()===`kimi`?`minmax(0, 1fr)`:`repeat(3, minmax(0, 1fr))`}),de!==(de=t.selectedSkillProfile)&&(le.value=(le.__value=t.selectedSkillProfile)??``,yi(le,t.selectedSkillProfile)),Q(xe,`aria-describedby`,l()?void 0:`provider-availability`),Ce.disabled=!l(),Y(we,`Kimi${l()?``:` (unavailable)`}`),Te!==(Te=c())&&(xe.value=(xe.__value=c())??``,yi(xe,c())),Y(Oe,`${G(b)??``} model`),ke.disabled=u()||o().length===0,Ne!==(Ne=s())&&(ke.value=(ke.__value=s())??``,yi(ke,s()))}),Nr(`submit`,D,e=>{e.preventDefault(),t.onstart()}),K(`change`,le,e=>t.onskillprofilechange(e.currentTarget.value)),K(`change`,xe,e=>f()(e.currentTarget.value)),K(`change`,ke,e=>d()(e.currentTarget.value)),J(e,x),$e()}Pr([`change`]);function $f(e){let t={};return e.workspaceId||(t.workspaceId=`Choose a workspace.`),e.profile||(t.profile=`Choose a profile.`),e.profile&&e.profileState&&e.profileState!==`ok`&&(t.profile=`Sign in to this profile before starting Codex.`),t}var ep=class{transport;key;onChange;#e={starting:!1,error:null};#t=0;#n=!1;#r=null;constructor(e,t,n){this.transport=e,this.key=t,this.onChange=n}get state(){return this.#e}async start(e,t){if(this.#n||this.#e.starting||!e)return null;let n=++this.#t;this.#a({starting:!0,error:null});let r=this.#r??=this.key();try{let i=await this.transport.start(e,t,r);return this.#i(n)&&(this.#r=null),this.#i(n)?i:null}catch(e){return this.#i(n)&&this.#a({starting:!1,error:e instanceof Error?e.message:`Could not start session.`}),null}finally{this.#i(n)&&this.#a({...this.#e,starting:!1})}}dispose(){this.#n=!0,++this.#t}#i(e){return!this.#n&&e===this.#t}#a(e){this.#n||(this.#e=e,this.onChange(e))}};function tp({chatEnabled:e}){return[`sessions`,`git`,...e?[`chat`]:[],`plan`]}function np(e,t,n={chatEnabled:!0}){let r=tp(n);return r[(r.indexOf(e)+t+r.length)%r.length]}var rp=q(`<nav class="bottom-navigation" aria-label="Primary"><button>Sessions</button> <button>Git</button> <button>Chat</button> <button>Plan</button></nav>`);function ip(e,t){Qe(t,!0);let n=$(t,`focusTab`,3,null),r=R({});Mn(()=>{n()&&r[n()]?.focus()});function i(e){let n=e.key===`ArrowRight`?1:e.key===`ArrowLeft`?-1:null;if(n===null)return;e.preventDefault();let i=np(t.activeTab,n,{chatEnabled:t.chatEnabled});t.onselect(i),r[i]?.focus()}var a=rp(),o=z(a);Li(o,e=>r.sessions=e,()=>r?.sessions);var s=V(o,2);Li(s,e=>r.git=e,()=>r?.git);var c=V(s,2);Li(c,e=>r.chat=e,()=>r?.chat);var l=V(c,2);Li(l,e=>r.plan=e,()=>r?.plan),N(a),H(()=>{Q(o,`aria-pressed`,t.activeTab===`sessions`),Q(s,`aria-pressed`,t.activeTab===`git`),Q(c,`aria-pressed`,t.activeTab===`chat`),c.disabled=!t.chatEnabled,Q(l,`aria-pressed`,t.activeTab===`plan`)}),K(`keydown`,o,i),K(`click`,o,()=>t.onselect(`sessions`)),K(`keydown`,s,i),K(`click`,s,()=>t.onselect(`git`)),K(`keydown`,c,i),K(`click`,c,()=>t.onselect(`chat`)),K(`keydown`,l,i),K(`click`,l,()=>t.onselect(`plan`)),J(e,a),$e()}Pr([`keydown`,`click`]);var ap=q(`<option> </option>`),op=q(`<p id="skills-status" aria-live="polite">Loading skills…</p>`),sp=q(`<p id="skills-status">No skills were discovered for this workspace and Codex profile.</p>`),cp=q(`<p id="skills-status" class="notice svelte-dg6sjj" role="status"> </p>`),lp=q(`<p id="skills-status" class="error svelte-dg6sjj" role="alert"> </p>`),up=q(`<p id="skills-status" class="error svelte-dg6sjj" role="alert" tabindex="-1"> </p>`),dp=q(`<p id="skills-status" role="status">Profile saved.</p>`),fp=q(`<p id="skills-status" role="status">Profile deleted.</p>`),pp=q(`<li class="svelte-dg6sjj"><div class="svelte-dg6sjj"><strong> </strong> <span class="missing-state svelte-dg6sjj">Missing · disabled</span> <span class="path svelte-dg6sjj"> </span></div> <button type="button" class="remove-missing svelte-dg6sjj">Remove</button></li>`),mp=q(`<section class="missing-skills svelte-dg6sjj" aria-labelledby="missing-skills-title"><h3 id="missing-skills-title" class="svelte-dg6sjj">Missing skills</h3> <p class="svelte-dg6sjj">These saved paths no longer exist. They are disabled for new sessions until restored or
|
|
27
27
|
removed from the profile.</p> <ul class="svelte-dg6sjj"></ul></section>`),hp=q(`<p class="svelte-dg6sjj"> </p>`),gp=q(`<li> </li>`),_p=q(`<dt class="svelte-dg6sjj">Tool dependencies</dt> <dd class="svelte-dg6sjj"><ul class="svelte-dg6sjj"></ul></dd>`,1),vp=q(`<li class="skill-card svelte-dg6sjj"><label class="skill-toggle svelte-dg6sjj"><input type="checkbox" class="svelte-dg6sjj"/> <span class="svelte-dg6sjj"> </span> <span class="state svelte-dg6sjj"> </span></label> <div class="skill-details svelte-dg6sjj"><!> <!> <dl class="svelte-dg6sjj"><dt class="svelte-dg6sjj">Path</dt> <dd class="path svelte-dg6sjj"> </dd> <!></dl></div></li>`),yp=q(`<div class="skills-toolbar svelte-dg6sjj"><button type="button" class="refresh-skills svelte-dg6sjj" aria-label="Refresh skills"><span aria-hidden="true" class="svelte-dg6sjj">↻</span><span class="svelte-dg6sjj">Refresh</span></button> <p class="summary svelte-dg6sjj"> </p></div> <!> <ul class="skill-list svelte-dg6sjj"></ul>`,1),bp=q(`<section class="skills-view svelte-dg6sjj" aria-labelledby="skills-title"><h2 id="skills-title"> </h2> <p class="intro svelte-dg6sjj">Create or edit a complete skills selection.</p> <form aria-describedby="skills-status" class="svelte-dg6sjj"><div class="field-grid svelte-dg6sjj"><label for="skills-existing-profile" class="svelte-dg6sjj">Skill profile</label> <select id="skills-existing-profile" class="svelte-dg6sjj"><option>New profile</option><option>Default</option><!></select> <label for="skills-save-as" class="svelte-dg6sjj">Save as</label> <input id="skills-save-as" name="save-as" autocomplete="off" class="svelte-dg6sjj"/></div> <p class="save-intent svelte-dg6sjj" aria-live="polite"> </p> <div class="profile-actions svelte-dg6sjj"><button type="button" class="svelte-dg6sjj">Delete profile</button> <button type="submit" class="svelte-dg6sjj"> </button></div></form> <dialog aria-labelledby="delete-profile-title" class="svelte-dg6sjj"><h3 id="delete-profile-title">Delete skill profile?</h3> <p> </p> <div class="dialog-actions svelte-dg6sjj"><button type="button" class="svelte-dg6sjj">Cancel</button> <button type="button" class="svelte-dg6sjj">Delete profile</button></div></dialog> <!> <!></section>`);function xp(e,t){Qe(t,!0);let n=$(t,`skillsState`,7),r=$(t,`heading`,3,`Manage skill profiles`),i=I(0),a=I(null),o=I(null),s=I(null),c=I(null),l=I(`__new__`),u=P(()=>(G(i),n())),d=P(()=>G(u).profiles.filter(e=>!(`error`in e)));function f(){n(Object.assign(Object.create(Object.getPrototypeOf(n())),n())),L(i,G(i)+1)}async function p(){await t.onrefresh(),f()}function m(e){L(l,e.currentTarget.value,!0),G(l)===`__new__`||G(l)===`__default__`?G(u).selectDefaultProfile():G(u).selectProfile(G(l)),f()}async function h(e){e.preventDefault(),await G(u).save(),f(),G(u).status.kind===`saved`&&(L(l,G(u).selectedProfileName,!0),t.onprofileschange()),G(u).status.kind===`save-failed`&&(await Cr(),G(a)?.focus())}function g(){G(c)?.showModal()}async function _(){G(c)?.close(),await G(u).deleteSelectedProfile(),f(),G(u).status.kind===`deleted`&&(L(l,`__new__`),t.onprofileschange()),await Cr(),G(o)?.focus()}async function v(){G(c)?.close(),await Cr(),G(s)?.focus()}function y(e){return e&&/^#[0-9a-f]{3,8}$/i.test(e)?e:void 0}function b(e){return e.replace(/^\/(?:home|Users)\/[^/]+(?=\/|$)/,`~`)}function x(e){let t=e.currentTarget.closest(`.skill-card`);requestAnimationFrame(()=>t?.scrollIntoView({block:`nearest`,inline:`nearest`}))}var S=bp(),C=z(S),w=z(C,!0);N(C);var T=V(C,4),E=z(T),D=V(z(E),2),ee=z(D);ee.value=ee.__value=`__new__`;var te=V(ee);te.value=te.__value=`__default__`,Z(V(te),17,()=>G(d),e=>e.name,(e,t)=>{var n=ap(),r=z(n,!0);N(n);var i={};H(()=>{Y(r,G(t).name),i!==(i=G(t).name)&&(n.value=(n.__value=G(t).name)??``)}),J(e,n)}),N(D),Li(D,e=>L(o,e),()=>G(o));var ne=V(D,4);Di(ne),N(E);var re=V(E,2),ie=z(re,!0);N(re);var O=V(re,2),k=z(O);Li(k,e=>L(s,e),()=>G(s));var ae=V(k,2),A=z(ae,!0);N(ae),N(O),N(T);var oe=V(T,2),se=V(z(oe),2),ce=z(se);N(se);var le=V(se,2),ue=z(le),de=V(ue,2);N(le),N(oe),Li(oe,e=>L(c,e),()=>G(c));var fe=V(oe,2),pe=e=>{J(e,op())},me=e=>{J(e,sp())},he=e=>{var t=cp(),n=z(t);N(t),H(()=>Y(n,`Discovery warning: ${G(u).status.message??``}`)),J(e,t)},ge=e=>{var t=lp(),n=z(t,!0);N(t),H(()=>Y(n,G(u).status.message)),J(e,t)},_e=e=>{var t=up(),n=z(t,!0);N(t),Li(t,e=>L(a,e),()=>G(a)),H(()=>Y(n,G(u).status.message)),J(e,t)},ve=e=>{J(e,dp())},ye=e=>{J(e,fp())},be=e=>{var t=lp(),n=z(t,!0);N(t),H(()=>Y(n,G(u).status.message)),J(e,t)};X(fe,e=>{G(u).status.kind===`loading`?e(pe):G(u).status.kind===`empty`?e(me,1):G(u).status.kind===`warning`?e(he,2):G(u).status.kind===`invalid-profile`||G(u).status.kind===`error`?e(ge,3):G(u).status.kind===`save-failed`?e(_e,4):G(u).status.kind===`saved`?e(ve,5):G(u).status.kind===`deleted`?e(ye,6):G(u).status.kind===`delete-failed`&&e(be,7)});var xe=V(fe,2),Se=e=>{var t=yp(),n=B(t),r=z(n),i=V(r,2),a=z(i);N(i),N(n);var o=V(n,2),s=e=>{var t=mp(),n=V(z(t),4);Z(n,21,()=>G(u).missingSkills,e=>e.path,(e,t)=>{var n=pp(),r=z(n),i=z(r),a=z(i,!0);N(i);var o=V(i,4),s=z(o,!0);N(o),N(r);var c=V(r,2);N(n),H(e=>{Y(a,G(t).name),Y(s,e),Q(c,`aria-label`,`Remove missing skill ${G(t).name} from profile`)},[()=>b(G(t).path)]),K(`click`,c,()=>{G(u).removeMissingSkill(G(t).path),f()}),J(e,n)}),N(n),N(t),J(e,t)};X(o,e=>{G(u).missingSkills.length>0&&e(s)});var c=V(o,2);Z(c,21,()=>G(u).skills,e=>e.path,(e,t)=>{var n=vp();let r;var i=z(n),a=z(i);Di(a);var o=V(a,2),s=z(o,!0);N(o);var c=V(o,2),l=z(c,!0);N(c),N(i);var d=V(i,2),p=z(d),m=e=>{var n=hp(),r=z(n,!0);N(n),H(()=>Y(r,G(t).description)),J(e,n)};X(p,e=>{G(t).description&&e(m)});var h=V(p,2),g=e=>{var n=hp(),r=z(n,!0);N(n),H(()=>Y(r,G(t).shortDescription)),J(e,n)};X(h,e=>{G(t).shortDescription&&e(g)});var _=V(h,2),v=V(z(_),2),S=z(v,!0);N(v);var C=V(v,2),w=e=>{var n=_p(),r=V(B(n),2),i=z(r);Z(i,21,()=>G(t).dependencies.tools,e=>`${e.type}:${e.value}`,(e,t)=>{var n=gp(),r=z(n);N(n),H(()=>Y(r,`${G(t).type??``}: ${G(t).value??``}${G(t).description?` — ${G(t).description}`:``}`)),J(e,n)}),N(i),N(r),J(e,n)};X(C,e=>{G(t).dependencies?.tools?.length&&e(w)}),N(_),N(d),N(n),H((e,o)=>{r=vi(n,``,r,e),Q(i,`for`,`skill-${G(t).path}`),Q(a,`id`,`skill-${G(t).path}`),ki(a,G(t).enabled),a.disabled=G(t).alwaysAdvertised,Y(s,G(t).displayName??G(t).name),Y(l,G(t).alwaysAdvertised?`Always advertised`:G(t).enabled?`Enabled`:`Disabled`),Y(S,o)},[()=>({"--brand-color":y(G(t).brandColor)}),()=>b(G(t).path)]),Nr(`focus`,a,x),K(`change`,a,e=>{G(u).toggle(G(t).path,e.currentTarget.checked),f()}),J(e,n)}),N(c),H(()=>Y(a,`${G(u).enabledCount??``} of ${G(u).skills.length??``} skills enabled.`)),K(`click`,r,()=>void p()),J(e,t)};X(xe,e=>{(G(u).skills.length>0||G(u).missingSkills.length>0)&&e(Se)}),N(S),H(()=>{Y(w,r()),Oi(ne,G(u).saveAsName),Y(ie,G(u).saveIntent===`replace`?`Saved the selected profile.`:`Creating a new saved profile.`),k.disabled=!G(u).selectedProfileName||G(u).status.kind===`deleting`,ae.disabled=G(u).status.kind===`saving`,Y(A,G(u).status.kind===`saving`?`Saving profile…`:`Save profile`),Y(ce,`Delete ${G(u).selectedProfileName??``}? Existing sessions keep their saved skill set.`)}),Nr(`submit`,T,h),K(`change`,D,m),xi(D,()=>G(l),e=>L(l,e)),K(`input`,ne,e=>{G(u).saveAsName=e.currentTarget.value,f()}),K(`click`,k,g),K(`click`,ue,()=>void v()),K(`click`,de,()=>void _()),J(e,S),$e()}Pr([`change`,`input`,`click`]);var Sp=class{client;workspaceId=``;codexProfile=``;selectedProfileName=``;saveAsName=``;source=`native`;skills=[];missingSkills=[];profiles=[];status={kind:`idle`};baseline=new Map;missingBaseline=new Map;saving=!1;deleting=!1;request=null;generation=0;disposed=!1;constructor(e){this.client=e}get enabledCount(){return this.skills.filter(e=>e.enabled).length}get dirty(){return this.skills.some(e=>this.baseline.get(e.path)!==e.enabled)||this.missingSkills.some(e=>this.missingBaseline.get(e.path)?.enabled!==e.enabled)||[...this.missingBaseline].some(([e])=>!this.missingSkills.some(t=>t.path===e))}get saveIntent(){return this.profiles.some(e=>!(`error`in e)&&e.name===this.saveAsName.trim())?`replace`:`create`}async load(e,t){let n=this.beginRequest(),r=this.generation;this.workspaceId=e,this.codexProfile=t,this.status={kind:`loading`};try{let[i,a]=await Promise.all([this.client.listAvailableSkills(e,t,!0,n.signal),this.client.listSkillProfiles(n.signal)]);if(!this.current(r,n))return;this.applyAvailable(i),this.profiles=a.profiles;let o=a.profiles.find(e=>`error`in e);o&&`error`in o?this.status={kind:`invalid-profile`,message:o.error.message}:i.errors.length?this.status={kind:`warning`,message:i.errors.map(e=>e.message).join(` `)}:this.status=this.skills.length?{kind:`ready`}:{kind:`empty`}}catch(e){if(!this.current(r,n)||n.signal.aborted)return;this.status={kind:`error`,message:Cp(e)}}}async refresh(){let e=this.beginRequest(),t=this.generation;this.status={kind:`loading`};try{let n=await this.client.listAvailableSkills(this.workspaceId,this.codexProfile,!0,e.signal);if(!this.current(t,e))return;this.applyAvailable(n),this.status=this.missingSkills.length?this.missingSkillsStatus():n.errors.length?{kind:`warning`,message:n.errors.map(e=>e.message).join(` `)}:this.skills.length?{kind:`ready`}:{kind:`empty`}}catch(n){if(!this.current(t,e)||e.signal.aborted)return;this.status={kind:`error`,message:Cp(n)}}}selectProfile(e){let t=this.profiles.find(t=>!(`error`in t)&&t.name===e);if(!t||`error`in t){this.status={kind:`invalid-profile`,message:`Select a valid saved profile.`};return}this.selectedProfileName=t.name,this.saveAsName=t.name;let n=new Map(t.skills.map(e=>[e.path,e.enabled])),r=new Set(this.skills.map(e=>e.path)),i=t.skills.filter(e=>!r.has(e.path));this.skills=this.skills.map(e=>({...e,enabled:e.alwaysAdvertised?!0:n.get(e.path)??!1})),this.missingSkills=i.map(e=>({...e,enabled:!1})),this.baseline=new Map(this.skills.map(e=>[e.path,e.enabled])),this.missingBaseline=new Map(i.map(e=>[e.path,{...e}])),this.status=this.missingSkills.length?this.missingSkillsStatus():this.skills.length?{kind:`ready`}:{kind:`empty`}}selectDefaultProfile(){this.selectedProfileName=``,this.saveAsName=``,this.missingSkills=[],this.skills=this.skills.map(e=>({...e,enabled:e.effectiveEnabled})),this.captureBaseline(),this.status=this.skills.length?{kind:`ready`}:{kind:`empty`}}toggle(e,t){this.skills=this.skills.map(n=>n.path===e&&!n.alwaysAdvertised?{...n,enabled:t}:n)}removeMissingSkill(e){this.missingSkills=this.missingSkills.filter(t=>t.path!==e),this.status=this.missingSkills.length?this.missingSkillsStatus():this.skills.length?{kind:`ready`}:{kind:`empty`}}reset(){this.skills=this.skills.map(e=>({...e,enabled:this.baseline.get(e.path)??!1})),this.missingSkills=[...this.missingBaseline.values()].map(e=>({...e,enabled:!1})),this.missingSkills.length&&(this.status=this.missingSkillsStatus())}async save(){let e=this.saveAsName.trim();if(this.saving||this.deleting)return;if(!e){this.status={kind:`save-failed`,message:`Enter a profile name before saving.`};return}this.saving=!0,this.status={kind:`saving`};let t=this.savePayload(e);try{let n=await this.client.replaceSkillProfile(e,t);this.profiles=[...this.profiles.filter(e=>`error`in e||e.name!==n.name),n].sort((e,t)=>e.name.localeCompare(t.name)),this.selectedProfileName=n.name,this.saveAsName=n.name,this.captureBaseline(),this.status={kind:`saved`}}catch(e){this.status={kind:`save-failed`,message:Cp(e)}}finally{this.saving=!1}}async deleteSelectedProfile(){let e=this.selectedProfileName;if(!(this.saving||this.deleting)){if(!e){this.status={kind:`delete-failed`,message:`Select a saved profile before deleting.`};return}this.deleting=!0,this.status={kind:`deleting`};try{await this.client.deleteSkillProfile(e),this.profiles=this.profiles.filter(t=>`error`in t||t.name!==e),this.selectedProfileName=``,this.saveAsName=``,this.missingSkills=[],this.captureBaseline(),this.status={kind:`deleted`}}catch(e){this.status={kind:`delete-failed`,message:Cp(e)}}finally{this.deleting=!1}}}dispose(){this.disposed=!0,++this.generation,this.request?.abort(),this.request=null}beginRequest(){return this.request?.abort(),this.request=new AbortController,++this.generation,this.request}current(e,t){return!this.disposed&&e===this.generation&&this.request===t}savePayload(e=this.saveAsName.trim()){return{version:1,name:e,skills:this.skills.map(({name:e,path:t,enabled:n})=>({name:e,path:t,enabled:n})).concat(this.missingSkills).sort((e,t)=>e.path.localeCompare(t.path))}}applyAvailable(e){let t=new Map(this.skills.filter(e=>this.baseline.get(e.path)!==e.enabled).map(e=>[e.path,e.enabled])),n=new Map(this.missingSkills.map(e=>[e.path,e.enabled]));this.source=e.source,this.skills=e.skills.map(e=>({...e,enabled:e.alwaysAdvertised?!0:t.get(e.path)??n.get(e.path)??e.effectiveEnabled}));let r=new Set(e.skills.map(e=>e.path));this.missingSkills=this.missingSkills.filter(e=>!r.has(e.path)),this.baseline=new Map(e.skills.map(e=>[e.path,this.baseline.get(e.path)??e.effectiveEnabled]))}captureBaseline(){this.baseline=new Map(this.skills.map(e=>[e.path,e.enabled])),this.missingBaseline=new Map(this.missingSkills.map(e=>[e.path,{...e}]))}missingSkillsStatus(){let e=this.missingSkills.length;return{kind:`warning`,message:`${e} saved ${e===1?`skill is`:`skills are`} missing and disabled. Remove ${e===1?`it`:`them`} from this profile, or restore the skill installation.`}}};function Cp(e){return e instanceof Error?e.message:`Unknown relay error.`}var wp=o(((e,t)=>{t.exports=function(){return typeof Promise==`function`&&Promise.prototype&&Promise.prototype.then}})),Tp=o((e=>{var t,n=[0,26,44,70,100,134,172,196,242,292,346,404,466,532,581,655,733,815,901,991,1085,1156,1258,1364,1474,1588,1706,1828,1921,2051,2185,2323,2465,2611,2761,2876,3034,3196,3362,3532,3706];e.getSymbolSize=function(e){if(!e)throw Error(`"version" cannot be null or undefined`);if(e<1||e>40)throw Error(`"version" should be in range from 1 to 40`);return e*4+17},e.getSymbolTotalCodewords=function(e){return n[e]},e.getBCHDigit=function(e){let t=0;for(;e!==0;)t++,e>>>=1;return t},e.setToSJISFunction=function(e){if(typeof e!=`function`)throw Error(`"toSJISFunc" is not a valid function.`);t=e},e.isKanjiModeEnabled=function(){return t!==void 0},e.toSJIS=function(e){return t(e)}})),Ep=o((e=>{e.L={bit:1},e.M={bit:0},e.Q={bit:3},e.H={bit:2};function t(t){if(typeof t!=`string`)throw Error(`Param is not a string`);switch(t.toLowerCase()){case`l`:case`low`:return e.L;case`m`:case`medium`:return e.M;case`q`:case`quartile`:return e.Q;case`h`:case`high`:return e.H;default:throw Error(`Unknown EC Level: `+t)}}e.isValid=function(e){return e&&e.bit!==void 0&&e.bit>=0&&e.bit<4},e.from=function(n,r){if(e.isValid(n))return n;try{return t(n)}catch{return r}}})),Dp=o(((e,t)=>{function n(){this.buffer=[],this.length=0}n.prototype={get:function(e){let t=Math.floor(e/8);return(this.buffer[t]>>>7-e%8&1)==1},put:function(e,t){for(let n=0;n<t;n++)this.putBit((e>>>t-n-1&1)==1)},getLengthInBits:function(){return this.length},putBit:function(e){let t=Math.floor(this.length/8);this.buffer.length<=t&&this.buffer.push(0),e&&(this.buffer[t]|=128>>>this.length%8),this.length++}},t.exports=n})),Op=o(((e,t)=>{function n(e){if(!e||e<1)throw Error(`BitMatrix size must be defined and greater than 0`);this.size=e,this.data=new Uint8Array(e*e),this.reservedBit=new Uint8Array(e*e)}n.prototype.set=function(e,t,n,r){let i=e*this.size+t;this.data[i]=n,r&&(this.reservedBit[i]=!0)},n.prototype.get=function(e,t){return this.data[e*this.size+t]},n.prototype.xor=function(e,t,n){this.data[e*this.size+t]^=n},n.prototype.isReserved=function(e,t){return this.reservedBit[e*this.size+t]},t.exports=n})),kp=o((e=>{var t=Tp().getSymbolSize;e.getRowColCoords=function(e){if(e===1)return[];let n=Math.floor(e/7)+2,r=t(e),i=r===145?26:Math.ceil((r-13)/(2*n-2))*2,a=[r-7];for(let e=1;e<n-1;e++)a[e]=a[e-1]-i;return a.push(6),a.reverse()},e.getPositions=function(t){let n=[],r=e.getRowColCoords(t),i=r.length;for(let e=0;e<i;e++)for(let t=0;t<i;t++)e===0&&t===0||e===0&&t===i-1||e===i-1&&t===0||n.push([r[e],r[t]]);return n}})),Ap=o((e=>{var t=Tp().getSymbolSize,n=7;e.getPositions=function(e){let r=t(e);return[[0,0],[r-n,0],[0,r-n]]}})),jp=o((e=>{e.Patterns={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7};var t={N1:3,N2:3,N3:40,N4:10};e.isValid=function(e){return e!=null&&e!==``&&!isNaN(e)&&e>=0&&e<=7},e.from=function(t){return e.isValid(t)?parseInt(t,10):void 0},e.getPenaltyN1=function(e){let n=e.size,r=0,i=0,a=0,o=null,s=null;for(let c=0;c<n;c++){i=a=0,o=s=null;for(let l=0;l<n;l++){let n=e.get(c,l);n===o?i++:(i>=5&&(r+=t.N1+(i-5)),o=n,i=1),n=e.get(l,c),n===s?a++:(a>=5&&(r+=t.N1+(a-5)),s=n,a=1)}i>=5&&(r+=t.N1+(i-5)),a>=5&&(r+=t.N1+(a-5))}return r},e.getPenaltyN2=function(e){let n=e.size,r=0;for(let t=0;t<n-1;t++)for(let i=0;i<n-1;i++){let n=e.get(t,i)+e.get(t,i+1)+e.get(t+1,i)+e.get(t+1,i+1);(n===4||n===0)&&r++}return r*t.N2},e.getPenaltyN3=function(e){let n=e.size,r=0,i=0,a=0;for(let t=0;t<n;t++){i=a=0;for(let o=0;o<n;o++)i=i<<1&2047|e.get(t,o),o>=10&&(i===1488||i===93)&&r++,a=a<<1&2047|e.get(o,t),o>=10&&(a===1488||a===93)&&r++}return r*t.N3},e.getPenaltyN4=function(e){let n=0,r=e.data.length;for(let t=0;t<r;t++)n+=e.data[t];return Math.abs(Math.ceil(n*100/r/5)-10)*t.N4};function n(t,n,r){switch(t){case e.Patterns.PATTERN000:return(n+r)%2==0;case e.Patterns.PATTERN001:return n%2==0;case e.Patterns.PATTERN010:return r%3==0;case e.Patterns.PATTERN011:return(n+r)%3==0;case e.Patterns.PATTERN100:return(Math.floor(n/2)+Math.floor(r/3))%2==0;case e.Patterns.PATTERN101:return n*r%2+n*r%3==0;case e.Patterns.PATTERN110:return(n*r%2+n*r%3)%2==0;case e.Patterns.PATTERN111:return(n*r%3+(n+r)%2)%2==0;default:throw Error(`bad maskPattern:`+t)}}e.applyMask=function(e,t){let r=t.size;for(let i=0;i<r;i++)for(let a=0;a<r;a++)t.isReserved(a,i)||t.xor(a,i,n(e,a,i))},e.getBestMask=function(t,n){let r=Object.keys(e.Patterns).length,i=0,a=1/0;for(let o=0;o<r;o++){n(o),e.applyMask(o,t);let r=e.getPenaltyN1(t)+e.getPenaltyN2(t)+e.getPenaltyN3(t)+e.getPenaltyN4(t);e.applyMask(o,t),r<a&&(a=r,i=o)}return i}})),Mp=o((e=>{var t=Ep(),n=[1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,4,1,2,4,4,2,4,4,4,2,4,6,5,2,4,6,6,2,5,8,8,4,5,8,8,4,5,8,11,4,8,10,11,4,9,12,16,4,9,16,16,6,10,12,18,6,10,17,16,6,11,16,19,6,13,18,21,7,14,21,25,8,16,20,25,8,17,23,25,9,17,23,34,9,18,25,30,10,20,27,32,12,21,29,35,12,23,34,37,12,25,34,40,13,26,35,42,14,28,38,45,15,29,40,48,16,31,43,51,17,33,45,54,18,35,48,57,19,37,51,60,19,38,53,63,20,40,56,66,21,43,59,70,22,45,62,74,24,47,65,77,25,49,68,81],r=[7,10,13,17,10,16,22,28,15,26,36,44,20,36,52,64,26,48,72,88,36,64,96,112,40,72,108,130,48,88,132,156,60,110,160,192,72,130,192,224,80,150,224,264,96,176,260,308,104,198,288,352,120,216,320,384,132,240,360,432,144,280,408,480,168,308,448,532,180,338,504,588,196,364,546,650,224,416,600,700,224,442,644,750,252,476,690,816,270,504,750,900,300,560,810,960,312,588,870,1050,336,644,952,1110,360,700,1020,1200,390,728,1050,1260,420,784,1140,1350,450,812,1200,1440,480,868,1290,1530,510,924,1350,1620,540,980,1440,1710,570,1036,1530,1800,570,1064,1590,1890,600,1120,1680,1980,630,1204,1770,2100,660,1260,1860,2220,720,1316,1950,2310,750,1372,2040,2430];e.getBlocksCount=function(e,r){switch(r){case t.L:return n[(e-1)*4+0];case t.M:return n[(e-1)*4+1];case t.Q:return n[(e-1)*4+2];case t.H:return n[(e-1)*4+3];default:return}},e.getTotalCodewordsCount=function(e,n){switch(n){case t.L:return r[(e-1)*4+0];case t.M:return r[(e-1)*4+1];case t.Q:return r[(e-1)*4+2];case t.H:return r[(e-1)*4+3];default:return}}})),Np=o((e=>{var t=new Uint8Array(512),n=new Uint8Array(256);(function(){let e=1;for(let r=0;r<255;r++)t[r]=e,n[e]=r,e<<=1,e&256&&(e^=285);for(let e=255;e<512;e++)t[e]=t[e-255]})(),e.log=function(e){if(e<1)throw Error(`log(`+e+`)`);return n[e]},e.exp=function(e){return t[e]},e.mul=function(e,r){return e===0||r===0?0:t[n[e]+n[r]]}})),Pp=o((e=>{var t=Np();e.mul=function(e,n){let r=new Uint8Array(e.length+n.length-1);for(let i=0;i<e.length;i++)for(let a=0;a<n.length;a++)r[i+a]^=t.mul(e[i],n[a]);return r},e.mod=function(e,n){let r=new Uint8Array(e);for(;r.length-n.length>=0;){let e=r[0];for(let i=0;i<n.length;i++)r[i]^=t.mul(n[i],e);let i=0;for(;i<r.length&&r[i]===0;)i++;r=r.slice(i)}return r},e.generateECPolynomial=function(n){let r=new Uint8Array([1]);for(let i=0;i<n;i++)r=e.mul(r,new Uint8Array([1,t.exp(i)]));return r}})),Fp=o(((e,t)=>{var n=Pp();function r(e){this.genPoly=void 0,this.degree=e,this.degree&&this.initialize(this.degree)}r.prototype.initialize=function(e){this.degree=e,this.genPoly=n.generateECPolynomial(this.degree)},r.prototype.encode=function(e){if(!this.genPoly)throw Error(`Encoder not initialized`);let t=new Uint8Array(e.length+this.degree);t.set(e);let r=n.mod(t,this.genPoly),i=this.degree-r.length;if(i>0){let e=new Uint8Array(this.degree);return e.set(r,i),e}return r},t.exports=r})),Ip=o((e=>{e.isValid=function(e){return!isNaN(e)&&e>=1&&e<=40}})),Lp=o((e=>{var t=`[0-9]+`,n=`[A-Z $%*+\\-./:]+`,r=`(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+`;r=r.replace(/u/g,`\\u`);var i=`(?:(?![A-Z0-9 $%*+\\-./:]|`+r+`)(?:.|[\r
|
|
28
28
|
]))+`;e.KANJI=new RegExp(r,`g`),e.BYTE_KANJI=RegExp(`[^A-Z0-9 $%*+\\-./:]+`,`g`),e.BYTE=new RegExp(i,`g`),e.NUMERIC=new RegExp(t,`g`),e.ALPHANUMERIC=new RegExp(n,`g`);var a=RegExp(`^`+r+`$`),o=RegExp(`^[0-9]+$`),s=RegExp(`^[A-Z0-9 $%*+\\-./:]+$`);e.testKanji=function(e){return a.test(e)},e.testNumeric=function(e){return o.test(e)},e.testAlphanumeric=function(e){return s.test(e)}})),Rp=o((e=>{var t=Ip(),n=Lp();e.NUMERIC={id:`Numeric`,bit:1,ccBits:[10,12,14]},e.ALPHANUMERIC={id:`Alphanumeric`,bit:2,ccBits:[9,11,13]},e.BYTE={id:`Byte`,bit:4,ccBits:[8,16,16]},e.KANJI={id:`Kanji`,bit:8,ccBits:[8,10,12]},e.MIXED={bit:-1},e.getCharCountIndicator=function(e,n){if(!e.ccBits)throw Error(`Invalid mode: `+e);if(!t.isValid(n))throw Error(`Invalid version: `+n);return n>=1&&n<10?e.ccBits[0]:n<27?e.ccBits[1]:e.ccBits[2]},e.getBestModeForData=function(t){return n.testNumeric(t)?e.NUMERIC:n.testAlphanumeric(t)?e.ALPHANUMERIC:n.testKanji(t)?e.KANJI:e.BYTE},e.toString=function(e){if(e&&e.id)return e.id;throw Error(`Invalid mode`)},e.isValid=function(e){return e&&e.bit&&e.ccBits};function r(t){if(typeof t!=`string`)throw Error(`Param is not a string`);switch(t.toLowerCase()){case`numeric`:return e.NUMERIC;case`alphanumeric`:return e.ALPHANUMERIC;case`kanji`:return e.KANJI;case`byte`:return e.BYTE;default:throw Error(`Unknown mode: `+t)}}e.from=function(t,n){if(e.isValid(t))return t;try{return r(t)}catch{return n}}})),zp=o((e=>{var t=Tp(),n=Mp(),r=Ep(),i=Rp(),a=Ip(),o=7973,s=t.getBCHDigit(o);function c(t,n,r){for(let i=1;i<=40;i++)if(n<=e.getCapacity(i,r,t))return i}function l(e,t){return i.getCharCountIndicator(e,t)+4}function u(e,t){let n=0;return e.forEach(function(e){let r=l(e.mode,t);n+=r+e.getBitsLength()}),n}function d(t,n){for(let r=1;r<=40;r++)if(u(t,r)<=e.getCapacity(r,n,i.MIXED))return r}e.from=function(e,t){return a.isValid(e)?parseInt(e,10):t},e.getCapacity=function(e,r,o){if(!a.isValid(e))throw Error(`Invalid QR Code version`);o===void 0&&(o=i.BYTE);let s=(t.getSymbolTotalCodewords(e)-n.getTotalCodewordsCount(e,r))*8;if(o===i.MIXED)return s;let c=s-l(o,e);switch(o){case i.NUMERIC:return Math.floor(c/10*3);case i.ALPHANUMERIC:return Math.floor(c/11*2);case i.KANJI:return Math.floor(c/13);case i.BYTE:default:return Math.floor(c/8)}},e.getBestVersionForData=function(e,t){let n,i=r.from(t,r.M);if(Array.isArray(e)){if(e.length>1)return d(e,i);if(e.length===0)return 1;n=e[0]}else n=e;return c(n.mode,n.getLength(),i)},e.getEncodedBits=function(e){if(!a.isValid(e)||e<7)throw Error(`Invalid QR Code version`);let n=e<<12;for(;t.getBCHDigit(n)-s>=0;)n^=o<<t.getBCHDigit(n)-s;return e<<12|n}})),Bp=o((e=>{var t=Tp(),n=1335,r=21522,i=t.getBCHDigit(n);e.getEncodedBits=function(e,a){let o=e.bit<<3|a,s=o<<10;for(;t.getBCHDigit(s)-i>=0;)s^=n<<t.getBCHDigit(s)-i;return(o<<10|s)^r}})),Vp=o(((e,t)=>{var n=Rp();function r(e){this.mode=n.NUMERIC,this.data=e.toString()}r.getBitsLength=function(e){return 10*Math.floor(e/3)+(e%3?e%3*3+1:0)},r.prototype.getLength=function(){return this.data.length},r.prototype.getBitsLength=function(){return r.getBitsLength(this.data.length)},r.prototype.write=function(e){let t,n,r;for(t=0;t+3<=this.data.length;t+=3)n=this.data.substr(t,3),r=parseInt(n,10),e.put(r,10);let i=this.data.length-t;i>0&&(n=this.data.substr(t),r=parseInt(n,10),e.put(r,i*3+1))},t.exports=r})),Hp=o(((e,t)=>{var n=Rp(),r=`0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:`.split(``);function i(e){this.mode=n.ALPHANUMERIC,this.data=e}i.getBitsLength=function(e){return 11*Math.floor(e/2)+e%2*6},i.prototype.getLength=function(){return this.data.length},i.prototype.getBitsLength=function(){return i.getBitsLength(this.data.length)},i.prototype.write=function(e){let t;for(t=0;t+2<=this.data.length;t+=2){let n=r.indexOf(this.data[t])*45;n+=r.indexOf(this.data[t+1]),e.put(n,11)}this.data.length%2&&e.put(r.indexOf(this.data[t]),6)},t.exports=i})),Up=o(((e,t)=>{var n=Rp();function r(e){this.mode=n.BYTE,typeof e==`string`?this.data=new TextEncoder().encode(e):this.data=new Uint8Array(e)}r.getBitsLength=function(e){return e*8},r.prototype.getLength=function(){return this.data.length},r.prototype.getBitsLength=function(){return r.getBitsLength(this.data.length)},r.prototype.write=function(e){for(let t=0,n=this.data.length;t<n;t++)e.put(this.data[t],8)},t.exports=r})),Wp=o(((e,t)=>{var n=Rp(),r=Tp();function i(e){this.mode=n.KANJI,this.data=e}i.getBitsLength=function(e){return e*13},i.prototype.getLength=function(){return this.data.length},i.prototype.getBitsLength=function(){return i.getBitsLength(this.data.length)},i.prototype.write=function(e){let t;for(t=0;t<this.data.length;t++){let n=r.toSJIS(this.data[t]);if(n>=33088&&n<=40956)n-=33088;else if(n>=57408&&n<=60351)n-=49472;else throw Error(`Invalid SJIS character: `+this.data[t]+`
|
|
29
29
|
Make sure your charset is UTF-8`);n=(n>>>8&255)*192+(n&255),e.put(n,13)}},t.exports=i})),Gp=o(((e,t)=>{var n={single_source_shortest_paths:function(e,t,r){var i={},a={};a[t]=0;var o=n.PriorityQueue.make();o.push(t,0);for(var s,c,l,u,d,f,p,m,h;!o.empty();)for(l in s=o.pop(),c=s.value,u=s.cost,d=e[c]||{},d)d.hasOwnProperty(l)&&(f=d[l],p=u+f,m=a[l],h=a[l]===void 0,(h||m>p)&&(a[l]=p,o.push(l,p),i[l]=c));if(r!==void 0&&a[r]===void 0){var g=[`Could not find a path from `,t,` to `,r,`.`].join(``);throw Error(g)}return i},extract_shortest_path_from_predecessor_list:function(e,t){for(var n=[],r=t;r;)n.push(r),e[r],r=e[r];return n.reverse(),n},find_path:function(e,t,r){var i=n.single_source_shortest_paths(e,t,r);return n.extract_shortest_path_from_predecessor_list(i,r)},PriorityQueue:{make:function(e){var t=n.PriorityQueue,r={},i;for(i in e||={},t)t.hasOwnProperty(i)&&(r[i]=t[i]);return r.queue=[],r.sorter=e.sorter||t.default_sorter,r},default_sorter:function(e,t){return e.cost-t.cost},push:function(e,t){var n={value:e,cost:t};this.queue.push(n),this.queue.sort(this.sorter)},pop:function(){return this.queue.shift()},empty:function(){return this.queue.length===0}}};t!==void 0&&(t.exports=n)})),Kp=o((e=>{var t=Rp(),n=Vp(),r=Hp(),i=Up(),a=Wp(),o=Lp(),s=Tp(),c=Gp();function l(e){return unescape(encodeURIComponent(e)).length}function u(e,t,n){let r=[],i;for(;(i=e.exec(n))!==null;)r.push({data:i[0],index:i.index,mode:t,length:i[0].length});return r}function d(e){let n=u(o.NUMERIC,t.NUMERIC,e),r=u(o.ALPHANUMERIC,t.ALPHANUMERIC,e),i,a;return s.isKanjiModeEnabled()?(i=u(o.BYTE,t.BYTE,e),a=u(o.KANJI,t.KANJI,e)):(i=u(o.BYTE_KANJI,t.BYTE,e),a=[]),n.concat(r,i,a).sort(function(e,t){return e.index-t.index}).map(function(e){return{data:e.data,mode:e.mode,length:e.length}})}function f(e,o){switch(o){case t.NUMERIC:return n.getBitsLength(e);case t.ALPHANUMERIC:return r.getBitsLength(e);case t.KANJI:return a.getBitsLength(e);case t.BYTE:return i.getBitsLength(e)}}function p(e){return e.reduce(function(e,t){let n=e.length-1>=0?e[e.length-1]:null;return n&&n.mode===t.mode?(e[e.length-1].data+=t.data,e):(e.push(t),e)},[])}function m(e){let n=[];for(let r=0;r<e.length;r++){let i=e[r];switch(i.mode){case t.NUMERIC:n.push([i,{data:i.data,mode:t.ALPHANUMERIC,length:i.length},{data:i.data,mode:t.BYTE,length:i.length}]);break;case t.ALPHANUMERIC:n.push([i,{data:i.data,mode:t.BYTE,length:i.length}]);break;case t.KANJI:n.push([i,{data:i.data,mode:t.BYTE,length:l(i.data)}]);break;case t.BYTE:n.push([{data:i.data,mode:t.BYTE,length:l(i.data)}])}}return n}function h(e,n){let r={},i={start:{}},a=[`start`];for(let o=0;o<e.length;o++){let s=e[o],c=[];for(let e=0;e<s.length;e++){let l=s[e],u=``+o+e;c.push(u),r[u]={node:l,lastCount:0},i[u]={};for(let e=0;e<a.length;e++){let o=a[e];r[o]&&r[o].node.mode===l.mode?(i[o][u]=f(r[o].lastCount+l.length,l.mode)-f(r[o].lastCount,l.mode),r[o].lastCount+=l.length):(r[o]&&(r[o].lastCount=l.length),i[o][u]=f(l.length,l.mode)+4+t.getCharCountIndicator(l.mode,n))}}a=c}for(let e=0;e<a.length;e++)i[a[e]].end=0;return{map:i,table:r}}function g(e,o){let c,l=t.getBestModeForData(e);if(c=t.from(o,l),c!==t.BYTE&&c.bit<l.bit)throw Error(`"`+e+`" cannot be encoded with mode `+t.toString(c)+`.
|
|
@@ -31,7 +31,7 @@ Make sure your charset is UTF-8`);n=(n>>>8&255)*192+(n&255),e.put(n,13)}},t.expo
|
|
|
31
31
|
The chosen QR Code version cannot contain this amount of data.
|
|
32
32
|
Minimum version required to store current data is: `+c+`.
|
|
33
33
|
`);let l=b(n,r,o),d=new i(t.getSymbolSize(n));return m(d,n),h(d),g(d,n),v(d,r,0),n>=7&&_(d,n),y(d,l),isNaN(a)&&(a=s.getBestMask(d,v.bind(null,d,r))),s.applyMask(a,d),v(d,r,a),{modules:d,version:n,errorCorrectionLevel:r,maskPattern:a,segments:o}}e.create=function(e,r){if(e===void 0||e===``)throw Error(`No input text`);let i=n.M,a,o;return r!==void 0&&(i=n.from(r.errorCorrectionLevel,n.M),a=u.from(r.version),o=s.from(r.maskPattern),r.toSJISFunc&&t.setToSJISFunction(r.toSJISFunc)),S(e,a,i,o)}})),Jp=o((e=>{function t(e){if(typeof e==`number`&&(e=e.toString()),typeof e!=`string`)throw Error(`Color should be defined as hex string`);let t=e.slice().replace(`#`,``).split(``);if(t.length<3||t.length===5||t.length>8)throw Error(`Invalid hex color: `+e);(t.length===3||t.length===4)&&(t=Array.prototype.concat.apply([],t.map(function(e){return[e,e]}))),t.length===6&&t.push(`F`,`F`);let n=parseInt(t.join(``),16);return{r:n>>24&255,g:n>>16&255,b:n>>8&255,a:n&255,hex:`#`+t.slice(0,6).join(``)}}e.getOptions=function(e){e||={},e.color||={};let n=e.margin===void 0||e.margin===null||e.margin<0?4:e.margin,r=e.width&&e.width>=21?e.width:void 0,i=e.scale||4;return{width:r,scale:r?4:i,margin:n,color:{dark:t(e.color.dark||`#000000ff`),light:t(e.color.light||`#ffffffff`)},type:e.type,rendererOpts:e.rendererOpts||{}}},e.getScale=function(e,t){return t.width&&t.width>=e+t.margin*2?t.width/(e+t.margin*2):t.scale},e.getImageWidth=function(t,n){let r=e.getScale(t,n);return Math.floor((t+n.margin*2)*r)},e.qrToImageData=function(t,n,r){let i=n.modules.size,a=n.modules.data,o=e.getScale(i,r),s=Math.floor((i+r.margin*2)*o),c=r.margin*o,l=[r.color.light,r.color.dark];for(let e=0;e<s;e++)for(let n=0;n<s;n++){let u=(e*s+n)*4,d=r.color.light;if(e>=c&&n>=c&&e<s-c&&n<s-c){let t=Math.floor((e-c)/o),r=Math.floor((n-c)/o);d=l[+!!a[t*i+r]]}t[u++]=d.r,t[u++]=d.g,t[u++]=d.b,t[u]=d.a}}})),Yp=o((e=>{var t=Jp();function n(e,t,n){e.clearRect(0,0,t.width,t.height),t.style||={},t.height=n,t.width=n,t.style.height=n+`px`,t.style.width=n+`px`}function r(){try{return document.createElement(`canvas`)}catch{throw Error(`You need to specify a canvas element`)}}e.render=function(e,i,a){let o=a,s=i;o===void 0&&(!i||!i.getContext)&&(o=i,i=void 0),i||(s=r()),o=t.getOptions(o);let c=t.getImageWidth(e.modules.size,o),l=s.getContext(`2d`),u=l.createImageData(c,c);return t.qrToImageData(u.data,e,o),n(l,s,c),l.putImageData(u,0,0),s},e.renderToDataURL=function(t,n,r){let i=r;i===void 0&&(!n||!n.getContext)&&(i=n,n=void 0),i||={};let a=e.render(t,n,i),o=i.type||`image/png`,s=i.rendererOpts||{};return a.toDataURL(o,s.quality)}})),Xp=o((e=>{var t=Jp();function n(e,t){let n=e.a/255,r=t+`="`+e.hex+`"`;return n<1?r+` `+t+`-opacity="`+n.toFixed(2).slice(1)+`"`:r}function r(e,t,n){let r=e+t;return n!==void 0&&(r+=` `+n),r}function i(e,t,n){let i=``,a=0,o=!1,s=0;for(let c=0;c<e.length;c++){let l=Math.floor(c%t),u=Math.floor(c/t);!l&&!o&&(o=!0),e[c]?(s++,c>0&&l>0&&e[c-1]||(i+=o?r(`M`,l+n,.5+u+n):r(`m`,a,0),a=0,o=!1),l+1<t&&e[c+1]||(i+=r(`h`,s),s=0)):a++}return i}e.render=function(e,r,a){let o=t.getOptions(r),s=e.modules.size,c=e.modules.data,l=s+o.margin*2,u=o.color.light.a?`<path `+n(o.color.light,`fill`)+` d="M0 0h`+l+`v`+l+`H0z"/>`:``,d=`<path `+n(o.color.dark,`stroke`)+` d="`+i(c,s,o.margin)+`"/>`,f=`viewBox="0 0 `+l+` `+l+`"`,p=`<svg xmlns="http://www.w3.org/2000/svg" `+(o.width?`width="`+o.width+`" height="`+o.width+`" `:``)+f+` shape-rendering="crispEdges">`+u+d+`</svg>
|
|
34
|
-
`;return typeof a==`function`&&a(null,p),p}})),Zp=c(o((e=>{var t=wp(),n=qp(),r=Yp(),i=Xp();function a(e,r,i,a,o){let s=[].slice.call(arguments,1),c=s.length,l=typeof s[c-1]==`function`;if(!l&&!t())throw Error(`Callback required as last argument`);if(l){if(c<2)throw Error(`Too few arguments provided`);c===2?(o=i,i=r,r=a=void 0):c===3&&(r.getContext&&o===void 0?(o=a,a=void 0):(o=a,a=i,i=r,r=void 0))}else{if(c<1)throw Error(`Too few arguments provided`);return c===1?(i=r,r=a=void 0):c===2&&!r.getContext&&(a=i,i=r,r=void 0),new Promise(function(t,o){try{t(e(n.create(i,a),r,a))}catch(e){o(e)}})}try{let t=n.create(i,a);o(null,e(t,r,a))}catch(e){o(e)}}e.create=n.create,e.toCanvas=a.bind(null,r.render),e.toDataURL=a.bind(null,r.renderToDataURL),e.toString=a.bind(null,function(e,t,n){return i.render(e,n)})}))(),1);function Qp(e){return`${e.replace(/\/$/,``)}/?bootstrap=1`}async function $p(e){return Zp.toDataURL(Qp(e),{errorCorrectionLevel:`M`,margin:1,width:256})}async function em(e){return Zp.toDataURL(e,{errorCorrectionLevel:`M`,margin:1,width:256})}var tm=q(`<p class="feedback svelte-1nygetn" role="status"> </p>`),nm=q(`<span class="svelte-1nygetn">At least one authorized device is required.</span>`),rm=q(`<li class="svelte-1nygetn"><form class="svelte-1nygetn"><label class="svelte-1nygetn">Nickname</label><input name="nickname" class="svelte-1nygetn"/> <p class="svelte-1nygetn"> <!><!></p> <button type="submit" class="svelte-1nygetn">Rename</button> <button type="button" class="svelte-1nygetn">Revoke</button> <!></form></li>`),im=q(`<ul aria-label="Authorized devices" class="svelte-1nygetn"></ul>`),am=q(`<p role="status" class="svelte-1nygetn">No authorized devices are available. Refresh this page before making changes.</p>`),om=q(`<button type="button" class="svelte-1nygetn">Create enrollment link</button>`),sm=q(`<img alt="QR code for the enrollment link" class="svelte-1nygetn"/>`),cm=q(`<p role="status" class="svelte-1nygetn"> </p> <!> <label for="enrollment-link" class="svelte-1nygetn">Enrollment link</label><textarea id="enrollment-link" readonly="" rows="3" class="svelte-1nygetn"></textarea> <div class="actions svelte-1nygetn"><button type="button" class="svelte-1nygetn">Copy enrollment link</button><button type="button" class="svelte-1nygetn">Create passkey here</button><button type="button" class="svelte-1nygetn">Cancel link</button><button type="button" class="svelte-1nygetn">Replace link</button></div>`,1),lm=q(`<main class="devices svelte-1nygetn" aria-labelledby="devices-title"><header class="svelte-1nygetn"><button type="button" class="svelte-1nygetn">Back</button> <h1 id="devices-title" class="svelte-1nygetn">Authorized devices</h1></header> <!> <!> <section aria-labelledby="add-title" class="svelte-1nygetn"><h2 id="add-title" class="svelte-1nygetn">Authorize another device</h2> <!></section></main> <dialog aria-labelledby="revoke-title" class="svelte-1nygetn"><h2 id="revoke-title" class="svelte-1nygetn">Revoke authorized device?</h2> <p class="svelte-1nygetn">This immediately signs out sessions created by this passkey.</p> <form method="dialog" class="svelte-1nygetn"><button type="submit" class="svelte-1nygetn">Keep device</button><button type="button" class="svelte-1nygetn">Revoke device</button></form></dialog>`,1);function um(e,t){Qe(t,!0);let n=$(t,`oncreatepasskey`,3,()=>{}),r=I(R([])),i=I(``),a=I(null),o=I(`none`),s=I(null),c=I(null),l=I(null),u=I(null),d=I(R(Date.now())),f=P(()=>[...G(r)].sort((e,t)=>e.createdAt.localeCompare(t.createdAt))),p=P(()=>G(a)?Math.max(0,Math.ceil((Date.parse(G(a).expiresAt)-G(d))/1e3)):0),m=P(()=>`${Math.floor(G(p)/60)}:${String(G(p)%60).padStart(2,`0`)}`);function h(e){let t=e.trim();return[...t].length>=1&&[...t].length<=64}function g(){G(u)&&clearInterval(G(u)),L(u,null)}function _(){g(),L(u,setInterval(()=>void b(),15e3),!0)}function v(){return!!(G(a)&&G(o)===`pending`&&G(p)>0&&document.visibilityState===`visible`)}async function y(){try{L(r,(await t.client.list()).devices,!0)}catch{L(i,`Could not refresh authorized devices. Try again.`)}}async function b(){if(!v()){G(p)===0&&G(a)&&L(o,`expired`),g();return}try{L(o,(await t.client.ticketStatus()).status,!0),G(o)!==`pending`&&(g(),G(o)===`used`&&await y())}catch{g()}}async function x(){L(i,``);try{L(a,await t.client.createTicket(),!0),L(o,`pending`),L(s,await em(G(a).url),!0),L(d,Date.now(),!0),_()}catch{L(i,`Could not create an enrollment link. Try again.`)}}async function S(){try{L(o,(await t.client.cancelTicket()).status,!0),L(a,null),L(s,null),g()}catch{L(i,`Could not cancel the enrollment link. Try again.`)}}async function C(){await S(),G(i)||await x()}async function w(e,n){if(!h(n)){L(i,`Device nicknames must be 1–64 characters.`);return}L(i,``);try{await t.client.rename(e.id,n.trim()),await y()}catch{L(i,`Could not rename this device. Try again.`)}}function T(e){G(f).length>1&&(L(l,e,!0),G(c)?.showModal())}async function E(){if(G(l))try{await t.client.revoke(G(l).id),G(c)?.close(),G(l).current?t.onlock():await y()}catch{L(i,`This device could not be revoked. Try again.`)}}async function D(){if(G(a))try{await navigator.clipboard.writeText(G(a).url)}catch{L(i,`Copy is unavailable here. Select the visible link instead.`)}}function ee(){document.visibilityState===`visible`&&G(o)===`pending`&&G(p)>0?(b(),_()):g()}Ri(()=>{y(),document.addEventListener(`visibilitychange`,ee);let e=setInterval(()=>L(d,Date.now(),!0),1e3);return()=>clearInterval(e)}),zi(()=>{g(),document.removeEventListener(`visibilitychange`,ee)});var te=lm(),ne=B(te),re=z(ne),ie=z(re);He(2),N(re);var O=V(re,2),k=e=>{var t=tm(),n=z(t,!0);N(t),H(()=>Y(n,G(i))),J(e,t)};X(O,e=>{G(i)&&e(k)});var ae=V(O,2),A=e=>{var t=im();Z(t,21,()=>G(f),e=>e.id,(e,t)=>{var n=rm(),r=z(n),i=z(r),a=V(i);Di(a);var o=V(a,2),s=z(o),c=V(s),l=e=>{var n=Vr();H(e=>Y(n,`· Last used ${e??``}`),[()=>new Date(G(t).lastUsedAt).toLocaleDateString()]),J(e,n)};X(c,e=>{G(t).lastUsedAt&&e(l)});var u=V(c),d=e=>{J(e,Vr(`· This device`))};X(u,e=>{G(t).current&&e(d)}),N(o);var p=V(o,4),m=V(p,2),h=e=>{var n=nm();H(()=>Q(n,`id`,`final-${G(t).id}`)),J(e,n)};X(m,e=>{G(f).length===1&&e(h)}),N(r),N(n),H(e=>{Q(i,`for`,`nickname-${G(t).id}`),Q(a,`id`,`nickname-${G(t).id}`),Oi(a,G(t).nickname),Q(a,`aria-label`,`Nickname for ${G(t).nickname}`),Y(s,`Added ${e??``}`),p.disabled=G(f).length===1,Q(p,`aria-describedby`,G(f).length===1?`final-${G(t).id}`:void 0)},[()=>new Date(G(t).createdAt).toLocaleDateString()]),Nr(`submit`,r,e=>{e.preventDefault(),w(G(t),String(new FormData(e.currentTarget).get(`nickname`)??``))}),K(`click`,p,()=>T(G(t))),J(e,n)}),N(t),J(e,t)},oe=e=>{J(e,am())};X(ae,e=>{G(f).length?e(A):e(oe,-1)});var se=V(ae,2),ce=V(z(se),2),le=e=>{var t=om();K(`click`,t,()=>void x()),J(e,t)},ue=e=>{var t=cm(),r=B(t),i=z(r,!0);N(r);var c=V(r,2),l=e=>{var t=sm();H(()=>Q(t,`src`,G(s))),J(e,t)};X(c,e=>{G(s)&&e(l)});var u=V(c,3);Sn(u);var d=V(u,2),f=z(d),p=V(f),h=V(p),g=V(h);N(d),H(()=>{Y(i,G(o)===`pending`?`Enrollment link is active for ${G(m)}.`:`Enrollment link is ${G(o)}.`),Oi(u,G(a).url)}),K(`click`,f,()=>void D()),K(`click`,p,()=>n()(G(a).ticket)),K(`click`,h,()=>void S()),K(`click`,g,()=>void C()),J(e,t)};X(ce,e=>{G(a)?e(ue,-1):e(le)}),N(se),N(ne);var de=V(ne,2),fe=V(z(de),4),pe=V(z(fe));N(fe),N(de),Li(de,e=>L(c,e),()=>G(c)),K(`click`,ie,function(...e){t.onclose?.apply(this,e)}),K(`click`,pe,()=>void E()),J(e,te),$e()}Pr([`click`]);async function dm(e){if(e=await e,!e.ok){let t;try{let n=await e.json();typeof n==`object`&&n&&`code`in n&&typeof n.code==`string`&&(t=n.code)}catch{}throw Error(t??`AUTH_REQUEST_FAILED_${e.status}`)}if(e.status!==204)return e.json()}function fm(e){return{list:()=>dm(e(`/api/auth/devices`,{credentials:`same-origin`})),rename:(t,n)=>dm(e(`/api/auth/devices/${encodeURIComponent(t)}`,{method:`PATCH`,credentials:`same-origin`,headers:{"content-type":`application/json`},body:JSON.stringify({nickname:n})})),revoke:t=>dm(e(`/api/auth/devices/${encodeURIComponent(t)}`,{method:`DELETE`,credentials:`same-origin`})),createTicket:()=>dm(e(`/api/auth/enrollment-tickets`,{method:`POST`,credentials:`same-origin`})),ticketStatus:()=>dm(e(`/api/auth/enrollment-tickets/current`,{credentials:`same-origin`})),cancelTicket:()=>dm(e(`/api/auth/enrollment-tickets/current`,{method:`DELETE`,credentials:`same-origin`}))}}var pm=`gestalt-mobile.scratchpad`;function mm(){try{return window.localStorage}catch{return null}}function hm(e){try{return e?.getItem(`gestalt-mobile.scratchpad`)??``}catch{return``}}function gm(e,t){try{return e?(e.setItem(pm,t),!0):!1}catch{return!1}}function _m(e){try{return e?(e.removeItem(pm),!0):!1}catch{return!1}}var vm=q(`<p class="feedback svelte-eu5bnq" role="status"> </p>`),ym=q(`<section class="clear-confirmation svelte-eu5bnq" aria-labelledby="clear-scratchpad-title"><p id="clear-scratchpad-title" class="svelte-eu5bnq"><strong>Clear the entire scratchpad?</strong></p> <p class="svelte-eu5bnq">This cannot be undone.</p> <div class="actions svelte-eu5bnq"><button type="button" class="svelte-eu5bnq">Keep text</button> <button type="button" class="danger svelte-eu5bnq">Clear all</button></div></section>`),bm=q(`<footer class="actions svelte-eu5bnq"><button type="button" class="svelte-eu5bnq">Paste</button> <button type="button" class="svelte-eu5bnq">Select all</button> <button type="button" class="danger svelte-eu5bnq">Clear</button> <button type="button" class="svelte-eu5bnq">Close</button></footer>`),xm=q(`<dialog aria-labelledby="scratchpad-title" class="svelte-eu5bnq"><section class="scratchpad-shell svelte-eu5bnq"><header class="svelte-eu5bnq"><div><h2 id="scratchpad-title" class="svelte-eu5bnq">Scratchpad</h2> <p id="scratchpad-help" class="svelte-eu5bnq">Saved automatically in this browser.</p></div> <button type="button" class="close svelte-eu5bnq" aria-label="Close scratchpad">×</button></header> <label for="scratchpad-text" class="svelte-eu5bnq">Scratchpad text</label> <textarea id="scratchpad-text" aria-describedby="scratchpad-help" class="svelte-eu5bnq"></textarea> <!> <!></section></dialog>`);function Sm(e,t){Qe(t,!0);let n=$(t,`storage`,19,mm),r=$(t,`clipboard`,19,()=>globalThis.navigator?.clipboard),i=I(null),a=I(null),o=I(null),s=I(``),c=I(!1),l=I(``);Ri(async()=>{L(s,hm(n()),!0),await Cr(),G(i)?.showModal(),G(a)?.focus()});function u(e){L(s,e,!0),L(l,gm(n(),e)?``:`This browser could not save the scratchpad. Keep this window open until you copy the text.`,!0)}async function d(){if(!r()?.readText){L(l,`Clipboard paste is unavailable here. Long-press the text field and choose Paste.`),G(a)?.focus();return}try{let e=await r().readText(),t=G(a)?.selectionStart??G(s).length,n=G(a)?.selectionEnd??G(s).length;u(`${G(s).slice(0,t)}${e}${G(s).slice(n)}`),await Cr();let i=t+e.length;G(a)?.focus(),G(a)?.setSelectionRange(i,i)}catch{L(l,`Clipboard paste was not permitted. Long-press the text field and choose Paste.`),G(a)?.focus()}}async function f(){L(c,!0),L(l,``),await Cr(),G(o)?.focus()}function p(){L(c,!1),G(a)?.focus()}function m(){if(!_m(n())){L(l,`This browser could not clear its saved scratchpad.`);return}L(s,``),L(c,!1),L(l,``),G(a)?.focus()}var h=xm(),g=z(h),_=z(g),v=V(z(_),2);N(_);var y=V(_,4);Sn(y),Li(y,e=>L(a,e),()=>G(a));var b=V(y,2),x=e=>{var t=vm(),n=z(t,!0);N(t),H(()=>Y(n,G(l))),J(e,t)};X(b,e=>{G(l)&&e(x)});var S=V(b,2),C=e=>{var t=ym(),n=V(z(t),4),r=z(n);Li(r,e=>L(o,e),()=>G(o));var i=V(r,2);N(n),N(t),K(`click`,r,p),K(`click`,i,m),J(e,t)},w=e=>{var t=bm(),n=z(t),r=V(n,2),o=V(r,2),c=V(o,2);N(t),H(()=>o.disabled=!G(s)),K(`click`,n,()=>void d()),K(`click`,r,()=>G(a)?.select()),K(`click`,o,()=>void f()),K(`click`,c,()=>G(i)?.close()),J(e,t)};X(S,e=>{G(c)?e(C):e(w,-1)}),N(g),N(h),Li(h,e=>L(i,e),()=>G(i)),H(()=>Oi(y,G(s))),Nr(`close`,h,function(...e){t.onclose?.apply(this,e)}),K(`click`,v,()=>G(i)?.close()),K(`input`,y,e=>u(e.currentTarget.value)),J(e,h),$e()}Pr([`click`,`input`]);var Cm=q(`<button class="disclosure svelte-am0nvt" type="button"> </button>`),wm=q(`<span class="disclosure svelte-am0nvt"></span>`),Tm=q(`<span class="unsupported svelte-am0nvt">Files cannot be destinations</span>`),Em=q(`<span class="unsupported svelte-am0nvt">Unsupported link</span>`),Dm=q(`<span role="status">Loading…</span>`),Om=q(`<button type="button" class="svelte-am0nvt"> </button>`),km=q(`<div role="group"><!> <!> <!> <!></div>`),Am=q(`<div role="treeitem"><div class="tree-row svelte-am0nvt" role="presentation"><!> <span class="tree-label svelte-am0nvt"> </span><!></div> <!></div>`),jm=q(`<p role="status">Loading files…</p>`),Mm=q(`<button type="button" class="svelte-am0nvt">Retry loading files</button>`),Nm=q(`<button type="button" class="svelte-am0nvt">Load more in root</button>`),Pm=q(`<div class="file-tree svelte-am0nvt" role="tree" aria-label="Files"><!> <!> <!> <!></div>`);function Fm(e,t){Qe(t,!0);let n=$(t,`destinationMode`,3,!1),r=$(t,`ondestinationselect`,3,()=>{}),i=$(t,`onselectionchange`,3,()=>{}),a=R({}),o=I(``),s=P(()=>t.revision<0?{entries:[],loading:!1,error:!1}:t.controller.state(``)),c=P(()=>{if(t.revision<0)return[];let e=[],n=(r,i)=>{for(let a of t.controller.state(r).entries)e.push({entry:a,level:i,parent:r}),a.kind===`directory`&&t.controller.expanded.has(a.path)&&n(a.path,i+1)};return n(``,1),e});function l(e){L(o,e,!0),a[e]?.focus()}function u(e){t.controller.expanded.has(e.path)?t.controller.collapse(e.path):t.controller.expand(e.path)}function d(e,n,r){let i=n.entry,a=n.parent,o=e=>{let t=G(c)[Math.max(0,Math.min(G(c).length-1,e))];t&&l(t.entry.path)};switch(e.key){case`ArrowDown`:e.preventDefault(),o(r+1);break;case`ArrowUp`:e.preventDefault(),o(r-1);break;case`Home`:e.preventDefault(),o(0);break;case`End`:e.preventDefault(),o(G(c).length-1);break;case`ArrowRight`:i.kind===`directory`&&(e.preventDefault(),t.controller.expanded.has(i.path)?o(r+1):u(i));break;case`ArrowLeft`:e.preventDefault(),i.kind===`directory`&&t.controller.expanded.has(i.path)?t.controller.collapse(i.path):a&&l(a);break;case`Enter`:case` `:e.preventDefault(),f(i);break}}function f(e){if(e.kind!==`symlink`){if(n()){e.kind===`directory`&&r()(e.path);return}t.controller.select(e.path),i()(e.path)}}var p=Pm();{let e=(r,i=b,s=b)=>{var l=Hr();Z(B(l),17,()=>t.controller.state(i()).entries,e=>e.path,(r,i)=>{let l=P(()=>G(i).kind===`directory`),p=P(()=>G(c).find(e=>e.entry.path===G(i).path)),m=P(()=>G(c).findIndex(e=>e.entry.path===G(i).path));var h=Am();let g;var _=z(h);let v;var y=z(_),b=e=>{var n=Cm(),r=z(n,!0);N(n),H((e,t)=>{Q(n,`aria-label`,e),Y(r,t)},[()=>`${t.controller.expanded.has(G(i).path)?`Collapse`:`Expand`} ${G(i).name}`,()=>t.controller.expanded.has(G(i).path)?`−`:`+`]),K(`click`,n,e=>{e.stopPropagation(),u(G(i))}),J(e,n)},x=e=>{J(e,wm())};X(y,e=>{G(l)?e(b):e(x,-1)});var S=V(y,2),C=z(S,!0);N(S);var w=V(S),T=e=>{J(e,Tm())},E=e=>{var t=Em();H(()=>Q(t,`id`,`${G(i).path}-unsupported`)),J(e,t)};X(w,e=>{n()&&!G(l)?e(T):G(i).kind===`symlink`&&e(E,1)}),N(_);var D=V(_,2),ee=n=>{let r=P(()=>t.controller.state(G(i).path));var a=km(),o=z(a),c=e=>{J(e,Dm())};X(o,e=>{G(r).loading&&e(c)});var l=V(o,2),u=e=>{var n=Om(),r=z(n);N(n),H(()=>Y(r,`Retry ${G(i).name??``}`)),K(`click`,n,()=>void t.controller.load(G(i).path)),J(e,n)};X(l,e=>{G(r).error&&e(u)});var d=V(l,2);e(d,()=>G(i).path,()=>s()+1);var f=V(d,2),p=e=>{var n=Om(),r=z(n);N(n),H(()=>Y(r,`Load more in ${G(i).name??``}`)),K(`click`,n,()=>void t.controller.load(G(i).path,!0)),J(e,n)};X(f,e=>{G(r).cursor&&e(p)}),N(a),H(()=>Q(a,`aria-label`,`Contents of ${G(i).name}`)),J(n,a)},te=P(()=>G(l)&&t.controller.expanded.has(G(i).path));X(D,e=>{G(te)&&e(ee)}),N(h),Li(h,(e,t)=>a[t.path]=e,e=>a?.[e.path],()=>[G(i)]),H(e=>{g=gi(h,1,`treeitem svelte-am0nvt`,null,g,{symlink:G(i).kind===`symlink`}),Q(h,`aria-level`,s()),Q(h,`aria-expanded`,e),Q(h,`aria-selected`,G(i).kind===`symlink`?`false`:t.controller.selectedPath===G(i).path),Q(h,`aria-disabled`,G(i).kind===`symlink`),Q(h,`aria-describedby`,G(i).kind===`symlink`?`${G(i).path}-unsupported`:void 0),Q(h,`tabindex`,G(o)===G(i).path||!G(o)&&G(m)===0?0:-1),v=vi(_,``,v,{"--level":s()}),Y(C,G(i).name)},[()=>G(l)?t.controller.expanded.has(G(i).path):void 0]),Nr(`focus`,h,()=>L(o,G(i).path,!0)),K(`keydown`,h,e=>d(e,G(p),G(m))),K(`click`,h,()=>f(G(i))),J(r,h)}),J(r,l)};var m=z(p),h=e=>{J(e,jm())};X(m,e=>{G(s).loading&&e(h)});var g=V(m,2),_=e=>{var n=Mm();K(`click`,n,()=>void t.controller.load(``)),J(e,n)};X(g,e=>{G(s).error&&e(_)});var v=V(g,2);e(v,()=>``,()=>1);var y=V(v,2),x=e=>{var n=Nm();K(`click`,n,()=>void t.controller.load(``,!0)),J(e,n)};X(y,e=>{G(s).cursor&&e(x)}),N(p)}J(e,p),$e()}Pr([`keydown`,`click`]);var Im=class{workspaceId;read;changed;failed;expanded=new Set([``]);selectedPath=``;pages=new Map;generations=new Map;requests=new Map;version=0;constructor(e,t,n,r=()=>{}){this.workspaceId=e,this.read=t,this.changed=n,this.failed=r}state(e){return this.pages.get(e)??{entries:[],loading:!1,error:!1}}async load(e=``,t=!1){let n=this.state(e);if(n.loading||t&&!n.cursor)return;let r=(this.generations.get(e)??0)+1;this.generations.set(e,r),this.requests.get(e)?.abort();let i=new AbortController;this.requests.set(e,i),this.pages.set(e,{...n,loading:!0,error:!1}),this.publish();try{let a=await this.read(this.workspaceId,{directory:e,...t?{cursor:n.cursor}:{}},i.signal);if(i.signal.aborted||this.generations.get(e)!==r)return;let o=t?Lm(n.entries,a.entries):a.entries;this.pages.set(e,{entries:o,cursor:a.nextCursor,loading:!1,error:!1})}catch(t){if(i.signal.aborted||this.generations.get(e)!==r)return;this.pages.set(e,{...n,loading:!1,error:!0}),this.failed(t)}finally{this.requests.get(e)===i&&this.requests.delete(e),this.publish()}}async expand(e){this.expanded.add(e),this.publish(),this.pages.has(e)||await this.load(e)}collapse(e){this.expanded.delete(e),this.generations.set(e,(this.generations.get(e)??0)+1),this.requests.get(e)?.abort(),this.publish()}async refresh(e=``){this.invalidateBranch(e),await this.load(e)}select(e){this.selectedPath=e,this.publish()}close(){this.requests.forEach(e=>e.abort()),this.requests.clear()}invalidateBranch(e){for(let t of[...this.pages.keys()])(t===e||t.startsWith(e?`${e}/`:``))&&(this.pages.delete(t),this.generations.set(t,(this.generations.get(t)??0)+1),this.requests.get(t)?.abort())}publish(){this.version+=1,this.changed()}};function Lm(e,t){let n=new Set(e.map(e=>e.path));return[...e,...t.filter(e=>!n.has(e.path))]}var Rm=25*1024*1024;function zm(e){return[...e].map(e=>({file:e,status:e.size>26214400?`too-large`:`queued`}))}function Bm(e){return e.findIndex(e=>e.status===`queued`)}var Vm={phase:`idle`};function Hm(e,t){return{phase:`picking`,kind:e,source:t}}function Um(e,t){return e.phase===`picking`?{...e,destination:t}:e}function Wm(e){return e.phase!==`picking`||e.destination===void 0?e:{...e,phase:`submitting`}}function Gm(e,t){return e.phase===`submitting`?{...e,phase:`conflict`,replaceAllowed:t}:e}function Km(e){return e.phase===`submitting`?{...e,phase:`failed`}:e}function qm(e,t){return e.phase!==`picking`||!e.source||e.kind===`move`&&Jm(e.source)===t?!1:!(t===e.source||t.startsWith(`${e.source}/`))}function Jm(e){let t=e.lastIndexOf(`/`);return t<0?``:e.slice(0,t)}var Ym=q(`<li> </li>`),Xm=q(`<button type="button" class="svelte-qx7639">Replace</button>`),Zm=q(`<div class="browser-actions svelte-qx7639" aria-label="Upload conflict"><!> <button type="button" class="svelte-qx7639">Keep both</button> <button type="button" class="svelte-qx7639">Cancel remaining</button></div>`),Qm=q(`<button type="button" class="svelte-qx7639">Cancel uploads</button>`),$m=q(`<section class="picker svelte-qx7639" aria-label="Upload queue" aria-live="polite"><p class="svelte-qx7639"> </p> <ul></ul> <!></section>`),eh=q(`<div class="browser-actions svelte-qx7639" aria-label="Selected file actions"><button type="button" class="svelte-qx7639">Copy</button> <button type="button" class="svelte-qx7639">Move</button> <button type="button" class="svelte-qx7639">Delete</button></div>`),th=q(`<section class="picker svelte-qx7639" aria-label="Delete confirmation" aria-live="assertive"><h3> </h3> <p class="svelte-qx7639"> </p> <div class="browser-actions svelte-qx7639"><button type="button" class="svelte-qx7639">Cancel</button> <button type="button" class="svelte-qx7639"> </button></div></section>`),nh=q(`<section class="picker svelte-qx7639" aria-label="Choose destination folder" aria-live="polite"><p class="svelte-qx7639"><strong> </strong> </p> <p class="svelte-qx7639"> </p> <div class="browser-actions svelte-qx7639"><button type="button" class="svelte-qx7639">Use root folder</button> <button type="button" class="svelte-qx7639"> </button> <button type="button" class="svelte-qx7639">Cancel</button></div></section>`),rh=q(`<section class="picker svelte-qx7639" tabindex="-1" aria-label="File conflict" aria-live="assertive"><h3>Destination already contains this item</h3> <p class="svelte-qx7639"> </p> <div class="browser-actions svelte-qx7639"><!> <button type="button" class="svelte-qx7639">Keep both</button> <button type="button" class="svelte-qx7639">Cancel</button></div></section>`),ih=q(`<section class="picker svelte-qx7639" aria-label="Transfer failed"><p role="status" class="svelte-qx7639">Transfer could not be completed.</p> <div class="browser-actions svelte-qx7639"><button type="button" class="svelte-qx7639">Try again</button><button type="button" class="svelte-qx7639">Cancel</button></div></section>`),ah=q(`<section aria-label="File browser error"><p class="svelte-qx7639">Files could not be read. Try again.</p></section>`),oh=q(`<p role="status" class="svelte-qx7639">This folder is empty.</p>`),sh=q(`<dialog aria-labelledby="file-browser-title" class="svelte-qx7639"><section class="file-browser-shell svelte-qx7639"><header class="svelte-qx7639"><div class="svelte-qx7639"><h2 id="file-browser-title" tabindex="-1" class="svelte-qx7639"> </h2> <p class="svelte-qx7639"> </p></div> <button type="button" class="close svelte-qx7639" aria-label="Close file browser">×</button></header> <div class="browser-actions svelte-qx7639"><button type="button" class="svelte-qx7639">Refresh</button></div> <div class="upload-actions svelte-qx7639"><input class="visually-hidden svelte-qx7639" type="file" multiple="" aria-label="Choose files to upload"/> <p class="svelte-qx7639"> </p> <button type="button" class="svelte-qx7639">Upload files</button></div> <!> <!> <!> <!> <!> <!></section></dialog>`);function ch(e,t){Qe(t,!0);let n=$(t,`onsuccess`,3,()=>{}),r=$(t,`onmutation`,3,()=>{}),i=I(null),a=I(null),o=I(0),s=I(null),c=I(R(Vm)),l=I(null),u=I(``),d=I(!1),f=I(!1),p=I(null),m=I(null),h=I(R([])),g=I(!1),_=I(null),v=I(null),y=P(()=>G(o)<0?{entries:[],loading:!1,error:!1}:G(s)?.state(``)??{entries:[],loading:!0,error:!1}),b=P(()=>{if(!G(s)||!G(u))return;let e=G(u).includes(`/`)?G(u).slice(0,G(u).lastIndexOf(`/`)):``;return G(s).state(e).entries.find(e=>e.path===G(u))}),x=P(()=>`Files in ${t.root.relativePath===`.`?`~/`:`~/${t.root.relativePath}`}`);Ri(async()=>{L(s,new Im(t.root.id,t.listDirectory,()=>{L(o,G(o)+1)},t.onerror),!0),await Cr(),G(i)?.showModal(),G(a)?.focus(),await G(s).load()}),zi(()=>G(s)?.close());function S(){G(c).phase===`submitting`||G(f)||(G(_)?.abort(),G(s)?.close(),G(i)?.close())}let C=P(()=>G(b)?.kind===`directory`||!G(u)?G(u):``),w=P(()=>G(C)||``);async function T(e=`reject`){if(!(G(g)||!G(s))){L(g,!0);try{for(;;){let n=G(v)?.index??Bm(G(h));if(L(v,null),n<0)break;let i=G(h)[n];if(!i||i.status===`too-large`)continue;L(h,G(h).map((e,t)=>t===n?{...e,status:`uploading`}:e),!0);let a=new AbortController;L(_,a,!0);try{let o=await t.uploadFile(t.root.id,{directory:G(w),filename:i.file.name,conflict:e,file:i.file},Ha(),a.signal);L(h,G(h).map((e,t)=>t===n?{...e,status:`completed`,path:o.path}:e),!0),await G(s).refresh(G(w)),G(s).select(G(w)),L(u,G(w),!0),r()(),e=`reject`}catch(e){let r=e;if(r.status===409){L(h,G(h).map((e,t)=>t===n?{...e,status:`queued`}:e),!0),L(v,{index:n,replaceAllowed:r.replaceAllowed===!0},!0);break}L(h,G(h).map((e,t)=>t===n?{...e,status:a.signal.aborted?`cancelled`:`failed`}:e),!0),t.onerror(e)}finally{L(_,null)}}}finally{L(g,!1);let e=G(h).filter(e=>e.status===`completed`).length;e&&n()(`Uploaded ${e} file${e===1?``:`s`}.`)}}}function E(e){!e||e.length===0||(L(h,zm(e),!0),T())}function D(){G(_)?.abort(),L(h,G(h).map(e=>e.status===`queued`||e.status===`uploading`?{...e,status:`cancelled`}:e),!0),L(v,null)}function ee(e){if(G(c).phase===`submitting`||G(f)){e.preventDefault();return}e.preventDefault(),S()}async function te(){if(!(!G(u)||G(f))){L(f,!0);try{let e=G(u).includes(`/`)?G(u).slice(0,G(u).lastIndexOf(`/`)):``;await t.deleteEntry(t.root.id,G(u),Ha()),await G(s)?.refresh(e),G(s)?.select(e),L(u,e,!0),n()(`Deleted item.`),r()(),L(d,!1)}catch(e){t.onerror(e)}finally{L(f,!1)}}}async function ne(){L(d,!0),await Cr(),G(p)?.focus()}function re(e){G(u)&&L(c,Hm(e,G(u)),!0)}function ie(e){qm(G(c),e)&&L(c,Um(G(c),e),!0)}async function O(e=`reject`){if(!G(s)||G(c).phase!==`picking`&&G(c).phase!==`conflict`)return;let i=G(c).phase===`picking`?Wm(G(c)):{...G(c),phase:`submitting`};if(!(!i.source||i.destination===void 0||!i.kind)){L(c,i,!0);try{let a=await(i.kind===`copy`?t.copyEntry:t.moveEntry)(t.root.id,{source:i.source,destinationDirectory:i.destination,conflict:e},Ha()),o=i.source.includes(`/`)?i.source.slice(0,i.source.lastIndexOf(`/`)):``;i.kind===`copy`?await G(s).refresh(i.destination):await Promise.all([G(s).refresh(o),G(s).refresh(i.destination)]),G(s).select(a.path),n()(`${i.kind===`copy`?`Copied`:`Moved`} ${a.path}.`),r()(),L(c,Vm,!0)}catch(e){let n=e;n.status===409?(L(c,Gm(i,n.replaceAllowed===!0),!0),await Cr(),G(l)?.focus()):(L(c,Km(i),!0),t.onerror(e))}}}var k=sh(),ae=z(k),A=z(ae),oe=z(A),se=z(oe),ce=z(se,!0);N(se),Li(se,e=>L(a,e),()=>G(a));var le=V(se,2),ue=z(le,!0);N(le),N(oe);var de=V(oe,2);N(A);var fe=V(A,2),pe=z(fe);N(fe);var me=V(fe,2),he=z(me);Li(he,e=>L(m,e),()=>G(m));var ge=V(he,2),_e=z(ge);N(ge);var ve=V(ge,2);N(me);var ye=V(me,2),be=e=>{var t=$m(),n=z(t),r=z(n);N(n);var i=V(n,2);Z(i,21,()=>G(h),e=>e.file,(e,t)=>{var n=Ym(),r=z(n);N(n),H(()=>Y(r,`${G(t).file.name??``}: ${G(t).path??G(t).status??``}${G(t).status===`too-large`?` (maximum ${Rm/1024/1024} MiB)`:``}`)),J(e,n)}),N(i);var a=V(i,2),o=e=>{var t=Zm(),n=z(t),r=e=>{var t=Xm();K(`click`,t,()=>void T(`replace`)),J(e,t)};X(n,e=>{G(v).replaceAllowed&&e(r)});var i=V(n,2),a=V(i,2);N(t),K(`click`,i,()=>void T(`keep-both`)),K(`click`,a,D),J(e,t)},s=e=>{var t=Qm();K(`click`,t,D),J(e,t)};X(a,e=>{G(v)?e(o):G(g)&&e(s,1)}),N(t),H((e,t)=>Y(r,`${e??``} queued, ${t??``} completed`),[()=>G(h).filter(e=>e.status===`queued`).length,()=>G(h).filter(e=>e.status===`completed`).length]),J(e,t)};X(ye,e=>{G(h).length&&e(be)});var xe=V(ye,2),Se=e=>{var t=eh(),n=z(t),r=V(n,2),i=V(r,2);N(t),K(`click`,n,()=>re(`copy`)),K(`click`,r,()=>re(`move`)),K(`click`,i,()=>void ne()),J(e,t)};X(xe,e=>{G(s)&&G(c).phase===`idle`&&G(b)&&G(b).kind!==`symlink`&&e(Se)});var Ce=V(xe,2),we=e=>{var t=th(),n=z(t),r=z(n,!0);N(n);var i=V(n,2),a=z(i,!0);N(i);var o=V(i,2),s=z(o);Li(s,e=>L(p,e),()=>G(p));var c=V(s,2),l=z(c,!0);N(c),N(o),N(t),H(()=>{Y(r,G(b).kind===`directory`?`Delete folder and all contents`:`Delete file`),Y(a,G(u)),s.disabled=G(f),c.disabled=G(f),Y(l,G(f)?`Deleting…`:`Delete`)}),K(`click`,s,()=>L(d,!1)),K(`click`,c,()=>void te()),J(e,t)};X(Ce,e=>{G(d)&&G(b)&&e(we)});var Te=V(Ce,2),Ee=e=>{var t=nh(),n=z(t),r=z(n),i=z(r);N(r);var a=V(r);N(n);var o=V(n,2),s=z(o);N(o);var l=V(o,2),u=z(l),d=V(u,2),f=z(d);N(d);var p=V(d,2);N(l),N(t),H(e=>{Y(i,`${G(c).kind===`copy`?`Copy`:`Move`}:`),Y(a,` ${G(c).source??``}`),Y(s,`Destination: ${(G(c).destination===``?`root folder`:G(c).destination??`choose a folder`)??``}`),u.disabled=e,d.disabled=G(c).destination===void 0,Y(f,`Confirm ${G(c).kind??``}`)},[()=>!qm(G(c),``)]),K(`click`,u,()=>ie(``)),K(`click`,d,()=>void O()),K(`click`,p,()=>L(c,Vm,!0)),J(e,t)},De=e=>{var t=rh(),n=V(z(t),2),r=z(n,!0);N(n);var i=V(n,2),a=z(i),o=e=>{var t=Xm();K(`click`,t,()=>void O(`replace`)),J(e,t)};X(a,e=>{G(c).replaceAllowed&&e(o)});var s=V(a,2),u=V(s,2);N(i),N(t),Li(t,e=>L(l,e),()=>G(l)),H(()=>Y(r,G(c).destination)),K(`click`,s,()=>void O(`keep-both`)),K(`click`,u,()=>L(c,Vm,!0)),J(e,t)},Oe=e=>{var t=ih(),n=V(z(t),2),r=z(n),i=V(r);N(n),N(t),K(`click`,r,()=>L(c,{...G(c),phase:`picking`},!0)),K(`click`,i,()=>L(c,Vm,!0)),J(e,t)};X(Te,e=>{G(c).phase===`picking`?e(Ee):G(c).phase===`conflict`?e(De,1):G(c).phase===`failed`&&e(Oe,2)});var ke=V(Te,2),Ae=e=>{J(e,ah())},je=e=>{J(e,oh())};X(ke,e=>{G(s)&&!G(y).loading&&G(y).error?e(Ae):G(s)&&!G(y).loading&&G(y).entries.length===0&&e(je,1)});var Me=V(ke,2),Ne=e=>{var t=Hr();Yr(B(t),()=>G(o),e=>{{let t=P(()=>G(c).phase===`picking`);Fm(e,{get controller(){return G(s)},get revision(){return G(o)},get destinationMode(){return G(t)},ondestinationselect:ie,onselectionchange:e=>L(u,e,!0)})}}),J(e,t)};X(Me,e=>{G(s)&&e(Ne)}),N(ae),N(k),Li(k,e=>L(i,e),()=>G(i)),H(()=>{Y(ce,G(x)),Y(ue,G(c).phase===`picking`?`Choose destination folder.`:`Browse folders and select a position.`),pe.disabled=G(y).loading,Y(_e,`Upload destination: ${(G(b)?.kind===`file`?`Select a folder first`:G(u)||`root folder`)??``}`),ve.disabled=G(b)?.kind===`file`||G(g)}),Nr(`close`,k,function(...e){t.onclose?.apply(this,e)}),Nr(`cancel`,k,ee),K(`click`,de,S),K(`click`,pe,()=>void G(s)?.refresh()),K(`change`,he,e=>E(e.currentTarget.files)),K(`click`,ve,()=>G(m)?.click()),J(e,k),$e()}Pr([`click`,`change`]);var lh=q(`<main class="evidence-mode svelte-1d2e8zz"><!></main>`),uh=q(`<span class="detached-chat-model svelte-1d2e8zz"> </span>`),dh=q(`<header class="detached-chat-header svelte-1d2e8zz"><div class="detached-chat-context svelte-1d2e8zz"><span class="svelte-1d2e8zz">Chat</span> <strong class="svelte-1d2e8zz"> </strong></div> <!></header>`),fh=q(`<!> <!> <div class="chat-controls svelte-1d2e8zz" aria-label="Chat controls"><!> <!></div> <div class="chat-tail svelte-1d2e8zz" aria-hidden="true"></div>`,1),ph=q(`<p> </p>`),mh=q(`<section class="chat-view svelte-1d2e8zz" aria-labelledby="chat-title"><h2 id="chat-title" class="visually-hidden">Chat</h2> <!> <!> <p class="visually-hidden" aria-live="polite" aria-atomic="true"> </p> <!></section>`),hh=q(`<p>Loading skill profiles…</p>`),gh=q(`<section class="session-profile-manager" aria-labelledby="session-profile-manager-title"><div class="session-profile-manager-header svelte-1d2e8zz"><h2 id="session-profile-manager-title" tabindex="-1" class="svelte-1d2e8zz">Manage skill profiles</h2> <button type="button" class="close-profile-manager svelte-1d2e8zz" aria-label="Close skill profile editor">×</button></div> <!></section>`),_h=q(`<!> <!> <!>`,1),vh=q(`<main class="swipe-surface svelte-1d2e8zz"><!> <!> <!> <!></main> <!>`,1);function yh(e,t){Qe(t,!0);let n=$(t,`oncreatepasskey`,3,()=>{}),r=qc(location.search),i=I(null),a=I(R(r?`chat`:`sessions`)),o=I(!1),s=I(!1),c=I(!1),l=I(null),u=I(null),d=!1,f=I(`Loading relay…`),p=I(R(Er(()=>t.theme))),m=I(R([])),h=`gpt-5.6-terra`,g=I({codex:[h],kimi:[]}),_=I([]),v=I(null),y=I(`codex`),b=I({codex:h,kimi:``}),x=I(null),S=I(null),C=P(()=>G(x)?.kimi.available??!1),w=P(()=>G(C)?G(y):`codex`),T=I([]),E=I(null),D=I(`list`),ee=I([]),te=I(``),ne=I(``),re=I(``),ie=I(R(new Set)),O=I(null),k=I(R([])),ae=I(new Map),A=I({snapshots:new Map,attention:new Map,pending:new Set,errors:new Map}),oe=I(new Map),se=0,ce=null,le=P(()=>G(k).some(e=>e.id===G(O))),ue=I(R([])),de=I(`workspace-write`),fe=I(`on-request`),pe=I(R({starting:!1,error:null})),me=P(()=>G(pe).starting),he=I(null),ge=0,_e=I(null),ve=I(null),ye=I(``),be=0,xe=new Map,Se=I(R({kind:`unavailable`,sessionId:null})),Ce=I({kind:`no-workspace`}),we=I(null),Te=I(null),Ee=I(!1),De=null,Oe=null,ke=0,Ae=0,je=I(null),Me=P(()=>(G(k).find(e=>e.id===G(O))?.workspaceId??G(re))||null),Ne=P(()=>G(k).find(e=>e.id===G(O))?.workspacePath??null),Pe=P(()=>G(k).find(e=>e.id===G(O))??null),Fe=P(()=>Cf(G(Pe)?.workspacePath??``)),Ie=P(()=>G(Pe)?`${G(Pe).provider===`kimi`?`Kimi · `:``}${G(Pe).model??h}`:h);function Le(e){return`kind`in e&&e.kind===`org-source`}function Re(e){return r?e.filter(e=>e.id===G(O)):e}let j=P(()=>G(we)&&Le(G(we))?G(we):G(we)?{kind:`ready`,sessionId:`catalog`,plan:G(we)}:G(Ee)?null:G(Se).kind===`ready`||G(Se).kind===`closing`||G(Se).kind===`error`&&G(Se).plan?G(Se):null),ze=P(()=>td(G(Se).kind===`ready`||G(Se).kind===`closing`||G(Se).kind===`error`?G(Se).plan:void 0)),M=I(R({workspaceId:null,summary:null,loading:!1,refreshing:!1,checkingOut:!1,error:null})),Be=P(()=>G(M).workspaceId),Ve=I(R(new Set)),He=I(!1),Ue=I(!1),We=I(null),Ge=I(null),Ke=I(null),qe=R({}),Je=I({}),Ye=I(null),Xe=``,Ze=new zl({requestFrame:e=>requestAnimationFrame(e),cancelFrame:e=>cancelAnimationFrame(e),reducedMotion:()=>window.matchMedia(`(prefers-reduced-motion: reduce)`).matches,scrollTail:e=>G(Ye)?.scrollIntoView({block:`end`,behavior:e})}),et=new Bl(e=>void Cr().then(e),e=>{G(a)===`chat`&&Ze.request(e)}),tt=P(()=>{let e=G(i)?.interactions.findLast(e=>e.state!==`pending`);return e?e.state===`submitting`?`Sending decision.`:e.state===`failed`?`Could not send decision. Retry is available.`:e.state===`resolved`?e.attemptedOutcome===`denied`?`Decision denied.`:e.attemptedOutcome===`dismissed`?`Request is no longer awaiting a response.`:e.attemptedOutcome===`answered`?`Answers sent.`:`Decision approved.`:``:``}),nt=Gu((e,n)=>t.authorizedFetch(e,n)),rt=new Qa(nt,e=>L(A,e)),it=new Va({relay:nt,publish:e=>L(ae,new Map(e)),onEvent:(e,t)=>rt.observe(e,t),onAuthoritativeSnapshot:(e,t)=>rt.applyAuthoritative(e,t)}),at=new Ll({relay:nt,cache:Gc(),publish:e=>L(i,e,!0),onSessionEvent:e=>Fn(e),onRelayEvent:e=>{G(O)&&it.observe(G(O),e)},onHistoryError:e=>{L(f,jn(e,`SESSION_HISTORY_READ_FAILED`),!0)},onSendError:(e,t)=>{let n=Ul(e,`MESSAGE_SEND_FAILED`);if(n.code===`SESSION_WORKSPACE_UNAVAILABLE`){L(_e,null),L(ve,null),dt.enqueue({kind:`warning`,...n});return}L(_e,n.message,!0),L(ve,n.retryable?t:null,!0),L(f,jn(e,`MESSAGE_SEND_FAILED`),!0)},onSendAccepted:(e,t)=>{G(ve)===t&&(L(_e,null),L(ve,null));let n=xe.get(t);n&&n.sessionId===e&&Ht(n)},onHistoryPromptAccepted:(e,t)=>{let n=xe.get(t);n&&n.sessionId===e&&Ht(n)}}),ot=new ep({start:nt.startSession},Ha,e=>L(pe,e,!0)),st=new Ru({getSummary:nt.getGitSummary,pull:nt.pullGit,checkout:nt.checkoutGitBranch},e=>!!fu(G(m),e)?.isGitRepository,e=>L(M,e,!0),(e,t)=>jn(e,t)),ct=fm((e,n)=>t.authorizedFetch(e,n)),lt=ed({getPlan:nt.getPlan,closePlan:nt.closePlan},e=>{L(Se,e,!0),(e.kind===`ready`||e.kind===`closing`)&&L(k,G(k).map(t=>t.id===e.sessionId?{...t,plan:e.plan}:t),!0)}),ut=vf(),dt=eu({historyStorage:Ql()}),ft=new URLSearchParams(location.search).get(`tree-evidence`),pt=new URLSearchParams(location.search).get(`toast-evidence`),mt=new URLSearchParams(location.search).get(`activity-evidence`),ht=so(window.sessionStorage),gt=new Set;Mn(()=>{for(let[e,t]of G(A).attention){let n=`${e}:${t.requestId}`;ht.claim(n)&&dt.enqueue({kind:`error`,code:`AUTOPILOT_ATTENTION_${t.requestId}`,message:`Autopilot needs your attention.`})}}),Mn(()=>{let e=new Set;for(let[t,n]of G(A).errors){let r=`${t}:${n}`;e.add(r),!gt.has(r)&&(gt.add(r),dt.enqueue({kind:`error`,message:n}))}for(let t of gt)e.has(t)||gt.delete(t)});function _t(){L(c,!0)}function vt(){L(c,!1),Cr().then(()=>document.querySelector(`.menu-trigger`)?.focus())}function yt(){L(s,!1),Cr().then(()=>document.querySelector(`.menu-trigger`)?.focus())}async function bt(){try{await nt.updateRestart(),dt.enqueue({kind:`info`,message:`Update started. Gestalt Mobile will disconnect briefly, then reconnect.`})}catch(e){throw jn(e,`UPDATE_RESTART_FAILED`),e}}Ri(async()=>{if(!(ft===`sessions`||ft===`git`||pt===`error`||pt===`stacked`))try{let e=await Pc(t.authorizedFetch);L(re,pu(G(re)||null,G(m),e.workspaces,su.sessionBase)??``,!0),L(m,e.workspaces,!0),L(T,e.profiles),L(g,{codex:[...new Set([h,...e.models?.codex??[]])],kimi:e.models?.kimi??[]}),L(b,{...G(b),kimi:G(b).kimi||(e.models?.kimi?.[0]??``)}),L(x,e.capabilities?.providers??null),L(_,e.versions??[]),L(v,e.branding?.headerIconUrl??null,!0),r||await cn(),L(ie,cu(G(m)),!0),L(Ve,cu(G(m)),!0);let n=r?null:await ut.readSelectedSession();if(L(O,r?e.sessions.find(e=>e.id===r)?.id??null:e.sessions.some(e=>e.id===n)?n:e.sessions[0]?.id??null,!0),G(O)){let e=await ut.readDraftEnvelope(G(O));L(ye,e.text,!0),be=e.revision,Ut(G(O),e.pending)}L(k,e.sessions,!0);let i=Re(e.sessions.filter(e=>[`ready`,`turnActive`].includes(e.state)));it.bootstrap(i,G(O)),rt.bootstrap(i),r||jt(),lt.select(G(O)),G(O)?at.select(G(O)):r&&L(f,`This session is no longer open in Gestalt Mobile.`)}catch(e){L(f,jn(e,`RELAY_UNAVAILABLE`),!0)}}),Mn(()=>{if(!G(Ye))return;let e=new IntersectionObserver(([e])=>Ze.observeTail(e?.isIntersecting??!1),{root:null});return e.observe(G(Ye)),()=>e.disconnect()}),Mn(()=>{let e=G(i),t=G(a),n=e?JSON.stringify({messages:e.messages.map(({id:e,text:t,complete:n})=>[e,t,n]),activities:e.activities.map(({id:e,label:t,detail:n})=>[e,t,n]),interactions:e.interactions.map(({key:e,state:t,attemptedOutcome:n})=>[e,t,n])}):``;!n||n===Xe||(Xe=n,t===`chat`&&xt(`content`))});function xt(e){et.schedule(e)}function St(){et.invalidate(),Ze.reset(),L(a,`chat`),mn(`chat`),xt(`initial`),hn()}function Ct(e){L(p,$i(e),!0)}function wt(){if(!G(O))return;let e=window.open(Jc(location.href,G(O)),Yc(G(O)),`popup,width=760,height=900`);if(!e){dt.enqueue({kind:`error`,message:`The Chat window was blocked. Allow pop-ups for this site and try again.`});return}try{e.opener=null}catch{}e.focus()}zi(()=>{et.invalidate(),Ze.cancel(),at.dispose(),it.dispose(),rt.dispose(),lt.dispose(),st.dispose(),ot.dispose(),G(E)?.dispose()});async function Tt(e){L(y,e,!0);let t=G(g)[e];if(!G(b)[e]&&t[0]&&L(b,{...G(b),[e]:t[0]}),!(t.length>0)){L(S,e,!0);try{let t=await nt.listSessionModels(e);L(g,{...G(g),[e]:t.models}),!G(b)[e]&&t.models[0]&&L(b,{...G(b),[e]:t.models[0]})}catch(e){jn(e,`SESSION_MODELS_READ_FAILED`)}finally{G(S)===e&&L(S,null)}}}async function Et(){if(!G(re)||G(me))return;let e=G(C)?G(y):`codex`,t=$f({workspaceId:G(re),profile:`default`,profileState:`ok`});if(t.profile){L(f,t.profile,!0);return}L(f,`Starting session…`);let n=await ot.start(G(re),{provider:e,sandbox:G(de),approvalPolicy:G(fe),model:G(b)[e]||void 0,skillProfile:G(te)||void 0});if(!n){G(pe).error&&L(f,jn(Error(G(pe).error),`SESSION_START_FAILED`),!0);return}try{L(O,n.id,!0);for(let e of n.effectiveSkillSelection?.warnings??[])dt.enqueue({kind:`warning`,code:`SKILL_PROFILE_MISSING_SKILL`,message:e});lt.select(n.id),ut.saveSelectedSession(n.id),await Dt();let e=await ut.readDraftEnvelope(n.id);L(ye,e.text,!0),be=e.revision,Ut(n.id,e.pending),at.select(n.id,{history:`empty`}),it.select(n.id),St(),L(f,`Session started.`)}catch(e){L(f,jn(e,`SESSION_START_FAILED`),!0)}}async function Dt(){let e=++se;ce?.abort();let t=new AbortController;ce=t;try{let n=await nt.listSessions(t.signal);if(e!==se||t.signal.aborted)return;L(k,n.map(e=>G(oe).has(e.id)?{...e,plan:G(oe).get(e.id)}:e),!0);let r=Re(G(k).filter(e=>[`ready`,`turnActive`].includes(e.state)));it.bootstrap(r,G(O)),rt.bootstrap(r)}catch(e){if(t.signal.aborted||Pn(e))return;throw e}finally{ce===t&&(ce=null)}}async function Ot(e,t){await rt.toggle(e,t),e===G(O)&&Dt().catch(()=>{})}async function kt(e){await Ot(e,!0),await Cr(),e===G(O)&&document.getElementById(`chat-autopilot-${e}-button`)?.focus({preventScroll:!0})}async function At(e,t,n){await rt.resolve(e,t,n),e===G(O)&&Dt().catch(()=>{})}async function jt(){try{L(ue,await nt.listRecentSessions(),!0)}catch{L(ue,[],!0)}}async function F(){try{await Promise.all([Dt(),jt()])}catch(e){L(f,jn(e,`SESSION_REFRESH_FAILED`),!0)}}async function Mt(e){L(f,`Opening session…`),L(he,e,!0);let t=++ge;try{L(O,e,!0),L(_e,null),L(ve,null),lt.select(e),ut.saveSelectedSession(e),at.select(e),it.select(e),St();let n=await ut.readDraftEnvelope(e);t===ge&&G(O)===e&&(L(ye,n.text,!0),be=n.revision,Ut(e,n.pending))}catch(e){L(f,jn(e,`SESSION_HISTORY_READ_FAILED`),!0)}finally{t===ge&&L(he,null)}}async function Nt(e){L(f,`Opening recent session…`);try{let t=await nt.openRecentSession(e.id,e.cwd,e.provider??`codex`);G(k).some(e=>e.id===t.id)||L(k,[...G(k),t],!0),F(),await Mt(t.id)}catch(e){L(f,jn(e,`SESSION_HISTORY_READ_FAILED`),!0)}}async function Pt(e){L(f,`Closing session…`);try{await nt.releaseSession(e),G(O)===e&&(L(O,null),L(a,`sessions`),ut.saveSelectedSession(null),at.select(null),it.select(null),lt.select(null)),await F(),L(f,`Session closed.`)}catch(e){L(f,`Could not close session: ${An(e)}`)}}async function Ft(e){let t=G(k).find(t=>t.id===e);try{await nt.forgetSession(e),G(O)===e&&(at.select(null),it.select(null),L(O,null),ut.saveSelectedSession(null),lt.select(null)),await F(),L(ue,Sf(G(ue),t),!0)}catch(e){L(f,`Could not forget session: ${An(e)}`)}}async function It(e){L(f,await Bs(e)?`Resume command copied.`:`Could not copy the resume command.`,!0)}async function Lt(e){if(!(!G(O)||G(i)?.activeTurnId))try{let t=await nt.selectModel(G(O),e);L(k,G(k).map(e=>e.id===t.id?{...e,...t}:e),!0),L(ye,``),L(f,`Model changed to ${e}; it applies to the next turn.`)}catch(e){L(f,`Could not change model: ${An(e)}`)}}async function Rt(e){if(!G(O)||!G(ye).trim()||!at.canSubmit(e)||[...xe.values()].some(e=>e.sessionId===G(O)&&e.revision===be))return;let t=Ha(),n={sessionId:G(O),revision:be,text:G(ye),operationId:t,kind:e};xe.set(t,n),ut.addPendingDraftOperation(G(O),n),e===`send`?at.send(n.text,t):e===`queue`?at.queue(n.text,t):at.interruptAndSend(n.text,t)}let zt=()=>Rt(`send`),Bt=()=>Rt(`queue`),Vt=()=>Rt(`interrupt-send`);async function Ht(e){let t=await ut.consumeAcceptedDraft(e.sessionId,e.revision,e.operationId);t&&xe.delete(e.operationId),t&&e.sessionId===G(O)&&e.revision===be?(G(ve)===e.operationId&&(L(ve,null),L(_e,null)),L(ye,``),be=t.revision,xt(`explicit`)):e.sessionId===G(O)&&e.revision===be&&(L(_e,null),L(ve,e.operationId,!0),dt.enqueue({kind:`warning`,code:`PROMPT_LOCAL_RECOVERY_${e.operationId}`,message:`The accepted prompt could not be saved locally. Keep this text until recovery completes. Retry is available.`}))}function Ut(e,t){for(let n of t??[])xe.set(n.operationId,{sessionId:e,...n});e===G(O)&&(t?.length??0)>0&&(L(_e,null),L(ve,t[0].operationId,!0),dt.enqueue({kind:`warning`,code:`PROMPT_RECOVERY_${G(ve)}`,message:`A submitted prompt is being recovered. It will not be sent again automatically. Retry is available.`}))}async function Wt(){if(!G(ve))return;L(_e,null);let e=xe.get(G(ve));if(!e){await at.retryPrompt(G(ve));return}e.kind===`send`?await at.send(e.text,e.operationId):e.kind===`queue`?await at.queue(e.text,e.operationId):await at.interruptAndSend(e.text,e.operationId)}async function Gt(){await at.interrupt()}function Kt(){G(a)===`chat`&&G(O)&&at.refresh()}function qt(e){if(r||e===`chat`&&!G(le))return;let t=G(a)!==e;G(a)===`chat`&&e!==`chat`&&(et.invalidate(),Ze.cancel()),L(a,e,!0),mn(e),e===`chat`&&(Kt(),Ze.reset(),xt(`initial`),t&&hn()),e===`git`&&G(Be)&&st.refresh(),e===`plan`&&(G(O)&<.refresh(G(O)),t||on()),e===`sessions`&&(G(D)===`profile-manager`&&pn(!1),F(),G(O)&<.refresh(G(O)))}Mn(()=>{let e=G(Me);G(a)===`plan`&&tn(e)});let Jt=!1;function Yt(){document.visibilityState!==`visible`||Jt||(Jt=!0,queueMicrotask(()=>{Jt=!1,document.visibilityState===`visible`&&(G(a)===`git`&&G(Be)&&st.refresh(),G(a)===`plan`&&on(),G(a)===`sessions`&&(F(),G(O)&<.refresh(G(O))))}))}let Xt=null;function Zt(e){return e instanceof Element&&e.closest(`button, input, textarea, select, a, summary, [contenteditable]`)!==null}function Qt(e){e.pointerType!==`touch`||Zt(e.target)||(Xt={pointerId:e.pointerId,x:e.clientX,y:e.clientY})}function $t(e){if(!Xt||e.pointerId!==Xt.pointerId)return;let t=Xt;Xt=null;let n=e.clientX-t.x,r=e.clientY-t.y;Math.abs(n)<48||Math.abs(n)<=Math.abs(r)||qt(np(G(a),n<0?1:-1,{chatEnabled:G(le)}))}function en(e){Xt?.pointerId===e.pointerId&&(Xt=null)}function tn(e=G(Me)){if(De?.abort(),Oe?.abort(),L(we,null),L(Te,null),!e){L(Ce,{kind:`no-workspace`});return}let t=new AbortController;De=t;let n=++ke;L(Ce,{kind:`loading`,workspaceId:e}),nt.listWorkspacePlans(e,t.signal).then(r=>{n!==ke||t.signal.aborted||L(Ce,{kind:`ready`,workspaceId:e,entries:r})}).catch(r=>{n!==ke||t.signal.aborted||(G(j)||dt.enqueue({kind:`error`,code:`WORKSPACE_PLANS_READ_FAILED`,message:`Workspace Org files could not be listed. Try opening the Plan tab again.`}),L(Ce,{kind:`error`,workspaceId:e,error:r instanceof Error?r.message:`Could not load workspace plans.`}))})}function nn(e){let t=G(Me);if(!t)return;Oe?.abort();let n=new AbortController;Oe=n;let r=++Ae;(G(O)?nt.openSessionPlan(G(O),e):nt.getWorkspacePlan(t,e,n.signal)).then(t=>{r!==Ae||n.signal.aborted||(L(we,t),L(Te,e,!0),L(Ee,!1))}).catch(()=>{r!==Ae||n.signal.aborted||dt.enqueue({kind:`error`,code:`WORKSPACE_PLAN_OPEN_${e}`,message:`This Org file could not be opened. Check that it is readable and try again.`})})}function rn(e){let t=G(Me),n=G(Ne),r=n?Rs(e,n):null;if(!t||!r){dt.enqueue({kind:`error`,code:`ORG_LINK_OUTSIDE_WORKSPACE`,message:`This Org file is not inside the selected workspace and cannot be opened.`});return}qt(`plan`),Cr().then(()=>{G(Me)!==t||G(Ne)!==n||nn(r)})}function an(){L(we,null),L(Te,null),L(Ee,!0),tn()}function on(){G(O)&<.refresh(G(O)),G(Te)?nn(G(Te)):tn()}async function sn(e,t){let n=new Sp(nt);await n.load(e,t),L(E,n,!0)}async function cn(){try{let e=await nt.listSkillProfiles();L(ee,e.profiles.filter(e=>!(`error`in e)));let t=e.profiles.find(e=>`error`in e);L(ne,t&&`error`in t?t.error.message:``,!0),G(ee).some(e=>e.name===G(te))||L(te,``)}catch(e){L(ee,[]),L(ne,e instanceof Error?e.message:`Unable to load saved skill profiles.`,!0)}}async function dn(e){let t=G(re)||G(m)[0]?.id||``,n=G(T).find(e=>e.state===`ok`)?.name??``;if(!t||!n){L(f,`Choose a workspace and available Codex profile before managing skill profiles.`);return}await sn(t,n),L(D,`profile-manager`)}function fn(e){queueMicrotask(()=>e.focus())}async function pn(e=!0){L(D,`list`),await Cr(),e&&document.getElementById(`manage-skill-profiles`)?.focus()}function mn(e){requestAnimationFrame(()=>{G(a)===e&&e!==`chat`&&window.scrollTo({top:0})})}function hn(){Cr().then(()=>{G(a)===`chat`&&document.getElementById(`message`)?.focus({preventScroll:!0})})}function gn(e){st.select(e.id),L(He,!1)}function _n(e){let t=G(Be)?fu(G(m),G(Be)):null;t&&(L(l,t,!0),L(u,e,!0))}async function vn(){L(l,null),await Cr(),G(u)?.focus({preventScroll:!0})}function yn(){d||(d=!0,queueMicrotask(()=>{d=!1,G(Be)&&st.refresh()}))}async function bn(){let e=G(Be);!e||!fu(G(m),e)?.isGitRepository||(L(Ge,G(Ge)??Ha(),!0),await st.pull(G(Ge)),G(M).error||L(Ge,null))}async function xn(e){if(G(Ue))return;let n=G(Be)?fu(G(m),G(Be)):void 0;if(!n||n.isGitRepository){L(We,null),dt.enqueue({kind:`error`,code:`INVALID_CLONE_DESTINATION`,message:`Select a non-repository folder before cloning.`});return}let r=n.id;L(Ue,!0),L(We,null);try{await nt.cloneGitRepository(r,e);let n=await Pc(t.authorizedFetch),i=zu(G(m),n.workspaces,r,e,G(Ve));L(re,pu(G(re)||null,G(m),n.workspaces,su.sessionBase)??``,!0),L(m,n.workspaces,!0),st.select(i.selectedId),L(Ve,i.expandedIds,!0),L(We,`Repository cloned into the selected workspace.`),dt.enqueue({kind:`success`,message:`Repository cloned.`})}catch(e){jn(e,`GIT_CLONE_FAILED`)}finally{L(Ue,!1)}}async function Sn(e){G(Be)&&await st.checkout(e)}async function Cn(){let e=G(Be);if(e){L(Ke,G(Ke)??Ha(),!0);try{await nt.pushGit(e,G(Ke)),L(He,!1),await st.refresh(),L(Ke,null)}catch(e){jn(e,`GIT_PUSH_FAILED`)}}}async function wn(e,t){xt(`explicit`),await at.respond(e,{decision:t})}async function Tn(e){xt(`explicit`);let t=e.kind===`quiz`?ns(e.payload):rs(e.payload);if(!t)return;let n=t.questions.map(t=>({id:t.id,answer:qe[`${e.requestId}:${t.id}`]??``})),r=t.questions.map((e,t)=>({id:e.id,header:e.header,question:e.question,answer:n[t]?.answer??``}));L(Je,{...G(Je),[e.requestId]:r});let a=e.kind===`quiz`?is(n):Uu(n);try{let t=`quiz-answer:${e.requestId}`,n=G(i)?.prompts.find(e=>e.operationId===t);if(!n||n.state===`failed`){let e=Wu(r);G(i)?.activeTurnId?await at.queue(e,t):await at.send(e,t)}let o=at.view.prompts.find(e=>e.operationId===t);if(e.kind===`quiz`&&(!o||o.state===`failed`))return;await at.respond(e.requestId,a)}catch{L(f,`Could not send quiz answers. Please try again.`)}}async function En(e){let t=Hu(e.payload);if(!t){L(f,`Codex sent an invalid permission request.`);return}xt(`explicit`),await at.respond(e.requestId,t)}function Dn(e){e.kind===`quiz`||e.kind===`userInput`?Tn(e):e.kind===`permissionsApproval`?En(e):at.retryInteraction(e.requestId)}function On(e,t,n){qe[`${e}:${t}`]=n}function kn(e){L(ye,e,!0),be+=1;let t=G(O);t&&ut.replaceDraftText(t,e,be)}function An(e){return e instanceof Error?e.message:`Unknown relay error.`}function jn(e,t){let n=Ul(e,t);return dt.enqueue({kind:`error`,...n}),n.message}function Nn(e){dt.enqueue(e?{kind:`success`,message:`Code copied.`}:{kind:`error`,message:`Code could not be copied. Select it and copy it manually.`})}function Pn(e){return(e instanceof DOMException||e instanceof Error)&&e.name===`AbortError`}function Fn(e){let t=G(O);if(!t||e.type===`agent.activity.updated`)return;if(e.type===`session.status.updated`){let n=e.payload;Vl(n)&&L(k,G(k).map(e=>e.id===t?{...e,sessionStatus:n}:e),!0);return}if(e.type===`session.updated`&&typeof e.payload==`object`&&e.payload!==null){let n=e.payload;n.id===t&&L(k,G(k).map(e=>e.id===t?{...e,...n}:e),!0);return}if(e.type!==`plan.updated`&&e.type!==`plan.closed`)return;if(lt.applyEvent(t,e),e.type===`plan.closed`){L(oe,new Map(G(oe)).set(t,void 0)),L(k,G(k).map(e=>e.id===t?{...e,plan:void 0}:e),!0);return}let n=Ju(e.payload)?e.payload.plan:Yu(e.payload)?e.payload:null;n&&L(oe,new Map(G(oe)).set(t,n)),n&&L(k,G(k).map(e=>e.id===t?{...e,plan:n}:e),!0)}var In=Hr();oi(`1d2e8zz`,e=>{Rn(()=>{un.title=r&&G(Fe)?`Chat · ${G(Fe)} · Gestalt Mobile`:`Gestalt Mobile`})}),Nr(`focus`,ln,Yt),Nr(`visibilitychange`,un,Yt);var Ln=B(In),zn=e=>{za(e,{})},Bn=e=>{ou(e,{get variant(){return pt}})},Vn=e=>{var t=lh();Su(z(t),{get context(){return ft}}),N(t),J(e,t)},Hn=e=>{var u=vh(),d=B(u),y=z(d),x=e=>{{let n=P(()=>G(a)===`chat`?Cf(G(k).find(e=>e.id===G(O))?.workspacePath??``):null),r=P(()=>G(a)===`chat`?G(Ie):null),i=P(()=>G(a)===`chat`&&G(O)?wt:void 0);da(e,{get theme(){return G(p)},get sessionPath(){return G(n)},get sessionModel(){return G(r)},get weeklyQuotaRemaining(){return G(ze)},get brandIconUrl(){return G(v)},get componentVersions(){return G(_)},get passkeyAuthEnabled(){return t.passkeyAuthEnabled},get onlock(){return t.onlock},ondevices:()=>L(o,!0),onnotifications:()=>L(s,!0),onscratchpad:_t,onupdaterestart:bt,onthemechange:Ct,get ondetach(){return G(i)}})}};X(y,e=>{!G(o)&&!G(s)&&!r&&e(x)});var T=V(y,2),oe=e=>{var t=dh(),n=z(t),i=V(z(n),2),a=z(i,!0);N(i),N(n);var o=V(n,2),s=e=>{var t=uh(),n=z(t);N(t),H(()=>Y(n,`${G(Pe).provider===`kimi`?`Kimi · `:``}${G(Pe).model??``}`)),J(e,t)};X(o,e=>{G(Pe)?.model&&e(s)}),N(t),H(()=>{Q(i,`title`,G(Fe)||r),Y(a,G(Fe)||r)}),J(e,t)};X(T,e=>{r&&e(oe)});var se=V(T,2);iu(se,{get queue(){return dt}});var ce=V(se,2),pe=e=>{um(e,{get client(){return ct},onclose:()=>{L(o,!1),Cr().then(()=>document.querySelector(`.menu-trigger`)?.focus())},get onlock(){return t.onlock},oncreatepasskey:e=>n()(e)})},ge=e=>{Yl(e,{get queue(){return dt},onclose:yt})},be=e=>{var t=_h(),n=B(t),o=e=>{var t=mh(),n=V(z(t),2);{let e=P(()=>G(O)?G(A).attention.get(G(O))??null:null),t=P(()=>`chat-attention-${G(O)??`none`}`),r=P(()=>G(O)?G(A).pending.has(G(O)):!1);io(n,{get attention(){return G(e)},get controlId(){return G(t)},get pending(){return G(r)},onresolve:(e,t)=>G(O)&&At(G(O),e,t)})}var a=V(n,2);{let e=P(()=>G(O)?G(A).snapshots.get(G(O))??null:null),t=P(()=>G(O)?G(A).attention.get(G(O))??null:null),n=P(()=>`chat-autopilot-safety-${G(O)??`none`}`),r=P(()=>G(O)?G(A).pending.has(G(O)):!1);oo(a,{get autopilot(){return G(e)},get attention(){return G(t)},get controlId(){return G(n)},get pending(){return G(r)},onrecover:()=>G(O)&&void kt(G(O)),ondisable:()=>G(O)&&Ot(G(O),!1)})}var o=V(a,2),s=z(o,!0);N(o);var c=V(o,2),l=e=>{var t=fh(),n=B(t);{let e=P(()=>G(i)?[...G(i).messages]:[]),t=P(()=>G(i)?[...G(i).activities]:[]),r=P(()=>G(i)?.activeTurnId??null),a=P(()=>G(i)?.autopilotAuditTruncated??!1),o=P(()=>G(i)?[...G(i).interactions]:[]);Ac(n,{get messages(){return G(e)},get activities(){return G(t)},get activeTurnId(){return G(r)},get autopilotAuditTruncated(){return G(a)},get interactions(){return G(o)},get answers(){return qe},get submittedAnswers(){return G(Je)},onanswer:On,onquiz:e=>void Tn(e),onpermission:e=>void En(e),ondecision:(e,t)=>void wn(e,t),onretry:Dn,onopenorg:rn,oncopyresult:Nn})}var r=V(n,2);{let e=P(()=>G(i)?.status??G(f)),t=P(()=>G(i)?.activeTurnId??null),n=P(()=>G(i)?.starting??!1),a=P(()=>!!(G(k).find(e=>e.id===G(O))&&![`ready`,`turnActive`].includes(G(k).find(e=>e.id===G(O))?.state??``))),o=P(()=>G(ve)!==null),s=P(()=>G(g)[G(k).find(e=>e.id===G(O))?.provider??`codex`]),c=P(()=>G(k).find(e=>e.id===G(O))?.provider??`codex`);Ao(r,{get status(){return G(e)},get message(){return G(ye)},get activeTurnId(){return G(t)},get starting(){return G(n)},get detached(){return G(a)},get retryMessage(){return G(_e)},get retryable(){return G(o)},get models(){return G(s)},get provider(){return G(c)},onchange:kn,onscrollbottom:()=>xt(`explicit`),onmodelselect:e=>void Lt(e),onsend:()=>void zt(),onqueue:()=>void Bt(),oninterruptsend:()=>void Vt(),onretry:()=>void Wt(),oninterrupt:()=>void Gt()})}var a=V(r,2),o=z(a),s=e=>{{let t=P(()=>G(A).snapshots.get(G(O))??null),n=P(()=>`chat-autopilot-${G(O)}`),r=P(()=>G(A).pending.has(G(O)));no(e,{compact:!0,get autopilot(){return G(t)},get controlId(){return G(n)},get pending(){return G(r)},ontoggle:e=>G(O)&&Ot(G(O),e)})}};X(o,e=>{G(Pe)?.provider!==`kimi`&&e(s)});var c=V(o,2);{let e=P(()=>G(ae).get(G(O))??null),t=P(()=>G(k).find(e=>e.id===G(O))?.model??h),n=P(()=>G(k).find(e=>e.id===G(O))?.plan);La(c,{compact:!0,get activity(){return G(e)},get rootModel(){return G(t)},get plan(){return G(n)},onopen:()=>G(O)&&void it.resync(G(O))})}N(a),Li(V(a,2),e=>L(Ye,e),()=>G(Ye)),J(e,t)},u=e=>{var t=ph(),n=z(t,!0);N(t),H(()=>Y(n,r?G(f):G(C)?`Start a session from the Sessions tab to chat with Codex or Kimi.`:`Start a session from the Sessions tab to chat with Codex.`)),J(e,t)};X(c,e=>{G(O)?e(l):e(u,-1)}),N(t),H(()=>Y(s,G(tt))),J(e,t)},s=e=>{df(e,{get catalog(){return G(Ce)},get state(){return G(j)},onopen:nn,onclose:an})},c=e=>{{let t=P(()=>G(Be)?fu(G(m),G(Be))??null:null);Lu(e,{get workspaceTree(){return G(m)},get selectedWorkspace(){return G(t)},get expandedIds(){return G(Ve)},get summary(){return G(M).summary},get refreshing(){return G(M).refreshing},get checkingOut(){return G(M).checkingOut},get cloning(){return G(Ue)},get error(){return G(M).error},get cloneStatus(){return G(We)},get confirmingPush(){return G(He)},onpull:()=>void bn(),oncheckout:e=>void Sn(e),onopenpushconfirmation:()=>L(He,!0),onpush:()=>void Cn(),oncancelpush:()=>L(He,!1),onselect:gn,onexpandedchange:e=>L(Ve,e,!0),onbrowsefiles:_n,onclone:e=>void xn(e)})}},u=e=>{var t=Hr(),n=B(t),r=e=>{var t=gh(),n=z(t),r=z(n);si(r,()=>fn);var i=V(r,2);N(n);var a=V(n,2),o=e=>{xp(e,{get skillsState(){return G(E)},onrefresh:()=>G(E)?.refresh()??Promise.resolve(),onprofileschange:()=>void cn(),heading:`Skill profile editor`})},s=e=>{J(e,hh())};X(a,e=>{G(E)?e(o):e(s,-1)}),N(t),K(`click`,i,()=>void pn()),J(e,t)},i=e=>{{let t=P(()=>G(S)===G(w));Qf(e,{get sessions(){return G(k)},get recentSessions(){return G(ue)},get selectedSessionId(){return G(O)},get activitySnapshots(){return G(ae)},get autopilotSnapshots(){return G(A).snapshots},get autopilotPending(){return G(A).pending},get autopilotAttention(){return G(A).attention},get workspaceTree(){return G(m)},get workspaceId(){return G(re)},get expandedIds(){return G(ie)},get sandbox(){return G(de)},get approvalPolicy(){return G(fe)},get models(){return G(g)[G(w)]},get selectedModel(){return G(b)[G(w)]},get provider(){return G(w)},get kimiAvailable(){return G(C)},get modelsLoading(){return G(t)},get skillProfiles(){return G(ee)},get selectedSkillProfile(){return G(te)},get skillProfileError(){return G(ne)},get startingSession(){return G(me)},get openingSessionId(){return G(he)},onworkspacechange:e=>L(re,e,!0),onexpandedchange:e=>L(ie,e,!0),onsandboxchange:e=>L(de,e,!0),onapprovalpolicychange:e=>L(fe,e,!0),onmodelchange:e=>L(b,{...G(b),[G(w)]:e}),onproviderchange:e=>void Tt(e),onskillprofilechange:e=>L(te,e,!0),onmanageprofiles:e=>void dn(e),onopen:Mt,onselectopen:Mt,onclose:e=>void Pt(e),onautopilottoggle:Ot,onactivityopen:e=>void it.resync(e),onautopilotresolve:At,onopenrecent:e=>void Nt(e),onforget:e=>void Ft(e),oncopyresume:e=>void It(e),onstart:()=>void Et()})}};X(n,e=>{G(D)===`profile-manager`?e(r):e(i,-1)}),J(e,t)};X(n,e=>{G(a)===`chat`?e(o):G(a)===`plan`?e(s,1):G(a)===`git`?e(c,2):e(u,-1)});var d=V(n,2),p=e=>{ch(e,{get root(){return G(l)},get listDirectory(){return nt.listWorkspaceDirectory},get copyEntry(){return nt.copyWorkspaceEntry},get moveEntry(){return nt.moveWorkspaceEntry},get deleteEntry(){return nt.deleteWorkspaceEntry},get uploadFile(){return nt.uploadWorkspaceFile},onclose:()=>void vn(),onerror:e=>jn(e,`WORKSPACE_FILES_READ_FAILED`),onsuccess:e=>dt.enqueue({kind:`success`,message:e}),onmutation:yn})};X(d,e=>{G(l)&&e(p)});var _=V(d,2),v=e=>{ip(e,{get activeTab(){return G(a)},get chatEnabled(){return G(le)},get focusTab(){return G(je)},onselect:qt})};X(_,e=>{r||e(v)}),J(e,t)};X(ce,e=>{G(o)&&t.passkeyAuthEnabled?e(pe):G(s)?e(ge,1):e(be,-1)}),N(d);var xe=V(d,2),Se=e=>{Sm(e,{onclose:vt})};X(xe,e=>{G(c)&&e(Se)}),K(`pointerdown`,d,Qt),K(`pointerup`,d,$t),Nr(`pointercancel`,d,en),J(e,u)};X(Ln,e=>{mt===`true`?e(zn):pt===`error`||pt===`stacked`?e(Bn,1):ft===`sessions`||ft===`git`?e(Vn,2):e(Hn,-1)}),J(e,In),$e()}Pr([`pointerdown`,`pointerup`,`click`]);function bh(){throw Error(`AUTH_RESPONSE_INVALID`)}async function xh(e){if(!e.ok){let t;try{let n=await e.json();typeof n==`object`&&n&&`code`in n&&typeof n.code==`string`&&(t=n.code)}catch{}throw Error(t??`AUTH_REQUEST_FAILED_${e.status}`)}return e.json()}function Sh(e){return!!e&&typeof e==`object`&&[`bootstrap`,`locked`,`authenticated`].includes(e.status)&&typeof e.publicOrigin==`string`&&(e.passkeyAuthEnabled===void 0||typeof e.passkeyAuthEnabled==`boolean`)}function Ch(e){return!!e&&typeof e==`object`&&!!e.options&&typeof e.options.challenge==`string`}function wh(e){return!!e&&typeof e==`object`&&e.status===`authenticated`}function Th(e=fetch){async function t(){let t=await xh(await e(`/api/auth/status`,{credentials:`same-origin`}));return Sh(t)||bh(),t}async function n(t,n={}){let r=await xh(await e(t,{method:`POST`,credentials:`same-origin`,headers:{"content-type":`application/json`},body:JSON.stringify(n)}));return Ch(r)||bh(),r}async function r(t,n){let r=await xh(await e(t,{method:`POST`,credentials:`same-origin`,headers:{"content-type":`application/json`},body:JSON.stringify(n)}));return wh(r)||bh(),r}return{status:t,registrationOptions:e=>n(`/api/auth/register/options`,e?{enrollmentTicket:e}:{}),verifyRegistration:(e,t)=>r(`/api/auth/register/verify`,{response:e,nickname:t}),loginOptions:()=>n(`/api/auth/login/options`),verifyLogin:e=>r(`/api/auth/login/verify`,{response:e}),logout:async()=>{let t=await e(`/api/auth/logout`,{method:`POST`,credentials:`same-origin`});if(!t.ok)throw Error(`AUTH_REQUEST_FAILED_${t.status}`)}}}function Eh(e,t=fetch){return async(n,r)=>{let i=await t(n,{...r,credentials:`same-origin`});return i.status===401&&(await i.clone().json().catch(()=>null))?.code===`AUTH_REQUIRED`&&e(),i}}function Dh(e){let t=new Uint8Array(e),n=``;for(let e of t)n+=String.fromCharCode(e);return btoa(n).replace(/\+/g,`-`).replace(/\//g,`_`).replace(/=/g,``)}function Oh(e){let t=e.replace(/-/g,`+`).replace(/_/g,`/`),n=(4-t.length%4)%4,r=t.padEnd(t.length+n,`=`),i=atob(r),a=new ArrayBuffer(i.length),o=new Uint8Array(a);for(let e=0;e<i.length;e++)o[e]=i.charCodeAt(e);return a}function kh(){return Ah.stubThis(globalThis?.PublicKeyCredential!==void 0&&typeof globalThis.PublicKeyCredential==`function`)}var Ah={stubThis:e=>e};function jh(e){let{id:t}=e;return{...e,id:Oh(t),transports:e.transports}}function Mh(e){return e===`localhost`||/^((xn--[a-z0-9-]+|[a-z0-9]+(-[a-z0-9]+)*)\.)+([a-z]{2,}|xn--[a-z0-9-]+)$/i.test(e)}var Nh=class extends Error{constructor({message:e,code:t,cause:n,name:r}){super(e,{cause:n}),Object.defineProperty(this,"code",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.name=r??n.name,this.code=t}};function Ph({error:e,options:t}){let{publicKey:n}=t;if(!n)throw Error(`options was missing required publicKey property`);if(e.name===`AbortError`){if(t.signal instanceof AbortSignal)return new Nh({message:`Registration ceremony was sent an abort signal`,code:`ERROR_CEREMONY_ABORTED`,cause:e})}else if(e.name===`ConstraintError`){if(n.authenticatorSelection?.requireResidentKey===!0)return new Nh({message:`Discoverable credentials were required but no available authenticator supported it`,code:`ERROR_AUTHENTICATOR_MISSING_DISCOVERABLE_CREDENTIAL_SUPPORT`,cause:e});if(t.mediation===`conditional`&&n.authenticatorSelection?.userVerification===`required`)return new Nh({message:`User verification was required during automatic registration but it could not be performed`,code:`ERROR_AUTO_REGISTER_USER_VERIFICATION_FAILURE`,cause:e});if(n.authenticatorSelection?.userVerification===`required`)return new Nh({message:`User verification was required but no available authenticator supported it`,code:`ERROR_AUTHENTICATOR_MISSING_USER_VERIFICATION_SUPPORT`,cause:e})}else if(e.name===`InvalidStateError`)return new Nh({message:`The authenticator was previously registered`,code:`ERROR_AUTHENTICATOR_PREVIOUSLY_REGISTERED`,cause:e});else if(e.name===`NotAllowedError`)return new Nh({message:e.message,code:`ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY`,cause:e});else if(e.name===`NotSupportedError`)return n.pubKeyCredParams.filter(e=>e.type===`public-key`).length===0?new Nh({message:`No entry in pubKeyCredParams was of type "public-key"`,code:`ERROR_MALFORMED_PUBKEYCREDPARAMS`,cause:e}):new Nh({message:`No available authenticator supported any of the specified pubKeyCredParams algorithms`,code:`ERROR_AUTHENTICATOR_NO_SUPPORTED_PUBKEYCREDPARAMS_ALG`,cause:e});else if(e.name===`SecurityError`){let t=globalThis.location.hostname;if(!Mh(t))return new Nh({message:`${globalThis.location.hostname} is an invalid domain`,code:`ERROR_INVALID_DOMAIN`,cause:e});if(n.rp.id!==t)return new Nh({message:`The RP ID "${n.rp.id}" is invalid for this domain`,code:`ERROR_INVALID_RP_ID`,cause:e})}else if(e.name===`TypeError`){if(n.user.id.byteLength<1||n.user.id.byteLength>64)return new Nh({message:`User ID was not between 1 and 64 characters`,code:`ERROR_INVALID_USER_ID_LENGTH`,cause:e})}else if(e.name===`UnknownError`)return new Nh({message:`The authenticator was unable to process the specified options, or could not create a new credential`,code:`ERROR_AUTHENTICATOR_GENERAL_ERROR`,cause:e});return e}var Fh=new class{constructor(){Object.defineProperty(this,"controller",{enumerable:!0,configurable:!0,writable:!0,value:void 0})}createNewAbortSignal(){if(this.controller){let e=Error(`Cancelling existing WebAuthn API call for new one`);e.name=`AbortError`,this.controller.abort(e)}let e=new AbortController;return this.controller=e,e.signal}cancelCeremony(){if(this.controller){let e=Error(`Manually cancelling existing WebAuthn API call`);e.name=`AbortError`,this.controller.abort(e),this.controller=void 0}}},Ih=[`cross-platform`,`platform`];function Lh(e){if(e&&!(Ih.indexOf(e)<0))return e}async function Rh(e){!e.optionsJSON&&e.challenge&&(console.warn(`startRegistration() was not called correctly. It will try to continue with the provided options, but this call should be refactored to use the expected call structure instead. See https://simplewebauthn.dev/docs/packages/browser#typeerror-cannot-read-properties-of-undefined-reading-challenge for more information.`),e={optionsJSON:e});let{optionsJSON:t,useAutoRegister:n=!1}=e;if(!kh())throw Error(`WebAuthn is not supported in this browser`);let r={...t,challenge:Oh(t.challenge),user:{...t.user,id:Oh(t.user.id)},excludeCredentials:t.excludeCredentials?.map(jh)},i={};n&&(i.mediation=`conditional`),i.publicKey=r,i.signal=Fh.createNewAbortSignal();let a;try{a=await navigator.credentials.create(i)}catch(e){throw Ph({error:e,options:i})}if(!a)throw Error(`Registration was not completed`);let{id:o,rawId:s,response:c,type:l}=a,u;typeof c.getTransports==`function`&&(u=c.getTransports());let d;if(typeof c.getPublicKeyAlgorithm==`function`)try{d=c.getPublicKeyAlgorithm()}catch(e){zh(`getPublicKeyAlgorithm()`,e)}let f;if(typeof c.getPublicKey==`function`)try{let e=c.getPublicKey();e!==null&&(f=Dh(e))}catch(e){zh(`getPublicKey()`,e)}let p;if(typeof c.getAuthenticatorData==`function`)try{p=Dh(c.getAuthenticatorData())}catch(e){zh(`getAuthenticatorData()`,e)}return{id:o,rawId:Dh(s),response:{attestationObject:Dh(c.attestationObject),clientDataJSON:Dh(c.clientDataJSON),transports:u,publicKeyAlgorithm:d,publicKey:f,authenticatorData:p},type:l,clientExtensionResults:a.getClientExtensionResults(),authenticatorAttachment:Lh(a.authenticatorAttachment)}}function zh(e,t){console.warn(`The browser extension that intercepted this WebAuthn API call incorrectly implemented ${e}. You should report this error to them.\n`,t)}function Bh(){if(!kh())return Vh.stubThis(new Promise(e=>e(!1)));let e=globalThis.PublicKeyCredential;return e?.isConditionalMediationAvailable===void 0?Vh.stubThis(new Promise(e=>e(!1))):Vh.stubThis(e.isConditionalMediationAvailable())}var Vh={stubThis:e=>e};function Hh({error:e,options:t}){let{publicKey:n}=t;if(!n)throw Error(`options was missing required publicKey property`);if(e.name===`AbortError`){if(t.signal instanceof AbortSignal)return new Nh({message:`Authentication ceremony was sent an abort signal`,code:`ERROR_CEREMONY_ABORTED`,cause:e})}else if(e.name===`NotAllowedError`)return new Nh({message:e.message,code:`ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY`,cause:e});else if(e.name===`SecurityError`){let t=globalThis.location.hostname;if(!Mh(t))return new Nh({message:`${globalThis.location.hostname} is an invalid domain`,code:`ERROR_INVALID_DOMAIN`,cause:e});if(n.rpId!==t)return new Nh({message:`The RP ID "${n.rpId}" is invalid for this domain`,code:`ERROR_INVALID_RP_ID`,cause:e})}else if(e.name===`UnknownError`)return new Nh({message:`The authenticator was unable to process the specified options, or could not create a new assertion signature`,code:`ERROR_AUTHENTICATOR_GENERAL_ERROR`,cause:e});return e}async function Uh(e){!e.optionsJSON&&e.challenge&&(console.warn(`startAuthentication() was not called correctly. It will try to continue with the provided options, but this call should be refactored to use the expected call structure instead. See https://simplewebauthn.dev/docs/packages/browser#typeerror-cannot-read-properties-of-undefined-reading-challenge for more information.`),e={optionsJSON:e});let{optionsJSON:t,useBrowserAutofill:n=!1,verifyBrowserAutofillInput:r=!0}=e;if(!kh())throw Error(`WebAuthn is not supported in this browser`);let i;t.allowCredentials?.length!==0&&(i=t.allowCredentials?.map(jh));let a={...t,challenge:Oh(t.challenge),allowCredentials:i},o={};if(n){if(!await Bh())throw Error(`Browser does not support WebAuthn autofill`);if(document.querySelectorAll(`input[autocomplete$='webauthn']`).length<1&&r)throw Error('No <input> with "webauthn" as the only or last value in its `autocomplete` attribute was detected');o.mediation=`conditional`,a.allowCredentials=[]}o.publicKey=a,o.signal=Fh.createNewAbortSignal();let s;try{s=await navigator.credentials.get(o)}catch(e){throw Hh({error:e,options:o})}if(!s)throw Error(`Authentication was not completed`);let{id:c,rawId:l,response:u,type:d}=s,f;return u.userHandle&&(f=Dh(u.userHandle)),{id:c,rawId:Dh(l),response:{authenticatorData:Dh(u.authenticatorData),clientDataJSON:Dh(u.clientDataJSON),signature:Dh(u.signature),userHandle:f},type:d,clientExtensionResults:s.getClientExtensionResults(),authenticatorAttachment:Lh(s.authenticatorAttachment)}}function Wh(e){return typeof e==`object`&&e?e:{}}function Gh(e){let t=Wh(e),n=typeof t.code==`string`?t.code:``;switch(n){case`ERROR_CEREMONY_ABORTED`:return`The passkey request was cancelled. You can safely try again.`;case`ERROR_INVALID_DOMAIN`:case`ERROR_INVALID_RP_ID`:return`The passkey provider rejected this site’s domain identity. Open the canonical HTTPS address and try again.`;case`ERROR_INVALID_USER_ID_LENGTH`:case`ERROR_MALFORMED_PUBKEYCREDPARAMS`:return`The relay supplied passkey options this browser could not use (${n}).`;case`ERROR_AUTHENTICATOR_MISSING_DISCOVERABLE_CREDENTIAL_SUPPORT`:return`This passkey provider does not support the discoverable credential required for sign-in. Try another passkey provider or browser.`;case`ERROR_AUTHENTICATOR_MISSING_USER_VERIFICATION_SUPPORT`:case`ERROR_AUTO_REGISTER_USER_VERIFICATION_FAILURE`:return`This passkey provider could not perform the required screen-lock verification. Check the device screen lock or try another provider.`;case`ERROR_AUTHENTICATOR_PREVIOUSLY_REGISTERED`:return`This passkey is already registered on this device. Try signing in instead.`;case`ERROR_AUTHENTICATOR_NO_SUPPORTED_PUBKEYCREDPARAMS_ALG`:return`This passkey provider supports none of the relay’s allowed cryptographic algorithms. Try another provider or browser.`;case`ERROR_AUTHENTICATOR_GENERAL_ERROR`:return`The phone’s passkey provider accepted device verification but could not create the credential (ERROR_AUTHENTICATOR_GENERAL_ERROR). Try another browser or passkey provider on this phone.`;case`ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY`:return Gh(t.cause)}switch(typeof t.message==`string`?t.message:``){case`INVALID_REGISTRATION_REQUEST`:return`The relay did not understand the passkey response from this browser. Refresh the page and try again.`;case`REGISTRATION_COOKIE_MISSING`:return`The registration session cookie was not returned by this browser. Allow site cookies, refresh, and try again.`;case`REGISTRATION_NOT_AVAILABLE`:return`This registration attempt expired or is no longer available. Refresh the page and start again.`;case`REGISTRATION_VERIFICATION_FAILED`:return`Your device created the passkey, but the relay could not verify it. Try again and check the relay diagnostics if it persists.`;case`ORIGIN_NOT_ALLOWED`:return`This page is not using the relay’s configured public address. Open the canonical HTTPS address and try again.`;case`ENROLLMENT_NOT_AUTHORIZED`:return`This relay is no longer accepting first-device registration.`;case`AUTHENTICATION_FAILED`:return`We could not complete sign-in. Please try again.`}let r=typeof t.name==`string`?t.name:``;switch(r){case`NotAllowedError`:return`The passkey request was cancelled or timed out. Try again when ready.`;case`InvalidStateError`:return`This passkey is already registered on this device. Try signing in instead.`;case`AbortError`:return`The passkey request was cancelled. You can safely try again.`;case`SecurityError`:return`Passkeys require this device to use the configured secure site.`;case`ConstraintError`:case`DataError`:case`EncodingError`:return`This browser could not use the passkey options supplied by the relay. Refresh the page and try again.`;case`NetworkError`:return`The connection was interrupted while completing the passkey request. Check the connection and try again.`;case`OperationError`:case`UnknownError`:return`This browser or passkey provider could not finish the passkey request after device verification. Try again or use another browser on this device.`;case`TypeError`:return`This browser rejected the passkey request data. Refresh the page and try again.`;default:return/^[A-Za-z]+Error$/.test(r)?`The passkey request failed inside this browser (${r}). Try another browser or passkey provider on this device.`:`We could not complete authentication. Please try again.`}}function Kh(){return typeof window<`u`&&window.isSecureContext&&window.PublicKeyCredential!==void 0}function qh(e,t){async function n(n){t({kind:`checking`});try{let{status:r,publicOrigin:i,passkeyAuthEnabled:a=!0}=await e.status();if(!a){let e={kind:`authenticated`,passkeyAuthEnabled:!1};return t(e),e}if(!Kh()){let e={kind:`unsupported`,message:`Passkeys require a secure browser on this device.`};return t(e),e}let o=r===`authenticated`?{kind:`authenticated`,passkeyAuthEnabled:!0}:r===`bootstrap`?{kind:`bootstrap`,publicOrigin:i}:n?{kind:`enrollment`,publicOrigin:i}:{kind:`locked`};return t(o),o}catch{let e={kind:`error`,message:`We could not check this device. Please try again.`};return t(e),e}}function r(){t({kind:`authenticated`,passkeyAuthEnabled:!0})}function i(e){t({kind:`locked`,...e?{message:e}:{}})}return{check:n,retry:n,authenticated:r,locked:i}}var Jh=q(`<p class="warning svelte-1c5qcm6">This one-time link authorizes one new passkey. Choose a nickname and complete the passkey
|
|
34
|
+
`;return typeof a==`function`&&a(null,p),p}})),Zp=c(o((e=>{var t=wp(),n=qp(),r=Yp(),i=Xp();function a(e,r,i,a,o){let s=[].slice.call(arguments,1),c=s.length,l=typeof s[c-1]==`function`;if(!l&&!t())throw Error(`Callback required as last argument`);if(l){if(c<2)throw Error(`Too few arguments provided`);c===2?(o=i,i=r,r=a=void 0):c===3&&(r.getContext&&o===void 0?(o=a,a=void 0):(o=a,a=i,i=r,r=void 0))}else{if(c<1)throw Error(`Too few arguments provided`);return c===1?(i=r,r=a=void 0):c===2&&!r.getContext&&(a=i,i=r,r=void 0),new Promise(function(t,o){try{t(e(n.create(i,a),r,a))}catch(e){o(e)}})}try{let t=n.create(i,a);o(null,e(t,r,a))}catch(e){o(e)}}e.create=n.create,e.toCanvas=a.bind(null,r.render),e.toDataURL=a.bind(null,r.renderToDataURL),e.toString=a.bind(null,function(e,t,n){return i.render(e,n)})}))(),1);function Qp(e){return`${e.replace(/\/$/,``)}/?bootstrap=1`}async function $p(e){return Zp.toDataURL(Qp(e),{errorCorrectionLevel:`M`,margin:1,width:256})}async function em(e){return Zp.toDataURL(e,{errorCorrectionLevel:`M`,margin:1,width:256})}var tm=q(`<p class="feedback svelte-1nygetn" role="status"> </p>`),nm=q(`<span class="svelte-1nygetn">At least one authorized device is required.</span>`),rm=q(`<li class="svelte-1nygetn"><form class="svelte-1nygetn"><label class="svelte-1nygetn">Nickname</label><input name="nickname" class="svelte-1nygetn"/> <p class="svelte-1nygetn"> <!><!></p> <button type="submit" class="svelte-1nygetn">Rename</button> <button type="button" class="svelte-1nygetn">Revoke</button> <!></form></li>`),im=q(`<ul aria-label="Authorized devices" class="svelte-1nygetn"></ul>`),am=q(`<p role="status" class="svelte-1nygetn">No authorized devices are available. Refresh this page before making changes.</p>`),om=q(`<button type="button" class="svelte-1nygetn">Create enrollment link</button>`),sm=q(`<img alt="QR code for the enrollment link" class="svelte-1nygetn"/>`),cm=q(`<p role="status" class="svelte-1nygetn"> </p> <!> <label for="enrollment-link" class="svelte-1nygetn">Enrollment link</label><textarea id="enrollment-link" readonly="" rows="3" class="svelte-1nygetn"></textarea> <div class="actions svelte-1nygetn"><button type="button" class="svelte-1nygetn">Copy enrollment link</button><button type="button" class="svelte-1nygetn">Create passkey here</button><button type="button" class="svelte-1nygetn">Cancel link</button><button type="button" class="svelte-1nygetn">Replace link</button></div>`,1),lm=q(`<main class="devices svelte-1nygetn" aria-labelledby="devices-title"><header class="svelte-1nygetn"><button type="button" class="svelte-1nygetn">Back</button> <h1 id="devices-title" class="svelte-1nygetn">Authorized devices</h1></header> <!> <!> <section aria-labelledby="add-title" class="svelte-1nygetn"><h2 id="add-title" class="svelte-1nygetn">Authorize another device</h2> <!></section></main> <dialog aria-labelledby="revoke-title" class="svelte-1nygetn"><h2 id="revoke-title" class="svelte-1nygetn">Revoke authorized device?</h2> <p class="svelte-1nygetn">This immediately signs out sessions created by this passkey.</p> <form method="dialog" class="svelte-1nygetn"><button type="submit" class="svelte-1nygetn">Keep device</button><button type="button" class="svelte-1nygetn">Revoke device</button></form></dialog>`,1);function um(e,t){Qe(t,!0);let n=$(t,`oncreatepasskey`,3,()=>{}),r=I(R([])),i=I(``),a=I(null),o=I(`none`),s=I(null),c=I(null),l=I(null),u=I(null),d=I(R(Date.now())),f=P(()=>[...G(r)].sort((e,t)=>e.createdAt.localeCompare(t.createdAt))),p=P(()=>G(a)?Math.max(0,Math.ceil((Date.parse(G(a).expiresAt)-G(d))/1e3)):0),m=P(()=>`${Math.floor(G(p)/60)}:${String(G(p)%60).padStart(2,`0`)}`);function h(e){let t=e.trim();return[...t].length>=1&&[...t].length<=64}function g(){G(u)&&clearInterval(G(u)),L(u,null)}function _(){g(),L(u,setInterval(()=>void b(),15e3),!0)}function v(){return!!(G(a)&&G(o)===`pending`&&G(p)>0&&document.visibilityState===`visible`)}async function y(){try{L(r,(await t.client.list()).devices,!0)}catch{L(i,`Could not refresh authorized devices. Try again.`)}}async function b(){if(!v()){G(p)===0&&G(a)&&L(o,`expired`),g();return}try{L(o,(await t.client.ticketStatus()).status,!0),G(o)!==`pending`&&(g(),G(o)===`used`&&await y())}catch{g()}}async function x(){L(i,``);try{L(a,await t.client.createTicket(),!0),L(o,`pending`),L(s,await em(G(a).url),!0),L(d,Date.now(),!0),_()}catch{L(i,`Could not create an enrollment link. Try again.`)}}async function S(){try{L(o,(await t.client.cancelTicket()).status,!0),L(a,null),L(s,null),g()}catch{L(i,`Could not cancel the enrollment link. Try again.`)}}async function C(){await S(),G(i)||await x()}async function w(e,n){if(!h(n)){L(i,`Device nicknames must be 1–64 characters.`);return}L(i,``);try{await t.client.rename(e.id,n.trim()),await y()}catch{L(i,`Could not rename this device. Try again.`)}}function T(e){G(f).length>1&&(L(l,e,!0),G(c)?.showModal())}async function E(){if(G(l))try{await t.client.revoke(G(l).id),G(c)?.close(),G(l).current?t.onlock():await y()}catch{L(i,`This device could not be revoked. Try again.`)}}async function D(){if(G(a))try{await navigator.clipboard.writeText(G(a).url)}catch{L(i,`Copy is unavailable here. Select the visible link instead.`)}}function ee(){document.visibilityState===`visible`&&G(o)===`pending`&&G(p)>0?(b(),_()):g()}Ri(()=>{y(),document.addEventListener(`visibilitychange`,ee);let e=setInterval(()=>L(d,Date.now(),!0),1e3);return()=>clearInterval(e)}),zi(()=>{g(),document.removeEventListener(`visibilitychange`,ee)});var te=lm(),ne=B(te),re=z(ne),ie=z(re);He(2),N(re);var O=V(re,2),k=e=>{var t=tm(),n=z(t,!0);N(t),H(()=>Y(n,G(i))),J(e,t)};X(O,e=>{G(i)&&e(k)});var ae=V(O,2),A=e=>{var t=im();Z(t,21,()=>G(f),e=>e.id,(e,t)=>{var n=rm(),r=z(n),i=z(r),a=V(i);Di(a);var o=V(a,2),s=z(o),c=V(s),l=e=>{var n=Vr();H(e=>Y(n,`· Last used ${e??``}`),[()=>new Date(G(t).lastUsedAt).toLocaleDateString()]),J(e,n)};X(c,e=>{G(t).lastUsedAt&&e(l)});var u=V(c),d=e=>{J(e,Vr(`· This device`))};X(u,e=>{G(t).current&&e(d)}),N(o);var p=V(o,4),m=V(p,2),h=e=>{var n=nm();H(()=>Q(n,`id`,`final-${G(t).id}`)),J(e,n)};X(m,e=>{G(f).length===1&&e(h)}),N(r),N(n),H(e=>{Q(i,`for`,`nickname-${G(t).id}`),Q(a,`id`,`nickname-${G(t).id}`),Oi(a,G(t).nickname),Q(a,`aria-label`,`Nickname for ${G(t).nickname}`),Y(s,`Added ${e??``}`),p.disabled=G(f).length===1,Q(p,`aria-describedby`,G(f).length===1?`final-${G(t).id}`:void 0)},[()=>new Date(G(t).createdAt).toLocaleDateString()]),Nr(`submit`,r,e=>{e.preventDefault(),w(G(t),String(new FormData(e.currentTarget).get(`nickname`)??``))}),K(`click`,p,()=>T(G(t))),J(e,n)}),N(t),J(e,t)},oe=e=>{J(e,am())};X(ae,e=>{G(f).length?e(A):e(oe,-1)});var se=V(ae,2),ce=V(z(se),2),le=e=>{var t=om();K(`click`,t,()=>void x()),J(e,t)},ue=e=>{var t=cm(),r=B(t),i=z(r,!0);N(r);var c=V(r,2),l=e=>{var t=sm();H(()=>Q(t,`src`,G(s))),J(e,t)};X(c,e=>{G(s)&&e(l)});var u=V(c,3);Sn(u);var d=V(u,2),f=z(d),p=V(f),h=V(p),g=V(h);N(d),H(()=>{Y(i,G(o)===`pending`?`Enrollment link is active for ${G(m)}.`:`Enrollment link is ${G(o)}.`),Oi(u,G(a).url)}),K(`click`,f,()=>void D()),K(`click`,p,()=>n()(G(a).ticket)),K(`click`,h,()=>void S()),K(`click`,g,()=>void C()),J(e,t)};X(ce,e=>{G(a)?e(ue,-1):e(le)}),N(se),N(ne);var de=V(ne,2),fe=V(z(de),4),pe=V(z(fe));N(fe),N(de),Li(de,e=>L(c,e),()=>G(c)),K(`click`,ie,function(...e){t.onclose?.apply(this,e)}),K(`click`,pe,()=>void E()),J(e,te),$e()}Pr([`click`]);async function dm(e){if(e=await e,!e.ok){let t;try{let n=await e.json();typeof n==`object`&&n&&`code`in n&&typeof n.code==`string`&&(t=n.code)}catch{}throw Error(t??`AUTH_REQUEST_FAILED_${e.status}`)}if(e.status!==204)return e.json()}function fm(e){return{list:()=>dm(e(`/api/auth/devices`,{credentials:`same-origin`})),rename:(t,n)=>dm(e(`/api/auth/devices/${encodeURIComponent(t)}`,{method:`PATCH`,credentials:`same-origin`,headers:{"content-type":`application/json`},body:JSON.stringify({nickname:n})})),revoke:t=>dm(e(`/api/auth/devices/${encodeURIComponent(t)}`,{method:`DELETE`,credentials:`same-origin`})),createTicket:()=>dm(e(`/api/auth/enrollment-tickets`,{method:`POST`,credentials:`same-origin`})),ticketStatus:()=>dm(e(`/api/auth/enrollment-tickets/current`,{credentials:`same-origin`})),cancelTicket:()=>dm(e(`/api/auth/enrollment-tickets/current`,{method:`DELETE`,credentials:`same-origin`}))}}var pm=`gestalt-mobile.scratchpad`;function mm(){try{return window.localStorage}catch{return null}}function hm(e){try{return e?.getItem(`gestalt-mobile.scratchpad`)??``}catch{return``}}function gm(e,t){try{return e?(e.setItem(pm,t),!0):!1}catch{return!1}}function _m(e){try{return e?(e.removeItem(pm),!0):!1}catch{return!1}}var vm=q(`<p class="feedback svelte-eu5bnq" role="status"> </p>`),ym=q(`<section class="clear-confirmation svelte-eu5bnq" aria-labelledby="clear-scratchpad-title"><p id="clear-scratchpad-title" class="svelte-eu5bnq"><strong>Clear the entire scratchpad?</strong></p> <p class="svelte-eu5bnq">This cannot be undone.</p> <div class="actions svelte-eu5bnq"><button type="button" class="svelte-eu5bnq">Keep text</button> <button type="button" class="danger svelte-eu5bnq">Clear all</button></div></section>`),bm=q(`<footer class="actions svelte-eu5bnq"><button type="button" class="svelte-eu5bnq">Paste</button> <button type="button" class="svelte-eu5bnq">Select all</button> <button type="button" class="danger svelte-eu5bnq">Clear</button> <button type="button" class="svelte-eu5bnq">Close</button></footer>`),xm=q(`<dialog aria-labelledby="scratchpad-title" class="svelte-eu5bnq"><section class="scratchpad-shell svelte-eu5bnq"><header class="svelte-eu5bnq"><div><h2 id="scratchpad-title" class="svelte-eu5bnq">Scratchpad</h2> <p id="scratchpad-help" class="svelte-eu5bnq">Saved automatically in this browser.</p></div> <button type="button" class="close svelte-eu5bnq" aria-label="Close scratchpad">×</button></header> <label for="scratchpad-text" class="svelte-eu5bnq">Scratchpad text</label> <textarea id="scratchpad-text" aria-describedby="scratchpad-help" class="svelte-eu5bnq"></textarea> <!> <!></section></dialog>`);function Sm(e,t){Qe(t,!0);let n=$(t,`storage`,19,mm),r=$(t,`clipboard`,19,()=>globalThis.navigator?.clipboard),i=I(null),a=I(null),o=I(null),s=I(``),c=I(!1),l=I(``);Ri(async()=>{L(s,hm(n()),!0),await Cr(),G(i)?.showModal(),G(a)?.focus()});function u(e){L(s,e,!0),L(l,gm(n(),e)?``:`This browser could not save the scratchpad. Keep this window open until you copy the text.`,!0)}async function d(){if(!r()?.readText){L(l,`Clipboard paste is unavailable here. Long-press the text field and choose Paste.`),G(a)?.focus();return}try{let e=await r().readText(),t=G(a)?.selectionStart??G(s).length,n=G(a)?.selectionEnd??G(s).length;u(`${G(s).slice(0,t)}${e}${G(s).slice(n)}`),await Cr();let i=t+e.length;G(a)?.focus(),G(a)?.setSelectionRange(i,i)}catch{L(l,`Clipboard paste was not permitted. Long-press the text field and choose Paste.`),G(a)?.focus()}}async function f(){L(c,!0),L(l,``),await Cr(),G(o)?.focus()}function p(){L(c,!1),G(a)?.focus()}function m(){if(!_m(n())){L(l,`This browser could not clear its saved scratchpad.`);return}L(s,``),L(c,!1),L(l,``),G(a)?.focus()}var h=xm(),g=z(h),_=z(g),v=V(z(_),2);N(_);var y=V(_,4);Sn(y),Li(y,e=>L(a,e),()=>G(a));var b=V(y,2),x=e=>{var t=vm(),n=z(t,!0);N(t),H(()=>Y(n,G(l))),J(e,t)};X(b,e=>{G(l)&&e(x)});var S=V(b,2),C=e=>{var t=ym(),n=V(z(t),4),r=z(n);Li(r,e=>L(o,e),()=>G(o));var i=V(r,2);N(n),N(t),K(`click`,r,p),K(`click`,i,m),J(e,t)},w=e=>{var t=bm(),n=z(t),r=V(n,2),o=V(r,2),c=V(o,2);N(t),H(()=>o.disabled=!G(s)),K(`click`,n,()=>void d()),K(`click`,r,()=>G(a)?.select()),K(`click`,o,()=>void f()),K(`click`,c,()=>G(i)?.close()),J(e,t)};X(S,e=>{G(c)?e(C):e(w,-1)}),N(g),N(h),Li(h,e=>L(i,e),()=>G(i)),H(()=>Oi(y,G(s))),Nr(`close`,h,function(...e){t.onclose?.apply(this,e)}),K(`click`,v,()=>G(i)?.close()),K(`input`,y,e=>u(e.currentTarget.value)),J(e,h),$e()}Pr([`click`,`input`]);var Cm=q(`<button class="disclosure svelte-am0nvt" type="button"> </button>`),wm=q(`<span class="disclosure svelte-am0nvt"></span>`),Tm=q(`<span class="unsupported svelte-am0nvt">Files cannot be destinations</span>`),Em=q(`<span class="unsupported svelte-am0nvt">Unsupported link</span>`),Dm=q(`<span role="status">Loading…</span>`),Om=q(`<button type="button" class="svelte-am0nvt"> </button>`),km=q(`<div role="group"><!> <!> <!> <!></div>`),Am=q(`<div role="treeitem"><div class="tree-row svelte-am0nvt" role="presentation"><!> <span class="tree-label svelte-am0nvt"> </span><!></div> <!></div>`),jm=q(`<p role="status">Loading files…</p>`),Mm=q(`<button type="button" class="svelte-am0nvt">Retry loading files</button>`),Nm=q(`<button type="button" class="svelte-am0nvt">Load more in root</button>`),Pm=q(`<div class="file-tree svelte-am0nvt" role="tree" aria-label="Files"><!> <!> <!> <!></div>`);function Fm(e,t){Qe(t,!0);let n=$(t,`destinationMode`,3,!1),r=$(t,`ondestinationselect`,3,()=>{}),i=$(t,`onselectionchange`,3,()=>{}),a=R({}),o=I(``),s=P(()=>t.revision<0?{entries:[],loading:!1,error:!1}:t.controller.state(``)),c=P(()=>{if(t.revision<0)return[];let e=[],n=(r,i)=>{for(let a of t.controller.state(r).entries)e.push({entry:a,level:i,parent:r}),a.kind===`directory`&&t.controller.expanded.has(a.path)&&n(a.path,i+1)};return n(``,1),e});function l(e){L(o,e,!0),a[e]?.focus()}function u(e){t.controller.expanded.has(e.path)?t.controller.collapse(e.path):t.controller.expand(e.path)}function d(e,n,r){let i=n.entry,a=n.parent,o=e=>{let t=G(c)[Math.max(0,Math.min(G(c).length-1,e))];t&&l(t.entry.path)};switch(e.key){case`ArrowDown`:e.preventDefault(),o(r+1);break;case`ArrowUp`:e.preventDefault(),o(r-1);break;case`Home`:e.preventDefault(),o(0);break;case`End`:e.preventDefault(),o(G(c).length-1);break;case`ArrowRight`:i.kind===`directory`&&(e.preventDefault(),t.controller.expanded.has(i.path)?o(r+1):u(i));break;case`ArrowLeft`:e.preventDefault(),i.kind===`directory`&&t.controller.expanded.has(i.path)?t.controller.collapse(i.path):a&&l(a);break;case`Enter`:case` `:e.preventDefault(),f(i);break}}function f(e){if(e.kind!==`symlink`){if(n()){e.kind===`directory`&&r()(e.path);return}t.controller.select(e.path),i()(e.path)}}var p=Pm();{let e=(r,i=b,s=b)=>{var l=Hr();Z(B(l),17,()=>t.controller.state(i()).entries,e=>e.path,(r,i)=>{let l=P(()=>G(i).kind===`directory`),p=P(()=>G(c).find(e=>e.entry.path===G(i).path)),m=P(()=>G(c).findIndex(e=>e.entry.path===G(i).path));var h=Am();let g;var _=z(h);let v;var y=z(_),b=e=>{var n=Cm(),r=z(n,!0);N(n),H((e,t)=>{Q(n,`aria-label`,e),Y(r,t)},[()=>`${t.controller.expanded.has(G(i).path)?`Collapse`:`Expand`} ${G(i).name}`,()=>t.controller.expanded.has(G(i).path)?`−`:`+`]),K(`click`,n,e=>{e.stopPropagation(),u(G(i))}),J(e,n)},x=e=>{J(e,wm())};X(y,e=>{G(l)?e(b):e(x,-1)});var S=V(y,2),C=z(S,!0);N(S);var w=V(S),T=e=>{J(e,Tm())},E=e=>{var t=Em();H(()=>Q(t,`id`,`${G(i).path}-unsupported`)),J(e,t)};X(w,e=>{n()&&!G(l)?e(T):G(i).kind===`symlink`&&e(E,1)}),N(_);var D=V(_,2),ee=n=>{let r=P(()=>t.controller.state(G(i).path));var a=km(),o=z(a),c=e=>{J(e,Dm())};X(o,e=>{G(r).loading&&e(c)});var l=V(o,2),u=e=>{var n=Om(),r=z(n);N(n),H(()=>Y(r,`Retry ${G(i).name??``}`)),K(`click`,n,()=>void t.controller.load(G(i).path)),J(e,n)};X(l,e=>{G(r).error&&e(u)});var d=V(l,2);e(d,()=>G(i).path,()=>s()+1);var f=V(d,2),p=e=>{var n=Om(),r=z(n);N(n),H(()=>Y(r,`Load more in ${G(i).name??``}`)),K(`click`,n,()=>void t.controller.load(G(i).path,!0)),J(e,n)};X(f,e=>{G(r).cursor&&e(p)}),N(a),H(()=>Q(a,`aria-label`,`Contents of ${G(i).name}`)),J(n,a)},te=P(()=>G(l)&&t.controller.expanded.has(G(i).path));X(D,e=>{G(te)&&e(ee)}),N(h),Li(h,(e,t)=>a[t.path]=e,e=>a?.[e.path],()=>[G(i)]),H(e=>{g=gi(h,1,`treeitem svelte-am0nvt`,null,g,{symlink:G(i).kind===`symlink`}),Q(h,`aria-level`,s()),Q(h,`aria-expanded`,e),Q(h,`aria-selected`,G(i).kind===`symlink`?`false`:t.controller.selectedPath===G(i).path),Q(h,`aria-disabled`,G(i).kind===`symlink`),Q(h,`aria-describedby`,G(i).kind===`symlink`?`${G(i).path}-unsupported`:void 0),Q(h,`tabindex`,G(o)===G(i).path||!G(o)&&G(m)===0?0:-1),v=vi(_,``,v,{"--level":s()}),Y(C,G(i).name)},[()=>G(l)?t.controller.expanded.has(G(i).path):void 0]),Nr(`focus`,h,()=>L(o,G(i).path,!0)),K(`keydown`,h,e=>d(e,G(p),G(m))),K(`click`,h,()=>f(G(i))),J(r,h)}),J(r,l)};var m=z(p),h=e=>{J(e,jm())};X(m,e=>{G(s).loading&&e(h)});var g=V(m,2),_=e=>{var n=Mm();K(`click`,n,()=>void t.controller.load(``)),J(e,n)};X(g,e=>{G(s).error&&e(_)});var v=V(g,2);e(v,()=>``,()=>1);var y=V(v,2),x=e=>{var n=Nm();K(`click`,n,()=>void t.controller.load(``,!0)),J(e,n)};X(y,e=>{G(s).cursor&&e(x)}),N(p)}J(e,p),$e()}Pr([`keydown`,`click`]);var Im=class{workspaceId;read;changed;failed;expanded=new Set([``]);selectedPath=``;pages=new Map;generations=new Map;requests=new Map;version=0;constructor(e,t,n,r=()=>{}){this.workspaceId=e,this.read=t,this.changed=n,this.failed=r}state(e){return this.pages.get(e)??{entries:[],loading:!1,error:!1}}async load(e=``,t=!1){let n=this.state(e);if(n.loading||t&&!n.cursor)return;let r=(this.generations.get(e)??0)+1;this.generations.set(e,r),this.requests.get(e)?.abort();let i=new AbortController;this.requests.set(e,i),this.pages.set(e,{...n,loading:!0,error:!1}),this.publish();try{let a=await this.read(this.workspaceId,{directory:e,...t?{cursor:n.cursor}:{}},i.signal);if(i.signal.aborted||this.generations.get(e)!==r)return;let o=t?Lm(n.entries,a.entries):a.entries;this.pages.set(e,{entries:o,cursor:a.nextCursor,loading:!1,error:!1})}catch(t){if(i.signal.aborted||this.generations.get(e)!==r)return;this.pages.set(e,{...n,loading:!1,error:!0}),this.failed(t)}finally{this.requests.get(e)===i&&this.requests.delete(e),this.publish()}}async expand(e){this.expanded.add(e),this.publish(),this.pages.has(e)||await this.load(e)}collapse(e){this.expanded.delete(e),this.generations.set(e,(this.generations.get(e)??0)+1),this.requests.get(e)?.abort(),this.publish()}async refresh(e=``){this.invalidateBranch(e),await this.load(e)}select(e){this.selectedPath=e,this.publish()}close(){this.requests.forEach(e=>e.abort()),this.requests.clear()}invalidateBranch(e){for(let t of[...this.pages.keys()])(t===e||t.startsWith(e?`${e}/`:``))&&(this.pages.delete(t),this.generations.set(t,(this.generations.get(t)??0)+1),this.requests.get(t)?.abort())}publish(){this.version+=1,this.changed()}};function Lm(e,t){let n=new Set(e.map(e=>e.path));return[...e,...t.filter(e=>!n.has(e.path))]}var Rm=25*1024*1024;function zm(e){return[...e].map(e=>({file:e,status:e.size>26214400?`too-large`:`queued`}))}function Bm(e){return e.findIndex(e=>e.status===`queued`)}var Vm={phase:`idle`};function Hm(e,t){return{phase:`picking`,kind:e,source:t}}function Um(e,t){return e.phase===`picking`?{...e,destination:t}:e}function Wm(e){return e.phase!==`picking`||e.destination===void 0?e:{...e,phase:`submitting`}}function Gm(e,t){return e.phase===`submitting`?{...e,phase:`conflict`,replaceAllowed:t}:e}function Km(e){return e.phase===`submitting`?{...e,phase:`failed`}:e}function qm(e,t){return e.phase!==`picking`||!e.source||e.kind===`move`&&Jm(e.source)===t?!1:!(t===e.source||t.startsWith(`${e.source}/`))}function Jm(e){let t=e.lastIndexOf(`/`);return t<0?``:e.slice(0,t)}var Ym=q(`<li> </li>`),Xm=q(`<button type="button" class="svelte-qx7639">Replace</button>`),Zm=q(`<div class="browser-actions svelte-qx7639" aria-label="Upload conflict"><!> <button type="button" class="svelte-qx7639">Keep both</button> <button type="button" class="svelte-qx7639">Cancel remaining</button></div>`),Qm=q(`<button type="button" class="svelte-qx7639">Cancel uploads</button>`),$m=q(`<section class="picker svelte-qx7639" aria-label="Upload queue" aria-live="polite"><p class="svelte-qx7639"> </p> <ul></ul> <!></section>`),eh=q(`<div class="browser-actions svelte-qx7639" aria-label="Selected file actions"><button type="button" class="svelte-qx7639">Copy</button> <button type="button" class="svelte-qx7639">Move</button> <button type="button" class="svelte-qx7639">Delete</button></div>`),th=q(`<section class="picker svelte-qx7639" aria-label="Delete confirmation" aria-live="assertive"><h3> </h3> <p class="svelte-qx7639"> </p> <div class="browser-actions svelte-qx7639"><button type="button" class="svelte-qx7639">Cancel</button> <button type="button" class="svelte-qx7639"> </button></div></section>`),nh=q(`<section class="picker svelte-qx7639" aria-label="Choose destination folder" aria-live="polite"><p class="svelte-qx7639"><strong> </strong> </p> <p class="svelte-qx7639"> </p> <div class="browser-actions svelte-qx7639"><button type="button" class="svelte-qx7639">Use root folder</button> <button type="button" class="svelte-qx7639"> </button> <button type="button" class="svelte-qx7639">Cancel</button></div></section>`),rh=q(`<section class="picker svelte-qx7639" tabindex="-1" aria-label="File conflict" aria-live="assertive"><h3>Destination already contains this item</h3> <p class="svelte-qx7639"> </p> <div class="browser-actions svelte-qx7639"><!> <button type="button" class="svelte-qx7639">Keep both</button> <button type="button" class="svelte-qx7639">Cancel</button></div></section>`),ih=q(`<section class="picker svelte-qx7639" aria-label="Transfer failed"><p role="status" class="svelte-qx7639">Transfer could not be completed.</p> <div class="browser-actions svelte-qx7639"><button type="button" class="svelte-qx7639">Try again</button><button type="button" class="svelte-qx7639">Cancel</button></div></section>`),ah=q(`<section aria-label="File browser error"><p class="svelte-qx7639">Files could not be read. Try again.</p></section>`),oh=q(`<p role="status" class="svelte-qx7639">This folder is empty.</p>`),sh=q(`<dialog aria-labelledby="file-browser-title" class="svelte-qx7639"><section class="file-browser-shell svelte-qx7639"><header class="svelte-qx7639"><div class="svelte-qx7639"><h2 id="file-browser-title" tabindex="-1" class="svelte-qx7639"> </h2> <p class="svelte-qx7639"> </p></div> <button type="button" class="close svelte-qx7639" aria-label="Close file browser">×</button></header> <div class="browser-actions svelte-qx7639"><button type="button" class="svelte-qx7639">Refresh</button></div> <div class="upload-actions svelte-qx7639"><input class="visually-hidden svelte-qx7639" type="file" multiple="" aria-label="Choose files to upload"/> <p class="svelte-qx7639"> </p> <button type="button" class="svelte-qx7639">Upload files</button></div> <!> <!> <!> <!> <!> <!></section></dialog>`);function ch(e,t){Qe(t,!0);let n=$(t,`onsuccess`,3,()=>{}),r=$(t,`onmutation`,3,()=>{}),i=I(null),a=I(null),o=I(0),s=I(null),c=I(R(Vm)),l=I(null),u=I(``),d=I(!1),f=I(!1),p=I(null),m=I(null),h=I(R([])),g=I(!1),_=I(null),v=I(null),y=P(()=>G(o)<0?{entries:[],loading:!1,error:!1}:G(s)?.state(``)??{entries:[],loading:!0,error:!1}),b=P(()=>{if(!G(s)||!G(u))return;let e=G(u).includes(`/`)?G(u).slice(0,G(u).lastIndexOf(`/`)):``;return G(s).state(e).entries.find(e=>e.path===G(u))}),x=P(()=>`Files in ${t.root.relativePath===`.`?`~/`:`~/${t.root.relativePath}`}`);Ri(async()=>{L(s,new Im(t.root.id,t.listDirectory,()=>{L(o,G(o)+1)},t.onerror),!0),await Cr(),G(i)?.showModal(),G(a)?.focus(),await G(s).load()}),zi(()=>G(s)?.close());function S(){G(c).phase===`submitting`||G(f)||(G(_)?.abort(),G(s)?.close(),G(i)?.close())}let C=P(()=>G(b)?.kind===`directory`||!G(u)?G(u):``),w=P(()=>G(C)||``);async function T(e=`reject`){if(!(G(g)||!G(s))){L(g,!0);try{for(;;){let n=G(v)?.index??Bm(G(h));if(L(v,null),n<0)break;let i=G(h)[n];if(!i||i.status===`too-large`)continue;L(h,G(h).map((e,t)=>t===n?{...e,status:`uploading`}:e),!0);let a=new AbortController;L(_,a,!0);try{let o=await t.uploadFile(t.root.id,{directory:G(w),filename:i.file.name,conflict:e,file:i.file},Ha(),a.signal);L(h,G(h).map((e,t)=>t===n?{...e,status:`completed`,path:o.path}:e),!0),await G(s).refresh(G(w)),G(s).select(G(w)),L(u,G(w),!0),r()(),e=`reject`}catch(e){let r=e;if(r.status===409){L(h,G(h).map((e,t)=>t===n?{...e,status:`queued`}:e),!0),L(v,{index:n,replaceAllowed:r.replaceAllowed===!0},!0);break}L(h,G(h).map((e,t)=>t===n?{...e,status:a.signal.aborted?`cancelled`:`failed`}:e),!0),t.onerror(e)}finally{L(_,null)}}}finally{L(g,!1);let e=G(h).filter(e=>e.status===`completed`).length;e&&n()(`Uploaded ${e} file${e===1?``:`s`}.`)}}}function E(e){!e||e.length===0||(L(h,zm(e),!0),T())}function D(){G(_)?.abort(),L(h,G(h).map(e=>e.status===`queued`||e.status===`uploading`?{...e,status:`cancelled`}:e),!0),L(v,null)}function ee(e){if(G(c).phase===`submitting`||G(f)){e.preventDefault();return}e.preventDefault(),S()}async function te(){if(!(!G(u)||G(f))){L(f,!0);try{let e=G(u).includes(`/`)?G(u).slice(0,G(u).lastIndexOf(`/`)):``;await t.deleteEntry(t.root.id,G(u),Ha()),await G(s)?.refresh(e),G(s)?.select(e),L(u,e,!0),n()(`Deleted item.`),r()(),L(d,!1)}catch(e){t.onerror(e)}finally{L(f,!1)}}}async function ne(){L(d,!0),await Cr(),G(p)?.focus()}function re(e){G(u)&&L(c,Hm(e,G(u)),!0)}function ie(e){qm(G(c),e)&&L(c,Um(G(c),e),!0)}async function O(e=`reject`){if(!G(s)||G(c).phase!==`picking`&&G(c).phase!==`conflict`)return;let i=G(c).phase===`picking`?Wm(G(c)):{...G(c),phase:`submitting`};if(!(!i.source||i.destination===void 0||!i.kind)){L(c,i,!0);try{let a=await(i.kind===`copy`?t.copyEntry:t.moveEntry)(t.root.id,{source:i.source,destinationDirectory:i.destination,conflict:e},Ha()),o=i.source.includes(`/`)?i.source.slice(0,i.source.lastIndexOf(`/`)):``;i.kind===`copy`?await G(s).refresh(i.destination):await Promise.all([G(s).refresh(o),G(s).refresh(i.destination)]),G(s).select(a.path),n()(`${i.kind===`copy`?`Copied`:`Moved`} ${a.path}.`),r()(),L(c,Vm,!0)}catch(e){let n=e;n.status===409?(L(c,Gm(i,n.replaceAllowed===!0),!0),await Cr(),G(l)?.focus()):(L(c,Km(i),!0),t.onerror(e))}}}var k=sh(),ae=z(k),A=z(ae),oe=z(A),se=z(oe),ce=z(se,!0);N(se),Li(se,e=>L(a,e),()=>G(a));var le=V(se,2),ue=z(le,!0);N(le),N(oe);var de=V(oe,2);N(A);var fe=V(A,2),pe=z(fe);N(fe);var me=V(fe,2),he=z(me);Li(he,e=>L(m,e),()=>G(m));var ge=V(he,2),_e=z(ge);N(ge);var ve=V(ge,2);N(me);var ye=V(me,2),be=e=>{var t=$m(),n=z(t),r=z(n);N(n);var i=V(n,2);Z(i,21,()=>G(h),e=>e.file,(e,t)=>{var n=Ym(),r=z(n);N(n),H(()=>Y(r,`${G(t).file.name??``}: ${G(t).path??G(t).status??``}${G(t).status===`too-large`?` (maximum ${Rm/1024/1024} MiB)`:``}`)),J(e,n)}),N(i);var a=V(i,2),o=e=>{var t=Zm(),n=z(t),r=e=>{var t=Xm();K(`click`,t,()=>void T(`replace`)),J(e,t)};X(n,e=>{G(v).replaceAllowed&&e(r)});var i=V(n,2),a=V(i,2);N(t),K(`click`,i,()=>void T(`keep-both`)),K(`click`,a,D),J(e,t)},s=e=>{var t=Qm();K(`click`,t,D),J(e,t)};X(a,e=>{G(v)?e(o):G(g)&&e(s,1)}),N(t),H((e,t)=>Y(r,`${e??``} queued, ${t??``} completed`),[()=>G(h).filter(e=>e.status===`queued`).length,()=>G(h).filter(e=>e.status===`completed`).length]),J(e,t)};X(ye,e=>{G(h).length&&e(be)});var xe=V(ye,2),Se=e=>{var t=eh(),n=z(t),r=V(n,2),i=V(r,2);N(t),K(`click`,n,()=>re(`copy`)),K(`click`,r,()=>re(`move`)),K(`click`,i,()=>void ne()),J(e,t)};X(xe,e=>{G(s)&&G(c).phase===`idle`&&G(b)&&G(b).kind!==`symlink`&&e(Se)});var Ce=V(xe,2),we=e=>{var t=th(),n=z(t),r=z(n,!0);N(n);var i=V(n,2),a=z(i,!0);N(i);var o=V(i,2),s=z(o);Li(s,e=>L(p,e),()=>G(p));var c=V(s,2),l=z(c,!0);N(c),N(o),N(t),H(()=>{Y(r,G(b).kind===`directory`?`Delete folder and all contents`:`Delete file`),Y(a,G(u)),s.disabled=G(f),c.disabled=G(f),Y(l,G(f)?`Deleting…`:`Delete`)}),K(`click`,s,()=>L(d,!1)),K(`click`,c,()=>void te()),J(e,t)};X(Ce,e=>{G(d)&&G(b)&&e(we)});var Te=V(Ce,2),Ee=e=>{var t=nh(),n=z(t),r=z(n),i=z(r);N(r);var a=V(r);N(n);var o=V(n,2),s=z(o);N(o);var l=V(o,2),u=z(l),d=V(u,2),f=z(d);N(d);var p=V(d,2);N(l),N(t),H(e=>{Y(i,`${G(c).kind===`copy`?`Copy`:`Move`}:`),Y(a,` ${G(c).source??``}`),Y(s,`Destination: ${(G(c).destination===``?`root folder`:G(c).destination??`choose a folder`)??``}`),u.disabled=e,d.disabled=G(c).destination===void 0,Y(f,`Confirm ${G(c).kind??``}`)},[()=>!qm(G(c),``)]),K(`click`,u,()=>ie(``)),K(`click`,d,()=>void O()),K(`click`,p,()=>L(c,Vm,!0)),J(e,t)},De=e=>{var t=rh(),n=V(z(t),2),r=z(n,!0);N(n);var i=V(n,2),a=z(i),o=e=>{var t=Xm();K(`click`,t,()=>void O(`replace`)),J(e,t)};X(a,e=>{G(c).replaceAllowed&&e(o)});var s=V(a,2),u=V(s,2);N(i),N(t),Li(t,e=>L(l,e),()=>G(l)),H(()=>Y(r,G(c).destination)),K(`click`,s,()=>void O(`keep-both`)),K(`click`,u,()=>L(c,Vm,!0)),J(e,t)},Oe=e=>{var t=ih(),n=V(z(t),2),r=z(n),i=V(r);N(n),N(t),K(`click`,r,()=>L(c,{...G(c),phase:`picking`},!0)),K(`click`,i,()=>L(c,Vm,!0)),J(e,t)};X(Te,e=>{G(c).phase===`picking`?e(Ee):G(c).phase===`conflict`?e(De,1):G(c).phase===`failed`&&e(Oe,2)});var ke=V(Te,2),Ae=e=>{J(e,ah())},je=e=>{J(e,oh())};X(ke,e=>{G(s)&&!G(y).loading&&G(y).error?e(Ae):G(s)&&!G(y).loading&&G(y).entries.length===0&&e(je,1)});var Me=V(ke,2),Ne=e=>{var t=Hr();Yr(B(t),()=>G(o),e=>{{let t=P(()=>G(c).phase===`picking`);Fm(e,{get controller(){return G(s)},get revision(){return G(o)},get destinationMode(){return G(t)},ondestinationselect:ie,onselectionchange:e=>L(u,e,!0)})}}),J(e,t)};X(Me,e=>{G(s)&&e(Ne)}),N(ae),N(k),Li(k,e=>L(i,e),()=>G(i)),H(()=>{Y(ce,G(x)),Y(ue,G(c).phase===`picking`?`Choose destination folder.`:`Browse folders and select a position.`),pe.disabled=G(y).loading,Y(_e,`Upload destination: ${(G(b)?.kind===`file`?`Select a folder first`:G(u)||`root folder`)??``}`),ve.disabled=G(b)?.kind===`file`||G(g)}),Nr(`close`,k,function(...e){t.onclose?.apply(this,e)}),Nr(`cancel`,k,ee),K(`click`,de,S),K(`click`,pe,()=>void G(s)?.refresh()),K(`change`,he,e=>E(e.currentTarget.files)),K(`click`,ve,()=>G(m)?.click()),J(e,k),$e()}Pr([`click`,`change`]);var lh=q(`<main class="evidence-mode svelte-1d2e8zz"><!></main>`),uh=q(`<span class="detached-chat-model svelte-1d2e8zz"> </span>`),dh=q(`<header class="detached-chat-header svelte-1d2e8zz"><div class="detached-chat-context svelte-1d2e8zz"><span class="svelte-1d2e8zz">Chat</span> <strong class="svelte-1d2e8zz"> </strong></div> <!></header>`),fh=q(`<!> <!> <div class="chat-controls svelte-1d2e8zz" aria-label="Chat controls"><!> <!></div> <div class="chat-tail svelte-1d2e8zz" aria-hidden="true"></div>`,1),ph=q(`<p> </p>`),mh=q(`<section class="chat-view svelte-1d2e8zz" aria-labelledby="chat-title"><h2 id="chat-title" class="visually-hidden">Chat</h2> <!> <!> <p class="visually-hidden" aria-live="polite" aria-atomic="true"> </p> <!></section>`),hh=q(`<p>Loading skill profiles…</p>`),gh=q(`<section class="session-profile-manager" aria-labelledby="session-profile-manager-title"><div class="session-profile-manager-header svelte-1d2e8zz"><h2 id="session-profile-manager-title" tabindex="-1" class="svelte-1d2e8zz">Manage skill profiles</h2> <button type="button" class="close-profile-manager svelte-1d2e8zz" aria-label="Close skill profile editor">×</button></div> <!></section>`),_h=q(`<!> <!> <!>`,1),vh=q(`<main class="swipe-surface svelte-1d2e8zz"><!> <!> <!> <!></main> <!>`,1);function yh(e,t){Qe(t,!0);let n=$(t,`oncreatepasskey`,3,()=>{}),r=qc(location.search),i=I(null),a=I(R(r?`chat`:`sessions`)),o=I(!1),s=I(!1),c=I(!1),l=I(null),u=I(null),d=!1,f=I(`Loading relay…`),p=I(R(Er(()=>t.theme))),m=I(R([])),h=`gpt-5.6-terra`,g=I({codex:[h],kimi:[]}),_=I([]),v=I(null),y=I(`codex`),b=I({codex:h,kimi:``}),x=I(null),S=I(null),C=P(()=>G(x)?.kimi.available??!1),w=P(()=>G(C)?G(y):`codex`),T=I([]),E=I(null),D=I(`list`),ee=I([]),te=I(``),ne=I(``),re=I(``),ie=I(R(new Set)),O=I(null),k=I(R([])),ae=I(new Map),A=I({snapshots:new Map,attention:new Map,pending:new Set,errors:new Map}),oe=I(new Map),se=0,ce=null,le=P(()=>G(k).some(e=>e.id===G(O))),ue=I(R([])),de=I(`workspace-git`),fe=I(`never`),pe=I(R({starting:!1,error:null})),me=P(()=>G(pe).starting),he=I(null),ge=0,_e=I(null),ve=I(null),ye=I(``),be=0,xe=new Map,Se=I(R({kind:`unavailable`,sessionId:null})),Ce=I({kind:`no-workspace`}),we=I(null),Te=I(null),Ee=I(!1),De=null,Oe=null,ke=0,Ae=0,je=I(null),Me=P(()=>(G(k).find(e=>e.id===G(O))?.workspaceId??G(re))||null),Ne=P(()=>G(k).find(e=>e.id===G(O))?.workspacePath??null),Pe=P(()=>G(k).find(e=>e.id===G(O))??null),Fe=P(()=>Cf(G(Pe)?.workspacePath??``)),Ie=P(()=>G(Pe)?`${G(Pe).provider===`kimi`?`Kimi · `:``}${G(Pe).model??h}`:h);function Le(e){return`kind`in e&&e.kind===`org-source`}function Re(e){return r?e.filter(e=>e.id===G(O)):e}let j=P(()=>G(we)&&Le(G(we))?G(we):G(we)?{kind:`ready`,sessionId:`catalog`,plan:G(we)}:G(Ee)?null:G(Se).kind===`ready`||G(Se).kind===`closing`||G(Se).kind===`error`&&G(Se).plan?G(Se):null),ze=P(()=>td(G(Se).kind===`ready`||G(Se).kind===`closing`||G(Se).kind===`error`?G(Se).plan:void 0)),M=I(R({workspaceId:null,summary:null,loading:!1,refreshing:!1,checkingOut:!1,error:null})),Be=P(()=>G(M).workspaceId),Ve=I(R(new Set)),He=I(!1),Ue=I(!1),We=I(null),Ge=I(null),Ke=I(null),qe=R({}),Je=I({}),Ye=I(null),Xe=``,Ze=new zl({requestFrame:e=>requestAnimationFrame(e),cancelFrame:e=>cancelAnimationFrame(e),reducedMotion:()=>window.matchMedia(`(prefers-reduced-motion: reduce)`).matches,scrollTail:e=>G(Ye)?.scrollIntoView({block:`end`,behavior:e})}),et=new Bl(e=>void Cr().then(e),e=>{G(a)===`chat`&&Ze.request(e)}),tt=P(()=>{let e=G(i)?.interactions.findLast(e=>e.state!==`pending`);return e?e.state===`submitting`?`Sending decision.`:e.state===`failed`?`Could not send decision. Retry is available.`:e.state===`resolved`?e.attemptedOutcome===`denied`?`Decision denied.`:e.attemptedOutcome===`dismissed`?`Request is no longer awaiting a response.`:e.attemptedOutcome===`answered`?`Answers sent.`:`Decision approved.`:``:``}),nt=Gu((e,n)=>t.authorizedFetch(e,n)),rt=new Qa(nt,e=>L(A,e)),it=new Va({relay:nt,publish:e=>L(ae,new Map(e)),onEvent:(e,t)=>rt.observe(e,t),onAuthoritativeSnapshot:(e,t)=>rt.applyAuthoritative(e,t)}),at=new Ll({relay:nt,cache:Gc(),publish:e=>L(i,e,!0),onSessionEvent:e=>Fn(e),onRelayEvent:e=>{G(O)&&it.observe(G(O),e)},onHistoryError:e=>{L(f,jn(e,`SESSION_HISTORY_READ_FAILED`),!0)},onSendError:(e,t)=>{let n=Ul(e,`MESSAGE_SEND_FAILED`);if(n.code===`SESSION_WORKSPACE_UNAVAILABLE`){L(_e,null),L(ve,null),dt.enqueue({kind:`warning`,...n});return}L(_e,n.message,!0),L(ve,n.retryable?t:null,!0),L(f,jn(e,`MESSAGE_SEND_FAILED`),!0)},onSendAccepted:(e,t)=>{G(ve)===t&&(L(_e,null),L(ve,null));let n=xe.get(t);n&&n.sessionId===e&&Ht(n)},onHistoryPromptAccepted:(e,t)=>{let n=xe.get(t);n&&n.sessionId===e&&Ht(n)}}),ot=new ep({start:nt.startSession},Ha,e=>L(pe,e,!0)),st=new Ru({getSummary:nt.getGitSummary,pull:nt.pullGit,checkout:nt.checkoutGitBranch},e=>!!fu(G(m),e)?.isGitRepository,e=>L(M,e,!0),(e,t)=>jn(e,t)),ct=fm((e,n)=>t.authorizedFetch(e,n)),lt=ed({getPlan:nt.getPlan,closePlan:nt.closePlan},e=>{L(Se,e,!0),(e.kind===`ready`||e.kind===`closing`)&&L(k,G(k).map(t=>t.id===e.sessionId?{...t,plan:e.plan}:t),!0)}),ut=vf(),dt=eu({historyStorage:Ql()}),ft=new URLSearchParams(location.search).get(`tree-evidence`),pt=new URLSearchParams(location.search).get(`toast-evidence`),mt=new URLSearchParams(location.search).get(`activity-evidence`),ht=so(window.sessionStorage),gt=new Set;Mn(()=>{for(let[e,t]of G(A).attention){let n=`${e}:${t.requestId}`;ht.claim(n)&&dt.enqueue({kind:`error`,code:`AUTOPILOT_ATTENTION_${t.requestId}`,message:`Autopilot needs your attention.`})}}),Mn(()=>{let e=new Set;for(let[t,n]of G(A).errors){let r=`${t}:${n}`;e.add(r),!gt.has(r)&&(gt.add(r),dt.enqueue({kind:`error`,message:n}))}for(let t of gt)e.has(t)||gt.delete(t)});function _t(){L(c,!0)}function vt(){L(c,!1),Cr().then(()=>document.querySelector(`.menu-trigger`)?.focus())}function yt(){L(s,!1),Cr().then(()=>document.querySelector(`.menu-trigger`)?.focus())}async function bt(){try{await nt.updateRestart(),dt.enqueue({kind:`info`,message:`Update started. Gestalt Mobile will disconnect briefly, then reconnect.`})}catch(e){throw jn(e,`UPDATE_RESTART_FAILED`),e}}Ri(async()=>{if(!(ft===`sessions`||ft===`git`||pt===`error`||pt===`stacked`))try{let e=await Pc(t.authorizedFetch);L(re,pu(G(re)||null,G(m),e.workspaces,su.sessionBase)??``,!0),L(m,e.workspaces,!0),L(T,e.profiles),L(g,{codex:[...new Set([h,...e.models?.codex??[]])],kimi:e.models?.kimi??[]}),L(b,{...G(b),kimi:G(b).kimi||(e.models?.kimi?.[0]??``)}),L(x,e.capabilities?.providers??null),L(_,e.versions??[]),L(v,e.branding?.headerIconUrl??null,!0),r||await cn(),L(ie,cu(G(m)),!0),L(Ve,cu(G(m)),!0);let n=r?null:await ut.readSelectedSession();if(L(O,r?e.sessions.find(e=>e.id===r)?.id??null:e.sessions.some(e=>e.id===n)?n:e.sessions[0]?.id??null,!0),G(O)){let e=await ut.readDraftEnvelope(G(O));L(ye,e.text,!0),be=e.revision,Ut(G(O),e.pending)}L(k,e.sessions,!0);let i=Re(e.sessions.filter(e=>[`ready`,`turnActive`].includes(e.state)));it.bootstrap(i,G(O)),rt.bootstrap(i),r||jt(),lt.select(G(O)),G(O)?at.select(G(O)):r&&L(f,`This session is no longer open in Gestalt Mobile.`)}catch(e){L(f,jn(e,`RELAY_UNAVAILABLE`),!0)}}),Mn(()=>{if(!G(Ye))return;let e=new IntersectionObserver(([e])=>Ze.observeTail(e?.isIntersecting??!1),{root:null});return e.observe(G(Ye)),()=>e.disconnect()}),Mn(()=>{let e=G(i),t=G(a),n=e?JSON.stringify({messages:e.messages.map(({id:e,text:t,complete:n})=>[e,t,n]),activities:e.activities.map(({id:e,label:t,detail:n})=>[e,t,n]),interactions:e.interactions.map(({key:e,state:t,attemptedOutcome:n})=>[e,t,n])}):``;!n||n===Xe||(Xe=n,t===`chat`&&xt(`content`))});function xt(e){et.schedule(e)}function St(){et.invalidate(),Ze.reset(),L(a,`chat`),mn(`chat`),xt(`initial`),hn()}function Ct(e){L(p,$i(e),!0)}function wt(){if(!G(O))return;let e=window.open(Jc(location.href,G(O)),Yc(G(O)),`popup,width=760,height=900`);if(!e){dt.enqueue({kind:`error`,message:`The Chat window was blocked. Allow pop-ups for this site and try again.`});return}try{e.opener=null}catch{}e.focus()}zi(()=>{et.invalidate(),Ze.cancel(),at.dispose(),it.dispose(),rt.dispose(),lt.dispose(),st.dispose(),ot.dispose(),G(E)?.dispose()});async function Tt(e){L(y,e,!0);let t=G(g)[e];if(!G(b)[e]&&t[0]&&L(b,{...G(b),[e]:t[0]}),!(t.length>0)){L(S,e,!0);try{let t=await nt.listSessionModels(e);L(g,{...G(g),[e]:t.models}),!G(b)[e]&&t.models[0]&&L(b,{...G(b),[e]:t.models[0]})}catch(e){jn(e,`SESSION_MODELS_READ_FAILED`)}finally{G(S)===e&&L(S,null)}}}async function Et(){if(!G(re)||G(me))return;let e=G(C)?G(y):`codex`,t=$f({workspaceId:G(re),profile:`default`,profileState:`ok`});if(t.profile){L(f,t.profile,!0);return}L(f,`Starting session…`);let n=await ot.start(G(re),{provider:e,sandbox:G(de),approvalPolicy:G(fe),model:G(b)[e]||void 0,skillProfile:G(te)||void 0});if(!n){G(pe).error&&L(f,jn(Error(G(pe).error),`SESSION_START_FAILED`),!0);return}try{L(O,n.id,!0);for(let e of n.effectiveSkillSelection?.warnings??[])dt.enqueue({kind:`warning`,code:`SKILL_PROFILE_MISSING_SKILL`,message:e});lt.select(n.id),ut.saveSelectedSession(n.id),await Dt();let e=await ut.readDraftEnvelope(n.id);L(ye,e.text,!0),be=e.revision,Ut(n.id,e.pending),at.select(n.id,{history:`empty`}),it.select(n.id),St(),L(f,`Session started.`)}catch(e){L(f,jn(e,`SESSION_START_FAILED`),!0)}}async function Dt(){let e=++se;ce?.abort();let t=new AbortController;ce=t;try{let n=await nt.listSessions(t.signal);if(e!==se||t.signal.aborted)return;L(k,n.map(e=>G(oe).has(e.id)?{...e,plan:G(oe).get(e.id)}:e),!0);let r=Re(G(k).filter(e=>[`ready`,`turnActive`].includes(e.state)));it.bootstrap(r,G(O)),rt.bootstrap(r)}catch(e){if(t.signal.aborted||Pn(e))return;throw e}finally{ce===t&&(ce=null)}}async function Ot(e,t){await rt.toggle(e,t),e===G(O)&&Dt().catch(()=>{})}async function kt(e){await Ot(e,!0),await Cr(),e===G(O)&&document.getElementById(`chat-autopilot-${e}-button`)?.focus({preventScroll:!0})}async function At(e,t,n){await rt.resolve(e,t,n),e===G(O)&&Dt().catch(()=>{})}async function jt(){try{L(ue,await nt.listRecentSessions(),!0)}catch{L(ue,[],!0)}}async function F(){try{await Promise.all([Dt(),jt()])}catch(e){L(f,jn(e,`SESSION_REFRESH_FAILED`),!0)}}async function Mt(e){L(f,`Opening session…`),L(he,e,!0);let t=++ge;try{L(O,e,!0),L(_e,null),L(ve,null),lt.select(e),ut.saveSelectedSession(e),at.select(e),it.select(e),St();let n=await ut.readDraftEnvelope(e);t===ge&&G(O)===e&&(L(ye,n.text,!0),be=n.revision,Ut(e,n.pending))}catch(e){L(f,jn(e,`SESSION_HISTORY_READ_FAILED`),!0)}finally{t===ge&&L(he,null)}}async function Nt(e){L(f,`Opening recent session…`);try{let t=await nt.openRecentSession(e.id,e.cwd,e.provider??`codex`);G(k).some(e=>e.id===t.id)||L(k,[...G(k),t],!0),F(),await Mt(t.id)}catch(e){L(f,jn(e,`SESSION_HISTORY_READ_FAILED`),!0)}}async function Pt(e){L(f,`Closing session…`);try{await nt.releaseSession(e),G(O)===e&&(L(O,null),L(a,`sessions`),ut.saveSelectedSession(null),at.select(null),it.select(null),lt.select(null)),await F(),L(f,`Session closed.`)}catch(e){L(f,`Could not close session: ${An(e)}`)}}async function Ft(e){let t=G(k).find(t=>t.id===e);try{await nt.forgetSession(e),G(O)===e&&(at.select(null),it.select(null),L(O,null),ut.saveSelectedSession(null),lt.select(null)),await F(),L(ue,Sf(G(ue),t),!0)}catch(e){L(f,`Could not forget session: ${An(e)}`)}}async function It(e){L(f,await Bs(e)?`Resume command copied.`:`Could not copy the resume command.`,!0)}async function Lt(e){if(!(!G(O)||G(i)?.activeTurnId))try{let t=await nt.selectModel(G(O),e);L(k,G(k).map(e=>e.id===t.id?{...e,...t}:e),!0),L(ye,``),L(f,`Model changed to ${e}; it applies to the next turn.`)}catch(e){L(f,`Could not change model: ${An(e)}`)}}async function Rt(e){if(!G(O)||!G(ye).trim()||!at.canSubmit(e)||[...xe.values()].some(e=>e.sessionId===G(O)&&e.revision===be))return;let t=Ha(),n={sessionId:G(O),revision:be,text:G(ye),operationId:t,kind:e};xe.set(t,n),ut.addPendingDraftOperation(G(O),n),e===`send`?at.send(n.text,t):e===`queue`?at.queue(n.text,t):at.interruptAndSend(n.text,t)}let zt=()=>Rt(`send`),Bt=()=>Rt(`queue`),Vt=()=>Rt(`interrupt-send`);async function Ht(e){let t=await ut.consumeAcceptedDraft(e.sessionId,e.revision,e.operationId);t&&xe.delete(e.operationId),t&&e.sessionId===G(O)&&e.revision===be?(G(ve)===e.operationId&&(L(ve,null),L(_e,null)),L(ye,``),be=t.revision,xt(`explicit`)):e.sessionId===G(O)&&e.revision===be&&(L(_e,null),L(ve,e.operationId,!0),dt.enqueue({kind:`warning`,code:`PROMPT_LOCAL_RECOVERY_${e.operationId}`,message:`The accepted prompt could not be saved locally. Keep this text until recovery completes. Retry is available.`}))}function Ut(e,t){for(let n of t??[])xe.set(n.operationId,{sessionId:e,...n});e===G(O)&&(t?.length??0)>0&&(L(_e,null),L(ve,t[0].operationId,!0),dt.enqueue({kind:`warning`,code:`PROMPT_RECOVERY_${G(ve)}`,message:`A submitted prompt is being recovered. It will not be sent again automatically. Retry is available.`}))}async function Wt(){if(!G(ve))return;L(_e,null);let e=xe.get(G(ve));if(!e){await at.retryPrompt(G(ve));return}e.kind===`send`?await at.send(e.text,e.operationId):e.kind===`queue`?await at.queue(e.text,e.operationId):await at.interruptAndSend(e.text,e.operationId)}async function Gt(){await at.interrupt()}function Kt(){G(a)===`chat`&&G(O)&&at.refresh()}function qt(e){if(r||e===`chat`&&!G(le))return;let t=G(a)!==e;G(a)===`chat`&&e!==`chat`&&(et.invalidate(),Ze.cancel()),L(a,e,!0),mn(e),e===`chat`&&(Kt(),Ze.reset(),xt(`initial`),t&&hn()),e===`git`&&G(Be)&&st.refresh(),e===`plan`&&(G(O)&<.refresh(G(O)),t||on()),e===`sessions`&&(G(D)===`profile-manager`&&pn(!1),F(),G(O)&<.refresh(G(O)))}Mn(()=>{let e=G(Me);G(a)===`plan`&&tn(e)});let Jt=!1;function Yt(){document.visibilityState!==`visible`||Jt||(Jt=!0,queueMicrotask(()=>{Jt=!1,document.visibilityState===`visible`&&(G(a)===`git`&&G(Be)&&st.refresh(),G(a)===`plan`&&on(),G(a)===`sessions`&&(F(),G(O)&<.refresh(G(O))))}))}let Xt=null;function Zt(e){return e instanceof Element&&e.closest(`button, input, textarea, select, a, summary, [contenteditable]`)!==null}function Qt(e){e.pointerType!==`touch`||Zt(e.target)||(Xt={pointerId:e.pointerId,x:e.clientX,y:e.clientY})}function $t(e){if(!Xt||e.pointerId!==Xt.pointerId)return;let t=Xt;Xt=null;let n=e.clientX-t.x,r=e.clientY-t.y;Math.abs(n)<48||Math.abs(n)<=Math.abs(r)||qt(np(G(a),n<0?1:-1,{chatEnabled:G(le)}))}function en(e){Xt?.pointerId===e.pointerId&&(Xt=null)}function tn(e=G(Me)){if(De?.abort(),Oe?.abort(),L(we,null),L(Te,null),!e){L(Ce,{kind:`no-workspace`});return}let t=new AbortController;De=t;let n=++ke;L(Ce,{kind:`loading`,workspaceId:e}),nt.listWorkspacePlans(e,t.signal).then(r=>{n!==ke||t.signal.aborted||L(Ce,{kind:`ready`,workspaceId:e,entries:r})}).catch(r=>{n!==ke||t.signal.aborted||(G(j)||dt.enqueue({kind:`error`,code:`WORKSPACE_PLANS_READ_FAILED`,message:`Workspace Org files could not be listed. Try opening the Plan tab again.`}),L(Ce,{kind:`error`,workspaceId:e,error:r instanceof Error?r.message:`Could not load workspace plans.`}))})}function nn(e){let t=G(Me);if(!t)return;Oe?.abort();let n=new AbortController;Oe=n;let r=++Ae;(G(O)?nt.openSessionPlan(G(O),e):nt.getWorkspacePlan(t,e,n.signal)).then(t=>{r!==Ae||n.signal.aborted||(L(we,t),L(Te,e,!0),L(Ee,!1))}).catch(()=>{r!==Ae||n.signal.aborted||dt.enqueue({kind:`error`,code:`WORKSPACE_PLAN_OPEN_${e}`,message:`This Org file could not be opened. Check that it is readable and try again.`})})}function rn(e){let t=G(Me),n=G(Ne),r=n?Rs(e,n):null;if(!t||!r){dt.enqueue({kind:`error`,code:`ORG_LINK_OUTSIDE_WORKSPACE`,message:`This Org file is not inside the selected workspace and cannot be opened.`});return}qt(`plan`),Cr().then(()=>{G(Me)!==t||G(Ne)!==n||nn(r)})}function an(){L(we,null),L(Te,null),L(Ee,!0),tn()}function on(){G(O)&<.refresh(G(O)),G(Te)?nn(G(Te)):tn()}async function sn(e,t){let n=new Sp(nt);await n.load(e,t),L(E,n,!0)}async function cn(){try{let e=await nt.listSkillProfiles();L(ee,e.profiles.filter(e=>!(`error`in e)));let t=e.profiles.find(e=>`error`in e);L(ne,t&&`error`in t?t.error.message:``,!0),G(ee).some(e=>e.name===G(te))||L(te,``)}catch(e){L(ee,[]),L(ne,e instanceof Error?e.message:`Unable to load saved skill profiles.`,!0)}}async function dn(e){let t=G(re)||G(m)[0]?.id||``,n=G(T).find(e=>e.state===`ok`)?.name??``;if(!t||!n){L(f,`Choose a workspace and available Codex profile before managing skill profiles.`);return}await sn(t,n),L(D,`profile-manager`)}function fn(e){queueMicrotask(()=>e.focus())}async function pn(e=!0){L(D,`list`),await Cr(),e&&document.getElementById(`manage-skill-profiles`)?.focus()}function mn(e){requestAnimationFrame(()=>{G(a)===e&&e!==`chat`&&window.scrollTo({top:0})})}function hn(){Cr().then(()=>{G(a)===`chat`&&document.getElementById(`message`)?.focus({preventScroll:!0})})}function gn(e){st.select(e.id),L(He,!1)}function _n(e){let t=G(Be)?fu(G(m),G(Be)):null;t&&(L(l,t,!0),L(u,e,!0))}async function vn(){L(l,null),await Cr(),G(u)?.focus({preventScroll:!0})}function yn(){d||(d=!0,queueMicrotask(()=>{d=!1,G(Be)&&st.refresh()}))}async function bn(){let e=G(Be);!e||!fu(G(m),e)?.isGitRepository||(L(Ge,G(Ge)??Ha(),!0),await st.pull(G(Ge)),G(M).error||L(Ge,null))}async function xn(e){if(G(Ue))return;let n=G(Be)?fu(G(m),G(Be)):void 0;if(!n||n.isGitRepository){L(We,null),dt.enqueue({kind:`error`,code:`INVALID_CLONE_DESTINATION`,message:`Select a non-repository folder before cloning.`});return}let r=n.id;L(Ue,!0),L(We,null);try{await nt.cloneGitRepository(r,e);let n=await Pc(t.authorizedFetch),i=zu(G(m),n.workspaces,r,e,G(Ve));L(re,pu(G(re)||null,G(m),n.workspaces,su.sessionBase)??``,!0),L(m,n.workspaces,!0),st.select(i.selectedId),L(Ve,i.expandedIds,!0),L(We,`Repository cloned into the selected workspace.`),dt.enqueue({kind:`success`,message:`Repository cloned.`})}catch(e){jn(e,`GIT_CLONE_FAILED`)}finally{L(Ue,!1)}}async function Sn(e){G(Be)&&await st.checkout(e)}async function Cn(){let e=G(Be);if(e){L(Ke,G(Ke)??Ha(),!0);try{await nt.pushGit(e,G(Ke)),L(He,!1),await st.refresh(),L(Ke,null)}catch(e){jn(e,`GIT_PUSH_FAILED`)}}}async function wn(e,t){xt(`explicit`),await at.respond(e,{decision:t})}async function Tn(e){xt(`explicit`);let t=e.kind===`quiz`?ns(e.payload):rs(e.payload);if(!t)return;let n=t.questions.map(t=>({id:t.id,answer:qe[`${e.requestId}:${t.id}`]??``})),r=t.questions.map((e,t)=>({id:e.id,header:e.header,question:e.question,answer:n[t]?.answer??``}));L(Je,{...G(Je),[e.requestId]:r});let a=e.kind===`quiz`?is(n):Uu(n);try{let t=`quiz-answer:${e.requestId}`,n=G(i)?.prompts.find(e=>e.operationId===t);if(!n||n.state===`failed`){let e=Wu(r);G(i)?.activeTurnId?await at.queue(e,t):await at.send(e,t)}let o=at.view.prompts.find(e=>e.operationId===t);if(e.kind===`quiz`&&(!o||o.state===`failed`))return;await at.respond(e.requestId,a)}catch{L(f,`Could not send quiz answers. Please try again.`)}}async function En(e){let t=Hu(e.payload);if(!t){L(f,`Codex sent an invalid permission request.`);return}xt(`explicit`),await at.respond(e.requestId,t)}function Dn(e){e.kind===`quiz`||e.kind===`userInput`?Tn(e):e.kind===`permissionsApproval`?En(e):at.retryInteraction(e.requestId)}function On(e,t,n){qe[`${e}:${t}`]=n}function kn(e){L(ye,e,!0),be+=1;let t=G(O);t&&ut.replaceDraftText(t,e,be)}function An(e){return e instanceof Error?e.message:`Unknown relay error.`}function jn(e,t){let n=Ul(e,t);return dt.enqueue({kind:`error`,...n}),n.message}function Nn(e){dt.enqueue(e?{kind:`success`,message:`Code copied.`}:{kind:`error`,message:`Code could not be copied. Select it and copy it manually.`})}function Pn(e){return(e instanceof DOMException||e instanceof Error)&&e.name===`AbortError`}function Fn(e){let t=G(O);if(!t||e.type===`agent.activity.updated`)return;if(e.type===`session.status.updated`){let n=e.payload;Vl(n)&&L(k,G(k).map(e=>e.id===t?{...e,sessionStatus:n}:e),!0);return}if(e.type===`session.updated`&&typeof e.payload==`object`&&e.payload!==null){let n=e.payload;n.id===t&&L(k,G(k).map(e=>e.id===t?{...e,...n}:e),!0);return}if(e.type!==`plan.updated`&&e.type!==`plan.closed`)return;if(lt.applyEvent(t,e),e.type===`plan.closed`){L(oe,new Map(G(oe)).set(t,void 0)),L(k,G(k).map(e=>e.id===t?{...e,plan:void 0}:e),!0);return}let n=Ju(e.payload)?e.payload.plan:Yu(e.payload)?e.payload:null;n&&L(oe,new Map(G(oe)).set(t,n)),n&&L(k,G(k).map(e=>e.id===t?{...e,plan:n}:e),!0)}var In=Hr();oi(`1d2e8zz`,e=>{Rn(()=>{un.title=r&&G(Fe)?`Chat · ${G(Fe)} · Gestalt Mobile`:`Gestalt Mobile`})}),Nr(`focus`,ln,Yt),Nr(`visibilitychange`,un,Yt);var Ln=B(In),zn=e=>{za(e,{})},Bn=e=>{ou(e,{get variant(){return pt}})},Vn=e=>{var t=lh();Su(z(t),{get context(){return ft}}),N(t),J(e,t)},Hn=e=>{var u=vh(),d=B(u),y=z(d),x=e=>{{let n=P(()=>G(a)===`chat`?Cf(G(k).find(e=>e.id===G(O))?.workspacePath??``):null),r=P(()=>G(a)===`chat`?G(Ie):null),i=P(()=>G(a)===`chat`&&G(O)?wt:void 0);da(e,{get theme(){return G(p)},get sessionPath(){return G(n)},get sessionModel(){return G(r)},get weeklyQuotaRemaining(){return G(ze)},get brandIconUrl(){return G(v)},get componentVersions(){return G(_)},get passkeyAuthEnabled(){return t.passkeyAuthEnabled},get onlock(){return t.onlock},ondevices:()=>L(o,!0),onnotifications:()=>L(s,!0),onscratchpad:_t,onupdaterestart:bt,onthemechange:Ct,get ondetach(){return G(i)}})}};X(y,e=>{!G(o)&&!G(s)&&!r&&e(x)});var T=V(y,2),oe=e=>{var t=dh(),n=z(t),i=V(z(n),2),a=z(i,!0);N(i),N(n);var o=V(n,2),s=e=>{var t=uh(),n=z(t);N(t),H(()=>Y(n,`${G(Pe).provider===`kimi`?`Kimi · `:``}${G(Pe).model??``}`)),J(e,t)};X(o,e=>{G(Pe)?.model&&e(s)}),N(t),H(()=>{Q(i,`title`,G(Fe)||r),Y(a,G(Fe)||r)}),J(e,t)};X(T,e=>{r&&e(oe)});var se=V(T,2);iu(se,{get queue(){return dt}});var ce=V(se,2),pe=e=>{um(e,{get client(){return ct},onclose:()=>{L(o,!1),Cr().then(()=>document.querySelector(`.menu-trigger`)?.focus())},get onlock(){return t.onlock},oncreatepasskey:e=>n()(e)})},ge=e=>{Yl(e,{get queue(){return dt},onclose:yt})},be=e=>{var t=_h(),n=B(t),o=e=>{var t=mh(),n=V(z(t),2);{let e=P(()=>G(O)?G(A).attention.get(G(O))??null:null),t=P(()=>`chat-attention-${G(O)??`none`}`),r=P(()=>G(O)?G(A).pending.has(G(O)):!1);io(n,{get attention(){return G(e)},get controlId(){return G(t)},get pending(){return G(r)},onresolve:(e,t)=>G(O)&&At(G(O),e,t)})}var a=V(n,2);{let e=P(()=>G(O)?G(A).snapshots.get(G(O))??null:null),t=P(()=>G(O)?G(A).attention.get(G(O))??null:null),n=P(()=>`chat-autopilot-safety-${G(O)??`none`}`),r=P(()=>G(O)?G(A).pending.has(G(O)):!1);oo(a,{get autopilot(){return G(e)},get attention(){return G(t)},get controlId(){return G(n)},get pending(){return G(r)},onrecover:()=>G(O)&&void kt(G(O)),ondisable:()=>G(O)&&Ot(G(O),!1)})}var o=V(a,2),s=z(o,!0);N(o);var c=V(o,2),l=e=>{var t=fh(),n=B(t);{let e=P(()=>G(i)?[...G(i).messages]:[]),t=P(()=>G(i)?[...G(i).activities]:[]),r=P(()=>G(i)?.activeTurnId??null),a=P(()=>G(i)?.autopilotAuditTruncated??!1),o=P(()=>G(i)?[...G(i).interactions]:[]);Ac(n,{get messages(){return G(e)},get activities(){return G(t)},get activeTurnId(){return G(r)},get autopilotAuditTruncated(){return G(a)},get interactions(){return G(o)},get answers(){return qe},get submittedAnswers(){return G(Je)},onanswer:On,onquiz:e=>void Tn(e),onpermission:e=>void En(e),ondecision:(e,t)=>void wn(e,t),onretry:Dn,onopenorg:rn,oncopyresult:Nn})}var r=V(n,2);{let e=P(()=>G(i)?.status??G(f)),t=P(()=>G(i)?.activeTurnId??null),n=P(()=>G(i)?.starting??!1),a=P(()=>!!(G(k).find(e=>e.id===G(O))&&![`ready`,`turnActive`].includes(G(k).find(e=>e.id===G(O))?.state??``))),o=P(()=>G(ve)!==null),s=P(()=>G(g)[G(k).find(e=>e.id===G(O))?.provider??`codex`]),c=P(()=>G(k).find(e=>e.id===G(O))?.provider??`codex`);Ao(r,{get status(){return G(e)},get message(){return G(ye)},get activeTurnId(){return G(t)},get starting(){return G(n)},get detached(){return G(a)},get retryMessage(){return G(_e)},get retryable(){return G(o)},get models(){return G(s)},get provider(){return G(c)},onchange:kn,onscrollbottom:()=>xt(`explicit`),onmodelselect:e=>void Lt(e),onsend:()=>void zt(),onqueue:()=>void Bt(),oninterruptsend:()=>void Vt(),onretry:()=>void Wt(),oninterrupt:()=>void Gt()})}var a=V(r,2),o=z(a),s=e=>{{let t=P(()=>G(A).snapshots.get(G(O))??null),n=P(()=>`chat-autopilot-${G(O)}`),r=P(()=>G(A).pending.has(G(O)));no(e,{compact:!0,get autopilot(){return G(t)},get controlId(){return G(n)},get pending(){return G(r)},ontoggle:e=>G(O)&&Ot(G(O),e)})}};X(o,e=>{G(Pe)?.provider!==`kimi`&&e(s)});var c=V(o,2);{let e=P(()=>G(ae).get(G(O))??null),t=P(()=>G(k).find(e=>e.id===G(O))?.model??h),n=P(()=>G(k).find(e=>e.id===G(O))?.plan);La(c,{compact:!0,get activity(){return G(e)},get rootModel(){return G(t)},get plan(){return G(n)},onopen:()=>G(O)&&void it.resync(G(O))})}N(a),Li(V(a,2),e=>L(Ye,e),()=>G(Ye)),J(e,t)},u=e=>{var t=ph(),n=z(t,!0);N(t),H(()=>Y(n,r?G(f):G(C)?`Start a session from the Sessions tab to chat with Codex or Kimi.`:`Start a session from the Sessions tab to chat with Codex.`)),J(e,t)};X(c,e=>{G(O)?e(l):e(u,-1)}),N(t),H(()=>Y(s,G(tt))),J(e,t)},s=e=>{df(e,{get catalog(){return G(Ce)},get state(){return G(j)},onopen:nn,onclose:an})},c=e=>{{let t=P(()=>G(Be)?fu(G(m),G(Be))??null:null);Lu(e,{get workspaceTree(){return G(m)},get selectedWorkspace(){return G(t)},get expandedIds(){return G(Ve)},get summary(){return G(M).summary},get refreshing(){return G(M).refreshing},get checkingOut(){return G(M).checkingOut},get cloning(){return G(Ue)},get error(){return G(M).error},get cloneStatus(){return G(We)},get confirmingPush(){return G(He)},onpull:()=>void bn(),oncheckout:e=>void Sn(e),onopenpushconfirmation:()=>L(He,!0),onpush:()=>void Cn(),oncancelpush:()=>L(He,!1),onselect:gn,onexpandedchange:e=>L(Ve,e,!0),onbrowsefiles:_n,onclone:e=>void xn(e)})}},u=e=>{var t=Hr(),n=B(t),r=e=>{var t=gh(),n=z(t),r=z(n);si(r,()=>fn);var i=V(r,2);N(n);var a=V(n,2),o=e=>{xp(e,{get skillsState(){return G(E)},onrefresh:()=>G(E)?.refresh()??Promise.resolve(),onprofileschange:()=>void cn(),heading:`Skill profile editor`})},s=e=>{J(e,hh())};X(a,e=>{G(E)?e(o):e(s,-1)}),N(t),K(`click`,i,()=>void pn()),J(e,t)},i=e=>{{let t=P(()=>G(S)===G(w));Qf(e,{get sessions(){return G(k)},get recentSessions(){return G(ue)},get selectedSessionId(){return G(O)},get activitySnapshots(){return G(ae)},get autopilotSnapshots(){return G(A).snapshots},get autopilotPending(){return G(A).pending},get autopilotAttention(){return G(A).attention},get workspaceTree(){return G(m)},get workspaceId(){return G(re)},get expandedIds(){return G(ie)},get sandbox(){return G(de)},get approvalPolicy(){return G(fe)},get models(){return G(g)[G(w)]},get selectedModel(){return G(b)[G(w)]},get provider(){return G(w)},get kimiAvailable(){return G(C)},get modelsLoading(){return G(t)},get skillProfiles(){return G(ee)},get selectedSkillProfile(){return G(te)},get skillProfileError(){return G(ne)},get startingSession(){return G(me)},get openingSessionId(){return G(he)},onworkspacechange:e=>L(re,e,!0),onexpandedchange:e=>L(ie,e,!0),onsandboxchange:e=>L(de,e,!0),onapprovalpolicychange:e=>L(fe,e,!0),onmodelchange:e=>L(b,{...G(b),[G(w)]:e}),onproviderchange:e=>void Tt(e),onskillprofilechange:e=>L(te,e,!0),onmanageprofiles:e=>void dn(e),onopen:Mt,onselectopen:Mt,onclose:e=>void Pt(e),onautopilottoggle:Ot,onactivityopen:e=>void it.resync(e),onautopilotresolve:At,onopenrecent:e=>void Nt(e),onforget:e=>void Ft(e),oncopyresume:e=>void It(e),onstart:()=>void Et()})}};X(n,e=>{G(D)===`profile-manager`?e(r):e(i,-1)}),J(e,t)};X(n,e=>{G(a)===`chat`?e(o):G(a)===`plan`?e(s,1):G(a)===`git`?e(c,2):e(u,-1)});var d=V(n,2),p=e=>{ch(e,{get root(){return G(l)},get listDirectory(){return nt.listWorkspaceDirectory},get copyEntry(){return nt.copyWorkspaceEntry},get moveEntry(){return nt.moveWorkspaceEntry},get deleteEntry(){return nt.deleteWorkspaceEntry},get uploadFile(){return nt.uploadWorkspaceFile},onclose:()=>void vn(),onerror:e=>jn(e,`WORKSPACE_FILES_READ_FAILED`),onsuccess:e=>dt.enqueue({kind:`success`,message:e}),onmutation:yn})};X(d,e=>{G(l)&&e(p)});var _=V(d,2),v=e=>{ip(e,{get activeTab(){return G(a)},get chatEnabled(){return G(le)},get focusTab(){return G(je)},onselect:qt})};X(_,e=>{r||e(v)}),J(e,t)};X(ce,e=>{G(o)&&t.passkeyAuthEnabled?e(pe):G(s)?e(ge,1):e(be,-1)}),N(d);var xe=V(d,2),Se=e=>{Sm(e,{onclose:vt})};X(xe,e=>{G(c)&&e(Se)}),K(`pointerdown`,d,Qt),K(`pointerup`,d,$t),Nr(`pointercancel`,d,en),J(e,u)};X(Ln,e=>{mt===`true`?e(zn):pt===`error`||pt===`stacked`?e(Bn,1):ft===`sessions`||ft===`git`?e(Vn,2):e(Hn,-1)}),J(e,In),$e()}Pr([`pointerdown`,`pointerup`,`click`]);function bh(){throw Error(`AUTH_RESPONSE_INVALID`)}async function xh(e){if(!e.ok){let t;try{let n=await e.json();typeof n==`object`&&n&&`code`in n&&typeof n.code==`string`&&(t=n.code)}catch{}throw Error(t??`AUTH_REQUEST_FAILED_${e.status}`)}return e.json()}function Sh(e){return!!e&&typeof e==`object`&&[`bootstrap`,`locked`,`authenticated`].includes(e.status)&&typeof e.publicOrigin==`string`&&(e.passkeyAuthEnabled===void 0||typeof e.passkeyAuthEnabled==`boolean`)}function Ch(e){return!!e&&typeof e==`object`&&!!e.options&&typeof e.options.challenge==`string`}function wh(e){return!!e&&typeof e==`object`&&e.status===`authenticated`}function Th(e=fetch){async function t(){let t=await xh(await e(`/api/auth/status`,{credentials:`same-origin`}));return Sh(t)||bh(),t}async function n(t,n={}){let r=await xh(await e(t,{method:`POST`,credentials:`same-origin`,headers:{"content-type":`application/json`},body:JSON.stringify(n)}));return Ch(r)||bh(),r}async function r(t,n){let r=await xh(await e(t,{method:`POST`,credentials:`same-origin`,headers:{"content-type":`application/json`},body:JSON.stringify(n)}));return wh(r)||bh(),r}return{status:t,registrationOptions:e=>n(`/api/auth/register/options`,e?{enrollmentTicket:e}:{}),verifyRegistration:(e,t)=>r(`/api/auth/register/verify`,{response:e,nickname:t}),loginOptions:()=>n(`/api/auth/login/options`),verifyLogin:e=>r(`/api/auth/login/verify`,{response:e}),logout:async()=>{let t=await e(`/api/auth/logout`,{method:`POST`,credentials:`same-origin`});if(!t.ok)throw Error(`AUTH_REQUEST_FAILED_${t.status}`)}}}function Eh(e,t=fetch){return async(n,r)=>{let i=await t(n,{...r,credentials:`same-origin`});return i.status===401&&(await i.clone().json().catch(()=>null))?.code===`AUTH_REQUIRED`&&e(),i}}function Dh(e){let t=new Uint8Array(e),n=``;for(let e of t)n+=String.fromCharCode(e);return btoa(n).replace(/\+/g,`-`).replace(/\//g,`_`).replace(/=/g,``)}function Oh(e){let t=e.replace(/-/g,`+`).replace(/_/g,`/`),n=(4-t.length%4)%4,r=t.padEnd(t.length+n,`=`),i=atob(r),a=new ArrayBuffer(i.length),o=new Uint8Array(a);for(let e=0;e<i.length;e++)o[e]=i.charCodeAt(e);return a}function kh(){return Ah.stubThis(globalThis?.PublicKeyCredential!==void 0&&typeof globalThis.PublicKeyCredential==`function`)}var Ah={stubThis:e=>e};function jh(e){let{id:t}=e;return{...e,id:Oh(t),transports:e.transports}}function Mh(e){return e===`localhost`||/^((xn--[a-z0-9-]+|[a-z0-9]+(-[a-z0-9]+)*)\.)+([a-z]{2,}|xn--[a-z0-9-]+)$/i.test(e)}var Nh=class extends Error{constructor({message:e,code:t,cause:n,name:r}){super(e,{cause:n}),Object.defineProperty(this,"code",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.name=r??n.name,this.code=t}};function Ph({error:e,options:t}){let{publicKey:n}=t;if(!n)throw Error(`options was missing required publicKey property`);if(e.name===`AbortError`){if(t.signal instanceof AbortSignal)return new Nh({message:`Registration ceremony was sent an abort signal`,code:`ERROR_CEREMONY_ABORTED`,cause:e})}else if(e.name===`ConstraintError`){if(n.authenticatorSelection?.requireResidentKey===!0)return new Nh({message:`Discoverable credentials were required but no available authenticator supported it`,code:`ERROR_AUTHENTICATOR_MISSING_DISCOVERABLE_CREDENTIAL_SUPPORT`,cause:e});if(t.mediation===`conditional`&&n.authenticatorSelection?.userVerification===`required`)return new Nh({message:`User verification was required during automatic registration but it could not be performed`,code:`ERROR_AUTO_REGISTER_USER_VERIFICATION_FAILURE`,cause:e});if(n.authenticatorSelection?.userVerification===`required`)return new Nh({message:`User verification was required but no available authenticator supported it`,code:`ERROR_AUTHENTICATOR_MISSING_USER_VERIFICATION_SUPPORT`,cause:e})}else if(e.name===`InvalidStateError`)return new Nh({message:`The authenticator was previously registered`,code:`ERROR_AUTHENTICATOR_PREVIOUSLY_REGISTERED`,cause:e});else if(e.name===`NotAllowedError`)return new Nh({message:e.message,code:`ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY`,cause:e});else if(e.name===`NotSupportedError`)return n.pubKeyCredParams.filter(e=>e.type===`public-key`).length===0?new Nh({message:`No entry in pubKeyCredParams was of type "public-key"`,code:`ERROR_MALFORMED_PUBKEYCREDPARAMS`,cause:e}):new Nh({message:`No available authenticator supported any of the specified pubKeyCredParams algorithms`,code:`ERROR_AUTHENTICATOR_NO_SUPPORTED_PUBKEYCREDPARAMS_ALG`,cause:e});else if(e.name===`SecurityError`){let t=globalThis.location.hostname;if(!Mh(t))return new Nh({message:`${globalThis.location.hostname} is an invalid domain`,code:`ERROR_INVALID_DOMAIN`,cause:e});if(n.rp.id!==t)return new Nh({message:`The RP ID "${n.rp.id}" is invalid for this domain`,code:`ERROR_INVALID_RP_ID`,cause:e})}else if(e.name===`TypeError`){if(n.user.id.byteLength<1||n.user.id.byteLength>64)return new Nh({message:`User ID was not between 1 and 64 characters`,code:`ERROR_INVALID_USER_ID_LENGTH`,cause:e})}else if(e.name===`UnknownError`)return new Nh({message:`The authenticator was unable to process the specified options, or could not create a new credential`,code:`ERROR_AUTHENTICATOR_GENERAL_ERROR`,cause:e});return e}var Fh=new class{constructor(){Object.defineProperty(this,"controller",{enumerable:!0,configurable:!0,writable:!0,value:void 0})}createNewAbortSignal(){if(this.controller){let e=Error(`Cancelling existing WebAuthn API call for new one`);e.name=`AbortError`,this.controller.abort(e)}let e=new AbortController;return this.controller=e,e.signal}cancelCeremony(){if(this.controller){let e=Error(`Manually cancelling existing WebAuthn API call`);e.name=`AbortError`,this.controller.abort(e),this.controller=void 0}}},Ih=[`cross-platform`,`platform`];function Lh(e){if(e&&!(Ih.indexOf(e)<0))return e}async function Rh(e){!e.optionsJSON&&e.challenge&&(console.warn(`startRegistration() was not called correctly. It will try to continue with the provided options, but this call should be refactored to use the expected call structure instead. See https://simplewebauthn.dev/docs/packages/browser#typeerror-cannot-read-properties-of-undefined-reading-challenge for more information.`),e={optionsJSON:e});let{optionsJSON:t,useAutoRegister:n=!1}=e;if(!kh())throw Error(`WebAuthn is not supported in this browser`);let r={...t,challenge:Oh(t.challenge),user:{...t.user,id:Oh(t.user.id)},excludeCredentials:t.excludeCredentials?.map(jh)},i={};n&&(i.mediation=`conditional`),i.publicKey=r,i.signal=Fh.createNewAbortSignal();let a;try{a=await navigator.credentials.create(i)}catch(e){throw Ph({error:e,options:i})}if(!a)throw Error(`Registration was not completed`);let{id:o,rawId:s,response:c,type:l}=a,u;typeof c.getTransports==`function`&&(u=c.getTransports());let d;if(typeof c.getPublicKeyAlgorithm==`function`)try{d=c.getPublicKeyAlgorithm()}catch(e){zh(`getPublicKeyAlgorithm()`,e)}let f;if(typeof c.getPublicKey==`function`)try{let e=c.getPublicKey();e!==null&&(f=Dh(e))}catch(e){zh(`getPublicKey()`,e)}let p;if(typeof c.getAuthenticatorData==`function`)try{p=Dh(c.getAuthenticatorData())}catch(e){zh(`getAuthenticatorData()`,e)}return{id:o,rawId:Dh(s),response:{attestationObject:Dh(c.attestationObject),clientDataJSON:Dh(c.clientDataJSON),transports:u,publicKeyAlgorithm:d,publicKey:f,authenticatorData:p},type:l,clientExtensionResults:a.getClientExtensionResults(),authenticatorAttachment:Lh(a.authenticatorAttachment)}}function zh(e,t){console.warn(`The browser extension that intercepted this WebAuthn API call incorrectly implemented ${e}. You should report this error to them.\n`,t)}function Bh(){if(!kh())return Vh.stubThis(new Promise(e=>e(!1)));let e=globalThis.PublicKeyCredential;return e?.isConditionalMediationAvailable===void 0?Vh.stubThis(new Promise(e=>e(!1))):Vh.stubThis(e.isConditionalMediationAvailable())}var Vh={stubThis:e=>e};function Hh({error:e,options:t}){let{publicKey:n}=t;if(!n)throw Error(`options was missing required publicKey property`);if(e.name===`AbortError`){if(t.signal instanceof AbortSignal)return new Nh({message:`Authentication ceremony was sent an abort signal`,code:`ERROR_CEREMONY_ABORTED`,cause:e})}else if(e.name===`NotAllowedError`)return new Nh({message:e.message,code:`ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY`,cause:e});else if(e.name===`SecurityError`){let t=globalThis.location.hostname;if(!Mh(t))return new Nh({message:`${globalThis.location.hostname} is an invalid domain`,code:`ERROR_INVALID_DOMAIN`,cause:e});if(n.rpId!==t)return new Nh({message:`The RP ID "${n.rpId}" is invalid for this domain`,code:`ERROR_INVALID_RP_ID`,cause:e})}else if(e.name===`UnknownError`)return new Nh({message:`The authenticator was unable to process the specified options, or could not create a new assertion signature`,code:`ERROR_AUTHENTICATOR_GENERAL_ERROR`,cause:e});return e}async function Uh(e){!e.optionsJSON&&e.challenge&&(console.warn(`startAuthentication() was not called correctly. It will try to continue with the provided options, but this call should be refactored to use the expected call structure instead. See https://simplewebauthn.dev/docs/packages/browser#typeerror-cannot-read-properties-of-undefined-reading-challenge for more information.`),e={optionsJSON:e});let{optionsJSON:t,useBrowserAutofill:n=!1,verifyBrowserAutofillInput:r=!0}=e;if(!kh())throw Error(`WebAuthn is not supported in this browser`);let i;t.allowCredentials?.length!==0&&(i=t.allowCredentials?.map(jh));let a={...t,challenge:Oh(t.challenge),allowCredentials:i},o={};if(n){if(!await Bh())throw Error(`Browser does not support WebAuthn autofill`);if(document.querySelectorAll(`input[autocomplete$='webauthn']`).length<1&&r)throw Error('No <input> with "webauthn" as the only or last value in its `autocomplete` attribute was detected');o.mediation=`conditional`,a.allowCredentials=[]}o.publicKey=a,o.signal=Fh.createNewAbortSignal();let s;try{s=await navigator.credentials.get(o)}catch(e){throw Hh({error:e,options:o})}if(!s)throw Error(`Authentication was not completed`);let{id:c,rawId:l,response:u,type:d}=s,f;return u.userHandle&&(f=Dh(u.userHandle)),{id:c,rawId:Dh(l),response:{authenticatorData:Dh(u.authenticatorData),clientDataJSON:Dh(u.clientDataJSON),signature:Dh(u.signature),userHandle:f},type:d,clientExtensionResults:s.getClientExtensionResults(),authenticatorAttachment:Lh(s.authenticatorAttachment)}}function Wh(e){return typeof e==`object`&&e?e:{}}function Gh(e){let t=Wh(e),n=typeof t.code==`string`?t.code:``;switch(n){case`ERROR_CEREMONY_ABORTED`:return`The passkey request was cancelled. You can safely try again.`;case`ERROR_INVALID_DOMAIN`:case`ERROR_INVALID_RP_ID`:return`The passkey provider rejected this site’s domain identity. Open the canonical HTTPS address and try again.`;case`ERROR_INVALID_USER_ID_LENGTH`:case`ERROR_MALFORMED_PUBKEYCREDPARAMS`:return`The relay supplied passkey options this browser could not use (${n}).`;case`ERROR_AUTHENTICATOR_MISSING_DISCOVERABLE_CREDENTIAL_SUPPORT`:return`This passkey provider does not support the discoverable credential required for sign-in. Try another passkey provider or browser.`;case`ERROR_AUTHENTICATOR_MISSING_USER_VERIFICATION_SUPPORT`:case`ERROR_AUTO_REGISTER_USER_VERIFICATION_FAILURE`:return`This passkey provider could not perform the required screen-lock verification. Check the device screen lock or try another provider.`;case`ERROR_AUTHENTICATOR_PREVIOUSLY_REGISTERED`:return`This passkey is already registered on this device. Try signing in instead.`;case`ERROR_AUTHENTICATOR_NO_SUPPORTED_PUBKEYCREDPARAMS_ALG`:return`This passkey provider supports none of the relay’s allowed cryptographic algorithms. Try another provider or browser.`;case`ERROR_AUTHENTICATOR_GENERAL_ERROR`:return`The phone’s passkey provider accepted device verification but could not create the credential (ERROR_AUTHENTICATOR_GENERAL_ERROR). Try another browser or passkey provider on this phone.`;case`ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY`:return Gh(t.cause)}switch(typeof t.message==`string`?t.message:``){case`INVALID_REGISTRATION_REQUEST`:return`The relay did not understand the passkey response from this browser. Refresh the page and try again.`;case`REGISTRATION_COOKIE_MISSING`:return`The registration session cookie was not returned by this browser. Allow site cookies, refresh, and try again.`;case`REGISTRATION_NOT_AVAILABLE`:return`This registration attempt expired or is no longer available. Refresh the page and start again.`;case`REGISTRATION_VERIFICATION_FAILED`:return`Your device created the passkey, but the relay could not verify it. Try again and check the relay diagnostics if it persists.`;case`ORIGIN_NOT_ALLOWED`:return`This page is not using the relay’s configured public address. Open the canonical HTTPS address and try again.`;case`ENROLLMENT_NOT_AUTHORIZED`:return`This relay is no longer accepting first-device registration.`;case`AUTHENTICATION_FAILED`:return`We could not complete sign-in. Please try again.`}let r=typeof t.name==`string`?t.name:``;switch(r){case`NotAllowedError`:return`The passkey request was cancelled or timed out. Try again when ready.`;case`InvalidStateError`:return`This passkey is already registered on this device. Try signing in instead.`;case`AbortError`:return`The passkey request was cancelled. You can safely try again.`;case`SecurityError`:return`Passkeys require this device to use the configured secure site.`;case`ConstraintError`:case`DataError`:case`EncodingError`:return`This browser could not use the passkey options supplied by the relay. Refresh the page and try again.`;case`NetworkError`:return`The connection was interrupted while completing the passkey request. Check the connection and try again.`;case`OperationError`:case`UnknownError`:return`This browser or passkey provider could not finish the passkey request after device verification. Try again or use another browser on this device.`;case`TypeError`:return`This browser rejected the passkey request data. Refresh the page and try again.`;default:return/^[A-Za-z]+Error$/.test(r)?`The passkey request failed inside this browser (${r}). Try another browser or passkey provider on this device.`:`We could not complete authentication. Please try again.`}}function Kh(){return typeof window<`u`&&window.isSecureContext&&window.PublicKeyCredential!==void 0}function qh(e,t){async function n(n){t({kind:`checking`});try{let{status:r,publicOrigin:i,passkeyAuthEnabled:a=!0}=await e.status();if(!a){let e={kind:`authenticated`,passkeyAuthEnabled:!1};return t(e),e}if(!Kh()){let e={kind:`unsupported`,message:`Passkeys require a secure browser on this device.`};return t(e),e}let o=r===`authenticated`?{kind:`authenticated`,passkeyAuthEnabled:!0}:r===`bootstrap`?{kind:`bootstrap`,publicOrigin:i}:n?{kind:`enrollment`,publicOrigin:i}:{kind:`locked`};return t(o),o}catch{let e={kind:`error`,message:`We could not check this device. Please try again.`};return t(e),e}}function r(){t({kind:`authenticated`,passkeyAuthEnabled:!0})}function i(e){t({kind:`locked`,...e?{message:e}:{}})}return{check:n,retry:n,authenticated:r,locked:i}}var Jh=q(`<p class="warning svelte-1c5qcm6">This one-time link authorizes one new passkey. Choose a nickname and complete the passkey
|
|
35
35
|
prompt before it expires.</p>`),Yh=q(`<p class="warning svelte-1c5qcm6"><strong class="svelte-1c5qcm6">Trust-on-first-use:</strong> anyone who can reach an empty relay instance could claim
|
|
36
36
|
first-device access. Enroll this device before exposing the instance, and confirm you are at the
|
|
37
37
|
canonical address before continuing.</p>`),Xh=q(`<p class="error svelte-1c5qcm6">Passkeys require a secure browser on this device.</p>`),Zh=q(`<p class="feedback svelte-1c5qcm6"> </p>`),Qh=q(`<img alt="QR code for the first-device setup link" class="svelte-1c5qcm6"/>`),$h=q(`<div class="handoff svelte-1c5qcm6"><!> <div class="svelte-1c5qcm6"><h2 class="svelte-1c5qcm6">Continue on your phone</h2> <p class="svelte-1c5qcm6">Scanning opens this same setup page. You will still choose a nickname and explicitly
|
package/dist/client/index.html
CHANGED
|
@@ -16,7 +16,7 @@ SPDX-License-Identifier: AGPL-3.0-or-later
|
|
|
16
16
|
<link rel="icon" href="/icons/gestalt-mobile-192.png" />
|
|
17
17
|
<link rel="apple-touch-icon" href="/icons/gestalt-mobile-180.png" />
|
|
18
18
|
<title>Gestalt Mobile</title>
|
|
19
|
-
<script type="module" crossorigin src="/assets/index-
|
|
19
|
+
<script type="module" crossorigin src="/assets/index-B07-pr2H.js"></script>
|
|
20
20
|
<link rel="stylesheet" crossorigin href="/assets/index-CCALmXl1.css">
|
|
21
21
|
</head>
|
|
22
22
|
<body>
|
|
@@ -14,13 +14,18 @@ export function isSessionReadable(session) {
|
|
|
14
14
|
export function relayOwnsWriter(session) {
|
|
15
15
|
return session.state === 'ready' || session.state === 'turnActive';
|
|
16
16
|
}
|
|
17
|
-
const sandboxes = new Set([
|
|
17
|
+
const sandboxes = new Set([
|
|
18
|
+
'workspace-git',
|
|
19
|
+
'read-only',
|
|
20
|
+
'workspace-write',
|
|
21
|
+
'danger-full-access',
|
|
22
|
+
]);
|
|
18
23
|
const approvalPolicies = new Set(['untrusted', 'on-request', 'never']);
|
|
19
24
|
export function createSessionExecutionPolicy(input) {
|
|
20
25
|
if (input.sandbox !== undefined &&
|
|
21
26
|
(typeof input.sandbox !== 'string' || !sandboxes.has(input.sandbox)))
|
|
22
27
|
throw new DomainError('SESSION_EXECUTION_POLICY_INVALID');
|
|
23
|
-
const approvalPolicy = input.approvalPolicy ?? '
|
|
28
|
+
const approvalPolicy = input.approvalPolicy ?? 'never';
|
|
24
29
|
if (typeof approvalPolicy !== 'string' ||
|
|
25
30
|
!approvalPolicies.has(approvalPolicy))
|
|
26
31
|
throw new DomainError('SESSION_EXECUTION_POLICY_INVALID');
|
|
@@ -14,7 +14,9 @@ const schema = z.object({
|
|
|
14
14
|
.trim()
|
|
15
15
|
.optional()
|
|
16
16
|
.transform((value) => value || undefined),
|
|
17
|
-
sandbox: z
|
|
17
|
+
sandbox: z
|
|
18
|
+
.enum(['workspace-git', 'read-only', 'workspace-write', 'danger-full-access'])
|
|
19
|
+
.optional(),
|
|
18
20
|
approvalPolicy: z.enum(['untrusted', 'on-request', 'never']).optional(),
|
|
19
21
|
});
|
|
20
22
|
/** Parses only settings that are safe to send directly to Codex thread/start. */
|
|
@@ -674,7 +674,7 @@ export class CodexSessionRuntime {
|
|
|
674
674
|
...(session.executionPolicy?.approvalPolicy
|
|
675
675
|
? { approvalPolicy: session.executionPolicy.approvalPolicy }
|
|
676
676
|
: {}),
|
|
677
|
-
...(session
|
|
677
|
+
...this.permissionParams(session),
|
|
678
678
|
dynamicTools: [
|
|
679
679
|
gestaltQuizDynamicTool,
|
|
680
680
|
gestaltOrgPlanAttentionDynamicTool,
|
|
@@ -775,9 +775,17 @@ export class CodexSessionRuntime {
|
|
|
775
775
|
gestaltAgentCapacityRecoveryDynamicTool,
|
|
776
776
|
],
|
|
777
777
|
...(session.model ? { model: session.model } : {}),
|
|
778
|
-
...(session
|
|
778
|
+
...this.permissionParams(session),
|
|
779
779
|
};
|
|
780
780
|
}
|
|
781
|
+
permissionParams(session) {
|
|
782
|
+
const selection = session.executionPolicy?.sandbox;
|
|
783
|
+
if (!selection)
|
|
784
|
+
return {};
|
|
785
|
+
return selection === 'workspace-git'
|
|
786
|
+
? { permissions: 'workspace-git' }
|
|
787
|
+
: { sandbox: selection };
|
|
788
|
+
}
|
|
781
789
|
async createResource(session) {
|
|
782
790
|
const lease = this.planStatusSource
|
|
783
791
|
? await this.planStatusSource.open({ id: session.id, workspacePath: session.workspacePath }, (update) => this.onPlanStatus?.(session.id, update))
|
|
@@ -3,7 +3,29 @@
|
|
|
3
3
|
* Designed by Denis Roio <jaromil@dyne.org>
|
|
4
4
|
* SPDX-License-Identifier: AGPL-3.0-or-later
|
|
5
5
|
*/
|
|
6
|
-
const schema = `CREATE TABLE IF NOT EXISTS relay_sessions (id TEXT PRIMARY KEY, workspace_id TEXT NOT NULL, workspace_path TEXT NOT NULL, profile TEXT NOT NULL, model TEXT, branch TEXT, sandbox TEXT, approval_policy TEXT, thread_id TEXT, state TEXT NOT NULL, desired_state TEXT NOT NULL, active_turn_id TEXT, protocol_version TEXT, failure_count INTEGER NOT NULL DEFAULT 0, effective_skill_selection_json TEXT, last_org_plan_json TEXT, next_sequence INTEGER NOT NULL DEFAULT 1, created_at TEXT NOT NULL, updated_at TEXT NOT NULL); CREATE TABLE IF NOT EXISTS pending_interactions (session_id TEXT NOT NULL REFERENCES relay_sessions(id) ON DELETE CASCADE, request_id TEXT NOT NULL, kind TEXT NOT NULL, payload_json TEXT NOT NULL, turn_id TEXT, requested_at TEXT, resolved_at TEXT, outcome TEXT, operation_key TEXT, resolution_state TEXT NOT NULL DEFAULT 'active', PRIMARY KEY (session_id, request_id)); CREATE TABLE IF NOT EXISTS session_events (session_id TEXT NOT NULL REFERENCES relay_sessions(id) ON DELETE CASCADE, sequence INTEGER NOT NULL, occurred_at TEXT NOT NULL, type TEXT NOT NULL, payload_json TEXT NOT NULL, autopilot_outbox_id INTEGER, PRIMARY KEY (session_id, sequence), UNIQUE(session_id, autopilot_outbox_id)); CREATE TABLE IF NOT EXISTS idempotency_results (scope TEXT NOT NULL, key TEXT NOT NULL, status_code INTEGER NOT NULL, body_json TEXT NOT NULL, PRIMARY KEY (scope, key)); CREATE TABLE IF NOT EXISTS autopilot_sessions (session_id TEXT PRIMARY KEY REFERENCES relay_sessions(id) ON DELETE CASCADE, state TEXT NOT NULL, requested_enabled INTEGER NOT NULL, plan_identity TEXT, plan_fingerprint TEXT, generation INTEGER NOT NULL, no_progress_count INTEGER NOT NULL, next_evaluation_at TEXT, last_control_id TEXT, stop_reason TEXT, lifecycle_json TEXT, updated_at TEXT NOT NULL); CREATE TABLE IF NOT EXISTS autopilot_controls (session_id TEXT NOT NULL REFERENCES relay_sessions(id) ON DELETE CASCADE, control_id TEXT NOT NULL, status TEXT NOT NULL, created_at TEXT NOT NULL, updated_at TEXT NOT NULL, failure_code TEXT, turn_id TEXT, PRIMARY KEY (session_id, control_id)); CREATE TABLE IF NOT EXISTS autopilot_outbox (id INTEGER PRIMARY KEY AUTOINCREMENT, session_id TEXT NOT NULL REFERENCES relay_sessions(id) ON DELETE CASCADE, type TEXT NOT NULL, payload_json TEXT NOT NULL, occurred_at TEXT NOT NULL);`;
|
|
6
|
+
const schema = `CREATE TABLE IF NOT EXISTS relay_sessions (id TEXT PRIMARY KEY, workspace_id TEXT NOT NULL, workspace_path TEXT NOT NULL, profile TEXT NOT NULL, model TEXT, branch TEXT, sandbox TEXT, approval_policy TEXT, thread_id TEXT, state TEXT NOT NULL, desired_state TEXT NOT NULL, active_turn_id TEXT, protocol_version TEXT, failure_count INTEGER NOT NULL DEFAULT 0, effective_skill_selection_json TEXT, last_org_plan_json TEXT, next_sequence INTEGER NOT NULL DEFAULT 1, created_at TEXT NOT NULL, updated_at TEXT NOT NULL); CREATE TABLE IF NOT EXISTS pending_interactions (session_id TEXT NOT NULL REFERENCES relay_sessions(id) ON DELETE CASCADE, request_id TEXT NOT NULL, kind TEXT NOT NULL, payload_json TEXT NOT NULL, turn_id TEXT, requested_at TEXT, resolved_at TEXT, outcome TEXT, operation_key TEXT, resolution_state TEXT NOT NULL DEFAULT 'active', PRIMARY KEY (session_id, request_id)); CREATE TABLE IF NOT EXISTS session_events (session_id TEXT NOT NULL REFERENCES relay_sessions(id) ON DELETE CASCADE, sequence INTEGER NOT NULL, occurred_at TEXT NOT NULL, type TEXT NOT NULL, payload_json TEXT NOT NULL, autopilot_outbox_id INTEGER, PRIMARY KEY (session_id, sequence), UNIQUE(session_id, autopilot_outbox_id)); CREATE TABLE IF NOT EXISTS idempotency_results (scope TEXT NOT NULL, key TEXT NOT NULL, status_code INTEGER NOT NULL, body_json TEXT NOT NULL, PRIMARY KEY (scope, key)); CREATE TABLE IF NOT EXISTS autopilot_sessions (session_id TEXT PRIMARY KEY REFERENCES relay_sessions(id) ON DELETE CASCADE, state TEXT NOT NULL, requested_enabled INTEGER NOT NULL, plan_identity TEXT, plan_fingerprint TEXT, generation INTEGER NOT NULL, no_progress_count INTEGER NOT NULL, next_evaluation_at TEXT, last_control_id TEXT, stop_reason TEXT, lifecycle_json TEXT, updated_at TEXT NOT NULL); CREATE TABLE IF NOT EXISTS autopilot_controls (session_id TEXT NOT NULL REFERENCES relay_sessions(id) ON DELETE CASCADE, control_id TEXT NOT NULL, status TEXT NOT NULL, created_at TEXT NOT NULL, updated_at TEXT NOT NULL, failure_code TEXT, turn_id TEXT, PRIMARY KEY (session_id, control_id)); CREATE TABLE IF NOT EXISTS autopilot_outbox (id INTEGER PRIMARY KEY AUTOINCREMENT, session_id TEXT NOT NULL REFERENCES relay_sessions(id) ON DELETE CASCADE, type TEXT NOT NULL, payload_json TEXT NOT NULL, occurred_at TEXT NOT NULL); CREATE TABLE IF NOT EXISTS relay_schema_migrations (name TEXT PRIMARY KEY);`;
|
|
7
|
+
const workspaceGitDefaultsMigration = '2026-10-01-workspace-git-defaults';
|
|
8
|
+
function migrateWorkspaceGitDefaults(database) {
|
|
9
|
+
database.exec('BEGIN IMMEDIATE');
|
|
10
|
+
try {
|
|
11
|
+
const applied = database
|
|
12
|
+
.prepare('SELECT 1 FROM relay_schema_migrations WHERE name = ?')
|
|
13
|
+
.get(workspaceGitDefaultsMigration);
|
|
14
|
+
if (!applied) {
|
|
15
|
+
database
|
|
16
|
+
.prepare("UPDATE relay_sessions SET sandbox = 'workspace-git', approval_policy = 'never' WHERE sandbox = 'workspace-write' AND approval_policy = 'on-request'")
|
|
17
|
+
.run();
|
|
18
|
+
database
|
|
19
|
+
.prepare('INSERT INTO relay_schema_migrations (name) VALUES (?)')
|
|
20
|
+
.run(workspaceGitDefaultsMigration);
|
|
21
|
+
}
|
|
22
|
+
database.exec('COMMIT');
|
|
23
|
+
}
|
|
24
|
+
catch (error) {
|
|
25
|
+
database.exec('ROLLBACK');
|
|
26
|
+
throw error;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
7
29
|
export function migrate(database) {
|
|
8
30
|
database.exec(schema);
|
|
9
31
|
database.exec("CREATE INDEX IF NOT EXISTS session_events_autopilot_audit_tail_v3 ON session_events(session_id, type, sequence DESC) WHERE type IN ('autopilot.continuation-scheduled','autopilot.control-issued','autopilot.turn-started','autopilot.turn-failed','autopilot.progress-reset','autopilot.final-rejected','autopilot.executor-resumed','autopilot.process-monitoring','autopilot.process-result-consumed','autopilot.process-terminated','autopilot.updated','org-plan.attention-required','org-plan.attention-resolved')");
|
|
@@ -22,6 +44,7 @@ export function migrate(database) {
|
|
|
22
44
|
database.exec('ALTER TABLE relay_sessions ADD COLUMN sandbox TEXT');
|
|
23
45
|
if (!columns.some((column) => column.name === 'approval_policy'))
|
|
24
46
|
database.exec('ALTER TABLE relay_sessions ADD COLUMN approval_policy TEXT');
|
|
47
|
+
migrateWorkspaceGitDefaults(database);
|
|
25
48
|
if (!columns.some((column) => column.name === 'provider'))
|
|
26
49
|
database.exec("ALTER TABLE relay_sessions ADD COLUMN provider TEXT NOT NULL DEFAULT 'codex'");
|
|
27
50
|
const autopilotColumns = database
|