@av-pi-studio/web-client 0.0.119 → 0.0.120

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (25) hide show
  1. package/dist/web/assets/{BinaryFallbackViewer-DZ6fyGsu.js → BinaryFallbackViewer-Ct7gB8Zj.js} +1 -1
  2. package/dist/web/assets/{ChatPanel-yRv-CSyg.js → ChatPanel-Bw7Hb7zc.js} +1 -1
  3. package/dist/web/assets/{CodeView-HA63pf1I.js → CodeView-BWjIMXx_.js} +1 -1
  4. package/dist/web/assets/{FilePanel-KbN8R1q4.js → FilePanel-nx2ZNCzw.js} +1 -1
  5. package/dist/web/assets/{HtmlViewer-BlBKng1E.js → HtmlViewer-CNhiAwz_.js} +1 -1
  6. package/dist/web/assets/{ImageViewer-CSOSyfvS.js → ImageViewer-5NK0vbNf.js} +1 -1
  7. package/dist/web/assets/{MarkdownFileViewer-lxpM7SOl.js → MarkdownFileViewer-C9TjyaOy.js} +1 -1
  8. package/dist/web/assets/{ModelProvidersPanel-CB3LnoWb.js → ModelProvidersPanel-DaSeQAGS.js} +1 -1
  9. package/dist/web/assets/{MoleculeViewerPanel-B2E7mzSf.js → MoleculeViewerPanel-DCSVt-5q.js} +1 -1
  10. package/dist/web/assets/{PdfViewer-DhWWrlIg.js → PdfViewer-D3wY27_O.js} +1 -1
  11. package/dist/web/assets/{SaveFileButton-B7-DaZRk.js → SaveFileButton-D4L2yJ4C.js} +1 -1
  12. package/dist/web/assets/{SettingsDialog-PvCzy46o.js → SettingsDialog-SEYpCTXv.js} +1 -1
  13. package/dist/web/assets/{SkillsPanel-BAOCx8Mk.js → SkillsPanel-i5O4j8TT.js} +1 -1
  14. package/dist/web/assets/{TerminalPanel-D7OImgct.js → TerminalPanel-teco8hQm.js} +1 -1
  15. package/dist/web/assets/{TextViewer-BYKfoK_A.js → TextViewer-Dc4_Pm2d.js} +1 -1
  16. package/dist/web/assets/{VideoViewer-D5zXCCTy.js → VideoViewer-DKa99m9b.js} +1 -1
  17. package/dist/web/assets/{ViewersPanel-CcXyTny7.js → ViewersPanel-TDwABaMu.js} +1 -1
  18. package/dist/web/assets/{href-resolution-73JOZBv8.js → href-resolution-pg8AZoGq.js} +1 -1
  19. package/dist/web/assets/{index-DFue5iwi.js → index-B6VaYU8s.js} +5 -5
  20. package/dist/web/assets/{markdown-CIs21q13.js → markdown-CPP5yk_k.js} +1 -1
  21. package/dist/web/assets/{use-file-download-DXQ8x6cp.js → use-file-download-Db9Jkq8L.js} +1 -1
  22. package/dist/web/assets/{use-file-watch-Bi_rtv7D.js → use-file-watch-D3DZUhpX.js} +1 -1
  23. package/dist/web/assets/{use-provider-auth-list-Bxn9HTsw.js → use-provider-auth-list-B3AMWkI0.js} +1 -1
  24. package/dist/web/index.html +1 -1
  25. package/package.json +3 -3
@@ -1,5 +1,5 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/ModelProvidersPanel-CB3LnoWb.js","assets/vendor-react-Dka9ZH0B.js","assets/vendor-query-CDNPrdQ8.js","assets/use-provider-auth-list-Bxn9HTsw.js","assets/provider-auth-store-CpmUGwuu.js","assets/vendor-z183l2lP.js","assets/vendor-CEK31ho9.css","assets/StatusBadge-eoBBn7zF.js","assets/StatusBadge-DmrnYEhp.css","assets/vendor-icons-CSCeICuX.js","assets/vendor-overlays-DjMT65Ip.js","assets/vendor-dnd-vJGfGIIi.js","assets/vendor-pdfjs-BSchhGel.js","assets/ModelProvidersPanel-BP1zIT6I.css","assets/SkillsPanel-BAOCx8Mk.js","assets/Switch-DvBJf8Rd.js","assets/Switch-Dz-IIw4-.css","assets/SkillsPanel-Cs4iUzys.css","assets/ViewersPanel-CcXyTny7.js","assets/ViewersPanel-BvWpXbxZ.css","assets/SettingsDialog-PvCzy46o.js","assets/SettingsDialog-Bc09UjU4.css","assets/ChatPanel-yRv-CSyg.js","assets/markdown-CIs21q13.js","assets/vendor-highlight-DaCUEPaW.js","assets/vendor-markdown-Bo-Xpsuy.js","assets/href-resolution-73JOZBv8.js","assets/markdown-C15eCO0s.css","assets/DiffView-Bp1YwIcs.js","assets/DiffView-CUctPSBA.css","assets/ChatPanel-eXvPOkx2.css","assets/FilePanel-KbN8R1q4.js","assets/use-file-watch-Bi_rtv7D.js","assets/FilePanel-bWuYWz8t.css","assets/TerminalPanel-D7OImgct.js","assets/vendor-terminal-BhzX2_ts.js","assets/vendor-terminal-DYP7pi_n.css","assets/TerminalPanel-DpxpMm0w.css","assets/MoleculeViewerPanel-B2E7mzSf.js","assets/vendor-molviewer-7FbONJs2.js","assets/vendor-molviewer-Bychyqid.css","assets/use-file-download-DXQ8x6cp.js","assets/MoleculeViewerPanel-CHZ8q0jD.css","assets/TextViewer-BYKfoK_A.js","assets/CodeView-HA63pf1I.js","assets/CodeView-Bbd7h9aM.css","assets/SaveFileButton-B7-DaZRk.js","assets/TextViewer-C7Vnqw_v.css","assets/MarkdownFileViewer-lxpM7SOl.js","assets/MarkdownFileViewer-Cnl1kopk.css","assets/ImageViewer-CSOSyfvS.js","assets/ImageViewer-Bh1rkSDM.css","assets/VideoViewer-D5zXCCTy.js","assets/VideoViewer-CCmuaDLl.css","assets/BinaryFallbackViewer-DZ6fyGsu.js","assets/BinaryFallbackViewer-ClYyn4IS.css","assets/HtmlViewer-BlBKng1E.js","assets/HtmlViewer-C9NJC5qE.css","assets/PdfViewer-DhWWrlIg.js","assets/PdfViewer-DoOGVn5M.css"])))=>i.map(i=>d[i]);
2
- var Ai=Object.defineProperty;var Ri=(e,t,n)=>t in e?Ai(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var B=(e,t,n)=>Ri(e,typeof t!="symbol"?t+"":t,n);import{r as w,j as c,b as ji,c as Pi}from"./vendor-react-Dka9ZH0B.js";import{aj as l,ak as Et,al as P,am as de,an as p,ao as oe,ap as T,aq as v,ar as Z,as as D,at as ln,au as et,N as U,y as ae,_ as ue}from"./vendor-z183l2lP.js";import{Q as qi,c as Mi,u as Ni,d as Di,a as st,b as $i}from"./vendor-query-CDNPrdQ8.js";import{u as Li,X as St,K as Oi,v as Bi,w as un,x as Fi,y as zi,z as Wi,H as Ui,I as Hi,J as Gn,P as Ar,r as Vi,k as Rr,O as Ki,c as Yn,b as Xn,n as Zt,Q as jr,R as Pr,V as dn,W as qr,Y as Gi,_ as Yi,$ as Xi,a0 as Ve,e as Pn,a1 as Qt,d as Lt,E as Ji,a2 as Zi,D as Qi,a3 as ea,a4 as ta,a5 as na,a6 as sa,a7 as ra,a8 as oa,s as ia}from"./vendor-icons-CSCeICuX.js";import{D as qn,a as aa,b as ca,c as la,d as ua,e as bs,P as da,C as fa,I as pa,S as ha,G as ga,L as ma,f as _a,g as ya,h as wa,i as va,R as Ct,T as At}from"./vendor-overlays-DjMT65Ip.js";import{u as ba,a as Sa,p as ka,P as xa,b as Mr,S as Ia,h as Ta,c as Ea,C as Ca,D as Aa,d as Ra}from"./vendor-dnd-vJGfGIIi.js";import{W as ja}from"./vendor-pdfjs-BSchhGel.js";(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const r of document.querySelectorAll('link[rel="modulepreload"]'))s(r);new MutationObserver(r=>{for(const o of r)if(o.type==="childList")for(const i of o.addedNodes)i.tagName==="LINK"&&i.rel==="modulepreload"&&s(i)}).observe(document,{childList:!0,subtree:!0});function n(r){const o={};return r.integrity&&(o.integrity=r.integrity),r.referrerPolicy&&(o.referrerPolicy=r.referrerPolicy),r.crossOrigin==="use-credentials"?o.credentials="include":r.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function s(r){if(r.ep)return;r.ep=!0;const o=n(r);fetch(r.href,o)}})();const Nr=l().datetime({offset:!0});l().uuid();l().regex(/^[A-Za-z0-9_-]+$/,"expected base64url");const De=Et([P(),Nr]),Pa=de(["mobile","browser","cli","mcp"]),qa=32,Ma=p({type:v("hello"),clientId:l(),clientType:Pa,protocolVersion:P(),platform:l().max(qa).optional().catch(void 0),agentStreams:de(["all","none"]).optional().catch(void 0),appVersion:l().optional(),capabilities:oe(l(),T()).optional()}),Na=p({status:v("server_info"),serverId:l(),hostname:l().optional(),version:l().optional(),homeDir:l().optional(),capabilities:oe(l(),Z()),features:oe(l(),Z())}),Da=p({type:v("status"),payload:Na}),$a=p({type:v("ping"),requestId:l(),clientSentAt:De.optional()}),La=p({type:v("pong"),requestId:l(),clientSentAt:De.optional(),serverReceivedAt:De,serverSentAt:De}),Dr=de(["initializing","idle","running","error","closed"]),fn=p({mimeType:l().optional(),data:l().optional()}).passthrough(),Oa=p({prs:D(Z()).optional(),issues:D(Z()).optional()}).passthrough(),Ba=p({provider:l(),cwd:l(),modeId:l().optional(),model:l().optional(),modelProvider:l().optional(),thinkingOptionId:l().optional(),featureValues:oe(l(),Z()).optional(),title:l().nullable().optional(),approvalPolicy:l().optional(),sandboxMode:l().optional(),networkAccess:T().optional(),webSearch:T().optional(),extra:p({pi:Z().optional()}).passthrough().optional(),systemPrompt:l().optional(),mcpServers:oe(l(),Z()).optional()}),Fa=p({type:v("create_agent_request"),requestId:l(),config:Ba,env:oe(l(),l()).optional(),workspaceId:l().optional(),worktreeName:l().optional(),initialPrompt:l().optional(),clientMessageId:l().optional(),outputSchema:oe(l(),Z()).optional(),images:D(fn).optional(),attachments:Oa.optional(),git:Z().optional(),worktree:Z().optional(),autoArchive:T().optional(),labels:oe(l(),l()).default({})}),za=p({type:v("create_agent_response"),requestId:l(),payload:p({agentId:l()}).passthrough()}),Wa=p({type:v("agent_update"),agentId:l(),status:Dr.optional(),title:l().nullable().optional(),labels:oe(l(),l()).optional()}),Ua=p({type:v("agent_status"),agentId:l(),status:Dr}),Ha=p({type:v("agent_list"),agents:D(p({id:l()}).passthrough())}),Va=p({type:v("agent_deleted"),agentId:l()}),Ka=p({type:v("agent_archived"),agentId:l(),archivedAt:Nr.optional()}),$r=ln("kind",[p({kind:v("shell"),command:l().optional(),output:l().optional()}),p({kind:v("read"),path:l().optional(),output:l().optional()}),p({kind:v("edit"),path:l().optional(),diff:l().optional(),output:l().optional()}),p({kind:v("write"),path:l().optional(),output:l().optional()}),p({kind:v("search"),query:l().optional(),output:l().optional()}),p({kind:v("fetch"),url:l().optional(),output:l().optional()}),p({kind:v("task"),description:l().optional(),output:l().optional()})]),Ga=ln("kind",[p({kind:v("user_message"),messageId:l().optional(),text:l().optional(),images:D(fn).optional()}),p({kind:v("assistant_message"),messageId:l().optional(),text:l().optional(),final:T().optional()}),p({kind:v("reasoning"),text:l().optional(),final:T().optional()}),p({kind:v("tool_call"),callId:l().optional(),tool:$r,status:l().optional(),partial:T().optional()}),p({kind:v("turn_started"),turnId:l().optional()}),p({kind:v("turn_completed"),turnId:l().optional()}),p({kind:v("turn_failed"),turnId:l().optional(),error:l().optional()}),p({kind:v("turn_canceled"),turnId:l().optional()}),p({kind:v("error"),message:l().optional()}),p({kind:v("queue_update"),steering:D(l()).optional(),followUp:D(l()).optional()}),p({kind:v("compaction"),compactionId:l(),phase:de(["started","completed","failed","canceled"]),reason:de(["manual","threshold","overflow"]).optional(),tokensBefore:P().optional(),estimatedTokensAfter:P().optional(),summary:l().optional(),error:l().optional(),willRetry:T().optional()})]),Ya=p({type:v("agent_stream"),agentId:l(),seq:P().optional(),timestamp:De.optional(),event:Ga}),Xa=de(["before","after"]),Ja=p({start:P(),end:P()}),Za=p({type:v("fetch_agent_timeline_request"),requestId:l(),agentId:l(),cursor:l().nullable().optional(),direction:Xa,limit:P().optional()}),Qa=p({type:v("fetch_agent_timeline_response"),requestId:l(),agentId:l().optional(),items:D(Z()),seqStart:P(),seqEnd:P(),sourceSeqRanges:D(Ja),collapsed:T(),hasNewer:T(),startCursor:l().nullable().optional(),endCursor:l().nullable().optional()}),ec=p({type:v("agent_permission_request"),requestId:l(),agentId:l(),toolName:l().optional(),tool:$r.optional(),action:Z().optional(),responses:D(l()).optional()}),tc=p({type:v("agent_permission_resolved"),requestId:l(),agentId:l(),decision:l().optional()}),nc=p({type:v("agent.permission.respond.request"),requestId:l(),permissionRequestId:l(),response:Z()}),sc=p({type:v("agent.permission.respond.response"),requestId:l(),payload:p({resolved:T()}).passthrough()}),rc=p({type:v("respond_to_permission"),requestId:l(),permissionRequestId:l(),response:Z()}),Lr=de(["conversation","files","both"]),oc=p({type:v("agent.rewind.request"),requestId:l(),agentId:l(),messageId:l(),mode:Lr}).passthrough(),ic=p({type:v("agent.rewind.response"),requestId:l(),payload:p({agentId:l(),messageId:l(),mode:Lr,truncatedAt:l().optional()}).passthrough()}).passthrough(),ac=p({input:P().optional(),output:P().optional(),cacheRead:P().optional(),cacheWrite:P().optional(),total:P().optional()}).passthrough(),cc=p({tokens:P().nullable().optional(),contextWindow:P().optional(),percent:P().nullable().optional()}).passthrough(),lc=p({type:v("agent_session_stats_request"),requestId:l(),agentId:l()}).passthrough(),uc=p({type:v("agent_session_stats_response"),requestId:l(),payload:p({sessionId:l().optional(),sessionFile:l().optional(),userMessages:P().optional(),assistantMessages:P().optional(),toolCalls:P().optional(),toolResults:P().optional(),totalMessages:P().optional(),tokens:ac.optional(),cost:P().optional(),contextUsage:cc.optional(),model:l().optional()}).passthrough()}).passthrough(),dc=p({type:v("agent_compact_request"),requestId:l(),agentId:l(),customInstructions:l().optional()}).passthrough(),fc=p({type:v("agent_compact_response"),requestId:l(),payload:p({summary:l().optional(),firstKeptEntryId:l().optional(),tokensBefore:P().optional(),estimatedTokensAfter:P().optional(),details:Z().optional()}).passthrough()}).passthrough(),pc=p({type:v("agent_new_session_request"),requestId:l(),agentId:l()}).passthrough(),hc=p({type:v("agent_new_session_response"),requestId:l(),payload:p({cancelled:T()}).passthrough()}).passthrough(),gc=p({type:v("agent_switch_session_request"),requestId:l(),agentId:l(),sessionPath:l()}).passthrough(),mc=p({type:v("agent_switch_session_response"),requestId:l(),payload:p({cancelled:T()}).passthrough()}).passthrough(),_c=p({type:v("agent_fork_request"),requestId:l(),agentId:l(),entryId:l()}).passthrough(),yc=p({type:v("agent_fork_response"),requestId:l(),payload:p({text:l(),cancelled:T()}).passthrough()}).passthrough(),wc=p({type:v("agent_fork_messages_request"),requestId:l(),agentId:l()}).passthrough(),vc=p({type:v("agent_fork_messages_response"),requestId:l(),payload:p({messages:D(p({entryId:l(),text:l()}).passthrough())}).passthrough()}).passthrough(),bc=p({type:v("agent_clone_request"),requestId:l(),agentId:l()}).passthrough(),Sc=p({type:v("agent_clone_response"),requestId:l(),payload:p({cancelled:T()}).passthrough()}).passthrough(),kc=p({type:v("agent_set_session_name_request"),requestId:l(),agentId:l(),name:l()}).passthrough(),xc=p({type:v("agent_set_session_name_response"),requestId:l(),payload:p({}).passthrough().optional()}).passthrough(),Ic=p({type:v("agent_export_html_request"),requestId:l(),agentId:l(),outputPath:l().optional()}).passthrough(),Tc=p({type:v("agent_export_html_response"),requestId:l(),payload:p({path:l()}).passthrough()}).passthrough(),Ec=p({type:v("agent_set_model_request"),requestId:l(),agentId:l(),provider:l(),modelId:l()}).passthrough(),Cc=p({type:v("agent_set_model_response"),requestId:l(),payload:p({}).passthrough()}).passthrough(),Ac=p({type:v("agent_cycle_model_request"),requestId:l(),agentId:l()}).passthrough(),Rc=p({type:v("agent_cycle_model_response"),requestId:l(),payload:p({model:Z().nullable().optional(),thinkingLevel:l().optional(),isScoped:T().optional()}).passthrough()}).passthrough(),jc=p({type:v("agent_set_thinking_request"),requestId:l(),agentId:l(),level:l()}).passthrough(),Pc=p({type:v("agent_set_thinking_response"),requestId:l(),payload:p({agentId:l(),level:l()}).passthrough()}).passthrough(),qc=p({type:v("agent_thinking_levels_request"),requestId:l(),agentId:l()}).passthrough(),Mc=p({type:v("agent_thinking_levels_response"),requestId:l(),payload:p({agentId:l(),levels:D(l())}).passthrough()}).passthrough(),Nc=p({type:v("agent_last_assistant_text_request"),requestId:l(),agentId:l()}).passthrough(),Dc=p({type:v("agent_last_assistant_text_response"),requestId:l(),payload:p({text:l().nullable()}).passthrough()}).passthrough(),$c=p({type:v("steer_agent_request"),requestId:l(),agentId:l(),message:l(),images:D(fn).optional(),clientMessageId:l().optional()}).passthrough(),Lc=p({type:v("steer_agent_response"),requestId:l(),agentId:l(),ok:T()}).passthrough(),Oc=p({type:v("follow_up_agent_request"),requestId:l(),agentId:l(),message:l(),images:D(fn).optional(),clientMessageId:l().optional()}).passthrough(),Bc=p({type:v("follow_up_agent_response"),requestId:l(),agentId:l(),ok:T()}).passthrough(),Fc=p({name:l(),id:l().optional(),description:l().optional(),source:de(["extension","prompt","skill"]).optional(),scope:de(["user","project","temporary"]).optional(),path:l().optional()}).passthrough(),zc=p({type:v("agent_list_commands_request"),requestId:l(),agentId:l()}).passthrough(),Wc=p({type:v("agent_list_commands_response"),requestId:l(),payload:p({commands:D(Fc)}).passthrough()}).passthrough(),Uc=p({source:l(),identity:l(),addedIn:l(),deprecated:T().optional(),status:l(),lastError:p({at:l(),attempts:P(),reason:l(),message:l()}).passthrough().optional()}).passthrough(),Or=p({id:l(),title:l(),description:l(),packages:D(Uc)}).passthrough(),Hc=p({identity:l(),source:l(),pack:l(),reason:l(),message:l()}).passthrough(),Vc=p({at:l(),outcome:l(),installed:D(l()),failures:D(Hc)}).passthrough(),Br=p({at:l(),outcome:l()}).passthrough(),Kc=p({type:v("extension_packs_list_request"),requestId:l()}).passthrough(),Gc=p({type:v("extension_packs_list_response"),requestId:l(),autoSync:T(),selected:D(l()),packs:D(Or),lastSync:Br.optional()}).passthrough(),Yc=p({type:v("extension_packs_set_request"),requestId:l(),packs:D(l()).optional()}).passthrough(),Xc=p({type:v("extension_packs_set_response"),requestId:l(),autoSync:T(),selected:D(l()),packs:D(Or),lastSync:Br.optional(),ok:T(),error:l().optional(),report:Vc.optional()}).passthrough(),Mn=de(["api_key","oauth"]),Jc=p({id:l(),name:l(),authTypes:D(Mn),oauthLoginLabel:l().optional(),oauthIsSubscription:T().optional(),configured:Et([T(),v("unknown")]),configuredType:Mn.optional(),configuredSource:l().optional()}).passthrough(),Zc=p({type:v("provider_auth_list_request"),requestId:l()}).passthrough(),Qc=p({type:v("provider_auth_list_response"),requestId:l(),payload:p({ok:T(),providers:D(Jc).default([]),error:l().optional()}).passthrough()}).passthrough(),el=p({type:v("provider_auth_login_request"),requestId:l(),provider:l(),authType:Mn}).passthrough(),tl=p({type:v("provider_auth_login_response"),requestId:l(),payload:p({ok:T(),flowId:l().optional(),error:l().optional()}).passthrough()}).passthrough(),nl=p({type:v("provider_auth_respond_request"),requestId:l(),flowId:l(),promptId:l(),value:l()}).passthrough(),sl=p({type:v("provider_auth_respond_response"),requestId:l(),payload:p({ok:T(),error:l().optional()}).passthrough()}).passthrough(),rl=p({type:v("provider_auth_cancel_request"),requestId:l(),flowId:l()}).passthrough(),ol=p({type:v("provider_auth_cancel_response"),requestId:l(),payload:p({ok:T()}).passthrough()}).passthrough(),il=p({type:v("provider_auth_logout_request"),requestId:l(),provider:l()}).passthrough(),al=p({type:v("provider_auth_logout_response"),requestId:l(),payload:p({ok:T(),stillConfigured:T().optional(),error:l().optional()}).passthrough()}).passthrough(),cl=p({enabled:T(),config:oe(l(),Z()).optional()}).passthrough(),Jn=p({version:v(1).default(1),viewers:oe(l(),cl).default({})}).passthrough(),ll=p({type:v("viewer_settings_get_request"),requestId:l()}).passthrough(),ul=p({type:v("viewer_settings_get_response"),requestId:l(),payload:p({settings:Jn}).passthrough()}).passthrough(),dl=p({enabled:T().optional(),config:oe(l(),Z()).optional()}).passthrough(),fl=p({type:v("viewer_settings_set_request"),requestId:l(),patch:oe(l(),dl)}).passthrough(),pl=p({type:v("viewer_settings_set_response"),requestId:l(),payload:p({settings:Jn}).passthrough()}).passthrough(),hl=p({type:v("viewer_settings_update"),settings:Jn}).passthrough(),gl=p({clientId:l(),clientType:l(),appVersion:l().optional(),platform:l().optional(),agentStreams:l().optional(),connectedAt:P(),remoteAddress:l().optional(),transport:de(["direct","relay"])}).passthrough(),Zn=p({version:l(),startedAt:P(),uptimeMs:P(),pid:P(),nodeVersion:l(),memory:p({rss:P(),heapUsed:P(),heapTotal:P()}).passthrough(),cpuPercent:P(),eventLoopLagMs:P(),agentsByStatus:oe(l(),P()),clients:D(gl)}).passthrough(),ml=p({type:v("daemon_status_request"),requestId:l()}).passthrough(),_l=p({type:v("daemon_status_response"),requestId:l(),payload:Zn}).passthrough(),yl=p({type:v("daemon_status_subscribe_request"),requestId:l()}).passthrough(),wl=p({type:v("daemon_status_subscribe_response"),requestId:l(),payload:Et([p({ok:v(!0),intervalMs:P(),status:Zn}).passthrough(),p({ok:v(!1),error:l()}).passthrough()])}).passthrough(),vl=p({type:v("daemon_status_unsubscribe_request"),requestId:l()}).passthrough(),bl=p({type:v("daemon_status_unsubscribe_response"),requestId:l(),payload:p({ok:T()}).passthrough()}).passthrough(),Sl=p({type:v("daemon_status_update"),payload:Zn}).passthrough(),Fr=p({time:P(),level:l(),msg:l(),fields:oe(l(),Z()).optional()}).passthrough(),kl=p({type:v("daemon_logs_subscribe_request"),requestId:l(),minLevel:l(),tail:P().optional()}).passthrough(),xl=p({type:v("daemon_logs_subscribe_response"),requestId:l(),payload:Et([p({ok:v(!0),minLevel:l(),effectiveLevel:l(),lines:D(Fr),dropped:P()}).passthrough(),p({ok:v(!1),error:l()}).passthrough()])}).passthrough(),Il=p({type:v("daemon_logs_unsubscribe_request"),requestId:l()}).passthrough(),Tl=p({type:v("daemon_logs_unsubscribe_response"),requestId:l(),payload:p({ok:T()}).passthrough()}).passthrough(),El=p({type:v("daemon_log_lines"),lines:D(Fr),dropped:P()}).passthrough(),Rt=p({name:l(),description:l().optional(),path:l(),enabled:T(),origin:l(),originLabel:l(),packageSource:l().optional(),shadowedBy:l().optional(),symlinkTarget:l().optional(),provenance:p({source:l(),sourceUrl:l().optional(),installedAt:l().optional()}).passthrough().optional(),disableModelInvocation:T().optional(),warnings:D(l()).optional(),removable:T()}).passthrough(),jt=p({source:l(),kind:de(["npm","git","local"]),identity:l(),pinned:T(),curated:T(),filtered:T(),skillCount:P()}).passthrough(),Cl=p({type:v("skills_list_request"),requestId:l()}).passthrough(),Al=p({type:v("skills_list_response"),requestId:l(),ok:T(),error:l().optional(),message:l().optional(),skills:D(Rt),packages:D(jt)}).passthrough(),Rl=p({type:v("skills_set_enabled_request"),requestId:l(),path:l(),enabled:T()}).passthrough(),jl=p({type:v("skills_set_enabled_response"),requestId:l(),ok:T(),error:l().optional(),message:l().optional(),skills:D(Rt),packages:D(jt)}).passthrough(),Pl=p({type:v("skills_changed"),reason:l()}).passthrough(),zr=p({type:v("skills_remove_request"),requestId:l(),path:l().optional(),packageSource:l().optional()}).passthrough();zr.refine(e=>e.path!==void 0!=(e.packageSource!==void 0),{message:"exactly one of path or packageSource is required"});const ql=p({type:v("skills_remove_response"),requestId:l(),ok:T(),error:l().optional(),message:l().optional(),stderr:l().optional(),skills:D(Rt),packages:D(jt)}).passthrough(),Wr=p({target:l(),ok:T(),error:l().optional(),stderr:l().optional()}).passthrough(),Ml=p({type:v("skills_update_all_request"),requestId:l()}).passthrough(),Nl=p({type:v("skills_update_all_response"),requestId:l(),ok:T(),error:l().optional(),message:l().optional(),results:D(Wr),skills:D(Rt),packages:D(jt)}).passthrough(),Dl=p({name:l(),description:l().optional(),relPath:l(),warnings:D(l()).optional(),valid:T(),exists:T()}).passthrough(),$l=p({type:v("skills_preview_request"),requestId:l(),source:l()}).passthrough(),Ll=p({type:v("skills_preview_response"),requestId:l(),ok:T(),error:l().optional(),message:l().optional(),kind:l(),source:l(),skills:D(Dl)}).passthrough(),Ol=p({type:v("skills_install_request"),requestId:l(),source:l(),skills:D(l()).optional(),replace:T().optional()}).passthrough(),Bl=p({type:v("skills_install_response"),requestId:l(),ok:T(),error:l().optional(),message:l().optional(),results:D(Wr),skills:D(Rt),packages:D(jt)}).passthrough(),Fl=p({requestId:l(),agentId:l(),method:l(),expectsResponse:T(),payload:oe(Z()),surfaceKey:l().optional(),timeoutMs:P().optional(),createdAt:De}).passthrough(),zl=p({agentId:l(),method:l(),surfaceKey:l(),payload:oe(Z()),updatedAt:De}).passthrough(),Wl=p({type:v("agent_ui_request"),requestId:l(),agentId:l(),method:l(),expectsResponse:T(),payload:oe(Z()),surfaceKey:l().optional(),removed:T().optional(),timeoutMs:P().optional(),createdAt:De}).passthrough(),Ul=p({type:v("agent_ui_resolved"),requestId:l(),agentId:l(),reason:l()}).passthrough(),Hl=p({value:l().optional(),confirmed:T().optional(),cancelled:T().optional()}).passthrough(),Vl=p({type:v("agent_ui_respond_request"),requestId:l(),uiRequestId:l(),response:Hl}).passthrough(),Kl=p({type:v("agent_ui_respond_response"),requestId:l(),payload:p({ok:T(),error:l().optional()}).passthrough()}).passthrough(),Gl=p({type:v("agent_ui_list_request"),requestId:l(),agentId:l().optional()}).passthrough(),Yl=p({type:v("agent_ui_list_response"),requestId:l(),payload:p({ok:T(),pending:D(Fl),surfaces:D(zl),error:l().optional()}).passthrough()}).passthrough(),Xl=de(["pending","in_progress","completed"]),pS=200,Jl=p({id:P().int(),subject:l(),status:Xl,activeForm:l().optional(),description:l().optional(),owner:l().optional(),blockedBy:D(P().int()).optional()}).passthrough(),Ur=p({agentId:l(),seq:P(),tasks:D(Jl),truncated:T().optional()}).passthrough(),Zl=p({type:v("agent_todos_list_request"),requestId:l(),agentId:l()}).passthrough(),Ql=p({type:v("agent_todos_list_response"),requestId:l(),snapshot:Ur.optional(),ok:T().optional(),error:l().optional()}).passthrough(),eu=p({type:v("agent_todos_update"),snapshot:Ur}).passthrough(),tu=p({type:v("file_upload_complete"),transferId:l(),stream:P().int().nonnegative(),ok:T(),bytesWritten:P().int().nonnegative(),error:l().optional()}).passthrough(),nu=p({type:v("rpc_error"),requestId:l(),code:l().optional(),message:l().optional(),error:l().optional()}),su=ln("type",[Fa,za,Wa,Ua,Ha,Va,Ka,Ya,Za,Qa,ec,tc,nc,sc,rc,oc,ic,lc,uc,dc,fc,pc,hc,gc,mc,_c,yc,wc,vc,bc,Sc,kc,xc,Ic,Tc,Ec,Cc,Ac,Rc,jc,Pc,qc,Mc,Nc,Dc,$c,Lc,Oc,Bc,zc,Wc,Kc,Gc,Yc,Xc,Zc,Qc,el,tl,nl,sl,rl,ol,il,al,ll,ul,fl,pl,hl,ml,_l,yl,wl,vl,bl,Sl,kl,xl,Il,Tl,El,Cl,Al,Rl,jl,Pl,zr,ql,Ml,Nl,$l,Ll,Ol,Bl,Wl,Ul,Vl,Kl,Gl,Yl,Zl,Ql,eu,tu,nu]),ru=p({type:l()}).passthrough(),ou=p({type:v("session"),message:Et([su,ru])});ln("type",[Ma,Da,$a,La,ou]);const Ot={terminal_reflowable_snapshot:"terminal_reflowable_snapshot",inline_image_markdown:"inline_image_markdown",file_link_markdown:"file_link_markdown",mermaid_diagram_markdown:"mermaid_diagram_markdown"},Je={Output:1,Input:2,Resize:3,Snapshot:4,Restore:5},iu=Object.fromEntries(Object.entries(Je).map(([e,t])=>[t,e])),Hr=p({rows:P().int().nonnegative(),cols:P().int().nonnegative()});class dt extends Error{constructor(t){super(t),this.name="TerminalFrameError"}}const au=new TextEncoder,cu=new TextDecoder;function lu(e){if(!Number.isInteger(e)||e<0||e>255)throw new dt(`slot must be an integer 0–255, got ${e}`)}function it(e,t,n){const s=new Uint8Array(2+n.length);return s[0]=e,s[1]=t,s.set(n,2),s}function hS(e){switch(lu(e.slot),e.opcode){case"Output":return it(Je.Output,e.slot,e.data);case"Input":return it(Je.Input,e.slot,e.data);case"Snapshot":return it(Je.Snapshot,e.slot,e.data);case"Restore":return it(Je.Restore,e.slot,e.data);case"Resize":{const t=JSON.stringify(Hr.parse({rows:e.rows,cols:e.cols}));return it(Je.Resize,e.slot,au.encode(t))}}}function uu(e){if(e.length<2)throw new dt(`frame too short: ${e.length} bytes (need ≥ 2)`);const t=e[0],n=e[1],s=iu[t];if(!s)throw new dt(`unknown terminal opcode 0x${t.toString(16)}`);const r=e.subarray(2);if(s==="Resize"){let o;try{o=JSON.parse(cu.decode(r))}catch{throw new dt("resize payload is not valid JSON")}const i=Hr.safeParse(o);if(!i.success)throw new dt("resize payload is not { rows, cols }");return{opcode:"Resize",slot:n,rows:i.data.rows,cols:i.data.cols}}return{opcode:s,slot:n,data:r.slice()}}const Qe={Begin:16,Chunk:17,End:18,Error:19},du=Object.fromEntries(Object.entries(Qe).map(([e,t])=>[t,e])),Vr=p({transferId:l(),fileName:l().optional(),mimeType:l().optional(),totalBytes:P().int().nonnegative().optional(),mtimeMs:P().int().nonnegative().optional(),offset:P().int().nonnegative().optional(),length:P().int().nonnegative().optional()});class ft extends Error{constructor(t){super(t),this.name="FileTransferFrameError"}}const Ss=new TextEncoder,ks=new TextDecoder;function fu(e){if(!Number.isInteger(e)||e<0||e>255)throw new ft(`stream must be an integer 0–255, got ${e}`)}function Bt(e,t,n){const s=new Uint8Array(2+n.length);return s[0]=e,s[1]=t,s.set(n,2),s}function Ft(e){switch(fu(e.stream),e.opcode){case"Begin":return Bt(Qe.Begin,e.stream,Ss.encode(JSON.stringify(Vr.parse(e.meta))));case"Chunk":return Bt(Qe.Chunk,e.stream,e.data);case"End":return Bt(Qe.End,e.stream,new Uint8Array([e.ok?1:0]));case"Error":return Bt(Qe.Error,e.stream,Ss.encode(e.message))}}function pu(e){if(e.length<2)throw new ft(`frame too short: ${e.length} bytes (need ≥ 2)`);const t=e[0],n=e[1],s=du[t];if(!s)throw new ft(`unknown file-transfer opcode 0x${t.toString(16)}`);const r=e.subarray(2);switch(s){case"Begin":{let o;try{o=JSON.parse(ks.decode(r))}catch{throw new ft("begin payload is not valid JSON")}const i=Vr.safeParse(o);if(!i.success)throw new ft("begin payload is not a valid transfer header");return{opcode:"Begin",stream:n,meta:i.data}}case"Chunk":return{opcode:"Chunk",stream:n,data:r.slice()};case"End":return{opcode:"End",stream:n,ok:(r[0]??1)!==0};case"Error":return{opcode:"Error",stream:n,message:ks.decode(r)}}}function hu(e){try{return pu(e)}catch{return null}}const Ze=256;function gu(e,t=0){const n=(t%Ze+Ze)%Ze;for(let s=0;s<Ze;s++){const r=(n+s)%Ze;if(!e.has(r))return r}return null}const mu=l().regex(/^[a-z][a-z0-9-]*$/,"invalid provider id"),_u=de(["safe","moderate","dangerous","planning"]),yu=p({supportsStreaming:T(),supportsSessionPersistence:T(),supportsDynamicModes:T(),supportsMcpServers:T(),supportsReasoningStream:T(),supportsToolInvocations:T(),supportsRewindConversation:T().optional(),supportsRewindFiles:T().optional(),supportsRewindBoth:T().optional(),supportsSteering:T().optional(),supportsExtensionUi:T().optional(),supportsTodos:T().optional()}).passthrough(),wu=p({id:l(),label:l().optional(),description:l().optional(),icon:l().optional(),colorTier:_u});p({id:mu,label:l(),description:l().optional(),extends:l().optional(),modes:D(wu),capabilities:yu});function Nn(e){return typeof e=="string"?e:e instanceof Uint8Array||Buffer.isBuffer(e)?e.toString("utf8"):String(e??"")}function Kr(e){let t=null;const n={onMessage:null,onClose:null,onError:null,get isOpen(){return t!==null&&t.readyState===1},get bufferedAmount(){return t==null?void 0:t.bufferedAmount},connect(s){return new Promise((r,o)=>{const i=e??(()=>new WebSocket(s));try{t=e?i(s):new WebSocket(s),t.binaryType="arraybuffer"}catch(a){o(a);return}t.onopen=()=>r(),t.onerror=a=>{var u;(t==null?void 0:t.readyState)!==1&&o(a),(u=n.onError)==null||u.call(n,a)},t.onclose=a=>{var u;(u=n.onClose)==null||u.call(n,a.code,Nn(a.reason))},t.onmessage=a=>{var d,g,f,m;const{data:u}=a;u instanceof ArrayBuffer||u instanceof Uint8Array?(d=n.onMessage)==null||d.call(n,u):typeof u=="string"?(g=n.onMessage)==null||g.call(n,u):typeof Blob<"u"&&u instanceof Blob?(f=n.onMessage)==null||f.call(n,u):Buffer.isBuffer(u)&&((m=n.onMessage)==null||m.call(n,u.buffer.slice(u.byteOffset,u.byteOffset+u.byteLength)))}})},sendText(s){t==null||t.send(s)},sendBinary(s){t==null||t.send(s)},close(s=1e3,r=""){t==null||t.close(s,r),t=null}};return n}const pt="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";function Gr(e){let t="";for(let n=0;n<e.length;n+=3){const s=e[n],r=n+1<e.length,o=n+2<e.length,i=r?e[n+1]:0,a=o?e[n+2]:0;t+=pt[s>>2],t+=pt[(s&3)<<4|i>>4],t+=r?pt[(i&15)<<2|a>>6]:"=",t+=o?pt[a&63]:"="}return t}function Yr(e){const t=e.replace(/=+$/,""),n=[];let s=0,r=0;for(const o of t){const i=pt.indexOf(o);if(i===-1)throw new Error(`invalid base64 character: ${JSON.stringify(o)}`);s=s<<6|i,r+=6,r>=8&&(r-=8,n.push(s>>r&255))}return new Uint8Array(n)}function vu(e){try{const t=JSON.parse(e);return!t||typeof t.type!="string"?null:t}catch{return null}}const Yt=24;function Xr(e,t){const n=et.randomBytes(Yt),s=et.box.after(e,n,t),r=new Uint8Array(n.length+s.length);return r.set(n,0),r.set(s,n.length),Gr(r)}function Jr(e,t){let n;try{n=Yr(e)}catch{return null}if(n.length<Yt)return null;const s=n.slice(0,Yt),r=n.slice(Yt);return et.box.open.after(r,s,t)}function bu(e,t){return Xr(new TextEncoder().encode(e),t)}function Su(e,t){const n=Jr(e,t);return n?new TextDecoder().decode(n):null}function ku(e,t,n,s,r,o){let i=!1;return n.onClose(a=>{var u;i=!0,(u=s.onClose)==null||u.call(s,a)}),{handleAppFrame(a){var g,f;if(i)return;const u=r();if(!o()||!u)return;const d=Su(a.frame,u);if(d===null){(g=s.onAuthError)==null||g.call(s,new Error(`relay ${e} channel: message failed authentication`));return}(f=s.onMessage)==null||f.call(s,d)},handleBinaryFrame(a){var g,f;if(i)return;const u=r();if(!o()||!u)return;const d=Jr(a.frame,u);if(d===null){(g=s.onAuthError)==null||g.call(s,new Error(`relay ${e} channel: binary message failed authentication`));return}(f=s.onBinaryMessage)==null||f.call(s,d)},send(a){if(i)throw new Error(`relay ${e} channel: cannot send after close()`);const u=r();if(!o()||!u)throw new Error(`relay ${e} channel: cannot send before the E2EE handshake completes`);n.send(JSON.stringify({type:"e2ee_app",frame:bu(a,u)}))},sendBinary(a){if(i)throw new Error(`relay ${e} channel: cannot send after close()`);const u=r();if(!o()||!u)throw new Error(`relay ${e} channel: cannot send before the E2EE handshake completes`);n.send(JSON.stringify({type:"e2ee_bin",frame:Xr(a,u)}))},close(){i||(i=!0,n.close())}}}function xu(e){const{transport:t,attachment:n,daemonPublicKey:s}=e,r=e.events??{},o=et.box.keyPair(),i=et.box.before(s,o.secretKey);let a=!1;const u=ku("client",n,t,r,()=>i,()=>a);return t.onMessage(d=>{var f;const g=vu(d);if(g){if(g.type==="e2ee_ready"){if(a)return;a=!0,(f=r.onReady)==null||f.call(r);return}if(g.type==="e2ee_app"){u.handleAppFrame(g);return}g.type==="e2ee_bin"&&u.handleBinaryFrame(g)}}),t.send(JSON.stringify({type:"e2ee_hello",ephemeralPublicKey:Gr(o.publicKey)})),{role:"client",attachment:n,get ready(){return a},send:u.send,sendBinary:u.sendBinary,close:u.close}}const Iu=16;function Tu(e){const t=et.hash(e);let n="";for(let s=0;s<Iu;s++)n+=t[s].toString(16).padStart(2,"0");return n}function Eu(e){const t=e.useTls?"wss":"ws",n=e.endpoint.replace(/^(?:https?|wss?):\/\//,"").replace(/\/+$/,"");return`${t}://${n}`}function Cu(e){let t=null,n=null;const s=e.sessionId??Tu(e.daemonPublicKey),r={onMessage:null,onClose:null,onError:null,get isOpen(){return t!==null&&t.readyState===1&&n!==null&&n.ready},get bufferedAmount(){return t==null?void 0:t.bufferedAmount},connect(o){return new Promise((i,a)=>{const u=e.factory??(()=>new WebSocket(o));try{t=e.factory?u(o):new WebSocket(o)}catch(m){a(m);return}const d=t,g=[],f=[];d.onopen=()=>{d.send(JSON.stringify({type:"relay_register",sessionId:s})),n=xu({transport:{send:m=>d.send(m),onMessage:m=>g.push(m),onClose:m=>f.push(m),close:()=>d.close()},attachment:{sessionId:s},daemonPublicKey:e.daemonPublicKey,events:{onReady:()=>i(),onMessage:m=>{var h;return(h=r.onMessage)==null?void 0:h.call(r,m)},onBinaryMessage:m=>{var h;return(h=r.onMessage)==null?void 0:h.call(r,m.slice().buffer)},onAuthError:m=>{var h;return(h=r.onError)==null?void 0:h.call(r,m)}}})},d.onerror=m=>{var h;d.readyState!==1&&a(m),(h=r.onError)==null||h.call(r,m)},d.onclose=m=>{var h;for(const b of f)b(Nn(m.reason));(h=r.onClose)==null||h.call(r,m.code,Nn(m.reason))},d.onmessage=m=>{const{data:h}=m;if(typeof h=="string")for(const b of g)b(h)}})},sendText(o){if(!n||!n.ready)throw new Error("relay transport: cannot send before the E2EE handshake completes");n.send(o)},sendBinary(o){if(!n||!n.ready)throw new Error("relay transport: cannot send before the E2EE handshake completes");n.sendBinary(o)},close(o=1e3,i=""){n==null||n.close(),n=null,t==null||t.close(o,i),t=null}};return r}function Zr(e){const t=e.indexOf("#"),n=t===-1?e:e.slice(t+1),s=new URLSearchParams(n),r=s.get("offer");if(!r)return null;let o;try{o=Yr(r)}catch{return null}const i=s.get("relay");if(i){const u={endpoint:i,useTls:s.get("relayTls")==="1"};return{publicKeyB64:r,publicKey:o,relay:u}}const a=s.get("host")??void 0;return{publicKeyB64:r,publicKey:o,...a?{host:a}:{}}}const Au=1;function Dn(){return typeof crypto<"u"&&typeof crypto.randomUUID=="function"?crypto.randomUUID():`id-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,10)}`}class Ru extends Error{constructor(t,n,s){super(t),this.requestId=n,this.code=s,this.name="RpcError"}}class xs extends Error{constructor(t){super(`RPC ${t} timed out`),this.requestId=t,this.name="RpcTimeoutError"}}class ju{constructor(t){B(this,"transport");B(this,"rpcTimeoutMs");B(this,"now");B(this,"_state","idle");B(this,"_serverId",null);B(this,"_features",{});B(this,"_serverCapabilities",{});B(this,"pending",new Map);B(this,"sessionHandlers",new Set);B(this,"terminalHandlers",new Set);B(this,"fileTransferHandlers",new Set);B(this,"stateHandlers",new Set);B(this,"helloResolve",null);B(this,"helloReject",null);this.options=t,this.transport=t.transport??Kr(),this.rpcTimeoutMs=t.rpcTimeoutMs??3e4,this.now=t.now??(()=>Date.now()),this.transport.onMessage=n=>this.handleIncoming(n),this.transport.onClose=(n,s)=>this.handleClose(n,s),this.transport.onError=()=>{}}get state(){return this._state}get serverId(){return this._serverId}get features(){return this._features}get serverCapabilities(){return this._serverCapabilities}get bufferedAmount(){return this.transport.bufferedAmount}hasFeature(t){return!!this._features[t]}async connect(){this.setState("connecting"),await this.transport.connect(this.options.url);const t=new Promise((s,r)=>{this.helloResolve=s,this.helloReject=r});this.transport.sendText(JSON.stringify({type:"hello",clientId:this.options.clientId,clientType:this.options.clientType,platform:this.options.platform,agentStreams:this.options.agentStreams,protocolVersion:this.options.protocolVersion??Au,appVersion:this.options.appVersion,capabilities:this.options.capabilities}));const n=await t;return this._serverId=n.serverId,this._features=n.features,this._serverCapabilities=n.capabilities,this.setState("open"),n}close(t=1e3,n=""){this.setState("closing"),this.transport.close(t,n)}request(t,n={},s){const r=n.requestId??Dn();return new Promise((o,i)=>{const a=s??this.rpcTimeoutMs,u=a>0?setTimeout(()=>{this.pending.delete(r),i(new xs(r))},a):null;this.pending.set(r,{resolve:d=>o(d),reject:i,timer:u}),this.sendSession({type:t,...n,requestId:r})})}sendSession(t){this.transport.sendText(JSON.stringify({type:"session",message:t}))}sendBinary(t){this.transport.sendBinary(t)}ping(t=1e4){const n=Dn();return new Promise((s,r)=>{const o=t>0?setTimeout(()=>{this.pending.delete(n),r(new xs(n))},t):null;this.pending.set(n,{resolve:()=>s(),reject:r,timer:o}),this.transport.sendText(JSON.stringify({type:"ping",requestId:n,clientSentAt:this.now()}))})}onSessionMessage(t){return this.sessionHandlers.add(t),()=>this.sessionHandlers.delete(t)}onTerminalFrame(t){return this.terminalHandlers.add(t),()=>this.terminalHandlers.delete(t)}onFileTransferFrame(t){return this.fileTransferHandlers.add(t),()=>this.fileTransferHandlers.delete(t)}onStateChange(t){return this.stateHandlers.add(t),()=>this.stateHandlers.delete(t)}setState(t){if(this._state!==t){this._state=t;for(const n of this.stateHandlers)n(t)}}handleClose(t,n){this.helloReject&&(this.helloReject(new Error(`socket closed during handshake: ${n}`)),this.helloResolve=null,this.helloReject=null);for(const[,s]of this.pending)s.timer&&clearTimeout(s.timer),s.reject(new Error(`socket closed: ${n}`));this.pending.clear(),this.setState("closed")}handleIncoming(t){if(typeof t=="string"){this.handleTextFrame(t);return}if(t instanceof ArrayBuffer){this.handleBinaryFrame(new Uint8Array(t));return}typeof t.arrayBuffer=="function"&&t.arrayBuffer().then(n=>this.handleBinaryFrame(new Uint8Array(n)))}handleBinaryFrame(t){const n=t[0];if(n!==void 0&&Object.values(Qe).includes(n)){const o=hu(t);if(!o)return;for(const i of this.fileTransferHandlers)i(o);return}const r=uu(t);for(const o of this.terminalHandlers)o(r)}handleTextFrame(t){let n;try{n=JSON.parse(t)}catch{return}const s=n;switch(s.type){case"status":this.handleStatus(s);return;case"pong":this.resolvePending(s.requestId,void 0);return;case"ping":this.transport.sendText(JSON.stringify({type:"pong",requestId:s.requestId,serverReceivedAt:this.now(),serverSentAt:this.now()}));return;case"session":this.handleSession(s.message);return;default:return}}handleStatus(t){const n=t.payload;(n==null?void 0:n.status)==="server_info"&&this.helloResolve&&(this.helloResolve(n),this.helloResolve=null,this.helloReject=null)}handleSession(t){if(!t||typeof t!="object")return;const n=t;if(n.type==="rpc_error"&&typeof n.requestId=="string"){const s=this.pending.get(n.requestId);s&&(s.timer&&clearTimeout(s.timer),this.pending.delete(n.requestId),s.reject(new Ru(n.message??n.error??"RPC failed",n.requestId,n.code)));return}if(typeof n.requestId=="string"&&this.pending.has(n.requestId)){const s="payload"in n?n.payload:n;this.resolvePending(n.requestId,s)}for(const s of this.sessionHandlers)s(t)}resolvePending(t,n){const s=this.pending.get(t);s&&(s.timer&&clearTimeout(s.timer),this.pending.delete(t),s.resolve(n))}}const Pu=10*6e4,qu=660*1e3,Mu=1300*1e3,Nu=150*1e3,Du=660*1e3;function $u(e){const t=e;if(!t||t.type!=="provider_auth_flow_event"||typeof t.flowId!="string")return!1;const n=t.event;return typeof n=="object"&&n!==null&&typeof n.kind=="string"}class Is extends Error{constructor(t,n){super(t),this.operation=n,this.name="ProviderAuthError"}}class Ts extends Error{constructor(t){super("prompt_cancelled"),this.promptId=t,this.name="PromptCancelledError"}}class Lu extends Error{constructor(t,n){super(t),this.operation=n,this.name="AgentUiError"}}function Ou(e){const t=e;return!!t&&t.type==="agent_ui_request"&&typeof t.requestId=="string"&&typeof t.agentId=="string"}function Bu(e){const t=e;return!!t&&t.type==="agent_ui_resolved"&&typeof t.requestId=="string"&&typeof t.agentId=="string"}class Es extends Error{constructor(t,n){super(t),this.code=n,this.name="AgentTodosError"}}function Fu(e){const t=e;return!!t&&t.type==="agent_todos_update"&&typeof t.snapshot=="object"&&t.snapshot!==null}function zu(e){const t=e;return!!t&&t.type==="agent_archived"&&typeof t.agentId=="string"}function Wu(e){const t=e;return!!t&&t.type==="agent_deleted"&&typeof t.agentId=="string"}class Uu{constructor(t){B(this,"activeProviderAuthFlow",null);this.daemon=t}get connection(){return this.daemon}async createAgent(t){return await this.daemon.request("create_agent_request",{...t})}agent(t){return new Vu(this.daemon,t)}workspace(t){return new Ku(this.daemon,t)}get providers(){return new Gu(this.daemon)}listExtensionPacks(){return this.daemon.request("extension_packs_list_request",{})}setExtensionPacks(t,n){return this.daemon.request("extension_packs_set_request",{packs:t},n==null?void 0:n.timeoutMs)}syncExtensionPacks(t){return this.daemon.request("extension_packs_set_request",{},t==null?void 0:t.timeoutMs)}onAgentUpdate(t){return this.daemon.onSessionMessage(n=>{n.type==="agent_update"&&t(n)})}onWorkspaceUpdate(t){return this.daemon.onSessionMessage(n=>{n.type==="workspace_update"&&t(n)})}hasProviderAuthCapability(){return this.daemon.hasFeature("providerAuth")}async listProviderAuth(){const t=await this.daemon.request("provider_auth_list_request",{});if(!t.ok)throw new Is(t.error??"failed to list provider auth state","list");return t.providers}async logoutProvider(t){const n=await this.daemon.request("provider_auth_logout_request",{provider:t});if(!n.ok)throw new Is(n.error??"failed to log out","logout");return{stillConfigured:n.stillConfigured}}async loginProvider(t,n,s,r){var f;if(this.activeProviderAuthFlow)throw new Error("a provider-auth login is already in progress for this client");let o;const i=new Promise(m=>{o=m}),a={flowId:null,buffered:[],pendingPrompt:null,cancelRequested:((f=r==null?void 0:r.signal)==null?void 0:f.aborted)??!1,terminal:!1,settle:o,unsubscribe:null};this.activeProviderAuthFlow=a;const u=this.daemon.onSessionMessage(m=>{$u(m)&&this.routeProviderAuthEvent(a,m,s)}),d=this.daemon.onStateChange(m=>{m==="closed"&&this.settleProviderAuthFlow(a,{ok:!1,error:"connection_lost"})});let g=null;if(r!=null&&r.signal){const m=r.signal;g=()=>{a.cancelRequested=!0,a.flowId&&!a.terminal&&this.daemon.request("provider_auth_cancel_request",{flowId:a.flowId}).catch(()=>{})},m.addEventListener("abort",g,{once:!0}),a.unsubscribe=()=>{u(),d(),m.removeEventListener("abort",g)}}else a.unsubscribe=()=>{u(),d()};try{const m=await this.daemon.request("provider_auth_login_request",{provider:t,authType:n});if(a.terminal)return i;if(!m.ok||!m.flowId)return this.settleProviderAuthFlow(a,{ok:!1,error:m.error}),i;a.flowId=m.flowId;const h=a.buffered;a.buffered=[];for(const b of h)b.flowId===a.flowId&&this.dispatchProviderAuthEvent(a,b.event,s);a.cancelRequested&&!a.terminal&&this.daemon.request("provider_auth_cancel_request",{flowId:a.flowId}).catch(()=>{})}catch{a.terminal||this.settleProviderAuthFlow(a,{ok:!1,error:"connection_lost"})}return i}routeProviderAuthEvent(t,n,s){if(!t.terminal){if(t.flowId===null){t.buffered.push(n);return}n.flowId===t.flowId&&this.dispatchProviderAuthEvent(t,n.event,s)}}dispatchProviderAuthEvent(t,n,s){var r;switch(n.kind){case"done":this.settleProviderAuthFlow(t,{ok:!!n.ok,error:typeof n.error=="string"?n.error:void 0});return;case"prompt_cancelled":{const o=n.promptId;t.pendingPrompt&&t.pendingPrompt.promptId===o&&(t.pendingPrompt.reject(new Ts(o)),t.pendingPrompt=null);return}case"prompt":this.handleProviderAuthPrompt(t,n,s);return;default:(r=s.onEvent)==null||r.call(s,n);return}}async handleProviderAuthPrompt(t,n,s){const r=new AbortController,o={promptId:n.promptId,promptKind:n.promptKind,message:n.message,placeholder:n.placeholder,options:n.options,signal:r.signal};let i;const a=new Promise((d,g)=>{i=g});a.catch(()=>{}),t.pendingPrompt={promptId:o.promptId,reject:d=>{r.abort(),i(d)}};const u=s.prompt(o);u.catch(()=>{});try{const d=await Promise.race([u,a]);if(t.terminal)return;t.pendingPrompt=null,await this.daemon.request("provider_auth_respond_request",{flowId:t.flowId,promptId:o.promptId,value:d})}catch(d){if(t.pendingPrompt=null,t.terminal||d instanceof Ts)return;t.flowId&&this.daemon.request("provider_auth_cancel_request",{flowId:t.flowId}).catch(()=>{}),this.settleProviderAuthFlow(t,{ok:!1,error:"connection_lost"})}}settleProviderAuthFlow(t,n){var s;t.terminal||(t.terminal=!0,t.pendingPrompt&&(t.pendingPrompt.reject(new Error("provider-auth: flow ended")),t.pendingPrompt=null),(s=t.unsubscribe)==null||s.call(t),this.activeProviderAuthFlow===t&&(this.activeProviderAuthFlow=null),t.settle(n))}hasViewerSettingsCapability(){return this.daemon.hasFeature("viewerSettings")}async getViewerSettings(){return(await this.daemon.request("viewer_settings_get_request",{})).settings}async setViewerSettings(t){return(await this.daemon.request("viewer_settings_set_request",{patch:t})).settings}onViewerSettingsUpdate(t){return this.daemon.onSessionMessage(n=>{n.type==="viewer_settings_update"&&t(n.settings)})}onAgentUiRequest(t){return this.daemon.onSessionMessage(n=>{Ou(n)&&t(n,{receivedAt:Date.now()})})}onAgentUiResolved(t){return this.daemon.onSessionMessage(n=>{Bu(n)&&t(n)})}async respondToUi(t,n){const s=await this.daemon.request("agent_ui_respond_request",{uiRequestId:t,response:n});return s.ok?{ok:!0}:{ok:!1,reason:s.error??"unknown"}}async listAgentUi(t){const n=await this.daemon.request("agent_ui_list_request",t?{agentId:t}:{});if(!n.ok)throw new Lu(n.error??"failed to list extension UI state","list");return{pending:n.pending??[],surfaces:n.surfaces??[]}}extensionUiAvailable(){return this.daemon.hasFeature("extensionUi")}hasAgentTodosCapability(){return this.daemon.hasFeature("agentTodos")}async listAgentTodos(t){const n=await this.daemon.request("agent_todos_list_request",{agentId:t});if(n.ok===!1)throw new Es(n.error??"failed to list agent todos",n.error??"unknown");if(!n.snapshot)throw new Es("malformed agent_todos_list_response: missing snapshot","malformed_response");return n.snapshot}onAgentTodosUpdate(t){return this.daemon.onSessionMessage(n=>{Fu(n)&&t(n.snapshot)})}hasSkillsCapability(){return this.daemon.hasFeature("skills")}async listSkills(){return this.daemon.request("skills_list_request",{})}async setSkillEnabled(t,n){return this.daemon.request("skills_set_enabled_request",{path:t,enabled:n})}async removeSkill(t){return this.daemon.request("skills_remove_request",t,qu)}async updateAllSkills(){return this.daemon.request("skills_update_all_request",{},Mu)}async previewSkillSource(t){return this.daemon.request("skills_preview_request",{source:t},Nu)}async installSkills(t){return this.daemon.request("skills_install_request",t,Du)}onSkillsChanged(t){return this.daemon.onSessionMessage(n=>{n.type==="skills_changed"&&t(n.reason)})}}class Hu{constructor(t,n){this.daemon=t,this.agentId=n}fetch(t={}){return this.daemon.request("fetch_agent_timeline_request",{agentId:this.agentId,cursor:t.cursor,direction:t.direction,limit:t.limit})}subscribe(t){return this.daemon.onSessionMessage(n=>{const s=n;s.type==="agent_stream"&&s.agentId===this.agentId&&s.event&&t(s.event,{timestamp:s.timestamp,seq:s.seq})})}}class Vu{constructor(t,n){B(this,"timeline");this.daemon=t,this.agentId=n,this.timeline=new Hu(t,n)}send(t,n={}){return this.daemon.request("send_agent_prompt",{agentId:this.agentId,prompt:t,clientMessageId:n.clientMessageId,images:n.images})}run(t,n){return this.send(t,n)}interrupt(){return this.daemon.request("interrupt_agent",{agentId:this.agentId})}steer(t,n={}){return this.daemon.request("steer_agent_request",{agentId:this.agentId,message:t,clientMessageId:n.clientMessageId,images:n.images})}followUp(t,n={}){return this.daemon.request("follow_up_agent_request",{agentId:this.agentId,message:t,clientMessageId:n.clientMessageId,images:n.images})}update(t){return this.daemon.request("update_agent",{agentId:this.agentId,...t})}resume(){return this.daemon.request("resume_agent",{agentId:this.agentId})}archive(){return this.daemon.request("archive_agent",{agentId:this.agentId})}delete(){return this.daemon.request("delete_agent",{agentId:this.agentId})}onUpdate(t){return this.daemon.onSessionMessage(n=>{const s=n;s.type==="agent_update"&&s.agentId===this.agentId&&t(s)})}sessionStats(){return this.daemon.request("agent_session_stats_request",{agentId:this.agentId})}compact(t){return this.daemon.request("agent_compact_request",{agentId:this.agentId,customInstructions:t},Pu)}newSession(){return this.daemon.request("agent_new_session_request",{agentId:this.agentId})}switchSession(t){return this.daemon.request("agent_switch_session_request",{agentId:this.agentId,sessionPath:t})}fork(t){return this.daemon.request("agent_fork_request",{agentId:this.agentId,entryId:t})}forkMessages(){return this.daemon.request("agent_fork_messages_request",{agentId:this.agentId})}clone(){return this.daemon.request("agent_clone_request",{agentId:this.agentId})}setSessionName(t){return this.daemon.request("agent_set_session_name_request",{agentId:this.agentId,name:t})}exportHtml(t){return this.daemon.request("agent_export_html_request",{agentId:this.agentId,outputPath:t})}setModel(t,n){return this.daemon.request("agent_set_model_request",{agentId:this.agentId,provider:t,modelId:n})}cycleModel(){return this.daemon.request("agent_cycle_model_request",{agentId:this.agentId})}lastAssistantText(){return this.daemon.request("agent_last_assistant_text_request",{agentId:this.agentId})}listCommands(){return this.daemon.request("agent_list_commands_request",{agentId:this.agentId})}setThinking(t){return this.daemon.request("agent_set_thinking_request",{agentId:this.agentId,level:t})}listThinkingLevels(){return this.daemon.request("agent_thinking_levels_request",{agentId:this.agentId})}}class Ku{constructor(t,n){this.daemon=t,this.workspaceId=n}onUpdate(t){return this.daemon.onSessionMessage(n=>{const s=n;s.type==="workspace_update"&&s.workspaceId===this.workspaceId&&t(s)})}}class Gu{constructor(t){this.daemon=t}listProviders(){return this.daemon.request("list_providers",{})}listModels(t,n){return this.daemon.request("list_provider_models",{provider:t,...n!=null&&n.agentId?{agentId:n.agentId}:{}})}listModes(t){return this.daemon.request("list_provider_modes",{provider:t})}resolveDefaultModel(t,n){return this.daemon.request("resolve_default_model",{provider:t,...n?{cwd:n}:{}})}refreshSnapshot(){return this.daemon.request("providers.snapshot.refresh.request",{})}}const Qn={pending:{},surfaces:{},resolved:{}},Yu=50;function Qr(e,t){return`${e}\0${t}`}function $n(e){return typeof e=="number"?e:Date.parse(e)}function Xu(e,t){switch(t.type){case"ui_request":return Ju(e,t.event,t.meta);case"ui_resolved":return{state:ed(e,t.event),effects:[]};case"snapshot":return{state:nd(t.pending,t.surfaces,e.resolved),effects:[]};case"disconnected":return{state:sd(e),effects:[]};case"agent_removed":return{state:rd(e,t.agentId),effects:[]};case"respond_sent":return{state:od(e,t.requestId,t.response),effects:[]};case"respond_failed":return{state:id(e,t.requestId),effects:[]}}}function Ju(e,t,n){if(t.expectsResponse){const s={requestId:t.requestId,agentId:t.agentId,method:t.method,payload:t.payload,timeoutMs:t.timeoutMs,createdAt:t.createdAt,receivedAt:n.receivedAt,answerable:!0};return{state:{...e,pending:{...e.pending,[t.requestId]:s}},effects:[]}}if(t.surfaceKey!==void 0){const s=Qr(t.agentId,t.surfaceKey);if(t.removed){if(!(s in e.surfaces))return{state:e,effects:[]};const o={...e.surfaces};return delete o[s],{state:{...e,surfaces:o},effects:[]}}const r={agentId:t.agentId,surfaceKey:t.surfaceKey,method:t.method,payload:t.payload,updatedAt:t.createdAt};return{state:{...e,surfaces:{...e.surfaces,[s]:r}},effects:[]}}return{state:e,effects:Zu(t)}}function Zu(e){switch(e.method){case"set_editor_text":{const t=typeof e.payload.text=="string"?e.payload.text:"";return[{type:"replace_composer_text",agentId:e.agentId,text:t}]}case"notify":{const t=typeof e.payload.message=="string"?e.payload.message:"",n=typeof e.payload.level=="string"?e.payload.level:"info";return[{type:"notify",agentId:e.agentId,message:t,level:n}]}default:return[]}}function Qu(e,t){if(!(e!=="select"&&e!=="confirm"))return{value:t.value,confirmed:t.confirmed}}function ed(e,t){const n=e.pending[t.requestId];if(!n)return e;const s={...e.pending};delete s[t.requestId];const r={requestId:n.requestId,agentId:n.agentId,method:n.method,payload:n.payload,createdAt:n.createdAt,reason:t.reason};return n.submittedAnswer!==void 0&&(r.answer=n.submittedAnswer),{...e,pending:s,resolved:td(e.resolved,r)}}function td(e,t){const n={...e,[t.requestId]:t},s=Object.values(n).filter(o=>o.agentId===t.agentId).toSorted((o,i)=>es(o.createdAt,o.requestId,i.createdAt,i.requestId)),r=s.length-Yu;if(r<=0)return n;for(const o of s.slice(0,r))delete n[o.requestId];return n}function nd(e,t,n){const s={};for(const o of e)s[o.requestId]={requestId:o.requestId,agentId:o.agentId,method:o.method,payload:o.payload,timeoutMs:o.timeoutMs,createdAt:o.createdAt,answerable:!0};const r={};for(const o of t)r[Qr(o.agentId,o.surfaceKey)]={agentId:o.agentId,surfaceKey:o.surfaceKey,method:o.method,payload:o.payload,updatedAt:o.updatedAt};return{pending:s,surfaces:r,resolved:n}}function sd(e){const t={};for(const[n,s]of Object.entries(e.pending))t[n]={...s,answerable:!1};return{...e,pending:t}}function rd(e,t){const n={};for(const[o,i]of Object.entries(e.pending))i.agentId!==t&&(n[o]=i);const s={};for(const[o,i]of Object.entries(e.surfaces))i.agentId!==t&&(s[o]=i);const r={};for(const[o,i]of Object.entries(e.resolved))i.agentId!==t&&(r[o]=i);return{pending:n,surfaces:s,resolved:r}}function od(e,t,n){const s=e.pending[t];if(!s)return e;const r=Qu(s.method,n),o={...s,submitting:!0};return r!==void 0&&(o.submittedAnswer=r),{...e,pending:{...e.pending,[t]:o}}}function id(e,t){const n=e.pending[t];if(!n)return e;const s={requestId:n.requestId,agentId:n.agentId,method:n.method,payload:n.payload,timeoutMs:n.timeoutMs,createdAt:n.createdAt,receivedAt:n.receivedAt,answerable:n.answerable};return{...e,pending:{...e.pending,[t]:s}}}function es(e,t,n,s){const r=$n(e)-$n(n);return r!==0?r:t.localeCompare(s)}function ad(e,t){return Object.values(e.pending).filter(n=>n.agentId===t).toSorted((n,s)=>es(n.createdAt,n.requestId,s.createdAt,s.requestId))}function cd(e){const t={};for(const n of Object.values(e.pending))t[n.agentId]=(t[n.agentId]??0)+1;return t}function ld(e,t){return Object.values(e.resolved).filter(n=>n.agentId===t).toSorted((n,s)=>es(n.createdAt,n.requestId,s.createdAt,s.requestId))}function gS(e,t){if(e.timeoutMs===void 0)return null;const n=e.receivedAt??$n(e.createdAt);return Math.max(0,e.timeoutMs-(t-n))}const Cs={byAgent:{}};function ud(e,t){const n=e.byAgent[t.agentId];return n&&t.seq<=n.seq?e:{byAgent:{...e.byAgent,[t.agentId]:t}}}function dd(e){const t={};for(const[n,s]of Object.entries(e.byAgent))t[n]={...s,seq:Number.NEGATIVE_INFINITY};return{byAgent:t}}function fd(e,t){return e.byAgent[t]}function As(e){return e.expectsResponse?"dialog":e.surfaceKey!==void 0?"surface":"transient"}function pd(e,t={}){let n=Qn;const s=new Set,r=new Set;let o=!1,i=!1,a=[],u=0;function d(_){if(o)return;const S=Xu(n,_);n=S.state,_.type==="ui_request"&&As(_.event)==="transient"&&S.effects.length===0&&g(_.event.method);for(const E of s)E(n,S.effects)}function g(_){r.has(_)||(r.add(_),t.onUnknownMethod?t.onUnknownMethod(_):console.warn(`agent-ui-controller: unknown extension-UI method "${_}"`))}async function f(){if(o||!e.extensionUiAvailable())return;const _=++u;i||(i=!0,a=[]);let S;try{S=await e.listAgentUi()}catch(R){if(o||_!==u)return;i=!1,a=[];const q=R instanceof Error?R.message:String(R);console.error(`agent-ui-controller: failed to sync extension UI state: ${q}`);return}if(o||_!==u)return;i=!1;const E=a;a=[],d({type:"snapshot",pending:S.pending,surfaces:S.surfaces});for(const R of E)R.type==="ui_request"&&As(R.event)==="transient"&&d(R)}const m=e.onAgentUiRequest((_,S)=>{const E={type:"ui_request",event:_,meta:S};i?a.push(E):d(E)}),h=e.onAgentUiResolved(_=>{const S={type:"ui_resolved",event:_};i?a.push(S):d(S)}),b=e.connection.onSessionMessage(_=>{(zu(_)||Wu(_))&&d({type:"agent_removed",agentId:_.agentId})}),y=e.connection.onStateChange(_=>{_==="closed"||_==="closing"?d({type:"disconnected"}):_==="open"&&f()});f();async function I(_,S){d({type:"respond_sent",requestId:_,response:S});const E=await e.respondToUi(_,S);return E.ok||d({type:"respond_failed",requestId:_}),E}return{getState:()=>n,subscribe(_){return s.add(_),()=>s.delete(_)},respond:I,resync:f,dispose(){o||(o=!0,m(),h(),b(),y(),s.clear(),a=[])}}}const en=32*1024,hd=1024*1024,gd=10,md="This daemon does not support file downloads by path and range (feature fileDownloadRanges): update the daemon.";function _d(){let e;const t=new Promise((s,r)=>{e=r});t.catch(()=>{});let n;return{failure:t,fail(s){n||(n=s,e(s))},check(){if(n)throw n}}}function zt(e){return new DOMException(`The ${e} was aborted`,"AbortError")}function vn(e){return e instanceof Error?e:new Error(String(e))}function yd(e){const{fileName:t,mimeType:n,totalBytes:s,mtimeMs:r,offset:o,length:i}=e;return s===void 0||r===void 0||o===void 0||i===void 0?null:{...t===void 0?{}:{fileName:t},...n===void 0?{}:{mimeType:n},totalBytes:s,mtimeMs:r,offset:o,length:i}}function wd(e){return e instanceof Error&&e.name==="AbortError"}function vd(e){return new Promise(t=>setTimeout(t,e))}async function*eo(e){for(let t=0;t<e.length;t+=en)yield e.subarray(t,t+en)}async function*bd(e){for(let t=0;t<e.size;t+=en)yield new Uint8Array(await e.slice(t,t+en).arrayBuffer())}async function*Sd(e){for await(const t of e)yield*eo(t)}function kd(e){return e instanceof Uint8Array?{total:e.length,chunks:eo(e)}:typeof Blob<"u"&&e instanceof Blob?{total:e.size,chunks:bd(e)}:{total:void 0,chunks:Sd(e)}}function xd(e){const t=e.reduce((r,o)=>r+o.length,0),n=new Uint8Array(t);let s=0;for(const r of e)n.set(r,s),s+=r.length;return n}class Id{constructor(t,n={}){B(this,"pending",new Map);B(this,"streamCursor",1);B(this,"detach",null);B(this,"detachState",null);B(this,"uploads",new Set);B(this,"highWaterBytes");B(this,"sleep");this.daemon=t,this.highWaterBytes=n.highWaterBytes??hd,this.sleep=n.sleep??vd}get pendingUploads(){return this.uploads.size}get pendingDownloads(){return this.pending.size}start(){this.detach||(this.detach=this.daemon.onFileTransferFrame(t=>this.dispatch(t)))}stop(){var t;(t=this.detach)==null||t.call(this),this.detach=null,this.failDownloads(new Error("file transfer router stopped"));for(const n of this.uploads)n.fail(new Error("file transfer router stopped"))}async downloadTo(t,n,s={}){const{offset:r,length:o,ifUnchanged:i,signal:a,onProgress:u}=s;if(!this.daemon.hasFeature("fileDownloadRanges"))throw new Error(md);if(a!=null&&a.aborted)throw zt("download");if(this.daemon.state!=="open")throw new Error("connection is not open");const d=gu(this.pending,this.streamCursor);if(d===null)throw new Error("no free download stream");return this.streamCursor=(d+1)%Ze,await new Promise((g,f)=>{const m={sink:n,onProgress:u,info:void 0,received:0,progressed:!1,settled:!1,detachAbort:null,resolve:g,reject:f};if(this.pending.set(d,m),this.watchConnection(),a){const h=()=>this.abortDownload(d,m,zt("download"));a.addEventListener("abort",h,{once:!0}),m.detachAbort=()=>a.removeEventListener("abort",h)}this.daemon.request("file_download_request",{path:t,stream:d,offset:r,length:o,ifUnchanged:i}).then(h=>{h.ok||(this.finish(m,{error:new Error(h.error??"download request failed")}),this.release(d,m))},h=>{this.finish(m,{error:vn(h)}),this.release(d,m)})})}async download(t,n={}){const s=[];return{...await this.downloadTo(t,o=>{s.push(o)},n),bytes:xd(s)}}finish(t,n){var s;t.settled||(t.settled=!0,(s=t.detachAbort)==null||s.call(t),t.detachAbort=null,"error"in n?t.reject(n.error):t.resolve(n.result))}release(t,n){this.pending.get(t)===n&&(this.pending.delete(t),this.pending.size===0&&this.unwatchConnection())}abortDownload(t,n,s){if(!n.settled){if(this.finish(n,{error:s}),this.daemon.state!=="open"){this.release(t,n);return}this.daemon.request("file_download_cancel_request",{stream:t}).then(r=>{r.ok||this.release(t,n)},()=>this.release(t,n))}}failDownloads(t){const n=[...this.pending.values()];this.pending.clear(),this.unwatchConnection();for(const s of n)this.finish(s,{error:t})}watchConnection(){this.detachState||(this.detachState=this.daemon.onStateChange(t=>{t!=="open"&&this.failDownloads(new Error(`connection ${t} during download`))}))}unwatchConnection(){var t;(t=this.detachState)==null||t.call(this),this.detachState=null}async upload(t,n,s={}){const{onProgress:r,signal:o}=s;if(o!=null&&o.aborted)throw zt("upload");const i=_d();this.uploads.add(i);const a=[];let u,d=!1,g=!1;try{if(o){const q=()=>i.fail(zt("upload"));o.addEventListener("abort",q,{once:!0}),a.push(()=>o.removeEventListener("abort",q))}if(a.push(this.daemon.onStateChange(q=>{q!=="open"&&i.fail(new Error(`connection ${q} during upload`))})),this.daemon.state!=="open")throw new Error("connection is not open");const f=Dn(),m=this.daemon.hasFeature("fileTransferAck"),h=this.daemon.request("file_upload_request",{path:t,transferId:f,...m?{ack:!0}:{}});let b;try{b=await Promise.race([h,i.failure])}catch(q){throw h.then(H=>{H.ok&&H.stream!==void 0&&this.sendUploadError(H.stream,"client_error")},()=>{}),q}if(!b.ok||b.stream===void 0)throw new Error(b.error??"upload request failed");u=b.stream;let y;const I=new Promise(q=>{y=q});m&&a.push(this.daemon.onSessionMessage(q=>{q.type!=="file_upload_complete"||q.transferId!==f||(g=!0,q.ok?y():i.fail(new Error(q.error??"upload failed")))})),this.daemon.sendBinary(Ft({opcode:"Begin",stream:u,meta:{transferId:f}}));const{total:_,chunks:S}=kd(n),E=S[Symbol.asyncIterator]();a.push(()=>{var q;Promise.resolve((q=E.return)==null?void 0:q.call(E)).catch(()=>{})});let R=0;for(;;){await this.waitWhile(()=>(this.daemon.bufferedAmount??0)>this.highWaterBytes,i);const q=E.next();q.catch(()=>{});const H=await Promise.race([q,i.failure]);if(H.done)break;i.check(),this.daemon.sendBinary(Ft({opcode:"Chunk",stream:u,data:H.value})),R+=H.value.length,r==null||r(R,_)}R===0&&(r==null||r(0,_)),i.check(),this.daemon.sendBinary(Ft({opcode:"End",stream:u,ok:!0})),d=!0,m?await Promise.race([I,i.failure]):await this.waitWhile(()=>(this.daemon.bufferedAmount??0)>0,i)}catch(f){throw u!==void 0&&!d&&!g&&this.sendUploadError(u,wd(f)?"client_aborted":"client_error"),f}finally{for(const f of a)f();this.uploads.delete(i)}}async waitWhile(t,n){for(;t();)n.check(),await Promise.race([this.sleep(gd),n.failure])}sendUploadError(t,n){if(this.daemon.state==="open")try{this.daemon.sendBinary(Ft({opcode:"Error",stream:t,message:n}))}catch{}}dispatch(t){var s,r;const n=this.pending.get(t.stream);if(n)switch(t.opcode){case"Begin":{if(n.settled)return;const o=yd(t.meta);if(!o){this.abortDownload(t.stream,n,new Error("daemon sent a Begin frame without the range"));return}n.info=o;return}case"Chunk":{if(n.settled)return;const{info:o}=n;if(!o){this.abortDownload(t.stream,n,new Error("daemon sent a Chunk before Begin"));return}try{n.sink(t.data),n.received+=t.data.length,n.progressed=!0,(s=n.onProgress)==null||s.call(n,n.received,o.length)}catch(i){this.abortDownload(t.stream,n,vn(i))}return}case"End":{if(this.release(t.stream,n),n.settled)return;const{info:o}=n;if(!t.ok)this.finish(n,{error:new Error("download failed")});else if(!o)this.finish(n,{error:new Error("download ended before Begin")});else if(n.received!==o.length)this.finish(n,{error:new Error(`download ended after ${n.received} of ${o.length} bytes`)});else{try{n.progressed||(r=n.onProgress)==null||r.call(n,0,o.length)}catch(i){this.finish(n,{error:vn(i)});return}this.finish(n,{result:o})}return}case"Error":this.release(t.stream,n),this.finish(n,{error:new Error(t.message)});return}}}class Td{constructor(t,n={}){B(this,"initialDelayMs");B(this,"maxDelayMs");B(this,"factor");B(this,"jitter");B(this,"maxAttempts");B(this,"setTimer");B(this,"clearTimer");B(this,"random");B(this,"attempt",0);B(this,"timer",null);B(this,"active",!1);B(this,"reconnecting",!1);B(this,"detachState",null);B(this,"reconnectedHandlers",new Set);B(this,"failedHandlers",new Set);this.daemon=t,this.initialDelayMs=n.initialDelayMs??500,this.maxDelayMs=n.maxDelayMs??3e4,this.factor=n.factor??2,this.jitter=n.jitter??.2,this.maxAttempts=n.maxAttempts??Number.POSITIVE_INFINITY,this.setTimer=n.setTimer??((s,r)=>setTimeout(s,r)),this.clearTimer=n.clearTimer??(s=>clearTimeout(s)),this.random=n.random??Math.random}delayForAttempt(t){const n=Math.min(this.maxDelayMs,this.initialDelayMs*this.factor**(t-1)),s=n*this.jitter*(this.random()*2-1);return Math.max(0,Math.round(n+s))}onReconnected(t){return this.reconnectedHandlers.add(t),()=>this.reconnectedHandlers.delete(t)}onReconnectFailed(t){return this.failedHandlers.add(t),()=>this.failedHandlers.delete(t)}start(){this.active||(this.active=!0,this.detachState=this.daemon.onStateChange(t=>{t==="closed"&&this.active&&this.scheduleReconnect(),t==="open"&&(this.attempt=0)}))}stop(){var t;this.active=!1,this.timer&&this.clearTimer(this.timer),this.timer=null,(t=this.detachState)==null||t.call(this),this.detachState=null}reconnectNow(){this.active&&(this.reconnecting||this.daemon.state==="closed"&&(this.timer&&(this.clearTimer(this.timer),this.timer=null),this.attempt=0,this.tryReconnect()))}get attemptCount(){return this.attempt}scheduleReconnect(){if(!this.active||this.timer||this.attempt>=this.maxAttempts)return;this.attempt+=1;const t=this.delayForAttempt(this.attempt);this.timer=this.setTimer(()=>{this.timer=null,!this.reconnecting&&this.tryReconnect()},t)}async tryReconnect(){if(!this.active||this.reconnecting)return;this.reconnecting=!0;const t=this.attempt;try{await this.daemon.connect();for(const n of this.reconnectedHandlers)n({attempt:t,serverId:this.daemon.serverId})}catch(n){for(const s of this.failedHandlers)s(n,t);this.scheduleReconnect()}finally{this.reconnecting=!1}}}const we=(e,t,n,s,r,o,i,a,u,d,g)=>({50:e,100:t,200:n,300:s,400:r,500:o,600:i,700:a,800:u,900:d,950:g}),C={zinc:we("#fafafa","#f4f4f5","#e4e4e7","#d4d4d8","#a1a1aa","#71717a","#52525b","#3f3f46","#27272a","#18181b","#09090b"),gray:we("#f9fafb","#f3f4f6","#e5e7eb","#d1d5db","#9ca3af","#6b7280","#4b5563","#374151","#1f2937","#111827","#030712"),slate:we("#f8fafc","#f1f5f9","#e2e8f0","#cbd5e1","#94a3b8","#64748b","#475569","#334155","#1e293b","#0f172a","#020617"),blue:we("#eff6ff","#dbeafe","#bfdbfe","#93c5fd","#60a5fa","#3b82f6","#2563eb","#1d4ed8","#1e40af","#1e3a8a","#172554"),green:we("#f0fdf4","#dcfce7","#bbf7d0","#86efac","#4ade80","#22c55e","#16a34a","#15803d","#166534","#14532d","#052e16"),red:we("#fef2f2","#fee2e2","#fecaca","#fca5a5","#f87171","#ef4444","#dc2626","#b91c1c","#991b1b","#7f1d1d","#450a0a"),teal:we("#f0fdfa","#ccfbf1","#99f6e4","#5eead4","#2dd4bf","#14b8a6","#0d9488","#0f766e","#115e59","#134e4a","#042f2e"),amber:we("#fffbeb","#fef3c7","#fde68a","#fcd34d","#fbbf24","#f59e0b","#d97706","#b45309","#92400e","#78350f","#451a03"),yellow:we("#fefce8","#fef9c3","#fef08a","#fde047","#facc15","#eab308","#ca8a04","#a16207","#854d0e","#713f12","#422006"),purple:we("#faf5ff","#f3e8ff","#e9d5ff","#d8b4fe","#c084fc","#a855f7","#9333ea","#7e22ce","#6b21a8","#581c87","#3b0764"),orange:we("#fff7ed","#ffedd5","#fed7aa","#fdba74","#fb923c","#f97316","#ea580c","#c2410c","#9a3412","#7c2d12","#431407"),white:"#ffffff",black:"#000000"};function to(e){const t=e.trim().replace(/^#/,""),n=t.length===3?t.split("").map(s=>s+s).join(""):t;if(n.length!==6||/[^0-9a-fA-F]/.test(n))throw new Error(`Invalid hex color: ${e}`);return{r:parseInt(n.slice(0,2),16),g:parseInt(n.slice(2,4),16),b:parseInt(n.slice(4,6),16)}}function Ed(e){return Math.max(0,Math.min(255,Math.round(e)))}function Cd({r:e,g:t,b:n}){const s=r=>Ed(r).toString(16).padStart(2,"0");return`#${s(e)}${s(t)}${s(n)}`}function Ad(e){const{r:t,g:n,b:s}=to(e),r=o=>{const i=o/255;return i<=.03928?i/12.92:((i+.055)/1.055)**2.4};return .2126*r(t)+.7152*r(n)+.0722*r(s)}function ts(e,t="#18181b",n="#ffffff"){return Ad(e)>.45?t:n}function Rd(e,t){const{r:n,g:s,b:r}=to(e),o=Math.max(0,Math.min(1,t));return Cd({r:n+(255-n)*o,g:s+(255-s)*o,b:r+(255-r)*o})}function Wt(e){const t=e.trim().replace(/^#/,"");return(t.length===3||t.length===6)&&!/[^0-9a-fA-F]/.test(t)}const jd={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,10:10,11:11,12:12,14:14,16:16,20:20,24:24,26:26,30:30,32:32,48:48,64:64,80:80,96:96,128:128},tn={"4xs":10,"3xs":11,"2xs":12,xs:13,code:13,sm:14,md:15,base:17,lg:19,xl:21,"2xl":23,"3xl":28,"4xl":36},Pd={normal:"400",medium:"500",semibold:"600",bold:"700"},qd={none:0,sm:2,base:4,md:6,lg:8,xl:12,"2xl":16,full:9999},Md={0:0,1:1,2:2},Nd={0:0,50:.5,100:1},Dd={xs:12,sm:14,md:16,lg:20},$d={diff:22},no='system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif',so='ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace',mS='"MesloLGS NF", "MesloLGS Nerd Font Mono", "Cascadia Mono NF", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace';function Ld(e){const t=e==="dark"?"rgba(0,0,0,0.55)":"rgba(24,24,27,0.12)";return{sm:{color:t,offsetX:0,offsetY:1,radius:2,elevation:1},md:{color:t,offsetX:0,offsetY:3,radius:8,elevation:4},lg:{color:t,offsetX:0,offsetY:10,radius:24,elevation:12}}}const Od={statusSuccess:"#16a34a",statusDanger:"#dc2626",statusWarning:"#f59e0b",statusMerged:"#9333ea",statusInfo:"#3b82f6"},Bd={statusSuccess:"#15803d",statusDanger:"#b91c1c",statusWarning:"#d97706",statusMerged:"#7c3aed",statusInfo:"#2563eb"};function Fd(){return{keyword:C.purple[300],string:C.green[300],number:C.orange[300],boolean:C.orange[300],comment:C.zinc[500],function:C.blue[300],variable:C.zinc[200],type:C.teal[300],class:C.amber[300],constant:C.orange[300],operator:C.zinc[400],punctuation:C.zinc[400],tag:C.red[300],attribute:C.amber[300],property:C.blue[200],regexp:C.teal[300],escape:C.orange[200],heading:C.blue[300],link:C.blue[400],deleted:C.red[400],inserted:C.green[400]}}function zd(){return{keyword:C.purple[700],string:C.green[700],number:C.orange[700],boolean:C.orange[700],comment:C.zinc[500],function:C.blue[700],variable:C.zinc[800],type:C.teal[700],class:C.amber[700],constant:C.orange[700],operator:C.zinc[600],punctuation:C.zinc[600],tag:C.red[700],attribute:C.amber[700],property:C.blue[700],regexp:C.teal[700],escape:C.orange[700],heading:C.blue[700],link:C.blue[600],deleted:C.red[700],inserted:C.green[700]}}function ro(e,t,n){return{background:e,foreground:t,cursor:n,cursorAccent:e,selectionBackground:"rgba(255,255,255,0.18)",black:C.zinc[900],red:C.red[500],green:C.green[500],yellow:C.amber[500],blue:C.blue[500],magenta:C.purple[500],cyan:C.teal[500],white:C.zinc[300],brightBlack:C.zinc[600],brightRed:C.red[400],brightGreen:C.green[400],brightYellow:C.amber[400],brightBlue:C.blue[400],brightMagenta:C.purple[400],brightCyan:C.teal[400],brightWhite:C.zinc[50]}}function at(e){const t=C.zinc[50],n=ts(e.accent);return{surface0:e.surface0,surface1:e.surface1,surface2:e.surface2,surface3:e.surface3,surface4:e.surface4,surfaceDiffEmpty:e.surfaceDiffEmpty,surfaceSidebar:e.surfaceSidebar,surfaceSidebarHover:e.surfaceSidebarHover,surfaceWorkspace:e.surface1,foreground:t,foregroundMuted:e.mutedForeground,accent:e.accent,accentBright:e.accentBright,accentForeground:n,destructive:e.destructive,destructiveForeground:C.white,success:e.accent,successForeground:C.white,border:e.border,borderAccent:e.borderAccent,...Od,diffAddition:C.green[400],diffDeletion:C.red[500],scrollbarHandle:e.scrollbarHandle,background:e.surface0,popover:e.surface2,popoverForeground:t,primary:e.accent,secondary:e.surface2,muted:e.surface2,mutedForeground:e.mutedForeground,input:e.surface2,ring:e.accent,palette:C,syntax:Fd(),terminal:ro(e.surface0,t,e.accent)}}function Wd(){const e="#1a1a1e",t="#253e6f";return{surface0:"#ffffff",surface1:"#fafafa",surface2:"#f4f4f5",surface3:"#e4e4e7",surface4:"#d4d4d8",surfaceDiffEmpty:"#f6f6f6",surfaceSidebar:"#f4f4f5",surfaceSidebarHover:"#e9e9ec",surfaceWorkspace:"#ffffff",foreground:e,foregroundMuted:"#71717a",accent:t,accentBright:"#2f4f8e",accentForeground:ts(t),destructive:"#b04138",destructiveForeground:"#ffffff",success:t,successForeground:"#ffffff",border:"#e4e4e7",borderAccent:"#ececf1",...Bd,diffAddition:"#15803d",diffDeletion:"#b91c1c",scrollbarHandle:"#3f3f46",background:"#ffffff",popover:"#ffffff",popoverForeground:e,primary:t,secondary:"#f4f4f5",muted:"#f4f4f5",mutedForeground:"#71717a",input:"#f4f4f5",ring:t,palette:C,syntax:zd(),terminal:{...ro("#ffffff",e,t),selectionBackground:"rgba(0,0,0,0.15)",white:"#ffffff",brightWhite:"#fafafa"}}}const Ud={light:"#ffffff",dark:"#3b62b0",zinc:"#808080",midnight:"#4A6BA8",claude:"#D97757",ghostty:"#8caaee"},oo=["light","dark","zinc","midnight","claude","ghostty"];function Hd(e){if(e==="light")return Wd();switch(e){case"dark":return at({surface0:"#181B1A",surface1:"#1E2120",surface2:"#272A29",surface3:"#434645",surface4:"#595B5B",surfaceDiffEmpty:"#252827",surfaceSidebar:"#141716",surfaceSidebarHover:"#1c1f1e",mutedForeground:"#A1A5A4",scrollbarHandle:"#717574",border:"#252B2A",borderAccent:"#2f3135",accent:"#2e5cb8",accentBright:"#a2b4d7",destructive:"#c64f43"});case"zinc":return at({surface0:"#18181b",surface1:"#1f1f22",surface2:"#27272a",surface3:"#3f3f46",surface4:"#52525b",surfaceDiffEmpty:"#242427",surfaceSidebar:"#131316",surfaceSidebarHover:"#1b1b1e",mutedForeground:"#a1a1aa",scrollbarHandle:"#71717a",border:"#27272a",borderAccent:"#303036",accent:"#e4e4e7",accentBright:"#fafafa",destructive:"#c44a4a"});case"midnight":return at({surface0:"#161820",surface1:"#1c1e27",surface2:"#252731",surface3:"#3c3e4c",surface4:"#535564",surfaceDiffEmpty:"#222430",surfaceSidebar:"#121420",surfaceSidebarHover:"#1a1c28",mutedForeground:"#9a9db0",scrollbarHandle:"#6b6e82",border:"#242636",borderAccent:"#2e3040",accent:"#3b6fcf",accentBright:"#7eaaeb",destructive:"#c44a52"});case"claude":return at({surface0:"#1f1f1e",surface1:"#262523",surface2:"#2f2d2b",surface3:"#4a4745",surface4:"#605d5b",surfaceDiffEmpty:"#2a2826",surfaceSidebar:"#1a1918",surfaceSidebarHover:"#222120",mutedForeground:"#ada9a5",scrollbarHandle:"#78746f",border:"#2c2a27",borderAccent:"#36332f",accent:"#d97757",accentBright:"#e89a7f",destructive:"#cf513e"});case"ghostty":return at({surface0:"#282c34",surface1:"#2f333d",surface2:"#383c48",surface3:"#4a4f5e",surface4:"#5b6175",surfaceDiffEmpty:"#323643",surfaceSidebar:"#21252d",surfaceSidebarHover:"#292d36",mutedForeground:"#c8ccd8",scrollbarHandle:"#a0a4b2",border:"#353a47",borderAccent:"#3f4454",accent:"#89b4fa",accentBright:"#b4d0fc",destructive:"#c44a55"})}}const io={};for(const e of oo){const t=e==="light"?"light":"dark";io[e]={name:e,colorScheme:t,colors:Hd(e),swatch:Ud[e]}}const Vd=io;function ao(e){const t=Vd[e];return{name:e,colorScheme:t.colorScheme,colors:t.colors,spacing:jd,fontSize:{...tn},fontFamily:{ui:no,mono:so},lineHeight:{...$d},iconSize:Dd,fontWeight:Pd,borderRadius:qd,borderWidth:Md,opacity:Nd,shadow:Ld(t.colorScheme),swatch:t.swatch}}const Kd=tn.base,Gd=10,Yd=24;function Xd(e,t){const n=t.themeName??e.name,s=ao(n),r=t.uiFont&&t.uiFont.trim()!==""?t.uiFont:no,o=t.monoFont&&t.monoFont.trim()!==""?t.monoFont:so,i={...s.fontSize};if(t.fontSize!=null){const u=Math.max(Gd,Math.min(Yd,t.fontSize))/Kd;for(const d of Object.keys(tn))i[d]=Math.round(tn[d]*u)}return{...s,fontSize:i,fontFamily:{ui:r,mono:o}}}function Jd(e){return ao(e)}const Zd="dark",Qd=16;function ef(e){const t=e/Qd;return`${Number(t.toFixed(4))}rem`}function tf(e){const t={};nf(e.colors,t);for(const[n,s]of Object.entries(e.spacing))t[`--pi-spacing-${n}`]=`${s}px`;for(const[n,s]of Object.entries(e.fontSize))t[`--pi-font-size-${n}`]=ef(s);t["--pi-font-ui"]=e.fontFamily.ui,t["--pi-font-mono"]=e.fontFamily.mono,t["--pi-line-height-diff"]=`${e.lineHeight.diff}px`;for(const[n,s]of Object.entries(e.iconSize))t[`--pi-icon-size-${n}`]=`${s}px`;for(const[n,s]of Object.entries(e.fontWeight))t[`--pi-font-weight-${n}`]=String(s);for(const[n,s]of Object.entries(e.borderRadius))t[`--pi-radius-${n}`]=s===9999?"9999px":`${s}px`;for(const[n,s]of Object.entries(e.borderWidth))t[`--pi-border-width-${n}`]=`${s}px`;for(const[n,s]of Object.entries(e.opacity))t[`--pi-opacity-${n}`]=String(s);for(const[n,s]of Object.entries(e.shadow))if(typeof s=="string")t[`--pi-shadow-${n}`]=s;else if(s&&typeof s=="object"){const r=s;t[`--pi-shadow-${n}`]=`${r.offsetX}px ${r.offsetY}px ${r.radius}px ${r.color}`}return t["--pi-color-scheme"]=e.colorScheme,t}function nf(e,t){const{palette:n,syntax:s,terminal:r,...o}=e;for(const[i,a]of Object.entries(o))typeof a=="string"&&(t[`--pi-color-${i}`]=a);s&&sf(s,t),r&&(t["--pi-terminal-bg"]=r.background,t["--pi-terminal-fg"]=r.foreground)}function sf(e,t){for(const[n,s]of Object.entries(e))typeof s=="string"&&(t[`--syntax-${rf(n)}`]=s)}function rf(e){return e.replace(/[A-Z]/g,t=>`-${t.toLowerCase()}`)}function of(e){if(typeof document>"u")return;const t=document.documentElement.style;for(const[s,r]of Object.entries(e))t.setProperty(s,r);const n=e["--pi-color-scheme"];n&&document.documentElement.style.setProperty("color-scheme",n)}function af(e){const t=tf(e);of(t)}const ct=l().min(1,"Asset path must not be empty"),cf=p({accent:l().refine(Wt,{message:"accent must be a valid #rrggbb hex color"}),accentBright:l().refine(Wt,{message:"accentBright must be a valid #rrggbb hex color"}).optional(),accentForeground:l().refine(Wt,{message:"accentForeground must be a valid #rrggbb hex color"}).optional(),swatch:l().refine(Wt,{message:"swatch must be a valid #rrggbb hex color"}).optional()}),lf=p({logoLight:ct,logoDark:ct,logoMark:ct.optional(),icon:ct,splash:ct.optional()}),uf=p({docs:l().url().optional(),support:l().url().optional(),issues:l().url().optional(),website:l().url().optional()}).optional(),df=p({copyright:l().optional(),companyName:l().optional()}).optional(),ff=p({productName:l().min(1,"productName must not be empty").optional(),shortName:l().optional(),tagline:l().optional(),colors:cf,assets:lf.optional(),links:uf,legal:df});function pf(e){const t=e.accent,n=e.accentBright??Rd(t,.35),s=e.accentForeground??ts(t),r=e.swatch??t;return{accent:t,accentBright:n,accentForeground:s,swatch:r}}function hf(e,t){return{...e,colors:{...e.colors,accent:t.accent,accentBright:t.accentBright,accentForeground:t.accentForeground,primary:t.accent,ring:t.accent},swatch:t.swatch}}const gf="pi-studio-appearance";function mf(e){if(e===void 0)return;const t=ff.safeParse(e);if(t.success)return t.data;const n=t.error.issues.map(s=>`${s.path.join(".")||"(root)"}: ${s.message}`);console.warn(`[ui-library] Ignoring invalid brandConfig, using the unbranded theme. ${n.join("; ")}`)}function _f(e){return e==="system"?typeof window<"u"&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":e}function yf(e,t,n={}){const s=n.storageKey??gf,r=mf(t);let o=g(),i=null;const a=new Set;function u(h,b){const y=_f(h),I=Jd(y);let _=Xd(I,{...b,themeName:y});if(r!=null&&r.colors){const S=pf(r.colors);_=hf(_,S)}return _}function d(){const h=JSON.stringify({mode:o.mode,settings:o.settings});e.set(s,h)}function g(){const h=e.get(s);let b=Zd,y={};if(h)try{const _=JSON.parse(h);_.mode&&(oo.includes(_.mode)||_.mode==="system")&&(b=_.mode),_.settings&&typeof _.settings=="object"&&(y=_.settings)}catch{}const I=u(b,y);return{mode:b,settings:y,resolvedTheme:I}}function f(){o={...o,resolvedTheme:u(o.mode,o.settings)},d();for(const h of a)h()}const m={getState(){return o},setMode(h){o={...o,mode:h},f(),m.apply()},updateSettings(h){o={...o,settings:{...o.settings,...h}},f(),m.apply()},apply(){af(o.resolvedTheme)},listen(){if(typeof window>"u")return()=>{};const h=window.matchMedia("(prefers-color-scheme: dark)"),b=()=>{o.mode==="system"&&(f(),m.apply())};return h.addEventListener("change",b),i=()=>h.removeEventListener("change",b),i},subscribe(h){return a.add(h),()=>a.delete(h)}};return m}const co={get(e){var t;try{return((t=globalThis.localStorage)==null?void 0:t.getItem(e))??null}catch{return null}},set(e,t){var n;try{(n=globalThis.localStorage)==null||n.setItem(e,t)}catch{}}},lo=w.createContext(null),wf=w.createContext(null);function vf({store:e=co,storageKey:t,brandConfig:n,children:s}){const r=w.useRef(null);r.current||(r.current=yf(e,n,{storageKey:t}),r.current.apply());const o=r.current,i=w.useSyncExternalStore(o.subscribe,o.getState);return w.useEffect(()=>o.listen(),[o]),w.useEffect(()=>{},[]),c.jsx(wf.Provider,{value:o,children:c.jsx(lo.Provider,{value:i,children:s})})}function _S(){const e=w.useContext(lo);if(!e)throw new Error("useAppearance must be used within a ThemeBoundary");return e}const Rs={xs:28,sm:32,md:36,lg:40},bf={xs:12,sm:14,md:16,lg:20},js={xs:8,sm:10,md:12,lg:16},Sf={xs:"var(--pi-font-size-xs)",sm:"var(--pi-font-size-sm)",md:"var(--pi-font-size-md)",lg:"var(--pi-font-size-base)"};function kf(e){const{disabled:t,loading:n}=e;return t||n?{opacity:.5,isGhostHover:!1}:{opacity:1,isGhostHover:!1}}const bn=["#2563eb","#16a34a","#9333ea","#dc2626","#0d9488","#d97706","#db2777","#0891b2","#ea580c","#4f46e5","#059669","#7c3aed"];function xf(e){let t=0;for(let s=0;s<e.length;s++){const r=e.charCodeAt(s);t=t*31+r>>>0}return bn[t%bn.length]??bn[0]}function If(e){const t=e.match(/[a-zA-Z0-9]/);return t?t[0].toUpperCase():"?"}function Tf(e){switch(e){case"default":return{};case"success":return{token:"statusSuccess"};case"error":return{token:"statusDanger"};case"warning":return{token:"statusWarning"}}}const ns=2200;function Ef(e,t,n,s=Date.now()){return{id:e,content:t,variant:n.variant??"default",durationMs:n.durationMs!==void 0?n.durationMs:ns,icon:n.icon,paused:!1,shownAt:s}}function Cf(e="Copied"){return{content:e,opts:{variant:"success",durationMs:ns}}}function Af(e){return{content:e,opts:{variant:"error",durationMs:ns}}}function Rf(e,t,n=Date.now()){if(e.durationMs===null)return null;e.paused;const s=n-e.shownAt;return Math.max(0,e.durationMs-s)}function jf(e){const{status:t,requiresAttention:n,attentionReason:s,showInactive:r}=e;if(!t)return null;if(n)switch(s){case"permission":case"question":return"statusWarning";case"error":return"statusDanger";case"finished":default:return"statusSuccess"}switch(t){case"running":case"queued":return"accent";case"waiting":return"statusWarning";case"finished":return"statusSuccess";case"error":return"statusDanger";case"idle":case"archived":return r?"foregroundMuted":null}}const Ps=8,Pf=36,qf="_btn_dkqaa_4",Mf="_secondary_dkqaa_47",Nf="_outline_dkqaa_56",Df="_ghost_dkqaa_65",$f="_destructive_dkqaa_75",Lf="_iconOnly_dkqaa_85",Of="_loadingSpinner_dkqaa_92",Bf="_piSpin_dkqaa_1",Ut={btn:qf,default:"_default_dkqaa_38",secondary:Mf,outline:Nf,ghost:Df,destructive:$f,iconOnly:Lf,loadingSpinner:Of,piSpin:Bf};function se({variant:e="default",size:t="md",loading:n=!1,disabled:s=!1,leftIcon:r,trailing:o,iconOnly:i=!1,children:a,style:u,className:d,ref:g,...f}){const{opacity:m}=kf({disabled:s??!1,loading:n}),h=s||n,b=bf[t];return c.jsxs("button",{ref:g,className:U(Ut.btn,Ut[e],i&&Ut.iconOnly,d),disabled:h,"aria-busy":n||void 0,style:{minHeight:Rs[t],paddingLeft:i?void 0:js[t],paddingRight:i?void 0:js[t],fontSize:Sf[t],opacity:m,...i?{width:Rs[t]}:{},...u},...f,children:[n?c.jsx(Li,{className:Ut.loadingSpinner,size:b,"aria-hidden":!0}):r?c.jsx("span",{"aria-hidden":!0,style:{display:"flex",alignItems:"center",flexShrink:0},children:r}):null,a,o&&!n&&c.jsx("span",{"aria-hidden":!0,style:{display:"flex",alignItems:"center",flexShrink:0},children:o})]})}const Ff="_iconBtn_1unr3_3",zf="_xs_1unr3_32",Wf="_sm_1unr3_36",qs={iconBtn:Ff,xs:zf,sm:Wf};function je({size:e="xs",hoverBase:t,className:n,style:s,type:r="button",...o}){return c.jsx("button",{type:r,className:U(qs.iconBtn,qs[e],n),style:t?{"--icon-btn-hover-base":t,...s}:s,...o})}const Uf={xs:12,sm:14,md:16,lg:20};function re({icon:e,size:t="md",color:n="currentColor",className:s,...r}){const o=typeof t=="number"?t:Uf[t];return c.jsx(e,{size:o,color:n,className:s,"aria-hidden":r["aria-hidden"],"aria-label":r["aria-label"]})}const Hf="_dot_ve4v6_3",Vf="_spinner_ve4v6_16",Kf="_pulse_ve4v6_35",Sn={dot:Hf,spinner:Vf,pulse:Kf},Gf={accent:"var(--pi-color-accent)",statusSuccess:"var(--pi-color-statusSuccess)",statusDanger:"var(--pi-color-statusDanger)",statusWarning:"var(--pi-color-statusWarning)",foregroundMuted:"var(--pi-color-foregroundMuted)"};function pn({className:e,pulse:t,"aria-label":n,...s}){const r=jf(s);if(!r)return null;const o=s.status==="running"&&!s.requiresAttention,i=o?"var(--pi-color-accentBright, #a2b4d7)":Gf[r]??"currentColor";return c.jsx("span",{className:`${o?Sn.spinner:Sn.dot}${t&&!o?` ${Sn.pulse}`:""}${e?` ${e}`:""}`,style:o?{borderTopColor:i,borderRightColor:i}:{width:`var(--status-dot-size, ${Ps}px)`,height:`var(--status-dot-size, ${Ps}px)`,backgroundColor:i},role:n?"img":"presentation","aria-label":n})}const Yf="_avatar_1m9k9_4",Xf="_avatarImg_1m9k9_14",Jf="_avatarFallback_1m9k9_20",kn={avatar:Yf,avatarImg:Xf,avatarFallback:Jf};function Zf({projectKey:e,src:t,size:n=32,className:s}){const r=If(e),o=xf(e),i=Math.round(n*.4);return c.jsx("span",{className:`${kn.avatar}${s?` ${s}`:""}`,style:{width:n,height:n,backgroundColor:t?void 0:o},"aria-label":e,role:"img",children:t?c.jsx("img",{src:t,alt:e,className:kn.avatarImg}):c.jsx("span",{className:kn.avatarFallback,style:{fontSize:i},"aria-hidden":!0,children:r})})}const Qf="_spinner_1ibj3_3",ep={spinner:Qf},tp={xs:12,sm:16,md:20,lg:24},np={xs:1,sm:2,md:2,lg:3};function uo({size:e="md",color:t="currentColor",className:n,"aria-label":s="Loading"}){const r=typeof e=="number"?e:tp[e],o=typeof e=="number"?2:np[e];return c.jsx("span",{className:`${ep.spinner}${n?` ${n}`:""}`,role:"status","aria-label":s,style:{width:r,height:r,borderWidth:o,color:t}})}const sp="_panel_1de7t_3",rp={panel:sp};function fo({className:e,...t}){return c.jsx("div",{className:U(rp.panel,e),...t})}const op="_emptyState_kp50e_3",ip={emptyState:op};function $e({className:e,...t}){return c.jsx("div",{className:U(ip.emptyState,e),...t})}const ap="_input_756jo_3",cp="_textarea_756jo_32",Ln={input:ap,textarea:cp},nn=w.forwardRef(function({className:t,...n},s){return c.jsx("input",{ref:s,className:U(Ln.input,t),...n})}),lp=w.forwardRef(function({className:t,...n},s){return c.jsx("textarea",{ref:s,className:U(Ln.input,Ln.textarea,t),...n})}),up="_overlay_1k4ng_1",dp="_contentWrapper_1k4ng_7",fp="_dialog_1k4ng_16",pp="_header_1k4ng_28",hp="_title_1k4ng_36",gp="_body_1k4ng_43",mp="_footer_1k4ng_49",_p="_bare_1k4ng_58",yp="_bareBody_1k4ng_64",wp="_bareCloseBtn_1k4ng_68",vp="_visuallyHidden_1k4ng_73",ve={overlay:up,contentWrapper:dp,dialog:fp,header:pp,title:hp,body:gp,footer:mp,bare:_p,bareBody:yp,bareCloseBtn:wp,visuallyHidden:vp},po=qn;function On({open:e,onOpenChange:t,title:n,children:s,footer:r,width:o,className:i,bare:a=!1,onInteractOutside:u,onEscapeKeyDown:d,onCloseAutoFocus:g,onOpenAutoFocus:f}){return c.jsx(aa,{open:e,onOpenChange:t,children:c.jsxs(ca,{children:[c.jsx(la,{className:ve.overlay}),c.jsx("div",{className:ve.contentWrapper,children:c.jsxs(ua,{className:U(ve.dialog,a&&ve.bare,i),style:o!==void 0?{width:o}:void 0,onInteractOutside:u,onEscapeKeyDown:d,onCloseAutoFocus:g,onOpenAutoFocus:f,children:[a?c.jsx(bs,{className:ve.visuallyHidden,children:n}):c.jsxs("div",{className:ve.header,children:[c.jsx(bs,{className:ve.title,children:n}),c.jsx(qn,{asChild:!0,children:c.jsx(je,{size:"sm","aria-label":"Close",children:c.jsx(St,{size:16})})})]}),c.jsx("div",{className:U(ve.body,a&&ve.bareBody),children:s}),a&&c.jsx(qn,{asChild:!0,children:c.jsx(je,{size:"sm","aria-label":"Close",className:ve.bareCloseBtn,style:{background:"var(--pi-color-surface1)",border:"1px solid var(--pi-color-border)",borderRadius:"50%"},children:c.jsx(St,{size:16})})}),r&&c.jsx("div",{className:ve.footer,children:r})]})})]})})}const bp="_handle_1j18v_1",Sp={handle:bp};function Ms({side:e,onResize:t,className:n}){const s=w.useRef(0),r=w.useRef(null),o=w.useCallback(u=>{const d=u.clientX-s.current;s.current=u.clientX,t(e==="left"?d:-d)},[t,e]),i=w.useCallback(u=>{window.removeEventListener("pointermove",o),window.removeEventListener("pointerup",i),window.removeEventListener("pointercancel",i),document.body.style.cursor="",document.body.style.userSelect="";const d=r.current;d!=null&&d.hasPointerCapture(u.pointerId)&&d.releasePointerCapture(u.pointerId)},[o]);function a(u){u.preventDefault(),s.current=u.clientX,u.currentTarget.setPointerCapture(u.pointerId),document.body.style.cursor="col-resize",document.body.style.userSelect="none",window.addEventListener("pointermove",o),window.addEventListener("pointerup",i),window.addEventListener("pointercancel",i)}return c.jsx("div",{ref:r,className:U(Sp.handle,n),onPointerDown:a,role:"separator","aria-orientation":"vertical"})}const kp="_trigger_u4hed_3",xp="_content_u4hed_15",Ip="_item_u4hed_25",Tp="_danger_u4hed_44",Ep="_groupLabel_u4hed_53",Cp="_sep_u4hed_66",tt={trigger:kp,content:xp,item:Ip,danger:Tp,groupLabel:Ep,sep:Cp},hn=w.forwardRef(function({x:t,y:n},s){return c.jsx("button",{ref:s,type:"button",className:tt.trigger,style:{left:t,top:n},"aria-hidden":!0,tabIndex:-1})});function Pt({className:e,minWidth:t,style:n,sideOffset:s=2,...r}){const o=t===void 0?n:{minWidth:t,...n};return c.jsx(da,{children:c.jsx(fa,{className:U(tt.content,e),align:"start",sideOffset:s,style:o,...r})})}function yS({label:e,className:t,children:n,...s}){const r=w.useId();return c.jsxs(ga,{className:t,"aria-labelledby":e===void 0?void 0:r,...s,children:[e!==void 0&&c.jsx(ma,{id:r,className:tt.groupLabel,children:e}),n]})}function G({className:e,danger:t,...n}){return c.jsx(pa,{className:U(tt.item,t&&tt.danger,e),...n})}function ze(e){return c.jsx(ha,{className:tt.sep,...e})}const Ap="_content_1u220_3",Rp={content:Ap},Ns={Root:_a,Trigger:ya};function jp({className:e,width:t,style:n,side:s="top",align:r="start",sideOffset:o=6,collisionPadding:i=8,...a}){return c.jsx(wa,{children:c.jsx(va,{className:U(Rp.content,e),side:s,align:r,sideOffset:o,collisionPadding:i,style:t===void 0?n:{width:t,...n},...a})})}const sn=ae()(()=>({message:"",politeness:"polite"})),Pp=4e3;let _t=null;function ho(){_t!==null&&(clearTimeout(_t),_t=null)}function gn(e,t="polite"){ho(),sn.setState({message:e,politeness:t})}function ss(){ho(),_t=setTimeout(()=>{_t=null,sn.setState({message:""})},Pp)}const qp="_visuallyHidden_rig62_2",Ds={visuallyHidden:qp};function Mp(){const e=sn(n=>n.message),t=sn(n=>n.politeness);return c.jsxs(c.Fragment,{children:[c.jsx("span",{className:Ds.visuallyHidden,role:"status","aria-live":"polite",children:t==="polite"?e:""}),c.jsx("span",{className:Ds.visuallyHidden,role:"alert",children:t==="assertive"?e:""})]})}const rn=3;let Np=0;const yt=new Map;function $s(e){const t=yt.get(e);t!==void 0&&(clearTimeout(t),yt.delete(e))}const Ee=ae((e,t)=>{function n(s){const r=t().toasts.findIndex(a=>a.id===s);if(r===-1||r>=rn||yt.has(s))return;const o=t().toasts[r];if(o.durationMs===null||o.paused)return;const i={...o,shownAt:Date.now()};e(a=>({toasts:a.toasts.map(u=>u.id===s?i:u)})),yt.set(s,setTimeout(()=>t().dismiss(s),i.durationMs))}return{toasts:[],show(s,r={}){const o=`toast-${++Np}`;return e(i=>({toasts:[...i.toasts,Ef(o,s,r)]})),n(o),o},copied(s){const{content:r,opts:o}=Cf(s);return t().show(r,o)},error(s){const{content:r,opts:o}=Af(s);return t().show(r,o)},dismiss(s){$s(s),e(r=>({toasts:r.toasts.filter(o=>o.id!==s)}));for(const r of t().toasts.slice(0,rn))n(r.id)},dismissTop(){const s=t().toasts[0];s&&t().dismiss(s.id)},pause(s){const r=t().toasts.find(i=>i.id===s);if(!r||r.durationMs===null||r.paused)return;const o=Rf(r,null,Date.now())??r.durationMs;$s(s),e(i=>({toasts:i.toasts.map(a=>a.id===s?{...a,paused:!0,pausedRemaining:o}:a)}))},resume(s){const r=t().toasts.find(u=>u.id===s);if(!r||!r.paused)return;const o=r.pausedRemaining??r.durationMs??0,i=Date.now()-((r.durationMs??0)-o),a={...r,paused:!1,pausedRemaining:void 0,shownAt:i};e(u=>({toasts:u.toasts.map(d=>d.id===s?a:d)})),yt.set(s,setTimeout(()=>t().dismiss(s),o))}}}),Dp="_viewport_rssrd_1",$p="_toast_rssrd_13",Lp="_exiting_rssrd_43",Op="_content_rssrd_48",Bp="_close_rssrd_53",Ke={viewport:Dp,toast:$p,exiting:Lp,content:Op,close:Bp},Fp=180;function zp(){return typeof window<"u"&&window.matchMedia("(prefers-reduced-motion: reduce)").matches}function Wp(){const e=Ee(f=>f.toasts),t=e.slice(0,rn),n=Ee(f=>f.dismiss),s=Ee(f=>f.pause),r=Ee(f=>f.resume),o=w.useRef(new Map);for(const f of t)o.current.set(f.id,f);const i=w.useRef([]),[a,u]=w.useState([]),d=w.useRef(new Set);w.useEffect(()=>{const f=d.current;return()=>{for(const m of f)window.clearTimeout(m)}},[]),w.useEffect(()=>{const f=e.slice(0,rn).map(y=>y.id),m=new Set(f),h=i.current.filter(y=>!m.has(y));if(i.current=f,h.length===0)return;if(zp()){for(const y of h)o.current.delete(y);return}u(y=>[...y,...h]);const b=window.setTimeout(()=>{d.current.delete(b),u(y=>y.filter(I=>!h.includes(I)));for(const y of h)o.current.delete(y)},Fp);d.current.add(b)},[e]);const g=[...t,...a.filter(f=>!t.some(m=>m.id===f)).map(f=>o.current.get(f)).filter(f=>f!==void 0)];return g.length===0?null:ji.createPortal(c.jsx("div",{className:Ke.viewport,role:"status","aria-live":"polite",children:g.map(f=>{const{token:m}=Tf(f.variant),h=a.includes(f.id)&&!t.some(b=>b.id===f.id);return c.jsxs("div",{className:h?`${Ke.toast} ${Ke.exiting}`:Ke.toast,style:m?{"--toast-rail":`var(--pi-color-${m})`}:void 0,onMouseEnter:()=>s(f.id),onMouseLeave:()=>r(f.id),children:[c.jsx("span",{className:Ke.content,children:f.content}),c.jsx("button",{type:"button",className:Ke.close,"aria-label":"Dismiss",onClick:()=>n(f.id),children:c.jsx(re,{icon:St,size:"xs","aria-hidden":!0})})]},f.id)})}),document.body)}const go=w.createContext(null);function Up(e){const t=w.useContext(go);if(!t)throw new Error(`${e} must be rendered inside <WorkbenchProvider> (or <Workbench>, which includes it).`);return t}async function Hp(e){var r;if((r=navigator.clipboard)!=null&&r.writeText)try{await navigator.clipboard.writeText(e);return}catch{}const t=document.activeElement,n=(t instanceof HTMLElement?t.closest('[role="dialog"], [role="menu"]'):null)??document.body,s=document.createElement("textarea");s.value=e,s.setAttribute("aria-hidden","true"),s.style.position="fixed",s.style.opacity="0",n.appendChild(s),s.focus(),s.select();try{const o=document.activeElement===s&&s.selectionStart===0&&s.selectionEnd===s.value.length;if(!document.execCommand("copy")||!o)throw new Error('execCommand("copy") did not copy the requested text')}finally{s.remove(),t instanceof HTMLElement&&t.focus()}}const Vp=`
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/ModelProvidersPanel-DaSeQAGS.js","assets/vendor-react-Dka9ZH0B.js","assets/vendor-query-CDNPrdQ8.js","assets/use-provider-auth-list-B3AMWkI0.js","assets/provider-auth-store-CpmUGwuu.js","assets/vendor-z183l2lP.js","assets/vendor-CEK31ho9.css","assets/StatusBadge-eoBBn7zF.js","assets/StatusBadge-DmrnYEhp.css","assets/vendor-icons-CSCeICuX.js","assets/vendor-overlays-DjMT65Ip.js","assets/vendor-dnd-vJGfGIIi.js","assets/vendor-pdfjs-BSchhGel.js","assets/ModelProvidersPanel-BP1zIT6I.css","assets/SkillsPanel-i5O4j8TT.js","assets/Switch-DvBJf8Rd.js","assets/Switch-Dz-IIw4-.css","assets/SkillsPanel-Cs4iUzys.css","assets/ViewersPanel-TDwABaMu.js","assets/ViewersPanel-BvWpXbxZ.css","assets/SettingsDialog-SEYpCTXv.js","assets/SettingsDialog-Bc09UjU4.css","assets/ChatPanel-Bw7Hb7zc.js","assets/markdown-CPP5yk_k.js","assets/vendor-highlight-DaCUEPaW.js","assets/vendor-markdown-Bo-Xpsuy.js","assets/href-resolution-pg8AZoGq.js","assets/markdown-C15eCO0s.css","assets/DiffView-Bp1YwIcs.js","assets/DiffView-CUctPSBA.css","assets/ChatPanel-eXvPOkx2.css","assets/FilePanel-nx2ZNCzw.js","assets/use-file-watch-D3DZUhpX.js","assets/FilePanel-bWuYWz8t.css","assets/TerminalPanel-teco8hQm.js","assets/vendor-terminal-BhzX2_ts.js","assets/vendor-terminal-DYP7pi_n.css","assets/TerminalPanel-DpxpMm0w.css","assets/MoleculeViewerPanel-DCSVt-5q.js","assets/vendor-molviewer-7FbONJs2.js","assets/vendor-molviewer-Bychyqid.css","assets/use-file-download-Db9Jkq8L.js","assets/MoleculeViewerPanel-CHZ8q0jD.css","assets/TextViewer-Dc4_Pm2d.js","assets/CodeView-BWjIMXx_.js","assets/CodeView-Bbd7h9aM.css","assets/SaveFileButton-D4L2yJ4C.js","assets/TextViewer-C7Vnqw_v.css","assets/MarkdownFileViewer-C9TjyaOy.js","assets/MarkdownFileViewer-Cnl1kopk.css","assets/ImageViewer-5NK0vbNf.js","assets/ImageViewer-Bh1rkSDM.css","assets/VideoViewer-DKa99m9b.js","assets/VideoViewer-CCmuaDLl.css","assets/BinaryFallbackViewer-Ct7gB8Zj.js","assets/BinaryFallbackViewer-ClYyn4IS.css","assets/HtmlViewer-CNhiAwz_.js","assets/HtmlViewer-C9NJC5qE.css","assets/PdfViewer-D3wY27_O.js","assets/PdfViewer-DoOGVn5M.css"])))=>i.map(i=>d[i]);
2
+ var Ai=Object.defineProperty;var Ri=(e,t,n)=>t in e?Ai(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var B=(e,t,n)=>Ri(e,typeof t!="symbol"?t+"":t,n);import{r as w,j as c,b as ji,c as Pi}from"./vendor-react-Dka9ZH0B.js";import{aj as l,ak as Et,al as P,am as de,an as p,ao as re,ap as T,aq as v,ar as Z,as as D,at as un,au as et,N as U,y as ae,_ as ue}from"./vendor-z183l2lP.js";import{Q as qi,c as Mi,u as Ni,d as Di,a as st,b as $i}from"./vendor-query-CDNPrdQ8.js";import{u as Li,X as St,K as Oi,v as Bi,w as dn,x as Fi,y as zi,z as Wi,H as Ui,I as Hi,J as Yn,P as Ro,r as Vi,k as jo,O as Ki,c as Xn,b as Jn,n as Zt,Q as Po,R as qo,V as fn,W as Mo,Y as Gi,_ as Yi,$ as Xi,a0 as Ve,e as qn,a1 as Qt,d as Lt,E as Ji,a2 as Zi,D as Qi,a3 as ea,a4 as ta,a5 as na,a6 as sa,a7 as oa,a8 as ra,s as ia}from"./vendor-icons-CSCeICuX.js";import{D as Mn,a as aa,b as ca,c as la,d as ua,e as Ss,P as da,C as fa,I as pa,S as ha,G as ga,L as ma,f as _a,g as ya,h as wa,i as va,R as Ct,T as At}from"./vendor-overlays-DjMT65Ip.js";import{u as ba,a as Sa,p as ka,P as xa,b as No,S as Ia,h as Ta,c as Ea,C as Ca,D as Aa,d as Ra}from"./vendor-dnd-vJGfGIIi.js";import{W as ja}from"./vendor-pdfjs-BSchhGel.js";(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const o of document.querySelectorAll('link[rel="modulepreload"]'))s(o);new MutationObserver(o=>{for(const r of o)if(r.type==="childList")for(const i of r.addedNodes)i.tagName==="LINK"&&i.rel==="modulepreload"&&s(i)}).observe(document,{childList:!0,subtree:!0});function n(o){const r={};return o.integrity&&(r.integrity=o.integrity),o.referrerPolicy&&(r.referrerPolicy=o.referrerPolicy),o.crossOrigin==="use-credentials"?r.credentials="include":o.crossOrigin==="anonymous"?r.credentials="omit":r.credentials="same-origin",r}function s(o){if(o.ep)return;o.ep=!0;const r=n(o);fetch(o.href,r)}})();const Do=l().datetime({offset:!0});l().uuid();l().regex(/^[A-Za-z0-9_-]+$/,"expected base64url");const De=Et([P(),Do]),Pa=de(["mobile","browser","cli","mcp"]),qa=32,Ma=p({type:v("hello"),clientId:l(),clientType:Pa,protocolVersion:P(),platform:l().max(qa).optional().catch(void 0),agentStreams:de(["all","none"]).optional().catch(void 0),appVersion:l().optional(),capabilities:re(l(),T()).optional()}),Na=p({status:v("server_info"),serverId:l(),hostname:l().optional(),version:l().optional(),homeDir:l().optional(),capabilities:re(l(),Z()),features:re(l(),Z())}),Da=p({type:v("status"),payload:Na}),$a=p({type:v("ping"),requestId:l(),clientSentAt:De.optional()}),La=p({type:v("pong"),requestId:l(),clientSentAt:De.optional(),serverReceivedAt:De,serverSentAt:De}),$o=de(["initializing","idle","running","error","closed"]),pn=p({mimeType:l().optional(),data:l().optional()}).passthrough(),Oa=p({prs:D(Z()).optional(),issues:D(Z()).optional()}).passthrough(),Ba=p({provider:l(),cwd:l(),modeId:l().optional(),model:l().optional(),modelProvider:l().optional(),thinkingOptionId:l().optional(),featureValues:re(l(),Z()).optional(),title:l().nullable().optional(),approvalPolicy:l().optional(),sandboxMode:l().optional(),networkAccess:T().optional(),webSearch:T().optional(),extra:p({pi:Z().optional()}).passthrough().optional(),systemPrompt:l().optional(),mcpServers:re(l(),Z()).optional()}),Fa=p({type:v("create_agent_request"),requestId:l(),config:Ba,env:re(l(),l()).optional(),workspaceId:l().optional(),worktreeName:l().optional(),initialPrompt:l().optional(),clientMessageId:l().optional(),outputSchema:re(l(),Z()).optional(),images:D(pn).optional(),attachments:Oa.optional(),git:Z().optional(),worktree:Z().optional(),autoArchive:T().optional(),labels:re(l(),l()).default({})}),za=p({type:v("create_agent_response"),requestId:l(),payload:p({agentId:l()}).passthrough()}),Wa=p({type:v("agent_update"),agentId:l(),status:$o.optional(),title:l().nullable().optional(),labels:re(l(),l()).optional()}),Ua=p({type:v("agent_status"),agentId:l(),status:$o}),Ha=p({type:v("agent_list"),agents:D(p({id:l()}).passthrough())}),Va=p({type:v("agent_deleted"),agentId:l()}),Ka=p({type:v("agent_archived"),agentId:l(),archivedAt:Do.optional()}),Lo=un("kind",[p({kind:v("shell"),command:l().optional(),output:l().optional()}),p({kind:v("read"),path:l().optional(),output:l().optional()}),p({kind:v("edit"),path:l().optional(),diff:l().optional(),output:l().optional()}),p({kind:v("write"),path:l().optional(),output:l().optional()}),p({kind:v("search"),query:l().optional(),output:l().optional()}),p({kind:v("fetch"),url:l().optional(),output:l().optional()}),p({kind:v("task"),description:l().optional(),output:l().optional()})]),Ga=un("kind",[p({kind:v("user_message"),messageId:l().optional(),text:l().optional(),images:D(pn).optional()}),p({kind:v("assistant_message"),messageId:l().optional(),text:l().optional(),final:T().optional()}),p({kind:v("reasoning"),text:l().optional(),final:T().optional()}),p({kind:v("tool_call"),callId:l().optional(),tool:Lo,status:l().optional(),partial:T().optional()}),p({kind:v("turn_started"),turnId:l().optional()}),p({kind:v("turn_completed"),turnId:l().optional()}),p({kind:v("turn_failed"),turnId:l().optional(),error:l().optional()}),p({kind:v("turn_canceled"),turnId:l().optional()}),p({kind:v("error"),message:l().optional()}),p({kind:v("queue_update"),steering:D(l()).optional(),followUp:D(l()).optional()}),p({kind:v("compaction"),compactionId:l(),phase:de(["started","completed","failed","canceled"]),reason:de(["manual","threshold","overflow"]).optional(),tokensBefore:P().optional(),estimatedTokensAfter:P().optional(),summary:l().optional(),error:l().optional(),willRetry:T().optional()})]),Ya=p({type:v("agent_stream"),agentId:l(),seq:P().optional(),timestamp:De.optional(),event:Ga}),Xa=de(["before","after"]),Ja=p({start:P(),end:P()}),Za=p({type:v("fetch_agent_timeline_request"),requestId:l(),agentId:l(),cursor:l().nullable().optional(),direction:Xa,limit:P().optional()}),Qa=p({type:v("fetch_agent_timeline_response"),requestId:l(),agentId:l().optional(),items:D(Z()),seqStart:P(),seqEnd:P(),sourceSeqRanges:D(Ja),collapsed:T(),hasNewer:T(),startCursor:l().nullable().optional(),endCursor:l().nullable().optional()}),ec=p({type:v("agent_permission_request"),requestId:l(),agentId:l(),toolName:l().optional(),tool:Lo.optional(),action:Z().optional(),responses:D(l()).optional()}),tc=p({type:v("agent_permission_resolved"),requestId:l(),agentId:l(),decision:l().optional()}),nc=p({type:v("agent.permission.respond.request"),requestId:l(),permissionRequestId:l(),response:Z()}),sc=p({type:v("agent.permission.respond.response"),requestId:l(),payload:p({resolved:T()}).passthrough()}),oc=p({type:v("respond_to_permission"),requestId:l(),permissionRequestId:l(),response:Z()}),Oo=de(["conversation","files","both"]),rc=p({type:v("agent.rewind.request"),requestId:l(),agentId:l(),messageId:l(),mode:Oo}).passthrough(),ic=p({type:v("agent.rewind.response"),requestId:l(),payload:p({agentId:l(),messageId:l(),mode:Oo,truncatedAt:l().optional()}).passthrough()}).passthrough(),ac=p({input:P().optional(),output:P().optional(),cacheRead:P().optional(),cacheWrite:P().optional(),total:P().optional()}).passthrough(),cc=p({tokens:P().nullable().optional(),contextWindow:P().optional(),percent:P().nullable().optional()}).passthrough(),lc=p({type:v("agent_session_stats_request"),requestId:l(),agentId:l()}).passthrough(),uc=p({type:v("agent_session_stats_response"),requestId:l(),payload:p({sessionId:l().optional(),sessionFile:l().optional(),userMessages:P().optional(),assistantMessages:P().optional(),toolCalls:P().optional(),toolResults:P().optional(),totalMessages:P().optional(),tokens:ac.optional(),cost:P().optional(),contextUsage:cc.optional(),model:l().optional()}).passthrough()}).passthrough(),dc=p({type:v("agent_compact_request"),requestId:l(),agentId:l(),customInstructions:l().optional()}).passthrough(),fc=p({type:v("agent_compact_response"),requestId:l(),payload:p({summary:l().optional(),firstKeptEntryId:l().optional(),tokensBefore:P().optional(),estimatedTokensAfter:P().optional(),details:Z().optional()}).passthrough()}).passthrough(),pc=p({type:v("agent_new_session_request"),requestId:l(),agentId:l()}).passthrough(),hc=p({type:v("agent_new_session_response"),requestId:l(),payload:p({cancelled:T()}).passthrough()}).passthrough(),gc=p({type:v("agent_switch_session_request"),requestId:l(),agentId:l(),sessionPath:l()}).passthrough(),mc=p({type:v("agent_switch_session_response"),requestId:l(),payload:p({cancelled:T()}).passthrough()}).passthrough(),_c=p({type:v("agent_fork_request"),requestId:l(),agentId:l(),entryId:l()}).passthrough(),yc=p({type:v("agent_fork_response"),requestId:l(),payload:p({text:l(),cancelled:T()}).passthrough()}).passthrough(),wc=p({type:v("agent_fork_messages_request"),requestId:l(),agentId:l()}).passthrough(),vc=p({type:v("agent_fork_messages_response"),requestId:l(),payload:p({messages:D(p({entryId:l(),text:l()}).passthrough())}).passthrough()}).passthrough(),bc=p({type:v("agent_clone_request"),requestId:l(),agentId:l()}).passthrough(),Sc=p({type:v("agent_clone_response"),requestId:l(),payload:p({cancelled:T()}).passthrough()}).passthrough(),kc=p({type:v("agent_set_session_name_request"),requestId:l(),agentId:l(),name:l()}).passthrough(),xc=p({type:v("agent_set_session_name_response"),requestId:l(),payload:p({}).passthrough().optional()}).passthrough(),Ic=p({type:v("agent_export_html_request"),requestId:l(),agentId:l(),outputPath:l().optional()}).passthrough(),Tc=p({type:v("agent_export_html_response"),requestId:l(),payload:p({path:l()}).passthrough()}).passthrough(),Ec=p({type:v("agent_set_model_request"),requestId:l(),agentId:l(),provider:l(),modelId:l()}).passthrough(),Cc=p({type:v("agent_set_model_response"),requestId:l(),payload:p({}).passthrough()}).passthrough(),Ac=p({type:v("agent_cycle_model_request"),requestId:l(),agentId:l()}).passthrough(),Rc=p({type:v("agent_cycle_model_response"),requestId:l(),payload:p({model:Z().nullable().optional(),thinkingLevel:l().optional(),isScoped:T().optional()}).passthrough()}).passthrough(),jc=p({type:v("agent_set_thinking_request"),requestId:l(),agentId:l(),level:l()}).passthrough(),Pc=p({type:v("agent_set_thinking_response"),requestId:l(),payload:p({agentId:l(),level:l()}).passthrough()}).passthrough(),qc=p({type:v("agent_thinking_levels_request"),requestId:l(),agentId:l()}).passthrough(),Mc=p({type:v("agent_thinking_levels_response"),requestId:l(),payload:p({agentId:l(),levels:D(l())}).passthrough()}).passthrough(),Nc=p({type:v("agent_last_assistant_text_request"),requestId:l(),agentId:l()}).passthrough(),Dc=p({type:v("agent_last_assistant_text_response"),requestId:l(),payload:p({text:l().nullable()}).passthrough()}).passthrough(),$c=p({type:v("steer_agent_request"),requestId:l(),agentId:l(),message:l(),images:D(pn).optional(),clientMessageId:l().optional()}).passthrough(),Lc=p({type:v("steer_agent_response"),requestId:l(),agentId:l(),ok:T()}).passthrough(),Oc=p({type:v("follow_up_agent_request"),requestId:l(),agentId:l(),message:l(),images:D(pn).optional(),clientMessageId:l().optional()}).passthrough(),Bc=p({type:v("follow_up_agent_response"),requestId:l(),agentId:l(),ok:T()}).passthrough(),Fc=p({name:l(),id:l().optional(),description:l().optional(),source:de(["extension","prompt","skill"]).optional(),scope:de(["user","project","temporary"]).optional(),path:l().optional()}).passthrough(),zc=p({type:v("agent_list_commands_request"),requestId:l(),agentId:l()}).passthrough(),Wc=p({type:v("agent_list_commands_response"),requestId:l(),payload:p({commands:D(Fc)}).passthrough()}).passthrough(),Uc=p({source:l(),identity:l(),addedIn:l(),deprecated:T().optional(),status:l(),lastError:p({at:l(),attempts:P(),reason:l(),message:l()}).passthrough().optional()}).passthrough(),Bo=p({id:l(),title:l(),description:l(),packages:D(Uc)}).passthrough(),Hc=p({identity:l(),source:l(),pack:l(),reason:l(),message:l()}).passthrough(),Vc=p({at:l(),outcome:l(),installed:D(l()),failures:D(Hc)}).passthrough(),Fo=p({at:l(),outcome:l()}).passthrough(),Kc=p({type:v("extension_packs_list_request"),requestId:l()}).passthrough(),Gc=p({type:v("extension_packs_list_response"),requestId:l(),autoSync:T(),selected:D(l()),packs:D(Bo),lastSync:Fo.optional()}).passthrough(),Yc=p({type:v("extension_packs_set_request"),requestId:l(),packs:D(l()).optional()}).passthrough(),Xc=p({type:v("extension_packs_set_response"),requestId:l(),autoSync:T(),selected:D(l()),packs:D(Bo),lastSync:Fo.optional(),ok:T(),error:l().optional(),report:Vc.optional()}).passthrough(),Nn=de(["api_key","oauth"]),Jc=p({id:l(),name:l(),authTypes:D(Nn),oauthLoginLabel:l().optional(),oauthIsSubscription:T().optional(),configured:Et([T(),v("unknown")]),configuredType:Nn.optional(),configuredSource:l().optional()}).passthrough(),Zc=p({type:v("provider_auth_list_request"),requestId:l()}).passthrough(),Qc=p({type:v("provider_auth_list_response"),requestId:l(),payload:p({ok:T(),providers:D(Jc).default([]),error:l().optional()}).passthrough()}).passthrough(),el=p({type:v("provider_auth_login_request"),requestId:l(),provider:l(),authType:Nn}).passthrough(),tl=p({type:v("provider_auth_login_response"),requestId:l(),payload:p({ok:T(),flowId:l().optional(),error:l().optional()}).passthrough()}).passthrough(),nl=p({type:v("provider_auth_respond_request"),requestId:l(),flowId:l(),promptId:l(),value:l()}).passthrough(),sl=p({type:v("provider_auth_respond_response"),requestId:l(),payload:p({ok:T(),error:l().optional()}).passthrough()}).passthrough(),ol=p({type:v("provider_auth_cancel_request"),requestId:l(),flowId:l()}).passthrough(),rl=p({type:v("provider_auth_cancel_response"),requestId:l(),payload:p({ok:T()}).passthrough()}).passthrough(),il=p({type:v("provider_auth_logout_request"),requestId:l(),provider:l()}).passthrough(),al=p({type:v("provider_auth_logout_response"),requestId:l(),payload:p({ok:T(),stillConfigured:T().optional(),error:l().optional()}).passthrough()}).passthrough(),cl=p({enabled:T(),config:re(l(),Z()).optional()}).passthrough(),Zn=p({version:v(1).default(1),viewers:re(l(),cl).default({})}).passthrough(),ll=p({type:v("viewer_settings_get_request"),requestId:l()}).passthrough(),ul=p({type:v("viewer_settings_get_response"),requestId:l(),payload:p({settings:Zn}).passthrough()}).passthrough(),dl=p({enabled:T().optional(),config:re(l(),Z()).optional()}).passthrough(),fl=p({type:v("viewer_settings_set_request"),requestId:l(),patch:re(l(),dl)}).passthrough(),pl=p({type:v("viewer_settings_set_response"),requestId:l(),payload:p({settings:Zn}).passthrough()}).passthrough(),hl=p({type:v("viewer_settings_update"),settings:Zn}).passthrough(),gl=p({clientId:l(),clientType:l(),appVersion:l().optional(),platform:l().optional(),agentStreams:l().optional(),connectedAt:P(),remoteAddress:l().optional(),transport:de(["direct","relay"])}).passthrough(),Qn=p({version:l(),startedAt:P(),uptimeMs:P(),pid:P(),nodeVersion:l(),memory:p({rss:P(),heapUsed:P(),heapTotal:P()}).passthrough(),cpuPercent:P(),eventLoopLagMs:P(),agentsByStatus:re(l(),P()),clients:D(gl)}).passthrough(),ml=p({type:v("daemon_status_request"),requestId:l()}).passthrough(),_l=p({type:v("daemon_status_response"),requestId:l(),payload:Qn}).passthrough(),yl=p({type:v("daemon_status_subscribe_request"),requestId:l()}).passthrough(),wl=p({type:v("daemon_status_subscribe_response"),requestId:l(),payload:Et([p({ok:v(!0),intervalMs:P(),status:Qn}).passthrough(),p({ok:v(!1),error:l()}).passthrough()])}).passthrough(),vl=p({type:v("daemon_status_unsubscribe_request"),requestId:l()}).passthrough(),bl=p({type:v("daemon_status_unsubscribe_response"),requestId:l(),payload:p({ok:T()}).passthrough()}).passthrough(),Sl=p({type:v("daemon_status_update"),payload:Qn}).passthrough(),zo=p({time:P(),level:l(),msg:l(),fields:re(l(),Z()).optional()}).passthrough(),kl=p({type:v("daemon_logs_subscribe_request"),requestId:l(),minLevel:l(),tail:P().optional()}).passthrough(),xl=p({type:v("daemon_logs_subscribe_response"),requestId:l(),payload:Et([p({ok:v(!0),minLevel:l(),effectiveLevel:l(),lines:D(zo),dropped:P()}).passthrough(),p({ok:v(!1),error:l()}).passthrough()])}).passthrough(),Il=p({type:v("daemon_logs_unsubscribe_request"),requestId:l()}).passthrough(),Tl=p({type:v("daemon_logs_unsubscribe_response"),requestId:l(),payload:p({ok:T()}).passthrough()}).passthrough(),El=p({type:v("daemon_log_lines"),lines:D(zo),dropped:P()}).passthrough(),Rt=p({name:l(),description:l().optional(),path:l(),enabled:T(),origin:l(),originLabel:l(),packageSource:l().optional(),shadowedBy:l().optional(),symlinkTarget:l().optional(),provenance:p({source:l(),sourceUrl:l().optional(),installedAt:l().optional()}).passthrough().optional(),disableModelInvocation:T().optional(),warnings:D(l()).optional(),removable:T()}).passthrough(),jt=p({source:l(),kind:de(["npm","git","local"]),identity:l(),pinned:T(),curated:T(),filtered:T(),skillCount:P()}).passthrough(),Cl=p({type:v("skills_list_request"),requestId:l()}).passthrough(),Al=p({type:v("skills_list_response"),requestId:l(),ok:T(),error:l().optional(),message:l().optional(),skills:D(Rt),packages:D(jt)}).passthrough(),Rl=p({type:v("skills_set_enabled_request"),requestId:l(),path:l(),enabled:T()}).passthrough(),jl=p({type:v("skills_set_enabled_response"),requestId:l(),ok:T(),error:l().optional(),message:l().optional(),skills:D(Rt),packages:D(jt)}).passthrough(),Pl=p({type:v("skills_changed"),reason:l()}).passthrough(),Wo=p({type:v("skills_remove_request"),requestId:l(),path:l().optional(),packageSource:l().optional()}).passthrough();Wo.refine(e=>e.path!==void 0!=(e.packageSource!==void 0),{message:"exactly one of path or packageSource is required"});const ql=p({type:v("skills_remove_response"),requestId:l(),ok:T(),error:l().optional(),message:l().optional(),stderr:l().optional(),skills:D(Rt),packages:D(jt)}).passthrough(),Uo=p({target:l(),ok:T(),error:l().optional(),stderr:l().optional()}).passthrough(),Ml=p({type:v("skills_update_all_request"),requestId:l()}).passthrough(),Nl=p({type:v("skills_update_all_response"),requestId:l(),ok:T(),error:l().optional(),message:l().optional(),results:D(Uo),skills:D(Rt),packages:D(jt)}).passthrough(),Dl=p({name:l(),description:l().optional(),relPath:l(),warnings:D(l()).optional(),valid:T(),exists:T()}).passthrough(),$l=p({type:v("skills_preview_request"),requestId:l(),source:l()}).passthrough(),Ll=p({type:v("skills_preview_response"),requestId:l(),ok:T(),error:l().optional(),message:l().optional(),kind:l(),source:l(),skills:D(Dl)}).passthrough(),Ol=p({type:v("skills_install_request"),requestId:l(),source:l(),skills:D(l()).optional(),replace:T().optional()}).passthrough(),Bl=p({type:v("skills_install_response"),requestId:l(),ok:T(),error:l().optional(),message:l().optional(),results:D(Uo),skills:D(Rt),packages:D(jt)}).passthrough(),Fl=p({requestId:l(),agentId:l(),method:l(),expectsResponse:T(),payload:re(Z()),surfaceKey:l().optional(),timeoutMs:P().optional(),createdAt:De}).passthrough(),zl=p({agentId:l(),method:l(),surfaceKey:l(),payload:re(Z()),updatedAt:De}).passthrough(),Wl=p({type:v("agent_ui_request"),requestId:l(),agentId:l(),method:l(),expectsResponse:T(),payload:re(Z()),surfaceKey:l().optional(),removed:T().optional(),timeoutMs:P().optional(),createdAt:De}).passthrough(),Ul=p({type:v("agent_ui_resolved"),requestId:l(),agentId:l(),reason:l()}).passthrough(),Hl=p({value:l().optional(),confirmed:T().optional(),cancelled:T().optional()}).passthrough(),Vl=p({type:v("agent_ui_respond_request"),requestId:l(),uiRequestId:l(),response:Hl}).passthrough(),Kl=p({type:v("agent_ui_respond_response"),requestId:l(),payload:p({ok:T(),error:l().optional()}).passthrough()}).passthrough(),Gl=p({type:v("agent_ui_list_request"),requestId:l(),agentId:l().optional()}).passthrough(),Yl=p({type:v("agent_ui_list_response"),requestId:l(),payload:p({ok:T(),pending:D(Fl),surfaces:D(zl),error:l().optional()}).passthrough()}).passthrough(),Xl=de(["pending","in_progress","completed"]),pS=200,Jl=p({id:P().int(),subject:l(),status:Xl,activeForm:l().optional(),description:l().optional(),owner:l().optional(),blockedBy:D(P().int()).optional()}).passthrough(),Ho=p({agentId:l(),seq:P(),tasks:D(Jl),truncated:T().optional()}).passthrough(),Zl=p({type:v("agent_todos_list_request"),requestId:l(),agentId:l()}).passthrough(),Ql=p({type:v("agent_todos_list_response"),requestId:l(),snapshot:Ho.optional(),ok:T().optional(),error:l().optional()}).passthrough(),eu=p({type:v("agent_todos_update"),snapshot:Ho}).passthrough(),tu=p({type:v("file_upload_complete"),transferId:l(),stream:P().int().nonnegative(),ok:T(),bytesWritten:P().int().nonnegative(),error:l().optional()}).passthrough(),nu=p({type:v("rpc_error"),requestId:l(),code:l().optional(),message:l().optional(),error:l().optional()}),su=un("type",[Fa,za,Wa,Ua,Ha,Va,Ka,Ya,Za,Qa,ec,tc,nc,sc,oc,rc,ic,lc,uc,dc,fc,pc,hc,gc,mc,_c,yc,wc,vc,bc,Sc,kc,xc,Ic,Tc,Ec,Cc,Ac,Rc,jc,Pc,qc,Mc,Nc,Dc,$c,Lc,Oc,Bc,zc,Wc,Kc,Gc,Yc,Xc,Zc,Qc,el,tl,nl,sl,ol,rl,il,al,ll,ul,fl,pl,hl,ml,_l,yl,wl,vl,bl,Sl,kl,xl,Il,Tl,El,Cl,Al,Rl,jl,Pl,Wo,ql,Ml,Nl,$l,Ll,Ol,Bl,Wl,Ul,Vl,Kl,Gl,Yl,Zl,Ql,eu,tu,nu]),ou=p({type:l()}).passthrough(),ru=p({type:v("session"),message:Et([su,ou])});un("type",[Ma,Da,$a,La,ru]);const Ot={terminal_reflowable_snapshot:"terminal_reflowable_snapshot",inline_image_markdown:"inline_image_markdown",file_link_markdown:"file_link_markdown",mermaid_diagram_markdown:"mermaid_diagram_markdown"},Je={Output:1,Input:2,Resize:3,Snapshot:4,Restore:5},iu=Object.fromEntries(Object.entries(Je).map(([e,t])=>[t,e])),Vo=p({rows:P().int().nonnegative(),cols:P().int().nonnegative()});class dt extends Error{constructor(t){super(t),this.name="TerminalFrameError"}}const au=new TextEncoder,cu=new TextDecoder;function lu(e){if(!Number.isInteger(e)||e<0||e>255)throw new dt(`slot must be an integer 0–255, got ${e}`)}function it(e,t,n){const s=new Uint8Array(2+n.length);return s[0]=e,s[1]=t,s.set(n,2),s}function hS(e){switch(lu(e.slot),e.opcode){case"Output":return it(Je.Output,e.slot,e.data);case"Input":return it(Je.Input,e.slot,e.data);case"Snapshot":return it(Je.Snapshot,e.slot,e.data);case"Restore":return it(Je.Restore,e.slot,e.data);case"Resize":{const t=JSON.stringify(Vo.parse({rows:e.rows,cols:e.cols}));return it(Je.Resize,e.slot,au.encode(t))}}}function uu(e){if(e.length<2)throw new dt(`frame too short: ${e.length} bytes (need ≥ 2)`);const t=e[0],n=e[1],s=iu[t];if(!s)throw new dt(`unknown terminal opcode 0x${t.toString(16)}`);const o=e.subarray(2);if(s==="Resize"){let r;try{r=JSON.parse(cu.decode(o))}catch{throw new dt("resize payload is not valid JSON")}const i=Vo.safeParse(r);if(!i.success)throw new dt("resize payload is not { rows, cols }");return{opcode:"Resize",slot:n,rows:i.data.rows,cols:i.data.cols}}return{opcode:s,slot:n,data:o.slice()}}const Qe={Begin:16,Chunk:17,End:18,Error:19},du=Object.fromEntries(Object.entries(Qe).map(([e,t])=>[t,e])),Ko=p({transferId:l(),fileName:l().optional(),mimeType:l().optional(),totalBytes:P().int().nonnegative().optional(),mtimeMs:P().int().nonnegative().optional(),offset:P().int().nonnegative().optional(),length:P().int().nonnegative().optional()});class ft extends Error{constructor(t){super(t),this.name="FileTransferFrameError"}}const ks=new TextEncoder,xs=new TextDecoder;function fu(e){if(!Number.isInteger(e)||e<0||e>255)throw new ft(`stream must be an integer 0–255, got ${e}`)}function Bt(e,t,n){const s=new Uint8Array(2+n.length);return s[0]=e,s[1]=t,s.set(n,2),s}function Ft(e){switch(fu(e.stream),e.opcode){case"Begin":return Bt(Qe.Begin,e.stream,ks.encode(JSON.stringify(Ko.parse(e.meta))));case"Chunk":return Bt(Qe.Chunk,e.stream,e.data);case"End":return Bt(Qe.End,e.stream,new Uint8Array([e.ok?1:0]));case"Error":return Bt(Qe.Error,e.stream,ks.encode(e.message))}}function pu(e){if(e.length<2)throw new ft(`frame too short: ${e.length} bytes (need ≥ 2)`);const t=e[0],n=e[1],s=du[t];if(!s)throw new ft(`unknown file-transfer opcode 0x${t.toString(16)}`);const o=e.subarray(2);switch(s){case"Begin":{let r;try{r=JSON.parse(xs.decode(o))}catch{throw new ft("begin payload is not valid JSON")}const i=Ko.safeParse(r);if(!i.success)throw new ft("begin payload is not a valid transfer header");return{opcode:"Begin",stream:n,meta:i.data}}case"Chunk":return{opcode:"Chunk",stream:n,data:o.slice()};case"End":return{opcode:"End",stream:n,ok:(o[0]??1)!==0};case"Error":return{opcode:"Error",stream:n,message:xs.decode(o)}}}function hu(e){try{return pu(e)}catch{return null}}const Ze=256;function gu(e,t=0){const n=(t%Ze+Ze)%Ze;for(let s=0;s<Ze;s++){const o=(n+s)%Ze;if(!e.has(o))return o}return null}const mu=l().regex(/^[a-z][a-z0-9-]*$/,"invalid provider id"),_u=de(["safe","moderate","dangerous","planning"]),yu=p({supportsStreaming:T(),supportsSessionPersistence:T(),supportsDynamicModes:T(),supportsMcpServers:T(),supportsReasoningStream:T(),supportsToolInvocations:T(),supportsRewindConversation:T().optional(),supportsRewindFiles:T().optional(),supportsRewindBoth:T().optional(),supportsSteering:T().optional(),supportsExtensionUi:T().optional(),supportsTodos:T().optional()}).passthrough(),wu=p({id:l(),label:l().optional(),description:l().optional(),icon:l().optional(),colorTier:_u});p({id:mu,label:l(),description:l().optional(),extends:l().optional(),modes:D(wu),capabilities:yu});function Dn(e){return typeof e=="string"?e:e instanceof Uint8Array||Buffer.isBuffer(e)?e.toString("utf8"):String(e??"")}function Go(e){let t=null;const n={onMessage:null,onClose:null,onError:null,get isOpen(){return t!==null&&t.readyState===1},get bufferedAmount(){return t==null?void 0:t.bufferedAmount},connect(s){return new Promise((o,r)=>{const i=e??(()=>new WebSocket(s));try{t=e?i(s):new WebSocket(s),t.binaryType="arraybuffer"}catch(a){r(a);return}t.onopen=()=>o(),t.onerror=a=>{var u;(t==null?void 0:t.readyState)!==1&&r(a),(u=n.onError)==null||u.call(n,a)},t.onclose=a=>{var u;(u=n.onClose)==null||u.call(n,a.code,Dn(a.reason))},t.onmessage=a=>{var d,g,f,m;const{data:u}=a;u instanceof ArrayBuffer||u instanceof Uint8Array?(d=n.onMessage)==null||d.call(n,u):typeof u=="string"?(g=n.onMessage)==null||g.call(n,u):typeof Blob<"u"&&u instanceof Blob?(f=n.onMessage)==null||f.call(n,u):Buffer.isBuffer(u)&&((m=n.onMessage)==null||m.call(n,u.buffer.slice(u.byteOffset,u.byteOffset+u.byteLength)))}})},sendText(s){t==null||t.send(s)},sendBinary(s){t==null||t.send(s)},close(s=1e3,o=""){t==null||t.close(s,o),t=null}};return n}const pt="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";function Yo(e){let t="";for(let n=0;n<e.length;n+=3){const s=e[n],o=n+1<e.length,r=n+2<e.length,i=o?e[n+1]:0,a=r?e[n+2]:0;t+=pt[s>>2],t+=pt[(s&3)<<4|i>>4],t+=o?pt[(i&15)<<2|a>>6]:"=",t+=r?pt[a&63]:"="}return t}function Xo(e){const t=e.replace(/=+$/,""),n=[];let s=0,o=0;for(const r of t){const i=pt.indexOf(r);if(i===-1)throw new Error(`invalid base64 character: ${JSON.stringify(r)}`);s=s<<6|i,o+=6,o>=8&&(o-=8,n.push(s>>o&255))}return new Uint8Array(n)}function vu(e){try{const t=JSON.parse(e);return!t||typeof t.type!="string"?null:t}catch{return null}}const Yt=24;function Jo(e,t){const n=et.randomBytes(Yt),s=et.box.after(e,n,t),o=new Uint8Array(n.length+s.length);return o.set(n,0),o.set(s,n.length),Yo(o)}function Zo(e,t){let n;try{n=Xo(e)}catch{return null}if(n.length<Yt)return null;const s=n.slice(0,Yt),o=n.slice(Yt);return et.box.open.after(o,s,t)}function bu(e,t){return Jo(new TextEncoder().encode(e),t)}function Su(e,t){const n=Zo(e,t);return n?new TextDecoder().decode(n):null}function ku(e,t,n,s,o,r){let i=!1;return n.onClose(a=>{var u;i=!0,(u=s.onClose)==null||u.call(s,a)}),{handleAppFrame(a){var g,f;if(i)return;const u=o();if(!r()||!u)return;const d=Su(a.frame,u);if(d===null){(g=s.onAuthError)==null||g.call(s,new Error(`relay ${e} channel: message failed authentication`));return}(f=s.onMessage)==null||f.call(s,d)},handleBinaryFrame(a){var g,f;if(i)return;const u=o();if(!r()||!u)return;const d=Zo(a.frame,u);if(d===null){(g=s.onAuthError)==null||g.call(s,new Error(`relay ${e} channel: binary message failed authentication`));return}(f=s.onBinaryMessage)==null||f.call(s,d)},send(a){if(i)throw new Error(`relay ${e} channel: cannot send after close()`);const u=o();if(!r()||!u)throw new Error(`relay ${e} channel: cannot send before the E2EE handshake completes`);n.send(JSON.stringify({type:"e2ee_app",frame:bu(a,u)}))},sendBinary(a){if(i)throw new Error(`relay ${e} channel: cannot send after close()`);const u=o();if(!r()||!u)throw new Error(`relay ${e} channel: cannot send before the E2EE handshake completes`);n.send(JSON.stringify({type:"e2ee_bin",frame:Jo(a,u)}))},close(){i||(i=!0,n.close())}}}function xu(e){const{transport:t,attachment:n,daemonPublicKey:s}=e,o=e.events??{},r=et.box.keyPair(),i=et.box.before(s,r.secretKey);let a=!1;const u=ku("client",n,t,o,()=>i,()=>a);return t.onMessage(d=>{var f;const g=vu(d);if(g){if(g.type==="e2ee_ready"){if(a)return;a=!0,(f=o.onReady)==null||f.call(o);return}if(g.type==="e2ee_app"){u.handleAppFrame(g);return}g.type==="e2ee_bin"&&u.handleBinaryFrame(g)}}),t.send(JSON.stringify({type:"e2ee_hello",ephemeralPublicKey:Yo(r.publicKey)})),{role:"client",attachment:n,get ready(){return a},send:u.send,sendBinary:u.sendBinary,close:u.close}}const Iu=16;function Tu(e){const t=et.hash(e);let n="";for(let s=0;s<Iu;s++)n+=t[s].toString(16).padStart(2,"0");return n}function Eu(e){const t=e.useTls?"wss":"ws",n=e.endpoint.replace(/^(?:https?|wss?):\/\//,"").replace(/\/+$/,"");return`${t}://${n}`}function Cu(e){let t=null,n=null;const s=e.sessionId??Tu(e.daemonPublicKey),o={onMessage:null,onClose:null,onError:null,get isOpen(){return t!==null&&t.readyState===1&&n!==null&&n.ready},get bufferedAmount(){return t==null?void 0:t.bufferedAmount},connect(r){return new Promise((i,a)=>{const u=e.factory??(()=>new WebSocket(r));try{t=e.factory?u(r):new WebSocket(r)}catch(m){a(m);return}const d=t,g=[],f=[];d.onopen=()=>{d.send(JSON.stringify({type:"relay_register",sessionId:s})),n=xu({transport:{send:m=>d.send(m),onMessage:m=>g.push(m),onClose:m=>f.push(m),close:()=>d.close()},attachment:{sessionId:s},daemonPublicKey:e.daemonPublicKey,events:{onReady:()=>i(),onMessage:m=>{var h;return(h=o.onMessage)==null?void 0:h.call(o,m)},onBinaryMessage:m=>{var h;return(h=o.onMessage)==null?void 0:h.call(o,m.slice().buffer)},onAuthError:m=>{var h;return(h=o.onError)==null?void 0:h.call(o,m)}}})},d.onerror=m=>{var h;d.readyState!==1&&a(m),(h=o.onError)==null||h.call(o,m)},d.onclose=m=>{var h;for(const b of f)b(Dn(m.reason));(h=o.onClose)==null||h.call(o,m.code,Dn(m.reason))},d.onmessage=m=>{const{data:h}=m;if(typeof h=="string")for(const b of g)b(h)}})},sendText(r){if(!n||!n.ready)throw new Error("relay transport: cannot send before the E2EE handshake completes");n.send(r)},sendBinary(r){if(!n||!n.ready)throw new Error("relay transport: cannot send before the E2EE handshake completes");n.sendBinary(r)},close(r=1e3,i=""){n==null||n.close(),n=null,t==null||t.close(r,i),t=null}};return o}function Qo(e){const t=e.indexOf("#"),n=t===-1?e:e.slice(t+1),s=new URLSearchParams(n),o=s.get("offer");if(!o)return null;let r;try{r=Xo(o)}catch{return null}const i=s.get("relay");if(i){const u={endpoint:i,useTls:s.get("relayTls")==="1"};return{publicKeyB64:o,publicKey:r,relay:u}}const a=s.get("host")??void 0;return{publicKeyB64:o,publicKey:r,...a?{host:a}:{}}}const Au=1;function en(){return typeof crypto<"u"&&typeof crypto.randomUUID=="function"?crypto.randomUUID():`id-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,10)}`}class Ru extends Error{constructor(t,n,s){super(t),this.requestId=n,this.code=s,this.name="RpcError"}}class $n extends Error{constructor(t){super(`RPC ${t} timed out`),this.requestId=t,this.name="RpcTimeoutError"}}class ju{constructor(t){B(this,"transport");B(this,"rpcTimeoutMs");B(this,"now");B(this,"_state","idle");B(this,"_serverId",null);B(this,"_features",{});B(this,"_serverCapabilities",{});B(this,"pending",new Map);B(this,"sessionHandlers",new Set);B(this,"terminalHandlers",new Set);B(this,"fileTransferHandlers",new Set);B(this,"stateHandlers",new Set);B(this,"helloResolve",null);B(this,"helloReject",null);this.options=t,this.transport=t.transport??Go(),this.rpcTimeoutMs=t.rpcTimeoutMs??3e4,this.now=t.now??(()=>Date.now()),this.transport.onMessage=n=>this.handleIncoming(n),this.transport.onClose=(n,s)=>this.handleClose(n,s),this.transport.onError=()=>{}}get state(){return this._state}get serverId(){return this._serverId}get features(){return this._features}get serverCapabilities(){return this._serverCapabilities}get bufferedAmount(){return this.transport.bufferedAmount}hasFeature(t){return!!this._features[t]}async connect(){this.setState("connecting"),await this.transport.connect(this.options.url);const t=new Promise((s,o)=>{this.helloResolve=s,this.helloReject=o});this.transport.sendText(JSON.stringify({type:"hello",clientId:this.options.clientId,clientType:this.options.clientType,platform:this.options.platform,agentStreams:this.options.agentStreams,protocolVersion:this.options.protocolVersion??Au,appVersion:this.options.appVersion,capabilities:this.options.capabilities}));const n=await t;return this._serverId=n.serverId,this._features=n.features,this._serverCapabilities=n.capabilities,this.setState("open"),n}close(t=1e3,n=""){this.setState("closing"),this.transport.close(t,n)}request(t,n={},s){const o=n.requestId??en();return new Promise((r,i)=>{const a=s??this.rpcTimeoutMs,u=a>0?setTimeout(()=>{this.pending.delete(o),i(new $n(o))},a):null;this.pending.set(o,{resolve:d=>r(d),reject:i,timer:u}),this.sendSession({type:t,...n,requestId:o})})}sendSession(t){this.transport.sendText(JSON.stringify({type:"session",message:t}))}sendBinary(t){this.transport.sendBinary(t)}ping(t=1e4){const n=en();return new Promise((s,o)=>{const r=t>0?setTimeout(()=>{this.pending.delete(n),o(new $n(n))},t):null;this.pending.set(n,{resolve:()=>s(),reject:o,timer:r}),this.transport.sendText(JSON.stringify({type:"ping",requestId:n,clientSentAt:this.now()}))})}onSessionMessage(t){return this.sessionHandlers.add(t),()=>this.sessionHandlers.delete(t)}onTerminalFrame(t){return this.terminalHandlers.add(t),()=>this.terminalHandlers.delete(t)}onFileTransferFrame(t){return this.fileTransferHandlers.add(t),()=>this.fileTransferHandlers.delete(t)}onStateChange(t){return this.stateHandlers.add(t),()=>this.stateHandlers.delete(t)}setState(t){if(this._state!==t){this._state=t;for(const n of this.stateHandlers)n(t)}}handleClose(t,n){this.helloReject&&(this.helloReject(new Error(`socket closed during handshake: ${n}`)),this.helloResolve=null,this.helloReject=null);for(const[,s]of this.pending)s.timer&&clearTimeout(s.timer),s.reject(new Error(`socket closed: ${n}`));this.pending.clear(),this.setState("closed")}handleIncoming(t){if(typeof t=="string"){this.handleTextFrame(t);return}if(t instanceof ArrayBuffer){this.handleBinaryFrame(new Uint8Array(t));return}typeof t.arrayBuffer=="function"&&t.arrayBuffer().then(n=>this.handleBinaryFrame(new Uint8Array(n)))}handleBinaryFrame(t){const n=t[0];if(n!==void 0&&Object.values(Qe).includes(n)){const r=hu(t);if(!r)return;for(const i of this.fileTransferHandlers)i(r);return}const o=uu(t);for(const r of this.terminalHandlers)r(o)}handleTextFrame(t){let n;try{n=JSON.parse(t)}catch{return}const s=n;switch(s.type){case"status":this.handleStatus(s);return;case"pong":this.resolvePending(s.requestId,void 0);return;case"ping":this.transport.sendText(JSON.stringify({type:"pong",requestId:s.requestId,serverReceivedAt:this.now(),serverSentAt:this.now()}));return;case"session":this.handleSession(s.message);return;default:return}}handleStatus(t){const n=t.payload;(n==null?void 0:n.status)==="server_info"&&this.helloResolve&&(this.helloResolve(n),this.helloResolve=null,this.helloReject=null)}handleSession(t){if(!t||typeof t!="object")return;const n=t;if(n.type==="rpc_error"&&typeof n.requestId=="string"){const s=this.pending.get(n.requestId);s&&(s.timer&&clearTimeout(s.timer),this.pending.delete(n.requestId),s.reject(new Ru(n.message??n.error??"RPC failed",n.requestId,n.code)));return}if(typeof n.requestId=="string"&&this.pending.has(n.requestId)){const s="payload"in n?n.payload:n;this.resolvePending(n.requestId,s)}for(const s of this.sessionHandlers)s(t)}resolvePending(t,n){const s=this.pending.get(t);s&&(s.timer&&clearTimeout(s.timer),this.pending.delete(t),s.resolve(n))}}const Pu=10*6e4,qu=660*1e3,Mu=1300*1e3,Nu=150*1e3,Du=660*1e3;function $u(e){const t=e;if(!t||t.type!=="provider_auth_flow_event"||typeof t.flowId!="string")return!1;const n=t.event;return typeof n=="object"&&n!==null&&typeof n.kind=="string"}class Is extends Error{constructor(t,n){super(t),this.operation=n,this.name="ProviderAuthError"}}class Ts extends Error{constructor(t){super("prompt_cancelled"),this.promptId=t,this.name="PromptCancelledError"}}class Lu extends Error{constructor(t,n){super(t),this.operation=n,this.name="AgentUiError"}}function Ou(e){const t=e;return!!t&&t.type==="agent_ui_request"&&typeof t.requestId=="string"&&typeof t.agentId=="string"}function Bu(e){const t=e;return!!t&&t.type==="agent_ui_resolved"&&typeof t.requestId=="string"&&typeof t.agentId=="string"}class Es extends Error{constructor(t,n){super(t),this.code=n,this.name="AgentTodosError"}}function Fu(e){const t=e;return!!t&&t.type==="agent_todos_update"&&typeof t.snapshot=="object"&&t.snapshot!==null}function zu(e){const t=e;return!!t&&t.type==="agent_archived"&&typeof t.agentId=="string"}function Wu(e){const t=e;return!!t&&t.type==="agent_deleted"&&typeof t.agentId=="string"}class Uu{constructor(t){B(this,"activeProviderAuthFlow",null);this.daemon=t}get connection(){return this.daemon}async createAgent(t){return await this.daemon.request("create_agent_request",{...t})}agent(t){return new Vu(this.daemon,t)}workspace(t){return new Ku(this.daemon,t)}get providers(){return new Gu(this.daemon)}listExtensionPacks(){return this.daemon.request("extension_packs_list_request",{})}setExtensionPacks(t,n){return this.daemon.request("extension_packs_set_request",{packs:t},n==null?void 0:n.timeoutMs)}syncExtensionPacks(t){return this.daemon.request("extension_packs_set_request",{},t==null?void 0:t.timeoutMs)}onAgentUpdate(t){return this.daemon.onSessionMessage(n=>{n.type==="agent_update"&&t(n)})}onWorkspaceUpdate(t){return this.daemon.onSessionMessage(n=>{n.type==="workspace_update"&&t(n)})}hasProviderAuthCapability(){return this.daemon.hasFeature("providerAuth")}async listProviderAuth(){const t=await this.daemon.request("provider_auth_list_request",{});if(!t.ok)throw new Is(t.error??"failed to list provider auth state","list");return t.providers}async logoutProvider(t){const n=await this.daemon.request("provider_auth_logout_request",{provider:t});if(!n.ok)throw new Is(n.error??"failed to log out","logout");return{stillConfigured:n.stillConfigured}}async loginProvider(t,n,s,o){var f;if(this.activeProviderAuthFlow)throw new Error("a provider-auth login is already in progress for this client");let r;const i=new Promise(m=>{r=m}),a={flowId:null,buffered:[],pendingPrompt:null,cancelRequested:((f=o==null?void 0:o.signal)==null?void 0:f.aborted)??!1,terminal:!1,settle:r,unsubscribe:null};this.activeProviderAuthFlow=a;const u=this.daemon.onSessionMessage(m=>{$u(m)&&this.routeProviderAuthEvent(a,m,s)}),d=this.daemon.onStateChange(m=>{m==="closed"&&this.settleProviderAuthFlow(a,{ok:!1,error:"connection_lost"})});let g=null;if(o!=null&&o.signal){const m=o.signal;g=()=>{a.cancelRequested=!0,a.flowId&&!a.terminal&&this.daemon.request("provider_auth_cancel_request",{flowId:a.flowId}).catch(()=>{})},m.addEventListener("abort",g,{once:!0}),a.unsubscribe=()=>{u(),d(),m.removeEventListener("abort",g)}}else a.unsubscribe=()=>{u(),d()};try{const m=await this.daemon.request("provider_auth_login_request",{provider:t,authType:n});if(a.terminal)return i;if(!m.ok||!m.flowId)return this.settleProviderAuthFlow(a,{ok:!1,error:m.error}),i;a.flowId=m.flowId;const h=a.buffered;a.buffered=[];for(const b of h)b.flowId===a.flowId&&this.dispatchProviderAuthEvent(a,b.event,s);a.cancelRequested&&!a.terminal&&this.daemon.request("provider_auth_cancel_request",{flowId:a.flowId}).catch(()=>{})}catch{a.terminal||this.settleProviderAuthFlow(a,{ok:!1,error:"connection_lost"})}return i}routeProviderAuthEvent(t,n,s){if(!t.terminal){if(t.flowId===null){t.buffered.push(n);return}n.flowId===t.flowId&&this.dispatchProviderAuthEvent(t,n.event,s)}}dispatchProviderAuthEvent(t,n,s){var o;switch(n.kind){case"done":this.settleProviderAuthFlow(t,{ok:!!n.ok,error:typeof n.error=="string"?n.error:void 0});return;case"prompt_cancelled":{const r=n.promptId;t.pendingPrompt&&t.pendingPrompt.promptId===r&&(t.pendingPrompt.reject(new Ts(r)),t.pendingPrompt=null);return}case"prompt":this.handleProviderAuthPrompt(t,n,s);return;default:(o=s.onEvent)==null||o.call(s,n);return}}async handleProviderAuthPrompt(t,n,s){const o=new AbortController,r={promptId:n.promptId,promptKind:n.promptKind,message:n.message,placeholder:n.placeholder,options:n.options,signal:o.signal};let i;const a=new Promise((d,g)=>{i=g});a.catch(()=>{}),t.pendingPrompt={promptId:r.promptId,reject:d=>{o.abort(),i(d)}};const u=s.prompt(r);u.catch(()=>{});try{const d=await Promise.race([u,a]);if(t.terminal)return;t.pendingPrompt=null,await this.daemon.request("provider_auth_respond_request",{flowId:t.flowId,promptId:r.promptId,value:d})}catch(d){if(t.pendingPrompt=null,t.terminal||d instanceof Ts)return;t.flowId&&this.daemon.request("provider_auth_cancel_request",{flowId:t.flowId}).catch(()=>{}),this.settleProviderAuthFlow(t,{ok:!1,error:"connection_lost"})}}settleProviderAuthFlow(t,n){var s;t.terminal||(t.terminal=!0,t.pendingPrompt&&(t.pendingPrompt.reject(new Error("provider-auth: flow ended")),t.pendingPrompt=null),(s=t.unsubscribe)==null||s.call(t),this.activeProviderAuthFlow===t&&(this.activeProviderAuthFlow=null),t.settle(n))}hasViewerSettingsCapability(){return this.daemon.hasFeature("viewerSettings")}async getViewerSettings(){return(await this.daemon.request("viewer_settings_get_request",{})).settings}async setViewerSettings(t){return(await this.daemon.request("viewer_settings_set_request",{patch:t})).settings}onViewerSettingsUpdate(t){return this.daemon.onSessionMessage(n=>{n.type==="viewer_settings_update"&&t(n.settings)})}onAgentUiRequest(t){return this.daemon.onSessionMessage(n=>{Ou(n)&&t(n,{receivedAt:Date.now()})})}onAgentUiResolved(t){return this.daemon.onSessionMessage(n=>{Bu(n)&&t(n)})}async respondToUi(t,n){const s=await this.daemon.request("agent_ui_respond_request",{uiRequestId:t,response:n});return s.ok?{ok:!0}:{ok:!1,reason:s.error??"unknown"}}async listAgentUi(t){const n=await this.daemon.request("agent_ui_list_request",t?{agentId:t}:{});if(!n.ok)throw new Lu(n.error??"failed to list extension UI state","list");return{pending:n.pending??[],surfaces:n.surfaces??[]}}extensionUiAvailable(){return this.daemon.hasFeature("extensionUi")}hasAgentTodosCapability(){return this.daemon.hasFeature("agentTodos")}async listAgentTodos(t){const n=await this.daemon.request("agent_todos_list_request",{agentId:t});if(n.ok===!1)throw new Es(n.error??"failed to list agent todos",n.error??"unknown");if(!n.snapshot)throw new Es("malformed agent_todos_list_response: missing snapshot","malformed_response");return n.snapshot}onAgentTodosUpdate(t){return this.daemon.onSessionMessage(n=>{Fu(n)&&t(n.snapshot)})}hasSkillsCapability(){return this.daemon.hasFeature("skills")}async listSkills(){return this.daemon.request("skills_list_request",{})}async setSkillEnabled(t,n){return this.daemon.request("skills_set_enabled_request",{path:t,enabled:n})}async removeSkill(t){return this.daemon.request("skills_remove_request",t,qu)}async updateAllSkills(){return this.daemon.request("skills_update_all_request",{},Mu)}async previewSkillSource(t){return this.daemon.request("skills_preview_request",{source:t},Nu)}async installSkills(t){return this.daemon.request("skills_install_request",t,Du)}onSkillsChanged(t){return this.daemon.onSessionMessage(n=>{n.type==="skills_changed"&&t(n.reason)})}}class Hu{constructor(t,n){this.daemon=t,this.agentId=n}fetch(t={}){return this.daemon.request("fetch_agent_timeline_request",{agentId:this.agentId,cursor:t.cursor,direction:t.direction,limit:t.limit})}subscribe(t){return this.daemon.onSessionMessage(n=>{const s=n;s.type==="agent_stream"&&s.agentId===this.agentId&&s.event&&t(s.event,{timestamp:s.timestamp,seq:s.seq})})}}class Vu{constructor(t,n){B(this,"timeline");this.daemon=t,this.agentId=n,this.timeline=new Hu(t,n)}send(t,n={}){return this.daemon.request("send_agent_prompt",{agentId:this.agentId,prompt:t,clientMessageId:n.clientMessageId,images:n.images})}run(t,n){return this.send(t,n)}interrupt(){return this.daemon.request("interrupt_agent",{agentId:this.agentId})}steer(t,n={}){return this.daemon.request("steer_agent_request",{agentId:this.agentId,message:t,clientMessageId:n.clientMessageId,images:n.images})}followUp(t,n={}){return this.daemon.request("follow_up_agent_request",{agentId:this.agentId,message:t,clientMessageId:n.clientMessageId,images:n.images})}update(t){return this.daemon.request("update_agent",{agentId:this.agentId,...t})}resume(){return this.daemon.request("resume_agent",{agentId:this.agentId})}archive(){return this.daemon.request("archive_agent",{agentId:this.agentId})}delete(){return this.daemon.request("delete_agent",{agentId:this.agentId})}onUpdate(t){return this.daemon.onSessionMessage(n=>{const s=n;s.type==="agent_update"&&s.agentId===this.agentId&&t(s)})}sessionStats(){return this.daemon.request("agent_session_stats_request",{agentId:this.agentId})}compact(t){return this.daemon.request("agent_compact_request",{agentId:this.agentId,customInstructions:t},Pu)}newSession(){return this.daemon.request("agent_new_session_request",{agentId:this.agentId})}switchSession(t){return this.daemon.request("agent_switch_session_request",{agentId:this.agentId,sessionPath:t})}fork(t){return this.daemon.request("agent_fork_request",{agentId:this.agentId,entryId:t})}forkMessages(){return this.daemon.request("agent_fork_messages_request",{agentId:this.agentId})}clone(){return this.daemon.request("agent_clone_request",{agentId:this.agentId})}setSessionName(t){return this.daemon.request("agent_set_session_name_request",{agentId:this.agentId,name:t})}exportHtml(t){return this.daemon.request("agent_export_html_request",{agentId:this.agentId,outputPath:t})}setModel(t,n){return this.daemon.request("agent_set_model_request",{agentId:this.agentId,provider:t,modelId:n})}cycleModel(){return this.daemon.request("agent_cycle_model_request",{agentId:this.agentId})}lastAssistantText(){return this.daemon.request("agent_last_assistant_text_request",{agentId:this.agentId})}listCommands(){return this.daemon.request("agent_list_commands_request",{agentId:this.agentId})}setThinking(t){return this.daemon.request("agent_set_thinking_request",{agentId:this.agentId,level:t})}listThinkingLevels(){return this.daemon.request("agent_thinking_levels_request",{agentId:this.agentId})}}class Ku{constructor(t,n){this.daemon=t,this.workspaceId=n}onUpdate(t){return this.daemon.onSessionMessage(n=>{const s=n;s.type==="workspace_update"&&s.workspaceId===this.workspaceId&&t(s)})}}class Gu{constructor(t){this.daemon=t}listProviders(){return this.daemon.request("list_providers",{})}listModels(t,n){return this.daemon.request("list_provider_models",{provider:t,...n!=null&&n.agentId?{agentId:n.agentId}:{}})}listModes(t){return this.daemon.request("list_provider_modes",{provider:t})}resolveDefaultModel(t,n){return this.daemon.request("resolve_default_model",{provider:t,...n?{cwd:n}:{}})}refreshSnapshot(){return this.daemon.request("providers.snapshot.refresh.request",{})}}const es={pending:{},surfaces:{},resolved:{}},Yu=50;function er(e,t){return`${e}\0${t}`}function Ln(e){return typeof e=="number"?e:Date.parse(e)}function Xu(e,t){switch(t.type){case"ui_request":return Ju(e,t.event,t.meta);case"ui_resolved":return{state:ed(e,t.event),effects:[]};case"snapshot":return{state:nd(t.pending,t.surfaces,e.resolved),effects:[]};case"disconnected":return{state:sd(e),effects:[]};case"agent_removed":return{state:od(e,t.agentId),effects:[]};case"respond_sent":return{state:rd(e,t.requestId,t.response),effects:[]};case"respond_failed":return{state:id(e,t.requestId),effects:[]}}}function Ju(e,t,n){if(t.expectsResponse){const s={requestId:t.requestId,agentId:t.agentId,method:t.method,payload:t.payload,timeoutMs:t.timeoutMs,createdAt:t.createdAt,receivedAt:n.receivedAt,answerable:!0};return{state:{...e,pending:{...e.pending,[t.requestId]:s}},effects:[]}}if(t.surfaceKey!==void 0){const s=er(t.agentId,t.surfaceKey);if(t.removed){if(!(s in e.surfaces))return{state:e,effects:[]};const r={...e.surfaces};return delete r[s],{state:{...e,surfaces:r},effects:[]}}const o={agentId:t.agentId,surfaceKey:t.surfaceKey,method:t.method,payload:t.payload,updatedAt:t.createdAt};return{state:{...e,surfaces:{...e.surfaces,[s]:o}},effects:[]}}return{state:e,effects:Zu(t)}}function Zu(e){switch(e.method){case"set_editor_text":{const t=typeof e.payload.text=="string"?e.payload.text:"";return[{type:"replace_composer_text",agentId:e.agentId,text:t}]}case"notify":{const t=typeof e.payload.message=="string"?e.payload.message:"",n=typeof e.payload.level=="string"?e.payload.level:"info";return[{type:"notify",agentId:e.agentId,message:t,level:n}]}default:return[]}}function Qu(e,t){if(!(e!=="select"&&e!=="confirm"))return{value:t.value,confirmed:t.confirmed}}function ed(e,t){const n=e.pending[t.requestId];if(!n)return e;const s={...e.pending};delete s[t.requestId];const o={requestId:n.requestId,agentId:n.agentId,method:n.method,payload:n.payload,createdAt:n.createdAt,reason:t.reason};return n.submittedAnswer!==void 0&&(o.answer=n.submittedAnswer),{...e,pending:s,resolved:td(e.resolved,o)}}function td(e,t){const n={...e,[t.requestId]:t},s=Object.values(n).filter(r=>r.agentId===t.agentId).toSorted((r,i)=>ts(r.createdAt,r.requestId,i.createdAt,i.requestId)),o=s.length-Yu;if(o<=0)return n;for(const r of s.slice(0,o))delete n[r.requestId];return n}function nd(e,t,n){const s={};for(const r of e)s[r.requestId]={requestId:r.requestId,agentId:r.agentId,method:r.method,payload:r.payload,timeoutMs:r.timeoutMs,createdAt:r.createdAt,answerable:!0};const o={};for(const r of t)o[er(r.agentId,r.surfaceKey)]={agentId:r.agentId,surfaceKey:r.surfaceKey,method:r.method,payload:r.payload,updatedAt:r.updatedAt};return{pending:s,surfaces:o,resolved:n}}function sd(e){const t={};for(const[n,s]of Object.entries(e.pending))t[n]={...s,answerable:!1};return{...e,pending:t}}function od(e,t){const n={};for(const[r,i]of Object.entries(e.pending))i.agentId!==t&&(n[r]=i);const s={};for(const[r,i]of Object.entries(e.surfaces))i.agentId!==t&&(s[r]=i);const o={};for(const[r,i]of Object.entries(e.resolved))i.agentId!==t&&(o[r]=i);return{pending:n,surfaces:s,resolved:o}}function rd(e,t,n){const s=e.pending[t];if(!s)return e;const o=Qu(s.method,n),r={...s,submitting:!0};return o!==void 0&&(r.submittedAnswer=o),{...e,pending:{...e.pending,[t]:r}}}function id(e,t){const n=e.pending[t];if(!n)return e;const s={requestId:n.requestId,agentId:n.agentId,method:n.method,payload:n.payload,timeoutMs:n.timeoutMs,createdAt:n.createdAt,receivedAt:n.receivedAt,answerable:n.answerable};return{...e,pending:{...e.pending,[t]:s}}}function ts(e,t,n,s){const o=Ln(e)-Ln(n);return o!==0?o:t.localeCompare(s)}function ad(e,t){return Object.values(e.pending).filter(n=>n.agentId===t).toSorted((n,s)=>ts(n.createdAt,n.requestId,s.createdAt,s.requestId))}function cd(e){const t={};for(const n of Object.values(e.pending))t[n.agentId]=(t[n.agentId]??0)+1;return t}function ld(e,t){return Object.values(e.resolved).filter(n=>n.agentId===t).toSorted((n,s)=>ts(n.createdAt,n.requestId,s.createdAt,s.requestId))}function gS(e,t){if(e.timeoutMs===void 0)return null;const n=e.receivedAt??Ln(e.createdAt);return Math.max(0,e.timeoutMs-(t-n))}const Cs={byAgent:{}};function ud(e,t){const n=e.byAgent[t.agentId];return n&&t.seq<=n.seq?e:{byAgent:{...e.byAgent,[t.agentId]:t}}}function dd(e){const t={};for(const[n,s]of Object.entries(e.byAgent))t[n]={...s,seq:Number.NEGATIVE_INFINITY};return{byAgent:t}}function fd(e,t){return e.byAgent[t]}function As(e){return e.expectsResponse?"dialog":e.surfaceKey!==void 0?"surface":"transient"}function pd(e,t={}){let n=es;const s=new Set,o=new Set;let r=!1,i=!1,a=[],u=0;function d(_){if(r)return;const S=Xu(n,_);n=S.state,_.type==="ui_request"&&As(_.event)==="transient"&&S.effects.length===0&&g(_.event.method);for(const E of s)E(n,S.effects)}function g(_){o.has(_)||(o.add(_),t.onUnknownMethod?t.onUnknownMethod(_):console.warn(`agent-ui-controller: unknown extension-UI method "${_}"`))}async function f(){if(r||!e.extensionUiAvailable())return;const _=++u;i||(i=!0,a=[]);let S;try{S=await e.listAgentUi()}catch(R){if(r||_!==u)return;i=!1,a=[];const q=R instanceof Error?R.message:String(R);console.error(`agent-ui-controller: failed to sync extension UI state: ${q}`);return}if(r||_!==u)return;i=!1;const E=a;a=[],d({type:"snapshot",pending:S.pending,surfaces:S.surfaces});for(const R of E)R.type==="ui_request"&&As(R.event)==="transient"&&d(R)}const m=e.onAgentUiRequest((_,S)=>{const E={type:"ui_request",event:_,meta:S};i?a.push(E):d(E)}),h=e.onAgentUiResolved(_=>{const S={type:"ui_resolved",event:_};i?a.push(S):d(S)}),b=e.connection.onSessionMessage(_=>{(zu(_)||Wu(_))&&d({type:"agent_removed",agentId:_.agentId})}),y=e.connection.onStateChange(_=>{_==="closed"||_==="closing"?d({type:"disconnected"}):_==="open"&&f()});f();async function I(_,S){d({type:"respond_sent",requestId:_,response:S});const E=await e.respondToUi(_,S);return E.ok||d({type:"respond_failed",requestId:_}),E}return{getState:()=>n,subscribe(_){return s.add(_),()=>s.delete(_)},respond:I,resync:f,dispose(){r||(r=!0,m(),h(),b(),y(),s.clear(),a=[])}}}const tn=32*1024,hd=1024*1024,gd=10,md="This daemon does not support file downloads by path and range (feature fileDownloadRanges): update the daemon.";function _d(){let e;const t=new Promise((s,o)=>{e=o});t.catch(()=>{});let n;return{failure:t,fail(s){n||(n=s,e(s))},check(){if(n)throw n}}}function zt(e){return new DOMException(`The ${e} was aborted`,"AbortError")}function bn(e){return e instanceof Error?e:new Error(String(e))}function yd(e){const{fileName:t,mimeType:n,totalBytes:s,mtimeMs:o,offset:r,length:i}=e;return s===void 0||o===void 0||r===void 0||i===void 0?null:{...t===void 0?{}:{fileName:t},...n===void 0?{}:{mimeType:n},totalBytes:s,mtimeMs:o,offset:r,length:i}}function wd(e){return e instanceof Error&&e.name==="AbortError"}function vd(e){return new Promise(t=>setTimeout(t,e))}async function*tr(e){for(let t=0;t<e.length;t+=tn)yield e.subarray(t,t+tn)}async function*bd(e){for(let t=0;t<e.size;t+=tn)yield new Uint8Array(await e.slice(t,t+tn).arrayBuffer())}async function*Sd(e){for await(const t of e)yield*tr(t)}function kd(e){return e instanceof Uint8Array?{total:e.length,chunks:tr(e)}:typeof Blob<"u"&&e instanceof Blob?{total:e.size,chunks:bd(e)}:{total:void 0,chunks:Sd(e)}}function xd(e){const t=e.reduce((o,r)=>o+r.length,0),n=new Uint8Array(t);let s=0;for(const o of e)n.set(o,s),s+=o.length;return n}class Id{constructor(t,n={}){B(this,"pending",new Map);B(this,"streamCursor",1);B(this,"detach",null);B(this,"detachState",null);B(this,"uploads",new Set);B(this,"highWaterBytes");B(this,"sleep");this.daemon=t,this.highWaterBytes=n.highWaterBytes??hd,this.sleep=n.sleep??vd}get pendingUploads(){return this.uploads.size}get pendingDownloads(){return this.pending.size}start(){this.detach||(this.detach=this.daemon.onFileTransferFrame(t=>this.dispatch(t)))}stop(){var t;(t=this.detach)==null||t.call(this),this.detach=null,this.failDownloads(new Error("file transfer router stopped"));for(const n of this.uploads)n.fail(new Error("file transfer router stopped"))}async downloadTo(t,n,s={}){const{offset:o,length:r,ifUnchanged:i,signal:a,onProgress:u}=s;if(!this.daemon.hasFeature("fileDownloadRanges"))throw new Error(md);if(a!=null&&a.aborted)throw zt("download");if(this.daemon.state!=="open")throw new Error("connection is not open");const d=gu(this.pending,this.streamCursor);if(d===null)throw new Error("no free download stream");return this.streamCursor=(d+1)%Ze,await new Promise((g,f)=>{const m={sink:n,onProgress:u,info:void 0,received:0,progressed:!1,settled:!1,detachAbort:null,detachLate:null,resolve:g,reject:f};if(this.pending.set(d,m),this.watchConnection(),a){const b=()=>this.abortDownload(d,m,zt("download"));a.addEventListener("abort",b,{once:!0}),m.detachAbort=()=>a.removeEventListener("abort",b)}const h=en();this.daemon.request("file_download_request",{requestId:h,path:t,stream:d,offset:o,length:r,ifUnchanged:i}).then(b=>{b.ok||(this.finish(m,{error:new Error(b.error??"download request failed")}),this.release(d,m))},b=>{if(b instanceof $n){this.abortDownload(d,m,b),this.watchLateRefusal(d,m,h);return}this.finish(m,{error:bn(b)}),this.release(d,m)})})}async download(t,n={}){const s=[];return{...await this.downloadTo(t,r=>{s.push(r)},n),bytes:xd(s)}}finish(t,n){var s;t.settled||(t.settled=!0,(s=t.detachAbort)==null||s.call(t),t.detachAbort=null,"error"in n?t.reject(n.error):t.resolve(n.result))}release(t,n){var s;this.pending.get(t)===n&&(this.pending.delete(t),(s=n.detachLate)==null||s.call(n),n.detachLate=null,this.pending.size===0&&this.unwatchConnection())}watchLateRefusal(t,n,s){this.pending.get(t)===n&&(n.detachLate=this.daemon.onSessionMessage(o=>{const r=o;r.type!=="file_download_response"||r.requestId!==s||r.ok===!1&&this.release(t,n)}))}abortDownload(t,n,s){if(!n.settled){if(this.finish(n,{error:s}),this.daemon.state!=="open"){this.release(t,n);return}this.daemon.request("file_download_cancel_request",{stream:t}).then(o=>{o.ok||this.release(t,n)},()=>this.release(t,n))}}failDownloads(t){var s;const n=[...this.pending.values()];this.pending.clear(),this.unwatchConnection();for(const o of n)(s=o.detachLate)==null||s.call(o),o.detachLate=null,this.finish(o,{error:t})}watchConnection(){this.detachState||(this.detachState=this.daemon.onStateChange(t=>{t!=="open"&&this.failDownloads(new Error(`connection ${t} during download`))}))}unwatchConnection(){var t;(t=this.detachState)==null||t.call(this),this.detachState=null}async upload(t,n,s={}){const{onProgress:o,signal:r}=s;if(r!=null&&r.aborted)throw zt("upload");const i=_d();this.uploads.add(i);const a=[];let u,d=!1,g=!1;try{if(r){const q=()=>i.fail(zt("upload"));r.addEventListener("abort",q,{once:!0}),a.push(()=>r.removeEventListener("abort",q))}if(a.push(this.daemon.onStateChange(q=>{q!=="open"&&i.fail(new Error(`connection ${q} during upload`))})),this.daemon.state!=="open")throw new Error("connection is not open");const f=en(),m=this.daemon.hasFeature("fileTransferAck"),h=this.daemon.request("file_upload_request",{path:t,transferId:f,...m?{ack:!0}:{}});let b;try{b=await Promise.race([h,i.failure])}catch(q){throw h.then(H=>{H.ok&&H.stream!==void 0&&this.sendUploadError(H.stream,"client_error")},()=>{}),q}if(!b.ok||b.stream===void 0)throw new Error(b.error??"upload request failed");u=b.stream;let y;const I=new Promise(q=>{y=q});m&&a.push(this.daemon.onSessionMessage(q=>{q.type!=="file_upload_complete"||q.transferId!==f||(g=!0,q.ok?y():i.fail(new Error(q.error??"upload failed")))})),this.daemon.sendBinary(Ft({opcode:"Begin",stream:u,meta:{transferId:f}}));const{total:_,chunks:S}=kd(n),E=S[Symbol.asyncIterator]();a.push(()=>{var q;Promise.resolve((q=E.return)==null?void 0:q.call(E)).catch(()=>{})});let R=0;for(;;){await this.waitWhile(()=>(this.daemon.bufferedAmount??0)>this.highWaterBytes,i);const q=E.next();q.catch(()=>{});const H=await Promise.race([q,i.failure]);if(H.done)break;i.check(),this.daemon.sendBinary(Ft({opcode:"Chunk",stream:u,data:H.value})),R+=H.value.length,o==null||o(R,_)}R===0&&(o==null||o(0,_)),i.check(),this.daemon.sendBinary(Ft({opcode:"End",stream:u,ok:!0})),d=!0,m?await Promise.race([I,i.failure]):await this.waitWhile(()=>(this.daemon.bufferedAmount??0)>0,i)}catch(f){throw u!==void 0&&!d&&!g&&this.sendUploadError(u,wd(f)?"client_aborted":"client_error"),f}finally{for(const f of a)f();this.uploads.delete(i)}}async waitWhile(t,n){for(;t();)n.check(),await Promise.race([this.sleep(gd),n.failure])}sendUploadError(t,n){if(this.daemon.state==="open")try{this.daemon.sendBinary(Ft({opcode:"Error",stream:t,message:n}))}catch{}}dispatch(t){var s,o;const n=this.pending.get(t.stream);if(n)switch(t.opcode){case"Begin":{if(n.settled)return;const r=yd(t.meta);if(!r){this.abortDownload(t.stream,n,new Error("daemon sent a Begin frame without the range"));return}n.info=r;return}case"Chunk":{if(n.settled)return;const{info:r}=n;if(!r){this.abortDownload(t.stream,n,new Error("daemon sent a Chunk before Begin"));return}try{n.sink(t.data),n.received+=t.data.length,n.progressed=!0,(s=n.onProgress)==null||s.call(n,n.received,r.length)}catch(i){this.abortDownload(t.stream,n,bn(i))}return}case"End":{if(this.release(t.stream,n),n.settled)return;const{info:r}=n;if(!t.ok)this.finish(n,{error:new Error("download failed")});else if(!r)this.finish(n,{error:new Error("download ended before Begin")});else if(n.received!==r.length)this.finish(n,{error:new Error(`download ended after ${n.received} of ${r.length} bytes`)});else{try{n.progressed||(o=n.onProgress)==null||o.call(n,0,r.length)}catch(i){this.finish(n,{error:bn(i)});return}this.finish(n,{result:r})}return}case"Error":this.release(t.stream,n),this.finish(n,{error:new Error(t.message)});return}}}class Td{constructor(t,n={}){B(this,"initialDelayMs");B(this,"maxDelayMs");B(this,"factor");B(this,"jitter");B(this,"maxAttempts");B(this,"setTimer");B(this,"clearTimer");B(this,"random");B(this,"attempt",0);B(this,"timer",null);B(this,"active",!1);B(this,"reconnecting",!1);B(this,"detachState",null);B(this,"reconnectedHandlers",new Set);B(this,"failedHandlers",new Set);this.daemon=t,this.initialDelayMs=n.initialDelayMs??500,this.maxDelayMs=n.maxDelayMs??3e4,this.factor=n.factor??2,this.jitter=n.jitter??.2,this.maxAttempts=n.maxAttempts??Number.POSITIVE_INFINITY,this.setTimer=n.setTimer??((s,o)=>setTimeout(s,o)),this.clearTimer=n.clearTimer??(s=>clearTimeout(s)),this.random=n.random??Math.random}delayForAttempt(t){const n=Math.min(this.maxDelayMs,this.initialDelayMs*this.factor**(t-1)),s=n*this.jitter*(this.random()*2-1);return Math.max(0,Math.round(n+s))}onReconnected(t){return this.reconnectedHandlers.add(t),()=>this.reconnectedHandlers.delete(t)}onReconnectFailed(t){return this.failedHandlers.add(t),()=>this.failedHandlers.delete(t)}start(){this.active||(this.active=!0,this.detachState=this.daemon.onStateChange(t=>{t==="closed"&&this.active&&this.scheduleReconnect(),t==="open"&&(this.attempt=0)}))}stop(){var t;this.active=!1,this.timer&&this.clearTimer(this.timer),this.timer=null,(t=this.detachState)==null||t.call(this),this.detachState=null}reconnectNow(){this.active&&(this.reconnecting||this.daemon.state==="closed"&&(this.timer&&(this.clearTimer(this.timer),this.timer=null),this.attempt=0,this.tryReconnect()))}get attemptCount(){return this.attempt}scheduleReconnect(){if(!this.active||this.timer||this.attempt>=this.maxAttempts)return;this.attempt+=1;const t=this.delayForAttempt(this.attempt);this.timer=this.setTimer(()=>{this.timer=null,!this.reconnecting&&this.tryReconnect()},t)}async tryReconnect(){if(!this.active||this.reconnecting)return;this.reconnecting=!0;const t=this.attempt;try{await this.daemon.connect();for(const n of this.reconnectedHandlers)n({attempt:t,serverId:this.daemon.serverId})}catch(n){for(const s of this.failedHandlers)s(n,t);this.scheduleReconnect()}finally{this.reconnecting=!1}}}const we=(e,t,n,s,o,r,i,a,u,d,g)=>({50:e,100:t,200:n,300:s,400:o,500:r,600:i,700:a,800:u,900:d,950:g}),C={zinc:we("#fafafa","#f4f4f5","#e4e4e7","#d4d4d8","#a1a1aa","#71717a","#52525b","#3f3f46","#27272a","#18181b","#09090b"),gray:we("#f9fafb","#f3f4f6","#e5e7eb","#d1d5db","#9ca3af","#6b7280","#4b5563","#374151","#1f2937","#111827","#030712"),slate:we("#f8fafc","#f1f5f9","#e2e8f0","#cbd5e1","#94a3b8","#64748b","#475569","#334155","#1e293b","#0f172a","#020617"),blue:we("#eff6ff","#dbeafe","#bfdbfe","#93c5fd","#60a5fa","#3b82f6","#2563eb","#1d4ed8","#1e40af","#1e3a8a","#172554"),green:we("#f0fdf4","#dcfce7","#bbf7d0","#86efac","#4ade80","#22c55e","#16a34a","#15803d","#166534","#14532d","#052e16"),red:we("#fef2f2","#fee2e2","#fecaca","#fca5a5","#f87171","#ef4444","#dc2626","#b91c1c","#991b1b","#7f1d1d","#450a0a"),teal:we("#f0fdfa","#ccfbf1","#99f6e4","#5eead4","#2dd4bf","#14b8a6","#0d9488","#0f766e","#115e59","#134e4a","#042f2e"),amber:we("#fffbeb","#fef3c7","#fde68a","#fcd34d","#fbbf24","#f59e0b","#d97706","#b45309","#92400e","#78350f","#451a03"),yellow:we("#fefce8","#fef9c3","#fef08a","#fde047","#facc15","#eab308","#ca8a04","#a16207","#854d0e","#713f12","#422006"),purple:we("#faf5ff","#f3e8ff","#e9d5ff","#d8b4fe","#c084fc","#a855f7","#9333ea","#7e22ce","#6b21a8","#581c87","#3b0764"),orange:we("#fff7ed","#ffedd5","#fed7aa","#fdba74","#fb923c","#f97316","#ea580c","#c2410c","#9a3412","#7c2d12","#431407"),white:"#ffffff",black:"#000000"};function nr(e){const t=e.trim().replace(/^#/,""),n=t.length===3?t.split("").map(s=>s+s).join(""):t;if(n.length!==6||/[^0-9a-fA-F]/.test(n))throw new Error(`Invalid hex color: ${e}`);return{r:parseInt(n.slice(0,2),16),g:parseInt(n.slice(2,4),16),b:parseInt(n.slice(4,6),16)}}function Ed(e){return Math.max(0,Math.min(255,Math.round(e)))}function Cd({r:e,g:t,b:n}){const s=o=>Ed(o).toString(16).padStart(2,"0");return`#${s(e)}${s(t)}${s(n)}`}function Ad(e){const{r:t,g:n,b:s}=nr(e),o=r=>{const i=r/255;return i<=.03928?i/12.92:((i+.055)/1.055)**2.4};return .2126*o(t)+.7152*o(n)+.0722*o(s)}function ns(e,t="#18181b",n="#ffffff"){return Ad(e)>.45?t:n}function Rd(e,t){const{r:n,g:s,b:o}=nr(e),r=Math.max(0,Math.min(1,t));return Cd({r:n+(255-n)*r,g:s+(255-s)*r,b:o+(255-o)*r})}function Wt(e){const t=e.trim().replace(/^#/,"");return(t.length===3||t.length===6)&&!/[^0-9a-fA-F]/.test(t)}const jd={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,10:10,11:11,12:12,14:14,16:16,20:20,24:24,26:26,30:30,32:32,48:48,64:64,80:80,96:96,128:128},nn={"4xs":10,"3xs":11,"2xs":12,xs:13,code:13,sm:14,md:15,base:17,lg:19,xl:21,"2xl":23,"3xl":28,"4xl":36},Pd={normal:"400",medium:"500",semibold:"600",bold:"700"},qd={none:0,sm:2,base:4,md:6,lg:8,xl:12,"2xl":16,full:9999},Md={0:0,1:1,2:2},Nd={0:0,50:.5,100:1},Dd={xs:12,sm:14,md:16,lg:20},$d={diff:22},sr='system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif',or='ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace',mS='"MesloLGS NF", "MesloLGS Nerd Font Mono", "Cascadia Mono NF", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace';function Ld(e){const t=e==="dark"?"rgba(0,0,0,0.55)":"rgba(24,24,27,0.12)";return{sm:{color:t,offsetX:0,offsetY:1,radius:2,elevation:1},md:{color:t,offsetX:0,offsetY:3,radius:8,elevation:4},lg:{color:t,offsetX:0,offsetY:10,radius:24,elevation:12}}}const Od={statusSuccess:"#16a34a",statusDanger:"#dc2626",statusWarning:"#f59e0b",statusMerged:"#9333ea",statusInfo:"#3b82f6"},Bd={statusSuccess:"#15803d",statusDanger:"#b91c1c",statusWarning:"#d97706",statusMerged:"#7c3aed",statusInfo:"#2563eb"};function Fd(){return{keyword:C.purple[300],string:C.green[300],number:C.orange[300],boolean:C.orange[300],comment:C.zinc[500],function:C.blue[300],variable:C.zinc[200],type:C.teal[300],class:C.amber[300],constant:C.orange[300],operator:C.zinc[400],punctuation:C.zinc[400],tag:C.red[300],attribute:C.amber[300],property:C.blue[200],regexp:C.teal[300],escape:C.orange[200],heading:C.blue[300],link:C.blue[400],deleted:C.red[400],inserted:C.green[400]}}function zd(){return{keyword:C.purple[700],string:C.green[700],number:C.orange[700],boolean:C.orange[700],comment:C.zinc[500],function:C.blue[700],variable:C.zinc[800],type:C.teal[700],class:C.amber[700],constant:C.orange[700],operator:C.zinc[600],punctuation:C.zinc[600],tag:C.red[700],attribute:C.amber[700],property:C.blue[700],regexp:C.teal[700],escape:C.orange[700],heading:C.blue[700],link:C.blue[600],deleted:C.red[700],inserted:C.green[700]}}function rr(e,t,n){return{background:e,foreground:t,cursor:n,cursorAccent:e,selectionBackground:"rgba(255,255,255,0.18)",black:C.zinc[900],red:C.red[500],green:C.green[500],yellow:C.amber[500],blue:C.blue[500],magenta:C.purple[500],cyan:C.teal[500],white:C.zinc[300],brightBlack:C.zinc[600],brightRed:C.red[400],brightGreen:C.green[400],brightYellow:C.amber[400],brightBlue:C.blue[400],brightMagenta:C.purple[400],brightCyan:C.teal[400],brightWhite:C.zinc[50]}}function at(e){const t=C.zinc[50],n=ns(e.accent);return{surface0:e.surface0,surface1:e.surface1,surface2:e.surface2,surface3:e.surface3,surface4:e.surface4,surfaceDiffEmpty:e.surfaceDiffEmpty,surfaceSidebar:e.surfaceSidebar,surfaceSidebarHover:e.surfaceSidebarHover,surfaceWorkspace:e.surface1,foreground:t,foregroundMuted:e.mutedForeground,accent:e.accent,accentBright:e.accentBright,accentForeground:n,destructive:e.destructive,destructiveForeground:C.white,success:e.accent,successForeground:C.white,border:e.border,borderAccent:e.borderAccent,...Od,diffAddition:C.green[400],diffDeletion:C.red[500],scrollbarHandle:e.scrollbarHandle,background:e.surface0,popover:e.surface2,popoverForeground:t,primary:e.accent,secondary:e.surface2,muted:e.surface2,mutedForeground:e.mutedForeground,input:e.surface2,ring:e.accent,palette:C,syntax:Fd(),terminal:rr(e.surface0,t,e.accent)}}function Wd(){const e="#1a1a1e",t="#253e6f";return{surface0:"#ffffff",surface1:"#fafafa",surface2:"#f4f4f5",surface3:"#e4e4e7",surface4:"#d4d4d8",surfaceDiffEmpty:"#f6f6f6",surfaceSidebar:"#f4f4f5",surfaceSidebarHover:"#e9e9ec",surfaceWorkspace:"#ffffff",foreground:e,foregroundMuted:"#71717a",accent:t,accentBright:"#2f4f8e",accentForeground:ns(t),destructive:"#b04138",destructiveForeground:"#ffffff",success:t,successForeground:"#ffffff",border:"#e4e4e7",borderAccent:"#ececf1",...Bd,diffAddition:"#15803d",diffDeletion:"#b91c1c",scrollbarHandle:"#3f3f46",background:"#ffffff",popover:"#ffffff",popoverForeground:e,primary:t,secondary:"#f4f4f5",muted:"#f4f4f5",mutedForeground:"#71717a",input:"#f4f4f5",ring:t,palette:C,syntax:zd(),terminal:{...rr("#ffffff",e,t),selectionBackground:"rgba(0,0,0,0.15)",white:"#ffffff",brightWhite:"#fafafa"}}}const Ud={light:"#ffffff",dark:"#3b62b0",zinc:"#808080",midnight:"#4A6BA8",claude:"#D97757",ghostty:"#8caaee"},ir=["light","dark","zinc","midnight","claude","ghostty"];function Hd(e){if(e==="light")return Wd();switch(e){case"dark":return at({surface0:"#181B1A",surface1:"#1E2120",surface2:"#272A29",surface3:"#434645",surface4:"#595B5B",surfaceDiffEmpty:"#252827",surfaceSidebar:"#141716",surfaceSidebarHover:"#1c1f1e",mutedForeground:"#A1A5A4",scrollbarHandle:"#717574",border:"#252B2A",borderAccent:"#2f3135",accent:"#2e5cb8",accentBright:"#a2b4d7",destructive:"#c64f43"});case"zinc":return at({surface0:"#18181b",surface1:"#1f1f22",surface2:"#27272a",surface3:"#3f3f46",surface4:"#52525b",surfaceDiffEmpty:"#242427",surfaceSidebar:"#131316",surfaceSidebarHover:"#1b1b1e",mutedForeground:"#a1a1aa",scrollbarHandle:"#71717a",border:"#27272a",borderAccent:"#303036",accent:"#e4e4e7",accentBright:"#fafafa",destructive:"#c44a4a"});case"midnight":return at({surface0:"#161820",surface1:"#1c1e27",surface2:"#252731",surface3:"#3c3e4c",surface4:"#535564",surfaceDiffEmpty:"#222430",surfaceSidebar:"#121420",surfaceSidebarHover:"#1a1c28",mutedForeground:"#9a9db0",scrollbarHandle:"#6b6e82",border:"#242636",borderAccent:"#2e3040",accent:"#3b6fcf",accentBright:"#7eaaeb",destructive:"#c44a52"});case"claude":return at({surface0:"#1f1f1e",surface1:"#262523",surface2:"#2f2d2b",surface3:"#4a4745",surface4:"#605d5b",surfaceDiffEmpty:"#2a2826",surfaceSidebar:"#1a1918",surfaceSidebarHover:"#222120",mutedForeground:"#ada9a5",scrollbarHandle:"#78746f",border:"#2c2a27",borderAccent:"#36332f",accent:"#d97757",accentBright:"#e89a7f",destructive:"#cf513e"});case"ghostty":return at({surface0:"#282c34",surface1:"#2f333d",surface2:"#383c48",surface3:"#4a4f5e",surface4:"#5b6175",surfaceDiffEmpty:"#323643",surfaceSidebar:"#21252d",surfaceSidebarHover:"#292d36",mutedForeground:"#c8ccd8",scrollbarHandle:"#a0a4b2",border:"#353a47",borderAccent:"#3f4454",accent:"#89b4fa",accentBright:"#b4d0fc",destructive:"#c44a55"})}}const ar={};for(const e of ir){const t=e==="light"?"light":"dark";ar[e]={name:e,colorScheme:t,colors:Hd(e),swatch:Ud[e]}}const Vd=ar;function cr(e){const t=Vd[e];return{name:e,colorScheme:t.colorScheme,colors:t.colors,spacing:jd,fontSize:{...nn},fontFamily:{ui:sr,mono:or},lineHeight:{...$d},iconSize:Dd,fontWeight:Pd,borderRadius:qd,borderWidth:Md,opacity:Nd,shadow:Ld(t.colorScheme),swatch:t.swatch}}const Kd=nn.base,Gd=10,Yd=24;function Xd(e,t){const n=t.themeName??e.name,s=cr(n),o=t.uiFont&&t.uiFont.trim()!==""?t.uiFont:sr,r=t.monoFont&&t.monoFont.trim()!==""?t.monoFont:or,i={...s.fontSize};if(t.fontSize!=null){const u=Math.max(Gd,Math.min(Yd,t.fontSize))/Kd;for(const d of Object.keys(nn))i[d]=Math.round(nn[d]*u)}return{...s,fontSize:i,fontFamily:{ui:o,mono:r}}}function Jd(e){return cr(e)}const Zd="dark",Qd=16;function ef(e){const t=e/Qd;return`${Number(t.toFixed(4))}rem`}function tf(e){const t={};nf(e.colors,t);for(const[n,s]of Object.entries(e.spacing))t[`--pi-spacing-${n}`]=`${s}px`;for(const[n,s]of Object.entries(e.fontSize))t[`--pi-font-size-${n}`]=ef(s);t["--pi-font-ui"]=e.fontFamily.ui,t["--pi-font-mono"]=e.fontFamily.mono,t["--pi-line-height-diff"]=`${e.lineHeight.diff}px`;for(const[n,s]of Object.entries(e.iconSize))t[`--pi-icon-size-${n}`]=`${s}px`;for(const[n,s]of Object.entries(e.fontWeight))t[`--pi-font-weight-${n}`]=String(s);for(const[n,s]of Object.entries(e.borderRadius))t[`--pi-radius-${n}`]=s===9999?"9999px":`${s}px`;for(const[n,s]of Object.entries(e.borderWidth))t[`--pi-border-width-${n}`]=`${s}px`;for(const[n,s]of Object.entries(e.opacity))t[`--pi-opacity-${n}`]=String(s);for(const[n,s]of Object.entries(e.shadow))if(typeof s=="string")t[`--pi-shadow-${n}`]=s;else if(s&&typeof s=="object"){const o=s;t[`--pi-shadow-${n}`]=`${o.offsetX}px ${o.offsetY}px ${o.radius}px ${o.color}`}return t["--pi-color-scheme"]=e.colorScheme,t}function nf(e,t){const{palette:n,syntax:s,terminal:o,...r}=e;for(const[i,a]of Object.entries(r))typeof a=="string"&&(t[`--pi-color-${i}`]=a);s&&sf(s,t),o&&(t["--pi-terminal-bg"]=o.background,t["--pi-terminal-fg"]=o.foreground)}function sf(e,t){for(const[n,s]of Object.entries(e))typeof s=="string"&&(t[`--syntax-${of(n)}`]=s)}function of(e){return e.replace(/[A-Z]/g,t=>`-${t.toLowerCase()}`)}function rf(e){if(typeof document>"u")return;const t=document.documentElement.style;for(const[s,o]of Object.entries(e))t.setProperty(s,o);const n=e["--pi-color-scheme"];n&&document.documentElement.style.setProperty("color-scheme",n)}function af(e){const t=tf(e);rf(t)}const ct=l().min(1,"Asset path must not be empty"),cf=p({accent:l().refine(Wt,{message:"accent must be a valid #rrggbb hex color"}),accentBright:l().refine(Wt,{message:"accentBright must be a valid #rrggbb hex color"}).optional(),accentForeground:l().refine(Wt,{message:"accentForeground must be a valid #rrggbb hex color"}).optional(),swatch:l().refine(Wt,{message:"swatch must be a valid #rrggbb hex color"}).optional()}),lf=p({logoLight:ct,logoDark:ct,logoMark:ct.optional(),icon:ct,splash:ct.optional()}),uf=p({docs:l().url().optional(),support:l().url().optional(),issues:l().url().optional(),website:l().url().optional()}).optional(),df=p({copyright:l().optional(),companyName:l().optional()}).optional(),ff=p({productName:l().min(1,"productName must not be empty").optional(),shortName:l().optional(),tagline:l().optional(),colors:cf,assets:lf.optional(),links:uf,legal:df});function pf(e){const t=e.accent,n=e.accentBright??Rd(t,.35),s=e.accentForeground??ns(t),o=e.swatch??t;return{accent:t,accentBright:n,accentForeground:s,swatch:o}}function hf(e,t){return{...e,colors:{...e.colors,accent:t.accent,accentBright:t.accentBright,accentForeground:t.accentForeground,primary:t.accent,ring:t.accent},swatch:t.swatch}}const gf="pi-studio-appearance";function mf(e){if(e===void 0)return;const t=ff.safeParse(e);if(t.success)return t.data;const n=t.error.issues.map(s=>`${s.path.join(".")||"(root)"}: ${s.message}`);console.warn(`[ui-library] Ignoring invalid brandConfig, using the unbranded theme. ${n.join("; ")}`)}function _f(e){return e==="system"?typeof window<"u"&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":e}function yf(e,t,n={}){const s=n.storageKey??gf,o=mf(t);let r=g(),i=null;const a=new Set;function u(h,b){const y=_f(h),I=Jd(y);let _=Xd(I,{...b,themeName:y});if(o!=null&&o.colors){const S=pf(o.colors);_=hf(_,S)}return _}function d(){const h=JSON.stringify({mode:r.mode,settings:r.settings});e.set(s,h)}function g(){const h=e.get(s);let b=Zd,y={};if(h)try{const _=JSON.parse(h);_.mode&&(ir.includes(_.mode)||_.mode==="system")&&(b=_.mode),_.settings&&typeof _.settings=="object"&&(y=_.settings)}catch{}const I=u(b,y);return{mode:b,settings:y,resolvedTheme:I}}function f(){r={...r,resolvedTheme:u(r.mode,r.settings)},d();for(const h of a)h()}const m={getState(){return r},setMode(h){r={...r,mode:h},f(),m.apply()},updateSettings(h){r={...r,settings:{...r.settings,...h}},f(),m.apply()},apply(){af(r.resolvedTheme)},listen(){if(typeof window>"u")return()=>{};const h=window.matchMedia("(prefers-color-scheme: dark)"),b=()=>{r.mode==="system"&&(f(),m.apply())};return h.addEventListener("change",b),i=()=>h.removeEventListener("change",b),i},subscribe(h){return a.add(h),()=>a.delete(h)}};return m}const lr={get(e){var t;try{return((t=globalThis.localStorage)==null?void 0:t.getItem(e))??null}catch{return null}},set(e,t){var n;try{(n=globalThis.localStorage)==null||n.setItem(e,t)}catch{}}},ur=w.createContext(null),wf=w.createContext(null);function vf({store:e=lr,storageKey:t,brandConfig:n,children:s}){const o=w.useRef(null);o.current||(o.current=yf(e,n,{storageKey:t}),o.current.apply());const r=o.current,i=w.useSyncExternalStore(r.subscribe,r.getState);return w.useEffect(()=>r.listen(),[r]),w.useEffect(()=>{},[]),c.jsx(wf.Provider,{value:r,children:c.jsx(ur.Provider,{value:i,children:s})})}function _S(){const e=w.useContext(ur);if(!e)throw new Error("useAppearance must be used within a ThemeBoundary");return e}const Rs={xs:28,sm:32,md:36,lg:40},bf={xs:12,sm:14,md:16,lg:20},js={xs:8,sm:10,md:12,lg:16},Sf={xs:"var(--pi-font-size-xs)",sm:"var(--pi-font-size-sm)",md:"var(--pi-font-size-md)",lg:"var(--pi-font-size-base)"};function kf(e){const{disabled:t,loading:n}=e;return t||n?{opacity:.5,isGhostHover:!1}:{opacity:1,isGhostHover:!1}}const Sn=["#2563eb","#16a34a","#9333ea","#dc2626","#0d9488","#d97706","#db2777","#0891b2","#ea580c","#4f46e5","#059669","#7c3aed"];function xf(e){let t=0;for(let s=0;s<e.length;s++){const o=e.charCodeAt(s);t=t*31+o>>>0}return Sn[t%Sn.length]??Sn[0]}function If(e){const t=e.match(/[a-zA-Z0-9]/);return t?t[0].toUpperCase():"?"}function Tf(e){switch(e){case"default":return{};case"success":return{token:"statusSuccess"};case"error":return{token:"statusDanger"};case"warning":return{token:"statusWarning"}}}const ss=2200;function Ef(e,t,n,s=Date.now()){return{id:e,content:t,variant:n.variant??"default",durationMs:n.durationMs!==void 0?n.durationMs:ss,icon:n.icon,paused:!1,shownAt:s}}function Cf(e="Copied"){return{content:e,opts:{variant:"success",durationMs:ss}}}function Af(e){return{content:e,opts:{variant:"error",durationMs:ss}}}function Rf(e,t,n=Date.now()){if(e.durationMs===null)return null;e.paused;const s=n-e.shownAt;return Math.max(0,e.durationMs-s)}function jf(e){const{status:t,requiresAttention:n,attentionReason:s,showInactive:o}=e;if(!t)return null;if(n)switch(s){case"permission":case"question":return"statusWarning";case"error":return"statusDanger";case"finished":default:return"statusSuccess"}switch(t){case"running":case"queued":return"accent";case"waiting":return"statusWarning";case"finished":return"statusSuccess";case"error":return"statusDanger";case"idle":case"archived":return o?"foregroundMuted":null}}const Ps=8,Pf=36,qf="_btn_dkqaa_4",Mf="_secondary_dkqaa_47",Nf="_outline_dkqaa_56",Df="_ghost_dkqaa_65",$f="_destructive_dkqaa_75",Lf="_iconOnly_dkqaa_85",Of="_loadingSpinner_dkqaa_92",Bf="_piSpin_dkqaa_1",Ut={btn:qf,default:"_default_dkqaa_38",secondary:Mf,outline:Nf,ghost:Df,destructive:$f,iconOnly:Lf,loadingSpinner:Of,piSpin:Bf};function se({variant:e="default",size:t="md",loading:n=!1,disabled:s=!1,leftIcon:o,trailing:r,iconOnly:i=!1,children:a,style:u,className:d,ref:g,...f}){const{opacity:m}=kf({disabled:s??!1,loading:n}),h=s||n,b=bf[t];return c.jsxs("button",{ref:g,className:U(Ut.btn,Ut[e],i&&Ut.iconOnly,d),disabled:h,"aria-busy":n||void 0,style:{minHeight:Rs[t],paddingLeft:i?void 0:js[t],paddingRight:i?void 0:js[t],fontSize:Sf[t],opacity:m,...i?{width:Rs[t]}:{},...u},...f,children:[n?c.jsx(Li,{className:Ut.loadingSpinner,size:b,"aria-hidden":!0}):o?c.jsx("span",{"aria-hidden":!0,style:{display:"flex",alignItems:"center",flexShrink:0},children:o}):null,a,r&&!n&&c.jsx("span",{"aria-hidden":!0,style:{display:"flex",alignItems:"center",flexShrink:0},children:r})]})}const Ff="_iconBtn_1unr3_3",zf="_xs_1unr3_32",Wf="_sm_1unr3_36",qs={iconBtn:Ff,xs:zf,sm:Wf};function je({size:e="xs",hoverBase:t,className:n,style:s,type:o="button",...r}){return c.jsx("button",{type:o,className:U(qs.iconBtn,qs[e],n),style:t?{"--icon-btn-hover-base":t,...s}:s,...r})}const Uf={xs:12,sm:14,md:16,lg:20};function oe({icon:e,size:t="md",color:n="currentColor",className:s,...o}){const r=typeof t=="number"?t:Uf[t];return c.jsx(e,{size:r,color:n,className:s,"aria-hidden":o["aria-hidden"],"aria-label":o["aria-label"]})}const Hf="_dot_ve4v6_3",Vf="_spinner_ve4v6_16",Kf="_pulse_ve4v6_35",kn={dot:Hf,spinner:Vf,pulse:Kf},Gf={accent:"var(--pi-color-accent)",statusSuccess:"var(--pi-color-statusSuccess)",statusDanger:"var(--pi-color-statusDanger)",statusWarning:"var(--pi-color-statusWarning)",foregroundMuted:"var(--pi-color-foregroundMuted)"};function hn({className:e,pulse:t,"aria-label":n,...s}){const o=jf(s);if(!o)return null;const r=s.status==="running"&&!s.requiresAttention,i=r?"var(--pi-color-accentBright, #a2b4d7)":Gf[o]??"currentColor";return c.jsx("span",{className:`${r?kn.spinner:kn.dot}${t&&!r?` ${kn.pulse}`:""}${e?` ${e}`:""}`,style:r?{borderTopColor:i,borderRightColor:i}:{width:`var(--status-dot-size, ${Ps}px)`,height:`var(--status-dot-size, ${Ps}px)`,backgroundColor:i},role:n?"img":"presentation","aria-label":n})}const Yf="_avatar_1m9k9_4",Xf="_avatarImg_1m9k9_14",Jf="_avatarFallback_1m9k9_20",xn={avatar:Yf,avatarImg:Xf,avatarFallback:Jf};function Zf({projectKey:e,src:t,size:n=32,className:s}){const o=If(e),r=xf(e),i=Math.round(n*.4);return c.jsx("span",{className:`${xn.avatar}${s?` ${s}`:""}`,style:{width:n,height:n,backgroundColor:t?void 0:r},"aria-label":e,role:"img",children:t?c.jsx("img",{src:t,alt:e,className:xn.avatarImg}):c.jsx("span",{className:xn.avatarFallback,style:{fontSize:i},"aria-hidden":!0,children:o})})}const Qf="_spinner_1ibj3_3",ep={spinner:Qf},tp={xs:12,sm:16,md:20,lg:24},np={xs:1,sm:2,md:2,lg:3};function dr({size:e="md",color:t="currentColor",className:n,"aria-label":s="Loading"}){const o=typeof e=="number"?e:tp[e],r=typeof e=="number"?2:np[e];return c.jsx("span",{className:`${ep.spinner}${n?` ${n}`:""}`,role:"status","aria-label":s,style:{width:o,height:o,borderWidth:r,color:t}})}const sp="_panel_1de7t_3",op={panel:sp};function fr({className:e,...t}){return c.jsx("div",{className:U(op.panel,e),...t})}const rp="_emptyState_kp50e_3",ip={emptyState:rp};function $e({className:e,...t}){return c.jsx("div",{className:U(ip.emptyState,e),...t})}const ap="_input_756jo_3",cp="_textarea_756jo_32",On={input:ap,textarea:cp},sn=w.forwardRef(function({className:t,...n},s){return c.jsx("input",{ref:s,className:U(On.input,t),...n})}),lp=w.forwardRef(function({className:t,...n},s){return c.jsx("textarea",{ref:s,className:U(On.input,On.textarea,t),...n})}),up="_overlay_1k4ng_1",dp="_contentWrapper_1k4ng_7",fp="_dialog_1k4ng_16",pp="_header_1k4ng_28",hp="_title_1k4ng_36",gp="_body_1k4ng_43",mp="_footer_1k4ng_49",_p="_bare_1k4ng_58",yp="_bareBody_1k4ng_64",wp="_bareCloseBtn_1k4ng_68",vp="_visuallyHidden_1k4ng_73",ve={overlay:up,contentWrapper:dp,dialog:fp,header:pp,title:hp,body:gp,footer:mp,bare:_p,bareBody:yp,bareCloseBtn:wp,visuallyHidden:vp},pr=Mn;function Bn({open:e,onOpenChange:t,title:n,children:s,footer:o,width:r,className:i,bare:a=!1,onInteractOutside:u,onEscapeKeyDown:d,onCloseAutoFocus:g,onOpenAutoFocus:f}){return c.jsx(aa,{open:e,onOpenChange:t,children:c.jsxs(ca,{children:[c.jsx(la,{className:ve.overlay}),c.jsx("div",{className:ve.contentWrapper,children:c.jsxs(ua,{className:U(ve.dialog,a&&ve.bare,i),style:r!==void 0?{width:r}:void 0,onInteractOutside:u,onEscapeKeyDown:d,onCloseAutoFocus:g,onOpenAutoFocus:f,children:[a?c.jsx(Ss,{className:ve.visuallyHidden,children:n}):c.jsxs("div",{className:ve.header,children:[c.jsx(Ss,{className:ve.title,children:n}),c.jsx(Mn,{asChild:!0,children:c.jsx(je,{size:"sm","aria-label":"Close",children:c.jsx(St,{size:16})})})]}),c.jsx("div",{className:U(ve.body,a&&ve.bareBody),children:s}),a&&c.jsx(Mn,{asChild:!0,children:c.jsx(je,{size:"sm","aria-label":"Close",className:ve.bareCloseBtn,style:{background:"var(--pi-color-surface1)",border:"1px solid var(--pi-color-border)",borderRadius:"50%"},children:c.jsx(St,{size:16})})}),o&&c.jsx("div",{className:ve.footer,children:o})]})})]})})}const bp="_handle_1j18v_1",Sp={handle:bp};function Ms({side:e,onResize:t,className:n}){const s=w.useRef(0),o=w.useRef(null),r=w.useCallback(u=>{const d=u.clientX-s.current;s.current=u.clientX,t(e==="left"?d:-d)},[t,e]),i=w.useCallback(u=>{window.removeEventListener("pointermove",r),window.removeEventListener("pointerup",i),window.removeEventListener("pointercancel",i),document.body.style.cursor="",document.body.style.userSelect="";const d=o.current;d!=null&&d.hasPointerCapture(u.pointerId)&&d.releasePointerCapture(u.pointerId)},[r]);function a(u){u.preventDefault(),s.current=u.clientX,u.currentTarget.setPointerCapture(u.pointerId),document.body.style.cursor="col-resize",document.body.style.userSelect="none",window.addEventListener("pointermove",r),window.addEventListener("pointerup",i),window.addEventListener("pointercancel",i)}return c.jsx("div",{ref:o,className:U(Sp.handle,n),onPointerDown:a,role:"separator","aria-orientation":"vertical"})}const kp="_trigger_u4hed_3",xp="_content_u4hed_15",Ip="_item_u4hed_25",Tp="_danger_u4hed_44",Ep="_groupLabel_u4hed_53",Cp="_sep_u4hed_66",tt={trigger:kp,content:xp,item:Ip,danger:Tp,groupLabel:Ep,sep:Cp},gn=w.forwardRef(function({x:t,y:n},s){return c.jsx("button",{ref:s,type:"button",className:tt.trigger,style:{left:t,top:n},"aria-hidden":!0,tabIndex:-1})});function Pt({className:e,minWidth:t,style:n,sideOffset:s=2,...o}){const r=t===void 0?n:{minWidth:t,...n};return c.jsx(da,{children:c.jsx(fa,{className:U(tt.content,e),align:"start",sideOffset:s,style:r,...o})})}function yS({label:e,className:t,children:n,...s}){const o=w.useId();return c.jsxs(ga,{className:t,"aria-labelledby":e===void 0?void 0:o,...s,children:[e!==void 0&&c.jsx(ma,{id:o,className:tt.groupLabel,children:e}),n]})}function G({className:e,danger:t,...n}){return c.jsx(pa,{className:U(tt.item,t&&tt.danger,e),...n})}function ze(e){return c.jsx(ha,{className:tt.sep,...e})}const Ap="_content_1u220_3",Rp={content:Ap},Ns={Root:_a,Trigger:ya};function jp({className:e,width:t,style:n,side:s="top",align:o="start",sideOffset:r=6,collisionPadding:i=8,...a}){return c.jsx(wa,{children:c.jsx(va,{className:U(Rp.content,e),side:s,align:o,sideOffset:r,collisionPadding:i,style:t===void 0?n:{width:t,...n},...a})})}const on=ae()(()=>({message:"",politeness:"polite"})),Pp=4e3;let _t=null;function hr(){_t!==null&&(clearTimeout(_t),_t=null)}function mn(e,t="polite"){hr(),on.setState({message:e,politeness:t})}function os(){hr(),_t=setTimeout(()=>{_t=null,on.setState({message:""})},Pp)}const qp="_visuallyHidden_rig62_2",Ds={visuallyHidden:qp};function Mp(){const e=on(n=>n.message),t=on(n=>n.politeness);return c.jsxs(c.Fragment,{children:[c.jsx("span",{className:Ds.visuallyHidden,role:"status","aria-live":"polite",children:t==="polite"?e:""}),c.jsx("span",{className:Ds.visuallyHidden,role:"alert",children:t==="assertive"?e:""})]})}const rn=3;let Np=0;const yt=new Map;function $s(e){const t=yt.get(e);t!==void 0&&(clearTimeout(t),yt.delete(e))}const Ee=ae((e,t)=>{function n(s){const o=t().toasts.findIndex(a=>a.id===s);if(o===-1||o>=rn||yt.has(s))return;const r=t().toasts[o];if(r.durationMs===null||r.paused)return;const i={...r,shownAt:Date.now()};e(a=>({toasts:a.toasts.map(u=>u.id===s?i:u)})),yt.set(s,setTimeout(()=>t().dismiss(s),i.durationMs))}return{toasts:[],show(s,o={}){const r=`toast-${++Np}`;return e(i=>({toasts:[...i.toasts,Ef(r,s,o)]})),n(r),r},copied(s){const{content:o,opts:r}=Cf(s);return t().show(o,r)},error(s){const{content:o,opts:r}=Af(s);return t().show(o,r)},dismiss(s){$s(s),e(o=>({toasts:o.toasts.filter(r=>r.id!==s)}));for(const o of t().toasts.slice(0,rn))n(o.id)},dismissTop(){const s=t().toasts[0];s&&t().dismiss(s.id)},pause(s){const o=t().toasts.find(i=>i.id===s);if(!o||o.durationMs===null||o.paused)return;const r=Rf(o,null,Date.now())??o.durationMs;$s(s),e(i=>({toasts:i.toasts.map(a=>a.id===s?{...a,paused:!0,pausedRemaining:r}:a)}))},resume(s){const o=t().toasts.find(u=>u.id===s);if(!o||!o.paused)return;const r=o.pausedRemaining??o.durationMs??0,i=Date.now()-((o.durationMs??0)-r),a={...o,paused:!1,pausedRemaining:void 0,shownAt:i};e(u=>({toasts:u.toasts.map(d=>d.id===s?a:d)})),yt.set(s,setTimeout(()=>t().dismiss(s),r))}}}),Dp="_viewport_rssrd_1",$p="_toast_rssrd_13",Lp="_exiting_rssrd_43",Op="_content_rssrd_48",Bp="_close_rssrd_53",Ke={viewport:Dp,toast:$p,exiting:Lp,content:Op,close:Bp},Fp=180;function zp(){return typeof window<"u"&&window.matchMedia("(prefers-reduced-motion: reduce)").matches}function Wp(){const e=Ee(f=>f.toasts),t=e.slice(0,rn),n=Ee(f=>f.dismiss),s=Ee(f=>f.pause),o=Ee(f=>f.resume),r=w.useRef(new Map);for(const f of t)r.current.set(f.id,f);const i=w.useRef([]),[a,u]=w.useState([]),d=w.useRef(new Set);w.useEffect(()=>{const f=d.current;return()=>{for(const m of f)window.clearTimeout(m)}},[]),w.useEffect(()=>{const f=e.slice(0,rn).map(y=>y.id),m=new Set(f),h=i.current.filter(y=>!m.has(y));if(i.current=f,h.length===0)return;if(zp()){for(const y of h)r.current.delete(y);return}u(y=>[...y,...h]);const b=window.setTimeout(()=>{d.current.delete(b),u(y=>y.filter(I=>!h.includes(I)));for(const y of h)r.current.delete(y)},Fp);d.current.add(b)},[e]);const g=[...t,...a.filter(f=>!t.some(m=>m.id===f)).map(f=>r.current.get(f)).filter(f=>f!==void 0)];return g.length===0?null:ji.createPortal(c.jsx("div",{className:Ke.viewport,role:"status","aria-live":"polite",children:g.map(f=>{const{token:m}=Tf(f.variant),h=a.includes(f.id)&&!t.some(b=>b.id===f.id);return c.jsxs("div",{className:h?`${Ke.toast} ${Ke.exiting}`:Ke.toast,style:m?{"--toast-rail":`var(--pi-color-${m})`}:void 0,onMouseEnter:()=>s(f.id),onMouseLeave:()=>o(f.id),children:[c.jsx("span",{className:Ke.content,children:f.content}),c.jsx("button",{type:"button",className:Ke.close,"aria-label":"Dismiss",onClick:()=>n(f.id),children:c.jsx(oe,{icon:St,size:"xs","aria-hidden":!0})})]},f.id)})}),document.body)}const gr=w.createContext(null);function Up(e){const t=w.useContext(gr);if(!t)throw new Error(`${e} must be rendered inside <WorkbenchProvider> (or <Workbench>, which includes it).`);return t}async function Hp(e){var o;if((o=navigator.clipboard)!=null&&o.writeText)try{await navigator.clipboard.writeText(e);return}catch{}const t=document.activeElement,n=(t instanceof HTMLElement?t.closest('[role="dialog"], [role="menu"]'):null)??document.body,s=document.createElement("textarea");s.value=e,s.setAttribute("aria-hidden","true"),s.style.position="fixed",s.style.opacity="0",n.appendChild(s),s.focus(),s.select();try{const r=document.activeElement===s&&s.selectionStart===0&&s.selectionEnd===s.value.length;if(!document.execCommand("copy")||!r)throw new Error('execCommand("copy") did not copy the requested text')}finally{s.remove(),t instanceof HTMLElement&&t.focus()}}const Vp=`
3
3
  const pending = new Set();
4
4
  self.onmessage = (e) => {
5
5
  const msg = e.data;
@@ -14,6 +14,6 @@ var Ai=Object.defineProperty;var Ri=(e,t,n)=>t in e?Ai(e,t,{enumerable:!0,config
14
14
  self.postMessage({ id: msg.id });
15
15
  }, msg.ms);
16
16
  };
17
- `;function Kp(){return{setTimer:(e,t)=>setTimeout(e,t),clearTimer:e=>clearTimeout(e)}}function Gp(){const e=new Blob([Vp],{type:"application/javascript"}),t=URL.createObjectURL(e),n=new Worker(t);URL.revokeObjectURL(t);const s=new Map;let r=1;return n.addEventListener("message",o=>{const i=s.get(o.data.id);s.delete(o.data.id),i==null||i()}),{setTimer:(o,i)=>{const a=r++;return s.set(a,o),n.postMessage({id:a,ms:i}),a},clearTimer:o=>{const i=o;s.delete(i)&&n.postMessage({id:i,cancel:!0})}}}let lt=null;function Ls(){if(lt)return lt;try{lt=Gp()}catch{lt=Kp()}return lt}function Yp(){return{setTimer:(e,t)=>Ls().setTimer(e,t),clearTimer:e=>Ls().clearTimer(e)}}function Xp(e,t){if(e.mode==="relay")return Cu({daemonPublicKey:e.daemonPublicKey});if(t.password){const n=`pi-studio.bearer.${t.password}`;return Kr(s=>new WebSocket(s,[n]))}}function Jp(e){const t=()=>{document.visibilityState==="visible"&&e()};return document.addEventListener("visibilitychange",t),window.addEventListener("online",e),()=>{document.removeEventListener("visibilitychange",t),window.removeEventListener("online",e)}}function Zp(){return{createTransport:Xp,timers:Yp(),onResume:Jp}}async function Os(e,t){const n=[],s=await e.downloadTo(t,o=>void n.push(o));return{blob:new Blob(n,{type:s.mimeType||"application/octet-stream"}),fileName:s.fileName,mimeType:s.mimeType}}function Qp(e){return{async upload(t,n,s){if(!(n instanceof Blob))throw new Error("the browser host can only upload File/Blob sources");const r=t?`${t}/${n.name}`:n.name;await e().upload(r,n,{onProgress:s==null?void 0:s.onProgress})},async saveToDisk(t){const n=await Os(e(),t),s=URL.createObjectURL(n.blob),r=document.createElement("a");r.href=s,r.download=n.fileName||t.split("/").pop()||"download",r.rel="noopener",document.body.appendChild(r),r.click(),r.remove(),setTimeout(()=>URL.revokeObjectURL(s),0)},async openForView(t){const n=await Os(e(),t),s=URL.createObjectURL(n.blob);let r=!1;return{url:s,...n.mimeType?{mimeType:n.mimeType}:{},...n.fileName?{fileName:n.fileName}:{},release(){r||(r=!0,URL.revokeObjectURL(s))}}}}}const eh=256;function Bs(e){const t=e.startsWith("#")?e.slice(1):e,n=new URLSearchParams(t).get("agent");if(!(!n||n.length>eh))return n}function th(e){const t=e.indexOf("#");if(t===-1)return e;const n=e.slice(0,t),s=e.slice(t+1).split("&").filter(r=>r!==""&&new URLSearchParams(r).keys().next().value!=="agent");return s.length===0?n:`${n}#${s.join("&")}`}function nh(e){const t=e.consume();if(!t)return;const n=e.findByAgentId(t);n?e.select(n):e.notifyNotFound(t),e.consumeSource()}function sh(e){if(e.hash.includes("offer="))return{url:e.href,connect:!0};const t=new URLSearchParams(e.search),n=t.get("pair"),s=t.get("host"),r=t.get("password"),o=t.get("cwd"),i=n??s,a=n!==null||t.get("connect")==="1";return!i&&!r&&!o&&!a?null:{...i?{url:i}:{},...r?{password:r}:{},...o?{cwd:o}:{},connect:a}}function rh(){return{initialConnect:()=>sh(window.location),agentDeepLink:{current:()=>Bs(window.location.hash)??null,subscribe(e){const t=()=>{const n=Bs(window.location.hash);n&&e(n)};return window.addEventListener("hashchange",t),()=>window.removeEventListener("hashchange",t)},consume(){window.history.replaceState(null,"",th(window.location.href))}}}}const Fs=new WeakMap;function oh(e){let t=Fs.get(e);return t||(t=new Id(e),t.start(),Fs.set(e,t)),t}function zs(e){const t=e.trim();if(t==="")return t;const n=t.match(/^([a-z][a-z0-9+.-]*):\/\//i);if(!n)return`ws://${t.replace(/\/+$/,"")}`;const s=n[1].toLowerCase(),r=t.slice(n[0].length).replace(/\/+$/,"");switch(s){case"http":return`ws://${r}`;case"https":return`wss://${r}`;case"ws":case"wss":return`${s}://${r}`;default:return t}}function rs(e){const t=Zr(e);return t!=null&&t.relay?{mode:"relay",url:Eu(t.relay),daemonPublicKey:t.publicKey}:t!=null&&t.host?{mode:"direct",url:zs(t.host)}:{mode:"direct",url:zs(e)}}const ih=32,pe=new Map;function ah(){var e;for(;pe.size>ih;){let t=null;for(const[n,s]of pe)if(s.refs===0&&s.entry){(e=s.release)==null||e.call(s),t=n;break}if(t===null)return;pe.delete(t)}}function wS(e,t){const n=pe.get(e);if(n)return n.refs+=1,pe.delete(e),pe.set(e,n),n.entry?Promise.resolve(n.entry):n.pending;const s={refs:1,entry:null,release:null,pending:null};return pe.set(e,s),ah(),s.pending=t(e).then(r=>{const o={objectUrl:r.url,mimeType:r.mimeType};return pe.get(e)===s?(s.entry=o,s.release=()=>r.release(),s.pending=null):r.release(),o}).catch(r=>{throw pe.get(e)===s&&pe.delete(e),r}),s.pending}function vS(e){const t=pe.get(e);t&&(t.refs=Math.max(0,t.refs-1))}function ch(){var e;for(const t of pe.values())(e=t.release)==null||e.call(t);pe.clear()}function lh(){return"web-"+Math.random().toString(36).slice(2,10)}const N=ae()((e,t)=>({status:"idle",serverInfo:null,error:null,daemon:null,client:null,reconnection:null,async connect(n){t().disconnect();const s=rs(n.url),{app:r,connection:o}=V();let i;try{i=o.createTransport(s,{password:n.password})}catch(f){throw e({error:f instanceof Error?f.message:String(f)}),f}const a=new ju({url:s.url,clientId:n.clientId??lh(),clientType:"browser",platform:r.platform,capabilities:{[Ot.inline_image_markdown]:!0,[Ot.file_link_markdown]:!0,[Ot.mermaid_diagram_markdown]:!0,[Ot.terminal_reflowable_snapshot]:!0},transport:i,rpcTimeoutMs:1800*1e3}),u=new Uu(a),{timers:d}=o,g=new Td(a,{setTimer:(f,m)=>d.setTimer(f,m),clearTimer:f=>d.clearTimer(f)});a.onStateChange(f=>e({status:f})),g.onReconnected(()=>e({error:null})),g.onReconnectFailed(f=>{e({error:f instanceof Error?f.message:String(f)})}),e({daemon:a,client:u,reconnection:g,error:null,status:"connecting"});try{const f=await a.connect();e({serverInfo:f}),g.start()}catch(f){throw e({error:f instanceof Error?f.message:String(f)}),f}},disconnect(){const{daemon:n,reconnection:s}=t();s==null||s.stop(),n==null||n.close(),ch(),e({status:"idle",serverInfo:null,daemon:null,client:null,reconnection:null})}}));function os(){return N(e=>e.client)}function mo(){var e;return((e=N.getState().serverInfo)==null?void 0:e.homeDir)??null}function uh(){const{daemon:e}=N.getState();if(!e)throw new Error("not connected");return oh(e)}const dh={title:"Pi-Studio",version:""},fh={confirm:async e=>window.confirm(e),alert:async e=>window.alert(e),prompt:async(e,t)=>window.prompt(e,t)};function _o(e={}){return{app:e.app??dh,storage:co,clipboard:{writeText:Hp},dialogs:fh,links:{},launch:rh(),connection:Zp(),files:Qp(uh),...e.pdf?{pdf:e.pdf}:{}}}let wt=null,Ws=null;const Bn=new Set;function Us(e){if(wt)return wt;wt=e;for(const t of Bn)t(e);return e}function V(){return wt||(Ws??(Ws=_o()),Ws)}function ph(e){return Bn.add(e),()=>Bn.delete(e)}const vt=ae((e,t)=>({pendingAgentId:void 0,restored:!1,set(n){e({pendingAgentId:n})},consume(){const n=t().pendingAgentId;return e({pendingAgentId:void 0}),n},markRestored(){e({restored:!0})}})),mn={rows:[],streamingAssistantIndex:null,streamingReasoningIndex:null,toolIndexByCallId:{}};let Hs=0;function Pe(){return Hs+=1,`row-${Hs}`}function hh(e){switch(e.kind){case"shell":return e.command??"";case"read":case"write":return e.path??"";case"edit":return e.path??"";case"search":return e.query??"";case"fetch":return e.url??"";case"task":return e.description??"";default:return""}}function gh(e,t){return e??`${t.kind}:${hh(t)}`}function nt(e,t){if(t===null)return;const n=e[t];n&&(n.kind!=="assistant"&&n.kind!=="reasoning"||n.streaming&&(e[t]={...n,streaming:!1}))}function yo(e){if(e.streamingAssistantIndex===null&&e.streamingReasoningIndex===null)return e;const t=e.rows.slice();return nt(t,e.streamingAssistantIndex),nt(t,e.streamingReasoningIndex),{...e,rows:t,streamingAssistantIndex:null,streamingReasoningIndex:null}}function mh(e){return yo(e)}function _h(e,t,n,s){var a;const r=e.rows.slice();nt(r,e.streamingReasoningIndex);let o=e.streamingAssistantIndex;if(o===null||((a=r[o])==null?void 0:a.kind)!=="assistant"){if(!t)return{...e,rows:r,streamingAssistantIndex:null,streamingReasoningIndex:null};const u={kind:"assistant",id:Pe(),text:"",streaming:!0,timestamp:s};r.push(u),o=r.length-1}const i=r[o];return!i||i.kind!=="assistant"?e:(r[o]={...i,text:i.text+t,streaming:!n},{...e,rows:r,streamingAssistantIndex:n?null:o,streamingReasoningIndex:null})}function yh(e,t,n,s){var a;const r=e.rows.slice();nt(r,e.streamingAssistantIndex);let o=e.streamingReasoningIndex;if(o===null||((a=r[o])==null?void 0:a.kind)!=="reasoning"){if(!t)return{...e,rows:r,streamingAssistantIndex:null,streamingReasoningIndex:null};const u={kind:"reasoning",id:Pe(),text:"",streaming:!0,timestamp:s};r.push(u),o=r.length-1}const i=r[o];return!i||i.kind!=="reasoning"?e:(r[o]={...i,text:i.text+t,streaming:!n},{...e,rows:r,streamingReasoningIndex:n?null:o,streamingAssistantIndex:null})}function wh(e,t){if(e.kind!==t.kind)return t;const n={...e};for(const[s,r]of Object.entries(t))r!==void 0&&r!==""&&(n[s]=r);return n}function vh(e,t,n){const s=wh(e,t);if(n==="running")return s;const{output:r,...o}=s;return t.output?{...o,output:t.output}:o}function bh(e,t,n){var u;const s=gh(t.callId,t.tool),r=t.status==="completed"||t.status==="error"?t.status:"running",o=e.toolIndexByCallId[s],i=e.rows.slice();if(nt(i,e.streamingAssistantIndex),nt(i,e.streamingReasoningIndex),o!==void 0&&((u=i[o])==null?void 0:u.kind)==="tool"){const d=i[o];if(d.kind!=="tool")return e;const g=t.status??d.statusText;return i[o]={...d,tool:vh(d.tool,t.tool,r),status:r,...g!==void 0?{statusText:g}:{}},{...e,rows:i,streamingAssistantIndex:null,streamingReasoningIndex:null}}const a={kind:"tool",id:Pe(),callId:s,tool:t.tool,status:r,...t.status!==void 0?{statusText:t.status}:{},timestamp:n};return i.push(a),{...e,rows:i,toolIndexByCallId:{...e.toolIndexByCallId,[s]:i.length-1},streamingAssistantIndex:null,streamingReasoningIndex:null}}function Sh(e){if(!e.rows.some(n=>n.kind==="compaction"&&n.phase==="started"))return e;const t=e.rows.map(n=>n.kind==="compaction"&&n.phase==="started"?{...n,phase:"canceled"}:n);return{...e,rows:t}}function wo(e,t){if(!e.rows.some(s=>s.kind==="tool"&&s.status==="running"))return e;const n=e.rows.map(s=>s.kind==="tool"&&s.status==="running"?{...s,status:t,statusText:t}:s);return{...e,rows:n}}function is(e){return Sh(yo(e))}function kh(e,t,n){const{kind:s,...r}=t,o=Object.fromEntries(Object.entries(r).filter(([,u])=>u!==void 0)),i=e.rows.findIndex(u=>u.kind==="compaction"&&u.compactionId===t.compactionId);if(i===-1){const u={...o,kind:"compaction",id:Pe(),timestamp:n};return{...e,rows:[...e.rows,u]}}const a=e.rows.slice();return a[i]={...a[i],...o},{...e,rows:a}}function xh(e,t,n){const s=wo(is(e),"error"),r={kind:"error",id:Pe(),text:t||"turn failed",timestamp:n};return{...s,rows:[...s.rows,r]}}function Ih(e,t){const n=wo(is(e),"canceled"),s={kind:"system",id:Pe(),text:"(canceled)",timestamp:t};return{...n,rows:[...n.rows,s]}}function Th(e,t,n){const s={kind:"error",id:Pe(),text:t||"error",timestamp:n};return{...e,rows:[...e.rows,s]}}function Eh(e,t,n,s,r){if(s!==void 0){const i=e.rows.findIndex(a=>a.kind==="user"&&a.pending&&a.clientMessageId===s);if(i!==-1){const a=e.rows.slice(),u=a[i];if((u==null?void 0:u.kind)==="user")return a[i]={...u,text:t,images:n,pending:!1,...r!==void 0?{timestamp:r}:{}},{...e,rows:a}}}const o={kind:"user",id:Pe(),text:t,images:n,clientMessageId:s,timestamp:r};return{...e,rows:[...e.rows,o]}}function Ch(e,t){let n=!1;const s=e.rows.map(r=>r.kind!=="user"||!r.queued||t.includes(r.text)?r:(n=!0,{...r,queued:!1}));return n?{...e,rows:s}:e}function vo(e,t,n){switch(t.kind){case"turn_started":return mh(e);case"user_message":return Eh(e,t.text??"",t.images,t.messageId,n);case"assistant_message":return _h(e,t.text??"",t.final??!1,n);case"reasoning":return yh(e,t.text??"",t.final??!1,n);case"tool_call":return bh(e,t,n);case"turn_completed":return is(e);case"turn_failed":return xh(e,t.error,n);case"turn_canceled":return Ih(e,n);case"error":return Th(e,t.message,n);case"queue_update":return Ch(e,t.steering??[]);case"compaction":return kh(e,t,n);default:return e}}function bo(e){return e.reduce((t,{event:n,timestamp:s})=>vo(t,n,s),mn)}function Ah(e,t,n,s,r,o){const i={kind:"user",id:Pe(),text:n,images:s,clientMessageId:t,pending:!0,queued:r,timestamp:o};return{...e,rows:[...e.rows,i]}}function Rh(e,t){const n=e.rows.findIndex(o=>o.kind==="user"&&o.pending&&o.clientMessageId===t);if(n===-1)return e;const s=e.rows.slice(),r=s[n];return(r==null?void 0:r.kind)!=="user"?e:(s[n]={...r,pending:!1,failed:!0},{...e,rows:s})}let Vs=0;function jh(){return Vs+=1,`s-${Date.now().toString(36)}-${Vs}`}const A=ae()((e,t)=>({sessions:{},order:[],activeSessionId:null,createSession(n){const s=jh(),r={id:s,agentId:null,title:"New chat",status:"idle",cwd:n,timeline:mn,userMessageCount:0};return e(o=>({sessions:{...o.sessions,[s]:r},order:[s,...o.order],activeSessionId:s})),s},hydrate(n){e(s=>s.sessions[n.id]?s:{sessions:{...s.sessions,[n.id]:n},order:[...s.order,n.id]})},bindAgent(n,s){e(r=>{const o=r.sessions[n];return o?{sessions:{...r.sessions,[n]:{...o,agentId:s}}}:r})},setStatus(n,s){e(r=>{const o=r.sessions[n];return o?{sessions:{...r.sessions,[n]:{...o,status:s}}}:r})},setStatusByAgentId(n,s){const r=t().findByAgentId(n);r&&t().setStatus(r.id,s)},setModel(n,s,r){e(o=>{const i=o.sessions[n];return i?{sessions:{...o.sessions,[n]:{...i,model:s,modelProvider:r}}}:o})},setModelByAgentId(n,s,r){const o=t().findByAgentId(n);o&&t().setModel(o.id,s,r)},setThinkingLevel(n,s){e(r=>{const o=r.sessions[n];return o?{sessions:{...r.sessions,[n]:{...o,thinkingLevel:s}}}:r})},setThinkingLevelByAgentId(n,s){const r=t().findByAgentId(n);r&&t().setThinkingLevel(r.id,s)},setTitle(n,s){e(r=>{const o=r.sessions[n];return o?{sessions:{...r.sessions,[n]:{...o,title:s}}}:r})},setCwd(n,s){e(r=>{const o=r.sessions[n];return o?{sessions:{...r.sessions,[n]:{...o,cwd:s}}}:r})},applyStreamEvent(n,s,r){e(o=>{const i=o.sessions[n];if(!i)return o;const a=vo(i.timeline,s,r);return{sessions:{...o.sessions,[n]:{...i,timeline:a}}}})},setTitleByAgentId(n,s){const r=t().findByAgentId(n);r&&t().setTitle(r.id,s)},addOptimisticUserMessage(n,s,r,o,i){e(a=>{const u=a.sessions[n];if(!u)return a;const d=Ah(u.timeline,s,r,o,i,new Date().toISOString());return{sessions:{...a.sessions,[n]:{...u,timeline:d,userMessageCount:u.userMessageCount+1}}}})},markUserMessageFailed(n,s){e(r=>{const o=r.sessions[n];if(!o)return r;const i=Rh(o.timeline,s);return{sessions:{...r.sessions,[n]:{...o,timeline:i}}}})},setTimeline(n,s){e(r=>{const o=r.sessions[n];if(!o)return r;const i=s.rows.filter(a=>a.kind==="user").length;return{sessions:{...r.sessions,[n]:{...o,timeline:s,userMessageCount:i}}}})},setTimelineByAgentId(n,s){const r=t().findByAgentId(n);r&&t().setTimeline(r.id,s)},activate(n){e({activeSessionId:n})},remove(n){e(s=>{const{[n]:r,...o}=s.sessions,i=s.order.filter(u=>u!==n),a=s.activeSessionId===n?i[0]??null:s.activeSessionId;return{sessions:o,order:i,activeSessionId:a}})},findByAgentId(n){return Object.values(t().sessions).find(s=>s.agentId===n)}})),Ph=100,qh=480,Mh=220,Nh=280;function Ht(e){return Math.min(qh,Math.max(Ph,e))}const $=ae()(e=>({host:"ws://127.0.0.1:6767",password:"",cwd:"~",cwdPickerOpen:!1,settingsOpen:!1,sessionMenu:null,workspaceMenu:null,tabMenu:null,fileMenu:null,rightSidebarTab:"files",collapsedWorkspaces:new Set,leftSidebarCollapsed:!1,rightSidebarCollapsed:!1,leftSidebarWidth:Mh,rightSidebarWidth:Nh,setHost:t=>e({host:t}),setPassword:t=>e({password:t}),setCwd:t=>e({cwd:t}),openCwdPicker:()=>e({cwdPickerOpen:!0}),closeCwdPicker:()=>e({cwdPickerOpen:!1}),openSettings:()=>e({settingsOpen:!0}),closeSettings:()=>e({settingsOpen:!1}),openSessionMenu:(t,n,s)=>e({sessionMenu:{sessionId:t,x:n,y:s}}),closeSessionMenu:()=>e({sessionMenu:null}),openWorkspaceMenu:(t,n,s)=>e({workspaceMenu:{cwd:t,x:n,y:s}}),closeWorkspaceMenu:()=>e({workspaceMenu:null}),openTabMenu:(t,n,s)=>e({tabMenu:{tabId:t,x:n,y:s}}),closeTabMenu:()=>e({tabMenu:null}),openFileMenu:(t,n,s,r,o)=>e({fileMenu:{path:t,isDirectory:n,x:s,y:r,background:o}}),closeFileMenu:()=>e({fileMenu:null}),setRightSidebarTab:t=>e({rightSidebarTab:t}),toggleWorkspaceCollapsed:t=>e(n=>{const s=new Set(n.collapsedWorkspaces);return s.has(t)?s.delete(t):s.add(t),{collapsedWorkspaces:s}}),setCollapsedWorkspaces:t=>e({collapsedWorkspaces:t}),toggleLeftSidebar:()=>e(t=>({leftSidebarCollapsed:!t.leftSidebarCollapsed})),toggleRightSidebar:()=>e(t=>({rightSidebarCollapsed:!t.rightSidebarCollapsed})),setLeftSidebarWidth:t=>e({leftSidebarWidth:Ht(t)}),setRightSidebarWidth:t=>e({rightSidebarWidth:Ht(t)}),resizeLeftSidebar:t=>e(n=>({leftSidebarWidth:Ht(n.leftSidebarWidth+t)})),resizeRightSidebar:t=>e(n=>({rightSidebarWidth:Ht(n.rightSidebarWidth+t)}))})),Ks=new WeakMap;function Dh(e,t="pi"){const n=Ks.get(e);if(n)return n;const s=e.providers.resolveDefaultModel(t).then(r=>({model:r.model,modelProvider:r.modelProvider,thinkingLevel:r.thinkingLevel})).catch(()=>({}));return Ks.set(e,s),s}const Xt=new Map;function $h(e,t){const n=A.getState().sessions[t];if(!n)return Promise.reject(new Error(`unknown session: ${t}`));if(n.agentId)return Promise.resolve(n.agentId);const s=Xt.get(t);if(s)return s;const r=(async()=>{if(!n.model){const u=await Dh(e),d=A.getState().sessions[t];u.model&&d&&!d.model&&A.getState().setModel(t,u.model,u.modelProvider);const g=A.getState().sessions[t];u.thinkingLevel&&g&&g.thinkingLevel===void 0&&A.getState().setThinkingLevel(t,u.thinkingLevel)}const o=A.getState().sessions[t];if(!o)throw new Error(`unknown session: ${t}`);const i={provider:"pi",cwd:o.cwd||"~"};o.model&&(i.model=o.model),o.modelProvider&&(i.modelProvider=o.modelProvider);const a=await e.createAgent({config:i,labels:{}});return A.getState().bindAgent(t,a.agentId),a.agentId})();return Xt.set(t,r),r.finally(()=>Xt.delete(t)),r}async function Lh(e,t){var r;const n=A.getState().sessions[t];if(!n||n.userMessageCount>0||n.timeline.rows.length>0)return!1;await((r=Xt.get(t))==null?void 0:r.catch(()=>{}));const s=A.getState().sessions[t];return s?(s.agentId&&e&&await e.agent(s.agentId).delete().catch(()=>{}),A.getState().remove(t),!0):!1}const Oh=4;function So(e){return e==="left"||e==="right"?"row":"column"}function he(e){return e.kind==="leaf"?[e.id]:e.children.flatMap(he)}function as(e,t){return e.kind==="leaf"?e.id===t:e.children.some(n=>as(n,t))}function ko(e,t,n=1){if(e.kind==="leaf")return e.id===t?n:null;for(const s of e.children){const r=ko(s,t,n+1);if(r!==null)return r}return null}function xo(e,t){if(e.kind==="leaf")return null;if(cs(e,t)!==-1)return e;for(const n of e.children){const s=xo(n,t);if(s)return s}return null}function cs(e,t){return e.children.findIndex(n=>n.kind==="leaf"&&n.id===t)}function kt(e,t,n){const s=ko(e,t);if(s===null)return!1;const r=xo(e,t);return r&&r.direction===So(n)?!0:s+1<=Oh}function Gs(e,t,n,s){if(!kt(e,t,n)||as(e,s))return e;const r=So(n),o=n==="left"||n==="top",i={kind:"leaf",id:s},a=d=>({kind:"split",direction:r,children:o?[i,d]:[d,i],sizes:[.5,.5]}),u=d=>{if(d.kind==="leaf")return d.id===t?a(d):d;const g=cs(d,t);if(g!==-1&&d.direction===r){const f=d.sizes[g]/2,m=o?g:g+1,h=d.children.slice(),b=d.sizes.slice();return b[g]=f,h.splice(m,0,i),b.splice(m,0,f),{kind:"split",direction:d.direction,children:h,sizes:b}}return{kind:"split",direction:d.direction,children:d.children.map(u),sizes:d.sizes.slice()}};return u(e)}function Io(e,t){if(!as(e,t)||e.kind==="leaf")return e;const n=s=>{if(s.kind==="leaf")return s;const r=cs(s,t);if(r===-1)return{kind:"split",direction:s.direction,children:s.children.map(n),sizes:s.sizes.slice()};const o=s.sizes.filter((u,d)=>d!==r),i=o.reduce((u,d)=>u+d,0),a=i+s.sizes[r];return{kind:"split",direction:s.direction,children:s.children.filter((u,d)=>d!==r),sizes:o.map(u=>u/i*a)}};return To(n(e))}function To(e){if(e.kind==="leaf")return e;const t=e.children.map(To);if(t.length===1)return t[0];const n=[],s=[];return t.forEach((r,o)=>{const i=e.sizes[o];r.kind==="split"&&r.direction===e.direction?r.children.forEach((a,u)=>{n.push(a),s.push(i*r.sizes[u])}):(n.push(r),s.push(i))}),n.length===1?n[0]:{kind:"split",direction:e.direction,children:n,sizes:s}}const Ys=.1;function Bh(e){const t=new Map,n=(s,r)=>{if(s.kind==="leaf"){t.set(s.id,r);return}Eo(s,r).forEach((o,i)=>n(s.children[i],o))};return n(e,{x:0,y:0,width:1,height:1}),t}function Eo(e,t){const n=[];let s=0;for(const r of e.sizes)n.push(e.direction==="row"?{x:t.x+s*t.width,y:t.y,width:r*t.width,height:t.height}:{x:t.x,y:t.y+s*t.height,width:t.width,height:r*t.height}),s+=r;return n}function Fh(e){const t=[],n=(s,r,o)=>{if(s.kind==="leaf")return;const i=Eo(s,r);for(let a=0;a<s.children.length-1;a+=1){const u=i[a];t.push({splitPath:o.slice(),boundaryIndex:a,direction:s.direction,rect:s.direction==="row"?{x:u.x+u.width,y:r.y,width:0,height:r.height}:{x:r.x,y:u.y+u.height,width:r.width,height:0},splitRect:r})}i.forEach((a,u)=>n(s.children[u],a,[...o,u]))};return n(e,{x:0,y:0,width:1,height:1},[]),t}function zh(e,t){let n=e;for(const s of t){if(!n||n.kind!=="split")return null;n=n.children[s]}return n??null}function Wh(e,t,n,s){const r=zh(e,t);if(!r||r.kind!=="split"||n<0||n>r.children.length-2||!Number.isFinite(s)||s===0)return e;const o=r.sizes[n],i=r.sizes[n+1],a=i-Math.min(i,Ys),u=o-Math.min(o,Ys),d=Math.max(-u,Math.min(a,s));if(d===0)return e;const g=m=>{const h=m.sizes.slice();return h[n]=o+d,h[n+1]=i-d,{kind:"split",direction:m.direction,children:m.children,sizes:h}},f=(m,h)=>{if(m.kind!=="split")return m;if(h===t.length)return g(m);const b=t[h],y=m.children.slice();return y[b]=f(m.children[b],h+1),{kind:"split",direction:m.direction,children:y,sizes:m.sizes.slice()}};return f(e,0)}function Co(e,t){const n=he(e).filter(s=>!t.has(s));return n.length===0?e:n.reduce((s,r)=>Io(s,r),e)}const Ao=1;function Uh(e){return Ro(e,new Set)}function Ro(e,t){if(typeof e!="object"||e===null)return null;const n=e;if(n.kind==="leaf"){const{id:o}=n;return typeof o!="string"||o.trim()===""||t.has(o)?null:(t.add(o),{kind:"leaf",id:o})}if(n.kind!=="split"||n.direction!=="row"&&n.direction!=="column"||!Array.isArray(n.children)||!Array.isArray(n.sizes)||n.children.length<2||n.sizes.length!==n.children.length)return null;let s=0;for(const o of n.sizes){if(typeof o!="number"||!Number.isFinite(o)||o<=0)return null;s+=o}const r=[];for(const o of n.children){const i=Ro(o,t);if(!i)return null;r.push(i)}return{kind:"split",direction:n.direction,children:r,sizes:n.sizes.map(o=>o/s)}}function Hh(){if(typeof crypto<"u"&&typeof crypto.getRandomValues=="function"){const e=crypto.getRandomValues(new Uint8Array(16));e[6]=e[6]&15|64,e[8]=e[8]&63|128;const t=Array.from(e,n=>n.toString(16).padStart(2,"0")).join("");return`${t.slice(0,8)}-${t.slice(8,12)}-${t.slice(12,16)}-${t.slice(16,20)}-${t.slice(20)}`}return`id-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,10)}`}const Vh=["sessions","terminals"];function Fn(){return`pane-${Hh()}`}function Xs(){const e=Fn();return{tree:{kind:"leaf",id:e},placement:{},activeByPane:{},focusedPaneId:e,pendingPlacement:{},pendingActive:{},userActedPanes:new Set}}function jo(e,t,n){return(n??Object.keys(e.placement)).filter(r=>e.placement[r]===t)}function Po(e,t,n,s){const r=jo(e,t,s),o=r.indexOf(n),i=r.filter(a=>a!==n);if(i.length!==0)return i[Math.min(Math.max(o,0),i.length-1)]}function Kh(e,t){return e.pendingActive[t]!==void 0?!0:Object.values(e.pendingPlacement).includes(t)}function ls(e,t){if(Kh(e,t))return e;const n=Io(e.tree,t);if(n===e.tree)return e;const s={...e.activeByPane};delete s[t];const r=he(n);return{...e,tree:n,activeByPane:s,focusedPaneId:r.includes(e.focusedPaneId)?e.focusedPaneId:r[0]}}function Vt(e,t,n,s){const r=e.placement[t],o={...e.placement,[t]:n},i={...e.activeByPane};if(s.activate&&(i[n]=t),r!==void 0&&r!==n&&i[r]===t){const d=Po(e,r,t,s.order);d===void 0?delete i[r]:i[r]=d}const a={...e,placement:o,activeByPane:i,focusedPaneId:s.focus?n:e.focusedPaneId};return r!==void 0&&r!==n&&!Object.values(o).includes(r)?ls(a,r):a}function Ge(e,t){return e.userActedPanes.has(t)?e:{...e,userActedPanes:new Set(e.userActedPanes).add(t)}}function Gh(e){let t={...e,pendingPlacement:{},pendingActive:{}};const n=new Set(Object.values(t.placement));for(const o of he(t.tree))n.has(o)||(t=ls(t,o));const s={...t.activeByPane};let r=!1;for(const o of he(t.tree)){if(s[o]!==void 0)continue;const i=Object.keys(t.placement).find(a=>t.placement[a]===o);i!==void 0&&(s[o]=i,r=!0)}return r?{...t,activeByPane:s}:t}function qo(e,t){if(e===void 0)return!1;const n=e.placement[t];return n!==void 0&&e.activeByPane[n]===t}const F=ae()((e,t)=>{const n=(s,r)=>{e(o=>{const i=o.layouts[s]??Xs(),a=r(i)??i;return a===o.layouts[s]?o:{layouts:{...o.layouts,[s]:a}}})};return{layouts:{},hydrationSources:{sessions:!1,terminals:!1},restoring:!1,pendingActiveWorkspace:null,ensureWorkspace(s){e(r=>r.layouts[s]?r:{layouts:{...r.layouts,[s]:Xs()}})},assignTab(s,r,o,i,a){n(s,u=>{const d=he(u.tree),g=o!==void 0&&d.includes(o)?o:d.includes(u.focusedPaneId)?u.focusedPaneId:d[0],f=i!==!0,m=Vt(u,r,g,{activate:f,focus:f,order:a});return f?Ge(m,g):m})},moveTab(s,r,o,i){n(s,a=>{if(a.placement[r]===void 0||a.placement[r]===o||!he(a.tree).includes(o))return null;const u=Vt(a,r,o,{activate:!0,focus:!0,order:i});return Ge(u,o)})},splitWithTab(s,r,o,i,a){n(s,u=>{if(!he(u.tree).includes(o)||!kt(u.tree,o,i))return null;const d=jo(u,o,a);if(d.length===1&&d[0]===r)return null;const g=Fn(),f=Gs(u.tree,o,i,g);if(f===u.tree)return null;const m=Vt({...u,tree:f},r,g,{activate:!0,focus:!0,order:a});return Ge(m,g)})},splitEmpty(s,r,o){let i=null;return n(s,a=>{if(!he(a.tree).includes(r)||!kt(a.tree,r,o))return null;const u=Fn(),d=Gs(a.tree,r,o,u);return d===a.tree?null:(i=u,{...a,tree:d,focusedPaneId:u})}),i},removeTab(s,r,o){n(s,i=>{const a=i.placement[r];if(a===void 0)return null;const u={...i.placement};delete u[r];const d={...i.activeByPane};if(d[a]===r){const f=Po(i,a,r,o);f===void 0?delete d[a]:d[a]=f}const g={...i,placement:u,activeByPane:d};return Object.values(u).includes(a)?g:ls(g,a)})},setActiveTab(s,r,o){n(s,i=>i.placement[o]!==r?null:i.activeByPane[r]===o?Ge(i,r):Ge({...i,activeByPane:{...i.activeByPane,[r]:o}},r))},focusPane(s,r){n(s,o=>o.focusedPaneId===r||!he(o.tree).includes(r)?null:{...o,focusedPaneId:r})},resizeDivider(s,r,o,i){n(s,a=>{const u=Wh(a.tree,r,o,i);return u===a.tree?null:{...a,tree:u}})},installPersistedLayouts(s,r=null){e(o=>{const i={...o.layouts};for(const[a,u]of s){const d=he(u.tree);i[a]={tree:u.tree,placement:{},activeByPane:{},focusedPaneId:u.activePaneId!==null&&d.includes(u.activePaneId)?u.activePaneId:d[0],pendingPlacement:{...u.placement},pendingActive:{...u.activeByPane},userActedPanes:new Set}}return{layouts:i,hydrationSources:{sessions:!1,terminals:!1},restoring:!0,pendingActiveWorkspace:r!==null&&i[r]!==void 0?r:null}})},claimPaneFor(s,r,o,i){n(s,a=>{const u=he(a.tree);let d,g=!1;if(i!==void 0&&u.includes(i))d=i;else if(o!==null){const b=a.pendingPlacement[o];b!==void 0&&u.includes(b)&&(d=b,g=!0)}d??(d=u.includes(a.focusedPaneId)?a.focusedPaneId:u[0]);let f=a;if(g&&o!==null){const b={...a.pendingPlacement};delete b[o],f={...a,pendingPlacement:b}}let m=!0;if(g){const b=f.pendingActive[d];f.userActedPanes.has(d)?m=!1:b!==void 0&&b!==o&&(m=f.activeByPane[d]===void 0)}else t().restoring&&(m=f.activeByPane[d]===void 0);const h=Vt(f,r,d,{activate:m,focus:!g&&m});return g?h:Ge(h,d)})},markHydrationSource(s){e(r=>{if(r.hydrationSources[s])return r;const o={...r.hydrationSources,[s]:!0};if(!Vh.every(a=>o[a]))return{hydrationSources:o};const i={};for(const[a,u]of Object.entries(r.layouts))i[a]=Gh(u);return{hydrationSources:o,layouts:i,restoring:!1,pendingActiveWorkspace:null}})},paneOfTab(s,r){var o;return((o=t().layouts[s])==null?void 0:o.placement[r])??null},activeTabOf(s){const r=t().layouts[s];return r?r.activeByPane[r.focusedPaneId]??null:null}}});function Yh(e,t){return e.filter(n=>n.workspaceCwd===t)}function Xh(e,t){return Yh(e,t).map(n=>n.id)}function ht(e){const t=e===null?null:F.getState().activeTabOf(e);if(M.setState({activeTabId:t,activeWorkspaceCwd:e}),t!==null)return M.getState().tabs.find(n=>n.id===t)}function gt(e){(e==null?void 0:e.kind)==="chat"&&A.getState().activate(e.data.sessionId)}const M=ae()((e,t)=>({tabs:[],activeTabId:null,activeWorkspaceCwd:null,open(n,s){const r=t().tabs.find(i=>i.id===n.id);if(r){t().activate(r.id);return}e(i=>({tabs:[...i.tabs,n]}));const o=F.getState();o.ensureWorkspace(n.workspaceCwd),o.claimPaneFor(n.workspaceCwd,n.id,on(n),s),gt(ht(n.workspaceCwd))},close(n){const s=t().tabs.find(a=>a.id===n);if(!s)return;const r=Xh(t().tabs,s.workspaceCwd),o=t().activeTabId;e(a=>({tabs:a.tabs.filter(u=>u.id!==n)})),F.getState().removeTab(s.workspaceCwd,n,r);const i=ht(t().activeWorkspaceCwd);t().activeTabId!==o&&gt(i)},activate(n){const s=t().tabs.find(i=>i.id===n);if(!s)return;const r=F.getState();r.ensureWorkspace(s.workspaceCwd);const o=r.paneOfTab(s.workspaceCwd,n);o===null?r.claimPaneFor(s.workspaceCwd,n,on(s)):(r.focusPane(s.workspaceCwd,o),r.setActiveTab(s.workspaceCwd,o,n)),gt(ht(s.workspaceCwd))},switchWorkspace(n){F.getState().ensureWorkspace(n),gt(ht(n))},reorder(n,s){e(r=>{const o=r.tabs.findIndex(d=>d.id===n),i=r.tabs.findIndex(d=>d.id===s);if(o===-1||i===-1||o===i)return r;const a=r.tabs.slice(),[u]=a.splice(o,1);return u?(a.splice(i,0,u),{tabs:a}):r})},updateLabel(n,s){e(r=>({tabs:r.tabs.map(o=>o.id===n?{...o,label:s}:o)}))},updateData(n,s){e(r=>({tabs:r.tabs.map(o=>o.id===n?{...o,data:{...o.data,...s}}:o)}))},closeByPathPrefix(n){const s=t().tabs.filter(r=>{if(r.kind!=="file"&&r.kind!=="diff"&&r.kind!=="molecule")return!1;const o=r.data.path;return o===n||((o==null?void 0:o.startsWith(`${n}/`))??!1)});for(const r of s)t().close(r.id)}}));function on(e){var t;switch(e.kind){case"chat":{const{sessionId:n}=e.data,s=(t=A.getState().sessions[n])==null?void 0:t.agentId;return s?`agent:${s}`:null}case"file":return`file:${e.data.path}`;case"diff":{const{path:n,staged:s}=e.data;return`diff:${s?"staged":"worktree"}:${n}`}case"terminal":{const{slot:n}=e.data;return n===null?null:`terminal:${n}`}case"molecule":{const{path:n}=e.data;return n===null?null:`molecule:${n}`}}}function Mo(e,t,n){var s;return((s=e.find(r=>r.id===n))==null?void 0:s.workspaceCwd)===t?t:null}function bS(e){const t=M(n=>Mo(n.tabs,n.activeWorkspaceCwd,e));return F(n=>t===null?!1:qo(n.layouts[t],e))}function Jh(e){const{tabs:t,activeWorkspaceCwd:n}=M.getState(),s=Mo(t,n,e);return s===null?!1:qo(F.getState().layouts[s],e)}const Q={chat:e=>`chat-${e}`,file:e=>`file-${e}`,diff:(e,t)=>`diff-${e}${t?"-staged":""}`,terminal:e=>`term-${e}`,molecule:e=>`mol-${e}`};let xn=0;function No(e,t){xn+=1,M.getState().open({id:Q.terminal(`new-${xn}`),kind:"terminal",label:`Terminal ${xn}`,closable:!0,data:{slot:null,cwd:e},workspaceCwd:e},t)}let In=0;function Zh(e,t){In+=1,M.getState().open({id:Q.molecule(`new-${In}`),kind:"molecule",label:`Molecule ${In}`,closable:!0,data:{path:null},workspaceCwd:e},t)}function qt(e,t){const n=A.getState().createSession(e);M.getState().open({id:Q.chat(n),kind:"chat",label:"New chat",closable:!0,data:{sessionId:n},workspaceCwd:e},t);const s=N.getState().client;s&&$h(s,n).catch(()=>{})}function an(e){const t=M.getState().tabs.find(s=>s.id===e);if(M.getState().close(e),(t==null?void 0:t.kind)!=="chat")return;const{sessionId:n}=t.data;Lh(N.getState().client,n)}F.subscribe(()=>{const{activeWorkspaceCwd:e,activeTabId:t}=M.getState();e!==null&&F.getState().activeTabOf(e)!==t&&gt(ht(e))});function Le(e,t){return t&&(e==="~"||e.startsWith("~/"))?t+e.slice(1):e}function us(e,t,n){const s=new Map;for(const r of e){const o=t[r];if(!o)continue;const i=Le(o.cwd||"~",n),a=s.get(i);a?a.push(o):s.set(i,[o])}return Array.from(s,([r,o])=>({cwd:r,sessions:o}))}function Do(e){return!e||e==="~"?"~":e.split("/").filter(Boolean).pop()||e}function Qh(e,t){return new Set(e.filter(n=>n.cwd!==t).map(n=>n.cwd))}function xt(e,t,n){M.getState().open({id:Q.chat(e.id),kind:"chat",label:e.title||"Chat",closable:!0,data:{sessionId:e.id},workspaceCwd:Le(e.cwd||"~",t)},n)}function $o(){nh({consume:()=>vt.getState().consume(),findByAgentId:e=>A.getState().findByAgentId(e),select(e){var t;A.getState().activate(e.id),e.cwd&&$.getState().setCwd(e.cwd),xt(e,((t=N.getState().serverInfo)==null?void 0:t.homeDir)??null)},notifyNotFound(e){Ee.getState().show(`Agent not found: ${e}`,{variant:"warning"})},consumeSource(){V().launch.agentDeepLink.consume()}})}function eg(e,t=$o){const n=e.current();return n&&vt.getState().set(n),e.subscribe(s=>{vt.getState().set(s),N.getState().status==="open"&&vt.getState().restored&&t()})}function tg(){w.useEffect(()=>eg(V().launch.agentDeepLink),[])}const zn="pi-studio-agent-todos-ui";function Lo(e){if(!e)return new Set;try{const t=JSON.parse(e);if(!t||typeof t!="object")return new Set;const{version:n,collapsed:s}=t;return n!==1||!Array.isArray(s)?new Set:s.every(r=>typeof r=="string")?new Set(s):new Set}catch{return new Set}}function ng(e){const t=[...e];return JSON.stringify({version:1,collapsed:t.slice(-500)})}const sg=250;function rg(e){let t;const n=async r=>{const o=e.getClient();if(o!=null&&o.hasAgentTodosCapability())try{const i=await o.listAgentTodos(r);s.getState().applyUpdate(i)}catch{}},s=ae()((r,o)=>({todos:Cs,tracked:{},collapsed:Lo(e.kv.get(zn)),track(i){const a=(o().tracked[i]??0)===0;r(d=>({tracked:{...d.tracked,[i]:(d.tracked[i]??0)+1}})),a&&n(i);let u=!1;return()=>{u||(u=!0,r(d=>{const{[i]:g=0,...f}=d.tracked;return{tracked:g>1?{...f,[i]:g-1}:f}}))}},async refetchTracked(){r(i=>({todos:dd(i.todos)})),await Promise.all(Object.keys(o().tracked).map(n))},applyUpdate(i){r(a=>{const u=ud(a.todos,i);return u===a.todos?a:{todos:u}})},clear(){r({todos:Cs})},setCollapsed(i,a){const u=new Set(o().collapsed);u.delete(i),a&&u.add(i),r({collapsed:u}),clearTimeout(t),t=setTimeout(()=>{e.kv.set(zn,ng(o().collapsed))},sg)}}));return s}const og={get:e=>V().storage.get(e),set:(e,t)=>V().storage.set(e,t)},It=rg({getClient:()=>N.getState().client,kv:og});ph(e=>{It.setState({collapsed:Lo(e.storage.get(zn))})});function SS(e){return It(t=>e?fd(t.todos,e):void 0)}function kS(e){return It(t=>e?t.collapsed.has(e):!1)}function ig(){const e=N(n=>n.status),t=N(n=>n.client);w.useEffect(()=>{if(e!=="open"||!t)return;const n=It.getState();if(!t.hasAgentTodosCapability()){n.clear();return}const s=t.onAgentTodosUpdate(r=>{It.getState().applyUpdate(r)});return n.refetchTracked(),s},[e,t])}function ag(e,t){if(!e||(e.url&&t.setHost(e.url),e.password&&t.setPassword(e.password),e.cwd&&t.setCwd(e.cwd),!e.connect))return;const{host:n,password:s}=t.fields(),r=Zr(n)!==null;t.connect({url:n,password:r?void 0:s||void 0})}function cg(){const e=w.useRef(!1);w.useEffect(()=>{if(e.current)return;e.current=!0;const t=$.getState();ag(V().launch.initialConnect(),{setHost:t.setHost,setPassword:t.setPassword,setCwd:t.setCwd,fields:()=>$.getState(),connect:n=>void N.getState().connect(n)})},[])}const Oo="pi-studio-pane-layout",lg=250;function ug(){const e=new Map,t={workspaces:e,activeWorkspaceCwd:null},n=V().storage.get(Oo);if(!n)return t;let s;try{s=JSON.parse(n)}catch{return t}if(typeof s!="object"||s===null)return t;const r=s;if(r.version!==Ao||typeof r.workspaces!="object"||r.workspaces===null)return t;for(const[i,a]of Object.entries(r.workspaces)){const u=dg(a);u&&e.set(i,u)}const o=r.activeWorkspaceCwd;return{workspaces:e,activeWorkspaceCwd:typeof o=="string"&&e.has(o)?o:null}}function dg(e){if(typeof e!="object"||e===null)return null;const t=e,n=Uh(t.tree);if(!n)return null;const s=new Set(he(n)),r={};for(const[a,u]of Js(t.placement))s.has(u)&&(r[a]=u);const o={};for(const[a,u]of Js(t.activeByPane))s.has(a)&&(o[a]=u);const i=t.activePaneId;return{tree:n,placement:r,activeByPane:o,activePaneId:typeof i=="string"&&s.has(i)?i:null}}function Js(e){return typeof e!="object"||e===null?[]:Object.entries(e).filter(t=>typeof t[1]=="string")}let Re=null;function Zs(){Re==null||Re();const e=setTimeout(()=>{Re=null,Bo()},lg);Re=()=>clearTimeout(e)}function fg(){Re==null||Re(),Re=null,Bo()}function Bo(){const e=new Map;for(const s of M.getState().tabs){const r=on(s);r!==null&&e.set(s.id,r)}const t={};for(const[s,r]of Object.entries(F.getState().layouts)){const o={...r.pendingPlacement};for(const[a,u]of Object.entries(r.placement)){const d=e.get(a);d!==void 0&&(o[d]=u)}const i={...r.pendingActive};for(const[a,u]of Object.entries(r.activeByPane)){const d=e.get(u);d!==void 0&&(i[a]=d)}t[s]={tree:r.tree,placement:o,activeByPane:i,activePaneId:r.focusedPaneId}}const n={version:Ao,workspaces:t,activeWorkspaceCwd:M.getState().activeWorkspaceCwd??void 0};V().storage.set(Oo,JSON.stringify(n))}function pg(){let e=Qs(M.getState().tabs);const t=()=>{const o=Qs(M.getState().tabs);o!==e&&(e=o,Zs())},n=F.subscribe(Zs),s=M.subscribe(t),r=A.subscribe(t);return()=>{n(),s(),r()}}function Qs(e){return e.map(t=>`${t.id}\0${on(t)??""}`).join("")}const er={loaded:!1,capable:!1,viewers:{}},Ue=ae()((e,t)=>({...er,isViewerEnabled(n){var s;return((s=t().viewers[n])==null?void 0:s.enabled)??!0},async hydrate(){const n=N.getState().client,s=(n==null?void 0:n.hasViewerSettingsCapability())??!1;if(!n||!s){e({loaded:!0,capable:!1,viewers:{}});return}try{const r=await n.getViewerSettings();e({loaded:!0,capable:!0,viewers:r.viewers})}catch{e({loaded:!0,capable:!0,viewers:{}})}},applyUpdate(n){e({viewers:n.viewers})},async setEnabled(n,s){const r=N.getState().client,o=t().viewers[n];if(e(i=>({viewers:{...i.viewers,[n]:{...o,enabled:s}}})),!!r)try{const i=await r.setViewerSettings({[n]:{enabled:s}});e({viewers:i.viewers})}catch{tr(e,n,o),nr()}},async setConfig(n,s){const r=N.getState().client,o=t().viewers[n];if(e(i=>({viewers:{...i.viewers,[n]:{enabled:(o==null?void 0:o.enabled)??!0,config:s}}})),!!r)try{const i=await r.setViewerSettings({[n]:{config:s}});e({viewers:i.viewers})}catch{tr(e,n,o),nr()}},reset(){e(er)}}));function tr(e,t,n){e(s=>{const r={...s.viewers};return n===void 0?delete r[t]:r[t]=n,{viewers:r}})}function nr(){Ee.getState().error("Could not save the viewer setting. Reverted.")}function Fo(e){return Ue.getState().isViewerEnabled(e)}const hg=/^diff:(staged|worktree):(.+)$/;function gg(e){for(const[t,n]of e)for(const s of Object.keys(n.placement)){const r=mg(s,t,Fo);r!==null&&M.getState().open(r)}}function mg(e,t,n){const s=sr(e,"file:");if(s!==null)return{id:Q.file(s),kind:"file",...Kt(s),workspaceCwd:t,data:{path:s}};const r=sr(e,"molecule:");if(r!==null)return n("molviewer")?{id:Q.molecule(r),kind:"molecule",...Kt(r),workspaceCwd:t,data:{path:r}}:{id:Q.file(r),kind:"file",...Kt(r),workspaceCwd:t,data:{path:r}};const o=hg.exec(e);if(o!==null){const i=o[2],a=o[1]==="staged";return{id:Q.diff(i,a),kind:"diff",...Kt(i),workspaceCwd:t,data:{path:i,staged:a}}}return null}function sr(e,t){if(!e.startsWith(t))return null;const n=e.slice(t.length);return n===""?null:n}function Kt(e){return{label:e.split("/").pop()||e,closable:!0}}function _g(e){if(e===null)return()=>{};if(or())return rr(e),()=>{};const t=F.subscribe(()=>{or()&&(t(),rr(e))});return t}function rr(e){if(F.getState().layouts[e]===void 0||!M.getState().tabs.some(n=>n.workspaceCwd===e))return!1;const t=M.getState().activeWorkspaceCwd!==e;return t&&M.getState().switchWorkspace(e),yg(e),t}function yg(e){const t=M.getState().tabs.filter(s=>s.workspaceCwd===e&&s.kind==="chat");if(t.length===0)return;const n=A.getState().activeSessionId;t.some(s=>s.data.sessionId===n)||A.getState().activate(t[0].data.sessionId)}function or(){const{sessions:e,terminals:t}=F.getState().hydrationSources;return e&&t}const wg={workspaces:new Map,activeWorkspaceCwd:null};function vg(e,t,n){return e==="open"&&t&&!n}function bg(){const e=N(r=>r.status),t=Ue(r=>r.loaded),n=w.useRef(wg),s=w.useRef(!1);w.useEffect(()=>{const r=ug();n.current=r,F.getState().installPersistedLayouts(r.workspaces,r.activeWorkspaceCwd);const o=pg(),i=()=>fg();return window.addEventListener("pagehide",i),()=>{window.removeEventListener("pagehide",i),o()}},[]),w.useEffect(()=>{if(!vg(e,t,s.current))return;s.current=!0;const r=n.current;gg(r.workspaces),_g(r.activeWorkspaceCwd)},[e,t])}function Sg(e){return typeof e=="object"&&e!==null&&"kind"in e}function kg(e){const t=[];for(const n of e)Sg(n)&&(n.kind==="other"?n.event&&t.push({event:n.event,timestamp:n.timestamp}):(n.events??[]).forEach((s,r)=>{t.push({event:s,timestamp:r===0?n.timestamp:void 0})}));return t}async function zo(e){const t=[];let n=null;for(;;){const s=await e(n);if(s.items.length===0||(t.push(...kg(s.items)),!s.hasNewer))return t;const r=s.endCursor;if(typeof r!="string"||r===n)return t;n=r}}function xg(e){return typeof e.model=="string"}function Ig(e){return typeof e.thinkingLevel=="string"}function Tg(e){return typeof e.title=="string"}function Eg(){const e=N(s=>s.client),t=N(s=>s.status),n=w.useRef(!1);w.useEffect(()=>{t!=="open"||!e||n.current||(n.current=!0,Cg(e).then(()=>{vt.getState().markRestored(),$o()}))},[t,e]),w.useEffect(()=>{if(!(t!=="open"||!e))return e.onAgentUpdate(s=>{if(xg(s)){const r=typeof s.modelProvider=="string"?s.modelProvider:void 0;A.getState().setModelByAgentId(s.agentId,s.model,r)}if(Ig(s)&&A.getState().setThinkingLevelByAgentId(s.agentId,s.thinkingLevel),Tg(s)){A.getState().setTitleByAgentId(s.agentId,s.title);const r=A.getState().findByAgentId(s.agentId);r&&M.getState().updateLabel(Q.chat(r.id),s.title)}})},[t,e])}async function Cg(e){try{await Ag(e)}finally{F.getState().markHydrationSource("sessions")}}async function Ag(e){var b;let t=[];try{t=(await e.connection.request("list_agents_request",{all:!1})).agents??[]}catch{t=[]}t.sort((y,I)=>(I.lastActivity??0)-(y.lastActivity??0));const n=A.getState();for(const y of t){if(n.findByAgentId(y.agentId))continue;let I=mn;try{const S=await zo(E=>e.agent(y.agentId).timeline.fetch({direction:"after",cursor:E??void 0,limit:200}));I=bo(S)}catch{}const _=I.rows.length===0;n.hydrate({id:`s-${y.agentId.slice(0,12)}`,agentId:y.agentId,title:y.title||(_?"New chat":(b=y.cwd)==null?void 0:b.split("/").pop())||"Restored",status:y.status??"idle",cwd:y.cwd||"~",timeline:I,userMessageCount:I.rows.filter(S=>S.kind==="user").length,model:y.model,modelProvider:y.modelProvider,thinkingLevel:y.thinkingLevel})}const{order:s,sessions:r}=A.getState(),o=s.length>0?r[s[0]??""]:void 0;if(!o)return;const i=mo(),a=Le(o.cwd||"~",i),u=F.getState().pendingActiveWorkspace??a,d=us(s,r,i);$.getState().setCollapsedWorkspaces(Qh(d,u));const g=s.find(y=>{var I;return Le(((I=r[y])==null?void 0:I.cwd)||"~",i)===u});A.getState().activate(g??o.id),$.getState().setCwd(u);const f=Rg(),m=new Set;for(const y of s){const I=r[y];!(I!=null&&I.agentId)||!f.has(`agent:${I.agentId}`)||(xt(I,i),m.add(y))}const h=F.getState().layouts[a]!==void 0;!m.has(o.id)&&!h&&xt(o,i)}function Rg(){const e=new Set;for(const t of Object.values(F.getState().layouts))for(const n of Object.keys(t.pendingPlacement))n.startsWith("agent:")&&e.add(n);return e}function jg(){w.useEffect(()=>{function e(t){const n=$.getState();if(t.key==="Escape"){n.closeCwdPicker(),n.closeSessionMenu(),document.querySelector('[role="dialog"], [role="alertdialog"]')||Ee.getState().dismissTop();return}const s=t.ctrlKey||t.metaKey;if(s&&t.key.toLowerCase()==="t"){t.preventDefault(),No(M.getState().activeWorkspaceCwd||"~");return}if(s&&t.key.toLowerCase()==="w"){const{activeTabId:r,tabs:o}=M.getState();if(!r)return;const i=o.find(a=>a.id===r);(i==null?void 0:i.closable)!==!1&&(t.preventDefault(),an(r))}}return document.addEventListener("keydown",e),()=>document.removeEventListener("keydown",e)},[])}function Pg(e){return typeof e=="object"&&e!==null&&e.type==="terminals_update"&&Array.isArray(e.terminals)}function qg(e){const{tabs:t,updateData:n}=M.getState();for(const s of t){if(s.kind!=="terminal")continue;const r=s.data;r.slot===null||r.exited||e.has(r.slot)||n(s.id,{exited:!0})}}function Mg(){const e=N(t=>t.client);w.useEffect(()=>{if(e)return e.connection.onSessionMessage(t=>{const n=t;Pg(n)&&qg(new Set(n.terminals.map(s=>s.slot)))})},[e])}async function Ng(e){try{let t=[];try{t=(await e.connection.request("list_terminals_request",{})).terminals??[]}catch{t=[]}if(t.length===0)return;const n=F.getState().layouts,s=Dg(),r=mo(),o=M.getState().open;for(const i of t){if(i.closed)continue;const a=Le(i.cwd||"~",r);n[a]!==void 0&&!s.has(`terminal:${i.slot}`)||o({id:Q.terminal(i.slot),kind:"terminal",label:i.name,closable:!0,data:{slot:i.slot,cwd:a},workspaceCwd:a})}}finally{F.getState().markHydrationSource("terminals")}}function Dg(){const e=new Set;for(const t of Object.values(F.getState().layouts))for(const n of Object.keys(t.pendingPlacement))n.startsWith("terminal:")&&e.add(n);return e}function $g(){const e=N(s=>s.client),t=N(s=>s.status),n=w.useRef(!1);w.useEffect(()=>{t!=="open"||!e||n.current||(n.current=!0,Ng(e))},[t,e])}function Lg(e){return typeof e=="object"&&e!==null&&e.type==="agent_timeline_reset"&&typeof e.agentId=="string"}async function Og(e,t){if(!A.getState().findByAgentId(t))return;let s=mn;try{const r=await zo(o=>e.agent(t).timeline.fetch({direction:"after",cursor:o??void 0,limit:200}));s=bo(r)}catch{}A.getState().setTimelineByAgentId(t,s)}function Bg(){const e=N(t=>t.client);w.useEffect(()=>{if(e)return e.connection.onSessionMessage(t=>{const n=t;Lg(n)&&Og(e,n.agentId)})},[e])}function Fg(){const e=N(n=>n.status),t=N(n=>n.client);w.useEffect(()=>{if(e!=="open"||!t){Ue.getState().reset();return}return Ue.getState().hydrate(),t.onViewerSettingsUpdate(n=>{Ue.getState().applyUpdate(n)})},[e,t])}function zg(e){return e.managerActive?e.status==="closed"?"reconnect-now":e.status==="open"?e.probeInFlight?"none":"probe":"none":"none"}const Wg=5e3;function Ug(){let e=!1;return function(){const{status:n,reconnection:s,daemon:r}=N.getState(),o=zg({status:n,managerActive:s!==null,probeInFlight:e});if(o==="reconnect-now"){s==null||s.reconnectNow();return}if(o==="probe"){if(!r)return;e=!0,r.ping(Wg).catch(()=>{N.getState().daemon===r&&r.close(4e3,"stale-connection-probe")}).finally(()=>{e=!1})}}}function Hg(){w.useEffect(()=>V().connection.onResume(Ug()),[])}function Vg(){return cg(),tg(),Fg(),ig(),bg(),Eg(),$g(),Mg(),Bg(),jg(),Hg(),null}let Gt=null;function Kg(){Up("WorkbenchBoot");const[e,t]=w.useState(!1);return w.useEffect(()=>{const n=Symbol("WorkbenchBoot");if(Gt===null)return Gt=n,t(!0),()=>{Gt===n&&(Gt=null),t(!1)}},[]),e?c.jsx(Vg,{}):null}const Gg=new qi;function Yg({host:e,children:t}){const[n]=w.useState(()=>Us(e??V()));return e&&e!==n&&Us(e),c.jsx(go.Provider,{value:n,children:c.jsx(vf,{store:n.storage,children:c.jsx(Mi,{client:Gg,children:t})})})}const Xg=w.lazy(()=>ue(()=>import("./ModelProvidersPanel-CB3LnoWb.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13])).then(e=>({default:e.ModelProvidersPanel}))),Jg=w.lazy(()=>ue(()=>import("./SkillsPanel-BAOCx8Mk.js"),__vite__mapDeps([14,1,5,6,2,9,7,8,15,16,10,11,12,17])).then(e=>({default:e.SkillsPanel}))),Zg=w.lazy(()=>ue(()=>import("./ViewersPanel-CcXyTny7.js"),__vite__mapDeps([18,1,15,5,6,16,2,9,10,11,12,19])).then(e=>({default:e.ViewersPanel}))),Qg=[{id:"providers",label:"Model Providers",icon:Oi,component:Xg,available:e=>e.providerAuth},{id:"skills",label:"Skills",icon:Bi,component:Jg,available:e=>e.skills},{id:"viewers",label:"Viewers",icon:un,component:Zg,available:()=>!0}];function em(e){return{providerAuth:!!(e!=null&&e.providerAuth),skills:!!(e!=null&&e.skills)}}function tm(e){switch(e){case"connected":return{status:"finished"};case"error":return{status:"error"};case"disconnected":case"closing":return{status:"idle",showInactive:!0};case"connecting":return null}}const ir=40;function Wo(e){return/^\[object [A-Za-z]+\]$/.test(e)}function nm(e){const t=(e.split(`
18
- `)[0]??"").trim();return t===""||Wo(t)?"connection failed":/refus/i.test(t)?"connection refused":/time(?:d)?[\s-]*out|timeout/i.test(t)?"timed out":/\b401\b|\b403\b|unauthor|forbidden|auth/i.test(t)?"auth failed":t.length>ir?`${t.slice(0,ir-1)}…`:t}function Uo(e){if(e.trim()==="")return!1;try{const t=rs(e);return/^wss?:\/\//i.test(t.url)?new URL(t.url).hostname!=="":!1}catch{return!1}}function ar(e){try{const{url:t}=rs(e);return t===""?null:t}catch{return null}}function sm(e){const{status:t,error:n,url:s}=e;if(t==="open"){const o=ar(s);return{kind:"connected",statusLabel:"connected",hostLabel:o,showFields:!1,fieldsFrozen:!1,action:{label:"Disconnect",variant:"outline",disabled:!1},title:o?`${o} · connected`:"connected"}}if(t==="closing"){const o=ar(s);return{kind:"closing",statusLabel:"disconnecting…",hostLabel:o,showFields:!1,fieldsFrozen:!1,action:{label:"Disconnect",variant:"outline",disabled:!0},title:o?`${o} · disconnecting…`:"disconnecting…"}}if(t==="connecting")return{kind:"connecting",statusLabel:"connecting…",hostLabel:null,showFields:!0,fieldsFrozen:!0,action:{label:"Connecting…",variant:"default",disabled:!0},title:"connecting…"};const r=Uo(s);if(n!==null&&n!==""){const o=nm(n);return{kind:"error",statusLabel:o,hostLabel:null,showFields:!0,fieldsFrozen:!1,action:{label:"Retry",variant:"default",disabled:!r},title:Wo(n.trim())?o:n}}return{kind:"disconnected",statusLabel:"disconnected",hostLabel:null,showFields:!0,fieldsFrozen:!1,action:{label:"Connect",variant:"default",disabled:!r},title:"disconnected"}}const rm="_bar_1o0iw_9",om="_title_1o0iw_21",im="_brand_1o0iw_27",am="_version_1o0iw_33",cm="_statusPill_1o0iw_41",lm="_statusText_1o0iw_60",um="_statusHost_1o0iw_68",dm="_statusSep_1o0iw_76",fm="_statusLabel_1o0iw_79",pm="_statusDot_1o0iw_82",hm="_statusSpinner_1o0iw_83",gm="_statusPillError_1o0iw_87",mm="_field_1o0iw_4",_m="_fieldUrl_1o0iw_111",ym="_fieldPassword_1o0iw_115",wm="_fieldInvalid_1o0iw_122",vm="_action_1o0iw_139",bm="_panelToggles_1o0iw_147",Sm="_panelToggle_1o0iw_147",J={bar:rm,title:om,brand:im,version:am,statusPill:cm,statusText:lm,statusHost:um,statusSep:dm,statusLabel:fm,statusDot:pm,statusSpinner:hm,statusPillError:gm,field:mm,fieldUrl:_m,fieldPassword:ym,fieldInvalid:wm,action:vm,panelToggles:bm,panelToggle:Sm},km=w.lazy(()=>ue(()=>import("./SettingsDialog-PvCzy46o.js"),__vite__mapDeps([20,1,5,6,2,4,9,10,11,12,21])).then(e=>({default:e.SettingsDialog}))),Oe=26,xm="var(--pi-font-size-2xs)",Im=9,cr="host:port, ws://…/http://…, or a pasted pairing link";function Tm(){const e=N(x=>x.status),t=N(x=>x.error),n=N(x=>x.connect),s=N(x=>x.disconnect),r=N(x=>x.serverInfo),o=$(x=>x.host),i=$(x=>x.setHost),a=$(x=>x.password),u=$(x=>x.setPassword),d=$(x=>x.leftSidebarCollapsed),g=$(x=>x.toggleLeftSidebar),f=$(x=>x.rightSidebarCollapsed),m=$(x=>x.toggleRightSidebar),h=$(x=>x.settingsOpen),b=$(x=>x.openSettings),y=$(x=>x.closeSettings),I=em(r==null?void 0:r.features),_=Qg.some(x=>x.available(I)),[S,E]=w.useState(h);w.useEffect(()=>{h&&E(!0)},[h]);const R=sm({status:e,error:t,url:o}),q=tm(R.kind),H=w.useRef({host:o,password:a}),[ie,L]=w.useState(!1),ne=ie&&o.trim()!==""&&!Uo(o);function ce(){R.action.disabled||(H.current={host:o,password:a},n({url:o,password:a||void 0}))}function Y(){if(R.kind==="connected"||R.kind==="closing"){s();return}ce()}function ye(x,fe){if(x.key==="Enter"){x.preventDefault(),ce();return}x.key==="Escape"&&(x.preventDefault(),fe==="url"?(i(H.current.host),L(!1)):u(H.current.password),x.currentTarget.blur())}const ke=V().app;return c.jsxs("div",{className:J.bar,children:[c.jsxs("span",{className:J.title,children:[c.jsx("span",{className:J.brand,children:ke.title}),ke.version&&c.jsxs("span",{className:J.version,children:["v",ke.version]})]}),c.jsxs("span",{className:U(J.statusPill,R.kind==="error"&&J.statusPillError),title:R.title,children:[q?c.jsx(pn,{...q,className:J.statusDot}):c.jsx(uo,{size:Im,color:"var(--pi-color-statusWarning)",className:J.statusSpinner,"aria-label":"Connecting"}),c.jsxs("span",{className:J.statusText,children:[R.hostLabel&&c.jsx("span",{className:J.statusHost,children:R.hostLabel}),R.hostLabel&&c.jsx("span",{className:J.statusSep,"aria-hidden":!0,children:"·"}),c.jsx("span",{className:J.statusLabel,"aria-live":"polite",children:R.statusLabel})]})]}),R.showFields&&c.jsxs(c.Fragment,{children:[c.jsx(nn,{className:U(J.field,J.fieldUrl,ne&&J.fieldInvalid),value:o,onChange:x=>i(x.target.value),onFocus:()=>L(!1),onBlur:()=>L(!0),onKeyDown:x=>ye(x,"url"),readOnly:R.fieldsFrozen,placeholder:"ws://127.0.0.1:6767",title:ne?`Not a dialable daemon address — ${cr}`:cr,"aria-label":"Daemon address","aria-invalid":ne||void 0,spellCheck:!1,autoComplete:"off"}),c.jsx(nn,{className:U(J.field,J.fieldPassword),type:"password",value:a,onChange:x=>u(x.target.value),onKeyDown:x=>ye(x,"password"),readOnly:R.fieldsFrozen,placeholder:"password",title:"Daemon password — ignored when the address is a pairing link","aria-label":"Daemon password",autoComplete:"off"})]}),c.jsx(se,{className:J.action,size:"xs",variant:R.action.variant,disabled:R.action.disabled,style:{minHeight:Oe,fontSize:xm},onClick:Y,children:R.action.label}),c.jsxs("div",{className:J.panelToggles,children:[c.jsx(se,{className:J.panelToggle,size:"xs",variant:"ghost",iconOnly:!0,style:{minHeight:Oe,width:Oe},"aria-label":"Toggle left panel",title:d?"Show sessions sidebar":"Hide sessions sidebar",onClick:()=>g(),children:c.jsx(re,{icon:d?Fi:zi,size:"sm"})}),c.jsx(se,{className:J.panelToggle,size:"xs",variant:"ghost",iconOnly:!0,style:{minHeight:Oe,width:Oe},"aria-label":"Toggle right panel",title:f?"Show files/changes sidebar":"Hide files/changes sidebar",onClick:()=>m(),children:c.jsx(re,{icon:f?Wi:Ui,size:"sm"})}),_&&c.jsx(se,{className:J.panelToggle,size:"xs",variant:"ghost",iconOnly:!0,style:{minHeight:Oe,width:Oe},"aria-label":"Settings",title:"Settings",onClick:()=>b(),children:c.jsx(re,{icon:Hi,size:"sm"})})]}),S&&c.jsx(w.Suspense,{fallback:null,children:c.jsx(km,{open:h,onOpenChange:x=>x?b():y()})})]})}function rt(){return N(e=>{var t;return((t=e.serverInfo)==null?void 0:t.homeDir)??null})}const Wn=ae()((e,t)=>({drafts:{},pendingFeedback:{},setDraft(n,s){e(r=>({drafts:{...r.drafts,[n]:s}}))},replaceDraft(n,s,r){const i={copy:(t().drafts[n]??"")===""?"filled":"replaced",flash:r};e(a=>({drafts:{...a.drafts,[n]:s},pendingFeedback:{...a.pendingFeedback,[n]:i}}))},consumeFeedback(n){const s=t().pendingFeedback[n];if(s!==void 0)return e(r=>{const o={...r.pendingFeedback};return delete o[n],{pendingFeedback:o}}),s}}));function be(e,t,n,s=!1){return{tone:e,glyph:t,text:n,truncate:s}}function Em(e){var t,n;return e.reason==="answered"?e.method==="input"?be("success","check","answered"):e.method==="editor"?be("success","check","submitted"):e.method==="select"?((t=e.answer)==null?void 0:t.value)===void 0?be("muted",null,"no longer pending"):be("success","check",e.answer.value,!0):e.method==="confirm"?((n=e.answer)==null?void 0:n.confirmed)===void 0?be("muted",null,"no longer pending"):e.answer.confirmed?be("success","check","Yes"):be("muted",null,"declined"):be("success","check","answered"):e.reason==="cancelled"?be("muted",null,"declined"):e.reason==="timeout"?be("muted",null,"expired"):be("muted",null,e.reason)}function Tn(e){return e||"Chat"}function Cm(e,t){let n=0;for(const s of Object.values(e))s.agentId===t&&n++;return n}function Am(e){const t=e.title;return typeof t=="string"&&t.length>0?t:void 0}function Rm(e){const t=Em(e);return t.tone==="success"?"Answered":t.text==="declined"?"Dismissed":t.text==="expired"?"Expired":"No longer pending"}function jm(e,t,n){const s=[];for(const r of Object.values(t.pending)){if(r.receivedAt===void 0||e.pending[r.requestId]!==void 0)continue;const o=Cm(e.pending,r.agentId);if(o===0)if(r.agentId===n.activeAgentId){const i=Am(r.payload);s.push({text:i?`A question needs input: ${i}`:"A question needs input",politeness:"polite"})}else s.push({text:`A question needs input in ${Tn(n.sessionTitle(r.agentId))}`,politeness:"polite"});else s.push({text:`${o+1} questions need input in ${Tn(n.sessionTitle(r.agentId))}`,politeness:"polite"})}for(const r of Object.values(t.resolved))e.resolved[r.requestId]===void 0&&s.push({text:`${Rm(r)} in ${Tn(n.sessionTitle(r.agentId))}`,politeness:"polite"});return s}function Pm(e){switch(e){case"warning":return"warning";case"error":return"error";default:return"default"}}function qm(e){switch(e){case"warning":return 6e3;case"error":return null;default:return 4e3}}function Mm(e,t,n,s){return t===n?e:`${s||"Chat"} — ${e}`}function Nm(e,t,n,s,r){return{text:n===s?e:`${r||"Chat"}: ${e}`,politeness:t==="error"?"assertive":"polite"}}const Ce=ae()(()=>({controller:null,uiState:Qn}));let lr=null,Te=null,Ho=new Map,Vo=new Map,mt=new Set;function Ko(){Ho=new Map,Vo=new Map,mt=new Set}function Dm(e,t){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(e[n]!==t[n])return!1;return!0}function Go(e,t,n){const s=n(),r=e.get(t);return r&&Dm(r,s)?r:(e.set(t,s),s)}function $m(e){for(const t of e)switch(t.type){case"notify":Lm(t);break;case"replace_composer_text":Om(t);break}}function Lm(e){const t=A.getState(),n=t.activeSessionId?t.sessions[t.activeSessionId]:void 0,s=Object.values(t.sessions).find(a=>a.agentId===e.agentId),r=(n==null?void 0:n.agentId)??null,o=(s==null?void 0:s.title)??null;Ee.getState().show(Mm(e.message,e.agentId,r,o),{variant:Pm(e.level),durationMs:qm(e.level)});const i=Nm(e.message,e.level,e.agentId,r,o);gn(i.text,i.politeness)}function Om(e){const t=Object.values(A.getState().sessions).find(s=>s.agentId===e.agentId);if(t===void 0)return;const n=Jh(Q.chat(t.id));Wn.getState().replaceDraft(t.id,e.text,n),n||gn(`Draft replaced in ${t.title||"Chat"}`,"polite")}function Bm(e,t){const n=A.getState(),s=n.activeSessionId?n.sessions[n.activeSessionId]:void 0,r=jm(e,t,{activeAgentId:(s==null?void 0:s.agentId)??null,sessionTitle:o=>{var i;return((i=Object.values(n.sessions).find(a=>a.agentId===o))==null?void 0:i.title)??null}});for(const o of r)gn(o.text,o.politeness);Object.keys(e.pending).length>0&&Object.keys(t.pending).length===0&&ss()}const ur=new Set;function Fm(e){Ko();const t=pd(e,{onUnknownMethod(s){ur.has(s)||(ur.add(s),console.warn(`agent-ui: unrecognised extension-UI method "${s}"`))}}),n=t.subscribe((s,r)=>{const o=Ce.getState().uiState;Ce.setState({uiState:s}),$m(r),Bm(o,s)});Ce.setState({controller:t,uiState:t.getState()}),Te=()=>{n(),t.dispose()}}function zm(){Te==null||Te(),Te=null,Ko(),Ce.setState({controller:null,uiState:Qn})}function Yo(e){if(e===lr||(zm(),lr=e,!e))return;const t=()=>{Ce.getState().controller||e.connection.state==="open"&&e.extensionUiAvailable()&&(Te==null||Te(),Te=null,Fm(e))};t(),Ce.getState().controller||(Te=e.connection.onStateChange(n=>{n==="open"&&queueMicrotask(t)}))}N.subscribe(e=>Yo(e.client));Yo(N.getState().client);const dr=[],fr=[];function Wm(e,t){if(!e.controller)return dr;const n=Go(Ho,t,()=>ad(e.uiState,t));return n.length===0?dr:n}function Um(e,t){if(!e.controller)return fr;const n=Go(Vo,t,()=>ld(e.uiState,t));return n.length===0?fr:n}const pr=new Set;function Hm(e){if(!e.controller)return pr;const t=new Set(Object.keys(cd(e.uiState)));return t.size===mt.size&&[...t].every(n=>mt.has(n))?mt:(mt=t,t.size===0?pr:t)}function Vm(){return Ce(Hm)}function Xo(e){return Ce(t=>Wm(t,e))}function xS(e){return Ce(t=>Um(t,e))}function IS(e,t){const n=Ce.getState().controller;return n?n.respond(e,t):Promise.resolve({ok:!1,reason:"unsupported"})}const Km={initializing:"queued",idle:"idle",running:"running",error:"error",closed:"finished"};function We(e){return Km[e]??"idle"}const hr=120;function Gm(e,t){return e.status==="error"?"failed":t?"needsInput":e.status==="running"?"running":e.userMessageCount===0&&e.timeline.rows.length===0?"empty":"idle"}function Ym(e){const{rows:t}=e.timeline;for(let n=t.length-1;n>=0;n--){const s=t[n];if(s&&s.kind==="error"){const r=(s.text.split(`
19
- `,1)[0]??"").trim();return r.length>hr?r.slice(0,hr):r}}return null}function Xm(e,t){const n=Gm(e,t);switch(n){case"failed":return{state:n,meta:"turn failed",reason:Ym(e),dot:{status:We("error")},titleItalic:!1};case"needsInput":return{state:n,meta:"needs input",reason:null,dot:{status:We(e.status),requiresAttention:!0,attentionReason:"question"},titleItalic:!1};case"running":return{state:n,meta:"running",reason:null,dot:{status:We("running")},titleItalic:!1};case"empty":return{state:n,meta:"no messages",reason:null,dot:{status:We("idle"),showInactive:!0},titleItalic:!0};case"idle":return{state:n,meta:"idle",reason:null,dot:{status:We("idle"),showInactive:!0},titleItalic:!1}}}function Jm(e,t){const n=e.filter(r=>r.agentId!==null&&t.has(r.agentId)).length;return n>0?{dot:{status:"waiting",requiresAttention:!0,attentionReason:"question"},reason:"question",pendingSessionCount:n}:e.some(r=>r.status==="error")?{dot:{status:We("error")},reason:"failed",pendingSessionCount:0}:null}const Zm="_header_4rtcu_1",Qm="_list_4rtcu_15",e_="_newSessionRow_4rtcu_20",t_="_footer_4rtcu_45",n_="_item_4rtcu_70",s_="_itemFailed_4rtcu_85",r_="_active_4rtcu_83",o_="_activeBar_4rtcu_88",i_="_activeBarNeedsInput_4rtcu_107",a_="_title_4rtcu_89",c_="_titleLabel_4rtcu_89",l_="_titleItalic_4rtcu_127",u_="_meta_4rtcu_130",d_="_metaDot_4rtcu_138",f_="_metaLabel_4rtcu_143",p_="_metaFailed_4rtcu_148",h_="_metaNeedsInput_4rtcu_151",g_="_metaEmpty_4rtcu_154",m_="_menuBtn_4rtcu_159",__="_workspaceHeader_4rtcu_172",y_="_workspaceChevron_4rtcu_194",w_="_chevronGlyphExpanded_4rtcu_205",v_="_workspaceLabel_4rtcu_211",b_="_workspaceCount_4rtcu_217",S_="_workspaceMenuBtn_4rtcu_225",k_="_workspaceSessions_4rtcu_237",K={header:Zm,list:Qm,newSessionRow:e_,footer:t_,item:n_,itemFailed:s_,active:r_,activeBar:o_,activeBarNeedsInput:i_,title:a_,titleLabel:c_,titleItalic:l_,meta:u_,metaDot:d_,metaLabel:f_,metaFailed:p_,metaNeedsInput:h_,metaEmpty:g_,menuBtn:m_,workspaceHeader:__,workspaceChevron:y_,chevronGlyphExpanded:w_,workspaceLabel:v_,workspaceCount:b_,workspaceMenuBtn:S_,workspaceSessions:k_};function x_({session:e,active:t,draggable:n,onSelect:s,onOpenMenu:r,onDragStartRow:o}){const i=Xo(e.agentId??""),a=Xm(e,i.length>0);return c.jsxs("div",{className:U(K.item,t&&K.active,!t&&a.state==="failed"&&K.itemFailed),draggable:n,onDragStart:o,onClick:s,onContextMenu:u=>{u.preventDefault(),r(u.clientX,u.clientY)},children:[(t||a.state==="needsInput")&&c.jsx("span",{className:U(K.activeBar,a.state==="needsInput"&&K.activeBarNeedsInput),"aria-hidden":!0}),c.jsxs("div",{className:K.title,children:[c.jsx("span",{className:U(K.titleLabel,a.titleItalic&&K.titleItalic),children:e.title}),c.jsx(je,{className:K.menuBtn,hoverBase:"var(--pi-color-surfaceSidebar)",title:"Actions",onClick:u=>{u.stopPropagation();const d=u.currentTarget.getBoundingClientRect();r(d.left,d.bottom)},children:c.jsx(re,{icon:Gn,size:"sm"})})]}),c.jsxs("div",{className:U(K.meta,a.state==="empty"&&K.metaEmpty),children:[a.dot&&c.jsx(pn,{...a.dot,className:K.metaDot,pulse:a.state==="needsInput"}),c.jsxs("span",{className:K.metaLabel,children:[c.jsx("span",{className:a.state==="failed"?K.metaFailed:a.state==="needsInput"?K.metaNeedsInput:void 0,children:a.meta}),a.reason&&c.jsxs(c.Fragment,{children:[" · ",a.reason]})]})]})]})}const _e=ae()(e=>({dialog:{status:"closed"},openConfirm:(t,n,s)=>e({dialog:{status:"confirm",agentId:t,target:n,pending:!1,backTo:null,triggerElement:s}}),openPicker:(t,n,s)=>e({dialog:{status:"picker",agentId:t,messages:n,triggerElement:s}}),selectFromPicker:t=>e(n=>n.dialog.status!=="picker"?n:{dialog:{status:"confirm",agentId:n.dialog.agentId,target:t,pending:!1,backTo:n.dialog.messages,triggerElement:n.dialog.triggerElement}}),backToPicker:()=>e(t=>t.dialog.status!=="confirm"||t.dialog.backTo===null?t:{dialog:{status:"picker",agentId:t.dialog.agentId,messages:t.dialog.backTo,triggerElement:t.dialog.triggerElement}}),setPending:t=>e(n=>n.dialog.status==="confirm"?{dialog:{...n.dialog,pending:t}}:n),close:()=>e({dialog:{status:"closed"}})}));function Jo(e){return e.kind==="user"&&!e.pending&&!e.failed}function I_(e){return e.filter(Jo).map(t=>t.text)}function T_(e){const t=new Map;let n=0;for(const s of e)Jo(s)&&(t.set(s.id,n),n+=1);return t}function gr(e){return e.trim().replace(/\s+/g," ")}function E_(e,t,n){const s=e[t],r=n[t];return s===void 0||r===void 0?{outcome:"fallback-to-picker"}:gr(s)!==gr(r.text)?{outcome:"fallback-to-picker"}:{outcome:"matched",target:r}}function C_(e){return e.forkTimelineSync&&!e.running&&e.agentId!==null}const A_=new Map;function Zo(e){var s;const t=N(r=>r.serverInfo),n=!!((s=t==null?void 0:t.features)!=null&&s.forkTimelineSync);return C_({forkTimelineSync:n,running:(e==null?void 0:e.status)==="running",agentId:(e==null?void 0:e.agentId)??null})}function TS(e){const t=os(),n=_e(d=>d.openConfirm),s=_e(d=>d.openPicker),r=Zo(e),o=e.timeline.rows,i=w.useMemo(()=>r?T_(o):A_,[r,o]),a=e.agentId,u=w.useCallback(d=>{if(!t||!a)return;const g=document.activeElement instanceof HTMLElement?document.activeElement:null;t.agent(a).forkMessages().then(({messages:f})=>{const m=I_(e.timeline.rows),h=E_(m,d,f);h.outcome==="matched"?n(a,h.target,g):s(a,f,g)}).catch(f=>{console.error("[fork] forkMessages() failed",f)})},[t,a,e,n,s]);return{canFork:r,ordinalByRowId:i,onForkFromRow:u}}function R_(e){const t=os(),n=_e(i=>i.openPicker),s=Zo(e),r=e==null?void 0:e.agentId,o=w.useCallback(()=>{if(!t||!r)return;const i=document.activeElement instanceof HTMLElement?document.activeElement:null;t.agent(r).forkMessages().then(({messages:a})=>n(r,a,i)).catch(a=>{console.error("[fork] forkMessages() failed",a)})},[t,r,n]);return{canFork:s,openForkPicker:o}}async function j_(e,t){const n=await V().dialogs.prompt("Rename:",e.title);if(!(n!=null&&n.trim()))return;const s=n.trim();A.getState().setTitle(e.id,s),M.getState().updateLabel(Q.chat(e.id),s),e.agentId&&(t==null||t.agent(e.agentId).update({title:s}).catch(()=>{}))}async function P_(e,t,n,s){const r=t.length;if(!await V().dialogs.confirm(`Delete all ${r} conversation${r===1?"":"s"} in "${Do(e)}"? This deletes the conversations only — files on disk are untouched. This cannot be undone.`))return!1;s();for(const i of t){if(i.agentId&&n)try{await n.agent(i.agentId).delete()}catch(a){await V().dialogs.alert(`Failed to delete "${i.title}": ${a instanceof Error?a.message:String(a)}`);continue}A.getState().remove(i.id),M.getState().close(Q.chat(i.id))}return!0}function q_(){const e=$(y=>y.sessionMenu),t=$(y=>y.closeSessionMenu),n=N(y=>y.client),s=w.useRef(null),[r,o]=w.useState(!1);w.useEffect(()=>{o(e!==null)},[e]);const i=A(y=>e?y.sessions[e.sessionId]:void 0),a=R_(i);if(!e)return null;const u=!!(i!=null&&i.agentId)&&(i==null?void 0:i.status)==="running";function d(y){o(y),y||t()}async function g(){i&&(await j_(i,n),t())}function f(){i!=null&&i.agentId&&(n==null||n.agent(i.agentId).interrupt().catch(()=>{})),t()}function m(y){A.getState().remove(y),M.getState().close(Q.chat(y))}async function h(){if(i){if(!await V().dialogs.confirm("Archive this agent? It can be resumed later."))return t();if(t(),!i.agentId){m(i.id);return}if(!n){await V().dialogs.alert("Not connected — cannot archive remotely.");return}try{await n.agent(i.agentId).archive(),m(i.id)}catch(y){await V().dialogs.alert(`Failed to archive: ${y instanceof Error?y.message:String(y)}`)}}}async function b(){if(i){if(!await V().dialogs.confirm("Permanently delete this agent? This cannot be undone."))return t();if(t(),!i.agentId){m(i.id);return}if(!n){await V().dialogs.alert("Not connected — cannot delete remotely.");return}try{await n.agent(i.agentId).delete(),m(i.id)}catch(y){await V().dialogs.alert(`Failed to delete: ${y instanceof Error?y.message:String(y)}`)}}}return c.jsxs(Ct,{open:r,onOpenChange:d,modal:!1,children:[c.jsx(At,{asChild:!0,children:c.jsx(hn,{ref:s,x:e.x,y:e.y})}),c.jsxs(Pt,{minWidth:160,children:[c.jsxs(G,{onSelect:g,children:[c.jsx(Ar,{size:13}),"Rename"]}),c.jsxs(G,{disabled:!u,onSelect:f,children:[c.jsx(Vi,{size:13}),"Stop agent"]}),a.canFork&&c.jsxs(G,{onSelect:a.openForkPicker,children:[c.jsx(Rr,{size:13}),"Fork from…"]}),c.jsx(ze,{}),c.jsxs(G,{danger:!0,onSelect:h,children:[c.jsx(Ki,{size:13}),"Archive"]}),c.jsxs(G,{danger:!0,onSelect:b,children:[c.jsx(Yn,{size:13}),"Delete permanently"]})]})]})}function M_({label:e,cwd:t,sessionCount:n,collapsed:s,attentionDot:r,onToggleCollapsed:o,onOpenMenu:i}){return c.jsxs("div",{className:K.workspaceHeader,onClick:o,title:t,children:[c.jsx(je,{className:K.workspaceChevron,"aria-label":s?"Expand workspace":"Collapse workspace",onClick:a=>{a.stopPropagation(),o()},children:c.jsx(re,{icon:Xn,size:"xs",className:s?void 0:K.chevronGlyphExpanded})}),c.jsx(Zf,{projectKey:e,size:20}),c.jsx("span",{className:K.workspaceLabel,children:e}),r&&c.jsx(pn,{...r.dot,pulse:r.reason==="question","aria-label":r.reason==="question"?`${e} — ${r.pendingSessionCount} session${r.pendingSessionCount===1?"":"s"} needs input`:`${e} — turn failed`}),c.jsx("span",{className:K.workspaceCount,children:n}),c.jsx(je,{className:K.workspaceMenuBtn,hoverBase:"var(--pi-color-surface2)",title:"Workspace actions",onClick:a=>{a.stopPropagation();const u=a.currentTarget.getBoundingClientRect();i(u.left,u.bottom)},children:c.jsx(re,{icon:Gn,size:"sm"})})]})}function N_(){const e=$(h=>h.workspaceMenu),t=$(h=>h.closeWorkspaceMenu),n=N(h=>h.client),s=A(h=>h.order),r=A(h=>h.sessions),o=rt(),i=w.useRef(null),[a,u]=w.useState(!1);if(w.useEffect(()=>{u(e!==null)},[e]),!e)return null;const d=s.map(h=>r[h]).filter(h=>!!h).filter(h=>Le(h.cwd||"~",o)===e.cwd);function g(h){u(h),h||t()}function f(){e&&(t(),qt(e.cwd))}async function m(){if(!e)return;await P_(e.cwd,d,n,t)||t()}return c.jsxs(Ct,{open:a,onOpenChange:g,modal:!1,children:[c.jsx(At,{asChild:!0,children:c.jsx(hn,{ref:i,x:e.x,y:e.y})}),c.jsxs(Pt,{minWidth:160,children:[c.jsxs(G,{onSelect:f,children:[c.jsx(Zt,{size:13}),"New session"]}),c.jsx(ze,{}),c.jsxs(G,{danger:!0,onSelect:m,children:[c.jsx(Yn,{size:13}),"Delete workspace (all conversations)"]})]})]})}const D_=.25;function Qo(e,t){if(t.width<=0||t.height<=0)return"center";const n=(e.x-(t.left+t.width/2))/t.width,s=(e.y-(t.top+t.height/2))/t.height;return Math.max(Math.abs(n),Math.abs(s))<D_?"center":Math.abs(n)>=Math.abs(s)?n<0?"left":"right":s<0?"top":"bottom"}function $_(e,t){return t.x>=e.left&&t.x<=e.left+e.width&&t.y>=e.top&&t.y<=e.top+e.height}function ei(e,t,n){return n==="center"?"center":kt(e,t,n)?n:"center"}function Un(e,t,n,s){return s[n]!==t?!1:e==="center"?!0:Object.keys(s).every(o=>o===n||s[o]!==t)}const Mt={chat:"application/x-pi-studio-open-chat",path:"application/x-pi-studio-open-path"},L_=["chat","path"];function ti(e){for(const t of L_)if(e.includes(Mt[t]))return t;return null}function ES(e){return t=>{t.dataTransfer.setData(Mt.path,e),t.dataTransfer.effectAllowed="copyMove"}}function O_(e,t){const n=ti(e);if(n===null)return null;const s=t(Mt[n]).trim();return s===""?null:{kind:n,value:s}}const ds="application/x-pi-studio-path-ref";function ni(e){return e.includes(ds)}function B_(e,t){const n=e.replace(/\/+$/,"");return t?`${n}/`:e}function CS(e,t){if(!ni(e))return null;const n=t(ds).trim();return n===""?null:n}const si="data-composer-drop";function AS(){return{[si]:""}}function mr(e){var t;return((t=e==null?void 0:e.closest)==null?void 0:t.call(e,`[${si}]`))!=null}function _r(e,t){return t&&ni(e)}function F_(e,t,n,s){return ei(e,t,Qo(n,s))}function z_(){const e=A(_=>_.order),t=A(_=>_.sessions),n=A(_=>_.activeSessionId),s=A(_=>_.activate),r=M(_=>_.activeWorkspaceCwd),o=N(_=>_.status),i=$(_=>_.openSessionMenu),a=$(_=>_.openWorkspaceMenu),u=$(_=>_.setCwd),d=$(_=>_.openCwdPicker),g=$(_=>_.collapsedWorkspaces),f=$(_=>_.toggleWorkspaceCollapsed),m=rt(),h=Vm();function b(_){s(_);const S=t[_];S!=null&&S.cwd&&u(S.cwd),S&&xt(S,m)}function y(_,S,E){S===r&&(E.dataTransfer.setData(Mt.chat,_),E.dataTransfer.effectAllowed="copy")}const I=us(e,t,m);return c.jsxs(fo,{children:[c.jsx("div",{className:K.header,style:{minHeight:Pf},children:c.jsxs("h3",{children:["Workspaces · ",I.length]})}),c.jsxs("div",{className:K.list,children:[I.length===0&&c.jsx($e,{style:{padding:"var(--pi-spacing-12) var(--pi-spacing-10)"},children:o!=="open"?"Not connected":"No workspaces — open a folder to start"}),I.map(_=>{const S=g.has(_.cwd);return c.jsxs("div",{children:[c.jsx(M_,{label:Do(_.cwd),cwd:_.cwd,sessionCount:_.sessions.length,collapsed:S,attentionDot:S?Jm(_.sessions,h):null,onToggleCollapsed:()=>f(_.cwd),onOpenMenu:(E,R)=>a(_.cwd,E,R)}),!S&&c.jsxs("div",{className:K.workspaceSessions,children:[_.sessions.map(E=>c.jsx(x_,{session:E,active:E.id===n,draggable:_.cwd===r,onSelect:()=>b(E.id),onOpenMenu:(R,q)=>i(E.id,R,q),onDragStartRow:R=>y(E.id,_.cwd,R)},E.id)),c.jsxs("button",{type:"button",className:K.newSessionRow,disabled:o!=="open",title:o!=="open"?"Connect to start a new session":void 0,onClick:()=>qt(_.cwd),children:[c.jsx(re,{icon:Zt,size:"xs"}),"New session"]})]})]},_.cwd)})]}),c.jsxs("button",{type:"button",className:K.footer,disabled:o!=="open",title:o!=="open"?"Connect to open a workspace":"Open a workspace folder",onClick:()=>d(),children:[c.jsx(re,{icon:Zt,size:"xs"}),"Add workspace"]}),c.jsx(q_,{}),c.jsx(N_,{})]})}const ri="data-pi-dragging";function oi(e=document.body){e.setAttribute(ri,"")}function cn(e=document.body){e.removeAttribute(ri)}const yr={tab:0,strip:1,pane:2};function En(e){if(e===null||typeof e!="object"||!("type"in e))return null;const{type:t}=e;if(t!=="tab"&&t!=="strip"&&t!=="pane")return null;const n="paneId"in e&&typeof e.paneId=="string"?e.paneId:null;return{kind:t,paneId:n}}function W_(e){const t=e.activatorEvent;return t instanceof MouseEvent?{x:t.clientX+e.delta.x,y:t.clientY+e.delta.y}:null}function U_(e,t,n){return e.kind==="tab"?n.placement[t]??null:e.paneId}function H_(e){const[t,n]=w.useState(null),[s,r]=w.useState(null),o=M(h=>h.tabs.find(b=>b.id===t)??null),i=ba(Sa(xa,{activationConstraint:{distance:4}})),a=w.useMemo(()=>h=>{const b=ka(h).map(y=>{var I;return{hit:y,target:En((I=h.droppableContainers.find(_=>_.id===y.id))==null?void 0:I.data.current)}}).filter(y=>y.target!==null).toSorted((y,I)=>yr[y.target.kind]-yr[I.target.kind]);return b.length===0?[]:[b[0].hit]},[]),u=w.useCallback(h=>{const{over:b,active:y}=h,I=En(b==null?void 0:b.data.current);if(!b||I===null||e===null)return null;const _=F.getState().layouts[e];if(_===void 0)return null;const S=String(y.id),E=String(b.id);if(I.kind!=="pane"){const H=U_(I,E,_);return H===null||I.kind==="tab"&&E===S?null:I.kind==="tab"&&_.placement[S]===H?{paneId:H,region:"center"}:Un("center",H,S,_.placement)?null:{paneId:H,region:"center"}}const R=W_(h);if(I.paneId===null||R===null)return null;const q=ei(_.tree,I.paneId,Qo(R,b.rect));return Un(q,I.paneId,S,_.placement)?null:{paneId:I.paneId,region:q}},[e]),d=w.useCallback(h=>{oi(),n(String(h.active.id))},[]),g=w.useCallback(h=>{const b=u(h);r(y=>(y==null?void 0:y.paneId)===(b==null?void 0:b.paneId)&&(y==null?void 0:y.region)===(b==null?void 0:b.region)?y:b)},[u]),f=w.useCallback(()=>{cn(),n(null),r(null)},[]),m=w.useCallback(h=>{var ce;cn(),n(null),r(null);const{active:b,over:y}=h,I=En(y==null?void 0:y.data.current);if(!y||I===null||e===null)return;const _=String(b.id),S=F.getState().layouts[e];if(S===void 0)return;const E=M.getState(),R=E.tabs.filter(Y=>Y.workspaceCwd===e).map(Y=>Y.id),{moveTab:q,splitWithTab:H}=F.getState();if(I.kind==="tab"){const Y=String(y.id);if(Y===_)return;const ye=S.placement[Y];ye!==void 0&&ye!==S.placement[_]&&q(e,_,ye,R),E.reorder(_,Y);return}const ie=u(h);if(ie===null)return;if(ie.region!=="center"){H(e,_,ie.paneId,ie.region,R);return}q(e,_,ie.paneId,R);const L=((ce=F.getState().layouts[e])==null?void 0:ce.placement)??{},ne=R.filter(Y=>Y!==_&&L[Y]===ie.paneId).at(-1);ne!==void 0&&R.indexOf(_)<R.indexOf(ne)&&E.reorder(_,ne)},[e,u]);return{sensors:i,collisionDetection:a,onDragStart:d,onDragMove:g,onDragEnd:m,onDragCancel:f,draggedTab:o,preview:s}}const V_=w.lazy(()=>ue(()=>import("./ChatPanel-yRv-CSyg.js"),__vite__mapDeps([22,1,2,9,3,5,6,23,24,25,26,27,28,29,10,11,12,30])).then(e=>({default:e.ChatPanel}))),wr=w.lazy(()=>ue(()=>import("./FilePanel-KbN8R1q4.js"),__vite__mapDeps([31,1,5,6,2,32,28,29,9,10,11,12,33])).then(e=>({default:e.FilePanel}))),K_=w.lazy(()=>ue(()=>import("./TerminalPanel-D7OImgct.js"),__vite__mapDeps([34,1,35,36,5,6,2,9,10,11,12,37])).then(e=>({default:e.TerminalPanel}))),G_=w.lazy(()=>ue(()=>import("./MoleculeViewerPanel-B2E7mzSf.js"),__vite__mapDeps([38,1,39,40,41,2,32,7,8,5,6,9,10,11,12,42])).then(e=>({default:e.MoleculeViewerPanel}))),Y_={chat:V_,file:wr,diff:wr,terminal:K_,molecule:G_},Tt="var(--pane-strip-height)";function fs(e){return e===void 0?new Map:Bh(Co(e.tree,new Set(Object.values(e.placement))))}function ee(e){const t=(e*100).toFixed(4);return`${t.includes(".")?t.replace(/\.?0+$/,""):t}%`}function ii(e){if(e!==void 0)return{left:ee(e.x),top:`calc(${ee(e.y)} + ${Tt})`,width:ee(e.width),height:`calc(${ee(e.height)} - ${Tt})`}}function X_(e,t){const n=`${ee(e.y)} + ${Tt}`,s=`${ee(e.height)} - ${Tt}`,r=`calc((${s}) / 2)`;switch(t){case"left":return{left:ee(e.x),top:`calc(${n})`,width:ee(e.width/2),height:`calc(${s})`};case"right":return{left:ee(e.x+e.width/2),top:`calc(${n})`,width:ee(e.width/2),height:`calc(${s})`};case"top":return{left:ee(e.x),top:`calc(${n})`,width:ee(e.width),height:r};case"bottom":return{left:ee(e.x),top:`calc(${n} + (${s}) / 2)`,width:ee(e.width),height:r};case"center":return{left:ee(e.x),top:`calc(${n})`,width:ee(e.width),height:`calc(${s})`}}}function J_(e){const t=fs(e);return[...t].map(([n,s])=>({paneId:n,stripStyle:{left:ee(s.x),top:ee(s.y),width:ee(s.width),height:Tt},focused:t.size>1&&(e==null?void 0:e.focusedPaneId)===n}))}function Z_(e){if(e===void 0)return[];const t=Co(e.tree,new Set(Object.values(e.placement)));return t!==e.tree?[]:Fh(t)}function Q_(e,t){return(t==null?void 0:t.placement[e])??null}function ey(e,t,n){const s=fs(n);return e.map(r=>{const o=r.workspaceCwd===t?n==null?void 0:n.placement[r.id]:void 0;return{tabId:r.id,style:ii(o===void 0?void 0:s.get(o)),visible:o!==void 0&&(n==null?void 0:n.activeByPane[o])===r.id}})}const ty="_divider_4eg4l_9",ny="_vertical_4eg4l_26",sy="_horizontal_4eg4l_41",Cn={divider:ty,vertical:ny,horizontal:sy};function ry({cwd:e,dividers:t,hostRef:n}){const s=F(i=>i.resizeDivider),r=w.useRef(0);function o(i,a){var b;const u=(b=n.current)==null?void 0:b.getBoundingClientRect();if(!u)return;i.preventDefault(),i.stopPropagation();const d=a.direction==="row",g=d?a.splitRect.width*u.width:a.splitRect.height*u.height;if(g<=0)return;const f=i.currentTarget;f.setPointerCapture(i.pointerId),r.current=d?i.clientX:i.clientY,document.body.style.cursor=d?"col-resize":"row-resize",document.body.style.userSelect="none";const m=y=>{const I=d?y.clientX:y.clientY,_=I-r.current;r.current=I,s(e,a.splitPath,a.boundaryIndex,_/g)},h=y=>{window.removeEventListener("pointermove",m),window.removeEventListener("pointerup",h),window.removeEventListener("pointercancel",h),document.body.style.cursor="",document.body.style.userSelect="",f.hasPointerCapture(y.pointerId)&&f.releasePointerCapture(y.pointerId)};window.addEventListener("pointermove",m),window.addEventListener("pointerup",h),window.addEventListener("pointercancel",h)}return t.map(i=>{const a=i.direction==="row";return c.jsx("div",{className:U(Cn.divider,a?Cn.vertical:Cn.horizontal),style:a?{left:`${i.rect.x*100}%`,top:`${i.rect.y*100}%`,height:`${i.rect.height*100}%`}:{left:`${i.rect.x*100}%`,top:`${i.rect.y*100}%`,width:`${i.rect.width*100}%`},role:"separator","aria-orientation":a?"vertical":"horizontal",onPointerDown:u=>o(u,i)},`${i.splitPath.join(".")}:${i.boundaryIndex}`)})}const oy=w.lazy(()=>ue(()=>import("./TextViewer-BYKfoK_A.js"),__vite__mapDeps([43,1,44,2,41,5,6,45,46,9,10,11,12,47])).then(e=>({default:e.TextViewer}))),iy=w.lazy(()=>ue(()=>import("./MarkdownFileViewer-lxpM7SOl.js"),__vite__mapDeps([48,1,44,2,41,5,6,45,23,24,25,26,27,46,9,10,11,12,49])).then(e=>({default:e.MarkdownFileViewer}))),ay=w.lazy(()=>ue(()=>import("./ImageViewer-CSOSyfvS.js"),__vite__mapDeps([50,1,41,2,5,6,9,10,11,12,51])).then(e=>({default:e.ImageViewer}))),cy=w.lazy(()=>ue(()=>import("./VideoViewer-D5zXCCTy.js"),__vite__mapDeps([52,1,41,2,5,6,9,10,11,12,53])).then(e=>({default:e.VideoViewer}))),ly=w.lazy(()=>ue(()=>import("./BinaryFallbackViewer-DZ6fyGsu.js"),__vite__mapDeps([54,1,46,9,5,6,2,10,11,12,55])).then(e=>({default:e.BinaryFallbackViewer}))),uy=w.lazy(()=>ue(()=>import("./HtmlViewer-BlBKng1E.js"),__vite__mapDeps([56,1,2,44,41,5,6,45,26,46,15,16,9,10,11,12,57])).then(e=>({default:e.HtmlViewer}))),dy=w.lazy(()=>ue(()=>import("./PdfViewer-DhWWrlIg.js"),__vite__mapDeps([58,1,41,2,12,9,5,6,10,11,59])).then(e=>({default:e.PdfViewer}))),Nt=[{kind:"text",component:oy,extensions:[],liveRefresh:!0},{kind:"markdown",component:iy,extensions:["md","markdown","mdx"],liveRefresh:!0},{kind:"html",component:uy,extensions:["html","htm","xhtml"],liveRefresh:!0},{kind:"image",component:ay,extensions:["png","jpg","jpeg","gif","webp","svg","bmp","ico","avif"],mimePrefixes:["image/"],liveRefresh:!0},{kind:"video",component:cy,extensions:["mp4","webm","mov","m4v","ogv"],mimePrefixes:["video/"],liveRefresh:!1},{kind:"pdf",component:dy,extensions:["pdf"],mimePrefixes:["application/pdf"],liveRefresh:!0,toggle:{id:"pdfviewer",fallback:"binary"}},{kind:"binary",component:ly,extensions:["zip","gz","tar","exe","wasm","woff","woff2","ttf","otf"],liveRefresh:!1}],RS=Object.freeze(Object.fromEntries(Nt.map(e=>[e.kind,e.component]))),fy=Object.freeze(Object.fromEntries(Nt.flatMap(e=>e.extensions.map(t=>[t,e.kind])))),py=Object.freeze(Nt.flatMap(e=>(e.mimePrefixes??[]).map(t=>[t,e.kind]))),jS=Object.freeze(new Set(Nt.filter(e=>e.liveRefresh).map(e=>e.kind)));function ai(e){const t=e.split("/").pop()??e,n=t.lastIndexOf(".");return n>0?t.slice(n+1).toLowerCase():""}const hy={pdb:!0,cif:!0,mmcif:!0,mol:!0,mol2:!0,xyz:!0,extxyz:!0,gro:!0,lammpstrj:!0,xsf:!0},gy={poscar:!0,contcar:!0};function ci(e){if(hy[ai(e)])return!0;const t=e.split("/").pop()??e;return!!gy[t.toLowerCase()]}function my(e,t={}){const n=fy[ai(e)];if(n)return n;const s=t.mimeHint??"";for(const[r,o]of py)if(s.startsWith(r))return o;return t.isBinary?"binary":"text"}const _y=new Map(Nt.flatMap(e=>e.toggle?[[e.kind,e.toggle]]:[]));function PS(e,t,n={}){const s=my(e,n),r=_y.get(s);return r&&!t(r.id)?r.fallback:s}function ps(e,t,n){ci(e)&&Fo("molviewer")?ui(e,t,n):li(e,t,n)}function li(e,t,n){const s=e.split("/").pop()||e;M.getState().open({id:Q.file(e),kind:"file",label:s,closable:!0,data:{path:e},workspaceCwd:t},n)}function ui(e,t,n){const s=e.split("/").pop()||e;M.getState().open({id:Q.molecule(e),kind:"molecule",label:s,closable:!0,data:{path:e},workspaceCwd:t},n)}const Hn="data-pane-drop";function yy(e){return{[Hn]:e}}function wy(e,t){if(e===null)return null;for(const n of e.querySelectorAll(`[${Hn}]`)){const s=n.getBoundingClientRect(),r={left:s.left,top:s.top,width:s.width,height:s.height},o=n.getAttribute(Hn);if(o!==null&&o!==""&&$_(r,t))return{paneId:o,bounds:r}}return null}function vy(e){const{tabs:t}=M.getState(),n=s=>t.some(r=>r.id===s)?s:null;return e.kind==="chat"?n(Q.chat(e.value)):n(Q.file(e.value))??n(Q.molecule(e.value))}function by(e,t,n,s,r){const o=F.getState().layouts[t];if(o===void 0)return;const i=M.getState().tabs.filter(g=>g.workspaceCwd===t).map(g=>g.id),a=vy(e);if(a!==null){if(Un(s,n,a,o.placement))return;const{moveTab:g,splitWithTab:f}=F.getState();s==="center"?g(t,a,n,i):f(t,a,n,s,i);return}let u=n;if(s!=="center"&&(u=F.getState().splitEmpty(t,n,s)),u===null)return;if(e.kind==="path"){ps(e.value,t,u);return}const d=A.getState().sessions[e.value];d!==void 0&&xt(d,r,u)}function Sy(e,t){const[n,s]=w.useState(null),r=rt();w.useEffect(()=>{const d=()=>oi(),g=()=>cn();return document.addEventListener("dragstart",d),document.addEventListener("dragend",g),document.addEventListener("drop",g),()=>{document.removeEventListener("dragstart",d),document.removeEventListener("dragend",g),document.removeEventListener("drop",g),cn()}},[]);const o=w.useCallback(d=>{if(e===null)return null;const g=F.getState().layouts[e];if(g===void 0)return null;const f={x:d.clientX,y:d.clientY},m=wy(t.current,f);return m===null?null:{paneId:m.paneId,region:F_(g.tree,m.paneId,f,m.bounds)}},[e,t]),i=w.useCallback(d=>{if(_r(d.dataTransfer.types,mr(d.target))){s(null);return}if(ti(d.dataTransfer.types)===null)return;d.preventDefault(),d.dataTransfer.dropEffect="copy";const g=o(d);s(f=>(f==null?void 0:f.paneId)===(g==null?void 0:g.paneId)&&(f==null?void 0:f.region)===(g==null?void 0:g.region)?f:g)},[o]),a=w.useCallback(d=>{d.currentTarget.contains(d.relatedTarget)||s(null)},[]),u=w.useCallback(d=>{if(_r(d.dataTransfer.types,mr(d.target))){s(null);return}const g=O_(d.dataTransfer.types,m=>d.dataTransfer.getData(m));if(g===null)return;d.preventDefault(),s(null);const f=o(d);f===null||e===null||by(g,e,f.paneId,f.region,r)},[e,r,o]);return{preview:n,onDragOver:i,onDragLeave:a,onDrop:u}}function ky(e,t,n,s){if(e.kind!=="chat"||n)return null;if(s)return{status:"waiting",requiresAttention:!0,attentionReason:"question"};if(t===void 0)return null;const r=We(t);return r==="running"||r==="error"?{status:r}:null}const xy="_strip_1jel9_1",Iy="_tabs_1jel9_13",Ty="_paneStrip_1jel9_28",Ey="_focused_1jel9_36",Cy="_tab_1jel9_13",Ay="_tabActive_1jel9_61",Ry="_tabIcon_1jel9_65",jy="_tabLabel_1jel9_70",Py="_tabLabelMono_1jel9_76",qy="_tabDot_1jel9_81",My="_tabClose_1jel9_88",Ny="_tabNeedsInput_1jel9_114",Dy="_newTab_1jel9_122",$y="_stripActions_1jel9_130",Ly="_splitAction_1jel9_137",Oy="_itemIcon_1jel9_142",te={strip:xy,tabs:Iy,paneStrip:Ty,focused:Ey,tab:Cy,tabActive:Ay,tabIcon:Ry,tabLabel:jy,tabLabelMono:Py,tabDot:qy,tabClose:My,tabNeedsInput:Ny,newTab:Dy,stripActions:$y,splitAction:Ly,itemIcon:Oy},di={chat:qr,file:dn,diff:Pr,terminal:jr,molecule:un},By={file:!0,diff:!0};function Fy({tab:e,active:t}){const n=M(_=>_.activate),s=$(_=>_.openTabMenu),r=di[e.kind],o=A(_=>{var S;return e.kind==="chat"?(S=_.sessions[e.data.sessionId])==null?void 0:S.status:void 0}),i=A(_=>{var S;return e.kind==="chat"?(S=_.sessions[e.data.sessionId])==null?void 0:S.agentId:void 0}),a=Xo(i??""),u=ky(e,o,t,a.length>0),d=(u==null?void 0:u.attentionReason)==="question",g=e.kind==="terminal"&&e.data.exited===!0,{attributes:f,listeners:m,setNodeRef:h,transform:b,transition:y,isDragging:I}=Ea({id:e.id,data:{type:"tab"}});return c.jsxs("div",{ref:h,className:U(te.tab,t&&te.tabActive,d&&te.tabNeedsInput),style:{transform:Ca.Transform.toString(b),transition:y,opacity:I?.5:g?.6:1},onClick:()=>n(e.id),onAuxClick:_=>{_.button===1&&e.closable&&an(e.id)},onContextMenu:_=>{e.closable&&(_.preventDefault(),s(e.id,_.clientX,_.clientY))},title:g?`${e.label} (exited)`:e.label,...f,...m,children:[c.jsx("span",{className:te.tabIcon,children:c.jsx(re,{icon:r,size:"xs",color:t&&e.kind==="chat"?"var(--pi-color-accentBright)":"currentColor","aria-hidden":!0})}),c.jsx("span",{className:U(te.tabLabel,By[e.kind]&&te.tabLabelMono),children:e.label}),u&&c.jsx(pn,{...u,className:te.tabDot,pulse:d,"aria-label":d?"Needs input":void 0}),e.closable&&c.jsx("span",{className:te.tabClose,onClick:_=>{_.stopPropagation(),an(e.id)},children:c.jsx(re,{icon:St,size:"xs","aria-hidden":!0})})]})}function zy({workspaceCwd:e,paneId:t}){const n=Ue(r=>r.isViewerEnabled("molviewer")),s=r=>()=>{e!==null&&r(e,t??void 0)};return c.jsxs(Ct,{children:[c.jsx(At,{asChild:!0,children:c.jsx(je,{className:te.newTab,size:"xs",hoverBase:"var(--pi-color-background)",title:"New tab",disabled:!e,children:c.jsx(re,{icon:Zt,size:"sm","aria-hidden":!0})})}),c.jsxs(Pt,{minWidth:160,sideOffset:4,children:[c.jsxs(G,{onSelect:s(qt),children:[c.jsx(re,{icon:qr,size:"xs",className:te.itemIcon,"aria-hidden":!0}),"New chat"]}),c.jsxs(G,{onSelect:s(No),children:[c.jsx(re,{icon:jr,size:"xs",className:te.itemIcon,"aria-hidden":!0}),"New terminal"]}),n&&c.jsxs(G,{onSelect:s(Zh),children:[c.jsx(re,{icon:un,size:"xs",className:te.itemIcon,"aria-hidden":!0}),"New molecule view"]})]})]})}function Wy({cwd:e,paneId:t}){const n=F(a=>{var u;return e===null||(u=a.layouts[e])==null?void 0:u.tree}),s=a=>()=>{if(e===null||t===null)return;const u=F.getState().splitEmpty(e,t,a);u!==null&&qt(e,u)},r=a=>n===void 0||t===null?"Open a workspace to split":kt(n,t,a)?null:"Maximum split depth reached",o=r("right"),i=r("bottom");return c.jsxs("div",{className:te.stripActions,children:[c.jsx(je,{className:te.splitAction,size:"xs",hoverBase:"var(--pi-color-background)",title:o??"Split right",disabled:o!==null,onClick:s("right"),children:c.jsx(re,{icon:Gi,size:"sm","aria-hidden":!0})}),c.jsx(je,{className:te.splitAction,size:"xs",hoverBase:"var(--pi-color-background)",title:i??"Split down",disabled:i!==null,onClick:s("bottom"),children:c.jsx(re,{icon:Yi,size:"sm","aria-hidden":!0})})]})}function vr({cwd:e,paneId:t,style:n,focused:s=!1}){const r=M(g=>g.tabs),o=F(g=>g.focusPane),i=F(g=>{var f;return e===null||(f=g.layouts[e])==null?void 0:f.placement}),a=F(g=>{var f;return e===null||t===null||(f=g.layouts[e])==null?void 0:f.activeByPane[t]}),u=t===null?[]:r.filter(g=>(i==null?void 0:i[g.id])===t),{setNodeRef:d}=Mr({id:`strip:${t??"none"}`,disabled:t===null,data:{type:"strip",paneId:t}});return c.jsxs("div",{ref:d,className:U(te.strip,te.paneStrip,s&&te.focused),style:n,onPointerDown:()=>{e!==null&&t!==null&&o(e,t)},children:[c.jsx("div",{className:te.tabs,children:c.jsx(Ia,{items:u.map(g=>g.id),strategy:Ta,children:u.map(g=>c.jsx(Fy,{tab:g,active:g.id===a},g.id))})}),c.jsx(zy,{workspaceCwd:e,paneId:t}),c.jsx(Wy,{cwd:e,paneId:t})]})}const Uy="_preview_1txmv_1",Hy="_chip_1txmv_9",Vy="_chipLabel_1txmv_23",Vn={preview:Uy,chip:Hy,chipLabel:Vy};function Ky({rect:e,region:t}){return c.jsx("div",{className:Vn.preview,style:X_(e,t)})}function Gy({tab:e}){const t=di[e.kind];return c.jsxs("div",{className:Vn.chip,children:[c.jsx(t,{size:13}),c.jsx("span",{className:Vn.chipLabel,children:e.label})]})}function Yy(){const e=$(a=>a.tabMenu),t=$(a=>a.closeTabMenu),n=w.useRef(null),[s,r]=w.useState(!1);if(w.useEffect(()=>{r(e!==null)},[e]),!e)return null;function o(a){r(a),a||t()}function i(){e&&an(e.tabId),t()}return c.jsxs(Ct,{open:s,onOpenChange:o,modal:!1,children:[c.jsx(At,{asChild:!0,children:c.jsx(hn,{ref:n,x:e.x,y:e.y})}),c.jsx(Pt,{minWidth:120,children:c.jsxs(G,{onSelect:i,children:[c.jsx(St,{size:13}),"Close"]})})]})}function Xy(e,t,n){return n===0?-1:Math.min(Math.max(e+(t==="ArrowDown"?1:-1),0),n-1)}const Jy="An extension declined the fork.",Zy="Couldn't fork. Try again.";function Qy(e,t){if(ss(),t.cancelled){Ee.getState().error(Jy),_e.getState().close();return}_e.getState().close();const n=A.getState().findByAgentId(e);if(!n)return;(Wn.getState().drafts[n.id]??"")===""&&Wn.getState().setDraft(n.id,t.text)}function ew(e){ss();const t=e instanceof Error&&e.message?e.message:Zy;Ee.getState().error(t),_e.getState().setPending(!1)}const tw="_confirmContent_10pv6_9",nw="_preview_10pv6_13",sw="_previewPending_10pv6_28",rw="_copy_10pv6_32",ow="_backButton_10pv6_39",iw="_pickerList_10pv6_45",aw="_pickerRow_10pv6_54",cw="_pickerOrdinal_10pv6_73",lw="_pickerText_10pv6_80",uw="_pickerEmpty_10pv6_88",Ie={confirmContent:tw,preview:nw,previewPending:sw,copy:rw,backButton:ow,pickerList:iw,pickerRow:aw,pickerOrdinal:cw,pickerText:lw,pickerEmpty:uw},dw="Later messages leave the agent's context. The original prompt is placed in the composer for editing.";function fw(e){var r;if(e.key!=="ArrowDown"&&e.key!=="ArrowUp")return;e.preventDefault();const t=Array.from(e.currentTarget.querySelectorAll("button")),n=t.indexOf(document.activeElement),s=Xy(n,e.key,t.length);s>=0&&((r=t[s])==null||r.focus())}function pw(){const e=_e(S=>S.dialog),t=_e(S=>S.selectFromPicker),n=_e(S=>S.backToPicker),s=_e(S=>S.setPending),r=_e(S=>S.close),o=os(),i=w.useRef(null),a=w.useRef(null),u=e.status!=="closed",d=e.status==="confirm"&&e.pending,g=w.useRef(null),f=w.useRef(null);e.status!=="closed"&&(g.current=e.triggerElement,f.current=e.agentId),w.useEffect(()=>{e.status==="picker"&&i.current&&(i.current.scrollTop=i.current.scrollHeight)},[e]);function m(S){var E,R;S.preventDefault(),(R=(E=i.current)==null?void 0:E.querySelector("button"))==null||R.focus()}function h(S){var E;S.preventDefault(),(E=a.current)==null||E.focus()}function b(S){const E=g.current;if(E!=null&&E.isConnected){S.preventDefault(),E.focus();return}const R=f.current,q=R?A.getState().findByAgentId(R):void 0,H=q?document.querySelector(`[data-session-id="${q.id}"]`):null;H&&(S.preventDefault(),H.focus())}async function y(){const S=_e.getState().dialog;if(!(S.status!=="confirm"||S.pending||!o)){s(!0),gn("Forking…");try{const E=await o.agent(S.agentId).fork(S.target.entryId);Qy(S.agentId,E)}catch(E){ew(E)}}}if(!u)return null;if(e.status==="picker")return c.jsx(On,{open:!0,onOpenChange:S=>!S&&r(),title:"Fork from…",width:460,onCloseAutoFocus:b,onOpenAutoFocus:m,children:e.messages.length===0?c.jsxs($e,{className:Ie.pickerEmpty,children:[c.jsx(re,{icon:Rr,size:"lg"}),c.jsx("div",{children:"Nothing to fork yet"})]}):c.jsx("div",{className:Ie.pickerList,ref:i,onKeyDown:fw,children:e.messages.map((S,E)=>c.jsxs("button",{type:"button",className:Ie.pickerRow,onClick:()=>t(S),children:[c.jsxs("span",{className:Ie.pickerOrdinal,children:["#",E+1]}),c.jsx("span",{className:Ie.pickerText,children:S.text})]},S.entryId))})});const{target:I,backTo:_}=e;return c.jsx(On,{open:!0,onOpenChange:S=>!S&&!d&&r(),title:"Fork conversation",width:440,onInteractOutside:S=>{d&&S.preventDefault()},onEscapeKeyDown:S=>{d&&S.preventDefault()},onCloseAutoFocus:b,onOpenAutoFocus:h,footer:c.jsxs(c.Fragment,{children:[_!==null&&c.jsx(se,{className:Ie.backButton,size:"sm",variant:"ghost",disabled:d,onClick:()=>n(),children:"‹ Back"}),c.jsx(po,{asChild:!0,children:c.jsx(se,{ref:a,size:"sm",variant:"secondary",disabled:d,children:"Cancel"})}),c.jsx(se,{size:"sm",loading:d,onClick:()=>void y(),children:d?"Forking…":"Fork from here"})]}),children:c.jsxs("div",{className:Ie.confirmContent,children:[c.jsx("div",{className:U(Ie.preview,d&&Ie.previewPending),children:I.text}),c.jsx("div",{className:Ie.copy,children:dw})]})})}const hw="_area_9sawz_1",gw="_panel_9sawz_11",mw="_dropZone_9sawz_27",_w="_active_9sawz_31",yw="_empty_9sawz_35",ww="_emptyStack_9sawz_47",vw="_emptyTitle_9sawz_61",bw="_emptyHint_9sawz_65",Ne={area:hw,panel:gw,dropZone:mw,active:_w,empty:yw,emptyStack:ww,emptyTitle:vw,emptyHint:bw};function Sw({paneId:e,style:t}){const{setNodeRef:n}=Mr({id:`pane:${e}`,data:{type:"pane",paneId:e}});return c.jsx("div",{ref:n,className:Ne.dropZone,style:t,...yy(e)})}function kw(){const e=M(y=>y.tabs),t=M(y=>y.activeWorkspaceCwd),n=F(y=>t===null?void 0:y.layouts[t]),s=N(y=>y.status),r=$(y=>y.openCwdPicker),o=F(y=>y.focusPane),i=e.some(y=>y.workspaceCwd===t),a=w.useRef(null),u=w.useMemo(()=>ey(e,t,n),[e,t,n]),d=w.useMemo(()=>J_(n),[n]),g=w.useMemo(()=>Z_(n),[n]),f=w.useMemo(()=>fs(n),[n]),m=H_(t),h=Sy(t,a),b=m.preview??h.preview;return c.jsxs(Aa,{sensors:m.sensors,collisionDetection:m.collisionDetection,onDragStart:m.onDragStart,onDragMove:m.onDragMove,onDragEnd:m.onDragEnd,onDragCancel:m.onDragCancel,children:[c.jsxs("div",{className:Ne.area,ref:a,onDragOver:h.onDragOver,onDragLeave:h.onDragLeave,onDrop:h.onDrop,children:[d.length===0?c.jsx(vr,{cwd:t,paneId:null}):d.map(y=>c.jsx(vr,{cwd:t,paneId:y.paneId,style:y.stripStyle,focused:y.focused},y.paneId)),c.jsx(Yy,{}),c.jsx(pw,{}),t!==null&&g.length>0&&c.jsx(ry,{cwd:t,dividers:g,hostRef:a}),d.map(y=>c.jsx(Sw,{paneId:y.paneId,style:ii(f.get(y.paneId))},`drop-${y.paneId}`)),b!==null&&f.has(b.paneId)&&c.jsx(Ky,{rect:f.get(b.paneId),region:b.region}),t===null&&c.jsxs("div",{className:Ne.emptyStack,children:[c.jsx("div",{className:Ne.emptyTitle,children:"No workspace open"}),c.jsx("div",{className:Ne.emptyHint,children:"Open a project folder to start a chat."}),c.jsx(se,{size:"sm",variant:"secondary",leftIcon:c.jsx(Xi,{size:14}),disabled:s!=="open",title:s!=="open"?"Connect to open a workspace":"Open a workspace folder",onClick:()=>r(),children:"Open Workspace"})]}),t!==null&&!i&&c.jsx("div",{className:Ne.empty,children:"No open tabs in this workspace"}),e.map((y,I)=>{const _=Y_[y.kind],S=u[I],E=n==null?void 0:n.placement[y.id];return c.jsx("div",{className:U(Ne.panel,S.visible&&Ne.active),style:S.style,onPointerDown:()=>{t!==null&&E!==void 0&&o(t,E)},children:c.jsx(w.Suspense,{fallback:c.jsx(uo,{size:"md"}),children:c.jsx(_,{tab:y,owningPaneId:Q_(y.id,n)})})},y.id)})]}),c.jsx(Ra,{dropAnimation:null,children:m.draggedTab&&c.jsx(Gy,{tab:m.draggedTab})})]})}const br=e=>`${e} file${e>1?"s":""}`;function xw(e,t,n){let s=0,r=0;for(const[o,i]of e.entries()){if(i.size===void 0)return null;s+=i.size,o<t&&(r+=i.size)}return s<=0?null:Math.min(100,Math.floor((r+n)/s*100))}async function Iw(e,t,n){if(!t.length||!e)return;const s=t.filter(i=>n.existing.has(i.name));if(s.length>0){const i=s.map(u=>u.name).join(", ");if(!await n.confirm(`Overwrite ${s.length>1?"these files":"this file"}? ${i}`))return}const r=`Uploading ${br(t.length)}…`;n.setStatus({text:r,error:!1});let o=-1;try{for(const[i,a]of t.entries())await n.upload(e,a,{onProgress:u=>{const d=xw(t,i,u);d===null||d===o||(o=d,n.setStatus({text:`${r} ${d}%`,error:!1}))}});n.setStatus({text:`Uploaded ${br(t.length)}`,error:!1})}catch(i){n.setStatus({text:`Upload failed: ${i instanceof Error?i.message:"unknown"}`,error:!0})}}const le=ae()(e=>({rootPath:"",expanded:new Set,expandedByRoot:new Map,draft:null,renaming:null,selected:null,setRoot:t=>e(n=>{const s=new Map(n.expandedByRoot);n.rootPath&&s.set(n.rootPath,n.expanded);const r=s.get(t);return{rootPath:t,expanded:r?new Set(r):new Set([t]),expandedByRoot:s,draft:null,selected:null,renaming:null}}),toggle:t=>e(n=>{const s=new Set(n.expanded);s.has(t)?s.delete(t):s.add(t);const r=new Map(n.expandedByRoot);return r.set(n.rootPath,s),{expanded:s,expandedByRoot:r}}),startDraft:(t,n)=>e(s=>{const r=new Set(s.expanded);r.add(t);const o=new Map(s.expandedByRoot);return s.rootPath&&o.set(s.rootPath,r),{draft:{parentPath:t,kind:n},expanded:r,expandedByRoot:o,renaming:null}}),cancelDraft:()=>e({draft:null}),startRename:t=>e({renaming:t,draft:null}),cancelRename:()=>e({renaming:null}),setSelected:t=>e({selected:t}),repathAfterMove:(t,n,s)=>e(r=>{const o=d=>d===t?n:d.startsWith(`${t}/`)?n+d.slice(t.length):d,i=new Set([...r.expanded].map(o));i.add(s);const a=new Map(r.expandedByRoot);r.rootPath&&a.set(r.rootPath,i);const u=r.selected?{path:o(r.selected.path),isDirectory:r.selected.isDirectory}:null;return{expanded:i,expandedByRoot:a,selected:u,renaming:null}})})),He={fileRead:e=>["file","read",e],fileDownload:e=>["file","download",e],fileText:(e,t)=>["file","text",e,t],fileDiff:(e,t,n)=>["file","diff",e,t,n],fileDiffByPath:e=>["file","diff",e],htmlAssetBundle:(e,t)=>["file","htmlAssets",e,t],htmlAssetBundleByPath:e=>["file","htmlAssets",e],explorer:e=>["explorer",e],agentList:()=>["agents","list"],providerModels:(e,t)=>["providers","models",e,t??null],providerModelsAll:()=>["providers","models"],agentTimeline:e=>["agents","timeline",e],thinkingLevels:(e,t)=>["agents","thinkingLevels",e,t??""],agentCommands:e=>["agents","commands",e],providerAuthList:()=>["providers","auth","list"],skillsList:()=>["skills","list"]};function Tw(e){const t=e.kind==="directory"||e.type==="directory"?"directory":"file";return{name:e.name??"",kind:t,size:e.size,mtimeMs:e.mtimeMs}}function Ew(e){return e.slice().sort((t,n)=>t.kind!==n.kind?t.kind==="directory"?-1:1:t.name.localeCompare(n.name))}async function fi(e,t){const s=(await e.connection.request("file_explorer_request",{path:t})).result;if(!s||s.ok===!1)throw new Error(s&&"error"in s?s.error:"explorer request failed");const r="entries"in s?s.entries??[]:[];return{path:s.resolvedPath??t,entries:Ew(r.map(Tw))}}function Cw(e,t=!0){const n=N(s=>s.client);return Ni({queryKey:He.explorer(e),queryFn:()=>{if(!n)throw new Error("not connected");return fi(n,e)},enabled:!!n&&!!e&&t})}function Aw(e){const t=N(r=>r.client),n=w.useMemo(()=>Array.from(e),[e]),s=Di({queries:n.map(r=>({queryKey:He.explorer(r),queryFn:()=>{if(!t)throw new Error("not connected");return fi(t,r)},enabled:!!t&&!!r}))});return w.useMemo(()=>{const r=new Map;return n.forEach((o,i)=>{const a=s[i];r.set(o,{listing:a==null?void 0:a.data,isLoading:!!(a!=null&&a.isLoading),isError:!!(a!=null&&a.isError),error:a==null?void 0:a.error})}),r},[n,s])}function Rw(e){return typeof e=="object"&&e!==null&&"type"in e&&e.type==="file_changed"&&"path"in e&&typeof e.path=="string"}function jw(e,t){const n=new Set,s=e.connection.onSessionMessage(r=>{const o=r;Rw(o)&&n.has(o.path)&&t(o.path)});return{sync(r){for(const o of n)r.has(o)||(n.delete(o),e.connection.request("file_watch_unsubscribe",{path:o}).catch(()=>{}));for(const o of r)n.has(o)||(n.add(o),e.connection.request("file_watch_subscribe",{path:o}).then(i=>{const a=i;(a==null?void 0:a.ok)===!1&&console.warn(`useExplorerWatch: ${a.error??"subscribe failed"} for "${o}"`)}).catch(()=>{}))},dispose(){s();for(const r of n)e.connection.request("file_watch_unsubscribe",{path:r}).catch(()=>{});n.clear()}}}function Pw(e){const t=N(i=>i.client),n=st(),s=w.useRef(null),r=w.useRef(null),o=Array.from(e).toSorted().join("\0");w.useEffect(()=>{var i,a;t&&(r.current!==t&&((i=s.current)==null||i.dispose(),s.current=jw(t,u=>{n.invalidateQueries({queryKey:He.explorer(u)})}),r.current=t),(a=s.current)==null||a.sync(new Set(o?o.split("\0"):[])))},[t,o,n]),w.useEffect(()=>()=>{var i;(i=s.current)==null||i.dispose(),s.current=null,r.current=null},[])}async function qw(e,t,n,s){await V().files.upload(t,n,s),await e.invalidateQueries({queryKey:["explorer"]})}function pi(){const e=st(),t=w.useCallback((s,r,o)=>qw(e,s,r,o),[e]),n=w.useCallback(s=>V().files.saveToDisk(s),[]);return{upload:t,saveToDisk:n}}const Sr={available:!1,branch:null,upstream:null,ahead:0,behind:0,detached:!1,conflictCount:0},me=ae()(e=>({subscribedCwd:null,changes:[],ignored:[],...Sr,setSubscribedCwd:t=>e({subscribedCwd:t}),applyProjection:t=>{if(!t||!t.available){e({changes:[],ignored:[],...Sr});return}const n=[];for(const s of t.staged)n.push({path:s.path,status:s.indexStatus==="A"?"added":s.indexStatus==="D"?"deleted":"modified",staged:!0});for(const s of t.unstaged)n.push({path:s.path,status:s.worktreeStatus==="D"?"deleted":"modified",staged:!1});for(const s of t.untracked)n.push({path:s,status:"added",staged:!1});e({changes:n,ignored:t.ignored??[],available:!0,branch:t.branch,upstream:t.upstream,ahead:t.ahead,behind:t.behind,detached:t.detached,conflictCount:t.conflicted.length})}}));function qS(e,t){return e?e.startsWith("/")||e.startsWith("~")?e:t?`${t.replace(/\/+$/,"")}/${e}`:null:null}function Se(e){const t=e.lastIndexOf("/");return t>0?e.slice(0,t):"/"}function Mw(e,t){return!t||!e.startsWith(t)?e:e.slice(t.length).replace(/^\/+/,"")}function MS(e){if(!e.startsWith("/"))return e;const t=e.split("/"),n=[];for(const s of t)s===""||s==="."||(s===".."?n.length>0&&n.pop():n.push(s));return"/"+n.join("/")}function kr(e,t,n){if(t.kind!=="file"&&t.kind!=="directory")return null;const s=t.kind==="directory"?t.path:Se(t.path);if(s===Se(e)||s===e||s.startsWith(`${e}/`)||s!==n&&!s.startsWith(`${n}/`))return null;const r=e.split("/").pop();return{destinationDir:s,destination:`${s}/${r}`}}function xr(e,t){if(e.kind!=="file"&&e.kind!=="directory")return null;const n=e.kind==="directory"?e.path:Se(e.path);return n!==t&&!n.startsWith(`${t}/`)?null:n}const Nw={empty_path:"Nothing to move.",invalid_name:"Invalid name for the destination.",exists:"An item with that name already exists in the destination folder.",not_found:"That item or destination folder no longer exists.",not_a_directory:"The destination is not a folder.",same_path:"That item is already in this folder.",into_descendant:"A folder cannot be moved into itself.",cross_device:"Cannot move across filesystems."};async function Dw(e,t,n){const s=await e.connection.request("file_move_request",{path:t,destination:n});if(!s.ok){const r=s.error??"";throw new Error(Nw[r]??r??"Failed to move")}return s.destination??n}function Ir(e,t){return t===0?e:`${e} — closed ${t} ${t===1?"diff tab":"diff tabs"}`}function $w(e){return`${e.kind}:${e.path}`}function hi(e,t){return e.endsWith("/")?`${e}${t}`:`${e}/${t}`}function gi(e,t,n,s,r,o,i){var u;(o==null?void 0:o.parentPath)===t&&e.push({kind:"draft",path:`${t}::draft`,depth:n,draftKind:o.kind,parentPath:t});const a=r.get(t);if(!a||a.isLoading){e.push({kind:"loading",path:t,depth:n});return}if(a.isError){const d=a.error instanceof Error?a.error.message:"failed to load";e.push({kind:"error",path:t,depth:n,message:d});return}for(const d of((u=a.listing)==null?void 0:u.entries)??[])Lw(e,t,d,n,s,r,o,i)}function Lw(e,t,n,s,r,o,i,a){const u=hi(t,n.name),d=n.kind==="directory",g=d&&r.has(u);u===a?e.push({kind:"rename",path:u,depth:s,name:n.name,isDirectory:d}):d?e.push({kind:"directory",path:u,name:n.name,depth:s,expanded:g}):e.push({kind:"file",path:u,name:n.name,depth:s}),g&&gi(e,u,s+1,r,o,i,a)}function Ow(e,t,n,s,r){if(!e)return[];const o=t.has(e),i=[{kind:"directory",path:e,name:e.split("/").pop()||e,depth:0,expanded:o}];return o&&gi(i,e,1,t,n,s,r),i}const Bw=()=>{};function Fw(e,t){return e===void 0?t:e==="deleted"||t==="deleted"?"deleted":e==="added"||t==="added"?"added":"modified"}function zw(e){return e==="added"?"added":"modified"}function Ww(e,t){if(!e||t.length===0)return Bw;const n=e.replace(/\/+$/,""),s=new Map,r=new Map,o=[];for(const i of t){const a=i.path.endsWith("/"),u=a?i.path.slice(0,-1):i.path;if(!u)continue;const d=`${n}/${u}`;s.set(d,Fw(s.get(d),i.status)),a&&o.push(d);const g=zw(i.status);let f=Se(d);for(;f.length>n.length&&f.startsWith(n);){const m=r.get(f);r.set(f,m===void 0||m===g?g:"modified");const h=Se(f);if(h===f)break;f=h}}return i=>{const a=s.get(i)??r.get(i);if(a!==void 0)return a;for(const u of o)if(i.startsWith(`${u}/`))return"added"}}const Uw=()=>!1;function Hw(e,t){if(!e||t.length===0)return Uw;const n=e.replace(/\/+$/,""),s=new Set,r=[];for(const o of t){const i=o.endsWith("/"),a=i?o.slice(0,-1):o;if(!a)continue;const u=`${n}/${a}`;s.add(u),i&&r.push(`${u}/`)}return o=>{if(s.has(o))return!0;for(const i of r)if(o.startsWith(i))return!0;return!1}}const Vw="_container_1wywk_1",Kw="_header_1wywk_7",Gw="_uploadButton_1wywk_14",Yw="_hiddenInput_1wywk_33",Xw="_status_1wywk_36",Jw="_statusError_1wywk_37",Zw="_rowAction_1wywk_50",Qw="_item_1wywk_53",ev="_list_1wywk_60",tv="_active_1wywk_83",nv="_selected_1wywk_88",sv="_dropTarget_1wywk_92",rv="_rootItem_1wywk_99",ov="_dirName_1wywk_98",iv="_chevronSlot_1wywk_104",av="_chevron_1wywk_104",cv="_chevronOpen_1wywk_115",lv="_icon_1wywk_118",uv="_name_1wywk_125",dv="_gitAdded_1wywk_140",fv="_gitModified_1wywk_145",pv="_gitDeleted_1wywk_150",hv="_hiddenEntry_1wywk_162",gv="_statusRow_1wywk_171",mv="_statusRowError_1wywk_182",_v="_draftInput_1wywk_185",W={container:Vw,header:Kw,uploadButton:Gw,hiddenInput:Yw,status:Xw,statusError:Jw,rowAction:Zw,item:Qw,list:ev,active:tv,selected:nv,dropTarget:sv,rootItem:rv,dirName:ov,chevronSlot:iv,chevron:av,chevronOpen:cv,icon:lv,name:uv,gitAdded:dv,gitModified:fv,gitDeleted:pv,hiddenEntry:hv,statusRow:gv,statusRowError:mv,draftInput:_v};function yv({draftKind:e,indentStyle:t,onSubmit:n,onCancel:s}){const[r,o]=w.useState("");return c.jsxs("div",{className:W.item,style:t,onClick:i=>i.stopPropagation(),children:[c.jsx("span",{className:W.chevronSlot}),c.jsx("span",{className:W.icon,children:e==="directory"?c.jsx(Ve,{size:16}):c.jsx(dn,{size:16})}),c.jsx("input",{className:W.draftInput,autoFocus:!0,spellCheck:!1,placeholder:e==="directory"?"New folder":"New file",value:r,onChange:i=>o(i.target.value),onKeyDown:i=>{if(i.key==="Enter"){i.preventDefault();const a=r.trim();a?n(a):s()}else i.key==="Escape"&&(i.preventDefault(),s())},onBlur:s})]})}function wv({name:e,isDirectory:t,indentStyle:n,onSubmit:s,onCancel:r}){const[o,i]=w.useState(e),a=w.useRef(null);return w.useEffect(()=>{const u=a.current;if(!u)return;u.focus();const d=e.lastIndexOf("."),g=t||d<=0?e.length:d;u.setSelectionRange(0,g)},[e,t]),c.jsxs("div",{className:W.item,style:n,onClick:u=>u.stopPropagation(),children:[c.jsx("span",{className:W.chevronSlot}),c.jsx("span",{className:W.icon,children:t?c.jsx(Ve,{size:16}):c.jsx(dn,{size:16})}),c.jsx("input",{ref:a,className:W.draftInput,spellCheck:!1,value:o,onChange:u=>i(u.target.value),onKeyDown:u=>{if(u.key==="Enter"){u.preventDefault();const d=o.trim();!d||d===e?r():s(d)}else u.key==="Escape"&&(u.preventDefault(),r())},onBlur:r})]})}const vv=14,bv={added:W.gitAdded,modified:W.gitModified,deleted:W.gitDeleted};function Sv({row:e,active:t,selected:n,dropTarget:s,gitStatus:r,hidden:o,isRoot:i,onToggle:a,onOpenFile:u,onContextMenu:d,onSubmitDraft:g,onCancelDraft:f,onSubmitRename:m,onCancelRename:h,onDragStartRow:b,onDragEndRow:y}){const I={paddingLeft:8+e.depth*vv};if(e.kind==="loading")return c.jsx("div",{className:W.statusRow,style:I,children:"Loading…"});if(e.kind==="error")return c.jsx("div",{className:U(W.statusRow,W.statusRowError),style:I,children:e.message??"failed to load"});if(e.kind==="draft")return c.jsx(yv,{draftKind:e.draftKind,indentStyle:I,onSubmit:S=>g(e.parentPath,S),onCancel:f});if(e.kind==="rename")return c.jsx(wv,{name:e.name,isDirectory:e.isDirectory,indentStyle:I,onSubmit:S=>m(e.path,S),onCancel:h});const _=e.kind==="directory";return c.jsxs("div",{className:U(W.item,i&&W.rootItem,t&&W.active,n&&W.selected,s&&W.dropTarget,r&&bv[r],o&&W.hiddenEntry),style:I,title:e.path,draggable:!i,onDragStart:S=>b(e.path,_,S),onDragEnd:y,onClick:()=>_?a(e.path):u(e.path),onContextMenu:S=>{S.preventDefault(),S.stopPropagation(),d(e.path,_,S.clientX,S.clientY)},children:[c.jsx("span",{className:W.chevronSlot,children:_&&c.jsx(Xn,{size:14,className:U(W.chevron,e.expanded&&W.chevronOpen)})}),c.jsx("span",{className:W.icon,children:_?c.jsx(Ve,{size:16}):c.jsx(dn,{size:16})}),c.jsx("span",{className:_?W.dirName:W.name,children:e.name}),c.jsx(je,{className:W.rowAction,title:"Actions",onClick:S=>{S.stopPropagation();const E=S.currentTarget.getBoundingClientRect();d(e.path,_,E.left,E.bottom)},children:c.jsx(Gn,{size:14})})]})}const kv={empty_path:"Nothing to delete.",not_found:"That item no longer exists."};async function xv(e,t){const n=await e.connection.request("file_delete_request",{path:t});if(!n.ok){const s=n.error??"";throw new Error(kv[s]??s??"Failed to delete")}}function Iv(){const e=$(L=>L.fileMenu),t=$(L=>L.closeFileMenu),n=N(L=>L.client),s=le(L=>L.startDraft),r=le(L=>L.startRename),o=le(L=>L.rootPath),i=M(L=>L.activeWorkspaceCwd),a=Ue(L=>L.isViewerEnabled("molviewer")),{saveToDisk:u}=pi(),d=st(),g=w.useRef(null),[f,m]=w.useState(!1);if(w.useEffect(()=>{m(e!==null)},[e]),!e)return null;const h=e.path.split("/").pop()||e.path;function b(L){m(L),L||t()}function y(){e&&(t(),ps(e.path,i||"~"))}function I(){e&&(t(),ui(e.path,i||"~"))}function _(){e&&(t(),li(e.path,i||"~"))}async function S(){if(e){t();try{await V().clipboard.writeText(e.path)}catch{await V().dialogs.alert("Failed to copy to clipboard.")}}}async function E(){if(e){t();try{await V().clipboard.writeText(Mw(e.path,o)||"/")}catch{await V().dialogs.alert("Failed to copy to clipboard.")}}}async function R(){if(e){t();try{await u(e.path)}catch(L){await V().dialogs.alert(`Failed to download: ${L instanceof Error?L.message:String(L)}`)}}}async function q(){if(!e)return;const L=e.isDirectory?"folder (and everything inside it)":"file";if(!await V().dialogs.confirm(`Permanently delete this ${L}? "${h}" — this cannot be undone.`))return t();if(t(),!n){await V().dialogs.alert("Not connected — cannot delete remotely.");return}try{await xv(n,e.path),await d.invalidateQueries({queryKey:["explorer"]}),M.getState().closeByPathPrefix(e.path)}catch(ce){await V().dialogs.alert(`Failed to delete: ${ce instanceof Error?ce.message:String(ce)}`)}}function H(L){if(!e)return;const ne=e.isDirectory?e.path:Se(e.path);t(),s(ne,L)}function ie(){e&&(t(),r(e.path))}return c.jsxs(Ct,{open:f,onOpenChange:b,modal:!1,children:[c.jsx(At,{asChild:!0,children:c.jsx(hn,{ref:g,x:e.x,y:e.y})}),c.jsx(Pt,{minWidth:140,children:e.background?c.jsxs(c.Fragment,{children:[c.jsxs(G,{onSelect:()=>H("file"),children:[c.jsx(Pn,{size:13}),"New File"]}),c.jsxs(G,{onSelect:()=>H("directory"),children:[c.jsx(Qt,{size:13}),"New Folder"]}),c.jsx(ze,{}),c.jsxs(G,{onSelect:S,children:[c.jsx(Lt,{size:13}),"Copy Current Directory Path"]}),c.jsxs(G,{onSelect:E,children:[c.jsx(Lt,{size:13}),"Copy Current Directory Relative Path"]})]}):c.jsxs(c.Fragment,{children:[!e.isDirectory&&c.jsxs(c.Fragment,{children:[c.jsxs(G,{onSelect:y,children:[c.jsx(Ji,{size:13}),"Open"]}),a&&c.jsxs(G,{onSelect:I,children:[c.jsx(un,{size:13}),"Open in MolViewer"]}),a&&ci(e.path)&&c.jsxs(G,{onSelect:_,children:[c.jsx(Zi,{size:13}),"Open as Text"]}),c.jsx(ze,{})]}),e.isDirectory&&c.jsxs(c.Fragment,{children:[c.jsxs(G,{onSelect:()=>H("file"),children:[c.jsx(Pn,{size:13}),"New File"]}),c.jsxs(G,{onSelect:()=>H("directory"),children:[c.jsx(Qt,{size:13}),"New Folder"]}),c.jsx(ze,{})]}),c.jsxs(G,{onSelect:S,children:[c.jsx(Lt,{size:13}),"Copy Absolute Path"]}),c.jsxs(G,{onSelect:E,children:[c.jsx(Lt,{size:13}),"Copy Relative Path"]}),c.jsx(ze,{}),!e.isDirectory&&c.jsxs(c.Fragment,{children:[c.jsxs(G,{onSelect:R,children:[c.jsx(Qi,{size:13}),"Download"]}),c.jsx(ze,{})]}),c.jsxs(G,{onSelect:ie,children:[c.jsx(Ar,{size:13}),"Rename"]}),c.jsxs(G,{danger:!0,onSelect:q,children:[c.jsx(Yn,{size:13}),"Delete"]})]})})]})}const Tv={empty_path:"Choose a folder first.",invalid_name:'Invalid name — cannot be empty or contain "/".',exists:"An item with that name already exists here.",not_found:"That folder no longer exists.",not_a_directory:"That path is not a folder.",unreadable:"That folder is not readable."};class Ev extends Error{constructor(t,n){super(n),this.code=t,this.name="CreateEntryError"}}async function mi(e,t,n,s){const r=await e.connection.request("file_create_request",{path:t,name:n,kind:s});if(!r.ok){const o=r.error??"";throw new Ev(o,Tv[o]??o??"Failed to create")}return r.path??(t.endsWith("/")?`${t}${n}`:`${t}/${n}`)}const Cv=28,ut="application/x-pi-studio-path",An="Files";function Av(){const e=N(k=>k.client),t=le(k=>k.rootPath),n=le(k=>k.expanded),s=le(k=>k.setRoot),r=le(k=>k.toggle),o=le(k=>k.draft),i=le(k=>k.startDraft),a=le(k=>k.cancelDraft),u=le(k=>k.renaming),d=le(k=>k.cancelRename),g=le(k=>k.selected),f=le(k=>k.setSelected),m=M(k=>k.activeWorkspaceCwd),h=rt(),b=M(k=>k.tabs.find(j=>j.id===k.activeTabId)),y=me(k=>k.changes),I=me(k=>k.ignored),{upload:_}=pi(),S=$(k=>k.openFileMenu),E=st(),[R,q]=w.useState(null),[H,ie]=w.useState(null),L=w.useRef(null),ne=w.useRef(null),ce=w.useRef(null),Y=w.useRef(null),ye=(b==null?void 0:b.kind)==="file"||(b==null?void 0:b.kind)==="molecule"?b.data.path:null,ke=g?g.isDirectory?g.path:Se(g.path):t,x=w.useRef(null);w.useEffect(()=>{if(!e)return;const k=Le(m||"~",h);k.startsWith("~")||x.current!==k&&(x.current=k,s(k))},[e,m,h,s]);const fe=Aw(n);Pw(n);const Dt=w.useMemo(()=>Ow(t,n,fe,o,u),[t,n,fe,o,u]),bi=w.useMemo(()=>Ww(t,y),[t,y]),Si=w.useMemo(()=>Hw(t,I),[t,I]),_s=$i({count:Dt.length,getScrollElement:()=>ne.current,estimateSize:()=>Cv,overscan:12,getItemKey:k=>{const j=Dt[k];return j?$w(j):k}});function _n(k){ps(k,m||"~")}function ki(k,j,z){z.dataTransfer.setData(ut,k),j||z.dataTransfer.setData(Mt.path,k),z.dataTransfer.setData(ds,B_(k,j)),z.dataTransfer.effectAllowed="copyMove",ce.current=k}function xi(){ce.current=null}function yn(){ie(null),Y.current&&(clearTimeout(Y.current.timer),Y.current=null)}function ys(k){var z;if(((z=Y.current)==null?void 0:z.path)===k.path||(Y.current&&clearTimeout(Y.current.timer),Y.current=null,k.kind!=="directory"||k.expanded))return;const j=window.setTimeout(()=>r(k.path),700);Y.current={path:k.path,timer:j}}async function ws(k,j){if(!e)throw new Error("Not connected.");const z=await Dw(e,k,j),O=Se(z);await E.invalidateQueries({queryKey:He.explorer(Se(k))}),await E.invalidateQueries({queryKey:He.explorer(O)}),le.getState().repathAfterMove(k,z,O);const X=M.getState().tabs.filter(xe=>{if(xe.kind!=="file"&&xe.kind!=="diff"&&xe.kind!=="molecule")return!1;const $t=xe.data.path;return $t===k||(($t==null?void 0:$t.startsWith(`${k}/`))??!1)}),qe=X.some(xe=>(xe.kind==="file"||xe.kind==="molecule")&&xe.data.path===k),ot=X.filter(xe=>xe.kind==="diff").length;return M.getState().closeByPathPrefix(k),qe&&_n(z),{destination:z,closedDiffs:ot}}async function Ii(k,j){const z=kr(k,j,t);if(!z||!e)return;const O=k.split("/").pop()??k;q({text:`Moving ${O}…`,error:!1});try{const{destination:X,closedDiffs:qe}=await ws(k,z.destination);q({text:Ir(`Moved to ${Se(X).split("/").pop()||"/"}`,qe),error:!1})}catch(X){q({text:X instanceof Error?X.message:"Failed to move",error:!0})}}async function Ti(k,j){const z=(o==null?void 0:o.kind)??"file";if(a(),!!e)try{const O=await mi(e,k,j,z);await E.invalidateQueries({queryKey:He.explorer(k)}),q({text:`Created ${O}`,error:!1}),z==="file"&&_n(O)}catch(O){q({text:O instanceof Error?O.message:"Failed to create",error:!0})}}async function Ei(k,j){if(d(),!e)return;const z=hi(Se(k),j);q({text:`Renaming ${k.split("/").pop()}…`,error:!1});try{const{destination:O,closedDiffs:X}=await ws(k,z);q({text:Ir(`Renamed to ${O.split("/").pop()}`,X),error:!1})}catch(O){q({text:O instanceof Error?O.message:"Failed to rename",error:!0})}}function wn(k,j){var O;const z=(O=fe.get(k))==null?void 0:O.listing;return Iw(k,j,{existing:new Set((z==null?void 0:z.entries.map(X=>X.name))??[]),confirm:X=>V().dialogs.confirm(X),upload:_,setStatus:q})}function vs(k,j){if(k.preventDefault(),k.dataTransfer.types.includes(ut)){const X=k.dataTransfer.getData(ut)||ce.current;yn(),X&&Ii(X,j??{kind:"directory",path:t});return}if(yn(),!k.dataTransfer.types.includes(An))return;const z=j?xr(j,t):t;if(!z)return;const O=Array.from(k.dataTransfer.files);O.length&&wn(z,O)}function Ci(k){const j=k.dataTransfer.types.includes(ut);!j&&!k.dataTransfer.types.includes(An)||(k.preventDefault(),k.dataTransfer.dropEffect=j?"move":"copy")}return e?c.jsxs("div",{className:W.container,onDragOver:Ci,onDragLeave:k=>{k.currentTarget.contains(k.relatedTarget)||yn()},onDrop:k=>vs(k),children:[c.jsxs("div",{className:W.header,children:[c.jsx("button",{type:"button",className:W.uploadButton,onClick:()=>i(ke,"file"),disabled:!t,title:g?`New file in ${ke.split("/").pop()||"/"}`:"New file in workspace root",children:c.jsx(Pn,{size:14})}),c.jsx("button",{type:"button",className:W.uploadButton,onClick:()=>i(ke,"directory"),disabled:!t,title:g?`New folder in ${ke.split("/").pop()||"/"}`:"New folder in workspace root",children:c.jsx(Qt,{size:14})}),c.jsxs("button",{type:"button",className:W.uploadButton,onClick:()=>{var j;const k=V().files;if(!k.pickUploads)return(j=L.current)==null?void 0:j.click();k.pickUploads().then(z=>wn(t,z),z=>q({text:`Upload failed: ${z instanceof Error?z.message:"unknown"}`,error:!0}))},disabled:!t,title:"Upload files to the workspace root",children:[c.jsx(ea,{size:14}),c.jsx("span",{children:"Upload"})]}),c.jsx("input",{ref:L,type:"file",multiple:!0,className:W.hiddenInput,onChange:k=>{wn(t,Array.from(k.target.files??[])),k.target.value=""}})]}),R&&c.jsx("div",{className:R.error?W.statusError:W.status,children:R.text}),c.jsxs("div",{className:W.list,ref:ne,onContextMenu:k=>{k.preventDefault(),S(t,!0,k.clientX,k.clientY,!0)},children:[Dt.length===0&&c.jsx($e,{children:"No files loaded"}),c.jsx("div",{style:{position:"relative",height:_s.getTotalSize()},children:_s.getVirtualItems().map(k=>{const j=Dt[k.index];if(!j)return null;const z=j.path===t&&j.kind==="directory";return c.jsx("div",{"data-index":k.index,style:{position:"absolute",top:0,left:0,width:"100%",height:k.size,transform:`translateY(${k.start}px)`},onDragEnter:O=>{if(O.dataTransfer.types.includes(ut)){const qe=ce.current;if(!qe)return;const ot=kr(qe,j,t);ie(ot?j.path:null),ys(j);return}if(!O.dataTransfer.types.includes(An))return;const X=xr(j,t);ie(X?j.path:null),ys(j)},onDrop:O=>{O.stopPropagation(),vs(O,j)},children:c.jsx(Sv,{row:j,active:(j.kind==="file"||j.kind==="directory")&&j.path===ye,selected:(j.kind==="file"||j.kind==="directory")&&j.path===(g==null?void 0:g.path),gitStatus:!z&&(j.kind==="file"||j.kind==="directory")?bi(j.path):void 0,hidden:!z&&(j.kind==="file"||j.kind==="directory")&&(j.name.startsWith(".")||Si(j.path)),isRoot:z,onToggle:O=>{f({path:O,isDirectory:!0}),r(O)},onOpenFile:O=>{f({path:O,isDirectory:!1}),_n(O)},onContextMenu:(O,X,qe,ot)=>S(O,X,qe,ot,z),onSubmitDraft:(O,X)=>void Ti(O,X),onCancelDraft:a,onSubmitRename:(O,X)=>void Ei(O,X),onCancelRename:d,onDragStartRow:ki,onDragEndRow:xi,dropTarget:(j.kind==="file"||j.kind==="directory")&&j.path===H})},k.key)})})]}),c.jsx(Iv,{})]}):c.jsx($e,{children:"Connect to browse files"})}const Rv="_list_1n3q6_1",jv="_summary_1n3q6_4",Pv="_item_1n3q6_11",qv="_badge_1n3q6_23",Mv="_added_1n3q6_30",Nv="_modified_1n3q6_34",Dv="_deleted_1n3q6_38",$v="_name_1n3q6_42",Ye={list:Rv,summary:jv,item:Pv,badge:qv,added:Mv,modified:Nv,deleted:Dv,name:$v},Lv={added:"A",modified:"M",deleted:"D"};function Ov(){const t=M(o=>o.activeWorkspaceCwd)||"~",n=me(o=>o.changes),s=M(o=>o.open);function r(o,i){s({id:Q.diff(o,i),kind:"diff",label:o.split("/").pop()||o,closable:!0,data:{path:o,staged:i},workspaceCwd:t})}return n.length===0?c.jsx($e,{children:"No changes detected"}):c.jsxs("div",{className:Ye.list,children:[c.jsxs("div",{className:Ye.summary,children:[n.length," changed file",n.length===1?"":"s"]}),n.map((o,i)=>c.jsxs("div",{className:Ye.item,onClick:()=>r(o.path,o.staged),children:[c.jsx("span",{className:U(Ye.badge,Ye[o.status]),children:Lv[o.status]}),c.jsx("span",{className:Ye.name,children:o.path})]},`${o.path}-${o.staged}-${i}`))]})}const Bv="_tabBar_1tvri_1",Fv="_tabBtn_1tvri_7",zv="_active_1tvri_23",Wv="_refreshBtn_1tvri_27",Uv="_content_1tvri_31",Be={tabBar:Bv,tabBtn:Fv,active:zv,refreshBtn:Wv,content:Uv};function Hv(){const e=$(a=>a.rightSidebarTab),t=$(a=>a.setRightSidebarTab),s=M(a=>a.activeWorkspaceCwd)||"~",r=N(a=>a.client),o=st();function i(){o.invalidateQueries({queryKey:["explorer"]}),r&&s&&r.connection.request("checkout_refresh_request",{cwd:s}).catch(()=>{})}return c.jsxs(fo,{children:[c.jsxs("div",{className:Be.tabBar,children:[c.jsxs("button",{type:"button",className:U(Be.tabBtn,e==="files"&&Be.active),onClick:()=>t("files"),children:[c.jsx(Ve,{size:13}),"Files"]}),c.jsxs("button",{type:"button",className:U(Be.tabBtn,e==="changes"&&Be.active),onClick:()=>t("changes"),children:[c.jsx(Pr,{size:13}),"Changes"]}),c.jsx(se,{size:"xs",variant:"ghost",iconOnly:!0,title:"Refresh",className:Be.refreshBtn,onClick:i,children:c.jsx(ta,{size:13})})]}),c.jsx("div",{className:Be.content,children:e==="files"?c.jsx(Av,{}):c.jsx(Ov,{})})]})}function Vv(e,t){var o;const{bySession:n,setStats:s}=hs.getState(),r=(o=n[e])==null?void 0:o.contextWindow;s(e,{contextTokens:t,contextPercent:r?t*100/r:void 0,contextEstimated:!0})}const hs=ae()(e=>({bySession:{},setStats(t,n){e(s=>({bySession:{...s.bySession,[t]:{...s.bySession[t],...n}}}))},clear(t){e(n=>{const{[t]:s,...r}=n.bySession;return{bySession:r}})}})),Kv=12e3;function Gv(e,t){return e==="running"&&t!=="running"}function Tr(e,t){var s,r,o,i,a,u;const n={};((s=t.contextUsage)==null?void 0:s.tokens)!=null&&(n.contextTokens=t.contextUsage.tokens,n.contextEstimated=!1),((r=t.contextUsage)==null?void 0:r.contextWindow)!==void 0&&(n.contextWindow=t.contextUsage.contextWindow),((o=t.contextUsage)==null?void 0:o.percent)!=null&&(n.contextPercent=t.contextUsage.percent),((i=t.tokens)==null?void 0:i.total)!==void 0&&(n.totalTokens=t.tokens.total),((a=t.tokens)==null?void 0:a.input)!==void 0&&(n.inputTokens=t.tokens.input),((u=t.tokens)==null?void 0:u.output)!==void 0&&(n.outputTokens=t.tokens.output),t.cost!==void 0&&(n.cost=t.cost),t.model!==void 0&&(n.model=t.model,A.getState().setModel(e,t.model)),hs.getState().setStats(e,n)}function Yv(e){const t=N(a=>a.client),n=N(a=>a.status),s=A(a=>{var u;return e?((u=a.sessions[e])==null?void 0:u.agentId)??null:null}),r=A(a=>{var u;return e?(u=a.sessions[e])==null?void 0:u.status:void 0}),o=w.useRef(!1),i=w.useRef(void 0);w.useEffect(()=>{if(n!=="open"||!t||!e||!s)return;let a=!1;const u=async()=>{if(!o.current){o.current=!0;try{const g=await t.agent(s).sessionStats();a||Tr(e,g)}catch{}finally{o.current=!1}}};u();const d=setInterval(()=>void u(),Kv);return()=>{a=!0,clearInterval(d)}},[n,t,e,s]),w.useEffect(()=>{const a=i.current;i.current=r,Gv(a,r)&&(n!=="open"||!t||!e||!s||(o.current=!1,t.agent(s).sessionStats().then(u=>Tr(e,u)).catch(()=>{})))},[r,n,t,e,s])}function Xv(e){return typeof e=="object"&&e!==null&&"type"in e&&e.type==="checkout_status_update"&&"cwd"in e&&typeof e.cwd=="string"&&"projection"in e&&typeof e.projection=="object"&&e.projection!==null}function Jv(e){const t=N(o=>o.client),n=me(o=>o.applyProjection),s=me(o=>o.setSubscribedCwd),r=w.useRef(t);return r.current=t,w.useEffect(()=>{if(!t||!e)return;let o=!1;t.connection.request("checkout_status_subscribe",{cwd:e}).catch(()=>{}),s(e);const i=t.connection.onSessionMessage(a=>{if(o)return;const u=a;Xv(u)&&u.cwd===e&&n(u.projection)});return t.connection.request("checkout_refresh_request",{cwd:e}).catch(()=>{}),()=>{o=!0,i(),t.connection.request("checkout_status_unsubscribe",{cwd:e}).catch(()=>{}),s(null)}},[t,e,n,s]),{refresh(){const o=r.current;!o||!e||o.connection.request("checkout_refresh_request",{cwd:e}).catch(()=>{})}}}const gs="--";function bt(e){return e===void 0?gs:e<1e3?String(e):e<1e6?`${(e/1e3).toFixed(1)}k`:`${(e/1e6).toFixed(1)}M`}function Zv(e){return e==null?gs:e>0&&e<1?"<1%":`${Math.round(e)}%`}function Qv(e){if(e===void 0)return gs;const t=e<1?4:2;return`$${e.toFixed(t)}`}function eb(e,t){return t?e===t?"~":e.startsWith(`${t}/`)?`~${e.slice(t.length)}`:e:e}function tb(e,t){const n=[];return e>0&&n.push(`↑${e}`),t>0&&n.push(`↓${t}`),n.join(" ")}function _i(e){return e.some(t=>t.kind==="compaction"&&t.phase==="started")}function nb(e){return e.find(t=>t.kind==="compaction"&&t.phase==="started")}function Er(e){return e<1e3?String(e):e<1e6?`${+(e/1e3).toFixed(1)}k`:`${+(e/1e6).toFixed(1)}M`}function sb(e){let t;if(e.reason==="manual"?t="manual":e.reason==="threshold"?t="auto · threshold":e.reason==="overflow"&&(t="auto · overflow"),!!t)return e.willRetry?`${t} · retrying turn`:t}function rb(e){const t=sb(e),n=t?` (${t})`:"";switch(e.phase){case"started":return`Compacting context…${n}`;case"completed":{if(e.tokensBefore===void 0)return`Context compacted${n}`;const s=Er(e.tokensBefore);return`Context compacted · ${e.estimatedTokensAfter===void 0?`${s} before`:`${s} → ~${Er(e.estimatedTokensAfter)}`}${n}`}case"failed":return`Compaction failed${e.error?`: ${e.error}`:""}${n}`;case"canceled":return`Compaction canceled${n}`}}const Rn=new Set;function jn(e,t){const{[t]:n,...s}=e;return s}const Jt=ae()((e,t)=>({pendingBySession:{},lastErrorBySession:{},async compactSession(n,s){var u;const{client:r,status:o,serverInfo:i}=N.getState();if(!r||o!=="open")return{ok:!1,reason:"disconnected"};const a=A.getState().sessions[n];if(!(a!=null&&a.agentId))return{ok:!1,reason:"no-agent"};if(a.status==="running")return{ok:!1,reason:"running"};if(t().pendingBySession[n]||_i(a.timeline.rows))return{ok:!1,reason:"compacting"};e(d=>({pendingBySession:{...d.pendingBySession,[n]:!0},lastErrorBySession:jn(d.lastErrorBySession,n)}));try{const d=await r.agent(a.agentId).compact(s);return!((u=i==null?void 0:i.features)!=null&&u.compactionEvents)&&d.estimatedTokensAfter!=null&&Vv(n,d.estimatedTokensAfter),{ok:!0}}catch(d){if(Rn.has(n))return{ok:!1,reason:"canceled"};const g=d instanceof Error?d.message:String(d);return e(f=>({lastErrorBySession:{...f.lastErrorBySession,[n]:g}})),{ok:!1,reason:"failed",message:g}}finally{Rn.delete(n),e(d=>({pendingBySession:jn(d.pendingBySession,n)}))}},async cancelCompaction(n){var o;const s=N.getState().client,r=(o=A.getState().sessions[n])==null?void 0:o.agentId;!s||!r||(t().pendingBySession[n]&&Rn.add(n),await s.agent(r).interrupt())},clearError(n){e(s=>({lastErrorBySession:jn(s.lastErrorBySession,n)}))}}));function ob(e){const t=A(s=>{var r;return e?_i(((r=s.sessions[e])==null?void 0:r.timeline.rows)??[]):!1}),n=Jt(s=>e?s.pendingBySession[e]===!0:!1);return t||n}const ib=.7,ab=.9;function yi(e,t){if(t)return{kind:"compacting"};const n=(e==null?void 0:e.contextEstimated)===!0;return(e==null?void 0:e.contextTokens)!==void 0&&e.contextWindow?{kind:"value",fraction:e.contextTokens/e.contextWindow,estimated:n}:(e==null?void 0:e.contextPercent)!==void 0?{kind:"value",fraction:e.contextPercent/100,estimated:n}:{kind:"unknown"}}function cb(e){return e>=ab?"danger":e>=ib?"warning":"normal"}function wi(e){return e.kind==="value"?Math.min(Math.max(e.fraction,0),1):0}function ms(e){switch(e.kind){case"compacting":return"Compacting…";case"unknown":return"—";case"value":return`${e.estimated?"~":""}${Zv(e.fraction*100)}`}}function Kn(e,t){if(t.kind==="compacting")return"Compacting context…";if(t.kind==="unknown")return"Context usage unknown";const n=bt(e==null?void 0:e.contextWindow),s=(e==null?void 0:e.contextTokens)!==void 0&&e.contextWindow?bt(e.contextTokens):void 0;return s===void 0?`${ms(t)} of ${n} tokens`:t.estimated?`≈ ${s} / ${n} tokens (estimate)`:`${s} / ${n} tokens`}function lb(e){return e.kind==="value"?Math.round(wi(e)*100):void 0}const ub="_meter_mqbjo_1",db="_meterWide_mqbjo_7",fb="_trackWide_mqbjo_12",pb="_track_mqbjo_12",hb="_trackUnknown_mqbjo_27",gb="_fill_mqbjo_32",mb="_fillWarning_mqbjo_39",_b="_fillDanger_mqbjo_43",yb="_fillEstimated_mqbjo_48",wb="_sweep_mqbjo_58",vb="_label_mqbjo_90",ge={meter:ub,meterWide:db,trackWide:fb,track:pb,trackUnknown:hb,fill:gb,fillWarning:mb,fillDanger:_b,fillEstimated:yb,sweep:wb,label:vb};function Cr({stats:e,compacting:t,wide:n=!1}){const s=yi(e,t),r=ms(s),o=lb(s),i=s.kind==="value"&&s.estimated,a=s.kind==="value"?cb(s.fraction):"normal";return c.jsxs("span",{className:U(ge.meter,n&&ge.meterWide),title:Kn(e,s),children:[c.jsxs("span",{role:"meter","aria-label":"Context usage","aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":o,"aria-valuetext":s.kind==="value"&&!i?void 0:r,className:U(ge.track,n&&ge.trackWide,s.kind==="unknown"&&ge.trackUnknown,s.kind==="compacting"&&ge.trackCompacting),children:[s.kind==="value"&&c.jsx("span",{className:U(ge.fill,a==="warning"&&ge.fillWarning,a==="danger"&&ge.fillDanger,i&&ge.fillEstimated),style:{width:`${wi(s)*100}%`}}),s.kind==="compacting"&&c.jsx("span",{className:ge.sweep})]}),c.jsx("span",{className:ge.label,children:r})]})}function bb(e){return e.compacting?{kind:"cancel"}:e.connected?e.hasAgent?e.running?{kind:"disabled",note:"Wait for the agent to finish"}:{kind:"compact"}:{kind:"disabled",note:"Nothing to compact yet"}:{kind:"disabled",note:"Not connected"}}const Sb="_trigger_fxl9k_2",kb="_body_fxl9k_19",xb="_heading_fxl9k_25",Ib="_detail_fxl9k_29",Tb="_note_fxl9k_30",Eb="_field_fxl9k_35",Cb="_fieldLabel_fxl9k_41",Ab="_error_fxl9k_46",Rb="_actions_fxl9k_51",Ae={trigger:Sb,body:kb,heading:xb,detail:Ib,note:Tb,field:Eb,fieldLabel:Cb,error:Ab,actions:Rb};function jb({sessionId:e,stats:t}){const[n,s]=w.useState(""),r=ob(e),o=N(I=>I.status==="open"),i=A(I=>{var _;return((_=I.sessions[e])==null?void 0:_.agentId)??null}),a=A(I=>{var _;return((_=I.sessions[e])==null?void 0:_.status)==="running"}),u=A(I=>{var _;return nb(((_=I.sessions[e])==null?void 0:_.timeline.rows)??[])}),d=Jt(I=>I.lastErrorBySession[e]),g=Jt(I=>I.compactSession),f=Jt(I=>I.cancelCompaction),m=yi(t,r),h=bb({compacting:r,running:a,hasAgent:i!==null,connected:o}),b=h.kind==="cancel"?u?rb(u):"Compacting…":h.note;async function y(){(await g(e,n.trim()||void 0)).ok&&s("")}return c.jsxs(Ns.Root,{children:[c.jsx(Ns.Trigger,{asChild:!0,children:c.jsx("button",{type:"button",className:Ae.trigger,"aria-label":"Context usage — open compaction options",children:c.jsx(Cr,{stats:t,compacting:r})})}),c.jsx(jp,{width:320,"aria-label":"Compact context",children:c.jsxs("div",{className:Ae.body,children:[c.jsx("div",{className:Ae.heading,children:"Context"}),c.jsx(Cr,{stats:t,compacting:r,wide:!0}),c.jsx("div",{className:Ae.detail,children:m.kind==="value"?`${Kn(t,m)} (${ms(m)})`:Kn(t,m)}),c.jsxs("label",{className:Ae.field,children:[c.jsx("span",{className:Ae.fieldLabel,children:"Instructions (optional)"}),c.jsx(lp,{value:n,rows:3,placeholder:"e.g. focus on the auth refactor",disabled:r,onChange:I=>s(I.target.value)})]}),d&&!r&&c.jsx("div",{role:"alert",className:Ae.error,children:d}),b&&c.jsx("div",{className:Ae.note,children:b}),c.jsx("div",{className:Ae.actions,children:h.kind==="cancel"?c.jsx(se,{variant:"outline",size:"sm",onClick:()=>void f(e),children:"Cancel"}):c.jsx(se,{variant:"default",size:"sm",disabled:h.kind==="disabled",onClick:()=>void y(),children:"Compact now"})})]})})]})}const Pb="_statusBar_t655h_1",qb="_segmentGroup_t655h_16",Mb="_chevron_t655h_20",Nb="_segment_t655h_16",Db="_icon_t655h_33",$b="_text_t655h_39",Xe={statusBar:Pb,segmentGroup:qb,chevron:Mb,segment:Nb,icon:Db,text:$b};function Lb(){const e=A(h=>h.activeSessionId),t=A(h=>e?h.sessions[e]:void 0),n=rt(),s=M(h=>h.activeWorkspaceCwd);Jv(s||"");const r=me(h=>h.available),o=me(h=>h.branch),i=me(h=>h.ahead),a=me(h=>h.behind),u=me(h=>h.detached),d=me(h=>h.conflictCount),g=me(h=>h.changes.length),f=hs(h=>e?h.bySession[e]:void 0);Yv(e);const m=[];if(t){const h=eb(t.cwd,n);m.push({key:"cwd",icon:c.jsx(Ve,{size:13}),text:h,title:t.cwd})}if(r){const h=tb(i,a),b=[u?"(detached)":o??"?"];h&&b.push(h),g>0&&b.push(`●${g}`),d>0&&b.push(`⚠${d}`),m.push({key:"branch",icon:c.jsx(na,{size:13}),text:b.join(" ")})}return t&&(m.push({key:"context",icon:c.jsx(sa,{size:13}),content:e?c.jsx(jb,{sessionId:e,stats:f}):null}),m.push({key:"tokens",icon:c.jsx(ra,{size:13}),text:bt(f==null?void 0:f.totalTokens),title:`in ${bt(f==null?void 0:f.inputTokens)} / out ${bt(f==null?void 0:f.outputTokens)}`}),m.push({key:"cost",icon:c.jsx(oa,{size:13}),text:Qv(f==null?void 0:f.cost)})),c.jsx("div",{className:Xe.statusBar,children:m.map((h,b)=>c.jsxs("span",{className:Xe.segmentGroup,children:[b>0&&c.jsx(Xn,{size:12,className:Xe.chevron,"aria-hidden":"true"}),c.jsxs("span",{className:Xe.segment,title:h.title,children:[c.jsx("span",{className:Xe.icon,children:h.icon}),h.content??c.jsx("span",{className:Xe.text,children:h.text})]})]},h.key))})}function Ob(e,t){const{order:n,sessions:s}=A.getState(),o=us(n,s,t).find(i=>i.cwd===e);if(o!=null&&o.sessions[0]){const i=o.sessions[0].id;A.getState().activate(i);const a=A.getState().sessions[i];M.getState().open({id:Q.chat(i),kind:"chat",label:(a==null?void 0:a.title)??"New chat",closable:!0,data:{sessionId:i},workspaceCwd:e})}else qt(e);$.getState().setCwd(e)}const Bb="_pathRow_1mu84_1",Fb="_pathInput_1mu84_9",zb="_createRow_1mu84_13",Wb="_createInput_1mu84_21",Ub="_createError_1mu84_25",Hb="_list_1mu84_30",Vb="_item_1mu84_37",Kb="_name_1mu84_49",Me={pathRow:Bb,pathInput:Fb,createRow:zb,createInput:Wb,createError:Ub,list:Hb,item:Vb,name:Kb};function Gb(){const e=$(x=>x.cwdPickerOpen),t=$(x=>x.closeCwdPicker),n=M(x=>x.activeWorkspaceCwd),s=$(x=>x.cwd),r=N(x=>x.client),o=rt(),[i,a]=w.useState("/"),[u,d]=w.useState("/"),[g,f]=w.useState(!1),[m,h]=w.useState(""),[b,y]=w.useState(null),[I,_]=w.useState(!1),S=st();w.useEffect(()=>{if(!e)return;const x=Le(n||s||"~",o);a(x),d(x),L()},[e,r,n,s,o]);const{data:E,isLoading:R,isError:q,error:H}=Cw(i,e&&!!r),ie=((E==null?void 0:E.entries)??[]).filter(x=>x.kind==="directory");function L(){f(!1),h(""),y(null)}function ne(x){const fe=x.length>1?x.replace(/\/+$/,"")||"/":x;a(fe),d(fe),L()}function ce(){ne(i.split("/").slice(0,-1).join("/")||"/")}function Y(){ne(u.trim())}async function ye(){const x=m.trim();if(!(!x||!r||I)){_(!0),y(null);try{const fe=await mi(r,i,x,"directory");await S.invalidateQueries({queryKey:He.explorer(i)}),ne(fe)}catch(fe){y(fe instanceof Error?fe.message:"Failed to create folder")}finally{_(!1)}}}function ke(){Ob(i,o),t()}return c.jsxs(On,{open:e,onOpenChange:x=>!x&&t(),title:"Open Workspace",footer:c.jsxs(c.Fragment,{children:[c.jsx(po,{asChild:!0,children:c.jsx(se,{size:"sm",variant:"secondary",children:"Cancel"})}),c.jsx(se,{size:"sm",onClick:ke,children:"Open this folder"})]}),children:[c.jsxs("div",{className:Me.pathRow,children:[c.jsx(se,{size:"xs",variant:"ghost",iconOnly:!0,title:"Up",onClick:ce,children:c.jsx(ia,{size:13})}),c.jsx(nn,{className:Me.pathInput,value:u,onChange:x=>d(x.target.value),onKeyDown:x=>{x.key==="Enter"&&(x.preventDefault(),Y())}}),c.jsx(se,{size:"xs",onClick:Y,children:"Go"}),c.jsx(se,{size:"xs",variant:"ghost",iconOnly:!0,title:"New folder",disabled:!r||q||g,onClick:()=>{f(!0),h(""),y(null)},children:c.jsx(Qt,{size:13})})]}),g&&c.jsxs(c.Fragment,{children:[c.jsxs("div",{className:Me.createRow,children:[c.jsx(Ve,{size:14}),c.jsx(nn,{className:Me.createInput,autoFocus:!0,placeholder:"New folder name",value:m,onChange:x=>h(x.target.value),onKeyDown:x=>{x.key==="Enter"?(x.preventDefault(),ye()):x.key==="Escape"&&(x.preventDefault(),x.stopPropagation(),L())}}),c.jsx(se,{size:"xs",loading:I,disabled:!m.trim()||I,onClick:()=>void ye(),children:"Create"}),c.jsx(se,{size:"xs",variant:"secondary",onClick:L,children:"Cancel"})]}),b&&c.jsx("div",{className:Me.createError,children:b})]}),c.jsx("div",{className:Me.list,children:R?c.jsx($e,{children:"Loading..."}):q?c.jsxs($e,{children:["Error: ",H instanceof Error?H.message:"unknown error"]}):ie.length===0?c.jsx($e,{children:"No subdirectories"}):ie.map(x=>c.jsxs("div",{className:Me.item,onClick:()=>ne(i==="/"?`/${x.name}`:`${i}/${x.name}`),children:[c.jsx(Ve,{size:14}),c.jsx("span",{className:Me.name,children:x.name})]},x.name))})]})}const Yb="_shell_570m8_1",Xb="_main_570m8_7",Jb="_sidebarLeft_570m8_13",Zb="_leftHandle_570m8_25",Qb="_center_570m8_28",eS="_sidebarRight_570m8_35",tS="_rightHandle_570m8_43",Fe={shell:Yb,main:Xb,sidebarLeft:Jb,leftHandle:Zb,center:Qb,sidebarRight:eS,rightHandle:tS};function nS(){const e=$(i=>i.leftSidebarCollapsed),t=$(i=>i.rightSidebarCollapsed),n=$(i=>i.leftSidebarWidth),s=$(i=>i.rightSidebarWidth),r=$(i=>i.resizeLeftSidebar),o=$(i=>i.resizeRightSidebar);return c.jsxs("div",{className:Fe.shell,children:[c.jsx(Tm,{}),c.jsxs("div",{className:Fe.main,children:[!e&&c.jsxs("aside",{className:Fe.sidebarLeft,style:{width:n},children:[c.jsx(z_,{}),c.jsx(Ms,{side:"left",className:Fe.leftHandle,onResize:r})]}),c.jsx("div",{className:Fe.center,children:c.jsx(kw,{})}),!t&&c.jsxs("aside",{className:Fe.sidebarRight,style:{width:s},children:[c.jsx(Ms,{side:"right",className:Fe.rightHandle,onResize:o}),c.jsx(Hv,{})]})]}),c.jsx(Lb,{}),c.jsx(Gb,{}),c.jsx(Wp,{}),c.jsx(Mp,{})]})}function sS({host:e}){return w.useEffect(()=>()=>{},[]),c.jsxs(Yg,{host:e,children:[c.jsx(Kg,{}),c.jsx(nS,{})]})}const vi=document.getElementById("root");if(!vi)throw new Error("Missing #root element");const rS=_o({app:{title:"Pi-Studio",version:"0.0.119"},pdf:{createWorker:()=>new ja({name:"pdfjs"}),assetBaseUrl:"/pdfjs/"}});Pi.createRoot(vi).render(c.jsx(w.StrictMode,{children:c.jsx(sS,{host:rS})}));export{Xo as $,my as A,se as B,Ev as C,On as D,$e as E,wS as F,vS as G,ES as H,re as I,ps as J,Hh as K,jS as L,em as M,Qg as N,hh as O,fo as P,A as Q,Vv as R,uo as S,mS as T,gS as U,RS as V,Em as W,IS as X,lp as Y,rb as Z,TS as _,qS as a,xS as a0,$ as a1,$h as a2,Pt as a3,yS as a4,Wn as a5,ob as a6,Jt as a7,nb as a8,AS as a9,Q as aa,ni as ab,CS as ac,SS as ad,kS as ae,It as af,pS as ag,pi as b,MS as c,Ue as d,Se as e,PS as f,V as g,hS as h,Fo as i,tn as j,bS as k,_S as l,Pg as m,Le as n,M as o,qo as p,F as q,He as r,rt as s,oh as t,N as u,ui as v,mi as w,xv as x,nn as y,je as z};
17
+ `;function Kp(){return{setTimer:(e,t)=>setTimeout(e,t),clearTimer:e=>clearTimeout(e)}}function Gp(){const e=new Blob([Vp],{type:"application/javascript"}),t=URL.createObjectURL(e),n=new Worker(t);URL.revokeObjectURL(t);const s=new Map;let o=1;return n.addEventListener("message",r=>{const i=s.get(r.data.id);s.delete(r.data.id),i==null||i()}),{setTimer:(r,i)=>{const a=o++;return s.set(a,r),n.postMessage({id:a,ms:i}),a},clearTimer:r=>{const i=r;s.delete(i)&&n.postMessage({id:i,cancel:!0})}}}let lt=null;function Ls(){if(lt)return lt;try{lt=Gp()}catch{lt=Kp()}return lt}function Yp(){return{setTimer:(e,t)=>Ls().setTimer(e,t),clearTimer:e=>Ls().clearTimer(e)}}function Xp(e,t){if(e.mode==="relay")return Cu({daemonPublicKey:e.daemonPublicKey});if(t.password){const n=`pi-studio.bearer.${t.password}`;return Go(s=>new WebSocket(s,[n]))}}function Jp(e){const t=()=>{document.visibilityState==="visible"&&e()};return document.addEventListener("visibilitychange",t),window.addEventListener("online",e),()=>{document.removeEventListener("visibilitychange",t),window.removeEventListener("online",e)}}function Zp(){return{createTransport:Xp,timers:Yp(),onResume:Jp}}async function Os(e,t){const n=[],s=await e.downloadTo(t,r=>void n.push(r));return{blob:new Blob(n,{type:s.mimeType||"application/octet-stream"}),fileName:s.fileName,mimeType:s.mimeType}}function Qp(e){return{async upload(t,n,s){if(!(n instanceof Blob))throw new Error("the browser host can only upload File/Blob sources");const o=t?`${t}/${n.name}`:n.name;await e().upload(o,n,{onProgress:s==null?void 0:s.onProgress})},async saveToDisk(t){const n=await Os(e(),t),s=URL.createObjectURL(n.blob),o=document.createElement("a");o.href=s,o.download=n.fileName||t.split("/").pop()||"download",o.rel="noopener",document.body.appendChild(o),o.click(),o.remove(),setTimeout(()=>URL.revokeObjectURL(s),0)},async openForView(t){const n=await Os(e(),t),s=URL.createObjectURL(n.blob);let o=!1;return{url:s,...n.mimeType?{mimeType:n.mimeType}:{},...n.fileName?{fileName:n.fileName}:{},release(){o||(o=!0,URL.revokeObjectURL(s))}}}}}const eh=256;function Bs(e){const t=e.startsWith("#")?e.slice(1):e,n=new URLSearchParams(t).get("agent");if(!(!n||n.length>eh))return n}function th(e){const t=e.indexOf("#");if(t===-1)return e;const n=e.slice(0,t),s=e.slice(t+1).split("&").filter(o=>o!==""&&new URLSearchParams(o).keys().next().value!=="agent");return s.length===0?n:`${n}#${s.join("&")}`}function nh(e){const t=e.consume();if(!t)return;const n=e.findByAgentId(t);n?e.select(n):e.notifyNotFound(t),e.consumeSource()}function sh(e){if(e.hash.includes("offer="))return{url:e.href,connect:!0};const t=new URLSearchParams(e.search),n=t.get("pair"),s=t.get("host"),o=t.get("password"),r=t.get("cwd"),i=n??s,a=n!==null||t.get("connect")==="1";return!i&&!o&&!r&&!a?null:{...i?{url:i}:{},...o?{password:o}:{},...r?{cwd:r}:{},connect:a}}function oh(){return{initialConnect:()=>sh(window.location),agentDeepLink:{current:()=>Bs(window.location.hash)??null,subscribe(e){const t=()=>{const n=Bs(window.location.hash);n&&e(n)};return window.addEventListener("hashchange",t),()=>window.removeEventListener("hashchange",t)},consume(){window.history.replaceState(null,"",th(window.location.href))}}}}const Fs=new WeakMap;function rh(e){let t=Fs.get(e);return t||(t=new Id(e),t.start(),Fs.set(e,t)),t}function zs(e){const t=e.trim();if(t==="")return t;const n=t.match(/^([a-z][a-z0-9+.-]*):\/\//i);if(!n)return`ws://${t.replace(/\/+$/,"")}`;const s=n[1].toLowerCase(),o=t.slice(n[0].length).replace(/\/+$/,"");switch(s){case"http":return`ws://${o}`;case"https":return`wss://${o}`;case"ws":case"wss":return`${s}://${o}`;default:return t}}function rs(e){const t=Qo(e);return t!=null&&t.relay?{mode:"relay",url:Eu(t.relay),daemonPublicKey:t.publicKey}:t!=null&&t.host?{mode:"direct",url:zs(t.host)}:{mode:"direct",url:zs(e)}}const ih=32,pe=new Map;function ah(){var e;for(;pe.size>ih;){let t=null;for(const[n,s]of pe)if(s.refs===0&&s.entry){(e=s.release)==null||e.call(s),t=n;break}if(t===null)return;pe.delete(t)}}function wS(e,t){const n=pe.get(e);if(n)return n.refs+=1,pe.delete(e),pe.set(e,n),n.entry?Promise.resolve(n.entry):n.pending;const s={refs:1,entry:null,release:null,pending:null};return pe.set(e,s),ah(),s.pending=t(e).then(o=>{const r={objectUrl:o.url,mimeType:o.mimeType};return pe.get(e)===s?(s.entry=r,s.release=()=>o.release(),s.pending=null):o.release(),r}).catch(o=>{throw pe.get(e)===s&&pe.delete(e),o}),s.pending}function vS(e){const t=pe.get(e);t&&(t.refs=Math.max(0,t.refs-1))}function ch(){var e;for(const t of pe.values())(e=t.release)==null||e.call(t);pe.clear()}function lh(){return"web-"+Math.random().toString(36).slice(2,10)}const N=ae()((e,t)=>({status:"idle",serverInfo:null,error:null,daemon:null,client:null,reconnection:null,async connect(n){t().disconnect();const s=rs(n.url),{app:o,connection:r}=V();let i;try{i=r.createTransport(s,{password:n.password})}catch(f){throw e({error:f instanceof Error?f.message:String(f)}),f}const a=new ju({url:s.url,clientId:n.clientId??lh(),clientType:"browser",platform:o.platform,capabilities:{[Ot.inline_image_markdown]:!0,[Ot.file_link_markdown]:!0,[Ot.mermaid_diagram_markdown]:!0,[Ot.terminal_reflowable_snapshot]:!0},transport:i,rpcTimeoutMs:1800*1e3}),u=new Uu(a),{timers:d}=r,g=new Td(a,{setTimer:(f,m)=>d.setTimer(f,m),clearTimer:f=>d.clearTimer(f)});a.onStateChange(f=>e({status:f})),g.onReconnected(()=>e({error:null})),g.onReconnectFailed(f=>{e({error:f instanceof Error?f.message:String(f)})}),e({daemon:a,client:u,reconnection:g,error:null,status:"connecting"});try{const f=await a.connect();e({serverInfo:f}),g.start()}catch(f){throw e({error:f instanceof Error?f.message:String(f)}),f}},disconnect(){const{daemon:n,reconnection:s}=t();s==null||s.stop(),n==null||n.close(),ch(),e({status:"idle",serverInfo:null,daemon:null,client:null,reconnection:null})}}));function is(){return N(e=>e.client)}function mr(){var e;return((e=N.getState().serverInfo)==null?void 0:e.homeDir)??null}function uh(){const{daemon:e}=N.getState();if(!e)throw new Error("not connected");return rh(e)}const dh={title:"Pi-Studio",version:""},fh={confirm:async e=>window.confirm(e),alert:async e=>window.alert(e),prompt:async(e,t)=>window.prompt(e,t)};function _r(e={}){return{app:e.app??dh,storage:lr,clipboard:{writeText:Hp},dialogs:fh,links:{},launch:oh(),connection:Zp(),files:Qp(uh),...e.pdf?{pdf:e.pdf}:{}}}let wt=null,Ws=null;const Fn=new Set;function Us(e){if(wt)return wt;wt=e;for(const t of Fn)t(e);return e}function V(){return wt||(Ws??(Ws=_r()),Ws)}function ph(e){return Fn.add(e),()=>Fn.delete(e)}const vt=ae((e,t)=>({pendingAgentId:void 0,restored:!1,set(n){e({pendingAgentId:n})},consume(){const n=t().pendingAgentId;return e({pendingAgentId:void 0}),n},markRestored(){e({restored:!0})}})),_n={rows:[],streamingAssistantIndex:null,streamingReasoningIndex:null,toolIndexByCallId:{}};let Hs=0;function Pe(){return Hs+=1,`row-${Hs}`}function hh(e){switch(e.kind){case"shell":return e.command??"";case"read":case"write":return e.path??"";case"edit":return e.path??"";case"search":return e.query??"";case"fetch":return e.url??"";case"task":return e.description??"";default:return""}}function gh(e,t){return e??`${t.kind}:${hh(t)}`}function nt(e,t){if(t===null)return;const n=e[t];n&&(n.kind!=="assistant"&&n.kind!=="reasoning"||n.streaming&&(e[t]={...n,streaming:!1}))}function yr(e){if(e.streamingAssistantIndex===null&&e.streamingReasoningIndex===null)return e;const t=e.rows.slice();return nt(t,e.streamingAssistantIndex),nt(t,e.streamingReasoningIndex),{...e,rows:t,streamingAssistantIndex:null,streamingReasoningIndex:null}}function mh(e){return yr(e)}function _h(e,t,n,s){var a;const o=e.rows.slice();nt(o,e.streamingReasoningIndex);let r=e.streamingAssistantIndex;if(r===null||((a=o[r])==null?void 0:a.kind)!=="assistant"){if(!t)return{...e,rows:o,streamingAssistantIndex:null,streamingReasoningIndex:null};const u={kind:"assistant",id:Pe(),text:"",streaming:!0,timestamp:s};o.push(u),r=o.length-1}const i=o[r];return!i||i.kind!=="assistant"?e:(o[r]={...i,text:i.text+t,streaming:!n},{...e,rows:o,streamingAssistantIndex:n?null:r,streamingReasoningIndex:null})}function yh(e,t,n,s){var a;const o=e.rows.slice();nt(o,e.streamingAssistantIndex);let r=e.streamingReasoningIndex;if(r===null||((a=o[r])==null?void 0:a.kind)!=="reasoning"){if(!t)return{...e,rows:o,streamingAssistantIndex:null,streamingReasoningIndex:null};const u={kind:"reasoning",id:Pe(),text:"",streaming:!0,timestamp:s};o.push(u),r=o.length-1}const i=o[r];return!i||i.kind!=="reasoning"?e:(o[r]={...i,text:i.text+t,streaming:!n},{...e,rows:o,streamingReasoningIndex:n?null:r,streamingAssistantIndex:null})}function wh(e,t){if(e.kind!==t.kind)return t;const n={...e};for(const[s,o]of Object.entries(t))o!==void 0&&o!==""&&(n[s]=o);return n}function vh(e,t,n){const s=wh(e,t);if(n==="running")return s;const{output:o,...r}=s;return t.output?{...r,output:t.output}:r}function bh(e,t,n){var u;const s=gh(t.callId,t.tool),o=t.status==="completed"||t.status==="error"?t.status:"running",r=e.toolIndexByCallId[s],i=e.rows.slice();if(nt(i,e.streamingAssistantIndex),nt(i,e.streamingReasoningIndex),r!==void 0&&((u=i[r])==null?void 0:u.kind)==="tool"){const d=i[r];if(d.kind!=="tool")return e;const g=t.status??d.statusText;return i[r]={...d,tool:vh(d.tool,t.tool,o),status:o,...g!==void 0?{statusText:g}:{}},{...e,rows:i,streamingAssistantIndex:null,streamingReasoningIndex:null}}const a={kind:"tool",id:Pe(),callId:s,tool:t.tool,status:o,...t.status!==void 0?{statusText:t.status}:{},timestamp:n};return i.push(a),{...e,rows:i,toolIndexByCallId:{...e.toolIndexByCallId,[s]:i.length-1},streamingAssistantIndex:null,streamingReasoningIndex:null}}function Sh(e){if(!e.rows.some(n=>n.kind==="compaction"&&n.phase==="started"))return e;const t=e.rows.map(n=>n.kind==="compaction"&&n.phase==="started"?{...n,phase:"canceled"}:n);return{...e,rows:t}}function wr(e,t){if(!e.rows.some(s=>s.kind==="tool"&&s.status==="running"))return e;const n=e.rows.map(s=>s.kind==="tool"&&s.status==="running"?{...s,status:t,statusText:t}:s);return{...e,rows:n}}function as(e){return Sh(yr(e))}function kh(e,t,n){const{kind:s,...o}=t,r=Object.fromEntries(Object.entries(o).filter(([,u])=>u!==void 0)),i=e.rows.findIndex(u=>u.kind==="compaction"&&u.compactionId===t.compactionId);if(i===-1){const u={...r,kind:"compaction",id:Pe(),timestamp:n};return{...e,rows:[...e.rows,u]}}const a=e.rows.slice();return a[i]={...a[i],...r},{...e,rows:a}}function xh(e,t,n){const s=wr(as(e),"error"),o={kind:"error",id:Pe(),text:t||"turn failed",timestamp:n};return{...s,rows:[...s.rows,o]}}function Ih(e,t){const n=wr(as(e),"canceled"),s={kind:"system",id:Pe(),text:"(canceled)",timestamp:t};return{...n,rows:[...n.rows,s]}}function Th(e,t,n){const s={kind:"error",id:Pe(),text:t||"error",timestamp:n};return{...e,rows:[...e.rows,s]}}function Eh(e,t,n,s,o){if(s!==void 0){const i=e.rows.findIndex(a=>a.kind==="user"&&a.pending&&a.clientMessageId===s);if(i!==-1){const a=e.rows.slice(),u=a[i];if((u==null?void 0:u.kind)==="user")return a[i]={...u,text:t,images:n,pending:!1,...o!==void 0?{timestamp:o}:{}},{...e,rows:a}}}const r={kind:"user",id:Pe(),text:t,images:n,clientMessageId:s,timestamp:o};return{...e,rows:[...e.rows,r]}}function Ch(e,t){let n=!1;const s=e.rows.map(o=>o.kind!=="user"||!o.queued||t.includes(o.text)?o:(n=!0,{...o,queued:!1}));return n?{...e,rows:s}:e}function vr(e,t,n){switch(t.kind){case"turn_started":return mh(e);case"user_message":return Eh(e,t.text??"",t.images,t.messageId,n);case"assistant_message":return _h(e,t.text??"",t.final??!1,n);case"reasoning":return yh(e,t.text??"",t.final??!1,n);case"tool_call":return bh(e,t,n);case"turn_completed":return as(e);case"turn_failed":return xh(e,t.error,n);case"turn_canceled":return Ih(e,n);case"error":return Th(e,t.message,n);case"queue_update":return Ch(e,t.steering??[]);case"compaction":return kh(e,t,n);default:return e}}function br(e){return e.reduce((t,{event:n,timestamp:s})=>vr(t,n,s),_n)}function Ah(e,t,n,s,o,r){const i={kind:"user",id:Pe(),text:n,images:s,clientMessageId:t,pending:!0,queued:o,timestamp:r};return{...e,rows:[...e.rows,i]}}function Rh(e,t){const n=e.rows.findIndex(r=>r.kind==="user"&&r.pending&&r.clientMessageId===t);if(n===-1)return e;const s=e.rows.slice(),o=s[n];return(o==null?void 0:o.kind)!=="user"?e:(s[n]={...o,pending:!1,failed:!0},{...e,rows:s})}let Vs=0;function jh(){return Vs+=1,`s-${Date.now().toString(36)}-${Vs}`}const A=ae()((e,t)=>({sessions:{},order:[],activeSessionId:null,createSession(n){const s=jh(),o={id:s,agentId:null,title:"New chat",status:"idle",cwd:n,timeline:_n,userMessageCount:0};return e(r=>({sessions:{...r.sessions,[s]:o},order:[s,...r.order],activeSessionId:s})),s},hydrate(n){e(s=>s.sessions[n.id]?s:{sessions:{...s.sessions,[n.id]:n},order:[...s.order,n.id]})},bindAgent(n,s){e(o=>{const r=o.sessions[n];return r?{sessions:{...o.sessions,[n]:{...r,agentId:s}}}:o})},setStatus(n,s){e(o=>{const r=o.sessions[n];return r?{sessions:{...o.sessions,[n]:{...r,status:s}}}:o})},setStatusByAgentId(n,s){const o=t().findByAgentId(n);o&&t().setStatus(o.id,s)},setModel(n,s,o){e(r=>{const i=r.sessions[n];return i?{sessions:{...r.sessions,[n]:{...i,model:s,modelProvider:o}}}:r})},setModelByAgentId(n,s,o){const r=t().findByAgentId(n);r&&t().setModel(r.id,s,o)},setThinkingLevel(n,s){e(o=>{const r=o.sessions[n];return r?{sessions:{...o.sessions,[n]:{...r,thinkingLevel:s}}}:o})},setThinkingLevelByAgentId(n,s){const o=t().findByAgentId(n);o&&t().setThinkingLevel(o.id,s)},setTitle(n,s){e(o=>{const r=o.sessions[n];return r?{sessions:{...o.sessions,[n]:{...r,title:s}}}:o})},setCwd(n,s){e(o=>{const r=o.sessions[n];return r?{sessions:{...o.sessions,[n]:{...r,cwd:s}}}:o})},applyStreamEvent(n,s,o){e(r=>{const i=r.sessions[n];if(!i)return r;const a=vr(i.timeline,s,o);return{sessions:{...r.sessions,[n]:{...i,timeline:a}}}})},setTitleByAgentId(n,s){const o=t().findByAgentId(n);o&&t().setTitle(o.id,s)},addOptimisticUserMessage(n,s,o,r,i){e(a=>{const u=a.sessions[n];if(!u)return a;const d=Ah(u.timeline,s,o,r,i,new Date().toISOString());return{sessions:{...a.sessions,[n]:{...u,timeline:d,userMessageCount:u.userMessageCount+1}}}})},markUserMessageFailed(n,s){e(o=>{const r=o.sessions[n];if(!r)return o;const i=Rh(r.timeline,s);return{sessions:{...o.sessions,[n]:{...r,timeline:i}}}})},setTimeline(n,s){e(o=>{const r=o.sessions[n];if(!r)return o;const i=s.rows.filter(a=>a.kind==="user").length;return{sessions:{...o.sessions,[n]:{...r,timeline:s,userMessageCount:i}}}})},setTimelineByAgentId(n,s){const o=t().findByAgentId(n);o&&t().setTimeline(o.id,s)},activate(n){e({activeSessionId:n})},remove(n){e(s=>{const{[n]:o,...r}=s.sessions,i=s.order.filter(u=>u!==n),a=s.activeSessionId===n?i[0]??null:s.activeSessionId;return{sessions:r,order:i,activeSessionId:a}})},findByAgentId(n){return Object.values(t().sessions).find(s=>s.agentId===n)}})),Ph=100,qh=480,Mh=220,Nh=280;function Ht(e){return Math.min(qh,Math.max(Ph,e))}const $=ae()(e=>({host:"ws://127.0.0.1:6767",password:"",cwd:"~",cwdPickerOpen:!1,settingsOpen:!1,sessionMenu:null,workspaceMenu:null,tabMenu:null,fileMenu:null,rightSidebarTab:"files",collapsedWorkspaces:new Set,leftSidebarCollapsed:!1,rightSidebarCollapsed:!1,leftSidebarWidth:Mh,rightSidebarWidth:Nh,setHost:t=>e({host:t}),setPassword:t=>e({password:t}),setCwd:t=>e({cwd:t}),openCwdPicker:()=>e({cwdPickerOpen:!0}),closeCwdPicker:()=>e({cwdPickerOpen:!1}),openSettings:()=>e({settingsOpen:!0}),closeSettings:()=>e({settingsOpen:!1}),openSessionMenu:(t,n,s)=>e({sessionMenu:{sessionId:t,x:n,y:s}}),closeSessionMenu:()=>e({sessionMenu:null}),openWorkspaceMenu:(t,n,s)=>e({workspaceMenu:{cwd:t,x:n,y:s}}),closeWorkspaceMenu:()=>e({workspaceMenu:null}),openTabMenu:(t,n,s)=>e({tabMenu:{tabId:t,x:n,y:s}}),closeTabMenu:()=>e({tabMenu:null}),openFileMenu:(t,n,s,o,r)=>e({fileMenu:{path:t,isDirectory:n,x:s,y:o,background:r}}),closeFileMenu:()=>e({fileMenu:null}),setRightSidebarTab:t=>e({rightSidebarTab:t}),toggleWorkspaceCollapsed:t=>e(n=>{const s=new Set(n.collapsedWorkspaces);return s.has(t)?s.delete(t):s.add(t),{collapsedWorkspaces:s}}),setCollapsedWorkspaces:t=>e({collapsedWorkspaces:t}),toggleLeftSidebar:()=>e(t=>({leftSidebarCollapsed:!t.leftSidebarCollapsed})),toggleRightSidebar:()=>e(t=>({rightSidebarCollapsed:!t.rightSidebarCollapsed})),setLeftSidebarWidth:t=>e({leftSidebarWidth:Ht(t)}),setRightSidebarWidth:t=>e({rightSidebarWidth:Ht(t)}),resizeLeftSidebar:t=>e(n=>({leftSidebarWidth:Ht(n.leftSidebarWidth+t)})),resizeRightSidebar:t=>e(n=>({rightSidebarWidth:Ht(n.rightSidebarWidth+t)}))})),Ks=new WeakMap;function Dh(e,t="pi"){const n=Ks.get(e);if(n)return n;const s=e.providers.resolveDefaultModel(t).then(o=>({model:o.model,modelProvider:o.modelProvider,thinkingLevel:o.thinkingLevel})).catch(()=>({}));return Ks.set(e,s),s}const Xt=new Map;function $h(e,t){const n=A.getState().sessions[t];if(!n)return Promise.reject(new Error(`unknown session: ${t}`));if(n.agentId)return Promise.resolve(n.agentId);const s=Xt.get(t);if(s)return s;const o=(async()=>{if(!n.model){const u=await Dh(e),d=A.getState().sessions[t];u.model&&d&&!d.model&&A.getState().setModel(t,u.model,u.modelProvider);const g=A.getState().sessions[t];u.thinkingLevel&&g&&g.thinkingLevel===void 0&&A.getState().setThinkingLevel(t,u.thinkingLevel)}const r=A.getState().sessions[t];if(!r)throw new Error(`unknown session: ${t}`);const i={provider:"pi",cwd:r.cwd||"~"};r.model&&(i.model=r.model),r.modelProvider&&(i.modelProvider=r.modelProvider);const a=await e.createAgent({config:i,labels:{}});return A.getState().bindAgent(t,a.agentId),a.agentId})();return Xt.set(t,o),o.finally(()=>Xt.delete(t)),o}async function Lh(e,t){var o;const n=A.getState().sessions[t];if(!n||n.userMessageCount>0||n.timeline.rows.length>0)return!1;await((o=Xt.get(t))==null?void 0:o.catch(()=>{}));const s=A.getState().sessions[t];return s?(s.agentId&&e&&await e.agent(s.agentId).delete().catch(()=>{}),A.getState().remove(t),!0):!1}const Oh=4;function Sr(e){return e==="left"||e==="right"?"row":"column"}function he(e){return e.kind==="leaf"?[e.id]:e.children.flatMap(he)}function cs(e,t){return e.kind==="leaf"?e.id===t:e.children.some(n=>cs(n,t))}function kr(e,t,n=1){if(e.kind==="leaf")return e.id===t?n:null;for(const s of e.children){const o=kr(s,t,n+1);if(o!==null)return o}return null}function xr(e,t){if(e.kind==="leaf")return null;if(ls(e,t)!==-1)return e;for(const n of e.children){const s=xr(n,t);if(s)return s}return null}function ls(e,t){return e.children.findIndex(n=>n.kind==="leaf"&&n.id===t)}function kt(e,t,n){const s=kr(e,t);if(s===null)return!1;const o=xr(e,t);return o&&o.direction===Sr(n)?!0:s+1<=Oh}function Gs(e,t,n,s){if(!kt(e,t,n)||cs(e,s))return e;const o=Sr(n),r=n==="left"||n==="top",i={kind:"leaf",id:s},a=d=>({kind:"split",direction:o,children:r?[i,d]:[d,i],sizes:[.5,.5]}),u=d=>{if(d.kind==="leaf")return d.id===t?a(d):d;const g=ls(d,t);if(g!==-1&&d.direction===o){const f=d.sizes[g]/2,m=r?g:g+1,h=d.children.slice(),b=d.sizes.slice();return b[g]=f,h.splice(m,0,i),b.splice(m,0,f),{kind:"split",direction:d.direction,children:h,sizes:b}}return{kind:"split",direction:d.direction,children:d.children.map(u),sizes:d.sizes.slice()}};return u(e)}function Ir(e,t){if(!cs(e,t)||e.kind==="leaf")return e;const n=s=>{if(s.kind==="leaf")return s;const o=ls(s,t);if(o===-1)return{kind:"split",direction:s.direction,children:s.children.map(n),sizes:s.sizes.slice()};const r=s.sizes.filter((u,d)=>d!==o),i=r.reduce((u,d)=>u+d,0),a=i+s.sizes[o];return{kind:"split",direction:s.direction,children:s.children.filter((u,d)=>d!==o),sizes:r.map(u=>u/i*a)}};return Tr(n(e))}function Tr(e){if(e.kind==="leaf")return e;const t=e.children.map(Tr);if(t.length===1)return t[0];const n=[],s=[];return t.forEach((o,r)=>{const i=e.sizes[r];o.kind==="split"&&o.direction===e.direction?o.children.forEach((a,u)=>{n.push(a),s.push(i*o.sizes[u])}):(n.push(o),s.push(i))}),n.length===1?n[0]:{kind:"split",direction:e.direction,children:n,sizes:s}}const Ys=.1;function Bh(e){const t=new Map,n=(s,o)=>{if(s.kind==="leaf"){t.set(s.id,o);return}Er(s,o).forEach((r,i)=>n(s.children[i],r))};return n(e,{x:0,y:0,width:1,height:1}),t}function Er(e,t){const n=[];let s=0;for(const o of e.sizes)n.push(e.direction==="row"?{x:t.x+s*t.width,y:t.y,width:o*t.width,height:t.height}:{x:t.x,y:t.y+s*t.height,width:t.width,height:o*t.height}),s+=o;return n}function Fh(e){const t=[],n=(s,o,r)=>{if(s.kind==="leaf")return;const i=Er(s,o);for(let a=0;a<s.children.length-1;a+=1){const u=i[a];t.push({splitPath:r.slice(),boundaryIndex:a,direction:s.direction,rect:s.direction==="row"?{x:u.x+u.width,y:o.y,width:0,height:o.height}:{x:o.x,y:u.y+u.height,width:o.width,height:0},splitRect:o})}i.forEach((a,u)=>n(s.children[u],a,[...r,u]))};return n(e,{x:0,y:0,width:1,height:1},[]),t}function zh(e,t){let n=e;for(const s of t){if(!n||n.kind!=="split")return null;n=n.children[s]}return n??null}function Wh(e,t,n,s){const o=zh(e,t);if(!o||o.kind!=="split"||n<0||n>o.children.length-2||!Number.isFinite(s)||s===0)return e;const r=o.sizes[n],i=o.sizes[n+1],a=i-Math.min(i,Ys),u=r-Math.min(r,Ys),d=Math.max(-u,Math.min(a,s));if(d===0)return e;const g=m=>{const h=m.sizes.slice();return h[n]=r+d,h[n+1]=i-d,{kind:"split",direction:m.direction,children:m.children,sizes:h}},f=(m,h)=>{if(m.kind!=="split")return m;if(h===t.length)return g(m);const b=t[h],y=m.children.slice();return y[b]=f(m.children[b],h+1),{kind:"split",direction:m.direction,children:y,sizes:m.sizes.slice()}};return f(e,0)}function Cr(e,t){const n=he(e).filter(s=>!t.has(s));return n.length===0?e:n.reduce((s,o)=>Ir(s,o),e)}const Ar=1;function Uh(e){return Rr(e,new Set)}function Rr(e,t){if(typeof e!="object"||e===null)return null;const n=e;if(n.kind==="leaf"){const{id:r}=n;return typeof r!="string"||r.trim()===""||t.has(r)?null:(t.add(r),{kind:"leaf",id:r})}if(n.kind!=="split"||n.direction!=="row"&&n.direction!=="column"||!Array.isArray(n.children)||!Array.isArray(n.sizes)||n.children.length<2||n.sizes.length!==n.children.length)return null;let s=0;for(const r of n.sizes){if(typeof r!="number"||!Number.isFinite(r)||r<=0)return null;s+=r}const o=[];for(const r of n.children){const i=Rr(r,t);if(!i)return null;o.push(i)}return{kind:"split",direction:n.direction,children:o,sizes:n.sizes.map(r=>r/s)}}function Hh(){if(typeof crypto<"u"&&typeof crypto.getRandomValues=="function"){const e=crypto.getRandomValues(new Uint8Array(16));e[6]=e[6]&15|64,e[8]=e[8]&63|128;const t=Array.from(e,n=>n.toString(16).padStart(2,"0")).join("");return`${t.slice(0,8)}-${t.slice(8,12)}-${t.slice(12,16)}-${t.slice(16,20)}-${t.slice(20)}`}return`id-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,10)}`}const Vh=["sessions","terminals"];function zn(){return`pane-${Hh()}`}function Xs(){const e=zn();return{tree:{kind:"leaf",id:e},placement:{},activeByPane:{},focusedPaneId:e,pendingPlacement:{},pendingActive:{},userActedPanes:new Set}}function jr(e,t,n){return(n??Object.keys(e.placement)).filter(o=>e.placement[o]===t)}function Pr(e,t,n,s){const o=jr(e,t,s),r=o.indexOf(n),i=o.filter(a=>a!==n);if(i.length!==0)return i[Math.min(Math.max(r,0),i.length-1)]}function Kh(e,t){return e.pendingActive[t]!==void 0?!0:Object.values(e.pendingPlacement).includes(t)}function us(e,t){if(Kh(e,t))return e;const n=Ir(e.tree,t);if(n===e.tree)return e;const s={...e.activeByPane};delete s[t];const o=he(n);return{...e,tree:n,activeByPane:s,focusedPaneId:o.includes(e.focusedPaneId)?e.focusedPaneId:o[0]}}function Vt(e,t,n,s){const o=e.placement[t],r={...e.placement,[t]:n},i={...e.activeByPane};if(s.activate&&(i[n]=t),o!==void 0&&o!==n&&i[o]===t){const d=Pr(e,o,t,s.order);d===void 0?delete i[o]:i[o]=d}const a={...e,placement:r,activeByPane:i,focusedPaneId:s.focus?n:e.focusedPaneId};return o!==void 0&&o!==n&&!Object.values(r).includes(o)?us(a,o):a}function Ge(e,t){return e.userActedPanes.has(t)?e:{...e,userActedPanes:new Set(e.userActedPanes).add(t)}}function Gh(e){let t={...e,pendingPlacement:{},pendingActive:{}};const n=new Set(Object.values(t.placement));for(const r of he(t.tree))n.has(r)||(t=us(t,r));const s={...t.activeByPane};let o=!1;for(const r of he(t.tree)){if(s[r]!==void 0)continue;const i=Object.keys(t.placement).find(a=>t.placement[a]===r);i!==void 0&&(s[r]=i,o=!0)}return o?{...t,activeByPane:s}:t}function qr(e,t){if(e===void 0)return!1;const n=e.placement[t];return n!==void 0&&e.activeByPane[n]===t}const F=ae()((e,t)=>{const n=(s,o)=>{e(r=>{const i=r.layouts[s]??Xs(),a=o(i)??i;return a===r.layouts[s]?r:{layouts:{...r.layouts,[s]:a}}})};return{layouts:{},hydrationSources:{sessions:!1,terminals:!1},restoring:!1,pendingActiveWorkspace:null,ensureWorkspace(s){e(o=>o.layouts[s]?o:{layouts:{...o.layouts,[s]:Xs()}})},assignTab(s,o,r,i,a){n(s,u=>{const d=he(u.tree),g=r!==void 0&&d.includes(r)?r:d.includes(u.focusedPaneId)?u.focusedPaneId:d[0],f=i!==!0,m=Vt(u,o,g,{activate:f,focus:f,order:a});return f?Ge(m,g):m})},moveTab(s,o,r,i){n(s,a=>{if(a.placement[o]===void 0||a.placement[o]===r||!he(a.tree).includes(r))return null;const u=Vt(a,o,r,{activate:!0,focus:!0,order:i});return Ge(u,r)})},splitWithTab(s,o,r,i,a){n(s,u=>{if(!he(u.tree).includes(r)||!kt(u.tree,r,i))return null;const d=jr(u,r,a);if(d.length===1&&d[0]===o)return null;const g=zn(),f=Gs(u.tree,r,i,g);if(f===u.tree)return null;const m=Vt({...u,tree:f},o,g,{activate:!0,focus:!0,order:a});return Ge(m,g)})},splitEmpty(s,o,r){let i=null;return n(s,a=>{if(!he(a.tree).includes(o)||!kt(a.tree,o,r))return null;const u=zn(),d=Gs(a.tree,o,r,u);return d===a.tree?null:(i=u,{...a,tree:d,focusedPaneId:u})}),i},removeTab(s,o,r){n(s,i=>{const a=i.placement[o];if(a===void 0)return null;const u={...i.placement};delete u[o];const d={...i.activeByPane};if(d[a]===o){const f=Pr(i,a,o,r);f===void 0?delete d[a]:d[a]=f}const g={...i,placement:u,activeByPane:d};return Object.values(u).includes(a)?g:us(g,a)})},setActiveTab(s,o,r){n(s,i=>i.placement[r]!==o?null:i.activeByPane[o]===r?Ge(i,o):Ge({...i,activeByPane:{...i.activeByPane,[o]:r}},o))},focusPane(s,o){n(s,r=>r.focusedPaneId===o||!he(r.tree).includes(o)?null:{...r,focusedPaneId:o})},resizeDivider(s,o,r,i){n(s,a=>{const u=Wh(a.tree,o,r,i);return u===a.tree?null:{...a,tree:u}})},installPersistedLayouts(s,o=null){e(r=>{const i={...r.layouts};for(const[a,u]of s){const d=he(u.tree);i[a]={tree:u.tree,placement:{},activeByPane:{},focusedPaneId:u.activePaneId!==null&&d.includes(u.activePaneId)?u.activePaneId:d[0],pendingPlacement:{...u.placement},pendingActive:{...u.activeByPane},userActedPanes:new Set}}return{layouts:i,hydrationSources:{sessions:!1,terminals:!1},restoring:!0,pendingActiveWorkspace:o!==null&&i[o]!==void 0?o:null}})},claimPaneFor(s,o,r,i){n(s,a=>{const u=he(a.tree);let d,g=!1;if(i!==void 0&&u.includes(i))d=i;else if(r!==null){const b=a.pendingPlacement[r];b!==void 0&&u.includes(b)&&(d=b,g=!0)}d??(d=u.includes(a.focusedPaneId)?a.focusedPaneId:u[0]);let f=a;if(g&&r!==null){const b={...a.pendingPlacement};delete b[r],f={...a,pendingPlacement:b}}let m=!0;if(g){const b=f.pendingActive[d];f.userActedPanes.has(d)?m=!1:b!==void 0&&b!==r&&(m=f.activeByPane[d]===void 0)}else t().restoring&&(m=f.activeByPane[d]===void 0);const h=Vt(f,o,d,{activate:m,focus:!g&&m});return g?h:Ge(h,d)})},markHydrationSource(s){e(o=>{if(o.hydrationSources[s])return o;const r={...o.hydrationSources,[s]:!0};if(!Vh.every(a=>r[a]))return{hydrationSources:r};const i={};for(const[a,u]of Object.entries(o.layouts))i[a]=Gh(u);return{hydrationSources:r,layouts:i,restoring:!1,pendingActiveWorkspace:null}})},paneOfTab(s,o){var r;return((r=t().layouts[s])==null?void 0:r.placement[o])??null},activeTabOf(s){const o=t().layouts[s];return o?o.activeByPane[o.focusedPaneId]??null:null}}});function Yh(e,t){return e.filter(n=>n.workspaceCwd===t)}function Xh(e,t){return Yh(e,t).map(n=>n.id)}function ht(e){const t=e===null?null:F.getState().activeTabOf(e);if(M.setState({activeTabId:t,activeWorkspaceCwd:e}),t!==null)return M.getState().tabs.find(n=>n.id===t)}function gt(e){(e==null?void 0:e.kind)==="chat"&&A.getState().activate(e.data.sessionId)}const M=ae()((e,t)=>({tabs:[],activeTabId:null,activeWorkspaceCwd:null,open(n,s){const o=t().tabs.find(i=>i.id===n.id);if(o){t().activate(o.id);return}e(i=>({tabs:[...i.tabs,n]}));const r=F.getState();r.ensureWorkspace(n.workspaceCwd),r.claimPaneFor(n.workspaceCwd,n.id,an(n),s),gt(ht(n.workspaceCwd))},close(n){const s=t().tabs.find(a=>a.id===n);if(!s)return;const o=Xh(t().tabs,s.workspaceCwd),r=t().activeTabId;e(a=>({tabs:a.tabs.filter(u=>u.id!==n)})),F.getState().removeTab(s.workspaceCwd,n,o);const i=ht(t().activeWorkspaceCwd);t().activeTabId!==r&&gt(i)},activate(n){const s=t().tabs.find(i=>i.id===n);if(!s)return;const o=F.getState();o.ensureWorkspace(s.workspaceCwd);const r=o.paneOfTab(s.workspaceCwd,n);r===null?o.claimPaneFor(s.workspaceCwd,n,an(s)):(o.focusPane(s.workspaceCwd,r),o.setActiveTab(s.workspaceCwd,r,n)),gt(ht(s.workspaceCwd))},switchWorkspace(n){F.getState().ensureWorkspace(n),gt(ht(n))},reorder(n,s){e(o=>{const r=o.tabs.findIndex(d=>d.id===n),i=o.tabs.findIndex(d=>d.id===s);if(r===-1||i===-1||r===i)return o;const a=o.tabs.slice(),[u]=a.splice(r,1);return u?(a.splice(i,0,u),{tabs:a}):o})},updateLabel(n,s){e(o=>({tabs:o.tabs.map(r=>r.id===n?{...r,label:s}:r)}))},updateData(n,s){e(o=>({tabs:o.tabs.map(r=>r.id===n?{...r,data:{...r.data,...s}}:r)}))},closeByPathPrefix(n){const s=t().tabs.filter(o=>{if(o.kind!=="file"&&o.kind!=="diff"&&o.kind!=="molecule")return!1;const r=o.data.path;return r===n||((r==null?void 0:r.startsWith(`${n}/`))??!1)});for(const o of s)t().close(o.id)}}));function an(e){var t;switch(e.kind){case"chat":{const{sessionId:n}=e.data,s=(t=A.getState().sessions[n])==null?void 0:t.agentId;return s?`agent:${s}`:null}case"file":return`file:${e.data.path}`;case"diff":{const{path:n,staged:s}=e.data;return`diff:${s?"staged":"worktree"}:${n}`}case"terminal":{const{slot:n}=e.data;return n===null?null:`terminal:${n}`}case"molecule":{const{path:n}=e.data;return n===null?null:`molecule:${n}`}}}function Mr(e,t,n){var s;return((s=e.find(o=>o.id===n))==null?void 0:s.workspaceCwd)===t?t:null}function bS(e){const t=M(n=>Mr(n.tabs,n.activeWorkspaceCwd,e));return F(n=>t===null?!1:qr(n.layouts[t],e))}function Jh(e){const{tabs:t,activeWorkspaceCwd:n}=M.getState(),s=Mr(t,n,e);return s===null?!1:qr(F.getState().layouts[s],e)}const Q={chat:e=>`chat-${e}`,file:e=>`file-${e}`,diff:(e,t)=>`diff-${e}${t?"-staged":""}`,terminal:e=>`term-${e}`,molecule:e=>`mol-${e}`};let In=0;function Nr(e,t){In+=1,M.getState().open({id:Q.terminal(`new-${In}`),kind:"terminal",label:`Terminal ${In}`,closable:!0,data:{slot:null,cwd:e},workspaceCwd:e},t)}let Tn=0;function Zh(e,t){Tn+=1,M.getState().open({id:Q.molecule(`new-${Tn}`),kind:"molecule",label:`Molecule ${Tn}`,closable:!0,data:{path:null},workspaceCwd:e},t)}function qt(e,t){const n=A.getState().createSession(e);M.getState().open({id:Q.chat(n),kind:"chat",label:"New chat",closable:!0,data:{sessionId:n},workspaceCwd:e},t);const s=N.getState().client;s&&$h(s,n).catch(()=>{})}function cn(e){const t=M.getState().tabs.find(s=>s.id===e);if(M.getState().close(e),(t==null?void 0:t.kind)!=="chat")return;const{sessionId:n}=t.data;Lh(N.getState().client,n)}F.subscribe(()=>{const{activeWorkspaceCwd:e,activeTabId:t}=M.getState();e!==null&&F.getState().activeTabOf(e)!==t&&gt(ht(e))});function Le(e,t){return t&&(e==="~"||e.startsWith("~/"))?t+e.slice(1):e}function ds(e,t,n){const s=new Map;for(const o of e){const r=t[o];if(!r)continue;const i=Le(r.cwd||"~",n),a=s.get(i);a?a.push(r):s.set(i,[r])}return Array.from(s,([o,r])=>({cwd:o,sessions:r}))}function Dr(e){return!e||e==="~"?"~":e.split("/").filter(Boolean).pop()||e}function Qh(e,t){return new Set(e.filter(n=>n.cwd!==t).map(n=>n.cwd))}function xt(e,t,n){M.getState().open({id:Q.chat(e.id),kind:"chat",label:e.title||"Chat",closable:!0,data:{sessionId:e.id},workspaceCwd:Le(e.cwd||"~",t)},n)}function $r(){nh({consume:()=>vt.getState().consume(),findByAgentId:e=>A.getState().findByAgentId(e),select(e){var t;A.getState().activate(e.id),e.cwd&&$.getState().setCwd(e.cwd),xt(e,((t=N.getState().serverInfo)==null?void 0:t.homeDir)??null)},notifyNotFound(e){Ee.getState().show(`Agent not found: ${e}`,{variant:"warning"})},consumeSource(){V().launch.agentDeepLink.consume()}})}function eg(e,t=$r){const n=e.current();return n&&vt.getState().set(n),e.subscribe(s=>{vt.getState().set(s),N.getState().status==="open"&&vt.getState().restored&&t()})}function tg(){w.useEffect(()=>eg(V().launch.agentDeepLink),[])}const Wn="pi-studio-agent-todos-ui";function Lr(e){if(!e)return new Set;try{const t=JSON.parse(e);if(!t||typeof t!="object")return new Set;const{version:n,collapsed:s}=t;return n!==1||!Array.isArray(s)?new Set:s.every(o=>typeof o=="string")?new Set(s):new Set}catch{return new Set}}function ng(e){const t=[...e];return JSON.stringify({version:1,collapsed:t.slice(-500)})}const sg=250;function og(e){let t;const n=async o=>{const r=e.getClient();if(r!=null&&r.hasAgentTodosCapability())try{const i=await r.listAgentTodos(o);s.getState().applyUpdate(i)}catch{}},s=ae()((o,r)=>({todos:Cs,tracked:{},collapsed:Lr(e.kv.get(Wn)),track(i){const a=(r().tracked[i]??0)===0;o(d=>({tracked:{...d.tracked,[i]:(d.tracked[i]??0)+1}})),a&&n(i);let u=!1;return()=>{u||(u=!0,o(d=>{const{[i]:g=0,...f}=d.tracked;return{tracked:g>1?{...f,[i]:g-1}:f}}))}},async refetchTracked(){o(i=>({todos:dd(i.todos)})),await Promise.all(Object.keys(r().tracked).map(n))},applyUpdate(i){o(a=>{const u=ud(a.todos,i);return u===a.todos?a:{todos:u}})},clear(){o({todos:Cs})},setCollapsed(i,a){const u=new Set(r().collapsed);u.delete(i),a&&u.add(i),o({collapsed:u}),clearTimeout(t),t=setTimeout(()=>{e.kv.set(Wn,ng(r().collapsed))},sg)}}));return s}const rg={get:e=>V().storage.get(e),set:(e,t)=>V().storage.set(e,t)},It=og({getClient:()=>N.getState().client,kv:rg});ph(e=>{It.setState({collapsed:Lr(e.storage.get(Wn))})});function SS(e){return It(t=>e?fd(t.todos,e):void 0)}function kS(e){return It(t=>e?t.collapsed.has(e):!1)}function ig(){const e=N(n=>n.status),t=N(n=>n.client);w.useEffect(()=>{if(e!=="open"||!t)return;const n=It.getState();if(!t.hasAgentTodosCapability()){n.clear();return}const s=t.onAgentTodosUpdate(o=>{It.getState().applyUpdate(o)});return n.refetchTracked(),s},[e,t])}function ag(e,t){if(!e||(e.url&&t.setHost(e.url),e.password&&t.setPassword(e.password),e.cwd&&t.setCwd(e.cwd),!e.connect))return;const{host:n,password:s}=t.fields(),o=Qo(n)!==null;t.connect({url:n,password:o?void 0:s||void 0})}function cg(){const e=w.useRef(!1);w.useEffect(()=>{if(e.current)return;e.current=!0;const t=$.getState();ag(V().launch.initialConnect(),{setHost:t.setHost,setPassword:t.setPassword,setCwd:t.setCwd,fields:()=>$.getState(),connect:n=>void N.getState().connect(n)})},[])}const Or="pi-studio-pane-layout",lg=250;function ug(){const e=new Map,t={workspaces:e,activeWorkspaceCwd:null},n=V().storage.get(Or);if(!n)return t;let s;try{s=JSON.parse(n)}catch{return t}if(typeof s!="object"||s===null)return t;const o=s;if(o.version!==Ar||typeof o.workspaces!="object"||o.workspaces===null)return t;for(const[i,a]of Object.entries(o.workspaces)){const u=dg(a);u&&e.set(i,u)}const r=o.activeWorkspaceCwd;return{workspaces:e,activeWorkspaceCwd:typeof r=="string"&&e.has(r)?r:null}}function dg(e){if(typeof e!="object"||e===null)return null;const t=e,n=Uh(t.tree);if(!n)return null;const s=new Set(he(n)),o={};for(const[a,u]of Js(t.placement))s.has(u)&&(o[a]=u);const r={};for(const[a,u]of Js(t.activeByPane))s.has(a)&&(r[a]=u);const i=t.activePaneId;return{tree:n,placement:o,activeByPane:r,activePaneId:typeof i=="string"&&s.has(i)?i:null}}function Js(e){return typeof e!="object"||e===null?[]:Object.entries(e).filter(t=>typeof t[1]=="string")}let Re=null;function Zs(){Re==null||Re();const e=setTimeout(()=>{Re=null,Br()},lg);Re=()=>clearTimeout(e)}function fg(){Re==null||Re(),Re=null,Br()}function Br(){const e=new Map;for(const s of M.getState().tabs){const o=an(s);o!==null&&e.set(s.id,o)}const t={};for(const[s,o]of Object.entries(F.getState().layouts)){const r={...o.pendingPlacement};for(const[a,u]of Object.entries(o.placement)){const d=e.get(a);d!==void 0&&(r[d]=u)}const i={...o.pendingActive};for(const[a,u]of Object.entries(o.activeByPane)){const d=e.get(u);d!==void 0&&(i[a]=d)}t[s]={tree:o.tree,placement:r,activeByPane:i,activePaneId:o.focusedPaneId}}const n={version:Ar,workspaces:t,activeWorkspaceCwd:M.getState().activeWorkspaceCwd??void 0};V().storage.set(Or,JSON.stringify(n))}function pg(){let e=Qs(M.getState().tabs);const t=()=>{const r=Qs(M.getState().tabs);r!==e&&(e=r,Zs())},n=F.subscribe(Zs),s=M.subscribe(t),o=A.subscribe(t);return()=>{n(),s(),o()}}function Qs(e){return e.map(t=>`${t.id}\0${an(t)??""}`).join("")}const eo={loaded:!1,capable:!1,viewers:{}},Ue=ae()((e,t)=>({...eo,isViewerEnabled(n){var s;return((s=t().viewers[n])==null?void 0:s.enabled)??!0},async hydrate(){const n=N.getState().client,s=(n==null?void 0:n.hasViewerSettingsCapability())??!1;if(!n||!s){e({loaded:!0,capable:!1,viewers:{}});return}try{const o=await n.getViewerSettings();e({loaded:!0,capable:!0,viewers:o.viewers})}catch{e({loaded:!0,capable:!0,viewers:{}})}},applyUpdate(n){e({viewers:n.viewers})},async setEnabled(n,s){const o=N.getState().client,r=t().viewers[n];if(e(i=>({viewers:{...i.viewers,[n]:{...r,enabled:s}}})),!!o)try{const i=await o.setViewerSettings({[n]:{enabled:s}});e({viewers:i.viewers})}catch{to(e,n,r),no()}},async setConfig(n,s){const o=N.getState().client,r=t().viewers[n];if(e(i=>({viewers:{...i.viewers,[n]:{enabled:(r==null?void 0:r.enabled)??!0,config:s}}})),!!o)try{const i=await o.setViewerSettings({[n]:{config:s}});e({viewers:i.viewers})}catch{to(e,n,r),no()}},reset(){e(eo)}}));function to(e,t,n){e(s=>{const o={...s.viewers};return n===void 0?delete o[t]:o[t]=n,{viewers:o}})}function no(){Ee.getState().error("Could not save the viewer setting. Reverted.")}function Fr(e){return Ue.getState().isViewerEnabled(e)}const hg=/^diff:(staged|worktree):(.+)$/;function gg(e){for(const[t,n]of e)for(const s of Object.keys(n.placement)){const o=mg(s,t,Fr);o!==null&&M.getState().open(o)}}function mg(e,t,n){const s=so(e,"file:");if(s!==null)return{id:Q.file(s),kind:"file",...Kt(s),workspaceCwd:t,data:{path:s}};const o=so(e,"molecule:");if(o!==null)return n("molviewer")?{id:Q.molecule(o),kind:"molecule",...Kt(o),workspaceCwd:t,data:{path:o}}:{id:Q.file(o),kind:"file",...Kt(o),workspaceCwd:t,data:{path:o}};const r=hg.exec(e);if(r!==null){const i=r[2],a=r[1]==="staged";return{id:Q.diff(i,a),kind:"diff",...Kt(i),workspaceCwd:t,data:{path:i,staged:a}}}return null}function so(e,t){if(!e.startsWith(t))return null;const n=e.slice(t.length);return n===""?null:n}function Kt(e){return{label:e.split("/").pop()||e,closable:!0}}function _g(e){if(e===null)return()=>{};if(ro())return oo(e),()=>{};const t=F.subscribe(()=>{ro()&&(t(),oo(e))});return t}function oo(e){if(F.getState().layouts[e]===void 0||!M.getState().tabs.some(n=>n.workspaceCwd===e))return!1;const t=M.getState().activeWorkspaceCwd!==e;return t&&M.getState().switchWorkspace(e),yg(e),t}function yg(e){const t=M.getState().tabs.filter(s=>s.workspaceCwd===e&&s.kind==="chat");if(t.length===0)return;const n=A.getState().activeSessionId;t.some(s=>s.data.sessionId===n)||A.getState().activate(t[0].data.sessionId)}function ro(){const{sessions:e,terminals:t}=F.getState().hydrationSources;return e&&t}const wg={workspaces:new Map,activeWorkspaceCwd:null};function vg(e,t,n){return e==="open"&&t&&!n}function bg(){const e=N(o=>o.status),t=Ue(o=>o.loaded),n=w.useRef(wg),s=w.useRef(!1);w.useEffect(()=>{const o=ug();n.current=o,F.getState().installPersistedLayouts(o.workspaces,o.activeWorkspaceCwd);const r=pg(),i=()=>fg();return window.addEventListener("pagehide",i),()=>{window.removeEventListener("pagehide",i),r()}},[]),w.useEffect(()=>{if(!vg(e,t,s.current))return;s.current=!0;const o=n.current;gg(o.workspaces),_g(o.activeWorkspaceCwd)},[e,t])}function Sg(e){return typeof e=="object"&&e!==null&&"kind"in e}function kg(e){const t=[];for(const n of e)Sg(n)&&(n.kind==="other"?n.event&&t.push({event:n.event,timestamp:n.timestamp}):(n.events??[]).forEach((s,o)=>{t.push({event:s,timestamp:o===0?n.timestamp:void 0})}));return t}async function zr(e){const t=[];let n=null;for(;;){const s=await e(n);if(s.items.length===0||(t.push(...kg(s.items)),!s.hasNewer))return t;const o=s.endCursor;if(typeof o!="string"||o===n)return t;n=o}}function xg(e){return typeof e.model=="string"}function Ig(e){return typeof e.thinkingLevel=="string"}function Tg(e){return typeof e.title=="string"}function Eg(){const e=N(s=>s.client),t=N(s=>s.status),n=w.useRef(!1);w.useEffect(()=>{t!=="open"||!e||n.current||(n.current=!0,Cg(e).then(()=>{vt.getState().markRestored(),$r()}))},[t,e]),w.useEffect(()=>{if(!(t!=="open"||!e))return e.onAgentUpdate(s=>{if(xg(s)){const o=typeof s.modelProvider=="string"?s.modelProvider:void 0;A.getState().setModelByAgentId(s.agentId,s.model,o)}if(Ig(s)&&A.getState().setThinkingLevelByAgentId(s.agentId,s.thinkingLevel),Tg(s)){A.getState().setTitleByAgentId(s.agentId,s.title);const o=A.getState().findByAgentId(s.agentId);o&&M.getState().updateLabel(Q.chat(o.id),s.title)}})},[t,e])}async function Cg(e){try{await Ag(e)}finally{F.getState().markHydrationSource("sessions")}}async function Ag(e){var b;let t=[];try{t=(await e.connection.request("list_agents_request",{all:!1})).agents??[]}catch{t=[]}t.sort((y,I)=>(I.lastActivity??0)-(y.lastActivity??0));const n=A.getState();for(const y of t){if(n.findByAgentId(y.agentId))continue;let I=_n;try{const S=await zr(E=>e.agent(y.agentId).timeline.fetch({direction:"after",cursor:E??void 0,limit:200}));I=br(S)}catch{}const _=I.rows.length===0;n.hydrate({id:`s-${y.agentId.slice(0,12)}`,agentId:y.agentId,title:y.title||(_?"New chat":(b=y.cwd)==null?void 0:b.split("/").pop())||"Restored",status:y.status??"idle",cwd:y.cwd||"~",timeline:I,userMessageCount:I.rows.filter(S=>S.kind==="user").length,model:y.model,modelProvider:y.modelProvider,thinkingLevel:y.thinkingLevel})}const{order:s,sessions:o}=A.getState(),r=s.length>0?o[s[0]??""]:void 0;if(!r)return;const i=mr(),a=Le(r.cwd||"~",i),u=F.getState().pendingActiveWorkspace??a,d=ds(s,o,i);$.getState().setCollapsedWorkspaces(Qh(d,u));const g=s.find(y=>{var I;return Le(((I=o[y])==null?void 0:I.cwd)||"~",i)===u});A.getState().activate(g??r.id),$.getState().setCwd(u);const f=Rg(),m=new Set;for(const y of s){const I=o[y];!(I!=null&&I.agentId)||!f.has(`agent:${I.agentId}`)||(xt(I,i),m.add(y))}const h=F.getState().layouts[a]!==void 0;!m.has(r.id)&&!h&&xt(r,i)}function Rg(){const e=new Set;for(const t of Object.values(F.getState().layouts))for(const n of Object.keys(t.pendingPlacement))n.startsWith("agent:")&&e.add(n);return e}function jg(){w.useEffect(()=>{function e(t){const n=$.getState();if(t.key==="Escape"){n.closeCwdPicker(),n.closeSessionMenu(),document.querySelector('[role="dialog"], [role="alertdialog"]')||Ee.getState().dismissTop();return}const s=t.ctrlKey||t.metaKey;if(s&&t.key.toLowerCase()==="t"){t.preventDefault(),Nr(M.getState().activeWorkspaceCwd||"~");return}if(s&&t.key.toLowerCase()==="w"){const{activeTabId:o,tabs:r}=M.getState();if(!o)return;const i=r.find(a=>a.id===o);(i==null?void 0:i.closable)!==!1&&(t.preventDefault(),cn(o))}}return document.addEventListener("keydown",e),()=>document.removeEventListener("keydown",e)},[])}function Pg(e){return typeof e=="object"&&e!==null&&e.type==="terminals_update"&&Array.isArray(e.terminals)}function qg(e){const{tabs:t,updateData:n}=M.getState();for(const s of t){if(s.kind!=="terminal")continue;const o=s.data;o.slot===null||o.exited||e.has(o.slot)||n(s.id,{exited:!0})}}function Mg(){const e=N(t=>t.client);w.useEffect(()=>{if(e)return e.connection.onSessionMessage(t=>{const n=t;Pg(n)&&qg(new Set(n.terminals.map(s=>s.slot)))})},[e])}async function Ng(e){try{let t=[];try{t=(await e.connection.request("list_terminals_request",{})).terminals??[]}catch{t=[]}if(t.length===0)return;const n=F.getState().layouts,s=Dg(),o=mr(),r=M.getState().open;for(const i of t){if(i.closed)continue;const a=Le(i.cwd||"~",o);n[a]!==void 0&&!s.has(`terminal:${i.slot}`)||r({id:Q.terminal(i.slot),kind:"terminal",label:i.name,closable:!0,data:{slot:i.slot,cwd:a},workspaceCwd:a})}}finally{F.getState().markHydrationSource("terminals")}}function Dg(){const e=new Set;for(const t of Object.values(F.getState().layouts))for(const n of Object.keys(t.pendingPlacement))n.startsWith("terminal:")&&e.add(n);return e}function $g(){const e=N(s=>s.client),t=N(s=>s.status),n=w.useRef(!1);w.useEffect(()=>{t!=="open"||!e||n.current||(n.current=!0,Ng(e))},[t,e])}function Lg(e){return typeof e=="object"&&e!==null&&e.type==="agent_timeline_reset"&&typeof e.agentId=="string"}async function Og(e,t){if(!A.getState().findByAgentId(t))return;let s=_n;try{const o=await zr(r=>e.agent(t).timeline.fetch({direction:"after",cursor:r??void 0,limit:200}));s=br(o)}catch{}A.getState().setTimelineByAgentId(t,s)}function Bg(){const e=N(t=>t.client);w.useEffect(()=>{if(e)return e.connection.onSessionMessage(t=>{const n=t;Lg(n)&&Og(e,n.agentId)})},[e])}function Fg(){const e=N(n=>n.status),t=N(n=>n.client);w.useEffect(()=>{if(e!=="open"||!t){Ue.getState().reset();return}return Ue.getState().hydrate(),t.onViewerSettingsUpdate(n=>{Ue.getState().applyUpdate(n)})},[e,t])}function zg(e){return e.managerActive?e.status==="closed"?"reconnect-now":e.status==="open"?e.probeInFlight?"none":"probe":"none":"none"}const Wg=5e3;function Ug(){let e=!1;return function(){const{status:n,reconnection:s,daemon:o}=N.getState(),r=zg({status:n,managerActive:s!==null,probeInFlight:e});if(r==="reconnect-now"){s==null||s.reconnectNow();return}if(r==="probe"){if(!o)return;e=!0,o.ping(Wg).catch(()=>{N.getState().daemon===o&&o.close(4e3,"stale-connection-probe")}).finally(()=>{e=!1})}}}function Hg(){w.useEffect(()=>V().connection.onResume(Ug()),[])}function Vg(){return cg(),tg(),Fg(),ig(),bg(),Eg(),$g(),Mg(),Bg(),jg(),Hg(),null}let Gt=null;function Kg(){Up("WorkbenchBoot");const[e,t]=w.useState(!1);return w.useEffect(()=>{const n=Symbol("WorkbenchBoot");if(Gt===null)return Gt=n,t(!0),()=>{Gt===n&&(Gt=null),t(!1)}},[]),e?c.jsx(Vg,{}):null}const Gg=new qi;function Yg({host:e,children:t}){const[n]=w.useState(()=>Us(e??V()));return e&&e!==n&&Us(e),c.jsx(gr.Provider,{value:n,children:c.jsx(vf,{store:n.storage,children:c.jsx(Mi,{client:Gg,children:t})})})}const Xg=w.lazy(()=>ue(()=>import("./ModelProvidersPanel-DaSeQAGS.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13])).then(e=>({default:e.ModelProvidersPanel}))),Jg=w.lazy(()=>ue(()=>import("./SkillsPanel-i5O4j8TT.js"),__vite__mapDeps([14,1,5,6,2,9,7,8,15,16,10,11,12,17])).then(e=>({default:e.SkillsPanel}))),Zg=w.lazy(()=>ue(()=>import("./ViewersPanel-TDwABaMu.js"),__vite__mapDeps([18,1,15,5,6,16,2,9,10,11,12,19])).then(e=>({default:e.ViewersPanel}))),Qg=[{id:"providers",label:"Model Providers",icon:Oi,component:Xg,available:e=>e.providerAuth},{id:"skills",label:"Skills",icon:Bi,component:Jg,available:e=>e.skills},{id:"viewers",label:"Viewers",icon:dn,component:Zg,available:()=>!0}];function em(e){return{providerAuth:!!(e!=null&&e.providerAuth),skills:!!(e!=null&&e.skills)}}function tm(e){switch(e){case"connected":return{status:"finished"};case"error":return{status:"error"};case"disconnected":case"closing":return{status:"idle",showInactive:!0};case"connecting":return null}}const io=40;function Wr(e){return/^\[object [A-Za-z]+\]$/.test(e)}function nm(e){const t=(e.split(`
18
+ `)[0]??"").trim();return t===""||Wr(t)?"connection failed":/refus/i.test(t)?"connection refused":/time(?:d)?[\s-]*out|timeout/i.test(t)?"timed out":/\b401\b|\b403\b|unauthor|forbidden|auth/i.test(t)?"auth failed":t.length>io?`${t.slice(0,io-1)}…`:t}function Ur(e){if(e.trim()==="")return!1;try{const t=rs(e);return/^wss?:\/\//i.test(t.url)?new URL(t.url).hostname!=="":!1}catch{return!1}}function ao(e){try{const{url:t}=rs(e);return t===""?null:t}catch{return null}}function sm(e){const{status:t,error:n,url:s}=e;if(t==="open"){const r=ao(s);return{kind:"connected",statusLabel:"connected",hostLabel:r,showFields:!1,fieldsFrozen:!1,action:{label:"Disconnect",variant:"outline",disabled:!1},title:r?`${r} · connected`:"connected"}}if(t==="closing"){const r=ao(s);return{kind:"closing",statusLabel:"disconnecting…",hostLabel:r,showFields:!1,fieldsFrozen:!1,action:{label:"Disconnect",variant:"outline",disabled:!0},title:r?`${r} · disconnecting…`:"disconnecting…"}}if(t==="connecting")return{kind:"connecting",statusLabel:"connecting…",hostLabel:null,showFields:!0,fieldsFrozen:!0,action:{label:"Connecting…",variant:"default",disabled:!0},title:"connecting…"};const o=Ur(s);if(n!==null&&n!==""){const r=nm(n);return{kind:"error",statusLabel:r,hostLabel:null,showFields:!0,fieldsFrozen:!1,action:{label:"Retry",variant:"default",disabled:!o},title:Wr(n.trim())?r:n}}return{kind:"disconnected",statusLabel:"disconnected",hostLabel:null,showFields:!0,fieldsFrozen:!1,action:{label:"Connect",variant:"default",disabled:!o},title:"disconnected"}}const om="_bar_1o0iw_9",rm="_title_1o0iw_21",im="_brand_1o0iw_27",am="_version_1o0iw_33",cm="_statusPill_1o0iw_41",lm="_statusText_1o0iw_60",um="_statusHost_1o0iw_68",dm="_statusSep_1o0iw_76",fm="_statusLabel_1o0iw_79",pm="_statusDot_1o0iw_82",hm="_statusSpinner_1o0iw_83",gm="_statusPillError_1o0iw_87",mm="_field_1o0iw_4",_m="_fieldUrl_1o0iw_111",ym="_fieldPassword_1o0iw_115",wm="_fieldInvalid_1o0iw_122",vm="_action_1o0iw_139",bm="_panelToggles_1o0iw_147",Sm="_panelToggle_1o0iw_147",J={bar:om,title:rm,brand:im,version:am,statusPill:cm,statusText:lm,statusHost:um,statusSep:dm,statusLabel:fm,statusDot:pm,statusSpinner:hm,statusPillError:gm,field:mm,fieldUrl:_m,fieldPassword:ym,fieldInvalid:wm,action:vm,panelToggles:bm,panelToggle:Sm},km=w.lazy(()=>ue(()=>import("./SettingsDialog-SEYpCTXv.js"),__vite__mapDeps([20,1,5,6,2,4,9,10,11,12,21])).then(e=>({default:e.SettingsDialog}))),Oe=26,xm="var(--pi-font-size-2xs)",Im=9,co="host:port, ws://…/http://…, or a pasted pairing link";function Tm(){const e=N(x=>x.status),t=N(x=>x.error),n=N(x=>x.connect),s=N(x=>x.disconnect),o=N(x=>x.serverInfo),r=$(x=>x.host),i=$(x=>x.setHost),a=$(x=>x.password),u=$(x=>x.setPassword),d=$(x=>x.leftSidebarCollapsed),g=$(x=>x.toggleLeftSidebar),f=$(x=>x.rightSidebarCollapsed),m=$(x=>x.toggleRightSidebar),h=$(x=>x.settingsOpen),b=$(x=>x.openSettings),y=$(x=>x.closeSettings),I=em(o==null?void 0:o.features),_=Qg.some(x=>x.available(I)),[S,E]=w.useState(h);w.useEffect(()=>{h&&E(!0)},[h]);const R=sm({status:e,error:t,url:r}),q=tm(R.kind),H=w.useRef({host:r,password:a}),[ie,L]=w.useState(!1),ne=ie&&r.trim()!==""&&!Ur(r);function ce(){R.action.disabled||(H.current={host:r,password:a},n({url:r,password:a||void 0}))}function Y(){if(R.kind==="connected"||R.kind==="closing"){s();return}ce()}function ye(x,fe){if(x.key==="Enter"){x.preventDefault(),ce();return}x.key==="Escape"&&(x.preventDefault(),fe==="url"?(i(H.current.host),L(!1)):u(H.current.password),x.currentTarget.blur())}const ke=V().app;return c.jsxs("div",{className:J.bar,children:[c.jsxs("span",{className:J.title,children:[c.jsx("span",{className:J.brand,children:ke.title}),ke.version&&c.jsxs("span",{className:J.version,children:["v",ke.version]})]}),c.jsxs("span",{className:U(J.statusPill,R.kind==="error"&&J.statusPillError),title:R.title,children:[q?c.jsx(hn,{...q,className:J.statusDot}):c.jsx(dr,{size:Im,color:"var(--pi-color-statusWarning)",className:J.statusSpinner,"aria-label":"Connecting"}),c.jsxs("span",{className:J.statusText,children:[R.hostLabel&&c.jsx("span",{className:J.statusHost,children:R.hostLabel}),R.hostLabel&&c.jsx("span",{className:J.statusSep,"aria-hidden":!0,children:"·"}),c.jsx("span",{className:J.statusLabel,"aria-live":"polite",children:R.statusLabel})]})]}),R.showFields&&c.jsxs(c.Fragment,{children:[c.jsx(sn,{className:U(J.field,J.fieldUrl,ne&&J.fieldInvalid),value:r,onChange:x=>i(x.target.value),onFocus:()=>L(!1),onBlur:()=>L(!0),onKeyDown:x=>ye(x,"url"),readOnly:R.fieldsFrozen,placeholder:"ws://127.0.0.1:6767",title:ne?`Not a dialable daemon address — ${co}`:co,"aria-label":"Daemon address","aria-invalid":ne||void 0,spellCheck:!1,autoComplete:"off"}),c.jsx(sn,{className:U(J.field,J.fieldPassword),type:"password",value:a,onChange:x=>u(x.target.value),onKeyDown:x=>ye(x,"password"),readOnly:R.fieldsFrozen,placeholder:"password",title:"Daemon password — ignored when the address is a pairing link","aria-label":"Daemon password",autoComplete:"off"})]}),c.jsx(se,{className:J.action,size:"xs",variant:R.action.variant,disabled:R.action.disabled,style:{minHeight:Oe,fontSize:xm},onClick:Y,children:R.action.label}),c.jsxs("div",{className:J.panelToggles,children:[c.jsx(se,{className:J.panelToggle,size:"xs",variant:"ghost",iconOnly:!0,style:{minHeight:Oe,width:Oe},"aria-label":"Toggle left panel",title:d?"Show sessions sidebar":"Hide sessions sidebar",onClick:()=>g(),children:c.jsx(oe,{icon:d?Fi:zi,size:"sm"})}),c.jsx(se,{className:J.panelToggle,size:"xs",variant:"ghost",iconOnly:!0,style:{minHeight:Oe,width:Oe},"aria-label":"Toggle right panel",title:f?"Show files/changes sidebar":"Hide files/changes sidebar",onClick:()=>m(),children:c.jsx(oe,{icon:f?Wi:Ui,size:"sm"})}),_&&c.jsx(se,{className:J.panelToggle,size:"xs",variant:"ghost",iconOnly:!0,style:{minHeight:Oe,width:Oe},"aria-label":"Settings",title:"Settings",onClick:()=>b(),children:c.jsx(oe,{icon:Hi,size:"sm"})})]}),S&&c.jsx(w.Suspense,{fallback:null,children:c.jsx(km,{open:h,onOpenChange:x=>x?b():y()})})]})}function ot(){return N(e=>{var t;return((t=e.serverInfo)==null?void 0:t.homeDir)??null})}const Un=ae()((e,t)=>({drafts:{},pendingFeedback:{},setDraft(n,s){e(o=>({drafts:{...o.drafts,[n]:s}}))},replaceDraft(n,s,o){const i={copy:(t().drafts[n]??"")===""?"filled":"replaced",flash:o};e(a=>({drafts:{...a.drafts,[n]:s},pendingFeedback:{...a.pendingFeedback,[n]:i}}))},consumeFeedback(n){const s=t().pendingFeedback[n];if(s!==void 0)return e(o=>{const r={...o.pendingFeedback};return delete r[n],{pendingFeedback:r}}),s}}));function be(e,t,n,s=!1){return{tone:e,glyph:t,text:n,truncate:s}}function Em(e){var t,n;return e.reason==="answered"?e.method==="input"?be("success","check","answered"):e.method==="editor"?be("success","check","submitted"):e.method==="select"?((t=e.answer)==null?void 0:t.value)===void 0?be("muted",null,"no longer pending"):be("success","check",e.answer.value,!0):e.method==="confirm"?((n=e.answer)==null?void 0:n.confirmed)===void 0?be("muted",null,"no longer pending"):e.answer.confirmed?be("success","check","Yes"):be("muted",null,"declined"):be("success","check","answered"):e.reason==="cancelled"?be("muted",null,"declined"):e.reason==="timeout"?be("muted",null,"expired"):be("muted",null,e.reason)}function En(e){return e||"Chat"}function Cm(e,t){let n=0;for(const s of Object.values(e))s.agentId===t&&n++;return n}function Am(e){const t=e.title;return typeof t=="string"&&t.length>0?t:void 0}function Rm(e){const t=Em(e);return t.tone==="success"?"Answered":t.text==="declined"?"Dismissed":t.text==="expired"?"Expired":"No longer pending"}function jm(e,t,n){const s=[];for(const o of Object.values(t.pending)){if(o.receivedAt===void 0||e.pending[o.requestId]!==void 0)continue;const r=Cm(e.pending,o.agentId);if(r===0)if(o.agentId===n.activeAgentId){const i=Am(o.payload);s.push({text:i?`A question needs input: ${i}`:"A question needs input",politeness:"polite"})}else s.push({text:`A question needs input in ${En(n.sessionTitle(o.agentId))}`,politeness:"polite"});else s.push({text:`${r+1} questions need input in ${En(n.sessionTitle(o.agentId))}`,politeness:"polite"})}for(const o of Object.values(t.resolved))e.resolved[o.requestId]===void 0&&s.push({text:`${Rm(o)} in ${En(n.sessionTitle(o.agentId))}`,politeness:"polite"});return s}function Pm(e){switch(e){case"warning":return"warning";case"error":return"error";default:return"default"}}function qm(e){switch(e){case"warning":return 6e3;case"error":return null;default:return 4e3}}function Mm(e,t,n,s){return t===n?e:`${s||"Chat"} — ${e}`}function Nm(e,t,n,s,o){return{text:n===s?e:`${o||"Chat"}: ${e}`,politeness:t==="error"?"assertive":"polite"}}const Ce=ae()(()=>({controller:null,uiState:es}));let lo=null,Te=null,Hr=new Map,Vr=new Map,mt=new Set;function Kr(){Hr=new Map,Vr=new Map,mt=new Set}function Dm(e,t){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(e[n]!==t[n])return!1;return!0}function Gr(e,t,n){const s=n(),o=e.get(t);return o&&Dm(o,s)?o:(e.set(t,s),s)}function $m(e){for(const t of e)switch(t.type){case"notify":Lm(t);break;case"replace_composer_text":Om(t);break}}function Lm(e){const t=A.getState(),n=t.activeSessionId?t.sessions[t.activeSessionId]:void 0,s=Object.values(t.sessions).find(a=>a.agentId===e.agentId),o=(n==null?void 0:n.agentId)??null,r=(s==null?void 0:s.title)??null;Ee.getState().show(Mm(e.message,e.agentId,o,r),{variant:Pm(e.level),durationMs:qm(e.level)});const i=Nm(e.message,e.level,e.agentId,o,r);mn(i.text,i.politeness)}function Om(e){const t=Object.values(A.getState().sessions).find(s=>s.agentId===e.agentId);if(t===void 0)return;const n=Jh(Q.chat(t.id));Un.getState().replaceDraft(t.id,e.text,n),n||mn(`Draft replaced in ${t.title||"Chat"}`,"polite")}function Bm(e,t){const n=A.getState(),s=n.activeSessionId?n.sessions[n.activeSessionId]:void 0,o=jm(e,t,{activeAgentId:(s==null?void 0:s.agentId)??null,sessionTitle:r=>{var i;return((i=Object.values(n.sessions).find(a=>a.agentId===r))==null?void 0:i.title)??null}});for(const r of o)mn(r.text,r.politeness);Object.keys(e.pending).length>0&&Object.keys(t.pending).length===0&&os()}const uo=new Set;function Fm(e){Kr();const t=pd(e,{onUnknownMethod(s){uo.has(s)||(uo.add(s),console.warn(`agent-ui: unrecognised extension-UI method "${s}"`))}}),n=t.subscribe((s,o)=>{const r=Ce.getState().uiState;Ce.setState({uiState:s}),$m(o),Bm(r,s)});Ce.setState({controller:t,uiState:t.getState()}),Te=()=>{n(),t.dispose()}}function zm(){Te==null||Te(),Te=null,Kr(),Ce.setState({controller:null,uiState:es})}function Yr(e){if(e===lo||(zm(),lo=e,!e))return;const t=()=>{Ce.getState().controller||e.connection.state==="open"&&e.extensionUiAvailable()&&(Te==null||Te(),Te=null,Fm(e))};t(),Ce.getState().controller||(Te=e.connection.onStateChange(n=>{n==="open"&&queueMicrotask(t)}))}N.subscribe(e=>Yr(e.client));Yr(N.getState().client);const fo=[],po=[];function Wm(e,t){if(!e.controller)return fo;const n=Gr(Hr,t,()=>ad(e.uiState,t));return n.length===0?fo:n}function Um(e,t){if(!e.controller)return po;const n=Gr(Vr,t,()=>ld(e.uiState,t));return n.length===0?po:n}const ho=new Set;function Hm(e){if(!e.controller)return ho;const t=new Set(Object.keys(cd(e.uiState)));return t.size===mt.size&&[...t].every(n=>mt.has(n))?mt:(mt=t,t.size===0?ho:t)}function Vm(){return Ce(Hm)}function Xr(e){return Ce(t=>Wm(t,e))}function xS(e){return Ce(t=>Um(t,e))}function IS(e,t){const n=Ce.getState().controller;return n?n.respond(e,t):Promise.resolve({ok:!1,reason:"unsupported"})}const Km={initializing:"queued",idle:"idle",running:"running",error:"error",closed:"finished"};function We(e){return Km[e]??"idle"}const go=120;function Gm(e,t){return e.status==="error"?"failed":t?"needsInput":e.status==="running"?"running":e.userMessageCount===0&&e.timeline.rows.length===0?"empty":"idle"}function Ym(e){const{rows:t}=e.timeline;for(let n=t.length-1;n>=0;n--){const s=t[n];if(s&&s.kind==="error"){const o=(s.text.split(`
19
+ `,1)[0]??"").trim();return o.length>go?o.slice(0,go):o}}return null}function Xm(e,t){const n=Gm(e,t);switch(n){case"failed":return{state:n,meta:"turn failed",reason:Ym(e),dot:{status:We("error")},titleItalic:!1};case"needsInput":return{state:n,meta:"needs input",reason:null,dot:{status:We(e.status),requiresAttention:!0,attentionReason:"question"},titleItalic:!1};case"running":return{state:n,meta:"running",reason:null,dot:{status:We("running")},titleItalic:!1};case"empty":return{state:n,meta:"no messages",reason:null,dot:{status:We("idle"),showInactive:!0},titleItalic:!0};case"idle":return{state:n,meta:"idle",reason:null,dot:{status:We("idle"),showInactive:!0},titleItalic:!1}}}function Jm(e,t){const n=e.filter(o=>o.agentId!==null&&t.has(o.agentId)).length;return n>0?{dot:{status:"waiting",requiresAttention:!0,attentionReason:"question"},reason:"question",pendingSessionCount:n}:e.some(o=>o.status==="error")?{dot:{status:We("error")},reason:"failed",pendingSessionCount:0}:null}const Zm="_header_4rtcu_1",Qm="_list_4rtcu_15",e_="_newSessionRow_4rtcu_20",t_="_footer_4rtcu_45",n_="_item_4rtcu_70",s_="_itemFailed_4rtcu_85",o_="_active_4rtcu_83",r_="_activeBar_4rtcu_88",i_="_activeBarNeedsInput_4rtcu_107",a_="_title_4rtcu_89",c_="_titleLabel_4rtcu_89",l_="_titleItalic_4rtcu_127",u_="_meta_4rtcu_130",d_="_metaDot_4rtcu_138",f_="_metaLabel_4rtcu_143",p_="_metaFailed_4rtcu_148",h_="_metaNeedsInput_4rtcu_151",g_="_metaEmpty_4rtcu_154",m_="_menuBtn_4rtcu_159",__="_workspaceHeader_4rtcu_172",y_="_workspaceChevron_4rtcu_194",w_="_chevronGlyphExpanded_4rtcu_205",v_="_workspaceLabel_4rtcu_211",b_="_workspaceCount_4rtcu_217",S_="_workspaceMenuBtn_4rtcu_225",k_="_workspaceSessions_4rtcu_237",K={header:Zm,list:Qm,newSessionRow:e_,footer:t_,item:n_,itemFailed:s_,active:o_,activeBar:r_,activeBarNeedsInput:i_,title:a_,titleLabel:c_,titleItalic:l_,meta:u_,metaDot:d_,metaLabel:f_,metaFailed:p_,metaNeedsInput:h_,metaEmpty:g_,menuBtn:m_,workspaceHeader:__,workspaceChevron:y_,chevronGlyphExpanded:w_,workspaceLabel:v_,workspaceCount:b_,workspaceMenuBtn:S_,workspaceSessions:k_};function x_({session:e,active:t,draggable:n,onSelect:s,onOpenMenu:o,onDragStartRow:r}){const i=Xr(e.agentId??""),a=Xm(e,i.length>0);return c.jsxs("div",{className:U(K.item,t&&K.active,!t&&a.state==="failed"&&K.itemFailed),draggable:n,onDragStart:r,onClick:s,onContextMenu:u=>{u.preventDefault(),o(u.clientX,u.clientY)},children:[(t||a.state==="needsInput")&&c.jsx("span",{className:U(K.activeBar,a.state==="needsInput"&&K.activeBarNeedsInput),"aria-hidden":!0}),c.jsxs("div",{className:K.title,children:[c.jsx("span",{className:U(K.titleLabel,a.titleItalic&&K.titleItalic),children:e.title}),c.jsx(je,{className:K.menuBtn,hoverBase:"var(--pi-color-surfaceSidebar)",title:"Actions",onClick:u=>{u.stopPropagation();const d=u.currentTarget.getBoundingClientRect();o(d.left,d.bottom)},children:c.jsx(oe,{icon:Yn,size:"sm"})})]}),c.jsxs("div",{className:U(K.meta,a.state==="empty"&&K.metaEmpty),children:[a.dot&&c.jsx(hn,{...a.dot,className:K.metaDot,pulse:a.state==="needsInput"}),c.jsxs("span",{className:K.metaLabel,children:[c.jsx("span",{className:a.state==="failed"?K.metaFailed:a.state==="needsInput"?K.metaNeedsInput:void 0,children:a.meta}),a.reason&&c.jsxs(c.Fragment,{children:[" · ",a.reason]})]})]})]})}const _e=ae()(e=>({dialog:{status:"closed"},openConfirm:(t,n,s)=>e({dialog:{status:"confirm",agentId:t,target:n,pending:!1,backTo:null,triggerElement:s}}),openPicker:(t,n,s)=>e({dialog:{status:"picker",agentId:t,messages:n,triggerElement:s}}),selectFromPicker:t=>e(n=>n.dialog.status!=="picker"?n:{dialog:{status:"confirm",agentId:n.dialog.agentId,target:t,pending:!1,backTo:n.dialog.messages,triggerElement:n.dialog.triggerElement}}),backToPicker:()=>e(t=>t.dialog.status!=="confirm"||t.dialog.backTo===null?t:{dialog:{status:"picker",agentId:t.dialog.agentId,messages:t.dialog.backTo,triggerElement:t.dialog.triggerElement}}),setPending:t=>e(n=>n.dialog.status==="confirm"?{dialog:{...n.dialog,pending:t}}:n),close:()=>e({dialog:{status:"closed"}})}));function Jr(e){return e.kind==="user"&&!e.pending&&!e.failed}function I_(e){return e.filter(Jr).map(t=>t.text)}function T_(e){const t=new Map;let n=0;for(const s of e)Jr(s)&&(t.set(s.id,n),n+=1);return t}function mo(e){return e.trim().replace(/\s+/g," ")}function E_(e,t,n){const s=e[t],o=n[t];return s===void 0||o===void 0?{outcome:"fallback-to-picker"}:mo(s)!==mo(o.text)?{outcome:"fallback-to-picker"}:{outcome:"matched",target:o}}function C_(e){return e.forkTimelineSync&&!e.running&&e.agentId!==null}const A_=new Map;function Zr(e){var s;const t=N(o=>o.serverInfo),n=!!((s=t==null?void 0:t.features)!=null&&s.forkTimelineSync);return C_({forkTimelineSync:n,running:(e==null?void 0:e.status)==="running",agentId:(e==null?void 0:e.agentId)??null})}function TS(e){const t=is(),n=_e(d=>d.openConfirm),s=_e(d=>d.openPicker),o=Zr(e),r=e.timeline.rows,i=w.useMemo(()=>o?T_(r):A_,[o,r]),a=e.agentId,u=w.useCallback(d=>{if(!t||!a)return;const g=document.activeElement instanceof HTMLElement?document.activeElement:null;t.agent(a).forkMessages().then(({messages:f})=>{const m=I_(e.timeline.rows),h=E_(m,d,f);h.outcome==="matched"?n(a,h.target,g):s(a,f,g)}).catch(f=>{console.error("[fork] forkMessages() failed",f)})},[t,a,e,n,s]);return{canFork:o,ordinalByRowId:i,onForkFromRow:u}}function R_(e){const t=is(),n=_e(i=>i.openPicker),s=Zr(e),o=e==null?void 0:e.agentId,r=w.useCallback(()=>{if(!t||!o)return;const i=document.activeElement instanceof HTMLElement?document.activeElement:null;t.agent(o).forkMessages().then(({messages:a})=>n(o,a,i)).catch(a=>{console.error("[fork] forkMessages() failed",a)})},[t,o,n]);return{canFork:s,openForkPicker:r}}async function j_(e,t){const n=await V().dialogs.prompt("Rename:",e.title);if(!(n!=null&&n.trim()))return;const s=n.trim();A.getState().setTitle(e.id,s),M.getState().updateLabel(Q.chat(e.id),s),e.agentId&&(t==null||t.agent(e.agentId).update({title:s}).catch(()=>{}))}async function P_(e,t,n,s){const o=t.length;if(!await V().dialogs.confirm(`Delete all ${o} conversation${o===1?"":"s"} in "${Dr(e)}"? This deletes the conversations only — files on disk are untouched. This cannot be undone.`))return!1;s();for(const i of t){if(i.agentId&&n)try{await n.agent(i.agentId).delete()}catch(a){await V().dialogs.alert(`Failed to delete "${i.title}": ${a instanceof Error?a.message:String(a)}`);continue}A.getState().remove(i.id),M.getState().close(Q.chat(i.id))}return!0}function q_(){const e=$(y=>y.sessionMenu),t=$(y=>y.closeSessionMenu),n=N(y=>y.client),s=w.useRef(null),[o,r]=w.useState(!1);w.useEffect(()=>{r(e!==null)},[e]);const i=A(y=>e?y.sessions[e.sessionId]:void 0),a=R_(i);if(!e)return null;const u=!!(i!=null&&i.agentId)&&(i==null?void 0:i.status)==="running";function d(y){r(y),y||t()}async function g(){i&&(await j_(i,n),t())}function f(){i!=null&&i.agentId&&(n==null||n.agent(i.agentId).interrupt().catch(()=>{})),t()}function m(y){A.getState().remove(y),M.getState().close(Q.chat(y))}async function h(){if(i){if(!await V().dialogs.confirm("Archive this agent? It can be resumed later."))return t();if(t(),!i.agentId){m(i.id);return}if(!n){await V().dialogs.alert("Not connected — cannot archive remotely.");return}try{await n.agent(i.agentId).archive(),m(i.id)}catch(y){await V().dialogs.alert(`Failed to archive: ${y instanceof Error?y.message:String(y)}`)}}}async function b(){if(i){if(!await V().dialogs.confirm("Permanently delete this agent? This cannot be undone."))return t();if(t(),!i.agentId){m(i.id);return}if(!n){await V().dialogs.alert("Not connected — cannot delete remotely.");return}try{await n.agent(i.agentId).delete(),m(i.id)}catch(y){await V().dialogs.alert(`Failed to delete: ${y instanceof Error?y.message:String(y)}`)}}}return c.jsxs(Ct,{open:o,onOpenChange:d,modal:!1,children:[c.jsx(At,{asChild:!0,children:c.jsx(gn,{ref:s,x:e.x,y:e.y})}),c.jsxs(Pt,{minWidth:160,children:[c.jsxs(G,{onSelect:g,children:[c.jsx(Ro,{size:13}),"Rename"]}),c.jsxs(G,{disabled:!u,onSelect:f,children:[c.jsx(Vi,{size:13}),"Stop agent"]}),a.canFork&&c.jsxs(G,{onSelect:a.openForkPicker,children:[c.jsx(jo,{size:13}),"Fork from…"]}),c.jsx(ze,{}),c.jsxs(G,{danger:!0,onSelect:h,children:[c.jsx(Ki,{size:13}),"Archive"]}),c.jsxs(G,{danger:!0,onSelect:b,children:[c.jsx(Xn,{size:13}),"Delete permanently"]})]})]})}function M_({label:e,cwd:t,sessionCount:n,collapsed:s,attentionDot:o,onToggleCollapsed:r,onOpenMenu:i}){return c.jsxs("div",{className:K.workspaceHeader,onClick:r,title:t,children:[c.jsx(je,{className:K.workspaceChevron,"aria-label":s?"Expand workspace":"Collapse workspace",onClick:a=>{a.stopPropagation(),r()},children:c.jsx(oe,{icon:Jn,size:"xs",className:s?void 0:K.chevronGlyphExpanded})}),c.jsx(Zf,{projectKey:e,size:20}),c.jsx("span",{className:K.workspaceLabel,children:e}),o&&c.jsx(hn,{...o.dot,pulse:o.reason==="question","aria-label":o.reason==="question"?`${e} — ${o.pendingSessionCount} session${o.pendingSessionCount===1?"":"s"} needs input`:`${e} — turn failed`}),c.jsx("span",{className:K.workspaceCount,children:n}),c.jsx(je,{className:K.workspaceMenuBtn,hoverBase:"var(--pi-color-surface2)",title:"Workspace actions",onClick:a=>{a.stopPropagation();const u=a.currentTarget.getBoundingClientRect();i(u.left,u.bottom)},children:c.jsx(oe,{icon:Yn,size:"sm"})})]})}function N_(){const e=$(h=>h.workspaceMenu),t=$(h=>h.closeWorkspaceMenu),n=N(h=>h.client),s=A(h=>h.order),o=A(h=>h.sessions),r=ot(),i=w.useRef(null),[a,u]=w.useState(!1);if(w.useEffect(()=>{u(e!==null)},[e]),!e)return null;const d=s.map(h=>o[h]).filter(h=>!!h).filter(h=>Le(h.cwd||"~",r)===e.cwd);function g(h){u(h),h||t()}function f(){e&&(t(),qt(e.cwd))}async function m(){if(!e)return;await P_(e.cwd,d,n,t)||t()}return c.jsxs(Ct,{open:a,onOpenChange:g,modal:!1,children:[c.jsx(At,{asChild:!0,children:c.jsx(gn,{ref:i,x:e.x,y:e.y})}),c.jsxs(Pt,{minWidth:160,children:[c.jsxs(G,{onSelect:f,children:[c.jsx(Zt,{size:13}),"New session"]}),c.jsx(ze,{}),c.jsxs(G,{danger:!0,onSelect:m,children:[c.jsx(Xn,{size:13}),"Delete workspace (all conversations)"]})]})]})}const D_=.25;function Qr(e,t){if(t.width<=0||t.height<=0)return"center";const n=(e.x-(t.left+t.width/2))/t.width,s=(e.y-(t.top+t.height/2))/t.height;return Math.max(Math.abs(n),Math.abs(s))<D_?"center":Math.abs(n)>=Math.abs(s)?n<0?"left":"right":s<0?"top":"bottom"}function $_(e,t){return t.x>=e.left&&t.x<=e.left+e.width&&t.y>=e.top&&t.y<=e.top+e.height}function ei(e,t,n){return n==="center"?"center":kt(e,t,n)?n:"center"}function Hn(e,t,n,s){return s[n]!==t?!1:e==="center"?!0:Object.keys(s).every(r=>r===n||s[r]!==t)}const Mt={chat:"application/x-pi-studio-open-chat",path:"application/x-pi-studio-open-path"},L_=["chat","path"];function ti(e){for(const t of L_)if(e.includes(Mt[t]))return t;return null}function ES(e){return t=>{t.dataTransfer.setData(Mt.path,e),t.dataTransfer.effectAllowed="copyMove"}}function O_(e,t){const n=ti(e);if(n===null)return null;const s=t(Mt[n]).trim();return s===""?null:{kind:n,value:s}}const fs="application/x-pi-studio-path-ref";function ni(e){return e.includes(fs)}function B_(e,t){const n=e.replace(/\/+$/,"");return t?`${n}/`:e}function CS(e,t){if(!ni(e))return null;const n=t(fs).trim();return n===""?null:n}const si="data-composer-drop";function AS(){return{[si]:""}}function _o(e){var t;return((t=e==null?void 0:e.closest)==null?void 0:t.call(e,`[${si}]`))!=null}function yo(e,t){return t&&ni(e)}function F_(e,t,n,s){return ei(e,t,Qr(n,s))}function z_(){const e=A(_=>_.order),t=A(_=>_.sessions),n=A(_=>_.activeSessionId),s=A(_=>_.activate),o=M(_=>_.activeWorkspaceCwd),r=N(_=>_.status),i=$(_=>_.openSessionMenu),a=$(_=>_.openWorkspaceMenu),u=$(_=>_.setCwd),d=$(_=>_.openCwdPicker),g=$(_=>_.collapsedWorkspaces),f=$(_=>_.toggleWorkspaceCollapsed),m=ot(),h=Vm();function b(_){s(_);const S=t[_];S!=null&&S.cwd&&u(S.cwd),S&&xt(S,m)}function y(_,S,E){S===o&&(E.dataTransfer.setData(Mt.chat,_),E.dataTransfer.effectAllowed="copy")}const I=ds(e,t,m);return c.jsxs(fr,{children:[c.jsx("div",{className:K.header,style:{minHeight:Pf},children:c.jsxs("h3",{children:["Workspaces · ",I.length]})}),c.jsxs("div",{className:K.list,children:[I.length===0&&c.jsx($e,{style:{padding:"var(--pi-spacing-12) var(--pi-spacing-10)"},children:r!=="open"?"Not connected":"No workspaces — open a folder to start"}),I.map(_=>{const S=g.has(_.cwd);return c.jsxs("div",{children:[c.jsx(M_,{label:Dr(_.cwd),cwd:_.cwd,sessionCount:_.sessions.length,collapsed:S,attentionDot:S?Jm(_.sessions,h):null,onToggleCollapsed:()=>f(_.cwd),onOpenMenu:(E,R)=>a(_.cwd,E,R)}),!S&&c.jsxs("div",{className:K.workspaceSessions,children:[_.sessions.map(E=>c.jsx(x_,{session:E,active:E.id===n,draggable:_.cwd===o,onSelect:()=>b(E.id),onOpenMenu:(R,q)=>i(E.id,R,q),onDragStartRow:R=>y(E.id,_.cwd,R)},E.id)),c.jsxs("button",{type:"button",className:K.newSessionRow,disabled:r!=="open",title:r!=="open"?"Connect to start a new session":void 0,onClick:()=>qt(_.cwd),children:[c.jsx(oe,{icon:Zt,size:"xs"}),"New session"]})]})]},_.cwd)})]}),c.jsxs("button",{type:"button",className:K.footer,disabled:r!=="open",title:r!=="open"?"Connect to open a workspace":"Open a workspace folder",onClick:()=>d(),children:[c.jsx(oe,{icon:Zt,size:"xs"}),"Add workspace"]}),c.jsx(q_,{}),c.jsx(N_,{})]})}const oi="data-pi-dragging";function ri(e=document.body){e.setAttribute(oi,"")}function ln(e=document.body){e.removeAttribute(oi)}const wo={tab:0,strip:1,pane:2};function Cn(e){if(e===null||typeof e!="object"||!("type"in e))return null;const{type:t}=e;if(t!=="tab"&&t!=="strip"&&t!=="pane")return null;const n="paneId"in e&&typeof e.paneId=="string"?e.paneId:null;return{kind:t,paneId:n}}function W_(e){const t=e.activatorEvent;return t instanceof MouseEvent?{x:t.clientX+e.delta.x,y:t.clientY+e.delta.y}:null}function U_(e,t,n){return e.kind==="tab"?n.placement[t]??null:e.paneId}function H_(e){const[t,n]=w.useState(null),[s,o]=w.useState(null),r=M(h=>h.tabs.find(b=>b.id===t)??null),i=ba(Sa(xa,{activationConstraint:{distance:4}})),a=w.useMemo(()=>h=>{const b=ka(h).map(y=>{var I;return{hit:y,target:Cn((I=h.droppableContainers.find(_=>_.id===y.id))==null?void 0:I.data.current)}}).filter(y=>y.target!==null).toSorted((y,I)=>wo[y.target.kind]-wo[I.target.kind]);return b.length===0?[]:[b[0].hit]},[]),u=w.useCallback(h=>{const{over:b,active:y}=h,I=Cn(b==null?void 0:b.data.current);if(!b||I===null||e===null)return null;const _=F.getState().layouts[e];if(_===void 0)return null;const S=String(y.id),E=String(b.id);if(I.kind!=="pane"){const H=U_(I,E,_);return H===null||I.kind==="tab"&&E===S?null:I.kind==="tab"&&_.placement[S]===H?{paneId:H,region:"center"}:Hn("center",H,S,_.placement)?null:{paneId:H,region:"center"}}const R=W_(h);if(I.paneId===null||R===null)return null;const q=ei(_.tree,I.paneId,Qr(R,b.rect));return Hn(q,I.paneId,S,_.placement)?null:{paneId:I.paneId,region:q}},[e]),d=w.useCallback(h=>{ri(),n(String(h.active.id))},[]),g=w.useCallback(h=>{const b=u(h);o(y=>(y==null?void 0:y.paneId)===(b==null?void 0:b.paneId)&&(y==null?void 0:y.region)===(b==null?void 0:b.region)?y:b)},[u]),f=w.useCallback(()=>{ln(),n(null),o(null)},[]),m=w.useCallback(h=>{var ce;ln(),n(null),o(null);const{active:b,over:y}=h,I=Cn(y==null?void 0:y.data.current);if(!y||I===null||e===null)return;const _=String(b.id),S=F.getState().layouts[e];if(S===void 0)return;const E=M.getState(),R=E.tabs.filter(Y=>Y.workspaceCwd===e).map(Y=>Y.id),{moveTab:q,splitWithTab:H}=F.getState();if(I.kind==="tab"){const Y=String(y.id);if(Y===_)return;const ye=S.placement[Y];ye!==void 0&&ye!==S.placement[_]&&q(e,_,ye,R),E.reorder(_,Y);return}const ie=u(h);if(ie===null)return;if(ie.region!=="center"){H(e,_,ie.paneId,ie.region,R);return}q(e,_,ie.paneId,R);const L=((ce=F.getState().layouts[e])==null?void 0:ce.placement)??{},ne=R.filter(Y=>Y!==_&&L[Y]===ie.paneId).at(-1);ne!==void 0&&R.indexOf(_)<R.indexOf(ne)&&E.reorder(_,ne)},[e,u]);return{sensors:i,collisionDetection:a,onDragStart:d,onDragMove:g,onDragEnd:m,onDragCancel:f,draggedTab:r,preview:s}}const V_=w.lazy(()=>ue(()=>import("./ChatPanel-Bw7Hb7zc.js"),__vite__mapDeps([22,1,2,9,3,5,6,23,24,25,26,27,28,29,10,11,12,30])).then(e=>({default:e.ChatPanel}))),vo=w.lazy(()=>ue(()=>import("./FilePanel-nx2ZNCzw.js"),__vite__mapDeps([31,1,5,6,2,32,28,29,9,10,11,12,33])).then(e=>({default:e.FilePanel}))),K_=w.lazy(()=>ue(()=>import("./TerminalPanel-teco8hQm.js"),__vite__mapDeps([34,1,35,36,5,6,2,9,10,11,12,37])).then(e=>({default:e.TerminalPanel}))),G_=w.lazy(()=>ue(()=>import("./MoleculeViewerPanel-DCSVt-5q.js"),__vite__mapDeps([38,1,39,40,41,2,32,7,8,5,6,9,10,11,12,42])).then(e=>({default:e.MoleculeViewerPanel}))),Y_={chat:V_,file:vo,diff:vo,terminal:K_,molecule:G_},Tt="var(--pane-strip-height)";function ps(e){return e===void 0?new Map:Bh(Cr(e.tree,new Set(Object.values(e.placement))))}function ee(e){const t=(e*100).toFixed(4);return`${t.includes(".")?t.replace(/\.?0+$/,""):t}%`}function ii(e){if(e!==void 0)return{left:ee(e.x),top:`calc(${ee(e.y)} + ${Tt})`,width:ee(e.width),height:`calc(${ee(e.height)} - ${Tt})`}}function X_(e,t){const n=`${ee(e.y)} + ${Tt}`,s=`${ee(e.height)} - ${Tt}`,o=`calc((${s}) / 2)`;switch(t){case"left":return{left:ee(e.x),top:`calc(${n})`,width:ee(e.width/2),height:`calc(${s})`};case"right":return{left:ee(e.x+e.width/2),top:`calc(${n})`,width:ee(e.width/2),height:`calc(${s})`};case"top":return{left:ee(e.x),top:`calc(${n})`,width:ee(e.width),height:o};case"bottom":return{left:ee(e.x),top:`calc(${n} + (${s}) / 2)`,width:ee(e.width),height:o};case"center":return{left:ee(e.x),top:`calc(${n})`,width:ee(e.width),height:`calc(${s})`}}}function J_(e){const t=ps(e);return[...t].map(([n,s])=>({paneId:n,stripStyle:{left:ee(s.x),top:ee(s.y),width:ee(s.width),height:Tt},focused:t.size>1&&(e==null?void 0:e.focusedPaneId)===n}))}function Z_(e){if(e===void 0)return[];const t=Cr(e.tree,new Set(Object.values(e.placement)));return t!==e.tree?[]:Fh(t)}function Q_(e,t){return(t==null?void 0:t.placement[e])??null}function ey(e,t,n){const s=ps(n);return e.map(o=>{const r=o.workspaceCwd===t?n==null?void 0:n.placement[o.id]:void 0;return{tabId:o.id,style:ii(r===void 0?void 0:s.get(r)),visible:r!==void 0&&(n==null?void 0:n.activeByPane[r])===o.id}})}const ty="_divider_4eg4l_9",ny="_vertical_4eg4l_26",sy="_horizontal_4eg4l_41",An={divider:ty,vertical:ny,horizontal:sy};function oy({cwd:e,dividers:t,hostRef:n}){const s=F(i=>i.resizeDivider),o=w.useRef(0);function r(i,a){var b;const u=(b=n.current)==null?void 0:b.getBoundingClientRect();if(!u)return;i.preventDefault(),i.stopPropagation();const d=a.direction==="row",g=d?a.splitRect.width*u.width:a.splitRect.height*u.height;if(g<=0)return;const f=i.currentTarget;f.setPointerCapture(i.pointerId),o.current=d?i.clientX:i.clientY,document.body.style.cursor=d?"col-resize":"row-resize",document.body.style.userSelect="none";const m=y=>{const I=d?y.clientX:y.clientY,_=I-o.current;o.current=I,s(e,a.splitPath,a.boundaryIndex,_/g)},h=y=>{window.removeEventListener("pointermove",m),window.removeEventListener("pointerup",h),window.removeEventListener("pointercancel",h),document.body.style.cursor="",document.body.style.userSelect="",f.hasPointerCapture(y.pointerId)&&f.releasePointerCapture(y.pointerId)};window.addEventListener("pointermove",m),window.addEventListener("pointerup",h),window.addEventListener("pointercancel",h)}return t.map(i=>{const a=i.direction==="row";return c.jsx("div",{className:U(An.divider,a?An.vertical:An.horizontal),style:a?{left:`${i.rect.x*100}%`,top:`${i.rect.y*100}%`,height:`${i.rect.height*100}%`}:{left:`${i.rect.x*100}%`,top:`${i.rect.y*100}%`,width:`${i.rect.width*100}%`},role:"separator","aria-orientation":a?"vertical":"horizontal",onPointerDown:u=>r(u,i)},`${i.splitPath.join(".")}:${i.boundaryIndex}`)})}const ry=w.lazy(()=>ue(()=>import("./TextViewer-Dc4_Pm2d.js"),__vite__mapDeps([43,1,44,2,41,5,6,45,46,9,10,11,12,47])).then(e=>({default:e.TextViewer}))),iy=w.lazy(()=>ue(()=>import("./MarkdownFileViewer-C9TjyaOy.js"),__vite__mapDeps([48,1,44,2,41,5,6,45,23,24,25,26,27,46,9,10,11,12,49])).then(e=>({default:e.MarkdownFileViewer}))),ay=w.lazy(()=>ue(()=>import("./ImageViewer-5NK0vbNf.js"),__vite__mapDeps([50,1,41,2,5,6,9,10,11,12,51])).then(e=>({default:e.ImageViewer}))),cy=w.lazy(()=>ue(()=>import("./VideoViewer-DKa99m9b.js"),__vite__mapDeps([52,1,41,2,5,6,9,10,11,12,53])).then(e=>({default:e.VideoViewer}))),ly=w.lazy(()=>ue(()=>import("./BinaryFallbackViewer-Ct7gB8Zj.js"),__vite__mapDeps([54,1,46,9,5,6,2,10,11,12,55])).then(e=>({default:e.BinaryFallbackViewer}))),uy=w.lazy(()=>ue(()=>import("./HtmlViewer-CNhiAwz_.js"),__vite__mapDeps([56,1,2,44,41,5,6,45,26,46,15,16,9,10,11,12,57])).then(e=>({default:e.HtmlViewer}))),dy=w.lazy(()=>ue(()=>import("./PdfViewer-D3wY27_O.js"),__vite__mapDeps([58,1,41,2,12,9,5,6,10,11,59])).then(e=>({default:e.PdfViewer}))),Nt=[{kind:"text",component:ry,extensions:[],liveRefresh:!0},{kind:"markdown",component:iy,extensions:["md","markdown","mdx"],liveRefresh:!0},{kind:"html",component:uy,extensions:["html","htm","xhtml"],liveRefresh:!0},{kind:"image",component:ay,extensions:["png","jpg","jpeg","gif","webp","svg","bmp","ico","avif"],mimePrefixes:["image/"],liveRefresh:!0},{kind:"video",component:cy,extensions:["mp4","webm","mov","m4v","ogv"],mimePrefixes:["video/"],liveRefresh:!1},{kind:"pdf",component:dy,extensions:["pdf"],mimePrefixes:["application/pdf"],liveRefresh:!0,toggle:{id:"pdfviewer",fallback:"binary"}},{kind:"binary",component:ly,extensions:["zip","gz","tar","exe","wasm","woff","woff2","ttf","otf"],liveRefresh:!1}],RS=Object.freeze(Object.fromEntries(Nt.map(e=>[e.kind,e.component]))),fy=Object.freeze(Object.fromEntries(Nt.flatMap(e=>e.extensions.map(t=>[t,e.kind])))),py=Object.freeze(Nt.flatMap(e=>(e.mimePrefixes??[]).map(t=>[t,e.kind]))),jS=Object.freeze(new Set(Nt.filter(e=>e.liveRefresh).map(e=>e.kind)));function ai(e){const t=e.split("/").pop()??e,n=t.lastIndexOf(".");return n>0?t.slice(n+1).toLowerCase():""}const hy={pdb:!0,cif:!0,mmcif:!0,mol:!0,mol2:!0,xyz:!0,extxyz:!0,gro:!0,lammpstrj:!0,xsf:!0},gy={poscar:!0,contcar:!0};function ci(e){if(hy[ai(e)])return!0;const t=e.split("/").pop()??e;return!!gy[t.toLowerCase()]}function my(e,t={}){const n=fy[ai(e)];if(n)return n;const s=t.mimeHint??"";for(const[o,r]of py)if(s.startsWith(o))return r;return t.isBinary?"binary":"text"}const _y=new Map(Nt.flatMap(e=>e.toggle?[[e.kind,e.toggle]]:[]));function PS(e,t,n={}){const s=my(e,n),o=_y.get(s);return o&&!t(o.id)?o.fallback:s}function hs(e,t,n){ci(e)&&Fr("molviewer")?ui(e,t,n):li(e,t,n)}function li(e,t,n){const s=e.split("/").pop()||e;M.getState().open({id:Q.file(e),kind:"file",label:s,closable:!0,data:{path:e},workspaceCwd:t},n)}function ui(e,t,n){const s=e.split("/").pop()||e;M.getState().open({id:Q.molecule(e),kind:"molecule",label:s,closable:!0,data:{path:e},workspaceCwd:t},n)}const Vn="data-pane-drop";function yy(e){return{[Vn]:e}}function wy(e,t){if(e===null)return null;for(const n of e.querySelectorAll(`[${Vn}]`)){const s=n.getBoundingClientRect(),o={left:s.left,top:s.top,width:s.width,height:s.height},r=n.getAttribute(Vn);if(r!==null&&r!==""&&$_(o,t))return{paneId:r,bounds:o}}return null}function vy(e){const{tabs:t}=M.getState(),n=s=>t.some(o=>o.id===s)?s:null;return e.kind==="chat"?n(Q.chat(e.value)):n(Q.file(e.value))??n(Q.molecule(e.value))}function by(e,t,n,s,o){const r=F.getState().layouts[t];if(r===void 0)return;const i=M.getState().tabs.filter(g=>g.workspaceCwd===t).map(g=>g.id),a=vy(e);if(a!==null){if(Hn(s,n,a,r.placement))return;const{moveTab:g,splitWithTab:f}=F.getState();s==="center"?g(t,a,n,i):f(t,a,n,s,i);return}let u=n;if(s!=="center"&&(u=F.getState().splitEmpty(t,n,s)),u===null)return;if(e.kind==="path"){hs(e.value,t,u);return}const d=A.getState().sessions[e.value];d!==void 0&&xt(d,o,u)}function Sy(e,t){const[n,s]=w.useState(null),o=ot();w.useEffect(()=>{const d=()=>ri(),g=()=>ln();return document.addEventListener("dragstart",d),document.addEventListener("dragend",g),document.addEventListener("drop",g),()=>{document.removeEventListener("dragstart",d),document.removeEventListener("dragend",g),document.removeEventListener("drop",g),ln()}},[]);const r=w.useCallback(d=>{if(e===null)return null;const g=F.getState().layouts[e];if(g===void 0)return null;const f={x:d.clientX,y:d.clientY},m=wy(t.current,f);return m===null?null:{paneId:m.paneId,region:F_(g.tree,m.paneId,f,m.bounds)}},[e,t]),i=w.useCallback(d=>{if(yo(d.dataTransfer.types,_o(d.target))){s(null);return}if(ti(d.dataTransfer.types)===null)return;d.preventDefault(),d.dataTransfer.dropEffect="copy";const g=r(d);s(f=>(f==null?void 0:f.paneId)===(g==null?void 0:g.paneId)&&(f==null?void 0:f.region)===(g==null?void 0:g.region)?f:g)},[r]),a=w.useCallback(d=>{d.currentTarget.contains(d.relatedTarget)||s(null)},[]),u=w.useCallback(d=>{if(yo(d.dataTransfer.types,_o(d.target))){s(null);return}const g=O_(d.dataTransfer.types,m=>d.dataTransfer.getData(m));if(g===null)return;d.preventDefault(),s(null);const f=r(d);f===null||e===null||by(g,e,f.paneId,f.region,o)},[e,o,r]);return{preview:n,onDragOver:i,onDragLeave:a,onDrop:u}}function ky(e,t,n,s){if(e.kind!=="chat"||n)return null;if(s)return{status:"waiting",requiresAttention:!0,attentionReason:"question"};if(t===void 0)return null;const o=We(t);return o==="running"||o==="error"?{status:o}:null}const xy="_strip_1jel9_1",Iy="_tabs_1jel9_13",Ty="_paneStrip_1jel9_28",Ey="_focused_1jel9_36",Cy="_tab_1jel9_13",Ay="_tabActive_1jel9_61",Ry="_tabIcon_1jel9_65",jy="_tabLabel_1jel9_70",Py="_tabLabelMono_1jel9_76",qy="_tabDot_1jel9_81",My="_tabClose_1jel9_88",Ny="_tabNeedsInput_1jel9_114",Dy="_newTab_1jel9_122",$y="_stripActions_1jel9_130",Ly="_splitAction_1jel9_137",Oy="_itemIcon_1jel9_142",te={strip:xy,tabs:Iy,paneStrip:Ty,focused:Ey,tab:Cy,tabActive:Ay,tabIcon:Ry,tabLabel:jy,tabLabelMono:Py,tabDot:qy,tabClose:My,tabNeedsInput:Ny,newTab:Dy,stripActions:$y,splitAction:Ly,itemIcon:Oy},di={chat:Mo,file:fn,diff:qo,terminal:Po,molecule:dn},By={file:!0,diff:!0};function Fy({tab:e,active:t}){const n=M(_=>_.activate),s=$(_=>_.openTabMenu),o=di[e.kind],r=A(_=>{var S;return e.kind==="chat"?(S=_.sessions[e.data.sessionId])==null?void 0:S.status:void 0}),i=A(_=>{var S;return e.kind==="chat"?(S=_.sessions[e.data.sessionId])==null?void 0:S.agentId:void 0}),a=Xr(i??""),u=ky(e,r,t,a.length>0),d=(u==null?void 0:u.attentionReason)==="question",g=e.kind==="terminal"&&e.data.exited===!0,{attributes:f,listeners:m,setNodeRef:h,transform:b,transition:y,isDragging:I}=Ea({id:e.id,data:{type:"tab"}});return c.jsxs("div",{ref:h,className:U(te.tab,t&&te.tabActive,d&&te.tabNeedsInput),style:{transform:Ca.Transform.toString(b),transition:y,opacity:I?.5:g?.6:1},onClick:()=>n(e.id),onAuxClick:_=>{_.button===1&&e.closable&&cn(e.id)},onContextMenu:_=>{e.closable&&(_.preventDefault(),s(e.id,_.clientX,_.clientY))},title:g?`${e.label} (exited)`:e.label,...f,...m,children:[c.jsx("span",{className:te.tabIcon,children:c.jsx(oe,{icon:o,size:"xs",color:t&&e.kind==="chat"?"var(--pi-color-accentBright)":"currentColor","aria-hidden":!0})}),c.jsx("span",{className:U(te.tabLabel,By[e.kind]&&te.tabLabelMono),children:e.label}),u&&c.jsx(hn,{...u,className:te.tabDot,pulse:d,"aria-label":d?"Needs input":void 0}),e.closable&&c.jsx("span",{className:te.tabClose,onClick:_=>{_.stopPropagation(),cn(e.id)},children:c.jsx(oe,{icon:St,size:"xs","aria-hidden":!0})})]})}function zy({workspaceCwd:e,paneId:t}){const n=Ue(o=>o.isViewerEnabled("molviewer")),s=o=>()=>{e!==null&&o(e,t??void 0)};return c.jsxs(Ct,{children:[c.jsx(At,{asChild:!0,children:c.jsx(je,{className:te.newTab,size:"xs",hoverBase:"var(--pi-color-background)",title:"New tab",disabled:!e,children:c.jsx(oe,{icon:Zt,size:"sm","aria-hidden":!0})})}),c.jsxs(Pt,{minWidth:160,sideOffset:4,children:[c.jsxs(G,{onSelect:s(qt),children:[c.jsx(oe,{icon:Mo,size:"xs",className:te.itemIcon,"aria-hidden":!0}),"New chat"]}),c.jsxs(G,{onSelect:s(Nr),children:[c.jsx(oe,{icon:Po,size:"xs",className:te.itemIcon,"aria-hidden":!0}),"New terminal"]}),n&&c.jsxs(G,{onSelect:s(Zh),children:[c.jsx(oe,{icon:dn,size:"xs",className:te.itemIcon,"aria-hidden":!0}),"New molecule view"]})]})]})}function Wy({cwd:e,paneId:t}){const n=F(a=>{var u;return e===null||(u=a.layouts[e])==null?void 0:u.tree}),s=a=>()=>{if(e===null||t===null)return;const u=F.getState().splitEmpty(e,t,a);u!==null&&qt(e,u)},o=a=>n===void 0||t===null?"Open a workspace to split":kt(n,t,a)?null:"Maximum split depth reached",r=o("right"),i=o("bottom");return c.jsxs("div",{className:te.stripActions,children:[c.jsx(je,{className:te.splitAction,size:"xs",hoverBase:"var(--pi-color-background)",title:r??"Split right",disabled:r!==null,onClick:s("right"),children:c.jsx(oe,{icon:Gi,size:"sm","aria-hidden":!0})}),c.jsx(je,{className:te.splitAction,size:"xs",hoverBase:"var(--pi-color-background)",title:i??"Split down",disabled:i!==null,onClick:s("bottom"),children:c.jsx(oe,{icon:Yi,size:"sm","aria-hidden":!0})})]})}function bo({cwd:e,paneId:t,style:n,focused:s=!1}){const o=M(g=>g.tabs),r=F(g=>g.focusPane),i=F(g=>{var f;return e===null||(f=g.layouts[e])==null?void 0:f.placement}),a=F(g=>{var f;return e===null||t===null||(f=g.layouts[e])==null?void 0:f.activeByPane[t]}),u=t===null?[]:o.filter(g=>(i==null?void 0:i[g.id])===t),{setNodeRef:d}=No({id:`strip:${t??"none"}`,disabled:t===null,data:{type:"strip",paneId:t}});return c.jsxs("div",{ref:d,className:U(te.strip,te.paneStrip,s&&te.focused),style:n,onPointerDown:()=>{e!==null&&t!==null&&r(e,t)},children:[c.jsx("div",{className:te.tabs,children:c.jsx(Ia,{items:u.map(g=>g.id),strategy:Ta,children:u.map(g=>c.jsx(Fy,{tab:g,active:g.id===a},g.id))})}),c.jsx(zy,{workspaceCwd:e,paneId:t}),c.jsx(Wy,{cwd:e,paneId:t})]})}const Uy="_preview_1txmv_1",Hy="_chip_1txmv_9",Vy="_chipLabel_1txmv_23",Kn={preview:Uy,chip:Hy,chipLabel:Vy};function Ky({rect:e,region:t}){return c.jsx("div",{className:Kn.preview,style:X_(e,t)})}function Gy({tab:e}){const t=di[e.kind];return c.jsxs("div",{className:Kn.chip,children:[c.jsx(t,{size:13}),c.jsx("span",{className:Kn.chipLabel,children:e.label})]})}function Yy(){const e=$(a=>a.tabMenu),t=$(a=>a.closeTabMenu),n=w.useRef(null),[s,o]=w.useState(!1);if(w.useEffect(()=>{o(e!==null)},[e]),!e)return null;function r(a){o(a),a||t()}function i(){e&&cn(e.tabId),t()}return c.jsxs(Ct,{open:s,onOpenChange:r,modal:!1,children:[c.jsx(At,{asChild:!0,children:c.jsx(gn,{ref:n,x:e.x,y:e.y})}),c.jsx(Pt,{minWidth:120,children:c.jsxs(G,{onSelect:i,children:[c.jsx(St,{size:13}),"Close"]})})]})}function Xy(e,t,n){return n===0?-1:Math.min(Math.max(e+(t==="ArrowDown"?1:-1),0),n-1)}const Jy="An extension declined the fork.",Zy="Couldn't fork. Try again.";function Qy(e,t){if(os(),t.cancelled){Ee.getState().error(Jy),_e.getState().close();return}_e.getState().close();const n=A.getState().findByAgentId(e);if(!n)return;(Un.getState().drafts[n.id]??"")===""&&Un.getState().setDraft(n.id,t.text)}function ew(e){os();const t=e instanceof Error&&e.message?e.message:Zy;Ee.getState().error(t),_e.getState().setPending(!1)}const tw="_confirmContent_10pv6_9",nw="_preview_10pv6_13",sw="_previewPending_10pv6_28",ow="_copy_10pv6_32",rw="_backButton_10pv6_39",iw="_pickerList_10pv6_45",aw="_pickerRow_10pv6_54",cw="_pickerOrdinal_10pv6_73",lw="_pickerText_10pv6_80",uw="_pickerEmpty_10pv6_88",Ie={confirmContent:tw,preview:nw,previewPending:sw,copy:ow,backButton:rw,pickerList:iw,pickerRow:aw,pickerOrdinal:cw,pickerText:lw,pickerEmpty:uw},dw="Later messages leave the agent's context. The original prompt is placed in the composer for editing.";function fw(e){var o;if(e.key!=="ArrowDown"&&e.key!=="ArrowUp")return;e.preventDefault();const t=Array.from(e.currentTarget.querySelectorAll("button")),n=t.indexOf(document.activeElement),s=Xy(n,e.key,t.length);s>=0&&((o=t[s])==null||o.focus())}function pw(){const e=_e(S=>S.dialog),t=_e(S=>S.selectFromPicker),n=_e(S=>S.backToPicker),s=_e(S=>S.setPending),o=_e(S=>S.close),r=is(),i=w.useRef(null),a=w.useRef(null),u=e.status!=="closed",d=e.status==="confirm"&&e.pending,g=w.useRef(null),f=w.useRef(null);e.status!=="closed"&&(g.current=e.triggerElement,f.current=e.agentId),w.useEffect(()=>{e.status==="picker"&&i.current&&(i.current.scrollTop=i.current.scrollHeight)},[e]);function m(S){var E,R;S.preventDefault(),(R=(E=i.current)==null?void 0:E.querySelector("button"))==null||R.focus()}function h(S){var E;S.preventDefault(),(E=a.current)==null||E.focus()}function b(S){const E=g.current;if(E!=null&&E.isConnected){S.preventDefault(),E.focus();return}const R=f.current,q=R?A.getState().findByAgentId(R):void 0,H=q?document.querySelector(`[data-session-id="${q.id}"]`):null;H&&(S.preventDefault(),H.focus())}async function y(){const S=_e.getState().dialog;if(!(S.status!=="confirm"||S.pending||!r)){s(!0),mn("Forking…");try{const E=await r.agent(S.agentId).fork(S.target.entryId);Qy(S.agentId,E)}catch(E){ew(E)}}}if(!u)return null;if(e.status==="picker")return c.jsx(Bn,{open:!0,onOpenChange:S=>!S&&o(),title:"Fork from…",width:460,onCloseAutoFocus:b,onOpenAutoFocus:m,children:e.messages.length===0?c.jsxs($e,{className:Ie.pickerEmpty,children:[c.jsx(oe,{icon:jo,size:"lg"}),c.jsx("div",{children:"Nothing to fork yet"})]}):c.jsx("div",{className:Ie.pickerList,ref:i,onKeyDown:fw,children:e.messages.map((S,E)=>c.jsxs("button",{type:"button",className:Ie.pickerRow,onClick:()=>t(S),children:[c.jsxs("span",{className:Ie.pickerOrdinal,children:["#",E+1]}),c.jsx("span",{className:Ie.pickerText,children:S.text})]},S.entryId))})});const{target:I,backTo:_}=e;return c.jsx(Bn,{open:!0,onOpenChange:S=>!S&&!d&&o(),title:"Fork conversation",width:440,onInteractOutside:S=>{d&&S.preventDefault()},onEscapeKeyDown:S=>{d&&S.preventDefault()},onCloseAutoFocus:b,onOpenAutoFocus:h,footer:c.jsxs(c.Fragment,{children:[_!==null&&c.jsx(se,{className:Ie.backButton,size:"sm",variant:"ghost",disabled:d,onClick:()=>n(),children:"‹ Back"}),c.jsx(pr,{asChild:!0,children:c.jsx(se,{ref:a,size:"sm",variant:"secondary",disabled:d,children:"Cancel"})}),c.jsx(se,{size:"sm",loading:d,onClick:()=>void y(),children:d?"Forking…":"Fork from here"})]}),children:c.jsxs("div",{className:Ie.confirmContent,children:[c.jsx("div",{className:U(Ie.preview,d&&Ie.previewPending),children:I.text}),c.jsx("div",{className:Ie.copy,children:dw})]})})}const hw="_area_9sawz_1",gw="_panel_9sawz_11",mw="_dropZone_9sawz_27",_w="_active_9sawz_31",yw="_empty_9sawz_35",ww="_emptyStack_9sawz_47",vw="_emptyTitle_9sawz_61",bw="_emptyHint_9sawz_65",Ne={area:hw,panel:gw,dropZone:mw,active:_w,empty:yw,emptyStack:ww,emptyTitle:vw,emptyHint:bw};function Sw({paneId:e,style:t}){const{setNodeRef:n}=No({id:`pane:${e}`,data:{type:"pane",paneId:e}});return c.jsx("div",{ref:n,className:Ne.dropZone,style:t,...yy(e)})}function kw(){const e=M(y=>y.tabs),t=M(y=>y.activeWorkspaceCwd),n=F(y=>t===null?void 0:y.layouts[t]),s=N(y=>y.status),o=$(y=>y.openCwdPicker),r=F(y=>y.focusPane),i=e.some(y=>y.workspaceCwd===t),a=w.useRef(null),u=w.useMemo(()=>ey(e,t,n),[e,t,n]),d=w.useMemo(()=>J_(n),[n]),g=w.useMemo(()=>Z_(n),[n]),f=w.useMemo(()=>ps(n),[n]),m=H_(t),h=Sy(t,a),b=m.preview??h.preview;return c.jsxs(Aa,{sensors:m.sensors,collisionDetection:m.collisionDetection,onDragStart:m.onDragStart,onDragMove:m.onDragMove,onDragEnd:m.onDragEnd,onDragCancel:m.onDragCancel,children:[c.jsxs("div",{className:Ne.area,ref:a,onDragOver:h.onDragOver,onDragLeave:h.onDragLeave,onDrop:h.onDrop,children:[d.length===0?c.jsx(bo,{cwd:t,paneId:null}):d.map(y=>c.jsx(bo,{cwd:t,paneId:y.paneId,style:y.stripStyle,focused:y.focused},y.paneId)),c.jsx(Yy,{}),c.jsx(pw,{}),t!==null&&g.length>0&&c.jsx(oy,{cwd:t,dividers:g,hostRef:a}),d.map(y=>c.jsx(Sw,{paneId:y.paneId,style:ii(f.get(y.paneId))},`drop-${y.paneId}`)),b!==null&&f.has(b.paneId)&&c.jsx(Ky,{rect:f.get(b.paneId),region:b.region}),t===null&&c.jsxs("div",{className:Ne.emptyStack,children:[c.jsx("div",{className:Ne.emptyTitle,children:"No workspace open"}),c.jsx("div",{className:Ne.emptyHint,children:"Open a project folder to start a chat."}),c.jsx(se,{size:"sm",variant:"secondary",leftIcon:c.jsx(Xi,{size:14}),disabled:s!=="open",title:s!=="open"?"Connect to open a workspace":"Open a workspace folder",onClick:()=>o(),children:"Open Workspace"})]}),t!==null&&!i&&c.jsx("div",{className:Ne.empty,children:"No open tabs in this workspace"}),e.map((y,I)=>{const _=Y_[y.kind],S=u[I],E=n==null?void 0:n.placement[y.id];return c.jsx("div",{className:U(Ne.panel,S.visible&&Ne.active),style:S.style,onPointerDown:()=>{t!==null&&E!==void 0&&r(t,E)},children:c.jsx(w.Suspense,{fallback:c.jsx(dr,{size:"md"}),children:c.jsx(_,{tab:y,owningPaneId:Q_(y.id,n)})})},y.id)})]}),c.jsx(Ra,{dropAnimation:null,children:m.draggedTab&&c.jsx(Gy,{tab:m.draggedTab})})]})}const So=e=>`${e} file${e>1?"s":""}`;function xw(e,t,n){let s=0,o=0;for(const[r,i]of e.entries()){if(i.size===void 0)return null;s+=i.size,r<t&&(o+=i.size)}return s<=0?null:Math.min(100,Math.floor((o+n)/s*100))}async function Iw(e,t,n){if(!t.length||!e)return;const s=t.filter(i=>n.existing.has(i.name));if(s.length>0){const i=s.map(u=>u.name).join(", ");if(!await n.confirm(`Overwrite ${s.length>1?"these files":"this file"}? ${i}`))return}const o=`Uploading ${So(t.length)}…`;n.setStatus({text:o,error:!1});let r=-1;try{for(const[i,a]of t.entries())await n.upload(e,a,{onProgress:u=>{const d=xw(t,i,u);d===null||d===r||(r=d,n.setStatus({text:`${o} ${d}%`,error:!1}))}});n.setStatus({text:`Uploaded ${So(t.length)}`,error:!1})}catch(i){n.setStatus({text:`Upload failed: ${i instanceof Error?i.message:"unknown"}`,error:!0})}}const le=ae()(e=>({rootPath:"",expanded:new Set,expandedByRoot:new Map,draft:null,renaming:null,selected:null,setRoot:t=>e(n=>{const s=new Map(n.expandedByRoot);n.rootPath&&s.set(n.rootPath,n.expanded);const o=s.get(t);return{rootPath:t,expanded:o?new Set(o):new Set([t]),expandedByRoot:s,draft:null,selected:null,renaming:null}}),toggle:t=>e(n=>{const s=new Set(n.expanded);s.has(t)?s.delete(t):s.add(t);const o=new Map(n.expandedByRoot);return o.set(n.rootPath,s),{expanded:s,expandedByRoot:o}}),startDraft:(t,n)=>e(s=>{const o=new Set(s.expanded);o.add(t);const r=new Map(s.expandedByRoot);return s.rootPath&&r.set(s.rootPath,o),{draft:{parentPath:t,kind:n},expanded:o,expandedByRoot:r,renaming:null}}),cancelDraft:()=>e({draft:null}),startRename:t=>e({renaming:t,draft:null}),cancelRename:()=>e({renaming:null}),setSelected:t=>e({selected:t}),repathAfterMove:(t,n,s)=>e(o=>{const r=d=>d===t?n:d.startsWith(`${t}/`)?n+d.slice(t.length):d,i=new Set([...o.expanded].map(r));i.add(s);const a=new Map(o.expandedByRoot);o.rootPath&&a.set(o.rootPath,i);const u=o.selected?{path:r(o.selected.path),isDirectory:o.selected.isDirectory}:null;return{expanded:i,expandedByRoot:a,selected:u,renaming:null}})})),He={fileRead:e=>["file","read",e],fileDownload:e=>["file","download",e],fileText:(e,t)=>["file","text",e,t],fileDiff:(e,t,n)=>["file","diff",e,t,n],fileDiffByPath:e=>["file","diff",e],htmlAssetBundle:(e,t)=>["file","htmlAssets",e,t],htmlAssetBundleByPath:e=>["file","htmlAssets",e],explorer:e=>["explorer",e],agentList:()=>["agents","list"],providerModels:(e,t)=>["providers","models",e,t??null],providerModelsAll:()=>["providers","models"],agentTimeline:e=>["agents","timeline",e],thinkingLevels:(e,t)=>["agents","thinkingLevels",e,t??""],agentCommands:e=>["agents","commands",e],providerAuthList:()=>["providers","auth","list"],skillsList:()=>["skills","list"]};function Tw(e){const t=e.kind==="directory"||e.type==="directory"?"directory":"file";return{name:e.name??"",kind:t,size:e.size,mtimeMs:e.mtimeMs}}function Ew(e){return e.slice().sort((t,n)=>t.kind!==n.kind?t.kind==="directory"?-1:1:t.name.localeCompare(n.name))}async function fi(e,t){const s=(await e.connection.request("file_explorer_request",{path:t})).result;if(!s||s.ok===!1)throw new Error(s&&"error"in s?s.error:"explorer request failed");const o="entries"in s?s.entries??[]:[];return{path:s.resolvedPath??t,entries:Ew(o.map(Tw))}}function Cw(e,t=!0){const n=N(s=>s.client);return Ni({queryKey:He.explorer(e),queryFn:()=>{if(!n)throw new Error("not connected");return fi(n,e)},enabled:!!n&&!!e&&t})}function Aw(e){const t=N(o=>o.client),n=w.useMemo(()=>Array.from(e),[e]),s=Di({queries:n.map(o=>({queryKey:He.explorer(o),queryFn:()=>{if(!t)throw new Error("not connected");return fi(t,o)},enabled:!!t&&!!o}))});return w.useMemo(()=>{const o=new Map;return n.forEach((r,i)=>{const a=s[i];o.set(r,{listing:a==null?void 0:a.data,isLoading:!!(a!=null&&a.isLoading),isError:!!(a!=null&&a.isError),error:a==null?void 0:a.error})}),o},[n,s])}function Rw(e){return typeof e=="object"&&e!==null&&"type"in e&&e.type==="file_changed"&&"path"in e&&typeof e.path=="string"}function jw(e,t){const n=new Set,s=e.connection.onSessionMessage(o=>{const r=o;Rw(r)&&n.has(r.path)&&t(r.path)});return{sync(o){for(const r of n)o.has(r)||(n.delete(r),e.connection.request("file_watch_unsubscribe",{path:r}).catch(()=>{}));for(const r of o)n.has(r)||(n.add(r),e.connection.request("file_watch_subscribe",{path:r}).then(i=>{const a=i;(a==null?void 0:a.ok)===!1&&console.warn(`useExplorerWatch: ${a.error??"subscribe failed"} for "${r}"`)}).catch(()=>{}))},dispose(){s();for(const o of n)e.connection.request("file_watch_unsubscribe",{path:o}).catch(()=>{});n.clear()}}}function Pw(e){const t=N(i=>i.client),n=st(),s=w.useRef(null),o=w.useRef(null),r=Array.from(e).toSorted().join("\0");w.useEffect(()=>{var i,a;t&&(o.current!==t&&((i=s.current)==null||i.dispose(),s.current=jw(t,u=>{n.invalidateQueries({queryKey:He.explorer(u)})}),o.current=t),(a=s.current)==null||a.sync(new Set(r?r.split("\0"):[])))},[t,r,n]),w.useEffect(()=>()=>{var i;(i=s.current)==null||i.dispose(),s.current=null,o.current=null},[])}async function qw(e,t,n,s){await V().files.upload(t,n,s),await e.invalidateQueries({queryKey:["explorer"]})}function pi(){const e=st(),t=w.useCallback((s,o,r)=>qw(e,s,o,r),[e]),n=w.useCallback(s=>V().files.saveToDisk(s),[]);return{upload:t,saveToDisk:n}}const ko={available:!1,branch:null,upstream:null,ahead:0,behind:0,detached:!1,conflictCount:0},me=ae()(e=>({subscribedCwd:null,changes:[],ignored:[],...ko,setSubscribedCwd:t=>e({subscribedCwd:t}),applyProjection:t=>{if(!t||!t.available){e({changes:[],ignored:[],...ko});return}const n=[];for(const s of t.staged)n.push({path:s.path,status:s.indexStatus==="A"?"added":s.indexStatus==="D"?"deleted":"modified",staged:!0});for(const s of t.unstaged)n.push({path:s.path,status:s.worktreeStatus==="D"?"deleted":"modified",staged:!1});for(const s of t.untracked)n.push({path:s,status:"added",staged:!1});e({changes:n,ignored:t.ignored??[],available:!0,branch:t.branch,upstream:t.upstream,ahead:t.ahead,behind:t.behind,detached:t.detached,conflictCount:t.conflicted.length})}}));function qS(e,t){return e?e.startsWith("/")||e.startsWith("~")?e:t?`${t.replace(/\/+$/,"")}/${e}`:null:null}function Se(e){const t=e.lastIndexOf("/");return t>0?e.slice(0,t):"/"}function Mw(e,t){return!t||!e.startsWith(t)?e:e.slice(t.length).replace(/^\/+/,"")}function MS(e){if(!e.startsWith("/"))return e;const t=e.split("/"),n=[];for(const s of t)s===""||s==="."||(s===".."?n.length>0&&n.pop():n.push(s));return"/"+n.join("/")}function xo(e,t,n){if(t.kind!=="file"&&t.kind!=="directory")return null;const s=t.kind==="directory"?t.path:Se(t.path);if(s===Se(e)||s===e||s.startsWith(`${e}/`)||s!==n&&!s.startsWith(`${n}/`))return null;const o=e.split("/").pop();return{destinationDir:s,destination:`${s}/${o}`}}function Io(e,t){if(e.kind!=="file"&&e.kind!=="directory")return null;const n=e.kind==="directory"?e.path:Se(e.path);return n!==t&&!n.startsWith(`${t}/`)?null:n}const Nw={empty_path:"Nothing to move.",invalid_name:"Invalid name for the destination.",exists:"An item with that name already exists in the destination folder.",not_found:"That item or destination folder no longer exists.",not_a_directory:"The destination is not a folder.",same_path:"That item is already in this folder.",into_descendant:"A folder cannot be moved into itself.",cross_device:"Cannot move across filesystems."};async function Dw(e,t,n){const s=await e.connection.request("file_move_request",{path:t,destination:n});if(!s.ok){const o=s.error??"";throw new Error(Nw[o]??o??"Failed to move")}return s.destination??n}function To(e,t){return t===0?e:`${e} — closed ${t} ${t===1?"diff tab":"diff tabs"}`}function $w(e){return`${e.kind}:${e.path}`}function hi(e,t){return e.endsWith("/")?`${e}${t}`:`${e}/${t}`}function gi(e,t,n,s,o,r,i){var u;(r==null?void 0:r.parentPath)===t&&e.push({kind:"draft",path:`${t}::draft`,depth:n,draftKind:r.kind,parentPath:t});const a=o.get(t);if(!a||a.isLoading){e.push({kind:"loading",path:t,depth:n});return}if(a.isError){const d=a.error instanceof Error?a.error.message:"failed to load";e.push({kind:"error",path:t,depth:n,message:d});return}for(const d of((u=a.listing)==null?void 0:u.entries)??[])Lw(e,t,d,n,s,o,r,i)}function Lw(e,t,n,s,o,r,i,a){const u=hi(t,n.name),d=n.kind==="directory",g=d&&o.has(u);u===a?e.push({kind:"rename",path:u,depth:s,name:n.name,isDirectory:d}):d?e.push({kind:"directory",path:u,name:n.name,depth:s,expanded:g}):e.push({kind:"file",path:u,name:n.name,depth:s}),g&&gi(e,u,s+1,o,r,i,a)}function Ow(e,t,n,s,o){if(!e)return[];const r=t.has(e),i=[{kind:"directory",path:e,name:e.split("/").pop()||e,depth:0,expanded:r}];return r&&gi(i,e,1,t,n,s,o),i}const Bw=()=>{};function Fw(e,t){return e===void 0?t:e==="deleted"||t==="deleted"?"deleted":e==="added"||t==="added"?"added":"modified"}function zw(e){return e==="added"?"added":"modified"}function Ww(e,t){if(!e||t.length===0)return Bw;const n=e.replace(/\/+$/,""),s=new Map,o=new Map,r=[];for(const i of t){const a=i.path.endsWith("/"),u=a?i.path.slice(0,-1):i.path;if(!u)continue;const d=`${n}/${u}`;s.set(d,Fw(s.get(d),i.status)),a&&r.push(d);const g=zw(i.status);let f=Se(d);for(;f.length>n.length&&f.startsWith(n);){const m=o.get(f);o.set(f,m===void 0||m===g?g:"modified");const h=Se(f);if(h===f)break;f=h}}return i=>{const a=s.get(i)??o.get(i);if(a!==void 0)return a;for(const u of r)if(i.startsWith(`${u}/`))return"added"}}const Uw=()=>!1;function Hw(e,t){if(!e||t.length===0)return Uw;const n=e.replace(/\/+$/,""),s=new Set,o=[];for(const r of t){const i=r.endsWith("/"),a=i?r.slice(0,-1):r;if(!a)continue;const u=`${n}/${a}`;s.add(u),i&&o.push(`${u}/`)}return r=>{if(s.has(r))return!0;for(const i of o)if(r.startsWith(i))return!0;return!1}}const Vw="_container_1wywk_1",Kw="_header_1wywk_7",Gw="_uploadButton_1wywk_14",Yw="_hiddenInput_1wywk_33",Xw="_status_1wywk_36",Jw="_statusError_1wywk_37",Zw="_rowAction_1wywk_50",Qw="_item_1wywk_53",ev="_list_1wywk_60",tv="_active_1wywk_83",nv="_selected_1wywk_88",sv="_dropTarget_1wywk_92",ov="_rootItem_1wywk_99",rv="_dirName_1wywk_98",iv="_chevronSlot_1wywk_104",av="_chevron_1wywk_104",cv="_chevronOpen_1wywk_115",lv="_icon_1wywk_118",uv="_name_1wywk_125",dv="_gitAdded_1wywk_140",fv="_gitModified_1wywk_145",pv="_gitDeleted_1wywk_150",hv="_hiddenEntry_1wywk_162",gv="_statusRow_1wywk_171",mv="_statusRowError_1wywk_182",_v="_draftInput_1wywk_185",W={container:Vw,header:Kw,uploadButton:Gw,hiddenInput:Yw,status:Xw,statusError:Jw,rowAction:Zw,item:Qw,list:ev,active:tv,selected:nv,dropTarget:sv,rootItem:ov,dirName:rv,chevronSlot:iv,chevron:av,chevronOpen:cv,icon:lv,name:uv,gitAdded:dv,gitModified:fv,gitDeleted:pv,hiddenEntry:hv,statusRow:gv,statusRowError:mv,draftInput:_v};function yv({draftKind:e,indentStyle:t,onSubmit:n,onCancel:s}){const[o,r]=w.useState("");return c.jsxs("div",{className:W.item,style:t,onClick:i=>i.stopPropagation(),children:[c.jsx("span",{className:W.chevronSlot}),c.jsx("span",{className:W.icon,children:e==="directory"?c.jsx(Ve,{size:16}):c.jsx(fn,{size:16})}),c.jsx("input",{className:W.draftInput,autoFocus:!0,spellCheck:!1,placeholder:e==="directory"?"New folder":"New file",value:o,onChange:i=>r(i.target.value),onKeyDown:i=>{if(i.key==="Enter"){i.preventDefault();const a=o.trim();a?n(a):s()}else i.key==="Escape"&&(i.preventDefault(),s())},onBlur:s})]})}function wv({name:e,isDirectory:t,indentStyle:n,onSubmit:s,onCancel:o}){const[r,i]=w.useState(e),a=w.useRef(null);return w.useEffect(()=>{const u=a.current;if(!u)return;u.focus();const d=e.lastIndexOf("."),g=t||d<=0?e.length:d;u.setSelectionRange(0,g)},[e,t]),c.jsxs("div",{className:W.item,style:n,onClick:u=>u.stopPropagation(),children:[c.jsx("span",{className:W.chevronSlot}),c.jsx("span",{className:W.icon,children:t?c.jsx(Ve,{size:16}):c.jsx(fn,{size:16})}),c.jsx("input",{ref:a,className:W.draftInput,spellCheck:!1,value:r,onChange:u=>i(u.target.value),onKeyDown:u=>{if(u.key==="Enter"){u.preventDefault();const d=r.trim();!d||d===e?o():s(d)}else u.key==="Escape"&&(u.preventDefault(),o())},onBlur:o})]})}const vv=14,bv={added:W.gitAdded,modified:W.gitModified,deleted:W.gitDeleted};function Sv({row:e,active:t,selected:n,dropTarget:s,gitStatus:o,hidden:r,isRoot:i,onToggle:a,onOpenFile:u,onContextMenu:d,onSubmitDraft:g,onCancelDraft:f,onSubmitRename:m,onCancelRename:h,onDragStartRow:b,onDragEndRow:y}){const I={paddingLeft:8+e.depth*vv};if(e.kind==="loading")return c.jsx("div",{className:W.statusRow,style:I,children:"Loading…"});if(e.kind==="error")return c.jsx("div",{className:U(W.statusRow,W.statusRowError),style:I,children:e.message??"failed to load"});if(e.kind==="draft")return c.jsx(yv,{draftKind:e.draftKind,indentStyle:I,onSubmit:S=>g(e.parentPath,S),onCancel:f});if(e.kind==="rename")return c.jsx(wv,{name:e.name,isDirectory:e.isDirectory,indentStyle:I,onSubmit:S=>m(e.path,S),onCancel:h});const _=e.kind==="directory";return c.jsxs("div",{className:U(W.item,i&&W.rootItem,t&&W.active,n&&W.selected,s&&W.dropTarget,o&&bv[o],r&&W.hiddenEntry),style:I,title:e.path,draggable:!i,onDragStart:S=>b(e.path,_,S),onDragEnd:y,onClick:()=>_?a(e.path):u(e.path),onContextMenu:S=>{S.preventDefault(),S.stopPropagation(),d(e.path,_,S.clientX,S.clientY)},children:[c.jsx("span",{className:W.chevronSlot,children:_&&c.jsx(Jn,{size:14,className:U(W.chevron,e.expanded&&W.chevronOpen)})}),c.jsx("span",{className:W.icon,children:_?c.jsx(Ve,{size:16}):c.jsx(fn,{size:16})}),c.jsx("span",{className:_?W.dirName:W.name,children:e.name}),c.jsx(je,{className:W.rowAction,title:"Actions",onClick:S=>{S.stopPropagation();const E=S.currentTarget.getBoundingClientRect();d(e.path,_,E.left,E.bottom)},children:c.jsx(Yn,{size:14})})]})}const kv={empty_path:"Nothing to delete.",not_found:"That item no longer exists."};async function xv(e,t){const n=await e.connection.request("file_delete_request",{path:t});if(!n.ok){const s=n.error??"";throw new Error(kv[s]??s??"Failed to delete")}}function Iv(){const e=$(L=>L.fileMenu),t=$(L=>L.closeFileMenu),n=N(L=>L.client),s=le(L=>L.startDraft),o=le(L=>L.startRename),r=le(L=>L.rootPath),i=M(L=>L.activeWorkspaceCwd),a=Ue(L=>L.isViewerEnabled("molviewer")),{saveToDisk:u}=pi(),d=st(),g=w.useRef(null),[f,m]=w.useState(!1);if(w.useEffect(()=>{m(e!==null)},[e]),!e)return null;const h=e.path.split("/").pop()||e.path;function b(L){m(L),L||t()}function y(){e&&(t(),hs(e.path,i||"~"))}function I(){e&&(t(),ui(e.path,i||"~"))}function _(){e&&(t(),li(e.path,i||"~"))}async function S(){if(e){t();try{await V().clipboard.writeText(e.path)}catch{await V().dialogs.alert("Failed to copy to clipboard.")}}}async function E(){if(e){t();try{await V().clipboard.writeText(Mw(e.path,r)||"/")}catch{await V().dialogs.alert("Failed to copy to clipboard.")}}}async function R(){if(e){t();try{await u(e.path)}catch(L){await V().dialogs.alert(`Failed to download: ${L instanceof Error?L.message:String(L)}`)}}}async function q(){if(!e)return;const L=e.isDirectory?"folder (and everything inside it)":"file";if(!await V().dialogs.confirm(`Permanently delete this ${L}? "${h}" — this cannot be undone.`))return t();if(t(),!n){await V().dialogs.alert("Not connected — cannot delete remotely.");return}try{await xv(n,e.path),await d.invalidateQueries({queryKey:["explorer"]}),M.getState().closeByPathPrefix(e.path)}catch(ce){await V().dialogs.alert(`Failed to delete: ${ce instanceof Error?ce.message:String(ce)}`)}}function H(L){if(!e)return;const ne=e.isDirectory?e.path:Se(e.path);t(),s(ne,L)}function ie(){e&&(t(),o(e.path))}return c.jsxs(Ct,{open:f,onOpenChange:b,modal:!1,children:[c.jsx(At,{asChild:!0,children:c.jsx(gn,{ref:g,x:e.x,y:e.y})}),c.jsx(Pt,{minWidth:140,children:e.background?c.jsxs(c.Fragment,{children:[c.jsxs(G,{onSelect:()=>H("file"),children:[c.jsx(qn,{size:13}),"New File"]}),c.jsxs(G,{onSelect:()=>H("directory"),children:[c.jsx(Qt,{size:13}),"New Folder"]}),c.jsx(ze,{}),c.jsxs(G,{onSelect:S,children:[c.jsx(Lt,{size:13}),"Copy Current Directory Path"]}),c.jsxs(G,{onSelect:E,children:[c.jsx(Lt,{size:13}),"Copy Current Directory Relative Path"]})]}):c.jsxs(c.Fragment,{children:[!e.isDirectory&&c.jsxs(c.Fragment,{children:[c.jsxs(G,{onSelect:y,children:[c.jsx(Ji,{size:13}),"Open"]}),a&&c.jsxs(G,{onSelect:I,children:[c.jsx(dn,{size:13}),"Open in MolViewer"]}),a&&ci(e.path)&&c.jsxs(G,{onSelect:_,children:[c.jsx(Zi,{size:13}),"Open as Text"]}),c.jsx(ze,{})]}),e.isDirectory&&c.jsxs(c.Fragment,{children:[c.jsxs(G,{onSelect:()=>H("file"),children:[c.jsx(qn,{size:13}),"New File"]}),c.jsxs(G,{onSelect:()=>H("directory"),children:[c.jsx(Qt,{size:13}),"New Folder"]}),c.jsx(ze,{})]}),c.jsxs(G,{onSelect:S,children:[c.jsx(Lt,{size:13}),"Copy Absolute Path"]}),c.jsxs(G,{onSelect:E,children:[c.jsx(Lt,{size:13}),"Copy Relative Path"]}),c.jsx(ze,{}),!e.isDirectory&&c.jsxs(c.Fragment,{children:[c.jsxs(G,{onSelect:R,children:[c.jsx(Qi,{size:13}),"Download"]}),c.jsx(ze,{})]}),c.jsxs(G,{onSelect:ie,children:[c.jsx(Ro,{size:13}),"Rename"]}),c.jsxs(G,{danger:!0,onSelect:q,children:[c.jsx(Xn,{size:13}),"Delete"]})]})})]})}const Tv={empty_path:"Choose a folder first.",invalid_name:'Invalid name — cannot be empty or contain "/".',exists:"An item with that name already exists here.",not_found:"That folder no longer exists.",not_a_directory:"That path is not a folder.",unreadable:"That folder is not readable."};class Ev extends Error{constructor(t,n){super(n),this.code=t,this.name="CreateEntryError"}}async function mi(e,t,n,s){const o=await e.connection.request("file_create_request",{path:t,name:n,kind:s});if(!o.ok){const r=o.error??"";throw new Ev(r,Tv[r]??r??"Failed to create")}return o.path??(t.endsWith("/")?`${t}${n}`:`${t}/${n}`)}const Cv=28,ut="application/x-pi-studio-path",Rn="Files";function Av(){const e=N(k=>k.client),t=le(k=>k.rootPath),n=le(k=>k.expanded),s=le(k=>k.setRoot),o=le(k=>k.toggle),r=le(k=>k.draft),i=le(k=>k.startDraft),a=le(k=>k.cancelDraft),u=le(k=>k.renaming),d=le(k=>k.cancelRename),g=le(k=>k.selected),f=le(k=>k.setSelected),m=M(k=>k.activeWorkspaceCwd),h=ot(),b=M(k=>k.tabs.find(j=>j.id===k.activeTabId)),y=me(k=>k.changes),I=me(k=>k.ignored),{upload:_}=pi(),S=$(k=>k.openFileMenu),E=st(),[R,q]=w.useState(null),[H,ie]=w.useState(null),L=w.useRef(null),ne=w.useRef(null),ce=w.useRef(null),Y=w.useRef(null),ye=(b==null?void 0:b.kind)==="file"||(b==null?void 0:b.kind)==="molecule"?b.data.path:null,ke=g?g.isDirectory?g.path:Se(g.path):t,x=w.useRef(null);w.useEffect(()=>{if(!e)return;const k=Le(m||"~",h);k.startsWith("~")||x.current!==k&&(x.current=k,s(k))},[e,m,h,s]);const fe=Aw(n);Pw(n);const Dt=w.useMemo(()=>Ow(t,n,fe,r,u),[t,n,fe,r,u]),bi=w.useMemo(()=>Ww(t,y),[t,y]),Si=w.useMemo(()=>Hw(t,I),[t,I]),ys=$i({count:Dt.length,getScrollElement:()=>ne.current,estimateSize:()=>Cv,overscan:12,getItemKey:k=>{const j=Dt[k];return j?$w(j):k}});function yn(k){hs(k,m||"~")}function ki(k,j,z){z.dataTransfer.setData(ut,k),j||z.dataTransfer.setData(Mt.path,k),z.dataTransfer.setData(fs,B_(k,j)),z.dataTransfer.effectAllowed="copyMove",ce.current=k}function xi(){ce.current=null}function wn(){ie(null),Y.current&&(clearTimeout(Y.current.timer),Y.current=null)}function ws(k){var z;if(((z=Y.current)==null?void 0:z.path)===k.path||(Y.current&&clearTimeout(Y.current.timer),Y.current=null,k.kind!=="directory"||k.expanded))return;const j=window.setTimeout(()=>o(k.path),700);Y.current={path:k.path,timer:j}}async function vs(k,j){if(!e)throw new Error("Not connected.");const z=await Dw(e,k,j),O=Se(z);await E.invalidateQueries({queryKey:He.explorer(Se(k))}),await E.invalidateQueries({queryKey:He.explorer(O)}),le.getState().repathAfterMove(k,z,O);const X=M.getState().tabs.filter(xe=>{if(xe.kind!=="file"&&xe.kind!=="diff"&&xe.kind!=="molecule")return!1;const $t=xe.data.path;return $t===k||(($t==null?void 0:$t.startsWith(`${k}/`))??!1)}),qe=X.some(xe=>(xe.kind==="file"||xe.kind==="molecule")&&xe.data.path===k),rt=X.filter(xe=>xe.kind==="diff").length;return M.getState().closeByPathPrefix(k),qe&&yn(z),{destination:z,closedDiffs:rt}}async function Ii(k,j){const z=xo(k,j,t);if(!z||!e)return;const O=k.split("/").pop()??k;q({text:`Moving ${O}…`,error:!1});try{const{destination:X,closedDiffs:qe}=await vs(k,z.destination);q({text:To(`Moved to ${Se(X).split("/").pop()||"/"}`,qe),error:!1})}catch(X){q({text:X instanceof Error?X.message:"Failed to move",error:!0})}}async function Ti(k,j){const z=(r==null?void 0:r.kind)??"file";if(a(),!!e)try{const O=await mi(e,k,j,z);await E.invalidateQueries({queryKey:He.explorer(k)}),q({text:`Created ${O}`,error:!1}),z==="file"&&yn(O)}catch(O){q({text:O instanceof Error?O.message:"Failed to create",error:!0})}}async function Ei(k,j){if(d(),!e)return;const z=hi(Se(k),j);q({text:`Renaming ${k.split("/").pop()}…`,error:!1});try{const{destination:O,closedDiffs:X}=await vs(k,z);q({text:To(`Renamed to ${O.split("/").pop()}`,X),error:!1})}catch(O){q({text:O instanceof Error?O.message:"Failed to rename",error:!0})}}function vn(k,j){var O;const z=(O=fe.get(k))==null?void 0:O.listing;return Iw(k,j,{existing:new Set((z==null?void 0:z.entries.map(X=>X.name))??[]),confirm:X=>V().dialogs.confirm(X),upload:_,setStatus:q})}function bs(k,j){if(k.preventDefault(),k.dataTransfer.types.includes(ut)){const X=k.dataTransfer.getData(ut)||ce.current;wn(),X&&Ii(X,j??{kind:"directory",path:t});return}if(wn(),!k.dataTransfer.types.includes(Rn))return;const z=j?Io(j,t):t;if(!z)return;const O=Array.from(k.dataTransfer.files);O.length&&vn(z,O)}function Ci(k){const j=k.dataTransfer.types.includes(ut);!j&&!k.dataTransfer.types.includes(Rn)||(k.preventDefault(),k.dataTransfer.dropEffect=j?"move":"copy")}return e?c.jsxs("div",{className:W.container,onDragOver:Ci,onDragLeave:k=>{k.currentTarget.contains(k.relatedTarget)||wn()},onDrop:k=>bs(k),children:[c.jsxs("div",{className:W.header,children:[c.jsx("button",{type:"button",className:W.uploadButton,onClick:()=>i(ke,"file"),disabled:!t,title:g?`New file in ${ke.split("/").pop()||"/"}`:"New file in workspace root",children:c.jsx(qn,{size:14})}),c.jsx("button",{type:"button",className:W.uploadButton,onClick:()=>i(ke,"directory"),disabled:!t,title:g?`New folder in ${ke.split("/").pop()||"/"}`:"New folder in workspace root",children:c.jsx(Qt,{size:14})}),c.jsxs("button",{type:"button",className:W.uploadButton,onClick:()=>{var j;const k=V().files;if(!k.pickUploads)return(j=L.current)==null?void 0:j.click();k.pickUploads().then(z=>vn(t,z),z=>q({text:`Upload failed: ${z instanceof Error?z.message:"unknown"}`,error:!0}))},disabled:!t,title:"Upload files to the workspace root",children:[c.jsx(ea,{size:14}),c.jsx("span",{children:"Upload"})]}),c.jsx("input",{ref:L,type:"file",multiple:!0,className:W.hiddenInput,onChange:k=>{vn(t,Array.from(k.target.files??[])),k.target.value=""}})]}),R&&c.jsx("div",{className:R.error?W.statusError:W.status,children:R.text}),c.jsxs("div",{className:W.list,ref:ne,onContextMenu:k=>{k.preventDefault(),S(t,!0,k.clientX,k.clientY,!0)},children:[Dt.length===0&&c.jsx($e,{children:"No files loaded"}),c.jsx("div",{style:{position:"relative",height:ys.getTotalSize()},children:ys.getVirtualItems().map(k=>{const j=Dt[k.index];if(!j)return null;const z=j.path===t&&j.kind==="directory";return c.jsx("div",{"data-index":k.index,style:{position:"absolute",top:0,left:0,width:"100%",height:k.size,transform:`translateY(${k.start}px)`},onDragEnter:O=>{if(O.dataTransfer.types.includes(ut)){const qe=ce.current;if(!qe)return;const rt=xo(qe,j,t);ie(rt?j.path:null),ws(j);return}if(!O.dataTransfer.types.includes(Rn))return;const X=Io(j,t);ie(X?j.path:null),ws(j)},onDrop:O=>{O.stopPropagation(),bs(O,j)},children:c.jsx(Sv,{row:j,active:(j.kind==="file"||j.kind==="directory")&&j.path===ye,selected:(j.kind==="file"||j.kind==="directory")&&j.path===(g==null?void 0:g.path),gitStatus:!z&&(j.kind==="file"||j.kind==="directory")?bi(j.path):void 0,hidden:!z&&(j.kind==="file"||j.kind==="directory")&&(j.name.startsWith(".")||Si(j.path)),isRoot:z,onToggle:O=>{f({path:O,isDirectory:!0}),o(O)},onOpenFile:O=>{f({path:O,isDirectory:!1}),yn(O)},onContextMenu:(O,X,qe,rt)=>S(O,X,qe,rt,z),onSubmitDraft:(O,X)=>void Ti(O,X),onCancelDraft:a,onSubmitRename:(O,X)=>void Ei(O,X),onCancelRename:d,onDragStartRow:ki,onDragEndRow:xi,dropTarget:(j.kind==="file"||j.kind==="directory")&&j.path===H})},k.key)})})]}),c.jsx(Iv,{})]}):c.jsx($e,{children:"Connect to browse files"})}const Rv="_list_1n3q6_1",jv="_summary_1n3q6_4",Pv="_item_1n3q6_11",qv="_badge_1n3q6_23",Mv="_added_1n3q6_30",Nv="_modified_1n3q6_34",Dv="_deleted_1n3q6_38",$v="_name_1n3q6_42",Ye={list:Rv,summary:jv,item:Pv,badge:qv,added:Mv,modified:Nv,deleted:Dv,name:$v},Lv={added:"A",modified:"M",deleted:"D"};function Ov(){const t=M(r=>r.activeWorkspaceCwd)||"~",n=me(r=>r.changes),s=M(r=>r.open);function o(r,i){s({id:Q.diff(r,i),kind:"diff",label:r.split("/").pop()||r,closable:!0,data:{path:r,staged:i},workspaceCwd:t})}return n.length===0?c.jsx($e,{children:"No changes detected"}):c.jsxs("div",{className:Ye.list,children:[c.jsxs("div",{className:Ye.summary,children:[n.length," changed file",n.length===1?"":"s"]}),n.map((r,i)=>c.jsxs("div",{className:Ye.item,onClick:()=>o(r.path,r.staged),children:[c.jsx("span",{className:U(Ye.badge,Ye[r.status]),children:Lv[r.status]}),c.jsx("span",{className:Ye.name,children:r.path})]},`${r.path}-${r.staged}-${i}`))]})}const Bv="_tabBar_1tvri_1",Fv="_tabBtn_1tvri_7",zv="_active_1tvri_23",Wv="_refreshBtn_1tvri_27",Uv="_content_1tvri_31",Be={tabBar:Bv,tabBtn:Fv,active:zv,refreshBtn:Wv,content:Uv};function Hv(){const e=$(a=>a.rightSidebarTab),t=$(a=>a.setRightSidebarTab),s=M(a=>a.activeWorkspaceCwd)||"~",o=N(a=>a.client),r=st();function i(){r.invalidateQueries({queryKey:["explorer"]}),o&&s&&o.connection.request("checkout_refresh_request",{cwd:s}).catch(()=>{})}return c.jsxs(fr,{children:[c.jsxs("div",{className:Be.tabBar,children:[c.jsxs("button",{type:"button",className:U(Be.tabBtn,e==="files"&&Be.active),onClick:()=>t("files"),children:[c.jsx(Ve,{size:13}),"Files"]}),c.jsxs("button",{type:"button",className:U(Be.tabBtn,e==="changes"&&Be.active),onClick:()=>t("changes"),children:[c.jsx(qo,{size:13}),"Changes"]}),c.jsx(se,{size:"xs",variant:"ghost",iconOnly:!0,title:"Refresh",className:Be.refreshBtn,onClick:i,children:c.jsx(ta,{size:13})})]}),c.jsx("div",{className:Be.content,children:e==="files"?c.jsx(Av,{}):c.jsx(Ov,{})})]})}function Vv(e,t){var r;const{bySession:n,setStats:s}=gs.getState(),o=(r=n[e])==null?void 0:r.contextWindow;s(e,{contextTokens:t,contextPercent:o?t*100/o:void 0,contextEstimated:!0})}const gs=ae()(e=>({bySession:{},setStats(t,n){e(s=>({bySession:{...s.bySession,[t]:{...s.bySession[t],...n}}}))},clear(t){e(n=>{const{[t]:s,...o}=n.bySession;return{bySession:o}})}})),Kv=12e3;function Gv(e,t){return e==="running"&&t!=="running"}function Eo(e,t){var s,o,r,i,a,u;const n={};((s=t.contextUsage)==null?void 0:s.tokens)!=null&&(n.contextTokens=t.contextUsage.tokens,n.contextEstimated=!1),((o=t.contextUsage)==null?void 0:o.contextWindow)!==void 0&&(n.contextWindow=t.contextUsage.contextWindow),((r=t.contextUsage)==null?void 0:r.percent)!=null&&(n.contextPercent=t.contextUsage.percent),((i=t.tokens)==null?void 0:i.total)!==void 0&&(n.totalTokens=t.tokens.total),((a=t.tokens)==null?void 0:a.input)!==void 0&&(n.inputTokens=t.tokens.input),((u=t.tokens)==null?void 0:u.output)!==void 0&&(n.outputTokens=t.tokens.output),t.cost!==void 0&&(n.cost=t.cost),t.model!==void 0&&(n.model=t.model,A.getState().setModel(e,t.model)),gs.getState().setStats(e,n)}function Yv(e){const t=N(a=>a.client),n=N(a=>a.status),s=A(a=>{var u;return e?((u=a.sessions[e])==null?void 0:u.agentId)??null:null}),o=A(a=>{var u;return e?(u=a.sessions[e])==null?void 0:u.status:void 0}),r=w.useRef(!1),i=w.useRef(void 0);w.useEffect(()=>{if(n!=="open"||!t||!e||!s)return;let a=!1;const u=async()=>{if(!r.current){r.current=!0;try{const g=await t.agent(s).sessionStats();a||Eo(e,g)}catch{}finally{r.current=!1}}};u();const d=setInterval(()=>void u(),Kv);return()=>{a=!0,clearInterval(d)}},[n,t,e,s]),w.useEffect(()=>{const a=i.current;i.current=o,Gv(a,o)&&(n!=="open"||!t||!e||!s||(r.current=!1,t.agent(s).sessionStats().then(u=>Eo(e,u)).catch(()=>{})))},[o,n,t,e,s])}function Xv(e){return typeof e=="object"&&e!==null&&"type"in e&&e.type==="checkout_status_update"&&"cwd"in e&&typeof e.cwd=="string"&&"projection"in e&&typeof e.projection=="object"&&e.projection!==null}function Jv(e){const t=N(r=>r.client),n=me(r=>r.applyProjection),s=me(r=>r.setSubscribedCwd),o=w.useRef(t);return o.current=t,w.useEffect(()=>{if(!t||!e)return;let r=!1;t.connection.request("checkout_status_subscribe",{cwd:e}).catch(()=>{}),s(e);const i=t.connection.onSessionMessage(a=>{if(r)return;const u=a;Xv(u)&&u.cwd===e&&n(u.projection)});return t.connection.request("checkout_refresh_request",{cwd:e}).catch(()=>{}),()=>{r=!0,i(),t.connection.request("checkout_status_unsubscribe",{cwd:e}).catch(()=>{}),s(null)}},[t,e,n,s]),{refresh(){const r=o.current;!r||!e||r.connection.request("checkout_refresh_request",{cwd:e}).catch(()=>{})}}}const ms="--";function bt(e){return e===void 0?ms:e<1e3?String(e):e<1e6?`${(e/1e3).toFixed(1)}k`:`${(e/1e6).toFixed(1)}M`}function Zv(e){return e==null?ms:e>0&&e<1?"<1%":`${Math.round(e)}%`}function Qv(e){if(e===void 0)return ms;const t=e<1?4:2;return`$${e.toFixed(t)}`}function eb(e,t){return t?e===t?"~":e.startsWith(`${t}/`)?`~${e.slice(t.length)}`:e:e}function tb(e,t){const n=[];return e>0&&n.push(`↑${e}`),t>0&&n.push(`↓${t}`),n.join(" ")}function _i(e){return e.some(t=>t.kind==="compaction"&&t.phase==="started")}function nb(e){return e.find(t=>t.kind==="compaction"&&t.phase==="started")}function Co(e){return e<1e3?String(e):e<1e6?`${+(e/1e3).toFixed(1)}k`:`${+(e/1e6).toFixed(1)}M`}function sb(e){let t;if(e.reason==="manual"?t="manual":e.reason==="threshold"?t="auto · threshold":e.reason==="overflow"&&(t="auto · overflow"),!!t)return e.willRetry?`${t} · retrying turn`:t}function ob(e){const t=sb(e),n=t?` (${t})`:"";switch(e.phase){case"started":return`Compacting context…${n}`;case"completed":{if(e.tokensBefore===void 0)return`Context compacted${n}`;const s=Co(e.tokensBefore);return`Context compacted · ${e.estimatedTokensAfter===void 0?`${s} before`:`${s} → ~${Co(e.estimatedTokensAfter)}`}${n}`}case"failed":return`Compaction failed${e.error?`: ${e.error}`:""}${n}`;case"canceled":return`Compaction canceled${n}`}}const jn=new Set;function Pn(e,t){const{[t]:n,...s}=e;return s}const Jt=ae()((e,t)=>({pendingBySession:{},lastErrorBySession:{},async compactSession(n,s){var u;const{client:o,status:r,serverInfo:i}=N.getState();if(!o||r!=="open")return{ok:!1,reason:"disconnected"};const a=A.getState().sessions[n];if(!(a!=null&&a.agentId))return{ok:!1,reason:"no-agent"};if(a.status==="running")return{ok:!1,reason:"running"};if(t().pendingBySession[n]||_i(a.timeline.rows))return{ok:!1,reason:"compacting"};e(d=>({pendingBySession:{...d.pendingBySession,[n]:!0},lastErrorBySession:Pn(d.lastErrorBySession,n)}));try{const d=await o.agent(a.agentId).compact(s);return!((u=i==null?void 0:i.features)!=null&&u.compactionEvents)&&d.estimatedTokensAfter!=null&&Vv(n,d.estimatedTokensAfter),{ok:!0}}catch(d){if(jn.has(n))return{ok:!1,reason:"canceled"};const g=d instanceof Error?d.message:String(d);return e(f=>({lastErrorBySession:{...f.lastErrorBySession,[n]:g}})),{ok:!1,reason:"failed",message:g}}finally{jn.delete(n),e(d=>({pendingBySession:Pn(d.pendingBySession,n)}))}},async cancelCompaction(n){var r;const s=N.getState().client,o=(r=A.getState().sessions[n])==null?void 0:r.agentId;!s||!o||(t().pendingBySession[n]&&jn.add(n),await s.agent(o).interrupt())},clearError(n){e(s=>({lastErrorBySession:Pn(s.lastErrorBySession,n)}))}}));function rb(e){const t=A(s=>{var o;return e?_i(((o=s.sessions[e])==null?void 0:o.timeline.rows)??[]):!1}),n=Jt(s=>e?s.pendingBySession[e]===!0:!1);return t||n}const ib=.7,ab=.9;function yi(e,t){if(t)return{kind:"compacting"};const n=(e==null?void 0:e.contextEstimated)===!0;return(e==null?void 0:e.contextTokens)!==void 0&&e.contextWindow?{kind:"value",fraction:e.contextTokens/e.contextWindow,estimated:n}:(e==null?void 0:e.contextPercent)!==void 0?{kind:"value",fraction:e.contextPercent/100,estimated:n}:{kind:"unknown"}}function cb(e){return e>=ab?"danger":e>=ib?"warning":"normal"}function wi(e){return e.kind==="value"?Math.min(Math.max(e.fraction,0),1):0}function _s(e){switch(e.kind){case"compacting":return"Compacting…";case"unknown":return"—";case"value":return`${e.estimated?"~":""}${Zv(e.fraction*100)}`}}function Gn(e,t){if(t.kind==="compacting")return"Compacting context…";if(t.kind==="unknown")return"Context usage unknown";const n=bt(e==null?void 0:e.contextWindow),s=(e==null?void 0:e.contextTokens)!==void 0&&e.contextWindow?bt(e.contextTokens):void 0;return s===void 0?`${_s(t)} of ${n} tokens`:t.estimated?`≈ ${s} / ${n} tokens (estimate)`:`${s} / ${n} tokens`}function lb(e){return e.kind==="value"?Math.round(wi(e)*100):void 0}const ub="_meter_mqbjo_1",db="_meterWide_mqbjo_7",fb="_trackWide_mqbjo_12",pb="_track_mqbjo_12",hb="_trackUnknown_mqbjo_27",gb="_fill_mqbjo_32",mb="_fillWarning_mqbjo_39",_b="_fillDanger_mqbjo_43",yb="_fillEstimated_mqbjo_48",wb="_sweep_mqbjo_58",vb="_label_mqbjo_90",ge={meter:ub,meterWide:db,trackWide:fb,track:pb,trackUnknown:hb,fill:gb,fillWarning:mb,fillDanger:_b,fillEstimated:yb,sweep:wb,label:vb};function Ao({stats:e,compacting:t,wide:n=!1}){const s=yi(e,t),o=_s(s),r=lb(s),i=s.kind==="value"&&s.estimated,a=s.kind==="value"?cb(s.fraction):"normal";return c.jsxs("span",{className:U(ge.meter,n&&ge.meterWide),title:Gn(e,s),children:[c.jsxs("span",{role:"meter","aria-label":"Context usage","aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":r,"aria-valuetext":s.kind==="value"&&!i?void 0:o,className:U(ge.track,n&&ge.trackWide,s.kind==="unknown"&&ge.trackUnknown,s.kind==="compacting"&&ge.trackCompacting),children:[s.kind==="value"&&c.jsx("span",{className:U(ge.fill,a==="warning"&&ge.fillWarning,a==="danger"&&ge.fillDanger,i&&ge.fillEstimated),style:{width:`${wi(s)*100}%`}}),s.kind==="compacting"&&c.jsx("span",{className:ge.sweep})]}),c.jsx("span",{className:ge.label,children:o})]})}function bb(e){return e.compacting?{kind:"cancel"}:e.connected?e.hasAgent?e.running?{kind:"disabled",note:"Wait for the agent to finish"}:{kind:"compact"}:{kind:"disabled",note:"Nothing to compact yet"}:{kind:"disabled",note:"Not connected"}}const Sb="_trigger_fxl9k_2",kb="_body_fxl9k_19",xb="_heading_fxl9k_25",Ib="_detail_fxl9k_29",Tb="_note_fxl9k_30",Eb="_field_fxl9k_35",Cb="_fieldLabel_fxl9k_41",Ab="_error_fxl9k_46",Rb="_actions_fxl9k_51",Ae={trigger:Sb,body:kb,heading:xb,detail:Ib,note:Tb,field:Eb,fieldLabel:Cb,error:Ab,actions:Rb};function jb({sessionId:e,stats:t}){const[n,s]=w.useState(""),o=rb(e),r=N(I=>I.status==="open"),i=A(I=>{var _;return((_=I.sessions[e])==null?void 0:_.agentId)??null}),a=A(I=>{var _;return((_=I.sessions[e])==null?void 0:_.status)==="running"}),u=A(I=>{var _;return nb(((_=I.sessions[e])==null?void 0:_.timeline.rows)??[])}),d=Jt(I=>I.lastErrorBySession[e]),g=Jt(I=>I.compactSession),f=Jt(I=>I.cancelCompaction),m=yi(t,o),h=bb({compacting:o,running:a,hasAgent:i!==null,connected:r}),b=h.kind==="cancel"?u?ob(u):"Compacting…":h.note;async function y(){(await g(e,n.trim()||void 0)).ok&&s("")}return c.jsxs(Ns.Root,{children:[c.jsx(Ns.Trigger,{asChild:!0,children:c.jsx("button",{type:"button",className:Ae.trigger,"aria-label":"Context usage — open compaction options",children:c.jsx(Ao,{stats:t,compacting:o})})}),c.jsx(jp,{width:320,"aria-label":"Compact context",children:c.jsxs("div",{className:Ae.body,children:[c.jsx("div",{className:Ae.heading,children:"Context"}),c.jsx(Ao,{stats:t,compacting:o,wide:!0}),c.jsx("div",{className:Ae.detail,children:m.kind==="value"?`${Gn(t,m)} (${_s(m)})`:Gn(t,m)}),c.jsxs("label",{className:Ae.field,children:[c.jsx("span",{className:Ae.fieldLabel,children:"Instructions (optional)"}),c.jsx(lp,{value:n,rows:3,placeholder:"e.g. focus on the auth refactor",disabled:o,onChange:I=>s(I.target.value)})]}),d&&!o&&c.jsx("div",{role:"alert",className:Ae.error,children:d}),b&&c.jsx("div",{className:Ae.note,children:b}),c.jsx("div",{className:Ae.actions,children:h.kind==="cancel"?c.jsx(se,{variant:"outline",size:"sm",onClick:()=>void f(e),children:"Cancel"}):c.jsx(se,{variant:"default",size:"sm",disabled:h.kind==="disabled",onClick:()=>void y(),children:"Compact now"})})]})})]})}const Pb="_statusBar_t655h_1",qb="_segmentGroup_t655h_16",Mb="_chevron_t655h_20",Nb="_segment_t655h_16",Db="_icon_t655h_33",$b="_text_t655h_39",Xe={statusBar:Pb,segmentGroup:qb,chevron:Mb,segment:Nb,icon:Db,text:$b};function Lb(){const e=A(h=>h.activeSessionId),t=A(h=>e?h.sessions[e]:void 0),n=ot(),s=M(h=>h.activeWorkspaceCwd);Jv(s||"");const o=me(h=>h.available),r=me(h=>h.branch),i=me(h=>h.ahead),a=me(h=>h.behind),u=me(h=>h.detached),d=me(h=>h.conflictCount),g=me(h=>h.changes.length),f=gs(h=>e?h.bySession[e]:void 0);Yv(e);const m=[];if(t){const h=eb(t.cwd,n);m.push({key:"cwd",icon:c.jsx(Ve,{size:13}),text:h,title:t.cwd})}if(o){const h=tb(i,a),b=[u?"(detached)":r??"?"];h&&b.push(h),g>0&&b.push(`●${g}`),d>0&&b.push(`⚠${d}`),m.push({key:"branch",icon:c.jsx(na,{size:13}),text:b.join(" ")})}return t&&(m.push({key:"context",icon:c.jsx(sa,{size:13}),content:e?c.jsx(jb,{sessionId:e,stats:f}):null}),m.push({key:"tokens",icon:c.jsx(oa,{size:13}),text:bt(f==null?void 0:f.totalTokens),title:`in ${bt(f==null?void 0:f.inputTokens)} / out ${bt(f==null?void 0:f.outputTokens)}`}),m.push({key:"cost",icon:c.jsx(ra,{size:13}),text:Qv(f==null?void 0:f.cost)})),c.jsx("div",{className:Xe.statusBar,children:m.map((h,b)=>c.jsxs("span",{className:Xe.segmentGroup,children:[b>0&&c.jsx(Jn,{size:12,className:Xe.chevron,"aria-hidden":"true"}),c.jsxs("span",{className:Xe.segment,title:h.title,children:[c.jsx("span",{className:Xe.icon,children:h.icon}),h.content??c.jsx("span",{className:Xe.text,children:h.text})]})]},h.key))})}function Ob(e,t){const{order:n,sessions:s}=A.getState(),r=ds(n,s,t).find(i=>i.cwd===e);if(r!=null&&r.sessions[0]){const i=r.sessions[0].id;A.getState().activate(i);const a=A.getState().sessions[i];M.getState().open({id:Q.chat(i),kind:"chat",label:(a==null?void 0:a.title)??"New chat",closable:!0,data:{sessionId:i},workspaceCwd:e})}else qt(e);$.getState().setCwd(e)}const Bb="_pathRow_1mu84_1",Fb="_pathInput_1mu84_9",zb="_createRow_1mu84_13",Wb="_createInput_1mu84_21",Ub="_createError_1mu84_25",Hb="_list_1mu84_30",Vb="_item_1mu84_37",Kb="_name_1mu84_49",Me={pathRow:Bb,pathInput:Fb,createRow:zb,createInput:Wb,createError:Ub,list:Hb,item:Vb,name:Kb};function Gb(){const e=$(x=>x.cwdPickerOpen),t=$(x=>x.closeCwdPicker),n=M(x=>x.activeWorkspaceCwd),s=$(x=>x.cwd),o=N(x=>x.client),r=ot(),[i,a]=w.useState("/"),[u,d]=w.useState("/"),[g,f]=w.useState(!1),[m,h]=w.useState(""),[b,y]=w.useState(null),[I,_]=w.useState(!1),S=st();w.useEffect(()=>{if(!e)return;const x=Le(n||s||"~",r);a(x),d(x),L()},[e,o,n,s,r]);const{data:E,isLoading:R,isError:q,error:H}=Cw(i,e&&!!o),ie=((E==null?void 0:E.entries)??[]).filter(x=>x.kind==="directory");function L(){f(!1),h(""),y(null)}function ne(x){const fe=x.length>1?x.replace(/\/+$/,"")||"/":x;a(fe),d(fe),L()}function ce(){ne(i.split("/").slice(0,-1).join("/")||"/")}function Y(){ne(u.trim())}async function ye(){const x=m.trim();if(!(!x||!o||I)){_(!0),y(null);try{const fe=await mi(o,i,x,"directory");await S.invalidateQueries({queryKey:He.explorer(i)}),ne(fe)}catch(fe){y(fe instanceof Error?fe.message:"Failed to create folder")}finally{_(!1)}}}function ke(){Ob(i,r),t()}return c.jsxs(Bn,{open:e,onOpenChange:x=>!x&&t(),title:"Open Workspace",footer:c.jsxs(c.Fragment,{children:[c.jsx(pr,{asChild:!0,children:c.jsx(se,{size:"sm",variant:"secondary",children:"Cancel"})}),c.jsx(se,{size:"sm",onClick:ke,children:"Open this folder"})]}),children:[c.jsxs("div",{className:Me.pathRow,children:[c.jsx(se,{size:"xs",variant:"ghost",iconOnly:!0,title:"Up",onClick:ce,children:c.jsx(ia,{size:13})}),c.jsx(sn,{className:Me.pathInput,value:u,onChange:x=>d(x.target.value),onKeyDown:x=>{x.key==="Enter"&&(x.preventDefault(),Y())}}),c.jsx(se,{size:"xs",onClick:Y,children:"Go"}),c.jsx(se,{size:"xs",variant:"ghost",iconOnly:!0,title:"New folder",disabled:!o||q||g,onClick:()=>{f(!0),h(""),y(null)},children:c.jsx(Qt,{size:13})})]}),g&&c.jsxs(c.Fragment,{children:[c.jsxs("div",{className:Me.createRow,children:[c.jsx(Ve,{size:14}),c.jsx(sn,{className:Me.createInput,autoFocus:!0,placeholder:"New folder name",value:m,onChange:x=>h(x.target.value),onKeyDown:x=>{x.key==="Enter"?(x.preventDefault(),ye()):x.key==="Escape"&&(x.preventDefault(),x.stopPropagation(),L())}}),c.jsx(se,{size:"xs",loading:I,disabled:!m.trim()||I,onClick:()=>void ye(),children:"Create"}),c.jsx(se,{size:"xs",variant:"secondary",onClick:L,children:"Cancel"})]}),b&&c.jsx("div",{className:Me.createError,children:b})]}),c.jsx("div",{className:Me.list,children:R?c.jsx($e,{children:"Loading..."}):q?c.jsxs($e,{children:["Error: ",H instanceof Error?H.message:"unknown error"]}):ie.length===0?c.jsx($e,{children:"No subdirectories"}):ie.map(x=>c.jsxs("div",{className:Me.item,onClick:()=>ne(i==="/"?`/${x.name}`:`${i}/${x.name}`),children:[c.jsx(Ve,{size:14}),c.jsx("span",{className:Me.name,children:x.name})]},x.name))})]})}const Yb="_shell_570m8_1",Xb="_main_570m8_7",Jb="_sidebarLeft_570m8_13",Zb="_leftHandle_570m8_25",Qb="_center_570m8_28",eS="_sidebarRight_570m8_35",tS="_rightHandle_570m8_43",Fe={shell:Yb,main:Xb,sidebarLeft:Jb,leftHandle:Zb,center:Qb,sidebarRight:eS,rightHandle:tS};function nS(){const e=$(i=>i.leftSidebarCollapsed),t=$(i=>i.rightSidebarCollapsed),n=$(i=>i.leftSidebarWidth),s=$(i=>i.rightSidebarWidth),o=$(i=>i.resizeLeftSidebar),r=$(i=>i.resizeRightSidebar);return c.jsxs("div",{className:Fe.shell,children:[c.jsx(Tm,{}),c.jsxs("div",{className:Fe.main,children:[!e&&c.jsxs("aside",{className:Fe.sidebarLeft,style:{width:n},children:[c.jsx(z_,{}),c.jsx(Ms,{side:"left",className:Fe.leftHandle,onResize:o})]}),c.jsx("div",{className:Fe.center,children:c.jsx(kw,{})}),!t&&c.jsxs("aside",{className:Fe.sidebarRight,style:{width:s},children:[c.jsx(Ms,{side:"right",className:Fe.rightHandle,onResize:r}),c.jsx(Hv,{})]})]}),c.jsx(Lb,{}),c.jsx(Gb,{}),c.jsx(Wp,{}),c.jsx(Mp,{})]})}function sS({host:e}){return w.useEffect(()=>()=>{},[]),c.jsxs(Yg,{host:e,children:[c.jsx(Kg,{}),c.jsx(nS,{})]})}const vi=document.getElementById("root");if(!vi)throw new Error("Missing #root element");const oS=_r({app:{title:"Pi-Studio",version:"0.0.120"},pdf:{createWorker:()=>new ja({name:"pdfjs"}),assetBaseUrl:"/pdfjs/"}});Pi.createRoot(vi).render(c.jsx(w.StrictMode,{children:c.jsx(sS,{host:oS})}));export{Xr as $,my as A,se as B,Ev as C,Bn as D,$e as E,wS as F,vS as G,ES as H,oe as I,hs as J,Hh as K,jS as L,em as M,Qg as N,hh as O,fr as P,A as Q,Vv as R,dr as S,mS as T,gS as U,RS as V,Em as W,IS as X,lp as Y,ob as Z,TS as _,qS as a,xS as a0,$ as a1,$h as a2,Pt as a3,yS as a4,Un as a5,rb as a6,Jt as a7,nb as a8,AS as a9,Q as aa,ni as ab,CS as ac,SS as ad,kS as ae,It as af,pS as ag,pi as b,MS as c,Ue as d,Se as e,PS as f,V as g,hS as h,Fr as i,nn as j,bS as k,_S as l,Pg as m,Le as n,M as o,qr as p,F as q,He as r,ot as s,rh as t,N as u,ui as v,mi as w,xv as x,sn as y,je as z};