@whoz-oss/coday-client 0.248.2 → 0.249.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.
Files changed (70) hide show
  1. package/browser/{chunk-UF3D3UUD.js → chunk-3FDPLGME.js} +1 -1
  2. package/browser/{chunk-Y52DC76K.js → chunk-4KA7TIB4.js} +1 -1
  3. package/browser/{chunk-V63CBJL3.js → chunk-4NPMNHQN.js} +1 -1
  4. package/browser/{chunk-Z34N3CUS.js → chunk-4OSUCDSF.js} +1 -1
  5. package/browser/{chunk-WC55KAEC.js → chunk-4U47ZPZP.js} +1 -1
  6. package/browser/{chunk-EZSEUOCV.js → chunk-6PGRBK22.js} +2 -2
  7. package/browser/{chunk-RSGZ7YWF.js → chunk-7HQ3TFIP.js} +1 -1
  8. package/browser/{chunk-2TDFGQ4U.js → chunk-7P7KJUWV.js} +1 -1
  9. package/browser/{chunk-2QDRHKK5.js → chunk-7SEGP55P.js} +1 -1
  10. package/browser/{chunk-VVFVGWIQ.js → chunk-AKLSF437.js} +1 -1
  11. package/browser/{chunk-5PVR7BPQ.js → chunk-AZOMCTR7.js} +1 -1
  12. package/browser/chunk-AZSB2H23.js +1 -0
  13. package/browser/{chunk-XRGYHVGI.js → chunk-B5ZVUFND.js} +1 -1
  14. package/browser/{chunk-UEGZX4MW.js → chunk-BK6WNBAO.js} +1 -1
  15. package/browser/{chunk-B4UTEYRE.js → chunk-C7VJCZQE.js} +2 -2
  16. package/browser/{chunk-TFW43ZTS.js → chunk-CJQ4FDXR.js} +1 -1
  17. package/browser/{chunk-NMKUE2VW.js → chunk-CLTMZI2I.js} +1 -1
  18. package/browser/{chunk-NGMAQNX3.js → chunk-CNUJJQAG.js} +3 -3
  19. package/browser/{chunk-OFAUBLZA.js → chunk-DIJGQPPG.js} +1 -1
  20. package/browser/{chunk-LVRSSQUD.js → chunk-EMVHTOJY.js} +1 -1
  21. package/browser/{chunk-KB2ABAWC.js → chunk-F7UYEPIO.js} +1 -1
  22. package/browser/{chunk-KY3GI5KF.js → chunk-FELDR7HF.js} +1 -1
  23. package/browser/{chunk-Y42FQQZC.js → chunk-FL2HNVMC.js} +1 -1
  24. package/browser/chunk-GFK56P4B.js +3 -0
  25. package/browser/{chunk-PDUSJ4QD.js → chunk-IPWNT3U4.js} +1 -1
  26. package/browser/{chunk-MWXEF4QG.js → chunk-IWVV3FNS.js} +1 -1
  27. package/browser/{chunk-GTCP3EYX.js → chunk-J6NBYNRX.js} +1 -1
  28. package/browser/chunk-JVZA4C5U.js +1 -0
  29. package/browser/{chunk-H5R3SW7B.js → chunk-KHCLVVXY.js} +1 -1
  30. package/browser/{chunk-DFU2RM36.js → chunk-KSZNM45C.js} +1 -1
  31. package/browser/{chunk-J7LPPELB.js → chunk-LPIKNWWZ.js} +1 -1
  32. package/browser/{chunk-MK6PPMBU.js → chunk-LVZVGPMV.js} +1 -1
  33. package/browser/{chunk-DIN6OQ3X.js → chunk-MHOEYCWL.js} +1 -1
  34. package/browser/{chunk-5KKUKGZH.js → chunk-MIVM4FAD.js} +1 -1
  35. package/browser/{chunk-JYYG7ZUT.js → chunk-MXD6ICBN.js} +1 -1
  36. package/browser/{chunk-TIO4RSPY.js → chunk-NHUXMXD2.js} +1 -1
  37. package/browser/{chunk-TCHHDPN6.js → chunk-NLCT6PBH.js} +1 -1
  38. package/browser/{chunk-OIFNN56R.js → chunk-NQHQFPW5.js} +2 -2
  39. package/browser/{chunk-DZ2M3NQD.js → chunk-OCMS2KMG.js} +1 -1
  40. package/browser/{chunk-E6T6QLQT.js → chunk-OO2H5F7U.js} +3 -3
  41. package/browser/{chunk-YZ7HJLJI.js → chunk-P4UYIBTK.js} +1 -1
  42. package/browser/{chunk-C3GZ6PYA.js → chunk-P5FCG3WF.js} +1 -1
  43. package/browser/{chunk-WLQB3UUA.js → chunk-PGEMQVT2.js} +1 -1
  44. package/browser/{chunk-DPLTZQJN.js → chunk-QYUULQIF.js} +1 -1
  45. package/browser/{chunk-SGNDHUEQ.js → chunk-ROOPYJTV.js} +1 -1
  46. package/browser/{chunk-QH6RTNNU.js → chunk-RSTB4RTA.js} +1 -1
  47. package/browser/{chunk-6JMDCL65.js → chunk-RUXH3KF5.js} +1 -1
  48. package/browser/{chunk-2XANOO7Y.js → chunk-SN27D3CH.js} +1 -1
  49. package/browser/{chunk-RXH3NNTB.js → chunk-SVOSTUY5.js} +1 -1
  50. package/browser/{chunk-WAGXU26A.js → chunk-SXFAR5TU.js} +1 -1
  51. package/browser/{chunk-VNO76B3S.js → chunk-TTHFWEW7.js} +3 -3
  52. package/browser/chunk-UAC4ZZCA.js +1 -0
  53. package/browser/{chunk-J4UAEXFM.js → chunk-UAVOIVZW.js} +1 -1
  54. package/browser/{chunk-OITCRMRM.js → chunk-VN2SNJFT.js} +1 -1
  55. package/browser/{chunk-CRODJUF7.js → chunk-WARAZYNV.js} +1 -1
  56. package/browser/{chunk-BHAZO7U5.js → chunk-WNJYWSOR.js} +1 -1
  57. package/browser/{chunk-LYDUBL3X.js → chunk-WVXEP3PL.js} +1 -1
  58. package/browser/{chunk-SKBEA6VH.js → chunk-XIV35L24.js} +1 -1
  59. package/browser/{chunk-HT3AURU3.js → chunk-XORVTVXX.js} +1 -1
  60. package/browser/{chunk-CRXIMHRG.js → chunk-XXVFHAN5.js} +1 -1
  61. package/browser/{chunk-FIDRP4UY.js → chunk-YV2SJQAM.js} +1 -1
  62. package/browser/{chunk-55CLK4XC.js → chunk-Z3AHFIZF.js} +1 -1
  63. package/browser/{chunk-JF7QMQ4U.js → chunk-ZEQWC4IU.js} +1 -1
  64. package/browser/index.html +1 -1
  65. package/browser/{main-TPEZWDPT.js → main-7VP3QZBV.js} +1 -1
  66. package/package.json +1 -1
  67. package/browser/chunk-5WX43L4B.js +0 -1
  68. package/browser/chunk-GS2CQHR7.js +0 -3
  69. package/browser/chunk-I2ONTIJI.js +0 -1
  70. package/browser/chunk-TASSC2XX.js +0 -1
