conductor-oss 0.30.2 → 0.30.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +5 -5
- package/web/.next/standalone/packages/web/.next/BUILD_ID +1 -1
- package/web/.next/standalone/packages/web/.next/app-path-routes-manifest.json +6 -6
- package/web/.next/standalone/packages/web/.next/build-manifest.json +3 -3
- package/web/.next/standalone/packages/web/.next/prerender-manifest.json +3 -3
- package/web/.next/standalone/packages/web/.next/react-loadable-manifest.json +5 -5
- package/web/.next/standalone/packages/web/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/_global-error.html +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/_global-error.rsc +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/_not-found/page.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/api/bridge/bridges/[bridgeId]/route.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/api/bridge/bridges/route.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/api/bridge/devices/[deviceId]/route.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/api/bridge/devices/claims/complete/route.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/api/bridge/devices/code/route.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/api/bridge/devices/route.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/bridge/connect/page.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/bridge/connect/page.js.nft.json +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/bridge/connect/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/page.js +2 -2
- package/web/.next/standalone/packages/web/.next/server/app/page.js.nft.json +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/sessions/[id]/page.js +2 -2
- package/web/.next/standalone/packages/web/.next/server/app/sessions/[id]/page.js.nft.json +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/sessions/[id]/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/settings/bridge/page.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/settings/bridge/page.js.nft.json +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/settings/bridge/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/sign-in/[[...sign-in]]/page.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/sign-in/[[...sign-in]]/page.js.nft.json +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/sign-in/[[...sign-in]]/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/sign-in/hosted/page.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/sign-in/hosted/page.js.nft.json +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/sign-in/hosted/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/sign-in/sso-callback/page.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/sign-in/sso-callback/page.js.nft.json +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/sign-in/sso-callback/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/unlock/page.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/unlock/page.js.nft.json +1 -1
- package/web/.next/standalone/packages/web/.next/server/app/unlock/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/app-paths-manifest.json +6 -6
- package/web/.next/standalone/packages/web/.next/server/chunks/1121.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/4888.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/5025.js +1 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/5164.js +3 -3
- package/web/.next/standalone/packages/web/.next/server/chunks/5694.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/6054.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/6489.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/7547.js +1 -0
- package/web/.next/standalone/packages/web/.next/server/chunks/9455.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/middleware-build-manifest.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/middleware-react-loadable-manifest.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/pages/500.html +1 -1
- package/web/.next/standalone/packages/web/.next/server/server-reference-manifest.js +1 -1
- package/web/.next/standalone/packages/web/.next/server/server-reference-manifest.json +1 -1
- package/web/.next/standalone/packages/web/.next/static/chunks/1265.1c9b072945904c07.js +1 -0
- package/web/.next/standalone/packages/web/.next/static/chunks/4443.4751072018eda510.js +1 -0
- package/web/.next/standalone/packages/web/.next/static/chunks/474.1a853ae261c6f831.js +1 -0
- package/web/.next/standalone/packages/web/.next/static/chunks/4929.a3162cca47aff839.js +1 -0
- package/web/.next/standalone/packages/web/.next/static/chunks/{7220-6f03daec280b1310.js → 7220-759bf5f5ee3a953f.js} +1 -1
- package/web/.next/standalone/packages/web/.next/static/chunks/7720-f8fad1acac794e8d.js +2 -0
- package/web/.next/standalone/packages/web/.next/static/chunks/9756-2afe5fa19201a51a.js +1 -0
- package/web/.next/standalone/packages/web/.next/static/chunks/app/layout-4ff8eb6917b7e063.js +1 -0
- package/web/.next/standalone/packages/web/.next/static/chunks/app/page-536f088e4ecf886b.js +1 -0
- package/web/.next/standalone/packages/web/.next/static/chunks/app/sessions/[id]/page-f3756bd7b55447a9.js +1 -0
- package/web/.next/standalone/packages/web/.next/static/chunks/{webpack-65247d8c6649582a.js → webpack-e988047f31110b5c.js} +1 -1
- package/web/.next/static/chunks/1265.1c9b072945904c07.js +1 -0
- package/web/.next/static/chunks/4443.4751072018eda510.js +1 -0
- package/web/.next/static/chunks/474.1a853ae261c6f831.js +1 -0
- package/web/.next/static/chunks/4929.a3162cca47aff839.js +1 -0
- package/web/.next/static/chunks/{7220-6f03daec280b1310.js → 7220-759bf5f5ee3a953f.js} +1 -1
- package/web/.next/static/chunks/7720-f8fad1acac794e8d.js +2 -0
- package/web/.next/static/chunks/9756-2afe5fa19201a51a.js +1 -0
- package/web/.next/static/chunks/app/layout-4ff8eb6917b7e063.js +1 -0
- package/web/.next/static/chunks/app/page-536f088e4ecf886b.js +1 -0
- package/web/.next/static/chunks/app/sessions/[id]/page-f3756bd7b55447a9.js +1 -0
- package/web/.next/static/chunks/{webpack-65247d8c6649582a.js → webpack-e988047f31110b5c.js} +1 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/6229.js +0 -1
- package/web/.next/standalone/packages/web/.next/server/chunks/6312.js +0 -1
- package/web/.next/standalone/packages/web/.next/static/chunks/1265.eb0836b68e2c5068.js +0 -1
- package/web/.next/standalone/packages/web/.next/static/chunks/4443.a7231192bcabcb39.js +0 -1
- package/web/.next/standalone/packages/web/.next/static/chunks/474.e2261e8fe56e5d2b.js +0 -1
- package/web/.next/standalone/packages/web/.next/static/chunks/7720-26b9379cbba41cf1.js +0 -2
- package/web/.next/standalone/packages/web/.next/static/chunks/8659.44db5b2c3161acd3.js +0 -1
- package/web/.next/standalone/packages/web/.next/static/chunks/9756-c69416a974795433.js +0 -1
- package/web/.next/standalone/packages/web/.next/static/chunks/app/layout-cce84419ee9eeeca.js +0 -1
- package/web/.next/standalone/packages/web/.next/static/chunks/app/page-2e773d9773c7b8d8.js +0 -1
- package/web/.next/standalone/packages/web/.next/static/chunks/app/sessions/[id]/page-057af93ee9059ddb.js +0 -1
- package/web/.next/static/chunks/1265.eb0836b68e2c5068.js +0 -1
- package/web/.next/static/chunks/4443.a7231192bcabcb39.js +0 -1
- package/web/.next/static/chunks/474.e2261e8fe56e5d2b.js +0 -1
- package/web/.next/static/chunks/7720-26b9379cbba41cf1.js +0 -2
- package/web/.next/static/chunks/8659.44db5b2c3161acd3.js +0 -1
- package/web/.next/static/chunks/9756-c69416a974795433.js +0 -1
- package/web/.next/static/chunks/app/layout-cce84419ee9eeeca.js +0 -1
- package/web/.next/static/chunks/app/page-2e773d9773c7b8d8.js +0 -1
- package/web/.next/static/chunks/app/sessions/[id]/page-057af93ee9059ddb.js +0 -1
- /package/web/.next/standalone/packages/web/.next/static/{see4G2ERXsOIVmNhC0xYH → PI7swHEBX1p5mEZCM1Irt}/_buildManifest.js +0 -0
- /package/web/.next/standalone/packages/web/.next/static/{see4G2ERXsOIVmNhC0xYH → PI7swHEBX1p5mEZCM1Irt}/_ssgManifest.js +0 -0
- /package/web/.next/static/{see4G2ERXsOIVmNhC0xYH → PI7swHEBX1p5mEZCM1Irt}/_buildManifest.js +0 -0
- /package/web/.next/static/{see4G2ERXsOIVmNhC0xYH → PI7swHEBX1p5mEZCM1Irt}/_ssgManifest.js +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[8974],{6542:(e,t,n)=>{"use strict";n.d(t,{default:()=>eN});var a=n(54568),r=n(42925),l=n(79748),s=n(7620),i=n(40448),o=n(76196),d=n(52353),c=n(20487),p=n(50549),u=n(57917),m=n(21048),x=n(55341),h=n(30824),g=n(34737),f=n(20670),b=n(58299),v=n(84736),j=n(7086),w=n(54299),k=n(34041),y=n(34309),N=n(63253),C=n(20732),A=n(36645),S=n(45894),I=n(5739),E=n(33866),M=n(35821),U=n(95106),$=n(53649),L=n(86011),O=n(31404),P=n(10926);let q=new Map,B=new Map;function F(e){let t=B.get(e);return t||(t={agents:[],loading:!0,lastFetchedAt:0,inFlight:null,retryTimeout:null},B.set(e,t)),t}function T(e){let t=q.get(e);return t||(t=new Set,q.set(e,t)),t}function R(e){for(let t of T(e))t()}function _(e){let t=F(e);return t.agents.length>0&&Date.now()-t.lastFetchedAt<3e4}function D(e,t){let n=F(e);null===n.retryTimeout&&(n.retryTimeout=window.setTimeout(()=>{F(e).retryTimeout=null,H(e,t,!0)},1e4))}async function H(e,t,n=!1){let a=F(e);if(!n&&_(e)){a.loading&&(a.loading=!1,R(e));return}return a.inFlight||(a.loading=!0,R(e),a.inFlight=(async()=>{try{var n;let r=await fetch((0,O.S)("/api/agents",t),{cache:"no-store"});if(!r.ok)throw Error(`Failed to fetch agents: ${r.status}`);let l=(n=await r.json(),Array.isArray(n)?n:n&&"object"==typeof n&&"agents"in n&&Array.isArray(n.agents)?n.agents:[]);l.length>0?(a.agents=l,a.lastFetchedAt=Date.now(),null!==a.retryTimeout&&(window.clearTimeout(a.retryTimeout),a.retryTimeout=null)):D(e,t)}catch{D(e,t)}finally{a.loading=!1,a.inFlight=null,R(e)}})()),a.inFlight}var W=n(46012),G=n(862),V=n(84169),Z=n(39702),z=n(86181),J=n(90124);function Q(e){return e&&"object"==typeof e?e:null}async function X({files:e,projectId:t,taskRef:n,bridgeId:a,preferAbsolute:r=!0}){if(!e.length)return[];let l=t.trim();if(!l)throw Error("Project id is required to upload attachments");let s=new FormData;s.append("projectId",l);let i=n?.trim();for(let t of(i&&s.append("taskRef",i),e))s.append("files",t);let o=await fetch((0,O.S)("/api/attachments",a),{method:"POST",body:s}),d=await o.json().catch(()=>null);if(!o.ok){let t=1===e.length?e[0]?.name??"attachment":`${e.length} attachments`;throw Error(d?.error??`Failed to upload ${t}`)}let c=(Array.isArray(d?.files)?d.files:d?[d]:[]).map(e=>(function(e,t){let n=Q(e);if(!n)return null;let a=Q(n.attachment);for(let e of t?[n.absolutePath,n.path,n.filePath,a?.absolutePath,a?.path,a?.filePath]:[n.path,n.absolutePath,n.filePath,a?.path,a?.absolutePath,a?.filePath])if("string"==typeof e&&e.trim().length>0)return e.trim();return null})(e,r)).filter(e=>!!e);if(0===c.length)throw Error("Attachment upload succeeded but did not return a usable file path");return c}var K=n(15115);function Y(e){return e.map(e=>(0,P.C0)(e)).filter(e=>null!==e)}var ee=n(67506),et=n(51164),en=n(73927);let ea="claude-code";function er(e){let t=e?.trim();return t&&t.length>0?t:null}let el=(0,r.default)(()=>Promise.all([n.e(4997),n.e(7214)]).then(n.bind(n,4997)).then(e=>e.SessionDetail),{loadableGenerated:{webpack:()=>[4997]},loading:()=>(0,a.jsx)("div",{className:"flex h-full items-center justify-center text-[13px] text-[var(--vk-text-muted)]",children:"Loading session..."})}),es=(0,r.default)(()=>Promise.all([n.e(9450),n.e(9167)]).then(n.bind(n,29450)).then(e=>e.WorkspaceSidebarPanel),{loadableGenerated:{webpack:()=>[29450]},loading:()=>(0,a.jsx)("div",{className:"flex h-full items-center justify-center text-[13px] text-[var(--vk-text-muted)]",children:"Loading workspace panel..."})}),ei=(0,r.default)(()=>n.e(1081).then(n.bind(n,11081)).then(e=>e.WorkspaceOverview),{loadableGenerated:{webpack:()=>[11081]},loading:()=>(0,a.jsx)("div",{className:"flex h-full items-center justify-center text-[13px] text-[var(--vk-text-muted)]",children:"Loading workspace..."})}),eo=(0,r.default)(()=>n.e(1265).then(n.bind(n,71265)).then(e=>e.WorkspaceKanban),{loadableGenerated:{webpack:()=>[71265]},loading:()=>(0,a.jsx)("div",{className:"flex h-full items-center justify-center text-[13px] text-[var(--vk-text-muted)]",children:"Loading board..."})}),ed=(0,r.default)(()=>Promise.all([n.e(3470),n.e(524),n.e(474)]).then(n.bind(n,90474)).then(e=>e.NewWorkspaceDialog),{loadableGenerated:{webpack:()=>[90474]},loading:()=>null}),ec=(0,r.default)(()=>Promise.all([n.e(3470),n.e(524),n.e(474)]).then(n.bind(n,90474)).then(e=>e.SettingsDialog),{loadableGenerated:{webpack:()=>[90474]},loading:()=>null});function ep(e){let t=(0,E.h7)(e);return t?.label?t.label:e.split(/[-_\s]+/g).filter(Boolean).map(e=>e[0]?.toUpperCase()+e.slice(1)).join(" ")}function eu(e){return e.issueId?.trim()||e.taskRef?.trim()||e.id}function em(e){let[t]=e.split(" - ");return(t??e).trim()}function ex(e){return!e||"object"!=typeof e||Array.isArray(e)?{}:{...e}}function eh(e,t){let n=ex(e),a=ex(n.notifications),r=a.soundFile,l="string"==typeof n.codingAgent&&n.codingAgent.trim().length>0?n.codingAgent.trim():t,s="string"==typeof n.ide&&n.ide.trim().length>0?n.ide.trim():"vscode",i="string"==typeof n.markdownEditor&&n.markdownEditor.trim().length>0?n.markdownEditor.trim():"obsidian",o="string"==typeof n.markdownEditorPath?n.markdownEditorPath.trim():"";return{onboardingAcknowledged:!0===n.onboardingAcknowledged,codingAgent:l,ide:s,markdownEditor:i,markdownEditorPath:o,modelAccess:(0,et.v)(n.modelAccess),notifications:{soundEnabled:!1!==a.soundEnabled,soundFile:null===r?null:"string"==typeof r&&r.trim().length>0?r.trim():"abstract-sound-4"}}}function eg(e,t){return t[(0,I.q)(e)]??null}function ef(e){if(!e)return[];let t=[],n=new Set;for(let a of Object.values(e.modelsByAccess))if(Array.isArray(a))for(let e of a)!e?.id||n.has(e.id)||(n.add(e.id),t.push(e));return t}function eb(e,t,n){let a=eg(e,n),r=(0,o.Tk)(e,t),l=(0,en.V3)(a,r),s=(0,o.d8)(e,t),i=[],d=new Set;for(let e of[...l,...s,...ef(a)])!e?.id||d.has(e.id)||(d.add(e.id),i.push(e));return i}function ev(e,t,n,a){let r=eg(e,n),l=(0,o.Tk)(e,t),s=(0,en.a3)(r,a,l),i=(0,o.u6)(e,t),d=[],c=new Set;for(let e of[...s,...i])!e?.id||c.has(e.id)||(c.add(e.id),d.push(e));return d}function ej(e,t,n,a){let r=eg(e,n),l=(0,o.Tk)(e,t);return(0,en.Z9)(r,a,l)??(0,o.DZ)(e,t)??""}function ew(e,t,n,a,r){let l,s,i=a?.trim()??"",d=r?.trim().toLowerCase()??"",c=eb(e,t,n),p=(l=eg(e,n),s=(0,o.Tk)(e,t),(0,en.NN)(l,s)??(0,o.O$)(e,t)??ef(l)[0]?.id??""),u=a=>{let r=ev(e,t,n,a);return d.length>0&&r.some(e=>e.id===d)?d:ej(e,t,n,a)};return i.length>0?c.some(e=>e.id===i)?{catalogModel:i,customModel:"",reasoningEffort:u(i)}:{catalogModel:p,customModel:i,reasoningEffort:u(i)}:{catalogModel:p,customModel:"",reasoningEffort:u(p)}}function ek(e){let t=e.customModel.trim();if(t.length>0)return t;let n=e.catalogModel.trim();return n.length>0?n:void 0}function ey(e){let t=e.reasoningEffort.trim().toLowerCase();return t.length>0?t:void 0}function eN({requiresPairedDeviceScope:e=!1}){let t=(0,l.useRouter)(),n=(0,l.usePathname)(),r=(0,l.useSearchParams)(),i=(0,s.useMemo)(()=>er(r.get("project")),[r]),o=(0,s.useMemo)(()=>er(r.get("session")),[r]),d=(0,s.useMemo)(()=>"board"===r.get("view")?"board":"chat",[r]),c=(0,s.useMemo)(()=>er(r.get("bridge")),[r]),p=(0,s.useMemo)(()=>{let e=r.get("tab");return null===e||"terminal"===e||"overview"!==e&&"preview"!==e&&"chat"!==e&&"diff"!==e},[r]),[u,m]=(0,s.useState)(c??""),x=(0,P.C0)(u),h=(0,s.useMemo)(()=>(0,P.DW)(o)?.bridgeId??null,[o]),g=c??h,f=x??h,[v,j]=(0,s.useState)([]),[w,k]=(0,s.useState)("loading"),y=(0,ee.y)(),N=(0,s.useMemo)(()=>v.filter(e=>e.connected),[v]),C=(0,s.useMemo)(()=>N.map(e=>e.bridgeId),[N]),A=(0,s.useMemo)(()=>(function({requiresPairedDeviceScope:e,effectiveBridgeId:t,connectedBridgeIds:n,bridgeInventoryStatus:a}){if(!e)return!1;let r=(0,P.C0)(t);return!!r&&("loading"===a||"ready"===a&&!Y(n).includes(r))})({requiresPairedDeviceScope:e,effectiveBridgeId:f,connectedBridgeIds:C,bridgeInventoryStatus:w}),[w,C,f,e]);(0,s.useMemo)(()=>(function({requiresPairedDeviceScope:e,effectiveBridgeId:t,connectedBridgeIds:n,bridgeInventoryStatus:a}){if(!e)return!0;let r=(0,P.C0)(t);return!!r&&"ready"===a&&Y(n).includes(r)})({requiresPairedDeviceScope:e,effectiveBridgeId:f,connectedBridgeIds:C,bridgeInventoryStatus:w}),[w,C,f,e]);let S=(0,s.useMemo)(()=>!e||!!f,[f,e]),{projects:q,loading:B,error:R,refresh:D}=(0,$.U)(f,{enabled:S}),{agents:J}=function(e,t){let n=t?.enabled??!0,a=(0,P.C0)(e)??"local",[r,l]=(0,s.useState)({agents:[],loading:n});return(0,s.useEffect)(()=>{if(!n)return void l({agents:[],loading:!1});let t=()=>{let e;return l({agents:(e=F(a)).agents,loading:e.loading})};T(a).add(t),t(),H(a,e);let r=()=>{_(a)||H(a,e,!0)},s=()=>{"visible"!==document.visibilityState||_(a)||H(a,e,!0)};return window.addEventListener("focus",r),document.addEventListener("visibilitychange",s),()=>{T(a).delete(t),window.removeEventListener("focus",r),document.removeEventListener("visibilitychange",s)}},[e,n,a]),n?r:{agents:[],loading:!1}}(f,{enabled:S}),{mobileSidebarOpen:Q,desktopSidebarOpen:X,toggleSidebar:en,closeSidebarOnMobile:eu,syncSidebarForViewport:em}=(0,W.T)({initialDesktopOpen:!1}),ex=Q||X,eg=!o||ex,{sessions:ef,loading:eb,error:ev,refresh:ej}=(0,U.t)(i,{enabled:eg&&S,bridgeId:f}),[eA,eS]=(0,s.useState)(""),[eI,eE]=(0,s.useState)(""),[eM,eU]=(0,s.useState)({catalogModel:"",customModel:"",reasoningEffort:""}),[e$,eL]=(0,s.useState)(!1),[eO,eP]=(0,s.useState)(null),[eq,eB]=(0,s.useState)(!1),[eF,eT]=(0,s.useState)(!1),[eR,e_]=(0,s.useState)(null),[eD,eH]=(0,s.useState)(null),[eW,eG]=(0,s.useState)(!0),[eV,eZ]=(0,s.useState)(!1),[ez,eJ]=(0,s.useState)(null),[eQ,eX]=(0,s.useState)(!1),[eK,eY]=(0,s.useState)(!1),[e0,e1]=(0,s.useState)(()=>o?[o]:[]),[e4,e2]=(0,s.useState)(!1),e3=(0,s.useRef)(null);(0,s.useEffect)(()=>{let e="function"==typeof window.matchMedia?window.matchMedia("(pointer: coarse)"):null,t=()=>{e2((0,z.k$)())};return t(),window.addEventListener("resize",t),e?.addEventListener?.("change",t),()=>{window.removeEventListener("resize",t),e?.removeEventListener?.("change",t)}},[]),(0,s.useEffect)(()=>{if(!y){j([]),k("ready"),e&&t.replace("/bridge/connect");return}let n=!1,a=A?4e3:15e3;async function r(){try{let e=await fetch("/api/bridge/devices",{cache:"no-store"});if(!e.ok)throw Error(`Failed to fetch bridges: ${e.status}`);let t=await e.json().catch(()=>null);n||(j((0,K.oH)(t?.devices).map(e=>({bridgeId:e.device_id,hostname:e.last_status?.hostname??e.hostname,os:`${e.last_status?.os??`${e.os}/${e.arch}`}${(0,K.wj)(e.last_status?.version)}`,capabilities:[],connected:e.connected,status:e.connected?"connected":"offline",connectedAt:"",lastSeenAt:""}))),k("ready"))}catch{n||(j([]),k("error"))}}r();let l=window.setInterval(()=>{r()},a);return()=>{n=!0,window.clearInterval(l)}},[y,A,e,t]),(0,s.useEffect)(()=>{let t=function({requiresPairedDeviceScope:e,requestedBridgeId:t,selectedBridgeId:n,connectedBridgeIds:a}){let r=(0,P.C0)(t),l=(0,P.C0)(n),s=Y(a);return e?r||(0===s.length?"":l&&s.includes(l)?l:s[0]??""):l&&s.includes(l)?l:""}({requiresPairedDeviceScope:e,requestedBridgeId:g,selectedBridgeId:u,connectedBridgeIds:C});t!==u&&m(t)},[C,g,e,u]),(0,s.useEffect)(()=>{!e||f||"ready"!==w||N.length>0||t.replace("/bridge/connect")},[w,N.length,f,e,t]),(0,s.useEffect)(()=>{m(c??"")},[c]);let e5=!!o&&p&&e4,e9=(0,s.useMemo)(()=>new Map(ef.map(e=>[e.id,e])),[ef]),{session:e6,loading:e7,error:e8}=(0,M.w)(o,null,{enabled:!!o&&S,bridgeId:f}),te=eO??R??ev??e8??ez,tt=(0,s.useMemo)(()=>{let e=new Map;for(let t of ef){let n=e.get(t.projectId);n?n.push(t):e.set(t.projectId,[t])}return e},[ef]),tn=(0,s.useCallback)((e,a="push")=>{let l=new URLSearchParams(r.toString()),s=(e,t)=>{let n="string"==typeof t?t.trim():"";n.length>0?l.set(e,n):l.delete(e)};"projectId"in e&&s("project",e.projectId),"sessionId"in e&&s("session",e.sessionId),"workspaceView"in e&&("board"===e.workspaceView?l.set("view","board"):l.delete("view")),"tab"in e&&(e.tab&&"chat"!==e.tab?l.set("tab",e.tab):l.delete("tab")),"bridgeId"in e&&s("bridge",e.bridgeId),l.has("project")||l.delete("view"),l.has("session")||l.delete("tab");let i=l.toString(),o=i.length>0?`${n}?${i}`:n;"replace"===a?t.replace(o,{scroll:!1}):t.push(o,{scroll:!1})},[n,t,r]);(0,s.useEffect)(()=>{let e=(0,P.C0)(u);(c??null)!==e&&tn({bridgeId:e},"replace")},[c,tn,u]),(0,s.useEffect)(()=>{if(!B&&!R){if(0===q.length){null!==i&&tn({projectId:null,workspaceView:null},"replace");return}null===i||q.some(e=>e.id===i)||tn({projectId:o?null:q[0]?.id??null,workspaceView:o?null:d},"replace")}},[R,B,tn,q,i,o,d]),(0,s.useEffect)(()=>{if(o){if(eg){if(eb||ev)return;ef.some(e=>e.id===o)||tn({sessionId:null,tab:null},"replace");return}!e7&&(e6||tn({sessionId:null,tab:null},"replace"))}},[ef,tn,eg,o,e7,e6,ev,eb]),(0,s.useEffect)(()=>{o?e1(e=>[o,...e.filter(e=>e!==o)].slice(0,1)):e1([])},[o]),(0,s.useEffect)(()=>{o&&e3.current&&e3.current!==o&&(e3.current=null)},[o]),(0,s.useEffect)(()=>{o&&eg&&!eb&&!ev&&e1(e=>e.filter(e=>e===o||e9.has(e)))},[eg,o,e9,ev,eb]);let ta=(0,s.useMemo)(()=>e6,[e6]),tr=(0,s.useMemo)(()=>q.find(e=>e.id===i)??null,[q,i]),tl=(0,s.useMemo)(()=>i?tt.get(i)??[]:[],[i,tt]),ts=(0,s.useMemo)(()=>ta?[ta.projectId,ta.branch].filter(Boolean).join(" \xb7 "):tr?[tr.id,tr.defaultBranch||"main"].filter(Boolean).join(" \xb7 "):"All Projects",[tr,ta]),ti=(0,s.useMemo)(()=>f?v.find(e=>e.bridgeId===f)??null:null,[v,f]),to=ti?`Device \xb7 ${ti.hostname}`:A?"Device \xb7 Reconnecting":e?"Scope \xb7 Paired device required":"Scope \xb7 Local backend",td=ti?`Showing projects and sessions from ${ti.hostname}.`:A?"Waiting for the selected laptop to reconnect before loading dashboard data.":e?"Hosted dashboard access must target a connected laptop.":"Showing projects and sessions from the local backend because no paired laptop is selected.",tc=ti?"border-[rgba(24,197,143,0.35)] bg-[rgba(24,197,143,0.12)] text-[var(--vk-green)]":A?"border-[rgba(255,180,92,0.28)] bg-[rgba(255,180,92,0.10)] text-[var(--vk-orange)]":e?"border-[rgba(255,143,122,0.24)] bg-[rgba(255,143,122,0.08)] text-[var(--vk-red)]":"border-[var(--vk-border)] bg-[var(--vk-bg-main)] text-[var(--vk-text-muted)]",tp=(0,s.useMemo)(()=>{let e=Array.isArray(J)?J:[],t=new Set;for(let e of E.pN)t.add(e.name);for(let n of e)n.name&&t.add(n.name);for(let e of q)e.agent&&t.add(e.agent);return eD?.codingAgent&&t.add(eD.codingAgent),eI&&t.add(eI),0===t.size&&t.add(eD?.codingAgent||ea),[...t]},[J,eD?.codingAgent,q,eI]),tu=(0,s.useMemo)(()=>{let e={};for(let t of E.pN)e[(0,I.q)(t.name)]={name:t.name,ready:!1,installed:!1,configured:!1,homepage:t.homepage,description:t.description,installHint:t.installHint??null,installUrl:t.installUrl??t.homepage??null,setupUrl:t.setupUrl??t.homepage??null};for(let t of Array.isArray(J)?J:[]){if(!t.name)continue;let n=(0,I.q)(t.name),a=(0,E.h7)(t.name);e[(0,I.q)(t.name)]={name:a?.name??t.name,ready:!0===t.ready,installed:!1!==t.installed,configured:!0===t.configured,homepage:"string"==typeof t.homepage?t.homepage:a?.homepage??e[n]?.homepage??null,description:"string"==typeof t.description?t.description:a?.description??e[n]?.description??null,installHint:"string"==typeof t.installHint?t.installHint:a?.installHint??e[n]?.installHint??null,installUrl:"string"==typeof t.installUrl?t.installUrl:a?.installUrl??e[n]?.installUrl??null,setupUrl:"string"==typeof t.setupUrl?t.setupUrl:a?.setupUrl??e[n]?.setupUrl??null}}return e},[J]),tm=(0,s.useMemo)(()=>{let e={};for(let t of Array.isArray(J)?J:[])t.name&&t.runtimeModelCatalog&&(e[(0,I.q)(t.name)]=t.runtimeModelCatalog);return e},[J]),tx=(0,s.useCallback)(e=>{let t=tu[(0,I.q)(e)],n=(0,E.h7)(e),a=t?.installed?t?.setupUrl??n?.setupUrl??t?.homepage??n?.homepage:t?.installUrl??n?.installUrl??t?.setupUrl??n?.setupUrl??t?.homepage??n?.homepage;a&&window.open(a,"_blank","noopener,noreferrer")},[tu]);async function th(t,n){eZ(!0),eJ(null);try{if(e&&!f)throw Error("Pair or reconnect a laptop before saving preferences.");let a=await fetch((0,O.S)("/api/preferences",f),{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)}),r=await a.json().catch(()=>null);if(!a.ok)throw Error(r?.error??r?.reason??`Failed to save preferences: ${a.status}`);let l=eh(r?.preferences,t.codingAgent||ea);return eH(l),eE(l.codingAgent),n?.closeDialog!==!1&&eX(!1),!0}catch(e){return eJ(e instanceof Error?e.message:"Failed to save preferences"),!1}finally{eZ(!1)}}(0,s.useEffect)(()=>{let e=!1;return async function(){if(!S){e||(eH(null),eJ(null),eG(!1));return}eG(!0);try{let t=await fetch((0,O.S)("/api/preferences",f)),n=await t.json().catch(()=>null);if(!t.ok)throw Error(n?.error??n?.reason??`Failed to load preferences: ${t.status}`);if(e)return;let a=eh(n?.preferences,ea);eH(a),eJ(null)}catch(t){if(e)return;eH(eh(null,ea)),eJ(t instanceof Error?t.message:"Failed to load preferences")}finally{e||eG(!1)}}(),()=>{e=!0}},[f,S]),(0,s.useEffect)(()=>{eD&&(eI||eE(eD.codingAgent))},[eD,eI]),(0,s.useEffect)(()=>{if(!eW){if(!eD||e&&!f)return void eX(!1);eD.onboardingAcknowledged||eX(!0)}},[f,eD,eW,e]),(0,s.useEffect)(()=>{if(0!==tp.length&&(!eI||!tp.includes(eI))){let e=eD?.codingAgent||ea;eE(tp.includes(e)?e:tp[0]??ea)}},[tp,eD?.codingAgent,eI]),(0,s.useEffect)(()=>{let e=eI||tr?.agent||eD?.codingAgent||ea,t=tr&&(0,I.q)(tr.agent)===(0,I.q)(e)?tr.agentModel:null,n=tr&&(0,I.q)(tr.agent)===(0,I.q)(e)?tr.agentReasoningEffort:null;eU(ew(e,eD?.modelAccess??(0,et.v)(null),tm,t,n))},[eD?.modelAccess,eD?.codingAgent,tm,eI,tr]);let tg=(0,s.useCallback)(()=>{e&&!f?eP("Pair or reconnect a laptop before adding a workspace."):(e_(null),eP(null),eB(!0),em())},[f,e,em]);(0,s.useEffect)(()=>{eK&&!eQ&&(eY(!1),tg())},[eK,eQ]);let tf=(0,s.useCallback)(async t=>{let n=eA.trim(),a=ek(eM),r=ey(eM),l=t?.bridgeId??f??null;if(e&&!l)return eP("Pair or reconnect a laptop before launching an agent session."),!1;let s=t?.projectId??i??q[0]?.id;if(!s)return eP("No project is configured in conductor.yaml"),!1;let o=eI||ea,d=tu[(0,I.q)(o)]??null;if(d&&!d.ready)return eP(d.installed?`${ep(o)} is not ready yet. Finish setup or authentication and try again.`:`${ep(o)} is not installed on this machine yet. Open setup and try again.`),tx(o),!1;eL(!0),eP(null);try{let e=await fetch((0,O.S)("/api/sessions",l),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectId:s,prompt:n,...t?.issueId?.trim()?{issueId:t.issueId.trim()}:{},agent:o,...t?.branch?{branch:t.branch}:{},...t?.baseBranch?{baseBranch:t.baseBranch}:{},..."boolean"==typeof t?.useWorktree?{useWorktree:t.useWorktree}:{},...t?.permissionMode?{permissionMode:t.permissionMode}:{},...a?{model:a}:{},...r?{reasoningEffort:r}:{},...t?.attachments&&t.attachments.length>0?{attachments:t.attachments}:{}})}),i=await e.json().catch(()=>null);if(!e.ok)throw Error(i?.error??`Failed to create workspace: ${e.status}`);if(!i?.session?.id)throw Error("Session created but response is missing session id");return eS(""),em(),e3.current=i.session.id,await ej(),tn({projectId:s,sessionId:i.session.id,tab:"terminal",bridgeId:l},"push"),!0}catch(e){return eP(e instanceof Error?e.message:"Failed to create workspace"),!1}finally{eL(!1)}},[tu,eM,tn,tx,q,eA,ej,eI,f,i,e,em]),tb=(0,s.useCallback)(async e=>{let t=await fetch(`/api/sessions/${encodeURIComponent(e)}/archive`,{method:"POST"}),n=await t.json().catch(()=>null);if(404===t.status&&(t=await fetch(`/api/sessions/${encodeURIComponent(e)}/actions`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"archive"})}),n=await t.json().catch(()=>null)),!t.ok)throw Error(n?.error??`Failed to archive session: ${t.status}`);o===e&&tn({projectId:null,sessionId:null,workspaceView:null,tab:null},"replace"),await ej()},[tn,ej,o]),tv=(0,s.useCallback)(async t=>{if(e&&!f)return void e_("Pair or reconnect a laptop before adding a workspace.");eT(!0),e_(null);try{let e=await fetch((0,O.S)("/api/workspaces",f),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)}),n=await e.json().catch(()=>null);if(!e.ok)throw Error(n?.error??`Failed to add workspace: ${e.status}`);let a=n?.project?.id;if(!a)throw Error("Workspace created but response is missing project id");await D(),eS(""),em(),eB(!1),tn({projectId:a,sessionId:null,workspaceView:"chat",tab:null,bridgeId:f??null},"push")}catch(e){e_(e instanceof Error?e.message:"Failed to add workspace")}finally{eT(!1)}},[f,tn,D,e,em]),tj=!eW&&!!eD&&(!e||!!f)&&!eD.onboardingAcknowledged,tw=eD??eh(null,eI||ea),tk=eI||tw.codingAgent||ea,ty=i??e6?.projectId??null;(0,L.Q)({enabled:!eW,projectId:ty,preferences:tw.notifications,bridgeId:f});let tN=(0,s.useCallback)(e=>{tn({projectId:e,sessionId:null,workspaceView:e?d:null,tab:null},"push"),eE(eD?.codingAgent||ea),eu()},[eu,tn,eD?.codingAgent,d]),tC=(0,s.useCallback)((e,t)=>{let n=e9.get(e)??null;tn({projectId:n?.projectId??i??null,sessionId:e,tab:t?.tab??"terminal"},"push"),eu()},[eu,tn,i,e9]),tA=(0,s.useCallback)(()=>{e&&!f?t.push("/bridge/connect"):eX(!0)},[f,e,t]),tS=(0,s.useCallback)(()=>{eF||eB(!1)},[eF]),tI=(0,s.useCallback)(()=>{eV||tj||(eX(!1),eJ(null))},[tj,eV]),tE=(0,s.useCallback)(async e=>{let t=encodeURIComponent(e),n=await fetch((0,O.S)(`/api/repositories/${t}`,f),{method:"DELETE"});(404===n.status||405===n.status)&&(n=await fetch((0,O.S)(`/api/repositories?id=${t}`,f),{method:"DELETE"}));let a=await n.json().catch(()=>null);if(!n.ok)throw Error(a?.error??`Failed to unlink project (${n.status})`);await D()},[f,D]),tM=(0,s.useMemo)(()=>ex?(0,a.jsx)(es,{projects:q,selectedProjectId:i,onSelectProject:tN,onUnlinkProject:tE,sessions:ef,selectedSessionId:o,onSelectSession:tC,onArchiveSession:tb,onCreateWorkspace:tg}):null,[ef,tb,tN,tC,tE,tg,q,i,o,ex]),tU=(0,s.useMemo)(()=>"board"===d?(0,a.jsx)(eo,{projectId:i,bridgeId:f,defaultAgent:tk,agentOptions:tp,projectSessions:tl}):(0,a.jsx)(eC,{prompt:eA,setPrompt:eS,selectedAgent:tk,setSelectedAgent:eE,agentStates:tu,modelSelection:eM,setModelSelection:eU,modelAccess:tw.modelAccess,runtimeModelCatalogs:tm,agentOptions:tp,projects:q,bridges:v,selectedBridgeId:u,setSelectedBridgeId:m,requiresPairedDeviceScope:e,selectedProjectId:i,onSelectProject:tN,projectLabel:i??"All projects",hasProject:q.length>0,creating:e$,error:te,onOpenAddWorkspace:tg,onOpenAgentSetup:tx,onCreate:tf}),[tp,tu,v,e$,tf,eM,tx,tg,q,tl,eA,tk,tw.modelAccess,e,tm,u,i,eS,te,d]),t$=(0,s.useMemo)(()=>tr?(0,a.jsxs)("div",{className:"flex min-h-0 flex-1 flex-col overflow-hidden",children:[(0,a.jsx)("div",{className:"border-b border-[var(--vk-border)] bg-[var(--vk-bg-panel)]/70 px-3 py-3 sm:px-4",children:(0,a.jsxs)("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between",children:[(0,a.jsxs)("div",{className:"min-w-0",children:[(0,a.jsx)("p",{className:"text-[11px] uppercase tracking-[0.12em] text-[var(--vk-text-muted)]",children:"Project Workspace"}),(0,a.jsxs)("p",{className:"mt-1 truncate text-[14px] text-[var(--vk-text-strong)]",children:[tr.id," \xb7 ",tr.defaultBranch||"main"]})]}),(0,a.jsxs)("div",{className:"inline-flex w-fit rounded-[6px] border border-[var(--vk-border)] p-1",children:[(0,a.jsx)("button",{type:"button",onClick:()=>tn({projectId:tr.id,workspaceView:"chat"},"replace"),className:`min-h-[32px] rounded-[4px] px-3 text-[13px] ${"chat"===d?"bg-[var(--vk-bg-active)] text-[var(--vk-text-strong)]":"text-[var(--vk-text-muted)] hover:bg-[var(--vk-bg-hover)]"}`,children:"CLI launchpad"}),(0,a.jsx)("button",{type:"button",onClick:()=>tn({projectId:tr.id,workspaceView:"board"},"replace"),className:`min-h-[32px] rounded-[4px] px-3 text-[13px] ${"board"===d?"bg-[var(--vk-bg-active)] text-[var(--vk-text-strong)]":"text-[var(--vk-text-muted)] hover:bg-[var(--vk-bg-hover)]"}`,children:"Board view"})]})]})}),(0,a.jsx)("div",{className:"min-h-0 flex-1 overflow-hidden",children:tU})]}):tU,[tn,tr,tU,d]),tL=(0,s.useMemo)(()=>A?(0,a.jsx)("div",{className:"flex h-full min-h-0 flex-1 items-center justify-center bg-[var(--vk-bg-main)] px-4",children:(0,a.jsxs)("div",{className:"w-full max-w-md rounded-[12px] border border-[var(--vk-border)] bg-[var(--vk-bg-panel)] px-5 py-5 text-center shadow-[0_18px_50px_rgba(0,0,0,0.18)]",children:[(0,a.jsx)("div",{className:"mx-auto flex h-11 w-11 items-center justify-center rounded-full border border-[rgba(255,180,92,0.28)] bg-[rgba(255,180,92,0.10)] text-[var(--vk-orange)]",children:(0,a.jsx)(b.A,{className:"h-5 w-5 animate-spin"})}),(0,a.jsx)("h2",{className:"mt-4 text-[18px] font-medium text-[var(--vk-text-strong)]",children:"Reconnecting paired laptop"}),(0,a.jsx)("p",{className:"mt-2 text-[14px] leading-6 text-[var(--vk-text-muted)]",children:"Waiting for the selected laptop to report online before loading its projects and sessions."})]})}):o?(0,a.jsx)("div",{className:"relative min-h-0 h-full min-w-0 flex-1 overflow-hidden",children:e0.map(e=>{let t=e===o,n=t?ta:e9.get(e)??null;return(0,a.jsx)("div",{"aria-hidden":!t,className:t?"relative h-full min-w-0":"pointer-events-none absolute inset-0 overflow-hidden invisible",children:(0,a.jsx)(el,{sessionId:e,initialSession:n,bridgeId:f,active:t,suppressPreviewAutoOpen:t&&e3.current===e,immersiveMobileMode:t&&e5,onOpenSidebar:en})},e)})}):null!==i?(0,a.jsx)("div",{className:"min-h-0 flex-1 overflow-hidden",children:t$}):(0,a.jsx)("div",{className:"flex h-full min-h-0 w-full flex-1 overflow-hidden",children:(0,a.jsx)(ei,{projects:q,sessions:ef,onCreateWorkspace:tg,onSelectSession:tC})}),[ef,e0,t$,ta,o,tC,tg,q,i,e9,A,en]);return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)(G.G,{mobileSidebarOpen:Q,desktopSidebarOpen:X,onToggleSidebar:en,hideMobileSidebarToggle:e5,sidebar:tM,children:[e5?null:(0,a.jsx)(V.V,{title:ts,onOpenPreferences:tA,rightContent:(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("span",{className:`inline-flex items-center rounded-full border px-2.5 py-1 text-[12px] font-medium ${tc}`,title:td,children:to}),(0,a.jsx)(Z.J,{})]})}),(0,a.jsx)("div",{className:`flex min-h-0 min-w-0 flex-1 flex-col overflow-hidden ${e5?"bg-[#060404]":""}`,children:tL})]}),eq?(0,a.jsx)(ed,{open:eq,onClose:tS,onCreate:tv,creating:eF,error:eR,defaultAgent:tk,agentOptions:tp,modelAccess:tw.modelAccess,runtimeModelCatalogs:tm,bridgeId:f}):null,eQ||tj?(0,a.jsx)(ec,{open:eQ,mode:tj?"onboarding":"settings",creating:eV,error:ez,current:tw,projectCount:q.length,agentOptions:tp,agentStates:tu,runtimeModelCatalogs:tm,onRepositoriesChanged:D,onOnboardingComplete:({needsProject:e})=>{e&&eY(!0)},onOpenAgentSetup:tx,onClose:tI,onSave:th,bridgeId:f}):null]})}p.A,u.A,m.A,x.A,h.A,g.A,f.A,f.A,u.A,[{id:"vscode",label:"VS Code"},{id:"vscode-insiders",label:"VS Code Insiders"},{id:"cursor",label:"Cursor"},{id:"windsurf",label:"Windsurf"},{id:"intellij-idea",label:"IntelliJ IDEA"},{id:"zed",label:"Zed"},{id:"xcode",label:"Xcode"},{id:"antigravity",label:"Antigravity"},{id:"custom",label:"Custom"}].filter(e=>"custom"!==e.id),p.A,d.mWn,c.$$9,d.i4$,p.A;let eC=(0,s.memo)(function({prompt:e,setPrompt:t,selectedAgent:n,setSelectedAgent:r,agentStates:l,modelSelection:o,setModelSelection:d,modelAccess:c,runtimeModelCatalogs:p,agentOptions:u,projects:m,bridges:x,selectedBridgeId:h,setSelectedBridgeId:M,requiresPairedDeviceScope:U,selectedProjectId:$,onSelectProject:L,projectLabel:P,hasProject:q,creating:B,error:F,onOpenAddWorkspace:T,onOpenAgentSetup:R,onCreate:_}){let D=(0,s.useMemo)(()=>{let e=new Map(E.BO.map((e,t)=>[e,t]));return[...u].sort((t,n)=>{let a=e.get((0,I.q)(t))??Number.MAX_SAFE_INTEGER,r=e.get((0,I.q)(n))??Number.MAX_SAFE_INTEGER;return a!==r?a-r:ep(t).localeCompare(ep(n))})},[u]),H=ep(n),W=l[(0,I.q)(n)]??null,G=(0,s.useMemo)(()=>[...m].sort((e,t)=>e.id.localeCompare(t.id)),[m]),V=$??G[0]?.id??null,Z=(0,s.useMemo)(()=>G.find(e=>e.id===V)??null,[V,G]),z=(0,s.useMemo)(()=>x.filter(e=>e.connected),[x]),Q=(0,s.useMemo)(()=>!h||z.some(e=>e.bridgeId===h),[z,h]),[K,Y]=(0,s.useState)([]),[ee,et]=(0,s.useState)(!1),[en,ea]=(0,s.useState)(""),[er,el]=(0,s.useState)(""),[es,ei]=(0,s.useState)([]),[eo,ed]=(0,s.useState)(!1),[ec,ex]=(0,s.useState)(!1),[eh,eg]=(0,s.useState)(!1),[ef,eN]=(0,s.useState)(!1),[eC,eA]=(0,s.useState)("default"),[eS,eI]=(0,s.useState)([]),[eE,eM]=(0,s.useState)(!1),[eU,e$]=(0,s.useState)(null);(0,s.useEffect)(()=>{if(!Z){Y([]),ea(""),et(!1);return}Y([]),ea(Z.defaultBranch.trim()||"main"),et(!1)},[Z]),(0,s.useEffect)(()=>{if(!V){ei([]),el(""),ed(!1);return}ei([]),el(""),ed(!1)},[V]);let eL=(0,s.useCallback)(async()=>{if(!Z)return;let e=Z.defaultBranch.trim()||"main";if(!Z.path?.trim()){Y([e]),ea(t=>t.trim().length>0?t:e);return}et(!0);try{let t=new URLSearchParams({path:Z.path}),n=await fetch((0,O.S)(`/api/workspaces/branches?${t.toString()}`,h)),a=await n.json().catch(()=>null),r=Array.isArray(a?.branches)?a.branches.filter(e=>"string"==typeof e&&e.trim().length>0):[],l="string"==typeof a?.defaultBranch&&a.defaultBranch.trim().length>0?a.defaultBranch.trim():e,s=r.length>0?r:[l];Y(s),ea(e=>e.trim().length>0&&s.includes(e)?e:l)}catch{Y([e]),ea(e)}finally{et(!1)}},[h,Z]),eO=(0,s.useCallback)(async()=>{if(V){ed(!0);try{let e=await fetch((0,O.S)(`/api/boards?projectId=${encodeURIComponent(V)}`,h)),t=await e.json().catch(()=>null);if(!e.ok)throw Error(t?.error??`Failed to load tasks: ${e.status}`);let n=(Array.isArray(t?.columns)?t.columns:[]).flatMap(e=>Array.isArray(e.tasks)?e.tasks:[]),a=new Set,r=n.filter(e=>{let t=eu(e);return!(!t||a.has(t))&&(a.add(t),!0)});ei(r),el(e=>r.some(t=>eu(t)===e)?e:"")}catch{ei([]),el("")}finally{ed(!1)}}},[V,h]);(0,s.useEffect)(()=>{!eh||ee||K.length>0||eL()},[ee,eh,K.length,eL]),(0,s.useEffect)(()=>{!ec||eo||es.length>0||eO()},[es.length,eO,eo,ec]);let eP=(0,s.useMemo)(()=>eb(n,c,p),[c,p,n]),eq=(0,s.useMemo)(()=>es.find(e=>eu(e)===er)??null,[es,er]),eB=ek(o)??"",eF=(0,s.useMemo)(()=>{let e=new Set,t=[],a=eB.trim();for(let n of eP)e.has(n.id)||(e.add(n.id),t.push(n));return a&&!e.has(a)&&(e.add(a),t.unshift({id:a,label:function(e,t){let n=t.trim(),a=(0,I.q)(e);if(!n)return n;if("claude-code"===a){let e=n.toLowerCase();if("opus"===e)return"Claude Opus";if("sonnet"===e)return"Claude Sonnet";if("haiku"===e)return"Claude Haiku";let t=e.match(/^claude-(sonnet|opus|haiku)-(\d+)-(\d+)(?:-\d{8})?$/);if(t){let e=t[1];return`Claude ${e[0]?.toUpperCase()+e.slice(1)} ${t[2]}.${t[3]}`}}return n.split(/[-_]+/g).filter(Boolean).map(e=>"gpt"===e.toLowerCase()?"GPT":/^\d+(?:\.\d+)?$/.test(e)?e:e[0]?.toUpperCase()+e.slice(1)).join("-")}(n,a),description:"Current selected model.",access:[]})),t},[eP,n,eB]),eT=(0,s.useMemo)(()=>!W||W.ready||eB?eB?eF.find(e=>e.id===eB)?.label??eB:"Default":"Setup required",[eF,W,eB]),eR=(0,s.useMemo)(()=>ev(n,c,p,eB),[c,p,n,eB]),e_=ey(o)??"",eD=(0,s.useMemo)(()=>{let e=eR.find(e=>e.id===e_);return e?e.label:e_||(eR[0]?.label??"Default")},[eR,e_]),eH="z-50 min-w-[240px] max-w-[calc(100vw-32px)] rounded-[4px] border border-[var(--vk-border)] bg-[var(--vk-bg-panel)] p-2 shadow-[0_18px_50px_rgba(0,0,0,0.35)] sm:max-w-none",eW=`${eH} max-h-[min(360px,50vh)] overflow-y-auto`,eG="flex min-h-[44px] cursor-default items-center gap-2 rounded-[3px] px-3 py-2 text-[14px] leading-[21px] text-[var(--vk-text-normal)] outline-none hover:bg-[var(--vk-bg-hover)] focus:bg-[var(--vk-bg-hover)] sm:min-h-[36px]",eV=[{id:"default",label:"Default",icon:f.A},{id:"auto",label:"Auto",icon:v.A},{id:"ask",label:"Ask",icon:j.A},{id:"plan",label:"Plan",icon:w.A}],eZ=eV.find(e=>e.id===eC)??eV[0],ez="launchpad-attachment-input",eJ=B||eE,eQ=e=>{let t=e.repo?.trim();if(t){let e=t.split("/").filter(Boolean),n=e[e.length-1]?.replace(/\.git$/i,"");if(n)return n}return e.id},eX=Z?eQ(Z):null,eK=Z?`${eX} \xb7 ${en||Z.defaultBranch||"main"}`:q?P:"Select project",eY=eq?.taskRef?.trim()||eq?.issueId?.trim()||eq?.id||"Link task",e0=eq?em(eq.text):"Choose a task, bug, or issue from this project's board",e1=Z?.id??V??null,e4=(0,s.useCallback)(e=>{let t=Array.from(e.currentTarget.files??[]);if(e.currentTarget.value="",!t.length)return;let n=new Set(eS.map(e=>`${e.name}:${e.size}:${e.lastModified}`)),a=t.filter(e=>!n.has(`${e.name}:${e.size}:${e.lastModified}`));a.length>0&&eI(e=>[...e,...a]),e$(null)},[eS]),e2=(0,s.useCallback)(e=>{eI(t=>t.filter((t,n)=>n!==e))},[]),e3=(0,s.useCallback)(async()=>{let e;if(e$(null),!e1||!Z)return _({projectId:e1??void 0,...ef?{baseBranch:en||Z?.defaultBranch||void 0}:{branch:en||Z?.defaultBranch||void 0},issueId:er.trim()||void 0,bridgeId:h||void 0,useWorktree:ef,permissionMode:eC});eM(!0),e$(null);try{eS.length>0&&(e=await X({files:eS,projectId:Z.id,taskRef:er.trim()||void 0,bridgeId:h||void 0}))}catch(e){return e$(e instanceof Error?e.message:"Failed to upload attachment"),!1}finally{eM(!1)}let t=await _({projectId:e1??void 0,...ef?{baseBranch:en||Z.defaultBranch||void 0}:{branch:en||Z.defaultBranch||void 0},issueId:er.trim()||void 0,bridgeId:h||void 0,useWorktree:ef,permissionMode:eC,...e&&e.length>0?{attachments:e}:{}});return t&&(eI([]),e$(null)),t},[er,e1,_,eC,en,Z,Z?.defaultBranch,h,eS,ef]);return(0,s.useEffect)(()=>{eI([]),e$(null)},[e1]),(0,a.jsx)("section",{className:"flex h-full min-h-0 items-start justify-center overflow-auto bg-[var(--vk-bg-main)] px-3 py-4 sm:items-center sm:px-6 sm:py-6",children:(0,a.jsxs)("div",{className:"w-full max-w-[768px]",children:[(0,a.jsx)("h1",{className:"pb-4 text-center text-[30px] font-medium leading-[34px] tracking-[-0.7px] text-[var(--vk-text-strong)] sm:text-[36px] sm:leading-[40px] sm:tracking-[-0.9px]",children:"What would you like to work on?"}),h?null:(0,a.jsxs)("div",{className:"mb-4 flex items-start gap-2 rounded-[4px] border border-[var(--vk-border)] bg-[var(--vk-bg-panel)] px-3 py-2 text-[12px] leading-[18px] text-[var(--vk-text-muted)]",children:[(0,a.jsx)(g.A,{className:"mt-0.5 h-[14px] w-[14px] shrink-0"}),(0,a.jsx)("span",{children:U?"Pair or reconnect a laptop to browse workspaces and launch coding agents from the web dashboard.":"Showing projects and sessions from the local backend. Pair a laptop and select it here to browse that device instead."})]}),(0,a.jsxs)("div",{className:"mx-auto w-full rounded-[3px] border border-[var(--vk-border)] bg-[var(--vk-bg-panel)] p-px",children:[(0,a.jsxs)("div",{className:"flex flex-wrap items-center gap-2 border-b border-[var(--vk-border)] px-2 pb-[9px] pt-2",children:[(0,a.jsx)(J.N,{seed:{label:n},className:"h-[25px] w-[25px] border-none bg-transparent"}),(0,a.jsxs)(i.bL,{children:[(0,a.jsx)(i.l9,{asChild:!0,children:(0,a.jsxs)("button",{type:"button",className:"inline-flex h-[31px] max-w-[70vw] items-center rounded-[3px] border border-[var(--vk-border)] bg-[var(--vk-bg-panel)] px-[9px] py-[5px] text-[14px] leading-[21px] text-[var(--vk-text-normal)] outline-none hover:bg-[var(--vk-bg-hover)] data-[state=open]:bg-[var(--vk-bg-hover)] sm:max-w-none","aria-label":"Select agent",children:[(0,a.jsx)("span",{className:"truncate pr-1",children:H}),(0,a.jsx)(k.A,{className:"h-3 w-3 text-[var(--vk-text-muted)]"})]})}),(0,a.jsx)(i.ZL,{children:(0,a.jsxs)(i.UC,{align:"start",sideOffset:6,className:eW,children:[(0,a.jsx)("p",{className:"px-3 pb-1 text-[14px] font-semibold leading-[21px] text-[var(--vk-text-muted)]",children:"Agents"}),D.map(e=>{let t=e===n,s=l[(0,I.q)(e)]??null;return(0,a.jsxs)(i.q7,{onSelect:()=>r(e),className:eG,children:[(0,a.jsx)(J.N,{seed:{label:e},className:"h-6 w-6 border-none bg-transparent"}),(0,a.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,a.jsx)("div",{children:ep(e)}),s?.ready?null:(0,a.jsx)("div",{className:"truncate text-[12px] leading-[16px] text-[var(--vk-text-muted)]",children:s?.installed?"Setup required":"Not installed"})]}),(0,a.jsx)("span",{className:"ml-auto inline-flex h-4 w-4 items-center justify-center text-[var(--vk-text-strong)]",children:t?(0,a.jsx)(y.A,{className:"h-4 w-4"}):null})]},e)})]})})]}),(0,a.jsxs)(i.bL,{onOpenChange:ex,children:[(0,a.jsx)(i.l9,{asChild:!0,children:(0,a.jsxs)("button",{type:"button",disabled:!V,className:"ml-auto flex h-[31px] min-w-[220px] items-center rounded-[3px] border border-[var(--vk-border)] bg-[var(--vk-bg-panel)] px-[9px] py-[5px] text-left disabled:cursor-not-allowed disabled:opacity-50 sm:ml-0 sm:w-[286px]","aria-label":"Link task",children:[(0,a.jsx)("span",{className:"pr-2 text-[12px] uppercase tracking-[0.08em] text-[var(--vk-text-muted)]",children:"Task"}),(0,a.jsx)("span",{className:"min-w-0 flex-1 truncate text-[14px] leading-[21px] text-[var(--vk-text-normal)]",children:eY}),(0,a.jsx)(k.A,{className:"h-3 w-3 text-[var(--vk-text-muted)]"})]})}),(0,a.jsx)(i.ZL,{children:(0,a.jsxs)(i.UC,{align:"end",side:"bottom",sideOffset:6,className:eW,children:[(0,a.jsx)("p",{className:"px-3 pb-1 text-[14px] font-semibold leading-[21px] text-[var(--vk-text-muted)]",children:"Link task"}),(0,a.jsx)("p",{className:"px-3 pb-2 text-[12px] leading-[16px] text-[var(--text-faint)]",children:e0}),(0,a.jsxs)(i.q7,{onSelect:()=>el(""),className:eG,children:[(0,a.jsx)("span",{children:"No linked task"}),(0,a.jsx)("span",{className:"ml-auto inline-flex h-4 w-4 items-center justify-center text-[var(--vk-text-strong)]",children:er?null:(0,a.jsx)(y.A,{className:"h-4 w-4"})})]}),eo?(0,a.jsx)("div",{className:"px-3 py-2 text-[12px] leading-[18px] text-[var(--vk-text-muted)]",children:"Loading board tasks..."}):es.length>0?es.map(e=>{let t=eu(e),n=em(e.text),r=[e.type,e.priority].filter(Boolean).join(" \xb7 ");return(0,a.jsxs)(i.q7,{onSelect:()=>el(t),className:`${eG} min-w-[320px] items-start`,children:[(0,a.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,a.jsx)("div",{className:"truncate",children:e.taskRef?.trim()||n}),(0,a.jsxs)("div",{className:"truncate text-[12px] leading-[16px] text-[var(--text-faint)]",children:[e.taskRef?.trim()?n:t,r?` \xb7 ${r}`:""]})]}),(0,a.jsx)("span",{className:"ml-auto inline-flex h-4 w-4 items-center justify-center text-[var(--vk-text-strong)]",children:er===t?(0,a.jsx)(y.A,{className:"h-4 w-4"}):null})]},t)}):(0,a.jsx)("div",{className:"px-3 py-2 text-[12px] leading-[18px] text-[var(--vk-text-muted)]",children:"No existing tasks were found for this project."})]})})]})]}),(0,a.jsx)("div",{className:"rounded-[3.5px]",children:(0,a.jsxs)("div",{className:"flex flex-col gap-3 p-2",children:[(0,a.jsxs)("div",{className:"relative w-full",children:[(0,a.jsx)("textarea",{value:e,onChange:e=>t(e.target.value),placeholder:"Optional launch prompt. Leave empty to open the native CLI.",rows:1,className:"min-h-[24px] w-full resize-none bg-transparent pr-16 text-[16px] leading-[24px] text-[var(--vk-text-normal)] outline-none placeholder:text-[var(--vk-text-muted)]"}),(0,a.jsxs)("label",{htmlFor:ez,className:`absolute right-[18px] top-0 inline-flex h-[24px] w-[24px] items-center justify-center rounded-[4px] ${e1?"text-[var(--vk-text-muted)] hover:bg-[var(--vk-bg-hover)]":"cursor-not-allowed opacity-50"}`,children:[(0,a.jsx)("input",{id:ez,type:"file",accept:"*/*",multiple:!0,onChange:e4,disabled:!e1||eJ,className:"hidden"}),(0,a.jsx)(N.A,{className:"h-[14px] w-[14px]"})]}),(0,a.jsx)("button",{type:"button","aria-label":"Preview",className:"absolute right-0 top-0 inline-flex h-[24px] w-[24px] items-center justify-center rounded-[4px] text-[var(--vk-text-muted)] hover:bg-[var(--vk-bg-hover)]",children:(0,a.jsx)(C.A,{className:"h-[14px] w-[14px]"})})]}),eS.length>0?(0,a.jsx)("div",{className:"flex flex-wrap gap-1.5",children:eS.map((e,t)=>(0,a.jsxs)("span",{className:"inline-flex max-w-full items-center gap-1 rounded-[999px] border border-[var(--vk-border)] bg-[var(--vk-bg-main)] px-2 py-1 text-[11px] text-[var(--vk-text-muted)]",children:[(0,a.jsx)("span",{className:"max-w-[160px] truncate",title:e.name,children:e.name}),(0,a.jsx)("button",{type:"button","aria-label":`Remove attachment ${e.name}`,onClick:()=>e2(t),className:"inline-flex h-[14px] w-[14px] items-center justify-center rounded-full text-[var(--vk-text-muted)] hover:bg-[var(--vk-bg-hover)]",children:(0,a.jsx)(A.A,{className:"h-3 w-3"})})]},`${e.name}-${e.size}-${e.lastModified}-${t}`))}):null,(0,a.jsxs)("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-end sm:justify-between",children:[(0,a.jsxs)("div",{className:"flex min-w-0 flex-1 flex-wrap items-center gap-x-1 gap-y-2",children:[(0,a.jsxs)(i.bL,{children:[(0,a.jsx)(i.l9,{asChild:!0,children:(0,a.jsx)("button",{type:"button",className:"inline-flex h-[29px] w-[29px] items-center justify-center rounded-[3px] border border-[var(--vk-border)] bg-[var(--vk-bg-panel)] text-[var(--vk-text-normal)] hover:bg-[var(--vk-bg-hover)]","aria-label":"Select workspace or project",children:(0,a.jsx)(f.A,{className:"h-[15px] w-[15px]"})})}),(0,a.jsx)(i.ZL,{children:(0,a.jsxs)(i.UC,{align:"start",sideOffset:6,className:eW,children:[(0,a.jsx)("p",{className:"px-3 pb-1 text-[14px] font-semibold leading-[21px] text-[var(--vk-text-muted)]",children:"Projects"}),G.map(e=>{let t=eQ(e),n=e.id!==t?e.id:e.path?.trim()||e.repo?.trim()||null;return(0,a.jsxs)(i.q7,{onSelect:()=>L(e.id),className:`${eG} min-w-[280px] items-start`,children:[(0,a.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,a.jsx)("div",{className:"truncate",children:t}),n?(0,a.jsx)("div",{className:"truncate text-[12px] leading-[16px] text-[var(--text-faint)]",children:n}):null]}),(0,a.jsx)("span",{className:"ml-auto inline-flex h-4 w-4 items-center justify-center text-[var(--vk-text-strong)]",children:e.id===V?(0,a.jsx)(y.A,{className:"h-4 w-4"}):null})]},e.id)}),(0,a.jsx)(i.wv,{className:"my-1 h-px bg-[var(--vk-border)]"}),(0,a.jsxs)(i.q7,{onSelect:T,className:eG,children:[(0,a.jsx)(S.A,{className:"h-4 w-4"}),(0,a.jsx)("span",{children:"Add Workspace"})]})]})})]}),eR.length>0?(0,a.jsxs)(i.bL,{children:[(0,a.jsx)(i.l9,{asChild:!0,children:(0,a.jsxs)("button",{type:"button","aria-label":"Select reasoning effort",className:"inline-flex h-[29px] items-center gap-[4px] rounded-[3px] border border-[var(--vk-border)] bg-[var(--vk-bg-panel)] px-[9px] py-[5px] text-[14px] leading-[21px] text-[var(--vk-text-normal)] hover:bg-[var(--vk-bg-hover)] disabled:cursor-not-allowed disabled:opacity-60",children:[(0,a.jsx)("span",{children:eD}),(0,a.jsx)(k.A,{className:"h-[10px] w-[10px] text-[var(--vk-text-muted)]"})]})}),(0,a.jsx)(i.ZL,{children:(0,a.jsxs)(i.UC,{align:"start",sideOffset:6,className:eH,children:[(0,a.jsx)("p",{className:"px-3 pb-1 text-[14px] font-semibold leading-[21px] text-[var(--vk-text-muted)]",children:"Reasoning"}),eR.map(e=>(0,a.jsxs)(i.q7,{onSelect:()=>d({...o,reasoningEffort:e.id}),className:eG,children:[(0,a.jsx)("span",{children:e.label}),(0,a.jsx)("span",{className:"ml-auto inline-flex h-4 w-4 items-center justify-center text-[var(--vk-text-strong)]",children:e_===e.id?(0,a.jsx)(y.A,{className:"h-4 w-4"}):null})]},e.id))]})})]}):null,(0,a.jsxs)(i.bL,{children:[(0,a.jsx)(i.l9,{asChild:!0,children:(0,a.jsxs)("button",{type:"button",className:"inline-flex h-[29px] items-center gap-[4px] rounded-[3px] border border-[var(--vk-border)] bg-[var(--vk-bg-panel)] px-[9px] py-[5px] text-[14px] leading-[21px] text-[var(--vk-text-normal)] hover:bg-[var(--vk-bg-hover)] disabled:cursor-not-allowed disabled:opacity-60",children:[(0,a.jsx)("span",{children:eT}),(0,a.jsx)(k.A,{className:"h-[10px] w-[10px] text-[var(--vk-text-muted)]"})]})}),(0,a.jsx)(i.ZL,{children:(0,a.jsxs)(i.UC,{align:"start",sideOffset:6,className:eH,children:[(0,a.jsx)("p",{className:"px-3 pb-1 text-[14px] font-semibold leading-[21px] text-[var(--vk-text-muted)]",children:"Model"}),(0,a.jsxs)(i.q7,{onSelect:()=>d(ew(n,c,p,Z?.agentModel,Z?.agentReasoningEffort)),className:eG,children:[(0,a.jsx)("span",{children:"Default"}),(0,a.jsx)("span",{className:"ml-auto inline-flex h-4 w-4 items-center justify-center text-[var(--vk-text-strong)]",children:eB?null:(0,a.jsx)(y.A,{className:"h-4 w-4"})})]}),eF.map(e=>(0,a.jsxs)(i.q7,{onSelect:()=>{var t;let a;return a=ev(n,c,p,t=e.id),void d({catalogModel:t,customModel:"",reasoningEffort:a.some(e=>e.id===o.reasoningEffort)?o.reasoningEffort:ej(n,c,p,t)})},className:eG,children:[(0,a.jsx)("span",{children:e.label}),(0,a.jsx)("span",{className:"ml-auto inline-flex h-4 w-4 items-center justify-center text-[var(--vk-text-strong)]",children:eB===e.id?(0,a.jsx)(y.A,{className:"h-4 w-4"}):null})]},e.id)),0===eF.length?(0,a.jsx)("div",{className:"px-3 py-2 text-[12px] leading-[18px] text-[var(--vk-text-muted)]",children:"Models will appear here after the selected agent is installed and its runtime catalog is detected."}):null,W&&!W.ready?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(i.wv,{className:"my-1 h-px bg-[var(--vk-border)]"}),(0,a.jsx)("button",{type:"button",onClick:()=>R(n),className:"flex w-full items-center rounded-[3px] px-3 py-2 text-left text-[13px] text-[var(--vk-orange)] transition hover:bg-[var(--vk-bg-hover)]",children:W.installed?"Open setup":"Open install guide"})]}):null]})})]}),(0,a.jsxs)(i.bL,{children:[(0,a.jsx)(i.l9,{asChild:!0,children:(0,a.jsxs)("button",{type:"button",className:"inline-flex h-[29px] items-center gap-[4px] rounded-[3px] border border-[var(--vk-border)] bg-[var(--vk-bg-panel)] px-[9px] py-[5px] text-[14px] leading-[21px] text-[var(--vk-text-normal)] hover:bg-[var(--vk-bg-hover)]",children:[(0,a.jsx)("span",{children:eZ.label}),(0,a.jsx)(k.A,{className:"h-[10px] w-[10px] text-[var(--vk-text-muted)]"})]})}),(0,a.jsx)(i.ZL,{children:(0,a.jsxs)(i.UC,{align:"start",sideOffset:6,className:eH,children:[(0,a.jsx)("p",{className:"px-3 pb-1 text-[14px] font-semibold leading-[21px] text-[var(--vk-text-muted)]",children:"Permissions"}),eV.map(({id:e,label:t,icon:n})=>(0,a.jsxs)(i.q7,{onSelect:()=>eA(e),className:eG,children:[(0,a.jsx)(n,{className:"h-4 w-4"}),(0,a.jsx)("span",{children:t}),(0,a.jsx)("span",{className:"ml-auto inline-flex h-4 w-4 items-center justify-center text-[var(--vk-text-strong)]",children:eC===e?(0,a.jsx)(y.A,{className:"h-4 w-4"}):null})]},e))]})})]}),z.length>0?(0,a.jsxs)("label",{className:"inline-flex h-[29px] max-w-[260px] items-center gap-[6px] rounded-[3px] border border-[var(--vk-border)] bg-[var(--vk-bg-panel)] px-[9px] py-[5px] text-[14px] leading-[21px] text-[var(--vk-text-normal)]",children:[(0,a.jsx)(g.A,{className:"h-[14px] w-[14px] text-[var(--vk-text-muted)]"}),(0,a.jsxs)("select",{value:h,onChange:e=>M(e.target.value),className:"min-w-0 flex-1 bg-transparent text-[14px] text-[var(--vk-text-normal)] outline-none",children:[U?null:(0,a.jsx)("option",{value:"",children:"Local backend"}),z.map(e=>(0,a.jsxs)("option",{value:e.bridgeId,children:[e.hostname," \xb7 ",e.os]},e.bridgeId))]})]}):(0,a.jsxs)("div",{className:"inline-flex h-[29px] items-center gap-[6px] rounded-[3px] border border-[var(--vk-border)] bg-[var(--vk-bg-panel)] px-[9px] py-[5px] text-[14px] leading-[21px] text-[var(--vk-text-muted)]",children:[(0,a.jsx)(g.A,{className:"h-[14px] w-[14px]"}),(0,a.jsx)("span",{children:h&&!Q?"Waiting for selected device":U?"No device connected":"Local backend"})]}),(0,a.jsxs)(i.bL,{onOpenChange:eg,children:[(0,a.jsx)(i.l9,{asChild:!0,children:(0,a.jsx)("button",{type:"button",disabled:!Z,className:"inline-flex min-h-[29px] max-w-[320px] items-center justify-center truncate text-[14px] leading-[21px] text-[var(--vk-text-normal)] hover:text-[var(--vk-text-strong)] disabled:cursor-not-allowed disabled:opacity-50",children:eK})}),(0,a.jsx)(i.ZL,{children:(0,a.jsxs)(i.UC,{align:"start",side:"bottom",sideOffset:6,avoidCollisions:!1,className:eW,children:[(0,a.jsx)("p",{className:"px-3 pb-1 text-[14px] font-semibold leading-[21px] text-[var(--vk-text-muted)]",children:"Branch"}),eX?(0,a.jsx)("p",{className:"px-3 pb-2 text-[12px] leading-[16px] text-[var(--text-faint)]",children:eX}):null,ee?(0,a.jsx)("div",{className:"px-3 py-2 text-[14px] leading-[21px] text-[var(--vk-text-muted)]",children:"Loading branches..."}):K.map(e=>(0,a.jsxs)(i.q7,{onSelect:()=>ea(e),className:eG,children:[(0,a.jsx)("span",{children:e}),(0,a.jsx)("span",{className:"ml-auto inline-flex h-4 w-4 items-center justify-center text-[var(--vk-text-strong)]",children:en===e?(0,a.jsx)(y.A,{className:"h-4 w-4"}):null})]},e))]})})]})]}),(0,a.jsx)("div",{className:"flex w-full justify-end sm:w-auto",children:(0,a.jsx)("button",{type:"button",onClick:e3,disabled:eJ||!V,className:"inline-flex min-h-[29px] items-center justify-center rounded-[3px] bg-[var(--vk-bg-hover)] px-[8px] py-[6.5px] text-[16px] leading-[16px] text-[var(--vk-text-strong)] transition-colors hover:bg-[var(--vk-bg-active)] disabled:cursor-not-allowed disabled:opacity-50",children:eJ?(0,a.jsx)(b.A,{className:"h-4 w-4 animate-spin"}):"Launch"})})]}),W&&!W.ready?(0,a.jsx)("div",{className:"rounded-[4px] border border-[var(--vk-border)] bg-[var(--vk-bg-main)] px-3 py-2 text-[13px] text-[var(--vk-text-normal)]",children:(0,a.jsxs)("div",{className:"flex flex-col gap-2 sm:flex-row sm:items-center sm:justify-between",children:[(0,a.jsxs)("div",{className:"min-w-0",children:[(0,a.jsxs)("p",{className:"text-[13px] text-[var(--vk-text-strong)]",children:[H," is not ready on this machine."]}),(0,a.jsx)("p",{className:"pt-0.5 text-[12px] text-[var(--vk-text-muted)]",children:W.installed?"Finish login or local setup to load models and start streaming sessions.":"Install the CLI first, then its models and authentication state will appear here."})]}),(0,a.jsx)("button",{type:"button",onClick:()=>R(n),className:"inline-flex h-[29px] items-center justify-center rounded-[3px] border border-[var(--vk-border)] px-3 text-[12px] text-[var(--vk-orange)] hover:bg-[var(--vk-bg-hover)]",children:W.installed?"Open setup":"Open install"})]})}):null,(0,a.jsxs)("label",{className:"flex items-start gap-2 rounded-[4px] border border-[var(--vk-border)] bg-[var(--vk-bg-main)] px-2 py-2 text-[13px] text-[var(--vk-text-normal)]",children:[(0,a.jsx)("input",{type:"checkbox",checked:ef,onChange:e=>eN(e.target.checked),className:"mt-0.5 h-4 w-4 rounded border border-[var(--vk-border)] bg-transparent accent-[var(--vk-orange)]"}),(0,a.jsxs)("span",{children:["Use worktree isolation",(0,a.jsx)("span",{className:"block text-[11px] text-[var(--vk-text-muted)]",children:"If unchecked, the session runs directly on the selected branch in the local repo."})]})]})]})})]}),F&&(0,a.jsx)("p",{className:"pt-2 text-[12px] text-[var(--status-error)]",children:F}),eU&&(0,a.jsx)("p",{className:"pt-2 text-[12px] text-[var(--status-error)]",children:eU})]})})})},12529:(e,t,n)=>{Promise.resolve().then(n.bind(n,6542))},33866:(e,t,n)=>{"use strict";n.d(t,{BO:()=>l,h7:()=>i,pN:()=>r});var a=n(5739);let r=[{name:"codex",label:"Codex",description:"OpenAI Codex CLI",homepage:"https://github.com/openai/codex",iconUrl:"https://cdn.jsdelivr.net/npm/simple-icons@latest/icons/openai.svg",installHint:"npm install -g @openai/codex",installUrl:"https://github.com/openai/codex",setupUrl:"https://chatgpt.com/codex"},{name:"gemini",label:"Gemini",description:"Google Gemini CLI",homepage:"https://ai.google.dev/gemini-api/docs",iconUrl:"https://cdn.jsdelivr.net/npm/simple-icons@latest/icons/googlegemini.svg",installHint:"npm install -g @google/gemini-cli",installUrl:"https://ai.google.dev/gemini-api/docs",setupUrl:"https://aistudio.google.com/"},{name:"qwen-code",label:"Qwen Code",description:"Qwen Code CLI",homepage:"https://qwenlm.github.io/announcements/",iconUrl:null,installHint:"npm install -g @qwen-code/qwen-code@latest",installUrl:"https://qwenlm.github.io/announcements/",setupUrl:"https://chat.qwen.ai/"},{name:"droid",label:"Droid",description:"Factory Droid CLI",homepage:"https://github.com/Factory-AI/factory",iconUrl:"https://raw.githubusercontent.com/Factory-AI/factory/main/docs/images/droid_logo_cli.png",installHint:"npm install -g @factory/cli",installUrl:"https://github.com/Factory-AI/factory"},{name:"claude-code",label:"Claude Code",description:"Claude Code CLI",homepage:"https://www.anthropic.com/claude",iconUrl:"https://cdn.jsdelivr.net/npm/simple-icons@latest/icons/claude.svg",installHint:"npm install -g @anthropic-ai/claude-code",installUrl:"https://www.anthropic.com/claude-code",setupUrl:"https://claude.ai/"},{name:"amp",label:"Amp",description:"Amp Code CLI",homepage:"https://www.ampcode.com",iconUrl:"https://ampcode.com/amp-mark-color.svg",installHint:"npm install -g @sourcegraph/amp",installUrl:"https://www.ampcode.com"},{name:"opencode",label:"OpenCode",description:"OpenCode CLI",homepage:"https://opencode.ai",iconUrl:null,installHint:"npm install -g opencode-ai",installUrl:"https://opencode.ai"},{name:"github-copilot",label:"GitHub Copilot",description:"GitHub Copilot CLI",homepage:"https://docs.github.com/copilot/how-tos/copilot-cli",iconUrl:"https://cdn.jsdelivr.net/npm/simple-icons@latest/icons/githubcopilot.svg",installHint:"npm install -g @github/copilot",installUrl:"https://docs.github.com/copilot/how-tos/copilot-cli",setupUrl:"https://github.com/settings/copilot"},{name:"cursor-cli",label:"Cursor Agent",description:"Cursor Agent CLI",homepage:"https://www.cursor.com",iconUrl:"https://cdn.jsdelivr.net/npm/simple-icons@latest/icons/cursor.svg",installHint:"npm install -g cursor-agent"},{name:"ccr",label:"CCR",description:"Claude Code Router",homepage:"https://www.npmjs.com/package/@musistudio/claude-code-router",iconUrl:"https://cdn.jsdelivr.net/npm/simple-icons@latest/icons/claude.svg",installHint:"npm install -g @musistudio/claude-code-router",installUrl:"https://www.npmjs.com/package/@musistudio/claude-code-router"}],l=r.map(e=>e.name),s=new Map(r.map(e=>[(0,a.q)(e.name),e]));function i(e){return s.get((0,a.q)(e))??null}},51164:(e,t,n)=>{"use strict";n.d(t,{v:()=>c});var a=n(76196);let r=["pro","max","api"],l=["chatgpt","api"],s=["default"],i=["oauth","api"],o=["oauth","api"];function d(e,t,n){return"string"==typeof e&&t.includes(e)?e:n}function c(e){let t=!e||"object"!=typeof e||Array.isArray(e)?{}:{...e},n=(0,a.Zp)();return{amp:d(t.amp,s,n.amp),claudeCode:d(t.claudeCode,r,n.claudeCode),codex:d(t.codex,l,n.codex),cursorCli:d(t.cursorCli,s,n.cursorCli),droid:d(t.droid,s,n.droid),gemini:d(t.gemini,i,n.gemini),githubCopilot:d(t.githubCopilot,s,n.githubCopilot),opencode:d(t.opencode,s,n.opencode),qwenCode:d(t.qwenCode,o,n.qwenCode),ccr:d(t.ccr,s,n.ccr)}}},73927:(e,t,n)=>{"use strict";function a(e,t){return e&&t?e.modelsByAccess[t]??[]:[]}function r(e,t){return e&&t?e.defaultModelByAccess[t]??null:null}function l(e,t,n){if(!e)return[];let a=t?.trim();return a&&e.reasoningOptionsByModel?.[a]?.length?e.reasoningOptionsByModel[a]??[]:n?e.reasoningOptionsByAccess?.[n]??[]:[]}function s(e,t,n){if(!e)return null;let a=t?.trim();return a&&e.defaultReasoningByModel?.[a]?e.defaultReasoningByModel[a]??null:n?e.defaultReasoningByAccess?.[n]??null:null}n.d(t,{NN:()=>r,V3:()=>a,Z9:()=>s,a3:()=>l})}},e=>{e.O(0,[3036,691,3357,5587,3051,1257,6343,7720,9756,587,1968,7358],()=>e(e.s=12529)),_N_E=e.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[824],{69755:(e,n,t)=>{Promise.resolve().then(t.bind(t,98835))},98835:(e,n,t)=>{"use strict";t.d(n,{default:()=>j});var i=t(54568),s=t(7620),o=t(79748),r=t(46012),a=t(862),d=t(84169),l=t(39702),c=t(29450),u=t(4997),h=t(86181),p=t(53649),b=t(86011),m=t(59207),f=t(35821),S=t(95106),g=t(10926);function j({requiresPairedDeviceScope:e=!1}){let n=(0,o.useParams)(),t=(0,o.useRouter)(),v=(0,o.useSearchParams)(),w=(0,s.useMemo)(()=>(0,g.DW)(n.id)?.bridgeId??null,[n.id]),I=!e||!!w,{session:x}=(0,f.w)(n.id,null,{bridgeId:w,enabled:I}),k=x?.bridgeId??w,{projects:E}=(0,p.U)(k,{enabled:!e||!!k}),{preferences:P,loading:C}=(0,m.g)(k,{enabled:!e||!!k}),{mobileSidebarOpen:M,desktopSidebarOpen:O,toggleSidebar:N,closeSidebarOnMobile:$}=(0,r.T)({initialDesktopOpen:!1}),y=M||O,{sessions:L,refresh:R}=(0,S.t)(void 0,{enabled:y&&(!e||!!k),bridgeId:k}),[T,U]=(0,s.useState)(null),[_,D]=(0,s.useState)(!1),W=(0,s.useMemo)(()=>{let e=v.get("tab");return null===e||"terminal"===e},[v])&&_,z=x?.projectId??null;(0,b.Q)({enabled:!C&&null!==z,projectId:z,preferences:P?.notifications??null,bridgeId:k});let J=(0,s.useMemo)(()=>x?[x.projectId,x.branch].filter(Boolean).join(" \xb7 "):T||"Session",[x,T]),A=(0,s.useMemo)(()=>(function(e){let n=(0,g.C0)(e);if(!n)return"/";let t=new URLSearchParams;return t.set("bridge",n),`/?${t.toString()}`})(k),[k]);async function B(e){let i=await fetch(`/api/sessions/${encodeURIComponent(e)}/archive`,{method:"POST"}),s=await i.json().catch(()=>null);if(404===i.status&&(i=await fetch(`/api/sessions/${encodeURIComponent(e)}/actions`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"archive"})}),s=await i.json().catch(()=>null)),!i.ok)throw Error(s?.error??`Failed to archive session: ${i.status}`);e===n.id?t.replace(A):await R()}return((0,s.useEffect)(()=>{x?.projectId?U(x.projectId):!T&&E.length>0&&U(E[0]?.id??null)},[x?.projectId,E,T]),(0,s.useEffect)(()=>{let e="function"==typeof window.matchMedia?window.matchMedia("(pointer: coarse)"):null,n=()=>{D((0,h.k$)())};return n(),window.addEventListener("resize",n),e?.addEventListener?.("change",n),()=>{window.removeEventListener("resize",n),e?.removeEventListener?.("change",n)}},[]),n.id)?(0,i.jsxs)(a.G,{mobileSidebarOpen:M,desktopSidebarOpen:O,onToggleSidebar:N,hideMobileSidebarToggle:W,sidebar:y?(0,i.jsx)(c.WorkspaceSidebarPanel,{projects:E,selectedProjectId:T,onSelectProject:e=>{null===e?t.push(A):U(e)},sessions:L,selectedSessionId:n.id,onSelectSession:(e,n)=>{let i=new URLSearchParams;i.set("tab",n?.tab??"terminal"),t.push(`/sessions/${encodeURIComponent(e)}?${i.toString()}`),$()},onArchiveSession:B,onCreateWorkspace:()=>{t.push(A)}}):null,children:[W?null:(0,i.jsx)(d.V,{title:J,rightContent:(0,i.jsx)(l.J,{})}),(0,i.jsx)("div",{className:`flex min-h-0 min-w-0 flex-1 flex-col overflow-hidden ${W?"bg-[#060404]":""}`,children:(0,i.jsx)(u.SessionDetail,{sessionId:n.id,initialSession:x,bridgeId:k,immersiveMobileMode:W,onOpenSidebar:N},n.id)})]}):(0,i.jsx)("div",{className:"flex h-dvh min-h-[100dvh] items-center justify-center",children:(0,i.jsx)("span",{className:"text-[13px] text-[var(--text-muted)]",children:"No session ID provided"})})}}},e=>{e.O(0,[3357,5587,3051,1257,2222,7720,9756,4997,9450,587,1968,7358],()=>e(e.s=69755)),_N_E=e.O()}]);
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|