dorkos 0.101.0 → 0.103.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +10 -10
- package/dist/bin/cli.js +2935 -1738
- package/dist/browser/native/package-manifest.json +1 -1
- package/dist/browser/source-manifest.json +1 -1
- package/dist/client/assets/{AboutPage-CwxCTicf.js → AboutPage-BNVLNd3q.js} +1 -1
- package/dist/client/assets/{ActivityRow-D0QQ0SFu.js → ActivityRow-CvjAfRBM.js} +1 -1
- package/dist/client/assets/AdapterIcon-wGSXBn-k.js +1 -0
- package/dist/client/assets/AdapterSetupWizard-CmSJ2sno.js +2 -0
- package/dist/client/assets/{AgentRequestCard-BLLmoAES.js → AgentRequestCard-D62XQXBM.js} +4 -4
- package/dist/client/assets/{AppearancePage-GqrWckTQ.js → AppearancePage-Bds0L-wm.js} +1 -1
- package/dist/client/assets/{AttentionSignalRow-sEhnIPBB.js → AttentionSignalRow-C6RkjCWK.js} +1 -1
- package/dist/client/assets/{BaseTanStackRouterDevtoolsPanel-B-iktbLX-BXjzhT_D.js → BaseTanStackRouterDevtoolsPanel-B-iktbLX-CerNarG-.js} +24 -24
- package/dist/client/assets/{BlintzCanvas-CXi0fvcM.js → BlintzCanvas-CUqethk_.js} +24 -24
- package/dist/client/assets/{CanvasCsvContent-QhDSf8Pd.js → CanvasCsvContent-DdbIUPMJ.js} +1 -1
- package/dist/client/assets/CanvasFileContent-CX2VNF4o.js +2 -0
- package/dist/client/assets/CanvasModel3dContent-OprkQsgq.js +2 -0
- package/dist/client/assets/{CodeMirrorDiff-BMG7DBg2.js → CodeMirrorDiff-BnMdmI0K.js} +1 -1
- package/dist/client/assets/{CodeMirrorEditor-BYdz0ipX.js → CodeMirrorEditor-C7T-DaVA.js} +1 -1
- package/dist/client/assets/ConnectionAccessLists-B3QGnSxM.js +1 -0
- package/dist/client/assets/ConnectionsPage-E3br6maQ.js +11 -0
- package/dist/client/assets/{ConventionPage-y-Zq3Klp.js → ConventionPage-vMN5qEwP.js} +3 -3
- package/dist/client/assets/{ExtensionPageRoute-gZKKPhaj.js → ExtensionPageRoute-DFkPAzjs.js} +2 -2
- package/dist/client/assets/{FloatingTanStackRouterDevtools-CqogiFob-CbKIa11X.js → FloatingTanStackRouterDevtools-CqogiFob-BP4itJWW.js} +1 -1
- package/dist/client/assets/HandlePage-De4D_IVs.js +1 -0
- package/dist/client/assets/{LexicalField-Ceoa9flp.js → LexicalField-BbUXXxTw.js} +1 -1
- package/dist/client/assets/{ManagesPage-Dcqdm6I8.js → ManagesPage-DsNSZHug.js} +1 -1
- package/dist/client/assets/Marketplace-D4zHIIak.js +36 -0
- package/dist/client/assets/MarketplaceSourcesView-DILS8-ca.js +1 -0
- package/dist/client/assets/{McpAppFrame-B1ThSf2U.js → McpAppFrame-Cl_2azg-.js} +2 -2
- package/dist/client/assets/McpSigninBody-TpoSImsV.js +1 -0
- package/dist/client/assets/{Model3dViewer-DlcQ3-LS.js → Model3dViewer-C-iyu5eV.js} +1 -1
- package/dist/client/assets/NamePage-C-3w8oeg.js +1 -0
- package/dist/client/assets/NewDirectMessageMenu-bJE7b4lX.js +1 -0
- package/dist/client/assets/{NotificationsPage-CQQIdLtI.js → NotificationsPage-CL23qwVw.js} +1 -1
- package/dist/client/assets/OperatorIdentityForm-ixaqUfIO.js +1 -0
- package/dist/client/assets/{PermissionsPage-TX-d7aVQ.js → PermissionsPage-D4xbxTkc.js} +1 -1
- package/dist/client/assets/{PersonalityPicker-C_9JVOva.js → PersonalityPicker-CTvPlN-k.js} +1 -1
- package/dist/client/assets/{PersonalityPopover-BoTED73t.js → PersonalityPopover-Coy0eaIg.js} +1 -1
- package/dist/client/assets/PhotoPage-DpEEXO3e.js +1 -0
- package/dist/client/assets/PreviewRefusedNotice-B2GLqLYi.js +1 -0
- package/dist/client/assets/{PromptSuggestionChips-B_oUtFMI.js → PromptSuggestionChips-YdKEWyNT.js} +1 -1
- package/dist/client/assets/RoomSurface-BwIBBvYq.js +44 -0
- package/dist/client/assets/{RoomsPage-zOjjpHdA.js → RoomsPage-DaEXPz65.js} +1 -1
- package/dist/client/assets/RunsOnPopover-tvbVPKVf.js +1 -0
- package/dist/client/assets/SessionsPage-CAdV_XBY.js +1 -0
- package/dist/client/assets/SkillsPage-B4F19LmV.js +1 -0
- package/dist/client/assets/{TasksPage-BZapA_v6.js → TasksPage-BXcaEx3V.js} +1 -1
- package/dist/client/assets/ToolsPage-BYBwPql_.js +2 -0
- package/dist/client/assets/{TopologyGraph-BMcPxZsA.js → TopologyGraph-CZ2Y5I2e.js} +1 -1
- package/dist/client/assets/TourHost-BNpDrN0O.js +1 -0
- package/dist/client/assets/UnlinkDialog-Zyuh5qZY.js +1 -0
- package/dist/client/assets/{UnreadDivider-KSqqcHKN.js → UnreadDivider-Dh67_mAz.js} +1 -1
- package/dist/client/assets/_shell-lcu5vkQ7.js +98 -0
- package/dist/client/assets/{_shell._home-Bp_p1VUv.js → _shell._home-CPV1Z64k.js} +1 -1
- package/dist/client/assets/_shell._home.activity-CEvkKYBD.js +1 -0
- package/dist/client/assets/_shell._home.index-tGnRLvY-.js +3 -0
- package/dist/client/assets/{_shell._home.tasks-BsBH_4tZ.js → _shell._home.tasks-CtpZNevK.js} +1 -1
- package/dist/client/assets/_shell._home.workspaces-D6tkWdS8.js +1 -0
- package/dist/client/assets/{_shell.channels-DWAHkDPV.js → _shell.channels-DbrQXIVv.js} +4 -4
- package/dist/client/assets/_shell.connections-C3Ho4S8R.js +6 -0
- package/dist/client/assets/{_shell.feedback-requests-Hjv640j9.js → _shell.feedback-requests-D9l7SJi1.js} +1 -1
- package/dist/client/assets/_shell.marketplace-BfY-kBJk.js +1 -0
- package/dist/client/assets/_shell.marketplace_.sources-B0km_EUs.js +1 -0
- package/dist/client/assets/_shell.session-O8MC-USm.js +54 -0
- package/dist/client/assets/{_shell.team-ctLQztjw.js → _shell.team-DvJK7irE.js} +4 -4
- package/dist/client/assets/_shell.x._extensionId-_-fII74H.js +1 -0
- package/dist/client/assets/_shell.x._extensionId_._-_-fII74H.js +1 -0
- package/dist/client/assets/agent-attention-BvnWcLpc.js +5 -0
- package/dist/client/assets/{agent-browser-CCN16ZOz.js → agent-browser-DsDp0cSX.js} +1 -1
- package/dist/client/assets/{banner-DOm9_4l-.js → banner-Cja2VfwN.js} +2 -2
- package/dist/client/assets/{file-exclamation-point-BKzL0QhY.js → file-exclamation-point-D8KYFYSh.js} +1 -1
- package/dist/client/assets/{highlighted-body-KPVGNVTW-DTxMTVdP.js → highlighted-body-KPVGNVTW-Chp5pHWq.js} +1 -1
- package/dist/client/assets/{hover-card-qzuFUCaR.js → hover-card-FvX18DHP.js} +1 -1
- package/dist/client/assets/{index-Dcs6e-U_.js → index-BFPRILKF.js} +1 -1
- package/dist/client/assets/{index-CtOB9fS3.js → index-BKCteC7q.js} +1 -1
- package/dist/client/assets/index-Bbffv0TQ.js +1247 -0
- package/dist/client/assets/{index-BMOfHKE0.js → index-BhatJcNc.js} +1 -1
- package/dist/client/assets/index-BroohPSu.js +1 -0
- package/dist/client/assets/{index-DT_v3O-B.js → index-Bt4vTnDj.js} +1 -1
- package/dist/client/assets/{index-DwzSdOh3.js → index-BwkmCRvO.js} +1 -1
- package/dist/client/assets/{index-CTai_TxZ.js → index-BzS1K2wS.js} +1 -1
- package/dist/client/assets/{index-C3XnoXTY.js → index-C6F5gzX-.js} +1 -1
- package/dist/client/assets/{index-BaB-skF0.js → index-CIzSi3tA.js} +3 -3
- package/dist/client/assets/{index-BPcwoJoz.js → index-CLCbHvV5.js} +1 -1
- package/dist/client/assets/{index-DA-i3I4q.js → index-CXjobHw0.js} +1 -1
- package/dist/client/assets/{index-DgH_dl1a.js → index-CYcJ7ENW.js} +2 -2
- package/dist/client/assets/{index-3lQkXKcq.js → index-CeqzGl3y.js} +1 -1
- package/dist/client/assets/{index-DgtF-nBt.js → index-CknNaeS2.js} +1 -1
- package/dist/client/assets/{index-Bk98IpMn.js → index-CtK6WJzD.js} +1 -1
- package/dist/client/assets/{index-C8ZMfyGc.js → index-CvxLe-_3.js} +1 -1
- package/dist/client/assets/{index-CF9fqPef.js → index-D24Ttd-y.js} +4 -4
- package/dist/client/assets/{index-CIPHHziB.js → index-D6Jn2eBq.js} +1 -1
- package/dist/client/assets/{index-D3DXMH4x.js → index-DDibi3-x.js} +1 -1
- package/dist/client/assets/{index-C7B2uRgo.js → index-DElGMXW8.js} +2 -2
- package/dist/client/assets/{index-CmlaXay_.js → index-DGNJkiFb.js} +1 -1
- package/dist/client/assets/{index-WjW-NUCp.js → index-DI2T-dXr.js} +1 -1
- package/dist/client/assets/{index-CLhD0Bno.js → index-DZf_utaG.js} +1 -1
- package/dist/client/assets/{index-CTXNRyRE.js → index-D_XtXoLp.js} +1 -1
- package/dist/client/assets/{index-CDTumWMC.js → index-DjdQaKwP.js} +1 -1
- package/dist/client/assets/index-Do18O9VZ.js +1 -0
- package/dist/client/assets/{index-CVl132_4.js → index-Do1vOFrm.js} +1 -1
- package/dist/client/assets/{index-BIMClIrX.js → index-Dv1DkyeB.js} +1 -1
- package/dist/client/assets/{index-IgIVF9T_.js → index-DyvLJ_Z5.js} +1 -1
- package/dist/client/assets/index-HgvJwMGi.js +5 -0
- package/dist/client/assets/{index-DR1JT9Uz.js → index-OxwtxTFo.js} +3 -3
- package/dist/client/assets/index-QSDTjavn.js +1 -0
- package/dist/client/assets/{index-DOxEmnH2.js → index-ZLdoJdwS.js} +1 -1
- package/dist/client/assets/index-_GlgFH88.css +1 -0
- package/dist/client/assets/{index-CScfHuKF.js → index-euarUu2E.js} +1 -1
- package/dist/client/assets/{index-B-z7hA9x.js → index-jYh6X22t.js} +1 -1
- package/dist/client/assets/{index-CIfwPLXd.js → index-uQ1vTS05.js} +1 -1
- package/dist/client/assets/{index-CejezM4U.js → index-xfBvKz-h.js} +1 -1
- package/dist/client/assets/{index-BW5ce4t8.js → index-znQ5q2gV.js} +1 -1
- package/dist/client/assets/{layers-CJHXSEKK.js → layers-8-cbYlfw.js} +1 -1
- package/dist/client/assets/{lightbulb-DWjxw7lb.js → lightbulb-DoB0IKly.js} +1 -1
- package/dist/client/assets/{mention-pill-akMU3IVs.js → mention-pill-BHC6tMG9.js} +1 -1
- package/dist/client/assets/{message-square-off-DEagHpQY.js → message-square-off-CEHuZJtY.js} +1 -1
- package/dist/client/assets/{owner-notice-CLsx0s7q.js → owner-notice-dtDSKfGs.js} +1 -1
- package/dist/client/assets/{page-container-W7byjRmk.js → page-container-BOrdASM1.js} +1 -1
- package/dist/client/assets/primer-trigger-CC-cR5zN.js +3 -0
- package/dist/client/assets/{radio-B8Ozjv9U.js → radio-BfZPhctR.js} +1 -1
- package/dist/client/assets/{room-files-source-Bsc3YA91.js → room-files-source-BHupFaLE.js} +2 -2
- package/dist/client/assets/{rotate-ccw-clock-CNcDcTvq.js → rotate-ccw-clock-BvzfP8lR.js} +1 -1
- package/dist/client/assets/{rotate-cw-xvfipJLN.js → rotate-cw-BDweizfR.js} +1 -1
- package/dist/client/assets/{scroll-area-C95q3ss7.js → scroll-area-Dph6w3a6.js} +1 -1
- package/dist/client/assets/{search-x-C6SAxw7a.js → search-x-CoFJOP2l.js} +2 -2
- package/dist/client/assets/{shield-x-DxOGc0dW.js → shield-x-BZ6rhiT0.js} +1 -1
- package/dist/client/assets/{soul-file-pg0ShYy3.js → soul-file-H8fwhgiL.js} +1 -1
- package/dist/client/assets/use-delete-binding-CUsepFIL.js +1 -0
- package/dist/client/assets/use-dev-links-DYYe0vvP.js +1 -0
- package/dist/client/assets/{use-external-adapter-catalog-B0gcY-k7.js → use-external-adapter-catalog-CAl3MNq-.js} +1 -1
- package/dist/client/assets/use-full-activity-feed-Bb7BUusp.js +1 -0
- package/dist/client/assets/use-is-below-desktop-CIgGSgoL.js +1 -0
- package/dist/client/assets/use-jump-back-in-BdLBzvDr.js +11 -0
- package/dist/client/assets/use-mesh-topology-wYtCBbF_.js +1 -0
- package/dist/client/assets/use-pending-read-9UcfnDwF.js +1 -0
- package/dist/client/assets/{use-personality-commit-OH7d0xl_.js → use-personality-commit-CaxUHrX5.js} +1 -1
- package/dist/client/assets/{use-promo-activation-BgdGasXE.js → use-promo-activation-rNaAOdoh.js} +2 -2
- package/dist/client/assets/use-pulse-freshness-CygG3s-S.js +1 -0
- package/dist/client/assets/use-room-follow-claim-BIK37Iy3.js +1 -0
- package/dist/client/assets/{use-roving-tab-list-Be60AWK3.js → use-roving-tab-list-DQgkKGzc.js} +1 -1
- package/dist/client/assets/{use-session-canvas-Bqs6IQO7.js → use-session-canvas-Dpy5BEId.js} +5 -5
- package/dist/client/assets/use-session-diagnostics-atu9cfgr.js +16 -0
- package/dist/client/assets/use-unclaimed-chats-qUI5vY5K.js +1 -0
- package/dist/client/index.html +2 -2
- package/dist/drizzle/20261008170031_session_touches.sql +5 -0
- package/dist/drizzle/20261009171311_chat_messages.sql +41 -0
- package/dist/drizzle/20261009173712_started_by_report_back.sql +1 -0
- package/dist/drizzle/meta/20261008170031_snapshot.json +12642 -0
- package/dist/drizzle/meta/20261009171311_snapshot.json +12906 -0
- package/dist/drizzle/meta/20261009173712_snapshot.json +12914 -0
- package/dist/drizzle/meta/_journal.json +21 -0
- package/dist/server/index.js +23608 -19236
- package/dist/server/index.js.map +2 -2
- package/package.json +6 -6
- package/dist/client/assets/AdapterIcon-CL-MyyKy.js +0 -1
- package/dist/client/assets/AdapterSetupWizard-C8HOvHLF.js +0 -2
- package/dist/client/assets/CanvasFileContent-ZZhdofR4.js +0 -2
- package/dist/client/assets/CanvasModel3dContent-DMMMZh4o.js +0 -2
- package/dist/client/assets/ConnectionAccessLists-PW1uzcGU.js +0 -1
- package/dist/client/assets/ConnectionsPage-EwitZwOE.js +0 -11
- package/dist/client/assets/HandlePage-CL3_n1CI.js +0 -1
- package/dist/client/assets/Marketplace-DsU-q1ZZ.js +0 -36
- package/dist/client/assets/MarketplaceSourcesView-D72YoKNR.js +0 -1
- package/dist/client/assets/McpSigninBody-Btg3PnYN.js +0 -1
- package/dist/client/assets/NamePage-Bzqj4Eob.js +0 -1
- package/dist/client/assets/NewDirectMessageMenu-89yeGqvy.js +0 -1
- package/dist/client/assets/OperatorIdentityForm-BhiB9tQp.js +0 -1
- package/dist/client/assets/PhotoPage-C3fMlebQ.js +0 -1
- package/dist/client/assets/PreviewRefusedNotice-ChCgdKWN.js +0 -1
- package/dist/client/assets/RoomSurface-CgtNuYhl.js +0 -39
- package/dist/client/assets/RunsOnPopover-JTm1cYuw.js +0 -1
- package/dist/client/assets/SessionsPage-D4kyvHQf.js +0 -6
- package/dist/client/assets/SkillsPage-KYUVzuVa.js +0 -1
- package/dist/client/assets/ToolsPage-CWpHMlrR.js +0 -2
- package/dist/client/assets/TourHost-VY1-sy1Y.js +0 -1
- package/dist/client/assets/UnlinkDialog-3p38G_9q.js +0 -1
- package/dist/client/assets/_shell-DAjwimLg.js +0 -93
- package/dist/client/assets/_shell._home.activity-tk-XApvX.js +0 -1
- package/dist/client/assets/_shell._home.index-BNVhSN0y.js +0 -3
- package/dist/client/assets/_shell._home.workspaces-DuXnjQh0.js +0 -1
- package/dist/client/assets/_shell.connections-DIm3mUHy.js +0 -6
- package/dist/client/assets/_shell.marketplace-DF6Y7mc0.js +0 -1
- package/dist/client/assets/_shell.marketplace_.sources-Do8cm7kq.js +0 -1
- package/dist/client/assets/_shell.session-DlN8iOl-.js +0 -43
- package/dist/client/assets/_shell.x._extensionId-0Q1rJtud.js +0 -1
- package/dist/client/assets/_shell.x._extensionId_._-0Q1rJtud.js +0 -1
- package/dist/client/assets/agent-attention-Dn__3LQE.js +0 -5
- package/dist/client/assets/hand-DLUdsiuR.js +0 -6
- package/dist/client/assets/index-CQWqpw_G.js +0 -1
- package/dist/client/assets/index-D5uYwabS.js +0 -1
- package/dist/client/assets/index-DFMDv6qR.js +0 -1
- package/dist/client/assets/index-DMYBI16t.js +0 -1252
- package/dist/client/assets/index-DbbZNAKk.js +0 -5
- package/dist/client/assets/index-Dgp1LmEk.css +0 -1
- package/dist/client/assets/primer-trigger-DuM9vVnV.js +0 -3
- package/dist/client/assets/use-delete-binding-CZVeHqn0.js +0 -1
- package/dist/client/assets/use-dev-links-Df2WkCic.js +0 -1
- package/dist/client/assets/use-full-activity-feed-SYcgdMZu.js +0 -1
- package/dist/client/assets/use-is-below-desktop-C5_YenEp.js +0 -1
- package/dist/client/assets/use-jump-back-in-DWUPb1gi.js +0 -11
- package/dist/client/assets/use-mesh-topology-HLzZIgis.js +0 -1
- package/dist/client/assets/use-pending-read-BuJknrxG.js +0 -1
- package/dist/client/assets/use-pulse-freshness-BlD-dM_g.js +0 -1
- package/dist/client/assets/use-rename-session-D3MuyK-F.js +0 -1
- package/dist/client/assets/use-room-follow-claim-CyjhzbRJ.js +0 -1
- package/dist/client/assets/use-session-diagnostics-CfKdB2iY.js +0 -16
- package/dist/client/assets/use-unclaimed-chats-lqMhotUB.js +0 -1
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
var Bu=Object.defineProperty;var zu=(e,t,s)=>t in e?Bu(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s;var Jt=(e,t,s)=>zu(e,typeof t!="symbol"?t+"":t,s);import{pG as Uu,r as l,pH as Yo,pI as Ku,pJ as Qr,j as n,pK as Hu,pL as Hi,pM as qu,a5 as ie,ae as ve,g$ as Oe,eI as Ee,dW as os,pN as Bs,hk as Wu,pO as Gu,pP as Yu,pQ as Vu,a6 as ce,ai as ue,o5 as Qu,pR as Xu,V as we,ev as xs,U as W,B as _,oC as Ju,X as Le,ab as B,g5 as Ne,hP as qi,pS as Zu,aV as wt,an as Wi,bd as Gi,b0 as ys,h5 as Me,aI as em,pT as Vo,pU as tm,bi as Yi,kR as Vi,bN as Te,dt as _e,x as ut,ih as nm,ii as Qi,cP as ae,pV as kn,gG as it,pW as Xi,a7 as Sn,hD as Ji,f1 as Xr,ci as Jr,al as Lt,pX as Qo,g_ as Cn,pY as sm,lj as Zr,du as Zi,dv as ec,pZ as tc,p_ as rm,be as Ie,p$ as nc,dE as Ye,dm as Nn,dn as An,dI as mt,dp as En,dq as In,aG as Ft,e8 as wr,cA as bs,cB as vs,cC as ws,q0 as sc,q1 as om,eN as jr,eO as kr,eP as Sr,eQ as Cr,h1 as Ot,lc as am,aE as U,eL as rc,bU as rt,ew as Re,q2 as im,pk as cm,eD as ct,kC as as,hG as $t,q3 as lm,q4 as dm,pe as Xo,pl as um,q5 as mm,mL as hm,f0 as js,en as fm,q6 as pm,q7 as oc,a0 as Jo,q8 as gm,jZ as eo,a8 as xm,nY as ym,bs as to,q9 as Tn,qa as bm,qb as ks,dO as vm,a1 as pn,cr as Bt,cs as zt,ct as Ut,f_ as Ce,C as Rn,hU as Ss,mf as ac,qc as ic,ix as gn,dS as wm,qd as jm,bq as Dn,j2 as Cs,gb as Ns,Q as km,qe as no,pj as cc,nZ as Sm,hd as qe,fX as As,fc as Kt,i9 as so,f as Ht,aX as lc,qf as dc,eA as Es,l as pe,qg as Cm,d8 as Nm,io as xn,cS as et,cT as tt,cU as Xe,cV as Ue,cW as Je,ey as lt,cX as Rt,cQ as Am,qh as Em,qi as On,qj as Im,hE as Tm,qk as Rm,ds as Ae,hH as Is,gp as Dm,jW as Om,gr as Mm,gs as _m,gt as Pm,nd as uc,ql as xe,qm as Lm,qn as mc,qo as Nr,qp as hc,de as Fm,qq as Zo,qr as fc,n as pc,hF as $m,hg as gc,dT as xc,qs as Bm,kY as zm,qt as Um,gh as yc,iI as ro,hu as bc,gN as qt,gO as oo,gR as vc,fp as Km,fi as ao,fh as io,qu as Hm,qv as wc,qw as qm,qx as Wm,qy as Gm,qz as Zt,hl as Ym,hm as Vm,qA as Qm,qB as Xm,a$ as Jm,qC as Zm,h8 as jc,bz as Dt,qD as kc,qE as is,qF as Sc,qG as eh,qH as th,qI as Mt,qJ as Cc,qK as Nc,qL as yn,qM as nh,gX as Ts,qN as sh,gy as Ac,gz as Ec,fA as Ic,fB as Tc,fD as Rc,qO as jt,fE as rh,qP as Dc,qQ as oh,qR as pt,qS as Ge,fb as dt,qT as Oc,qU as ah,L as he,qV as ih,G as re,N as Wt,_ as Gt,K as me,J as xt,qW as co,qX as ch,qY as Mc,eu as bn,er as Pe,I as Ze,qZ as _c,q_ as lh,q$ as Pc,r0 as Lc,r1 as dh,r2 as uh,r3 as mh,fk as kt,fj as _t,fl as Rs,j0 as hh,eE as Fc,lN as $c,k5 as fh,fg as ph,r4 as gh,r5 as xh,r6 as Pt,r7 as Bc,h3 as zc,r8 as yh,r9 as Uc,ra as Kc,rb as bh,rc as vh,aJ as lo,fm as uo,rd as wh,gg as Mn,re as cn,rf as mo,w as cs,v as Hc,rg as jh,ij as ea,le as kh,rh as Sh,ri as Ch,rj as Nh,bF as Ah,gd as ho,m_ as qc,mZ as Wc,rk as Eh,dd as Gc,rl as ze,jT as fe,rm as ta,cY as Ds,rn as Ih,ro as Th,rp as Rh,rq as Dh,rr as Oh,rs as Mh,rt as _h,iX as fo,aW as po,ru as Yc,mi as Ph,h2 as Vc,rv as Qc,pt as go,rw as Lh,mI as Xc,rx as _n,mV as xo,ry as Yt,rz as Fh,rA as $h,rB as Bh,rC as zh,rD as Uh,rE as Kh,rF as Hh,fn as qh,rG as Wh,rH as Gh,mW as Jc,mY as Yh,rI as Vh,rJ as Zc,rK as el,rL as na,rM as sa,rN as Qh,rO as Xh,rP as Jh,rQ as Zh,rR as ef,rS as tf,rT as ra,rU as nf,rV as sf,rW as rf,rX as zs,rY as of,jo as af,e as yt,rZ as cf,r_ as lf,r$ as df,aT as uf,i0 as mf,s0 as hf,s1 as ff,aS as pf,s2 as gf,s3 as xf,ga as Vt,s4 as yf,s5 as bf,s6 as ls,s7 as vf,s8 as tl,s9 as wf,sa as jf,sb as kf,sc as nl,sd as Hn,se as Sf,sf as Cf,sg as Nf,sh as sl,si as Ar,sj as Af,o$ as Ef,H as yo,ac as If,oy as rl,lH as ol,ib as bo,eZ as Tf,t as Rf,g as Df,go as Of,aC as vo,h9 as al,sk as Mf,l4 as _f,jV as Pf,mA as Lf,sl as Ff,gU as il,fI as $f,fJ as Bf,fK as zf,fL as Uf,fM as Kf,fN as Hf,fO as qf,sm as Wf,sn as Er,so as Gf,sp as Us,sq as Yf,sr as Vf,ss as vn,st as Qf,su as oa,k0 as Xf,gP as Jf,sv as Zf,ho as ep,hp as tp,hr as np,hs as aa,lp as ia,ln as sp,lo as ca,sw as rp,sx as op,sy as ap,sz as ip,mQ as cp,sA as lp,sB as dp,sC as up,jP as cl,jQ as ll,jR as dl,jS as mp,bu as hp,sD as fp,sE as pp,sF as ul,sG as ml,sH as gp,sI as xp,bn as yp,fq as bp,sJ as Ks,aF as vp,sK as wp,sL as jp,sM as kp,sN as Sp,sO as Cp,sP as Np,sQ as Ap,sR as Ep,sS as Ip,sT as la,aY as hl,fe as Tp,hq as Rp,bm as Dp,sU as fl,sV as Op,fd as Mp,sW as da,gn as _p,sX as Pp,sY as Lp,sZ as Fp,s_ as $p,s$ as Bp,pw as zp,gi as Up,h as wo,t0 as Kp,t1 as Hp,t2 as qp,eh as Wp,t3 as ua,t4 as Gp,t5 as Yp,og as Vp,gc as pl,oj as Qp,t6 as Xp,t7 as Jp,t8 as Zp,op as eg,iJ as tg,t9 as ng,ta as sg,eM as rg,iO as og,iP as ag,iQ as ig,iT as cg,iR as lg,tb as dg,tc as ug,iN as mg,iL as hg,iM as fg,td as gl,hC as pg,te as gg,tf as xg,tg as xl,th as yg,ti as jo,tj as yl,a4 as bl,tk as vl,tl as bg,cw as vg,cx as wg,eC as ma,tm as ha,tn as jg,b1 as kg,aK as Sg,fV as Cg,to as Ng,l5 as Hs,l6 as qs,tp as Ag,tq as Eg,tr as Ig,dZ as Tg,ts as ko,lG as Rg,tt as Dg,lL as Og,tu as wl,tv as jl,tw as kl,tx as Mg,ty as _g,tz as fa,tA as Pg,tB as Lg,tC as Fg,tD as Tt,cD as $g,tE as pa,lV as Bg,lX as Sl,cR as zg,i7 as Ug,tF as Kg,md as Hg,tG as Ir,tH as qg,h7 as Wg,m6 as Qe,m8 as Gg,tI as Yg,bO as Vg,tJ as Qg,tK as Xg,tL as Jg,tM as Zg,tN as ex,k$ as tx,iz as nx,jM as sx,lr as rx,tO as ox,tP as ax,tQ as ix,tR as cx,tS as lx,tT as dx,bP as ux,tU as mx,tV as hx,nc as fx,ch as px}from"./index-Bbffv0TQ.js";import{D as Ve,a as gx}from"./TourHost-BNpDrN0O.js";import{O as xx,B as So}from"./banner-Cja2VfwN.js";import{u as yx}from"./use-dev-links-DYYe0vvP.js";import{d as bx}from"./untrusted-text-1hXdPgLA.js";import{S as un}from"./scroll-area-Dph6w3a6.js";import{T as Cl,a as Nl,b as es,c as Ws,u as vx,i as wx,d as jx,P as Al}from"./PreviewRefusedNotice-B2GLqLYi.js";import{L as kx}from"./lightbulb-DoB0IKly.js";import{i as Sx,O as Co,b as Cx,u as Nx,a as Ax}from"./OperatorIdentityForm-ixaqUfIO.js";import{c as Ex,b as Ix,u as Tx,O as Rx,d as Dx}from"./agent-attention-BvnWcLpc.js";import{a as Ox}from"./use-pulse-freshness-CygG3s-S.js";import{T as El,F as Mx,r as _x,c as Px,B as Lx,b as Fx,a as $x,w as Bx,e as zx}from"./primer-trigger-CC-cR5zN.js";import{M as Ux,u as Kx,a as Il,s as Hx,P as qx,b as Wx}from"./use-promo-activation-rNaAOdoh.js";import{u as Tl}from"./use-pending-read-9UcfnDwF.js";import{a as oe,d as Gx,b as Yx}from"./dorkbot-templates-cu4wApxb.js";import{A as Rl,P as Vx,u as Qx,a as Xx}from"./use-jump-back-in-BdLBzvDr.js";import{R as Jx}from"./rotate-cw-BDweizfR.js";import{u as Zx,a as ey,C as ty,N as ny}from"./NewDirectMessageMenu-bJE7b4lX.js";import{o as sy}from"./owner-notice-dtDSKfGs.js";import{A as Dl,M as ry}from"./McpAppFrame-Cl_2azg-.js";import{R as Ol}from"./radio-BfZPhctR.js";import{M as en,C as oy,i as ay}from"./index-HgvJwMGi.js";import{P as iy,p as cy}from"./PersonalityPicker-CTvPlN-k.js";import{H as ly,a as dy,b as uy}from"./hover-card-FvX18DHP.js";import{P as Gs}from"./page-container-BOrdASM1.js";import{u as my}from"./use-roving-tab-list-DQgkKGzc.js";import{R as hy}from"./rotate-ccw-clock-BvzfP8lR.js";import{L as fy}from"./layers-8-cbYlfw.js";import{u as py}from"./use-is-below-desktop-CIgGSgoL.js";import"./use-external-adapter-catalog-CAl3MNq-.js";import"./shield-x-BZ6rhiT0.js";import"./use-mesh-topology-wYtCBbF_.js";import"./use-full-activity-feed-Bb7BUusp.js";import"./file-drag-GDx2qhdk.js";import"./index-xfBvKz-h.js";function gy({children:e,isValidProp:t,...s}){t&&Uu(t);const r=l.useContext(Yo);s={...r,...s},s.transition=Ku(s.transition,r.transition),s.isStatic=Qr(()=>s.isStatic);const o=l.useMemo(()=>s,[JSON.stringify(s.transition),s.transformPagePoint,s.reducedMotion,s.skipAnimations]);return n.jsx(Yo.Provider,{value:o,children:e})}function xy(e){e.values.forEach(t=>t.stop())}function Tr(e,t){[...t].reverse().forEach(r=>{const o=e.getVariant(r);o&&Hi(e,o),e.variantChildren&&e.variantChildren.forEach(a=>{Tr(a,t)})})}function yy(e,t){if(Array.isArray(t))return Tr(e,t);if(typeof t=="string")return Tr(e,[t]);Hi(e,t)}function by(){const e=new Set,t={subscribe(s){return e.add(s),()=>void e.delete(s)},start(s,r){const o=[];return e.forEach(a=>{o.push(Hu(a,s,{transitionOverride:r}))}),Promise.all(o)},set(s){return e.forEach(r=>{yy(r,s)})},stop(){e.forEach(s=>{xy(s)})},mount(){return()=>{t.stop()}}};return t}function vy(){const e=Qr(by);return qu(e.mount,[]),e}class wy{constructor(){this.componentControls=new Set}subscribe(t){return this.componentControls.add(t),()=>this.componentControls.delete(t)}start(t,s){this.componentControls.forEach(r=>{r.start(t.nativeEvent||t,s)})}cancel(){this.componentControls.forEach(t=>{t.cancel()})}stop(){this.componentControls.forEach(t=>{t.stop()})}}const jy=()=>new wy;function ky(){return Qr(jy)}const Sy="dork-labs/dorkos",Cy=`https://github.com/${Sy}/issues/new`,Ny={"tunnel.enabled":"boolean","tasks.enabled":"boolean","relay.enabled":"boolean","scheduler.enabled":"boolean","mesh.enabled":"boolean","mcp.enabled":"boolean","telemetry.install":"boolean","telemetry.heartbeat":"boolean","telemetry.errorReporting":"boolean","auth.enabled":"boolean","workspace.enabled":"boolean","harness.autoSync":"boolean","harness.autoAdopt":"boolean","runtimes.codex.enabled":"boolean","runtimes.opencode.enabled":"boolean","runtimes.default":"enum","logging.level":"enum","ui.theme":"enum"},Ay={"runtimes.default":["claude-code","codex","opencode","doe"],"logging.level":["fatal","error","warn","info","debug","trace"],"ui.theme":["light","dark","system"]},Ey=/^[a-z0-9][a-z0-9._-]{0,31}$/,Iy={bug:["bug"],feature:["enhancement"],runtime:["bug"]},Ty={bug:"Bug: (describe what went wrong)",feature:"Feature: (describe what you want)",runtime:"Runtime issue: (describe what went wrong)"};function Ry(e){return e.replace(/\b(?:sk-|pk-|rk-|ghp_|gho_|ghu_|ghs_|github_pat_|glpat-|npm_|xox[baprsc]-)[A-Za-z0-9._-]+/g,"[redacted]").replace(/\b(?:AKIA|ASIA|AGPA|AIDA|AROA|ANPA)[0-9A-Z]{16}\b/g,"[redacted]").replace(/\bBearer\s+[A-Za-z0-9._-]+/gi,"[redacted]")}function No(e){return Ry(e).replace(/[^\s/@]+@[^\s/@]+\.[^\s/@]+/g,"[email]").replace(/\b\d{1,3}(?:\.\d{1,3}){3}\b/g,"[ip]").replace(/\b(?:[A-Fa-f0-9]{1,4}:){2,7}[A-Fa-f0-9]{1,4}\b/g,"[ip]").replace(new RegExp("(?<![\\w:.])(?:[A-Fa-f0-9]{1,4})?(?::[A-Fa-f0-9]{0,4}){2,}(?![\\w:.])","g"),"[ip]").replace(/\\\\[^\s\\]+(?:\\[^\s\\]+)+/g,"[path]").replace(/(^|[\s"'`(<[{])\/\/[^\s"'`)>\]}/]+\/[^\s"'`)>\]}]+/g,"$1[path]").replace(/\b[A-Za-z]:\\[^\r\n]*/g,"[path]").replace(/(^|[\s"'`(<[{/:])(~|\/(?:Users|home))\/[^\s"'`)>\]}]+/g,"$1[home]").replace(/(^|[\s"'`(<[{])\/[\w.-]+(?:\/[\w.-]*)+/g,"$1[path]").replace(/\b(?=[A-Za-z0-9_-]*\d)[A-Za-z0-9_-]{24,}\b/g,"[redacted]")}function Dy(e,t){const s=Ay[e];return s?s.includes(t):Ey.test(t)&&No(t)===t}function Oy(e){const t={};for(const[s,r]of Object.entries(Ny)){const o=e[s];o!=null&&(r==="boolean"&&typeof o=="boolean"||r==="number"&&typeof o=="number"&&Number.isFinite(o)||r==="enum"&&typeof o=="string"&&Dy(s,o))&&(t[s]=o)}return t}const My=["details","summary"];function Ao(e){return bx(No(e),My)}function _y(e){const t=e.runtimes.length>0?e.runtimes.join(", "):"none configured",s=Object.entries(e.flags).map(([o,a])=>`- ${o}: ${String(a)}`).join(`
|
|
2
|
+
`),r=[`- DorkOS version: ${e.version}`,`- OS / arch: ${e.platform}`,`- Runtimes configured: ${t}`,`- Reported from: ${e.surface}`,"","Settings (on/off values only, no secrets or file paths):",s.length>0?s:"- (none available)"];return No(r.join(`
|
|
3
|
+
`))}function Py(e){var s;const t=(s=e.body)==null?void 0:s.trim();return t?[Ao(t)]:e.kind==="feature"?["## What do you want DorkOS to do?","","","## Why would it help?","",""]:["## What happened?","","","## What did you expect?","","","## Steps to reproduce","","1. ","2. ","3. "]}function Ly(e){return["<details><summary>Environment</summary>","",_y(e),"","</details>","","DorkOS filled in the details above. Please check them and remove anything you do not want to share.","","---","",...Py(e)].join(`
|
|
4
|
+
`)}function Ys(e){var r;const t=(r=e.title)==null?void 0:r.trim(),s=new URLSearchParams({title:Ao(t||Ty[e.kind]),body:Ly(e),labels:Iy[e.kind].join(",")});return`${Cy}?${s.toString()}`}const Fy=6e3,ga=`
|
|
5
|
+
|
|
6
|
+
… (shortened to fit the link; paste the rest yourself)`;function xa(e){return new TextEncoder().encode(e).length}function ya(e,t){return Array.from(e).slice(0,t).join("")}function $y(e,t=Fy){var d;const s=Ys(e);if(xa(s)<=t)return{url:s,truncated:!1};const r=((d=e.body)==null?void 0:d.trim())??"";if(!r)return{url:s,truncated:!1};const o=Array.from(r).length;let a=0,i=o;for(;a<i;){const m=Math.ceil((a+i)/2),u={...e,body:ya(r,m)+ga};xa(Ys(u))<=t?a=m:i=m-1}const c={...e,body:ya(r,a)+ga};return{url:Ys(c),truncated:!0,fullBody:Ao(r)}}function By(e){return $y(e).url}function zy(e){var t,s,r,o,a,i,c,d,m,u;return{"tunnel.enabled":(t=e.tunnel)==null?void 0:t.enabled,"tasks.enabled":(s=e.tasks)==null?void 0:s.enabled,"relay.enabled":(r=e.relay)==null?void 0:r.enabled,"mesh.enabled":(o=e.mesh)==null?void 0:o.enabled,"mcp.enabled":(a=e.mcp)==null?void 0:a.enabled,"telemetry.install":(i=e.telemetry)==null?void 0:i.install,"telemetry.heartbeat":(c=e.telemetry)==null?void 0:c.heartbeat,"telemetry.errorReporting":(d=e.telemetry)==null?void 0:d.errorReporting,"auth.enabled":(m=e.auth)==null?void 0:m.enabled,"logging.level":(u=e.logging)==null?void 0:u.level}}function Ml(e,t,s){return{kind:e,version:(t==null?void 0:t.version)??"unknown",platform:(t==null?void 0:t.platform)??"unknown",runtimes:(t==null?void 0:t.runtimes)??[],surface:`web ${s}`.trim(),flags:t?Oy(zy(t)):{}}}function Uy(){const e=ie(),{data:t}=ve({queryKey:Oe.current(),queryFn:()=>e.getConfig(),staleTime:300*1e3}),s=Ee({select:r=>r.location.pathname});return l.useCallback(r=>{const o=By(Ml(r,t,s));os(o)},[t,s])}const Ky=100;function Hy({cwd:e,isStreaming:t,color:s}){const r=l.useRef(""),o=l.useRef([]),a=l.useRef(null),i=l.useRef(0),c=l.useRef(t);l.useEffect(()=>{c.current=t},[t]);const d=l.useCallback(()=>{a.current&&(clearInterval(a.current),a.current=null),o.current.length!==0&&(i.current=0,a.current=window.setInterval(()=>{const u=o.current;u.length!==0&&(Bs(u[i.current]),i.current=(i.current+1)%u.length)},Ky))},[]),m=l.useCallback(()=>{a.current&&(clearInterval(a.current),a.current=null),r.current&&Bs(r.current)},[]);l.useEffect(()=>{if(!e)return;const u=s??Wu(e),f=Gu(u);r.current=f,o.current=[],Bs(f);let p=!1;return Yu(f).then(h=>{p||(o.current=h,c.current&&d())}).catch(()=>{}),()=>{p=!0}},[e,s,d]),l.useEffect(()=>(t?d():m(),m),[t,d,m])}const ba=40,va=" — DorkOS";function wa({cwd:e,roomTitle:t,activeForm:s,prefix:r,agentName:o,agentEmoji:a,badgeCount:i,isTabHidden:c}){const d=c&&i>0?`(${i}) `:"";if(t)return`${d}${r}${t}${va}`;if(!e)return`${d}DorkOS`;const m=a??Vu(e),u=o??e.split("/").filter(Boolean).pop()??e;let f=`${d}${r}${m} ${u}`;if(s){const p=s.length>ba?s.slice(0,ba)+"…":s;f+=` — ${p}`}return f+=va,f}function qy({cwd:e,activeForm:t,isStreaming:s,isWaitingForUser:r,agentName:o,agentEmoji:a,tasksBadgeCount:i,roomTitle:c,unreadRoomCount:d}){const m=l.useRef(document.hidden),u=l.useRef(!1),f=l.useRef(s),p=(i??0)+(d??0),h=l.useRef({cwd:e,activeForm:t,isWaitingForUser:r,agentName:o,agentEmoji:a,badgeCount:p,roomTitle:c});l.useEffect(()=>{h.current={cwd:e,activeForm:t,isWaitingForUser:r,agentName:o,agentEmoji:a,badgeCount:p,roomTitle:c}},[e,t,r,o,a,p,c]),l.useEffect(()=>{const g=()=>{if(m.current=document.hidden,!document.hidden){const x=h.current,b=u.current,y=x.badgeCount>0;if(b||y){u.current=!1;const S=x.isWaitingForUser?"🔔 ":"";document.title=wa({cwd:x.cwd,roomTitle:x.roomTitle??null,activeForm:x.activeForm,prefix:S,agentName:x.agentName,agentEmoji:x.agentEmoji,badgeCount:x.badgeCount,isTabHidden:!1})}}};return document.addEventListener("visibilitychange",g),()=>document.removeEventListener("visibilitychange",g)},[]),l.useEffect(()=>{f.current&&!s&&m.current&&(u.current=!0),f.current=s},[s]),l.useEffect(()=>{let g="";r?g="🔔 ":u.current&&(g="🏁 "),document.title=wa({cwd:e,roomTitle:c??null,activeForm:t,prefix:g,agentName:o,agentEmoji:a,badgeCount:p,isTabHidden:m.current})},[e,c,t,s,r,o,a,p])}function Wy(){const e=ce();ue("account_usage",t=>{const s=t;!s||typeof s.runtime!="string"||e.getQueryData(Qu.usage(s.runtime))!==void 0&&Xu(e,s.runtime,[s])})}function Gy(e,t,s,r){let o;switch(e){case"ArrowRight":o=t+1;break;case"ArrowLeft":o=t-1;break;case"ArrowDown":o=t+s;break;case"ArrowUp":o=t-s;break;case"Home":o=0;break;case"End":o=r-1;break;default:return null}return Math.max(0,Math.min(r-1,o))}function Yy(e){const[t,s]=l.useState(0),r=l.useRef([]);function o(){const m=r.current.slice(0,e).filter(Boolean);if(m.length===0)return 1;const u=m[0].offsetTop;return Math.max(1,m.filter(f=>f.offsetTop===u).length)}function a(m){var f;const u=Math.max(0,Math.min(e-1,m));s(u),(f=r.current[u])==null||f.focus()}function i(m){return u=>{r.current[m]=u}}function c(m){return t===m?0:-1}function d(m,u){const f=Gy(m.key,u,o(),e);f!==null&&(m.preventDefault(),a(f))}return{focusIndex:t,setRef:i,tabIndexFor:c,handleKeyDown:d,moveFocus:a}}/**
|
|
7
|
+
* @license lucide-react v1.48.0 - ISC
|
|
8
|
+
*
|
|
9
|
+
* This source code is licensed under the ISC license.
|
|
10
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
11
|
+
*/const _l={name:"building-complex",size:24,node:[["path",{d:"M10 12h4",key:"a56b0p"}],["path",{d:"M10 8h4",key:"1sr2af"}],["path",{d:"M14 21v-3a2 2 0 0 0-4 0v3",key:"1rgiei"}],["path",{d:"M6 10H4a2 2 0 0 0-2 2v7a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V9a2 2 0 0 0-2-2h-2",key:"secmi2"}],["path",{d:"M6 21V5a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v16",key:"16ra0t"}]],aliases:["building-2"]};_l.node;const Vy=we(_l);/**
|
|
12
|
+
* @license lucide-react v1.48.0 - ISC
|
|
13
|
+
*
|
|
14
|
+
* This source code is licensed under the ISC license.
|
|
15
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
16
|
+
*/const Pl={name:"camera",size:24,node:[["path",{d:"M13.997 4a2 2 0 0 1 1.76 1.05l.486.9A2 2 0 0 0 18.003 7H20a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V9a2 2 0 0 1 2-2h1.997a2 2 0 0 0 1.759-1.048l.489-.904A2 2 0 0 1 10.004 4z",key:"18u6gg"}],["circle",{cx:"12",cy:"13",r:"3",key:"1vg3eu"}]]};Pl.node;const Qy=we(Pl);/**
|
|
17
|
+
* @license lucide-react v1.48.0 - ISC
|
|
18
|
+
*
|
|
19
|
+
* This source code is licensed under the ISC license.
|
|
20
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
21
|
+
*/const Ll={name:"chevron-up",size:24,node:[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]]};Ll.node;const Xy=we(Ll);/**
|
|
22
|
+
* @license lucide-react v1.48.0 - ISC
|
|
23
|
+
*
|
|
24
|
+
* This source code is licensed under the ISC license.
|
|
25
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
26
|
+
*/const Fl={name:"circle-plus",size:24,node:[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M8 12h8",key:"1wcyev"}],["path",{d:"M12 8v8",key:"napkw2"}]],aliases:["plus-circle"]};Fl.node;const Jy=we(Fl);/**
|
|
27
|
+
* @license lucide-react v1.48.0 - ISC
|
|
28
|
+
*
|
|
29
|
+
* This source code is licensed under the ISC license.
|
|
30
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
31
|
+
*/const $l={name:"coffee",size:24,node:[["path",{d:"M10 2v2",key:"7u0qdc"}],["path",{d:"M14 2v2",key:"6buw04"}],["path",{d:"M16 8a1 1 0 0 1 1 1v8a4 4 0 0 1-4 4H7a4 4 0 0 1-4-4V9a1 1 0 0 1 1-1h14a4 4 0 1 1 0 8h-1",key:"pwadti"}],["path",{d:"M6 2v2",key:"colzsn"}]]};$l.node;const Bl=we($l);/**
|
|
32
|
+
* @license lucide-react v1.48.0 - ISC
|
|
33
|
+
*
|
|
34
|
+
* This source code is licensed under the ISC license.
|
|
35
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
36
|
+
*/const zl={name:"compass",size:24,node:[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m16.24 7.76-1.804 5.411a2 2 0 0 1-1.265 1.265L7.76 16.24l1.804-5.411a2 2 0 0 1 1.265-1.265z",key:"9ktpf1"}]]};zl.node;const Zy=we(zl);/**
|
|
37
|
+
* @license lucide-react v1.48.0 - ISC
|
|
38
|
+
*
|
|
39
|
+
* This source code is licensed under the ISC license.
|
|
40
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
41
|
+
*/const Ul={name:"copy-plus",size:24,node:[["line",{x1:"15",x2:"15",y1:"12",y2:"18",key:"1p7wdc"}],["line",{x1:"12",x2:"18",y1:"15",y2:"15",key:"1nscbv"}],["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]]};Ul.node;const eb=we(Ul);/**
|
|
42
|
+
* @license lucide-react v1.48.0 - ISC
|
|
43
|
+
*
|
|
44
|
+
* This source code is licensed under the ISC license.
|
|
45
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
46
|
+
*/const Kl={name:"crosshair",size:24,node:[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"22",x2:"18",y1:"12",y2:"12",key:"l9bcsi"}],["line",{x1:"6",x2:"2",y1:"12",y2:"12",key:"13hhkx"}],["line",{x1:"12",x2:"12",y1:"6",y2:"2",key:"10w3f3"}],["line",{x1:"12",x2:"12",y1:"22",y2:"18",key:"15g9kq"}]]};Kl.node;const ds=we(Kl);/**
|
|
47
|
+
* @license lucide-react v1.48.0 - ISC
|
|
48
|
+
*
|
|
49
|
+
* This source code is licensed under the ISC license.
|
|
50
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
51
|
+
*/const Hl={name:"folder-search",size:24,node:[["path",{d:"M10.7 20H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H20a2 2 0 0 1 2 2v4.1",key:"1bw5m7"}],["path",{d:"m21 21-1.9-1.9",key:"1g2n9r"}],["circle",{cx:"17",cy:"17",r:"3",key:"18b49y"}]]};Hl.node;const tb=we(Hl);/**
|
|
52
|
+
* @license lucide-react v1.48.0 - ISC
|
|
53
|
+
*
|
|
54
|
+
* This source code is licensed under the ISC license.
|
|
55
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
56
|
+
*/const ql={name:"hard-drive",size:24,node:[["path",{d:"M10 16h.01",key:"1bzywj"}],["path",{d:"M2.212 11.577a2 2 0 0 0-.212.896V18a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-5.527a2 2 0 0 0-.212-.896L18.55 5.11A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z",key:"18tbho"}],["path",{d:"M21.946 12.013H2.054",key:"zqlbp7"}],["path",{d:"M6 16h.01",key:"1pmjb7"}]]};ql.node;const ja=we(ql);/**
|
|
57
|
+
* @license lucide-react v1.48.0 - ISC
|
|
58
|
+
*
|
|
59
|
+
* This source code is licensed under the ISC license.
|
|
60
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
61
|
+
*/const Wl={name:"list-todo",size:24,node:[["path",{d:"M13 5h8",key:"a7qcls"}],["path",{d:"M13 12h8",key:"h98zly"}],["path",{d:"M13 19h8",key:"c3s6r1"}],["path",{d:"m3 17 2 2 4-4",key:"1jhpwq"}],["rect",{x:"3",y:"4",width:"6",height:"6",rx:"1",key:"cif1o7"}]]};Wl.node;const nb=we(Wl);/**
|
|
62
|
+
* @license lucide-react v1.48.0 - ISC
|
|
63
|
+
*
|
|
64
|
+
* This source code is licensed under the ISC license.
|
|
65
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
66
|
+
*/const Gl={name:"message-square-text",size:24,node:[["path",{d:"M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z",key:"18887p"}],["path",{d:"M7 11h10",key:"1twpyw"}],["path",{d:"M7 15h6",key:"d9of3u"}],["path",{d:"M7 7h8",key:"af5zfr"}]]};Gl.node;const sb=we(Gl);/**
|
|
67
|
+
* @license lucide-react v1.48.0 - ISC
|
|
68
|
+
*
|
|
69
|
+
* This source code is licensed under the ISC license.
|
|
70
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
71
|
+
*/const Yl={name:"minus",size:24,node:[["path",{d:"M5 12h14",key:"1ays0h"}]]};Yl.node;const rb=we(Yl);/**
|
|
72
|
+
* @license lucide-react v1.48.0 - ISC
|
|
73
|
+
*
|
|
74
|
+
* This source code is licensed under the ISC license.
|
|
75
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
76
|
+
*/const Vl={name:"plug",size:24,node:[["path",{d:"M12 22v-5",key:"1ega77"}],["path",{d:"M15 8V2",key:"18g5xt"}],["path",{d:"M17 8a1 1 0 0 1 1 1v4a4 4 0 0 1-4 4h-4a4 4 0 0 1-4-4V9a1 1 0 0 1 1-1z",key:"1xoxul"}],["path",{d:"M9 8V2",key:"14iosj"}]]};Vl.node;const ob=we(Vl);/**
|
|
77
|
+
* @license lucide-react v1.48.0 - ISC
|
|
78
|
+
*
|
|
79
|
+
* This source code is licensed under the ISC license.
|
|
80
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
81
|
+
*/const Ql={name:"square-arrow-out-up-right",size:24,node:[["path",{d:"M21 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h6",key:"y09zxi"}],["path",{d:"m21 3-9 9",key:"mpx6sq"}],["path",{d:"M15 3h6v6",key:"1q9fwt"}]],aliases:["arrow-up-right-from-square"]};Ql.node;const ab=we(Ql);/**
|
|
82
|
+
* @license lucide-react v1.48.0 - ISC
|
|
83
|
+
*
|
|
84
|
+
* This source code is licensed under the ISC license.
|
|
85
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
86
|
+
*/const Xl={name:"users-round",size:24,node:[["path",{d:"M18 21a8 8 0 0 0-16 0",key:"3ypg7q"}],["circle",{cx:"10",cy:"8",r:"5",key:"o932ke"}],["path",{d:"M22 20c0-3.37-2-6.5-4-8a5 5 0 0 0-.45-8.3",key:"10s06x"}]],aliases:["users-2"]};Xl.node;const Rr=we(Xl);/**
|
|
87
|
+
* @license lucide-react v1.48.0 - ISC
|
|
88
|
+
*
|
|
89
|
+
* This source code is licensed under the ISC license.
|
|
90
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
91
|
+
*/const Jl={name:"venetian-mask",size:24,node:[["path",{d:"M18 11c-1.5 0-2.5.5-3 2",key:"1fod00"}],["path",{d:"M4 6a2 2 0 0 0-2 2v4a5 5 0 0 0 5 5 8 8 0 0 1 5 2 8 8 0 0 1 5-2 5 5 0 0 0 5-5V8a2 2 0 0 0-2-2h-3a8 8 0 0 0-5 2 8 8 0 0 0-5-2z",key:"d70hit"}],["path",{d:"M6 11c1.5 0 2.5.5 3 2",key:"136fht"}]]};Jl.node;const ib=we(Jl),ka=16,cb=280,lb=180;function Sa(e,t,s){const r=Math.max(t,window.innerWidth-ka),o=Math.max(s,window.innerHeight-ka),a=Math.min(Math.max(e.width,t),r),i=Math.min(Math.max(e.height,s),o),c=Math.min(Math.max(e.x,0),Math.max(0,window.innerWidth-a)),d=Math.min(Math.max(e.y,0),Math.max(0,window.innerHeight-i));return{x:c,y:d,width:a,height:i}}function db(e,t){return e.x!==t.x||e.y!==t.y||e.width!==t.width||e.height!==t.height}function ub(e){const{title:t,geometry:s,onGeometryChange:r,onClose:o,onRestore:a,minWidth:i,minHeight:c,children:d,className:m}=e,u=l.useRef(null),f=i??cb,p=c??lb;l.useEffect(()=>{const y=()=>{const S=Sa(s,f,p);db(S,s)&&r(S)};return y(),window.addEventListener("resize",y),()=>window.removeEventListener("resize",y)},[s,f,p,r]);const h=l.useRef(null);l.useEffect(()=>()=>{var y;return(y=h.current)==null?void 0:y.call(h)},[]);const g=l.useCallback((y,S)=>{var O;y.preventDefault();const j=u.current;if(!j)return;const C=j;(O=h.current)==null||O.call(h);const v=y.clientX,N=y.clientY,I=s;let D=I,T=0;function A(){T=0,C.style.left=`${D.x}px`,C.style.top=`${D.y}px`,C.style.width=`${D.width}px`,C.style.height=`${D.height}px`}function w(R){D=S(R.clientX-v,R.clientY-N,I),T||(T=requestAnimationFrame(A))}function E(){T&&cancelAnimationFrame(T),T=0,document.removeEventListener("pointermove",w),document.removeEventListener("pointerup",k),document.removeEventListener("pointercancel",k),h.current=null}function k(){E(),r(Sa(D,f,p))}document.addEventListener("pointermove",w),document.addEventListener("pointerup",k),document.addEventListener("pointercancel",k),h.current=E},[s,f,p,r]),x=l.useCallback(y=>{y.target.closest("button")||g(y,(S,j,C)=>({...C,x:C.x+S,y:C.y+j}))},[g]),b=l.useCallback(y=>{y.stopPropagation(),g(y,(S,j,C)=>({...C,width:Math.max(f,C.width+S),height:Math.max(p,C.height+j)}))},[g,f,p]);return xs.createPortal(n.jsxs(W.div,{ref:u,"data-slot":"floating-panel",role:"complementary","aria-label":t,initial:{opacity:0,scale:.95},animate:{opacity:1,scale:1},exit:{opacity:0,scale:.95},transition:{duration:.15,ease:[0,0,.2,1]},style:{left:s.x,top:s.y,width:s.width,height:s.height},className:B("bg-card border-border shadow-floating fixed z-40 flex flex-col overflow-hidden rounded-lg border",m),children:[n.jsxs("div",{onPointerDown:x,className:"border-border flex cursor-grab items-center gap-1 border-b px-3 py-2 select-none active:cursor-grabbing",children:[n.jsx("span",{className:"min-w-0 flex-1 truncate text-sm font-medium",children:t}),a?n.jsx(_,{variant:"ghost",size:"icon-sm","aria-label":"Restore",onClick:a,className:"text-muted-foreground hover:text-foreground",children:n.jsx(Ju,{})}):null,n.jsx(_,{variant:"ghost",size:"icon-sm","aria-label":"Close",onClick:o,className:"text-muted-foreground hover:text-foreground",children:n.jsx(Le,{})})]}),n.jsx("div",{className:"min-h-0 flex-1 overflow-auto",children:d}),n.jsx("div",{"aria-hidden":!0,onPointerDown:b,className:"absolute right-0 bottom-0 size-4 cursor-nwse-resize"})]}),document.body)}const tn=["TOP","LEFT","BOTTOM","RIGHT"],Vs={TOP:"radial-gradient(20.7% 50% at 50% 0%, hsl(var(--brand) / 0.7) 0%, transparent 100%)",LEFT:"radial-gradient(16.6% 43.1% at 0% 50%, hsl(var(--brand) / 0.7) 0%, transparent 100%)",BOTTOM:"radial-gradient(20.7% 50% at 50% 100%, hsl(var(--brand) / 0.7) 0%, transparent 100%)",RIGHT:"radial-gradient(16.2% 41.2% at 100% 50%, hsl(var(--brand) / 0.7) 0%, transparent 100%)"},mb="radial-gradient(75% 181.2% at 50% 50%, hsl(var(--brand)) 0%, transparent 100%)";function Zl({children:e,containerClassName:t,className:s,duration:r=1,clockwise:o=!0,...a}){const i=Ne(),[c,d]=l.useState(!1),[m,u]=l.useState("TOP");return l.useEffect(()=>{if(i||c)return;const f=setInterval(()=>{u(p=>{const h=tn.indexOf(p),g=o?(h-1+tn.length)%tn.length:(h+1)%tn.length;return tn[g]})},r*1e3);return()=>clearInterval(f)},[c,i,r,o]),n.jsxs("button",{type:"button","data-slot":"hover-border-gradient",onMouseEnter:()=>d(!0),onMouseLeave:()=>d(!1),className:B("bg-muted/40 hover:bg-muted/20 relative flex h-min w-fit items-center justify-center overflow-visible rounded-md border border-transparent p-px transition duration-500",t),...a,children:[n.jsx("div",{className:B("bg-brand text-brand-foreground z-10 w-auto rounded-[inherit] px-4 py-2 text-sm font-medium",s),children:e}),n.jsx(W.div,{className:"absolute inset-0 z-0 flex-none overflow-hidden rounded-[inherit]",style:{filter:"blur(2px)"},initial:{background:Vs[m]},animate:{background:c?[Vs[m],mb]:Vs[m]},transition:{ease:"linear",duration:i?0:r??1}}),n.jsx("div",{className:"bg-brand absolute inset-[2px] z-[1] flex-none rounded-[inherit]"})]})}function hb({...e}){const{theme:t}=qi();return n.jsx(Zu,{theme:t,className:"toaster group",icons:{success:n.jsx(ys,{className:"size-4"}),info:n.jsx(Gi,{className:"size-4"}),warning:n.jsx(Wi,{className:"size-4"}),error:n.jsx(xx,{className:"size-4"}),loading:n.jsx(wt,{})},style:{"--normal-bg":"var(--color-popover)","--normal-text":"var(--color-popover-foreground)","--normal-border":"var(--color-border)","--border-radius":"var(--radius)"},...e})}async function fb(){var t;if(!Me())return;const e=(t=window.electronAPI)==null?void 0:t.getShellLogExcerpt;if(typeof e=="function")try{const s=await e();return s&&s.length>0?s:void 0}catch{return}}const ed="root";function td(){return document.getElementById(ed)??document.body}const Ca=2e4;class Ke extends Error{constructor(s,r){super(r);Jt(this,"reason");this.name="AppCaptureError",this.reason=s}}function pb(){const e=typeof window<"u"?window.electronAPI:void 0;if(typeof(e==null?void 0:e.captureAppView)!="function")return null;const{captureAppView:t}=e;return()=>t()}function gb(){return new Promise(e=>{requestAnimationFrame(()=>requestAnimationFrame(()=>e()))})}function xb(){const e=[];for(const t of Array.from(document.body.children)){if(!(t instanceof HTMLElement)||t.id===ed)continue;const s=t.style.opacity;t.style.opacity="0",e.push(()=>{t.style.opacity=s})}return()=>{for(const t of e)t()}}async function yb(e){const t=await e().catch(s=>{throw new Ke("failed",`The desktop bridge threw: ${String(s)}`)});if(!t.ok)throw new Ke("failed",t.message);return{dataUrl:t.dataUrl,region:{left:0,top:0,width:window.innerWidth,height:window.innerHeight}}}async function bb(){let e;try{({snapdom:e}=await em(()=>import("./snapdom-SRLjr6oU.js"),[]))}catch(r){const o=r instanceof Error?r.message:String(r);throw new Ke("unsupported",`Loading the screenshot library failed: ${o}`)}const t=td(),s=getComputedStyle(document.body).backgroundColor;try{const r=t.getBoundingClientRect();return{dataUrl:(await e.toPng(t,{backgroundColor:s})).src,region:{left:r.left,top:r.top,width:r.width,height:r.height}}}catch(r){const o=r instanceof Error?r.message:String(r);throw new Ke("failed",`Rendering the app to an image failed: ${o}`)}}async function vb(e){let t;const s=new Promise((r,o)=>{t=setTimeout(()=>{o(new Ke("failed",`The capture did not finish in ${Ca}ms.`))},Ca)});try{return await Promise.race([e,s])}finally{clearTimeout(t),e.catch(()=>{})}}async function wb(){const e=pb(),t=xb();try{return await gb(),await vb(e?yb(e):bb())}finally{t()}}let nn=null;function nd(){if(nn)return nn;const e=wb();nn=e;const t=()=>{nn===e&&(nn=null)};return e.then(t,t),e}function jb(){return nd().then(e=>e.dataUrl)}function kb(){if(typeof window>"u")return;const{innerWidth:e,innerHeight:t,devicePixelRatio:s}=window;if(!(typeof e!="number"||typeof t!="number"))return{width:Math.round(e),height:Math.round(t),devicePixelRatio:typeof s=="number"?s:1}}function Sb(){try{return Intl.DateTimeFormat().resolvedOptions().timeZone||void 0}catch{return}}function Cb(e){const t=kb(),s=typeof navigator<"u"?navigator.userAgent:void 0,r=typeof navigator<"u"?navigator.language:void 0,o=Sb();return{theme:e,shell:Me()?"desktop-app":"browser",...t?{viewport:t}:{},...s?{browser:s.slice(0,tm)}:{},...r?{locale:r.slice(0,Vo)}:{},...o?{timezone:o.slice(0,Vo)}:{}}}function Os(e){return t=>()=>{e(),t()}}const Nb=2e3,Ab=.8,Eb=1400,Ib=.6,ts=6e5,us=1e4,Tb=["image/webp","image/jpeg","image/png"],Rb=/^data:image\/(webp|png|jpeg);base64,/;class St extends Error{constructor(s,r){super(r);Jt(this,"reason");this.name="ImageCompressError",this.reason=s}}function Db(e){return Rb.test(e)&&e.length<=ts}function Ob(e){return new Promise((t,s)=>{const r=new Image,o=setTimeout(()=>{s(new St("unreadable",`Decoding timed out after ${us}ms.`))},us);r.onload=()=>{clearTimeout(o),t(r)},r.onerror=()=>{clearTimeout(o),s(new St("unreadable",`Could not decode the image at ${e.slice(0,32)}…`))},r.src=e})}function Mb(e,t){for(const s of Tb){const r=e.toDataURL(s,t);if(r.startsWith(`data:${s};base64,`))return r}throw new St("unsupported","This canvas produced no usable image encoding.")}function Na(e,t,s=Nb){const r=Math.min(1,s/Math.max(e,t));return{width:Math.max(1,Math.round(e*r)),height:Math.max(1,Math.round(t*r))}}function Aa(e,t,s){const r=document.createElement("canvas");r.width=t.width,r.height=t.height;const o=r.getContext("2d");if(!o)throw new St("unsupported","This browser gave no 2d canvas context.");return o.drawImage(e,0,0,t.width,t.height),Mb(r,s)}async function Dr(e){const t=typeof e=="string"?null:URL.createObjectURL(e);let s;try{s=await Ob(t??e)}finally{t&&URL.revokeObjectURL(t)}const r=s.naturalWidth||s.width,o=s.naturalHeight||s.height;if(r<=0||o<=0)throw new St("unreadable","The image decoded to zero pixels.");let a=Aa(s,Na(r,o),Ab);if(a.length>ts&&(a=Aa(s,Na(r,o,Eb),Ib)),a.length>ts)throw new St("too-large",`Compressed to ${a.length} characters, over the ${ts} cap.`);return a}const _b=500;function Pb(e=_b){const t=ce(),s=Yi({coalesceMs:e,shouldFlush:()=>t.isMutating({mutationKey:Vi})===0});ue("config_changed",()=>{const r={queryKey:Oe.current()};s([r])})}const sd="dorkbot",Lb=["mesh","agent-paths"];function Fb(e){var r,o;const t=(r=e==null?void 0:e.agents)==null?void 0:r.defaultDirectory;if(!t)return"";const s=((o=e==null?void 0:e.agents)==null?void 0:o.defaultAgent)||sd;return`${t}/${s}`}function rd(){var d;const e=Te(),t=ie(),{data:s}=_e(),{data:r}=ve({queryKey:[...Lb],queryFn:()=>t.listMeshAgentPaths(),staleTime:3e4}),o=((d=s==null?void 0:s.agents)==null?void 0:d.defaultAgent)||sd,a=r==null?void 0:r.agents.find(m=>m.name===o),i=(a==null?void 0:a.projectPath)??Fb(s);return{startSession:l.useCallback(()=>{a?e(ut({agentId:a.id})):i&&nm(t,i).then(m=>e(m)).catch(m=>{Qi(t,m),ae.error("Couldn’t open the chat. Try again.")})},[e,i,a,t]),defaultAgentDir:i}}function $b(e){var t,s;return{pinned:e.pinned??[],groups:e.groups??[],muted:e.muted??[],sections:e.sections??{},gettingStarted:{retired:((t=e.gettingStarted)==null?void 0:t.retired)??[]},digest:{lastShownDate:(s=e.digest)==null?void 0:s.lastShownDate}}}function Bb(){const e=ce(),t=kn();ue("community_connections_changed",()=>{t&&e.invalidateQueries({queryKey:it.connections(t),exact:!0})})}function od(e){const t=ie(),s=e!==null&&e.status!=="pending",r=kn(s),o=(e==null?void 0:e.ref)??"";return ve({queryKey:r?it.disconnectImpact(r,o):[...it.all,"owner","unresolved",o,"disconnect-impact"],queryFn:()=>Xi(r,()=>t.getCommunityDisconnectImpact(o)),enabled:s&&r!==null,staleTime:0,refetchOnMount:"always"})}function ad(e){const t=e.flatMap(r=>r.displayName?[r.displayName]:[]),s=e.length-t.length;return s>0&&t.push(s===1?"an unnamed agent":`${s} unnamed agents`),t.length<=1?t[0]??"":`${t.slice(0,-1).join(", ")} and ${t[t.length-1]}`}function id(e,t){return t.length===0?null:t.length===1?t[0].displayName?`The agent you added from here, ${t[0].displayName}, will be removed from ${e}.`:`The agent you added from here will be removed from ${e}.`:`The ${t.length} agents you added from here will be removed from ${e}: ${ad(t)}.`}function cd(e){return`Any agents you added from here will be removed from ${e}.`}function ld(e,{remoteRevoked:t,agentsNotRemoved:s}){const r=ad(s);return s.length===0?t?{tone:"success",message:`${e} is disconnected.`}:{tone:"warning",message:zb(e)}:t?{tone:"warning",message:`Disconnected, but ${r} couldn’t be removed. Remove ${s.length===1?"it":"them"} under Agents on ${e}.`}:{tone:"warning",message:`Disconnected here, but ${e} couldn’t be reached. Remove ${r} and this DorkOS there.`}}function zb(e){return`Disconnected here, but ${e} couldn’t be reached. Finish under Connected installations on ${e}.`}function Nt(){const e=ie(),t=ce(),s=l.useRef(new Set),r=l.useRef(new Set),{data:o,isLoading:a}=ve({queryKey:Oe.current(),queryFn:()=>e.getConfig(),staleTime:Ji}),i=Tl(a),c={completedSteps:[],skippedSteps:[],startedAt:null,dismissedAt:null,completedAt:null,runtimeDefaultSetAt:null},d=o!=null&&o.onboarding?{completedSteps:o.onboarding.completedSteps,skippedSteps:o.onboarding.skippedSteps,startedAt:o.onboarding.startedAt,dismissedAt:o.onboarding.dismissedAt,completedAt:o.onboarding.completedAt??null,runtimeDefaultSetAt:o.onboarding.runtimeDefaultSetAt}:c,m=d.completedAt!==null,u=d.dismissedAt!==null,p=!i&&o!==void 0&&!m&&!u,h=!i&&m&&!u,g=Sn({mutationFn:C=>e.updateConfig({onboarding:C}),onSuccess:()=>{t.invalidateQueries({queryKey:Oe.all}).then(()=>{s.current.clear(),r.current.clear()})},onError:(C,v)=>{s.current.clear(),r.current.clear(),console.error("[onboarding] could not save progress",{fields:Object.keys(v),error:C}),ae.error("Couldn’t save your setup progress",{description:"Keep going. DorkOS tries again."})},meta:{suppressErrorToast:!0}});function x(C){const v=new Set([...d.completedSteps,...s.current]);v.has(C)||(s.current.add(C),g.mutate({completedSteps:[...v,C]}))}function b(C){const v=new Set([...d.skippedSteps,...r.current]);v.has(C)||(r.current.add(C),g.mutate({skippedSteps:[...v,C]}))}function y(){return g.mutateAsync({dismissedAt:new Date().toISOString()})}function S(){d.completedAt||g.mutate({completedAt:new Date().toISOString()})}function j(){d.startedAt||g.mutate({startedAt:new Date().toISOString()})}return{state:d,config:o,isLoading:i,isOnboardingComplete:m,isOnboardingDismissed:u,shouldShowOnboarding:p,shouldShowGettingStarted:h,completeStep:x,skipStep:b,dismiss:y,completeOnboarding:S,startOnboarding:j}}function Ub(e){const{shouldShowOnboarding:t,onboardingHiddenForSession:s}=e,r=t&&!s,[o,a]=l.useState(!1);return r&&!o&&a(!0),o&&!s}function Kb(){const e=Xr(),t=Lt(),s=Jr({strict:!1}).onboarding,r=Qo(s)?s:"welcome",o=l.useRef(!1),a=Ee({select:m=>m.status==="idle"}),i=l.useRef(!1);l.useEffect(()=>{if(i.current||!a||(i.current=!0,Qo(s)))return;const m=u=>({...u,onboarding:"welcome"});e==null||e({search:m,replace:!0})},[a,s,e]);const c=l.useCallback(m=>{const u=f=>({...f,onboarding:m});o.current=!0,e==null||e({search:u})},[e]),d=l.useCallback(m=>{if(o.current){t.history.back();return}const u=f=>({...f,onboarding:m});e==null||e({search:u})},[t,e]);return{stage:r,goToStage:c,goBack:d}}function Hb(e){const{done:t,overlayVisible:s}=e,r=Xr(),o=Jr({strict:!1}).onboarding;l.useEffect(()=>{if(!o||!t||s)return;const a=i=>({...i,onboarding:void 0});r==null||r({search:a,replace:!0})},[o,t,s,r])}function Qs({onBack:e,onSkipAll:t}){return n.jsxs("div",{className:"flex items-center justify-between px-4 py-3 sm:px-6",children:[n.jsx(_,{variant:"ghost",size:"sm",onClick:e,children:"Back"}),n.jsx(_,{variant:"ghost",size:"sm",onClick:t,className:"text-muted-foreground",children:"Skip all setup"})]})}const qb="claude-code";function Eo(e,t){return e.length===0?null:e.includes(t)?t:sm.find(r=>e.includes(r))??e[0]}function Wb({readyTypes:e,settled:t,settleToken:s}){var b,y;const{data:r}=_e(),o=Cn(),a=ce(),[i,c]=l.useState(null),[d,m]=l.useState(null),u=l.useRef(null),f=((b=r==null?void 0:r.executionDefaults)==null?void 0:b.runtime)??qb,p=!!((y=r==null?void 0:r.onboarding)!=null&&y.runtimeDefaultSetAt),h=l.useCallback((S,j)=>{c(null),m(j),o.mutate(S,{onSuccess:()=>void a.invalidateQueries({queryKey:Oe.all}),onError:C=>{m(null),c(C.message||"Couldn’t save that. Try again.")}})},[o,a]);l.useEffect(()=>{if(!t||e.length===0||!r||p)return;const S=Eo(e,f);S&&u.current!==s&&(u.current=s,h({onboarding:{runtimeDefaultSetAt:new Date().toISOString()},...S===f?{}:{runtimes:{default:S}}},S))},[t,s,e,r,p,f,h]);const g=l.useCallback(S=>{S!==(d??f)&&h({runtimes:{default:S},...p?{}:{onboarding:{runtimeDefaultSetAt:new Date().toISOString()}}},S)},[h,d,f,p]);return{runtime:d??((p||d!==null)&&r?f:null),current:d??f,choose:g,error:i}}const Gb=2200,Yb=["Checking","your","setup"],Vb=["You’re","ready"],Qb=["Connect","your","first","runtime"],Xb=["One","moment"];function Jb({onContinue:e,renderConnect:t,simulatedResult:s,simulatedDefaultRuntime:r}){const o=Ne(),a=Zr(),{data:i}=Zi(),{data:c}=ec(),d=s??a.data,m=s!==void 0||a.isSuccess||a.isError,u=s===void 0&&a.isError,[f,p]=l.useState(!1);l.useEffect(()=>{const A=setTimeout(()=>p(!0),o?0:Gb);return()=>clearTimeout(A)},[o]);const h=f&&m?"done":"checking",g=i?Object.keys(i.capabilities):void 0,{readyTypes:x,notReadyTypes:b}=l.useMemo(()=>{if(!d)return{readyTypes:[],notReadyTypes:[]};const A=[],w=[];for(const E of Object.keys(d.runtimes))tc(d,E,!0).state==="ready"||s===void 0&&rm(c,E)?A.push(E):w.push(E);return{readyTypes:A,notReadyTypes:w}},[d,c,s]),y=x.length>0;l.useEffect(()=>{if(h!=="done"||u||!y)return;const A=w=>{if(w.key!=="Enter")return;const E=w.target;E!=null&&E.closest("input, textarea, [contenteditable], form")||e()};return window.addEventListener("keydown",A),()=>window.removeEventListener("keydown",A)},[h,u,y,e]);const S=h==="checking"?Yb:u?Xb:y?Vb:Qb,j=Wb({readyTypes:x,settled:h==="done"&&!u&&s===void 0,settleToken:a.dataUpdatedAt}),[C,v]=l.useState(null),I=(r?{runtime:C??r,current:C??r,choose:v,error:null}:null)??j,D=h==="checking"?"Looking for Claude Code, Codex, and OpenCode on your machine.":u?"Couldn’t check your setup.":y?rv(x,I.runtime):"DorkOS runs Claude Code, Codex or OpenCode. Set one up in about a minute.",T=h==="checking";return n.jsxs(W.div,{className:"mx-auto flex w-full max-w-md flex-col items-center text-center",children:[n.jsx(W.div,{className:"mb-8",initial:o?!1:{opacity:0,scale:.8},animate:{opacity:T?.6:.9,scale:1},transition:{duration:.5},children:n.jsxs(W.div,{animate:T&&!o?{scale:[1,1.04,1],opacity:[.6,.8,.6]}:{scale:1,opacity:1},transition:T?{duration:2,repeat:1/0,ease:"easeInOut"}:{},children:[n.jsx(Ve,{size:104,className:"dark:hidden"}),n.jsx(Ve,{variant:"white",size:104,className:"hidden dark:block"})]})}),n.jsx(tv,{words:S,reducedMotion:!!o}),n.jsx(Ie,{mode:"wait",children:n.jsx(W.p,{className:"text-muted-foreground mt-3 text-sm text-balance",initial:o?!1:{opacity:0},animate:{opacity:1},exit:{opacity:0},transition:{duration:.25},children:D},D)}),h==="done"&&!u&&y&&n.jsx(sv,{chosen:I.current,readyTypes:x,otherTypes:b,onChoose:I.choose}),I.error&&n.jsx("p",{className:"text-destructive mt-2 text-xs","data-testid":"default-runtime-error",children:I.error}),n.jsx(Ie,{children:T&&n.jsx(nv,{},"scanning")}),h==="done"&&n.jsx("div",{className:"mt-8 w-full",children:u?n.jsx(ev,{onRetry:()=>void a.refetch(),isRetrying:a.isFetching}):y?n.jsx(Zb,{onContinue:e,notReadyTypes:b,requirements:d,registeredTypes:g,renderConnect:t,onRecheck:()=>void a.refetch(),isRechecking:a.isFetching,reducedMotion:!!o}):n.jsx(W.div,{initial:o?!1:{opacity:0,y:8},animate:{opacity:1,y:0},transition:{duration:.3},className:"text-left",children:n.jsx(nc,{requirements:d,registeredTypes:g,renderConnect:t,onRecheck:()=>void a.refetch(),isRechecking:a.isFetching})})})]})}function Zb({onContinue:e,notReadyTypes:t,requirements:s,registeredTypes:r,renderConnect:o,onRecheck:a,isRechecking:i,reducedMotion:c}){const[d,m]=l.useState(!1),u=t.length;return n.jsxs(W.div,{className:"flex flex-col items-center",initial:c?!1:{opacity:0,y:8},animate:{opacity:1,y:0},transition:{duration:.35},children:[n.jsx(Zl,{className:"px-6 py-2",duration:1.2,onClick:e,autoFocus:!0,"data-testid":"onboarding-get-started",children:"Meet DorkBot"}),u>0&&n.jsxs(bs,{open:d,onOpenChange:m,className:"mt-8 w-full",children:[n.jsxs(vs,{className:"text-muted-foreground hover:text-foreground mx-auto inline-flex items-center gap-1.5 text-xs transition-colors",children:[n.jsx(mt,{className:B("size-3.5 transition-transform",d&&"rotate-180")}),`${u} more to set up`]}),n.jsxs(ws,{className:"mt-4 space-y-3 text-left",children:[n.jsx(nc,{types:t,requirements:s,registeredTypes:r,renderConnect:o,onRecheck:a,isRechecking:i}),n.jsx("p",{className:"text-muted-foreground text-center text-xs",children:"Add these anytime from the status bar."})]})]})]})}function ev({onRetry:e,isRetrying:t}){return n.jsxs("div",{className:"flex flex-col items-center gap-3",role:"alert",children:[n.jsx("p",{className:"text-muted-foreground text-sm text-balance",children:"Couldn’t reach the DorkOS server. Check that it’s running, then try again."}),n.jsxs(_,{variant:"outline",className:"gap-2",onClick:e,disabled:t,children:[n.jsx(wr,{className:B("size-3.5",t&&"animate-spin")}),"Try again"]})]})}function tv({words:e,reducedMotion:t}){return n.jsx(Ie,{mode:"wait",children:n.jsx(W.h1,{className:"text-2xl font-semibold tracking-tight sm:text-3xl",children:t?e.join(" "):n.jsx(W.span,{initial:"hidden",animate:"visible",exit:"exit",variants:{visible:{transition:{staggerChildren:.08}},exit:{transition:{staggerChildren:.02,staggerDirection:-1}}},children:e.map((s,r)=>n.jsxs(W.span,{className:"inline-block",variants:{hidden:{opacity:0,filter:"blur(4px)"},visible:{opacity:1,filter:"blur(0px)"},exit:{opacity:0,filter:"blur(4px)"}},transition:{duration:.3},children:[s,r<e.length-1?" ":""]},r))})},e.join("-"))})}function nv(){const e=Ne();return n.jsxs(W.div,{className:"mt-8 flex flex-col items-center gap-4 py-2",initial:e?!1:{opacity:0},animate:{opacity:1},exit:{opacity:0},transition:{duration:.25},"data-testid":"requirements-checking",children:[n.jsx("div",{className:"flex items-center gap-1.5",children:[0,1,2].map(t=>n.jsx(W.div,{className:"bg-muted-foreground/40 size-2 rounded-full",animate:e?{}:{scale:[1,1.5,1],opacity:[.3,1,.3]},transition:{duration:1.2,repeat:1/0,delay:t*.2,ease:"easeInOut"}},t))}),n.jsx("span",{className:"text-muted-foreground text-sm",children:"Scanning…"})]})}function sv({chosen:e,readyTypes:t,otherTypes:s,onChoose:r}){const[o,a]=l.useState(!1),i=[...t,...s];return i.includes(e)||i.unshift(e),n.jsxs(Nn,{open:o,onOpenChange:a,children:[n.jsxs(An,{className:"text-muted-foreground hover:text-foreground mt-1 inline-flex items-center gap-1 text-xs underline-offset-2 transition-colors hover:underline","data-testid":"default-runtime-change",children:["Change",n.jsx(mt,{className:"size-3"})]}),n.jsxs(En,{align:"center",className:"p-1",children:[n.jsx(In,{children:"Start new chats with"}),n.jsx("div",{className:"flex flex-col",role:"listbox","aria-label":"Start new chats with",children:i.map(c=>{const d=c===e;return n.jsxs("button",{type:"button",role:"option","aria-selected":d,onClick:()=>{r(c),a(!1)},className:"hover:bg-accent flex items-center justify-between gap-3 rounded-md px-3 py-2.5 text-left text-sm transition-colors","data-testid":`default-runtime-option-${c}`,children:[n.jsxs("span",{className:"flex flex-col",children:[n.jsx("span",{children:Ye(c).label}),!t.includes(c)&&n.jsx("span",{className:"text-muted-foreground text-xs",children:"Not connected yet"})]}),d&&n.jsx(Ft,{className:"size-3.5 shrink-0","aria-hidden":!0})]},c)})})]})]})}function rv(e,t){const s=e.map(c=>Ye(c).label),r=s.length===0?"Ready to go.":s.length===1?`${s[0]} is connected.`:s.length===2?`${s[0]} and ${s[1]} are connected.`:`${s.slice(0,-1).join(", ")}, and ${s[s.length-1]} are connected.`;if(!t)return r;if(e.length===1&&e[0]===t)return`${r} New chats will start with it.`;const o=Ye(t).label;if(e.includes(t))return`${r} New chats will start with ${o}.`;const a=Eo(e,t),i=a?Ye(a).label:null;return i?`${r} New chats use ${i} until ${o} is connected.`:`${r} New chats will start with ${o} once it’s connected.`}function ov(){var m;const e=ie(),t=ce(),{data:s}=ve({queryKey:Oe.current(),queryFn:()=>e.getConfig(),staleTime:300*1e3}),r=((m=s==null?void 0:s.mesh)==null?void 0:m.scanRoots)??[],o=(s==null?void 0:s.boundary)??"",a=r.length>0?r:o?[o]:[],{mutate:i,isPending:c}=Sn({mutationKey:Vi,mutationFn:async u=>{await e.updateConfig({mesh:{scanRoots:u}})},onSuccess:()=>{t.invalidateQueries({queryKey:Oe.all})}}),d=l.useCallback(u=>i(u),[i]);return{roots:a,boundary:o,isSaving:c,setScanRoots:d}}const av=[{queryKey:["mesh"]},{queryKey:["agents"]},{queryKey:["team"]}],iv=400;function cv(e=iv){const t=Yi({coalesceMs:e});ue("agents_changed",()=>t(av))}function lv(){const e=ce();ue("capabilities_changed",()=>{e.invalidateQueries({queryKey:sc.all})})}function dv(){const e=ie(),t=ce();return Sn({mutationFn:({agentId:s,key:r,surface:o})=>e.patchAgentPermissions(s,{...r.kind==="area"?{areas:{[r.area]:null}}:{},...r.kind==="action"?{actions:{[r.action]:null}}:{},...r.kind==="files"?{filesAndCommands:null}:{},surface:o}),onSettled:()=>{t.invalidateQueries({queryKey:sc.all}),t.invalidateQueries({queryKey:["mesh","agents"]})}})}function Ea(e){return e instanceof Error&&e.message||"Couldn’t save that. Try again."}const uv=[{lead:"Edits and commands run without asking.",rest:"Agents still ask when something needs your call."},{lead:"Your instructions still hold.",rest:"If you told an agent to check first, it does."},{lead:"Agents reach across projects.",rest:"They can message agents in your other projects too."},{lead:"Approvals can stick.",rest:"Always allow remembers your yes for that agent and action."},{lead:"Scheduled runs use your power level.",rest:"Timed runs get the same freedom."}];function dd({heading:e,onClose:t,onCustomize:s}){const r=Cn(),o=Ex(),a=om({kind:"default"}),i=ce(),[c,d]=l.useState(!1),[m,u]=l.useState(null),[f,p]=l.useState(!1),h=c||r.isPending||o.isPending||a.isPending,g=l.useCallback(()=>{i.invalidateQueries({queryKey:Oe.all})},[i]),x=l.useCallback(async()=>{u(null),p(!1),d(!0);const C=new Date().toISOString();try{await r.mutateAsync({ui:{fullPowerDecidedAt:C,fullPowerChoice:"full"},runtimes:{defaultTrustStop:"autonomy"}}),await a.mutateAsync({kind:"preset",preset:"full",surface:"first-run"})}catch(v){u(Ea(v)),d(!1);return}g();try{await o.mutateAsync(!0)}catch{p(!0),d(!1);return}d(!1),t()},[r,a,o,g,t]),b=l.useCallback(async()=>{u(null),d(!0);try{await r.mutateAsync({ui:{fullPowerDecidedAt:new Date().toISOString(),fullPowerChoice:"supervised"}}),await a.mutateAsync({kind:"preset",preset:"careful",surface:"first-run"})}catch(C){return u(Ea(C)),d(!1),!1}return g(),d(!1),!0},[r,a,g]),y=l.useCallback(async()=>{await b()&&t()},[b,t]),S=l.useCallback(async()=>{await b()&&(s==null||s(),t())},[b,s,t]),j=l.useCallback(async()=>{d(!0);try{await o.mutateAsync(!0)}catch{d(!1);return}p(!1),d(!1),t()},[o,t]);return f?n.jsxs(n.Fragment,{children:[n.jsxs(jr,{children:[n.jsx(kr,{children:"Full power is on"}),n.jsx(Sr,{children:"One step didn’t finish."})]}),n.jsx("p",{role:"alert",className:"text-muted-foreground text-sm",children:"Agents can’t message other projects yet. Full power stays on."}),n.jsx("p",{className:"text-muted-foreground text-sm",children:"Try again now, or later from Settings."}),n.jsxs(Cr,{className:"items-center gap-2 sm:justify-end",children:[n.jsx(_,{variant:"outline",size:"sm",onClick:t,disabled:h,children:"Close"}),n.jsx(_,{size:"sm",onClick:j,disabled:h,children:"Try again"})]})]}):n.jsxs(n.Fragment,{children:[n.jsxs(jr,{children:[n.jsx(kr,{"data-testid":"full-power-door",children:e}),n.jsx(Sr,{children:"Agents stop asking before each action. Here’s what changes:"})]}),n.jsx("ul",{className:"space-y-2 text-sm",children:uv.map(C=>n.jsxs("li",{className:"flex items-start gap-2",children:[n.jsx(Ot,{className:"text-status-success mt-0.5 size-4 shrink-0","aria-hidden":!0}),n.jsxs("span",{children:[n.jsx("span",{className:"font-medium",children:C.lead})," ",n.jsx("span",{children:C.rest})]})]},C.lead))}),n.jsx(am,{mode:"bypassPermissions"}),s&&n.jsx("div",{children:n.jsx(_,{variant:"link",size:"sm",className:"text-muted-foreground h-auto p-0 text-left whitespace-normal",onClick:S,disabled:h,children:"Pick the pieces yourself"})}),n.jsxs(Cr,{className:"items-center gap-2 sm:justify-between",children:[m?n.jsx("p",{role:"alert",className:"text-destructive text-xs",children:m}):n.jsx("span",{"aria-hidden":!0}),n.jsxs("div",{className:"flex flex-wrap justify-end gap-2",children:[n.jsx(_,{variant:"outline",size:"sm",onClick:y,disabled:h,children:"Keep asking me first"}),n.jsxs(_,{size:"sm",onClick:x,disabled:h,className:B("bg-status-success dark:text-status-success-bg text-white","hover:bg-status-success/90 focus-visible:ring-status-success","focus-visible:ring-offset-background focus-visible:ring-offset-2"),children:[n.jsx(Ot,{"aria-hidden":!0}),"Unlock full power"]})]})]})]})}function mv({onClose:e}){const t=U(s=>s.setControlCenterOpen);return n.jsx(dd,{heading:"DorkOS runs at full power",onClose:e,onCustomize:()=>t(!0)})}function hv({onAdvance:e}){const{completeStep:t,skipStep:s}=Nt(),r=l.useCallback(()=>{t("power"),e()},[t,e]),o=l.useCallback(()=>{s("power"),e()},[s,e]);return n.jsx(rc,{open:!0,modal:!1,children:n.jsxs("div",{className:"flex w-full max-w-lg flex-col items-center gap-3",children:[n.jsx("div",{className:"bg-background grid w-full gap-4 rounded-lg border p-6 shadow-lg",children:n.jsx(dd,{heading:"Choose your power level",onClose:r})}),n.jsx(_,{variant:"ghost",size:"sm",className:"text-muted-foreground",onClick:o,"data-testid":"onboarding-power-decide-later",children:"Decide later"})]})})}const Xs=["Welcome","to","DorkOS"],fv=[{icon:rt,label:"Build your team"},{icon:Dl,label:"Ask for tools"},{icon:Ol,label:"Connect services"}];function pv({onGetStarted:e,onSkipAll:t}){const s=Ne();return n.jsxs("div",{className:"mx-auto flex w-full max-w-md flex-col items-center px-4 text-center",children:[n.jsxs(W.div,{className:"mb-6 opacity-80",initial:s?!1:{opacity:0,scale:.8},animate:{opacity:.8,scale:1},transition:{duration:.4},children:[n.jsx(Ve,{size:150,className:"dark:hidden"}),n.jsx(Ve,{variant:"white",size:150,className:"hidden dark:block"})]}),n.jsx("h1",{className:"text-3xl font-semibold tracking-tight sm:text-4xl",children:s?Xs.join(" "):n.jsx(W.span,{initial:"hidden",animate:"visible",variants:{visible:{transition:{staggerChildren:.08}}},children:Xs.map((r,o)=>n.jsxs(W.span,{className:"inline-block",variants:{hidden:{opacity:0,filter:"blur(4px)"},visible:{opacity:1,filter:"blur(0px)"}},transition:{duration:.4},children:[r,o<Xs.length-1?" ":""]},o))})}),n.jsx(W.p,{className:"text-muted-foreground mt-4",initial:s?!1:{opacity:0},animate:{opacity:1},transition:{delay:.4,duration:.5},children:"Build and run your business with an agent team."}),n.jsx(W.div,{className:"mt-10 flex gap-8",initial:s?!1:{opacity:0,y:8},animate:{opacity:1,y:0},transition:{delay:.6,duration:.4},children:fv.map(({icon:r,label:o},a)=>n.jsxs("div",{className:"flex flex-col items-center gap-2",children:[n.jsx("div",{className:"bg-muted flex size-10 items-center justify-center rounded-lg",children:n.jsx(r,{className:"text-muted-foreground size-5"})}),n.jsx("span",{className:"text-muted-foreground text-xs",children:o})]},a))}),n.jsxs(W.div,{className:"mt-12 flex flex-col items-center gap-3",initial:s?!1:{opacity:0},animate:{opacity:1},transition:{delay:.8,duration:.4},children:[n.jsx(Zl,{className:"px-6 py-2",duration:1.2,onClick:e,children:"Get started"}),n.jsx(_,{variant:"ghost",size:"sm",onClick:t,className:"text-muted-foreground",children:"Skip all setup"})]})]})}const gv=50,sn=["room_created","room_updated","room_member_added","room_member_removed","room_activity"];function Ia(e){if(typeof e!="object"||e===null)return!1;const{roomId:t}=e;return typeof t=="string"&&t.length>0}function xv(e){if(typeof e!="object"||e===null)return!1;const{userId:t,threadKind:s,threadId:r,lastReadSeq:o,unreadCount:a}=e;return s==="room"&&typeof t=="string"&&t.length>0&&typeof r=="string"&&r.length>0&&typeof o=="number"&&typeof a=="number"}function yv(e,t){const s=e.getQueryData(Re.detail(t.threadId));return s===void 0||s.viewerAuthorId===t.userId}function bv(e,t){const s=e.isFetching({queryKey:Re.lists()})>0;e.cancelQueries({queryKey:Re.lists()}),e.setQueriesData({queryKey:Re.lists()},o=>Array.isArray(o)?o.map(a=>a.id===t.threadId&&a.unreadCount!==null?{...a,unreadCount:Math.min(a.unreadCount,t.unreadCount)}:a):o),e.setQueryData(Re.detail(t.threadId),o=>o&&{...o,members:o.members.map(a=>a.authorId===t.userId?{...a,lastReadSeq:Math.max(a.lastReadSeq,t.lastReadSeq)}:a)});const r=e.getQueryData(Re.threads());r!=null&&r.some(o=>o.roomId===t.threadId&&o.unreadCount>0)&&e.invalidateQueries({queryKey:Re.threads()}),s&&e.invalidateQueries({queryKey:Re.lists()})}function vv(){const e=ce(),t=()=>{e.invalidateQueries({queryKey:Re.lists()}),e.invalidateQueries({queryKey:Re.wellKnowns()}),e.invalidateQueries({queryKey:Re.threads()})};ue(sn[0],t),ue(sn[1],t),ue(sn[2],t),ue(sn[3],t),ue(sn[4],t),ue("room_updated",o=>{Ia(o)&&e.invalidateQueries({queryKey:Re.detail(o.roomId)})});const s=l.useRef(new Set),r=o=>{if(!Ia(o))return;const a=s.current;if(a.has(o.roomId))return;a.add(o.roomId);const i=o.roomId;setTimeout(()=>{a.delete(i),e.invalidateQueries({queryKey:Re.detail(i)})},gv)};ue("room_member_added",r),ue("room_member_removed",r),ue("room_presence",o=>im.getState().observe(o)),ue("read_cursor",o=>{!xv(o)||!yv(e,o)||bv(e,o)})}function wv(){const e=ie(),t=U(o=>o.selectedCwd),s=U(o=>o.setSelectedCwd),{data:r}=ve({queryKey:["defaultCwd"],queryFn:()=>e.getDefaultCwd(),enabled:t===null,staleTime:1/0,refetchOnMount:!1,refetchOnReconnect:!1,networkMode:"always"});l.useEffect(()=>{r!=null&&r.path&&U.getState().selectedCwd===null&&s(r.path)},[r,t,s])}function Ta(e){e.invalidateQueries({queryKey:$t.recentRoot})}function Ra(e){e.invalidateQueries({queryKey:$t.dailyCountsRoot})}function jv(e,t){const s=Object.keys(e);return s.length!==Object.keys(t).length?!0:s.some(r=>!(r in t))}function kv(e,t){e.setQueryData($t.list(t.cwd??null),s=>{const r=s??[];return(r.some(a=>a.id===t.id)?r.map(a=>a.id===t.id?t:a):[t,...r]).sort((a,i)=>i.updatedAt.localeCompare(a.updatedAt))})}function Sv(e,t,s){e.setQueryData($t.list(s),r=>r&&r.filter(o=>o.id!==t))}function Da(e,t,s){const r=new Set(Object.keys(t).filter(o=>!(o in s)));r.size!==0&&e.setQueriesData({queryKey:$t.listRoot},o=>o!=null&&o.some(a=>r.has(a.id))?o.flatMap(a=>{if(!r.has(a.id))return[a];const i=t[a.id];return o.some(d=>d.id===i)?[]:[{...a,id:i}]}):o)}function Oa(e,t,s){const r=Date.now(),o=[];for(const[a,i]of Object.entries(t))s[a]!==i&&(kv(e,i),o.push(i));lm(e,o,r);for(const[a,i]of Object.entries(s))t[a]||Sv(e,a,i.cwd??null)}function Cv(){const e=ce();l.useEffect(()=>{cm();let t={},s={};const r=ct.subscribe(i=>{i.sessions!==t&&(Oa(e,i.sessions,t),Ta(e),jv(i.sessions,t)&&Ra(e),t=i.sessions),i.rekeys!==s&&(Da(e,i.rekeys,s),s=i.rekeys)}),o=as.subscribeEvent("session_list_invalidated",()=>{ct.getState().dropSessions(),e.invalidateQueries({queryKey:$t.listRoot}),Ta(e),Ra(e)}),a=ct.getState();return Object.keys(a.sessions).length>0&&(Oa(e,a.sessions,t),t=a.sessions),Object.keys(a.rekeys).length>0&&(Da(e,a.rekeys,s),s=a.rekeys),as.connectList(),()=>{r(),o()}},[e])}function Nv(){const e=ce();ue("tasks_changed",()=>{e.invalidateQueries({queryKey:[...dm],exact:!0})})}const Av={reactions:!1,threads:!1,runWith:!1,attachments:!1,mentions:!1,streamHealth:!1,presence:!1,turnStatus:!1,asks:!1};function Ev({sessionId:e}){l.useEffect(()=>{var a;const r=ct.getState(),o=((a=r.sessions[e])==null?void 0:a.cwd)??r.statusCwds[e]??null;return as.pinSession(e,o),Xo.getState().setPinnedSession(e),()=>{as.unpinSession(),Xo.getState().setPinnedSession(null)}},[e]);const t=um(e),s=l.useMemo(()=>mm(t),[t]);return s===null?n.jsx("div",{className:"text-muted-foreground flex h-full items-center justify-center p-4 text-center text-sm",children:"No live widget in this chat"}):n.jsx(hm,{code:s.code,isIncomplete:s.isIncomplete,sessionId:e,isLatestMessage:s.isLatest,isStreaming:s.isStreaming},s.sourceMessageKey)}const Ma="inbox",Iv="open";function Tv({blocked:e=!1}={}){const t=js()[Ma],s=Xr(),r=t!==void 0,o=t==null?"":String(t).trim();l.useEffect(()=>{!r||!s||(o&&!e&&fm(void 0,o===Iv?void 0:{focus:o}),s({search:a=>({...a,[Ma]:void 0}),replace:!0}))},[r,o,e,s]),l.useEffect(()=>{e&&pm()},[e])}function Rv({agentName:e,className:t}){var c;const s=oc(),r=e.trim()||"This agent";if(s.isPending)return n.jsx("p",{className:B("text-muted-foreground text-center text-xs",t),"data-testid":"every-agent-access-checking",children:"Checking apps every agent can use…"});if(s.isError)return n.jsxs("p",{className:B("text-muted-foreground text-xs",t),"data-testid":"every-agent-access-unknown",children:["Couldn’t check apps shared with every agent. ",r," gets them too."]});const o=((c=s.data)==null?void 0:c.connections)??[];if(o.length===0)return null;const a=new Map;for(const d of o)a.set(d.toolkit,(a.get(d.toolkit)??0)+1);const i=o.map(d=>{const m=(a.get(d.toolkit)??0)>1?`${Jo(d.toolkit)} · ${d.label}`:Jo(d.toolkit),u=gm(d.access.classifications);return`${m} (${d.lifecycle==="paused"?`${u}, paused`:u})`});return n.jsxs("div",{className:B("bg-muted/40 flex items-start gap-3 rounded-xl px-4 py-3 text-sm",t),"data-testid":"every-agent-access-notice",children:[n.jsx(eo,{className:"text-muted-foreground mt-0.5 size-4 shrink-0","aria-hidden":!0}),n.jsxs("p",{className:"min-w-0 flex-1",children:[n.jsxs("span",{className:"font-medium",children:[r," will get:"]})," ",i.join(", "),"."," ",n.jsx("span",{className:"text-muted-foreground",children:"You can change this in Connections."})]})]})}function Dv(){const e=ce();ue("relay_bindings_changed",()=>{e.invalidateQueries({queryKey:[...xm]})})}function Ov(){const e=ce();ue("commands_changed",()=>{e.invalidateQueries({queryKey:["commands"]})})}function Mv({message:e,grouping:t,author:s}){const r=l.useId(),o=`${r}-author`,a=`${r}-content`,i=t.position==="first"||t.position==="only";return n.jsxs(en.Root,{position:t.position,"data-testid":"message-item",...i?{"aria-labelledby":o}:{"aria-label":s.displayName},"aria-describedby":a,className:"hover:bg-transparent",children:[n.jsx(en.Gutter,{author:s}),n.jsxs(en.Body,{children:[n.jsx(en.Author,{id:o,author:s}),n.jsx(en.Content,{id:a,children:n.jsx("div",{className:"msg-prose",children:n.jsx(ym,{content:e.content})})})]})]})}const _v=4e3;function Io(){var o;const e=to(),{identityPromptDismissedAt:t,isLoading:s}=Tn();if(s||e.isPending)return"pending";if(t!==null)return"settled";const r=(o=e.data)==null?void 0:o.members.find(a=>a.isSelf);return r&&Sx(r)?"ask":"settled"}function Pv(){const{state:e,isLoading:t,shouldShowGettingStarted:s}=Nt(),r=Io(),{dismissIdentityPrompt:o}=Tn(),[a,i]=l.useState("ask");l.useEffect(()=>{if(a!=="saved")return;const u=setTimeout(()=>i("done"),_v);return()=>clearTimeout(u)},[a]);const c=e.completedAt!==null||e.dismissedAt!==null,d=!t&&c&&r==="ask"&&!s,m=()=>{o().catch(()=>{})};return{visible:a!=="done"&&(d||a==="saved"),phase:a,markSaved:()=>{i("saved"),m()},skip:()=>{i("done"),m()}}}const To=[{id:"arrival",lines:[...oe.arrival],composerEnabled:!1},{id:"identity",lines:[...oe.identityPrompt],widget:"identity",composerEnabled:!1},{id:"personality",lines:[oe.personalityPrompt],widget:"personality",composerEnabled:!1},{id:"profile",lines:[...oe.profilePrompt],widget:"profile",composerEnabled:!1},{id:"discovery",lines:[oe.discoveryPrompt],widget:"discovery",composerEnabled:!1},{id:"handoff",lines:[oe.handoffPrompt],composerEnabled:!0}];function _a(e){const t=To.find(s=>s.id===e);if(!t)throw new Error(`Unknown onboarding beat: ${e}`);return t}function Lv(e,t,s){return{id:e,role:t,content:s,parts:[{type:"text",text:s}],timestamp:new Date().toISOString()}}function Fv(e){const t=[];for(let s=0;s<e.length;s++){const r=e[s].role,o=s>0&&e[s-1].role===r,a=s<e.length-1&&e[s+1].role===r;let i;!o&&!a?i="only":o?a?i="middle":i="last":i="first",t.push({position:i})}return t}const $v=420,Bv=680,zv={stage:"first-light",beatIndex:0,revealed:[],queue:[],isTyping:!1,idCounter:0,saving:!1,saveError:!1,discoveryPhase:"unasked"};function Js(e,t){let s=e.idCounter;const r=t.map(o=>Lv(`ob-line-${s++}`,"assistant",o));return{queue:[...e.queue,...r],idCounter:s}}function Uv(e){return To.findIndex(t=>t.id===e)}function Kv(e,t){switch(t.type){case"begin":return e.stage==="talking"?e:{...e,stage:"talking",...Js(e,_a("arrival").lines)};case"reveal-one":{if(e.queue.length===0)return e;const[s,...r]=e.queue;return{...e,revealed:[...e.revealed,s],queue:r,isTyping:!1}}case"drain":return e.queue.length===0?{...e,isTyping:!1}:{...e,revealed:[...e.revealed,...e.queue],queue:[],isTyping:!1};case"start-typing":return e.queue.length===0?e:{...e,isTyping:!0};case"saving":return{...e,saving:!0,saveError:!1};case"save-error":return{...e,saving:!1,saveError:!0};case"goto-beat":{const s=_a(t.beatId);return{...e,beatIndex:Uv(t.beatId),saving:!1,discoveryPhase:"unasked",...Js(e,[...t.extraLines,...s.lines])}}case"discovery-scanning":return{...e,discoveryPhase:"scanning"};case"discovery-results":return{...e,discoveryPhase:"results",...Js(e,[t.line])};default:return e}}function Hv(e){const[t,s]=l.useReducer(Kv,zv),r=l.useRef(e);l.useEffect(()=>{r.current=e});const o=To[t.beatIndex],a=t.queue.length===0&&!t.isTyping;l.useEffect(()=>{if(t.queue.length===0)return;if(r.current.reducedMotion){s({type:"drain"});return}if(t.isTyping){const w=setTimeout(()=>s({type:"reveal-one"}),Bv);return()=>clearTimeout(w)}const A=setTimeout(()=>s({type:"start-typing"}),$v);return()=>clearTimeout(A)},[t.queue.length,t.isTyping]);const i=e.identityQuestion;l.useEffect(()=>{t.stage!=="talking"||o.id!=="arrival"||!a||i!=="pending"&&s({type:"goto-beat",beatId:i==="ask"?"identity":"personality",extraLines:[]})},[t.stage,o.id,a,i]);const c=l.useRef(!1);l.useEffect(()=>{o.id==="handoff"&&!c.current&&(c.current=!0,r.current.completeOnboarding())},[o.id]);const d=l.useCallback(()=>s({type:"begin"}),[]),m=l.useCallback(()=>s({type:"drain"}),[]),u=l.useCallback(()=>{r.current.closeIdentityQuestion(),s({type:"goto-beat",beatId:"personality",extraLines:[oe.identitySaved]})},[]),f=l.useCallback(()=>{r.current.closeIdentityQuestion(),s({type:"goto-beat",beatId:"personality",extraLines:[oe.identitySkip]})},[]),p=l.useCallback(A=>{s({type:"saving"}),r.current.saveTraits(A).then(()=>{r.current.completeStep("meet-dorkbot"),s({type:"goto-beat",beatId:"profile",extraLines:[]})}).catch(()=>s({type:"save-error"}))},[]),h=l.useCallback(()=>{r.current.skipStep("meet-dorkbot"),s({type:"goto-beat",beatId:"profile",extraLines:[oe.personalitySkip]})},[]),g=l.useCallback(A=>{s({type:"saving"}),r.current.saveProfile(A).then(()=>{r.current.completeStep("profile");const w=Gx(bm(A));s({type:"goto-beat",beatId:"discovery",extraLines:w?[w]:[]})}).catch(()=>s({type:"save-error"}))},[]),x=l.useCallback(()=>{r.current.skipStep("profile"),s({type:"goto-beat",beatId:"discovery",extraLines:[oe.profileSkip]})},[]),b=l.useCallback(()=>s({type:"discovery-scanning"}),[]),y=l.useCallback(()=>{r.current.skipStep("discovery"),s({type:"goto-beat",beatId:"handoff",extraLines:[oe.discoveryDecline]})},[]),S=l.useCallback(A=>{s({type:"discovery-results",line:Yx(A)})},[]),j=l.useCallback(()=>{r.current.completeStep("discovery"),s({type:"goto-beat",beatId:"handoff",extraLines:[oe.discoveryZero]})},[]),C=l.useCallback(()=>{r.current.skipStep("discovery"),s({type:"goto-beat",beatId:"handoff",extraLines:[oe.discoveryTimeout]})},[]),v=l.useCallback(()=>{r.current.completeStep("discovery"),s({type:"goto-beat",beatId:"handoff",extraLines:[]})},[]),N=l.useCallback(A=>{r.current.onDissolve(A)},[]),I=l.useMemo(()=>Fv(t.revealed),[t.revealed]),D=t.stage==="talking"&&a&&o.widget?o.widget:null,T=t.stage==="talking"&&o.composerEnabled&&a;return{isFirstLight:t.stage==="first-light",messages:t.revealed,grouping:I,isTyping:t.isTyping,isRevealing:t.queue.length>0||t.isTyping,beatId:o.id,activeWidget:D,composerEnabled:T,discoveryPhase:t.discoveryPhase,saving:t.saving,saveError:t.saveError,beginConversation:d,fastForward:m,confirmIdentity:u,skipIdentity:f,confirmPersonality:p,skipPersonality:h,confirmProfile:g,skipProfile:x,consentDiscovery:b,declineDiscovery:y,reportDiscoveryResults:S,reportDiscoveryZero:j,reportDiscoveryTimeout:C,finishDiscovery:v,submitFirstMessage:N}}function ud(){const e=ie(),t=l.useRef(null),{startScan:s,addCandidate:r,addExistingAgent:o,setProgress:a,completeScan:i,setError:c}=ks(),d=l.useCallback((u={roots:[]})=>{var p;(p=t.current)==null||p.abort();const f=new AbortController;t.current=f,s(),e.scan(u,h=>{switch(h.type){case"candidate":r(h.data);break;case"existing-agent":o(h.data);break;case"progress":a(h.data);break;case"complete":i(h.data);break;case"error":c(h.data.error);break}},f.signal).catch(h=>{h instanceof Error&&h.name!=="AbortError"&&c(h.message)})},[e,s,r,o,a,i,c]),m=l.useCallback(()=>{var u;(u=t.current)==null||u.abort(),t.current=null},[]);return{startScan:d,stopScan:m}}function md(){const[e,t]=l.useState(new Set),s=l.useCallback(o=>{t(a=>new Set(a).add(o))},[]),r=l.useCallback(()=>{t(new Set)},[]);return{actedPaths:e,markActed:s,resetActed:r}}function hd({register:e,onSuccess:t}){const s=l.useRef(new Set),[r,o]=l.useState(new Set),[a,i]=l.useState(new Set),c=l.useCallback(async m=>{if(!s.current.has(m.path)){s.current.add(m.path),o(u=>new Set(u).add(m.path)),i(u=>{const f=new Set(u);return f.delete(m.path),f});try{await e(m),t(m)}catch{i(u=>new Set(u).add(m.path))}finally{s.current.delete(m.path),o(u=>{const f=new Set(u);return f.delete(m.path),f})}}},[t,e]),d=l.useCallback(()=>i(new Set),[]);return{failedPaths:a,pendingPaths:r,registerCandidate:c,resetFailures:d}}function fd(e){return{name:e.hints.suggestedName,runtime:e.hints.detectedRuntime,...e.hints.inferredCapabilities?{capabilities:e.hints.inferredCapabilities}:{},...e.hints.description?{description:e.hints.description}:{}}}function pd(e){return[...e].sort((t,s)=>{const r=t.strategy==="dork-manifest",o=s.strategy==="dork-manifest";return r!==o?r?-1:1:t.path.localeCompare(s.path)})}const qv={"claude-code":"Has an AGENTS.md file, so it’s a Claude Code project.",cursor:"Has a .cursor folder, so it’s a Cursor project.",codex:"Has a .codex folder, so it’s a Codex project.","dork-manifest":"Has a .dork/agent.json file, so it’s already a DorkOS agent."};function Wv(e){return qv[e]??`Found by the “${e}” check.`}const Gv={"code-review":"Reviews code for bugs, style issues, and correctness.",summarize:"Summarizes documents, chats, or code.","file-ops":"Reads and writes files on the filesystem.",test:"Generates and runs tests for a codebase.",search:"Searches code, files, or the web for relevant information.",refactor:"Refactors code while preserving existing behavior.",analyze:"Analyzes data, logs, or codebases for patterns and insights.",generate:"Generates code, content, or structured output.",debug:"Diagnoses and fixes bugs in code.",deploy:"Manages deployment pipelines and infrastructure changes."};function Yv(e){return Gv[e]??"Found in the project’s files."}function gd({candidate:e,onApprove:t,onDeny:s,onSkip:r,registrationFailed:o=!1,registrationPending:a=!1,className:i,ref:c}){const{path:d,strategy:m,hints:u}=e;return n.jsxs(W.div,{ref:c,"data-slot":"candidate-card","aria-busy":a,layout:!0,initial:{opacity:0,y:6},animate:{opacity:1,y:0},exit:{opacity:0,y:-6},transition:{duration:.15,ease:"easeOut"},className:B("flex items-start justify-between rounded-xl border p-4",i),children:[n.jsxs("div",{className:"min-w-0 flex-1 space-y-2",children:[n.jsx("p",{className:"truncate text-sm leading-tight font-semibold",title:u.suggestedName||d.split("/").pop()||d,children:u.suggestedName||d.split("/").pop()||d}),n.jsxs("div",{className:"text-muted-foreground flex items-center gap-1.5 text-xs",children:[n.jsx(vm,{className:"size-3 shrink-0"}),n.jsx("span",{className:"truncate font-mono",title:d,children:d})]}),n.jsxs("div",{className:"flex flex-wrap items-center gap-1.5",children:[n.jsxs(ly,{openDelay:300,children:[n.jsx(dy,{asChild:!0,children:n.jsx(pn,{variant:"secondary",className:"hover:bg-secondary/80 cursor-default",children:u.detectedRuntime})}),n.jsxs(uy,{className:"w-56 space-y-1.5 p-3",side:"top",align:"start",children:[n.jsx("p",{className:"text-xs font-medium",children:"How DorkOS knows"}),n.jsx("p",{className:"text-muted-foreground text-xs",children:Wv(m)})]})]}),u.inferredCapabilities&&u.inferredCapabilities.length>0&&u.inferredCapabilities.map(f=>n.jsxs(Bt,{children:[n.jsx(zt,{asChild:!0,children:n.jsx(pn,{size:"xs",variant:"outline",className:"cursor-default",children:f})}),n.jsx(Ut,{side:"top",className:"max-w-48 text-center",children:Yv(f)})]},f))]}),o&&n.jsx("p",{role:"alert",className:"text-destructive text-xs",children:"Couldn’t add this project. Try again."})]}),n.jsxs("div",{className:"ml-4 flex shrink-0 items-center gap-1.5",children:[n.jsx("button",{type:"button",onClick:()=>t(e),disabled:a,className:"focus-visible:ring-ring rounded-md bg-green-600/10 px-2.5 py-1 text-xs font-medium text-green-700 hover:bg-green-600/20 focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50 dark:text-green-400",children:a?"Adding…":o?"Try again":"Add"}),r&&n.jsx("button",{type:"button",onClick:()=>r(e),disabled:a,className:"text-muted-foreground hover:bg-muted focus-visible:ring-ring rounded-md px-2.5 py-1 text-xs font-medium focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50",children:"Skip"}),s&&n.jsx("button",{type:"button",onClick:()=>s(e),disabled:a,className:"focus-visible:ring-ring rounded-md bg-red-600/10 px-2.5 py-1 text-xs font-medium text-red-700 hover:bg-red-600/20 focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50 dark:text-red-400",children:"Deny"})]})]})}function Vv({agent:e}){return n.jsxs("div",{className:"bg-muted/50 flex items-center gap-3 rounded-lg border px-4 py-3",children:[n.jsx(ys,{className:"text-muted-foreground size-4 shrink-0"}),n.jsxs("div",{className:"min-w-0 flex-1",children:[n.jsx("p",{className:"truncate text-sm font-medium",children:Ce(e)}),n.jsx("p",{className:"text-muted-foreground truncate text-xs",children:e.path})]}),n.jsx("span",{className:"text-muted-foreground shrink-0 text-xs",children:"Imported"})]})}const Qv=2;function Xv({agents:e}){const[t,s]=l.useState(e.length<=Qv);return e.length===0?null:n.jsxs("div",{children:[n.jsxs("button",{type:"button",onClick:()=>s(r=>!r),className:"text-muted-foreground hover:text-foreground flex w-full items-center gap-1.5 py-1.5 text-xs transition-colors",children:[n.jsx(Rn,{className:B("size-3 transition-transform",t&&"rotate-90")}),e.length," project",e.length===1?"":"s"," already in DorkOS"]}),t&&n.jsx("div",{className:"mt-2 space-y-2",children:e.map(r=>n.jsx(Vv,{agent:r},r.path))})]})}function xd({count:e,onAddAll:t,disabled:s}){return e===0?null:n.jsxs("div",{className:"flex items-center justify-between py-1",children:[n.jsxs("span",{className:"text-muted-foreground text-sm font-medium",children:[e," new project",e===1?"":"s"]}),n.jsx(_,{variant:"outline",size:"sm",onClick:t,disabled:s,children:"Add all"})]})}function Jv({roots:e,onChange:t}){const[s,r]=l.useState(""),[o,a]=l.useState(!1),i=l.useCallback(u=>{const f=u.trim();f&&!e.includes(f)&&t([...e,f])},[e,t]),c=l.useCallback(u=>{t(e.filter(f=>f!==u))},[e,t]),d=l.useCallback(u=>{(u.key==="Enter"||u.key===",")&&(u.preventDefault(),s.trim()&&(i(s),r(""))),u.key==="Backspace"&&s===""&&e.length>0&&c(e[e.length-1])},[s,e,i,c]),m=l.useCallback(u=>{i(u)},[i]);return n.jsxs(n.Fragment,{children:[n.jsxs("div",{className:"focus-within:ring-ring flex min-h-[40px] flex-wrap items-center gap-1.5 rounded-md border bg-transparent px-3 py-1.5 focus-within:ring-2",children:[e.map(u=>n.jsxs(pn,{variant:"secondary",className:"gap-1 py-0.5 font-mono",children:[u,n.jsx("button",{type:"button",onClick:()=>c(u),className:"hover:bg-muted-foreground/20 ml-0.5 rounded-sm","aria-label":`Remove ${u}`,children:n.jsx(Le,{className:"size-3"})})]},u)),n.jsx("input",{type:"text",value:s,onChange:u=>r(u.target.value),onKeyDown:d,placeholder:e.length===0?"Type a folder, then press Enter":"Add more…",className:"placeholder:text-muted-foreground min-w-[120px] flex-1 bg-transparent text-sm focus-visible:outline-none"}),n.jsx("button",{type:"button",onClick:()=>a(!0),className:"text-muted-foreground hover:bg-accent hover:text-foreground shrink-0 rounded p-1","aria-label":"Browse for a folder",children:n.jsx(Ss,{className:"size-4"})})]}),n.jsx(ac,{open:o,onOpenChange:a,onSelect:m})]})}const Zv=8e3;function ew({phase:e,onConsent:t,onDecline:s,onResults:r,onZero:o,onTimeout:a,onDone:i}){const{startScan:c}=ud(),{candidates:d,isScanning:m,lastScanAt:u,error:f}=ks(),{mutateAsync:p}=ic(),{actedPaths:h,markActed:g}=md(),x=l.useCallback(T=>p({path:T.path,overrides:fd(T)}),[p]),b=l.useCallback(T=>g(T.path),[g]),{failedPaths:y,pendingPaths:S,registerCandidate:j}=hd({register:x,onSuccess:b}),C=l.useRef(!1),v=l.useCallback(()=>{C.current=!1,t(),c()},[t,c]);l.useEffect(()=>{if(e!=="scanning")return;const T=setTimeout(()=>{C.current||(C.current=!0,a())},Zv);return()=>clearTimeout(T)},[e,a]),l.useEffect(()=>{if(!(e!=="scanning"||C.current)){if(f){C.current=!0,a();return}!m&&u!==null&&(C.current=!0,d.length>0?r(d.length):o())}},[e,m,u,f,d.length,r,o,a]);const I=l.useMemo(()=>pd(d),[d]).filter(T=>!h.has(T.path)),D=l.useCallback(()=>{for(const T of I)j(T)},[I,j]);return e==="unasked"?n.jsxs("div",{className:"flex flex-wrap gap-2",children:[n.jsx(_,{size:"sm",onClick:v,children:"Sure, look around"}),n.jsx(_,{size:"sm",variant:"outline",onClick:s,children:"Not now"})]}):e==="scanning"?n.jsxs("div",{className:"text-muted-foreground flex items-center gap-2 text-sm","aria-live":"polite",children:[n.jsx(gn,{className:"size-4"}),"Looking…",n.jsx(El,{})]}):n.jsxs("div",{className:"flex w-full flex-col gap-3",children:[n.jsx("div",{className:"flex flex-col gap-2",children:n.jsx(Ie,{mode:"popLayout",children:I.map(T=>n.jsx(gd,{candidate:T,registrationFailed:y.has(T.path),registrationPending:S.has(T.path),onApprove:A=>void j(A),onSkip:A=>g(A.path)},T.path))})}),I.length>0&&n.jsx(xd,{count:I.length,onAddAll:D,disabled:S.size>0}),n.jsx("div",{className:"flex justify-start",children:n.jsx(_,{size:"sm",onClick:i,children:"Done"})})]})}function qn({children:e}){return n.jsx(wm,{gap:"none",className:"bg-card/50",children:e})}const tw=1500,nw=4e3,It="dorkbot",Wn="DorkBot",Zs="var(--color-muted-foreground)",Pa="";function sw({onComplete:e}){var L,Q;const t=Ne()??!1,s=Te(),{config:r,completeStep:o,skipStep:a,completeOnboarding:i}=Nt(),c=jm(),{defaultAgentDir:d}=rd(),{data:m}=Dn(),u=l.useMemo(()=>((m==null?void 0:m.agents)??[]).map(K=>K.projectPath),[m]),{data:f}=Cs(u),p=l.useMemo(()=>{const K=u.map(ke=>f==null?void 0:f[ke]).find(ke=>(ke==null?void 0:ke.isSystem)===!0);if(!K)return null;const{color:le,emoji:je}=Ns(K);return{id:K.id,color:le,emoji:je}},[u,f]),h=((L=r==null?void 0:r.executionDefaults)==null?void 0:L.runtime)??"claude-code",{data:g}=Zr(),x=l.useMemo(()=>{if(!g)return h;const K=Object.keys(g.runtimes).filter(le=>tc(g,le,!0).state==="ready");return K.length===0||K.includes(h)?h:Eo(K,h)??h},[g,h]),[b,y]=l.useState({...km}),[S,j]=l.useState([]),{saveRoles:C,dismissIdentityPrompt:v}=Tn(),N=Io(),[I,D]=l.useState(""),T=l.useRef(!1),A=(Q=r==null?void 0:r.agents)==null?void 0:Q.defaultDirectory,w=A?`${A}/dorkbot`:null,k=Hv({reducedMotion:t,identityQuestion:N,closeIdentityQuestion:()=>{v().catch(()=>{})},saveTraits:K=>w?c.mutateAsync({path:w,updates:{traits:K}}).then(()=>{}):Promise.reject(new Error("DorkBot’s location is still loading. Try again in a moment.")),saveProfile:K=>C(K),completeStep:o,skipStep:a,completeOnboarding:i,onDissolve:K=>{const le=crypto.randomUUID(),je={kind:"first-message",name:It,displayName:Wn,agentId:(p==null?void 0:p.id)??It,icon:(p==null?void 0:p.emoji)??Pa,color:(p==null?void 0:p.color)??Zs,bornAt:new Date().toISOString(),path:d,runtime:x,kickoffMessage:K};cc.getState().register(le,je),Sm().then(ke=>{setTimeout(ke,nw)}),s(ut({agentId:(p==null?void 0:p.id)??It,draft:"1",session:le,runtime:x})),e()}}),{beginConversation:O}=k;l.useEffect(()=>{const K=setTimeout(O,t?0:tw);return()=>clearTimeout(K)},[O,t]);const R=l.useRef(null);l.useEffect(()=>{var K,le;(le=(K=R.current)==null?void 0:K.scrollIntoView)==null||le.call(K,{behavior:t?"auto":"smooth"})},[k.messages.length,k.isTyping,k.activeWidget,t]);const M=l.useCallback(()=>{const K=I.trim();!K||T.current||(T.current=!0,k.submitFirstMessage(K))},[I,k]),P=U(K=>K.requestTour),F=l.useCallback(()=>{T.current||(T.current=!0,i(),P("general"),e())},[i,P,e]),{fastForward:Y}=k,ee=l.useCallback(K=>{(K.key==="Enter"||K.key===" ")&&(K.preventDefault(),Y())},[Y]),q=k.isRevealing?{role:"button",tabIndex:0,"aria-label":"Reveal the rest of the message",onClick:Y,onKeyDown:ee}:{},te=l.useMemo(()=>p?{id:p.id,displayName:Wn,emoji:p.emoji,color:p.color}:{id:It,displayName:Wn,color:Zs},[p]),ne=l.useMemo(()=>({name:It,displayName:Wn,agentId:(p==null?void 0:p.id)??It,icon:(p==null?void 0:p.emoji)??Pa,color:(p==null?void 0:p.color)??Zs,bornAt:new Date().toISOString(),path:d,runtime:h,kickoffMessage:"",fired:!1}),[p,d,h]);if(k.isFirstLight)return n.jsx("div",{className:"flex h-full w-full items-center justify-center p-4",children:n.jsx(Mx,{record:ne})});const se=k.composerEnabled?oe.composerHandoffPlaceholder:oe.composerSetupPlaceholder;let V="That’s the one";k.saving?V="Saving…":k.saveError&&(V="Try again");let $="That’s us";return k.saving?$="Saving…":k.saveError&&($="Try again"),n.jsxs("div",{className:"mx-auto flex h-full w-full max-w-2xl flex-col",children:[n.jsxs("div",{className:"min-h-0 flex-1 cursor-default overflow-y-auto px-2 py-4",...q,children:[n.jsxs("div",{className:"flex flex-col gap-1","aria-live":"polite","aria-atomic":"false",children:[n.jsx(oy.Root,{surface:"session",capabilities:Av,children:k.messages.map((K,le)=>n.jsx(Mv,{message:K,grouping:k.grouping[le],author:_x(K,{agent:te})},K.id))}),k.isTyping&&n.jsx("div",{className:"px-1 py-2",children:n.jsx(El,{})})]}),k.activeWidget==="identity"&&n.jsx("div",{className:"mt-3 px-1",children:n.jsx(qn,{children:n.jsx(Co,{onSaved:k.confirmIdentity,confirmLabel:"That’s me",onSkip:k.skipIdentity,skipLabel:"Skip this"})})}),k.activeWidget==="personality"&&n.jsx("div",{className:"mt-3 px-1",children:n.jsx(qn,{children:n.jsxs("div",{className:"flex flex-col items-stretch gap-3",children:[n.jsx(iy,{traits:b,onTraitsChange:y,layout:"stacked",sampleLabel:"How DorkBot talks"}),k.saveError&&n.jsx("p",{className:"text-destructive text-sm",role:"alert","data-testid":"personality-save-error",children:oe.saveError}),n.jsxs("div",{className:"flex flex-wrap justify-center gap-2",children:[n.jsx(_,{size:"sm",onClick:()=>k.confirmPersonality(b),disabled:k.saving,"data-testid":"confirm-personality",children:V}),n.jsx(_,{size:"sm",variant:"outline",onClick:k.skipPersonality,disabled:k.saving,"data-testid":"skip-personality",children:"Skip this step"})]})]})})}),k.activeWidget==="profile"&&n.jsx("div",{className:"mt-3 px-1",children:n.jsx(qn,{children:n.jsx(no,{selected:S,onChange:j,onConfirm:()=>k.confirmProfile(S),confirmLabel:$,onSkip:k.skipProfile,skipLabel:"Skip this",busy:k.saving,error:k.saveError?oe.saveError:null})})}),k.activeWidget==="discovery"&&n.jsx("div",{className:"mt-3 px-1",children:n.jsx(qn,{children:n.jsx(ew,{phase:k.discoveryPhase,onConsent:k.consentDiscovery,onDecline:k.declineDiscovery,onResults:k.reportDiscoveryResults,onZero:k.reportDiscoveryZero,onTimeout:k.reportDiscoveryTimeout,onDone:k.finishDiscovery})})}),n.jsx("div",{ref:R})]}),n.jsx("div",{className:"shrink-0 px-2 pb-3",children:k.composerEnabled?n.jsxs(n.Fragment,{children:[n.jsxs("div",{className:"mb-2 flex flex-wrap gap-1.5",children:[n.jsx(_,{size:"xs",variant:"outline",onClick:F,children:"Show me around"}),["Help me set up a project","Just exploring for now"].map(K=>n.jsx(_,{size:"xs",variant:"outline",onClick:()=>D(K),children:K},K))]}),n.jsx(ay.Input,{value:I,onChange:D,onSubmit:M,isStreaming:!1,placeholder:se})]}):n.jsx("div",{className:"border-input bg-muted/40 text-muted-foreground flex items-center rounded-md border px-3 py-2.5 text-sm","aria-disabled":"true",children:se})})]})}function rw({onComplete:e,renderRuntimeConnect:t}){const{stage:s,goToStage:r,goBack:o}=Kb(),{dismiss:a,startOnboarding:i}=Nt(),{open:c}=qe(),d=l.useRef(!1);l.useEffect(()=>{d.current||(d.current=!0,i())},[i]);const m=l.useCallback(async()=>{await a(),ae("Setup skipped",{description:"Replay it anytime in Settings → Preferences.",action:{label:"Replay setup",onClick:()=>c("preferences")}}),e()},[a,e,c]),u=l.useCallback(()=>r("requirements"),[r]),f=l.useCallback(()=>r("power"),[r]),p=l.useCallback(()=>r("conversation"),[r]),h=l.useCallback(()=>o("welcome"),[o]),g=l.useCallback(()=>o("requirements"),[o]),x=l.useCallback(()=>o("power"),[o]);return s==="welcome"?n.jsx("div",{className:"bg-background h-full w-full overflow-y-auto",children:n.jsx("div",{className:"flex min-h-full w-full items-center justify-center p-4",children:n.jsx(pv,{onGetStarted:u,onSkipAll:m})})}):s==="requirements"?n.jsxs("div",{className:"bg-background flex h-full w-full flex-col",children:[n.jsx(Qs,{onBack:h,onSkipAll:m}),n.jsx("div",{className:"min-h-0 flex-1 overflow-y-auto",children:n.jsx("div",{className:"flex min-h-full w-full items-center justify-center p-4 pb-10",children:n.jsx(Jb,{onContinue:f,renderConnect:t})})})]}):s==="power"?n.jsxs("div",{className:"bg-background flex h-full w-full flex-col",children:[n.jsx(Qs,{onBack:g,onSkipAll:m}),n.jsx("div",{className:"min-h-0 flex-1 overflow-y-auto",children:n.jsx("div",{className:"flex min-h-full w-full items-center justify-center p-4 pb-10",children:n.jsx(hv,{onAdvance:p})})})]}):n.jsxs("div",{className:"bg-background flex h-full w-full flex-col",children:[n.jsx(Qs,{onBack:x,onSkipAll:m}),n.jsx("div",{className:"min-h-0 flex-1",children:n.jsx(sw,{onComplete:e})})]})}const ow=4e3,er="Tell DorkBot your name",La="Tell DorkBot about your work";function aw({onDismiss:e}){const t=Ne(),s=Te(),{open:r}=qe(),o=As(),a=U(D=>D.requestTour),{startSession:i}=rd(),{roles:c,rolePromptDismissedAt:d,isLoading:m,saveRoles:u,dismissIdentityPrompt:f}=Tn(),p=Io(),[h,g]=l.useState("closed"),[x,b]=l.useState("closed"),[y,S]=l.useState([]),j=!m&&c.length===0&&d===null;l.useEffect(()=>{if(h!=="saved")return;const D=setTimeout(()=>g("closed"),ow);return()=>clearTimeout(D)},[h]);const C=()=>{g("saved"),f().catch(()=>{})},v=()=>{b("saving"),u(y).then(()=>b("closed")).catch(()=>b("error"))};let N="Save";x==="saving"?N="Saving…":x==="error"&&(N="Try again");const I=[{icon:Kt,label:"Talk to DorkBot",onClick:i},...p==="ask"||h==="saved"?[{icon:Rl,label:er,onClick:()=>g(D=>D==="saved"?D:D==="closed"?"open":"closed"),expanded:h!=="closed"}]:[],...j?[{icon:so,label:La,onClick:()=>b(D=>D==="closed"?"open":"closed"),expanded:x!=="closed"}]:[],{icon:Zy,label:"Show me around",onClick:()=>a("general")},{icon:Ht,label:"Create an agent",onClick:()=>Es.getState().open("new")},{icon:lc,label:"Schedule a task",onClick:()=>s({...pe.tasks()})},{icon:dc,label:"Connect more runtimes",onClick:()=>r("runtimes")},{icon:ob,label:"Connect a service",onClick:()=>o()}];return n.jsxs(W.div,{initial:t?!1:{opacity:0,y:8},animate:{opacity:1,y:0},transition:{duration:.3},className:"border-border bg-card relative rounded-lg border p-3",children:[n.jsx("button",{onClick:e,className:"text-muted-foreground/50 hover:text-muted-foreground absolute top-1.5 right-1.5 rounded-md p-0.5 transition-colors duration-150","aria-label":"Dismiss getting started",children:n.jsx(Le,{className:"size-3.5"})}),n.jsx("h3",{className:"mb-2 text-xs font-medium",children:"Getting started"}),n.jsx("ul",{className:"space-y-0.5",children:I.map(({icon:D,label:T,onClick:A,expanded:w})=>n.jsxs("li",{children:[n.jsxs("button",{onClick:A,className:"hover:bg-accent group flex w-full items-center gap-2 rounded-md px-1.5 py-1 text-left transition-colors duration-150","aria-expanded":w,children:[n.jsx(D,{className:"text-muted-foreground size-3.5 shrink-0"}),n.jsx("span",{className:"text-foreground flex-1 text-xs",children:T}),n.jsx(Rn,{className:"text-muted-foreground/40 group-hover:text-muted-foreground size-3.5 shrink-0 transition-colors"})]}),T===er&&h==="open"&&n.jsx("div",{className:"px-1.5 py-2","data-testid":"progress-card-identity-form",children:n.jsx(Co,{onSaved:C})}),T===er&&h==="saved"&&n.jsx("p",{role:"status",className:"text-muted-foreground px-1.5 py-2 text-xs",children:oe.identityCardSaved}),T===La&&x!=="closed"&&n.jsx("div",{className:"px-1.5 py-2","data-testid":"progress-card-profile-picker",children:n.jsx(no,{selected:y,onChange:S,onConfirm:v,confirmLabel:N,busy:x==="saving",error:x==="error"?oe.saveError:null})})]},T))})]})}const iw="pl-12";function cw({prompt:e}){const t=Ne(),{open:s}=qe(),{phase:r,selected:o,setSelected:a,confirmLabel:i,errorMessage:c}=e;return n.jsxs(W.div,{initial:t?!1:{opacity:0,y:8},animate:{opacity:1,y:0},transition:{duration:.2},role:"group","aria-label":"DorkBot suggestion","data-testid":"profile-prompt-card",className:"bg-secondary/60 flex flex-col gap-2 rounded-lg border p-3",children:[n.jsxs("div",{className:"flex items-start gap-2",children:[n.jsxs("span",{className:"mt-0.5 shrink-0",children:[n.jsx(Ve,{size:40,className:"dark:hidden"}),n.jsx(Ve,{variant:"white",size:40,className:"hidden dark:block"})]}),n.jsxs("div",{className:"flex flex-col gap-0.5",children:[n.jsx("p",{className:"text-sm leading-relaxed",children:r==="saved"?oe.profileSaved:oe.profileCardPrompt[0]}),n.jsxs("p",{className:"text-muted-foreground text-xs leading-relaxed",children:[oe.profileCardPrompt[1]," ",n.jsx("button",{type:"button",onClick:()=>s("profile"),className:"focus-visible:ring-ring hover:text-foreground rounded-sm underline underline-offset-2 focus-visible:ring-2 focus-visible:outline-none",children:"Change it in Settings"}),"."]})]})]}),r!=="saved"&&n.jsx("div",{className:iw,children:n.jsx(no,{selected:o,onChange:a,onConfirm:e.save,confirmLabel:i,onSkip:e.skip,skipLabel:"Don’t ask again",busy:r==="saving",error:c})})]})}const lw=4e3;function dw(){const{state:e,isLoading:t,shouldShowGettingStarted:s}=Nt(),{roles:r,rolePromptDismissedAt:o,isLoading:a,saveRoles:i,dismissRolePrompt:c}=Tn(),[d,m]=l.useState([]),[u,f]=l.useState("ask");l.useEffect(()=>{if(u!=="saved")return;const b=setTimeout(()=>f("done"),lw);return()=>clearTimeout(b)},[u]);const p=e.completedAt!==null||e.dismissedAt!==null,h=!e.completedSteps.includes("profile")&&!e.skippedSteps.includes("profile"),g=!t&&!a&&p&&r.length===0&&h&&o===null&&!s;let x="Save";return u==="saving"?x="Saving…":u==="error"&&(x="Try again"),{visible:u!=="done"&&(g||u==="saved"),phase:u,selected:d,setSelected:m,confirmLabel:x,errorMessage:u==="error"?oe.saveError:null,save:()=>{f("saving"),i(d).then(()=>f("saved")).catch(()=>f("error"))},skip:()=>{f("done"),c().catch(()=>{})}}}function uw({prompt:e}){const t=Ne(),s=e.phase==="saved";return n.jsxs(W.div,{initial:t?!1:{opacity:0,y:8},animate:{opacity:1,y:0},transition:{duration:.2},role:"group","aria-label":"DorkBot suggestion","data-testid":"identity-prompt-card",className:"bg-secondary/60 flex flex-col gap-3 rounded-lg border p-3",children:[n.jsxs("div",{className:"flex items-start gap-2",children:[n.jsxs("span",{className:"mt-0.5 shrink-0",children:[n.jsx(Ve,{size:40,className:"dark:hidden"}),n.jsx(Ve,{variant:"white",size:40,className:"hidden dark:block"})]}),n.jsxs("div",{className:"flex flex-col gap-0.5",children:[n.jsx("p",{className:"text-sm leading-relaxed",role:s?"status":void 0,children:s?oe.identityCardSaved:oe.identityCardPrompt[0]}),!s&&n.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed",children:oe.identityCardPrompt[1]})]})]}),!s&&n.jsx(Co,{onSaved:e.markSaved,onSkip:e.skip,skipLabel:"Don’t ask again"})]})}function mw(e,t){let s;for(const r of t){const o=r.endsWith("/")?r.slice(0,-1):r;(e===o||e.startsWith(o+"/"))&&(!s||o.length>s.length)&&(s=o)}return s}function hw(){return n.jsxs("svg",{viewBox:"0 0 240 120",className:"mx-auto h-24 w-48","aria-hidden":"true",children:[n.jsx("path",{d:"M15 25 L33 25 L37 33 L60 33 L60 77 L15 77 Z",className:"fill-none stroke-current",strokeWidth:"1.5"}),n.jsx("rect",{x:"23",y:"44",width:"16",height:"2",rx:"1",className:"fill-current opacity-40"}),n.jsx("rect",{x:"23",y:"50",width:"26",height:"2",rx:"1",className:"fill-current opacity-20"}),n.jsx("rect",{x:"23",y:"56",width:"20",height:"2",rx:"1",className:"fill-current opacity-20"}),n.jsx("path",{d:"M180 25 L198 25 L202 33 L225 33 L225 77 L180 77 Z",className:"fill-none stroke-current",strokeWidth:"1.5"}),n.jsx("rect",{x:"188",y:"44",width:"20",height:"2",rx:"1",className:"fill-current opacity-40"}),n.jsx("rect",{x:"188",y:"50",width:"14",height:"2",rx:"1",className:"fill-current opacity-20"}),n.jsx("rect",{x:"188",y:"56",width:"24",height:"2",rx:"1",className:"fill-current opacity-20"}),n.jsx("circle",{cx:"120",cy:"48",r:"18",className:"fill-none stroke-current",strokeWidth:"2"}),n.jsx("line",{x1:"133",y1:"61",x2:"148",y2:"76",className:"stroke-current",strokeWidth:"3",strokeLinecap:"round"}),n.jsx("path",{d:"M110 38 Q114 33 120 32",className:"fill-none stroke-current opacity-30",strokeWidth:"1.5",strokeLinecap:"round"}),n.jsx("line",{x1:"63",y1:"55",x2:"102",y2:"50",className:"stroke-current opacity-40",strokeWidth:"1.5",strokeDasharray:"4 3"}),n.jsx("line",{x1:"138",y1:"50",x2:"177",y2:"55",className:"stroke-current opacity-40",strokeWidth:"1.5",strokeDasharray:"4 3"})]})}const fw=[{name:"claude-code",signal:"AGENTS.md",label:"Claude Code project"},{name:"cursor",signal:".cursor/",label:"Cursor project"},{name:"codex",signal:".codex/",label:"Codex project"},{name:"dork",signal:".dork/agent.json",label:"DorkOS agent (auto-imported)"}];function pw({fullBleed:e=!1,onRegistered:t}){var $;const{roots:s,setScanRoots:r}=ov(),[o,a]=l.useState(null),[i,c]=l.useState(!1),[d,m]=l.useState(3),{startScan:u}=ud(),{candidates:f,existingAgents:p,isScanning:h,progress:g,error:x,lastScanAt:b}=ks(),{mutateAsync:y}=ic(),{mutate:S}=Cm(),{data:j}=Nm(),{actedPaths:C,markActed:v,resetActed:N}=md(),I=o??s,D=l.useCallback(L=>y({path:L.path,overrides:fd(L),scanRoot:mw(L.path,I)}),[I,y]),T=l.useCallback(L=>{v(L.path),t==null||t()},[v,t]),{failedPaths:A,pendingPaths:w,registerCandidate:E,resetFailures:k}=hd({register:D,onSuccess:T});function O(L){a(L),r(L)}function R(){I.length>0&&(N(),k(),u({roots:I,maxDepth:d}))}const P=l.useMemo(()=>h?f:pd(f),[f,h]).filter(L=>!C.has(L.path)),F=((($=j==null?void 0:j.agents)==null?void 0:$.length)??0)>0,Y=p.length>0,ee=f.length>0,q=Y||ee,te=!h&&b!==null,ne=!h&&b===null;function se(){for(const L of P)E(L)}const V=n.jsxs("div",{children:[n.jsxs("button",{type:"button",onClick:()=>c(!i),className:"text-muted-foreground hover:text-foreground flex items-center gap-1 text-xs",children:[n.jsx(mt,{className:`size-3 transition-transform ${i?"":"-rotate-90"}`}),"Advanced"]}),i&&n.jsxs("div",{className:"bg-muted/30 mt-2 space-y-3 rounded-lg border p-3",children:[n.jsx(Jv,{roots:I,onChange:O}),n.jsxs("div",{className:"flex items-center gap-3",children:[n.jsx("label",{htmlFor:"scan-depth",className:"text-muted-foreground text-xs",children:"Scan depth"}),n.jsx("input",{id:"scan-depth",type:"range",min:1,max:5,value:d,onChange:L=>m(Number(L.target.value)),className:"flex-1"}),n.jsx("span",{className:"min-w-[1.5rem] text-center text-xs font-medium",children:d})]}),n.jsxs("div",{className:"space-y-1.5",children:[n.jsxs("p",{className:"text-muted-foreground flex items-center gap-1 text-xs",children:[n.jsx(tb,{className:"size-3"}),"What it looks for"]}),n.jsx("ul",{className:"space-y-1 pl-4",children:fw.map(L=>n.jsxs("li",{className:"flex items-baseline gap-1.5",children:[n.jsx("code",{className:"text-foreground/70 text-3xs",children:L.signal}),n.jsxs("span",{className:"text-muted-foreground text-3xs",children:["→ ",L.label]})]},L.name))})]})]})]});return n.jsx("div",{className:e?"flex h-full flex-col p-6":"space-y-4 p-4",children:ne?n.jsx("div",{className:e?"flex flex-1 items-center justify-center":"",children:n.jsxs("div",{className:e?"w-full max-w-sm space-y-5":"space-y-5",children:[n.jsx(hw,{}),n.jsxs("div",{className:"text-center",children:[n.jsx("p",{className:"text-foreground text-sm font-medium",children:"Find your existing projects"}),n.jsx("p",{className:"text-muted-foreground mx-auto mt-1 max-w-[300px] text-xs leading-relaxed",children:"Find Claude Code, Cursor, Codex and other AI projects on this computer."})]}),x&&n.jsx("div",{className:"border-destructive/30 bg-destructive/5 text-destructive rounded-lg border px-4 py-3 text-sm",children:x}),n.jsxs(_,{onClick:R,disabled:I.length===0,className:"w-full",children:[n.jsx(gn,{className:"size-4"}),"Search for projects"]}),n.jsx("p",{className:"text-muted-foreground/60 text-center text-xs",children:"Read-only scan. Nothing changes until you approve"}),V]})}):n.jsxs(n.Fragment,{children:[e&&n.jsxs("div",{className:"mb-4 space-y-1",children:[n.jsx("h2",{className:"text-lg font-semibold",children:"Bring in existing projects"}),n.jsx("p",{className:"text-muted-foreground text-sm",children:"Search for existing projects to bring into DorkOS."})]}),n.jsxs("div",{className:"space-y-3",children:[V,n.jsxs(_,{onClick:R,disabled:h||I.length===0,children:[h?n.jsx(wt,{}):n.jsx(gn,{className:"size-4"}),"Search for projects"]})]}),n.jsxs("div",{className:e?"mt-4 flex-1 overflow-y-auto":"",children:[h&&n.jsxs("div",{className:"flex flex-col items-center justify-center gap-2 p-8",children:[n.jsx(wt,{size:"md",className:"text-muted-foreground",label:"Searching for projects"}),g&&n.jsxs("div",{className:"text-muted-foreground space-y-0.5 text-center text-xs",children:[n.jsxs("p",{children:["Scanned ",g.scannedDirs," directories"]}),n.jsxs("p",{children:["Found ",g.foundAgents," project",g.foundAgents===1?"":"s"]})]})]}),x&&n.jsx("div",{className:"border-destructive/30 bg-destructive/5 text-destructive mb-3 rounded-lg border px-4 py-3 text-sm",children:x}),te&&!ee&&Y&&n.jsxs("div",{className:"rounded-xl border border-dashed p-8 text-center",children:[n.jsx("p",{className:"text-sm font-medium",children:"All projects already added"}),n.jsx("p",{className:"text-muted-foreground mt-1 text-xs",children:"See them on the Agents tab."})]}),te&&!q&&n.jsxs("div",{className:"rounded-xl border border-dashed p-8 text-center",children:[n.jsx("p",{className:"text-sm font-medium",children:F?"No new projects found":"No projects found"}),n.jsx("p",{className:"text-muted-foreground mt-1 text-xs",children:F?"They’re already added. See the Agents tab.":"Try a deeper scan or other folders."})]}),te&&P.length>0&&n.jsxs(n.Fragment,{children:[n.jsx(xd,{count:P.length,onAddAll:se,disabled:w.size>0}),n.jsx(Ie,{mode:"popLayout",children:P.map(L=>n.jsx(gd,{candidate:L,className:"mb-2",registrationFailed:A.has(L.path),registrationPending:w.has(L.path),onApprove:Q=>void E(Q),onSkip:Q=>v(Q.path),onDeny:Q=>S({path:Q.path},{onSuccess:()=>v(Q.path)})},L.path))})]}),te&&Y&&n.jsx("div",{className:"mt-3",children:n.jsx(Xv,{agents:p})})]})]})})}function gw(){const e=xn(p=>p.isOpen),t=xn(p=>p.close),s=Te(),[r,o]=l.useState(0),[a,i]=l.useState(!1),[c,d]=l.useState(!1);e!==c&&(d(e),e&&(o(0),i(!1)));function m(p){p||t()}function u(){if(r>0&&!a){i(!0);return}t(),r>0&&s({...pe.team()})}const f=`${r} project${r===1?"":"s"} joined`;return n.jsx(et,{open:e,onOpenChange:m,children:n.jsxs(tt,{className:"max-h-[85vh] !min-h-0 sm:max-w-2xl",children:[n.jsxs(Xe,{className:"shrink-0",children:[n.jsx(Ue,{children:"Bring in existing projects"}),n.jsx(Je,{children:a?"Your projects are ready in DorkOS.":"Find projects on this computer to add."})]}),a?n.jsx(lt,{className:"mt-2",children:n.jsxs("div",{className:"flex flex-col items-center justify-center gap-3 py-10 text-center","data-testid":"import-complete",children:[n.jsx(ys,{className:"text-primary size-12","aria-hidden":!0}),n.jsx("p",{className:"text-lg font-semibold","data-testid":"import-joined-summary",children:f}),n.jsx("p",{className:"text-muted-foreground text-sm",children:"Manage agents, tasks and chat apps from the Team page."})]})}):n.jsx(lt,{className:"mt-2 overflow-y-auto",children:n.jsx(pw,{onRegistered:()=>o(p=>p+1)})}),n.jsxs(Rt,{className:"shrink-0 sm:justify-between",children:[!a&&r>0?n.jsx("span",{className:"text-muted-foreground text-sm","data-testid":"import-joined-count",children:f}):n.jsx("span",{}),n.jsx(_,{onClick:u,"data-testid":"import-done",children:"Done"})]})]})})}function xw(e){if(typeof e!="object"||e===null)return!1;const t=e;return typeof t.name=="string"&&(t.scope==="global"||t.scope==="project")&&typeof t.at=="string"&&Array.isArray(t.actions)&&(t.errors===void 0||Array.isArray(t.errors)&&t.errors.every(s=>typeof s=="string"))}function yw(){const e=Am(s=>s.record),t=yx();ue("marketplace_dev_link_reloaded",s=>{xw(s)&&(e(s),t())})}class bw extends l.Component{constructor(){super(...arguments);Jt(this,"state",{hasError:!1})}static getDerivedStateFromError(){return{hasError:!0}}componentDidCatch(s,r){console.error("[RightPanel] Tab component error:",s,r)}componentDidUpdate(s){s.tabId!==this.props.tabId&&this.state.hasError&&this.setState({hasError:!1})}render(){return this.state.hasError?n.jsx("div",{className:"flex h-full items-center justify-center p-4",children:n.jsx("p",{className:"text-muted-foreground text-sm",children:"This panel stopped working. Switch tabs to try again."})}):this.props.children}}const vw={canvas:"canvas",browser:"browser"};function ww(e,t){return t==="attention"?`${e}, something needs you`:e}function jw({contributionId:e}){const t=vw[e],s=U(o=>{var i;const a=o.roomCanvasLiveRoomId;return a===null||t===void 0?!1:(((i=o.roomCanvasUnread[a])==null?void 0:i[t].length)??0)>0});return Em(e)==="attention"?n.jsx("span",{"data-slot":"right-panel-tab-marker","aria-hidden":!0,className:"bg-status-warning-dot size-1.5 shrink-0 rounded-full"}):s?n.jsx("span",{"data-slot":"right-panel-tab-unread","aria-hidden":!0,className:"bg-primary size-1.5 shrink-0 rounded-full"}):null}const yd="right-panel-content";function Or(e){return`right-panel-tab-${e}`}function kw({contributions:e,actions:t}){const s=U(a=>a.setRightPanelOpen),r=U(a=>a.activeRightPanelTab),o=U(a=>a.setActiveRightPanelTab);return n.jsxs("div",{className:"flex w-full items-center justify-between border-b px-3 py-2","data-slot":"right-panel-header",children:[e.length>1?n.jsx(Sw,{contributions:e,activeTab:r,onActivate:o}):e.length===1?n.jsxs("div",{className:"text-foreground flex items-center gap-1.5 px-1 text-xs font-medium",children:[n.jsx(On,{icon:e[0].icon,className:"text-muted-foreground size-3.5"}),n.jsx("span",{children:e[0].title})]}):n.jsx("div",{}),n.jsxs("div",{className:"flex shrink-0 items-center gap-1 pl-1",children:[t,n.jsx(_,{variant:"ghost",size:"icon-md","aria-label":"Close panel",className:"size-7 shrink-0",onClick:()=>s(!1),children:n.jsx(Le,{className:"size-3.5"})})]})]})}function Sw({contributions:e,activeTab:t,onActivate:s}){const r=l.useRef(null),o=l.useRef(null),a=Im(u=>u.tabMarkers),i=Tm(r,"horizontal"),c=l.useCallback(()=>{const u=r.current;return!u||!t?null:u.querySelector(`#${CSS.escape(Or(t))}`)},[t]),d=l.useCallback(()=>{const u=r.current,f=c();!u||!f||Rm(u,f)},[c]),m=e.map(u=>u.id).join(",");return l.useEffect(()=>{if(d(),typeof ResizeObserver>"u")return;const u=new ResizeObserver(d);for(const f of[r.current,o.current,c()])f&&u.observe(f);return()=>u.disconnect()},[d,c,m]),n.jsx(Cl,{asChild:!0,value:t??"",onValueChange:s,children:n.jsxs("div",{className:"relative min-w-0 flex-1",children:[n.jsx("div",{ref:r,onScroll:i.onScroll,className:"-my-1 overflow-x-auto overflow-y-hidden py-1",children:n.jsx(Nl,{ref:o,responsive:!1,"aria-label":"Right panel tabs",className:"bg-accent/60 h-auto justify-start gap-0.5 rounded-lg p-0.5",children:e.map(u=>{const f=u.id===t;return n.jsxs(Bt,{children:[n.jsx(zt,{asChild:!0,children:n.jsxs(es,{value:u.id,"aria-label":ww(u.title,a[u.id]??null),id:Or(u.id),"aria-controls":f?yd:void 0,className:B("text-muted-foreground hover:text-foreground text-3xs shrink-0 gap-1.5 rounded-md px-2.5 py-1",f&&"bg-background text-foreground shadow-sm"),children:[n.jsx(On,{icon:u.icon,className:"size-3.5"}),n.jsx("span",{children:u.title}),n.jsx(jw,{contributionId:u.id})]})}),n.jsx(Ut,{side:"bottom",children:u.title})]},u.id)})})}),i.start&&n.jsx("div",{"aria-hidden":!0,"data-testid":"right-panel-tabs-fade-start",className:"from-sidebar via-sidebar/70 pointer-events-none absolute inset-y-0 left-0 w-6 bg-gradient-to-r to-transparent"}),i.end&&n.jsx("div",{"aria-hidden":!0,"data-testid":"right-panel-tabs-fade-end",className:"from-sidebar via-sidebar/70 pointer-events-none absolute inset-y-0 right-0 w-6 bg-gradient-to-l to-transparent"})]})})}const Mr="app-shell-right-panel",Cw=40,Nw=320,bd=20,Aw=50;function Ew(e){if(e<=0)return bd;const t=Nw/e*100;return Math.min(Math.round(t*10)/10,Aw)}function Iw(){const[e,t]=l.useState(bd);return l.useLayoutEffect(()=>{const s=document.querySelector(`[data-panel-group-id="${Mr}"]`);if(!(s instanceof HTMLElement))return;const r=()=>t(Ew(s.offsetWidth));r();const o=new ResizeObserver(r);return o.observe(s),()=>o.disconnect()},[]),{minPct:e,defaultPct:Math.max(Cw,e)}}const Tw="cubic-bezier(0, 0, 0.2, 1)",Rw="cubic-bezier(0.4, 0, 1, 1)";function Fa(e,t){return`${e} 300ms ${t?Tw:Rw}`}const Dw=new Set(["pulse","files"]);function Ow({pathname:e,isRemoteCommunityRoom:t=!1}){const s=U(w=>w.rightPanelOpen),r=U(w=>w.setRightPanelOpen),o=U(w=>w.activeRightPanelTab),a=U(w=>w.setActiveRightPanelTabView),i=py(),c=Ae(),d=l.useRef(null),[m,u]=l.useState(!1),[f,p]=l.useState(!1);l.useEffect(()=>{const w=requestAnimationFrame(()=>p(!0));return()=>cancelAnimationFrame(w)},[]);const h=ie(),g=U(w=>w.currentAgentId),x=U(w=>w.selectedCwd),b=U(w=>w.explicitAgentPath),y=Is("right-panel"),S=l.useMemo(()=>y.filter(w=>!w.visibleWhen||w.visibleWhen({pathname:e,transport:h,agentId:g,cwd:x,explicitAgentPath:b,isRemoteCommunityRoom:t})),[y,e,h,g,x,b,t]);l.useEffect(()=>{if(S.length>0&&!S.some(E=>E.id===o)){const E=S.find(k=>!k.isGlobal);a((E??S[0]).id)}},[S,o,a]);const j=s,{minPct:C,defaultPct:v}=Iw();l.useEffect(()=>{const w=d.current;w&&(j&&w.isCollapsed()?w.expand(v):!j&&w.isExpanded()&&w.collapse())},[j,v]);const N=S.find(w=>w.id===o),I=N==null?void 0:N.component,D=N==null?void 0:N.headerActions,T=n.jsxs(n.Fragment,{children:[n.jsx(kw,{contributions:S,actions:D?n.jsx(l.Suspense,{fallback:null,children:n.jsx(D,{})}):void 0}),n.jsx("div",{className:"min-h-0 flex-1 overflow-hidden",...S.length>1&&o&&S.some(w=>w.id===o)?{id:yd,role:"tabpanel","aria-labelledby":Or(o)}:{},children:n.jsx(bw,{tabId:o,children:n.jsx(l.Suspense,{fallback:null,children:I?n.jsx(I,{}):null})})})]});if(i)return j?n.jsx(Dm,{open:!0,onOpenChange:w=>!w&&r(!1),children:n.jsxs(Om,{showCloseButton:!1,className:B("bg-sidebar text-sidebar-foreground flex w-full flex-col gap-0 p-0",c&&"sm:max-w-full",c&&o&&Dw.has(o)&&"!bottom-auto !h-auto max-h-dvh overflow-y-auto"),children:[n.jsxs(Mm,{className:"sr-only",children:[n.jsx(_m,{children:"Panel"}),n.jsx(Pm,{children:"Right panel content."})]}),T]})}):null;const A=f&&!m;return n.jsxs(n.Fragment,{children:[n.jsx(Vx,{"aria-label":"Resize right panel",disabled:!j,onDragging:u,gripStyle:{opacity:j?1:0,pointerEvents:j?"auto":"none",...A&&{transition:Fa("opacity",j)}}}),n.jsx(uc,{ref:d,id:"right-panel",order:2,defaultSize:j?v:0,minSize:C,collapsible:!0,collapsedSize:0,onCollapse:()=>{f&&r(!1)},onExpand:()=>{s||r(!0)},style:A?{transition:Fa("flex-grow",j)}:void 0,children:n.jsx("div",{className:"bg-sidebar text-sidebar-foreground flex h-full flex-col overflow-hidden border-l",children:T})})]})}function Mw(){const e=U(t=>t.toggleRightPanel);l.useEffect(()=>{const t=s=>{(s.metaKey||s.ctrlKey)&&s.key==="."&&(s.preventDefault(),e())};return document.addEventListener("keydown",t),()=>document.removeEventListener("keydown",t)},[e])}const $a=new WeakMap;let _w=0;function Pw(e){const t=$a.get(e);if(t!==void 0)return t;const s=`bar-${_w++}`;return $a.set(e,s),s}function Lw(e){var t;for(let s=e.length-1;s>=0;s--){const r=(t=e[s].staticData)==null?void 0:t.header;if(r)return{key:Pw(r),Header:r}}return null}function Fw(e){const t=e.startsWith("/")?e:`/${e}`;if(Me()){const s=t.slice(1);if(s.length>0&&!s.startsWith("?")&&!s.startsWith("#"))return`dorkos://${s}`}return`${window.location.origin}${t}`}const $w="/";function Ro(){const e=Lt();return l.useMemo(()=>{const t=()=>mc(e),s=o=>{xe.getState().selectTab(o),t()},r=o=>{const{tabs:a}=xe.getState(),i=a[o];i&&s(i.id)};return{activate:s,activateIndex:r,activateLast:()=>r(xe.getState().tabs.length-1),activateRelative:o=>{const{tabs:a,activeTabId:i}=xe.getState();if(a.length<2)return;const c=a.findIndex(u=>u.id===i),m=(((c===-1?0:c)+o)%a.length+a.length)%a.length;s(a[m].id)},close:o=>{xe.getState().closeTab(o),t()},closeActive:()=>{const{tabs:o,activeTabId:a}=xe.getState();if(!a)return!1;const i=o.length;xe.getState().closeTab(a);const c=xe.getState().tabs.length<i;if(c)try{t()}catch(d){console.error("[dorkos:tabs] could not follow a closed tab",d)}return c},create:()=>Lm(e,$w),togglePin:o=>{const a=xe.getState().tabs.find(i=>i.id===o);a&&xe.getState().setTabPinned(o,!a.pinned)},duplicate:o=>{xe.getState().duplicateTab(o),t()},closeOthers:o=>{xe.getState().closeOtherTabs(o),t()},reorder:(o,a)=>xe.getState().moveTab(o,a)}},[e])}const Bw={start:["Space"],cancel:["Escape"],end:["Space","Enter","Tab"]},zw=4,Uw={draggable:"Press Space to move this tab. Arrows move it, Space drops it, Escape cancels."};function Kw(e){return t=>{const s=e(String(t.active.id));return hc({...t,droppableContainers:t.droppableContainers.filter(r=>e(String(r.id))===s)})}}class Hw extends Map{getEnabled(){return[...this.values()].filter(t=>!t.disabled)}toArray(){return[...this.values()]}}function qw(e){return(t,s)=>{const{context:r}=s;if(!r.active)return Nr(t,s);const o=e(String(r.active.id)),a=new Hw;for(const i of r.droppableContainers.toArray())e(String(i.id))===o&&a.set(i.id,i);return Nr(t,{...s,context:{...r,droppableContainers:a}})}}function Ww(e){return e.length===0?null:{left:Math.min(...e.map(t=>t.left)),right:Math.max(...e.map(t=>t.right))}}function Gw(e){return({transform:t,activeNodeRect:s})=>{const r=e();if(!r||!s)return t;const o=r.left-s.left,a=r.right-s.right;return{...t,x:Math.min(Math.max(t.x,o),a)}}}function Yw(e,t,s){if(s==null)return null;const r=e.indexOf(String(t)),o=e.indexOf(String(s));return r===-1||o===-1||r===o?null:[r,o]}function Vw(e){const{nameOf:t,indexOf:s,count:r}=e,o=a=>`position ${s(a)+1} of ${r()}`;return{onDragStart:({active:a})=>`Picked up ${t(String(a.id))}.`,onDragOver:({active:a,over:i})=>i?`${t(String(a.id))} is over ${o(String(i.id))}.`:void 0,onDragEnd:({active:a,over:i})=>i?`${t(String(a.id))} dropped at ${o(String(i.id))}.`:`${t(String(a.id))} put back.`,onDragCancel:({active:a})=>`Move cancelled. ${t(String(a.id))} put back.`}}const Qw={"/":"Home","/activity":"Activity","/team":"Team","/agents":"Team","/channels":"Channels","/connections":"Connections","/feedback-requests":"Your reports","/marketplace":"Marketplace","/marketplace/sources":"Marketplace sources","/tasks":"Schedules","/workspaces":"Workspaces"},Xw={"/":gc,"/activity":$m,"/team":rt,"/agents":rt,"/channels":pc,"/connections":eo,"/feedback-requests":fc,"/marketplace":Zo,"/marketplace/sources":Zo,"/session":Kt,"/tasks":nb,"/workspaces":Fm},vd="Add-on",Jw="Chat",Zw="DorkOS",ej="http://tab.local";function tj(e){let t;try{t=new URL(e,ej)}catch{return{pathname:"/",sessionId:null,dir:null,draft:!1,roomId:null,community:null}}const s=t.pathname.length>1&&t.pathname.replace(/\/+$/,"")||"/";return s==="/session"?{pathname:s,sessionId:t.searchParams.get("session")||null,dir:t.searchParams.get("dir")||null,draft:t.searchParams.get("draft")==="1",roomId:null,community:null}:s==="/channels"?{pathname:s,sessionId:null,dir:null,draft:!1,roomId:t.searchParams.get("id")||null,community:t.searchParams.get("community")||null}:{pathname:s,sessionId:null,dir:null,draft:!1,roomId:null,community:null}}function nj(e){if(!e)return;const t=e.split("/").filter(Boolean);return t[t.length-1]}function sj(e){return e.pathname==="/session"?nj(e.dir)??Jw:Bm(e.pathname)!==null?vd:Qw[e.pathname]??Zw}function rj(e){var s;if(e===null)return null;const t=(s=e.match)==null?void 0:s.page;return{label:(t==null?void 0:t.title)??vd,icon:(t==null?void 0:t.icon)??xc}}function wd(e){var y,S;const t=l.useMemo(()=>tj(e),[e]),s=t.pathname==="/session",r=t.pathname==="/channels",o=zm(s?t.sessionId:null),{data:a}=Um(s?t.sessionId:null,{enabled:!((o==null?void 0:o.draft)??t.draft),nameOnly:!0,select:j=>({cwd:j.cwd??null,title:j.title})}),i=s?(o==null?void 0:o.cwd)??t.dir??(a==null?void 0:a.cwd)??null:null,{data:c}=yc(i),d=ro(c??null,i??""),m=r?t.community:null,{data:u}=bc(r&&!m?t.roomId:null),f=qt(m!==null),p=oo((S=(y=f.data)==null?void 0:y.find(j=>j.ref===m))==null?void 0:S.access),{data:h}=vc(m??"",t.roomId??"",m!==null&&t.roomId!==null&&p.capabilities.read,p.fingerprint),g=m?h:u,x=rj(Km(t.pathname)),b=c?Ce(c):g?ao(g):(x==null?void 0:x.label)??sj({...t,dir:i});return{target:t,label:b,chatTitle:a?io(a.title):null,emoji:c?d.emoji:null,extensionIcon:c?null:(x==null?void 0:x.icon)??null,Icon:Xw[t.pathname]??Kt}}function jd({view:e}){if(e.emoji!==null)return n.jsx("span",{"aria-hidden":"true",className:"shrink-0 text-sm leading-none",children:e.emoji});if(e.extensionIcon!==null)return n.jsx(On,{icon:e.extensionIcon,className:"size-3.5 shrink-0"});const{Icon:t}=e;return n.jsx(t,{className:"size-3.5 shrink-0"})}const kd="app-tab-panel",oj={streaming:"working",pendingApproval:"needs-you",error:"error",unseen:"unseen"};function aj({tab:e,isActive:t,canClose:s,tabProps:r,onClose:o,pinned:a=e.pinned??!1}){const i=wd(e.href),{target:c,label:d}=i,m=c.pathname==="/session",u=Hm(c.sessionId??""),f=m?oj[u.kind]:void 0,p=s&&!a,h=l.useRef(null);return l.useEffect(()=>{var g,x;t&&((x=(g=h.current)==null?void 0:g.scrollIntoView)==null||x.call(g,{block:"nearest",inline:"nearest"}))},[t]),n.jsxs("div",{ref:h,role:"presentation",className:"group relative flex shrink-0",children:[n.jsxs("button",{type:"button",role:"tab","aria-selected":t,"aria-controls":t?kd:void 0,...r,title:a?i.chatTitle?`${d} · ${i.chatTitle}`:d:void 0,className:B("focus-ring flex max-w-48 min-w-0 items-center gap-1.5 rounded-md py-1 pl-2 text-xs transition-colors",p?"pr-7":"pr-2",t?"bg-background text-foreground shadow-soft":"text-muted-foreground hover:bg-background/60 hover:text-foreground"),children:[n.jsx(jd,{view:i}),n.jsxs("span",{className:a?"sr-only":"truncate",children:[n.jsx("span",{className:"font-medium",children:d}),i.chatTitle&&n.jsxs("span",{className:"opacity-70",children:[" · ",i.chatTitle]})]}),f&&n.jsxs(n.Fragment,{children:[n.jsx("span",{"aria-hidden":"true",className:B("size-1.5 shrink-0 rounded-full",wc(f))}),n.jsxs("span",{className:"sr-only",children:[", ",u.label]})]})]}),p&&n.jsx("button",{type:"button",tabIndex:-1,onClick:()=>o(e.id,"pointer"),"aria-label":`Close ${d}`,className:B("focus-ring hover:bg-muted absolute top-1/2 right-1 -translate-y-1/2 rounded-sm p-0.5","opacity-0 transition-opacity group-hover:opacity-70 hover:opacity-100",t&&"opacity-70"),children:n.jsx(Le,{className:"size-3"})})]})}function ij({tabId:e,pinned:t,hasOthersToClose:s,canClose:r,actions:o,onClosed:a,children:i}){return n.jsxs(qm,{children:[n.jsx(Wm,{asChild:!0,children:i}),n.jsxs(Gm,{className:"w-44",onCloseAutoFocus:a?c=>{c.preventDefault(),a()}:void 0,children:[n.jsxs(Zt,{onSelect:()=>o.togglePin(e),children:[t?n.jsx(Ym,{className:"mr-2 size-4"}):n.jsx(Vm,{className:"mr-2 size-4"}),t?"Unpin":"Pin"]}),n.jsxs(Zt,{onSelect:()=>o.duplicate(e),children:[n.jsx(eb,{className:"mr-2 size-4"}),"Duplicate"]}),n.jsxs(Zt,{onSelect:()=>o.copyLink(e),children:[n.jsx(Qm,{className:"mr-2 size-4"}),"Copy link"]}),n.jsx(Xm,{}),n.jsxs(Zt,{disabled:!s,onSelect:()=>o.closeOthers(e),children:[n.jsx(Jm,{className:"mr-2 size-4"}),"Close others"]}),n.jsxs(Zt,{disabled:!r,onSelect:()=>o.close(e),children:[n.jsx(Le,{className:"mr-2 size-4"}),"Close"]})]})]})}const ln="data-app-tab-id";function cj({tab:e,isActive:t,canClose:s,tabProps:r,onClose:o,sortable:a,dragActive:i,menu:c,hasOthersToClose:d,onMenuClosed:m}){const u=e.pinned??!1,{setNodeRef:f,setActivatorNodeRef:p,attributes:h,listeners:g,transform:x,transition:b,isDragging:y}=Zm({id:e.id,disabled:!a}),S=g==null?void 0:g.onPointerDown,j=g==null?void 0:g.onKeyDown,C={transform:x?`translate3d(${Math.round(x.x)}px, 0, 0)`:void 0,transition:b??void 0},{ref:v,onKeyDown:N}=r,I=l.useCallback(w=>{v(w),p(w)},[v,p]),D=l.useCallback(w=>{if(c&&(w.key==="ContextMenu"||w.shiftKey&&w.key==="F10")){w.preventDefault();const E=w.currentTarget,k=E.getBoundingClientRect();E.dispatchEvent(new MouseEvent("contextmenu",{bubbles:!0,cancelable:!0,clientX:k.left,clientY:k.bottom}));return}j==null||j(w),!(w.defaultPrevented||i)&&N(w)},[c,j,i,N]),T=l.useMemo(()=>({...r,ref:I,onKeyDown:D,...a?{"aria-describedby":h["aria-describedby"]}:{}}),[r,I,D,a,h]),A=n.jsx("div",{ref:f,role:"presentation",[ln]:e.id,style:C,onPointerDown:S,className:B("flex shrink-0",y&&"bg-background shadow-soft relative z-10 rounded-md"),children:n.jsx(aj,{tab:e,isActive:t,canClose:s,tabProps:T,onClose:o,pinned:u})});return c?n.jsx(ij,{tabId:e.id,pinned:u,hasOthersToClose:d,canClose:s,actions:c,onClosed:m,children:A}):A}function lj({tabs:e,activeId:t,onActivate:s,onClose:r,onCreate:o,menu:a,onReorder:i,className:c}){const d=l.useRef(null),m=l.useRef(null),u=jc(null),f=e.length>1,[p,h]=l.useState(!1),g=l.useMemo(()=>e.map(A=>A.id),[e]),x=Dt(e),{collisionDetection:b,coordinateGetter:y,modifiers:S,announcements:j}=l.useMemo(()=>{const A=E=>x.read().findIndex(k=>k.id===E),w=E=>{var k;return((k=x.read().find(O=>O.id===E))==null?void 0:k.pinned)??!1};return{collisionDetection:Kw(w),coordinateGetter:qw(w),modifiers:[Gw(u.read)],announcements:Vw({nameOf:E=>{var k,O,R;return((R=(O=(k=Array.from(document.querySelectorAll(`[${ln}]`)).find(M=>M.getAttribute(ln)===E))==null?void 0:k.querySelector('[role="tab"]'))==null?void 0:O.textContent)==null?void 0:R.trim())||"Tab"},indexOf:A,count:()=>x.read().length})}},[x,u]),C=kc(is(Nc,{activationConstraint:{distance:zw}}),is(Cc,{coordinateGetter:y,keyboardCodes:Bw})),v=({active:A})=>{var k,O;h(!0);const w=((k=e.find(R=>R.id===A.id))==null?void 0:k.pinned)??!1,E=Array.from(((O=m.current)==null?void 0:O.querySelectorAll(`[${ln}]`))??[]).filter(R=>{var P;const M=R.getAttribute(ln);return(((P=e.find(F=>F.id===M))==null?void 0:P.pinned)??!1)===w}).map(R=>R.getBoundingClientRect());u.write(Ww(E))},N=()=>{h(!1),u.write(null)},I=({active:A,over:w})=>{N();const E=Yw(g,A.id,w==null?void 0:w.id);E&&i&&i(...E)},D=()=>{setTimeout(()=>{var A,w;(w=(A=m.current)==null?void 0:A.querySelector('[role="tab"][aria-selected="true"]'))==null||w.focus()},0)},{getTabProps:T}=my({orderedIds:e.map(A=>A.id),activeId:t,onActivate:s,onClose:f?r:void 0,getFallbackFocus:()=>d.current});return n.jsxs("div",{className:B("bg-muted/40 flex shrink-0 items-stretch border-b px-2 py-1",c),children:[n.jsx("div",{className:"flex min-w-0 flex-1 items-stretch overflow-x-auto",children:n.jsx(Sc,{sensors:C,collisionDetection:b,modifiers:S,accessibility:{announcements:j,screenReaderInstructions:Uw},onDragStart:v,onDragEnd:I,onDragCancel:N,children:n.jsx(eh,{items:g,strategy:th,children:n.jsx("div",{ref:m,role:"tablist","aria-label":"Open tabs",className:"flex items-stretch gap-1",children:e.map(A=>n.jsx(cj,{tab:A,isActive:A.id===t,canClose:f,tabProps:T(A.id),onClose:r,sortable:i!==void 0,dragActive:p,menu:a,onMenuClosed:D,hasOthersToClose:e.some(w=>w.id!==A.id&&!w.pinned)},A.id))})})})}),n.jsx("button",{ref:d,type:"button",onClick:o,"aria-label":"New tab",title:`New tab (${Mt(yn.NEW_TAB)})`,className:"focus-ring text-muted-foreground hover:bg-background/60 hover:text-foreground ml-1 flex shrink-0 items-center rounded-md px-1.5 transition-colors",children:n.jsx(Ht,{className:"size-3.5"})})]})}function dj({className:e}){const t=nh(),s=xe(p=>p.activeTabId),{activate:r,close:o,create:a,togglePin:i,duplicate:c,closeOthers:d,reorder:m}=Ro(),{copy:u}=Ts({toastOnSettle:!0}),f=l.useMemo(()=>({togglePin:i,duplicate:c,closeOthers:d,close:o,copyLink:p=>{const h=xe.getState().tabs.find(g=>g.id===p);h&&u(Fw(h.href))}}),[i,c,d,o,u]);return n.jsx(lj,{tabs:t,activeId:s,onActivate:r,onClose:o,onCreate:a,menu:f,onReorder:m,className:e})}function ms(){var s;const{tabs:e,activeTabId:t}=xe.getState();return((s=e.find(r=>r.id===t))==null?void 0:s.cursor)??null}function Do(e,t){const s=ms();s!==null&&(xe.getState().goToHistoryIndex(t),ms()!==s&&mc(e))}function Sd(e){const t=ms();t!==null&&Do(e,t-1)}function Cd(e){const t=ms();t!==null&&Do(e,t+1)}function uj(e,t){Do(e,t)}function Ba(e,t){const s=Mt(e);return jt?s:`${s} or ${Mt(`alt+${t}`)}`}const tr="size-7";function mj({href:e,isCurrent:t,onSelect:s}){const r=wd(e);return n.jsxs(rh,{disabled:t,"aria-current":t?"page":void 0,onSelect:s,className:"data-[disabled]:opacity-100",children:[n.jsx(jd,{view:r}),n.jsxs("span",{className:"min-w-0 flex-1 truncate",children:[r.label,r.chatTitle&&n.jsxs("span",{className:"text-muted-foreground",children:[" · ",r.chatTitle]})]}),n.jsx(Ft,{className:B("size-3.5 shrink-0",!t&&"invisible")})]})}function nr({label:e,keys:t,children:s}){return n.jsxs(Bt,{children:[n.jsx(zt,{asChild:!0,children:s}),n.jsx(Ut,{side:"bottom",className:"text-xs",children:t?`${e} (${t})`:e})]})}function hj(){const e=Lt(),{entries:t,cursor:s,canGoBack:r,canGoForward:o}=sh();if(!Me())return null;const a=t.map((i,c)=>({href:i,index:c})).reverse();return n.jsxs("div",{className:"flex items-center",children:[n.jsx(nr,{label:"Back",keys:Ba(yn.HISTORY_BACK.key,"←"),children:n.jsx(_,{variant:"ghost",size:"icon-md",className:tr,"aria-label":"Back",disabled:!r,onClick:()=>Sd(e),children:n.jsx(Ac,{})})}),n.jsx(nr,{label:"Forward",keys:Ba(yn.HISTORY_FORWARD.key,"→"),children:n.jsx(_,{variant:"ghost",size:"icon-md",className:tr,"aria-label":"Forward",disabled:!o,onClick:()=>Cd(e),children:n.jsx(Ec,{})})}),n.jsxs(Ic,{children:[n.jsx(nr,{label:"History",children:n.jsx(Tc,{asChild:!0,children:n.jsx(_,{variant:"ghost",size:"icon-md",className:tr,"aria-label":"History",children:n.jsx(hy,{})})})}),n.jsx(Rc,{align:"start",className:"max-w-72 min-w-48",children:a.map(({href:i,index:c})=>n.jsx(mj,{href:i,isCurrent:c===s,onSelect:()=>uj(e,c)},c))})]})]})}function fj(){const e=Lt(),t=Ee({select:o=>o.location.href}),s=l.useRef(!1),r=l.useRef(!0);l.useEffect(()=>{if(Me())return e.history.subscribe(({action:o})=>{s.current=o.type!=="PUSH"&&o.type!=="REPLACE",r.current=o.type==="REPLACE"})},[e]),l.useEffect(()=>{if(!Me())return;const o=s.current,a=r.current;s.current=!1,r.current=!1,xe.getState().syncLocation(t,{traversal:o,replace:a})},[t])}const za=9;function pj(){const e=Ro();l.useEffect(()=>{if(!Me())return;const t=s=>{if(!(s.metaKey||s.ctrlKey)||s.altKey)return;if(s.shiftKey){s.code==="BracketLeft"?(s.preventDefault(),e.activateRelative(-1)):s.code==="BracketRight"&&(s.preventDefault(),e.activateRelative(1));return}if(s.key==="t"||s.key==="T"){s.preventDefault(),e.create();return}if(!s.code.startsWith("Digit"))return;const r=Number(s.code.slice(5));!Number.isInteger(r)||r<1||r>za||(s.preventDefault(),r===za?e.activateLast():e.activateIndex(r-1))};return document.addEventListener("keydown",t),()=>document.removeEventListener("keydown",t)},[e])}const Ua=3,gj=4;function xj(e){return e instanceof Element?e.closest("input, textarea, select")?!0:e.closest('[contenteditable]:not([contenteditable="false"])')!==null:!1}function Ka(e){return e instanceof Element&&e.closest('[role="dialog"], [role="alertdialog"], [role="menu"]')!==null}function yj(e){if(e.shiftKey)return null;if((jt?e.metaKey&&!e.ctrlKey:e.ctrlKey&&!e.metaKey)&&!e.altKey)return e.code==="BracketLeft"?"back":e.code==="BracketRight"?"forward":null;if(!jt&&e.altKey&&!e.ctrlKey&&!e.metaKey){if(xj(e.target))return null;if(e.key==="ArrowLeft")return"back";if(e.key==="ArrowRight")return"forward"}return null}function bj(){const e=Lt();l.useEffect(()=>{if(!Me())return;const t=i=>i==="back"?Sd(e):Cd(e),s=i=>{if(i.defaultPrevented||i.isComposing||Ka(i.target))return;const c=yj(i);c&&(i.preventDefault(),t(c))},r=i=>i.button===Ua||i.button===gj,o=i=>{r(i)&&i.preventDefault()},a=i=>{r(i)&&(i.preventDefault(),!Ka(i.target)&&t(i.button===Ua?"back":"forward"))};return document.addEventListener("keydown",s),document.addEventListener("mousedown",o),document.addEventListener("mouseup",a),()=>{document.removeEventListener("keydown",s),document.removeEventListener("mousedown",o),document.removeEventListener("mouseup",a)}},[e])}function bt(e){return"problem"in e?{problem:e.problem}:{message:e.message}}const vt={message:"Couldn’t reach your DorkOS account. Try again."},vj={message:"Finish signing in in your browser, then try again."},wj={message:"Your browser blocked the window. Allow pop-ups, then try again."},sr={message:"Couldn’t connect this DorkOS to the space. Try again."},jj={message:"The approval ran out. Connect again."};function Oo(e,t,s){var T,A;const r=ie(),o=ce(),a=kn(e!==null),{signsInWithAccount:i,linkFor:c}=Dc(e!==null),[d,m]=l.useState({opened:!1,busy:!1,notice:null}),[u,f]=l.useState(null),p=l.useRef(null),h=ve({queryKey:Ge.list(),queryFn:()=>r.listHostedCommunities(),enabled:e!==null&&u===null,refetchInterval:w=>{const E=w.state.data,k=(E==null?void 0:E.available)===!0?E.communities.find(O=>O.communityId===(e==null?void 0:e.communityId)):void 0;return(k==null?void 0:k.state)==="provisioning"?2e3:!1}}),g=((T=h.data)==null?void 0:T.available)===!0?h.data.communities.find(w=>w.communityId===(e==null?void 0:e.communityId)):void 0,x=(g==null?void 0:g.state)==="provisioning",b=l.useCallback(()=>{if(!e||d.busy)return;const w=oh();if(w===null){m(E=>({...E,notice:wj}));return}m(E=>({...E,busy:!0,notice:null})),r.getHostedCommunityClaimLink(e.communityId).then(E=>{if(!E.ok){w.close(),m(O=>({...O,busy:!1,notice:bt(E)}));return}const k=w.go(c(E.claimUrl));m(O=>({opened:O.opened||k,busy:!1,notice:null}))}).catch(()=>{w.close(),m(E=>({...E,busy:!1,notice:vt}))})},[e,d.busy,r,c]),y=l.useCallback(async()=>{if(e){if(!a||!pt(a)){f({ref:null,approvalUrl:null,busy:!1,notice:sr});return}f({ref:null,approvalUrl:null,busy:!0,notice:null});try{const w=await r.startCommunityConnection({url:e.communityUrl,installName:t});f({ref:w.connection.ref,approvalUrl:w.approvalUrl,busy:!1,notice:null}),await o.invalidateQueries({queryKey:it.connections(a)})}catch{f({ref:null,approvalUrl:null,busy:!1,notice:sr})}}},[e,a,r,t,o]),S=l.useCallback(()=>{!e||d.busy||(m(w=>({...w,busy:!0,notice:null})),r.listHostedCommunities().then(w=>{o.setQueryData(Ge.list(),w);const E=w.available===!0?w.communities.find(k=>k.communityId===e.communityId):void 0;if(!E||E.state==="pending_owner"||E.state==="provisioning"){m(k=>({...k,busy:!1,notice:vj}));return}m(k=>({...k,busy:!1})),y()}).catch(()=>m(w=>({...w,busy:!1,notice:vt}))))},[e,d.busy,r,o,y]),j=(u==null?void 0:u.ref)??null,C=ve({queryKey:a&&j?it.approval(a,j):["cloud","no-approval"],queryFn:()=>Xi(a,()=>r.pollCommunityConnection(j)),enabled:a!==null&&j!==null,retry:!1,refetchInterval:w=>!w.state.error&&(!w.state.data||w.state.data.status==="pending")?2e3:!1}),v=j!==null?((A=C.data)==null?void 0:A.status)??"pending":"pending",N=v==="connected"?j:null;l.useEffect(()=>{N===null||p.current===N||(p.current=N,a&&o.invalidateQueries({queryKey:it.connections(a)}),o.invalidateQueries({queryKey:Ge.all}),s(N))},[N,a,o,s]);const I=v==="expired"||v==="cancelled";return{state:N!==null?{kind:"done",ref:N}:u!==null?{kind:"connecting",approvalUrl:u.approvalUrl,busy:u.busy,notice:u.notice??(I?jj:C.error?sr:null)}:x?{kind:"preparing"}:{kind:"claim",...d,withAccount:e!==null&&i(e.communityUrl)},openClaim:b,confirmClaimed:S,openApproval:()=>{u!=null&&u.approvalUrl&&dt(c(u.approvalUrl))},retryConnect:()=>void y()}}const ot=ah({offset:!0}).describe("An ISO-8601 instant with an explicit UTC offset."),He=he().min(1).describe("An opaque server-issued identifier. Clients never parse or enumerate it.");he().regex(/^-?(0|[1-9][0-9]*)$/,"must be a base-10 integer count of micro-units carried as a string").describe("An exact integer count of micro-units, carried as a string so no value goes through a JavaScript number. A micro-unit is a millionth of the major unit of the currency the response names.");const kj=he().regex(/^[1-9][0-9]*$/,"must be a positive base-10 integer count of micro-units carried as a string").describe("A strictly positive exact integer count of micro-units, carried as a string so no amount goes through a JavaScript number."),Mo="amountKind";Gt(["money","credit"]).describe("What an amount counts: money paid, refunded, offered or capped, or credits held, spent or priced.");const Nd=/^-?(0|[1-9][0-9]*)$/,Sj=/^[1-9][0-9]*$/;he().regex(Nd,"must be a base-10 integer count of micro-units carried as a string").describe("An exact integer count of micro-units of the response's currency: money paid, refunded, offered or capped.").meta({[Mo]:"money"});he().regex(Sj,"must be a positive base-10 integer count of micro-units carried as a string").describe("A strictly positive exact integer count of micro-units of money to be paid, in the currency the service names.").meta({[Mo]:"money"});he().regex(Nd,"must be a base-10 integer count of micro-units carried as a string").describe("An exact integer count of micro-units of the response's currency, counted as credits: divide by the response's denomination.microPerCredit to get credits.").meta({[Mo]:"credit"});re({currency:he().regex(/^[A-Z]{3}$/,"must be an ISO 4217 currency code").describe("An ISO 4217 code. Rendered, never enumerated."),microPerCredit:kj.describe("How many micro-units of currency one credit is. Served by the service; a client never hard-codes it.")}).describe("The unit these amounts are in: the currency their micro-units are millionths of, and how many micro-units one credit is.");const Cj=he().min(1).describe("A credential returned exactly once. Store it as a credential reference; never log it or persist it as configuration."),Ad=he().min(1).describe("An opaque pagination cursor, passed back verbatim from a previous page.");re({cursor:Ad.optional(),limit:me().int().min(1).max(200).optional().describe("Maximum items in the page. The server may return fewer, and clamps anything larger.")}).describe("Cursor pagination parameters, shared by every collection in this contract.");function Ed(e,t){return re({items:Wt(e),nextCursor:Ad.nullable().describe("The cursor for the next page, or null when this is the last page.")}).describe(t)}const Nj=Oc({protocol:/^https$/}).regex(/^https:\/\//,"must be an https: link").describe("An absolute https: link. Any other scheme is refused."),Pn=Oc({protocol:/^https?$/}).regex(/^(https:\/\/|http:\/\/(localhost|127\.0\.0\.1|\[::1\])(:[0-9]+)?([/?#]|$))/,"must be an https: link, or http: to a loopback address").describe("An absolute https: link, or an http: link to a loopback address only."),Id="x-dorkos-one-time-credential",Aj="unrecognised";function hs(e){return ih([e,he().transform(()=>Aj).describe("A value this release does not know. It reads as unrecognised.")])}const Qt=he().regex(/^[a-z](?:[a-z0-9]|-(?=[a-z0-9])){2,31}$/,"must be lower-case letters, digits and single hyphens, start with a letter, and not end with a hyphen").describe("A community short name: lower case, 3 to 32 characters, letters, digits and single hyphens, starting with a letter and not ending with a hyphen."),Td=he().trim().min(1).max(80).describe("The community`s display name. Trimmed, 1 to 80 characters."),Rd=he().min(1).max(200).describe("A key the caller chooses, scoped to the caller. Sending it again returns the same community or move instead of making a second one.");function Ej(e){return Pn.meta({description:e,[Id]:!0})}const Ij=Gt(["provisioning","pending_owner","active","archived","held","suspended","deletion_pending"]).describe("Where a hosted community is in its lifecycle. The Community server`s own lifecycle names, plus provisioning while the server confirms a start."),Tj=Gt(["over_limit","inactive","host"]).describe("Why a hosted community is on hold: the account holds more than its allowance covers, nobody has posted in a long time, or the host placed the hold itself."),Rj=re({title:he().min(1).max(120).describe("A short summary, safe to show a person."),detail:he().max(2e3).describe("The explanation, safe to show a person."),actionUrl:Nj.optional().catch(void 0).describe("A page where the owner can act on the notice. Open it as given. A malformed value is dropped."),actionLabel:he().min(1).max(60).optional().catch(void 0).describe("The text for a button that opens `actionUrl`. A malformed value is dropped.")}).describe("What the service wants the owner to read about this community, in its own words."),Dj=re({allowed:xt().describe("The owner may choose this community as one to keep open."),wouldHold:Wt(He).describe("The caller`s other communities that keeping this one would put on hold.")}).describe("Whether the owner may keep this community open, and which others it would hold."),_o=re({communityId:He.describe("The community`s permanent identifier on its Community server. Never changes, even across a rename."),orgId:He.describe("The organization whose account this community belongs to."),name:he().min(1).max(80).describe("The community`s display name."),shortName:Qt.nullable().describe("The community`s current short name, or null when it has none."),communityUrl:Pn.describe("The community`s canonical link on its Community server, built on its permanent identifier. A runtime value; pair a DorkOS installation with this."),state:hs(Ij).describe("Where the community is in its lifecycle. A state this release does not know reads as unrecognised."),hold:re({reason:hs(Tj).describe("Why the community is on hold. A reason this release does not know reads as unrecognised."),since:ot,deletionNoticeAt:ot.nullable().describe("When the host may delete the community if the hold is not lifted, or null when no deletion is planned. The owner can export until then.")}).nullable().describe("Why and since when the community is on hold. Always set when the state is held."),deletionAt:ot.nullable().describe("When the Community server will delete the community for good. Always set when the state is deletion_pending."),notice:Rj.nullable().describe("What the service wants the owner to read about this community, or null when there is nothing."),kept:xt().describe("True when the owner chose this community to stay open while the account holds more communities than its allowance covers."),moveId:He.nullable().describe("The move filling this community from an owner export, while that move is unfinished. Null otherwise. Lets the app pick up a move after a restart."),limits:re({maxActiveMembers:me().int().positive().nullable().describe("The most people who may be active members at once. Null means no limit."),maxStorageBytes:me().int().nonnegative().nullable().describe("The most bytes of files the community may store. Null means no per-community limit.")}).describe("The limits the host enforces on this community. Agents and history never count."),usage:re({activeMembers:me().int().nonnegative(),storageBytes:me().int().nonnegative().describe("The bytes that count against the storage limit. Owner exports never count."),measuredAt:ot}).nullable().describe("The community`s last measured usage, or null before the first measurement."),actions:re({claimLink:xt().describe("The service will issue a fresh owner-claim link for this community."),keep:Dj,restore:xt().describe("The owner may ask for this held community to reopen.")}).describe("What the caller may do next. Render an action only when it is allowed; the service applies the rule, the app never re-derives it."),createdAt:ot}).superRefine((e,t)=>{e.state==="held"&&e.hold===null&&t.addIssue({code:"custom",path:["hold"],message:"a held community says why"}),e.state==="deletion_pending"&&e.deletionAt===null&&t.addIssue({code:"custom",path:["deletionAt"],message:"a community pending deletion says when"})}).describe("One community the caller has hosted, with its state, limits and usage. Numbers only.");Ed(_o,"A page of the communities the caller has hosted.");re({name:Qt}).describe("The short name to check.");const Oj=Gt(["taken","reserved"]).describe("Why a short name cannot be used: another community has it, or the host reserves it.");re({name:Qt,available:xt(),reason:Oj.nullable().describe("Why the name cannot be used. Null exactly when it is available.")}).superRefine((e,t)=>{e.available!==(e.reason===null)&&t.addIssue({code:"custom",path:["reason"],message:"reason is null exactly when the name is available"})}).describe("Whether a short name is free right now. Advisory; starting a community checks again.");re({idempotencyKey:Rd,name:Td,shortName:Qt.optional().describe("The short name to give the community. Omitted means none."),orgId:He.optional().describe("The organization whose account the community belongs to. Omitted means the caller`s personal one.")}).describe("Start a hosted community. Idempotent on the caller`s key.");const Mj=re({communityId:He,claimUrl:Ej("The owner-claim link. A single-use credential: open it in the person`s own browser and never log it."),expiresAt:ot.describe("When the link stops working.")}).describe("A one-time link that makes a person the owner of a new community. Returned once.");re({community:_o,claim:Mj.nullable().describe("The owner-claim link, or null when this answer repeats an earlier request or the community is still provisioning."),replayed:xt().describe("True when this answer repeats an earlier request with the same key.")}).superRefine((e,t)=>{e.claim!==null&&(e.replayed||e.community.state!=="pending_owner")&&t.addIssue({code:"custom",path:["claim"],message:"a claim link comes only on the first answer, for a pending_owner community"})}).describe("The started community and, the first time only, its owner-claim link.");re({expectedHeldCommunityIds:Wt(He).describe("The communities the owner was told this choice would hold, in any order.")}).describe("Keep this community open, confirming which others the owner agreed to hold.");re({community:_o,heldCommunityIds:Wt(He).describe("Other communities of the caller`s that this choice put on hold. Often empty.")}).describe("The kept community, and every other community the choice put on hold.");const _j=Gt(["awaiting_upload","importing","ready","failed","cancelled","claimed"]).describe("Where a move is: waiting for the export, importing it, ready to claim, or finished."),Pj=Gt(["not_owner_export","archive_invalid","checksum_mismatch","version_unsupported","too_large","storage_limit_reached","upload_expired","storage_unavailable"]).describe("Why a move failed, in terms a person can act on."),Lj=re({channels:me().int().nonnegative(),entries:me().int().nonnegative().describe("Messages and replies."),attachments:me().int().nonnegative(),historicalMembers:me().int().nonnegative().describe("People whose messages move. They join again by invitation."),historicalAgents:me().int().nonnegative().describe("Agents whose messages move. Their owners pair them again."),attachmentBytes:me().int().nonnegative(),countedBytes:me().int().nonnegative().describe("The bytes that will count against the community`s storage limit.")}).describe("What an owner export holds, in counts and sizes only."),Dd=re({moveId:He,communityId:He.describe("The new community the export fills. It no longer exists once a move has failed or been cancelled."),communityUrl:Pn.describe("The new community`s canonical link. A runtime value."),name:he().min(1).max(80).describe("The name the new community was given."),state:hs(_j).describe("Where the move is. A state this release does not know reads as unrecognised."),failureCode:hs(Pj).nullable().describe("Why the move failed. Always set when the state is failed. A code this release does not know reads as unrecognised."),report:Lj.nullable().describe("What the export holds, once it has been read. Null before then."),pollAfterMs:me().int().nonnegative().nullable().describe("How long to wait before reading the move again. Null once it has finished."),updatedAt:ot}).superRefine((e,t)=>{e.state==="failed"&&e.failureCode===null&&t.addIssue({code:"custom",path:["failureCode"],message:"a failed move says why"})}).describe("One move of a community into hosting, from an owner export.");Ed(Dd,"A page of the caller`s moves: every unfinished one, and those that finished within the last 7 days, newest first.");re({idempotencyKey:Rd,name:Td,shortName:Qt.optional().describe("The short name to give the new community. Omitted means none."),orgId:He.optional().describe("The organization whose account the community belongs to. Omitted means the caller`s personal one."),archiveBytes:me().int().positive().describe("The size of the export file, in bytes."),archiveSha256:he().regex(/^[a-f0-9]{64}$/,"must be a lower-case hex SHA-256 digest").describe("The SHA-256 of the export file, as lower-case hex.")}).describe("Start moving a community in from an owner export. Idempotent on the caller`s key.");const Fj=re({url:Pn.describe("Where to send the export. A runtime value."),token:Cj.meta({description:"The upload bearer credential. Returned once; never log it.",[Id]:!0}),expiresAt:ot.describe("When the upload window closes."),maxBytes:me().int().positive().describe("The largest file the upload accepts."),parts:re({partBytes:me().int().positive().describe("The largest part the upload accepts."),maxBytes:me().int().positive().describe("The largest file a parted upload accepts.")}).optional().describe("Present when the Community server accepts the file in parts.")}).describe("Where and how to send the export file. The token is returned once."),Od=he().regex(/^[a-f0-9]{64}$/,"must be a lower-case hex SHA-256 digest"),Po=1e4,$j=re({partNumber:me().int().positive().max(Po).describe("The number of the part, counting up from one."),byteSize:me().int().positive().describe("The size of the part, in bytes."),sha256:Od.describe("The SHA-256 of the part, as lower-case hex.")}).describe("One part the Community server has received.");re({parts:Wt($j).max(Po).describe("The parts received, in part order."),maxPartBytes:me().int().positive().describe("The largest part the upload accepts."),maxArchiveBytes:me().int().positive().describe("The largest file a parted upload accepts.")}).describe("The parts of a parted upload received so far.");re({parts:me().int().positive().max(Po).describe("How many parts make up the file."),archiveBytes:me().int().positive().describe("The size of the whole file, in bytes."),archiveSha256:Od.describe("The SHA-256 of the whole file, as lower-case hex.")}).describe("Put the uploaded parts together into the declared file.");re({move:Dd,upload:Fj.nullable().describe("Where to send the export, or null when this answer repeats an earlier request."),replayed:xt().describe("True when this answer repeats an earlier request with the same key.")}).superRefine((e,t)=>{e.replayed!==(e.upload===null)&&t.addIssue({code:"custom",path:["upload"],message:"upload is null exactly when the answer is replayed"})}).describe("The started move and, the first time only, where to send the export.");const Bj=Pn.regex(/^https?:\/\/[^/?#]+$/,"must be an origin: no path, query or fragment").refine(e=>new URL(e).origin===e,{message:"must be written as the URL standard writes an origin"}).describe("A Community server`s origin: scheme, host and port, written as the URL standard writes it. A runtime value."),zj=re({origin:Bj}).describe("A Community server whose single sign-on is this account.");re({servers:Wt(zj).max(100).describe("Every Community server whose single sign-on is this account. Often one.")}).describe("The Community servers where this account signs a person in.");function Md(e){switch(e){case"not_owner_export":return{title:"This is a personal export, not an owner export.",next:"Sign in to the old space as its owner, export it from Settings, then try again."};case"archive_invalid":return{title:"This file is damaged, or it isn’t a space export.",next:"Export the old space again, then try again."};case"checksum_mismatch":return{title:"Part of this export is damaged.",next:"Export the old space again, then try again."};case"version_unsupported":return{title:"This export comes from a version DorkOS can’t read yet.",next:"Update the old space, export it again, then try again."};case"too_large":return{title:"This export is too large to move.",next:"Delete some large files in the old space, export it again, then try again."};case"storage_limit_reached":return{title:"The files don’t fit in the new space’s storage.",next:"Delete some files in the old space, export it again, then try again."};case"upload_expired":return{title:"The file didn’t arrive in time.",next:"Start the move again."};case"storage_unavailable":return{title:"DorkOS couldn’t store the files just now.",next:"Wait a little while, then start the move again."};default:return{title:"The move stopped for an unknown reason.",next:"Update DorkOS to see more, or start the move again."}}}function Uj(e){switch(e){case"provisioning":return"Being set up";case"pending_owner":return"Waiting for its owner";case"active":return"Open";case"archived":return"Archived";case"held":return"On hold";case"suspended":return"Suspended";case"deletion_pending":return"Being deleted";default:return"Unknown state"}}function Kj(e){switch(e){case"over_limit":return"Your account has more spaces than it allows. Choose which ones stay open.";case"inactive":return"Nobody has posted here in a long time. You can reopen it.";case"host":return"DorkOS put this space on hold. People can still read it.";default:return"This space is on hold. Update DorkOS to see why."}}function rr(e){const t=new Date(e);return Number.isNaN(t.getTime())?e:t.toLocaleDateString(void 0,{year:"numeric",month:"long",day:"numeric",timeZone:"UTC"})}function wn(e){const t=["bytes","KB","MB","GB","TB"];let s=e,r=0;for(;s>=1e3&&r<t.length-1;)s/=1e3,r++;return`${r===0||s>=10?Math.round(s):Math.round(s*10)/10} ${t[r]}`}function _d(e){if((e==null?void 0:e.maxCommunities)==null||e.usedCommunities==null)return null;const t=e.maxCommunities-e.usedCommunities;return t<=0?"Your account has no room for another space right now.":`You can start ${t} more ${t===1?"space":"spaces"}.`}const Pd="Lower-case letters, numbers and single hyphens. 3 to 32 characters, starting with a letter.";function Ln(e){const t=e.trim().toLowerCase();return t===""?{value:t,valid:!0}:{value:t,valid:Qt.safeParse(t).success}}const Hj=80,Ld="That web address is taken.",Fd="That web address can’t be used.";function $d(e){const t=ie(),{value:s,valid:r}=Ln(e),[o,a]=l.useState(s);l.useEffect(()=>{const d=setTimeout(()=>a(s),400);return()=>clearTimeout(d)},[s]);const i=ve({queryKey:Ge.name(o),queryFn:()=>t.checkHostedCommunityName(o),enabled:r&&o!==""&&o===s,staleTime:1e4,retry:!1});if(s==="")return{kind:"none"};if(!r)return{kind:"invalid"};if(o!==s||i.isPending)return{kind:"checking"};const c=i.data;return!c||c.available===!1?{kind:"none"}:c.check.available?{kind:"available"}:{kind:c.check.reason==="reserved"?"reserved":"taken"}}function qj(){const e=l.useRef(null);return t=>{var r;const s=JSON.stringify(t);return((r=e.current)==null?void 0:r.body)!==s&&(e.current={body:s,key:crypto.randomUUID()}),e.current.key}}function Wj(){const e=ie(),t=ce(),s=qj(),[r,o]=l.useState(!1),[a,i]=l.useState({field:null,notice:null});async function c(d){const m={name:d.name.trim(),...d.shortName?{shortName:d.shortName}:{}};o(!0),i({field:null,notice:null});try{const u=await e.startHostedCommunity({...m,idempotencyKey:s(m)});return u.ok?(t.invalidateQueries({queryKey:Ge.list()}),{community:u.community}):("problem"in u&&u.problem.code==="community_name_taken"?i({field:Ld,notice:null}):"problem"in u&&u.problem.code==="community_name_reserved"?i({field:Fd,notice:null}):i({field:null,notice:bt(u)}),null)}catch{return i({field:null,notice:vt}),null}finally{o(!1)}}return{submitting:r,failure:a,clearFieldFailure:()=>i(d=>({...d,field:null})),submit:c}}function Gj(e){switch(e.state){case"awaiting_upload":{const t=e.upload;if((t==null?void 0:t.state)==="sending")return{kind:"uploading",move:e};if((t==null?void 0:t.state)==="sent")return{kind:"importing",move:e};const s=t===null?"restarted":t.failure==="interrupted"?"interrupted":t.failure==="rejected"?"refused":"expired";return{kind:"upload-failed",move:e,why:s}}case"importing":return{kind:"importing",move:e};case"ready":case"claimed":return{kind:"ready",move:e};case"failed":return{kind:"failed",move:e};case"cancelled":return{kind:"cancelled",move:e};default:return{kind:"unrecognised",move:e}}}function Yj(e){return e.state==="awaiting_upload"||e.state==="importing"||e.state==="ready"}function Vj(e){var C;const t=ie(),s=ce(),[r,o]=l.useState(e),[a,i]=l.useState(null),[c,d]=l.useState({field:null,notice:null}),[m,u]=l.useState(!1),f=l.useRef(null),p=l.useRef(null),h=ve({queryKey:Ge.move(r??""),queryFn:()=>t.getHostedCommunityMove(r),enabled:r!==null,refetchInterval:v=>{var I;const N=v.state.data;return(N==null?void 0:N.available)!==!0?!1:((I=N.move.upload)==null?void 0:I.state)==="sending"?1e3:N.move.pollAfterMs===null?!1:Math.max(1e3,N.move.pollAfterMs)}}),g=((C=h.data)==null?void 0:C.available)===!0?h.data.move:null,x=g?Gj(g):null,b=l.useCallback(v=>{s.setQueryData(Ge.move(v.moveId),{available:!0,move:v})},[s]);async function y(v){var A;const N={name:v.name.trim(),...v.shortName?{shortName:v.shortName}:{},file:[v.file.name,v.file.size,v.file.lastModified]},I=JSON.stringify(N);((A=p.current)==null?void 0:A.body)!==I&&(p.current={body:I,key:crypto.randomUUID()});const D=p.current.key,T=new AbortController;f.current=T,d({field:null,notice:null}),i({loaded:0,total:v.file.size});try{const w=await t.checkHostedCommunityMoveRoom(v.file.size,T.signal);if(T.signal.aborted)return;const E=w.ok?await t.startHostedCommunityMove(v.file,{idempotencyKey:D,name:N.name,...v.shortName?{shortName:v.shortName}:{}},k=>i(k),T.signal):w;(E.ok||E.mayExist!==!0)&&(p.current=null),E.ok?(b(E.move),o(E.move.moveId),s.invalidateQueries({queryKey:Ge.list()})):"problem"in E&&E.problem.code==="community_name_taken"?d({field:Ld,notice:null}):"problem"in E&&E.problem.code==="community_name_reserved"?d({field:Fd,notice:null}):d({field:null,notice:bt(E)})}catch{T.signal.aborted?p.current=null:d({field:null,notice:vt})}finally{f.current=null,i(null)}}async function S(){if(f.current){f.current.abort();return}if(r){u(!0);try{const v=await t.cancelHostedCommunityMove(r);v.ok?b(v.move):d({field:null,notice:bt(v)}),s.invalidateQueries({queryKey:Ge.list()})}catch{d({field:null,notice:vt})}finally{u(!1)}}}async function j(){if(r){u(!0),d({field:null,notice:null});try{const v=await t.retryHostedCommunityMoveUpload(r);v.ok?b(v.move):d({field:null,notice:bt(v)})}catch{d({field:null,notice:vt})}finally{u(!1)}}}return{step:x,sending:a,failure:c,clearFieldFailure:()=>d(v=>({...v,field:null})),busy:m,start:y,cancel:S,sendAgain:j,startOver:()=>{o(null),d({field:null,notice:null})}}}function Qj(){var a,i,c;const e=co(),t=ch(),s=Mc(t);if(!e||!t||s.isPending||((a=s.data)==null?void 0:a.available)===!1)return null;const r=((i=s.data)==null?void 0:i.available)===!0?s.data:null,o=(r==null?void 0:r.moves)??[];return{allowance:(r==null?void 0:r.allowance)??null,unfinishedMoveId:((c=o.find(Yj))==null?void 0:c.moveId)??null}}const Xj={message:"Your spaces changed. Check the list again."};function Jj(){const e=ie(),t=ce(),[s,r]=l.useState(null),[o,a]=l.useState(null),[i,c]=l.useState({});function d(u,f){c(p=>{const h={...p};return f?h[u]=f:delete h[u],h})}async function m(u,f){a(u),d(u,null);try{d(u,await f())}catch{d(u,vt)}finally{a(null),await t.invalidateQueries({queryKey:Ge.list()})}}return{confirmingKeep:s,busyId:o,notices:i,askKeep:r,cancelKeep:()=>r(null),keep:u=>m(u.communityId,async()=>{r(null);const f=await e.keepHostedCommunity(u.communityId,u.actions.keep.wouldHold);return f.ok?null:"problem"in f&&f.problem.code==="conflict"?Xj:bt(f)}),restore:u=>m(u.communityId,async()=>{const f=await e.restoreHostedCommunity(u.communityId);return f.ok?null:bt(f)})}}function Lo({open:e,onOpenChange:t,step:s,locked:r}){return n.jsx(et,{open:e,onOpenChange:o=>r&&!o?void 0:t(o),children:n.jsxs(tt,{className:"!min-h-0 sm:max-w-lg",children:[n.jsxs(Xe,{children:[n.jsx(Ue,{children:s.title}),s.description!==void 0&&n.jsx(Je,{children:s.description})]}),s.body!==void 0&&n.jsx(lt,{className:"space-y-4 py-2",children:s.body}),n.jsx(Rt,{className:"gap-2 sm:gap-2",children:s.actions})]})})}function Ct({notice:e}){if("message"in e)return n.jsx("p",{role:"alert",className:"text-destructive text-sm",children:e.message});const{title:t,detail:s,actionUrl:r,actionLabel:o}=e.problem;return n.jsxs("div",{role:"alert",className:"border-status-warning-border bg-status-warning-bg text-status-warning-fg space-y-2 rounded-md border p-3 text-sm",children:[n.jsx("p",{className:"font-medium break-words",children:t}),s&&n.jsx("p",{className:"break-words",children:s}),r&&n.jsxs(_,{type:"button",size:"sm",variant:"outline",onClick:()=>dt(r),children:[o??"Open your account",n.jsx(bn,{className:"size-3.5","aria-hidden":!0})]})]})}function Fo(e){const{state:t,name:s}=e;switch(t.kind){case"preparing":return{title:`Setting up ${s}`,description:"Keep this open, or come back later.",body:n.jsxs("p",{role:"status",className:"text-muted-foreground flex items-center gap-2 text-sm",children:[n.jsx(wt,{className:"size-4"})," Setting up…"]}),actions:n.jsx(_,{variant:"outline",onClick:e.onClose,children:"Close"})};case"claim":return{title:`Make ${s} yours`,description:t.withAccount?"Sign in with your DorkOS account in your browser, then come back.":"Sign in or create an account in your browser, then come back.",body:t.notice?n.jsx(Ct,{notice:t.notice}):void 0,actions:n.jsxs(n.Fragment,{children:[n.jsxs(_,{variant:t.opened?"outline":"default",disabled:t.busy,onClick:e.onOpenClaim,children:[t.opened?"Open it again":"Open in your browser",n.jsx(bn,{className:"size-3.5","aria-hidden":!0})]}),n.jsx(_,{variant:t.opened?"default":"outline",disabled:t.busy,onClick:e.onConfirmClaimed,children:t.busy?"Checking…":"I’ve finished"})]})};case"connecting":return{title:`Connect this DorkOS to ${s}`,description:t.approvalUrl?`Approve this DorkOS on ${s}. This page then moves on.`:"Getting the approval page ready…",body:n.jsxs(n.Fragment,{children:[t.approvalUrl&&!t.notice&&n.jsxs("p",{role:"status",className:"text-muted-foreground flex items-center gap-2 text-sm",children:[n.jsx(wt,{className:"size-4"})," Waiting for your approval"]}),t.notice&&n.jsx(Ct,{notice:t.notice})]}),actions:t.notice?n.jsx(_,{disabled:t.busy,onClick:e.onRetryConnect,children:"Connect again"}):n.jsxs(_,{disabled:t.busy||!t.approvalUrl,onClick:e.onOpenApproval,children:["Open approval page",n.jsx(bn,{className:"size-3.5","aria-hidden":!0})]})};case"done":return{title:`${s} is ready`,description:e.doneDetail,body:n.jsxs("p",{className:"flex items-center gap-2 text-sm",children:[n.jsx(ys,{className:"text-status-success-fg size-4","aria-hidden":!0}),"It’s selected in your spaces."]}),actions:n.jsx(_,{onClick:e.onClose,children:"Done"})}}}function Zj(e){const t=e.usage;if(!t)return null;const{maxActiveMembers:s,maxStorageBytes:r}=e.limits,o=`${t.activeMembers.toLocaleString()}${s!==null?` of ${s.toLocaleString()}`:""} ${t.activeMembers===1&&s===null?"person":"people"}`,a=`${wn(t.storageBytes)}${r!==null?` of ${wn(r)}`:""} of files`;return`${o} · ${a}`}function e0({community:e,names:t,actions:s,onFinishSetup:r,onOpenMove:o}){const a=s.busyId===e.communityId,i=s.confirmingKeep===e.communityId,c=s.notices[e.communityId],d=Zj(e),m=e.actions.keep.wouldHold.map(f=>t.get(f)??"another space"),u=e.state==="held"||e.state==="deletion_pending"||e.state==="suspended";return n.jsxs("li",{className:"space-y-2 rounded-lg border p-3",children:[n.jsxs("div",{className:"flex flex-wrap items-start justify-between gap-2",children:[n.jsxs("div",{className:"min-w-0",children:[n.jsx("p",{className:"truncate text-sm font-medium",children:e.name}),e.shortName&&n.jsx("p",{className:"text-muted-foreground truncate font-mono text-xs",children:e.shortName})]}),n.jsx(pn,{variant:u?"outline":"secondary",className:u?"border-status-warning-border text-status-warning-fg shrink-0":"shrink-0",children:Uj(e.state)})]}),e.state==="unrecognised"&&n.jsx("p",{className:"text-muted-foreground text-sm",children:"Update DorkOS to see this space’s state."}),e.hold&&n.jsxs("div",{className:"space-y-1 text-sm",children:[n.jsx("p",{children:Kj(e.hold.reason)}),n.jsxs("p",{className:"text-muted-foreground",children:["On hold since ",rr(e.hold.since),"."]}),e.hold.deletionNoticeAt&&n.jsxs("p",{className:"text-destructive",children:["DorkOS may delete it after ",rr(e.hold.deletionNoticeAt),". You can export it until then."]})]}),e.deletionAt&&n.jsxs("p",{className:"text-destructive text-sm",children:["It will be deleted for good on ",rr(e.deletionAt),"."]}),e.notice&&n.jsxs("div",{className:"bg-muted/50 space-y-1 rounded-md p-2 text-sm",children:[n.jsx("p",{className:"font-medium break-words",children:e.notice.title}),e.notice.detail&&n.jsx("p",{className:"break-words",children:e.notice.detail}),e.notice.actionUrl&&n.jsxs(_,{size:"sm",variant:"outline",onClick:()=>dt(e.notice.actionUrl),children:[e.notice.actionLabel??"Learn more",n.jsx(bn,{className:"size-3.5","aria-hidden":!0})]})]}),d&&n.jsx("p",{className:"text-muted-foreground text-xs tabular-nums",children:d}),i&&n.jsxs("div",{role:"group","aria-label":`Keep ${e.name} open`,className:"space-y-2 text-sm",children:[n.jsx("p",{children:m.length===0?`Keep ${e.name} open? Nothing else changes.`:`Keeping ${e.name} open puts ${m.length===1?"this one":"these"} on hold: ${m.join(", ")}. People can still read ${m.length===1?"it":"them"}.`}),n.jsxs("div",{className:"flex flex-wrap gap-2",children:[n.jsx(_,{size:"sm",variant:"outline",onClick:s.cancelKeep,children:"Cancel"}),n.jsx(_,{size:"sm",disabled:a,onClick:()=>void s.keep(e),children:"Keep it open"})]})]}),c&&n.jsx(Ct,{notice:c}),!i&&n.jsxs("div",{className:"flex flex-wrap gap-2",children:[e.actions.claimLink&&n.jsx(_,{size:"sm",onClick:()=>r(e),children:"Finish setting up"}),e.moveId&&n.jsx(_,{size:"sm",variant:"outline",onClick:()=>o(e.moveId),children:"See the move"}),e.actions.keep.allowed&&n.jsx(_,{size:"sm",variant:"outline",disabled:a,onClick:()=>s.askKeep(e.communityId),children:"Keep this one open"}),e.actions.restore&&n.jsx(_,{size:"sm",variant:"outline",disabled:a,onClick:()=>void s.restore(e),children:a?"Reopening…":"Reopen"})]})]})}function t0(e){switch(e.state){case"awaiting_upload":return{text:"Uploading the export"};case"importing":return{text:"Moving the history"};case"ready":return{text:"Ready to make yours"};case"claimed":return{text:"Moved"};case"cancelled":return{text:"Cancelled"};case"failed":{const t=Md(e.failureCode??"unrecognised");return{text:t.title,next:t.next}}default:return{text:"Unknown state. Update DorkOS to see more."}}}function n0(e){const t=new Map(e.communities.map(s=>[s.communityId,s.name]));return n.jsxs("div",{className:"space-y-4",children:[e.allowanceText&&n.jsx("p",{className:"text-muted-foreground text-sm",children:e.allowanceText}),e.communities.length>0?n.jsx("ul",{className:"space-y-2",children:e.communities.map(s=>n.jsx(e0,{community:s,names:t,actions:e.actions,onFinishSetup:e.onFinishSetup,onOpenMove:e.onOpenMove},s.communityId))}):n.jsx("p",{className:"text-muted-foreground text-sm",children:"No spaces yet."}),e.moves.length>0&&n.jsxs("section",{"aria-labelledby":"hosted-moves",className:"space-y-2",children:[n.jsx("h4",{id:"hosted-moves",className:"text-sm font-medium",children:"Recent moves"}),n.jsx("ul",{className:"space-y-2",children:e.moves.map(s=>{const r=t0(s),o=s.state==="awaiting_upload"||s.state==="importing"||s.state==="ready";return n.jsxs("li",{className:"flex flex-wrap items-start justify-between gap-2 rounded-lg border p-3",children:[n.jsxs("div",{className:"min-w-0 space-y-0.5 text-sm",children:[n.jsx("p",{className:"truncate font-medium",children:s.name}),n.jsx("p",{className:s.state==="failed"?"text-destructive":"text-muted-foreground",children:r.text}),r.next&&n.jsx("p",{className:"text-muted-foreground",children:r.next})]}),o&&n.jsx(_,{size:"sm",variant:"outline",onClick:()=>e.onOpenMove(s.moveId),children:"Continue"})]},s.moveId)})})]})]})}function s0(e){return e.open?n.jsx(r0,{...e}):null}function r0({open:e,onOpenChange:t,installName:s,onOpenMove:r,onMoveHere:o,onConnected:a}){var h;const i=Mc(!0),c=Jj(),[d,m]=l.useState(null),u=Oo(d,s,a),f=()=>t(!1);let p;if(d)p=Fo({state:u.state,name:d.name,doneDetail:"Invite people from the space’s own settings when you’re ready.",onOpenClaim:u.openClaim,onConfirmClaimed:u.confirmClaimed,onOpenApproval:u.openApproval,onRetryConnect:u.retryConnect,onClose:f});else{const g=((h=i.data)==null?void 0:h.available)===!0?i.data:null;p={title:"Your spaces",description:"Spaces hosted under your DorkOS account.",body:i.isPending?n.jsx("p",{className:"text-muted-foreground text-sm",children:"Loading…"}):g?n.jsx(n0,{communities:g.communities,moves:g.moves,allowanceText:_d(g.allowance),actions:c,onFinishSetup:m,onOpenMove:x=>{f(),r(x)}}):n.jsx(Ct,{notice:{message:"Couldn’t reach your DorkOS account. Try again."}}),actions:n.jsxs(n.Fragment,{children:[n.jsx(_,{variant:"outline",onClick:f,children:"Close"}),n.jsx(_,{variant:"outline",onClick:()=>{f(),o()},children:"Move one here"})]})}}return n.jsx(Lo,{open:e,onOpenChange:t,step:p})}function o0(e){switch(e.kind){case"invalid":return{text:Pd,error:!0};case"checking":return{text:"Checking…",error:!1};case"available":return{text:"That web address is free.",error:!1};case"taken":return{text:"That web address is taken.",error:!0};case"reserved":return{text:"That web address can’t be used.",error:!0};default:return null}}function Bd(e){const t=l.useId(),s=e.webAddressError?{text:e.webAddressError,error:!0}:o0(e.webAddressStatus);return n.jsxs("div",{className:"space-y-4",children:[n.jsxs("div",{className:"space-y-1.5",children:[n.jsx(Pe,{htmlFor:`${t}-name`,children:"Space name"}),n.jsx(Ze,{id:`${t}-name`,required:!0,maxLength:Hj,autoComplete:"off",value:e.name,disabled:e.disabled,onChange:r=>e.onNameChange(r.target.value)})]}),n.jsxs("div",{className:"space-y-1.5",children:[n.jsxs(Pe,{htmlFor:`${t}-address`,children:["Web address ",n.jsx("span",{className:"text-muted-foreground font-normal",children:"(optional)"})]}),n.jsx(Ze,{id:`${t}-address`,autoComplete:"off",autoCapitalize:"none",spellCheck:!1,maxLength:32,placeholder:"book-club",value:e.webAddress,disabled:e.disabled,"aria-invalid":(s==null?void 0:s.error)||void 0,"aria-describedby":`${t}-address-hint`,onChange:r=>e.onWebAddressChange(r.target.value)}),n.jsx("p",{id:`${t}-address-hint`,"aria-live":"polite",className:s!=null&&s.error?"text-destructive text-sm":"text-muted-foreground text-sm",children:(s==null?void 0:s.text)??Pd})]})]})}const a0="Your history is here. Send invitations so people can join again.";function i0(e,t){return{title:"Move a space here",description:"This copies your space’s history and files to DorkOS.",body:n.jsxs("div",{className:"space-y-2 text-sm",children:[n.jsx("p",{children:"Everyone joins again and reconnects their DorkOS."}),n.jsx("p",{className:"text-muted-foreground",children:"Your old space keeps running until you delete it."}),n.jsx("p",{className:"font-medium",children:"First, export the old space:"}),n.jsxs("ol",{className:"text-muted-foreground list-decimal space-y-1 pl-5",children:[n.jsx("li",{children:"Sign in to the old space as its owner."}),n.jsx("li",{children:"Open its Settings."}),n.jsx("li",{children:"Choose Export."}),n.jsx("li",{children:"Enter your password."}),n.jsx("li",{children:"Save the .zip file."})]})]}),actions:n.jsxs(n.Fragment,{children:[n.jsx(_,{variant:"outline",onClick:t,children:"Cancel"}),n.jsx(_,{onClick:e,children:"I have the file"})]})}}function c0({file:e,onFileChange:t}){const s=l.useId();return n.jsxs("div",{className:"space-y-1.5",children:[n.jsx(Pe,{htmlFor:s,children:"Export file"}),n.jsx(Ze,{id:s,type:"file",accept:".zip,application/zip",onChange:r=>{var o;return t(((o=r.target.files)==null?void 0:o[0])??null)},className:"cursor-pointer"}),e&&n.jsxs("p",{className:"text-muted-foreground text-sm break-all",children:[e.name,", ",wn(e.size)]})]})}function l0(e){const t=Ln(e.webAddress),s=e.file===null||e.name.trim()===""||!t.valid||e.webAddressStatus.kind==="taken"||e.webAddressStatus.kind==="reserved";return{title:"Choose the export",description:"Pick the .zip file, then name the space.",body:n.jsxs("form",{id:e.formId,onSubmit:e.onSubmit,className:"space-y-4",noValidate:!0,children:[n.jsx(c0,{file:e.file,onFileChange:e.onFileChange}),n.jsx(Bd,{name:e.name,onNameChange:e.onNameChange,webAddress:e.webAddress,onWebAddressChange:e.onWebAddressChange,webAddressStatus:e.webAddressStatus,webAddressError:e.failure.field,disabled:!1}),e.failure.notice&&n.jsx(Ct,{notice:e.failure.notice}),n.jsx(_c,{})]}),actions:n.jsxs(n.Fragment,{children:[n.jsx(_,{type:"button",variant:"outline",onClick:e.onBack,children:"Back"}),n.jsx(_,{type:"submit",form:e.formId,disabled:s,children:"Start moving"})]})}}function zd({label:e,loaded:t,total:s}){const r=s>0?Math.round(t/s*100):0;return n.jsxs("div",{className:"space-y-2",children:[n.jsx(lh,{value:r,"aria-label":e}),n.jsxs("p",{className:"text-muted-foreground text-sm tabular-nums",children:[wn(t)," of ",wn(s)]})]})}function d0(e,t){return{title:"Getting the file ready",description:"Keep this open. The upload then starts on its own.",body:n.jsx(zd,{label:"Getting the file ready",...e}),actions:n.jsx(_,{variant:"outline",onClick:t,children:"Cancel"})}}function u0(e){const t=e.report;if(!t)return null;const s=r=>r.toLocaleString();return`${s(t.channels)} ${t.channels===1?"channel":"channels"}, ${s(t.entries)} ${t.entries===1?"message":"messages"} and ${s(t.attachments)} ${t.attachments===1?"file":"files"}.`}function m0(e,t){const{move:s}=e,r=t.notice?n.jsx(Ct,{notice:t.notice}):null,o=n.jsx(_,{variant:"outline",disabled:t.busy,onClick:t.onCancelMove,children:"Cancel move"}),a=n.jsx(_,{onClick:t.onStartOver,children:"Start again"}),i=n.jsx(_,{variant:"outline",onClick:t.onClose,children:"Close"});switch(e.kind){case"uploading":{const c=s.upload;return{title:`Uploading ${s.name}`,description:"You can close this window. Keep DorkOS running until it finishes.",body:n.jsxs(n.Fragment,{children:[n.jsx(zd,{label:`Uploading ${s.name}`,loaded:c.sentBytes,total:c.totalBytes}),r]}),actions:o}}case"upload-failed":return e.why==="interrupted"?{title:"The upload didn’t finish",description:"DorkOS still has the file. Send it again to continue.",body:r,actions:n.jsxs(n.Fragment,{children:[o,n.jsx(_,{disabled:t.busy,onClick:t.onSendAgain,children:"Send again"})]})}:e.why==="refused"?{title:"DorkOS didn’t accept the file",description:"The file arrived changed or incomplete.",body:n.jsxs(n.Fragment,{children:[n.jsx("p",{className:"text-muted-foreground text-sm",children:"Cancel the move, export the old space again, then start again."}),r]}),actions:o}:e.why==="restarted"?{title:"This move has to start again",description:"DorkOS restarted, or the move began on another computer.",body:n.jsxs(n.Fragment,{children:[n.jsx("p",{className:"text-muted-foreground text-sm",children:"Cancel the move and start again with the same export."}),n.jsx("p",{className:"text-muted-foreground text-sm",children:"Or finish it on the computer that started it."}),n.jsx("p",{className:"text-muted-foreground text-sm",children:"For safety, uploads only work while DorkOS stays running."}),r]}),actions:o}:{title:"The time to upload ran out",description:"Cancel the move, then start again with the same export.",body:r,actions:o};case"importing":{const c=u0(s);return{title:`Moving ${s.name}`,description:"You can close this window or quit. The move keeps going.",body:n.jsxs(n.Fragment,{children:[n.jsxs("p",{role:"status",className:"text-muted-foreground flex items-center gap-2 text-sm",children:[n.jsx(wt,{className:"size-4"})," Moving your history…"]}),c&&n.jsx("p",{className:"text-sm",children:c}),r]}),actions:n.jsxs(n.Fragment,{children:[o,n.jsx(_,{onClick:t.onClose,children:"Close"})]})}}case"failed":{const c=Md(s.failureCode??"unrecognised");return{title:c.title,description:c.next,body:n.jsx("p",{className:"text-muted-foreground text-sm",children:"Nothing was kept. Your old space is unchanged."}),actions:n.jsxs(n.Fragment,{children:[i,a]})}}case"cancelled":return{title:"Move cancelled",description:"Nothing was kept. Your old space is unchanged.",actions:n.jsxs(n.Fragment,{children:[i,a]})};case"unrecognised":return{title:`Moving ${s.name}`,description:"Update DorkOS to see where this move is.",body:r,actions:i}}}function h0(e){return e.open?n.jsx(f0,{...e}):null}function f0({open:e,onOpenChange:t,installName:s,resumeMoveId:r,onConnected:o}){var C,v;const[a,i]=l.useState("explain"),[c,d]=l.useState(null),[m,u]=l.useState(""),[f,p]=l.useState(""),h=Vj(r),g=$d(a==="choose"&&!h.step?f:""),x=((C=h.step)==null?void 0:C.kind)==="ready"?h.step.move:null,b=Oo(x?{communityId:x.communityId,name:x.name,communityUrl:x.communityUrl}:null,s,o),y=()=>t(!1);function S(N){N.preventDefault();const I=Ln(f);!c||m.trim()===""||!I.valid||h.start({file:c,name:m,shortName:I.value})}let j;return h.sending?j=d0(h.sending,()=>void h.cancel()):((v=h.step)==null?void 0:v.kind)==="ready"?j=Fo({state:b.state,name:h.step.move.name,doneDetail:a0,onOpenClaim:b.openClaim,onConfirmClaimed:b.confirmClaimed,onOpenApproval:b.openApproval,onRetryConnect:b.retryConnect,onClose:y}):h.step?j=m0(h.step,{busy:h.busy,notice:h.failure.notice,onCancelMove:()=>void h.cancel(),onSendAgain:()=>void h.sendAgain(),onStartOver:()=>{h.startOver(),i("choose")},onClose:y}):a==="explain"?j=i0(()=>i("choose"),y):j=l0({file:c,onFileChange:d,name:m,onNameChange:u,webAddress:f,onWebAddressChange:N=>{p(N),h.clearFieldFailure()},webAddressStatus:g,failure:h.failure,formId:"move-community-form",onSubmit:S,onBack:()=>i("explain")}),n.jsx(Lo,{open:e,onOpenChange:t,step:j,locked:h.sending!==null})}function p0(e){const t=Ln(e.webAddress),s=e.name.trim()===""||!t.valid||e.webAddressStatus.kind==="taken"||e.webAddressStatus.kind==="reserved",r=_d(e.allowance);return{title:"Start a space",description:"Share channels with people and agents. You own it.",body:n.jsxs("form",{id:e.formId,onSubmit:e.onSubmit,className:"space-y-4",noValidate:!0,children:[n.jsx(Bd,{name:e.name,onNameChange:e.onNameChange,webAddress:e.webAddress,onWebAddressChange:e.onWebAddressChange,webAddressStatus:e.webAddressStatus,webAddressError:e.failure.field,disabled:e.submitting}),r&&n.jsx("p",{className:"text-muted-foreground text-sm",children:r}),e.failure.notice&&n.jsx(Ct,{notice:e.failure.notice}),n.jsx(_c,{})]}),actions:n.jsxs(n.Fragment,{children:[n.jsx(_,{type:"button",variant:"outline",onClick:e.onCancel,children:"Cancel"}),n.jsx(_,{type:"submit",form:e.formId,disabled:s||e.submitting,children:e.submitting?"Starting…":"Start space"})]})}}function g0(e){return e.open?n.jsx(x0,{...e}):null}function x0({open:e,onOpenChange:t,installName:s,allowance:r,onConnected:o}){const[a,i]=l.useState(""),[c,d]=l.useState(""),[m,u]=l.useState(null),f=Wj(),p=$d(m?"":c),h=Oo(m,s,o),g=()=>t(!1);async function x(y){y.preventDefault();const S=Ln(c);if(a.trim()===""||!S.valid||f.submitting)return;const j=await f.submit({name:a,shortName:S.value});j&&u({communityId:j.community.communityId,name:j.community.name,communityUrl:j.community.communityUrl})}const b=m?Fo({state:h.state,name:m.name,doneDetail:"Invite people from the space’s own settings when you’re ready.",onOpenClaim:h.openClaim,onConfirmClaimed:h.confirmClaimed,onOpenApproval:h.openApproval,onRetryConnect:h.retryConnect,onClose:g}):p0({name:a,webAddress:c,onNameChange:i,onWebAddressChange:y=>{d(y),f.clearFieldFailure()},webAddressStatus:p,submitting:f.submitting,failure:f.failure,allowance:r,formId:"start-community-form",onSubmit:y=>void x(y),onCancel:g});return n.jsx(Lo,{open:e,onOpenChange:t,step:b,locked:f.submitting})}function y0({entry:e,dialog:t,onDialogChange:s,installName:r,onConnected:o}){if(e===null)return null;const a=i=>{i||s(null)};return n.jsxs(n.Fragment,{children:[n.jsx(g0,{open:(t==null?void 0:t.kind)==="start",onOpenChange:a,installName:r,allowance:e.allowance,onConnected:o}),n.jsx(h0,{open:(t==null?void 0:t.kind)==="move",onOpenChange:a,installName:r,resumeMoveId:(t==null?void 0:t.kind)==="move"?t.moveId:null,onConnected:o},(t==null?void 0:t.kind)==="move"?t.moveId??"new":"closed"),n.jsx(s0,{open:(t==null?void 0:t.kind)==="hosted",onOpenChange:a,installName:r,onOpenMove:i=>s({kind:"move",moveId:i}),onMoveHere:()=>s({kind:"move",moveId:e.unfinishedMoveId}),onConnected:o})]})}const b0=.1;function v0(e){if(!(e!=null&&e.available)||e.balance===null)return null;const{allowance:t,purchased:s,denomination:r}=e.balance,o=dh(t.remainingMicro,t.grantedMicro);if(o===null||o>=b0||!/^\d+$/.test(t.remainingMicro)||!/^\d+$/.test(s.remainingMicro)||BigInt(s.remainingMicro)>0n)return null;const a=uh(mh(t.remainingMicro,r));return a===null?null:`${a} left`}function w0(e){if(e.state!=="loading")return e.state==="signed-out"?"Not signed in":["Signed in",e.label,e.lowCredits].filter(Boolean).join(" · ")}function j0(){var r;const e=Pc(),t=((r=e.data)==null?void 0:r.linked)===!0,s=Lc({enabled:t});return e.data===void 0?{state:"loading"}:t?{state:"signed-in",label:e.data.accountLabel,lowCredits:v0(s.data)}:{state:"signed-out"}}function Ud(e){return e.kind==="agent"?kt("agent",e.agent.projectPath):kt("room",e.room.id)}function _r(e){return e.kind==="agent"?Ce(e.agent):e.room.kind==="channel"&&e.room.slug?`#${e.room.slug}`:e.room.title}function Ha(e){return`Chats ${e.kind==="agent"?"with":"in"} ${_r(e)}`}function k0(e){return e.kind==="agent"?`No chats with ${_r(e)} yet.`:`No chats came from ${_r(e)}.`}function S0(e){return e.kind==="channel"&&e.slug?`#${e.slug}`:e.title}function C0(e){const t=new Map,s=[...e].sort((r,o)=>{const a=+(r.kind==="dm")-+(o.kind==="dm");return a!==0?a:Number(r.archived)-Number(o.archived)});for(const r of s){const o=S0(r);t.has(o)||t.set(o,r.id)}return t}function N0(e,t){const s=[];e.cwd!==null&&s.push(kt("agent",e.cwd));const r=A0(e,t);return r!==void 0&&s.push(kt("room",r)),s}function A0(e,t){if(e.origin==="room"){if(e.originRoomId!==void 0)return e.originRoomId;if(e.originLabel!==void 0)return t.get(e.originLabel)}}function E0(e,t){const s=Number(e.archived)-Number(t.archived);if(s!==0)return s;const r=Number(_t(t))-Number(_t(e));return r!==0?r:t.lastActivityAt.localeCompare(e.lastActivityAt)||t.id.localeCompare(e.id)}function or(e){return[...e].sort(E0)}function Pr(e){const t=[e.title];e.slug&&t.push(e.slug);for(const s of e.participants??[])t.push(s.displayName);return t}function I0(){const{data:e,isLoading:t,isError:s}=Rs({includeArchived:!0});return l.useMemo(()=>{const r=e??[],o=or(r.filter(i=>i.kind==="channel")),a=or(r.filter(i=>i.kind==="dm"));return{channels:o,dms:a,unread:or([...o,...a].filter(i=>!i.archived&&_t(i))),isLoading:t,isError:s}},[e,t,s])}const T0=8;function R0(e,t){const s=new Set(hh(Object.keys(e),t)),r=[];for(const[o,a]of Object.entries(e))a&&s.has(o)&&(a.lifecycle!=="streaming"&&a.lifecycle!=="blocked"||r.push({sessionId:o,lifecycle:a.lifecycle,activity:a.activity??null}));return r.sort((o,a)=>o.lifecycle!==a.lifecycle?o.lifecycle==="blocked"?-1:1:o.sessionId.localeCompare(a.sessionId))}function qa(e){const t=Date.parse(e.lastActivityAt);return Number.isNaN(t)?Number.NEGATIVE_INFINITY:t}function D0(e){return!(e.unreadCount===null||e.archived||e.lastActivityAt===e.createdAt)}function O0({sessions:e,rooms:t,unreadRoomIds:s,agents:r,agentActivity:o,excludeSessionIds:a=new Set,limit:i=T0}){const c=e.filter(g=>!a.has(g.id)).map(g=>({kind:"session",key:`session:${g.id}`,lastActivityAt:g.lastActivityAt,session:g})),d=new Set(e.flatMap(g=>g.cwd?[g.cwd]:[])),m=t.filter(D0).map(g=>({kind:"room",key:`room:${g.id}`,lastActivityAt:g.lastActivityAt,room:g})),u=r.flatMap(g=>{if(d.has(g.projectPath))return[];const x=o[g.projectPath];return x?[{kind:"agent",key:`agent:${g.projectPath}`,lastActivityAt:x,agent:g}]:[]}),f=[],p=[];for(const g of[...c,...m,...u])g.kind==="room"&&s.has(g.room.id)?f.push(g):p.push(g);const h=(g,x)=>qa(x)-qa(g)||x.key.localeCompare(g.key);return[...f.sort(h),...p.sort(h)].slice(0,i)}const M0=50;function Kd(e){const t=[e.id];return e.who&&t.push(e.who),e.cwd&&t.push(e.cwd),t}function _0(e){return e?e.split("/").filter(Boolean).pop()??null:null}function Wa(e,t,s){const r=new Map(t.map(o=>[o.projectPath,o]));return e.map(o=>{const a=o.cwd??null,i=a?r.get(a)??null:null,c=Date.parse(o.updatedAt);return{id:o.id,who:i?Ce(i):_0(a),title:io(o.title),cwd:a,agent:i,origin:o.origin,originLabel:o.originLabel,originRoomId:o.originRoomId,lastActivityAt:o.updatedAt,archived:!Number.isNaN(c)&&c<s}})}function P0(e,t,s,r){const{data:o}=Fc(M0),a=ct(p=>p.statuses),i=ct($c(p=>Object.values(p.sessions))),c=l.useMemo(()=>Wa((o==null?void 0:o.sessions)??[],e,r),[o==null?void 0:o.sessions,e,r]),d=l.useMemo(()=>Wa(i,e,r),[i,e,r]),m=l.useMemo(()=>[...i,...(o==null?void 0:o.sessions)??[]],[i,o]),u=l.useMemo(()=>{const p=new Map;for(const h of d)p.set(h.id,h);for(const h of c)p.has(h.id)||p.set(h.id,h);return R0(a,m).flatMap(h=>{const g=p.get(h.sessionId);return g?[{session:g,verb:fh(h.lifecycle,h.activity),signal:h.lifecycle==="blocked"?"needs-you":"working"}]:[]})},[a,d,c,m]),f=l.useMemo(()=>{const p=new Set(ph((o==null?void 0:o.sessions)??[]).yours.map(h=>h.id));return O0({sessions:c.filter(h=>p.has(h.id)),rooms:t,unreadRoomIds:s,agents:e,agentActivity:(o==null?void 0:o.agentActivity)??{},excludeSessionIds:new Set(u.map(h=>h.session.id))})},[o,c,t,s,e,u]);return{sessions:c,continueRows:u,recent:f,agentActivity:(o==null?void 0:o.agentActivity)??L0}}const L0=Object.freeze({});function F0(){const{data:e,dataUpdatedAt:t}=_e(),s=e!==void 0&&t>Pt,{status:r,url:o}=gh(e==null?void 0:e.tunnel),a=l.useRef(void 0);l.useEffect(()=>{if(!s)return;const i=a.current;a.current=r,!(i===void 0||i===r)&&(xh.getState().consumeSuppression()||(r==="reconnecting"?ae.warning("Remote access is reconnecting",{id:"tunnel-status",description:"Your other devices can’t reach DorkOS until then."}):r==="off"?ae.error("Remote access turned off",{id:"tunnel-status",description:"Your other devices can’t reach DorkOS now."}):o&&ae.success("Remote access is on",{id:"tunnel-status",description:o})))},[s,r,o])}const at={copyLink:"copyRemoteLink",showQr:"showRemoteQr",turnOn:"turnRemoteAccessOn",turnOff:"turnRemoteAccessOff"},Gn={copyLink:11,showQr:12,turnOff:13,turnOn:11};function $0(e,t,s){return(e==="connected"||e==="reconnecting")&&t?[{id:"remote-access-copy",label:"Copy remote link",icon:"Copy",action:at.copyLink,category:"quick-action",priority:Gn.copyLink,keywords:["remote","tunnel","url","address","phone","share"]},{id:"remote-access-qr",label:"Show QR code",icon:"QrCode",action:at.showQr,category:"quick-action",priority:Gn.showQr,keywords:["remote","tunnel","scan","phone"]},{id:"remote-access-off",label:"Turn remote access off",icon:"Globe",action:at.turnOff,category:"quick-action",priority:Gn.turnOff,keywords:["remote","tunnel","ngrok","stop","disconnect"]}]:s&&(e==="off"||e==="error")?[{id:"remote-access-on",label:"Turn remote access on",icon:"Globe",action:at.turnOn,category:"quick-action",priority:Gn.turnOn,keywords:["remote","tunnel","ngrok","phone","start"]}]:[]}function B0(){const{state:e,url:t,tokenConfigured:s}=Bc();return l.useMemo(()=>$0(e,t,s),[e,t,s])}const Yn={usageKey:null,lastActivityAt:null,waiting:!1,demoted:!1,scopes:[]};function Ga(e){return{usageKey:kt("room",e.id),lastActivityAt:e.lastActivityAt,waiting:_t(e),demoted:e.archived,scopes:[]}}function z0(e,t){const{data:s,isLoading:r}=Dn(),o=I0(),{sessions:a}=zc(),i=l.useMemo(()=>!a||!e?null:yh(a,e)[0]??null,[a,e]),{data:c}=Px(e,i==null?void 0:i.id,i==null?void 0:i.runtime),d=Is("command-palette.items"),m=Uc(),u=l.useMemo(()=>m.map(A=>({id:A.id,label:A.title,href:Kc(A.extensionId,A.path),icon:A.icon})),[m]),f=l.useMemo(()=>d.filter(A=>A.category==="feature"),[d]),p=B0(),h=l.useMemo(()=>[...d.filter(A=>A.category==="quick-action"),...p],[d,p]),g=l.useMemo(()=>bh.flatMap(A=>{const w=h.find(E=>E.id===A);return w?[w]:[]}),[h]),x=l.useMemo(()=>(s==null?void 0:s.agents)??[],[s]),b=l.useMemo(()=>new Set(o.unread.map(A=>A.id)),[o.unread]),y=l.useMemo(()=>[...o.channels,...o.dms],[o.channels,o.dms]),S=l.useMemo(()=>vh(t),[t]),{sessions:j,continueRows:C,recent:v,agentActivity:N}=P0(x,y,b,S),I=l.useMemo(()=>C0(y),[y]),D=l.useMemo(()=>c?c.commands.map(A=>({name:A.fullCommand,description:A.description})):[],[c]),T=l.useMemo(()=>{const A=[];for(const w of x)A.push({id:w.id,name:w.name,type:"agent",keywords:[w.projectPath,w.id],usageKey:kt("agent",w.projectPath),lastActivityAt:N[w.projectPath]??null,waiting:!1,demoted:!1,scopes:[],data:w});for(const w of j)A.push({id:w.id,name:w.title,type:"session",keywords:Kd(w),usageKey:kt("session",w.id),lastActivityAt:w.lastActivityAt,waiting:!1,demoted:!1,scopes:N0(w,I),data:w});for(const w of f)A.push({id:w.id,name:w.label,type:"feature",keywords:w.keywords,...Yn,data:w});for(const w of D)A.push({id:`cmd-${w.name}`,name:w.name,type:"command",keywords:w.description?[w.description]:void 0,...Yn,data:w});for(const w of h)A.push({id:w.id,name:w.label,type:"quick-action",keywords:w.keywords,...Yn,data:w});for(const w of o.channels)A.push({id:w.id,name:ao(w),type:"room",keywords:Pr(w),...Ga(w),data:w});for(const w of o.dms)A.push({id:w.id,name:w.title,type:"dm",keywords:Pr(w),...Ga(w),data:w});for(const w of u)A.push({id:w.id,name:w.label,type:"page",keywords:["add-on","extension"],...Yn,data:w});return A},[x,N,j,D,f,h,o.channels,o.dms,I,u]);return{allAgents:x,newActions:g,rooms:o,sessions:j,continueRows:C,recent:v,searchableItems:T,isLoading:r}}function U0(){const e=U(a=>a.toggleGlobalPalette),t=U(a=>a.setGlobalPaletteOpen),s=U(a=>a.globalPaletteOpen),{close:r}=qe(),{close:o}=lo();return l.useEffect(()=>{const a=i=>{(i.metaKey||i.ctrlKey)&&i.key==="k"&&(i.preventDefault(),s||(r(),o()),e())};return document.addEventListener("keydown",a),()=>document.removeEventListener("keydown",a)},[e,r,o,s]),{globalPaletteOpen:s,setGlobalPaletteOpen:t,toggleGlobalPalette:e}}function ht(e){return Array.isArray?Array.isArray(e):qd(e)==="[object Array]"}function K0(e){if(typeof e=="string")return e;if(typeof e=="bigint")return e.toString();const t=e+"";return t=="0"&&1/e==-1/0?"-0":t}function Lr(e){return e==null?"":K0(e)}function Se(e){return typeof e=="string"}function ns(e){return typeof e=="number"}function H0(e){return e===!0||e===!1||q0(e)&&qd(e)=="[object Boolean]"}function Hd(e){return typeof e=="object"}function q0(e){return Hd(e)&&e!==null}function De(e){return e!=null}function Vn(e){return!e.trim().length}function qd(e){return e==null?e===void 0?"[object Undefined]":"[object Null]":Object.prototype.toString.call(e)}const W0="Incorrect 'index' type",Fr="Invalid doc index: must be a non-negative integer within the bounds of the docs array",G0=e=>`Invalid value for key ${e}`,Y0=e=>`Pattern length exceeds max of ${e}.`,V0=e=>`Missing ${e} property in key`,Q0=e=>`Property 'weight' in key '${e}' must be a positive integer`,X0="Fuse.match does not support useTokenSearch: token search requires corpus-level statistics (df, fieldCount) that a one-off string comparison does not have. Use new Fuse(...).search(...) instead.",Ya=Object.prototype.hasOwnProperty;var J0=class{constructor(e){this._keys=[],this._keyMap={};let t=0;e.forEach(s=>{const r=Wd(s);this._keys.push(r),this._keyMap[r.id]=r,t+=r.weight}),this._keys.forEach(s=>{s.weight/=t})}get(e){return this._keyMap[e]}keys(){return this._keys}toJSON(){return JSON.stringify(this._keys)}};function Wd(e){let t=null,s=null,r=null,o=1,a=null;if(Se(e)||ht(e))r=e,t=Va(e),s=ss(e);else{if(!Ya.call(e,"name"))throw new Error(V0("name"));const i=e.name;if(r=i,Ya.call(e,"weight")&&e.weight!==void 0&&(o=e.weight,o<=0))throw new Error(Q0(ss(i)));t=Va(i),s=ss(i),a=e.getFn??null}return{path:t,id:s,weight:o,src:r,getFn:a}}function Va(e){return ht(e)?e:e.split(".")}function ss(e){return ht(e)?e.join("."):e}function Z0(e,t){const s=[];let r=!1;const o=(a,i,c,d)=>{if(De(a))if(!i[c])s.push(d!==void 0?{v:a,i:d}:a);else{const m=a[i[c]];if(!De(m))return;if(c===i.length-1&&(Se(m)||ns(m)||H0(m)||typeof m=="bigint"))s.push(d!==void 0?{v:Lr(m),i:d}:Lr(m));else if(ht(m)){r=!0;for(let u=0,f=m.length;u<f;u+=1)o(m[u],i,c+1,u)}else i.length&&o(m,i,c+1,d)}};return o(e,Se(t)?t.split("."):t,0),r?s:s[0]}const ek={includeMatches:!1,findAllMatches:!1,minMatchCharLength:1},tk={isCaseSensitive:!1,ignoreDiacritics:!1,includeScore:!1,keys:[],shouldSort:!0,sortFn:(e,t)=>e.score===t.score?e.idx<t.idx?-1:1:e.score<t.score?-1:1},nk={location:0,threshold:.6,distance:100},sk={useExtendedSearch:!1,useTokenSearch:!1,tokenize:void 0,tokenMatch:"any",getFn:Z0,ignoreLocation:!1,ignoreFieldNorm:!1,fieldNormWeight:1},G=Object.freeze({...tk,...ek,...nk,...sk});function rk(e){return e>=9&&e<=13||e===32||e===160}function ok(e=1,t=3){const s=new Map,r=Math.pow(10,t);return{get(o){let a=0,i=!1;for(let d=0;d<o.length;d++)rk(o.charCodeAt(d))?i=!1:i||(a++,i=!0);if(a===0&&(a=1),s.has(a))return s.get(a);const c=Math.round(r/Math.pow(a,.5*e))/r;return s.set(a,c),c},clear(){s.clear()}}}var $o=class{constructor({getFn:e=G.getFn,fieldNormWeight:t=G.fieldNormWeight}={}){this.norm=ok(t,3),this.getFn=e,this.isCreated=!1,this.docs=[],this.keys=[],this._keysMap={},this.setIndexRecords()}setSources(e=[]){this.docs=e}setIndexRecords(e=[]){this.records=e}setKeys(e=[]){this.keys=e,this._keysMap={},e.forEach((t,s)=>{this._keysMap[t.id]=s})}create(){if(this.isCreated||!this.docs.length)return;this.isCreated=!0;const e=this.docs.length;this.records=new Array(e);let t=0;if(Se(this.docs[0]))for(let s=0;s<e;s++){const r=this._createStringRecord(this.docs[s],s);r&&(this.records[t++]=r)}else for(let s=0;s<e;s++)this.records[t++]=this._createObjectRecord(this.docs[s],s);this.records.length=t,this.norm.clear()}add(e,t){if(!Number.isInteger(t)||t<0)throw new Error(Fr);if(Se(e)){const r=this._createStringRecord(e,t);return r&&this.records.push(r),r}const s=this._createObjectRecord(e,t);return this.records.push(s),s}removeAt(e){if(!Number.isInteger(e)||e<0)throw new Error(Fr);for(let t=0,s=this.records.length;t<s;t+=1)if(this.records[t].i===e){this.records.splice(t,1);break}for(let t=0,s=this.records.length;t<s;t+=1)this.records[t].i>e&&(this.records[t].i-=1)}removeAll(e){const t=new Set;for(const r of e)Number.isInteger(r)&&r>=0&&t.add(r);if(t.size===0)return;this.records=this.records.filter(r=>!t.has(r.i));const s=Array.from(t).sort((r,o)=>r-o);for(const r of this.records){let o=0,a=s.length;for(;o<a;){const i=o+a>>>1;s[i]<r.i?o=i+1:a=i}r.i-=o}}getValueForItemAtKeyId(e,t){return e[this._keysMap[t]]}size(){return this.records.length}_createStringRecord(e,t){return!De(e)||Vn(e)?null:{v:e,i:t,n:this.norm.get(e)}}_createObjectRecord(e,t){const s={i:t,$:{}};for(let r=0,o=this.keys.length;r<o;r++){const a=this.keys[r],i=a.getFn?a.getFn(e):this.getFn(e,a.path);if(De(i)){if(ht(i)){const c=[];for(let d=0,m=i.length;d<m;d+=1){const u=i[d];if(De(u)){if(Se(u)){if(!Vn(u)){const f={v:u,i:d,n:this.norm.get(u)};c.push(f)}}else if(De(u.v)){const f=Se(u.v)?u.v:Lr(u.v);if(!Vn(f)){const p={v:f,i:u.i,n:this.norm.get(f)};c.push(p)}}}}s.$[r]=c}else if(Se(i)&&!Vn(i)){const c={v:i,n:this.norm.get(i)};s.$[r]=c}}}return s}toJSON(){return{keys:this.keys.map(({getFn:e,...t})=>t),records:this.records}}};function Gd(e,t,{getFn:s=G.getFn,fieldNormWeight:r=G.fieldNormWeight}={}){const o=new $o({getFn:s,fieldNormWeight:r});return o.setKeys(e.map(Wd)),o.setSources(t),o.create(),o}function ak(e,{getFn:t=G.getFn,fieldNormWeight:s=G.fieldNormWeight}={}){const{keys:r,records:o}=e,a=new $o({getFn:t,fieldNormWeight:s});return a.setKeys(r),a.setIndexRecords(o),a}function ik(e=[],t=G.minMatchCharLength){const s=[];let r=-1,o=-1,a=0;for(let i=e.length;a<i;a+=1){const c=e[a];c&&r===-1?r=a:!c&&r!==-1&&(o=a-1,o-r+1>=t&&s.push([r,o]),r=-1)}return e[a-1]&&a-r>=t&&s.push([r,a-1]),s}function ck(e,t,s,{location:r=G.location,distance:o=G.distance,threshold:a=G.threshold,findAllMatches:i=G.findAllMatches,minMatchCharLength:c=G.minMatchCharLength,includeMatches:d=G.includeMatches,ignoreLocation:m=G.ignoreLocation}={}){if(t.length>32)throw new Error(Y0(32));const u=t.length,f=e.length,p=Math.max(0,Math.min(r,f));let h=a,g=p;const x=(T,A)=>{const w=T/u;if(m)return w;const E=Math.abs(p-A);return o?w+E/o:E?1:w},b=c>1||d,y=b?Array(f):[];let S;for(;(S=e.indexOf(t,g))>-1;){const T=x(0,S);if(h=Math.min(T,h),g=S+u,b){let A=0;for(;A<u;)y[S+A]=1,A+=1}}g=-1;let j=[],C=1,v=0,N=u+f;const I=1<<u-1;for(let T=0;T<u;T+=1){let A=0,w=N;for(;A<w;)x(T,p+w)<=h?A=w:N=w,w=Math.floor((N-A)/2+A);N=w;let E=Math.max(1,p-w+1);const k=i?f:Math.min(p+w,f)+u,O=Array(k+2);O[k+1]=(1<<T)-1;for(let R=k;R>=E;R-=1){const M=R-1,P=s[e[M]];if(O[R]=(O[R+1]<<1|1)&P,T&&(O[R]|=(j[R+1]|j[R])<<1|1|j[R+1]),O[R]&I&&(C=x(T,M),C<=h)){if(h=C,g=M,v=T,g<=p)break;E=Math.max(1,2*p-g)}}if(x(T+1,p)>h)break;j=O}if(b&&g>=0){const T=Math.min(f-1,g+u-1+v);for(let A=g;A<=T;A+=1)s[e[A]]&&(y[A]=1)}const D={isMatch:g>=0,score:Math.max(.001,C)};if(b){const T=ik(y,c);T.length?d&&(D.indices=T):D.isMatch=!1}return D}function lk(e){const t={};for(let s=0,r=e.length;s<r;s+=1){const o=e.charAt(s);t[o]=(t[o]||0)|1<<r-s-1}return t}function Bo(e){if(e.length<=1)return e;e.sort((s,r)=>s[0]-r[0]||s[1]-r[1]);const t=[e[0]];for(let s=1,r=e.length;s<r;s+=1){const o=t[t.length-1],a=e[s];a[0]<=o[1]+1?o[1]=Math.max(o[1],a[1]):t.push(a)}return t}const Yd={ł:"l",Ł:"L",đ:"d",Đ:"D",ø:"o",Ø:"O",ħ:"h",Ħ:"H",ŧ:"t",Ŧ:"T",ı:"i",ß:"ss"},dk=new RegExp("["+Object.keys(Yd).join("")+"]","g"),jn=typeof String.prototype.normalize=="function"?e=>e.normalize("NFD").replace(/[\u0300-\u036F\u0483-\u0489\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u0610-\u061A\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7\u06E8\u06EA-\u06ED\u0711\u0730-\u074A\u07A6-\u07B0\u07EB-\u07F3\u07FD\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u082D\u0859-\u085B\u08D3-\u08E1\u08E3-\u0903\u093A-\u093C\u093E-\u094F\u0951-\u0957\u0962\u0963\u0981-\u0983\u09BC\u09BE-\u09C4\u09C7\u09C8\u09CB-\u09CD\u09D7\u09E2\u09E3\u09FE\u0A01-\u0A03\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A70\u0A71\u0A75\u0A81-\u0A83\u0ABC\u0ABE-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AE2\u0AE3\u0AFA-\u0AFF\u0B01-\u0B03\u0B3C\u0B3E-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B62\u0B63\u0B82\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD7\u0C00-\u0C04\u0C3E-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C62\u0C63\u0C81-\u0C83\u0CBC\u0CBE-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CE2\u0CE3\u0D00-\u0D03\u0D3B\u0D3C\u0D3E-\u0D44\u0D46-\u0D48\u0D4A-\u0D4D\u0D57\u0D62\u0D63\u0D82\u0D83\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DF2\u0DF3\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0EB1\u0EB4-\u0EB9\u0EBB\u0EBC\u0EC8-\u0ECD\u0F18\u0F19\u0F35\u0F37\u0F39\u0F3E\u0F3F\u0F71-\u0F84\u0F86\u0F87\u0F8D-\u0F97\u0F99-\u0FBC\u0FC6\u102B-\u103E\u1056-\u1059\u105E-\u1060\u1062-\u1064\u1067-\u106D\u1071-\u1074\u1082-\u108D\u108F\u109A-\u109D\u135D-\u135F\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17B4-\u17D3\u17DD\u180B-\u180D\u1885\u1886\u18A9\u1920-\u192B\u1930-\u193B\u1A17-\u1A1B\u1A55-\u1A5E\u1A60-\u1A7C\u1A7F\u1AB0-\u1ABE\u1B00-\u1B04\u1B34-\u1B44\u1B6B-\u1B73\u1B80-\u1B82\u1BA1-\u1BAD\u1BE6-\u1BF3\u1C24-\u1C37\u1CD0-\u1CD2\u1CD4-\u1CE8\u1CED\u1CF2-\u1CF4\u1CF7-\u1CF9\u1DC0-\u1DF9\u1DFB-\u1DFF\u20D0-\u20F0\u2CEF-\u2CF1\u2D7F\u2DE0-\u2DFF\u302A-\u302F\u3099\u309A\uA66F-\uA672\uA674-\uA67D\uA69E\uA69F\uA6F0\uA6F1\uA802\uA806\uA80B\uA823-\uA827\uA880\uA881\uA8B4-\uA8C5\uA8E0-\uA8F1\uA8FF\uA926-\uA92D\uA947-\uA953\uA980-\uA983\uA9B3-\uA9C0\uA9E5\uAA29-\uAA36\uAA43\uAA4C\uAA4D\uAA7B-\uAA7D\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uAAEB-\uAAEF\uAAF5\uAAF6\uABE3-\uABEA\uABEC\uABED\uFB1E\uFE00-\uFE0F\uFE20-\uFE2F]/g,"").replace(dk,t=>Yd[t]):e=>e;var zo=class{constructor(e,{location:t=G.location,threshold:s=G.threshold,distance:r=G.distance,includeMatches:o=G.includeMatches,findAllMatches:a=G.findAllMatches,minMatchCharLength:i=G.minMatchCharLength,isCaseSensitive:c=G.isCaseSensitive,ignoreDiacritics:d=G.ignoreDiacritics,ignoreLocation:m=G.ignoreLocation}={}){if(this.options={location:t,threshold:s,distance:r,includeMatches:o,findAllMatches:a,minMatchCharLength:i,isCaseSensitive:c,ignoreDiacritics:d,ignoreLocation:m},e=c?e:e.toLowerCase(),e=d?jn(e):e,this.pattern=e,this.chunks=[],!this.pattern.length)return;const u=(p,h)=>{this.chunks.push({pattern:p,alphabet:lk(p),startIndex:h})},f=this.pattern.length;if(f>32){let p=0;const h=f%32,g=f-h;for(;p<g;)u(this.pattern.substr(p,32),p),p+=32;if(h){const x=f-32;u(this.pattern.substr(x),x)}}else u(this.pattern,0)}searchIn(e){const{isCaseSensitive:t,ignoreDiacritics:s,includeMatches:r}=this.options;if(e=t?e:e.toLowerCase(),e=s?jn(e):e,this.pattern===e){if(e.length<this.options.minMatchCharLength)return{isMatch:!1,score:1};const g={isMatch:!0,score:0};return r&&(g.indices=[[0,e.length-1]]),g}const{location:o,distance:a,threshold:i,findAllMatches:c,minMatchCharLength:d,ignoreLocation:m}=this.options,u=[];let f=0,p=!1;this.chunks.forEach(({pattern:g,alphabet:x,startIndex:b})=>{const{isMatch:y,score:S,indices:j}=ck(e,g,x,{location:o+b,distance:a,threshold:i,findAllMatches:c,minMatchCharLength:d,includeMatches:r,ignoreLocation:m});y&&(p=!0),f+=S,y&&j&&u.push(...j)});const h={isMatch:p,score:p?f/this.chunks.length:1};return p&&r&&(h.indices=Bo(u)),h}};const uk=new Set(["fuzzy","include"]);function mk(e){return e.startsWith("inverse")}const $r=[{type:"exact",multiRegex:/^="(.*)"$/,singleRegex:/^=(.*)$/,create:e=>({type:"exact",search(t){const s=t===e;return{isMatch:s,score:s?0:1,indices:[0,e.length-1]}}})},{type:"include",multiRegex:/^'"(.*)"$/,singleRegex:/^'(.*)$/,create:e=>({type:"include",search(t){let s=0,r;const o=[],a=e.length;for(;(r=t.indexOf(e,s))>-1;)s=r+a,o.push([r,s-1]);const i=!!o.length;return{isMatch:i,score:i?0:1,indices:o}}})},{type:"prefix-exact",multiRegex:/^\^"(.*)"$/,singleRegex:/^\^(.*)$/,create:e=>({type:"prefix-exact",search(t){const s=t.startsWith(e);return{isMatch:s,score:s?0:1,indices:[0,e.length-1]}}})},{type:"inverse-prefix-exact",multiRegex:/^!\^"(.*)"$/,singleRegex:/^!\^(.*)$/,create:e=>({type:"inverse-prefix-exact",search(t){const s=!t.startsWith(e);return{isMatch:s,score:s?0:1,indices:[0,t.length-1]}}})},{type:"inverse-suffix-exact",multiRegex:/^!"(.*)"\$$/,singleRegex:/^!(.*)\$$/,create:e=>({type:"inverse-suffix-exact",search(t){const s=!t.endsWith(e);return{isMatch:s,score:s?0:1,indices:[0,t.length-1]}}})},{type:"suffix-exact",multiRegex:/^"(.*)"\$$/,singleRegex:/^(.*)\$$/,create:e=>({type:"suffix-exact",search(t){const s=t.endsWith(e);return{isMatch:s,score:s?0:1,indices:[t.length-e.length,t.length-1]}}})},{type:"inverse-exact",multiRegex:/^!"(.*)"$/,singleRegex:/^!(.*)$/,create:e=>({type:"inverse-exact",search(t){const s=t.indexOf(e)===-1;return{isMatch:s,score:s?0:1,indices:[0,t.length-1]}}})},{type:"fuzzy",multiRegex:/^"(.*)"$/,singleRegex:/^(.*)$/,create:(e,t={})=>{const s=new zo(e,{location:t.location??G.location,threshold:t.threshold??G.threshold,distance:t.distance??G.distance,includeMatches:t.includeMatches??G.includeMatches,findAllMatches:t.findAllMatches??G.findAllMatches,minMatchCharLength:t.minMatchCharLength??G.minMatchCharLength,isCaseSensitive:t.isCaseSensitive??G.isCaseSensitive,ignoreDiacritics:t.ignoreDiacritics??G.ignoreDiacritics,ignoreLocation:t.ignoreLocation??G.ignoreLocation});return{type:"fuzzy",search(r){return s.searchIn(r)}}}}],Qa=$r.length,hk="\0",fk="|";function pk(e){const t=[],s=e.length;let r=0;for(;r<s;){for(;r<s&&e[r]===" ";)r++;if(r>=s)break;let o=r;for(;o<s&&e[o]!==" "&&e[o]!=='"';)o++;if(o<s&&e[o]==='"'){for(o++;o<s;){if(e[o]==='"'){const a=o+1;if(a>=s||e[a]===" "){o++;break}if(e[a]==="$"&&(a+1>=s||e[a+1]===" ")){o+=2;break}}o++}t.push(e.substring(r,o)),r=o}else{for(;o<s&&e[o]!==" ";)o++;t.push(e.substring(r,o)),r=o}}return t}function Xa(e,t){const s=e.match(t);return s?s[1]:null}function gk(e,t={}){return e.replace(/\\\|/g,hk).split(fk).map(s=>{const r=pk(s.replace(/\u0000/g,"|").trim()).filter(a=>a&&!!a.trim()),o=[];for(let a=0,i=r.length;a<i;a+=1){const c=r[a];let d=!1,m=-1;for(;!d&&++m<Qa;){const u=$r[m],f=Xa(c,u.multiRegex);f&&(o.push(u.create(f,t)),d=!0)}if(!d)for(m=-1;++m<Qa;){const u=$r[m],f=Xa(c,u.singleRegex);if(f){o.push(u.create(f,t));break}}}return o})}var xk=class{constructor(e,{isCaseSensitive:t=G.isCaseSensitive,ignoreDiacritics:s=G.ignoreDiacritics,includeMatches:r=G.includeMatches,minMatchCharLength:o=G.minMatchCharLength,ignoreLocation:a=G.ignoreLocation,findAllMatches:i=G.findAllMatches,location:c=G.location,threshold:d=G.threshold,distance:m=G.distance}={}){this.query=null,this.options={isCaseSensitive:t,ignoreDiacritics:s,includeMatches:r,minMatchCharLength:o,findAllMatches:i,ignoreLocation:a,location:c,threshold:d,distance:m},e=t?e:e.toLowerCase(),e=s?jn(e):e,this.pattern=e,this.query=gk(this.pattern,this.options)}static condition(e,t){return t.useExtendedSearch}searchIn(e){const t=this.query;if(!t)return{isMatch:!1,score:1};const{includeMatches:s,isCaseSensitive:r,ignoreDiacritics:o}=this.options;e=r?e:e.toLowerCase(),e=o?jn(e):e;let a=0;const i=[];let c=0,d=!1;for(let m=0,u=t.length;m<u;m+=1){const f=t[m];i.length=0,a=0,d=!1;for(let p=0,h=f.length;p<h;p+=1){const g=f[p],{isMatch:x,indices:b,score:y}=g.search(e);if(x)a+=1,c+=y,mk(g.type)&&(d=!0),s&&(uk.has(g.type)?i.push(...b):i.push(b));else{c=0,a=0,i.length=0,d=!1;break}}if(a){const p={isMatch:!0,score:c/a};return d&&(p.hasInverse=!0),s&&(p.indices=Bo(i)),p}}return{isMatch:!1,score:1}}};const Br=[];function Uo(...e){Br.push(...e)}function fs(e,t){for(let s=0,r=Br.length;s<r;s+=1){const o=Br[s];if(o.condition(e,t))return new o(e,t)}return new zo(e,t)}const ps={AND:"$and",OR:"$or"},zr={PATH:"$path",PATTERN:"$val"},Ur=e=>!!(e[ps.AND]||e[ps.OR]),yk=e=>!!e[zr.PATH],bk=e=>!ht(e)&&Hd(e)&&!Ur(e),Ja=e=>({[ps.AND]:Object.keys(e).map(t=>({[t]:e[t]}))});function Vd(e,t,{auto:s=!0}={}){const r=o=>{if(Se(o)){const d={keyId:null,pattern:o};return s&&(d.searcher=fs(o,t)),d}const a=Object.keys(o),i=yk(o);if(!i&&a.length>1&&!Ur(o))return r(Ja(o));if(bk(o)){const d=i?o[zr.PATH]:a[0],m=i?o[zr.PATTERN]:o[d];if(!Se(m))throw new Error(G0(d));const u={keyId:ss(d),pattern:m};return s&&(u.searcher=fs(m,t)),u}const c={children:[],operator:a[0]};return a.forEach(d=>{const m=o[d];ht(m)&&m.forEach(u=>{c.children.push(r(u))})}),c};return Ur(e)||(e=Ja(e)),r(e)}function Kr(e,{ignoreFieldNorm:t=G.ignoreFieldNorm}){let s=1;return e.forEach(({key:r,norm:o,score:a})=>{const i=r?r.weight:null;s*=Math.pow(a===0&&i?Number.EPSILON:a,(i||1)*(t?1:o))}),s}function vk(e,{ignoreFieldNorm:t=G.ignoreFieldNorm}){e.forEach(s=>{s.score=Kr(s.matches,{ignoreFieldNorm:t})})}var wk=class{constructor(e,t){this.limit=e,this.heap=[],this.comparator=t}get size(){return this.heap.length}insert(e){this.size<this.limit?(this.heap.push(e),this._bubbleUp(this.size-1)):this.comparator(e,this.heap[0])<0&&(this.heap[0]=e,this._sinkDown(0))}extractSorted(){return this.heap.sort(this.comparator)}_bubbleUp(e){const t=this.heap;for(;e>0;){const s=e-1>>1;if(this.comparator(t[e],t[s])<=0)break;const r=t[e];t[e]=t[s],t[s]=r,e=s}}_sinkDown(e){const t=this.heap,s=t.length;let r=e;do{e=r;const o=2*e+1,a=2*e+2;if(o<s&&this.comparator(t[o],t[r])>0&&(r=o),a<s&&this.comparator(t[a],t[r])>0&&(r=a),r!==e){const i=t[e];t[e]=t[r],t[r]=i}}while(r!==e)}};function jk(e){const t=[];return e.matches.forEach(s=>{if(!De(s.indices)||!s.indices.length)return;const r={indices:s.indices,value:s.value};s.key&&(r.key=s.key.id),s.idx>-1&&(r.refIndex=s.idx),t.push(r)}),t}function kk(e,t,{includeMatches:s=G.includeMatches,includeScore:r=G.includeScore}={}){return e.map(o=>{const{idx:a}=o,i={item:t[a],refIndex:a};return s&&(i.matches=jk(o)),r&&(i.score=o.score),i})}const Sk=/[\p{L}\p{M}\p{N}_]+/gu,Za=new WeakSet;function Ck(e){Za.has(e)||(Za.add(e),console.warn(`[Fuse] tokenize regex ${e} lacks the global flag; only the first match per text will be returned. Add the 'g' flag.`))}function Nk(e){if(typeof e=="function"){let t=!1;return s=>{const r=e(s);if(!t&&(t=!0,!Array.isArray(r)||r.some(o=>typeof o!="string")))throw new Error(`[Fuse] tokenize function must return string[]; received ${Array.isArray(r)?"array containing non-strings":typeof r}.`);return r}}return e instanceof RegExp?(e.global||Ck(e),t=>t.match(e)||[]):t=>t.match(Sk)||[]}function Hr({isCaseSensitive:e=!1,ignoreDiacritics:t=!1,tokenize:s}={}){const r=Nk(s);return{tokenize(o){return e||(o=o.toLowerCase()),t&&(o=jn(o)),r(o)}}}var Ak=class{static condition(e,t){return t.useTokenSearch}constructor(e,t){this.options=t,this.analyzer=Hr({isCaseSensitive:t.isCaseSensitive,ignoreDiacritics:t.ignoreDiacritics,tokenize:t.tokenize});const s=this.analyzer.tokenize(e),{df:r,fieldCount:o}=t._invertedIndex;this.termSearchers=[],this.idfWeights=[];for(const a of s){this.termSearchers.push(new zo(a,{location:t.location,threshold:t.threshold,distance:t.distance,includeMatches:t.includeMatches,findAllMatches:t.findAllMatches,minMatchCharLength:t.minMatchCharLength,isCaseSensitive:t.isCaseSensitive,ignoreDiacritics:t.ignoreDiacritics,ignoreLocation:!0}));const i=r.get(a)||0,c=Math.log(1+(o-i+.5)/(i+.5));this.idfWeights.push(c)}this.combineAll=t.tokenMatch==="all",this.numTerms=this.termSearchers.length,this.useMask=this.numTerms<=31}searchIn(e){if(!this.termSearchers.length)return{isMatch:!1,score:1};const t=[];let s=0,r=0,o=0,a=0;const i=this.combineAll&&!this.useMask?new Set:null;for(let m=0;m<this.termSearchers.length;m++){const u=this.termSearchers[m].searchIn(e),f=this.idfWeights[m];r+=f,u.isMatch&&(o++,s+=f*(1-u.score),u.indices&&t.push(...u.indices),this.combineAll&&(this.useMask?a|=1<<m:i.add(m)))}if(o===0)return{isMatch:!1,score:1};const c=r>0?1-s/r:0,d={isMatch:!0,score:Math.max(.001,c)};return this.options.includeMatches&&t.length&&(d.indices=Bo(t)),this.combineAll&&(this.useMask?d.matchedMask=a:d.matchedTerms=i,d.termCount=this.numTerms),d}};function ar(e,t,s,r){const o=r.tokenize(t);if(!o.length)return;e.fieldCount++,e.docFieldCount.set(s,(e.docFieldCount.get(s)||0)+1);const a=new Set(o);let i=e.docTermFieldHits.get(s);i||(i=new Map,e.docTermFieldHits.set(s,i));for(const c of a)i.set(c,(i.get(c)||0)+1),e.df.set(c,(e.df.get(c)||0)+1)}function Qd(e,t,s,r){const{i:o,v:a,$:i}=t;if(a!==void 0){ar(e,a,o,r);return}if(i)for(let c=0;c<s;c++){const d=i[c];if(d)if(Array.isArray(d))for(const m of d)ar(e,m.v,o,r);else ar(e,d.v,o,r)}}function Ek(e,t,s){const r={fieldCount:0,df:new Map,docFieldCount:new Map,docTermFieldHits:new Map};for(const o of e)Qd(r,o,t,s);return r}function Ik(e,t,s,r){Qd(e,t,s,r)}function Tk(e,t){const s=e.docFieldCount.get(t);if(s===void 0)return;e.fieldCount-=s,e.docFieldCount.delete(t);const r=e.docTermFieldHits.get(t);if(r){for(const[o,a]of r){const i=(e.df.get(o)||0)-a;i<=0?e.df.delete(o):e.df.set(o,i)}e.docTermFieldHits.delete(t)}}function ei(e,t){if(t.length===0)return;const s=Array.from(new Set(t)).sort((c,d)=>c-d);for(const c of s)Tk(e,c);const r=c=>{let d=0,m=s.length;for(;d<m;){const u=d+m>>>1;s[u]<c?d=u+1:m=u}return c-d},o=s[0],a=new Map;for(const[c,d]of e.docFieldCount)a.set(c>o?r(c):c,d);e.docFieldCount=a;const i=new Map;for(const[c,d]of e.docTermFieldHits)i.set(c>o?r(c):c,d);e.docTermFieldHits=i}var ft=class{constructor(e,t,s){this.options={...G,...t},this.options.useExtendedSearch,this.options.useTokenSearch,this._keyStore=new J0(this.options.keys),this._docs=e,this._myIndex=null,this._invertedIndex=null,this.setCollection(e,s),this._lastQuery=null,this._lastSearcher=null}_getSearcher(e){if(this._lastQuery===e)return this._lastSearcher;const t=fs(e,this._invertedIndex?{...this.options,_invertedIndex:this._invertedIndex}:this.options);return this._lastQuery=e,this._lastSearcher=t,t}setCollection(e,t){if(this._docs=e,t&&!(t instanceof $o))throw new Error(W0);if(this._myIndex=t||Gd(this.options.keys,this._docs,{getFn:this.options.getFn,fieldNormWeight:this.options.fieldNormWeight}),this.options.useTokenSearch){const s=Hr({isCaseSensitive:this.options.isCaseSensitive,ignoreDiacritics:this.options.ignoreDiacritics,tokenize:this.options.tokenize});this._invertedIndex=Ek(this._myIndex.records,this._myIndex.keys.length,s)}this._invalidateSearcherCache()}add(e){if(!De(e))return;this._docs.push(e);const t=this._myIndex.add(e,this._docs.length-1);if(this._invertedIndex&&t){const s=Hr({isCaseSensitive:this.options.isCaseSensitive,ignoreDiacritics:this.options.ignoreDiacritics,tokenize:this.options.tokenize});Ik(this._invertedIndex,t,this._myIndex.keys.length,s)}this._invalidateSearcherCache()}remove(e=()=>!1){const t=[],s=[];for(let r=0,o=this._docs.length;r<o;r+=1)e(this._docs[r],r)&&(t.push(this._docs[r]),s.push(r));if(s.length){this._invertedIndex&&ei(this._invertedIndex,s);const r=new Set(s);this._docs=this._docs.filter((o,a)=>!r.has(a)),this._myIndex.removeAll(s),this._invalidateSearcherCache()}return t}removeAt(e){if(!Number.isInteger(e)||e<0||e>=this._docs.length)throw new Error(Fr);this._invertedIndex&&ei(this._invertedIndex,[e]);const t=this._docs.splice(e,1)[0];return this._myIndex.removeAt(e),this._invalidateSearcherCache(),t}_invalidateSearcherCache(){this._lastQuery=null,this._lastSearcher=null}getIndex(){return this._myIndex}_normalizedKeys(){return this._myIndex.keys.map(e=>this._keyStore.get(e.id)||e)}search(e,t){const{limit:s=-1}=t||{},{includeMatches:r,includeScore:o,shouldSort:a,sortFn:i,ignoreFieldNorm:c}=this.options;if(Se(e)&&!e.trim()){let p=this._docs.map((h,g)=>({item:h,refIndex:g}));return ns(s)&&s>-1&&(p=p.slice(0,s)),p}const d=a&&ns(s)&&s>0&&Se(e),m=i,u=(p,h)=>m(p,h)||p.idx-h.idx;let f;if(d){const p=new wk(s,u);Se(this._docs[0])?this._searchStringList(e,{heap:p,ignoreFieldNorm:c}):this._searchObjectList(e,{heap:p,ignoreFieldNorm:c}),f=p.extractSorted()}else f=Se(e)?Se(this._docs[0])?this._searchStringList(e):this._searchObjectList(e):this._searchLogical(e),vk(f,{ignoreFieldNorm:c}),a&&f.sort(Se(e)?u:m),ns(s)&&s>-1&&(f=f.slice(0,s));return kk(f,this._docs,{includeMatches:r,includeScore:o})}_searchStringList(e,{heap:t,ignoreFieldNorm:s}={}){const r=this._getSearcher(e),o=this.options.useTokenSearch&&this.options.tokenMatch==="all",{records:a}=this._myIndex,i=t?null:[];return a.forEach(({v:c,i:d,n:m})=>{if(!De(c))return;const u=r.searchIn(c);if(u.isMatch){const f={score:u.score,value:c,norm:m,indices:u.indices};o&&(f.matchedMask=u.matchedMask,f.matchedTerms=u.matchedTerms,f.termCount=u.termCount);const p=[f];if(!o||this._coversAllTokens(p)){const h={item:c,idx:d,matches:p};t?(h.score=Kr(h.matches,{ignoreFieldNorm:s}),t.insert(h)):i.push(h)}}}),i}_searchLogical(e){const t=Vd(e,this.options),s=this._normalizedKeys(),r=(c,d,m)=>{if(!("children"in c)){const{keyId:h,searcher:g}=c;let x;return h===null?(x=[],s.forEach((b,y)=>{x.push(...this._findMatches({key:b,value:d[y],searcher:g}))})):x=this._findMatches({key:this._keyStore.get(h),value:this._myIndex.getValueForItemAtKeyId(d,h),searcher:g}),x&&x.length?[{idx:m,item:d,matches:x}]:[]}const{children:u,operator:f}=c,p=[];for(let h=0,g=u.length;h<g;h+=1){const x=u[h],b=r(x,d,m);if(b.length)p.push(...b);else if(f===ps.AND)return[]}return p},o=this._myIndex.records,a=new Map,i=[];return o.forEach(({$:c,i:d})=>{if(De(c)){const m=r(t,c,d);m.length&&(a.has(d)||(a.set(d,{idx:d,item:c,matches:[]}),i.push(a.get(d))),m.forEach(({matches:u})=>{a.get(d).matches.push(...u)}))}}),i}_searchObjectList(e,{heap:t,ignoreFieldNorm:s}={}){const r=this._getSearcher(e),o=this.options.useTokenSearch&&this.options.tokenMatch==="all",{records:a}=this._myIndex,i=this._normalizedKeys(),c=t?null:[];return a.forEach(({$:d,i:m})=>{if(!De(d))return;const u=[];let f=!1,p=!1;if(i.forEach((h,g)=>{const x=this._findMatches({key:h,value:d[g],searcher:r});x.length?(u.push(...x),x[0].hasInverse&&(p=!0)):f=!0}),!(p&&f)&&u.length&&(!o||this._coversAllTokens(u))){const h={idx:m,item:d,matches:u};t?(h.score=Kr(h.matches,{ignoreFieldNorm:s}),t.insert(h)):c.push(h)}}),c}_findMatches({key:e,value:t,searcher:s}){if(!De(t))return[];const r=[];if(ht(t))t.forEach(({v:o,i:a,n:i})=>{if(!De(o))return;const c=s.searchIn(o);if(c.isMatch){const d={score:c.score,key:e,value:o,idx:a,norm:i,indices:c.indices,hasInverse:c.hasInverse};c.termCount!==void 0&&(d.matchedMask=c.matchedMask,d.matchedTerms=c.matchedTerms,d.termCount=c.termCount),r.push(d)}});else{const{v:o,n:a}=t,i=s.searchIn(o);if(i.isMatch){const c={score:i.score,key:e,value:o,norm:a,indices:i.indices,hasInverse:i.hasInverse};i.termCount!==void 0&&(c.matchedMask=i.matchedMask,c.matchedTerms=i.matchedTerms,c.termCount=i.termCount),r.push(c)}}return r}_coversAllTokens(e){const t=e.length?e[0].termCount:void 0;if(t===void 0)return!0;if(t<=31){let r=0;for(let o=0;o<e.length;o++)r|=e[o].matchedMask||0;return r===2**t-1}const s=new Set;for(let r=0;r<e.length;r++){const o=e[r].matchedTerms;if(o)for(const a of o)s.add(a)}return s.size===t}};ft.version="7.5.0";ft.createIndex=Gd;ft.parseIndex=ak;ft.config=G;ft.match=function(e,t,s){if(s&&s.useTokenSearch)throw new Error(X0);return fs(e,{...G,...s}).searchIn(t)};ft.parseQuery=Vd;Uo(xk);Uo(Ak);ft.use=function(...e){e.forEach(t=>Uo(t))};var Rk=ft;const Dk=.02,Xd=.5,Jd=.35,Zd=.15,Ok=1+Xd+Jd+Zd,Mk=4320*60*1e3,_k=3,Pk=1440*60*1e3,Lk=.15,Fk={lastUsedAt:null,useCount:0};function Ko(e){return!Number.isFinite(e)||e<0?0:e>1?1:e}function eu(e,t){return!Number.isFinite(e)||e<=0?1:Ko(Math.pow(2,-e/t))}function $k(e,t){const s=e.lastUsedAt===null?0:eu(t-e.lastUsedAt,Mk),r=Math.max(0,e.useCount),o=r===0?0:r/(r+_k);return Ko((s+o)/2)}function Bk(e,t){const s=e.distance===null?1:Ko(Math.pow(2,-Math.max(0,e.distance)/Dk)),r=$k(e.usage,t),o=e.lastActivityAt===null?0:eu(t-e.lastActivityAt,Pk),a=1+(e.waiting?Xd:0)+Jd*r+Zd*o;return{score:s*a/Ok,signals:{relevance:s,frecency:r,recency:o}}}function zk(e,t){return e.map(s=>{const{score:r,signals:o}=Bk(s,t);return{key:s.key,item:s.item,score:r,signals:o,demoted:s.demoted}}).sort((s,r)=>Number(s.demoted)-Number(r.demoted)||r.score-s.score||s.key.localeCompare(r.key))}function Uk(e,t){const s=[...e],r=e[0],o=e[1];return t.queried?!r||!o?{best:null,rest:s}:r.demoted||r.score<=0?{best:null,rest:s}:(r.score-o.score)/r.score<Lk?{best:null,rest:s}:{best:r,rest:s.slice(1)}:{best:null,rest:s}}function Kk(e,t){const s=[];for(const r of e){const o=t(r),a=s[s.length-1];a&&a.label===o?a.rows.push(r):s.push({label:o,rows:[r]})}return s}const Hk={keys:["name","keywords"],includeMatches:!0,includeScore:!0,threshold:.3,distance:100,minMatchCharLength:1};function qk(e,t,s){const{usage:r,now:o,scope:a}=s,{prefix:i,term:c}=l.useMemo(()=>a===null?Wk(t):{prefix:null,term:t},[t,a]),d=l.useMemo(()=>{if(a===null)return e;const x=Ud(a);return e.filter(b=>b.scopes.includes(x))},[e,a]),m=l.useMemo(()=>i==="#"?d.filter(x=>x.type==="room"):i==="@"?d.filter(x=>x.type==="agent"||x.type==="dm"):i===">"?d.filter(x=>x.type==="command"):d,[d,i]),u=l.useMemo(()=>new Rk(m,Hk),[m]),f=l.useMemo(()=>{const x=(b,y,S)=>{const j=b.lastActivityAt===null?NaN:Date.parse(b.lastActivityAt);return{key:`${b.type}:${b.id}`,item:{item:b,matches:y},distance:S,usage:(b.usageKey===null?void 0:r[b.usageKey])??Fk,lastActivityAt:Number.isNaN(j)?null:j,waiting:b.waiting,demoted:b.demoted}};return c?u.search(c).map(b=>x(b.item,b.matches,b.score??0)):m.map(b=>x(b,void 0,null))},[u,c,m,r]),p=l.useMemo(()=>zk(f,o),[f,o]),{best:h,rest:g}=l.useMemo(()=>Uk(p,{queried:c.length>0}),[p,c]);return{bestMatch:h,rows:g,prefix:i,term:c}}function Wk(e){return e.startsWith("#")?{prefix:"#",term:e.slice(1)}:e.startsWith("@")?{prefix:"@",term:e.slice(1)}:e.startsWith(">")?{prefix:">",term:e.slice(1)}:{prefix:null,term:e}}function Gk(){const e=uo(),t=wh();return l.useMemo(()=>{const s={};for(const[r,o]of Object.entries(e)){const a=Date.parse(o);s[r]={lastUsedAt:Number.isNaN(a)?null:a,useCount:t[r]??0}}return s},[e,t])}const Yk=/^\/([A-Za-z0-9][\w.-]*(?::[\w.-]+)*)(?=\s|$)\s*/;function Vk(e,t){const s=t.trim().replace(Yk,"").trim();return s?`${e} ${s}`:`${e} `}function Qk(e){const[t,s]=Mn(),{setTheme:r,theme:o}=qi(),a=Te(),i=ce(),c=ie(),d=cn(k=>k.openFeedback),m=mo(),{url:u}=Bc(),{copy:f}=Ts({toastOnSettle:!0}),{open:p}=qe(),{open:h}=lo(),g=As(),x=U(k=>k.setPickerOpen),b=U(k=>k.setCanvasOpen),y=U(k=>k.setRightPanelOpen),S=U(k=>k.setActiveRightPanelTab),j=l.useCallback(k=>{cs.getState().recordOpened("agent",k)},[]),C=l.useCallback(k=>{s(k.projectPath,{onOpened:()=>{j(k.projectPath)}}),e()},[j,s,e]),v=Hc(),N=l.useCallback(k=>{cs.getState().recordOpened("room",k.id),e(),a({...pe.channels(),search:{id:k.id}})},[e,a]),I=l.useCallback((k,O)=>{O&&j(O),e(),a(ut({session:k,dir:O??void 0}))},[e,a,j]),D=l.useCallback(k=>{e(),jh({queryClient:i,transport:c},t).then(async O=>{if(O===null){ea(t);return}t&&j(t);const R=kh.getState(),M=R.getSession(O.sessionId).input;R.updateSession(O.sessionId,{input:Vk(k,M)}),a(O.isNew?await Sh(c,{session:O.sessionId,dir:t??void 0}):ut({session:O.sessionId}))}).catch(O=>{Qi(c,O),ea(t)})},[e,a,i,c,t,j]),T=l.useCallback(k=>{e(),a({href:k})},[e,a]),A=l.useCallback(k=>{Ch(k)||console.warn(`[command-palette] no handler registered for action "${k}"`)},[]),w=l.useCallback(k=>{switch(e(),k){case"openTasks":h();return;case"openRelay":g();return;case"openMesh":a({...pe.team()});return;case"openSettings":p();return;case"discoverAgents":xn.getState().open();return;case"browseFilesystem":x(!0);return;case"openAgentProfile":S(Ah),y(!0);return;default:{const O=Nh(k);if(O){p(O);return}A(k);return}}},[e,a,h,g,p,x,S,y,A]),E=l.useCallback(k=>{switch(e(),k){case"navigateDashboard":a({...pe.home()});return;case"newSession":v();return;case"openDevPlayground":os("/dev");return;case"toggleDevtools":U.getState().toggleDevtools();return;case"toggleRouterDevtools":U.getState().toggleRouterDevtools();return;case"createAgent":Es.getState().open();return;case"switchShape":U.getState().setShapeSwitcherOpen(!0);return;case"openControlCenter":U.getState().setControlCenterOpen(!0);return;case"toggleCanvas":b(!U.getState().canvasOpen);return;case"toggleTheme":r(o==="dark"?"light":"dark");return;case"openFeedback":d();return;case"openYourReports":a({...pe.feedbackRequests()});return;case"openTasks":h();return;case"openRelay":g();return;case"openMesh":a({...pe.team()});return;case"discoverAgents":xn.getState().open();return;case"openSettings":p();return;case"browseFilesystem":x(!0);return;case at.copyLink:u&&f(u);return;case at.showQr:U.getState().setRemoteAccessBeaconOpen(!0);return;case at.turnOn:m.start();return;case at.turnOff:m.stop();return;default:A(k);return}},[e,a,A,r,o,b,x,h,g,p,d,f,m,u,v]);return{handleAgentSelect:C,startNewSession:v,handleFeatureAction:w,handleQuickAction:E,handleRoomSelect:N,handleSessionSelect:I,handleCommandSelect:D,handlePageSelect:T,recordAgentOpened:j,setDir:s,selectedCwd:t}}const ti='[cmdk-item=""]:not([aria-disabled="true"])',Xk=new Set(["ArrowUp","ArrowDown","Home","End"]),Jk=new Set(["n","p","j","k"]);function Zk({rootRef:e,activePage:t,onPin:s,resetKey:r}){const o=l.useRef(!1);l.useLayoutEffect(()=>{o.current=!1},[r]),l.useLayoutEffect(()=>{var m;if(o.current)return;const c=(m=e.current)==null?void 0:m.querySelector(`[data-palette-page="${CSS.escape(t)}"] ${ti}`);if(!c||c.getAttribute("aria-selected")==="true")return;const d=c.getAttribute("data-value");d&&s(d)});const a=l.useCallback(c=>{c.nativeEvent.isComposing||c.keyCode===229||(Xk.has(c.key)||c.ctrlKey&&Jk.has(c.key))&&(o.current=!0)},[]),i=l.useCallback(c=>{c.target instanceof Element&&c.target.closest(ti)&&(o.current=!0)},[]);return{onKeyDown:a,onPointerMove:i}}function eS({scope:e,className:t}){return n.jsx("span",{"data-testid":"palette-scope-chip",className:B("bg-accent text-accent-foreground inline-flex shrink-0 items-center gap-1.5 rounded-md px-1.5 py-0.5 text-xs font-medium",t),children:e.kind==="agent"?n.jsxs(n.Fragment,{children:[n.jsx(ho,{...Ns(e.agent),size:"xs",badge:null}),Ce(e.agent)]}):n.jsxs(n.Fragment,{children:[n.jsx(qc,{room:e.room,participants:e.room.participants,size:"xs"}),n.jsx(Wc,{room:e.room})]})})}function tS(e){const t=e.trim();return t.length===0?null:t}function tu(e,t){const s=l.useDeferredValue(e),{sessions:r}=Eh(t),{data:o}=Ix(s||null),a=l.useMemo(()=>r.slice(0,3).map(i=>({id:i.id,title:io(i.title),lastActive:i.updatedAt})),[r]);return{sessionCount:r.length,recentSessions:a,health:o??null}}function nS({agent:e}){const{sessionCount:t,recentSessions:s,health:r}=tu(e.id,e.projectPath),{color:o,emoji:a}=Ns(e);return n.jsx(W.div,{initial:{opacity:0,width:0},animate:{opacity:1,width:240},exit:{opacity:0,width:0},transition:{duration:.2,ease:[0,0,.2,1]},className:"flex-shrink-0 overflow-hidden border-l will-change-[width]",children:n.jsxs("div",{className:"w-[240px] space-y-3 p-4",children:[n.jsxs("div",{className:"flex items-center gap-2",children:[n.jsx(ho,{color:o,emoji:a,size:"sm",className:"shrink-0"}),n.jsx("span",{className:"truncate text-sm font-semibold",children:Ce(e)})]}),n.jsx("p",{className:"text-muted-foreground truncate text-xs",children:Gc(e.projectPath)}),n.jsxs("div",{className:"flex items-center gap-3 text-xs",children:[r&&n.jsx(pn,{size:"xs",variant:r.status==="active"?"default":"secondary",children:r.status}),n.jsxs("span",{className:"text-muted-foreground",children:[t," ",t===1?"chat":"chats"]})]}),s.length>0&&n.jsxs("div",{className:"space-y-1 pt-1",children:[n.jsx("p",{className:"text-muted-foreground text-3xs font-medium tracking-wider uppercase",children:"Recent"}),n.jsx("ul",{className:"space-y-0.5",children:s.map(i=>n.jsx("li",{className:"text-muted-foreground truncate text-xs",children:i.title},i.id))})]})]})})}function sS({agent:e,onOpenHere:t,onOpenNewTab:s,onOpenNewWindow:r,onNewSession:o,onBrowseSessions:a,onEditSettings:i,recentSessions:c,onSelectSession:d}){const m=jt?"⌘":"Ctrl+";return n.jsxs(n.Fragment,{children:[n.jsxs(ze,{heading:`${Ce(e)} actions`,children:[n.jsxs(fe,{value:"open-here",onSelect:t,children:[n.jsx(Ss,{className:"size-4"}),n.jsx("span",{children:"Open here"}),n.jsx(ta,{children:"Enter"})]}),n.jsxs(fe,{value:"open-new-tab",onSelect:s,children:[n.jsx(Dl,{className:"size-4"}),n.jsx("span",{children:"Open in a new tab"}),n.jsxs(ta,{children:[m,"Enter"]})]}),r&&n.jsxs(fe,{value:"open-new-window",onSelect:r,children:[n.jsx(ab,{className:"size-4"}),n.jsx("span",{children:"Open in a new window"})]}),n.jsxs(fe,{value:"new-session",onSelect:o,children:[n.jsx(Ht,{className:"size-4"}),n.jsx("span",{children:"New chat"})]}),a&&n.jsxs(fe,{value:"browse-sessions",onSelect:a,children:[n.jsx(fy,{className:"size-4"}),n.jsx("span",{children:"Browse chats…"})]}),n.jsxs(fe,{value:"edit-settings",onSelect:i,children:[n.jsx(Ds,{className:"size-4"}),n.jsxs("span",{children:["Edit ",Ce(e)," settings"]})]})]}),c.length>0&&n.jsx(ze,{heading:"Recent chats",children:c.map(u=>n.jsxs(fe,{value:u.id,onSelect:()=>d(u.id),children:[n.jsx(Kt,{className:"size-4"}),n.jsx("span",{className:"truncate",children:u.title}),n.jsx("span",{className:"text-muted-foreground ml-auto text-xs",children:rS(u.lastActive)})]},u.id))})]})}function rS(e){const t=Date.now(),s=new Date(e).getTime(),r=t-s,o=Math.floor(r/6e4);if(o<1)return"just now";if(o<60)return`${o}m ago`;const a=Math.floor(o/60);if(a<24)return`${a}h ago`;const i=Math.floor(a/24);return i<7?`${i}d ago`:`${Math.floor(i/7)}w ago`}const st="bg-muted rounded px-1 py-0.5 font-mono text-3xs";function oS({page:e,hasAgentSelected:t,canScope:s,isScoped:r}){const o=jt?"⌘":"Ctrl";return n.jsxs("div",{className:"text-muted-foreground flex flex-shrink-0 items-center gap-3 border-t px-3 py-1.5 text-xs",children:[n.jsxs("span",{className:"inline-flex items-center gap-1",children:[n.jsx("kbd",{className:st,children:"↑↓"}),"Navigate"]}),!e&&t&&n.jsxs("span",{className:"inline-flex items-center gap-1",children:[n.jsx("kbd",{className:st,children:"Enter"}),"Open"]}),(!e&&t||e==="agent-actions")&&n.jsxs("span",{className:"inline-flex items-center gap-1",children:[n.jsxs("kbd",{className:st,children:[o,"Enter"]}),"New tab"]}),e==="agent-actions"&&n.jsxs("span",{className:"inline-flex items-center gap-1",children:[n.jsx("kbd",{className:st,children:"Enter"}),"Select"]}),e&&n.jsxs("span",{className:"inline-flex items-center gap-1",children:[n.jsx("kbd",{className:st,children:"Backspace"}),"Back"]}),s&&n.jsxs("span",{className:"inline-flex items-center gap-1",children:[n.jsx("kbd",{className:st,children:"Tab"}),"Search inside"]}),r&&n.jsxs("span",{className:"inline-flex items-center gap-1",children:[n.jsx("kbd",{className:st,children:"Backspace"}),"Clear scope, at the start"]}),n.jsxs("span",{className:"ml-auto inline-flex items-center gap-1",children:[n.jsx("kbd",{className:st,children:"esc"}),"Close"]})]})}const aS=[{key:"#",means:"channels"},{key:"@",means:"agents and DMs"},{key:">",means:"commands"}];function nu({className:e}){return n.jsx("div",{className:B("text-muted-foreground flex flex-wrap items-center gap-x-3 gap-y-1 px-3 py-2 text-xs",e),children:aS.map(({key:t,means:s})=>n.jsxs("span",{className:"inline-flex items-center gap-1",children:[n.jsx("kbd",{className:"bg-muted text-3xs rounded px-1 py-0.5 font-mono",children:t}),s]},t))})}function iS({text:e,indices:t,className:s}){if(!t||t.length===0)return n.jsx("span",{className:s,children:e});const r=[];let o=0;for(let a=0;a<t.length;a++){const[i,c]=t[a],d=c+1;o<i&&r.push(n.jsx("span",{children:e.slice(o,i)},`p-${a}`)),r.push(n.jsx("mark",{className:"text-foreground bg-transparent font-semibold",children:e.slice(i,d)},`m-${a}`)),o=d}return o<e.length&&r.push(n.jsx("span",{children:e.slice(o)},"tail")),n.jsx("span",{className:s,children:r})}function su({agent:e,isActive:t,onSelect:s,nameIndices:r,isSelected:o}){return n.jsxs(fe,{value:Ce(e),keywords:[e.name,e.projectPath,e.id],onSelect:()=>s(),className:"relative py-2",forceMount:t?!0:void 0,children:[o&&n.jsx(W.div,{layoutId:"cmd-palette-selection",className:"bg-accent absolute inset-0 rounded-sm",transition:{duration:.15,ease:[0,0,.2,1]}}),n.jsx("div",{className:"relative z-10 w-full",children:n.jsx(Ih,{agent:e,name:r?n.jsx(iS,{text:Ce(e),indices:r,className:"truncate text-sm font-semibold"}):n.jsx("span",{className:"truncate text-sm font-semibold",children:Ce(e)}),secondary:Gc(e.projectPath),selected:t})})]})}function ru(){return n.jsx("span",{"data-testid":"palette-archived-mark",className:"text-muted-foreground border-border text-3xs shrink-0 rounded-full border px-1.5 py-0.5 font-medium",children:"Archived"})}function ou({room:e,onSelect:t}){const s=_t(e);return n.jsxs(fe,{value:e.id,keywords:Pr(e),onSelect:t,className:"flex items-center gap-2 py-2",children:[n.jsx(qc,{room:e,participants:e.participants,className:"shrink-0"}),e.kind==="dm"?n.jsxs("span",{className:"min-w-0 flex-1 truncate text-sm",children:["Open DM with ",e.title]}):n.jsx(Wc,{room:e,className:"min-w-0 flex-1 text-sm"}),e.archived&&n.jsx(ru,{}),s&&n.jsx("span",{className:"bg-brand/15 text-brand text-3xs shrink-0 rounded-full px-1.5 py-0.5 font-medium tabular-nums","aria-label":`${e.unreadCount} unread`,children:e.unreadCount})]})}const cS=6e4;function lS({lastActivityAt:e}){const t=fo(cS),s=l.useMemo(()=>Number.isNaN(Date.parse(e))?null:po(e),[e,t]);return s===null?null:n.jsx("span",{className:"text-muted-foreground text-2xs font-normal",children:s})}function qr({item:e,live:t,isSelected:s=!1,onSelect:r}){const o=ro(e.agent,e.cwd??e.id),a=Th(e.who,e.title),i=(t==null?void 0:t.verb)??null;return n.jsxs(fe,{value:e.id,keywords:Kd(e),onSelect:r,title:a,className:B("flex gap-2 py-1.5",i!==null?"items-start":"items-center"),children:[n.jsx(ho,{color:o.color,emoji:o.emoji,size:"xs",className:B("shrink-0",i!==null&&"mt-px")}),n.jsxs("span",{className:"flex min-w-0 flex-1 flex-col",children:[n.jsxs("span",{"data-slot":"palette-session-line",className:"flex w-full items-center gap-1.5 text-sm",children:[e.who?n.jsxs(n.Fragment,{children:[n.jsx("span",{"data-slot":"palette-session-who",className:Rh,children:e.who}),n.jsx("span",{"aria-hidden":!0,className:"text-muted-foreground/60 flex-none",children:Dh})]}):null,n.jsx("span",{"data-slot":"palette-session-title",className:Oh,children:e.title}),n.jsxs("span",{className:B("flex items-center gap-1.5",_h),children:[e.archived&&t===void 0&&n.jsx(ru,{}),n.jsx(Mh,{origin:e.origin,label:e.originLabel,className:"text-muted-foreground"}),n.jsx(lS,{lastActivityAt:e.lastActivityAt}),s&&n.jsx(dS,{canStartNewSession:e.cwd!==null})]})]}),i!==null&&n.jsxs("span",{className:"text-muted-foreground text-2xs flex items-center gap-1.5 font-normal",children:[t!==void 0&&n.jsx("span",{"aria-hidden":!0,className:B("size-1.5 shrink-0 rounded-full",wc(t.signal))}),i]})]})]})}function dS({canStartNewSession:e}){return n.jsxs("span",{"aria-hidden":!0,className:"text-muted-foreground flex items-center gap-1",children:[n.jsx("kbd",{className:"bg-accent text-3xs rounded px-1 py-0.5 font-mono",children:"↵"}),e&&n.jsx("kbd",{className:"bg-accent text-3xs rounded px-1 py-0.5 font-mono",children:"⌘↵"})]})}const uS={session:"Conversations",agent:"Agents",room:"Channels",dm:"Direct messages",command:"Commands",feature:"Actions","quick-action":"Actions",page:"Add-ons"},mS="Best match",Wr={Clock:lc,Radio:Ol,Globe:Vc,Settings:Ds,Plus:Ht,Search:gn,FolderOpen:Ss,Moon:Ux,Shapes:Ph,MessageSquarePlus:Yc,Inbox:fc},gt=[0,0,.2,1],hS=[.4,0,1,1],au={hidden:{opacity:0,scale:.96,y:-8},visible:{opacity:1,scale:1,y:0,transition:{duration:.2,ease:gt}},exit:{opacity:0,scale:.96,y:-8,transition:{duration:.12,ease:hS}}},fS={hidden:{},visible:{transition:{staggerChildren:.035,delayChildren:.04}}},mn={hidden:{opacity:0,y:-4},visible:{opacity:1,y:0,transition:{duration:.15,ease:gt}}},ir=8;function pS({continueRows:e,recent:t,newActions:s,selectedCwd:r,selectedValue:o,onSessionSelect:a,onRoomSelect:i,onGoToAgentActions:c,onQuickAction:d}){return n.jsxs(n.Fragment,{children:[e.length>0&&n.jsx(ze,{heading:"Continue",children:e.map((m,u)=>n.jsx(W.div,{variants:u<ir?mn:void 0,children:n.jsx(qr,{item:m.session,live:{verb:m.verb,signal:m.signal},isSelected:o===m.session.id,onSelect:()=>a(m.session)})},m.session.id))}),t.length>0&&n.jsx(ze,{heading:"Recent",children:t.map((m,u)=>n.jsxs(W.div,{variants:u<ir?mn:void 0,children:[m.kind==="session"&&n.jsx(qr,{item:m.session,isSelected:o===m.session.id,onSelect:()=>a(m.session)}),m.kind==="room"&&n.jsx(ou,{room:m.room,onSelect:()=>i(m.room)}),m.kind==="agent"&&n.jsx(su,{agent:m.agent,isActive:m.agent.projectPath===r,isSelected:o===Ce(m.agent),onSelect:()=>c(m.agent)})]},m.key))}),s.length>0&&n.jsxs(n.Fragment,{children:[(e.length>0||t.length>0)&&n.jsx(Qc,{}),n.jsx(ze,{heading:"New",children:s.map((m,u)=>{const f=Wr[m.icon];return n.jsx(W.div,{variants:u<ir?mn:void 0,children:n.jsx(fe,{value:m.label,onSelect:()=>d(m.action),children:n.jsxs(W.div,{whileHover:{x:2},transition:{duration:.1,ease:gt},className:"flex w-full items-center gap-2",children:[f&&n.jsx(f,{className:"size-4"}),n.jsx("span",{children:m.label})]})})},m.id)})})]})]})}function ni({row:e,selectedCwd:t,selectedValue:s,onFeatureAction:r,onQuickAction:o,onGoToAgentActions:a,onRoomSelect:i,onSessionSelect:c,onCommandSelect:d,onPageSelect:m}){var p;const{item:u,matches:f}=e.item;switch(u.type){case"session":return n.jsx(qr,{item:u.data,isSelected:s===u.data.id,onSelect:()=>c(u.data)});case"agent":return n.jsx(su,{agent:u.data,isActive:u.data.projectPath===t,isSelected:s===Ce(u.data),onSelect:()=>a(u.data),nameIndices:(p=f==null?void 0:f.find(h=>h.key==="name"))==null?void 0:p.indices});case"room":case"dm":return n.jsx(ou,{room:u.data,onSelect:()=>i(u.data)});case"command":return n.jsx(fe,{value:u.data.name,onSelect:()=>d(u.data.name),children:n.jsxs(W.div,{whileHover:{x:2},transition:{duration:.1,ease:gt},className:"flex w-full items-center gap-2",children:[n.jsx("span",{className:"font-mono text-xs",children:u.data.name}),u.data.description&&n.jsx("span",{className:"text-muted-foreground ml-2 text-xs",children:u.data.description})]})});case"feature":{const h=Wr[u.data.icon];return n.jsx(fe,{value:u.data.label,onSelect:()=>r(u.data.action),children:n.jsxs(W.div,{whileHover:{x:2},transition:{duration:.1,ease:gt},className:"flex w-full items-center gap-2",children:[h&&n.jsx(h,{className:"size-4"}),n.jsx("span",{children:u.data.label}),u.data.shortcut&&n.jsx("span",{className:"text-muted-foreground ml-auto text-xs",children:u.data.shortcut})]})})}case"page":return n.jsx(fe,{value:u.data.id,onSelect:()=>m(u.data.href),children:n.jsxs(W.div,{whileHover:{x:2},transition:{duration:.1,ease:gt},className:"flex w-full items-center gap-2",children:[n.jsx(On,{icon:u.data.icon,className:"size-4"}),n.jsx("span",{children:u.data.label})]})});case"quick-action":{const h=Wr[u.data.icon];return n.jsx(fe,{value:u.data.label,onSelect:()=>o(u.data.action),children:n.jsxs(W.div,{whileHover:{x:2},transition:{duration:.1,ease:gt},className:"flex w-full items-center gap-2",children:[h&&n.jsx(h,{className:"size-4"}),n.jsx("span",{children:u.data.label})]})})}}}function gS({term:e,isScoped:t=!1,onSelect:s}){return n.jsxs(fe,{value:"search-messages-handoff",onSelect:s,className:"flex items-center gap-2 py-2",children:[n.jsx(Kt,{className:"text-muted-foreground size-4 shrink-0"}),n.jsxs("span",{className:"min-w-0 flex-1 truncate text-sm",children:["Search ",t?"all messages":"messages"," for"," ",n.jsxs("mark",{className:"text-foreground bg-transparent font-semibold",children:["“",e,"”"]}),"…"]}),n.jsx("kbd",{className:"bg-muted text-muted-foreground text-3xs shrink-0 rounded px-1 py-0.5 font-mono",children:jt?"⌘⇧F":"Ctrl⇧F"})]})}const si=8;function xS({staggerKey:e,isZeroQuery:t,isRoomMode:s,scope:r,hasQuery:o,selectedCwd:a,selectedValue:i,continueRows:c,recent:d,newActions:m,bestMatch:u,rows:f,rooms:p,searchHandoff:h,onFeatureAction:g,onQuickAction:x,onGoToAgentActions:b,onRoomSelect:y,onSessionSelect:S,onCommandSelect:j,onPageSelect:C}){const v=s?p.isError?"Couldn’t load your channels.":p.isLoading?"Loading channels…":p.channels.length===0?"No channels yet.":null:null,N=Kk(f,A=>r?Ha(r):uS[A.item.item.type]),I=r&&!o&&f.length===0&&!u?k0(r):null,D=new Set(f.slice(0,u?si-1:si).map(A=>A.key)),T={selectedCwd:a,selectedValue:i,onFeatureAction:g,onQuickAction:x,onGoToAgentActions:b,onRoomSelect:y,onSessionSelect:S,onCommandSelect:j,onPageSelect:C};return n.jsxs(W.div,{variants:fS,initial:"hidden",animate:"visible",children:[t&&n.jsx(pS,{continueRows:c,recent:d,newActions:m,selectedCwd:a,selectedValue:i,onSessionSelect:S,onRoomSelect:y,onGoToAgentActions:b,onQuickAction:x}),!t&&u&&n.jsx(ze,{heading:mS,children:n.jsx(W.div,{variants:mn,children:n.jsx(ni,{row:u,...T})})}),!t&&N.map((A,w)=>n.jsx(ze,{heading:A.label,children:A.rows.map(E=>n.jsx(W.div,{variants:D.has(E.key)?mn:void 0,children:n.jsx(ni,{row:E,...T})},E.key))},`${A.label}-${w}`)),I&&n.jsx(ze,{heading:r?Ha(r):void 0,children:n.jsx(fe,{disabled:!0,value:"scope-status",className:"text-muted-foreground text-sm",children:I})}),v&&n.jsx(ze,{heading:"Channels",children:n.jsx(fe,{disabled:!0,value:"rooms-status",className:"text-muted-foreground text-sm",children:v})}),h&&n.jsx(ze,{children:n.jsx(gS,{term:h.term,isScoped:h.isScoped,onSelect:h.onSelect})}),t&&n.jsxs(n.Fragment,{children:[n.jsx(Qc,{}),n.jsx(nu,{})]})]},e)}function yS(e,t){const s=Kx(),{dismissedIds:r}=Il(),o=U(a=>a.promoEnabled);return l.useMemo(()=>o?Hx(qx.filter(a=>a.placements.includes(e)),s,r,t):[],[e,t,s,r,o])}const bS={initial:{opacity:0,y:12},animate:{opacity:1,y:0},exit:{opacity:0,scale:.95,transition:{duration:.15}}};function vS({promo:e}){const{activate:t,dialog:s}=Wx(e),{dismissPromo:r}=Il(),o=Ne(),a=e.content.icon;return n.jsxs(W.div,{variants:o?void 0:bS,layout:!o,className:"group/promo relative",children:[n.jsxs("button",{"data-slot":"promo-card-compact",onClick:t,className:"bg-sidebar-accent/40 text-sidebar-foreground/70 hover:bg-sidebar-accent/70 hover:text-sidebar-foreground focus-visible:ring-sidebar-ring flex w-full items-center gap-2 rounded-md py-1.5 pr-7 pl-2 text-left outline-hidden transition-colors duration-150 focus-visible:ring-2",children:[n.jsx("span",{className:"flex size-[18px] shrink-0 items-center justify-center",children:n.jsx(a,{className:"size-4"})}),n.jsxs("span",{className:"min-w-0 flex-1",children:[n.jsx("span",{className:"text-sidebar-foreground/90 block truncate text-[13px] font-medium",children:e.content.title}),n.jsx("span",{className:"text-2xs block truncate",children:e.content.shortDescription})]}),n.jsx(Ec,{className:"size-3.5 shrink-0 opacity-60"})]}),n.jsx("button",{type:"button",onClick:()=>r(e.id),"aria-label":"Dismiss",className:"text-sidebar-foreground/40 hover:text-sidebar-foreground focus-ring absolute top-1/2 right-1.5 -translate-y-1/2 rounded-md p-0.5 opacity-70 transition-[color,opacity] duration-150 group-hover/promo:opacity-100",children:n.jsx(Le,{className:"size-3.5"})}),s]})}const wS=1;function jS(e){const[t]=yS(e,wS);return l.useMemo(()=>t===void 0?{id:"promo",show:!1,render:()=>null}:{id:`promo:${t.id}`,show:!0,render:()=>n.jsx(vS,{promo:t})},[t])}const kS=new Set(["downloading","downloaded","install-failed"]);function ri(e,t){return(e==null?void 0:e.state)==="install-failed"?t.state==="downloaded"&&go(t.version,e.version)?t:e:kS.has(t.state)||t.state==="error"?t:e&&(e.state==="downloading"||e.state==="downloaded")?e:t}function SS(){var o;const e=typeof window<"u"&&!!((o=window.electronAPI)!=null&&o.onUpdateStatus),[t,s]=l.useState(null);l.useEffect(()=>{var c;const a=window.electronAPI;if(!(a!=null&&a.onUpdateStatus))return;const i=a.onUpdateStatus(d=>{s(m=>ri(m,d))});return(c=a.getUpdateStatus)==null||c.call(a).then(d=>{d&&s(m=>ri(m,d))}),i},[]);const r=l.useCallback(()=>{var a,i;(i=(a=window.electronAPI)==null?void 0:a.restartToUpdate)==null||i.call(a)},[]);return{isDesktop:e,status:t,restart:r}}const CS={darwin:"https://dorkos.ai/download/mac",win32:"https://dorkos.ai/download/windows"},NS="https://dorkos.ai";function AS(){var t;const e=typeof window>"u"||(t=window.electronAPI)==null?void 0:t.platform;dt((e&&CS[e])??NS)}function ES(){const{data:e}=_e(),{isDesktop:t,status:s,restart:r}=SS(),o=Cn(),a=e==null?void 0:e.version,i=(e==null?void 0:e.latestVersion)??null,c=l.useMemo(()=>(e==null?void 0:e.dismissedUpgradeVersions)??[],[e==null?void 0:e.dismissedUpgradeVersions]),d=l.useCallback(m=>{o.mutate({ui:{dismissedUpgradeVersions:[...c,m]}})},[c,o]);return l.useMemo(()=>t?(s==null?void 0:s.state)==="install-failed"?{kind:"desktop-install-failed",downloadFresh:AS}:(s==null?void 0:s.state)!=="downloaded"?{kind:"none"}:{kind:"desktop-restart",restart:r}:i!==null&&a!==void 0&&go(i,a)&&!c.includes(i)?{kind:"command",latestVersion:i,dismiss:()=>d(i)}:{kind:"none"},[t,s,r,i,a,c,d])}const IS="npm update -g dorkos",TS="The update couldn’t install itself. Download a fresh copy. Your settings and agents stay put.",cr="focus-ring inline-flex items-center gap-1 rounded-full bg-amber-500/15 px-2 py-0.5 text-2xs font-medium text-amber-700 transition-colors duration-150 hover:bg-amber-500/25 dark:text-amber-300";function RS(e,t,s){return t?"Command copied":s?"Couldn’t copy":`Update ready: v${e}`}function DS({update:e}){const{copied:t,failed:s,copy:r}=Ts(),o=l.useCallback(()=>{r(IS)},[r]);return e.kind==="none"?null:e.kind==="desktop-restart"?n.jsx("div",{className:"flex items-center px-0.5",children:n.jsxs("button",{type:"button",onClick:e.restart,"aria-label":"Restart to install the update",className:cr,children:[n.jsx(Jx,{className:"size-3"}),"Restart to update"]})}):e.kind==="desktop-install-failed"?n.jsxs("div",{role:"group","aria-label":"Update didn’t install",className:"flex flex-col gap-1.5 px-0.5",children:[n.jsx("p",{className:"text-sidebar-foreground/70 text-2xs leading-snug",children:TS}),n.jsxs("button",{type:"button",onClick:e.downloadFresh,"aria-label":"Download a fresh copy of DorkOS",className:B(cr,"self-start"),children:[n.jsx(Lh,{className:"size-3"}),"Download fresh copy"]})]}):n.jsxs("div",{className:"flex items-center gap-1 px-0.5",children:[n.jsxs("button",{type:"button",onClick:o,"aria-label":`Copy the update command for v${e.latestVersion}`,className:cr,children:[t?n.jsx(Ft,{className:"size-3"}):n.jsx(Xc,{className:"size-3"}),RS(e.latestVersion,t,s)]}),n.jsx("button",{type:"button",onClick:e.dismiss,"aria-label":"Dismiss update notification",className:"text-sidebar-foreground/50 hover:text-sidebar-foreground focus-ring rounded-md p-0.5 transition-colors duration-150",children:n.jsx(Le,{className:"size-3"})})]})}function iu(){const{shouldShowGettingStarted:e,dismiss:t}=Nt(),s=ES(),r=Pv(),o=dw(),a=jS("dashboard-sidebar"),i=_n(),c=[{id:"getting-started",show:e,render:()=>n.jsx(aw,{onDismiss:t})},{id:"update",show:s.kind!=="none",render:()=>n.jsx(DS,{update:s})},{id:"identity-prompt",show:r.visible,render:()=>n.jsx(uw,{prompt:r})},{id:"profile-prompt",show:o.visible,render:()=>n.jsx(cw,{prompt:o})},a];return n.jsx(Lx,{candidates:c,ready:i.settled})}const oi="dorkos-pinned-agents";function cu(){const{data:e}=_e(),t=xo(),{update:s}=Yt(),r=t.pinned.length,o=l.useRef(!1);l.useEffect(()=>{if(o.current||e===void 0)return;const a=localStorage.getItem(oi);if(a===null){o.current=!0;return}o.current=!0;let i=[];try{const c=JSON.parse(a);Array.isArray(c)&&(i=c.filter(d=>typeof d=="string"))}catch{i=[]}r===0&&i.length>0&&s(c=>({...c,pinned:i.map(d=>({kind:"agent",path:d}))})),localStorage.removeItem(oi)},[e,r,s])}function lu(e){return l.useMemo(()=>Fh(e),[e])}const OS=1800*1e3,rn={finishedWhileAwayCount:0,idleWhileAwayCount:0};function ai(e){let t=null;for(const s of Object.values(e)){const r=Date.parse(s);Number.isNaN(r)||(t===null||r>t)&&(t=r)}return t}function MS(e,t,s,r){const o=new Set(t);let a=0;for(const i of e){if(o.has(i.id))continue;const c=Date.parse(i.updatedAt);Number.isNaN(c)||c>s&&c<=r&&(a+=1)}return a}function _S(e,t,s,r,o){const a=new Set(t);let i=0;for(const c of e){if(a.has(c.id))continue;const d=s[c.id];if(d==="streaming"||d==="blocked"||d==="error")continue;const m=Date.parse(c.updatedAt);Number.isNaN(m)||m<=r||m>o||o-m<OS||(i+=1)}return i}function PS(e){const{now:t,sessions:s,workingSessionIds:r,sessionStatuses:o,interactions:a,storedLastShownDate:i,settled:c}=e,d=$h(),{update:m}=Yt(),[u,f]=l.useState(null),p=l.useRef(!1);l.useEffect(()=>{!c||p.current||(p.current=!0,f({value:i}))},[c,i]);const h=u==null?void 0:u.value,[g]=l.useState(()=>ai(a)),x=ai(a),b=x!==null&&(g===null||x>g),y=l.useMemo(()=>b||!d.isAvailable||!d.enabled||d.maxPosts<=0||x===null||t-x<d.absenceThresholdMinutes*6e4?rn:{finishedWhileAwayCount:MS(s,r,x,t),idleWhileAwayCount:_S(s,r,o,x,t)},[b,d.isAvailable,d.enabled,d.absenceThresholdMinutes,d.maxPosts,x,t,s,r,o]),S=Bh(t),j=u!==null&&y.finishedWhileAwayCount>0&&h!==S,C=l.useRef(!1);return l.useEffect(()=>{!j||C.current||(C.current=!0,m(v=>zh(v,S)))},[j,S,m]),{digest:y,lastShownDate:h}}function LS(e,t){const{update:s}=Yt(),r=l.useMemo(()=>t?Uh(e).map(a=>a.target.kind==="suggestion"?a.target.suggestionId:null).filter(a=>a!==null):null,[e,t]),o=l.useRef(null);l.useEffect(()=>{const a=o.current;if(o.current=r,a===null||r===null)return;const i=a.filter(c=>!r.includes(c));i.length!==0&&s(c=>i.reduce((d,m)=>Kh(d,m),c))},[r,s])}const FS={discoveredUnregisteredPaths:[],nonSystemAgentCount:1,hasEverStartedSession:!0,hasPostedInTeam:!0,hasDorkBotSession:!0};function $S(e){const{agents:t,agentActivity:s,sessionCount:r,rooms:o,rosterResolved:a}=e,i=ks(c=>c.candidates);return l.useMemo(()=>{if(!a)return{facts:FS,isResolved:!1};const c=new Set(t.map(f=>f.path)),d=i.map(f=>f.path).filter(f=>!c.has(f)),m=t.find(f=>f.isSystem)??null,u=o.find(f=>f.wellKnown===Hh);return{facts:{discoveredUnregisteredPaths:d,nonSystemAgentCount:t.filter(f=>!f.isSystem).length,hasEverStartedSession:r>0||Object.keys(s).length>0,hasPostedInTeam:(u==null?void 0:u.viewerHasPosted)??!0,hasDorkBotSession:m!==null&&s[m.path]!==void 0},isResolved:!0}},[t,s,r,o,a,i])}const BS=6e4,zS=[],US={};function du(e,t){const s=jc(e),r=s.read();return r!==e&&!t(r,e)?(s.write(e),e):r}function KS(e,t){const s=Object.keys(e),r=Object.keys(t);return s.length===r.length&&r.every(o=>Object.is(e[o],t[o]))}function HS(e,t){return e.length===t.length&&t.every((s,r)=>e[r]===s)}function Qn(e){return du(e,KS)}function qS(e){return du(e,HS)}function WS(e){const t=Ee({select:d=>d.location.pathname}),s=Jr({strict:!1}),r=t==="/session"?s.session??null:null,o=t==="/session"?s.dir??null:null,a=t==="/channels"?s.id??null:null,i=t==="/channels"||t==="/"?s.thread??null:null,c=a===null?null:e(a);return l.useMemo(()=>r!==null?{kind:"session",sessionId:r,agentPath:o??"",cwd:o}:a===null||c===null?null:i!==null?{kind:"room",roomId:a,roomKind:"thread",rootEntryId:i}:{kind:"room",roomId:a,roomKind:c},[r,o,a,c,i])}function uu(e={}){const{coveredSignalIds:t}=e,s=fo(BS),r=_n(),o=Fc(qh),a=l.useMemo(()=>{var $;return(($=o.data)==null?void 0:$.sessions)??[]},[o.data]),i=ct($c($=>{const L={};for(const[Q,K]of Object.entries($.statuses))L[Q]=K.lifecycle;return L})),c=l.useMemo(()=>Object.entries(i).filter(([,$])=>$==="streaming").map(([$])=>$),[i]),d=ct(l.useCallback($=>$.statusCwds,[])),m=Rs(),u=l.useMemo(()=>{const $=m.data??[];return r.fleetKnown?$:$.filter(L=>L.kind!=="dm")},[m.data,r.fleetKnown]),f=Wh(),p=l.useMemo(()=>f.data??[],[f.data]),h=uo(),g=Qn(l.useMemo(()=>{const $={};for(const[L,Q]of Object.entries(h)){if(!L.startsWith("agent:"))continue;const K=Date.parse(Q);Number.isNaN(K)||($[L.slice(6)]=K)}return $},[h])),b=Dn().data,y=qS(l.useMemo(()=>((b==null?void 0:b.agents)??[]).map($=>$.projectPath),[b])),j=Cs(y).data,{brokenPaths:C}=Gh(),v=Qn(Tx(y,C,g)),N=l.useMemo(()=>{var $;return(($=o.data)==null?void 0:$.agentActivity)??{}},[o.data]),I=r.fleetKnown?y:zS,D=l.useMemo(()=>I.map($=>{const L=(j==null?void 0:j[$])??null,Q=N[$],K=Q===void 0?NaN:Date.parse(Q);return{path:$,runtime:(L==null?void 0:L.runtime)??"claude-code",namespace:(L==null?void 0:L.namespace)??null,isSystem:(L==null?void 0:L.isSystem)??!1,lastActivityAt:Number.isNaN(K)?null:K,lastInteractionAt:g[$]??null,attention:v[$]??"inactive"}}),[I,j,N,v,g]),T=l.useMemo(()=>Jc(I,j??{}),[I,j]),A=Qn(l.useMemo(()=>{const $={};for(const L of a){const Q=L.userLastMessageAt;Q!==void 0&&($[`session:${L.id}`]=Q)}return $},[a])),w=Qn(l.useMemo(()=>{const $={};for(const L of a){const Q=L.lastTouchedByYouAt;Q!==void 0&&($[`session:${L.id}`]=Q)}return $},[a])),E=xo(),k=l.useMemo(()=>$b(E),[E]),O=PS({now:s,sessions:a,workingSessionIds:c,sessionStatuses:i,interactions:h,storedLastShownDate:k.digest.lastShownDate,settled:r.settled}),R=l.useMemo(()=>({...k,digest:{lastShownDate:O.lastShownDate}}),[k,O.lastShownDate]),M=l.useMemo(()=>Yh(E.muted),[E.muted]),P=Qx({mutedRoomIds:M}),F=l.useMemo(()=>({items:P.items,automated:P.automated}),[P.items,P.automated]),Y=l.useMemo(()=>{const $=new Map;for(const L of u)$.set(L.id,L.kind==="dm"?"dm":"channel");return $},[u]),ee=l.useMemo(()=>$=>Y.get($)??"channel",[Y]),q=WS(ee),te=Vh($=>$.automatedExpanded),ne=Zc(),se=$S({agents:D,agentActivity:N,sessionCount:a.length,rooms:u,rosterResolved:r.phase!=="cold"}),V=l.useMemo(()=>({now:s,sessions:a,workingSessionIds:c,liveSessionCwds:d,sessionStatuses:i,rooms:u,threads:p,agents:D,displayNames:T,attention:ne,recents:F,prefs:R,interactions:h,userLastMessageAt:A,lastTouchedByYouAt:w,mentions:US,...t===void 0?{}:{coveredSignalIds:t},todayAutomatedExpanded:te,activeTarget:q,journey:se.facts,digest:O.digest}),[t,s,a,c,d,i,u,p,D,T,ne,F,R,h,A,w,te,q,se.facts,O.digest]);return LS(V,se.isResolved),V}const mu="Heads up and Today fill themselves. Pin it to Library to keep it in place.",hu={channels:"Channels",dms:"Direct messages",agents:"Agents"};function ii(e){if(typeof e!="object"||e===null)return!1;const t=e.kind;if(t==="pinned")return!0;if(t==="ungrouped"){const s=e.section;return s===void 0||typeof s=="string"&&s in hu}if(t==="computed"){const s=e.zone;return s==="now"||s==="today"||s==="getting-started"}return t==="group"&&typeof e.groupId=="string"}function GS(e){if(typeof e!="object"||e===null)return!1;const t=e.kind;return t==="agent"?typeof e.path=="string":t==="room"&&typeof e.roomId=="string"}function hn(e){if(typeof e!="object"||e===null)return null;const t=e.type;if(t==="item"){const s=e.ref,r=e.container;return GS(s)&&ii(r)?{type:"item",ref:s,container:r}:null}if(t==="group"){const s=e.groupId;return typeof s=="string"?{type:"group",groupId:s}:null}if(t==="container"){const s=e.container;return ii(s)?{type:"container",container:s}:null}return null}function fu(e){return e===null?null:e.type==="item"?{type:"item",ref:e.ref,from:e.container}:e.type==="group"?{type:"group",groupId:e.groupId}:null}function pu(e){if(e===null)return null;switch(e.type){case"item":return{type:"item",ref:e.ref,container:e.container};case"group":return{type:"group-header",groupId:e.groupId};case"container":return{type:"container",container:e.container}}}function gu(e){switch(e.type){case"container":return{container:e.container};case"item":return{container:e.container,overRef:e.ref};case"group-header":return{container:{kind:"group",groupId:e.groupId}}}}function dn(e,t){return e.findIndex(s=>el(s,t))}function ci(e,t,s,r){const o=e.groups.find(i=>i.id===s);if(!o)return{kind:"none"};if(o.kind==="smart")return{kind:"reject-smart-group",groupId:s,ref:t};let a=null;if(o.sortMode==="manual"&&r!==void 0){const i=dn(o.items,r);i>=0&&(a=i)}return{kind:"move-to-group",ref:t,groupId:s,toIndex:a}}function Ho(e,t,s){if(s===null)return{kind:"none"};if(t.type==="group"){if(s.type!=="group-header")return{kind:"none"};const c=e.groups.findIndex(m=>m.id===t.groupId),d=e.groups.findIndex(m=>m.id===s.groupId);return c<0||d<0||c===d?{kind:"none"}:{kind:"reorder-group",groupId:t.groupId,from:c,to:d}}const{ref:r,from:o}=t,{container:a,overRef:i}=gu(s);if(a.kind==="computed")return{kind:"reject-computed-zone",ref:r};if(o.kind==="pinned"){if(a.kind!=="pinned")return{kind:"unpin",ref:r};if(i===void 0)return{kind:"none"};const c=dn(e.pinned,r),d=dn(e.pinned,i);return c<0||d<0||c===d?{kind:"none"}:{kind:"reorder-pinned",ref:r,from:c,to:d}}if(o.kind==="group"){if(a.kind==="pinned")return{kind:"pin",ref:r};if(a.kind==="ungrouped")return{kind:"remove-from-group",ref:r};if(a.groupId!==o.groupId)return ci(e,r,a.groupId,i);const c=e.groups.find(u=>u.id===o.groupId);if(!c||c.sortMode!=="manual"||i===void 0)return{kind:"none"};const d=dn(c.items,r),m=dn(c.items,i);return d<0||m<0||d===m?{kind:"none"}:{kind:"reorder-within-group",groupId:o.groupId,ref:r,from:d,to:m}}return a.kind==="pinned"?{kind:"pin",ref:r}:a.kind==="group"?ci(e,r,a.groupId,i):{kind:"none"}}function YS(e,t){switch(t.kind){case"none":case"reject-smart-group":case"reject-computed-zone":return e;case"reorder-group":return Zh(e,t.from,t.to);case"pin":return Jh(e,t.ref);case"unpin":return Xh(e,t.ref);case"remove-from-group":return na(e,t.ref,null);case"reorder-within-group":return sa(e,t.groupId,t.from,t.to);case"reorder-pinned":return Qh(e,t.from,t.to);case"move-to-group":{const s=na(e,t.ref,t.groupId);if(t.toIndex===null)return s;const r=s.groups.find(o=>o.id===t.groupId);return r?sa(s,t.groupId,r.items.length-1,t.toIndex):s}}}function VS(e,t,s){return YS(e,Ho(e,t,s))}function QS(e,t){return e.type==="group"?`Picked up section ${t.groupName(e.groupId)}.`:`Picked up ${t.itemName(e.ref)}.`}function XS(e,t){switch(e.kind){case"reorder-group":return`Moved section ${t.groupName(e.groupId)}.`;case"move-to-group":return`Moved ${t.itemName(e.ref)} to ${t.groupName(e.groupId)}.`;case"pin":return`Pinned ${t.itemName(e.ref)}.`;case"unpin":return`Unpinned ${t.itemName(e.ref)}.`;case"remove-from-group":return`Moved ${t.itemName(e.ref)} out of its section.`;case"reorder-within-group":return`Reordered ${t.itemName(e.ref)} in ${t.groupName(e.groupId)}.`;case"reorder-pinned":return`Reordered ${t.itemName(e.ref)} in Pinned.`;case"reject-smart-group":return`Can’t move ${t.itemName(e.ref)} into ${t.groupName(e.groupId)}. Membership is rule-based. Edit rules instead.`;case"reject-computed-zone":return`Can’t move ${t.itemName(e.ref)} there. ${mu}`;case"none":return""}}function JS(e,t){if(e===null)return"";const{container:s}=gu(e);switch(s.kind){case"pinned":return"Over Pinned.";case"ungrouped":return`Over ${s.section===void 0?"Agents":hu[s.section]}.`;case"computed":return s.zone==="today"?"Over Today.":"Over Heads up.";case"group":return`Over ${t.groupName(s.groupId)}.`}}function ZS(e){const t=r=>fu(hn(r.active.data.current)),s=r=>{var o;return pu(hn((o=r.over)==null?void 0:o.data.current))};return{onDragStart:r=>{const o=t(r);return o?QS(o,e()):void 0},onDragOver:r=>{if(t(r))return JS(s(r),e())||void 0},onDragEnd:r=>{const o=t(r);if(!o)return;const a=e(),i=Ho(a.prefs,o,s(r));return i.kind==="none"?"Movement cancelled. Item returned to its place.":XS(i,a)},onDragCancel:r=>{const o=t(r);if(!o)return;const a=e();return`Movement cancelled. ${o.type==="group"?a.groupName(o.groupId):a.itemName(o.ref)} returned to its place.`}}}function eC({label:e}){const t=Ne();return n.jsx(W.div,{initial:{scale:1},animate:{scale:t===!0?1:tf},transition:{duration:t===!0?0:ef},className:"bg-sidebar border-sidebar-border text-sidebar-foreground shadow-floating flex items-center rounded-md border px-2.5 py-1.5 text-xs font-medium",children:e})}const tC=60;function nC(e){const t=document.querySelectorAll(`[${ra}]`);for(const s of t)if(s.getAttribute(ra)===e)return s.querySelector(`[${nf}]`);return null}function sC(e,t=tC){let s=t;const r=()=>{const o=nC(e);if(o!==null){o.focus();return}s-- >0&&requestAnimationFrame(r)};requestAnimationFrame(r)}const rC={start:["Space"],cancel:["Escape"],end:["Space","Enter","Tab"]};function oC(e,t){switch(t.kind){case"move-to-group":return zs(t.groupId,t.ref);case"remove-from-group":return zs("ungrouped",t.ref);case"unpin":{const s=e.groups.find(r=>r.items.some(o=>el(o,t.ref)));return zs((s==null?void 0:s.id)??"ungrouped",t.ref)}default:return null}}function aC({data:e,itemName:t,groupName:s}){const r=e.type==="group"?s(e.groupId):e.type==="item"?t(e.ref):"";return n.jsx(eC,{label:r})}function iC({children:e,displayNames:t,rooms:s}){const r=Ae(),o=xo(),{update:a}=Yt(),[i,c]=l.useState(null),d=Dt(o),m=Dt(t),u=l.useMemo(()=>Object.fromEntries(s.map(S=>[S.id,S.slug??S.title])),[s]),f=Dt(u),p=kc(is(Nc,{activationConstraint:{distance:8}}),is(Cc,{coordinateGetter:Nr,keyboardCodes:rC}));if(r)return n.jsx(n.Fragment,{children:e});const h=S=>{var j;return((j=d.read().groups.find(C=>C.id===S))==null?void 0:j.name)??"group"},g=S=>S.kind==="agent"?m.read()[S.path]??S.path.split("/").pop()??"Agent":f.read()[S.roomId]??"room",x=ZS(()=>({prefs:d.read(),itemName:g,groupName:h})),b=S=>{c(hn(S.active.data.current))},y=S=>{var I;c(null);const j=fu(hn(S.active.data.current));if(j===null)return;const C=pu(hn((I=S.over)==null?void 0:I.data.current)),v=Ho(d.read(),j,C);if(v.kind==="reject-smart-group"){ae.info("Membership is rule-based. Edit rules instead.",{description:h(v.groupId)});return}if(v.kind==="reject-computed-zone"){ae.info(mu,{description:g(v.ref)});return}if(v.kind==="none"||(a(D=>VS(D,j,C)),!(S.activatorEvent instanceof KeyboardEvent)))return;const N=oC(d.read(),v);N!==null&&sC(N)};return n.jsx(sf,{value:!0,children:n.jsxs(Sc,{sensors:p,collisionDetection:hc,accessibility:{announcements:x},onDragStart:b,onDragEnd:y,onDragCancel:()=>c(null),children:[e,n.jsx(rf,{children:i?n.jsx(aC,{data:i,itemName:g,groupName:h}):null})]})})}function cC(){var r;const e=qt(!0),t=js();if(!t.community)return null;if(e.isPending)return n.jsx("p",{role:"status",className:"text-muted-foreground px-3 py-2 text-xs",children:"Loading space…"});if(e.isError)return n.jsxs("p",{role:"status",className:"text-muted-foreground px-3 py-2 text-xs",children:["Spaces could not be loaded."," ",n.jsx(_,{variant:"ghost",size:"sm",onClick:()=>void e.refetch(),children:"Retry"})]});const s=(r=e.data)==null?void 0:r.find(({ref:o})=>o===t.community);return s?s.status!=="connected"?n.jsx("p",{role:"status",className:"text-muted-foreground px-3 py-2 text-xs",children:"Reconnect this space to open its channels."}):n.jsx(lC,{connection:s}):n.jsx("p",{role:"status",className:"text-muted-foreground px-3 py-2 text-xs",children:"This space is no longer connected."})}function lC({connection:e}){var o,a,i;const t=oo(e.access),s=of(e.ref,t.capabilities.read,t.fingerprint),r=js();return n.jsxs("section",{"aria-label":e.label,className:"px-2 py-2",children:[n.jsx("h3",{className:"text-muted-foreground px-2 text-xs font-medium",children:e.label}),!t.cacheReadable&&n.jsx("p",{role:"status",className:"text-muted-foreground px-2 py-1 text-xs",children:e.status==="reconnect-required"?"Reconnect to view channels.":"Channels aren’t available."}),t.cacheReadable&&!t.verified&&n.jsx("p",{role:"status",className:"text-muted-foreground px-2 py-1 text-xs",children:"Saved channels"}),t.verified&&s.isPending&&n.jsx("p",{role:"status",className:"text-muted-foreground px-2 py-1 text-xs",children:"Loading channels…"}),t.verified&&s.isError&&n.jsxs("p",{role:"status",className:"text-muted-foreground px-2 py-1 text-xs",children:["Space unavailable."," ",n.jsx(_,{variant:"ghost",size:"sm",onClick:()=>void s.refetch(),children:"Retry"})]}),((o=s.data)==null?void 0:o.stale)&&n.jsx("p",{className:"text-muted-foreground px-2 text-xs",children:"Saved channels · offline"}),(a=s.data)==null?void 0:a.rooms.filter(c=>!c.archived).map(c=>n.jsxs(af,{...pe.channels(),search:{community:e.ref,id:c.roomId},"aria-current":r.community===e.ref&&r.id===c.roomId?"page":void 0,className:"hover:bg-accent aria-[current=page]:bg-accent flex min-h-9 items-center justify-between gap-2 rounded-md px-2 py-1 text-sm",children:[n.jsxs("span",{className:"truncate",children:["#",c.slug??c.title]}),c.unreadCount!==null&&c.unreadCount>0&&n.jsx("span",{className:"text-muted-foreground text-xs","aria-label":`${c.unreadCount} unread messages`,children:c.unreadCount})]},c.roomId)),((i=s.data)==null?void 0:i.rooms.length)===0&&n.jsx("p",{className:"text-muted-foreground px-2 py-1 text-xs",children:"No channels available."})]})}const dC=[2,3,3],li=["w-14","w-10","w-16"];function uC(){return n.jsx("div",{className:"flex flex-col gap-1","data-testid":"sidebar-skeleton","aria-hidden":!0,children:dC.map((e,t)=>n.jsxs("div",{className:"flex flex-col",children:[n.jsx("div",{className:B("flex h-7 items-center",cf),children:n.jsx(yt,{className:B("h-2.5 rounded-sm",li[t])})}),Array.from({length:e},(s,r)=>n.jsx(lf,{showIcon:!0},r))]},li[t]))})}const mC=.16,hC=4,fC=.03,pC={hidden:{},shown:{transition:{staggerChildren:fC}}},gC={hidden:{opacity:0,y:hC},shown:{opacity:1,y:0}};function di(e){return{duration:e===!0?0:mC}}const xC=2500;function ui(e){var t;return((t=e.zones.find(s=>s.id==="now"))==null?void 0:t.needsYouCount)??0}function yC(e){const t=Ne(),[s,r]=l.useState(!1),o=l.useRef(ui(e)),a=ui(e),i=e.zones.some(c=>c.id==="now");return l.useEffect(()=>{const c=o.current;if(o.current=a,!(t!==!0&&c>0&&a===0&&!i)){r(!1);return}r(!0);const m=setTimeout(()=>r(!1),xC);return()=>clearTimeout(m)},[a,i,t]),s}function xu(){const[e,t]=l.useState(!1),[s,r]=l.useState(!1),o=l.useCallback(()=>t(!0),[]),a=l.useCallback(()=>t(!1),[]),i=l.useCallback(()=>r(!0),[]),c=l.useCallback(()=>r(!1),[]);return{inside:e||s,handlers:{onPointerEnter:o,onPointerLeave:a,onFocus:i,onBlur:c}}}const mi=5e3;function bC(e){const{inside:t,handlers:s}=xu(),r=e.zones.some(m=>m.id==="getting-started"),[o,a]=l.useState(r),i=l.useRef(null),c=l.useRef(!r);return l.useEffect(()=>{if(!r){c.current||(c.current=!0,i.current=Date.now(),a(!1));return}if(o||t)return;const m=i.current===null?Number.POSITIVE_INFINITY:Date.now()-i.current;if(m>=mi){c.current=!1,a(!0);return}const u=setTimeout(()=>{c.current=!1,a(!0)},mi-m);return()=>clearTimeout(u)},[r,o,t]),{model:l.useMemo(()=>!r||o?e:{...e,zones:e.zones.filter(m=>m.id!=="getting-started")},[e,r,o]),handlers:s}}const vC=1e3;function yu(e){const[t,s]=l.useState(""),r=l.useRef(t);return l.useEffect(()=>{const o=e??"";if(o===r.current)return;const a=setTimeout(()=>{r.current=o,s(o)},vC);return()=>clearTimeout(a)},[e]),t}function wC(){return n.jsxs("p",{"data-slot":"sidebar-all-clear",className:"text-sidebar-foreground/70 flex min-h-7 items-center gap-1.5 px-2 text-[13px]",children:[n.jsx(Ft,{className:"text-status-success size-3.5 shrink-0","aria-hidden":!0}),"All clear"]})}const jC=1,hi=40;function kC({onCommit:e,onCancel:t}){const[s,r]=l.useState(""),o=l.useRef(null),a=l.useRef(!1),i=df(o);l.useEffect(()=>{var m;(m=o.current)==null||m.focus()},[]);const c=()=>{if(a.current)return;a.current=!0;const m=s.trim();if(m.length<jC||m.length>hi){t();return}e(m)},d=m=>{m.key==="Enter"?(m.preventDefault(),c()):m.key==="Escape"&&(m.preventDefault(),a.current=!0,t())};return n.jsx(uf,{children:n.jsxs("div",{className:"flex w-full items-center gap-2 rounded-md px-2 py-1.5",children:[n.jsx(mf,{className:"text-muted-foreground size-3.5 shrink-0"}),n.jsx("input",{ref:o,value:s,maxLength:hi,placeholder:"Section name","aria-label":"New section name",onChange:m=>r(m.target.value),onKeyDown:d,onBlur:m=>{i.shouldHandleBlur(m)&&(a.current||t())},className:B("bg-background text-foreground placeholder:text-muted-foreground/50","focus-visible:ring-ring min-w-0 flex-1 rounded border px-1.5 py-0.5 text-xs outline-none focus-visible:ring-1")})]})})}function rs({zone:e,onToggleAll:t,allClear:s=!1,lead:r,silenceLiveRegion:o=!1}){const a=yu(e.liveRegionText);return n.jsxs("section",{"aria-label":e.label,"data-sidebar-zone":e.id,className:B("rounded-lg py-1",e.id==="now"||e.id==="getting-started"?"bg-sidebar-accent/40":void 0),children:[!o&&n.jsx("span",{"aria-live":"polite","aria-atomic":"true",className:"sr-only",children:a}),r,s?n.jsx(wC,{}):n.jsxs(n.Fragment,{children:[e.id==="library"&&e.sections.length>0&&n.jsx(SC,{}),e.sections.map(i=>n.jsx(hf,{section:i,onToggleAll:t},i.id))]})]})}function SC(){const e=ff();return e.groupCreation===null?null:n.jsx(pf,{children:n.jsx(kC,{onCommit:e.commitNewGroup,onCancel:e.cancelNewGroup})})}const CC='[aria-current="page"]';function NC(e,t,s){const r=Ne(),o=l.useRef(null);l.useLayoutEffect(()=>{var m,u;if(!s)return;const a=o.current===null,i=((m=o.current)==null?void 0:m.key)??null;if(o.current={key:t},!a&&(i===t||t===null)||t===null)return;const c=(u=e.current)==null?void 0:u.querySelector(CC);if(!(c instanceof HTMLElement))return;const d=!a&&r!==!0;c.scrollIntoView({block:"nearest",behavior:d?"smooth":"auto"})},[t,e,s])}function AC(e,t){const s=new Map(t.map((a,i)=>[a,i])),r=[],o=[];for(const a of e){const i=s.get(a.key);i===void 0?o.push(a):r.push({row:a,at:i})}return r.sort((a,i)=>a.at-i.at),[...r.map(a=>a.row),...o]}function EC(e,t){const{inside:s,handlers:r}=xu(),[o,a]=l.useState(null),[i,c]=l.useState(s);i!==s&&(c(s),a(s?e.map(f=>f.key):null));const[d,m]=l.useState(t);return d!==t&&(m(t),a(s?e.map(f=>f.key):null)),{rows:o===null?[...e]:AC(e,o),handlers:r}}const IC="anchor:active-session";function TC({zone:e,onToggleAll:t,silenceLiveRegion:s=!1}){var f;const r=l.useRef(null),o=e.sections.find(p=>p.id==="today"),a=l.useMemo(()=>(o==null?void 0:o.rows)??[],[o]),i=((f=a.find(p=>p.reason===IC))==null?void 0:f.key)??null,c=EC(a,i),d=_n();NC(r,i,d.settled);const m=l.useMemo(()=>RC(a),[a]),u=l.useMemo(()=>({...e,sections:e.sections.map(p=>p.id==="today"?{...p,rows:c.rows}:p)}),[e,c.rows]);return n.jsx("div",{ref:r,...c.handlers,children:n.jsx(rs,{zone:u,onToggleAll:t,silenceLiveRegion:s,lead:n.jsx(DC,{roomIds:m})})})}function RC(e){const t=new Set;for(const s of e)s.unread.tier!=="none"&&s.target.kind==="room"&&t.add(s.target.roomId);return[...t]}function DC({roomIds:e}){const t=Ae(),s=gf();return!t||e.length===0?null:n.jsx(OC,{count:e.length,onCatchUp:()=>s(e)})}function OC({count:e,onCatchUp:t}){return n.jsx("div",{className:"px-2 pt-0.5 pb-1",children:n.jsxs("button",{type:"button","data-testid":"today-catch-up",onClick:t,"aria-label":`Catch up: mark ${e} unread ${e===1?"item":"items"} in Today as read`,className:B("text-sidebar-foreground/80 hover:bg-sidebar-accent/70 hover:text-sidebar-foreground focus-ring","flex w-full items-center gap-2 rounded-md px-2 text-[13px] font-medium",yf,Vt),children:[n.jsx(xf,{className:"size-4 shrink-0","aria-hidden":!0}),"Catch up",n.jsx("span",{"data-slot":"catch-up-count",className:"text-sidebar-foreground/70 text-2xs ml-auto tabular-nums",children:e})]})})}const fi={id:"now",label:jf.now,sections:[],reason:"zone:now"};function MC(e){return e.collapsible?e.id.startsWith("group:")||tl(e.id)!==null:!1}function Gr({model:e,zoneIds:t,nowSlot:s=null,silenceLiveRegion:r=!1}){const{update:o}=Yt(),a=bf(),c=co()?ls(a.destination):null,d=_n(),m=Ne(),{model:u,handlers:f}=bC(e),p=e.zones.flatMap(C=>C.sections).filter(MC),h=l.useCallback(C=>t===void 0||t.includes(C),[t]),g=l.useCallback(()=>{if(p.length===0)return;const C=p.some(v=>!v.collapsed);o(v=>{let N=v;for(const I of p){if(I.id.startsWith("group:")){N=vf(N,I.id.slice(6),C);continue}const D=tl(I.id);D!==null&&(N=wf(N,D,C))}return N})},[p,o]),x=yC(e),b=e.zones.some(C=>C.id==="now"),y=b||e.zones.some(C=>C.id==="getting-started"),S=s!==null&&!b&&h("now"),j={variants:gC,transition:di(m)};return c?n.jsx("div",{className:"flex min-h-0 flex-col","data-community-context":c,children:n.jsx(cC,{})}):n.jsx("div",{className:"flex flex-col gap-1",...f,children:n.jsx(Ie,{mode:"wait",initial:!1,children:d.phase==="cold"?n.jsx(W.div,{exit:{opacity:0},transition:di(m),children:n.jsx(uC,{})},"skeleton"):n.jsxs(W.div,{className:"flex flex-col gap-1",variants:pC,initial:d.startedWarm?!1:"hidden",animate:"shown",children:[S&&n.jsx(W.div,{...j,children:n.jsx(rs,{zone:fi,onToggleAll:g,lead:s,silenceLiveRegion:r})}),x&&!y&&!S&&h("now")&&n.jsx(W.div,{...j,children:n.jsx(rs,{zone:fi,onToggleAll:g,allClear:!0,silenceLiveRegion:r})}),u.zones.filter(C=>h(C.id)).map(C=>n.jsx(W.div,{...j,children:C.id==="today"?n.jsx(TC,{zone:C,onToggleAll:g,silenceLiveRegion:r}):n.jsx(rs,{zone:C,onToggleAll:g,silenceLiveRegion:r,...C.id==="now"?{lead:s}:{}})},C.id))]},"zones")})})}function _C(){cu();const e=uu(),t=lu(e),s=_n();return n.jsxs("nav",{"aria-label":"Sidebar","aria-busy":s.phase==="cold"?!0:void 0,className:"flex min-h-0 flex-1 flex-col",children:[n.jsx(kf,{className:"sidebar-scroll-edges px-2 py-3",children:n.jsx(nl,{activeTarget:e.activeTarget,children:n.jsx(iC,{displayNames:e.displayNames,rooms:e.rooms,children:n.jsx(Gr,{model:t})})})}),n.jsx(iu,{})]})}const PC=2;function LC(){return{label:"Active now",rules:{statuses:["needs-attention","active"]}}}function FC(e){const t=new Map;for(const s of e)t.set(s.runtime,(t.get(s.runtime)??0)+1);return Array.from(t.entries()).filter(([,s])=>s>=PC).map(([s,r])=>({runtime:s,count:r,label:Ye(s).label})).sort((s,r)=>r.count-s.count||s.label.localeCompare(r.label)).map(({runtime:s,label:r})=>({label:`Runs on ${r}`,rules:{runtimes:[s]}}))}const pi="agent:";function $C(){const[e]=Mn(),t=uo(),{data:s}=Dn(),r=l.useMemo(()=>((s==null?void 0:s.agents)??[]).map(i=>i.projectPath),[s]),{data:o}=Cs(r),a=l.useMemo(()=>Jc(r,o??{}),[r,o]);return l.useMemo(()=>{const i=new Set(r);let c=null,d=-1/0;for(const[u,f]of Object.entries(t)){if(!u.startsWith(pi))continue;const p=u.slice(pi.length);if(!i.has(p))continue;const h=Date.parse(f);Number.isNaN(h)||h<=d||(d=h,c=p)}const m=e!==null&&i.has(e)?e:c;return m===null?null:{path:m,displayName:a[m]??m}},[a,t,r,e])}function BC(e){l.useEffect(()=>{if(!Me())return;const t=s=>{!(s.metaKey||s.ctrlKey)||s.shiftKey||s.altKey||s.key.toLowerCase()==="n"&&(s.preventDefault(),e())};return document.addEventListener("keydown",t),()=>document.removeEventListener("keydown",t)},[e])}function zC(e){const t=e.smartGroupPresets.length===0?[]:[{kind:"separator",id:"sep-smart"},...e.smartGroupPresets.map(r=>({kind:"action",id:`new-group-preset:${r.label}`,label:r.label,icon:rt,opensInput:!1,run:()=>e.onCreatePresetSmartGroup(r)})),{kind:"action",id:"new-group-custom",label:"Custom rules",icon:rt,opensInput:!0,run:e.onOpenSmartGroupDialog}],s=[t.length===0?{kind:"action",id:"new-group",label:"Section",icon:rt,opensInput:!0,run:e.onNewGroup}:{kind:"submenu",id:"new-group",label:"Section",icon:rt,items:[{kind:"action",id:"new-group-empty",label:"Empty section",icon:rt,opensInput:!0,run:e.onNewGroup},...t]}];return[{kind:"action",id:"new-session",label:"Chat",icon:Yc,opensInput:!1,...e.showSessionShortcut?{hint:Mt(yn.NEW_SESSION)}:{},run:e.onNewSession},...e.lastUsedAgentName===null?[]:[{kind:"note",id:"new-session-note",icon:Ef,text:`Starts with ${e.lastUsedAgentName} (last used)`}],{kind:"separator",id:"sep-rooms"},{kind:"action",id:"new-channel",label:"Channel",icon:yo,opensInput:!0,run:e.onNewChannel},{kind:"action",id:"new-message",label:"Group message",icon:Rl,opensInput:!0,run:e.onNewMessage},{kind:"separator",id:"sep-agents"},{kind:"action",id:"new-agent",label:"Agent",icon:If,opensInput:!0,run:e.onNewAgent},...s]}function UC(){const e=Ae(),t=Hn(M=>M.menuOpen),s=Hn(M=>M.preselect),r=Hn(M=>M.setMenuOpen),o=Hn(M=>M.requestNewGroup),a=Te(),i=Hc(),[,c]=Mn(),d=Zx(),m=$C(),{update:u}=Yt(),[f,p]=l.useState(!1),[h,g]=l.useState(!1),[x,b]=l.useState(!1),{data:y}=Dn(),S=l.useMemo(()=>((y==null?void 0:y.agents)??[]).map(M=>M.projectPath),[y]),{data:j}=Cs(S),C=l.useMemo(()=>S.map(M=>{var P,F;return{projectPath:M,runtime:((P=j==null?void 0:j[M])==null?void 0:P.runtime)??"claude-code",namespace:((F=j==null?void 0:j[M])==null?void 0:F.namespace)??null,attention:"inactive",lastActivityAt:null}}),[S,j]),v=Sf(C),N=l.useMemo(()=>v?[LC(),...FC(C)]:[],[C,v]),I=l.useMemo(()=>{const M=new Map;for(const P of C)M.has(P.runtime)||M.set(P.runtime,Ye(P.runtime).label);return Array.from(M,([P,F])=>({value:P,label:F})).sort((P,F)=>P.label.localeCompare(F.label))},[C]),D=l.useMemo(()=>{const M=new Set;for(const P of C)P.namespace&&M.add(P.namespace);return Array.from(M).sort()},[C]),T=l.useCallback((M,P)=>u(F=>Cf(F,M,P).next),[u]),A=l.useCallback(M=>{cs.getState().recordOpened("room",M.id),a({...pe.channels(),search:{id:M.id}})},[a]),w=l.useCallback(()=>i(m==null?void 0:m.path),[m,i]);BC(w);const E=l.useCallback(M=>{const[P]=M;if(P!==void 0&&ey(M)){c(P.agentPath,{onOpened:()=>cs.getState().recordOpened("agent",P.agentPath)});return}const F=Nf(M.map(Y=>Y.displayName));d.mutate({agentPaths:M.map(Y=>Y.agentPath),title:F},{onSuccess:A})},[A,c,d]),k=zC({onNewSession:w,lastUsedAgentName:(m==null?void 0:m.displayName)??null,onNewChannel:()=>p(!0),onNewMessage:()=>g(!0),onNewAgent:()=>Es.getState().open(),onNewGroup:()=>o(),smartGroupPresets:N,onCreatePresetSmartGroup:M=>T(M.label,M.rules),onOpenSmartGroupDialog:()=>b(!0),showSessionShortcut:Me()}),O=sl(k),R=l.useRef(null);return l.useEffect(()=>{if(!t||s===null)return;const M=requestAnimationFrame(()=>{var P,F;(F=(P=R.current)==null?void 0:P.querySelector(`[data-menu-item-id="${s}"]`))==null||F.focus()});return()=>cancelAnimationFrame(M)},[t,s]),n.jsxs(n.Fragment,{children:[n.jsxs(Ic,{open:t,onOpenChange:r,children:[n.jsx(Tc,{asChild:!0,children:n.jsxs("button",{type:"button","data-testid":"sidebar-new-button",className:B("bg-sidebar-accent text-sidebar-accent-foreground hover:bg-sidebar-accent/70 focus-visible:ring-sidebar-ring flex shrink-0 items-center gap-1 rounded-md px-2 py-1 text-xs font-medium outline-hidden transition-colors duration-150 focus-visible:ring-2",e&&B(Vt,"px-3")),children:[n.jsx(Ht,{className:"size-3.5"}),"New"]})}),n.jsx(Rc,{ref:R,align:"end",className:"w-56",onCloseAutoFocus:O.onCloseAutoFocus,children:n.jsx(Ar,{variant:"dropdown",nodes:O.nodes})})]}),f&&n.jsx(ty,{open:!0,onOpenChange:M=>!M&&p(!1),onCreated:A}),n.jsx(ny,{open:h,onOpenChange:g,onStart:E,hideTrigger:!0}),n.jsx(Af,{open:x,onOpenChange:b,mode:"create",runtimeOptions:I,namespaceOptions:D,onSubmit:({name:M,rules:P})=>T(M,P)})]})}function KC(){const e=U(s=>s.setGlobalPaletteOpen),t=Ae();return n.jsxs("button",{type:"button","data-testid":"sidebar-search-pill",onClick:()=>e(!0),className:B("bg-sidebar-accent/40 text-sidebar-foreground/60 hover:bg-sidebar-accent/70 hover:text-sidebar-foreground focus-visible:ring-sidebar-ring flex w-full items-center gap-1.5 rounded-md px-2 py-1.5 text-[13px] outline-hidden transition-colors duration-150 focus-visible:ring-2",t&&Vt),children:[n.jsx(gn,{className:"size-(--size-icon-sm) shrink-0"}),n.jsx("span",{className:"truncate",children:"Jump to anything…"}),n.jsx(rl,{className:"bg-sidebar-accent text-sidebar-foreground/70 ml-auto shrink-0 border-transparent",children:Mt(yn.COMMAND_PALETTE)})]})}function HC(e){const t=[];return e.you!==null&&t.push({kind:"action",id:"you",label:e.you.name,description:"View profile",icon:so,leading:e.you.face,guardsFocus:!0,run:e.you.onOpen}),t.push({kind:"action",id:"dorkos-account",label:"DorkOS account",description:e.accountStatus,icon:ol,guardsFocus:!0,run:e.onOpenAccount},{kind:"action",id:"settings",label:"Settings",icon:Ds,guardsFocus:!0,run:e.onOpenSettings}),t}function qC(e){return e.isDevMode?[{kind:"separator",id:"sep-version"},{kind:"note",id:"version",icon:wr,text:"Development build"}]:e.version===null?[]:[{kind:"separator",id:"sep-version"},{kind:"action",id:"version",label:`v${e.version} beta`,icon:wr,opensInput:!1,hint:"Check for updates",run:e.onCheckForUpdates}]}function WC(e){const t=(e==null?void 0:e.trim())??"";return t.length===0||t===Tf?"Your team":t.endsWith("s")?`${t}’ team`:`${t}’s team`}function GC(e,t){const s=Rf(e);return l.createElement(Df,{size:t,kind:s.kind,color:s.color,emoji:s.emoji,imageUrl:s.imageUrl,fallback:s.fallback,origin:s.origin})}function bu(e="xs"){var i;const t=to(),{open:s}=qe(),{open:r}=bo(),o=j0(),a=((i=t.data)==null?void 0:i.members.find(c=>c.isSelf))??null;return{you:a===null?null:{name:a.displayName,face:GC(a,e),onOpen:()=>r(a.id)},accountStatus:w0(o),onOpenAccount:()=>s("account"),onOpenSettings:()=>s()}}function YC(e=[]){var m;const t=to(),s=ie(),r=ce(),o=bu(),a=((m=t.data)==null?void 0:m.members.find(u=>u.isSelf))??null,{data:i,refetch:c}=ve({queryKey:Oe.current(),queryFn:()=>s.getConfig(),staleTime:Ji}),d=l.useCallback(async()=>{var h,g;await r.invalidateQueries({queryKey:Oe.all});const u=await c(),f=(h=u.data)==null?void 0:h.version,p=((g=u.data)==null?void 0:g.latestVersion)??null;if(f===void 0){ae.error("Couldn’t check for updates");return}if(p!==null&&go(p,f)){ae.success(`Version ${p} is available`);return}ae.success("You’re up to date")},[r,c]);return{teamName:WC((a==null?void 0:a.displayName)??null),nameUnknown:t.isPending,identityNodes:HC(o),nodes:[...e,...qC({version:(i==null?void 0:i.version)??null,isDevMode:(i==null?void 0:i.isDevMode)??!1,onCheckForUpdates:()=>void d()})]}}const VC="https://dorkos.ai/docs/self-hosting/space-server";function QC(e){const t=[];for(const s of e)s.hostOperator===!0&&!t.includes(s.pinnedOrigin)&&t.push(s.pinnedOrigin);return t}function XC(e){var o,a,i;const t=e.status!=="pending"&&((o=e.access)==null?void 0:o.state)!=="unverified",s=((i=(a=e.access)==null?void 0:a.lastKnown)==null?void 0:i.lifecycle)??null,r=e.status==="connected";return{hostReachable:t,canInvite:t&&r&&s==="active",canOpenSettings:t,canLeave:t&&r}}function Xn(e){try{return new URL(e).host}catch{return e}}function JC(e){const t=[],s=e.selected;if(s){const{connection:a,availability:i}=s,c=[],d={host:Xn(a.pinnedOrigin)};i.canInvite&&c.push({kind:"action",id:"community-invite",label:"Invite people",icon:Mf,external:d,run:e.onInvite}),i.canOpenSettings&&c.push({kind:"action",id:"community-settings",label:"Space settings",icon:Ds,external:d,run:e.onOpenSettings}),s.canMoveUp&&c.push({kind:"action",id:"community-move-up",label:"Move up",icon:_f,run:()=>e.onMove("up")}),s.canMoveDown&&c.push({kind:"action",id:"community-move-down",label:"Move down",icon:Pf,run:()=>e.onMove("down")}),c.push({kind:"separator",id:"community-sep-end"}),c.push({kind:"action",id:"community-disconnect",label:"Disconnect",icon:Lf,opensInput:!0,destructive:!0,run:e.onDisconnect}),i.canLeave&&c.push({kind:"action",id:"community-leave",label:"Leave space",icon:Ff,opensInput:!0,external:d,run:e.onLeave}),t.push({kind:"submenu",id:"community-actions",label:`Manage ${a.label}`,icon:Rr,items:c})}const r=[...e.creationOrigins.map(a=>({kind:"action",id:e.creationOrigins.length===1?"add-community-create":`add-community-create-${Xn(a)}`,label:e.creationOrigins.length===1?"Create a space on your server":`Create a space on ${Xn(a)}`,icon:Jy,opensInput:!0,external:{host:Xn(a)},run:()=>e.onCreate(a)})),{kind:"action",id:"add-community-deploy",label:"Run your own space server",icon:Of,run:e.onDeploy}],o=[];return e.hosting&&o.push({kind:"action",id:"add-community-start",label:"Start a space",icon:vo,opensInput:!0,run:e.hosting.onStart}),o.push({kind:"action",id:"add-community-join",label:"Join a space",icon:al,opensInput:!0,run:e.onJoin}),e.hosting&&o.push({kind:"action",id:"add-community-yours",label:"Your spaces",icon:Vy,guardsFocus:!0,run:e.hosting.onOpenYourSpaces}),o.push({kind:"separator",id:"add-community-sep-advanced"},{kind:"submenu",id:"add-community-advanced",label:"Advanced",icon:dc,items:r}),t.push({kind:"submenu",id:"add-community",label:"Add a space",icon:Ht,items:o}),t}function vu(e){var s,r,o,a,i,c;const t=(r=(s=e.access)==null?void 0:s.lastKnown)==null?void 0:r.lifecycle;return{kind:"community",key:`community:${e.ref}`,ref:e.ref,remoteCommunityId:e.remoteCommunityId,label:e.label,icon:{kind:"community",ref:e.ref},pinnedOrigin:e.pinnedOrigin,membershipState:t==="deletion_pending"?"deletion-pending":t==="taken_down"?"taken-down":t??(e.status==="pending"?"pending":"active"),connectionState:e.status,availability:((o=e.access)==null?void 0:o.state)==="verified"?"online":((a=e.access)==null?void 0:a.state)==="unverified"?"offline":"unknown",unreadCount:((i=e.attention)==null?void 0:i.unreadCount)??null,mentionCount:((c=e.attention)==null?void 0:c.mentionCount)??null}}function ZC(e){var r,o;if(e.status==="reconnect-required")return"Reconnect required";const t=(o=(r=e.access)==null?void 0:r.lastKnown)==null?void 0:o.lifecycle;if(e.seemsGoneSince&&t!=="deleted"&&t!=="taken_down")return"Seems to be gone";const s=vu(e);if(s.membershipState!=="active")return s.membershipState.replace("-"," ");if(s.availability!=="online")return s.availability}function eN({connection:e,onOpenChange:t,onDisconnected:s}){var p;const r=il(),o=od(e),[a,i]=l.useState(e);e!==null&&e!==a&&i(e);const c=(a==null?void 0:a.label)??"this space",d=(a==null?void 0:a.status)==="pending"?[]:(p=o.data)==null?void 0:p.agents,m=d===void 0&&o.fetchStatus==="fetching",u=d?id(c,d):m?null:cd(c);function f(){e&&r.mutate(e,{onSuccess:h=>{t(!1);const g=ld(e.label,h);g.tone==="success"?ae.success(g.message):ae.warning(g.message,{duration:15e3}),s(e)}})}return n.jsx($f,{open:e!==null,onOpenChange:h=>{h||r.reset(),t(h)},children:n.jsxs(Bf,{children:[n.jsxs(zf,{children:[n.jsxs(Uf,{children:["Disconnect this DorkOS from ",c,"?"]}),n.jsx(Kf,{asChild:!0,children:n.jsxs("div",{className:"space-y-2",children:[n.jsxs("p",{children:["Its channels leave this app. You stay a member of ",c,"."]}),n.jsx("p",{children:"You can connect again later."}),u&&n.jsx("p",{className:"text-foreground",children:u}),m&&n.jsx("p",{children:"Checking for agents you added from here…"})]})})]}),o.isError&&d===void 0&&!m&&n.jsxs("div",{role:"alert",className:"flex flex-col items-start gap-2 text-sm sm:flex-row sm:items-center sm:justify-between sm:gap-3",children:[n.jsxs("p",{className:"text-destructive",children:["Couldn’t check which of your agents are on ",c,"."]}),n.jsx(_,{size:"sm",variant:"outline",onClick:()=>void o.refetch(),children:"Check again"})]}),r.isError&&n.jsx("p",{role:"alert",className:"text-destructive text-sm",children:"Couldn’t disconnect. Check DorkOS is running and try again."}),n.jsxs(Hf,{children:[n.jsx(qf,{disabled:r.isPending,children:"Keep connected"}),n.jsx(_,{variant:"destructive",disabled:r.isPending||m,onClick:f,children:r.isPending?"Disconnecting…":"Disconnect"})]})]})})}function tN(e,t){var r;const s=typeof e=="object"&&e!==null?e:{};switch(s.code){case"COMMUNITY_SELECTION_REQUIRED":return`That address has several spaces. Use one space’s own link, like ${sN(t)}.`;case"COMMUNITY_NAME_NOT_FOUND":return"No space uses that address. Check the spelling, or ask for its full link.";case"COMMUNITY_RATE_LIMITED":return`Too many tries. Your address may be fine. Wait ${Wf((r=s.body)==null?void 0:r.retryAfterSeconds)}, then try again.`;case"COMMUNITY_UPGRADE_REQUIRED":return"This space’s server is too old for this DorkOS. Ask its owner to update it.";default:return"Couldn’t connect. Check the space’s address and try again."}}function nN(e){const t=typeof e=="object"&&e!==null?e.code:"";return t!=="COMMUNITY_RATE_LIMITED"&&t!=="COMMUNITY_UPGRADE_REQUIRED"}function sN(e){try{return`${new URL(e??"").origin}/your-space`}catch{return"https://example.com/acme"}}const rN="That invitation link is incomplete or isn’t secure. Copy the whole link again.";function oN(e){let t;try{t=new URL(e.trim())}catch{return!1}return/^\/(?:c\/[^/]+\/)?join\/?$/u.test(t.pathname)&&!Er(e)}function aN(e){const t=new URL(e.trim()),s=/^(\/c\/[^/]+)\/join\/?$/u.exec(t.pathname);return s?`${t.origin}${s[1]}`:t.origin}function iN({request:e,onOpenChange:t,installName:s,onConnected:r}){var P;const o=kn(!0),a=qt(!0),i=Gf(o),c=e!==null,d=Us(F=>F.links),m=Us(F=>F.rememberLink),u=Us(F=>F.ending),f=(o==null?void 0:o.ownerKey)??null,[p,h]=l.useState(null),g=F=>h(F===null?null:{owner:f,ref:F}),[x,b]=l.useState(null),[y,S]=l.useState(null),[j,C]=l.useState((u==null?void 0:u.id)??0),[v,N]=l.useState(null),[I,D]=l.useState(null);e!==I&&(D(e),e&&(g(e.ref),b(null))),p!==null&&f!==null&&p.owner!==f&&(p.owner===null?h({owner:f,ref:p.ref}):(h(null),b(null),N(null)));const T=p!==null&&p.owner===f?p.ref:null,A=T===null||(P=a.data)==null?void 0:P.find(F=>F.ref===T),w=!A&&y!==null&&!y.settled&&y.address===i&&y.connection.ref===T?y.connection:null,E=A??w;if(E&&f!==null&&((v==null?void 0:v.owner)!==f||v.ref!==E.ref||v.label!==E.label)&&N({owner:f,ref:E.ref,label:E.label}),u&&u.id!==j)C(u.id),u.ref===T&&u.outcome!=="connected"&&(g(null),b({address:i,value:u.outcome==="expired"?`Approval for ${u.label} expired. Connect again to continue.`:`Approval for ${u.label} was cancelled.`}));else if(c&&T!==null&&!E&&a.isSuccess){const F=(v==null?void 0:v.owner)===f&&v.ref===T?v.label:"this space";g(null),b({address:i,value:`Approval for ${F} ended somewhere else. Connect again to continue.`})}Yf(c&&(E==null?void 0:E.status)==="pending"?E.ref:null);const k=Vf((E==null?void 0:E.status)==="pending"?E:null),O=c&&(E==null?void 0:E.status)==="connected"?E.ref:null,R=l.useRef(r),M=l.useRef(t);return l.useEffect(()=>{R.current=r,M.current=t}),l.useEffect(()=>{O===null||!E||(ae.success(`${E.label} is connected.`,{id:`community-approval-${O}`}),M.current(!1),R.current(O))},[O]),n.jsx(et,{open:c,onOpenChange:t,children:n.jsx(tt,{className:"!min-h-0 sm:max-w-md",children:n.jsx(cN,{authority:o,connection:E,check:k,approvalUrl:E&&(d==null?void 0:d.address)===i?d.urls[E.ref]:void 0,notice:(x==null?void 0:x.address)===i?x.value:"",installName:s,onStarted:F=>{m(i,F.connection.ref,F.approvalUrl),S({address:i,connection:F.connection,settled:!1}),g(F.connection.ref),b({address:i,value:`Next, approve this DorkOS on ${F.connection.label}.`})},onStartSettled:F=>S(Y=>(Y==null?void 0:Y.connection.ref)===F?{...Y,settled:!0}:Y),onEnded:F=>{g(null),b({address:i,value:F})},onCancelled:F=>{t(!1),ae.success(`Approval for ${F} was cancelled.`)},onClose:()=>t(!1)})})})}function cN({authority:e,connection:t,check:s,approvalUrl:r,notice:o,installName:a,onStarted:i,onStartSettled:c,onEnded:d,onCancelled:m,onClose:u}){const f=ie(),p=ce(),h=Dc(),g=l.useId(),[x,b]=l.useState(""),[y,S]=l.useState(null),[j,C]=l.useState(!1),[v,N]=l.useState(a),I=l.useRef(null),D=l.useRef(null),T=t===null?"form":t.status,A=l.useRef(T);l.useEffect(()=>{var te,ne;const q=A.current;A.current=T,q!==T&&(T==="form"?(te=I.current)==null||te.focus():T==="pending"&&((ne=D.current)==null||ne.focus()))},[T]);const w=Sn({mutationFn:async q=>{if(!e||!pt(e))throw new Error("Community owner is still loading.");const te=await f.startCommunityConnection({url:q,installName:v.trim()});if(!pt(e))throw new Error("Community owner changed.");return te},onSuccess:async q=>{b(""),i(q),e&&await p.invalidateQueries({queryKey:it.connections(e)}),c(q.connection.ref)}}),E=il(),k=od((t==null?void 0:t.status)==="reconnect-required"?t:null),O=w.error;l.useEffect(()=>{var q;(O||j)&&((q=I.current)==null||q.focus())},[O,j]);const R=Er(x),M=j?rN:w.error?tN(w.error,w.variables):null;function P(q){if(q.preventDefault(),!(!x.trim()||w.isPending)){if(oN(x)){w.reset(),C(!0);return}if(Er(x)){if(!dt(h.linkFor(x.trim())))return;b(aN(x)),S({host:new URL(x.trim()).host,withAccount:h.signsInWithAccount(x)}),w.reset();return}v.trim()&&w.mutate(x.trim())}}function F(q){E.mutate(q,{onSuccess:te=>{if(q.status==="pending")m(q.label);else{const ne=ld(q.label,te);d(ne.tone==="success"?`${q.label} is disconnected. Connect again to continue.`:ne.message)}},onSettled:()=>{e&&p.invalidateQueries({queryKey:it.connections(e)})}})}const Y=n.jsx("p",{role:"status","aria-live":"polite",className:o?"text-muted-foreground text-sm":"sr-only",children:o});if(t===null)return n.jsxs("form",{onSubmit:P,children:[n.jsxs(Xe,{children:[n.jsx(Ue,{children:"Join a space"}),n.jsx(Je,{children:"Bring a space’s channels here. You approve it on the space’s site."})]}),n.jsxs(lt,{className:"space-y-4 py-4",children:[Y,n.jsxs("div",{className:"space-y-1.5",children:[n.jsx(Pe,{htmlFor:`${g}-url`,children:"Space address or invitation link"}),n.jsx(Ze,{ref:I,id:`${g}-url`,type:"url",inputMode:"url",placeholder:"https://example.com/acme","aria-describedby":M?`${g}-url-hint ${g}-url-error`:`${g}-url-hint`,"aria-invalid":j||w.error&&nN(w.error)?!0:void 0,required:!0,autoComplete:"off",value:x,onChange:q=>{b(q.target.value),S(null),C(!1)},disabled:w.isPending||!e}),n.jsx("p",{id:`${g}-url-hint`,"aria-live":"polite",className:"text-muted-foreground text-xs",children:y?y.withAccount?`Join on ${y.host} with your DorkOS account in the new tab, then connect.`:`Finish joining on ${y.host} in the new tab, then connect.`:"Its link, short address or an invitation link."})]}),n.jsxs("div",{className:"space-y-1.5",children:[n.jsx(Pe,{htmlFor:`${g}-name`,children:"Name for this installation"}),n.jsx(Ze,{id:`${g}-name`,required:!0,maxLength:120,"aria-describedby":`${g}-name-hint`,value:v,onChange:q=>N(q.target.value),disabled:w.isPending||!e}),n.jsx("p",{id:`${g}-name-hint`,className:"text-muted-foreground text-xs",children:"What the space calls this DorkOS."})]}),M&&n.jsx("p",{id:`${g}-url-error`,role:"alert",className:"text-destructive text-sm",children:M})]}),n.jsxs(Rt,{children:[n.jsx(_,{type:"button",variant:"outline",onClick:u,children:"Cancel"}),n.jsx(_,{type:"submit",disabled:w.isPending||!x.trim()||!R&&(!e||!v.trim()),children:w.isPending?"Connecting…":R?"Open invitation":"Connect"})]})]});const ee=n.jsx("p",{className:"text-muted-foreground text-xs break-all",children:t.pinnedOrigin});if(t.status==="reconnect-required"){const q=!k.data&&k.fetchStatus==="fetching",te=k.data?id(t.label,k.data.agents):q?null:cd(t.label);return n.jsxs(n.Fragment,{children:[n.jsxs(Xe,{children:[n.jsxs(Ue,{children:["Reconnect ",t.label]}),n.jsxs(Je,{children:["DorkOS can’t reach ",t.label,"’s channels. Disconnect, then connect again."]})]}),n.jsxs(lt,{className:"space-y-3 py-4",children:[ee,te&&n.jsx("p",{className:"text-sm",children:te}),k.isError&&!k.data&&!q&&n.jsxs("div",{role:"alert",className:"flex flex-col items-start gap-2 text-sm sm:flex-row sm:items-center sm:justify-between sm:gap-3",children:[n.jsxs("p",{className:"text-destructive",children:["Couldn’t check which of your agents are on ",t.label,"."]}),n.jsx(_,{size:"sm",variant:"outline",onClick:()=>void k.refetch(),children:"Check again"})]}),E.isError&&n.jsx("p",{role:"alert",className:"text-destructive text-sm",children:"Couldn’t disconnect. Check DorkOS is running and try again."})]}),n.jsxs(Rt,{children:[n.jsx(_,{type:"button",variant:"outline",onClick:u,children:"Close"}),n.jsx(_,{disabled:E.isPending||q,onClick:()=>F(t),children:E.isPending?"Disconnecting…":"Disconnect"})]})]})}return n.jsxs(n.Fragment,{children:[n.jsxs(Xe,{children:[n.jsxs(Ue,{children:["Approve on ",t.label]}),n.jsx(Je,{asChild:!0,children:n.jsxs("div",{className:"space-y-1",children:[n.jsxs("p",{children:["Approve this DorkOS on ",t.label,"’s site."]}),r&&h.signsInWithAccount(r)&&n.jsx("p",{children:"Sign in there with your DorkOS account."}),n.jsx("p",{children:"This screen moves on once you do."})]})})]}),n.jsxs(lt,{className:"space-y-3 py-4",children:[ee,Y,n.jsxs("p",{className:"flex items-center gap-2 text-sm",children:[n.jsx(wt,{})," Waiting for your approval"]}),r?n.jsx(_,{asChild:!0,children:n.jsxs("a",{ref:D,href:h.linkFor(r),target:"_blank",rel:"noopener noreferrer",children:["Open ",t.label," to approve",n.jsx(bn,{className:"size-3.5","aria-hidden":!0})]})}):n.jsx("p",{className:"text-muted-foreground text-sm",children:"Approve in the tab that opened. Closed it? Cancel and connect again."}),(E.isError||!!s.error)&&n.jsxs("div",{role:"alert",className:"space-y-2 text-sm",children:[n.jsx("p",{children:E.isError?"Couldn’t confirm it was cancelled. Refresh to check.":"Couldn’t check approval. Try again."}),!E.isError&&n.jsx(_,{size:"sm",variant:"outline",onClick:s.retry,disabled:s.isFetching,children:"Check approval"})]})]}),n.jsxs(Rt,{children:[n.jsx(_,{type:"button",variant:"outline",onClick:u,children:"Close"}),n.jsx(_,{variant:"outline",disabled:E.isPending,onClick:()=>F(t),children:E.isPending?"Cancelling…":"Cancel approval"})]})]})}function lN(e){if(!["ArrowDown","ArrowUp","Home","End"].includes(e.key))return;const t=[...e.currentTarget.querySelectorAll('[role^="menuitem"]:not(:disabled):not([aria-disabled="true"])')];if(t.length===0)return;e.preventDefault();const s=t.indexOf(document.activeElement),r=t.length-1;let o;e.key==="Home"?o=0:e.key==="End"?o=r:e.key==="ArrowDown"?o=s<0||s===r?0:s+1:o=s<=0?r:s-1,t[o].focus()}function gi({sheet:e,label:t="Actions",children:s}){return e?n.jsx("div",{role:"menu","aria-label":t,tabIndex:-1,onKeyDown:lN,children:s}):n.jsx(n.Fragment,{children:s})}function lr(){let e=!1;const t=()=>{e=!0};return document.addEventListener("pointerdown",t,!0),document.addEventListener("keydown",t,!0),{acted:()=>e,stop:()=>{document.removeEventListener("pointerdown",t,!0),document.removeEventListener("keydown",t,!0)}}}function dN({trigger:e,selectedRef:t}){const s=ie(),r=Ae(),o=Te(),a=Ee({select:h=>h.location}),i=l.useRef(!1),c=l.useRef(!1),[d,m]=l.useState(null);function u(h,g){var b;if(!r||(h||(c.current=!1),g))return;if(h){const y=lr();Xf({cancelled:y.acted}).finally(y.stop);return}const x=document.activeElement;(x===null||x===document.body)&&((b=e.current)==null||b.focus())}async function f(h){if(h.ref===t||i.current||h.status!=="connected")return;const g=oa();if(g.ownerKey===null)return;const x={epoch:g.epoch,ownerKey:g.ownerKey},b={pathname:a.pathname,search:a.search};c.current=r;const y=lr();i.current=!0,m(h.ref);let S=!1,j=null;try{await o({...pe.channels(),search:{community:h.ref}}),S=!0,j=vn();const C=await s.resolveCommunityNavigation(h.ref),v=C?null:(await s.listRemoteCommunityRooms(h.ref)).rooms.find(I=>I.readable&&!I.archived)??null,N=(C==null?void 0:C.roomId)??(v==null?void 0:v.roomId);if(!pt(x)||!j.isCurrent()){u(!1,y.acted());return}N&&await o({...pe.channels(),search:{community:h.ref,...N?{id:N}:{},...C!=null&&C.threadId?{thread:C.threadId}:{}}}),u(!0,y.acted())}catch{u(!1,y.acted()),S&&(j==null?void 0:j.isCurrent())===!0&&pt(x)&&await o({to:b.pathname,search:b.search,replace:!0}).then(()=>!0,()=>!1)&&ae.error(`Couldn’t open ${h.label}.`,{description:"You’re still where you were. Try again in a moment."})}finally{y.stop(),i.current=!1,m(null)}}async function p(){if(t===void 0||i.current)return;const h=oa();if(h.ownerKey===null)return;const g={epoch:h.epoch,ownerKey:h.ownerKey},x=vn();c.current=r;const b=lr();i.current=!0;try{const y=await s.getCommunityNavigation();if(y.ownerKey!==g.ownerKey||!pt(g)||!x.isCurrent()){u(!1,b.acted());return}const S=Qf.safeParse(y.installationDestination);await o(S.success?{to:S.data.path,search:S.data.search}:{...pe.home()}),u(!0,b.acted())}catch{const y=pt(g)&&x.isCurrent();y&&await o({...pe.home()}),u(y,b.acted())}finally{b.stop(),i.current=!1}}return{pendingRef:d,isSelecting:()=>i.current,holdCloseFocus:()=>{c.current=!0},takeCloseFocusHold:()=>{const h=c.current;return c.current=!1,h},selectCommunity:f,selectInstallation:p}}function uN(e){const t=l.useRef(e);l.useEffect(()=>{t.current=e},[e]),l.useEffect(()=>{const s=r=>{if(r.isComposing||!(r.metaKey||r.ctrlKey)||!r.shiftKey||r.altKey||r.key.toLowerCase()!=="k")return;r.preventDefault();const o=document.activeElement;t.current(o instanceof HTMLElement&&o!==document.body?o:null)};return window.addEventListener("keydown",s),()=>window.removeEventListener("keydown",s)},[])}function mN(e,t){const s=new Map(t.map((r,o)=>[r,o]));return[...e].sort((r,o)=>{const a=s.get(r.ref)??Number.MAX_SAFE_INTEGER,i=s.get(o.ref)??Number.MAX_SAFE_INTEGER;return a-i||r.label.localeCompare(o.label)||r.ref.localeCompare(o.ref)})}function hN(e){return e.charAt(0).toLowerCase()+e.slice(1)}function wu({triggerClassName:e,compact:t=!1}){var J;const s=Ae(),r=Te(),o=co(),a=Ee({select:H=>H.location.search.community}),i=o?a:void 0,c=Jf(),d=Zf(),m=qt(),u=l.useMemo(()=>{var H;return mN(m.data??[],((H=c.data)==null?void 0:H.order)??[])},[m.data,(J=c.data)==null?void 0:J.order]),f=u.find(H=>H.ref===i)??null,p=l.useRef(null),h=l.useRef(null),g=l.useRef(null),{pendingRef:x,isSelecting:b,holdCloseFocus:y,takeCloseFocusHold:S,selectCommunity:j,selectInstallation:C}=dN({trigger:g,selectedRef:i}),[v,N]=l.useState(""),[I,D]=l.useState(!1),[T,A]=l.useState(null),[w,E]=l.useState(null),k=Qj(),[O,R]=l.useState(null),M=i?u.findIndex(H=>H.ref===i):-1;function P(H,de){dt(new URL(op(H.remoteCommunityId,de),H.pinnedOrigin).toString())}const F=JC({selected:f?{connection:f,availability:XC(f),canMoveUp:M>0,canMoveDown:M>=0&&M<u.length-1}:null,onMove:H=>{f&&d.mutate({ref:f.ref,direction:H})},onInvite:()=>f&&P(f,"community"),onOpenSettings:()=>f&&P(f),onLeave:()=>f&&P(f,"account"),onDisconnect:()=>E(f),onJoin:()=>A({ref:null}),creationOrigins:QC(u),onCreate:H=>dt(new URL(rp,H).toString()),onDeploy:()=>dt(VC),hosting:k?{onStart:()=>R({kind:"start"}),onOpenYourSpaces:()=>R({kind:"hosted"})}:null}),ee=YC(o?F:[]),q=sl([...ee.identityNodes,...ee.nodes]),te=q.nodes.slice(0,ee.identityNodes.length),ne=q.nodes.slice(ee.identityNodes.length),se=ee.teamName,V=ee.nameUnknown,$=i!==void 0&&m.data===void 0,L=i===void 0?V:$,Q=i===void 0?se:(f==null?void 0:f.label)??"Space",K=s&&u.length>=8&&v.trim().length>0?u.filter(H=>H.label.toLocaleLowerCase().includes(v.trim().toLocaleLowerCase())):u;uN(H=>{h.current=H,D(!0)});function le(H){if(b())return;if(h.current=null,H==="installation"){C();return}const de=u.find(ye=>`community:${ye.ref}`===H);if(de){if(de.status==="connected"){j(de);return}y(),A({ref:de.ref})}}function je(H){D(H),H||N("")}function ke(H){if(q.onCloseAutoFocus(H),S()){H.preventDefault();return}const de=h.current;h.current=null,!(H.defaultPrevented||!(de!=null&&de.isConnected))&&(H.preventDefault(),de.focus())}l.useEffect(()=>{if(!I)return;const H=requestAnimationFrame(()=>{var de;return(de=p.current)==null?void 0:de.focus()});return()=>cancelAnimationFrame(H)},[I]);async function We(H){var be;const ye=(be=(await m.refetch()).data)==null?void 0:be.find(Fe=>Fe.ref===H&&Fe.status==="connected");ye&&await j(ye)}function X(H){ls(vn().destination)===H.ref&&r({...pe.home(),replace:!0})}return n.jsxs(n.Fragment,{children:[n.jsxs(ep,{open:I,onOpenChange:je,children:[n.jsx(tp,{asChild:!0,children:n.jsxs("button",{ref:g,type:"button","data-testid":"sidebar-header-block","aria-label":L?"Context menu":`${Q} menu`,"aria-busy":x!==null||void 0,className:e,children:[t?i===void 0?n.jsx(ja,{className:"size-4 shrink-0","aria-hidden":!0}):n.jsx(Rr,{className:"size-4 shrink-0","aria-hidden":!0}):L?n.jsx(yt,{className:"my-[3px] h-3.5 w-24 rounded-sm","data-testid":"sidebar-team-name-skeleton"}):n.jsx("span",{className:"truncate",children:Q}),n.jsx(mt,{className:t?"size-3 shrink-0 opacity-50":"size-3.5 shrink-0 opacity-50","aria-hidden":!0}),n.jsx("span",{className:"sr-only",children:"Choose context"})]})}),n.jsxs(np,{align:"start",className:"max-h-(--radix-dropdown-menu-content-available-height) w-64 overflow-y-auto",onCloseAutoFocus:ke,children:[s&&n.jsx(aa,{children:o?"Switch context":"Menu"}),n.jsx(gi,{sheet:s,label:"You",children:n.jsx(Ar,{variant:s?"sheet":"dropdown",nodes:te,onSheetClose:()=>je(!1)})}),o&&n.jsx(ia,{}),o&&!s&&n.jsx(aa,{children:"Switch context"}),o&&s&&u.length>=8&&n.jsx("div",{className:"px-4 pb-2",children:n.jsx(Ze,{type:"search",value:v,onChange:H=>N(H.target.value),placeholder:"Find a space","aria-label":"Find a space"})}),o&&n.jsxs(sp,{value:i?`community:${i}`:"installation",onValueChange:le,children:[n.jsx(ca,{value:"installation",icon:ja,disabled:x!==null,itemRef:i===void 0?p:void 0,className:x!==null?"opacity-50":void 0,children:n.jsx("span",{className:"min-w-0 flex-1 truncate",children:se})}),K.map(H=>{var At;const de=vu(H),ye=de.mentionCount??0,be=Math.max(0,(de.unreadCount??0)-ye),Fe=[ye>0?`${ye} ${ye===1?"mention":"mentions"}`:null,be>0?`${be} other unread`:null,((At=H.attention)==null?void 0:At.state)==="stale"?`last checked ${hN(po(H.attention.verifiedAt))}`:null].filter(Boolean).join(", ");return n.jsx(ca,{value:`community:${H.ref}`,icon:Rr,disabled:x!==null,itemRef:H.ref===i?p:void 0,description:[ZC(H),Fe].filter(Boolean).join(" · ")||void 0,className:x!==null?"opacity-50":void 0,children:n.jsxs("span",{className:"flex min-w-0 items-center gap-1.5",children:[n.jsx("span",{className:"min-w-0 truncate",children:H.label}),sy(H)&&n.jsx("span",{role:"img",className:"bg-status-warning-dot size-2 shrink-0 rounded-full","aria-label":"Someone asked to take over this space",title:"Someone asked to take over this space"}),ye>0&&n.jsxs("span",{className:"bg-primary text-primary-foreground shrink-0 rounded-full px-1.5 text-xs","aria-label":`${ye} ${ye===1?"mention":"mentions"}`,children:["@",ye]}),be>0&&n.jsx("span",{className:"bg-muted text-muted-foreground shrink-0 rounded-full px-1.5 text-xs","aria-label":`${be} other unread`,children:be})]})},H.ref)})]}),ne.length>0&&n.jsxs(n.Fragment,{children:[n.jsx(ia,{}),n.jsx(gi,{sheet:s,children:n.jsx(Ar,{variant:s?"sheet":"dropdown",nodes:ne,onSheetClose:()=>je(!1)})})]})]})]}),n.jsx(iN,{request:T,onOpenChange:H=>{H||A(null)},installName:V?"My DorkOS":se,onConnected:H=>void We(H)}),n.jsx(y0,{entry:k,dialog:O,onDialogChange:R,installName:V?"My DorkOS":se,onConnected:H=>void We(H)}),n.jsx(eN,{connection:w,onOpenChange:H=>{H||E(null)},onDisconnected:X})]})}function fN(){return n.jsx(wu,{compact:!0,triggerClassName:B("hover:bg-accent focus-visible:ring-ring text-foreground flex shrink-0 items-center rounded-md px-1 py-1.5 outline-hidden focus-visible:ring-2",Vt)})}function ju(){const e=Ae();return n.jsxs(ap,{className:"gap-2 px-2 py-3",children:[n.jsxs("div",{className:"flex items-center gap-1",children:[!e&&n.jsx(wu,{triggerClassName:"text-sidebar-foreground hover:bg-sidebar-accent/70 focus-visible:ring-sidebar-ring flex min-w-0 flex-1 items-center gap-1.5 rounded-md px-2 py-1 text-left text-[13px] font-semibold outline-hidden transition-colors duration-150 focus-visible:ring-2"}),n.jsx(UC,{})]}),n.jsx(KC,{})]})}function pN(){const e=bu("sm");return n.jsxs("div",{className:"space-y-1 pb-2",children:[e.you!==null&&n.jsx(xi,{leading:e.you.face,label:e.you.name,description:"View profile",onClick:e.you.onOpen}),n.jsx(xi,{leading:n.jsx(ol,{className:"text-muted-foreground size-7 p-0.5","aria-hidden":!0}),label:"DorkOS account",description:e.accountStatus,onClick:e.onOpenAccount})]})}function xi({leading:e,label:t,description:s,onClick:r}){return n.jsxs("button",{type:"button",onClick:r,className:B("hover:bg-accent focus-visible:ring-ring flex w-full items-center gap-3 rounded-md px-2 py-2 text-left outline-hidden focus-visible:ring-2",Vt),children:[n.jsx("span",{className:"flex shrink-0",children:e}),n.jsxs("span",{className:"min-w-0 flex-1",children:[n.jsx("span",{className:"text-foreground block truncate text-sm font-medium",children:t}),s!==void 0&&n.jsx("span",{className:"text-muted-foreground block truncate text-xs",children:s})]}),n.jsx(Rn,{className:"text-muted-foreground size-4 shrink-0","aria-hidden":!0})]})}const gN=6e4;function xN(e){return e===null?!0:(e.selectionStart??0)===0&&(e.selectionEnd??0)===0}function yN(e,t,s){if(!e)return null;const r=t===null?s:[t,...s];for(const o of r){const{item:a}=o.item;if(a.type==="agent"&&Ce(a.data)===e)return{kind:"agent",agent:a.data};if((a.type==="room"||a.type==="dm")&&a.id===e)return{kind:"room",room:a.data}}return null}function bN(){const{globalPaletteOpen:e,setGlobalPaletteOpen:t}=U0(),s=U(z=>z.openMessageSearch),[r,o]=l.useState(""),a=l.useRef(null),[i,c]=l.useState(""),d=l.useRef(null),[m,u]=l.useState([]),[f,p]=l.useState(null),[h,g]=l.useState(null),[x,b]=l.useState(null),y=m[m.length-1],[S,j]=l.useState(0),C=Ae(),v=U(z=>z.globalPaletteInitialSearch),N=U(z=>z.clearGlobalPaletteInitialSearch),I=l.useCallback(()=>{t(!1),N(),o(""),c(""),u([]),p(null),b(null)},[t,N]),{handleAgentSelect:D,startNewSession:T,handleFeatureAction:A,handleQuickAction:w,handleRoomSelect:E,handleSessionSelect:k,handleCommandSelect:O,handlePageSelect:R,recordAgentOpened:M,selectedCwd:P}=Qk(I),F=ce(),Y=l.useCallback(z=>{const ge=ip(F,z.projectPath);return cp(ge?{session:ge}:{agentId:z.id})},[F]),ee=l.useCallback(z=>{if(!lp()){D(z);return}os(Y(z),{target:"tab"}),M(z.projectPath),I()},[Y,D,M,I]),q=l.useCallback(z=>{os(Y(z),{target:"window"}),M(z.projectPath),I()},[Y,M,I]),te=dp(),ne=Gk(),se=fo(gN),{allAgents:V,newActions:$,rooms:L,sessions:Q,continueRows:K,recent:le,searchableItems:je}=z0(P,se);up(V);const{bestMatch:ke,rows:We,prefix:X,term:J}=qk(je,r,{usage:ne,now:se,scope:x}),H=X==="#",de=tS(J),ye=de?{term:de,isScoped:x!==null,onSelect:()=>{I(),s(de)}}:null,be=l.useMemo(()=>i?V.find(z=>z.name===i)??null:null,[i,V]),Fe=yN(i,ke,We),At=l.useCallback(z=>{b(z),o(""),c("")},[]),nt=!C&&be!==null,Et=l.useMemo(()=>{var z;return i?Q.find(ge=>ge.id===i)??((z=K.find(ge=>ge.session.id===i))==null?void 0:z.session)??null:null},[i,Q,K]),Fn=tu((f==null?void 0:f.id)??"",(f==null?void 0:f.projectPath)??""),$n=l.useCallback(()=>{u(z=>z.slice(0,-1)),p(z=>m.length<=1?null:z),c("")},[m.length]),Bn=l.useCallback(z=>{p(z),u(ge=>[...ge,"agent-actions"]),o(""),c(""),j(ge=>ge+1)},[]);l.useEffect(()=>{e&&v!=null&&(o(v),N(),requestAnimationFrame(()=>{const z=a.current;if(z){const ge=v.length;z.setSelectionRange(ge,ge)}}))},[e,v,N]);const zn=l.useCallback(z=>{t(z),z?j(ge=>ge+1):(o(""),c(""),u([]),p(null),b(null))},[t]),Xt=Zk({rootRef:d,activePage:y??"root",onPin:c,resetKey:JSON.stringify([e,y??null,r,x&&Ud(x)])}),Ms=!r&&x===null,_s=l.useId(),Ps=n.jsx(et,{open:e,onOpenChange:zn,children:n.jsx(tt,{className:B("!min-h-0 overflow-hidden p-0 transition-[max-width] duration-200","[&>button:last-child]:top-2 [&>button:last-child]:right-2.5",nt?"max-w-[640px]":"max-w-[480px]",C&&"h-[85vh]"),children:n.jsxs(W.div,{variants:au,initial:"hidden",animate:"visible",exit:"exit",className:B("flex overflow-hidden",C&&"h-full flex-col"),children:[n.jsxs(cl,{ref:d,loop:!0,shouldFilter:!1,value:i,onValueChange:c,onPointerMove:Xt.onPointerMove,className:B("min-w-0 flex-1",C&&"flex flex-col [&_[cmdk-list]]:max-h-none [&_[cmdk-list]]:flex-1 [&_[cmdk-list]]:overflow-y-auto"),onKeyDown:z=>{if(Xt.onKeyDown(z),z.key==="Enter"&&(z.metaKey||z.ctrlKey)&&!y&&(Et==null?void 0:Et.cwd)!=null){z.preventDefault(),T(Et.cwd),I();return}if(z.key==="Enter"&&(z.metaKey||z.ctrlKey)&&!y&&be){z.preventDefault(),ee(be);return}if(z.key==="Enter"&&(z.metaKey||z.ctrlKey)&&y==="agent-actions"&&f){z.preventDefault(),ee(f);return}if(z.key==="Tab"&&!z.shiftKey&&!y&&Fe){z.preventDefault(),z.stopPropagation(),At(Fe);return}if(z.key==="Backspace"&&x&&!y&&xN(a.current)){z.preventDefault(),b(null);return}z.key==="Backspace"&&!r&&m.length>0&&(z.preventDefault(),$n()),z.key==="Escape"&&m.length>0&&(z.preventDefault(),z.stopPropagation(),$n())},children:[m.length>0&&n.jsxs("div",{className:"text-muted-foreground flex items-center gap-1 border-b px-3 py-1.5 text-xs",children:[n.jsx("button",{onClick:()=>{u([]),p(null),j(z=>z+1)},className:"hover:text-foreground transition-colors",children:"All"}),n.jsx("span",{children:"/"}),n.jsxs("span",{children:["Agent: ",f==null?void 0:f.name]})]}),n.jsx(ll,{ref:a,"data-testid":"command-palette-input",leading:x&&!y?n.jsx(eS,{scope:x}):void 0,placeholder:y==="agent-actions"?`${(f==null?void 0:f.name)??"Agent"} actions…`:x&&!y?"Search within…":"Search rooms, agents, commands…",value:r,onValueChange:o}),n.jsx(dl,{children:n.jsxs(un,{className:"h-full",children:[n.jsxs(mp,{children:[n.jsx("p",{children:"No results found."}),n.jsx(nu,{className:"justify-center pb-0"})]}),n.jsx(Ie,{mode:"wait",initial:!1,children:n.jsxs(W.div,{"data-palette-page":y??"root",initial:{opacity:0,x:y?16:-16},animate:{opacity:1,x:0},exit:{opacity:0,x:y?-16:16},transition:{duration:.15,ease:"easeOut"},children:[!y&&n.jsx(xS,{staggerKey:S,isZeroQuery:Ms,isRoomMode:H,scope:x,hasQuery:J.length>0,selectedCwd:P,selectedValue:i,continueRows:K,recent:le,newActions:$,bestMatch:ke,rows:We,rooms:L,searchHandoff:ye,onFeatureAction:A,onQuickAction:w,onGoToAgentActions:Bn,onRoomSelect:E,onSessionSelect:z=>k(z.id,z.cwd),onCommandSelect:O,onPageSelect:R}),y==="agent-actions"&&f&&n.jsx(sS,{agent:f,onOpenHere:()=>D(f),onOpenNewTab:()=>ee(f),onOpenNewWindow:te?()=>q(f):void 0,onNewSession:()=>{T(f.projectPath),M(f.projectPath),I()},onEditSettings:()=>{hp.getState().openProfileDocked(f.projectPath),I()},onBrowseSessions:Fn.sessionCount>0?()=>{g(f),M(f.projectPath),I()}:void 0,recentSessions:Fn.recentSessions,onSelectSession:z=>k(z,f.projectPath)})]},y??"root")})]})}),n.jsx(oS,{page:y,hasAgentSelected:nt,canScope:!y&&Fe!==null,isScoped:x!==null})]}),n.jsx(Ie,{children:nt&&be&&n.jsx(nS,{agent:be},be.id)})]})})});return n.jsxs(n.Fragment,{children:[n.jsx(fp,{id:_s,children:Ps}),h!==null&&n.jsx(pp,{agentPath:h.projectPath,agentName:h.displayName??h.name,agentVisual:Ns(h),open:!0,onOpenChange:z=>{z||g(null)},onSelectSession:z=>k(z,h.projectPath),onNewSession:()=>T(h.projectPath)})]})}const vN="",wN="";function jN(e){const t=[];let s=e,r=!1;for(;s.length>0;){const o=r?wN:vN,a=s.indexOf(o);if(a===-1){t.push({text:s,matched:r});break}a>0&&t.push({text:s.slice(0,a),matched:r}),s=s.slice(a+o.length),r=!r}return t}function kN({excerpt:e,className:t}){const s=jN(e);return n.jsx("span",{className:t,children:s.map((r,o)=>r.matched?n.jsx("mark",{className:"text-foreground bg-transparent font-semibold",children:r.text},o):n.jsx("span",{children:r.text},o))})}const ku="rooms",SN=["claude-code","opencode"];function CN(e){if(e.source===ku)return{kind:"room",...pe.channels(),search:{id:e.container,entry:e.ordinal}};if(e.sessionId===void 0)return{kind:"unopenable"};const t=e.messageId!==void 0&&SN.includes(e.source);return{kind:"session",...ut({session:e.sessionId,dir:e.containerPath??void 0,...t?{message:e.messageId}:{}})}}function NN(e,t){return e.source===ku?t.get(e.container)??"Channel":e.containerPath===null?"Conversation":ul(e.containerPath)}function AN(e){return e==="user"?"You":"Agent"}function EN({hit:e,containerLabel:t,value:s,onSelect:r,openable:o}){const a=e.source==="rooms"?yo:sb;return n.jsxs(fe,{value:s,onSelect:r,className:"flex flex-col items-start gap-1 py-2",children:[n.jsxs("div",{className:"text-muted-foreground flex w-full min-w-0 items-center gap-1.5 text-xs",children:[n.jsx(a,{className:"size-3.5 shrink-0","aria-hidden":"true"}),n.jsx("span",{className:"min-w-0 truncate",children:t}),n.jsx("span",{"aria-hidden":"true",children:"·"}),n.jsx("span",{className:"shrink-0",children:AN(e.role)}),!o&&n.jsxs(n.Fragment,{children:[n.jsx("span",{"aria-hidden":"true",children:"·"}),n.jsx("span",{className:"shrink-0",children:"Ran outside DorkOS"})]}),e.createdAt!==null&&n.jsx("span",{className:"ml-auto shrink-0 tabular-nums",children:po(e.createdAt)})]}),n.jsx(kN,{excerpt:e.excerpt,className:"text-foreground line-clamp-2 w-full text-sm break-words"}),e.containerPath!==null&&n.jsx("span",{dir:"rtl",className:"text-muted-foreground/70 text-3xs w-full truncate text-left",children:n.jsx("bdi",{dir:"ltr",children:e.containerPath})})]})}const IN=["Your channels and direct messages, as soon as they’re posted.","DorkOS chats can lag five minutes.","Claude Code, Codex and OpenCode chats, even outside DorkOS. These can lag five minutes."],TN=["Tool output is never searched: no errors, stack traces, file contents or diffs.","Matches whole words: “ogs” won’t find “dogs”. Type “dog*” to match word starts."],RN="Searches channels, direct messages, and DorkOS, Claude Code, Codex and OpenCode chats. Not tool output.",DN=`Type at least ${ml} letters to search.`,ON="Search what was said…";function MN({detailOpen:e=!1,className:t}){const[s,r]=l.useState(null),o=s??e,a=TN;return n.jsxs(bs,{open:o,onOpenChange:r,className:B("px-3 py-2",t),children:[n.jsxs(vs,{className:B("text-muted-foreground/80 hover:text-foreground focus-ring text-2xs","flex w-full items-start gap-2 rounded-sm py-1 text-left leading-relaxed transition-colors"),children:[n.jsx("span",{className:"min-w-0 flex-1",children:RN}),n.jsx(mt,{className:B("mt-0.5 size-3 shrink-0 transition-transform",!o&&"-rotate-90"),"aria-hidden":"true"})]}),n.jsx(ws,{children:n.jsxs("ul",{className:"mt-2 space-y-1.5",children:[IN.map(i=>n.jsxs("li",{className:"text-muted-foreground flex gap-2 text-xs leading-relaxed",children:[n.jsx(Ft,{className:"text-brand mt-0.5 size-3.5 shrink-0","aria-hidden":"true"}),n.jsx("span",{children:i})]},i)),a.map(i=>n.jsxs("li",{className:"text-muted-foreground flex gap-2 text-xs leading-relaxed",children:[n.jsx(rb,{className:"mt-0.5 size-3.5 shrink-0 opacity-60","aria-hidden":"true"}),n.jsx("span",{children:i})]},i))]})})]})}const _N=3e4,PN=e=>["message-search",e];function dr(e){return gp(e).some(t=>t.length>=ml)}function LN(e,t){const s=ie(),r=FN(e,xp),o=t&&dr(e)&&dr(r),{data:a,isFetching:i,error:c}=ve({queryKey:PN(r),queryFn:()=>s.search({q:r}),enabled:o,staleTime:_N,placeholderData:m=>m,retry:!1});return{submitted:o?r:"",tooShort:t&&r.trim().length>0&&!dr(r),results:o?(a==null?void 0:a.results)??[]:[],warnings:o?(a==null?void 0:a.warnings)??[]:[],isSearching:o&&i,error:o&&c instanceof Error?c:null}}function FN(e,t){const[s,r]=l.useState(e);return l.useEffect(()=>{const o=setTimeout(()=>r(e),t);return()=>clearTimeout(o)},[e,t]),s}function $N(){const e=U(t=>t.toggleMessageSearch);l.useEffect(()=>{const t=s=>{(s.metaKey||s.ctrlKey)&&s.shiftKey&&s.code==="KeyF"&&(s.preventDefault(),e())};return document.addEventListener("keydown",t),()=>document.removeEventListener("keydown",t)},[e])}const ur="bg-muted rounded px-1 py-0.5 font-mono text-3xs";function BN(){$N();const e=U(v=>v.messageSearchOpen),t=U(v=>v.messageSearchQuery),s=U(v=>v.setMessageSearchOpen),r=Ae(),o=Te(),a=ie(),[i,c]=l.useState("");l.useEffect(()=>{e&&c(t??"")},[e,t]);const{results:d,warnings:m,tooShort:u,isSearching:f,error:p,submitted:h}=LN(i,e),{data:g}=Rs({includeArchived:!0}),x=l.useMemo(()=>{const v=new Map;for(const N of g??[])v.set(N.id,N.kind==="channel"&&N.slug?`#${N.slug}`:N.title);return v},[g]),b=l.useCallback(()=>s(!1),[s]),y=l.useCallback((v,N)=>{if(N.kind!=="unopenable"&&(b(),o({to:N.to,search:N.search}),N.kind==="session"&&v.containerPath!==null)){const I=v.containerPath;a.browseDirectory(I).catch(D=>{if((D==null?void 0:D.status)===404){ae.info("That folder is gone",{description:`${I} is gone, so nothing new can run there. You can still read it.`});return}ae.info("Couldn’t open that folder",{description:`DorkOS couldn’t read ${I}. The chat may not open.`})})}},[b,o,a]),S=d.length>0,j=!S&&!u&&!f&&h.trim().length>0&&p===null,C=!S&&!u&&h.trim().length>0&&p===null;return n.jsx(et,{open:e,onOpenChange:s,children:n.jsxs(tt,{"data-testid":"message-search-dialog",className:B("!min-h-0 max-w-[560px] overflow-hidden p-0","[&>button:last-child]:top-2 [&>button:last-child]:right-2.5",r&&"h-[85vh]"),children:[n.jsx(Ue,{className:"sr-only",children:"Search your messages"}),n.jsx(W.div,{variants:au,initial:"hidden",animate:"visible",exit:"exit",className:B("flex overflow-hidden",r&&"h-full flex-col"),children:n.jsxs(cl,{loop:!0,shouldFilter:!1,className:B("min-w-0 flex-1",r&&"flex flex-col [&_[cmdk-list]]:max-h-none [&_[cmdk-list]]:flex-1 [&_[cmdk-list]]:overflow-y-auto"),children:[n.jsx(ll,{"data-testid":"message-search-input",placeholder:ON,value:i,onValueChange:c}),p!==null&&n.jsxs("p",{className:"text-destructive flex items-start gap-2 px-3 py-3 text-xs leading-relaxed",children:[n.jsx(yp,{className:"mt-0.5 size-3.5 shrink-0","aria-hidden":"true"}),n.jsx("span",{children:p.message})]}),m.map(v=>n.jsxs("p",{role:"status",className:"text-muted-foreground text-2xs flex items-start gap-2 px-3 pt-2 leading-relaxed",children:[n.jsx(Gi,{className:"mt-0.5 size-3 shrink-0","aria-hidden":"true"}),n.jsx("span",{children:v.message})]},v.source)),n.jsx(dl,{children:n.jsx(un,{className:"h-full",children:S&&n.jsx(ze,{className:B("transition-opacity duration-150",f&&"opacity-60"),children:d.map(v=>{const N=`${v.source}:${v.container}:${v.ordinal}`,I=CN(v);return n.jsx(EN,{value:N,hit:v,containerLabel:NN(v,x),openable:I.kind!=="unopenable",onSelect:()=>y(v,I)},N)})})})}),p===null&&n.jsxs("div",{className:"max-h-[45vh] min-h-0 shrink-0 overflow-y-auto",children:[u&&n.jsx("p",{className:"text-muted-foreground px-3 pt-3 text-xs",children:DN}),j&&n.jsxs("p",{className:"text-muted-foreground px-3 pt-3 text-xs",children:["No messages match “",h.trim(),"”."]}),n.jsx(MN,{detailOpen:C})]}),n.jsxs("div",{className:"text-muted-foreground flex flex-shrink-0 items-center gap-3 border-t px-3 py-1.5 text-xs",children:[n.jsxs("span",{className:"inline-flex items-center gap-1",children:[n.jsx("kbd",{className:ur,children:"↑↓"}),"Navigate"]}),n.jsxs("span",{className:"inline-flex items-center gap-1",children:[n.jsx("kbd",{className:ur,children:"Enter"}),"Open"]}),n.jsxs("span",{className:"ml-auto inline-flex items-center gap-1",children:[n.jsx("kbd",{className:ur,children:"esc"}),"Close"]})]})]})})]})})}function zN(e){return`set${e.charAt(0).toUpperCase()}${e.slice(1)}`}function UN(e){const t=qe(),s=lo(),r=bo();switch(e){case"settings":return{isOpen:t.isOpen,close:t.close};case"tasks":return{isOpen:s.isOpen,close:s.close};case"profile":return{isOpen:r.isOpen,close:r.close};default:return{isOpen:!1,close:()=>{}}}}function KN({contribution:e,openStateKey:t}){const s=U(u=>u[t]),r=U(u=>u[zN(t)]),o=UN(e.urlParam),a=o.isOpen,i=o.close,c=s||a,d=l.useCallback(u=>{r(u),!u&&a&&i()},[r,a,i]),m=e.component;return n.jsx(m,{open:c,onOpenChange:d})}function HN({contribution:e,openState:t}){const s=l.useSyncExternalStore(t.subscribe,t.getSnapshot),r=e.component;return s?n.jsx(bp,{fallback:null,onError:o=>{console.error(`[extensions] Dialog ${e.id} crashed and was closed:`,o),t.set(!1)},children:n.jsx(r,{open:!0,onOpenChange:t.set})}):null}function qN({contribution:e}){return e.openState?n.jsx(HN,{contribution:e,openState:e.openState}):n.jsx(KN,{contribution:e,openStateKey:e.openStateKey})}function WN(){const e=Is("dialog");return n.jsx(n.Fragment,{children:e.map(t=>n.jsx(qN,{contribution:t},t.id))})}const GN=["session","id","thread","entry","itemId","agent","profile","continuedFrom","pkg","view","region","detail","panel"];function YN(e,t){if(e.length>=Ks)return e.slice(0,Ks);const s=new URLSearchParams(t);let r="";for(const o of GN)for(const a of s.getAll(o)){const i=new URLSearchParams([[o,a]]).toString(),c=r?`${r}&${i}`:i;e.length+1+c.length<=Ks&&(r=c)}return r?`${e}?${r}`:e}const VN=6e4,QN={bug:"when it’s fixed",idea:"when it ships",feedback:"when the team acts on it"};function XN(e,t){var s;return JSON.stringify([e.kind,t,e.screenshotDataUrl??null,((s=e.element)==null?void 0:s.selector)??null])}function yi(e,t,s,r){const o=Ml("bug",e,t),a=[...kp()];r&&a.push({at:new Date().toISOString(),kind:"console_error",message:wp(r).slice(0,jp)});const i=a.slice(-Sp);return{clientReport:{version:o.version,platform:o.platform,runtimes:o.runtimes,flags:Object.fromEntries(Object.entries(o.flags).map(([c,d])=>[c,typeof d=="number"?String(d):d])),...Cb(s)},...i.length>0?{breadcrumbs:i}:{}}}function JN(){const e=ie(),t=Ee({select:h=>h.location.pathname}),s=Ee({select:h=>h.location.searchStr}),r=vp(),o=YN(t,s),a=Ee({select:h=>{const g=h.location.search;return typeof(g==null?void 0:g.session)=="string"?g.session:void 0}}),{data:i}=ve({queryKey:Oe.current(),queryFn:()=>e.getConfig(),staleTime:300*1e3}),[c,d]=l.useState(!1),m=Te(),u=l.useRef(null),f=l.useCallback(h=>i?yi(i,t,r,h==null?void 0:h.crashStack):void 0,[i,t,r]),p=l.useCallback(async h=>{var v;const g=h.message.trim();if(!g)return!1;const x=(v=h.contact)==null?void 0:v.trim(),b=XN(h,g),y=u.current;if(y&&y.fingerprint===b&&Date.now()-y.at<VN)return ae.info("Already sent a moment ago."),!0;const S=h.includeDiagnostics?yi(i,t,r,h.crashStack):void 0,j=h.includeDiagnostics&&h.kind==="bug",C=!!(h.includeConversation&&a);d(!0);try{const N=S&&j?await fb():void 0,{ok:I}=await e.sendFeedback({kind:h.kind,message:g,...x?{contact:x}:{},...o?{route:o}:{},...S?{diagnostics:{...S,...N?{shellLogExcerpt:N}:{}}}:{},...j?{includeServerLogs:!0}:{},...C?{sessionId:a,includeTranscript:!0}:{},...h.screenshotDataUrl?{screenshot:{dataUrl:h.screenshotDataUrl}}:{},...h.anonymous?{anonymous:!0}:{},...h.element?{element:h.element}:{}});return I?(u.current={fingerprint:b,at:Date.now()},ae.success("Sent. Thank you.",{...h.notifyEmail?{description:`DorkOS emails ${h.notifyEmail} ${QN[h.kind]}.`}:{},action:{label:"Your reports",onClick:()=>m(pe.feedbackRequests())}})):ae.error("Couldn’t send. Your words are still here. Try again or open a GitHub issue."),I}finally{d(!1)}},[e,t,o,a,i,r,m]);return{isSubmitting:c,sessionId:a,route:o,buildDiagnostics:f,send:p}}const ZN=24;function bi(e,t){const s=Math.max(e.left,t.left),r=Math.max(e.top,t.top),o=Math.min(e.left+e.width,t.left+t.width),a=Math.min(e.top+e.height,t.top+t.height);return o<=s||a<=r?null:{left:s,top:r,width:o-s,height:a-r}}function eA(e){const{element:t,viewport:s,region:r,image:o}=e,a=e.padding??ZN;if(o.width<=0||o.height<=0)return null;const i={left:t.left-a,top:t.top-a,width:t.width+a*2,height:t.height+a*2},c=bi(i,{left:0,top:0,width:s.width,height:s.height});if(!c)return null;const d=bi(c,r);if(!d)return null;const m=o.width/r.width,u=o.height/r.height,f=Math.round((d.left-r.left)*m),p=Math.round((d.top-r.top)*u),h=Math.round((d.left+d.width-r.left)*m),g=Math.round((d.top+d.height-r.top)*u),x=Math.min(Math.max(0,f),Math.max(0,o.width-1)),b=Math.min(Math.max(0,p),Math.max(0,o.height-1));return{sx:x,sy:b,sw:Math.max(1,h-x),sh:Math.max(1,g-b)}}function tA(e){return new Promise((t,s)=>{const r=new Image,o=i=>{clearTimeout(a),s(new Ke("failed",i))},a=setTimeout(()=>o(`The capture did not decode within ${us}ms.`),us);r.onload=()=>{clearTimeout(a),t(r)},r.onerror=()=>o("The capture did not decode, so it cannot be cropped."),r.src=e})}function nA(e,t){const s=document.createElement("canvas");s.width=t.sw,s.height=t.sh;const r=s.getContext("2d");if(!r)throw new Ke("failed","This browser gave no 2d canvas context to crop with.");return r.drawImage(e,t.sx,t.sy,t.sw,t.sh,0,0,t.sw,t.sh),s.toDataURL("image/png")}async function sA(e,t){const s=t.getBoundingClientRect();if(s.width===0&&s.height===0)throw new Ke("failed","That element has no size to crop to.");if(!td().contains(t))throw new Ke("failed","That element is not part of the app that was captured.");const r=await tA(e.dataUrl),o=eA({element:{left:s.left,top:s.top,width:s.width,height:s.height},viewport:{width:window.innerWidth,height:window.innerHeight},region:e.region,image:{width:r.naturalWidth||r.width,height:r.naturalHeight||r.height}});if(!o)throw new Ke("failed","That element is no longer inside the captured picture.");return Dr(nA(r,o))}const vi={"too-large":"That image is too big to send. Crop it to the part that matters.",unreadable:"Couldn’t read that image. Try a PNG or JPEG.",unsupported:"This browser can’t prepare images to send."},rA={failed:"Couldn’t capture the app view. You can still add a screenshot yourself.",unsupported:"Couldn’t start the app capture. Reload, or add a screenshot yourself."};function oA(e){return e instanceof Ke?rA[e.reason]:e instanceof St?vi[e.reason]:vi.unreadable}const mr="Only images can be attached.",aA="Files";function on(e){return e?Array.from(e.types).includes(aA):!1}function wi(e){return e.find(t=>t.type.startsWith("image/"))}function iA(e={}){const{enabled:t=!1}=e,[s,r]=l.useState(null),[o,a]=l.useState(!1),[i,c]=l.useState(!1),d=l.useRef(0),m=l.useRef(0),u=l.useCallback(async v=>{const N=++m.current;a(!0);try{const I=await v();return N!==m.current?null:(r(I),I)}catch(I){return N!==m.current||ae.error(oA(I)),null}finally{N===m.current&&a(!1)}},[]),f=l.useCallback(async v=>{if(!v.type.startsWith("image/")){ae.error(mr);return}await u(()=>Dr(v))},[u]),p=l.useCallback(async()=>{await u(async()=>Dr(await jb()))},[u]),h=l.useCallback(v=>u(async()=>sA(await nd(),v)),[u]),g=l.useCallback(()=>{m.current+=1,r(null),a(!1)},[]),x=l.useCallback(v=>{m.current+=1,d.current=0,v!==void 0&&!Db(v)?(console.warn("[feedback] Ignoring an initial screenshot that is not a bounded image data URL."),r(null)):r(v??null),a(!1),c(!1)},[]);l.useEffect(()=>{if(!t)return;const v=N=>{on(N.dataTransfer)&&N.preventDefault()};return window.addEventListener("dragover",v),window.addEventListener("drop",v),()=>{window.removeEventListener("dragover",v),window.removeEventListener("drop",v)}},[t]);const b=l.useCallback(v=>{var D;const N=Array.from(((D=v.clipboardData)==null?void 0:D.items)??[]).map(T=>T.getAsFile()).filter(T=>T!==null);if(N.length===0)return;const I=wi(N);if(!I){ae.error(mr);return}v.preventDefault(),f(I)},[f]),y=l.useCallback(v=>{on(v.dataTransfer)&&(v.preventDefault(),d.current+=1,c(!0))},[]),S=l.useCallback(v=>{on(v.dataTransfer)&&(v.preventDefault(),v.dataTransfer.dropEffect="copy")},[]),j=l.useCallback(v=>{on(v.dataTransfer)&&(d.current=Math.max(0,d.current-1),d.current===0&&c(!1))},[]),C=l.useCallback(v=>{if(!on(v.dataTransfer))return;v.preventDefault(),d.current=0,c(!1);const N=wi(Array.from(v.dataTransfer.files));if(!N){ae.error(mr);return}f(N)},[f]);return{dataUrl:s,isPreparing:o,isDraggingOver:i,attach:f,capture:p,captureElement:h,clear:g,reset:x,handlers:{onPaste:b,onDragEnter:y,onDragOver:S,onDragLeave:j,onDrop:C}}}const ji=Ap,cA="root";function Su(e){return typeof CSS<"u"&&typeof CSS.escape=="function"?CSS.escape(e):e.replace(/["'\\[\]]/g,t=>`\\${t}`)}function ki(e,t){try{const s=t.ownerDocument.querySelectorAll(e);return s.length===1&&s[0]===t}catch{return!1}}function Cu(e){return e.id?`#${Su(e.id)}`:null}function Yr(e,t){const s=e.getAttribute(t);return s?`[${t}="${Su(s)}"]`:null}function lA(e){const t=e.tagName;let s=1,r=e.previousElementSibling;for(;r;)r.tagName===t&&(s+=1),r=r.previousElementSibling;return s}function dA(e){const t=e.tagName.toLowerCase(),s=Cu(e);if(s)return s;const r=Yr(e,"data-testid")??Yr(e,"data-slot"),o=`:nth-of-type(${lA(e)})`;if(!r)return`${t}${o}`;const a=`${t}${r}`;return(e.parentElement?Array.from(e.parentElement.children).filter(c=>c.matches(a)):[e]).length===1?a:`${a}${o}`}function uA(e){for(const r of[Cu(e),Yr(e,"data-testid")])if(r&&r.length<=ji&&ki(r,e))return r;const t=[];let s=e;for(;s&&s.id!==cA&&s.tagName!=="BODY";){t.unshift(dA(s));const r=t.join(" > ");if(r.length>ji){t.shift();break}if(ki(r,e))return r;s=s.parentElement}return t.join(" > ")||e.tagName.toLowerCase()}function Si(e,t){var r;const s=(r=e.closest(`[${t}]`))==null?void 0:r.getAttribute(t);if(!(!s||s.length>Cp))return s}function mA(e){const t=Si(e,"data-slot"),s=Si(e,"data-testid"),r=Nu(e);return{selector:uA(e),...t?{slot:t}:{},...s?{testId:s}:{},...r?{label:r}:{}}}const hr=40,hA=["button","a[href]","summary","input","select","textarea",'[role="button"]','[role="link"]','[role="menuitem"]','[role="tab"]','[role="option"]','[role="checkbox"]','[role="switch"]'].join(", "),fA=new Set(["INPUT","SELECT","TEXTAREA"]),pA=['[contenteditable]:not([contenteditable="false"])','[role="textbox"]','[role="searchbox"]','[role="combobox"]'].join(", "),gA=["h1","h2","h3","h4","h5","h6",'[role="heading"]',"label","legend","th","dt"].join(", ");function xA(e){if(typeof Intl<"u"&&"Segmenter"in Intl){const t=new Intl.Segmenter(void 0,{granularity:"grapheme"});return Array.from(t.segment(e),s=>s.segment)}return Array.from(e)}function fn(e){const t=(e??"").replace(/\s+/g," ").trim();if(!t)return;const s=xA(t);if(s.length<=hr)return t;const r=s.slice(0,hr-1),o=r.lastIndexOf(" ");return`${(o>hr/2?r.slice(0,o):r).join("").trimEnd()}…`}function yA(e){var r;const s=(((r=e.getAttribute("aria-labelledby"))==null?void 0:r.split(/\s+/).filter(Boolean))??[]).map(o=>{var a;return((a=e.ownerDocument.getElementById(o))==null?void 0:a.textContent)??""}).join(" ");return fn(s)}function Jn(e){return fn(e.getAttribute("aria-label"))??yA(e)}function Nu(e){const t=bA(e);return t&&t.length<=Np?t:void 0}function bA(e){var a,i;const t=e.closest(pA);if(t)return Jn(t);const s=e.closest(hA);if(s){if(fA.has(s.tagName)){const c=s;return Jn(s)??fn((i=(a=c.labels)==null?void 0:a[0])==null?void 0:i.textContent)}return Jn(s)??fn(s.textContent)}const r=Jn(e);if(r)return r;const o=e.closest(gA);return o?fn(o.textContent):void 0}function Ci(e){const t=e.replace(/([a-z0-9])([A-Z])/g,"$1 $2").split(/[-_\s]+/).filter(Boolean).map(r=>r.toLowerCase());if(t.length===0)return null;const s=t.join(" ");return s.charAt(0).toUpperCase()+s.slice(1)}function vA(e){var c;const t=Nu(e);if(t)return{text:t,onScreen:!0};const s=e.getAttribute("data-testid")??e.getAttribute("data-slot"),r=s?Ci(s):null;if(r)return{text:r,onScreen:!1};const o=(c=e.parentElement)==null?void 0:c.closest("[data-testid], [data-slot]"),a=(o==null?void 0:o.getAttribute("data-testid"))??(o==null?void 0:o.getAttribute("data-slot")),i=a?Ci(a):null;return i?{text:i,onScreen:!1}:null}const wA="This part";function Au(e){return(e==null?void 0:e.text)??wA}function jA(e){return e?e.onScreen?`What’s wrong with “${e.text}”?`:`What’s wrong with the ${e.text.toLowerCase()}?`:"What’s wrong with this part?"}function kA(e){return e!=null&&e.onScreen?`Remove “${e.text}”`:`Remove ${Au(e).toLowerCase()}`}const Ni=500;function Ai(e){const t=e.trim();return t.length>Ni?`${t.slice(0,Ni)}… [trimmed]`:t}function SA(e){const t=[`${e.role}: ${e.content.trim()}`.trim()];for(const s of e.toolCalls??[])t.push(` [tool: ${s.toolName}]`),s.input&&t.push(` input: ${Ai(s.input)}`),s.result&&t.push(` result: ${Ai(s.result)}`);return t.join(`
|
|
92
|
+
`)}function CA(e){const t=e.slice(-20),s=Ep(Ip(t.map(SA).join(`
|
|
93
|
+
|
|
94
|
+
`))).trim();return s.length>la?`${s.slice(0,la-1)}…`:s}function NA(e,t){const s=ie(),[r]=Mn(),{data:o,isLoading:a,isError:i}=ve({queryKey:["feedback-transcript-preview",e,r],queryFn:async()=>{const{messages:c}=await s.getMessages(e,r??void 0);return CA(c)},enabled:t&&!!e,staleTime:30*1e3});return{text:o??"",isLoading:a,isError:i}}function AA(){return n.jsx("div",{"data-slot":"feedback-preview-footer",className:"bg-background relative -mx-4 -mb-4 shrink-0 border-t px-4 py-3 sm:mx-0 sm:px-0",children:n.jsxs("p",{className:"text-muted-foreground flex items-center gap-1.5 text-xs",children:[n.jsx(hl,{className:"size-3 shrink-0","aria-hidden":!0}),"Private. Only the DorkOS core team sees these. Never public."]})})}function Be({label:e,value:t}){return n.jsxs("div",{className:"flex items-baseline justify-between gap-4 py-1",children:[n.jsx("span",{className:"text-muted-foreground shrink-0 text-xs",children:e}),n.jsx("span",{className:"text-foreground text-right font-mono text-xs break-all",children:t})]})}function EA({diagnostics:e,kind:t,route:s}){if(!e)return n.jsx("p",{className:"text-muted-foreground text-xs",children:"Gathering diagnostics…"});const{clientReport:r,breadcrumbs:o}=e,{viewport:a,browser:i,shell:c,theme:d,locale:m,timezone:u}=r;return n.jsxs("div",{className:"flex flex-col gap-3",children:[n.jsxs("div",{className:"rounded-md border p-3",children:[n.jsx(Be,{label:"Page",value:s}),n.jsx(Be,{label:"Version",value:r.version}),n.jsx(Be,{label:"Platform",value:r.platform}),n.jsx(Be,{label:"Runtimes",value:r.runtimes.length?r.runtimes.join(", "):"none"}),a&&n.jsx(Be,{label:"Window",value:`${a.width}×${a.height}${a.devicePixelRatio&&a.devicePixelRatio!==1?` @${a.devicePixelRatio}x`:""}`}),c&&n.jsx(Be,{label:"Shell",value:c}),d&&n.jsx(Be,{label:"Theme",value:d}),m&&n.jsx(Be,{label:"Locale",value:m}),u&&n.jsx(Be,{label:"Timezone",value:u}),i&&n.jsx(Be,{label:"Browser",value:i}),Object.entries(r.flags).map(([f,p])=>n.jsx(Be,{label:f,value:String(p)},f))]}),n.jsxs("div",{className:"flex flex-col gap-1.5",children:[n.jsxs("span",{className:"text-muted-foreground text-xs font-medium",children:["Recent events (",(o==null?void 0:o.length)??0,")"]}),o&&o.length>0?n.jsx("ul",{className:"flex flex-col gap-1",children:o.map((f,p)=>n.jsxs("li",{className:"text-foreground font-mono text-xs break-all",children:[n.jsx("span",{className:"text-muted-foreground",children:f.kind})," ",f.message]},p))}):n.jsx("p",{className:"text-muted-foreground text-xs",children:"No recent errors or warnings."})]}),t==="bug"&&n.jsxs("div",{className:"text-muted-foreground space-y-1 text-xs",children:[n.jsx("p",{children:Me()?"Recent server and app log excerpts are added when you send.":"An excerpt of recent server logs is added when you send."}),n.jsx("p",{children:"Scrubbed first: home paths shown as ~, tokens removed, web addresses cut to the page."})]})]})}function IA({sessionId:e,active:t}){const{text:s,isLoading:r,isError:o}=NA(e,t);return r?n.jsxs("div",{className:"flex flex-col gap-2",children:[n.jsx(yt,{className:"h-4 w-3/4"}),n.jsx(yt,{className:"h-4 w-full"}),n.jsx(yt,{className:"h-4 w-2/3"})]}):o?n.jsx("p",{className:"text-muted-foreground text-xs",children:"Couldn’t load the chat preview."}):s?n.jsxs("div",{className:"flex flex-col gap-2",children:[n.jsxs("div",{className:"text-muted-foreground space-y-1 text-xs",children:[n.jsx("p",{children:"The last ~10 turns, gathered and scrubbed when you send."}),n.jsx("p",{children:"Home paths shown as ~, tokens removed, long tool output trimmed."})]}),n.jsx("pre",{className:"text-foreground bg-muted/40 rounded-md p-3 font-mono text-xs break-words whitespace-pre-wrap",children:s})]}):n.jsx("p",{className:"text-muted-foreground text-xs",children:"No recent chat to attach."})}function TA({dataUrl:e}){return n.jsxs("div",{className:"flex flex-col gap-2",children:[n.jsx("p",{className:"text-muted-foreground text-xs",children:"Sent exactly as shown, shrunk to keep the message small."}),n.jsx("img",{src:e,alt:"The screenshot you attached",className:"bg-muted/30 w-full rounded-md border object-contain"})]})}function RA({open:e,onOpenChange:t,initialTab:s,diagnostics:r,kind:o,route:a,showConversation:i,sessionId:c,screenshotDataUrl:d}){const m=!Ae(),u=["diagnostics",...i?["conversation"]:[],...d?["screenshot"]:[]],f=u.includes(s)?s:"diagnostics";return n.jsx(et,{open:e,onOpenChange:t,children:n.jsxs(tt,{className:B("max-h-[85vh]",m&&"max-w-lg"),children:[n.jsxs(Xe,{children:[n.jsx(Ue,{className:"text-sm font-medium",children:"What will be sent"}),n.jsx(Je,{className:"text-muted-foreground text-xs",children:"Each part is sent only if its toggle is on."})]}),n.jsxs(Cl,{defaultValue:f,className:"flex min-h-0 flex-col gap-3 px-4 pb-4 sm:px-0",children:[n.jsxs(Nl,{className:B("grid shrink-0",u.length===3&&"grid-cols-3",u.length===2&&"grid-cols-2",u.length===1&&"grid-cols-1"),children:[n.jsx(es,{value:"diagnostics",children:"Diagnostics"}),i&&n.jsx(es,{value:"conversation",children:"Chat"}),d&&n.jsx(es,{value:"screenshot",children:"Screenshot"})]}),n.jsx(Ws,{value:"diagnostics",className:"min-h-0",children:n.jsx(un,{className:"max-h-[45vh]",children:n.jsx(EA,{diagnostics:r,kind:o,route:a})})}),i&&n.jsx(Ws,{value:"conversation",className:"min-h-0",children:n.jsx(un,{className:"max-h-[45vh]",children:n.jsx(IA,{sessionId:c,active:e})})}),d&&n.jsx(Ws,{value:"screenshot",className:"min-h-0",children:n.jsx(un,{className:"max-h-[45vh]",children:n.jsx(TA,{dataUrl:d})})}),n.jsx(AA,{})]},f)]})})}const DA="0 0 0 9999px rgb(0 0 0 / 0.5)";function OA(e){var r,o;const t=(r=e.closest("[data-slot]"))==null?void 0:r.getAttribute("data-slot");return((o=e.closest("[data-testid]"))==null?void 0:o.getAttribute("data-testid"))??t??e.tagName.toLowerCase()}function MA(e){let t=e;for(;t;){if(/^(auto|scroll|overlay)$/.test(getComputedStyle(t).overflowY)&&t.scrollHeight>t.clientHeight)return t;t=t.parentElement}return null}function _A({phase:e,onSelect:t,onCancel:s}){const r=l.useRef(null),o=l.useRef(null),[a,i]=l.useState(null),c=e==="picking",d=l.useCallback((x,b)=>{const y=r.current;if(!y)return null;const S=y.style.pointerEvents;y.style.pointerEvents="none";try{return document.elementFromPoint(x,b)}finally{y.style.pointerEvents=S}},[]),m=l.useCallback(x=>{var b;return x instanceof Node&&!!((b=o.current)!=null&&b.contains(x))},[]),u=l.useCallback(x=>{if(!c)return;if(m(x.target)){i(null);return}const b=d(x.clientX,x.clientY);if(!b){i(null);return}const y=b.getBoundingClientRect();i({element:b,box:{left:y.left,top:y.top,width:y.width,height:y.height},label:OA(b)})},[c,d,m]),f=l.useCallback(x=>{if(!c||m(x.target))return;const b=d(x.clientX,x.clientY)??(a==null?void 0:a.element);b&&t(b)},[c,d,m,t,a]),p=l.useCallback(x=>{if(!c)return;const b=MA(d(x.clientX,x.clientY));b==null||b.scrollBy({left:x.deltaX,top:x.deltaY})},[c,d]);l.useEffect(()=>{if(!c)return;const x=b=>{b.preventDefault(),b.stopImmediatePropagation(),b.key==="Escape"&&s()};return window.addEventListener("keydown",x,!0),()=>window.removeEventListener("keydown",x,!0)},[c,s]),l.useEffect(()=>{var b;const x=document.activeElement;return(b=r.current)==null||b.focus(),()=>{x instanceof HTMLElement&&x.focus()}},[]),l.useEffect(()=>{if(!c)return;const x=()=>{i(b=>{if(!b)return b;const y=b.element.getBoundingClientRect();return{...b,box:{left:y.left,top:y.top,width:y.width,height:y.height}}})};return window.addEventListener("scroll",x,!0),()=>window.removeEventListener("scroll",x,!0)},[c]);const h=c?a:null,g=h!==null&&h.box.top<28;return xs.createPortal(n.jsxs("div",{ref:r,role:"dialog","aria-modal":"true","aria-label":"Point at the part of the app that looks wrong",tabIndex:-1,className:B("fixed inset-0 z-50 focus:outline-none",c?"cursor-crosshair":"cursor-wait"),onPointerMove:u,onPointerLeave:()=>i(null),onClick:f,onWheel:p,onContextMenu:x=>{x.preventDefault(),c&&s()},children:[c&&(h?n.jsxs(n.Fragment,{children:[n.jsx("div",{className:"border-primary pointer-events-none absolute rounded-sm border-2",style:{left:h.box.left,top:h.box.top,width:h.box.width,height:h.box.height,boxShadow:DA}}),n.jsx("div",{className:"bg-primary text-primary-foreground pointer-events-none absolute max-w-[60vw] truncate rounded-sm px-1.5 py-0.5 font-mono text-[11px] leading-tight",style:{left:Math.max(4,h.box.left),top:g?h.box.top+h.box.height+4:h.box.top-22},children:h.label})]}):n.jsx("div",{className:"absolute inset-0 bg-black/50"})),c&&n.jsxs("div",{ref:o,className:"bg-popover text-popover-foreground absolute bottom-6 left-1/2 flex -translate-x-1/2 items-center gap-3 rounded-lg border px-3 py-2 shadow-lg",children:[n.jsxs("span",{className:"flex items-center gap-2 text-xs",children:[n.jsx(ds,{className:"size-3.5 shrink-0","aria-hidden":!0}),"Click the part that looks wrong. Esc to cancel."]}),n.jsx("button",{type:"button",onClick:s,className:"text-muted-foreground hover:text-foreground focus-visible:ring-ring rounded-sm text-xs underline underline-offset-2 transition-colors duration-150 focus-visible:ring-2 focus-visible:outline-none",children:"Cancel"})]})]}),document.body)}const Ei="text-muted-foreground hover:text-foreground h-8 px-2 text-xs aria-disabled:pointer-events-none aria-disabled:opacity-50";function fr({tip:e,children:t}){return n.jsxs(Bt,{children:[n.jsx(zt,{asChild:!0,children:t}),n.jsx(Ut,{className:"max-w-60 text-center",children:e})]})}function PA({showPictureTools:e,isPreparing:t,hasPointed:s,hasWords:r,isMobile:o,onCapture:a,onPointAtElement:i,onPick:c}){const d=l.useId(),m=l.useId(),u=l.useId(),f=l.useId();function p(S){var C;const j=(C=S.target.files)==null?void 0:C[0];S.target.value="",j&&c(j)}const h=r&&!o;if(!e&&!h)return null;const g=o?"Add a photo":"Add an image",x=o?"Add a photo from your library.":"Add an image from your files, or paste or drop one here.",b="Take a picture of this app. Never the rest of your screen.",y="Click the part that looks wrong. DorkOS crops the picture to it.";return n.jsxs("div",{className:"flex flex-wrap items-center gap-1 border-t px-1.5 py-1.5",children:[e&&n.jsxs(n.Fragment,{children:[n.jsx("span",{id:m,className:"sr-only",children:b}),n.jsx(fr,{tip:b,children:n.jsxs(_,{"aria-describedby":m,type:"button",variant:"ghost",size:"sm",onClick:()=>{t||a()},"aria-disabled":t||void 0,className:Ei,children:[n.jsx(Qy,{className:"size-3.5","aria-hidden":!0}),"Capture app"]})}),!o&&n.jsx(fr,{tip:y,children:n.jsxs(_,{"aria-describedby":u,type:"button",variant:"ghost",size:"sm",onClick:()=>{t||i()},"aria-disabled":t||void 0,className:Ei,children:[n.jsx(ds,{className:"size-3.5","aria-hidden":!0}),s?"Point again":"Point at it"]})}),!o&&n.jsx("span",{id:u,className:"sr-only",children:y}),n.jsx("span",{id:f,className:"sr-only",children:x}),n.jsx(fr,{tip:x,children:n.jsxs("label",{htmlFor:d,"aria-disabled":t||void 0,className:"text-muted-foreground hover:text-foreground hover:bg-accent focus-within:ring-ring flex size-8 cursor-pointer items-center justify-center rounded-md transition-colors duration-150 focus-within:ring-2 aria-disabled:pointer-events-none aria-disabled:opacity-50",children:[n.jsx(Tp,{className:"size-3.5","aria-hidden":!0}),n.jsx("input",{id:d,type:"file",accept:"image/*","aria-label":g,"aria-describedby":f,disabled:t,className:"sr-only",onChange:p})]})})]}),h&&n.jsxs("span",{className:"text-muted-foreground ml-auto pr-1.5 text-xs","aria-hidden":!0,children:[jt?"⌘↵":"Ctrl+↵"," to send"]})]})}function Ii({imageUrl:e,alt:t,caption:s,pointed:r=!1,detail:o,onOpen:a,onRemove:i,removeLabel:c}){const d=n.jsxs(n.Fragment,{children:[e?n.jsx("img",{src:e,alt:t,className:"size-full object-cover"}):n.jsx("span",{className:"text-muted-foreground flex size-full items-center justify-center",children:n.jsx(ds,{className:"size-4","aria-hidden":!0})}),s&&n.jsxs("span",{className:"bg-background/85 absolute inset-x-0 bottom-0 flex items-center gap-1 truncate px-1.5 py-0.5 text-left text-[11px] leading-tight",children:[r&&n.jsx(ds,{className:"size-3 shrink-0","aria-hidden":!0}),n.jsx("span",{className:"truncate",children:s})]})]}),m=a?n.jsx("button",{type:"button",onClick:a,"aria-label":`Open ${t.charAt(0).toLowerCase()}${t.slice(1)}`,className:"focus-visible:ring-ring relative block size-full overflow-hidden rounded-[inherit] focus-visible:ring-2 focus-visible:outline-none",children:d}):n.jsx("div",{role:"img","aria-label":t,className:"relative size-full overflow-hidden rounded-[inherit]",children:d});return n.jsxs("div",{className:"bg-muted/40 relative h-16 w-28 shrink-0 rounded-md border",children:[o&&a?n.jsxs(Bt,{children:[n.jsx(zt,{asChild:!0,children:m}),n.jsx(Ut,{className:"max-w-72 font-mono text-[11px] break-all",children:o})]}):m,n.jsx("button",{type:"button",onClick:i,"aria-label":c,className:"bg-background/90 text-muted-foreground hover:text-foreground focus-visible:ring-ring absolute top-1 right-1 flex size-5 items-center justify-center rounded-full border transition-colors duration-150 focus-visible:ring-2 focus-visible:outline-none",children:n.jsx(Le,{className:"size-3","aria-hidden":!0})})]})}function Ti({label:e,summary:t,pressed:s,onPressedChange:r,onPreview:o}){return n.jsxs("span",{className:B("inline-flex items-center rounded-full border text-xs transition-colors duration-150",s?"bg-muted/60 text-foreground":"text-muted-foreground"),children:[n.jsxs(Bt,{children:[n.jsx(zt,{asChild:!0,children:n.jsxs("button",{type:"button","aria-pressed":s,onClick:()=>r(!s),className:"hover:text-foreground focus-visible:ring-ring flex items-center gap-1.5 rounded-full py-1 pr-1.5 pl-2.5 focus-visible:ring-2 focus-visible:outline-none",children:[n.jsx("span",{"aria-hidden":!0,className:B("size-1.5 rounded-full transition-colors duration-150",s?"bg-primary":"bg-muted-foreground/40")}),e]})}),n.jsx(Ut,{className:"max-w-60",children:t})]}),n.jsx("button",{type:"button",onClick:o,"aria-label":`Preview ${e.toLowerCase()}`,className:"text-muted-foreground hover:text-foreground focus-visible:ring-ring flex items-center rounded-full py-1 pr-2.5 pl-1 focus-visible:ring-2 focus-visible:outline-none",children:n.jsx(Rp,{className:"size-3.5","aria-hidden":!0})})]})}function LA({currentUser:e,anonymous:t,onToggleAnonymous:s,contact:r,onContactChange:o}){const a=l.useId(),i=l.useId();if(e)return n.jsxs("div",{className:"flex flex-col gap-1",children:[n.jsxs("div",{className:"text-muted-foreground flex items-center gap-1.5 text-xs",children:[t?n.jsx(ib,{className:"size-3.5 shrink-0","aria-hidden":!0}):n.jsx(Dp,{className:"size-3.5 shrink-0","aria-hidden":!0}),n.jsx("span",{className:"min-w-0 flex-1 truncate",children:t?"Sending anonymously":`Replying to ${e.email}`}),n.jsx("button",{type:"button",onClick:s,className:"text-muted-foreground hover:text-foreground focus-visible:ring-ring shrink-0 rounded-sm underline underline-offset-2 transition-colors duration-150 focus-visible:ring-2 focus-visible:outline-none",children:t?"Use my account":"Send anonymously"})]}),t&&n.jsx("p",{className:"text-muted-foreground text-xs",children:"Without your name or email, the team can’t reply. Track it in Your reports."})]});const c=r.trim().length>0&&!fl(r);return n.jsxs("div",{className:"flex flex-col gap-1.5",children:[n.jsx(Pe,{htmlFor:a,className:"text-xs",children:"Your email"}),n.jsx(Ze,{id:a,type:"email",inputMode:"email",autoComplete:"email",value:r,onChange:d=>o(d.target.value),placeholder:"you@example.com",maxLength:Op,"aria-describedby":i,onKeyDown:d=>{d.key==="Enter"&&!d.metaKey&&!d.ctrlKey&&d.preventDefault()},"aria-invalid":c||void 0}),n.jsx("p",{id:i,className:"text-muted-foreground text-xs",children:c?"Not an email yet, so no reply can reach you.":"Get a note when it’s fixed. DorkOS remembers it."})]})}const FA=[{value:"feedback",label:"Feedback",icon:Kt},{value:"bug",label:"Bug",icon:Mp},{value:"idea",label:"Idea",icon:kx}];function $A({kind:e,onChange:t}){return n.jsx("div",{role:"radiogroup","aria-label":"What kind of feedback",className:"flex gap-1.5",children:FA.map(({value:s,label:r,icon:o})=>{const a=e===s;return n.jsxs("button",{type:"button",role:"radio","aria-checked":a,onClick:()=>t(s),className:B("focus-visible:ring-ring flex items-center gap-1.5 rounded-full border px-3 py-1 text-xs font-medium transition-colors duration-150 focus-visible:ring-2 focus-visible:outline-none",a?"border-foreground/60 text-foreground bg-muted/60":"text-muted-foreground hover:text-foreground"),children:[n.jsx(o,{className:"size-3.5","aria-hidden":!0}),r]},s)})})}function BA({needsWords:e,canSend:t,isSubmitting:s,onOpenGitHubIssue:r}){const o=l.useId();return n.jsxs(Rt,{className:"shrink-0 flex-col gap-2 sm:flex-col sm:justify-start sm:space-x-0",children:[n.jsxs("div",{className:"flex items-center gap-3",children:[e?n.jsx("p",{id:o,"aria-live":"polite",className:"text-status-warning min-w-0 flex-1 text-xs",children:"Add a few words about what to look for."}):n.jsxs("p",{className:"text-muted-foreground flex min-w-0 flex-1 items-center gap-1.5 text-xs",children:[n.jsx(hl,{className:"size-3 shrink-0","aria-hidden":!0}),"Only the DorkOS team sees this"]}),n.jsx(_,{type:"submit",disabled:!t,"aria-keyshortcuts":"Meta+Enter Control+Enter","aria-describedby":e?o:void 0,className:"shrink-0",children:s?"Sending…":"Send"})]}),n.jsxs("p",{className:"text-muted-foreground text-center text-xs",children:["Prefer a public GitHub issue?"," ",n.jsx("button",{type:"button",onClick:r,className:"hover:text-foreground focus-visible:ring-ring rounded-sm underline underline-offset-2 transition-colors duration-150 focus-visible:ring-2 focus-visible:outline-none",children:"Open one instead"})]})]})}const zA={feedback:"What works, what does not, what you wish it did…",bug:"What happened, and what did you expect instead?",idea:"What would you like DorkOS to do?"};function Ri(e,t,s){return{diagnostics:e==="bug"||s,conversation:e==="bug"&&t}}function UA({open:e,onOpenChange:t,initialKind:s,prefillMessage:r,crashStack:o,currentUser:a,initialScreenshotDataUrl:i}){const c=!Ae(),{isSubmitting:d,sessionId:m,route:u,buildDiagnostics:f,send:p}=JN(),h=Uy(),g=!!m,x=!!a,b=l.useId(),[y,S]=l.useState(s??"feedback"),[j,C]=l.useState(r??""),[v,N]=l.useState(da),[I,D]=l.useState(!1),[T,A]=l.useState(!1),[w,E]=l.useState(!1),[k,O]=l.useState(!1),[R,M]=l.useState("diagnostics"),[P,F]=l.useState(null),[Y,ee]=l.useState(null),[q,te]=l.useState(null),[ne,se]=l.useState(null),[V,$]=l.useState(0),L=l.useRef(V);l.useEffect(()=>{L.current=V},[V]);const[Q,K]=l.useState(!1),[le,je]=l.useState(o),[ke,We]=l.useState(m),X=l.useRef(null),J=iA({enabled:e}),H=j.trim().length>0,de=H||J.dataUrl!==null||P!==null,[ye,be]=l.useState(e);if(e!==ye&&(be(e),e)){O(!1),se(null);const Z=i;if(!!(r||o||Z)||!de){const Un=s??"feedback",Kn=Ri(Un,g,!!o);S(Un),C(r??""),N(da()),D(!1),A(Kn.diagnostics),E(Kn.conversation),K(!1),F(null),ee(null),je(o),We(m),J.reset(Z),$($s=>$s+1)}else m!==ke&&(E(!1),We(m))}function Fe(Z){const $e=Ri(Z,g,!!le);A($e.diagnostics),E($e.conversation)}function At(Z){S(Z),Fe(Z)}function nt(Z){M(Z),O(!0)}async function Et(Z){const $e=L.current,Un=mA(Z),Kn=vA(Z);Y&&J.dataUrl===Y&&J.clear(),ee(null),se("capturing");const $s=await J.captureElement(Z);$e===L.current&&(se(null),F(Un),te(Kn),ee($s),S("bug"),Q||Fe("bug"))}function Fn(){Y&&J.dataUrl===Y&&J.clear(),F(null),ee(null)}function $n(){C(""),F(null),ee(null),K(!1),je(void 0),J.clear()}const Bn=H&&!d&&!J.isPreparing,zn=x?I||a==null?void 0:a.email:fl(v)?v.trim():void 0;async function Xt(){!Bn||!await p({kind:y,message:j,...x?{}:{contact:v},includeDiagnostics:T,includeConversation:w,anonymous:I,...le?{crashStack:le}:{},...J.dataUrl?{screenshotDataUrl:J.dataUrl}:{},...P?{element:P}:{},...zn?{notifyEmail:zn}:{}})||(x||Lp(v),$n(),t(!1))}function Ms(Z){Z.preventDefault(),Xt()}function _s(Z){const $e=X.current;$e&&(Z.preventDefault(),$e.focus(),$e.setSelectionRange($e.value.length,$e.value.length))}function Ps(Z){Z.key!=="Enter"||!(Z.metaKey||Z.ctrlKey)||Z.nativeEvent.isComposing||k||(Z.preventDefault(),Xt())}const z=J.handlers,ge=ne!==null,Ls=P?q:null,Wo=Au(Ls),Fs=!!(P&&Y&&J.dataUrl===Y),Go=!!J.dataUrl&&!Fs,$u=!H&&(!!J.dataUrl||P!==null);return n.jsxs(n.Fragment,{children:[ge&&n.jsx(_A,{phase:ne,onSelect:Z=>void Et(Z),onCancel:()=>se(null)}),n.jsx(et,{open:e&&!ge,onOpenChange:t,children:n.jsxs(tt,{...z,onKeyDown:Ps,desktopProps:{className:"max-w-md",onOpenAutoFocus:_s},className:B("max-h-[85vh] !min-h-0",J.isDraggingOver&&"ring-primary ring-2"),children:[n.jsxs(Xe,{children:[n.jsx(Ue,{className:"text-sm font-medium",children:"Send feedback"}),n.jsx(Je,{className:"text-muted-foreground text-xs",children:"Straight to the DorkOS team. Private."})]}),n.jsxs("form",{onSubmit:Ms,noValidate:!0,className:"flex min-h-0 flex-1 flex-col gap-4",children:[n.jsxs(lt,{alignWithHeader:!0,className:"flex flex-col gap-4",children:[n.jsx($A,{kind:y,onChange:At}),n.jsxs("div",{className:B("dark:bg-input/30 flex flex-col rounded-lg border transition-[border-color,box-shadow] duration-150","focus-within:border-ring focus-within:ring-ring focus-within:ring-[3px]",J.isDraggingOver&&"border-primary"),children:[n.jsx(Pe,{htmlFor:b,className:"sr-only",children:"Your message"}),n.jsx(_p,{ref:X,id:b,value:j,onChange:Z=>C(Z.target.value),placeholder:P?jA(Ls):zA[y],rows:4,maxLength:Pp,className:"min-h-24 resize-none rounded-lg border-0 bg-transparent shadow-none focus-visible:ring-0 dark:bg-transparent"}),(P||Go||J.isPreparing||J.isDraggingOver)&&n.jsxs("div",{className:"flex flex-wrap items-center gap-2 px-2.5 pb-2.5",children:[P&&n.jsx(Ii,{imageUrl:Fs?Y??void 0:void 0,alt:`The part you pointed at: ${Wo}`,caption:Wo,pointed:!0,detail:P.selector,...Fs?{onOpen:()=>nt("screenshot")}:{},onRemove:Fn,removeLabel:kA(Ls)}),Go&&J.dataUrl&&n.jsx(Ii,{imageUrl:J.dataUrl,alt:"The screenshot you attached",onOpen:()=>nt("screenshot"),onRemove:J.clear,removeLabel:"Remove screenshot"}),(J.isPreparing||J.isDraggingOver)&&n.jsx("p",{role:"status","aria-live":"polite",className:"text-muted-foreground text-xs",children:J.isDraggingOver?"Drop to attach":"Getting it ready…"})]}),n.jsx(PA,{showPictureTools:!0,isPreparing:J.isPreparing,hasPointed:P!==null,hasWords:H,isMobile:!c,onCapture:()=>void J.capture(),onPointAtElement:()=>se("picking"),onPick:Z=>void J.attach(Z)})]}),n.jsxs("div",{className:"flex flex-wrap items-center gap-1.5",children:[n.jsx("span",{className:"text-muted-foreground mr-0.5 text-xs",children:"Also send"}),n.jsx(Ti,{label:"Diagnostics",summary:"Version, window size, browser, and recent errors.",pressed:T,onPressedChange:Z=>{K(!0),A(Z)},onPreview:()=>nt("diagnostics")}),g&&n.jsx(Ti,{label:"This chat",summary:"Shows what led to the bug.",pressed:w,onPressedChange:Z=>{K(!0),E(Z)},onPreview:()=>nt("conversation")})]}),n.jsx(LA,{currentUser:a??null,anonymous:I,onToggleAnonymous:()=>D(Z=>!Z),contact:v,onContactChange:N})]}),n.jsx(BA,{needsWords:$u,canSend:Bn,isSubmitting:d,onOpenGitHubIssue:()=>h(y==="idea"?"feature":"bug")})]}),n.jsx(RA,{open:k,onOpenChange:O,initialTab:R,diagnostics:f(le?{crashStack:le}:void 0),kind:y,route:u,showConversation:g,sessionId:m,...J.dataUrl?{screenshotDataUrl:J.dataUrl}:{}})]})})]})}function KA(){const e=cn(a=>a.open),t=cn(a=>a.prefill),s=cn(a=>a.openFeedback),r=cn(a=>a.setOpen),o=Fp();return l.useEffect(()=>{const a=$p();a&&s(a)},[s]),n.jsx(UA,{open:e,onOpenChange:r,initialKind:t.kind,prefillMessage:t.message,crashStack:t.crashStack,currentUser:o?{email:o.email,name:o.name}:null})}const HA=new Set(["permission-prompt","question","schedule-approval"]),qA={"permission-prompt":"Needs your approval to go on.",question:"Has a question for you.","schedule-approval":"Wants to run on a timer."};function Eu(e){const t=Zc(),s=Bp(),r=Dt(e),o=l.useRef(null);l.useEffect(()=>{var m,u,f,p;if(s)return;const a=new Map;for(const h of t)HA.has(h.kind)&&a.set(h.id,{id:h.id,who:h.primary,summary:qA[h.kind],deepLink:h.deepLink});const i=o.current;if(o.current=new Set(a.keys()),i===null)return;const c=[...a.values()].filter(h=>!i.has(h.id)),d=[...i].filter(h=>!a.has(h));c.length>0&&((u=(m=r.read()).onArrive)==null||u.call(m,c)),d.length>0&&((p=(f=r.read()).onDepart)==null||p.call(f,d,a.size))},[s,t,r])}function WA(){const{permission:e}=zp(),{prefs:t}=Up(),s=wo(),r=Me(),o=l.useRef(new Map),a=Dt(s),i=l.useCallback(()=>r||e!=="granted"||typeof document>"u"||!document.hidden?!1:typeof window<"u"&&typeof window.Notification<"u",[r,e]),c=l.useCallback((f,p,h,g)=>{let x;try{x=new Notification(p,{body:h,tag:f,silent:!0})}catch{return}x.onclick=()=>{var b;window.focus(),x.close(),o.current.delete(f),g!==null&&((b=a.read())==null||b({href:g}))},x.onclose=()=>{o.current.delete(f)},o.current.set(f,{notification:x,href:g})},[a]),d=l.useCallback(f=>{if(i())for(const p of f)c(p.id,`${p.who} needs you`,p.summary,p.deepLink)},[i,c]),m=l.useCallback(f=>{for(const p of f){const h=o.current.get(p);h!==void 0&&(h.notification.close(),o.current.delete(p))}},[]);Eu({onArrive:d,onDepart:m});const u=t.notifyOnTurnCompleteWhileAway;ue("notification",f=>{const p=Kp.safeParse(f);if(!p.success)return;const h=p.data.notification;if(h.tier!=="notable"||!u||!i())return;const g=Hp(h),x=g===null?null:GA(g.to,g.search);c(h.id,h.title,h.body??"",x)}),l.useEffect(()=>{const f=o.current;return()=>{for(const{notification:p}of f.values())p.close();f.clear()}},[])}function GA(e,t){const s=new URLSearchParams;for(const[o,a]of Object.entries(t))a!=null&&s.set(o,String(a));const r=s.toString();return r===""?e:`${e}?${r}`}function YA(){const{play:e}=Fx(),t=l.useCallback(()=>{e("knock"),$x()},[e]),s=l.useCallback((r,o)=>{o===0&&e("settle")},[e]);return Eu({onArrive:t,onDepart:s}),WA(),null}function VA(){const e=Te();l.useEffect(()=>{var s,r,o;if(!((s=window.electronAPI)!=null&&s.onNavigate))return;const t=window.electronAPI.onNavigate(a=>{e({href:a})});return(o=(r=window.electronAPI).getPendingNavigate)==null||o.call(r).then(a=>{a&&e({href:a})}),t},[e])}function QA(){const{closeActive:e}=Ro();l.useEffect(()=>{const t=window.electronAPI;if(t!=null&&t.onCloseTab)return t.onCloseTab(()=>e())},[e])}function XA(){const[e,t]=l.useState(!1);return l.useEffect(()=>{var a,i,c;if(!((a=window.electronAPI)!=null&&a.onFullscreenChange))return;let s=!0,r=!1;const o=window.electronAPI.onFullscreenChange(d=>{r=!0,t(d)});return(c=(i=window.electronAPI).getFullscreenState)==null||c.call(i).then(d=>{s&&!r&&t(d)}),()=>{s=!1,o()}},[]),e}const Di="window-blurred";function JA(){l.useEffect(()=>{var a,i,c;if(!qp||!((a=window.electronAPI)!=null&&a.onFocusChange))return;const e=document.documentElement,t=d=>{e.classList.toggle(Di,!d)};let s=!0,r=!1;const o=window.electronAPI.onFocusChange(d=>{r=!0,t(d)});return(c=(i=window.electronAPI).getFocusState)==null||c.call(i).then(d=>{s&&!r&&t(d)}),()=>{s=!1,o(),e.classList.remove(Di)}},[])}const ZA="/channels";function e1(){var f,p;vv();const e=Wp(),t=js(),s=e===ZA?t.id??null:null,{data:r}=bc(t.community?null:s),a=(f=qt(!!t.community).data)==null?void 0:f.find(h=>h.ref===t.community),i=oo(a==null?void 0:a.access),c=vc(t.community??"",s??"",!!(t.community&&s&&i.capabilities.read),i.fingerprint),{data:d}=Rs(),m=l.useMemo(()=>(d??[]).filter(_t).length,[d]),u=!t.community&&s&&r?r:null;return{room:u,roomTitle:t.community&&s?((p=c.data)==null?void 0:p.title)??null:u?ao(u):null,unreadRoomCount:m}}function t1(){const e=kn(),t=qt(),s=ce(),r=Te(),o=l.useRef(null);l.useEffect(()=>{var d;if(!e||!t.data)return;const a=JSON.stringify([e.ownerKey,e.epoch]),i=((d=o.current)==null?void 0:d.owner)===a?o.current.rows:null,c=new Map(t.data.map(m=>[m.ref,{status:m.status,label:m.label,generation:ua(m.ref)}]));if(o.current={owner:a,rows:c},!!i)for(const[m,u]of i){if(u.status!=="connected")continue;const f=c.get(m);if((f==null?void 0:f.status)==="connected")continue;const p=ls(vn().destination)===m,h=ua(m)>u.generation,g=f===void 0?"removed":"revoked";(h?Promise.resolve():Gp(s,e,m,g)).then(()=>{p&&ls(vn().destination)===m&&r({...pe.home(),replace:!0})}),g==="revoked"&&ae(`This DorkOS can no longer reach ${u.label}.`,{description:"Still a member? Pick it in the sidebar switcher to reconnect."})}},[e,t.data,r,s])}function n1(){t1(),Bb(),Yp()}function s1({isFullscreen:e}){return n.jsx("div",{className:B("desktop-darwin:block app-drag-region hidden shrink-0",!e&&"desktop-darwin:h-11"),"aria-hidden":"true"})}class r1 extends l.Component{constructor(){super(...arguments);Jt(this,"state",{hasError:!1})}static getDerivedStateFromError(){return{hasError:!0}}componentDidCatch(s,r){console.error("[Sidebar] Body contribution error:",s,r)}componentDidUpdate(s){s.contributionId!==this.props.contributionId&&this.state.hasError&&this.setState({hasError:!1})}render(){return this.state.hasError?n.jsx("div",{"data-testid":"sidebar-body-error",className:"flex h-full items-center justify-center p-4",children:n.jsx("p",{className:"text-muted-foreground text-center text-sm",children:"This panel couldn’t load. Reload the page."})}):this.props.children}}const o1=5e3;function Iu({testId:e,headline:t,detail:s}){const{isFetching:r,refetch:o}=_e({refetchInterval:o1});return n.jsx("div",{"data-testid":e,className:"bg-background text-foreground flex h-dvh flex-col items-center justify-center px-6",children:n.jsxs("div",{className:"flex w-full max-w-md flex-col items-center text-center",children:[n.jsx(Ve,{size:120,className:"mb-8 opacity-80 dark:hidden"}),n.jsx(Ve,{variant:"white",size:120,className:"mb-8 hidden opacity-80 dark:block"}),n.jsx("h1",{className:"text-xl font-semibold tracking-tight",children:t}),n.jsx("p",{className:"text-muted-foreground mt-3 text-sm",children:s}),n.jsx(_,{variant:"outline",className:"mt-6",onClick:()=>void o(),disabled:r,children:r?"Trying…":"Try again"})]})})}function a1(){return n.jsx(Iu,{testId:"server-unreachable",headline:"DorkOS can’t reach its server",detail:"It may still be starting up. DorkOS keeps checking."})}const i1="HOST_NOT_ALLOWED",Oi=240;function c1({status:e,message:t,code:s}){const r=s===i1&&t?t:void 0,o=r===void 0?`Your settings didn’t load (HTTP ${e}). DorkOS keeps trying.`:r.length>Oi?`${r.slice(0,Oi).trimEnd()}…`:r;return n.jsx(Iu,{testId:"server-error",headline:"The server answered with an error",detail:o})}function l1(e){const t=e;return{...typeof(t==null?void 0:t.status)=="number"?{status:t.status}:{},...typeof(t==null?void 0:t.message)=="string"&&t.message.length>0?{message:t.message}:{},...typeof(t==null?void 0:t.code)=="string"&&t.code.length>0?{code:t.code}:{}}}let pr={at:0};function d1(e,t){return e>pr.at&&(pr=t==null?{at:e}:{at:e,...l1(t)}),e>Pt?pr:void 0}function u1(e){return e.state.dataUpdatedAt>Pt?!0:"always"}const Tu=["unattended-autonomy"],m1=6e4;function Ru(){const e=ie(),{data:t}=ve({queryKey:[...Tu],queryFn:()=>e.getUnattendedAutonomy(),staleTime:m1});return t}function h1(){const e=ce(),t=()=>{e.invalidateQueries({queryKey:[...Tu]})};ue("relay_bindings_changed",t),ue("tasks_changed",t),ue("relay_adapters_changed",t)}function f1(e){return!e}function p1(e){var t;return((t=e.at(-1))==null?void 0:t.pathname)??""}function g1({descriptors:e}){const t=e.reduce((s,r)=>s===null||r.priority>s.priority?r:s,null);return n.jsx(Ie,{mode:"wait",initial:!1,children:t&&n.jsx(W.div,{initial:{height:0,opacity:0},animate:{height:"auto",opacity:1},exit:{height:0,opacity:0},transition:{duration:.2,ease:[0,0,.2,1]},className:"shrink-0 overflow-hidden",children:t.render()},t.id)})}const x1=["memory-provider-status"],y1=6e4;function b1(){const e=ie(),{data:t}=ve({queryKey:[...x1],queryFn:()=>e.getMemoryProviderStatus(),staleTime:y1});return t}function v1(e){const t=new Map;for(const s of e){if(s.kind!=="signin.required")continue;const r=t.get(s.subject.id);(r===void 0||w1(s,r))&&t.set(s.subject.id,s)}return[...t.entries()].filter(([,s])=>s.outcome!=="cleared").map(([s])=>s)}function w1(e,t){return e.createdAt!==t.createdAt?e.createdAt>t.createdAt:e.id>t.id}function j1({configuredId:e,benched:t}){return n.jsxs(So,{variant:"warning",children:["The ",n.jsx("span",{className:"font-medium",children:e})," memory"," ",t?"stopped answering":"isn’t set up",". DorkOS uses its own memory until you restart."]})}const k1="runtimes",S1=3;function C1({runtimes:e}){const{open:t}=qe(),s=Vp();if(e.length===0)return null;const r=e.slice(0,S1).map(pl),o=e.length-r.length,a=e.length===1?`${r[0]} sign-in`:`${A1(r)} sign-ins`,i=o>0?`, and ${o} more`:"";return n.jsxs(So,{variant:"critical",icon:al,actions:n.jsxs(n.Fragment,{children:[s&&n.jsx(N1,{runtimes:e,renderCreditsOffer:s}),n.jsx(_,{variant:"outline",size:"sm",onClick:()=>t(k1),children:"Sign in"})]}),children:["Your ",n.jsx("span",{className:"font-medium",children:a})," stopped working",i,". Agents and tasks wait until you sign in again."]})}function N1({runtimes:e,renderCreditsOffer:t}){var d;const s=Zr(),{data:r}=ec(),o=!Qp(),a=((d=Pc().data)==null?void 0:d.linked)===!0,i=Xp(a,Lc({enabled:a}).data),c=e.find(m=>Jp(Zp(s.data,m),r,m)==="lead");return c?n.jsxs(Nn,{children:[n.jsx(An,{asChild:!0,children:n.jsx(_,{size:"sm","data-testid":"signin-banner-credits",disabled:i===null,children:i===null?"DorkOS credits":`${i} DorkOS credits`})}),n.jsxs(En,{align:"end",className:"w-80 p-4",children:[n.jsxs(In,{children:["Run ",pl(c)," on DorkOS credits"]}),n.jsxs("div",{className:"space-y-3",children:[t({runtime:c,origin:`signin-banner:${c}`,fullWidth:!0}),n.jsx(eg,{remote:o})]})]})]}):null}function A1(e){return e.length<=1?e[0]??"":`${e.slice(0,-1).join(", ")} and ${e[e.length-1]}`}const E1=2,I1={binding:"connection",task:"scheduled task"};function T1(e){return e.map((t,s)=>n.jsxs(l.Fragment,{children:[s>0&&(s===e.length-1?" and ":", "),t]},s))}function R1({drivers:e}){const t=wo(),s=As();if(e.length===0)return null;const r=e.slice(0,E1),o=e.length-r.length,a=r.map(c=>n.jsxs(n.Fragment,{children:["the ",n.jsx("span",{className:"font-medium",children:c.name})," ",I1[c.kind]]}));o>0&&a.push(n.jsxs(n.Fragment,{children:[o," more"]}));const i=new Set(e.map(c=>c.kind));return n.jsxs(So,{variant:"info",icon:Ot,actions:t?n.jsxs(n.Fragment,{children:[i.has("binding")&&n.jsx(_,{variant:"outline",size:"sm",onClick:()=>s(),children:"Connections"}),i.has("task")&&n.jsx(_,{variant:"outline",size:"sm",onClick:()=>t({...pe.tasks()}),children:"Schedules"})]}):void 0,children:["Running unattended at full power: ",T1(a),"."]})}const qo={critical:40,warning:30,info:20};function D1(){const e=Ru();return!e||e.drivers.length===0?null:{id:"unattended-autonomy",variant:"info",priority:qo.info,render:()=>n.jsx(R1,{drivers:e.drivers})}}function O1(){const e=b1();return!e||e.configuredId===e.activeId?null:{id:"memory-provider-benched",variant:"warning",priority:qo.warning,render:()=>n.jsx(j1,{configuredId:e.configuredId,benched:e.benched})}}const M1={kinds:["signin.required"]};function _1(){const{notifications:e}=tg(M1),t=l.useMemo(()=>v1(e),[e]);return t.length===0?null:{id:"runtime-signin",variant:"critical",priority:qo.critical,render:()=>n.jsx(C1,{runtimes:t})}}function P1(e){const t=D1(),s=O1(),r=_1();return[t,s,r].filter(o=>o!==null)}function L1(){const e=Cn(),[t,s]=l.useState(!1),r=()=>{e.mutate({telemetry:{install:!1,heartbeat:!1,usage:!1,userHasDecided:!0}})},o=()=>{e.mutate({telemetry:{install:!0,heartbeat:!0,usage:!0,userHasDecided:!0}})};return n.jsxs(n.Fragment,{children:[n.jsxs(jr,{children:[n.jsx(kr,{children:"Share anonymous usage data?"}),n.jsx(Sr,{children:"A daily ping, package installs and feature use. Never your prompts, code or files."})]}),n.jsxs("div",{className:"space-y-3",children:[n.jsxs("div",{className:"flex flex-wrap items-center gap-x-3 gap-y-1",children:[n.jsx(ng,{open:t,onToggle:()=>s(a=>!a)}),n.jsx("a",{href:"https://dorkos.ai/telemetry",target:"_blank",rel:"noopener noreferrer",className:"text-muted-foreground hover:text-foreground text-xs font-medium underline underline-offset-2",children:"Full contract"})]}),t&&n.jsx(sg,{})]}),n.jsxs(Cr,{className:"items-center gap-2 sm:justify-between",children:[e.isError?n.jsx("p",{role:"alert",className:"text-destructive text-xs",children:"Couldn’t save your choice. Try again."}):n.jsx("span",{"aria-hidden":!0}),n.jsxs("div",{className:"flex justify-end gap-2",children:[n.jsx(_,{variant:"outline",size:"sm",onClick:r,disabled:e.isPending,children:"Don’t share"}),n.jsx(_,{size:"sm",onClick:o,disabled:e.isPending,children:"Share anonymously"})]})]})]})}const Du={high:30,low:10};function F1(){var t;const{data:e}=_e();return(t=e==null?void 0:e.telemetry)!=null&&t.userHasDecided?null:{id:"telemetry-consent",priority:Du.low,render:()=>n.jsx(L1,{})}}function $1(){var s,r,o;const{data:e}=_e();return!e||!(((s=e.onboarding)==null?void 0:s.completedAt)!=null||((r=e.onboarding)==null?void 0:r.dismissedAt)!=null)||((o=e.ui)==null?void 0:o.fullPowerDecidedAt)!=null?null:{id:"full-power-door",priority:Du.high,render:({onClose:a})=>n.jsx(mv,{onClose:a})}}function B1(){const e=$1(),t=F1();return[e,t].filter(s=>s!==null)}function z1(e){return e.reduce((t,s)=>t===null||s.priority>t.priority?s:t,null)}function U1({onboardingOverlayVisible:e=!1}){const t=B1(),{data:s,dataUpdatedAt:r}=_e(),o=U(y=>y.momentShownThisLaunch),a=U(y=>y.markMomentShown),[i,c]=l.useState(null),[d,m]=l.useState(null),u=l.useRef(null),f=(s==null?void 0:s.onboarding)!=null&&(s.onboarding.completedAt!=null||s.onboarding.dismissedAt!=null),p=r>Pt,h=e||!p||!f,g=h?null:z1(t);i===null&&g!==null&&!o&&(c(g.id),m(g)),l.useEffect(()=>{i!==null&&a()},[i,a]);const x=!h&&i!==null&&t.some(y=>y.id===i),b=()=>c(null);return n.jsx(rc,{open:x,onOpenChange:y=>{y||b()},children:d!==null&&n.jsx(rg,{ref:u,onOpenAutoFocus:y=>{var S;y.preventDefault(),(S=u.current)==null||S.focus()},children:d.render({onClose:b})},d.id)})}const K1=[];function H1(){const{approvals:e,isError:t,retry:s}=og(),{interactions:r}=ag(),o=ig(),a=cg(e),i=lg(r),c=Te(),d=l.useMemo(()=>[...e.map(u=>dg(u.approvalId)),...r.map(u=>ug(u.interaction.id))],[e,r]);return!t&&a.length===0&&r.length===0&&o.length===0?{slot:null,coveredSignalIds:K1}:{coveredSignalIds:d,slot:n.jsxs("div",{"data-testid":"mobile-now-attention",className:"flex flex-col gap-2 px-2 pt-0.5 pb-1",children:[t&&n.jsx(mg,{onRetry:s}),(r.length>0||o.length>0)&&n.jsx(hg,{asks:r,agentNames:i,onOpenSession:u=>{c(ut({session:u}))}}),a.length>0&&n.jsx(fg,{approvals:a})]})}}const Ou=[{id:"home",label:"Home",icon:gc,badged:!0,kind:"panel"},{id:"library",label:"All",icon:yo,badged:!1,kind:"panel"},{id:"dorkbot",label:"DorkBot",icon:vo,badged:!1,kind:"action"},{id:"you",label:"You",icon:so,badged:!1,kind:"panel"}],q1=gl.filter(e=>e==="library"),W1=gl.filter(e=>e!=="library"),Vr="calc(3.5rem + env(safe-area-inset-bottom))",gs=pg(e=>({panelUp:!1,raise:()=>e({panelUp:!0}),lower:()=>e({panelUp:!1})}));function Mi(){gs.getState().lower()}function G1({current:e,needsYouCount:t,dorkBotReady:s,onSelect:r,label:o="Main"}){return n.jsx("nav",{"aria-label":o,"data-testid":"mobile-tab-bar",className:"bg-sidebar border-border/60 flex shrink-0 items-stretch border-t",style:{height:Vr,paddingBottom:"env(safe-area-inset-bottom)"},children:Ou.map(a=>{const i=a.icon,c=a.id===e,d=a.badged&&t>0?t:null,m=a.kind==="action"&&!s;return n.jsxs("button",{type:"button",onClick:()=>r(a.id),disabled:m,"aria-current":c?"page":void 0,"data-testid":`mobile-tab-${a.id}`,"data-mobile-tab":"",className:B("focus-ring text-2xs relative flex flex-1 flex-col items-center justify-center gap-0.5 transition-[color,background-color,scale] duration-150","active:bg-sidebar-accent motion-safe:active:scale-[0.96]",c?"text-sidebar-foreground font-semibold":"text-sidebar-foreground/70 hover:text-sidebar-foreground font-medium","disabled:pointer-events-none disabled:opacity-50"),children:[n.jsxs("span",{className:"relative",children:[n.jsx(i,{className:"size-5","aria-hidden":!0}),d!==null&&n.jsx("span",{"data-testid":`mobile-tab-badge-${a.id}`,"aria-hidden":!0,className:"text-3xs absolute -top-1.5 -right-2.5 min-w-4 rounded-full bg-amber-500 px-1 text-center leading-4 font-semibold text-amber-950 tabular-nums",children:d})]}),a.label]},a.id)})})}function Y1(){const e=Uc(),t=Te(),s=Ee({select:r=>r.location.pathname});return e.length===0?null:n.jsxs("section",{"aria-labelledby":"mobile-add-ons-heading",className:"mt-4",children:[n.jsx("h2",{id:"mobile-add-ons-heading",className:"text-muted-foreground px-2 pb-1.5 text-xs font-medium",children:"Add-ons"}),n.jsx("ul",{className:"bg-sidebar-accent/60 flex flex-col gap-0.5 rounded-lg p-1",children:e.map(r=>{const o=Kc(r.extensionId,r.path),a=s===o;return n.jsx("li",{children:n.jsxs("button",{type:"button",onClick:()=>void t({href:o}),"aria-current":a?"page":void 0,className:B("flex w-full items-center gap-2.5 rounded-md px-2.5 text-[13px]",Vt,a?"bg-sidebar-accent text-sidebar-foreground":"text-sidebar-foreground/80 hover:bg-sidebar-accent"),children:[n.jsx(On,{icon:r.icon,className:"size-4 shrink-0"}),n.jsx("span",{className:"truncate",children:r.title})]})},r.id)})})]})}function gr({id:e,active:t,children:s}){return n.jsx("div",{id:`mobile-tab-panel-${e}`,"data-testid":`mobile-tab-panel-${e}`,"data-active":t?"":void 0,inert:!t,className:B("absolute inset-0",!t&&"invisible"),children:s})}function V1({takeover:e}){cu();const t=H1(),s=uu({coveredSignalIds:t.coveredSignalIds}),r=lu(s),{ask:o,ready:a}=gg(),[i,c]=l.useState("home"),d=gs(x=>x.panelUp),m=gs(x=>x.raise),u=Lt();l.useEffect(()=>u.subscribe("onBeforeLoad",Mi),[u]),l.useEffect(()=>Mi,[]),l.useEffect(()=>(document.documentElement.style.setProperty("--mobile-tab-dock",Vr),()=>{document.documentElement.style.removeProperty("--mobile-tab-dock")}),[]);const f=l.useCallback(x=>{const b=Ou.find(y=>y.id===x);if(b!==void 0){if(b.kind==="action"){if(!a)return;c(x),o();return}c(x),m()}},[o,a,m]),p=r.zones.find(x=>x.id==="now"),h=(p==null?void 0:p.needsYouCount)??s.attention.length,g=yu((p==null?void 0:p.liveRegionText)??xg(h));return n.jsxs(nl,{activeTarget:s.activeTarget,children:[n.jsxs("div",{"data-testid":"mobile-tab-panels",inert:!d,className:B("bg-background fixed inset-x-0 top-0 z-30",!d&&"pointer-events-none invisible"),style:{bottom:`calc(${Vr} + var(--pip-dock, 0px))`},children:[n.jsx(gr,{id:"home",active:i==="home",children:n.jsxs(Gs,{width:"full",className:"px-3 py-2",children:[n.jsx(ju,{}),n.jsx(Gr,{model:r,zoneIds:W1,nowSlot:t.slot,silenceLiveRegion:!0}),n.jsx(iu,{})]})}),n.jsx(gr,{id:"library",active:i==="library",children:n.jsx(Gs,{width:"full",className:"px-3 py-2",children:e??n.jsx(Gr,{model:r,zoneIds:q1,silenceLiveRegion:!0})})}),n.jsx(gr,{id:"you",active:i==="you",children:n.jsxs(Gs,{width:"full",className:"px-3 py-4",children:[n.jsx("h1",{className:"text-foreground px-2 pb-2 text-sm font-semibold",children:"You"}),n.jsx(pN,{}),n.jsx(xl,{}),n.jsx(Y1,{})]})})]}),n.jsx("span",{"data-testid":"mobile-needs-you-live-region","aria-live":"polite","aria-atomic":"true",className:"sr-only",children:g}),n.jsx(G1,{current:d?i:null,needsYouCount:h,dorkBotReady:a,onSelect:f})]})}function Q1(){const{open:e}=qe(),t=U(r=>r.setControlCenterOpen),s=Os(()=>t(!1));return n.jsxs("section",{className:"@container flex flex-col gap-2","data-testid":"control-center-dial",children:[n.jsxs("div",{children:[n.jsx("p",{className:"text-sm font-medium",children:"Power"}),n.jsx("p",{className:"text-muted-foreground text-xs",children:"What agents may do without asking you."})]}),n.jsx(yg,{surface:"control-center"}),n.jsxs(_,{variant:"ghost",size:"sm",className:"text-muted-foreground h-7 self-start px-2 text-xs",onClick:s(()=>e("permissions")),children:["Edit permissions",n.jsx(Rn,{className:"size-3.5","aria-hidden":!0})]})]})}const an={unconfigured:"Use DorkOS from your phone. One-time setup.",off:"Use DorkOS from your phone or another computer.",starting:"Connecting…",stopping:"Turning off…"};function X1(){const e=jo(),t=mo(),s=U(u=>u.setRemoteAccessOpen),r=U(u=>u.setControlCenterOpen),a=Os(()=>r(!1))(()=>s(!0)),i=e.tokenConfigured,c=e.state==="starting"||e.state==="stopping",d=e.hasServerReport;let m;return d?i?e.error!==null?m=n.jsxs("span",{className:"flex min-w-0 items-baseline gap-1.5",children:[n.jsx("span",{className:"text-destructive truncate",children:vl(e.error)}),n.jsx("button",{type:"button",onClick:a,className:"focus-ring text-foreground shrink-0 rounded-sm underline underline-offset-2",children:"Fix…"})]}):e.state==="connected"?m=`On · ${e.host??"connected"}`:e.state==="reconnecting"?m=e.host?`On · ${e.host} · reconnecting…`:"Reconnecting…":e.state==="starting"?m=an.starting:e.state==="stopping"?m=an.stopping:m=an.off:m=an.unconfigured:m=an.off,n.jsx(yl,{label:"Remote access",description:n.jsx("span",{"data-testid":"remote-access-row-description",className:B("block min-w-0",c&&"motion-safe:animate-breath"),children:m}),children:n.jsx(bl,{checked:i&&e.isChecked,disabled:!d||i&&e.isTransitioning,"aria-label":"Remote access",onCheckedChange:u=>{if(!i){a();return}t.toggle(u)}})})}const J1=1,Z1=10,eE=4;function tE(){var d,m;const{data:e}=_e(),t=Cn(),s=ce(),{limits:r,setLimits:o}=bg(),a=()=>void s.invalidateQueries({queryKey:Oe.all}),i=((d=e==null?void 0:e.claudeCode)==null?void 0:d.persistentSession)??!0,c=((m=e==null?void 0:e.scheduler)==null?void 0:m.maxConcurrentRuns)??eE;return n.jsx(vg,{children:n.jsxs(wg,{children:[n.jsx(X1,{}),n.jsx(Rx,{}),n.jsx(ma,{label:"Limit automatic replies",description:(r==null?void 0:r.turnLimitsEnabled)===!1?"Agents reply to each other without limit until you press Stop.":n.jsxs(n.Fragment,{children:["Agents pause after a long back-and-forth."," ",n.jsxs(ha,{label:"About reply limits",children:[n.jsx("p",{children:"Your next message starts the count over."}),n.jsx("p",{children:"Set the numbers in Settings → Advanced → Room limits."})]})]}),checked:(r==null?void 0:r.turnLimitsEnabled)??!0,disabled:r===null,onCheckedChange:u=>o({turnLimitsEnabled:u})}),n.jsx(ma,{label:"Warm agents",description:n.jsxs(n.Fragment,{children:["Replies start about 4× faster. Each warm agent uses up to about 1 GB."," ",n.jsxs(ha,{label:"About warm agents",children:[n.jsx("p",{children:"Your agent stays running between messages."}),n.jsx("p",{children:"At most twelve agents stay warm at once."})]})]}),checked:i,disabled:t.isPending,onCheckedChange:u=>t.mutate({runtimes:{claudeCode:{persistentSession:u}}},{onSuccess:a})}),n.jsx(yl,{label:"Scheduled runs at once",description:"How many scheduled tasks run together.",children:n.jsx(jg,{value:c,min:J1,max:Z1,"aria-label":"Scheduled runs at once",onCommit:u=>t.mutate({scheduler:{maxConcurrentRuns:u}},{onSuccess:a})})})]})})}const _i="claude-code";function nE(){var I,D,T,A,w;const{data:e}=_e(),{data:t}=Zi(),{sessions:s}=zc(),r=kg(),{data:o}=Sg(r),{data:a}=Cg(),i=Ng(),c=i.data,d=dv(),m=wo(),{open:u}=qe(),{open:f}=bo(),p=As(),h=U(E=>E.setControlCenterOpen),g=Os(()=>h(!1)),x=i.isError,b=t===void 0||e===void 0||c===void 0&&!x,y=e==null?void 0:e.executionDefaults,S=(y==null?void 0:y.runtime)??_i,j=(I=t==null?void 0:t.capabilities[S])==null?void 0:I.permissionModes,C=((D=j==null?void 0:j.values.find(E=>E.id===j.default))==null?void 0:D.stop)??"ask",v=(y==null?void 0:y.trustStop)??C,N=[];if(!b){for(const k of(y==null?void 0:y.perRuntime)??[])k.trustStop===null||k.trustStop===v||N.push({key:`runtime:${k.runtime}`,kind:"runtime",name:Ye(k.runtime).label,detail:Hs(k.trustStop),onOpen:m?g(()=>u("runtimes")):null});for(const k of s){const O=(T=t==null?void 0:t.capabilities[k.runtime])==null?void 0:T.permissionModes,R=O==null?void 0:O.values.find(P=>P.id===k.permissionMode),M=R==null?void 0:R.stop;!M||M===v||N.push({key:`session:${k.id}`,kind:"session",name:k.title||"Untitled chat",detail:(R==null?void 0:R.label)??qs(k.permissionMode),onOpen:m?g(()=>m(ut({session:k.id,dir:k.cwd}))):null})}const E=((w=(A=t==null?void 0:t.capabilities[_i])==null?void 0:A.permissionModes)==null?void 0:w.values)??[];for(const k of o??[]){const O=E.find(M=>M.id===k.permissionMode),R=O==null?void 0:O.stop;!R||R===v||N.push({key:`task:${k.id}`,kind:"task",name:k.displayName??k.name,detail:(O==null?void 0:O.label)??qs(k.permissionMode),onOpen:m?g(()=>m({...pe.tasks()})):null})}for(const k of a??[]){const O=E.find(M=>M.id===k.permissionMode),R=O==null?void 0:O.stop;!R||R===v||N.push({key:`binding:${k.id}`,kind:"binding",name:k.label||k.adapterId,detail:(O==null?void 0:O.label)??qs(k.permissionMode),onOpen:m?g(()=>p({app:k.adapterId})):null})}}if(c){const E=new Map(c.areas.map(R=>[R.id,R.label])),k=new Map(c.areas.flatMap(R=>R.actions.map(M=>[M.id,M.title]))),O=R=>g(()=>f(R,"permissions"));for(const R of c.exceptions){const M=R.action?k.get(R.action)??R.action:E.get(R.area),P=Ag[R.state];N.push({key:`agent-permission:${R.agentId}:${R.action??R.area}`,kind:"agent-permission",name:R.agentName,detail:`${M??R.area} ${P}`,why:{question:`Why is ${M??R.area} set to ${P} for ${R.agentName}?`,sentence:Eg({state:R.state,source:R.action?"agent-action":"agent-area",preset:c.preset,agentName:R.agentName}),...R.lastChange?{lastChange:R.lastChange}:{}},onOpen:O(R.agentId),onReset:()=>d.mutate({agentId:R.agentId,key:R.action?{kind:"action",action:R.action}:{kind:"area",area:R.area},surface:"control-center"}),resetting:d.isPending})}for(const R of c.filesAndCommands.exceptions)N.push({key:`agent-permission:${R.agentId}:files`,kind:"agent-permission",name:R.agentName,detail:`Files & commands ${Hs(R.stop)}`,why:{question:`Why is Files & commands set to ${Hs(R.stop)} for ${R.agentName}?`,sentence:Ig(R.stop,"agent",R.agentName),...R.lastChange?{lastChange:R.lastChange}:{}},onOpen:O(R.agentId),onReset:()=>d.mutate({agentId:R.agentId,key:{kind:"files"},surface:"control-center"}),resetting:d.isPending})}return{rows:N,isEmpty:!b&&!x&&N.length===0,isResolving:b,permissionsUnreadable:x}}const sE={runtime:Rg,session:pc,task:ko,binding:eo,"agent-permission":Tg};function rE(){const{rows:e,isEmpty:t,isResolving:s,permissionsUnreadable:r}=nE();return n.jsxs("section",{className:"flex flex-col gap-2","data-testid":"control-center-overrides",children:[n.jsxs("div",{children:[n.jsx("p",{className:"text-sm font-medium",children:"Exceptions"}),n.jsx("p",{className:"text-muted-foreground text-xs",children:"These skip the preset. Changing the preset leaves them alone."})]}),s?n.jsx("p",{className:"text-muted-foreground px-1 text-xs",children:"Checking…"}):t?n.jsx("p",{"data-testid":"overrides-ledger-empty",className:"text-muted-foreground px-1 text-xs",children:"Everything follows your preset. Chats open in other projects aren’t counted."}):n.jsx("ul",{className:"flex flex-col gap-0.5",children:e.map(o=>{const a=sE[o.kind];return n.jsxs("li",{className:"flex items-center gap-1",children:[n.jsxs("button",{type:"button","data-testid":`override-row-${o.kind}`,onClick:()=>{var i;return(i=o.onOpen)==null?void 0:i.call(o)},disabled:!o.onOpen,"aria-label":`${o.name}: ${o.detail}. Open.`,className:"focus-ring hover:bg-accent/60 flex min-w-0 flex-1 items-center gap-2 rounded-md px-2 py-1.5 text-left text-xs transition-colors disabled:pointer-events-none disabled:opacity-60",children:[n.jsx(a,{className:"text-muted-foreground size-3.5 shrink-0","aria-hidden":!0}),n.jsx("span",{className:"min-w-16 flex-1 truncate",children:o.name}),n.jsx("span",{className:"text-muted-foreground min-w-0 truncate",children:o.detail}),n.jsx(Rn,{className:"text-muted-foreground/60 size-3.5 shrink-0","aria-hidden":!0})]}),o.why?n.jsx(Dg,{question:o.why.question,sentence:o.why.sentence,...o.why.lastChange?{lastChange:o.why.lastChange}:{},className:"shrink-0 px-1"}):null,o.onReset?n.jsxs(_,{variant:"ghost",size:"sm",className:"h-7 shrink-0 px-2 text-xs",disabled:o.resetting,"aria-label":`Reset ${o.name}: ${o.detail}`,onClick:o.onReset,children:[n.jsx(Og,{className:"size-3.5","aria-hidden":!0}),"Reset"]}):null]},o.key)})}),r?n.jsx("p",{"data-testid":"overrides-ledger-permissions-error",className:"text-muted-foreground px-1 text-xs",children:"Couldn’t load agents with their own permissions. See Settings → Permissions."}):null]})}const oE=2;function aE(){const e=Ru();if(!e||e.drivers.length===0)return null;const t=e.drivers.slice(0,oE).map(o=>o.name),s=e.drivers.length-t.length,r=s>0?[...t,`${s} more`]:t;return n.jsxs("p",{"data-testid":"control-center-unattended",className:"text-status-success flex items-start gap-1.5 px-1 text-xs",children:[n.jsx(Ot,{className:"mt-px size-3 shrink-0","aria-hidden":!0}),n.jsxs("span",{children:["Running unattended at full power: ",r.join(", "),"."]})]})}function iE(){const e=wl();return jl(e)?n.jsxs("p",{"data-testid":"control-center-keep-awake",className:"text-muted-foreground flex items-start gap-1.5 px-1 text-xs",children:[n.jsx(Bl,{className:"mt-px size-3 shrink-0","aria-hidden":!0}),n.jsxs("span",{children:["Keeping this computer awake: ",kl(e.working),"."]})]}):null}function cE(){return n.jsxs("div",{className:"flex flex-col gap-4","data-testid":"control-center-body",children:[n.jsx(Q1,{}),n.jsx(tE,{}),n.jsx(rE,{}),n.jsx(aE,{}),n.jsx(iE,{})]})}function lE(){const e=U(r=>r.controlCenterOpen),t=U(r=>r.setControlCenterOpen),s=Ae();return n.jsxs(Nn,{open:e,onOpenChange:t,modal:!0,autoFocus:!0,children:[n.jsx(An,{asChild:!0,children:n.jsx("button",{type:"button","data-testid":"control-center-trigger","aria-label":"Control Center",className:"focus-ring text-muted-foreground hover:text-foreground inline-flex size-7 shrink-0 items-center justify-center rounded-md transition-colors",children:n.jsx(Ot,{className:"size-4","aria-hidden":!0})})}),n.jsxs(En,{side:"bottom",align:"end","aria-label":"Control Center",className:"w-96 max-w-[calc(100vw-1.5rem)] p-3",children:[!s&&n.jsxs("header",{className:"mb-3 flex items-center gap-2",children:[n.jsx(Ot,{className:"text-status-success size-4 shrink-0","aria-hidden":!0}),n.jsx("h2",{className:"text-sm font-semibold",children:"Control Center"})]}),n.jsx(In,{children:"Control Center"}),n.jsx(cE,{})]})]})}function dE(){const e=U(t=>t.toggleControlCenter);l.useEffect(()=>{const t=s=>{(s.metaKey||s.ctrlKey)&&s.shiftKey&&(s.key==="l"||s.key==="L")&&(s.preventDefault(),e())};return document.addEventListener("keydown",t),()=>document.removeEventListener("keydown",t)},[e])}function uE(e,t){const s=l.useRef(null),[r,o]=l.useState(0);return l.useEffect(()=>{if(!t)return;const a=s.current;s.current=e,a!==null&&a!=="connected"&&e==="connected"&&o(i=>i+1)},[e,t]),r}function Mu(e){return e==="connected"?"Remote access is on":e==="starting"?"Connecting…":e==="reconnecting"?"Reconnecting…":e==="stopping"?"Turning off…":"Remote access"}function mE({url:e}){const t=Ne();return n.jsxs("div",{"data-testid":"remote-access-qr",children:[n.jsx(W.div,{initial:t?!1:{clipPath:"inset(0 100% 0 0)"},animate:{clipPath:"inset(0 0% 0 0)"},transition:{duration:.2,ease:[0,0,.2,1]},children:n.jsx(Mg,{url:e,size:168})}),n.jsx("p",{className:"text-muted-foreground mt-2 text-center text-xs",children:"Scan with your phone"})]})}function hE({url:e}){const{copied:t,failed:s,copy:r}=Ts();let o,a;return t?(o=n.jsx(Ft,{className:"size-3.5"}),a="Copied"):s?(o=n.jsx(Le,{className:"text-destructive size-3.5"}),a="Couldn’t copy"):(o=n.jsx(Xc,{className:"size-3.5"}),a="Copy link"),n.jsxs("div",{className:"bg-muted/40 rounded-lg border p-2.5","data-testid":"remote-access-link",children:[n.jsx("p",{className:"text-foreground truncate font-mono text-xs",title:e,children:e}),n.jsxs(_,{variant:"outline",size:"sm",className:"mt-2 w-full gap-1.5",onClick:()=>void r(e),children:[o,a]})]})}function fE({onClose:e}){const t=jo(),s=mo(),r=Ae(),o=U(u=>u.setRemoteAccessOpen),a=Os(e),i=t.url,c=i?n.jsx(hE,{url:i},"link"):null,d=i?n.jsx(mE,{url:i},"qr"):null,m=r?[c,d]:[d,c];return n.jsxs("div",{className:"flex flex-col gap-3","data-testid":"remote-access-panel",children:[!r&&n.jsxs("header",{className:"flex items-center gap-2",children:[n.jsx("span",{className:B("inline-block size-2 shrink-0 rounded-full",t.state==="connected"?"bg-status-success":"bg-status-warning-dot"),"aria-hidden":!0}),n.jsx("h2",{className:"text-sm font-semibold",children:Mu(t.state)})]}),t.error!==null&&n.jsx("p",{role:"alert","data-testid":"remote-access-panel-error",className:"text-destructive text-xs",children:vl(t.error)}),i===null&&n.jsx("p",{className:"text-muted-foreground text-xs",children:"Your link appears here when it’s ready."}),m,n.jsxs("div",{className:"flex items-center justify-between gap-3 pt-1",children:[n.jsx("span",{className:"text-muted-foreground text-sm",children:"Remote access"}),n.jsx(bl,{checked:t.isChecked,disabled:t.isTransitioning,"aria-label":"Remote access",onCheckedChange:u=>void s.toggle(u)})]}),n.jsx(_,{variant:"ghost",size:"sm",className:"text-muted-foreground hover:text-foreground -mx-1 justify-start",onClick:a(()=>o(!0)),children:"Manage…"})]})}function _u(e,t){return e==="starting"?"Remote access is connecting":e==="reconnecting"?"Remote access is reconnecting":e==="stopping"?"Remote access is turning off":t?`Remote access is on at ${t}`:"Remote access is on"}function pE(e,t){const s=e==="starting"?"Open remote access":"Show link and QR code";return`${_u(e,t)}. ${s}`}function gE(){const e=jo(),t=U(i=>i.remoteAccessBeaconOpen),s=U(i=>i.setRemoteAccessBeaconOpen),r=Ne(),o=uE(e.state,e.hasServerReport);l.useEffect(()=>{!e.isLive&&t&&s(!1)},[e.isLive,t,s]);const a=e.isLive?_u(e.state,e.host):"";return n.jsxs(n.Fragment,{children:[n.jsx("span",{role:"status",className:"sr-only","data-testid":"remote-access-announcement",children:a}),e.isLive&&n.jsxs(Nn,{open:t,onOpenChange:s,modal:!0,children:[n.jsx(An,{asChild:!0,children:n.jsxs("button",{type:"button","data-testid":"remote-access-beacon","data-state-name":e.state,"aria-label":pE(e.state,e.host),className:B("focus-ring text-muted-foreground hover:text-foreground relative inline-flex size-7 shrink-0 items-center justify-center rounded-md transition-colors",e.state==="reconnecting"&&"opacity-70"),children:[n.jsx(Vc,{className:B("size-4",e.state==="starting"&&"motion-safe:animate-breath"),"aria-hidden":!0}),n.jsx("span",{"aria-hidden":!0,"data-testid":"remote-access-beacon-dot",className:B("border-background absolute right-0.5 bottom-0.5 size-1.5 rounded-full border",e.state==="connected"?"bg-status-success":"bg-status-warning-dot")}),o>0&&!r&&n.jsx("span",{"aria-hidden":!0,"data-testid":"remote-access-beacon-ripple",className:"animate-beacon-ripple border-status-success pointer-events-none absolute inset-0 rounded-full border"},o)]})}),n.jsxs(En,{side:"bottom",align:"end","aria-label":"Remote access",className:"w-72 max-w-[calc(100vw-1.5rem)] p-3",children:[n.jsx(In,{children:Mu(e.state)}),n.jsx(fE,{onClose:()=>s(!1)})]})]})]})}function xE({work:e}){const{isDesktop:t}=Pg();return t?n.jsxs("p",{className:"text-sm font-medium",children:["Keeping awake: ",e]}):n.jsxs(In,{className:"text-sm font-medium",children:["Keeping awake: ",e]})}function yE(){const e=wl(),{open:t}=qe(),[s,r]=l.useState(!1);if(!jl(e))return null;const o=kl(e.working);return n.jsxs(Nn,{open:s,onOpenChange:r,children:[n.jsx(An,{asChild:!0,children:n.jsx("button",{type:"button","data-testid":"keep-awake-beacon","aria-label":`Keeping this computer awake: ${o}. Show details`,className:"focus-ring text-muted-foreground hover:text-foreground inline-flex size-7 shrink-0 items-center justify-center rounded-md transition-colors",children:n.jsx(Bl,{className:"size-4","aria-hidden":!0})})}),n.jsxs(En,{side:"bottom",align:"end","aria-label":"Keeping awake",className:"w-72 max-w-[calc(100vw-1.5rem)] space-y-2 p-3",children:[n.jsx(xE,{work:o}),n.jsx("p",{className:"text-muted-foreground text-xs",children:_g}),n.jsx(_,{variant:"outline",size:"sm",onClick:()=>{r(!1),t(fa.tab,fa.section)},children:"Sleep settings"})]})]})}function bE(){const e=ie(),t=ce();return Sn({mutationFn:s=>e.createAgent(s),onSuccess:()=>{t.invalidateQueries({queryKey:["agents"]}),t.invalidateQueries({queryKey:["mesh","agents"]}),t.invalidateQueries({queryKey:["mesh","agent-paths"]}),t.invalidateQueries({queryKey:["team"]})},meta:{errorLabel:"Couldn’t create that agent",isShownInline:s=>{var r;return((r=s.body)==null?void 0:r.code)==="template_needs_review"}}})}async function vE(e,t){try{return(await e.browseDirectory(t)).entries.some(r=>r.name===".dork")?"exists-has-dork":"exists-no-dork"}catch(s){const r=s instanceof Error?s.message:"";return r.includes("EACCES")||r.includes("permission")?"error":"no-path"}}function wE({step:e,templateName:t,seedDisplayName:s=null,faceSeed:r=null,runtimeSeed:o="claude-code"}){var V;const a=ie(),{data:i}=ve({queryKey:Oe.current(),queryFn:()=>a.getConfig(),staleTime:3e4}),c=((V=i==null?void 0:i.agents)==null?void 0:V.defaultDirectory)??"",[d,m]=l.useState(""),[u,f]=l.useState(!1),[p,h]=l.useState(""),[g,x]=l.useState(!1),[b,y]=l.useState(!1),[S,j]=l.useState(null),[C,v]=l.useState(""),[N,I]=l.useState(!1),[D,T]=l.useState(o),[A,w]=l.useState(s);s!==A&&(w(s),s&&(m(s),f(!1)));const[E,k]=l.useState(o);o!==E&&(k(o),T(o));const O=l.useMemo(()=>d?Lg(d):"",[d]),R=l.useMemo(()=>O?Fg(O):{valid:!1,error:void 0},[O]),M=d.length>0&&O.length>0&&!R.valid,P=p||(c&&O?`${c}/${O}`:""),F=e!=="naming"||!P?"idle":S!==null&&S.directory===P?S.status:"checking",Y=d.length>0&&R.valid&&F!=="error",ee=l.useRef(null);l.useEffect(()=>{if(e!=="naming")return;const $=t?!d||u?t.replace(/^@[^/]+\//,""):null:u?"":null;if($===null)return;const L=`${e}|${t??""}`;ee.current!==L&&(ee.current=L,m($),f(!!t))},[e,t]);const q=l.useRef(null);l.useEffect(()=>{if(e!=="naming"||N||!r)return;const $=`${e}|${r}`;q.current!==$&&(q.current=$,v(r))},[e,r]),l.useEffect(()=>{if(e!=="naming"||!P)return;const $=P,L=setTimeout(()=>{vE(a,$).then(Q=>{j({directory:$,status:Q})})},500);return()=>clearTimeout(L)},[e,P,a]);function te($){m($),u&&f(!1)}function ne($){v($),I(!0)}function se(){ee.current=null,q.current=null,m(""),f(!1),h(""),x(!1),y(!1),j(null),v(""),I(!1),T(o)}return{displayName:d,slug:O,handleNameChange:te,nameAutoFilled:u,slugValidation:R,showSlugError:M,defaultDirectory:c,resolvedDirectory:P,directoryOverride:p,setDirectoryOverride:h,directoryOpen:g,setDirectoryOpen:x,directoryPickerOpen:b,setDirectoryPickerOpen:y,conflictStatus:F,canSubmit:Y,icon:C,setIcon:ne,runtime:D,setRuntime:T,reset:se}}function jE(e){var a;const t=(e==null?void 0:e.packageName)??null,{data:s,isError:r,error:o}=vx(t,e!=null&&e.marketplace?{marketplace:e.marketplace}:void 0);return{schedules:((a=s==null?void 0:s.preview)==null?void 0:a.schedules)??[],isChecking:t!==null&&s===void 0&&!r,failed:t!==null&&r,...t!==null&&r&&wx(o)&&{refusal:o},...s!=null&&s.disclosed&&s.contentHash?{approval:{approvedDisclosure:s.disclosed,approvedContentHash:s.contentHash},packageAgentName:s.manifest.name}:{}}}const kE={gallery:{title:"New agent",description:"What will your agent do?"},naming:{title:"Name your agent",description:"Give it a name and a face."},arrival:{description:"Add a ready-made agent."}},xr={keeper:["Keeper","Warden","Steward","Curator","Archivist","Ledger","Tally","Sorter"],scout:["Scout","Ranger","Pathfinder","Lookout","Recon","Probe","Tracer","Radar"],guardian:["Sentinel","Guardian","Aegis","Bastion","Vigil","Auditor","Gatekeep","Warden"],builder:["Forge","Smith","Builder","Mason","Wright","Maker","Anvil","Crafter"],scribe:["Scribe","Quill","Muse","Author","Penn","Bard","Editor","Note"],default:["Scout","Sage","Pilot","Beacon","Atlas","Nova","Ranger","Echo","Vera","Onyx"]},SE=[["keeper",["board","organize","tidy","manage","linear","jira","project","backlog","task"]],["scout",["research","search","monitor","watch","discover","scan","find","intel","inbox","email","mail"]],["guardian",["review","security","audit","qa","test","lint","guard","protect","compliance"]],["builder",["build","code","scaffold","deploy","engineer","refactor","ci","release"]],["scribe",["doc","write","content","blog","summar","note","changelog","copy"]]];function CE(e){if(!e)return xr.default;const t=[e.name,e.description,e.category,...e.tags??[]].filter(Boolean).join(" ").toLowerCase();for(const[s,r]of SE)if(r.some(o=>t.includes(o)))return xr[s];return xr.default}function NE(e,t,s){if(e.length===0)return[];const r=Math.min(s,e.length),o=(t%e.length+e.length)%e.length;return Array.from({length:r},(a,i)=>e[(o+i)%e.length])}const AE=64,EE=16,Pi=3;function IE(e){return e.map(t=>t.replace(/[\u0000-\u001f\u007f]/g," ").replace(/\s+/g," ").trim().slice(0,AE)).filter(t=>t.length>0).slice(0,EE)}function TE(e){const t=IE(e.capabilities??[]),s=t.length>0?`
|
|
95
|
+
|
|
96
|
+
Your declared abilities include: ${t.join(", ")}. Draw your first-action offer from these when it fits.`:"";return["You have just been created. This is your first moment awake — greet the person who made you.","",`Read your ${Tt.soul} to recall who you are, then, in 2 to 4 short sentences:`,"- Introduce yourself in your own voice, drawn from that persona.","- State plainly what your job is.","- Propose one concrete first action you could take — as an offer, and wait for their go-ahead.","",`Do NOT start any work yet — do not act on the project or change any files. (Reading your own ${Tt.soul} so you can introduce yourself is fine; anything beyond that waits for their go-ahead.) Just make the offer and let them decide. Speak warmly and directly to the person.`+s].join(`
|
|
97
|
+
`)}function RE(e){return[`You have just been created${e.displayName?` and named ${e.displayName}`:""}, and you do not have a job yet — the person who made you will define it with you, right now, in this conversation. This is your first moment awake, and by the end of it you will have written your own ${Tt.soul}.`,"","Run a short interview to discover who you should be, then capture it:","","1. Say a brief, warm hello (1 to 2 sentences) and ask them what they would like you to take care of. Do not assume a role yet.","",`2. Hold a SHORT interview. Ask AT MOST ${Pi} questions in total across this whole conversation — this is a hard limit. Only ask what you genuinely need to write a good soul (typically the scope of the work, how often you should do it, and anything you must never touch). If their first answer already tells you enough, ask fewer. For a one-word or vague answer, ask a single clarifying question and then proceed with a reasonable role rather than interrogating them. If they say something like "just figure it out," do not push — propose a sensible role from what you have and move on. Never trap them in endless back-and-forth: once you have asked ${Pi} questions, stop asking and write your best soul from what you learned.`,"","3. Before you write, tell them in one line what you understood and that you are about to capture it as your soul — so they see it coming. Then write it.","",`4. Write your ${Tt.soul} now, using your file-editing tools. It lives at \`.dork/${Tt.soul}\` in your working directory and already contains a "Personality Traits" block fenced by \`${$g}\` and \`${pa}\` — leave that fenced block exactly as it is. Replace only the prose BELOW the \`${pa}\` marker with your persona: who you are in your own voice, what you take care of, how you go about it, and the boundaries you keep. Keep it concise.`,"","5. After the file is written, confirm it in one or two sentences and propose ONE concrete first action you could take — as an offer, and wait for their go-ahead.","",`Do not start the actual job yet — your own ${Tt.soul} is the only file you touch now. Do not act on their project or run their work until they say go. Speak warmly and directly to the person throughout.`].join(`
|
|
98
|
+
`)}const DE={template:TE,"design-your-own":RE};function OE(e,t){return DE[e](t)}function ME(e,t){return Bx(OE(e,t))}const Pu="🤖",_E=["🤖","🦾","🧭","🛰️","📡","🔭","🗺️","🧠","🦉","🦊","🐝","🐙","🚀","⚡","🌟","🔮","🛠️","🔧","📊","📋","✅","🗂️","🔔","🛡️"];function Li({face:e,title:t,subtitle:s,chips:r,variant:o,tabIndex:a,onSelect:i,onKeyDown:c,ref:d,"data-testid":m}){return n.jsxs("button",{ref:d,type:"button",tabIndex:a,onClick:i,onKeyDown:c,"data-gallery-card":"","data-testid":m,className:B("card-interactive group flex h-full flex-col gap-2 rounded-xl border p-4 text-left","focus-visible:ring-ring focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none",o==="design"?"border-primary/40 bg-primary/5 hover:border-primary/60 border-dashed":"bg-card hover:border-border/80 hover:shadow-md"),children:[n.jsx("span",{className:"text-3xl leading-none","aria-hidden":!0,children:e}),n.jsxs("div",{className:"space-y-0.5",children:[n.jsx("p",{className:"text-sm font-semibold",children:t}),n.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed",children:s})]}),r&&r.length>0&&n.jsx("div",{className:"mt-auto flex flex-wrap gap-1 pt-1",children:r.map(u=>n.jsx("span",{className:"bg-muted text-muted-foreground text-2xs rounded-full px-2 py-0.5",children:u},u))})]})}function PE(e){return{source:e.source,name:e.name,displayName:Sl(e),description:e.description,icon:e.icon,tags:e.tags,category:e.category,packageName:e.name,...e.marketplace?{marketplace:e.marketplace}:{}}}function LE(e){return e.tags&&e.tags.length>0?e.tags.slice(0,2):e.category?[e.category]:[]}function FE(e){const t=e.replace(/\/+$/,"");return t.split("/").pop()??t}function $E({onDesignYourOwn:e,onSelectTemplate:t,onImport:s}){const{data:r,error:o,isLoading:a}=Bg(),i=Tl(a),[c,d]=l.useState(""),[m,u]=l.useState(!1),f=l.useMemo(()=>(r??[]).filter(h=>h.type==="agent"),[r]),p=Yy(f.length+1);return n.jsxs("div",{className:"space-y-5",children:[n.jsxs("div",{role:"group","aria-label":"Choose what your agent will do",className:"grid grid-cols-1 gap-3 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4","data-testid":"agent-gallery",children:[n.jsx(Li,{ref:p.setRef(0),variant:"design",face:n.jsx(vo,{className:"text-primary size-7"}),title:"Design your own",subtitle:"Describe the job in your own words.",tabIndex:p.tabIndexFor(0),onSelect:e,onKeyDown:h=>p.handleKeyDown(h,0),"data-testid":"gallery-design-your-own"}),f.map((h,g)=>{const x=g+1;return n.jsx(Li,{ref:p.setRef(x),variant:"template",face:h.icon??Pu,title:Sl(h),subtitle:h.description??"A ready-made agent.",chips:LE(h),tabIndex:p.tabIndexFor(x),onSelect:()=>t(PE(h)),onKeyDown:b=>p.handleKeyDown(b,x),"data-testid":`gallery-template-${h.name}`},h.name)}),i&&f.length===0&&Array.from({length:2}).map((h,g)=>n.jsx(yt,{className:"h-28 rounded-xl","data-testid":"gallery-skeleton"},g))]}),!i&&f.length===0&&n.jsx("p",{className:"text-muted-foreground text-center text-xs","data-testid":"gallery-templates-note",children:o?"Couldn’t load ready-made agents. Check marketplace sources in Settings.":"No ready-made agents yet. Add a marketplace source in Settings."}),n.jsxs(bs,{open:m,onOpenChange:u,children:[n.jsx(vs,{asChild:!0,children:n.jsxs("button",{type:"button",className:"text-muted-foreground hover:text-foreground flex items-center gap-1 text-xs transition-colors","data-testid":"advanced-toggle",children:[n.jsx(mt,{className:B("size-3.5 transition-transform",m&&"rotate-180")}),"Build from a template URL"]})}),n.jsx(ws,{children:n.jsxs("div",{className:"flex items-center gap-2 pt-2",children:[n.jsx(Ze,{value:c,onChange:h=>d(h.target.value),placeholder:"github.com/org/repo","data-testid":"custom-url-input",className:"flex-1"}),n.jsx(_,{size:"sm",disabled:!c,onClick:()=>{const h=FE(c);t({source:c,name:h,displayName:zg(h)}),d("")},"data-testid":"custom-url-go",children:"Continue"})]})})]}),n.jsx("div",{className:"border-t pt-3",children:n.jsxs("button",{type:"button",onClick:s,className:"text-muted-foreground hover:text-foreground inline-flex items-center gap-1.5 text-sm transition-colors","data-testid":"gallery-import-link",children:[n.jsx(Ug,{className:"size-4"}),"Bring in an existing project folder",n.jsx("span",{"aria-hidden":!0,children:"→"})]})})]})}function BE({value:e,onChange:t}){return n.jsx("div",{role:"group","aria-label":"Choose a face",className:"flex flex-wrap gap-1.5","data-testid":"face-picker",children:_E.map(s=>{const r=s===e;return n.jsx("button",{type:"button","aria-label":`Face ${s}`,"aria-pressed":r,onClick:()=>t(s),className:B("flex size-9 items-center justify-center rounded-md border text-lg transition-colors","focus-visible:ring-ring focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none",r?"border-primary bg-primary/10":"hover:border-border hover:bg-accent border-transparent"),"data-testid":`face-${s}`,children:n.jsx("span",{"aria-hidden":!0,children:s})},s)})})}function zE({value:e,onChange:t}){return n.jsx("div",{role:"radiogroup","aria-label":"Runs on",className:"flex gap-1.5","data-testid":"runtime-picker",children:Kg.map(s=>{const r=Ye(s),o=r.icon,a=e===s;return n.jsxs("button",{type:"button",role:"radio","aria-checked":a,onClick:()=>t(s),className:B("flex flex-1 items-center justify-center gap-1.5 rounded-md border px-2 py-1.5 text-xs transition-colors","focus-visible:ring-ring focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none",a?"border-primary bg-primary/10 font-medium":"hover:border-border hover:bg-accent border-transparent"),"data-testid":`runtime-${s}`,children:[n.jsx(o,{size:14}),r.label]},s)})})}function UE({face:e,name:t,jobLine:s,capabilities:r,className:o}){const a=t.trim()||"Your agent",i=t.trim().length===0;return n.jsxs("div",{className:B("bg-card shadow-soft flex flex-col items-center gap-3 rounded-lg border p-5",o),"data-testid":"agent-preview",children:[n.jsx("span",{className:"bg-primary/10 flex size-16 items-center justify-center rounded-full text-3xl","aria-hidden":!0,children:e}),n.jsxs("div",{className:"space-y-1 text-center",children:[n.jsx("p",{className:B("text-lg font-semibold",i&&"text-muted-foreground"),"data-testid":"preview-name",children:a}),n.jsx("p",{className:"text-muted-foreground text-sm leading-relaxed",children:s})]}),r.length>0&&n.jsx("div",{className:"flex flex-wrap justify-center gap-1.5","data-testid":"preview-capabilities",children:r.map(c=>n.jsx("span",{className:"bg-muted text-muted-foreground rounded-full px-2 py-0.5 text-xs",children:c},c))})]})}function Lu({schedules:e,checkFailed:t,testIdPrefix:s}){return n.jsxs(n.Fragment,{children:[e.length>0&&n.jsxs("div",{className:"flex items-start gap-2","data-testid":`${s}-package-schedules`,children:[n.jsx(ko,{className:"text-muted-foreground mt-0.5 size-4 shrink-0"}),n.jsx("dt",{className:"text-muted-foreground shrink-0",children:"Brings a schedule"}),n.jsx("dd",{className:"min-w-0 space-y-1",children:e.map((r,o)=>n.jsxs("p",{children:[n.jsx("span",{className:"font-medium",children:r.name}),": ",jx(r)]},`${r.name}-${o}`))})]}),t&&n.jsxs("div",{className:"flex items-start gap-2","data-testid":`${s}-offer-check-failed`,children:[n.jsx(Wi,{className:"text-status-warning-dot mt-0.5 size-4 shrink-0"}),n.jsx("dt",{className:"text-muted-foreground shrink-0",children:"Not checked"}),n.jsx("dd",{className:"min-w-0",children:"Couldn’t check for scheduled work. Anything it brings still needs your approval."})]})]})}const Fi=4;function KE({form:e,suggestionPool:t,jobLine:s,previewCapabilities:r,onBack:o,onImportInstead:a,onCreate:i,isCreating:c,packageSchedules:d=[],offerCheckFailed:m=!1,isCheckingOffer:u=!1,offerRefusal:f,packageDirectory:p,templateReview:h,inheritance:g,isCheckingInheritance:x=!1}){const b=l.useRef(null),[y,S]=l.useState(0),j=e.displayName.trim().toLowerCase(),C=t.filter(D=>D.toLowerCase()!==j),v=NE(C,y,Fi);l.useEffect(()=>{const D=setTimeout(()=>{var T;return(T=b.current)==null?void 0:T.focus()},160);return()=>clearTimeout(D)},[]);const N=e.displayName.trim(),I=c?`Creating ${N||"your agent"}…`:`Create ${N||"agent"}`;return n.jsxs("div",{className:"grid gap-6 md:grid-cols-2",children:[n.jsxs("div",{className:"space-y-5",children:[n.jsxs("button",{type:"button",onClick:o,className:"text-muted-foreground hover:text-foreground -ml-1 inline-flex items-center gap-1 text-xs transition-colors","data-testid":"naming-back",children:[n.jsx(Ac,{className:"size-3.5"}),"Choose a different agent"]}),n.jsxs("div",{className:"space-y-2",children:[n.jsx(Pe,{htmlFor:"agent-name",className:"text-sm",children:"Name"}),n.jsx(Ze,{ref:b,id:"agent-name",placeholder:"Name your agent",value:e.displayName,onChange:D=>e.handleNameChange(D.target.value),"aria-invalid":e.showSlugError,"aria-describedby":e.showSlugError?"agent-name-error":void 0,className:"h-11 text-base"}),e.showSlugError&&n.jsx("p",{id:"agent-name-error",className:"text-destructive text-xs",role:"alert",children:e.slugValidation.error}),e.conflictStatus==="exists-has-dork"&&n.jsxs("div",{"data-testid":"conflict-status",children:[n.jsx("p",{className:"text-status-warning-fg text-xs font-medium",children:"This folder has a project"}),n.jsx("button",{type:"button",className:"text-primary text-xs hover:underline",onClick:a,"data-testid":"import-instead-link",children:"Import it instead"})]})]}),n.jsxs("div",{className:"space-y-2",children:[n.jsxs("div",{className:"flex items-center justify-between",children:[n.jsx("span",{className:"text-muted-foreground text-xs",children:"Need a name?"}),n.jsx("button",{type:"button",onClick:()=>S(D=>D+Fi),"aria-label":"Show other names",className:"text-muted-foreground hover:text-foreground focus-visible:ring-ring rounded text-sm transition-colors focus-visible:ring-2 focus-visible:outline-none","data-testid":"suggestion-reroll",children:n.jsx("span",{"aria-hidden":!0,children:"🎲"})})]}),n.jsx("div",{className:"flex flex-wrap gap-1.5","data-testid":"name-suggestions",children:v.map(D=>n.jsx("button",{type:"button",onClick:()=>e.handleNameChange(D),className:"bg-muted hover:bg-accent focus-visible:ring-ring rounded-full px-2.5 py-1 text-xs transition-colors focus-visible:ring-2 focus-visible:outline-none","data-testid":`suggestion-${D}`,children:D},D))})]}),n.jsxs("div",{className:"space-y-2",children:[n.jsxs("div",{className:"flex items-baseline gap-2",children:[n.jsx(Pe,{className:"text-sm",children:"Face"}),!e.icon&&n.jsx("span",{className:"text-muted-foreground text-xs",children:"Picked for you if skipped"})]}),n.jsx(BE,{value:e.icon,onChange:e.setIcon})]}),n.jsxs(bs,{open:e.directoryOpen,onOpenChange:e.setDirectoryOpen,children:[n.jsx(vs,{asChild:!0,children:n.jsxs("button",{type:"button",className:"text-muted-foreground hover:text-foreground flex w-full items-center gap-1 text-sm transition-colors","data-testid":"details-toggle",children:[n.jsx(mt,{className:B("size-4 transition-transform",e.directoryOpen&&"rotate-180")}),"Details",e.directoryOverride&&n.jsx("span",{className:"bg-primary/10 text-primary ml-1 rounded px-1.5 py-0.5 text-xs",children:"Custom"})]})}),n.jsx(ws,{children:n.jsxs("div",{className:"space-y-4 pt-3",children:[n.jsxs("div",{className:"space-y-1.5",children:[n.jsx(Pe,{className:"text-muted-foreground text-xs",children:"Runs on"}),n.jsx(zE,{value:e.runtime,onChange:e.setRuntime})]}),p?n.jsxs("div",{className:"space-y-1.5","data-testid":"package-directory",children:[n.jsx(Pe,{className:"text-muted-foreground text-xs",children:"Directory"}),n.jsx("p",{className:"font-mono text-xs [overflow-wrap:anywhere]",children:p}),n.jsx("p",{className:"text-muted-foreground text-xs",children:"Kept in its package’s folder so updates reach it."})]}):n.jsxs("div",{className:"space-y-1.5",children:[n.jsx(Pe,{htmlFor:"agent-directory",className:"text-muted-foreground text-xs",children:"Directory"}),n.jsx(Hg,{id:"agent-directory",placeholder:e.resolvedDirectory||(e.defaultDirectory?`${e.defaultDirectory}/…`:""),value:e.directoryOverride,onChange:e.setDirectoryOverride,onBrowse:()=>e.setDirectoryPickerOpen(!0),browseTestId:"browse-directory-button","data-testid":"directory-preview"}),e.conflictStatus==="no-path"&&n.jsx("p",{className:"text-muted-foreground text-xs","data-testid":"conflict-status",children:"Creates a new folder"}),e.conflictStatus==="exists-no-dork"&&n.jsx("p",{className:"text-muted-foreground text-xs","data-testid":"conflict-status",children:"That folder is already there. The project goes inside it."}),e.conflictStatus==="error"&&n.jsx("p",{className:"text-destructive text-xs","data-testid":"conflict-status",children:"Can’t open this folder. Pick another."})]}),!p&&e.slug&&!e.showSlugError&&n.jsxs("p",{className:"text-muted-foreground text-xs",children:["Folder name:"," ",n.jsx("code",{className:"bg-muted rounded px-1 py-0.5 font-mono text-xs",children:e.slug})]})]})})]})]}),n.jsxs("div",{className:"flex flex-col gap-4 self-start",children:[n.jsx(UE,{face:e.icon||Pu,name:e.displayName,jobLine:s,capabilities:r}),(d.length>0||m)&&n.jsx("dl",{className:"bg-muted/30 space-y-2.5 rounded-lg border p-3.5 text-sm",children:n.jsx(Lu,{schedules:d,checkFailed:m,testIdPrefix:"naming"})}),f!==void 0&&n.jsx(Al,{error:f}),h,u&&n.jsx("p",{className:"text-muted-foreground text-center text-xs","data-testid":"naming-checking-offer",children:"Checking for scheduled work…"}),g,n.jsx(_,{size:"lg",onClick:i,disabled:!e.canSubmit||c||u||x||f!==void 0,"data-testid":"create-button",children:I})]})]})}function HE({seed:e,packageSchedules:t,isCheckingOffer:s,offerCheckFailed:r,offerRefusal:o,resolvedDirectory:a,canSubmit:i,isCreating:c,inheritance:d,isCheckingInheritance:m=!1,onCreate:u,onCustomize:f,onNotNow:p}){const{displayName:h,persona:g,runtime:x,capabilities:b,skills:y,schedule:S,icon:j}=e.template,C=Ye(x??"claude-code").label,v=h.trim().charAt(0).toUpperCase()||"?",N=j&&Ir(j)?j:v,I=e.sourceLabel?`Offered by ${e.sourceLabel}.`:"A ready-made agent.";return n.jsxs("div",{className:"mx-auto max-w-md space-y-6","data-testid":"arrival-confirm",children:[n.jsxs("div",{className:"flex flex-col items-center gap-3 text-center",children:[n.jsx("span",{className:"bg-primary/10 text-primary flex size-20 items-center justify-center rounded-full text-4xl font-semibold","aria-hidden":"true",children:N}),n.jsxs("div",{className:"space-y-1",children:[n.jsxs(Ue,{className:"text-xl",children:["Meet ",h]}),n.jsx(Je,{children:I})]})]}),g&&n.jsx("p",{className:"text-foreground text-sm leading-relaxed whitespace-pre-line",children:g}),n.jsxs("dl",{className:"bg-muted/30 space-y-2.5 rounded-lg border p-3.5 text-sm",children:[n.jsxs("div",{className:"flex items-center gap-2",children:[n.jsx(qE,{runtime:x}),n.jsx("dt",{className:"text-muted-foreground shrink-0",children:"Runs on"}),n.jsx("dd",{children:C})]}),n.jsxs("div",{className:"flex items-start gap-2",children:[n.jsx(Ss,{className:"text-muted-foreground mt-0.5 size-4 shrink-0"}),n.jsx("dt",{className:"text-muted-foreground shrink-0",children:"Lives in"}),n.jsx("dd",{className:"min-w-0",children:a?n.jsx("code",{className:"text-xs break-all",children:a}):n.jsx(yt,{className:"h-3.5 w-48 max-w-full rounded"})})]}),S&&n.jsxs("div",{className:"flex items-start gap-2","data-testid":"arrival-schedule",children:[n.jsx(ko,{className:"text-muted-foreground mt-0.5 size-4 shrink-0"}),n.jsx("dt",{className:"text-muted-foreground shrink-0",children:"Runs on a schedule"}),n.jsx("dd",{children:S})]}),n.jsx(Lu,{schedules:t,checkFailed:r,testIdPrefix:"arrival"}),b&&b.length>0&&n.jsxs("div",{className:"flex items-start gap-2",children:[n.jsx(qg,{className:"text-muted-foreground mt-0.5 size-4 shrink-0"}),n.jsx("dt",{className:"text-muted-foreground shrink-0",children:"Can"}),n.jsx("dd",{children:b.join(", ")})]}),y&&y.length>0&&n.jsxs("div",{className:"flex items-start gap-2",children:[n.jsx(xc,{className:"text-muted-foreground mt-0.5 size-4 shrink-0"}),n.jsx("dt",{className:"text-muted-foreground shrink-0",children:"Uses skills"}),n.jsx("dd",{children:y.join(", ")})]})]}),o!==void 0&&n.jsx(Al,{error:o}),n.jsxs("div",{className:"flex flex-col gap-2",children:[!i&&n.jsx("p",{className:"text-status-warning-fg text-center text-xs","data-testid":"arrival-needs-name",children:"Needs a name. Choose “Customize first” to add one."}),s&&n.jsx("p",{className:"text-muted-foreground text-center text-xs","data-testid":"arrival-checking-offer",children:"Checking for scheduled work…"}),d,n.jsx(_,{size:"lg",onClick:u,disabled:c||!i||s||m||o!==void 0,"data-testid":"arrival-create",children:c?"Creating…":`Create ${h}`}),n.jsxs("div",{className:"flex items-center justify-center gap-4",children:[n.jsx(_,{variant:"ghost",size:"sm",onClick:f,className:"text-muted-foreground","data-testid":"arrival-customize",children:"Customize first"}),n.jsx(_,{variant:"ghost",size:"sm",onClick:p,className:"text-muted-foreground","data-testid":"arrival-not-now",children:"Not now"})]})]})]})}function qE({runtime:e}){const t=Ye(e??"claude-code").icon;return n.jsx(t,{size:16,className:"text-muted-foreground shrink-0"})}function WE(e){const t=e==null?void 0:e.body;return(t==null?void 0:t.code)==="template_needs_review"?t.template:void 0}function GE(e,t){const s=e.replace(/\/*$/,"/");return t.filter(r=>r.path===e||r.path.startsWith(s))}function YE(e){return e.omitted==="link"?"A link. It isn’t copied into the agent.":e.omitted==="not-text"?`Not text (${e.bytes} bytes).`:`Too long to show (${e.bytes} bytes). Read it in the template first.`}function VE(e){const t=(e.settings??[]).filter(s=>s.omitted==="too-long"||s.omitted==="not-text");return t.length===0?"Create with these":t.length===1?`Create without seeing ${t[0].path}`:`Create without seeing ${t.length} files`}function QE(e){const{disclosed:t}=e;return[...e.findings.map(s=>({key:`finding:${s.path}`,label:s.path,detail:"Settings the agent loads: hooks, permission rules or servers.",files:GE(s.path,e.settings??[])})),...t.hooks.map((s,r)=>({key:`hook:${r}`,label:Qe(s.command),detail:`Runs on ${s.event}${s.source?`, while ${Qe(s.source)} is in use`:""}.`})),...(t.skillCommands??[]).map((s,r)=>({key:`command:${s.source}:${r}`,label:Qe(s.command),detail:`Runs when skill “${Qe(s.skill)}” is used (${Qe(s.source)})`+(s.usesArguments?". Reads the text typed after it.":".")})),...t.mcpServers.map(s=>({key:`mcp:${s.name}`,label:s.command?Gg(s.command,s.args):Qe(s.url??s.name),detail:`Starts the MCP server “${Qe(s.name)}”.`})),...t.skillTools.map(s=>({key:`tools:${s.source}`,label:s.tools.map(Qe).join(", "),detail:`Skill “${Qe(s.skill)}” may use these without asking you.`}))]}function XE({template:e,onCreateAnyway:t,onCancel:s,isCreating:r}){return n.jsxs("div",{role:"alert",className:"space-y-3 rounded-md border border-amber-500/40 bg-amber-500/5 p-3 text-sm","data-testid":"template-review",children:[n.jsxs("p",{className:"flex items-center gap-2 font-medium text-amber-700 dark:text-amber-300",children:[n.jsx(Wg,{className:"size-4 shrink-0","aria-hidden":!0}),"This template brings things that run in your agent’s chats"]}),n.jsxs("p",{className:"text-muted-foreground text-xs [overflow-wrap:anywhere]",children:["From ",e.source,". Check each before you create the agent."]}),n.jsx("ul",{className:"space-y-2",children:QE(e).map(o=>{var a;return n.jsxs("li",{className:"text-xs",children:[n.jsx("code",{className:"bg-muted text-foreground block rounded px-1.5 py-1 font-mono [overflow-wrap:anywhere] whitespace-pre-wrap",children:o.label}),n.jsx("span",{className:"text-muted-foreground",children:o.detail}),(a=o.files)==null?void 0:a.map(i=>n.jsxs("details",{className:"mt-1","data-testid":"template-settings-file",children:[n.jsx("summary",{className:"text-muted-foreground hover:text-foreground cursor-pointer",children:i.path===o.label?"Show what it contains":`Show ${i.path}`}),i.content!==void 0?n.jsx("pre",{className:"border-border/60 bg-muted/40 mt-1 max-h-[50dvh] overflow-auto rounded border p-2 font-mono text-xs break-words whitespace-pre-wrap md:max-h-56",children:i.content}):n.jsx("p",{className:"text-muted-foreground mt-1",children:YE(i)})]},i.path))]},o.key)})}),n.jsxs("div",{className:"flex flex-wrap justify-end gap-2",children:[n.jsx(_,{variant:"ghost",size:"sm",onClick:s,disabled:r,children:"Don’t create it"}),n.jsx(_,{size:"sm",onClick:t,disabled:r,className:"h-auto max-w-full py-1.5 text-left [overflow-wrap:anywhere] whitespace-normal",children:r?"Creating…":VE(e)})]})]})}function JE(){const{isOpen:e,seed:t,onCreated:s,close:r}=Es(),o=xn(q=>q.open),a=bE(),i=Te(),[c,d]=l.useState("gallery"),[m,u]=l.useState(null),[f,p]=l.useState(!1);e!==f&&(p(e),e&&(u(null),d(t?"arrival":"gallery")));const h=t!=null&&t.template.icon&&Ir(t.template.icon)?t.template.icon:void 0,g=m!=null&&m.icon&&Ir(m.icon)?m.icon:h??null,x=(t==null?void 0:t.template.runtime)??"claude-code",b=(t==null?void 0:t.packageName)!==void 0?t:(m==null?void 0:m.packageName)!==void 0?{packageName:m.packageName,marketplace:m.marketplace}:null,y=jE(b),{data:S}=_e(),j=b&&y.packageAgentName&&(S!=null&&S.dorkHome)?`${S.dorkHome}/agents/${y.packageAgentName}`:void 0,[C,v]=l.useState(null),N=wE({step:c,templateName:(m==null?void 0:m.displayName)??null,seedDisplayName:(t==null?void 0:t.template.displayName)??null,faceSeed:g,runtimeSeed:x}),I=CE(m?{name:m.name,description:m.description,category:m.category,tags:m.tags}:t?{name:t.template.displayName,description:t.template.persona}:void 0),D=m?m.description??"A ready-made agent.":t!=null&&t.template.persona?t.template.persona:"You’ll define the job together in your first chat.",T=m?m.tags??[]:(t==null?void 0:t.template.capabilities)??[];function A(){N.reset(),v(null),u(null),d("gallery")}const w=l.useCallback(q=>{u(q),d("naming")},[]),E=l.useCallback(()=>{u(null),d("naming")},[]);function k(){d(t?"arrival":"gallery")}function O(){r(),A(),o()}function R(q){var se;if(!N.canSubmit||a.isPending)return;const te=(b==null?void 0:b.packageName)!==void 0&&y.approval?{package:{name:b.packageName,...b.marketplace?{marketplace:b.marketplace}:{},...y.approval}}:void 0,ne=te?void 0:(m==null?void 0:m.source)??(t==null?void 0:t.template.source);a.mutate({name:N.slug,displayName:N.displayName.trim()||void 0,runtime:N.runtime,...!te&&N.directoryOverride?{directory:N.directoryOverride}:{},...N.icon?{icon:N.icon}:{},...te??{},...ne?{template:ne}:{},...q?{approvedTemplateHash:q}:{},...t!=null&&t.template.persona?{persona:t.template.persona}:{},...(se=t==null?void 0:t.template.capabilities)!=null&&se.length?{capabilities:t.template.capabilities}:{}},{onSuccess:V=>{const $=crypto.randomUUID(),L=V.displayName??V.name,Q=m||t?"template":"design-your-own";cc.getState().register($,{name:V.name,displayName:L,agentId:V.id,icon:V.icon,color:V.color,bornAt:V.registeredAt,path:V._path,runtime:V.runtime,kickoffMessage:ME(Q,{displayName:L,capabilities:V.capabilities})}),cy();const K=s;if(r(),A(),K){K();return}i(ut({agentId:V.id,draft:"1",session:$,runtime:V.runtime}))},onError:V=>{const $=WE(V);$&&v($)}})}function M(q){q||(r(),A())}const P=oc(e),F=n.jsx(Rv,{agentName:N.displayName||(t==null?void 0:t.template.displayName)||""}),Y=kE[c],ee=c==="gallery"?"max-w-6xl":c==="naming"?"max-w-5xl":"max-w-2xl";return n.jsx(et,{open:e,onOpenChange:M,defaultFullscreen:!0,children:n.jsxs(tt,{className:"flex flex-col gap-0 p-0",children:["title"in Y&&n.jsxs(Xe,{className:"shrink-0 border-b px-5 py-4",children:[n.jsx(Ue,{children:Y.title}),n.jsx(Je,{children:Y.description})]}),n.jsx("span",{className:"sr-only","aria-live":"polite","aria-atomic":"true",children:Y.description}),n.jsx("div",{className:"flex min-h-0 flex-1 flex-col overflow-y-auto px-5 py-6 sm:px-8",children:n.jsxs("div",{className:`mx-auto my-auto w-full ${ee}`,children:[n.jsx(Ie,{mode:"wait",children:n.jsxs(W.div,{initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},transition:{duration:.15},children:[c==="gallery"&&n.jsx($E,{onDesignYourOwn:E,onSelectTemplate:w,onImport:O}),c==="arrival"&&t&&n.jsx(HE,{seed:t,packageSchedules:y.schedules,isCheckingOffer:y.isChecking,offerCheckFailed:y.failed,offerRefusal:y.refusal,resolvedDirectory:j??N.resolvedDirectory,canSubmit:N.canSubmit,isCreating:a.isPending,inheritance:F,isCheckingInheritance:P.isPending,onCreate:()=>R(),onCustomize:()=>d("naming"),onNotNow:()=>M(!1)}),c==="naming"&&n.jsx(KE,{form:N,suggestionPool:I,jobLine:D,previewCapabilities:T,onBack:k,onImportInstead:O,onCreate:()=>R(),isCreating:a.isPending,packageSchedules:y.schedules,offerCheckFailed:y.failed,offerRefusal:y.refusal,isCheckingOffer:y.isChecking,packageDirectory:j,inheritance:F,isCheckingInheritance:P.isPending,templateReview:C?n.jsx(XE,{template:C,isCreating:a.isPending,onCreateAnyway:()=>R(C.contentHash),onCancel:()=>v(null)}):void 0})]},c)}),c!=="gallery"&&n.jsx(Dx,{className:"mt-6"})]})}),n.jsx(ac,{open:N.directoryPickerOpen,onOpenChange:N.setDirectoryPickerOpen,initialPath:N.directoryOverride||N.defaultDirectory,onSelect:q=>{N.setDirectoryOverride(q),N.directoryOpen||N.setDirectoryOpen(!0)}})]})})}function ZE({content:e}){return n.jsx("div",{className:"text-muted-foreground flex h-full items-center justify-center p-4 text-center text-sm",children:e.title})}const yr=64,eI={type:"spring",stiffness:480,damping:44};function tI({content:e,onRestore:t,onClose:s}){l.useEffect(()=>(document.documentElement.style.setProperty("--pip-dock",`${yr}px`),()=>{document.documentElement.style.removeProperty("--pip-dock")}),[]);const r=Xx();return xs.createPortal(n.jsxs(W.div,{"data-slot":"pip-minibar",role:"complementary","aria-label":e.title,initial:{y:yr},animate:{y:0},exit:{y:yr},transition:eI,style:{bottom:`max(var(--mobile-tab-dock, 0px), ${r}px)`},className:"bg-background border-border shadow-elevated fixed inset-x-0 z-40 flex h-16 items-center border-t",children:[n.jsxs("button",{type:"button",onClick:t,className:"focus-ring flex h-full min-w-0 flex-1 items-center gap-3 px-4 text-left",children:[n.jsx("span",{className:"bg-primary size-2 shrink-0 animate-pulse rounded-full"}),n.jsx("span",{className:"min-w-0 flex-1 truncate text-sm font-medium",children:e.title}),n.jsx(Xy,{className:"text-muted-foreground size-4 shrink-0"})]}),n.jsx("button",{type:"button","aria-label":"Close",onClick:s,className:"text-muted-foreground hover:bg-muted hover:text-foreground focus-ring mr-3 shrink-0 rounded-md p-2 transition-colors",children:n.jsx(Le,{className:"size-4"})})]}),document.body)}const Zn={peek:.5,expanded:.94},nI=.4,sI=800,$i=500,br={type:"spring",stiffness:480,damping:44};function rI({content:e,onClose:t,onMinimize:s,children:r}){const o=ky(),a=vy(),[i,c]=l.useState("peek"),[d,m]=l.useState(()=>window.innerHeight);l.useEffect(()=>{const x=()=>m(window.innerHeight);return window.addEventListener("resize",x),()=>window.removeEventListener("resize",x)},[]);const u=Zn.expanded*d,f=(Zn.expanded-Zn.peek)*d,p=i==="expanded"?0:f;l.useEffect(()=>{a.start({y:p,transition:br})},[a,p]);const h=(x,b)=>{const y=p+b.offset.y,S=b.velocity.y,j=y-f,C=Zn.peek*d;if(j>nI*C||j>0&&S>sI){s();return}let v;S<-$i?v="expanded":S>$i?v="peek":v=y<f/2?"expanded":"peek",v===i?a.start({y:p,transition:br}):c(v)},g=x=>{x.target.closest("button")||o.start(x)};return xs.createPortal(n.jsxs(W.div,{"data-slot":"pip-sheet",role:"complementary","aria-label":e.title,initial:{y:u},animate:a,exit:{y:u},transition:br,drag:"y",dragListener:!1,dragControls:o,dragConstraints:{top:0,bottom:u},dragElastic:.1,dragMomentum:!1,onDragEnd:h,style:{height:u},className:"bg-background border-border shadow-modal fixed inset-x-0 bottom-0 z-40 flex flex-col rounded-t-lg border-t",children:[n.jsxs("div",{onPointerDown:g,className:"cursor-grab touch-none select-none active:cursor-grabbing",children:[n.jsx("div",{className:"bg-muted mx-auto mt-4 h-2 w-[100px] rounded-full"}),n.jsxs("div",{className:"flex items-center justify-between gap-2 border-b px-4 pt-1 pb-2",children:[n.jsx("span",{className:"min-w-0 flex-1 truncate text-sm font-medium",children:e.title}),n.jsx("button",{type:"button","aria-label":"Minimize",onClick:s,className:"text-muted-foreground hover:bg-muted hover:text-foreground focus-ring shrink-0 rounded-md p-1 transition-colors",children:n.jsx(mt,{className:"size-4"})}),n.jsx("button",{type:"button","aria-label":"Close",onClick:t,className:"text-muted-foreground hover:bg-muted hover:text-foreground focus-ring shrink-0 rounded-md p-1 transition-colors",children:n.jsx(Le,{className:"size-4"})})]})]}),n.jsx("div",{className:"min-h-0 flex-1 overflow-y-auto p-3",children:r})]}),document.body)}const Bi=360,zi=240,Ui=16,vr={demo:ZE,mcp_app:oI,widget:aI};function oI({content:e}){return n.jsx(ry,{sessionId:e.sessionId,serverName:e.serverName,uri:e.uri,title:e.title,className:"h-full"})}function aI({content:e}){return n.jsx(Ev,{sessionId:e.sessionId})}function iI(e){l.useEffect(()=>{},[e])}function Ki(){return{x:window.innerWidth-Bi-Ui,y:window.innerHeight-zi-Ui,width:Bi,height:zi}}function cI(e,t){return e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height}function Fu(e){switch(e.kind){case"demo":{const t=vr.demo;return n.jsx(t,{content:e})}case"mcp_app":{const t=vr.mcp_app;return n.jsx(t,{content:e})}case"widget":{const t=vr.widget;return n.jsx(t,{content:e})}default:return e}}function lI({content:e,onClose:t}){const s=U(c=>c.pipGeometry),r=U(c=>c.setPipGeometry),[o,a]=l.useState(Ki);l.useEffect(()=>{if(s!==null)return;const c=()=>a(d=>{const m=Ki();return cI(d,m)?d:m});return c(),window.addEventListener("resize",c),()=>window.removeEventListener("resize",c)},[s]);const i=s??o;return n.jsx(Ie,{children:e!==null&&n.jsx(ub,{title:e.title,geometry:i,onGeometryChange:r,onClose:t,children:Fu(e)},"pip-panel")})}function dI(){const e=U(d=>d.pipContent),t=U(d=>d.pipMinimized),s=U(d=>d.closePip),r=U(d=>d.minimizePip),o=U(d=>d.restorePip),a=U(d=>d.openPip),i=Ae();iI(a);const c=l.useRef(i);return l.useEffect(()=>{i&&!c.current&&e!==null&&r(),c.current=i},[i,e,r]),i?n.jsx(Ie,{children:e!==null&&(t?n.jsx(tI,{content:e,onRestore:o,onClose:s},"pip-minibar"):n.jsx(rI,{content:e,onClose:s,onMinimize:r,children:Fu(e)},"pip-sheet"))}):n.jsx(lI,{content:e,onClose:s})}function uI(){const e=U(r=>r.shortcutsPanelOpen),t=U(r=>r.setShortcutsPanelOpen),s=Yg();return n.jsx(et,{open:e,onOpenChange:t,children:n.jsxs(tt,{className:"sm:max-w-md",children:[n.jsx(Xe,{children:n.jsx(Ue,{children:"Keyboard shortcuts"})}),n.jsx(lt,{className:"space-y-6",children:s.map(({group:r,label:o,shortcuts:a})=>n.jsxs("div",{children:[n.jsx("h3",{className:"text-muted-foreground mb-2 text-xs font-medium tracking-wider uppercase",children:o}),n.jsx("div",{className:"space-y-1",children:a.map(i=>n.jsxs("div",{className:"flex items-center justify-between py-1.5 text-sm",children:[n.jsx("span",{children:i.label}),n.jsx(rl,{className:"inline-flex",children:Mt(i)})]},i.id))})]},r))})]})})}function mI(){const e=U(t=>t.toggleShortcutsPanel);l.useEffect(()=>{const t=s=>{const r=s.target,o=r.tagName==="INPUT"||r.tagName==="TEXTAREA"||r.isContentEditable;s.key==="?"&&!o&&(s.preventDefault(),e())};return document.addEventListener("keydown",t),()=>document.removeEventListener("keydown",t)},[e])}const hI=15e3;function fI(){const e=Ee({select:r=>r.location.pathname}),s=Is("sidebar.body").find(r=>{var o;return(o=r.visibleWhen)==null?void 0:o.call(r,{pathname:e})});if(s){const r=s.component;return{key:`body:${s.id}`,body:n.jsx(r1,{contributionId:s.id,children:n.jsx(l.Suspense,{fallback:null,children:n.jsx(r,{})})}),direction:1,isTakeover:!0}}return{key:"dashboard",body:n.jsx(_C,{}),direction:-1,isTakeover:!1}}function pI(){const e=Ee({select:t=>t.matches});return Lw(e)}function gI(){const{sidebarOpen:e,setSidebarOpen:t}=U(),s=Ae(),r=gs(X=>X.panelUp),[o]=Vg(),a=Ee({select:X=>X.location.pathname}),i=Ee({select:X=>X.location.searchStr}),c=new URLSearchParams(i),d=a==="/channels"&&!!c.get("community")&&!!c.get("id"),m=f1(Ne()??!1),u=Ee({select:X=>p1(X.matches)});wv();const[f]=Mn(),p=U(X=>X.isStreaming),h=U(X=>X.activeForm),g=U(X=>X.isWaitingForUser),x=U(X=>X.tasksBadgeCount),{data:b}=yc(f),y=ro(b??null,f??""),{room:S,roomTitle:j,unreadRoomCount:C}=e1();n1(),Hy({cwd:f,isStreaming:p,color:b?y.color:void 0}),qy({cwd:f,activeForm:h,isStreaming:p,isWaitingForUser:g,agentName:b?Ce(b):void 0,agentEmoji:b?y.emoji:void 0,tasksBadgeCount:x,roomTitle:j,unreadRoomCount:C}),mI(),Mw(),Cx(),dE(),Nx(),Ax(),zx(),fj(),pj(),bj(),VA(),QA();const v=XA();JA(),Cv(),Ov(),yw(),Dv(),Qg(),h1(),Xg(),Nv(),cv(),Pb(),Wy(),Jg(),lv(),Zg(),F0(),Ox();const N=U(X=>X.onboardingHiddenForSession),I=U(X=>X.setOnboardingHiddenForSession),{shouldShowOnboarding:D,isLoading:T,isOnboardingComplete:A,isOnboardingDismissed:w}=Nt(),E=Ub({shouldShowOnboarding:D,onboardingHiddenForSession:N});Hb({done:A||w,overlayVisible:E}),Tv({blocked:E});const{dataUpdatedAt:k,errorUpdatedAt:O,error:R}=_e({refetchOnMount:u1}),M=k>Pt,P=O>Pt,F=d1(O,R),[Y,ee]=l.useState(!1);l.useEffect(()=>{if(M)return;const X=setTimeout(()=>ee(!0),hI);return()=>clearTimeout(X)},[M]);const q=(F==null?void 0:F.status)===void 0,te=!M&&q&&(P||Y),ne=M||(F==null?void 0:F.status)===void 0?void 0:F,[se,V]=l.useState(!1);l.useEffect(()=>{if(!T)return;const X=setTimeout(()=>V(!0),3e3);return()=>clearTimeout(X)},[T]);const $=l.useCallback(()=>I(!0),[I]),L=fI(),{origin:Q,originLabel:K}=ex(o),{data:le}=tx(o,{enabled:!1,select:X=>X.title}),je=pI(),ke=l.useMemo(()=>({sessionId:o??void 0,agentName:b?Ce(b):void 0,agentVisual:b?y:void 0,origin:Q,originLabel:K,sessionTitle:le,sessionDirectoryName:f?ul(f):void 0,room:S,teamViewMode:nx(new URLSearchParams(i).get("view")??void 0)}),[o,b,y,Q,K,le,f,S,i]),We=P1();return te?n.jsx(a1,{}):(ne==null?void 0:ne.status)!==void 0?n.jsx(c1,{status:ne.status,message:ne.message,code:ne.code}):T&&!se?n.jsx("div",{className:"bg-background h-dvh"}):n.jsx(sx,{children:n.jsxs(gy,{reducedMotion:"user",children:[n.jsx(Ie,{mode:"wait",children:E?n.jsx(W.div,{initial:{opacity:1},exit:{opacity:0},transition:{duration:.2},className:"fixed inset-0 z-50",children:n.jsx(rw,{onComplete:$,renderRuntimeConnect:rx})},"onboarding"):n.jsx(W.div,{initial:{opacity:0},animate:{opacity:1},transition:{duration:.2},className:"h-dvh",children:n.jsxs("div",{"data-testid":"app-shell",className:"bg-background text-foreground flex h-dvh flex-col",children:[n.jsxs(ox,{open:e,onOpenChange:t,className:B("flex-1 overflow-hidden",s&&"min-h-0"),style:{"--sidebar-width":"calc(272px + 1rem)"},children:[!s&&n.jsxs(ax,{variant:"inset",children:[n.jsx(s1,{isFullscreen:v}),n.jsx(ju,{}),n.jsx("div",{className:"relative flex min-h-0 flex-1 flex-col overflow-hidden",children:n.jsx(Ie,{mode:"wait",initial:!1,custom:L.direction,children:n.jsx(W.div,{"data-testid":"sidebar-body-swap",custom:L.direction,initial:"enter",animate:"center",exit:"exit",variants:{enter:X=>({x:`${X*100}%`,opacity:0}),center:{x:0,opacity:1},exit:X=>({x:`${X*-100}%`,opacity:0})},transition:{duration:.2,ease:[.4,0,.2,1]},className:"flex min-h-0 flex-1 flex-col overflow-hidden",children:L.body},L.key)})}),n.jsx(ix,{className:"px-2 py-3",children:n.jsx(xl,{})}),n.jsx(cx,{})]}),n.jsxs(lx,{className:"overflow-hidden",inert:s&&r,children:[Me()&&n.jsx(dj,{className:B("app-drag-region",!e&&!v&&"desktop-darwin:pl-20")}),n.jsxs("header",{className:"app-drag-region @container/bar relative flex h-9 shrink-0 items-center gap-1 border-b px-2 transition-[border-color] duration-300 lg:gap-2",children:[!s&&n.jsxs(n.Fragment,{children:[n.jsx(dx,{className:"-ml-0.5"}),n.jsx(hj,{}),n.jsx(ux,{orientation:"vertical",className:"mr-1 h-4"})]}),s&&n.jsx(fN,{}),n.jsx(Ie,{mode:"wait",initial:!1,children:je&&n.jsx(W.div,{initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},transition:{duration:.1},className:"flex min-w-0 flex-1 items-center gap-1 self-stretch lg:gap-2",children:n.jsx(mx,{value:ke,children:n.jsx(je.Header,{})})},je.key)}),n.jsx(lE,{}),n.jsx(gE,{}),n.jsx(yE,{}),n.jsx(hx,{})]}),n.jsx(g1,{descriptors:We}),n.jsx("main",{id:kd,className:"flex-1 overflow-hidden pb-[var(--pip-dock,0px)]",children:n.jsxs(fx,{direction:"horizontal",id:Mr,autoSaveId:Mr,children:[n.jsx(uc,{id:"main-content",order:1,minSize:30,defaultSize:100,children:n.jsx(W.div,{initial:m?{opacity:0}:!1,animate:{opacity:1},transition:m?{duration:.12,ease:"easeOut"}:{duration:0},"data-route-fade":m,className:"h-full",children:n.jsx(px,{})},u)}),n.jsx(Ow,{pathname:a,isRemoteCommunityRoom:d})]})})]})]}),s&&n.jsx(V1,{takeover:L.isTakeover?L.body:null})]})},"main-app")}),n.jsx(WN,{}),n.jsx(U1,{onboardingOverlayVisible:E}),n.jsx(KA,{}),n.jsx(bN,{}),n.jsx(BN,{}),n.jsx(JE,{}),n.jsx(gw,{}),n.jsx(uI,{}),n.jsx(hb,{}),n.jsx(dI,{}),n.jsx(gx,{}),n.jsx(YA,{})]})})}const ZI=gI;export{ZI as component};
|