@@ -1,4 +1,4 @@
1
- import{a as it,b as ot,d as De,g as Ne}from"./chunk-UEGZX4MW.js";import{a as Ze,b as H,c as Ke,d as et,w as lt,z as dt}from"./chunk-CRXIMHRG.js";import{c as fe}from"./chunk-6XX7GME4.js";import{c as ut}from"./chunk-J4UAEXFM.js";import{h as at,j as ct}from"./chunk-GTCP3EYX.js";import{a as tt,b as nt,d as rt,k as mt,l as pt,m as gt,n as _t}from"./chunk-E6T6QLQT.js";import{d as Ye}from"./chunk-BTOJ27OO.js";import{a as F,c as w}from"./chunk-VMYKE4ZC.js";import{a as q,b as W}from"./chunk-AS2L77JV.js";import{D as st,E as Pe,c as Ce,g as xe,m as ye}from"./chunk-7OGOI6WM.js";import{a as be,b as ve}from"./chunk-TASSC2XX.js";import{E as Je,O as Q,S as G,n as We}from"./chunk-G5RWG2GK.js";import{$b as he,Ab as ke,B as ae,Bb as b,Cb as Be,Db as u,Fb as c,Gb as Ue,Ha as ne,Hb as Xe,Jb as me,Ka as l,Kb as pe,Kc as qe,Lb as ge,Pb as Ee,Qb as M,Rb as C,T as $,Tb as d,Ub as y,Vb as oe,Wa as N,Xa as $e,Z as Le,Zb as _e,_ as Re,_b as ue,a as z,ab as ce,b as Z,ca as v,dc as Qe,ec as Ge,ga as m,h as ze,ha as p,jb as le,jc as He,lb as g,ma as se,mb as _,mc as S,nb as de,oa as ee,pb as k,qb as E,qc as X,rb as x,sb as r,t as K,ta as P,tb as a,ua as te,ub as V,vb as B,wb as ie,xb as U,z as Ae}from"./chunk-CHEXA6RY.js";var ht=(()=>{class n{static \u0275fac=function(i){return new(i||n)};static \u0275mod=$e({type:n});static \u0275inj=Re({imports:[Je]})}return n})();var St=(n,t)=>({subThreads:n,depth:t}),wt=n=>({subThreads:n,depth:1}),vt=(n,t)=>t.id,Tt=(n,t)=>t.label;function Ot(n,t){if(n&1){let e=b();r(0,"mat-icon",10),u("click",function(o){m(e);let s=c().$implicit,f=c(3);return p(f.toggleSubThreads(o,s.id))}),d(1),a()}if(n&2){let e=c().$implicit,i=c(3);l(),y(i.isParentExpanded(e.id)?"expand_more":"chevron_right")}}function kt(n,t){n&1&&ke(0)}function Et(n,t){if(n&1&&ce(0,kt,1,0,"ng-container",11),n&2){let e=c().$implicit,i=c().depth;c();let o=Ee(1);x("ngTemplateOutlet",o)("ngTemplateOutletContext",Ge(2,St,e.subThreads,i+1))}}function Dt(n,t){if(n&1){let e=b();r(0,"div",5)(1,"a",6),u("click",function(o){let s=m(e).$implicit;return c(3).selectThread(s.id),p(o.preventDefault())})("keydown.enter",function(o){let s=m(e).$implicit;return c(3).selectThread(s.id),p(o.preventDefault())})("keydown.space",function(o){let s=m(e).$implicit;return c(3).selectThread(s.id),p(o.preventDefault())}),g(2,Ot,2,1,"mat-icon",7),r(3,"span",8),d(4),a(),r(5,"span",9),d(6),a()()(),g(7,Et,1,5,"ng-container")}if(n&2){let e,i=t.$implicit,o=c().depth,s=c(2);M("--sub-depth",o),C("current",i.id===((e=s.currentThread())==null?null:e.id)),l(2),_(i.subThreads!=null&&i.subThreads.length?2:-1),l(2),y(i.delegatedAgentName||"Agent"),l(2),y(i.delegatedTask||i.name),l(),_(s.isParentExpanded(i.id)&&(i.subThreads!=null&&i.subThreads.length)?7:-1)}}function Nt(n,t){if(n&1&&k(0,Dt,8,8,null,null,vt),n&2){let e=t.subThreads;E(e)}}function jt(n,t){n&1&&(r(0,"div",4),V(1,"span",12),r(2,"span",13),d(3,"Loading threads..."),a()())}function Vt(n,t){if(n&1&&(r(0,"div",27),d(1),a()),n&2){let e=c(6);l(),y(e.renameErrorMessage)}}function Ft(n,t){if(n&1){let e=b();r(0,"div",18)(1,"input",26),he("ngModelChange",function(o){m(e);let s=c(5);return ue(s.editingThreadName,o)||(s.editingThreadName=o),p(o)}),u("keydown",function(o){m(e);let s=c(5);return p(s.onEditKeydown(o))})("blur",function(){m(e);let o=c(5);return p(o.onEditBlur())})("click",function(o){return o.stopPropagation()}),a(),g(2,Vt,2,1,"div",27),a()}if(n&2){let e=c(5);l(),_e("ngModel",e.editingThreadName),x("disabled",e.isRenamingThread),l(),_(e.renameErrorMessage?2:-1)}}function It(n,t){if(n&1){let e=b();r(0,"mat-icon",10),u("click",function(o){m(e);let s=c(2).$implicit,f=c(4);return p(f.toggleSubThreads(o,s.id))}),d(1),a()}if(n&2){let e=c(2).$implicit,i=c(4);l(),y(i.isParentExpanded(e.id)?"expand_more":"chevron_right")}}function zt(n,t){if(n&1&&(r(0,"span",29),d(1),a()),n&2){let e=c(2).$implicit;l(),y(e.name)}}function At(n,t){n&1&&(V(0,"mat-spinner",31),r(1,"span",32),d(2,"Generating name..."),a()),n&2&&x("diameter",16)}function Lt(n,t){n&1&&(r(0,"mat-icon",30),d(1,"group"),a())}function Rt(n,t){if(n&1){let e=b();r(0,"a",28),u("click",function(o){m(e);let s=c().$implicit;return c(4).selectThread(s.id),p(o.preventDefault())})("keydown.enter",function(o){m(e);let s=c().$implicit;return c(4).selectThread(s.id),p(o.preventDefault())})("keydown.space",function(o){m(e);let s=c().$implicit;return c(4).selectThread(s.id),p(o.preventDefault())}),g(1,It,2,1,"mat-icon",7),g(2,zt,2,1,"span",29)(3,At,3,1),g(4,Lt,2,0,"mat-icon",30),a()}if(n&2){let e=c().$implicit,i=c(4);x("matTooltip",e.name?e.name+`
1
+ import{a as it,b as ot,d as De,g as Ne}from"./chunk-BK6WNBAO.js";import{a as Ze,b as H,c as Ke,d as et,w as lt,z as dt}from"./chunk-XXVFHAN5.js";import{c as fe}from"./chunk-6XX7GME4.js";import{c as ut}from"./chunk-UAVOIVZW.js";import{h as st,j as ct}from"./chunk-J6NBYNRX.js";import{a as tt,b as nt,e as at,k as mt,l as pt,m as gt,n as _t}from"./chunk-OO2H5F7U.js";import{d as Ye}from"./chunk-BTOJ27OO.js";import{a as F,c as w}from"./chunk-VMYKE4ZC.js";import{a as q,b as W}from"./chunk-AS2L77JV.js";import{D as rt,E as Pe,c as Ce,g as xe,m as ye}from"./chunk-7OGOI6WM.js";import{a as be,b as ve}from"./chunk-JVZA4C5U.js";import{E as Je,O as Q,S as G,n as We}from"./chunk-G5RWG2GK.js";import{$b as he,Ab as ke,B as ae,Bb as b,Cb as Be,Db as u,Fb as c,Gb as Ue,Ha as ne,Hb as Xe,Jb as me,Ka as l,Kb as pe,Kc as qe,Lb as ge,Pb as Ee,Qb as M,Rb as C,T as $,Tb as d,Ub as y,Vb as oe,Wa as N,Xa as $e,Z as Le,Zb as _e,_ as Re,_b as ue,a as z,ab as ce,b as Z,ca as v,dc as Qe,ec as Ge,ga as m,h as ze,ha as p,jb as le,jc as He,lb as g,ma as se,mb as _,mc as S,nb as de,oa as ee,pb as k,qb as E,qc as X,rb as x,sb as r,t as K,ta as P,tb as a,ua as te,ub as V,vb as B,wb as ie,xb as U,z as Ae}from"./chunk-CHEXA6RY.js";var ht=(()=>{class n{static \u0275fac=function(i){return new(i||n)};static \u0275mod=$e({type:n});static \u0275inj=Re({imports:[Je]})}return n})();var St=(n,t)=>({subThreads:n,depth:t}),wt=n=>({subThreads:n,depth:1}),vt=(n,t)=>t.id,Tt=(n,t)=>t.label;function Ot(n,t){if(n&1){let e=b();r(0,"mat-icon",10),u("click",function(o){m(e);let s=c().$implicit,f=c(3);return p(f.toggleSubThreads(o,s.id))}),d(1),a()}if(n&2){let e=c().$implicit,i=c(3);l(),y(i.isParentExpanded(e.id)?"expand_more":"chevron_right")}}function kt(n,t){n&1&&ke(0)}function Et(n,t){if(n&1&&ce(0,kt,1,0,"ng-container",11),n&2){let e=c().$implicit,i=c().depth;c();let o=Ee(1);x("ngTemplateOutlet",o)("ngTemplateOutletContext",Ge(2,St,e.subThreads,i+1))}}function Dt(n,t){if(n&1){let e=b();r(0,"div",5)(1,"a",6),u("click",function(o){let s=m(e).$implicit;return c(3).selectThread(s.id),p(o.preventDefault())})("keydown.enter",function(o){let s=m(e).$implicit;return c(3).selectThread(s.id),p(o.preventDefault())})("keydown.space",function(o){let s=m(e).$implicit;return c(3).selectThread(s.id),p(o.preventDefault())}),g(2,Ot,2,1,"mat-icon",7),r(3,"span",8),d(4),a(),r(5,"span",9),d(6),a()()(),g(7,Et,1,5,"ng-container")}if(n&2){let e,i=t.$implicit,o=c().depth,s=c(2);M("--sub-depth",o),C("current",i.id===((e=s.currentThread())==null?null:e.id)),l(2),_(i.subThreads!=null&&i.subThreads.length?2:-1),l(2),y(i.delegatedAgentName||"Agent"),l(2),y(i.delegatedTask||i.name),l(),_(s.isParentExpanded(i.id)&&(i.subThreads!=null&&i.subThreads.length)?7:-1)}}function Nt(n,t){if(n&1&&k(0,Dt,8,8,null,null,vt),n&2){let e=t.subThreads;E(e)}}function jt(n,t){n&1&&(r(0,"div",4),V(1,"span",12),r(2,"span",13),d(3,"Loading threads..."),a()())}function Vt(n,t){if(n&1&&(r(0,"div",27),d(1),a()),n&2){let e=c(6);l(),y(e.renameErrorMessage)}}function Ft(n,t){if(n&1){let e=b();r(0,"div",18)(1,"input",26),he("ngModelChange",function(o){m(e);let s=c(5);return ue(s.editingThreadName,o)||(s.editingThreadName=o),p(o)}),u("keydown",function(o){m(e);let s=c(5);return p(s.onEditKeydown(o))})("blur",function(){m(e);let o=c(5);return p(o.onEditBlur())})("click",function(o){return o.stopPropagation()}),a(),g(2,Vt,2,1,"div",27),a()}if(n&2){let e=c(5);l(),_e("ngModel",e.editingThreadName),x("disabled",e.isRenamingThread),l(),_(e.renameErrorMessage?2:-1)}}function It(n,t){if(n&1){let e=b();r(0,"mat-icon",10),u("click",function(o){m(e);let s=c(2).$implicit,f=c(4);return p(f.toggleSubThreads(o,s.id))}),d(1),a()}if(n&2){let e=c(2).$implicit,i=c(4);l(),y(i.isParentExpanded(e.id)?"expand_more":"chevron_right")}}function zt(n,t){if(n&1&&(r(0,"span",29),d(1),a()),n&2){let e=c(2).$implicit;l(),y(e.name)}}function At(n,t){n&1&&(V(0,"mat-spinner",31),r(1,"span",32),d(2,"Generating name..."),a()),n&2&&x("diameter",16)}function Lt(n,t){n&1&&(r(0,"mat-icon",30),d(1,"group"),a())}function Rt(n,t){if(n&1){let e=b();r(0,"a",28),u("click",function(o){m(e);let s=c().$implicit;return c(4).selectThread(s.id),p(o.preventDefault())})("keydown.enter",function(o){m(e);let s=c().$implicit;return c(4).selectThread(s.id),p(o.preventDefault())})("keydown.space",function(o){m(e);let s=c().$implicit;return c(4).selectThread(s.id),p(o.preventDefault())}),g(1,It,2,1,"mat-icon",7),g(2,zt,2,1,"span",29)(3,At,3,1),g(4,Lt,2,0,"mat-icon",30),a()}if(n&2){let e=c().$implicit,i=c(4);x("matTooltip",e.name?e.name+`
2
2
 
3
- `+(e.summary||""):e.summary||"")("matTooltipDisabled",!e.summary),l(),_(e.subThreads!=null&&e.subThreads.length?1:-1),l(),_(e.name?2:3),l(2),_(i.isSharedThread(e)?4:-1)}}function $t(n,t){if(n&1){let e=b();r(0,"button",33),u("click",function(o){m(e);let s=c().$implicit,f=c(4);return p(f.startEditingThreadName(o,s))}),r(1,"mat-icon"),d(2,"edit"),a()()}}function Bt(n,t){if(n&1){let e=b();r(0,"button",34),u("click",function(o){m(e);let s=c().$implicit,f=c(4);return p(f.markActive(o,s))}),r(1,"mat-icon"),d(2,"replay"),a()()}}function Ut(n,t){if(n&1){let e=b();r(0,"button",35),u("click",function(o){m(e);let s=c().$implicit,f=c(4);return p(f.markDone(o,s))}),r(1,"mat-icon"),d(2,"check_circle_outline"),a()()}}function Xt(n,t){n&1&&ke(0)}function Qt(n,t){if(n&1&&ce(0,Xt,1,0,"ng-container",11),n&2){let e=c().$implicit;c(3);let i=Ee(1);x("ngTemplateOutlet",i)("ngTemplateOutletContext",Qe(2,wt,e.subThreads))}}function Gt(n,t){if(n&1){let e=b();r(0,"div",17),g(1,Ft,3,3,"div",18)(2,Rt,5,5,"a",19),r(3,"div",20),g(4,$t,3,0,"button",21),g(5,Bt,3,0,"button",22)(6,Ut,3,0,"button",23),r(7,"button",24),u("click",function(o){let s=m(e).$implicit,f=c(4);return p(f.toggleStar(o,s))}),r(8,"mat-icon"),d(9),a()(),r(10,"button",25),u("click",function(o){let s=m(e).$implicit,f=c(4);return p(f.deleteThread(o,s))}),r(11,"mat-icon"),d(12,"delete"),a()()()(),g(13,Qt,1,4,"ng-container")}if(n&2){let e,i=t.$implicit,o=c(4);C("current",i.id===((e=o.currentThread())==null?null:e.id)),l(),_(o.editingThreadId===i.id?1:2),l(3),_(o.editingThreadId!==i.id&&i.name?4:-1),l(),_(i.closedByUser?5:6),l(2),C("starred",o.isStarred(i)),x("title",o.isStarred(i)?"Unstar thread":"Star thread"),l(2),y(o.isStarred(i)?"star":"star_outline"),l(4),_(o.isParentExpanded(i.id)&&(i.subThreads!=null&&i.subThreads.length)?13:-1)}}function Ht(n,t){if(n&1&&(r(0,"div",14)(1,"div",16),d(2),a(),k(3,Gt,14,10,null,null,vt),a()),n&2){let e=t.$implicit;l(2),y(e.label),l(),E(e.threads)}}function qt(n,t){n&1&&(r(0,"div",15),d(1,"No existing threads"),a())}function Wt(n,t){if(n&1&&(r(0,"div",15),d(1),a()),n&2){let e=c(3);l(),oe('No threads matching "',e.searchQuery(),'"')}}function Jt(n,t){if(n&1&&(k(0,Ht,5,1,"div",14,Tt),g(2,qt,2,0,"div",15)(3,Wt,2,1,"div",15)),n&2){let e,i=c(2);E(i.getGroupedThreads()),l(2),_(!((e=i.threads())!=null&&e.length)&&!i.searchQuery()?2:i.searchQuery()&&i.getGroupedThreads().length===0?3:-1)}}function Yt(n,t){if(n&1&&(ce(0,Nt,2,0,"ng-template",null,0,He),r(2,"div",3),g(3,jt,4,0,"div",4)(4,Jt,4,1),a()),n&2){let e=c();l(3),_(e.isLoadingThreadList()?3:4)}}function Zt(n,t){n&1&&(r(0,"span",36),d(1,"No project selected"),a())}function Kt(n,t){n&1&&(r(0,"span",36),d(1,"Loading..."),a())}function en(n,t){if(n&1&&(r(0,"div",2),g(1,Zt,2,0,"span",36)(2,Kt,2,0,"span",36),a()),n&2){let e,i=c();l(),_((e=i.currentProject())!=null&&e.name?2:1)}}var Me=class n{projects=null;searchMode=!1;searchQuery=X("");searchModeChange=new ee;threadSelected=new ee;projectStateService=v(ve);threadStateService=v(H);threadApiService=v(Ze);userService=v(Ke);router=v(fe);destroyRef=v(se);currentThread=w(this.threadStateService.selectedThread$);currentProject=w(this.projectStateService.selectedProject$);threads=w(this.threadStateService.threadList$);isLoadingThreadList=w(this.threadStateService.isLoadingThreadList$);username=w(this.userService.username$);isTouchDevice="ontouchstart"in window||navigator.maxTouchPoints>0;editingThreadId=null;editingThreadName="";isRenamingThread=!1;renameErrorMessage="";expandedParents=new Set;constructor(){te(()=>{let t=this.currentThread()?.id,e=this.threads();if(!t||!e?.length)return;let i=new Map;for(let s of e)s.parentThreadId&&i.set(s.id,s.parentThreadId);let o=t;for(;o;){let s=i.get(o);s&&this.expandedParents.add(s),o=s}})}ngOnInit(){this.userService.fetchCurrentUser().subscribe({error:t=>{console.error("[THREAD-SELECTOR] Failed to load current user:",t)}})}selectThread(t){this.threadStateService.selectThread(t),this.threadSelected.emit(),this.router.navigate(["project",this.currentProject()?.name,"thread",t])}getGroupedThreads(){let t=this.threads();if(!t?.length)return[];let e=new Set(t.map(h=>h.id)),i=t.filter(h=>!h.parentThreadId),o=t.filter(h=>!!h.parentThreadId),s=o.filter(h=>!e.has(h.parentThreadId)),f=o.filter(h=>e.has(h.parentThreadId)),A=new Map;for(let h of f){let O=h.parentThreadId;A.has(O)||A.set(O,[]),A.get(O).push(h)}let J=h=>(A.get(h)||[]).sort((j,I)=>j.modifiedDate>I.modifiedDate?-1:1).map(j=>Z(z({},j),{subThreads:J(j.id)})),L=[...i,...s];if(this.searchQuery()&&this.searchQuery().trim()){let h=this.searchQuery().toLowerCase().trim();L=L.filter(O=>O.name.toLowerCase().includes(h)||O.summary&&O.summary.toLowerCase().includes(h))}if(!L.length)return[];let R=this.username();if(!R)return[];let Ve=L.map(h=>Z(z({},h),{subThreads:J(h.id)})),Fe=Ve.filter(h=>h.starring&&h.starring.includes(R)),Pt=Ve.filter(h=>!h.starring||!h.starring.includes(R)),Y=new Map,Ie=new Date;Ie.setHours(0,0,0,0);for(let h of Pt){let O=new Date(h.modifiedDate);O.setHours(0,0,0,0);let j=Ie.getTime()-O.getTime(),I=Math.floor(j/(1e3*60*60*24)),D;I===0?D="Today":I===1?D="Yesterday":I<7?D="This Week":I<30?D="This Month":I<90?D="Last 3 Months":D="Older",Y.has(D)||Y.set(D,[]),Y.get(D).push(h)}let Oe=[];if(Fe.length>0){let h=[...Fe].sort((O,j)=>O.modifiedDate>j.modifiedDate?-1:1);Oe.push({label:"Starred",threads:h})}return["Today","Yesterday","This Week","This Month","Last 3 Months","Older"].filter(h=>Y.has(h)).forEach(h=>{Oe.push({label:h,threads:Y.get(h)})}),Oe}isParentExpanded(t){return this.expandedParents.has(t)}toggleSubThreads(t,e){t.stopPropagation(),this.expandedParents.has(e)?this.expandedParents.delete(e):this.expandedParents.add(e)}isSubThread(t){return!!t.parentThreadId}isSharedThread(t){return t.users&&t.users.length>1}isStarred(t){let e=this.username();return!!e&&t.starring&&t.starring.includes(e)}toggleStar(t,e){t.stopPropagation();let i=this.username();if(!i)return;let o=e.starring&&e.starring.includes(i),s=o?this.threadApiService.unstarThread(e.id):this.threadApiService.starThread(e.id);this.threadStateService.updateStarLocal(e.id,!o,i),s.pipe(F(this.destroyRef)).subscribe({next:()=>{},error:f=>{console.error("Error toggling star:",f),this.threadStateService.refreshThreadList()}})}markDone(t,e){t.stopPropagation(),this.threadStateService.markDone(e.id)}markActive(t,e){t.stopPropagation(),this.threadStateService.markActive(e.id)}deleteThread(t,e){t.stopPropagation();let i=this.currentProject()?.name;!i||!confirm(`Are you sure you want to delete the thread "${e.name}"?`)||this.threadApiService.deleteThread(e.id).subscribe({next:()=>{this.currentThread()?.id===e.id&&(this.threadStateService.clearSelection(),this.router.navigate(["project",i])),this.threadStateService.refreshThreadList()},error:s=>{console.error("Error deleting thread:",s),alert("Failed to delete thread. Please try again.")}})}formatDate(t){try{let e=new Date(t),o=new Date().getTime()-e.getTime(),s=Math.floor(o/(1e3*60*60*24));return s===0?"Today":s===1?"Yesterday":s<7?`${s} days ago`:e.toLocaleDateString("en-EN",{day:"numeric",month:"short"})}catch(e){return"No date"}}startEditingThreadName(t,e){t.stopPropagation(),this.editingThreadId=e.id,this.editingThreadName=e.name||"",this.renameErrorMessage="",setTimeout(()=>{let i=document.querySelector(".thread-name-input");i&&(i.focus(),i.select())},0)}cancelEditingThreadName(){this.editingThreadId=null,this.editingThreadName="",this.renameErrorMessage=""}saveThreadName(t){if(t&&t.stopPropagation(),!this.editingThreadId)return;let e=this.editingThreadName.trim();if(!e){this.renameErrorMessage="Thread name cannot be empty";return}if(e.length>200){this.renameErrorMessage="Thread name is too long (max 200 characters)";return}let i=this.editingThreadId;this.isRenamingThread=!0,this.renameErrorMessage="",this.threadStateService.renameThread(i,e).subscribe({next:()=>{console.log("[THREAD-SELECTOR] Thread renamed successfully"),this.cancelEditingThreadName(),this.isRenamingThread=!1},error:o=>{console.error("[THREAD-SELECTOR] Error renaming thread:",o),this.renameErrorMessage=o.message||"Failed to rename thread",this.isRenamingThread=!1}})}onEditKeydown(t){t.key==="Enter"?(t.preventDefault(),t.stopPropagation(),this.saveThreadName()):t.key==="Escape"&&(t.preventDefault(),t.stopPropagation(),this.cancelEditingThreadName())}onEditBlur(){setTimeout(()=>{this.editingThreadId&&!this.isRenamingThread&&this.saveThreadName()},200)}static \u0275fac=function(e){return new(e||n)};static \u0275cmp=N({type:n,selectors:[["app-thread-selector"]],inputs:{searchMode:"searchMode",searchQuery:[1,"searchQuery"]},outputs:{searchModeChange:"searchModeChange",threadSelected:"threadSelected"},decls:3,vars:1,consts:[["subThreadTemplate",""],["tabindex","0","role","application","aria-label","Thread selector",1,"thread-selector",3,"click","keydown"],[1,"thread-disabled"],["role","menu","aria-label","Thread selection",1,"thread-list"],[1,"thread-loading"],[1,"thread-item-wrapper","sub-thread"],["role","menuitem","tabindex","0",1,"thread-item","sub-thread-item",3,"click","keydown.enter","keydown.space"],[1,"sub-thread-toggle"],[1,"sub-thread-agent"],[1,"sub-thread-task"],[1,"sub-thread-toggle",3,"click"],[4,"ngTemplateOutlet","ngTemplateOutletContext"],[1,"loading-spinner"],[1,"loading-text"],[1,"thread-group"],[1,"thread-empty"],[1,"thread-group-header"],[1,"thread-item-wrapper"],[1,"thread-name-edit-wrapper"],["matTooltipShowDelay","1000","role","menuitem","tabindex","0",1,"thread-item",3,"matTooltip","matTooltipDisabled"],[1,"action-buttons"],["mat-icon-button","","title","Rename thread","type","button",1,"action-button","edit-button"],["mat-icon-button","","title","Mark as active","type","button",1,"action-button","mark-active-button"],["mat-icon-button","","title","Mark as done","type","button",1,"action-button","mark-done-button"],["mat-icon-button","","type","button",1,"action-button","star-button",3,"click","title"],["mat-icon-button","","title","Delete thread","type","button",1,"action-button","delete-button",3,"click"],["type","text","maxlength","200",1,"thread-name-input",3,"ngModelChange","keydown","blur","click","ngModel","disabled"],[1,"rename-error"],["matTooltipShowDelay","1000","role","menuitem","tabindex","0",1,"thread-item",3,"click","keydown.enter","keydown.space","matTooltip","matTooltipDisabled"],[1,"thread-name"],["matTooltip","Shared thread",1,"shared-indicator"],[1,"thread-name-spinner",3,"diameter"],[1,"thread-name","thread-name-generating"],["mat-icon-button","","title","Rename thread","type","button",1,"action-button","edit-button",3,"click"],["mat-icon-button","","title","Mark as active","type","button",1,"action-button","mark-active-button",3,"click"],["mat-icon-button","","title","Mark as done","type","button",1,"action-button","mark-done-button",3,"click"],[1,"disabled-text"]],template:function(e,i){if(e&1&&(r(0,"div",1),u("click",function(s){return s.stopPropagation()})("keydown",function(s){return s.stopPropagation()}),g(1,Yt,5,1)(2,en,3,1,"div",2),a()),e&2){let o;l(),_((o=i.currentProject())!=null&&o.name?1:2)}},dependencies:[qe,Pe,Ce,xe,st,ye,W,q,G,Q,ct,at,ot,it,nt,tt],styles:[".thread-selector[_ngcontent-%COMP%]{display:flex;flex-direction:column;width:100%;flex:1;min-height:0;overflow-x:hidden;overflow-y:auto}.thread-list[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:0;max-height:none;overflow:visible}.thread-group[_ngcontent-%COMP%]{display:flex;flex-direction:column;margin-bottom:.5rem}.thread-group[_ngcontent-%COMP%]:last-child{margin-bottom:0}.thread-group-header[_ngcontent-%COMP%]{padding:.5rem 1rem .25rem;font-size:.75rem;font-weight:600;color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.5px;position:sticky;top:0;background:var(--glass-bg);backdrop-filter:var(--glass-backdrop-blur);-webkit-backdrop-filter:var(--glass-backdrop-blur);z-index:1}.thread-item-wrapper[_ngcontent-%COMP%]{display:flex;align-items:center;position:relative;width:100%;border-radius:0;min-width:0;gap:.25rem}.thread-item-wrapper[_ngcontent-%COMP%]:hover{background:var(--color-bg-hover)}.thread-item-wrapper[_ngcontent-%COMP%]:hover .action-buttons[_ngcontent-%COMP%]{display:flex}.thread-item-wrapper.current[_ngcontent-%COMP%]{background:var(--color-primary-light)}.thread-item-wrapper.current[_ngcontent-%COMP%] .thread-item[_ngcontent-%COMP%]{color:var(--color-primary-text);font-weight:600}.thread-item[_ngcontent-%COMP%]{display:flex;align-items:center;flex:1;min-width:0;padding:.75rem 1rem;text-decoration:none;cursor:pointer;transition:all .2s ease;background:transparent;border:none;border-radius:0;color:var(--color-text);text-align:left;justify-content:flex-start}.thread-item.new-thread-item[_ngcontent-%COMP%]{margin-bottom:.25rem}.thread-item[_ngcontent-%COMP%]:hover{color:var(--color-primary)}.thread-item[_ngcontent-%COMP%]:focus-visible{outline:2px solid var(--color-primary);outline-offset:-2px}.action-buttons[_ngcontent-%COMP%]{display:none;align-items:center;gap:.25rem;flex-shrink:0;margin-right:.5rem}.thread-item-wrapper[_ngcontent-%COMP%]:hover .action-buttons[_ngcontent-%COMP%], .thread-item-wrapper.current[_ngcontent-%COMP%] .action-buttons[_ngcontent-%COMP%]{display:flex}.action-button[_ngcontent-%COMP%]{flex-shrink:0;border-radius:4px!important;width:28px!important;height:28px!important;padding:0!important}.action-button[_ngcontent-%COMP%] .mat-mdc-button-persistent-ripple{border-radius:4px!important}.action-button[_ngcontent-%COMP%]:hover{background:var(--color-bg-hover)!important}.action-button[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{font-size:18px;width:18px;height:18px}.action-button.edit-button[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{font-size:18px;width:18px;height:18px}.action-button.edit-button[_ngcontent-%COMP%]:hover{background-color:var(--color-primary-hover)!important}.action-button.edit-button[_ngcontent-%COMP%]:hover mat-icon[_ngcontent-%COMP%]{color:var(--color-primary)}.action-button.star-button[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{transition:color .2s ease}.action-button.star-button.starred[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{color:#fbbf24}.action-button.star-button[_ngcontent-%COMP%]:not(.starred):hover mat-icon[_ngcontent-%COMP%]{color:#fbbf24}.action-button.delete-button[_ngcontent-%COMP%]:hover mat-icon[_ngcontent-%COMP%]{color:#ef4444}.action-button.mark-done-button[_ngcontent-%COMP%]:hover mat-icon[_ngcontent-%COMP%]{color:#22c55e}.action-button.mark-active-button[_ngcontent-%COMP%]:hover mat-icon[_ngcontent-%COMP%]{color:var(--color-primary)}.thread-link[_ngcontent-%COMP%]{display:inline-flex;align-items:center;background:transparent;border:none;text-decoration:none;cursor:pointer;transition:all .2s ease;gap:.5rem;font-size:.875rem;font-weight:400;padding:0 1rem;min-width:0}.thread-link[_ngcontent-%COMP%]:hover:not(.new-thread-link){color:var(--color-primary-hover, var(--color-primary));text-decoration:underline;text-decoration-thickness:1.5px;text-underline-offset:3px}.thread-link[_ngcontent-%COMP%]:focus{outline:2px solid var(--color-primary);outline-offset:2px}.thread-link.new-thread-link[_ngcontent-%COMP%]{margin-bottom:.5rem;font-weight:600;font-size:.95rem}.thread-link.new-thread-link[_ngcontent-%COMP%] .thread-name[_ngcontent-%COMP%]{background:linear-gradient(90deg,var(--color-primary, #3b82f6) 0%,var(--color-accent, #8b5cf6) 50%,var(--color-primary, #3b82f6) 100%);background-size:200% auto;background-clip:text;-webkit-background-clip:text;-webkit-text-fill-color:transparent;animation:_ngcontent-%COMP%_gradientShift 3s ease-in-out infinite}.thread-link.new-thread-link[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{color:var(--color-primary);animation:_ngcontent-%COMP%_iconPulse 3s ease-in-out infinite}.thread-link.new-thread-link[_ngcontent-%COMP%]:hover{transform:translate(4px)}.thread-link.new-thread-link[_ngcontent-%COMP%]:hover mat-icon[_ngcontent-%COMP%]{animation:_ngcontent-%COMP%_iconPulse 1.5s ease-in-out infinite}.thread-link[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{font-size:20px;width:20px;height:20px}@keyframes _ngcontent-%COMP%_gradientShift{0%{background-position:0 center}50%{background-position:100% center}to{background-position:0 center}}@keyframes _ngcontent-%COMP%_iconPulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.8;transform:scale(1.05)}}.thread-name[_ngcontent-%COMP%]{flex:1;font-size:.875rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:left}.thread-name.thread-name-generating[_ngcontent-%COMP%]{color:var(--color-text-muted);font-style:italic}.thread-name-edit-wrapper[_ngcontent-%COMP%]{flex:1;display:flex;flex-direction:column;padding:0 .5rem}.thread-name-input[_ngcontent-%COMP%]{width:100%;padding:.5rem;border:1px solid var(--color-border);border-radius:4px;background:var(--color-bg-secondary);color:var(--color-text-primary);font-size:.9rem;font-family:inherit}.thread-name-input[_ngcontent-%COMP%]:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 2px #3b82f61a}.thread-name-input[_ngcontent-%COMP%]:disabled{opacity:.6;cursor:not-allowed}.rename-error[_ngcontent-%COMP%]{color:var(--color-error);font-size:.75rem;margin-top:.25rem;padding-left:.5rem}.thread-name-spinner[_ngcontent-%COMP%]{flex-shrink:0;margin-right:.5rem}.thread-name-spinner[_ngcontent-%COMP%] .mat-mdc-progress-spinner circle{stroke:var(--color-primary)!important}.current-indicator[_ngcontent-%COMP%]{color:var(--color-success);font-weight:700;flex-shrink:0;font-size:1rem}.thread-separator[_ngcontent-%COMP%]{height:1px;background:var(--color-border);margin:.25rem 0}.thread-empty[_ngcontent-%COMP%]{padding:1.5rem 1rem;text-align:center;color:var(--color-text-muted);font-size:.8rem;font-style:italic}.thread-loading[_ngcontent-%COMP%]{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:2rem 1rem;gap:.75rem}.thread-loading[_ngcontent-%COMP%] .loading-spinner[_ngcontent-%COMP%]{width:24px;height:24px;border:3px solid var(--color-border);border-top-color:var(--color-primary);border-radius:50%;animation:_ngcontent-%COMP%_spin .8s linear infinite}.thread-loading[_ngcontent-%COMP%] .loading-text[_ngcontent-%COMP%]{color:var(--color-text-muted);font-size:.8rem}@keyframes _ngcontent-%COMP%_spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.thread-disabled[_ngcontent-%COMP%]{padding:1.5rem 1rem}.thread-disabled[_ngcontent-%COMP%] .disabled-text[_ngcontent-%COMP%]{display:block;color:var(--color-text-muted);font-size:.85rem;font-style:italic;text-align:center}.thread-item-wrapper.sub-thread[_ngcontent-%COMP%]{padding-left:calc(.2rem + var(--sub-depth, 1) * 1.5rem);border-left:2px solid var(--color-primary, #3b82f6);margin-left:.75rem}.thread-item-wrapper.sub-thread[_ngcontent-%COMP%] .sub-thread-item[_ngcontent-%COMP%]{padding:.35rem .5rem .35rem 0;gap:.2rem;font-size:.8rem;color:var(--color-text-secondary)}.thread-item-wrapper.sub-thread[_ngcontent-%COMP%] .sub-thread-item[_ngcontent-%COMP%]:hover{color:var(--color-primary)}.thread-item-wrapper.sub-thread[_ngcontent-%COMP%] .sub-thread-agent[_ngcontent-%COMP%]{font-weight:600;color:var(--color-primary);white-space:nowrap;flex-shrink:0;font-size:.8rem}.thread-item-wrapper.sub-thread[_ngcontent-%COMP%] .sub-thread-task[_ngcontent-%COMP%]{color:var(--color-text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:.75rem}.sub-thread-toggle[_ngcontent-%COMP%]{font-size:16px;width:16px;height:16px;flex-shrink:0;cursor:pointer;color:var(--color-text-secondary);margin-right:.25rem}.sub-thread-toggle[_ngcontent-%COMP%]:hover{color:var(--color-primary)}.shared-indicator[_ngcontent-%COMP%]{font-size:14px;width:14px;height:14px;color:var(--color-text-secondary);flex-shrink:0;margin-left:.25rem}@media(max-width:768px){.thread-item[_ngcontent-%COMP%]{padding:.6rem .8rem}.thread-name[_ngcontent-%COMP%]{font-size:.8rem}}"]})};var tn=["logsContent"],nn=(n,t)=>t.name;function on(n,t){if(n&1){let e=b();r(0,"button",12),u("click",function(){m(e);let o=c().$implicit,s=c();return p(s.start(o.name))}),r(1,"mat-icon"),d(2,"play_arrow"),a()()}if(n&2){let e=c().$implicit;x("disabled",e.isLoading)}}function rn(n,t){if(n&1){let e=b();r(0,"button",13),u("click",function(){m(e);let o=c().$implicit,s=c();return p(s.stop(o.name))}),r(1,"mat-icon"),d(2,"stop"),a()()}if(n&2){let e=c().$implicit;x("disabled",e.isLoading)}}function an(n,t){if(n&1&&(r(0,"a",8)(1,"mat-icon",14),d(2,"open_in_new"),a()()),n&2){let e=c().$implicit;x("href",e.url,ne)("title",e.url)}}function sn(n,t){if(n&1&&(r(0,"div",15),d(1),a()),n&2){let e=c(),i=e.$implicit,o=e.$index;M("order",o*2),l(),y(i.errorMessage)}}function cn(n,t){if(n&1){let e=b();r(0,"button",21),u("click",function(){m(e);let o=c(3);return p(o.onManualRefresh())}),r(1,"mat-icon"),d(2,"refresh"),a()()}}function ln(n,t){if(n&1&&(r(0,"div",16)(1,"div",17)(2,"span",18),d(3),a(),g(4,cn,3,0,"button",19),a(),r(5,"pre",20,0),d(7),a()()),n&2){let e=c(),i=e.$implicit,o=e.$index,s=c();M("order",o*2+1),l(3),oe("",i.name," logs"),l(),_(i.status==="running"?4:-1),l(3),y(s.logs()||"(empty)")}}function dn(n,t){if(n&1){let e=b();r(0,"div",2)(1,"span",3),d(2),a(),r(3,"div",4),g(4,on,3,1,"button",5)(5,rn,3,1,"button",6),r(6,"span",7),d(7),a(),g(8,an,3,2,"a",8),r(9,"button",9),u("click",function(){let o=m(e).$implicit,s=c();return p(s.toggleLogs(o.name))}),r(10,"mat-icon"),d(11),a()()()(),g(12,sn,2,3,"div",10),g(13,ln,8,5,"div",11)}if(n&2){let e=t.$implicit,i=t.$index,o=c();M("order",i*2),l(2),y(e.name),l(2),_(e.status==="stopped"?4:5),l(2),C("running",e.status==="running"),l(),oe(" ",e.status==="running"?"Running":"Stopped"," "),l(),_(e.url?8:-1),l(),x("title",o.logsOpenFor()===e.name?"Hide logs":"Show logs"),l(2),y(o.logsOpenFor()===e.name?"expand_less":"terminal"),l(),_(e.errorMessage?12:-1),l(),_(o.logsOpenFor()===e.name?13:-1)}}var Se=class n{destroyRef=v(se);projectApi=v(be);projectName=X.required();entryStates=P([]);hasPreview=S(()=>this.entryStates().length>0);logsOpenFor=P(null);logs=P("");logsContent;logsPollTimer=null;logsTimeoutTimer=null;static LOGS_POLL_MS=5e3;static LOGS_TIMEOUT_MS=1200*1e3;constructor(){te(()=>{let t=this.projectName();t&&this.onProjectChanged(t)},{allowSignalWrites:!0}),te(()=>{console.log("entry states",this.entryStates())})}ngOnDestroy(){this.stopLogPolling()}onProjectChanged(t){this.stopLogPolling(),this.entryStates.set([]),this.logsOpenFor.set(null),this.logs.set(""),this.projectApi.getPreviewEntries(t).pipe(F(this.destroyRef)).subscribe({next:e=>{let i=e.entries;if(i.length===0)return;let o=i.map(f=>({name:f.name,command:f.command,url:f.url,status:"stopped",isLoading:!1,errorMessage:""}));this.entryStates.set(o);let s=i.map(f=>this.projectApi.getPreviewStatus(t,f.name));Ae(s).pipe(F(this.destroyRef)).subscribe({next:f=>{this.entryStates.update(A=>A.map((J,L)=>{let R=f[L];return R?Z(z({},J),{status:R.status}):J}))},error:()=>{}})},error:()=>{}})}start(t){this.updateEntry(t,{isLoading:!0,errorMessage:""}),this.projectApi.startPreview(this.projectName(),t).pipe(F(this.destroyRef)).subscribe({next:e=>{this.updateEntry(t,{status:e.status,isLoading:!1})},error:e=>{this.updateEntry(t,{errorMessage:e?.error?.error??"Failed to start preview",isLoading:!1})}})}stop(t){this.updateEntry(t,{isLoading:!0,errorMessage:""}),this.projectApi.stopPreview(this.projectName(),t).pipe(F(this.destroyRef)).subscribe({next:()=>{this.updateEntry(t,{status:"stopped",isLoading:!1}),this.logsOpenFor()===t&&this.stopLogPolling()},error:e=>{this.updateEntry(t,{errorMessage:e?.error?.error??"Failed to stop preview",isLoading:!1})}})}toggleLogs(t){this.logsOpenFor()===t?(this.logsOpenFor.set(null),this.logs.set(""),this.stopLogPolling()):(this.logsOpenFor.set(t),this.refreshLogs(),this.startLogPolling())}onManualRefresh(){this.refreshLogs(),this.logsPollTimer&&this.resetLogsTimeout()}refreshLogs(){let t=this.logsOpenFor();t&&this.projectApi.getPreviewLogs(this.projectName(),t).pipe(F(this.destroyRef)).subscribe({next:e=>{this.logs.set(e.logs),this.scrollLogsToBottom()},error:()=>this.logs.set("(failed to load logs)")})}updateEntry(t,e){this.entryStates.update(i=>i.map(o=>o.name===t?z(z({},o),e):o))}startLogPolling(){this.stopLogPolling(),this.logsPollTimer=setInterval(()=>{this.logsOpenFor()?this.refreshLogs():this.stopLogPolling()},n.LOGS_POLL_MS),this.resetLogsTimeout()}stopLogPolling(){this.logsPollTimer&&(clearInterval(this.logsPollTimer),this.logsPollTimer=null),this.logsTimeoutTimer&&(clearTimeout(this.logsTimeoutTimer),this.logsTimeoutTimer=null)}resetLogsTimeout(){this.logsTimeoutTimer&&clearTimeout(this.logsTimeoutTimer),this.logsTimeoutTimer=setTimeout(()=>{this.stopLogPolling()},n.LOGS_TIMEOUT_MS)}scrollLogsToBottom(){setTimeout(()=>{let t=this.logsContent?.nativeElement;t&&(t.scrollTop=t.scrollHeight)})}static \u0275fac=function(e){return new(e||n)};static \u0275cmp=N({type:n,selectors:[["app-preview-panel"]],viewQuery:function(e,i){if(e&1&&me(tn,5),e&2){let o;pe(o=ge())&&(i.logsContent=o.first)}},inputs:{projectName:[1,"projectName"]},decls:3,vars:0,consts:[["logsContent",""],[1,"preview-panel"],[1,"entry-row"],[1,"entry-name"],[1,"entry-actions"],["mat-icon-button","","title","Start","type","button",1,"entry-btn","start",3,"disabled"],["mat-icon-button","","title","Stop","type","button",1,"entry-btn","stop",3,"disabled"],[1,"status-pill"],["target","_blank","rel","noopener noreferrer",1,"preview-url",3,"href","title"],["mat-icon-button","","type","button",1,"entry-btn","logs",3,"click","title"],[1,"preview-error",3,"order"],[1,"logs-container",3,"order"],["mat-icon-button","","title","Start","type","button",1,"entry-btn","start",3,"click","disabled"],["mat-icon-button","","title","Stop","type","button",1,"entry-btn","stop",3,"click","disabled"],[1,"link-icon"],[1,"preview-error"],[1,"logs-container"],[1,"logs-header"],[1,"logs-title"],["mat-icon-button","","title","Refresh logs","type","button",1,"entry-btn"],[1,"logs-content"],["mat-icon-button","","title","Refresh logs","type","button",1,"entry-btn",3,"click"]],template:function(e,i){e&1&&(r(0,"div",1),k(1,dn,14,12,null,null,nn),a()),e&2&&(l(),E(i.entryStates()))},dependencies:[G,Q,W,q],styles:["[_nghost-%COMP%]{display:block}.preview-panel[_ngcontent-%COMP%]{display:flex;flex-direction:column;padding:.25rem 0}.entry-row[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.375rem;padding:.125rem .5rem;min-height:36px}.entry-name[_ngcontent-%COMP%]{font-size:.82rem;font-weight:500;color:var(--on-surface, #e0e0e0);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1 1 auto;min-width:0}.entry-actions[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.25rem;flex-shrink:0}.entry-btn[_ngcontent-%COMP%]{width:28px!important;height:28px!important;padding:0!important;display:inline-flex!important;align-items:center;justify-content:center;flex-shrink:0}.entry-btn[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{font-size:18px;width:18px;height:18px;line-height:18px}.entry-btn.start[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{color:var(--color-primary)}.entry-btn.stop[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{color:#e53935}.entry-btn.logs[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{font-size:16px;width:16px;height:16px;line-height:16px;color:var(--color-text-secondary)}.entry-btn[disabled][_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{color:var(--color-text-secondary)}.status-pill[_ngcontent-%COMP%]{display:inline-flex;align-items:center;justify-content:center;padding:1px 6px;border-radius:12px;font-size:.68rem;font-weight:600;letter-spacing:.02em;flex-shrink:0;min-width:52px;text-align:center;background:var(--color-bg-hover);color:var(--color-text-secondary);border:1px solid var(--color-border)}.status-pill.running[_ngcontent-%COMP%]{background:#22c55e26;color:#16a34a;border-color:#22c55e66}.preview-url[_ngcontent-%COMP%]{display:inline-flex;align-items:center;text-decoration:none;color:var(--color-primary);flex-shrink:0}.preview-url[_ngcontent-%COMP%]:hover{text-decoration:underline}.preview-url[_ngcontent-%COMP%] .link-icon[_ngcontent-%COMP%]{font-size:14px;width:14px;height:14px}.preview-error[_ngcontent-%COMP%]{font-size:.75rem;color:#c00;padding:0 .75rem}.logs-container[_ngcontent-%COMP%]{display:flex;flex-direction:column;margin:.125rem .5rem .25rem;background:var(--color-bg-hover);border-radius:8px;overflow:hidden;border:1px solid var(--color-border)}.logs-header[_ngcontent-%COMP%]{display:flex;align-items:center;padding:.25rem .75rem;border-bottom:1px solid var(--color-border)}.logs-header[_ngcontent-%COMP%] .logs-title[_ngcontent-%COMP%]{flex:1;font-size:.72rem;font-weight:600;color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.05em}.logs-content[_ngcontent-%COMP%]{margin:0;padding:.5rem .75rem;font-family:Courier New,Courier,monospace;font-size:.72rem;line-height:1.5;color:var(--color-text);white-space:pre-wrap;word-break:break-all;max-height:200px;overflow-y:auto}.logs-content[_ngcontent-%COMP%]::-webkit-scrollbar{width:6px}.logs-content[_ngcontent-%COMP%]::-webkit-scrollbar-track{background:transparent}.logs-content[_ngcontent-%COMP%]::-webkit-scrollbar-thumb{background:var(--color-text-secondary);border-radius:3px}"]})};var we=class n{eventStream=v(dt);threadState=v(H);ratio=P(0);inputTokens=P(0);contextWindow=P(0);price=P(0);iterations=P(0);cacheReadTokens=P(0);visible=P(!1);level=S(()=>{let t=this.ratio();return t<.6?"ok":t<.85?"warning":"danger"});constructor(){this.eventStream.events$.pipe(ae(t=>t instanceof lt),ae(t=>!t.threadId||t.threadId===this.threadState.getSelectedThreadId())).subscribe(t=>{this.inputTokens.set(t.inputTokens),this.contextWindow.set(t.contextWindow),this.price.set(t.price),this.iterations.set(t.iterations),this.cacheReadTokens.set(t.cacheReadTokens),this.ratio.set(t.contextWindow>0?t.inputTokens/t.contextWindow:0),this.visible.set(!0)}),this.eventStream.connectionStatus$.pipe(ae(t=>!t.connected)).subscribe(()=>{this.visible.set(!1),this.ratio.set(0),this.inputTokens.set(0),this.contextWindow.set(0),this.price.set(0),this.iterations.set(0),this.cacheReadTokens.set(0)})}static \u0275fac=function(e){return new(e||n)};static \u0275prov=Le({token:n,factory:n.\u0275fac,providedIn:"root"})};function mn(n,t){if(n&1&&U(0,"div",12),n&2){let e=t.$implicit,i=t.$index,o=c();M("--delay",e.delay+"s")("--left",e.left+"%")("--dur",e.dur+"s")("--size",e.size+"px")("--rise",e.rise+"px"),C("invisible",i>=o.aboveBubbleCount())}}function pn(n,t){if(n&1&&U(0,"div",13),n&2){let e=t.$implicit;M("--delay",e.delay+"s")("--size",e.size+"px")("--left",e.left+"%")("--dur",e.dur+"s")("--top",e.top+"px")}}function gn(n,t){if(n&1&&U(0,"div",14),n&2){let e=t.$implicit,i=t.$index,o=c();M("--delay",e.delay+"s")("--left",e.left+"%")("--dur",e.dur+"s")("--size",e.size+"px"),C("invisible",i>=o.insideBubbleCount())}}var Ct=30,xt=27,_n=40;function T(n,t,e,i=0){return i+(n*137+t*31)%e}var Te=class n{gaugeState=v(we);sidenavOpen=X(!1);aboveBubbles=Array.from({length:Ct},(t,e)=>({delay:T(e,1,30)/10,left:T(e,2,82,5),dur:2.5+T(e,3,20)/10,size:1.5+T(e,4,40)/10,rise:150+T(e,5,150)}));insideBubbles=Array.from({length:xt},(t,e)=>({delay:T(e,6,20)/10,left:T(e,7,80,5),dur:1.2+T(e,8,15)/10,size:2+T(e,9,35)/10}));foamBubbles=Array.from({length:_n},(t,e)=>({delay:T(e,10,25)/10,left:T(e,11,85,3),dur:1.5+T(e,12,10)/10,size:(3+T(e,13,80)/10)*.75,top:T(e,14,4)+8}));displayRatio=S(()=>Math.min(100,this.gaugeState.ratio()*100));liquidColor=S(()=>{let t=this.gaugeState.ratio();return t<=.5?`rgb(${Math.round(t*2*255)}, 255, 0)`:`rgb(255, ${Math.round((1-(t-.5)*2)*255)}, 0)`});aboveBubbleCount=S(()=>Math.round(this.gaugeState.ratio()*Ct));insideBubbleCount=S(()=>{let t=this.gaugeState.ratio();return t<.5?0:t<.65?5:t<.8?13:t<.9?20:xt});foamActive=S(()=>this.gaugeState.ratio()>=.5);overflowing=S(()=>this.gaugeState.ratio()>=.9);tooltipText=S(()=>{let t=Math.round(this.gaugeState.ratio()*100),e=this.gaugeState.price().toFixed(4);return[`${this.gaugeState.inputTokens().toLocaleString()} / ${this.gaugeState.contextWindow().toLocaleString()} tokens (${t}%)`,`Cost: $${e}`,`Iterations: ${this.gaugeState.iterations()}`,`Cache read: ${this.gaugeState.cacheReadTokens().toLocaleString()}`].join(`
4
- `)});static \u0275fac=function(e){return new(e||n)};static \u0275cmp=N({type:n,selectors:[["app-context-gauge"]],inputs:{sidenavOpen:[1,"sidenavOpen"]},decls:15,vars:11,consts:[[1,"tube-host",3,"title"],[1,"tube"],[1,"bubbles-above"],[1,"bubble-color",3,"invisible","--delay","--left","--dur","--size","--rise"],[1,"foam"],[1,"foam-bubble",3,"--delay","--size","--left","--dur","--top"],[1,"body"],[1,"shine"],[1,"liquid"],[1,"percentage"],[1,"bubbles-inside"],[1,"bubble-dark",3,"invisible","--delay","--left","--dur","--size"],[1,"bubble-color"],[1,"foam-bubble"],[1,"bubble-dark"]],template:function(e,i){e&1&&(B(0,"div",0)(1,"div",1)(2,"div",2),k(3,mn,1,12,"div",3,de),ie(),B(5,"div",4),k(6,pn,1,10,"div",5,de),ie(),B(8,"div",6),U(9,"div",7),B(10,"div",8)(11,"div",9)(12,"div",10),k(13,gn,1,10,"div",11,de),ie()()()()()()),e&2&&(C("hidden",i.sidenavOpen()),Be("title",i.tooltipText()),l(),M("--tube-color",i.liquidColor()),l(2),E(i.aboveBubbles),l(2),M("bottom",i.displayRatio()+"%"),C("active",i.foamActive()),l(),E(i.foamBubbles),l(5),M("height",i.displayRatio(),"%"),l(2),E(i.insideBubbles))},styles:['[_nghost-%COMP%]{position:fixed;left:calc(1rem + 10px);z-index:1500;display:block;top:calc(3.5rem + 80px)}.tube-host[_ngcontent-%COMP%]{position:relative;display:flex;flex-direction:column;align-items:center}.tube-host.hidden[_ngcontent-%COMP%]{visibility:hidden}.tube[_ngcontent-%COMP%]{position:relative;height:100px;width:24px;border:none;border-radius:0 0 50rem 50rem;background-color:#333;cursor:default;overflow:visible}.tube[_ngcontent-%COMP%]:after{content:"";position:absolute;left:-3px;top:0;width:calc(100% + 6px);height:4px;border-radius:50rem;background:#333}.body[_ngcontent-%COMP%]{position:absolute;border-radius:inherit;height:100%;width:100%;bottom:0;overflow:hidden;z-index:5}.shine[_ngcontent-%COMP%]{position:absolute;left:20%;top:0;width:10%;height:100%;z-index:90;opacity:.2;pointer-events:none}.shine[_ngcontent-%COMP%]:before, .shine[_ngcontent-%COMP%]:after{content:"";position:absolute;background-color:#fff;border-radius:50rem;top:10%;height:40%;width:100%}.shine[_ngcontent-%COMP%]:after{height:15%;top:60%}@keyframes _ngcontent-%COMP%_liquid-spin{0%{transform:translate(-50%) rotate(0)}to{transform:translate(-50%) rotate(360deg)}}.liquid[_ngcontent-%COMP%]{position:absolute;height:100%;width:100%;bottom:0}.percentage[_ngcontent-%COMP%]{position:absolute;height:0%;width:100%;bottom:0;left:0;z-index:80;transition:height .9s cubic-bezier(.4,0,.2,1);overflow:visible}.percentage[_ngcontent-%COMP%]:before, .percentage[_ngcontent-%COMP%]:after{position:absolute;content:"";width:100px;height:100px;border-radius:40px;animation:_ngcontent-%COMP%_liquid-spin 4s infinite linear;transform:translate(-50%);left:50%;top:0;background:var(--tube-color, #34c759);transition:background .5s ease}.percentage[_ngcontent-%COMP%]:after{opacity:.4;animation-direction:reverse;border-radius:30px}@keyframes _ngcontent-%COMP%_bubble-rise-inside{0%{bottom:2%;opacity:0;transform:scale(.5)}15%{opacity:.7}85%{opacity:.4}to{bottom:96%;opacity:0;transform:scale(1.1)}}.bubbles-inside[_ngcontent-%COMP%]{position:absolute;left:0;bottom:0;width:100%;height:100%;z-index:10;pointer-events:none}.bubbles-inside[_ngcontent-%COMP%] .bubble-dark[_ngcontent-%COMP%]{position:absolute;border-radius:50%;background:var(--color-bg, rgba(20, 20, 20, .55));width:var(--size, 3px);height:var(--size, 3px);opacity:0;bottom:2%;left:var(--left, 30%);animation:_ngcontent-%COMP%_bubble-rise-inside var(--dur, 1.5s) infinite ease-in;animation-delay:var(--delay, 0s)}.bubbles-inside[_ngcontent-%COMP%] .bubble-dark.invisible[_ngcontent-%COMP%]{animation:none;opacity:0}@keyframes _ngcontent-%COMP%_bubble-rise-above{0%{bottom:0;opacity:0;transform:scale(.4)}10%{opacity:.9}70%{opacity:.8}90%{opacity:.3}to{bottom:var(--rise, 80px);opacity:0;transform:scale(1.2)}}.bubbles-above[_ngcontent-%COMP%]{position:absolute;left:0;bottom:0;width:100%;height:100%;z-index:20;pointer-events:none;overflow:visible}.bubbles-above[_ngcontent-%COMP%] .bubble-color[_ngcontent-%COMP%]{position:absolute;border-radius:50%;background:var(--tube-color, #34c759);opacity:0;bottom:0;left:var(--left, 30%);width:var(--size, 3px);height:var(--size, 3px);animation:_ngcontent-%COMP%_bubble-rise-above var(--dur, 1.5s) infinite ease-in;animation-delay:var(--delay, 0s)}.bubbles-above[_ngcontent-%COMP%] .bubble-color.invisible[_ngcontent-%COMP%]{animation:none;opacity:0}.foam[_ngcontent-%COMP%]{position:absolute;bottom:0;left:-1px;width:100%;height:14px;z-index:100;pointer-events:none;overflow:visible;transition:bottom .9s cubic-bezier(.4,0,.2,1)}.foam[_ngcontent-%COMP%] .foam-bubble[_ngcontent-%COMP%]{position:absolute;top:var(--top, 0px);left:var(--left, 50%);width:var(--size, 4px);height:var(--size, 4px);border-radius:50%;background:#fff0;animation:none}.foam.active[_ngcontent-%COMP%] .foam-bubble[_ngcontent-%COMP%]{animation:_ngcontent-%COMP%_foam-pulse var(--dur, 1.5s) ease-in-out infinite;animation-delay:var(--delay, 0s)}@keyframes _ngcontent-%COMP%_foam-pulse{0%{background:#fff0;transform:scale(.5)}30%{background:#ffffff73;transform:scale(1)}60%{background:#ffffff40;transform:scale(1.1)}to{background:#fff0;transform:scale(.6)}}:root:not([data-theme=dark])[_nghost-%COMP%] .tube[_ngcontent-%COMP%], :root:not([data-theme=dark]) [_nghost-%COMP%] .tube[_ngcontent-%COMP%]{background-color:#ddd}:root:not([data-theme=dark])[_nghost-%COMP%] .tube[_ngcontent-%COMP%]:after, :root:not([data-theme=dark]) [_nghost-%COMP%] .tube[_ngcontent-%COMP%]:after{background:#ddd}@media(max-width:768px){[_nghost-%COMP%]{top:calc(3.25rem + 80px);left:calc(.75rem + 10px)}.tube[_ngcontent-%COMP%]{height:75px;width:20px}}'],changeDetection:0})};var un=["threadSearchInput"],hn=["*"];function fn(n,t){if(n&1){let e=b();r(0,"button",28),u("click",function(){m(e);let o=c();return p(o.toggle())}),r(1,"mat-icon"),d(2,"menu"),a()(),r(3,"button",29),u("click",function(){m(e);let o=c();return p(o.createNewThread())}),r(4,"mat-icon",10),d(5,"play_circle"),a()()}if(n&2){let e=c();l(3),x("disabled",!e.selectedProjectName())}}function bn(n,t){if(n&1){let e=b();r(0,"div",12)(1,"a",30),u("click",function(o){return m(e),c().openMissionControl(),p(o.preventDefault())}),r(2,"mat-icon"),d(3,"rocket_launch"),a(),r(4,"span",31),d(5,"Task Control"),a()()()}}function vn(n,t){if(n&1){let e=b();r(0,"div",15)(1,"mat-icon",32),d(2,"search"),a(),r(3,"input",33,0),he("ngModelChange",function(o){m(e);let s=c();return ue(s.threadSearchQuery,o)||(s.threadSearchQuery=o),p(o)}),u("input",function(){m(e);let o=c();return p(o.onThreadSearchInput())}),a(),r(5,"button",34),u("click",function(){m(e);let o=c();return p(o.closeThreadSearch())}),r(6,"mat-icon"),d(7,"close"),a()()()}if(n&2){let e=c();l(3),_e("ngModel",e.threadSearchQuery)}}function Cn(n,t){if(n&1){let e=b();r(0,"div",16)(1,"mat-icon",23),d(2,"forum"),a(),r(3,"span",24),d(4,"Threads"),a(),r(5,"button",35),u("click",function(o){m(e);let s=c();return p(s.toggleThreadSearch(o))}),r(6,"mat-icon"),d(7,"search"),a()()()}}function xn(n,t){n&1&&(r(0,"mat-icon",22),d(1,"keyboard_arrow_up"),a())}function yn(n,t){n&1&&(r(0,"mat-icon",23),d(1,"hub"),a())}function Pn(n,t){n&1&&(r(0,"mat-icon",22),d(1,"keyboard_arrow_up"),a())}function Mn(n,t){n&1&&(r(0,"mat-icon",23),d(1,"tune"),a())}function Sn(n,t){n&1&&(r(0,"div",37)(1,"div",41),V(2,"app-options-panel",42),a()())}function wn(n,t){if(n&1){let e=b();r(0,"div",36)(1,"a",21),u("click",function(o){return m(e),c(3).openProjectConfig(),o.preventDefault(),p(o.stopPropagation())}),r(2,"mat-icon",23),d(3,"settings_applications"),a(),r(4,"span",24),d(5,"Project Configuration"),a()()()}}function Tn(n,t){n&1&&(r(0,"div",36)(1,"a",43)(2,"mat-icon",23),d(3,"settings_applications"),a(),r(4,"span",24),d(5,"Project config (No project)"),a()()())}function On(n,t){if(n&1&&g(0,wn,6,0,"div",36)(1,Tn,6,0,"div",36),n&2){let e=c(2);_(e.selectedProjectName()?0:1)}}function kn(n,t){if(n&1){let e=b();r(0,"div",36)(1,"a",21),u("click",function(o){return m(e),c(2).openAgents(),o.preventDefault(),p(o.stopPropagation())}),r(2,"mat-icon",23),d(3,"smart_toy"),a(),r(4,"span",24),d(5,"Agents"),a()()()}}function En(n,t){n&1&&(r(0,"div",36)(1,"a",43)(2,"mat-icon",23),d(3,"smart_toy"),a(),r(4,"span",24),d(5,"Agents (No project)"),a()()())}function Dn(n,t){if(n&1){let e=b();r(0,"div",36)(1,"a",21),u("click",function(o){return m(e),c(2).openPrompts(),o.preventDefault(),p(o.stopPropagation())}),r(2,"mat-icon",23),d(3,"description"),a(),r(4,"span",24),d(5,"Prompts"),a()()()}}function Nn(n,t){n&1&&(r(0,"div",36)(1,"a",43)(2,"mat-icon",23),d(3,"description"),a(),r(4,"span",24),d(5,"Prompts (No project)"),a()()())}function jn(n,t){if(n&1){let e=b();r(0,"div",36)(1,"a",21),u("click",function(o){return m(e),c(2).openSchedulers(),o.preventDefault(),p(o.stopPropagation())}),r(2,"mat-icon",23),d(3,"schedule"),a(),r(4,"span",24),d(5,"Schedulers"),a()()()}}function Vn(n,t){n&1&&(r(0,"div",36)(1,"a",43)(2,"mat-icon",23),d(3,"schedule"),a(),r(4,"span",24),d(5,"Schedulers (No project)"),a()()())}function Fn(n,t){n&1&&(r(0,"mat-icon",22),d(1,"keyboard_arrow_up"),a())}function In(n,t){n&1&&(r(0,"mat-icon",23),d(1,"rocket_launch"),a())}function zn(n,t){if(n&1&&(r(0,"div",37),V(1,"app-preview-panel",44),a()),n&2){let e=c(3);l(),x("projectName",e.selectedProjectName())}}function An(n,t){if(n&1){let e=b();r(0,"div",36)(1,"a",21),u("click",function(o){return m(e),c(2).toggleSection("preview"),o.preventDefault(),p(o.stopPropagation())}),g(2,Fn,2,0,"mat-icon",22)(3,In,2,0,"mat-icon",23),r(4,"span",24),d(5,"Preview Server"),a()(),g(6,zn,2,1,"div",37),a()}if(n&2){let e=c(2);C("expanded",e.expandedSections.preview),l(),C("active",e.expandedSections.preview),l(),_(e.expandedSections.preview?2:3),l(4),_(e.expandedSections.preview?6:-1)}}function Ln(n,t){if(n&1){let e=b();r(0,"div",25)(1,"div",36)(2,"a",21),u("click",function(o){return m(e),c().toggleSection("config"),p(o.preventDefault())}),g(3,Pn,2,0,"mat-icon",22)(4,Mn,2,0,"mat-icon",23),r(5,"span",24),d(6,"Preferences"),a()(),g(7,Sn,3,0,"div",37),a(),r(8,"div",36)(9,"a",21),u("click",function(o){return m(e),c().openTokenUsage(),o.preventDefault(),p(o.stopPropagation())}),r(10,"mat-icon",23),d(11,"data_usage"),a(),r(12,"span",24),d(13,"Token Usage"),a()()(),r(14,"div",36)(15,"a",21),u("click",function(o){return m(e),c().openUserConfig(),o.preventDefault(),p(o.stopPropagation())}),r(16,"mat-icon",23),d(17,"manage_accounts"),a(),r(18,"span",24),d(19,"User Configuration"),a()()(),g(20,On,2,1),g(21,kn,6,0,"div",36)(22,En,6,0,"div",36),g(23,Dn,6,0,"div",36)(24,Nn,6,0,"div",36),g(25,jn,6,0,"div",36)(26,Vn,6,0,"div",36),g(27,An,7,6,"div",38),r(28,"div",36)(29,"a",39),V(30,"img",40),r(31,"span",24),d(32,"Contribute on GitHub"),a()()()()}if(n&2){let e=c();l(),C("expanded",e.expandedSections.config),l(),C("active",e.expandedSections.config),l(),_(e.expandedSections.config?3:4),l(4),_(e.expandedSections.config?7:-1),l(13),_(e.isAdmin?20:-1),l(),_(e.selectedProjectName()?21:22),l(2),_(e.selectedProjectName()?23:24),l(2),_(e.selectedProjectName()?25:26),l(2),_(e.hasPreviewConfig()?27:-1),l(3),le("src","CODAY-Logo.png",ne)}}function Rn(n,t){if(n&1){let e=b();r(0,"div",27)(1,"mat-icon",45),d(2,"warning"),a(),r(3,"span",46),d(4),a(),r(5,"button",47),u("click",function(){m(e);let o=c();return p(o.configErrorMessage="")}),r(6,"mat-icon"),d(7,"close"),a()()()}if(n&2){let e=c();l(4),y(e.configErrorMessage)}}var yt=class n{destroy$=new ze;sidenavStateChange=new ee;drawerOpen=!1;breakpointObserver=v(We);isDesktop=w(this.breakpointObserver.observe("(min-width: 1400px)").pipe(K(t=>t.matches)),{initialValue:!1});userOpenPreference=P(!0);isOpen=S(()=>this.userOpenPreference());isAdmin=!1;configErrorMessage="";expandedSections={config:!1,preview:!1,settings:!1};isThreadSearchActive=!1;threadSearchQuery="";threadSearchInput;dialog=v(Ye);configApi=v(ut);projectStateService=v(ve);projectApi=v(be);router=v(fe);preferences=v(et);threadStateService=v(H);projects=w(this.projectStateService.projectList$);selectedProject=w(this.projectStateService.selectedProject$);selectedProjectName=w(this.projectStateService.selectedProject$.pipe(K(t=>t?.name)));isProjectVolatile=w(this.projectStateService.selectedProject$.pipe(K(t=>t?.config?.volatile||!1)));forcedProject=w(this.projectStateService.forcedProject$);hasPreviewConfig=w(this.projectStateService.selectedProject$.pipe(K(t=>{let e=t?.config?.preview;return Array.isArray(e)&&!!e.length})),{initialValue:!1});ngOnInit(){let t=window.innerWidth>=1024,e=this.preferences.getPreference("sidenavOpen",t);this.userOpenPreference.set(e??t),this.configApi.getUserConfig().pipe($(this.destroy$)).subscribe({next:i=>{this.isAdmin=i.groups?.includes("CODAY_ADMIN")??!1,console.log("[SIDENAV] User admin status:",this.isAdmin)},error:i=>{console.error("[SIDENAV] Error loading user config for roles:",i),this.isAdmin=!1}})}ngOnDestroy(){this.destroy$.next(),this.destroy$.complete()}toggle(){let t=!this.userOpenPreference();this.userOpenPreference.set(t),this.saveSidenavState(t),this.sidenavStateChange.emit(t)}close(){this.userOpenPreference()&&(this.userOpenPreference.set(!1),this.saveSidenavState(!1),this.sidenavStateChange.emit(!1))}saveSidenavState(t){this.preferences.setPreference("sidenavOpen",t)}openTokenUsage(){this.configErrorMessage="",this.router.navigate(["/token-usage"])}openUserConfig(){console.log("[SIDENAV] openUserConfig called"),this.configErrorMessage="",this.configApi.getUserConfig().pipe($(this.destroy$)).subscribe({next:t=>{console.log("[SIDENAV] User config loaded, opening dialog"),this.dialog.open(Ne,{data:{configType:"user",initialContent:JSON.stringify(t,null,2)}}).afterClosed().subscribe(i=>{i&&this.saveUserConfig(i)})},error:t=>{console.error("[SIDENAV] Error loading user config:",t),this.configErrorMessage=t?.error?.error||"Failed to load user configuration"}})}saveUserConfig(t){this.configApi.updateUserConfig(t).pipe($(this.destroy$)).subscribe({next:e=>{console.log("[SIDENAV] User config saved successfully")},error:e=>{console.error("[SIDENAV] Error saving user config:",e),this.configErrorMessage=e?.error?.error||"Failed to save user configuration"}})}openProjectConfig(){let t=this.selectedProjectName();if(!t){console.error("[SIDENAV] No project selected"),this.configErrorMessage="No project selected. Please select a project first.";return}this.configErrorMessage="",this.projectApi.getProjectConfig(t).pipe($(this.destroy$)).subscribe({next:e=>{console.log("[SIDENAV] Project config loaded, opening dialog"),this.dialog.open(Ne,{data:{configType:"project",projectName:t,initialContent:JSON.stringify(e,null,2)}}).afterClosed().subscribe(o=>{o&&this.saveProjectConfig(t,o)})},error:e=>{console.error("[SIDENAV] Error loading project config:",e),this.configErrorMessage=e?.error?.error||"Failed to load project configuration"}})}saveProjectConfig(t,e){this.projectApi.updateProjectConfig(t,e).pipe($(this.destroy$)).subscribe({next:i=>{console.log("[SIDENAV] Project config saved successfully")},error:i=>{console.error("[SIDENAV] Error saving project config:",i),this.configErrorMessage=i?.error?.error||"Failed to save project configuration"}})}requireProjectSelection(t){return this.selectedProjectName()?!0:(console.error(`[SIDENAV] No project selected, cannot ${t}`),this.configErrorMessage="Please select a project first",!1)}openAgents(){if(!this.requireProjectSelection("open agents"))return;let t=this.selectedProjectName();this.router.navigate(["project",t,"agents"])}openPrompts(){if(!this.requireProjectSelection("open prompts"))return;let t=this.selectedProjectName();this.router.navigate(["project",t,"prompts"])}openSchedulers(){if(!this.requireProjectSelection("open schedulers"))return;let t=this.selectedProjectName();this.router.navigate(["project",t,"schedulers"])}toggleSection(t){let e=this.expandedSections[t];t==="settings"?this.expandedSections[t]=!e:(["config","preview"].forEach(o=>{this.expandedSections[o]=!1}),this.expandedSections[t]=!e)}navigateToHome(){console.log("[SIDENAV] Navigating to home (project selection)"),this.projectStateService.clearSelection(),this.router.navigate(["/"])}openMissionControl(){let t=this.selectedProjectName();t&&(this.router.navigate(["project",t,"tasks"]),this.close())}createNewThread(){let t=this.selectedProjectName();if(!t){console.error("[SIDENAV] No project selected, cannot create new thread"),this.configErrorMessage="Please select a project first";return}console.log("[SIDENAV] Navigating to welcome view for new thread"),this.threadStateService.clearSelection(),this.router.navigate(["project",t])}onThreadSelectedOnMobile(){this.isDesktop()||this.close()}toggleThreadSearch(t){t.stopPropagation(),this.isThreadSearchActive=!0,this.threadSearchQuery="",setTimeout(()=>{this.threadSearchInput?.nativeElement.focus()},0)}closeThreadSearch(){this.isThreadSearchActive=!1,this.threadSearchQuery=""}onThreadSearchInput(){}onThreadSearchModeChange(t){t||this.closeThreadSearch()}static \u0275fac=function(e){return new(e||n)};static \u0275cmp=N({type:n,selectors:[["app-sidenav"]],viewQuery:function(e,i){if(e&1&&me(un,5),e&2){let o;pe(o=ge())&&(i.threadSearchInput=o.first)}},inputs:{drawerOpen:"drawerOpen"},outputs:{sidenavStateChange:"sidenavStateChange"},ngContentSelectors:hn,decls:36,vars:24,consts:[["threadSearchInput",""],[1,"sidenav-container",3,"hasBackdrop"],["mode","push","position","start",1,"app-sidenav",3,"closed","opened","disableClose"],[1,"sidenav-header"],["mat-icon-button","","title","Close menu",3,"click"],["alt","coday","title","Go to project selection","role","button","tabindex","0",1,"sidenav-logo","clickable",3,"click","keydown.enter","keydown.space"],[1,"header-title-section"],[1,"sidenav-title"],[1,"new-thread-section"],["role","button","tabindex","0",1,"new-thread-link",3,"click"],["fontSet","material-icons-outlined"],[1,"new-thread-text"],[1,"mission-control-section"],[1,"sidenav-sections"],[1,"section-container","expanded"],[1,"search-header"],[1,"section-toggle","active","threads-header"],[1,"section-content","threads"],[1,"sidenav-thread-selector",3,"searchModeChange","threadSelected","searchMode","searchQuery"],[1,"sidenav-nav"],[1,"section-container","settings-group"],["role","button","tabindex","0",1,"section-toggle",3,"click"],[1,"arrow-icon","expanded"],[1,"section-icon"],[1,"section-label"],[1,"section-content","settings-content"],[3,"sidenavOpen"],["role","alert",1,"error-notification"],["mat-icon-button","","title","Menu","type","button",1,"sidenav-toggle-btn",3,"click"],["mat-icon-button","","title","Start a new thread","type","button",1,"sidenav-new-thread-btn",3,"click","disabled"],["role","button","tabindex","0",1,"mission-control-link",3,"click"],[1,"mission-control-text"],[1,"search-icon"],["type","text","placeholder","Search threads...",1,"search-input",3,"ngModelChange","input","ngModel"],["mat-icon-button","","title","Close search","type","button",1,"close-search-btn",3,"click"],["mat-icon-button","","title","Search threads","type","button",1,"search-button",3,"click"],[1,"section-container"],[1,"section-content"],[1,"section-container",3,"expanded"],["href","https://github.com/whoz-oss/coday","target","_blank","rel","noopener noreferrer","title","Contribute on GitHub",1,"section-toggle","contribute-btn"],["alt","Coday",1,"contribute-logo"],[1,"preference-item"],[1,"inline-panel"],["role","button","tabindex","-1","aria-disabled","true",1,"section-toggle","disabled"],[3,"projectName"],[1,"error-icon"],[1,"error-text"],["mat-icon-button","","aria-label","Close error message",1,"error-close",3,"click"]],template:function(e,i){e&1&&(Ue(),g(0,fn,6,1),r(1,"mat-sidenav-container",1)(2,"mat-sidenav",2),u("closed",function(){return i.close()}),r(3,"div",3)(4,"button",4),u("click",function(){return i.close()}),r(5,"mat-icon"),d(6,"chevron_left"),a()(),r(7,"img",5),u("click",function(s){return i.navigateToHome(),s.stopPropagation()})("keydown.enter",function(s){return i.navigateToHome(),s.preventDefault(),s.stopPropagation()})("keydown.space",function(s){return i.navigateToHome(),s.preventDefault(),s.stopPropagation()}),a(),r(8,"div",6)(9,"h2",7),d(10),a()()(),r(11,"div",8)(12,"a",9),u("click",function(s){return i.createNewThread(),s.preventDefault()}),r(13,"mat-icon",10),d(14,"play_circle"),a(),r(15,"span",11),d(16,"Start a new thread"),a()()(),g(17,bn,6,0,"div",12),r(18,"div",13)(19,"div",14),g(20,vn,8,1,"div",15)(21,Cn,8,0,"div",16),r(22,"div",17)(23,"app-thread-selector",18),u("searchModeChange",function(s){return i.onThreadSearchModeChange(s)})("threadSelected",function(){return i.onThreadSelectedOnMobile()}),a()()()(),r(24,"div",19)(25,"div",20)(26,"a",21),u("click",function(s){return i.toggleSection("settings"),s.preventDefault()}),g(27,xn,2,0,"mat-icon",22)(28,yn,2,0,"mat-icon",23),r(29,"span",24),d(30,"Control Center"),a()(),g(31,Ln,33,12,"div",25),a()()(),r(32,"mat-sidenav-content"),Xe(33),a()(),V(34,"app-context-gauge",26),g(35,Rn,8,1,"div",27)),e&2&&(_(!i.isOpen()&&!i.drawerOpen?0:-1),l(),C("sidenav-open",i.isOpen()),x("hasBackdrop",!1),l(),x("opened",i.isOpen())("disableClose",!0),l(5),le("src","CODAY-Logo.png",ne),l(3),y(i.selectedProjectName()),l(7),_(i.selectedProjectName()?17:-1),l(3),_(i.isThreadSearchActive?20:21),l(3),x("searchMode",i.isThreadSearchActive)("searchQuery",i.threadSearchQuery),l(),C("is-admin",i.isAdmin),l(),C("expanded",i.expandedSections.settings),l(),C("active",i.expandedSections.settings),l(),_(i.expandedSections.settings?27:28),l(4),_(i.expandedSections.settings?31:-1),l(),C("sidenav-closed-offset",!i.isOpen()),l(2),x("sidenavOpen",i.isOpen()),l(),_(i.configErrorMessage?35:-1))},dependencies:[Pe,Ce,xe,ye,_t,pt,gt,mt,W,q,G,Q,rt,ht,De,Me,Se,Te],styles:["[_nghost-%COMP%]{display:block;width:100%;height:100%;position:relative}.sidenav-container[_ngcontent-%COMP%]{position:fixed;top:0;left:0;right:0;height:100dvh;z-index:1400;transition:width;display:flex}.sidenav-container[_ngcontent-%COMP%] mat-sidenav[_ngcontent-%COMP%]{position:relative!important;transition:width;width:25%;min-width:320px;height:100dvh!important;flex-shrink:0}.sidenav-container[_ngcontent-%COMP%] mat-sidenav[_ngcontent-%COMP%]:not(.mat-drawer-opened){width:0!important;min-width:0;overflow:hidden!important;visibility:hidden!important}.sidenav-container[_ngcontent-%COMP%] mat-sidenav-content[_ngcontent-%COMP%]{width:100%;margin:0!important}@media(min-width:1024px){.sidenav-container[_ngcontent-%COMP%] mat-sidenav-content[_ngcontent-%COMP%]{min-width:0}}[_nghost-%COMP%] .mat-drawer-backdrop{pointer-events:auto}[_nghost-%COMP%] .mat-drawer-content{pointer-events:auto!important;background:transparent!important;overflow:visible!important}[_nghost-%COMP%] .mat-drawer-inner-container{overflow:hidden!important;height:100dvh!important;display:flex!important;flex-direction:column!important}.sidenav-new-thread-btn[_ngcontent-%COMP%], .sidenav-toggle-btn[_ngcontent-%COMP%]{position:fixed!important;z-index:1500!important;width:40px!important;height:40px!important;border-radius:50%!important;background:var(--glass-bg)!important;backdrop-filter:var(--glass-backdrop-blur)!important;-webkit-backdrop-filter:var(--glass-backdrop-blur)!important;border:1px solid var(--glass-border)!important;box-shadow:var(--glass-shadow)!important}.sidenav-toggle-btn[_ngcontent-%COMP%]{top:1rem!important;left:1rem!important}.sidenav-new-thread-btn[_ngcontent-%COMP%]{top:calc(1.5rem + 40px)!important;left:1rem!important}.sidenav-new-thread-btn[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{color:var(--color-primary)!important}.sidenav-new-thread-btn[_ngcontent-%COMP%]:disabled{opacity:.5!important}.sidenav-logo-btn[_ngcontent-%COMP%]{position:fixed!important;bottom:1rem!important;left:1rem!important;z-index:1500!important;width:56px!important;height:56px!important;border-radius:50%!important;border:1px solid var(--glass-border)!important;padding:4px!important;background:var(--glass-bg)!important;backdrop-filter:var(--glass-backdrop-blur)!important;-webkit-backdrop-filter:var(--glass-backdrop-blur)!important;box-shadow:var(--glass-shadow)!important;transition:all .3s cubic-bezier(.4,0,.2,1)!important;cursor:pointer!important;pointer-events:auto!important;display:flex!important;align-items:center!important;justify-content:center!important;overflow:hidden!important;text-decoration:none!important}.sidenav-logo-btn[_ngcontent-%COMP%]:hover{transform:scale(1.08) translateY(-2px)!important;box-shadow:0 16px 48px #0003!important;border-color:var(--color-primary)!important}.sidenav-logo-btn[_ngcontent-%COMP%]:active{transform:scale(.96)!important}.sidenav-logo-btn[_ngcontent-%COMP%] .logo[_ngcontent-%COMP%]{width:48px;height:48px;border-radius:2px}.app-sidenav[_ngcontent-%COMP%]{width:480px;height:100dvh!important;min-height:0!important;position:relative;background:var(--glass-bg);backdrop-filter:var(--glass-backdrop-blur);-webkit-backdrop-filter:var(--glass-backdrop-blur);overflow:hidden!important;display:flex;flex-direction:column}.sidenav-header[_ngcontent-%COMP%]{display:flex;align-items:center;gap:1rem;padding:1.5rem 1rem .5rem;flex-shrink:0}.sidenav-header[_ngcontent-%COMP%] .sidenav-logo[_ngcontent-%COMP%]{width:40px;height:40px;border-radius:4px;flex-shrink:0;transition:all .2s ease}.sidenav-header[_ngcontent-%COMP%] .sidenav-logo.clickable[_ngcontent-%COMP%]{cursor:pointer}.sidenav-header[_ngcontent-%COMP%] .sidenav-logo.clickable[_ngcontent-%COMP%]:hover{transform:scale(1.1);filter:drop-shadow(0 4px 12px rgba(0,0,0,.15))}.sidenav-header[_ngcontent-%COMP%] .sidenav-logo.clickable[_ngcontent-%COMP%]:active{transform:scale(.95)}.sidenav-header[_ngcontent-%COMP%] .sidenav-logo.clickable[_ngcontent-%COMP%]:focus{outline:2px solid var(--color-primary);outline-offset:2px}.sidenav-header[_ngcontent-%COMP%] .header-title-section[_ngcontent-%COMP%]{flex:1;display:flex;align-items:center;min-width:0}.sidenav-header[_ngcontent-%COMP%] .header-title-section[_ngcontent-%COMP%] .sidenav-title[_ngcontent-%COMP%]{margin:0;font-size:1.25rem;font-weight:600;color:var(--color-text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mission-control-section[_ngcontent-%COMP%]{padding:.25rem 1rem .5rem;flex-shrink:0}.mission-control-link[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:.5rem;background:transparent;border:none;text-decoration:none;cursor:pointer;transition:all .2s ease;font-size:.875rem;font-weight:500;color:var(--color-text-secondary);padding:0}.mission-control-link[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{font-size:18px;width:18px;height:18px;color:var(--color-text-secondary);transition:color .2s ease}.mission-control-link[_ngcontent-%COMP%]:hover{color:var(--color-primary);transform:translate(3px)}.mission-control-link[_ngcontent-%COMP%]:hover mat-icon[_ngcontent-%COMP%]{color:var(--color-primary)}.mission-control-link[_ngcontent-%COMP%]:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px;border-radius:4px}.new-thread-section[_ngcontent-%COMP%]{padding:1rem 1rem .5rem;flex-shrink:0}.new-thread-link[_ngcontent-%COMP%]{display:inline-flex;align-items:center;background:transparent;border:none;text-decoration:none;cursor:pointer;transition:all .2s ease;gap:.5rem;font-size:.95rem;font-weight:600;padding:0}.new-thread-link[_ngcontent-%COMP%] .new-thread-text[_ngcontent-%COMP%]{background:linear-gradient(90deg,var(--color-primary, #3b82f6) 0%,var(--color-accent, #8b5cf6) 50%,var(--color-primary, #3b82f6) 100%);background-size:200% auto;background-clip:text;-webkit-background-clip:text;-webkit-text-fill-color:transparent;animation:_ngcontent-%COMP%_gradientShift 3s ease-in-out infinite}.new-thread-link[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{font-size:20px;width:20px;height:20px;color:var(--color-primary);animation:_ngcontent-%COMP%_iconPulse 3s ease-in-out infinite}.new-thread-link[_ngcontent-%COMP%]:hover{transform:translate(4px)}.new-thread-link[_ngcontent-%COMP%]:hover mat-icon[_ngcontent-%COMP%]{animation:_ngcontent-%COMP%_iconPulse 1.5s ease-in-out infinite}.new-thread-link[_ngcontent-%COMP%]:focus{transform:scale(1.1)}@keyframes _ngcontent-%COMP%_gradientShift{0%{background-position:0% center}50%{background-position:100% center}to{background-position:0% center}}@keyframes _ngcontent-%COMP%_iconPulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.8;transform:scale(1.05)}}.sidenav-sections[_ngcontent-%COMP%]{display:flex;flex-direction:column;flex:1;min-height:100px;overflow:hidden}.sidenav-sections[_ngcontent-%COMP%] > .section-container[_ngcontent-%COMP%], .sidenav-sections[_ngcontent-%COMP%] > .section-container.expanded[_ngcontent-%COMP%], .sidenav-sections[_ngcontent-%COMP%] > .section-container[_ngcontent-%COMP%] > .section-content.threads[_ngcontent-%COMP%], .sidenav-sections[_ngcontent-%COMP%] > .section-container[_ngcontent-%COMP%] > .section-content.threads[_ngcontent-%COMP%] > app-thread-selector[_ngcontent-%COMP%]{display:flex!important;flex-direction:column!important;flex:1!important;min-height:0!important;overflow:hidden!important}.sidenav-nav[_ngcontent-%COMP%]{flex-shrink:0;display:flex;flex-direction:column;overflow:hidden;max-height:70%;border-top:1px solid var(--color-border)}.sidenav-nav[_ngcontent-%COMP%] > .settings-group[_ngcontent-%COMP%] > .section-toggle.active[_ngcontent-%COMP%]{border-top:none}.sidenav-nav[_ngcontent-%COMP%] .settings-group[_ngcontent-%COMP%]{display:flex;flex-direction:column;flex:1;min-height:0;overflow:hidden}.sidenav-nav[_ngcontent-%COMP%] .settings-group[_ngcontent-%COMP%] > .section-toggle[_ngcontent-%COMP%]{flex-shrink:0}.sidenav-nav[_ngcontent-%COMP%] .settings-group[_ngcontent-%COMP%] > .section-content.settings-content[_ngcontent-%COMP%]{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden}.settings-group[_ngcontent-%COMP%] > .section-content.settings-content[_ngcontent-%COMP%]{padding:0;border-bottom:1px solid var(--color-border);overflow:visible}.settings-group[_ngcontent-%COMP%] > .section-content.settings-content[_ngcontent-%COMP%] .section-container.expanded[_ngcontent-%COMP%] .section-content[_ngcontent-%COMP%]{max-height:40vh;overflow-y:auto;overflow-x:hidden}.contribute-btn[_ngcontent-%COMP%] .contribute-logo[_ngcontent-%COMP%]{width:20px;height:20px;border-radius:2px;flex-shrink:0}.section-container[_ngcontent-%COMP%]{flex-shrink:0;display:flex;flex-direction:column}.section-container.expanded[_ngcontent-%COMP%] .section-content[_ngcontent-%COMP%]{border-bottom:none}.section-toggle[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.75rem;width:100%;padding:.5rem 1rem;height:50px;text-decoration:none;cursor:pointer;transition:all .2s ease;background:transparent;border:none;border-radius:0;color:var(--color-text);flex-shrink:0}.section-toggle.active[_ngcontent-%COMP%]{border-top:1px solid var(--color-border)}.section-toggle.disabled[_ngcontent-%COMP%]{opacity:.5;cursor:not-allowed;pointer-events:none}.section-toggle[_ngcontent-%COMP%] .arrow-icon[_ngcontent-%COMP%]{font-size:20px;width:20px;height:20px;color:var(--color-text-secondary);transition:transform .2s ease;flex-shrink:0}.section-toggle[_ngcontent-%COMP%] .section-icon[_ngcontent-%COMP%]{font-size:20px;width:20px;height:20px;color:var(--color-text-secondary);flex-shrink:0}.section-toggle[_ngcontent-%COMP%] .section-label[_ngcontent-%COMP%]{flex:1;font-size:.9rem;color:var(--color-text);text-align:left}.section-toggle[_ngcontent-%COMP%] .search-button[_ngcontent-%COMP%]{margin-left:auto;flex-shrink:0}.section-toggle[_ngcontent-%COMP%] .search-button[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{font-size:18px;width:18px;height:18px}.section-toggle[_ngcontent-%COMP%]:hover:not(.disabled){background:var(--color-bg-hover)}.section-toggle[_ngcontent-%COMP%]:active:not(.disabled){transform:scale(.98)}.section-toggle[_ngcontent-%COMP%]:focus-visible{outline:2px solid var(--color-primary);outline-offset:-2px}.search-header[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.5rem;padding:.5rem 1rem;height:50px;background:var(--color-bg-hover);border-top:1px solid var(--color-border);transition:all .2s ease}.search-header[_ngcontent-%COMP%] .search-icon[_ngcontent-%COMP%]{font-size:20px;width:20px;height:20px;color:var(--color-text-secondary);flex-shrink:0}.search-header[_ngcontent-%COMP%] .search-input[_ngcontent-%COMP%]{flex:1;border:none;outline:none;background:transparent;color:var(--color-text);font-size:.9rem;padding:0;min-width:0}.search-header[_ngcontent-%COMP%] .search-input[_ngcontent-%COMP%]::placeholder{color:var(--color-text-muted)}.search-header[_ngcontent-%COMP%] .close-search-btn[_ngcontent-%COMP%]{flex-shrink:0}.search-header[_ngcontent-%COMP%] .close-search-btn[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{font-size:18px;width:18px;height:18px}.section-content[_ngcontent-%COMP%]{padding:.5rem 0 0;animation:_ngcontent-%COMP%_slideDown .2s ease;border-bottom:1px solid var(--color-border);display:flex;flex-direction:column}.section-content.threads[_ngcontent-%COMP%]{padding:0;border-bottom:none;flex:1!important;min-height:0!important;overflow:hidden!important}.section-content.threads[_ngcontent-%COMP%] app-thread-selector[_ngcontent-%COMP%]{flex:1!important;min-height:0!important;overflow:hidden!important;display:flex!important;flex-direction:column!important}@keyframes _ngcontent-%COMP%_slideDown{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.preference-item[_ngcontent-%COMP%]{padding-bottom:1rem;margin-bottom:1rem;border-bottom:1px solid var(--color-border)}.preference-item[_ngcontent-%COMP%]:last-child{margin-bottom:0;padding-bottom:0;border-bottom:none}.preference-item[_ngcontent-%COMP%] .preference-header[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.75rem;margin-bottom:.75rem;padding:0 1rem}.preference-item[_ngcontent-%COMP%] .preference-header[_ngcontent-%COMP%] .item-icon[_ngcontent-%COMP%]{font-size:20px;width:20px;height:20px}.preference-item[_ngcontent-%COMP%] .preference-header[_ngcontent-%COMP%] .item-text[_ngcontent-%COMP%]{font-size:.875rem;font-weight:500;color:var(--color-text)}.preference-item[_ngcontent-%COMP%] .preference-content[_ngcontent-%COMP%]{padding:0 1rem}.error-notification[_ngcontent-%COMP%]{position:fixed;top:5rem;left:50%;transform:translate(-50%);z-index:2000;display:flex;align-items:center;gap:.75rem;background:#ff3b3026;backdrop-filter:var(--glass-backdrop-blur);-webkit-backdrop-filter:var(--glass-backdrop-blur);border:1px solid rgba(255,59,48,.3);border-radius:16px;padding:1rem 1.5rem;box-shadow:var(--glass-shadow);animation:_ngcontent-%COMP%_errorSlideDown .3s cubic-bezier(.4,0,.2,1)}.error-notification[_ngcontent-%COMP%] .error-icon[_ngcontent-%COMP%]{font-size:1.2rem;flex-shrink:0;color:#c00}.error-notification[_ngcontent-%COMP%] .error-text[_ngcontent-%COMP%]{flex:1;color:#c00;font-size:.9rem;font-weight:500}@keyframes _ngcontent-%COMP%_errorSlideDown{0%{opacity:0;transform:translate(-50%,-10px)}to{opacity:1;transform:translate(-50%)}}@media(max-width:480px){.app-sidenav[_ngcontent-%COMP%]{width:320px}.sidenav-toggle-btn[_ngcontent-%COMP%]{top:.75rem!important;left:.75rem!important}.sidenav-new-thread-btn[_ngcontent-%COMP%]{top:calc(1.25rem + 40px)!important;left:.75rem!important}.error-notification[_ngcontent-%COMP%]{left:1rem;right:1rem;transform:none;max-width:calc(100vw - 2rem)}}body.dark[_nghost-%COMP%] .app-sidenav[_ngcontent-%COMP%], body.dark [_nghost-%COMP%] .app-sidenav[_ngcontent-%COMP%], [_ngcontent-%COMP%]:root[data-theme=dark] .app-sidenav[_ngcontent-%COMP%]{background:#242830f2;border-right-color:#b4c8ff17}body.dark[_nghost-%COMP%] .sidenav-header[_ngcontent-%COMP%], body.dark [_nghost-%COMP%] .sidenav-header[_ngcontent-%COMP%], [_ngcontent-%COMP%]:root[data-theme=dark] .sidenav-header[_ngcontent-%COMP%]{background:#242830b3}"]})};export{yt as a};
3
+ `+(e.summary||""):e.summary||"")("matTooltipDisabled",!e.summary),l(),_(e.subThreads!=null&&e.subThreads.length?1:-1),l(),_(e.name?2:3),l(2),_(i.isSharedThread(e)?4:-1)}}function $t(n,t){if(n&1){let e=b();r(0,"button",33),u("click",function(o){m(e);let s=c().$implicit,f=c(4);return p(f.startEditingThreadName(o,s))}),r(1,"mat-icon"),d(2,"edit"),a()()}}function Bt(n,t){if(n&1){let e=b();r(0,"button",34),u("click",function(o){m(e);let s=c().$implicit,f=c(4);return p(f.markActive(o,s))}),r(1,"mat-icon"),d(2,"replay"),a()()}}function Ut(n,t){if(n&1){let e=b();r(0,"button",35),u("click",function(o){m(e);let s=c().$implicit,f=c(4);return p(f.markDone(o,s))}),r(1,"mat-icon"),d(2,"check_circle_outline"),a()()}}function Xt(n,t){n&1&&ke(0)}function Qt(n,t){if(n&1&&ce(0,Xt,1,0,"ng-container",11),n&2){let e=c().$implicit;c(3);let i=Ee(1);x("ngTemplateOutlet",i)("ngTemplateOutletContext",Qe(2,wt,e.subThreads))}}function Gt(n,t){if(n&1){let e=b();r(0,"div",17),g(1,Ft,3,3,"div",18)(2,Rt,5,5,"a",19),r(3,"div",20),g(4,$t,3,0,"button",21),g(5,Bt,3,0,"button",22)(6,Ut,3,0,"button",23),r(7,"button",24),u("click",function(o){let s=m(e).$implicit,f=c(4);return p(f.toggleStar(o,s))}),r(8,"mat-icon"),d(9),a()(),r(10,"button",25),u("click",function(o){let s=m(e).$implicit,f=c(4);return p(f.deleteThread(o,s))}),r(11,"mat-icon"),d(12,"delete"),a()()()(),g(13,Qt,1,4,"ng-container")}if(n&2){let e,i=t.$implicit,o=c(4);C("current",i.id===((e=o.currentThread())==null?null:e.id)),l(),_(o.editingThreadId===i.id?1:2),l(3),_(o.editingThreadId!==i.id&&i.name?4:-1),l(),_(i.closedByUser?5:6),l(2),C("starred",o.isStarred(i)),x("title",o.isStarred(i)?"Unstar thread":"Star thread"),l(2),y(o.isStarred(i)?"star":"star_outline"),l(4),_(o.isParentExpanded(i.id)&&(i.subThreads!=null&&i.subThreads.length)?13:-1)}}function Ht(n,t){if(n&1&&(r(0,"div",14)(1,"div",16),d(2),a(),k(3,Gt,14,10,null,null,vt),a()),n&2){let e=t.$implicit;l(2),y(e.label),l(),E(e.threads)}}function qt(n,t){n&1&&(r(0,"div",15),d(1,"No existing threads"),a())}function Wt(n,t){if(n&1&&(r(0,"div",15),d(1),a()),n&2){let e=c(3);l(),oe('No threads matching "',e.searchQuery(),'"')}}function Jt(n,t){if(n&1&&(k(0,Ht,5,1,"div",14,Tt),g(2,qt,2,0,"div",15)(3,Wt,2,1,"div",15)),n&2){let e,i=c(2);E(i.getGroupedThreads()),l(2),_(!((e=i.threads())!=null&&e.length)&&!i.searchQuery()?2:i.searchQuery()&&i.getGroupedThreads().length===0?3:-1)}}function Yt(n,t){if(n&1&&(ce(0,Nt,2,0,"ng-template",null,0,He),r(2,"div",3),g(3,jt,4,0,"div",4)(4,Jt,4,1),a()),n&2){let e=c();l(3),_(e.isLoadingThreadList()?3:4)}}function Zt(n,t){n&1&&(r(0,"span",36),d(1,"No project selected"),a())}function Kt(n,t){n&1&&(r(0,"span",36),d(1,"Loading..."),a())}function en(n,t){if(n&1&&(r(0,"div",2),g(1,Zt,2,0,"span",36)(2,Kt,2,0,"span",36),a()),n&2){let e,i=c();l(),_((e=i.currentProject())!=null&&e.name?2:1)}}var Me=class n{projects=null;searchMode=!1;searchQuery=X("");searchModeChange=new ee;threadSelected=new ee;projectStateService=v(ve);threadStateService=v(H);threadApiService=v(Ze);userService=v(Ke);router=v(fe);destroyRef=v(se);currentThread=w(this.threadStateService.selectedThread$);currentProject=w(this.projectStateService.selectedProject$);threads=w(this.threadStateService.threadList$);isLoadingThreadList=w(this.threadStateService.isLoadingThreadList$);username=w(this.userService.username$);isTouchDevice="ontouchstart"in window||navigator.maxTouchPoints>0;editingThreadId=null;editingThreadName="";isRenamingThread=!1;renameErrorMessage="";expandedParents=new Set;constructor(){te(()=>{let t=this.currentThread()?.id,e=this.threads();if(!t||!e?.length)return;let i=new Map;for(let s of e)s.parentThreadId&&i.set(s.id,s.parentThreadId);let o=t;for(;o;){let s=i.get(o);s&&this.expandedParents.add(s),o=s}})}ngOnInit(){this.userService.fetchCurrentUser().subscribe({error:t=>{console.error("[THREAD-SELECTOR] Failed to load current user:",t)}})}selectThread(t){this.threadStateService.selectThread(t),this.threadSelected.emit(),this.router.navigate(["project",this.currentProject()?.name,"thread",t])}getGroupedThreads(){let t=this.threads();if(!t?.length)return[];let e=new Set(t.map(h=>h.id)),i=t.filter(h=>!h.parentThreadId),o=t.filter(h=>!!h.parentThreadId),s=o.filter(h=>!e.has(h.parentThreadId)),f=o.filter(h=>e.has(h.parentThreadId)),A=new Map;for(let h of f){let O=h.parentThreadId;A.has(O)||A.set(O,[]),A.get(O).push(h)}let J=h=>(A.get(h)||[]).sort((j,I)=>j.modifiedDate>I.modifiedDate?-1:1).map(j=>Z(z({},j),{subThreads:J(j.id)})),L=[...i,...s];if(this.searchQuery()&&this.searchQuery().trim()){let h=this.searchQuery().toLowerCase().trim();L=L.filter(O=>O.name.toLowerCase().includes(h)||O.summary&&O.summary.toLowerCase().includes(h))}if(!L.length)return[];let R=this.username();if(!R)return[];let Ve=L.map(h=>Z(z({},h),{subThreads:J(h.id)})),Fe=Ve.filter(h=>h.starring&&h.starring.includes(R)),Pt=Ve.filter(h=>!h.starring||!h.starring.includes(R)),Y=new Map,Ie=new Date;Ie.setHours(0,0,0,0);for(let h of Pt){let O=new Date(h.modifiedDate);O.setHours(0,0,0,0);let j=Ie.getTime()-O.getTime(),I=Math.floor(j/(1e3*60*60*24)),D;I===0?D="Today":I===1?D="Yesterday":I<7?D="This Week":I<30?D="This Month":I<90?D="Last 3 Months":D="Older",Y.has(D)||Y.set(D,[]),Y.get(D).push(h)}let Oe=[];if(Fe.length>0){let h=[...Fe].sort((O,j)=>O.modifiedDate>j.modifiedDate?-1:1);Oe.push({label:"Starred",threads:h})}return["Today","Yesterday","This Week","This Month","Last 3 Months","Older"].filter(h=>Y.has(h)).forEach(h=>{Oe.push({label:h,threads:Y.get(h)})}),Oe}isParentExpanded(t){return this.expandedParents.has(t)}toggleSubThreads(t,e){t.stopPropagation(),this.expandedParents.has(e)?this.expandedParents.delete(e):this.expandedParents.add(e)}isSubThread(t){return!!t.parentThreadId}isSharedThread(t){return t.users&&t.users.length>1}isStarred(t){let e=this.username();return!!e&&t.starring&&t.starring.includes(e)}toggleStar(t,e){t.stopPropagation();let i=this.username();if(!i)return;let o=e.starring&&e.starring.includes(i),s=o?this.threadApiService.unstarThread(e.id):this.threadApiService.starThread(e.id);this.threadStateService.updateStarLocal(e.id,!o,i),s.pipe(F(this.destroyRef)).subscribe({next:()=>{},error:f=>{console.error("Error toggling star:",f),this.threadStateService.refreshThreadList()}})}markDone(t,e){t.stopPropagation(),this.threadStateService.markDone(e.id)}markActive(t,e){t.stopPropagation(),this.threadStateService.markActive(e.id)}deleteThread(t,e){t.stopPropagation();let i=this.currentProject()?.name;!i||!confirm(`Are you sure you want to delete the thread "${e.name}"?`)||this.threadApiService.deleteThread(e.id).subscribe({next:()=>{this.currentThread()?.id===e.id&&(this.threadStateService.clearSelection(),this.router.navigate(["project",i])),this.threadStateService.refreshThreadList()},error:s=>{console.error("Error deleting thread:",s),alert("Failed to delete thread. Please try again.")}})}formatDate(t){try{let e=new Date(t),o=new Date().getTime()-e.getTime(),s=Math.floor(o/(1e3*60*60*24));return s===0?"Today":s===1?"Yesterday":s<7?`${s} days ago`:e.toLocaleDateString("en-EN",{day:"numeric",month:"short"})}catch(e){return"No date"}}startEditingThreadName(t,e){t.stopPropagation(),this.editingThreadId=e.id,this.editingThreadName=e.name||"",this.renameErrorMessage="",setTimeout(()=>{let i=document.querySelector(".thread-name-input");i&&(i.focus(),i.select())},0)}cancelEditingThreadName(){this.editingThreadId=null,this.editingThreadName="",this.renameErrorMessage=""}saveThreadName(t){if(t&&t.stopPropagation(),!this.editingThreadId)return;let e=this.editingThreadName.trim();if(!e){this.renameErrorMessage="Thread name cannot be empty";return}if(e.length>200){this.renameErrorMessage="Thread name is too long (max 200 characters)";return}let i=this.editingThreadId;this.isRenamingThread=!0,this.renameErrorMessage="",this.threadStateService.renameThread(i,e).subscribe({next:()=>{console.log("[THREAD-SELECTOR] Thread renamed successfully"),this.cancelEditingThreadName(),this.isRenamingThread=!1},error:o=>{console.error("[THREAD-SELECTOR] Error renaming thread:",o),this.renameErrorMessage=o.message||"Failed to rename thread",this.isRenamingThread=!1}})}onEditKeydown(t){t.key==="Enter"?(t.preventDefault(),t.stopPropagation(),this.saveThreadName()):t.key==="Escape"&&(t.preventDefault(),t.stopPropagation(),this.cancelEditingThreadName())}onEditBlur(){setTimeout(()=>{this.editingThreadId&&!this.isRenamingThread&&this.saveThreadName()},200)}static \u0275fac=function(e){return new(e||n)};static \u0275cmp=N({type:n,selectors:[["app-thread-selector"]],inputs:{searchMode:"searchMode",searchQuery:[1,"searchQuery"]},outputs:{searchModeChange:"searchModeChange",threadSelected:"threadSelected"},decls:3,vars:1,consts:[["subThreadTemplate",""],["tabindex","0","role","application","aria-label","Thread selector",1,"thread-selector",3,"click","keydown"],[1,"thread-disabled"],["role","menu","aria-label","Thread selection",1,"thread-list"],[1,"thread-loading"],[1,"thread-item-wrapper","sub-thread"],["role","menuitem","tabindex","0",1,"thread-item","sub-thread-item",3,"click","keydown.enter","keydown.space"],[1,"sub-thread-toggle"],[1,"sub-thread-agent"],[1,"sub-thread-task"],[1,"sub-thread-toggle",3,"click"],[4,"ngTemplateOutlet","ngTemplateOutletContext"],[1,"loading-spinner"],[1,"loading-text"],[1,"thread-group"],[1,"thread-empty"],[1,"thread-group-header"],[1,"thread-item-wrapper"],[1,"thread-name-edit-wrapper"],["matTooltipShowDelay","1000","role","menuitem","tabindex","0",1,"thread-item",3,"matTooltip","matTooltipDisabled"],[1,"action-buttons"],["mat-icon-button","","title","Rename thread","type","button",1,"action-button","edit-button"],["mat-icon-button","","title","Mark as active","type","button",1,"action-button","mark-active-button"],["mat-icon-button","","title","Mark as done","type","button",1,"action-button","mark-done-button"],["mat-icon-button","","type","button",1,"action-button","star-button",3,"click","title"],["mat-icon-button","","title","Delete thread","type","button",1,"action-button","delete-button",3,"click"],["type","text","maxlength","200",1,"thread-name-input",3,"ngModelChange","keydown","blur","click","ngModel","disabled"],[1,"rename-error"],["matTooltipShowDelay","1000","role","menuitem","tabindex","0",1,"thread-item",3,"click","keydown.enter","keydown.space","matTooltip","matTooltipDisabled"],[1,"thread-name"],["matTooltip","Shared thread",1,"shared-indicator"],[1,"thread-name-spinner",3,"diameter"],[1,"thread-name","thread-name-generating"],["mat-icon-button","","title","Rename thread","type","button",1,"action-button","edit-button",3,"click"],["mat-icon-button","","title","Mark as active","type","button",1,"action-button","mark-active-button",3,"click"],["mat-icon-button","","title","Mark as done","type","button",1,"action-button","mark-done-button",3,"click"],[1,"disabled-text"]],template:function(e,i){if(e&1&&(r(0,"div",1),u("click",function(s){return s.stopPropagation()})("keydown",function(s){return s.stopPropagation()}),g(1,Yt,5,1)(2,en,3,1,"div",2),a()),e&2){let o;l(),_((o=i.currentProject())!=null&&o.name?1:2)}},dependencies:[qe,Pe,Ce,xe,rt,ye,W,q,G,Q,ct,st,ot,it,nt,tt],styles:[".thread-selector[_ngcontent-%COMP%]{display:flex;flex-direction:column;width:100%;flex:1;min-height:0;overflow-x:hidden;overflow-y:auto}.thread-list[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:0;max-height:none;overflow:visible}.thread-group[_ngcontent-%COMP%]{display:flex;flex-direction:column;margin-bottom:.5rem}.thread-group[_ngcontent-%COMP%]:last-child{margin-bottom:0}.thread-group-header[_ngcontent-%COMP%]{padding:.5rem 1rem .25rem;font-size:.75rem;font-weight:600;color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.5px;position:sticky;top:0;background:var(--glass-bg);backdrop-filter:var(--glass-backdrop-blur);-webkit-backdrop-filter:var(--glass-backdrop-blur);z-index:1}.thread-item-wrapper[_ngcontent-%COMP%]{display:flex;align-items:center;position:relative;width:100%;border-radius:0;min-width:0;gap:.25rem}.thread-item-wrapper[_ngcontent-%COMP%]:hover{background:var(--color-bg-hover)}.thread-item-wrapper[_ngcontent-%COMP%]:hover .action-buttons[_ngcontent-%COMP%]{display:flex}.thread-item-wrapper.current[_ngcontent-%COMP%]{background:var(--color-primary-light)}.thread-item-wrapper.current[_ngcontent-%COMP%] .thread-item[_ngcontent-%COMP%]{color:var(--color-primary-text);font-weight:600}.thread-item[_ngcontent-%COMP%]{display:flex;align-items:center;flex:1;min-width:0;padding:.75rem 1rem;text-decoration:none;cursor:pointer;transition:all .2s ease;background:transparent;border:none;border-radius:0;color:var(--color-text);text-align:left;justify-content:flex-start}.thread-item.new-thread-item[_ngcontent-%COMP%]{margin-bottom:.25rem}.thread-item[_ngcontent-%COMP%]:hover{color:var(--color-primary)}.thread-item[_ngcontent-%COMP%]:focus-visible{outline:2px solid var(--color-primary);outline-offset:-2px}.action-buttons[_ngcontent-%COMP%]{display:none;align-items:center;gap:.25rem;flex-shrink:0;margin-right:.5rem}.thread-item-wrapper[_ngcontent-%COMP%]:hover .action-buttons[_ngcontent-%COMP%], .thread-item-wrapper.current[_ngcontent-%COMP%] .action-buttons[_ngcontent-%COMP%]{display:flex}.action-button[_ngcontent-%COMP%]{flex-shrink:0;border-radius:4px!important;width:28px!important;height:28px!important;padding:0!important}.action-button[_ngcontent-%COMP%] .mat-mdc-button-persistent-ripple{border-radius:4px!important}.action-button[_ngcontent-%COMP%]:hover{background:var(--color-bg-hover)!important}.action-button[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{font-size:18px;width:18px;height:18px}.action-button.edit-button[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{font-size:18px;width:18px;height:18px}.action-button.edit-button[_ngcontent-%COMP%]:hover{background-color:var(--color-primary-hover)!important}.action-button.edit-button[_ngcontent-%COMP%]:hover mat-icon[_ngcontent-%COMP%]{color:var(--color-primary)}.action-button.star-button[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{transition:color .2s ease}.action-button.star-button.starred[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{color:#fbbf24}.action-button.star-button[_ngcontent-%COMP%]:not(.starred):hover mat-icon[_ngcontent-%COMP%]{color:#fbbf24}.action-button.delete-button[_ngcontent-%COMP%]:hover mat-icon[_ngcontent-%COMP%]{color:#ef4444}.action-button.mark-done-button[_ngcontent-%COMP%]:hover mat-icon[_ngcontent-%COMP%]{color:#22c55e}.action-button.mark-active-button[_ngcontent-%COMP%]:hover mat-icon[_ngcontent-%COMP%]{color:var(--color-primary)}.thread-link[_ngcontent-%COMP%]{display:inline-flex;align-items:center;background:transparent;border:none;text-decoration:none;cursor:pointer;transition:all .2s ease;gap:.5rem;font-size:.875rem;font-weight:400;padding:0 1rem;min-width:0}.thread-link[_ngcontent-%COMP%]:hover:not(.new-thread-link){color:var(--color-primary-hover, var(--color-primary));text-decoration:underline;text-decoration-thickness:1.5px;text-underline-offset:3px}.thread-link[_ngcontent-%COMP%]:focus{outline:2px solid var(--color-primary);outline-offset:2px}.thread-link.new-thread-link[_ngcontent-%COMP%]{margin-bottom:.5rem;font-weight:600;font-size:.95rem}.thread-link.new-thread-link[_ngcontent-%COMP%] .thread-name[_ngcontent-%COMP%]{background:linear-gradient(90deg,var(--color-primary, #3b82f6) 0%,var(--color-accent, #8b5cf6) 50%,var(--color-primary, #3b82f6) 100%);background-size:200% auto;background-clip:text;-webkit-background-clip:text;-webkit-text-fill-color:transparent;animation:_ngcontent-%COMP%_gradientShift 3s ease-in-out infinite}.thread-link.new-thread-link[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{color:var(--color-primary);animation:_ngcontent-%COMP%_iconPulse 3s ease-in-out infinite}.thread-link.new-thread-link[_ngcontent-%COMP%]:hover{transform:translate(4px)}.thread-link.new-thread-link[_ngcontent-%COMP%]:hover mat-icon[_ngcontent-%COMP%]{animation:_ngcontent-%COMP%_iconPulse 1.5s ease-in-out infinite}.thread-link[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{font-size:20px;width:20px;height:20px}@keyframes _ngcontent-%COMP%_gradientShift{0%{background-position:0 center}50%{background-position:100% center}to{background-position:0 center}}@keyframes _ngcontent-%COMP%_iconPulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.8;transform:scale(1.05)}}.thread-name[_ngcontent-%COMP%]{flex:1;font-size:.875rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:left}.thread-name.thread-name-generating[_ngcontent-%COMP%]{color:var(--color-text-muted);font-style:italic}.thread-name-edit-wrapper[_ngcontent-%COMP%]{flex:1;display:flex;flex-direction:column;padding:0 .5rem}.thread-name-input[_ngcontent-%COMP%]{width:100%;padding:.5rem;border:1px solid var(--color-border);border-radius:4px;background:var(--color-bg-secondary);color:var(--color-text-primary);font-size:.9rem;font-family:inherit}.thread-name-input[_ngcontent-%COMP%]:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 2px #3b82f61a}.thread-name-input[_ngcontent-%COMP%]:disabled{opacity:.6;cursor:not-allowed}.rename-error[_ngcontent-%COMP%]{color:var(--color-error);font-size:.75rem;margin-top:.25rem;padding-left:.5rem}.thread-name-spinner[_ngcontent-%COMP%]{flex-shrink:0;margin-right:.5rem}.thread-name-spinner[_ngcontent-%COMP%] .mat-mdc-progress-spinner circle{stroke:var(--color-primary)!important}.current-indicator[_ngcontent-%COMP%]{color:var(--color-success);font-weight:700;flex-shrink:0;font-size:1rem}.thread-separator[_ngcontent-%COMP%]{height:1px;background:var(--color-border);margin:.25rem 0}.thread-empty[_ngcontent-%COMP%]{padding:1.5rem 1rem;text-align:center;color:var(--color-text-muted);font-size:.8rem;font-style:italic}.thread-loading[_ngcontent-%COMP%]{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:2rem 1rem;gap:.75rem}.thread-loading[_ngcontent-%COMP%] .loading-spinner[_ngcontent-%COMP%]{width:24px;height:24px;border:3px solid var(--color-border);border-top-color:var(--color-primary);border-radius:50%;animation:_ngcontent-%COMP%_spin .8s linear infinite}.thread-loading[_ngcontent-%COMP%] .loading-text[_ngcontent-%COMP%]{color:var(--color-text-muted);font-size:.8rem}@keyframes _ngcontent-%COMP%_spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.thread-disabled[_ngcontent-%COMP%]{padding:1.5rem 1rem}.thread-disabled[_ngcontent-%COMP%] .disabled-text[_ngcontent-%COMP%]{display:block;color:var(--color-text-muted);font-size:.85rem;font-style:italic;text-align:center}.thread-item-wrapper.sub-thread[_ngcontent-%COMP%]{padding-left:calc(.2rem + var(--sub-depth, 1) * 1.5rem);border-left:2px solid var(--color-primary, #3b82f6);margin-left:.75rem}.thread-item-wrapper.sub-thread[_ngcontent-%COMP%] .sub-thread-item[_ngcontent-%COMP%]{padding:.35rem .5rem .35rem 0;gap:.2rem;font-size:.8rem;color:var(--color-text-secondary)}.thread-item-wrapper.sub-thread[_ngcontent-%COMP%] .sub-thread-item[_ngcontent-%COMP%]:hover{color:var(--color-primary)}.thread-item-wrapper.sub-thread[_ngcontent-%COMP%] .sub-thread-agent[_ngcontent-%COMP%]{font-weight:600;color:var(--color-primary);white-space:nowrap;flex-shrink:0;font-size:.8rem}.thread-item-wrapper.sub-thread[_ngcontent-%COMP%] .sub-thread-task[_ngcontent-%COMP%]{color:var(--color-text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:.75rem}.sub-thread-toggle[_ngcontent-%COMP%]{font-size:16px;width:16px;height:16px;flex-shrink:0;cursor:pointer;color:var(--color-text-secondary);margin-right:.25rem}.sub-thread-toggle[_ngcontent-%COMP%]:hover{color:var(--color-primary)}.shared-indicator[_ngcontent-%COMP%]{font-size:14px;width:14px;height:14px;color:var(--color-text-secondary);flex-shrink:0;margin-left:.25rem}@media(max-width:768px){.thread-item[_ngcontent-%COMP%]{padding:.6rem .8rem}.thread-name[_ngcontent-%COMP%]{font-size:.8rem}}"]})};var tn=["logsContent"],nn=(n,t)=>t.name;function on(n,t){if(n&1){let e=b();r(0,"button",12),u("click",function(){m(e);let o=c().$implicit,s=c();return p(s.start(o.name))}),r(1,"mat-icon"),d(2,"play_arrow"),a()()}if(n&2){let e=c().$implicit;x("disabled",e.isLoading)}}function rn(n,t){if(n&1){let e=b();r(0,"button",13),u("click",function(){m(e);let o=c().$implicit,s=c();return p(s.stop(o.name))}),r(1,"mat-icon"),d(2,"stop"),a()()}if(n&2){let e=c().$implicit;x("disabled",e.isLoading)}}function an(n,t){if(n&1&&(r(0,"a",8)(1,"mat-icon",14),d(2,"open_in_new"),a()()),n&2){let e=c().$implicit;x("href",e.url,ne)("title",e.url)}}function sn(n,t){if(n&1&&(r(0,"div",15),d(1),a()),n&2){let e=c(),i=e.$implicit,o=e.$index;M("order",o*2),l(),y(i.errorMessage)}}function cn(n,t){if(n&1){let e=b();r(0,"button",21),u("click",function(){m(e);let o=c(3);return p(o.onManualRefresh())}),r(1,"mat-icon"),d(2,"refresh"),a()()}}function ln(n,t){if(n&1&&(r(0,"div",16)(1,"div",17)(2,"span",18),d(3),a(),g(4,cn,3,0,"button",19),a(),r(5,"pre",20,0),d(7),a()()),n&2){let e=c(),i=e.$implicit,o=e.$index,s=c();M("order",o*2+1),l(3),oe("",i.name," logs"),l(),_(i.status==="running"?4:-1),l(3),y(s.logs()||"(empty)")}}function dn(n,t){if(n&1){let e=b();r(0,"div",2)(1,"span",3),d(2),a(),r(3,"div",4),g(4,on,3,1,"button",5)(5,rn,3,1,"button",6),r(6,"span",7),d(7),a(),g(8,an,3,2,"a",8),r(9,"button",9),u("click",function(){let o=m(e).$implicit,s=c();return p(s.toggleLogs(o.name))}),r(10,"mat-icon"),d(11),a()()()(),g(12,sn,2,3,"div",10),g(13,ln,8,5,"div",11)}if(n&2){let e=t.$implicit,i=t.$index,o=c();M("order",i*2),l(2),y(e.name),l(2),_(e.status==="stopped"?4:5),l(2),C("running",e.status==="running"),l(),oe(" ",e.status==="running"?"Running":"Stopped"," "),l(),_(e.url?8:-1),l(),x("title",o.logsOpenFor()===e.name?"Hide logs":"Show logs"),l(2),y(o.logsOpenFor()===e.name?"expand_less":"terminal"),l(),_(e.errorMessage?12:-1),l(),_(o.logsOpenFor()===e.name?13:-1)}}var Se=class n{destroyRef=v(se);projectApi=v(be);projectName=X.required();entryStates=P([]);hasPreview=S(()=>this.entryStates().length>0);logsOpenFor=P(null);logs=P("");logsContent;logsPollTimer=null;logsTimeoutTimer=null;static LOGS_POLL_MS=5e3;static LOGS_TIMEOUT_MS=1200*1e3;constructor(){te(()=>{let t=this.projectName();t&&this.onProjectChanged(t)},{allowSignalWrites:!0}),te(()=>{console.log("entry states",this.entryStates())})}ngOnDestroy(){this.stopLogPolling()}onProjectChanged(t){this.stopLogPolling(),this.entryStates.set([]),this.logsOpenFor.set(null),this.logs.set(""),this.projectApi.getPreviewEntries(t).pipe(F(this.destroyRef)).subscribe({next:e=>{let i=e.entries;if(i.length===0)return;let o=i.map(f=>({name:f.name,command:f.command,url:f.url,status:"stopped",isLoading:!1,errorMessage:""}));this.entryStates.set(o);let s=i.map(f=>this.projectApi.getPreviewStatus(t,f.name));Ae(s).pipe(F(this.destroyRef)).subscribe({next:f=>{this.entryStates.update(A=>A.map((J,L)=>{let R=f[L];return R?Z(z({},J),{status:R.status}):J}))},error:()=>{}})},error:()=>{}})}start(t){this.updateEntry(t,{isLoading:!0,errorMessage:""}),this.projectApi.startPreview(this.projectName(),t).pipe(F(this.destroyRef)).subscribe({next:e=>{this.updateEntry(t,{status:e.status,isLoading:!1})},error:e=>{this.updateEntry(t,{errorMessage:e?.error?.error??"Failed to start preview",isLoading:!1})}})}stop(t){this.updateEntry(t,{isLoading:!0,errorMessage:""}),this.projectApi.stopPreview(this.projectName(),t).pipe(F(this.destroyRef)).subscribe({next:()=>{this.updateEntry(t,{status:"stopped",isLoading:!1}),this.logsOpenFor()===t&&this.stopLogPolling()},error:e=>{this.updateEntry(t,{errorMessage:e?.error?.error??"Failed to stop preview",isLoading:!1})}})}toggleLogs(t){this.logsOpenFor()===t?(this.logsOpenFor.set(null),this.logs.set(""),this.stopLogPolling()):(this.logsOpenFor.set(t),this.refreshLogs(),this.startLogPolling())}onManualRefresh(){this.refreshLogs(),this.logsPollTimer&&this.resetLogsTimeout()}refreshLogs(){let t=this.logsOpenFor();t&&this.projectApi.getPreviewLogs(this.projectName(),t).pipe(F(this.destroyRef)).subscribe({next:e=>{this.logs.set(e.logs),this.scrollLogsToBottom()},error:()=>this.logs.set("(failed to load logs)")})}updateEntry(t,e){this.entryStates.update(i=>i.map(o=>o.name===t?z(z({},o),e):o))}startLogPolling(){this.stopLogPolling(),this.logsPollTimer=setInterval(()=>{this.logsOpenFor()?this.refreshLogs():this.stopLogPolling()},n.LOGS_POLL_MS),this.resetLogsTimeout()}stopLogPolling(){this.logsPollTimer&&(clearInterval(this.logsPollTimer),this.logsPollTimer=null),this.logsTimeoutTimer&&(clearTimeout(this.logsTimeoutTimer),this.logsTimeoutTimer=null)}resetLogsTimeout(){this.logsTimeoutTimer&&clearTimeout(this.logsTimeoutTimer),this.logsTimeoutTimer=setTimeout(()=>{this.stopLogPolling()},n.LOGS_TIMEOUT_MS)}scrollLogsToBottom(){setTimeout(()=>{let t=this.logsContent?.nativeElement;t&&(t.scrollTop=t.scrollHeight)})}static \u0275fac=function(e){return new(e||n)};static \u0275cmp=N({type:n,selectors:[["app-preview-panel"]],viewQuery:function(e,i){if(e&1&&me(tn,5),e&2){let o;pe(o=ge())&&(i.logsContent=o.first)}},inputs:{projectName:[1,"projectName"]},decls:3,vars:0,consts:[["logsContent",""],[1,"preview-panel"],[1,"entry-row"],[1,"entry-name"],[1,"entry-actions"],["mat-icon-button","","title","Start","type","button",1,"entry-btn","start",3,"disabled"],["mat-icon-button","","title","Stop","type","button",1,"entry-btn","stop",3,"disabled"],[1,"status-pill"],["target","_blank","rel","noopener noreferrer",1,"preview-url",3,"href","title"],["mat-icon-button","","type","button",1,"entry-btn","logs",3,"click","title"],[1,"preview-error",3,"order"],[1,"logs-container",3,"order"],["mat-icon-button","","title","Start","type","button",1,"entry-btn","start",3,"click","disabled"],["mat-icon-button","","title","Stop","type","button",1,"entry-btn","stop",3,"click","disabled"],[1,"link-icon"],[1,"preview-error"],[1,"logs-container"],[1,"logs-header"],[1,"logs-title"],["mat-icon-button","","title","Refresh logs","type","button",1,"entry-btn"],[1,"logs-content"],["mat-icon-button","","title","Refresh logs","type","button",1,"entry-btn",3,"click"]],template:function(e,i){e&1&&(r(0,"div",1),k(1,dn,14,12,null,null,nn),a()),e&2&&(l(),E(i.entryStates()))},dependencies:[G,Q,W,q],styles:["[_nghost-%COMP%]{display:block}.preview-panel[_ngcontent-%COMP%]{display:flex;flex-direction:column;padding:.25rem 0}.entry-row[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.375rem;padding:.125rem .5rem;min-height:36px}.entry-name[_ngcontent-%COMP%]{font-size:.82rem;font-weight:500;color:var(--on-surface, #e0e0e0);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1 1 auto;min-width:0}.entry-actions[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.25rem;flex-shrink:0}.entry-btn[_ngcontent-%COMP%]{width:28px!important;height:28px!important;padding:0!important;display:inline-flex!important;align-items:center;justify-content:center;flex-shrink:0}.entry-btn[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{font-size:18px;width:18px;height:18px;line-height:18px}.entry-btn.start[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{color:var(--color-primary)}.entry-btn.stop[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{color:#e53935}.entry-btn.logs[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{font-size:16px;width:16px;height:16px;line-height:16px;color:var(--color-text-secondary)}.entry-btn[disabled][_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{color:var(--color-text-secondary)}.status-pill[_ngcontent-%COMP%]{display:inline-flex;align-items:center;justify-content:center;padding:1px 6px;border-radius:12px;font-size:.68rem;font-weight:600;letter-spacing:.02em;flex-shrink:0;min-width:52px;text-align:center;background:var(--color-bg-hover);color:var(--color-text-secondary);border:1px solid var(--color-border)}.status-pill.running[_ngcontent-%COMP%]{background:#22c55e26;color:#16a34a;border-color:#22c55e66}.preview-url[_ngcontent-%COMP%]{display:inline-flex;align-items:center;text-decoration:none;color:var(--color-primary);flex-shrink:0}.preview-url[_ngcontent-%COMP%]:hover{text-decoration:underline}.preview-url[_ngcontent-%COMP%] .link-icon[_ngcontent-%COMP%]{font-size:14px;width:14px;height:14px}.preview-error[_ngcontent-%COMP%]{font-size:.75rem;color:#c00;padding:0 .75rem}.logs-container[_ngcontent-%COMP%]{display:flex;flex-direction:column;margin:.125rem .5rem .25rem;background:var(--color-bg-hover);border-radius:8px;overflow:hidden;border:1px solid var(--color-border)}.logs-header[_ngcontent-%COMP%]{display:flex;align-items:center;padding:.25rem .75rem;border-bottom:1px solid var(--color-border)}.logs-header[_ngcontent-%COMP%] .logs-title[_ngcontent-%COMP%]{flex:1;font-size:.72rem;font-weight:600;color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.05em}.logs-content[_ngcontent-%COMP%]{margin:0;padding:.5rem .75rem;font-family:Courier New,Courier,monospace;font-size:.72rem;line-height:1.5;color:var(--color-text);white-space:pre-wrap;word-break:break-all;max-height:200px;overflow-y:auto}.logs-content[_ngcontent-%COMP%]::-webkit-scrollbar{width:6px}.logs-content[_ngcontent-%COMP%]::-webkit-scrollbar-track{background:transparent}.logs-content[_ngcontent-%COMP%]::-webkit-scrollbar-thumb{background:var(--color-text-secondary);border-radius:3px}"]})};var we=class n{eventStream=v(dt);threadState=v(H);ratio=P(0);inputTokens=P(0);contextWindow=P(0);price=P(0);iterations=P(0);cacheReadTokens=P(0);visible=P(!1);level=S(()=>{let t=this.ratio();return t<.6?"ok":t<.85?"warning":"danger"});constructor(){this.eventStream.events$.pipe(ae(t=>t instanceof lt),ae(t=>!t.threadId||t.threadId===this.threadState.getSelectedThreadId())).subscribe(t=>{this.inputTokens.set(t.inputTokens),this.contextWindow.set(t.contextWindow),this.price.set(t.price),this.iterations.set(t.iterations),this.cacheReadTokens.set(t.cacheReadTokens),this.ratio.set(t.contextWindow>0?t.inputTokens/t.contextWindow:0),this.visible.set(!0)}),this.eventStream.connectionStatus$.pipe(ae(t=>!t.connected)).subscribe(()=>{this.visible.set(!1),this.ratio.set(0),this.inputTokens.set(0),this.contextWindow.set(0),this.price.set(0),this.iterations.set(0),this.cacheReadTokens.set(0)})}static \u0275fac=function(e){return new(e||n)};static \u0275prov=Le({token:n,factory:n.\u0275fac,providedIn:"root"})};function mn(n,t){if(n&1&&U(0,"div",12),n&2){let e=t.$implicit,i=t.$index,o=c();M("--delay",e.delay+"s")("--left",e.left+"%")("--dur",e.dur+"s")("--size",e.size+"px")("--rise",e.rise+"px"),C("invisible",i>=o.aboveBubbleCount())}}function pn(n,t){if(n&1&&U(0,"div",13),n&2){let e=t.$implicit;M("--delay",e.delay+"s")("--size",e.size+"px")("--left",e.left+"%")("--dur",e.dur+"s")("--top",e.top+"px")}}function gn(n,t){if(n&1&&U(0,"div",14),n&2){let e=t.$implicit,i=t.$index,o=c();M("--delay",e.delay+"s")("--left",e.left+"%")("--dur",e.dur+"s")("--size",e.size+"px"),C("invisible",i>=o.insideBubbleCount())}}var Ct=30,xt=27,_n=40;function T(n,t,e,i=0){return i+(n*137+t*31)%e}var Te=class n{gaugeState=v(we);sidenavOpen=X(!1);aboveBubbles=Array.from({length:Ct},(t,e)=>({delay:T(e,1,30)/10,left:T(e,2,82,5),dur:2.5+T(e,3,20)/10,size:1.5+T(e,4,40)/10,rise:150+T(e,5,150)}));insideBubbles=Array.from({length:xt},(t,e)=>({delay:T(e,6,20)/10,left:T(e,7,80,5),dur:1.2+T(e,8,15)/10,size:2+T(e,9,35)/10}));foamBubbles=Array.from({length:_n},(t,e)=>({delay:T(e,10,25)/10,left:T(e,11,85,3),dur:1.5+T(e,12,10)/10,size:(3+T(e,13,80)/10)*.75,top:T(e,14,4)+8}));displayRatio=S(()=>Math.min(100,this.gaugeState.ratio()*100));liquidColor=S(()=>{let t=this.gaugeState.ratio();return t<=.5?`rgb(${Math.round(t*2*255)}, 255, 0)`:`rgb(255, ${Math.round((1-(t-.5)*2)*255)}, 0)`});aboveBubbleCount=S(()=>Math.round(this.gaugeState.ratio()*Ct));insideBubbleCount=S(()=>{let t=this.gaugeState.ratio();return t<.5?0:t<.65?5:t<.8?13:t<.9?20:xt});foamActive=S(()=>this.gaugeState.ratio()>=.5);overflowing=S(()=>this.gaugeState.ratio()>=.9);tooltipText=S(()=>{let t=Math.round(this.gaugeState.ratio()*100),e=this.gaugeState.price().toFixed(4);return[`${this.gaugeState.inputTokens().toLocaleString()} / ${this.gaugeState.contextWindow().toLocaleString()} tokens (${t}%)`,`Cost: $${e}`,`Iterations: ${this.gaugeState.iterations()}`,`Cache read: ${this.gaugeState.cacheReadTokens().toLocaleString()}`].join(`
4
+ `)});static \u0275fac=function(e){return new(e||n)};static \u0275cmp=N({type:n,selectors:[["app-context-gauge"]],inputs:{sidenavOpen:[1,"sidenavOpen"]},decls:15,vars:11,consts:[[1,"tube-host",3,"title"],[1,"tube"],[1,"bubbles-above"],[1,"bubble-color",3,"invisible","--delay","--left","--dur","--size","--rise"],[1,"foam"],[1,"foam-bubble",3,"--delay","--size","--left","--dur","--top"],[1,"body"],[1,"shine"],[1,"liquid"],[1,"percentage"],[1,"bubbles-inside"],[1,"bubble-dark",3,"invisible","--delay","--left","--dur","--size"],[1,"bubble-color"],[1,"foam-bubble"],[1,"bubble-dark"]],template:function(e,i){e&1&&(B(0,"div",0)(1,"div",1)(2,"div",2),k(3,mn,1,12,"div",3,de),ie(),B(5,"div",4),k(6,pn,1,10,"div",5,de),ie(),B(8,"div",6),U(9,"div",7),B(10,"div",8)(11,"div",9)(12,"div",10),k(13,gn,1,10,"div",11,de),ie()()()()()()),e&2&&(C("hidden",i.sidenavOpen()),Be("title",i.tooltipText()),l(),M("--tube-color",i.liquidColor()),l(2),E(i.aboveBubbles),l(2),M("bottom",i.displayRatio()+"%"),C("active",i.foamActive()),l(),E(i.foamBubbles),l(5),M("height",i.displayRatio(),"%"),l(2),E(i.insideBubbles))},styles:['[_nghost-%COMP%]{position:fixed;left:calc(1rem + 10px);z-index:1500;display:block;top:calc(3.5rem + 80px)}.tube-host[_ngcontent-%COMP%]{position:relative;display:flex;flex-direction:column;align-items:center}.tube-host.hidden[_ngcontent-%COMP%]{visibility:hidden}.tube[_ngcontent-%COMP%]{position:relative;height:100px;width:24px;border:none;border-radius:0 0 50rem 50rem;background-color:#333;cursor:default;overflow:visible}.tube[_ngcontent-%COMP%]:after{content:"";position:absolute;left:-3px;top:0;width:calc(100% + 6px);height:4px;border-radius:50rem;background:#333}.body[_ngcontent-%COMP%]{position:absolute;border-radius:inherit;height:100%;width:100%;bottom:0;overflow:hidden;z-index:5}.shine[_ngcontent-%COMP%]{position:absolute;left:20%;top:0;width:10%;height:100%;z-index:90;opacity:.2;pointer-events:none}.shine[_ngcontent-%COMP%]:before, .shine[_ngcontent-%COMP%]:after{content:"";position:absolute;background-color:#fff;border-radius:50rem;top:10%;height:40%;width:100%}.shine[_ngcontent-%COMP%]:after{height:15%;top:60%}@keyframes _ngcontent-%COMP%_liquid-spin{0%{transform:translate(-50%) rotate(0)}to{transform:translate(-50%) rotate(360deg)}}.liquid[_ngcontent-%COMP%]{position:absolute;height:100%;width:100%;bottom:0}.percentage[_ngcontent-%COMP%]{position:absolute;height:0%;width:100%;bottom:0;left:0;z-index:80;transition:height .9s cubic-bezier(.4,0,.2,1);overflow:visible}.percentage[_ngcontent-%COMP%]:before, .percentage[_ngcontent-%COMP%]:after{position:absolute;content:"";width:100px;height:100px;border-radius:40px;animation:_ngcontent-%COMP%_liquid-spin 4s infinite linear;transform:translate(-50%);left:50%;top:0;background:var(--tube-color, #34c759);transition:background .5s ease}.percentage[_ngcontent-%COMP%]:after{opacity:.4;animation-direction:reverse;border-radius:30px}@keyframes _ngcontent-%COMP%_bubble-rise-inside{0%{bottom:2%;opacity:0;transform:scale(.5)}15%{opacity:.7}85%{opacity:.4}to{bottom:96%;opacity:0;transform:scale(1.1)}}.bubbles-inside[_ngcontent-%COMP%]{position:absolute;left:0;bottom:0;width:100%;height:100%;z-index:10;pointer-events:none}.bubbles-inside[_ngcontent-%COMP%] .bubble-dark[_ngcontent-%COMP%]{position:absolute;border-radius:50%;background:var(--color-bg, rgba(20, 20, 20, .55));width:var(--size, 3px);height:var(--size, 3px);opacity:0;bottom:2%;left:var(--left, 30%);animation:_ngcontent-%COMP%_bubble-rise-inside var(--dur, 1.5s) infinite ease-in;animation-delay:var(--delay, 0s)}.bubbles-inside[_ngcontent-%COMP%] .bubble-dark.invisible[_ngcontent-%COMP%]{animation:none;opacity:0}@keyframes _ngcontent-%COMP%_bubble-rise-above{0%{bottom:0;opacity:0;transform:scale(.4)}10%{opacity:.9}70%{opacity:.8}90%{opacity:.3}to{bottom:var(--rise, 80px);opacity:0;transform:scale(1.2)}}.bubbles-above[_ngcontent-%COMP%]{position:absolute;left:0;bottom:0;width:100%;height:100%;z-index:20;pointer-events:none;overflow:visible}.bubbles-above[_ngcontent-%COMP%] .bubble-color[_ngcontent-%COMP%]{position:absolute;border-radius:50%;background:var(--tube-color, #34c759);opacity:0;bottom:0;left:var(--left, 30%);width:var(--size, 3px);height:var(--size, 3px);animation:_ngcontent-%COMP%_bubble-rise-above var(--dur, 1.5s) infinite ease-in;animation-delay:var(--delay, 0s)}.bubbles-above[_ngcontent-%COMP%] .bubble-color.invisible[_ngcontent-%COMP%]{animation:none;opacity:0}.foam[_ngcontent-%COMP%]{position:absolute;bottom:0;left:-1px;width:100%;height:14px;z-index:100;pointer-events:none;overflow:visible;transition:bottom .9s cubic-bezier(.4,0,.2,1)}.foam[_ngcontent-%COMP%] .foam-bubble[_ngcontent-%COMP%]{position:absolute;top:var(--top, 0px);left:var(--left, 50%);width:var(--size, 4px);height:var(--size, 4px);border-radius:50%;background:#fff0;animation:none}.foam.active[_ngcontent-%COMP%] .foam-bubble[_ngcontent-%COMP%]{animation:_ngcontent-%COMP%_foam-pulse var(--dur, 1.5s) ease-in-out infinite;animation-delay:var(--delay, 0s)}@keyframes _ngcontent-%COMP%_foam-pulse{0%{background:#fff0;transform:scale(.5)}30%{background:#ffffff73;transform:scale(1)}60%{background:#ffffff40;transform:scale(1.1)}to{background:#fff0;transform:scale(.6)}}:root:not([data-theme=dark])[_nghost-%COMP%] .tube[_ngcontent-%COMP%], :root:not([data-theme=dark]) [_nghost-%COMP%] .tube[_ngcontent-%COMP%]{background-color:#ddd}:root:not([data-theme=dark])[_nghost-%COMP%] .tube[_ngcontent-%COMP%]:after, :root:not([data-theme=dark]) [_nghost-%COMP%] .tube[_ngcontent-%COMP%]:after{background:#ddd}@media(max-width:768px){[_nghost-%COMP%]{top:calc(3.25rem + 80px);left:calc(.75rem + 10px)}.tube[_ngcontent-%COMP%]{height:75px;width:20px}}'],changeDetection:0})};var un=["threadSearchInput"],hn=["*"];function fn(n,t){if(n&1){let e=b();r(0,"button",28),u("click",function(){m(e);let o=c();return p(o.toggle())}),r(1,"mat-icon"),d(2,"menu"),a()(),r(3,"button",29),u("click",function(){m(e);let o=c();return p(o.createNewThread())}),r(4,"mat-icon",10),d(5,"play_circle"),a()()}if(n&2){let e=c();l(3),x("disabled",!e.selectedProjectName())}}function bn(n,t){if(n&1){let e=b();r(0,"div",12)(1,"a",30),u("click",function(o){return m(e),c().openMissionControl(),p(o.preventDefault())}),r(2,"mat-icon"),d(3,"rocket_launch"),a(),r(4,"span",31),d(5,"Task Control"),a()()()}}function vn(n,t){if(n&1){let e=b();r(0,"div",15)(1,"mat-icon",32),d(2,"search"),a(),r(3,"input",33,0),he("ngModelChange",function(o){m(e);let s=c();return ue(s.threadSearchQuery,o)||(s.threadSearchQuery=o),p(o)}),u("input",function(){m(e);let o=c();return p(o.onThreadSearchInput())}),a(),r(5,"button",34),u("click",function(){m(e);let o=c();return p(o.closeThreadSearch())}),r(6,"mat-icon"),d(7,"close"),a()()()}if(n&2){let e=c();l(3),_e("ngModel",e.threadSearchQuery)}}function Cn(n,t){if(n&1){let e=b();r(0,"div",16)(1,"mat-icon",23),d(2,"forum"),a(),r(3,"span",24),d(4,"Threads"),a(),r(5,"button",35),u("click",function(o){m(e);let s=c();return p(s.toggleThreadSearch(o))}),r(6,"mat-icon"),d(7,"search"),a()()()}}function xn(n,t){n&1&&(r(0,"mat-icon",22),d(1,"keyboard_arrow_up"),a())}function yn(n,t){n&1&&(r(0,"mat-icon",23),d(1,"hub"),a())}function Pn(n,t){n&1&&(r(0,"mat-icon",22),d(1,"keyboard_arrow_up"),a())}function Mn(n,t){n&1&&(r(0,"mat-icon",23),d(1,"tune"),a())}function Sn(n,t){n&1&&(r(0,"div",37)(1,"div",41),V(2,"app-options-panel",42),a()())}function wn(n,t){if(n&1){let e=b();r(0,"div",36)(1,"a",21),u("click",function(o){return m(e),c(3).openProjectConfig(),o.preventDefault(),p(o.stopPropagation())}),r(2,"mat-icon",23),d(3,"settings_applications"),a(),r(4,"span",24),d(5,"Project Configuration"),a()()()}}function Tn(n,t){n&1&&(r(0,"div",36)(1,"a",43)(2,"mat-icon",23),d(3,"settings_applications"),a(),r(4,"span",24),d(5,"Project config (No project)"),a()()())}function On(n,t){if(n&1&&g(0,wn,6,0,"div",36)(1,Tn,6,0,"div",36),n&2){let e=c(2);_(e.selectedProjectName()?0:1)}}function kn(n,t){if(n&1){let e=b();r(0,"div",36)(1,"a",21),u("click",function(o){return m(e),c(2).openAgents(),o.preventDefault(),p(o.stopPropagation())}),r(2,"mat-icon",23),d(3,"smart_toy"),a(),r(4,"span",24),d(5,"Agents"),a()()()}}function En(n,t){n&1&&(r(0,"div",36)(1,"a",43)(2,"mat-icon",23),d(3,"smart_toy"),a(),r(4,"span",24),d(5,"Agents (No project)"),a()()())}function Dn(n,t){if(n&1){let e=b();r(0,"div",36)(1,"a",21),u("click",function(o){return m(e),c(2).openPrompts(),o.preventDefault(),p(o.stopPropagation())}),r(2,"mat-icon",23),d(3,"description"),a(),r(4,"span",24),d(5,"Prompts"),a()()()}}function Nn(n,t){n&1&&(r(0,"div",36)(1,"a",43)(2,"mat-icon",23),d(3,"description"),a(),r(4,"span",24),d(5,"Prompts (No project)"),a()()())}function jn(n,t){if(n&1){let e=b();r(0,"div",36)(1,"a",21),u("click",function(o){return m(e),c(2).openSchedulers(),o.preventDefault(),p(o.stopPropagation())}),r(2,"mat-icon",23),d(3,"schedule"),a(),r(4,"span",24),d(5,"Schedulers"),a()()()}}function Vn(n,t){n&1&&(r(0,"div",36)(1,"a",43)(2,"mat-icon",23),d(3,"schedule"),a(),r(4,"span",24),d(5,"Schedulers (No project)"),a()()())}function Fn(n,t){n&1&&(r(0,"mat-icon",22),d(1,"keyboard_arrow_up"),a())}function In(n,t){n&1&&(r(0,"mat-icon",23),d(1,"rocket_launch"),a())}function zn(n,t){if(n&1&&(r(0,"div",37),V(1,"app-preview-panel",44),a()),n&2){let e=c(3);l(),x("projectName",e.selectedProjectName())}}function An(n,t){if(n&1){let e=b();r(0,"div",36)(1,"a",21),u("click",function(o){return m(e),c(2).toggleSection("preview"),o.preventDefault(),p(o.stopPropagation())}),g(2,Fn,2,0,"mat-icon",22)(3,In,2,0,"mat-icon",23),r(4,"span",24),d(5,"Preview Server"),a()(),g(6,zn,2,1,"div",37),a()}if(n&2){let e=c(2);C("expanded",e.expandedSections.preview),l(),C("active",e.expandedSections.preview),l(),_(e.expandedSections.preview?2:3),l(4),_(e.expandedSections.preview?6:-1)}}function Ln(n,t){if(n&1){let e=b();r(0,"div",25)(1,"div",36)(2,"a",21),u("click",function(o){return m(e),c().toggleSection("config"),p(o.preventDefault())}),g(3,Pn,2,0,"mat-icon",22)(4,Mn,2,0,"mat-icon",23),r(5,"span",24),d(6,"Preferences"),a()(),g(7,Sn,3,0,"div",37),a(),r(8,"div",36)(9,"a",21),u("click",function(o){return m(e),c().openTokenUsage(),o.preventDefault(),p(o.stopPropagation())}),r(10,"mat-icon",23),d(11,"data_usage"),a(),r(12,"span",24),d(13,"Token Usage"),a()()(),r(14,"div",36)(15,"a",21),u("click",function(o){return m(e),c().openUserConfig(),o.preventDefault(),p(o.stopPropagation())}),r(16,"mat-icon",23),d(17,"manage_accounts"),a(),r(18,"span",24),d(19,"User Configuration"),a()()(),g(20,On,2,1),g(21,kn,6,0,"div",36)(22,En,6,0,"div",36),g(23,Dn,6,0,"div",36)(24,Nn,6,0,"div",36),g(25,jn,6,0,"div",36)(26,Vn,6,0,"div",36),g(27,An,7,6,"div",38),r(28,"div",36)(29,"a",39),V(30,"img",40),r(31,"span",24),d(32,"Contribute on GitHub"),a()()()()}if(n&2){let e=c();l(),C("expanded",e.expandedSections.config),l(),C("active",e.expandedSections.config),l(),_(e.expandedSections.config?3:4),l(4),_(e.expandedSections.config?7:-1),l(13),_(e.isAdmin?20:-1),l(),_(e.selectedProjectName()?21:22),l(2),_(e.selectedProjectName()?23:24),l(2),_(e.selectedProjectName()?25:26),l(2),_(e.hasPreviewConfig()?27:-1),l(3),le("src","CODAY-Logo.png",ne)}}function Rn(n,t){if(n&1){let e=b();r(0,"div",27)(1,"mat-icon",45),d(2,"warning"),a(),r(3,"span",46),d(4),a(),r(5,"button",47),u("click",function(){m(e);let o=c();return p(o.configErrorMessage="")}),r(6,"mat-icon"),d(7,"close"),a()()()}if(n&2){let e=c();l(4),y(e.configErrorMessage)}}var yt=class n{destroy$=new ze;sidenavStateChange=new ee;drawerOpen=!1;breakpointObserver=v(We);isDesktop=w(this.breakpointObserver.observe("(min-width: 1400px)").pipe(K(t=>t.matches)),{initialValue:!1});userOpenPreference=P(!0);isOpen=S(()=>this.userOpenPreference());isAdmin=!1;configErrorMessage="";expandedSections={config:!1,preview:!1,settings:!1};isThreadSearchActive=!1;threadSearchQuery="";threadSearchInput;dialog=v(Ye);configApi=v(ut);projectStateService=v(ve);projectApi=v(be);router=v(fe);preferences=v(et);threadStateService=v(H);projects=w(this.projectStateService.projectList$);selectedProject=w(this.projectStateService.selectedProject$);selectedProjectName=w(this.projectStateService.selectedProject$.pipe(K(t=>t?.name)));isProjectVolatile=w(this.projectStateService.selectedProject$.pipe(K(t=>t?.config?.volatile||!1)));forcedProject=w(this.projectStateService.forcedProject$);hasPreviewConfig=w(this.projectStateService.selectedProject$.pipe(K(t=>{let e=t?.config?.preview;return Array.isArray(e)&&!!e.length})),{initialValue:!1});ngOnInit(){let t=window.innerWidth>=1024,e=this.preferences.getPreference("sidenavOpen",t);this.userOpenPreference.set(e??t),this.configApi.getUserConfig().pipe($(this.destroy$)).subscribe({next:i=>{this.isAdmin=i.groups?.includes("CODAY_ADMIN")??!1,console.log("[SIDENAV] User admin status:",this.isAdmin)},error:i=>{console.error("[SIDENAV] Error loading user config for roles:",i),this.isAdmin=!1}})}ngOnDestroy(){this.destroy$.next(),this.destroy$.complete()}toggle(){let t=!this.userOpenPreference();this.userOpenPreference.set(t),this.saveSidenavState(t),this.sidenavStateChange.emit(t)}close(){this.userOpenPreference()&&(this.userOpenPreference.set(!1),this.saveSidenavState(!1),this.sidenavStateChange.emit(!1))}saveSidenavState(t){this.preferences.setPreference("sidenavOpen",t)}openTokenUsage(){this.configErrorMessage="",this.router.navigate(["/token-usage"])}openUserConfig(){console.log("[SIDENAV] openUserConfig called"),this.configErrorMessage="",this.configApi.getUserConfig().pipe($(this.destroy$)).subscribe({next:t=>{console.log("[SIDENAV] User config loaded, opening dialog"),this.dialog.open(Ne,{data:{configType:"user",initialContent:JSON.stringify(t,null,2)}}).afterClosed().subscribe(i=>{i&&this.saveUserConfig(i)})},error:t=>{console.error("[SIDENAV] Error loading user config:",t),this.configErrorMessage=t?.error?.error||"Failed to load user configuration"}})}saveUserConfig(t){this.configApi.updateUserConfig(t).pipe($(this.destroy$)).subscribe({next:e=>{console.log("[SIDENAV] User config saved successfully")},error:e=>{console.error("[SIDENAV] Error saving user config:",e),this.configErrorMessage=e?.error?.error||"Failed to save user configuration"}})}openProjectConfig(){let t=this.selectedProjectName();if(!t){console.error("[SIDENAV] No project selected"),this.configErrorMessage="No project selected. Please select a project first.";return}this.configErrorMessage="",this.projectApi.getProjectConfig(t).pipe($(this.destroy$)).subscribe({next:e=>{console.log("[SIDENAV] Project config loaded, opening dialog"),this.dialog.open(Ne,{data:{configType:"project",projectName:t,initialContent:JSON.stringify(e,null,2)}}).afterClosed().subscribe(o=>{o&&this.saveProjectConfig(t,o)})},error:e=>{console.error("[SIDENAV] Error loading project config:",e),this.configErrorMessage=e?.error?.error||"Failed to load project configuration"}})}saveProjectConfig(t,e){this.projectApi.updateProjectConfig(t,e).pipe($(this.destroy$)).subscribe({next:i=>{console.log("[SIDENAV] Project config saved successfully")},error:i=>{console.error("[SIDENAV] Error saving project config:",i),this.configErrorMessage=i?.error?.error||"Failed to save project configuration"}})}requireProjectSelection(t){return this.selectedProjectName()?!0:(console.error(`[SIDENAV] No project selected, cannot ${t}`),this.configErrorMessage="Please select a project first",!1)}openAgents(){if(!this.requireProjectSelection("open agents"))return;let t=this.selectedProjectName();this.router.navigate(["project",t,"agents"])}openPrompts(){if(!this.requireProjectSelection("open prompts"))return;let t=this.selectedProjectName();this.router.navigate(["project",t,"prompts"])}openSchedulers(){if(!this.requireProjectSelection("open schedulers"))return;let t=this.selectedProjectName();this.router.navigate(["project",t,"schedulers"])}toggleSection(t){let e=this.expandedSections[t];t==="settings"?this.expandedSections[t]=!e:(["config","preview"].forEach(o=>{this.expandedSections[o]=!1}),this.expandedSections[t]=!e)}navigateToHome(){console.log("[SIDENAV] Navigating to home (project selection)"),this.projectStateService.clearSelection(),this.router.navigate(["/"])}openMissionControl(){let t=this.selectedProjectName();t&&(this.router.navigate(["project",t,"tasks"]),this.close())}createNewThread(){let t=this.selectedProjectName();if(!t){console.error("[SIDENAV] No project selected, cannot create new thread"),this.configErrorMessage="Please select a project first";return}console.log("[SIDENAV] Navigating to welcome view for new thread"),this.threadStateService.clearSelection(),this.router.navigate(["project",t])}onThreadSelectedOnMobile(){this.isDesktop()||this.close()}toggleThreadSearch(t){t.stopPropagation(),this.isThreadSearchActive=!0,this.threadSearchQuery="",setTimeout(()=>{this.threadSearchInput?.nativeElement.focus()},0)}closeThreadSearch(){this.isThreadSearchActive=!1,this.threadSearchQuery=""}onThreadSearchInput(){}onThreadSearchModeChange(t){t||this.closeThreadSearch()}static \u0275fac=function(e){return new(e||n)};static \u0275cmp=N({type:n,selectors:[["app-sidenav"]],viewQuery:function(e,i){if(e&1&&me(un,5),e&2){let o;pe(o=ge())&&(i.threadSearchInput=o.first)}},inputs:{drawerOpen:"drawerOpen"},outputs:{sidenavStateChange:"sidenavStateChange"},ngContentSelectors:hn,decls:36,vars:24,consts:[["threadSearchInput",""],[1,"sidenav-container",3,"hasBackdrop"],["mode","push","position","start",1,"app-sidenav",3,"closed","opened","disableClose"],[1,"sidenav-header"],["mat-icon-button","","title","Close menu",3,"click"],["alt","coday","title","Go to project selection","role","button","tabindex","0",1,"sidenav-logo","clickable",3,"click","keydown.enter","keydown.space"],[1,"header-title-section"],[1,"sidenav-title"],[1,"new-thread-section"],["role","button","tabindex","0",1,"new-thread-link",3,"click"],["fontSet","material-icons-outlined"],[1,"new-thread-text"],[1,"mission-control-section"],[1,"sidenav-sections"],[1,"section-container","expanded"],[1,"search-header"],[1,"section-toggle","active","threads-header"],[1,"section-content","threads"],[1,"sidenav-thread-selector",3,"searchModeChange","threadSelected","searchMode","searchQuery"],[1,"sidenav-nav"],[1,"section-container","settings-group"],["role","button","tabindex","0",1,"section-toggle",3,"click"],[1,"arrow-icon","expanded"],[1,"section-icon"],[1,"section-label"],[1,"section-content","settings-content"],[3,"sidenavOpen"],["role","alert",1,"error-notification"],["mat-icon-button","","title","Menu","type","button",1,"sidenav-toggle-btn",3,"click"],["mat-icon-button","","title","Start a new thread","type","button",1,"sidenav-new-thread-btn",3,"click","disabled"],["role","button","tabindex","0",1,"mission-control-link",3,"click"],[1,"mission-control-text"],[1,"search-icon"],["type","text","placeholder","Search threads...",1,"search-input",3,"ngModelChange","input","ngModel"],["mat-icon-button","","title","Close search","type","button",1,"close-search-btn",3,"click"],["mat-icon-button","","title","Search threads","type","button",1,"search-button",3,"click"],[1,"section-container"],[1,"section-content"],[1,"section-container",3,"expanded"],["href","https://github.com/whoz-oss/coday","target","_blank","rel","noopener noreferrer","title","Contribute on GitHub",1,"section-toggle","contribute-btn"],["alt","Coday",1,"contribute-logo"],[1,"preference-item"],[1,"inline-panel"],["role","button","tabindex","-1","aria-disabled","true",1,"section-toggle","disabled"],[3,"projectName"],[1,"error-icon"],[1,"error-text"],["mat-icon-button","","aria-label","Close error message",1,"error-close",3,"click"]],template:function(e,i){e&1&&(Ue(),g(0,fn,6,1),r(1,"mat-sidenav-container",1)(2,"mat-sidenav",2),u("closed",function(){return i.close()}),r(3,"div",3)(4,"button",4),u("click",function(){return i.close()}),r(5,"mat-icon"),d(6,"chevron_left"),a()(),r(7,"img",5),u("click",function(s){return i.navigateToHome(),s.stopPropagation()})("keydown.enter",function(s){return i.navigateToHome(),s.preventDefault(),s.stopPropagation()})("keydown.space",function(s){return i.navigateToHome(),s.preventDefault(),s.stopPropagation()}),a(),r(8,"div",6)(9,"h2",7),d(10),a()()(),r(11,"div",8)(12,"a",9),u("click",function(s){return i.createNewThread(),s.preventDefault()}),r(13,"mat-icon",10),d(14,"play_circle"),a(),r(15,"span",11),d(16,"Start a new thread"),a()()(),g(17,bn,6,0,"div",12),r(18,"div",13)(19,"div",14),g(20,vn,8,1,"div",15)(21,Cn,8,0,"div",16),r(22,"div",17)(23,"app-thread-selector",18),u("searchModeChange",function(s){return i.onThreadSearchModeChange(s)})("threadSelected",function(){return i.onThreadSelectedOnMobile()}),a()()()(),r(24,"div",19)(25,"div",20)(26,"a",21),u("click",function(s){return i.toggleSection("settings"),s.preventDefault()}),g(27,xn,2,0,"mat-icon",22)(28,yn,2,0,"mat-icon",23),r(29,"span",24),d(30,"Control Center"),a()(),g(31,Ln,33,12,"div",25),a()()(),r(32,"mat-sidenav-content"),Xe(33),a()(),V(34,"app-context-gauge",26),g(35,Rn,8,1,"div",27)),e&2&&(_(!i.isOpen()&&!i.drawerOpen?0:-1),l(),C("sidenav-open",i.isOpen()),x("hasBackdrop",!1),l(),x("opened",i.isOpen())("disableClose",!0),l(5),le("src","CODAY-Logo.png",ne),l(3),y(i.selectedProjectName()),l(7),_(i.selectedProjectName()?17:-1),l(3),_(i.isThreadSearchActive?20:21),l(3),x("searchMode",i.isThreadSearchActive)("searchQuery",i.threadSearchQuery),l(),C("is-admin",i.isAdmin),l(),C("expanded",i.expandedSections.settings),l(),C("active",i.expandedSections.settings),l(),_(i.expandedSections.settings?27:28),l(4),_(i.expandedSections.settings?31:-1),l(),C("sidenav-closed-offset",!i.isOpen()),l(2),x("sidenavOpen",i.isOpen()),l(),_(i.configErrorMessage?35:-1))},dependencies:[Pe,Ce,xe,ye,_t,pt,gt,mt,W,q,G,Q,at,ht,De,Me,Se,Te],styles:["[_nghost-%COMP%]{display:block;width:100%;height:100%;position:relative}.sidenav-container[_ngcontent-%COMP%]{position:fixed;top:0;left:0;right:0;height:100dvh;z-index:1400;transition:width;display:flex}.sidenav-container[_ngcontent-%COMP%] mat-sidenav[_ngcontent-%COMP%]{position:relative!important;transition:width;width:25%;min-width:320px;height:100dvh!important;flex-shrink:0}.sidenav-container[_ngcontent-%COMP%] mat-sidenav[_ngcontent-%COMP%]:not(.mat-drawer-opened){width:0!important;min-width:0;overflow:hidden!important;visibility:hidden!important}.sidenav-container[_ngcontent-%COMP%] mat-sidenav-content[_ngcontent-%COMP%]{width:100%;margin:0!important}@media(min-width:1024px){.sidenav-container[_ngcontent-%COMP%] mat-sidenav-content[_ngcontent-%COMP%]{min-width:0}}[_nghost-%COMP%] .mat-drawer-backdrop{pointer-events:auto}[_nghost-%COMP%] .mat-drawer-content{pointer-events:auto!important;background:transparent!important;overflow:visible!important}[_nghost-%COMP%] .mat-drawer-inner-container{overflow:hidden!important;height:100dvh!important;display:flex!important;flex-direction:column!important}.sidenav-new-thread-btn[_ngcontent-%COMP%], .sidenav-toggle-btn[_ngcontent-%COMP%]{position:fixed!important;z-index:1500!important;width:40px!important;height:40px!important;border-radius:50%!important;background:var(--glass-bg)!important;backdrop-filter:var(--glass-backdrop-blur)!important;-webkit-backdrop-filter:var(--glass-backdrop-blur)!important;border:1px solid var(--glass-border)!important;box-shadow:var(--glass-shadow)!important}.sidenav-toggle-btn[_ngcontent-%COMP%]{top:1rem!important;left:1rem!important}.sidenav-new-thread-btn[_ngcontent-%COMP%]{top:calc(1.5rem + 40px)!important;left:1rem!important}.sidenav-new-thread-btn[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{color:var(--color-primary)!important}.sidenav-new-thread-btn[_ngcontent-%COMP%]:disabled{opacity:.5!important}.sidenav-logo-btn[_ngcontent-%COMP%]{position:fixed!important;bottom:1rem!important;left:1rem!important;z-index:1500!important;width:56px!important;height:56px!important;border-radius:50%!important;border:1px solid var(--glass-border)!important;padding:4px!important;background:var(--glass-bg)!important;backdrop-filter:var(--glass-backdrop-blur)!important;-webkit-backdrop-filter:var(--glass-backdrop-blur)!important;box-shadow:var(--glass-shadow)!important;transition:all .3s cubic-bezier(.4,0,.2,1)!important;cursor:pointer!important;pointer-events:auto!important;display:flex!important;align-items:center!important;justify-content:center!important;overflow:hidden!important;text-decoration:none!important}.sidenav-logo-btn[_ngcontent-%COMP%]:hover{transform:scale(1.08) translateY(-2px)!important;box-shadow:0 16px 48px #0003!important;border-color:var(--color-primary)!important}.sidenav-logo-btn[_ngcontent-%COMP%]:active{transform:scale(.96)!important}.sidenav-logo-btn[_ngcontent-%COMP%] .logo[_ngcontent-%COMP%]{width:48px;height:48px;border-radius:2px}.app-sidenav[_ngcontent-%COMP%]{width:480px;height:100dvh!important;min-height:0!important;position:relative;background:var(--glass-bg);backdrop-filter:var(--glass-backdrop-blur);-webkit-backdrop-filter:var(--glass-backdrop-blur);overflow:hidden!important;display:flex;flex-direction:column}.sidenav-header[_ngcontent-%COMP%]{display:flex;align-items:center;gap:1rem;padding:1.5rem 1rem .5rem;flex-shrink:0}.sidenav-header[_ngcontent-%COMP%] .sidenav-logo[_ngcontent-%COMP%]{width:40px;height:40px;border-radius:4px;flex-shrink:0;transition:all .2s ease}.sidenav-header[_ngcontent-%COMP%] .sidenav-logo.clickable[_ngcontent-%COMP%]{cursor:pointer}.sidenav-header[_ngcontent-%COMP%] .sidenav-logo.clickable[_ngcontent-%COMP%]:hover{transform:scale(1.1);filter:drop-shadow(0 4px 12px rgba(0,0,0,.15))}.sidenav-header[_ngcontent-%COMP%] .sidenav-logo.clickable[_ngcontent-%COMP%]:active{transform:scale(.95)}.sidenav-header[_ngcontent-%COMP%] .sidenav-logo.clickable[_ngcontent-%COMP%]:focus{outline:2px solid var(--color-primary);outline-offset:2px}.sidenav-header[_ngcontent-%COMP%] .header-title-section[_ngcontent-%COMP%]{flex:1;display:flex;align-items:center;min-width:0}.sidenav-header[_ngcontent-%COMP%] .header-title-section[_ngcontent-%COMP%] .sidenav-title[_ngcontent-%COMP%]{margin:0;font-size:1.25rem;font-weight:600;color:var(--color-text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mission-control-section[_ngcontent-%COMP%]{padding:.25rem 1rem .5rem;flex-shrink:0}.mission-control-link[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:.5rem;background:transparent;border:none;text-decoration:none;cursor:pointer;transition:all .2s ease;font-size:.875rem;font-weight:500;color:var(--color-text-secondary);padding:0}.mission-control-link[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{font-size:18px;width:18px;height:18px;color:var(--color-text-secondary);transition:color .2s ease}.mission-control-link[_ngcontent-%COMP%]:hover{color:var(--color-primary);transform:translate(3px)}.mission-control-link[_ngcontent-%COMP%]:hover mat-icon[_ngcontent-%COMP%]{color:var(--color-primary)}.mission-control-link[_ngcontent-%COMP%]:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px;border-radius:4px}.new-thread-section[_ngcontent-%COMP%]{padding:1rem 1rem .5rem;flex-shrink:0}.new-thread-link[_ngcontent-%COMP%]{display:inline-flex;align-items:center;background:transparent;border:none;text-decoration:none;cursor:pointer;transition:all .2s ease;gap:.5rem;font-size:.95rem;font-weight:600;padding:0}.new-thread-link[_ngcontent-%COMP%] .new-thread-text[_ngcontent-%COMP%]{background:linear-gradient(90deg,var(--color-primary, #3b82f6) 0%,var(--color-accent, #8b5cf6) 50%,var(--color-primary, #3b82f6) 100%);background-size:200% auto;background-clip:text;-webkit-background-clip:text;-webkit-text-fill-color:transparent;animation:_ngcontent-%COMP%_gradientShift 3s ease-in-out infinite}.new-thread-link[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{font-size:20px;width:20px;height:20px;color:var(--color-primary);animation:_ngcontent-%COMP%_iconPulse 3s ease-in-out infinite}.new-thread-link[_ngcontent-%COMP%]:hover{transform:translate(4px)}.new-thread-link[_ngcontent-%COMP%]:hover mat-icon[_ngcontent-%COMP%]{animation:_ngcontent-%COMP%_iconPulse 1.5s ease-in-out infinite}.new-thread-link[_ngcontent-%COMP%]:focus{transform:scale(1.1)}@keyframes _ngcontent-%COMP%_gradientShift{0%{background-position:0% center}50%{background-position:100% center}to{background-position:0% center}}@keyframes _ngcontent-%COMP%_iconPulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.8;transform:scale(1.05)}}.sidenav-sections[_ngcontent-%COMP%]{display:flex;flex-direction:column;flex:1;min-height:100px;overflow:hidden}.sidenav-sections[_ngcontent-%COMP%] > .section-container[_ngcontent-%COMP%], .sidenav-sections[_ngcontent-%COMP%] > .section-container.expanded[_ngcontent-%COMP%], .sidenav-sections[_ngcontent-%COMP%] > .section-container[_ngcontent-%COMP%] > .section-content.threads[_ngcontent-%COMP%], .sidenav-sections[_ngcontent-%COMP%] > .section-container[_ngcontent-%COMP%] > .section-content.threads[_ngcontent-%COMP%] > app-thread-selector[_ngcontent-%COMP%]{display:flex!important;flex-direction:column!important;flex:1!important;min-height:0!important;overflow:hidden!important}.sidenav-nav[_ngcontent-%COMP%]{flex-shrink:0;display:flex;flex-direction:column;overflow:hidden;max-height:70%;border-top:1px solid var(--color-border)}.sidenav-nav[_ngcontent-%COMP%] > .settings-group[_ngcontent-%COMP%] > .section-toggle.active[_ngcontent-%COMP%]{border-top:none}.sidenav-nav[_ngcontent-%COMP%] .settings-group[_ngcontent-%COMP%]{display:flex;flex-direction:column;flex:1;min-height:0;overflow:hidden}.sidenav-nav[_ngcontent-%COMP%] .settings-group[_ngcontent-%COMP%] > .section-toggle[_ngcontent-%COMP%]{flex-shrink:0}.sidenav-nav[_ngcontent-%COMP%] .settings-group[_ngcontent-%COMP%] > .section-content.settings-content[_ngcontent-%COMP%]{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden}.settings-group[_ngcontent-%COMP%] > .section-content.settings-content[_ngcontent-%COMP%]{padding:0;border-bottom:1px solid var(--color-border);overflow:visible}.settings-group[_ngcontent-%COMP%] > .section-content.settings-content[_ngcontent-%COMP%] .section-container.expanded[_ngcontent-%COMP%] .section-content[_ngcontent-%COMP%]{max-height:40vh;overflow-y:auto;overflow-x:hidden}.contribute-btn[_ngcontent-%COMP%] .contribute-logo[_ngcontent-%COMP%]{width:20px;height:20px;border-radius:2px;flex-shrink:0}.section-container[_ngcontent-%COMP%]{flex-shrink:0;display:flex;flex-direction:column}.section-container.expanded[_ngcontent-%COMP%] .section-content[_ngcontent-%COMP%]{border-bottom:none}.section-toggle[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.75rem;width:100%;padding:.5rem 1rem;height:50px;text-decoration:none;cursor:pointer;transition:all .2s ease;background:transparent;border:none;border-radius:0;color:var(--color-text);flex-shrink:0}.section-toggle.active[_ngcontent-%COMP%]{border-top:1px solid var(--color-border)}.section-toggle.disabled[_ngcontent-%COMP%]{opacity:.5;cursor:not-allowed;pointer-events:none}.section-toggle[_ngcontent-%COMP%] .arrow-icon[_ngcontent-%COMP%]{font-size:20px;width:20px;height:20px;color:var(--color-text-secondary);transition:transform .2s ease;flex-shrink:0}.section-toggle[_ngcontent-%COMP%] .section-icon[_ngcontent-%COMP%]{font-size:20px;width:20px;height:20px;color:var(--color-text-secondary);flex-shrink:0}.section-toggle[_ngcontent-%COMP%] .section-label[_ngcontent-%COMP%]{flex:1;font-size:.9rem;color:var(--color-text);text-align:left}.section-toggle[_ngcontent-%COMP%] .search-button[_ngcontent-%COMP%]{margin-left:auto;flex-shrink:0}.section-toggle[_ngcontent-%COMP%] .search-button[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{font-size:18px;width:18px;height:18px}.section-toggle[_ngcontent-%COMP%]:hover:not(.disabled){background:var(--color-bg-hover)}.section-toggle[_ngcontent-%COMP%]:active:not(.disabled){transform:scale(.98)}.section-toggle[_ngcontent-%COMP%]:focus-visible{outline:2px solid var(--color-primary);outline-offset:-2px}.search-header[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.5rem;padding:.5rem 1rem;height:50px;background:var(--color-bg-hover);border-top:1px solid var(--color-border);transition:all .2s ease}.search-header[_ngcontent-%COMP%] .search-icon[_ngcontent-%COMP%]{font-size:20px;width:20px;height:20px;color:var(--color-text-secondary);flex-shrink:0}.search-header[_ngcontent-%COMP%] .search-input[_ngcontent-%COMP%]{flex:1;border:none;outline:none;background:transparent;color:var(--color-text);font-size:.9rem;padding:0;min-width:0}.search-header[_ngcontent-%COMP%] .search-input[_ngcontent-%COMP%]::placeholder{color:var(--color-text-muted)}.search-header[_ngcontent-%COMP%] .close-search-btn[_ngcontent-%COMP%]{flex-shrink:0}.search-header[_ngcontent-%COMP%] .close-search-btn[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{font-size:18px;width:18px;height:18px}.section-content[_ngcontent-%COMP%]{padding:.5rem 0 0;animation:_ngcontent-%COMP%_slideDown .2s ease;border-bottom:1px solid var(--color-border);display:flex;flex-direction:column}.section-content.threads[_ngcontent-%COMP%]{padding:0;border-bottom:none;flex:1!important;min-height:0!important;overflow:hidden!important}.section-content.threads[_ngcontent-%COMP%] app-thread-selector[_ngcontent-%COMP%]{flex:1!important;min-height:0!important;overflow:hidden!important;display:flex!important;flex-direction:column!important}@keyframes _ngcontent-%COMP%_slideDown{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.preference-item[_ngcontent-%COMP%]{padding-bottom:1rem;margin-bottom:1rem;border-bottom:1px solid var(--color-border)}.preference-item[_ngcontent-%COMP%]:last-child{margin-bottom:0;padding-bottom:0;border-bottom:none}.preference-item[_ngcontent-%COMP%] .preference-header[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.75rem;margin-bottom:.75rem;padding:0 1rem}.preference-item[_ngcontent-%COMP%] .preference-header[_ngcontent-%COMP%] .item-icon[_ngcontent-%COMP%]{font-size:20px;width:20px;height:20px}.preference-item[_ngcontent-%COMP%] .preference-header[_ngcontent-%COMP%] .item-text[_ngcontent-%COMP%]{font-size:.875rem;font-weight:500;color:var(--color-text)}.preference-item[_ngcontent-%COMP%] .preference-content[_ngcontent-%COMP%]{padding:0 1rem}.error-notification[_ngcontent-%COMP%]{position:fixed;top:5rem;left:50%;transform:translate(-50%);z-index:2000;display:flex;align-items:center;gap:.75rem;background:#ff3b3026;backdrop-filter:var(--glass-backdrop-blur);-webkit-backdrop-filter:var(--glass-backdrop-blur);border:1px solid rgba(255,59,48,.3);border-radius:16px;padding:1rem 1.5rem;box-shadow:var(--glass-shadow);animation:_ngcontent-%COMP%_errorSlideDown .3s cubic-bezier(.4,0,.2,1)}.error-notification[_ngcontent-%COMP%] .error-icon[_ngcontent-%COMP%]{font-size:1.2rem;flex-shrink:0;color:#c00}.error-notification[_ngcontent-%COMP%] .error-text[_ngcontent-%COMP%]{flex:1;color:#c00;font-size:.9rem;font-weight:500}@keyframes _ngcontent-%COMP%_errorSlideDown{0%{opacity:0;transform:translate(-50%,-10px)}to{opacity:1;transform:translate(-50%)}}@media(max-width:480px){.app-sidenav[_ngcontent-%COMP%]{width:320px}.sidenav-toggle-btn[_ngcontent-%COMP%]{top:.75rem!important;left:.75rem!important}.sidenav-new-thread-btn[_ngcontent-%COMP%]{top:calc(1.25rem + 40px)!important;left:.75rem!important}.error-notification[_ngcontent-%COMP%]{left:1rem;right:1rem;transform:none;max-width:calc(100vw - 2rem)}}body.dark[_nghost-%COMP%] .app-sidenav[_ngcontent-%COMP%], body.dark [_nghost-%COMP%] .app-sidenav[_ngcontent-%COMP%], [_ngcontent-%COMP%]:root[data-theme=dark] .app-sidenav[_ngcontent-%COMP%]{background:#242830f2;border-right-color:#b4c8ff17}body.dark[_nghost-%COMP%] .sidenav-header[_ngcontent-%COMP%], body.dark [_nghost-%COMP%] .sidenav-header[_ngcontent-%COMP%], [_ngcontent-%COMP%]:root[data-theme=dark] .sidenav-header[_ngcontent-%COMP%]{background:#242830b3}"]})};export{yt as a};
@@ -1 +1 @@
1
- import{a as D}from"./chunk-KB2ABAWC.js";import{b as B}from"./chunk-VCUQMGKI.js";import{c as x}from"./chunk-6XX7GME4.js";import{s as $,z as k}from"./chunk-VNO76B3S.js";import"./chunk-E6T6QLQT.js";import"./chunk-SPV5SLNS.js";import{a as l}from"./chunk-VMYKE4ZC.js";import"./chunk-AS2L77JV.js";import"./chunk-7OGOI6WM.js";import"./chunk-G5RWG2GK.js";import{Bb as b,Db as s,Fb as m,Lc as T,Pb as P,S as d,Wa as y,ab as h,ca as r,cc as w,fc as I,ga as C,gc as M,ha as _,i as p,jc as R,lb as v,ma as u,mb as A,rb as g,sb as a,t as c,tb as f}from"./chunk-CHEXA6RY.js";var S=()=>[];function F(n,t){if(n&1){let e=b();a(0,"agentos-agent-config-item",4),s("deleteRequested",function(o){C(e);let E=m(2);return _(E.deleteConfig(o))}),f()}n&2&&g("config",t)("platformMode",!0)}function L(n,t){if(n&1&&v(0,F,1,2,"agentos-agent-config-item",3),n&2){let e,i=t.$implicit,o=m();A((e=o.resolveConfig(i.id))?0:-1,e)}}var q=class n{router=r(x);destroyRef=r(u);agentConfigController=r(B);refresh$=new p(void 0);configs$=this.refresh$.pipe(d(()=>this.agentConfigController.listPlatformAgentsAgentConfig(!0)));configItems$=this.configs$.pipe(c(t=>t.map(e=>({id:e.id??"",name:e.name,description:e.description}))));configsById=new Map;constructor(){this.configs$.pipe(l(this.destroyRef)).subscribe(t=>{this.configsById=new Map(t.map(e=>[e.id??"",e]))})}goBack(){this.router.navigate(["/agentos","admin"])}openCreateForm(){this.router.navigate(["/agentos","admin","agent-configs","new"])}deleteConfig(t){this.agentConfigController.deleteAgentConfig(t.id??"").pipe(l(this.destroyRef)).subscribe(()=>this.refresh$.next())}resolveConfig(t){return this.configsById.get(t)??null}static \u0275fac=function(e){return new(e||n)};static \u0275cmp=y({type:n,selectors:[["agentos-platform-agent-configs"]],decls:5,vars:6,consts:[["agentConfigItemTpl",""],["title","Platform Agent Configs","emptyMessage","No platform agent configs defined yet. Add one above.","cardMinWidth","400px",3,"createRequested","items","showCreate","itemTemplate"],["toolbar-start","","icon","arrow_back","title","Back",3,"action"],[3,"config","platformMode"],[3,"deleteRequested","config","platformMode"]],template:function(e,i){if(e&1&&(a(0,"ds-entity-list",1),I(1,"async"),s("createRequested",function(){return i.openCreateForm()}),a(2,"ds-icon-button",2),s("action",function(){return i.goBack()}),f()(),h(3,L,1,1,"ng-template",null,0,R)),e&2){let o=P(4);g("items",M(1,3,i.configItems$)??w(5,S))("showCreate",!0)("itemTemplate",o)}},dependencies:[k,D,$,T],styles:[".platform-agent-configs__back[_ngcontent-%COMP%]{background:none;border:none;padding:0;cursor:pointer;font-size:.875rem;color:var(--color-primary, #007aff);font-family:inherit}.platform-agent-configs__back[_ngcontent-%COMP%]:hover{text-decoration:underline}"],changeDetection:0})};export{q as PlatformAgentConfigsComponent};
1
+ import{a as D}from"./chunk-F7UYEPIO.js";import{b as B}from"./chunk-VCUQMGKI.js";import{c as x}from"./chunk-6XX7GME4.js";import{s as $,z as k}from"./chunk-TTHFWEW7.js";import"./chunk-OO2H5F7U.js";import"./chunk-SPV5SLNS.js";import{a as l}from"./chunk-VMYKE4ZC.js";import"./chunk-AS2L77JV.js";import"./chunk-7OGOI6WM.js";import"./chunk-G5RWG2GK.js";import{Bb as b,Db as s,Fb as m,Lc as T,Pb as P,S as d,Wa as y,ab as h,ca as r,cc as w,fc as I,ga as C,gc as M,ha as _,i as p,jc as R,lb as v,ma as u,mb as A,rb as g,sb as a,t as c,tb as f}from"./chunk-CHEXA6RY.js";var S=()=>[];function F(n,t){if(n&1){let e=b();a(0,"agentos-agent-config-item",4),s("deleteRequested",function(o){C(e);let E=m(2);return _(E.deleteConfig(o))}),f()}n&2&&g("config",t)("platformMode",!0)}function L(n,t){if(n&1&&v(0,F,1,2,"agentos-agent-config-item",3),n&2){let e,i=t.$implicit,o=m();A((e=o.resolveConfig(i.id))?0:-1,e)}}var q=class n{router=r(x);destroyRef=r(u);agentConfigController=r(B);refresh$=new p(void 0);configs$=this.refresh$.pipe(d(()=>this.agentConfigController.listPlatformAgentsAgentConfig(!0)));configItems$=this.configs$.pipe(c(t=>t.map(e=>({id:e.id??"",name:e.name,description:e.description}))));configsById=new Map;constructor(){this.configs$.pipe(l(this.destroyRef)).subscribe(t=>{this.configsById=new Map(t.map(e=>[e.id??"",e]))})}goBack(){this.router.navigate(["/agentos","admin"])}openCreateForm(){this.router.navigate(["/agentos","admin","agent-configs","new"])}deleteConfig(t){this.agentConfigController.deleteAgentConfig(t.id??"").pipe(l(this.destroyRef)).subscribe(()=>this.refresh$.next())}resolveConfig(t){return this.configsById.get(t)??null}static \u0275fac=function(e){return new(e||n)};static \u0275cmp=y({type:n,selectors:[["agentos-platform-agent-configs"]],decls:5,vars:6,consts:[["agentConfigItemTpl",""],["title","Platform Agent Configs","emptyMessage","No platform agent configs defined yet. Add one above.","cardMinWidth","400px",3,"createRequested","items","showCreate","itemTemplate"],["toolbar-start","","icon","arrow_back","title","Back",3,"action"],[3,"config","platformMode"],[3,"deleteRequested","config","platformMode"]],template:function(e,i){if(e&1&&(a(0,"ds-entity-list",1),I(1,"async"),s("createRequested",function(){return i.openCreateForm()}),a(2,"ds-icon-button",2),s("action",function(){return i.goBack()}),f()(),h(3,L,1,1,"ng-template",null,0,R)),e&2){let o=P(4);g("items",M(1,3,i.configItems$)??w(5,S))("showCreate",!0)("itemTemplate",o)}},dependencies:[k,D,$,T],styles:[".platform-agent-configs__back[_ngcontent-%COMP%]{background:none;border:none;padding:0;cursor:pointer;font-size:.875rem;color:var(--color-primary, #007aff);font-family:inherit}.platform-agent-configs__back[_ngcontent-%COMP%]:hover{text-decoration:underline}"],changeDetection:0})};export{q as PlatformAgentConfigsComponent};
@@ -1 +1 @@
1
- import{a as N}from"./chunk-NMKUE2VW.js";import{a as U}from"./chunk-GIIRKWUO.js";import{c as F,d as $}from"./chunk-6XX7GME4.js";import"./chunk-2PWIGCN2.js";import"./chunk-DFU2RM36.js";import{y as z,z as J}from"./chunk-VNO76B3S.js";import"./chunk-E6T6QLQT.js";import{d as K}from"./chunk-BTOJ27OO.js";import"./chunk-SPV5SLNS.js";import{a as L,c as S}from"./chunk-VMYKE4ZC.js";import{a as W,b as A}from"./chunk-AS2L77JV.js";import"./chunk-7OGOI6WM.js";import{b as B}from"./chunk-TASSC2XX.js";import{O as V}from"./chunk-G5RWG2GK.js";import{B as x,Bb as k,Db as h,Fb as b,Ka as v,Pb as E,Tb as O,Wa as D,a as c,ab as I,b as p,ca as m,cc as T,ga as C,ha as j,jc as q,ma as R,mc as w,rb as P,sb as d,tb as _,ub as M}from"./chunk-CHEXA6RY.js";var ee=()=>[];function te(u,t){if(u&1){let o=k();d(0,"div",5)(1,"ds-entity-card",6),h("selected",function(r){C(o);let n=b();return j(n.onItemSelected(r))}),_(),d(2,"button",7),h("click",function(r){let n=C(o).$implicit,f=b();return r.stopPropagation(),j(f.onDeleteRequested(n.id))}),d(3,"mat-icon"),O(4,"close"),_()()()}if(u&2){let o=t.$implicit;v(),P("id",o.id)("name",o.name)("description",o.description)("badges",o.badges??T(4,ee))}}var g="__",Y=class u{router=m(F);projectStateService=m(B);dialog=m(K);destroyRef=m(R);notification=m(U);projects=S(this.projectStateService.projectList$);forcedProject=S(this.projectStateService.forcedProject$,{initialValue:null});projectItems=w(()=>{let t=this.projects();if(!t)return[];let o=t.filter(e=>!e.name.includes(g)),a=t.filter(e=>e.name.includes(g)),r=new Set(o.map(e=>e.name)),n=e=>e.split(g)[0]??null,f=new Set(a.map(e=>n(e.name)).filter(e=>e!==null&&r.has(e))),l=[],G=[...f].sort((e,i)=>e.localeCompare(i));for(let e of G){let i=o.find(s=>s.name===e);l.push(p(c({},this.toEntityListItem(i)),{groupKey:e,groupLabel:e}));let Z=a.filter(s=>n(s.name)===e).sort((s,y)=>s.name.localeCompare(y.name));for(let s of Z){let y=s.name.slice(e.length+g.length);l.push(p(c({},this.toEntityListItem(s)),{name:y,description:s.name,groupKey:e,groupLabel:e}))}}let H=[...o].filter(e=>!f.has(e.name)&&!e.volatile).sort((e,i)=>e.name.localeCompare(i.name));for(let e of H)l.push(p(c({},this.toEntityListItem(e)),{groupKey:"__standalone__",groupLabel:"Projects"}));let Q=[...o].filter(e=>!f.has(e.name)&&e.volatile).sort((e,i)=>e.name.localeCompare(i.name));for(let e of Q)l.push(p(c({},this.toEntityListItem(e)),{groupKey:"__volatile__",groupLabel:"Temporary"}));let X=a.filter(e=>{let i=n(e.name);return i!==null&&!r.has(i)}).sort((e,i)=>e.name.localeCompare(i.name));for(let e of X)l.push(p(c({},this.toEntityListItem(e)),{groupKey:"__orphaned__",groupLabel:"Orphaned worktrees"}));return l});showCreateButton=w(()=>!this.forcedProject());constructor(){}onItemSelected(t){this.projectStateService.selectProject(t),this.router.navigate(["project",t])}onCreateRequested(){this.router.navigate(["project","new"])}onDeleteRequested(t){let o=t.includes(g);this.dialog.open(N,{width:"400px",panelClass:"confirm-dialog-panel",data:c({title:"Delete project",message:`This will remove the project "${t}" from Coday and archive its configuration. The project source code on disk is not affected.`,confirmLabel:"Delete",cancelLabel:"Cancel",isDestructive:!0},o?{checkboxLabel:"Also remove git worktree from disk"}:{})}).afterClosed().pipe(x(r=>r?.confirmed===!0),L(this.destroyRef)).subscribe(r=>{this.notification.info("Deleting project\u2026"),this.projectStateService.deleteProject(t,r.checkboxChecked).pipe(L(this.destroyRef)).subscribe({next:()=>{this.notification.success(`Project "${t}" deleted`),this.router.url.includes(`/project/${encodeURIComponent(t)}`)&&this.router.navigate(["/"])},error:n=>{console.error("[PROJECT-LIST] Failed to delete project:",n),this.notification.error(n?.error?.error??"Failed to delete project")}})})}toEntityListItem(t){return{id:t.name,name:t.name,badges:t.volatile?[{label:"temp",variant:"warning"}]:[]}}static \u0275fac=function(o){return new(o||u)};static \u0275cmp=D({type:u,selectors:[["app-project-selection"]],decls:6,vars:4,consts:[["projectCard",""],[1,"project-page-layout"],["title","Projects","contentMaxWidth","1400px","searchPlaceholder","Filter projects\u2026","emptyMessage","No projects found.",3,"itemSelected","createRequested","items","itemTemplate","showCreate","autoFocusSearch"],["toolbar-start","","routerLink","/","title","Back to tasks",1,"project-list__logo"],["src","CODAY-Logo.png","alt","Coday"],[1,"project-card-wrapper"],[3,"selected","id","name","description","badges"],["mat-icon-button","","title","Delete project",1,"project-card-wrapper__delete",3,"click"]],template:function(o,a){if(o&1&&(d(0,"div",1)(1,"ds-entity-list",2),h("itemSelected",function(n){return a.onItemSelected(n)})("createRequested",function(){return a.onCreateRequested()}),d(2,"a",3),M(3,"img",4),_()()(),I(4,te,5,5,"ng-template",null,0,q)),o&2){let r=E(5);v(),P("items",a.projectItems())("itemTemplate",r)("showCreate",a.showCreateButton())("autoFocusSearch",!0)}},dependencies:[J,z,A,W,V,$],styles:["[_nghost-%COMP%]{display:block;width:100%;min-height:100vh;background:var(--color-bg);overflow-y:auto}.project-page-layout[_ngcontent-%COMP%]{display:flex;flex-direction:column;width:100%}.project-list__logo[_ngcontent-%COMP%]{display:flex;align-items:center;flex-shrink:0;border-radius:4px;opacity:.85;transition:opacity .15s ease;cursor:pointer}.project-list__logo[_ngcontent-%COMP%]:hover{opacity:1}.project-list__logo[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{width:40px;height:40px;object-fit:contain;border-radius:4px}.project-card-wrapper[_ngcontent-%COMP%]{position:relative}.project-card-wrapper__delete[_ngcontent-%COMP%]{position:absolute;top:4px;right:4px;width:28px;height:28px;line-height:28px;padding:0;opacity:0;transition:opacity .15s ease;color:var(--color-text-secondary, #6e6e73)}.project-card-wrapper__delete[_ngcontent-%COMP%] .mat-icon[_ngcontent-%COMP%]{font-size:16px;width:16px;height:16px}.project-card-wrapper__delete[_ngcontent-%COMP%]:hover{color:var(--color-error, #ff3b30)}.project-card-wrapper[_ngcontent-%COMP%]:hover .project-card-wrapper__delete[_ngcontent-%COMP%]{opacity:1}"]})};export{Y as ProjectListComponent};
1
+ import{a as N}from"./chunk-CLTMZI2I.js";import{a as U}from"./chunk-GIIRKWUO.js";import{c as F,d as $}from"./chunk-6XX7GME4.js";import"./chunk-2PWIGCN2.js";import"./chunk-KSZNM45C.js";import{y as z,z as J}from"./chunk-TTHFWEW7.js";import"./chunk-OO2H5F7U.js";import{d as K}from"./chunk-BTOJ27OO.js";import"./chunk-SPV5SLNS.js";import{a as L,c as S}from"./chunk-VMYKE4ZC.js";import{a as W,b as A}from"./chunk-AS2L77JV.js";import"./chunk-7OGOI6WM.js";import{b as B}from"./chunk-JVZA4C5U.js";import{O as V}from"./chunk-G5RWG2GK.js";import{B as x,Bb as k,Db as h,Fb as b,Ka as v,Pb as E,Tb as O,Wa as D,a as c,ab as I,b as p,ca as m,cc as T,ga as C,ha as j,jc as q,ma as R,mc as w,rb as P,sb as d,tb as _,ub as M}from"./chunk-CHEXA6RY.js";var ee=()=>[];function te(u,t){if(u&1){let o=k();d(0,"div",5)(1,"ds-entity-card",6),h("selected",function(r){C(o);let n=b();return j(n.onItemSelected(r))}),_(),d(2,"button",7),h("click",function(r){let n=C(o).$implicit,f=b();return r.stopPropagation(),j(f.onDeleteRequested(n.id))}),d(3,"mat-icon"),O(4,"close"),_()()()}if(u&2){let o=t.$implicit;v(),P("id",o.id)("name",o.name)("description",o.description)("badges",o.badges??T(4,ee))}}var g="__",Y=class u{router=m(F);projectStateService=m(B);dialog=m(K);destroyRef=m(R);notification=m(U);projects=S(this.projectStateService.projectList$);forcedProject=S(this.projectStateService.forcedProject$,{initialValue:null});projectItems=w(()=>{let t=this.projects();if(!t)return[];let o=t.filter(e=>!e.name.includes(g)),a=t.filter(e=>e.name.includes(g)),r=new Set(o.map(e=>e.name)),n=e=>e.split(g)[0]??null,f=new Set(a.map(e=>n(e.name)).filter(e=>e!==null&&r.has(e))),l=[],G=[...f].sort((e,i)=>e.localeCompare(i));for(let e of G){let i=o.find(s=>s.name===e);l.push(p(c({},this.toEntityListItem(i)),{groupKey:e,groupLabel:e}));let Z=a.filter(s=>n(s.name)===e).sort((s,y)=>s.name.localeCompare(y.name));for(let s of Z){let y=s.name.slice(e.length+g.length);l.push(p(c({},this.toEntityListItem(s)),{name:y,description:s.name,groupKey:e,groupLabel:e}))}}let H=[...o].filter(e=>!f.has(e.name)&&!e.volatile).sort((e,i)=>e.name.localeCompare(i.name));for(let e of H)l.push(p(c({},this.toEntityListItem(e)),{groupKey:"__standalone__",groupLabel:"Projects"}));let Q=[...o].filter(e=>!f.has(e.name)&&e.volatile).sort((e,i)=>e.name.localeCompare(i.name));for(let e of Q)l.push(p(c({},this.toEntityListItem(e)),{groupKey:"__volatile__",groupLabel:"Temporary"}));let X=a.filter(e=>{let i=n(e.name);return i!==null&&!r.has(i)}).sort((e,i)=>e.name.localeCompare(i.name));for(let e of X)l.push(p(c({},this.toEntityListItem(e)),{groupKey:"__orphaned__",groupLabel:"Orphaned worktrees"}));return l});showCreateButton=w(()=>!this.forcedProject());constructor(){}onItemSelected(t){this.projectStateService.selectProject(t),this.router.navigate(["project",t])}onCreateRequested(){this.router.navigate(["project","new"])}onDeleteRequested(t){let o=t.includes(g);this.dialog.open(N,{width:"400px",panelClass:"confirm-dialog-panel",data:c({title:"Delete project",message:`This will remove the project "${t}" from Coday and archive its configuration. The project source code on disk is not affected.`,confirmLabel:"Delete",cancelLabel:"Cancel",isDestructive:!0},o?{checkboxLabel:"Also remove git worktree from disk"}:{})}).afterClosed().pipe(x(r=>r?.confirmed===!0),L(this.destroyRef)).subscribe(r=>{this.notification.info("Deleting project\u2026"),this.projectStateService.deleteProject(t,r.checkboxChecked).pipe(L(this.destroyRef)).subscribe({next:()=>{this.notification.success(`Project "${t}" deleted`),this.router.url.includes(`/project/${encodeURIComponent(t)}`)&&this.router.navigate(["/"])},error:n=>{console.error("[PROJECT-LIST] Failed to delete project:",n),this.notification.error(n?.error?.error??"Failed to delete project")}})})}toEntityListItem(t){return{id:t.name,name:t.name,badges:t.volatile?[{label:"temp",variant:"warning"}]:[]}}static \u0275fac=function(o){return new(o||u)};static \u0275cmp=D({type:u,selectors:[["app-project-selection"]],decls:6,vars:4,consts:[["projectCard",""],[1,"project-page-layout"],["title","Projects","contentMaxWidth","1400px","searchPlaceholder","Filter projects\u2026","emptyMessage","No projects found.",3,"itemSelected","createRequested","items","itemTemplate","showCreate","autoFocusSearch"],["toolbar-start","","routerLink","/","title","Back to tasks",1,"project-list__logo"],["src","CODAY-Logo.png","alt","Coday"],[1,"project-card-wrapper"],[3,"selected","id","name","description","badges"],["mat-icon-button","","title","Delete project",1,"project-card-wrapper__delete",3,"click"]],template:function(o,a){if(o&1&&(d(0,"div",1)(1,"ds-entity-list",2),h("itemSelected",function(n){return a.onItemSelected(n)})("createRequested",function(){return a.onCreateRequested()}),d(2,"a",3),M(3,"img",4),_()()(),I(4,te,5,5,"ng-template",null,0,q)),o&2){let r=E(5);v(),P("items",a.projectItems())("itemTemplate",r)("showCreate",a.showCreateButton())("autoFocusSearch",!0)}},dependencies:[J,z,A,W,V,$],styles:["[_nghost-%COMP%]{display:block;width:100%;min-height:100vh;background:var(--color-bg);overflow-y:auto}.project-page-layout[_ngcontent-%COMP%]{display:flex;flex-direction:column;width:100%}.project-list__logo[_ngcontent-%COMP%]{display:flex;align-items:center;flex-shrink:0;border-radius:4px;opacity:.85;transition:opacity .15s ease;cursor:pointer}.project-list__logo[_ngcontent-%COMP%]:hover{opacity:1}.project-list__logo[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{width:40px;height:40px;object-fit:contain;border-radius:4px}.project-card-wrapper[_ngcontent-%COMP%]{position:relative}.project-card-wrapper__delete[_ngcontent-%COMP%]{position:absolute;top:4px;right:4px;width:28px;height:28px;line-height:28px;padding:0;opacity:0;transition:opacity .15s ease;color:var(--color-text-secondary, #6e6e73)}.project-card-wrapper__delete[_ngcontent-%COMP%] .mat-icon[_ngcontent-%COMP%]{font-size:16px;width:16px;height:16px}.project-card-wrapper__delete[_ngcontent-%COMP%]:hover{color:var(--color-error, #ff3b30)}.project-card-wrapper[_ngcontent-%COMP%]:hover .project-card-wrapper__delete[_ngcontent-%COMP%]{opacity:1}"]})};export{Y as ProjectListComponent};
@@ -1 +1 @@
1
- import{c as M}from"./chunk-6XX7GME4.js";import{A as D,o as I,s as w}from"./chunk-VNO76B3S.js";import{Bb as C,Db as _,Fb as r,Ka as c,Tb as d,Ub as u,Wa as x,ca as b,ga as g,ha as m,lb as f,mb as p,pc as h,qc as s,rb as y,sb as i,ta as v,tb as t}from"./chunk-CHEXA6RY.js";function P(n,o){if(n&1&&(i(0,"span",3),d(1),t()),n&2){let e=r();c(),u(e.config().modelName)}}function k(n,o){if(n&1&&(i(0,"span",4),d(1),t()),n&2){let e=r();c(),u(e.config().description)}}function S(n,o){if(n&1){let e=C();i(0,"span",7),d(1,"Delete?"),t(),i(2,"ds-icon-button",8),_("action",function(){g(e);let l=r();return m(l.onDeleteConfirmed())}),t(),i(3,"ds-icon-button",9),_("action",function(){g(e);let l=r();return m(l.onDeleteCancelled())}),t()}}function E(n,o){if(n&1){let e=C();i(0,"ds-kebab-menu",10),_("itemSelected",function(l){g(e);let A=r();return m(A.onMenuAction(l))}),t()}if(n&2){let e=r();y("items",e.readOnly()?e.readOnlyMenuItems:e.menuItems)}}var O=class n{router=b(M);config=s.required();namespaceId=s(void 0);platformMode=s(!1);readOnly=s(!1);deleteRequested=h();pendingDelete=v(!1);menuItems=[{key:"edit",label:"Edit agent config",icon:"edit"},{key:"inspect",label:"Inspect definition",icon:"search"},{key:"delete",label:"Delete agent config",icon:"delete",variant:"danger"}];readOnlyMenuItems=[{key:"inspect",label:"Inspect definition",icon:"search"}];onMenuAction(o){switch(o){case"edit":this.platformMode()?this.router.navigate(["/agentos","admin","agent-configs",this.config().id,"edit"]):this.router.navigate(["/agentos",this.namespaceId(),"agent-configs",this.config().id,"edit"]);break;case"inspect":this.platformMode()?this.router.navigate(["/agentos","admin","agent-configs",this.config().id,"inspect"]):this.router.navigate(["/agentos",this.namespaceId(),"agent-configs",this.config().id,"inspect"]);break;case"delete":this.pendingDelete.set(!0);break}}onDeleteConfirmed(){this.pendingDelete.set(!1),this.deleteRequested.emit(this.config())}onDeleteCancelled(){this.pendingDelete.set(!1)}static \u0275fac=function(e){return new(e||n)};static \u0275cmp=x({type:n,selectors:[["agentos-agent-config-item"]],inputs:{config:[1,"config"],namespaceId:[1,"namespaceId"],platformMode:[1,"platformMode"],readOnly:[1,"readOnly"]},outputs:{deleteRequested:"deleteRequested"},decls:9,vars:4,consts:[["role","listitem","dsBlueprint","",1,"agent-config-item"],[1,"agent-config-item__body"],[1,"agent-config-item__name"],[1,"agent-config-item__model"],[1,"agent-config-item__description"],[1,"agent-config-item__actions"],[3,"items"],[1,"agent-config-item__confirm-label"],["icon","check","variant","danger","title","Confirm deletion",3,"action"],["icon","close","title","Cancel deletion",3,"action"],[3,"itemSelected","items"]],template:function(e,a){e&1&&(i(0,"div",0)(1,"div",1)(2,"span",2),d(3),t(),f(4,P,2,1,"span",3),f(5,k,2,1,"span",4),t(),i(6,"div",5),f(7,S,4,0)(8,E,1,1,"ds-kebab-menu",6),t()()),e&2&&(c(3),u(a.config().name),c(),p(a.config().modelName?4:-1),c(),p(a.config().description?5:-1),c(2),p(a.pendingDelete()?7:8))},dependencies:[I,D,w],styles:[".agent-config-item[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.5rem;padding:14px 16px;position:relative;border-radius:0;border:1px solid var(--color-divider);background:var(--color-bg);box-shadow:var(--shadow-sm);overflow:visible;transition:border-color .15s ease}.agent-config-item[_ngcontent-%COMP%]:hover{border-color:var(--color-accent)}.agent-config-item__body[_ngcontent-%COMP%]{flex:1;display:flex;flex-direction:column;gap:.2rem;min-width:0}.agent-config-item__name[_ngcontent-%COMP%]{font-size:15px;font-weight:600;color:var(--color-text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.agent-config-item__model[_ngcontent-%COMP%], .agent-config-item__description[_ngcontent-%COMP%]{font-size:13px;color:var(--color-text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.agent-config-item__actions[_ngcontent-%COMP%]{flex-shrink:0;display:flex;align-items:center;gap:.125rem;opacity:0;transition:opacity .15s ease}.agent-config-item[_ngcontent-%COMP%]:hover .agent-config-item__actions[_ngcontent-%COMP%], .agent-config-item[_ngcontent-%COMP%]:focus-within .agent-config-item__actions[_ngcontent-%COMP%]{opacity:1}.agent-config-item[_ngcontent-%COMP%]:has(.agent-config-item__confirm-label) .agent-config-item__actions[_ngcontent-%COMP%]{opacity:1}.agent-config-item__confirm-label[_ngcontent-%COMP%]{font-family:var(--font-heading);font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--red-deep);margin-right:.25rem;white-space:nowrap}"],changeDetection:0})};export{O as a};
1
+ import{c as M}from"./chunk-6XX7GME4.js";import{A as D,o as I,s as w}from"./chunk-TTHFWEW7.js";import{Bb as C,Db as _,Fb as r,Ka as c,Tb as d,Ub as u,Wa as x,ca as b,ga as g,ha as m,lb as f,mb as p,pc as h,qc as s,rb as y,sb as i,ta as v,tb as t}from"./chunk-CHEXA6RY.js";function P(n,o){if(n&1&&(i(0,"span",3),d(1),t()),n&2){let e=r();c(),u(e.config().modelName)}}function k(n,o){if(n&1&&(i(0,"span",4),d(1),t()),n&2){let e=r();c(),u(e.config().description)}}function S(n,o){if(n&1){let e=C();i(0,"span",7),d(1,"Delete?"),t(),i(2,"ds-icon-button",8),_("action",function(){g(e);let l=r();return m(l.onDeleteConfirmed())}),t(),i(3,"ds-icon-button",9),_("action",function(){g(e);let l=r();return m(l.onDeleteCancelled())}),t()}}function E(n,o){if(n&1){let e=C();i(0,"ds-kebab-menu",10),_("itemSelected",function(l){g(e);let A=r();return m(A.onMenuAction(l))}),t()}if(n&2){let e=r();y("items",e.readOnly()?e.readOnlyMenuItems:e.menuItems)}}var O=class n{router=b(M);config=s.required();namespaceId=s(void 0);platformMode=s(!1);readOnly=s(!1);deleteRequested=h();pendingDelete=v(!1);menuItems=[{key:"edit",label:"Edit agent config",icon:"edit"},{key:"inspect",label:"Inspect definition",icon:"search"},{key:"delete",label:"Delete agent config",icon:"delete",variant:"danger"}];readOnlyMenuItems=[{key:"inspect",label:"Inspect definition",icon:"search"}];onMenuAction(o){switch(o){case"edit":this.platformMode()?this.router.navigate(["/agentos","admin","agent-configs",this.config().id,"edit"]):this.router.navigate(["/agentos",this.namespaceId(),"agent-configs",this.config().id,"edit"]);break;case"inspect":this.platformMode()?this.router.navigate(["/agentos","admin","agent-configs",this.config().id,"inspect"]):this.router.navigate(["/agentos",this.namespaceId(),"agent-configs",this.config().id,"inspect"]);break;case"delete":this.pendingDelete.set(!0);break}}onDeleteConfirmed(){this.pendingDelete.set(!1),this.deleteRequested.emit(this.config())}onDeleteCancelled(){this.pendingDelete.set(!1)}static \u0275fac=function(e){return new(e||n)};static \u0275cmp=x({type:n,selectors:[["agentos-agent-config-item"]],inputs:{config:[1,"config"],namespaceId:[1,"namespaceId"],platformMode:[1,"platformMode"],readOnly:[1,"readOnly"]},outputs:{deleteRequested:"deleteRequested"},decls:9,vars:4,consts:[["role","listitem","dsBlueprint","",1,"agent-config-item"],[1,"agent-config-item__body"],[1,"agent-config-item__name"],[1,"agent-config-item__model"],[1,"agent-config-item__description"],[1,"agent-config-item__actions"],[3,"items"],[1,"agent-config-item__confirm-label"],["icon","check","variant","danger","title","Confirm deletion",3,"action"],["icon","close","title","Cancel deletion",3,"action"],[3,"itemSelected","items"]],template:function(e,a){e&1&&(i(0,"div",0)(1,"div",1)(2,"span",2),d(3),t(),f(4,P,2,1,"span",3),f(5,k,2,1,"span",4),t(),i(6,"div",5),f(7,S,4,0)(8,E,1,1,"ds-kebab-menu",6),t()()),e&2&&(c(3),u(a.config().name),c(),p(a.config().modelName?4:-1),c(),p(a.config().description?5:-1),c(2),p(a.pendingDelete()?7:8))},dependencies:[I,D,w],styles:[".agent-config-item[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.5rem;padding:14px 16px;position:relative;border-radius:0;border:1px solid var(--color-divider);background:var(--color-bg);box-shadow:var(--shadow-sm);overflow:visible;transition:border-color .15s ease}.agent-config-item[_ngcontent-%COMP%]:hover{border-color:var(--color-accent)}.agent-config-item__body[_ngcontent-%COMP%]{flex:1;display:flex;flex-direction:column;gap:.2rem;min-width:0}.agent-config-item__name[_ngcontent-%COMP%]{font-size:15px;font-weight:600;color:var(--color-text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.agent-config-item__model[_ngcontent-%COMP%], .agent-config-item__description[_ngcontent-%COMP%]{font-size:13px;color:var(--color-text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.agent-config-item__actions[_ngcontent-%COMP%]{flex-shrink:0;display:flex;align-items:center;gap:.125rem;opacity:0;transition:opacity .15s ease}.agent-config-item[_ngcontent-%COMP%]:hover .agent-config-item__actions[_ngcontent-%COMP%], .agent-config-item[_ngcontent-%COMP%]:focus-within .agent-config-item__actions[_ngcontent-%COMP%]{opacity:1}.agent-config-item[_ngcontent-%COMP%]:has(.agent-config-item__confirm-label) .agent-config-item__actions[_ngcontent-%COMP%]{opacity:1}.agent-config-item__confirm-label[_ngcontent-%COMP%]{font-family:var(--font-heading);font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--red-deep);margin-right:.25rem;white-space:nowrap}"],changeDetection:0})};export{O as a};
@@ -1 +1 @@
1
- import{c as a}from"./chunk-WLQB3UUA.js";import"./chunk-C3GZ6PYA.js";import"./chunk-XZIT26QS.js";import"./chunk-C6PO7H3U.js";import"./chunk-VCUQMGKI.js";import"./chunk-6XX7GME4.js";import"./chunk-VNO76B3S.js";import"./chunk-E6T6QLQT.js";import"./chunk-SPV5SLNS.js";import"./chunk-VMYKE4ZC.js";import"./chunk-AS2L77JV.js";import"./chunk-7OGOI6WM.js";import"./chunk-G5RWG2GK.js";import"./chunk-CHEXA6RY.js";export{a as AdminUsersGroupsComponent};
1
+ import{c as a}from"./chunk-PGEMQVT2.js";import"./chunk-P5FCG3WF.js";import"./chunk-XZIT26QS.js";import"./chunk-C6PO7H3U.js";import"./chunk-VCUQMGKI.js";import"./chunk-6XX7GME4.js";import"./chunk-TTHFWEW7.js";import"./chunk-OO2H5F7U.js";import"./chunk-SPV5SLNS.js";import"./chunk-VMYKE4ZC.js";import"./chunk-AS2L77JV.js";import"./chunk-7OGOI6WM.js";import"./chunk-G5RWG2GK.js";import"./chunk-CHEXA6RY.js";export{a as AdminUsersGroupsComponent};
@@ -1 +1 @@
1
- import{A as z,o as V}from"./chunk-VNO76B3S.js";import{Ab as v,Bb as x,Db as f,Fb as i,Gb as A,Ha as M,Hb as I,Ka as o,Kc as N,Mb as S,Ob as T,Pb as k,Rb as D,Tb as _,Ub as g,Wa as w,Ya as O,ab as C,ga as u,ha as b,jc as E,lb as d,mb as s,pc as y,qc as c,rb as p,sb as a,tb as r,tc as j,ub as P}from"./chunk-CHEXA6RY.js";var Q=[[["","agentosCardChips",""]]],q=["[agentosCardChips]"];function F(n,t){n&1&&v(0)}function U(n,t){if(n&1){let e=x();a(0,"button",3),f("click",function(){u(e);let l=i();return b(l.nameClicked.emit())}),C(1,F,1,0,"ng-container",4),r()}if(n&2){i();let e=k(3);o(),p("ngTemplateOutlet",e)}}function R(n,t){n&1&&v(0)}function G(n,t){if(n&1&&(a(0,"div",2),C(1,R,1,0,"ng-container",4),r()),n&2){i();let e=k(3);o(),p("ngTemplateOutlet",e)}}function H(n,t){if(n&1&&(a(0,"div",7),P(1,"img",15),r()),n&2){let e=i(2);o(),p("src",e.logo(),M)("alt",e.name())}}function J(n,t){if(n&1&&(a(0,"div",16),_(1),r()),n&2){let e=i(2);D("ac__mark--emoji",e.markIsEmoji()),o(),g(e.resolvedMark)}}function L(n,t){if(n&1&&(a(0,"span",10),_(1),r()),n&2){let e=i(2);o(),g(e.name())}}function W(n,t){if(n&1){let e=x();a(0,"button",17),f("click",function(){u(e);let l=i(2);return b(l.nameClicked.emit())}),_(1),r()}if(n&2){let e=i(2);o(),g(e.name())}}function X(n,t){if(n&1&&(a(0,"p",12),_(1),r()),n&2){let e=i(2);o(),g(e.description())}}function Y(n,t){if(n&1){let e=x();a(0,"ds-kebab-menu",18),f("itemSelected",function(l){u(e);let K=i(2);return b(K.menuAction.emit(l))}),r()}if(n&2){let e=i(2);p("items",e.menuItems())}}function Z(n,t){n&1&&(a(0,"div",14),I(1),r())}function $(n,t){if(n&1&&(a(0,"div",5)(1,"div",6),d(2,H,2,2,"div",7)(3,J,2,3,"div",8),a(4,"div",9),d(5,L,2,1,"span",10)(6,W,2,1,"button",11),d(7,X,2,1,"p",12),r()(),d(8,Y,1,1,"ds-kebab-menu",13),r(),d(9,Z,2,0,"div",14)),n&2){let e=i();o(2),s(e.logo()?2:3),o(3),s(e.clickable()?5:6),o(2),s(e.description()?7:-1),o(),s(e.hasMenu?8:-1),o(),s(e.hasChips?9:-1)}}var h=class n{static \u0275fac=function(e){return new(e||n)};static \u0275dir=O({type:n,selectors:[["","agentosCardChips",""]]})},B=class n{name=c.required();description=c(null);mark=c(null);markIsEmoji=c(!1);logo=c(null);menuItems=c([]);clickable=c(!1);nameClicked=y();menuAction=y();chipsSlot=j(h);get resolvedMark(){return this.mark()??(this.name().charAt(0).toUpperCase()||"?")}get hasChips(){return this.chipsSlot()!==void 0}get hasMenu(){return this.menuItems().length>0}static \u0275fac=function(e){return new(e||n)};static \u0275cmp=w({type:n,selectors:[["agentos-action-card"]],contentQueries:function(e,m,l){e&1&&S(l,m.chipsSlot,h,5),e&2&&T()},inputs:{name:[1,"name"],description:[1,"description"],mark:[1,"mark"],markIsEmoji:[1,"markIsEmoji"],logo:[1,"logo"],menuItems:[1,"menuItems"],clickable:[1,"clickable"]},outputs:{nameClicked:"nameClicked",menuAction:"menuAction"},ngContentSelectors:q,decls:4,vars:1,consts:[["cardContent",""],["type","button","dsBlueprint","",1,"ac","ac--clickable"],["dsBlueprint","",1,"ac"],["type","button","dsBlueprint","",1,"ac","ac--clickable",3,"click"],[4,"ngTemplateOutlet"],[1,"ac__header"],[1,"ac__id"],["aria-hidden","true",1,"ac__mark","ac__mark--logo"],["aria-hidden","true",1,"ac__mark",3,"ac__mark--emoji"],[1,"ac__meta"],[1,"ac__name"],["type","button",1,"ac__name"],[1,"ac__description"],[3,"items"],[1,"ac__chips"],[1,"ac__logo-img",3,"src","alt"],["aria-hidden","true",1,"ac__mark"],["type","button",1,"ac__name",3,"click"],[3,"itemSelected","items"]],template:function(e,m){e&1&&(A(Q),d(0,U,2,1,"button",1)(1,G,2,1,"div",2),C(2,$,10,5,"ng-template",null,0,E)),e&2&&s(m.clickable()?0:1)},dependencies:[V,z,N],styles:['[_nghost-%COMP%]{display:block;height:var(--ac-height, auto)}.ac[_ngcontent-%COMP%]{background:var(--color-bg);border:1px solid var(--color-divider);border-radius:0;box-shadow:var(--shadow-sm);overflow:hidden;transition:border-color .15s ease,box-shadow .15s ease}.ac[_ngcontent-%COMP%]:hover{border-color:var(--color-accent);box-shadow:var(--shadow-sm)}.ac[_ngcontent-%COMP%]{overflow:visible}.ac--clickable[_ngcontent-%COMP%]{appearance:none;background:transparent;border:none;padding:0;margin:0;font:inherit;cursor:pointer;text-align:left;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;background:var(--color-bg);border:1px solid var(--color-divider);border-radius:0;box-shadow:var(--shadow-sm);overflow:hidden;transition:border-color .15s ease,box-shadow .15s ease}.ac--clickable[_ngcontent-%COMP%]{background:var(--color-bg);border:1px solid var(--color-divider);border-radius:0;box-shadow:var(--shadow-sm);overflow:hidden;transition:border-color .15s ease,box-shadow .15s ease}.ac--clickable[_ngcontent-%COMP%]{cursor:pointer;transition:border-color .15s ease,box-shadow .15s ease}.ac--clickable[_ngcontent-%COMP%]:hover{border-color:var(--color-accent);box-shadow:var(--shadow-sm)}.ac--clickable[_ngcontent-%COMP%]:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.ac--clickable[_ngcontent-%COMP%]:active{background:var(--color-bg-hover)}.ac--clickable[_ngcontent-%COMP%]{overflow:visible;width:100%;height:100%;text-align:left}.ac--clickable[_ngcontent-%COMP%] .ac__name[_ngcontent-%COMP%]{cursor:inherit}.ac--clickable[_ngcontent-%COMP%] .ac__name[_ngcontent-%COMP%]:hover{text-decoration:none}.ac__header[_ngcontent-%COMP%]{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;padding:16px 18px 14px}.ac__id[_ngcontent-%COMP%]{display:flex;align-items:center;gap:10px;min-width:0;flex:1}.ac__mark[_ngcontent-%COMP%]{width:32px;height:32px;border-radius:0;background:#161616;color:#fff;border:none;display:flex;align-items:center;justify-content:center;flex-shrink:0;font-family:var(--font-body, "Inter", -apple-system, sans-serif);font-size:13px;font-weight:700;line-height:1;align-self:flex-start}.ac__mark--logo[_ngcontent-%COMP%]{background:var(--color-surface);border:1px solid var(--color-divider);padding:4px}[data-theme=dark][_ngcontent-%COMP%] .ac__mark--logo[_ngcontent-%COMP%]{background:transparent}.ac__mark--emoji[_ngcontent-%COMP%]{font-size:18px;line-height:32px;background:var(--color-surface);border:1px solid var(--color-divider);color:inherit}[data-theme=dark][_ngcontent-%COMP%] .ac__mark--emoji[_ngcontent-%COMP%]{background:transparent}.ac__logo-img[_ngcontent-%COMP%]{width:100%;height:100%;object-fit:contain;border-radius:0;display:block}.ac__meta[_ngcontent-%COMP%]{min-width:0}.ac__description[_ngcontent-%COMP%]{font-family:var(--font-body, "Inter", -apple-system, sans-serif);font-size:.8125rem;font-weight:400;line-height:1.4;color:var(--color-text-secondary, #6e6e73);margin:2px 0 0}.ac__name[_ngcontent-%COMP%]{appearance:none;background:transparent;border:none;padding:0;margin:0;font:inherit;cursor:pointer;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;font-family:var(--font-body, "Inter", -apple-system, sans-serif);font-size:14px;font-weight:600;line-height:1.3;color:var(--color-text, #1d1d1f);display:block;word-break:break-word;text-align:left}.ac__name[_ngcontent-%COMP%]:hover{text-decoration:underline}.ac__name[_ngcontent-%COMP%]:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px;border-radius:0}.ac__chips[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:6px;padding:0 14px 16px}[_nghost-%COMP%] .ac-chip{display:inline-flex;align-items:center;gap:5px;height:30px;padding:0 12px 0 10px;border-radius:0;border:1px solid var(--color-divider);background:var(--color-surface);color:var(--color-text);font-family:var(--font-body);font-size:13px;font-weight:500;line-height:1;cursor:pointer;white-space:nowrap;transition:background .12s ease,border-color .12s ease}[_nghost-%COMP%] .ac-chip:hover{background:var(--color-bg-hover);border-color:var(--color-neutral-500)}[_nghost-%COMP%] .ac-chip svg{flex-shrink:0}'],changeDetection:0})};export{h as a,B as b};
1
+ import{A as z,o as V}from"./chunk-TTHFWEW7.js";import{Ab as v,Bb as x,Db as f,Fb as i,Gb as A,Ha as M,Hb as I,Ka as o,Kc as N,Mb as S,Ob as T,Pb as k,Rb as D,Tb as _,Ub as g,Wa as w,Ya as O,ab as C,ga as u,ha as b,jc as E,lb as d,mb as s,pc as y,qc as c,rb as p,sb as a,tb as r,tc as j,ub as P}from"./chunk-CHEXA6RY.js";var Q=[[["","agentosCardChips",""]]],q=["[agentosCardChips]"];function F(n,t){n&1&&v(0)}function U(n,t){if(n&1){let e=x();a(0,"button",3),f("click",function(){u(e);let l=i();return b(l.nameClicked.emit())}),C(1,F,1,0,"ng-container",4),r()}if(n&2){i();let e=k(3);o(),p("ngTemplateOutlet",e)}}function R(n,t){n&1&&v(0)}function G(n,t){if(n&1&&(a(0,"div",2),C(1,R,1,0,"ng-container",4),r()),n&2){i();let e=k(3);o(),p("ngTemplateOutlet",e)}}function H(n,t){if(n&1&&(a(0,"div",7),P(1,"img",15),r()),n&2){let e=i(2);o(),p("src",e.logo(),M)("alt",e.name())}}function J(n,t){if(n&1&&(a(0,"div",16),_(1),r()),n&2){let e=i(2);D("ac__mark--emoji",e.markIsEmoji()),o(),g(e.resolvedMark)}}function L(n,t){if(n&1&&(a(0,"span",10),_(1),r()),n&2){let e=i(2);o(),g(e.name())}}function W(n,t){if(n&1){let e=x();a(0,"button",17),f("click",function(){u(e);let l=i(2);return b(l.nameClicked.emit())}),_(1),r()}if(n&2){let e=i(2);o(),g(e.name())}}function X(n,t){if(n&1&&(a(0,"p",12),_(1),r()),n&2){let e=i(2);o(),g(e.description())}}function Y(n,t){if(n&1){let e=x();a(0,"ds-kebab-menu",18),f("itemSelected",function(l){u(e);let K=i(2);return b(K.menuAction.emit(l))}),r()}if(n&2){let e=i(2);p("items",e.menuItems())}}function Z(n,t){n&1&&(a(0,"div",14),I(1),r())}function $(n,t){if(n&1&&(a(0,"div",5)(1,"div",6),d(2,H,2,2,"div",7)(3,J,2,3,"div",8),a(4,"div",9),d(5,L,2,1,"span",10)(6,W,2,1,"button",11),d(7,X,2,1,"p",12),r()(),d(8,Y,1,1,"ds-kebab-menu",13),r(),d(9,Z,2,0,"div",14)),n&2){let e=i();o(2),s(e.logo()?2:3),o(3),s(e.clickable()?5:6),o(2),s(e.description()?7:-1),o(),s(e.hasMenu?8:-1),o(),s(e.hasChips?9:-1)}}var h=class n{static \u0275fac=function(e){return new(e||n)};static \u0275dir=O({type:n,selectors:[["","agentosCardChips",""]]})},B=class n{name=c.required();description=c(null);mark=c(null);markIsEmoji=c(!1);logo=c(null);menuItems=c([]);clickable=c(!1);nameClicked=y();menuAction=y();chipsSlot=j(h);get resolvedMark(){return this.mark()??(this.name().charAt(0).toUpperCase()||"?")}get hasChips(){return this.chipsSlot()!==void 0}get hasMenu(){return this.menuItems().length>0}static \u0275fac=function(e){return new(e||n)};static \u0275cmp=w({type:n,selectors:[["agentos-action-card"]],contentQueries:function(e,m,l){e&1&&S(l,m.chipsSlot,h,5),e&2&&T()},inputs:{name:[1,"name"],description:[1,"description"],mark:[1,"mark"],markIsEmoji:[1,"markIsEmoji"],logo:[1,"logo"],menuItems:[1,"menuItems"],clickable:[1,"clickable"]},outputs:{nameClicked:"nameClicked",menuAction:"menuAction"},ngContentSelectors:q,decls:4,vars:1,consts:[["cardContent",""],["type","button","dsBlueprint","",1,"ac","ac--clickable"],["dsBlueprint","",1,"ac"],["type","button","dsBlueprint","",1,"ac","ac--clickable",3,"click"],[4,"ngTemplateOutlet"],[1,"ac__header"],[1,"ac__id"],["aria-hidden","true",1,"ac__mark","ac__mark--logo"],["aria-hidden","true",1,"ac__mark",3,"ac__mark--emoji"],[1,"ac__meta"],[1,"ac__name"],["type","button",1,"ac__name"],[1,"ac__description"],[3,"items"],[1,"ac__chips"],[1,"ac__logo-img",3,"src","alt"],["aria-hidden","true",1,"ac__mark"],["type","button",1,"ac__name",3,"click"],[3,"itemSelected","items"]],template:function(e,m){e&1&&(A(Q),d(0,U,2,1,"button",1)(1,G,2,1,"div",2),C(2,$,10,5,"ng-template",null,0,E)),e&2&&s(m.clickable()?0:1)},dependencies:[V,z,N],styles:['[_nghost-%COMP%]{display:block;height:var(--ac-height, auto)}.ac[_ngcontent-%COMP%]{background:var(--color-bg);border:1px solid var(--color-divider);border-radius:0;box-shadow:var(--shadow-sm);overflow:hidden;transition:border-color .15s ease,box-shadow .15s ease}.ac[_ngcontent-%COMP%]:hover{border-color:var(--color-accent);box-shadow:var(--shadow-sm)}.ac[_ngcontent-%COMP%]{overflow:visible}.ac--clickable[_ngcontent-%COMP%]{appearance:none;background:transparent;border:none;padding:0;margin:0;font:inherit;cursor:pointer;text-align:left;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;background:var(--color-bg);border:1px solid var(--color-divider);border-radius:0;box-shadow:var(--shadow-sm);overflow:hidden;transition:border-color .15s ease,box-shadow .15s ease}.ac--clickable[_ngcontent-%COMP%]{background:var(--color-bg);border:1px solid var(--color-divider);border-radius:0;box-shadow:var(--shadow-sm);overflow:hidden;transition:border-color .15s ease,box-shadow .15s ease}.ac--clickable[_ngcontent-%COMP%]{cursor:pointer;transition:border-color .15s ease,box-shadow .15s ease}.ac--clickable[_ngcontent-%COMP%]:hover{border-color:var(--color-accent);box-shadow:var(--shadow-sm)}.ac--clickable[_ngcontent-%COMP%]:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.ac--clickable[_ngcontent-%COMP%]:active{background:var(--color-bg-hover)}.ac--clickable[_ngcontent-%COMP%]{overflow:visible;width:100%;height:100%;text-align:left}.ac--clickable[_ngcontent-%COMP%] .ac__name[_ngcontent-%COMP%]{cursor:inherit}.ac--clickable[_ngcontent-%COMP%] .ac__name[_ngcontent-%COMP%]:hover{text-decoration:none}.ac__header[_ngcontent-%COMP%]{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;padding:16px 18px 14px}.ac__id[_ngcontent-%COMP%]{display:flex;align-items:center;gap:10px;min-width:0;flex:1}.ac__mark[_ngcontent-%COMP%]{width:32px;height:32px;border-radius:0;background:#161616;color:#fff;border:none;display:flex;align-items:center;justify-content:center;flex-shrink:0;font-family:var(--font-body, "Inter", -apple-system, sans-serif);font-size:13px;font-weight:700;line-height:1;align-self:flex-start}.ac__mark--logo[_ngcontent-%COMP%]{background:var(--color-surface);border:1px solid var(--color-divider);padding:4px}[data-theme=dark][_ngcontent-%COMP%] .ac__mark--logo[_ngcontent-%COMP%]{background:transparent}.ac__mark--emoji[_ngcontent-%COMP%]{font-size:18px;line-height:32px;background:var(--color-surface);border:1px solid var(--color-divider);color:inherit}[data-theme=dark][_ngcontent-%COMP%] .ac__mark--emoji[_ngcontent-%COMP%]{background:transparent}.ac__logo-img[_ngcontent-%COMP%]{width:100%;height:100%;object-fit:contain;border-radius:0;display:block}.ac__meta[_ngcontent-%COMP%]{min-width:0}.ac__description[_ngcontent-%COMP%]{font-family:var(--font-body, "Inter", -apple-system, sans-serif);font-size:.8125rem;font-weight:400;line-height:1.4;color:var(--color-text-secondary, #6e6e73);margin:2px 0 0}.ac__name[_ngcontent-%COMP%]{appearance:none;background:transparent;border:none;padding:0;margin:0;font:inherit;cursor:pointer;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;font-family:var(--font-body, "Inter", -apple-system, sans-serif);font-size:14px;font-weight:600;line-height:1.3;color:var(--color-text, #1d1d1f);display:block;word-break:break-word;text-align:left}.ac__name[_ngcontent-%COMP%]:hover{text-decoration:underline}.ac__name[_ngcontent-%COMP%]:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px;border-radius:0}.ac__chips[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:6px;padding:0 14px 16px}[_nghost-%COMP%] .ac-chip{display:inline-flex;align-items:center;gap:5px;height:30px;padding:0 12px 0 10px;border-radius:0;border:1px solid var(--color-divider);background:var(--color-surface);color:var(--color-text);font-family:var(--font-body);font-size:13px;font-weight:500;line-height:1;cursor:pointer;white-space:nowrap;transition:background .12s ease,border-color .12s ease}[_nghost-%COMP%] .ac-chip:hover{background:var(--color-bg-hover);border-color:var(--color-neutral-500)}[_nghost-%COMP%] .ac-chip svg{flex-shrink:0}'],changeDetection:0})};export{h as a,B as b};