@whoz-oss/coday-client 3.17.0 → 3.18.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 (95) hide show
  1. package/browser/chunk--yaU4Sri.js +1 -0
  2. package/browser/{chunk-ClSDInQq.js → chunk-4uEZjTft.js} +1 -1
  3. package/browser/chunk-4v7WiOTx.js +1 -0
  4. package/browser/chunk-B-UKlpjJ.js +1 -0
  5. package/browser/chunk-B13_C_P9.js +675 -0
  6. package/browser/chunk-B17Inq8D.js +2 -0
  7. package/browser/chunk-B1vuv-dv.js +1 -0
  8. package/browser/{chunk-DqC8XT4v.js → chunk-BEdQqXxw.js} +1 -1
  9. package/browser/{chunk-DMtXGu5h.js → chunk-BGTRsbsl.js} +1 -1
  10. package/browser/{chunk-DHb3-uKf.js → chunk-BHiaH1Jm.js} +1 -1
  11. package/browser/chunk-BJld3zB5.js +9 -0
  12. package/browser/{chunk-BPfJALqU.js → chunk-BVmICoo4.js} +1 -1
  13. package/browser/chunk-BXCHG0wB.js +1 -0
  14. package/browser/{chunk-LVItL87L.js → chunk-B_Sx6nwb.js} +1 -1
  15. package/browser/{chunk-D202v_ff.js → chunk-BbPMe8u2.js} +1 -1
  16. package/browser/{chunk-Bu5Xq3QT.js → chunk-Bb_J3EoX.js} +1 -1
  17. package/browser/{chunk-BkN5jb4J.js → chunk-BfE6wTUj.js} +1 -1
  18. package/browser/chunk-Bnj9Hkqy.js +276 -0
  19. package/browser/chunk-BqWEyotW.js +55 -0
  20. package/browser/{chunk-BXkvjekT.js → chunk-Buu9Jf-V.js} +2 -2
  21. package/browser/{chunk-Brx_KbnM.js → chunk-CJAdjOmi.js} +1 -1
  22. package/browser/{chunk-DjoW6kqa.js → chunk-CJEW8Ogd.js} +5 -5
  23. package/browser/chunk-CM1_Z4h5.js +1 -0
  24. package/browser/{chunk-Bgd8Jkga.js → chunk-CP3b1EMm.js} +1 -1
  25. package/browser/chunk-CR817PBg.js +1 -0
  26. package/browser/{chunk-bfpuueWC.js → chunk-CXgj_KJY.js} +3 -3
  27. package/browser/{chunk-CxUcyBb9.js → chunk-CakkML6n.js} +1 -1
  28. package/browser/{chunk-mrKeqPKc.js → chunk-CfPmQ0Fw.js} +1 -1
  29. package/browser/chunk-CgNkwpQ7.js +508 -0
  30. package/browser/chunk-Cjk-zAXy.js +1 -0
  31. package/browser/chunk-ClCDsg8D.js +5 -0
  32. package/browser/{chunk-CKhGzoqa.js → chunk-CmyT-Z4A.js} +1 -1
  33. package/browser/{chunk-EBW8PloQ.js → chunk-CqJ7rGVY.js} +1 -1
  34. package/browser/{chunk-Ci9l-k84.js → chunk-CxpHnwnx.js} +1 -1
  35. package/browser/{chunk-DFQuWS_F.js → chunk-D1ZnLng-.js} +1 -1
  36. package/browser/{chunk-DO3lSvop.js → chunk-D26Y186i.js} +1 -1
  37. package/browser/chunk-D2zGvbD2.js +190 -0
  38. package/browser/{chunk-DKllQ3Ve.js → chunk-D30bRRTP.js} +1 -1
  39. package/browser/{chunk-DQtoh8wv.js → chunk-D4dmZgr6.js} +1 -1
  40. package/browser/{chunk-b6g-uBR5.js → chunk-D6nkbOg1.js} +1 -1
  41. package/browser/chunk-D8nXP3jN.js +2 -0
  42. package/browser/{chunk-CUz5MHdA.js → chunk-D92adUD_.js} +1 -1
  43. package/browser/{chunk-BtEXE3Xz.js → chunk-DDu5Ufv3.js} +1 -1
  44. package/browser/{chunk-C5WD0UQE.js → chunk-DFjZf9oL.js} +3 -3
  45. package/browser/{chunk-B626-rya.js → chunk-DJjbZAaS.js} +1 -1
  46. package/browser/{chunk-B1OTuTxt.js → chunk-DKQvH1hP.js} +1 -1
  47. package/browser/{chunk-BHvLB-pV.js → chunk-DMUiJ7oP.js} +1 -1
  48. package/browser/chunk-DMyGIjcZ.js +1 -0
  49. package/browser/chunk-DOHvMo5p.js +1 -0
  50. package/browser/{chunk-ClEmA_ih.js → chunk-DVTNoWCQ.js} +1 -1
  51. package/browser/chunk-DV_7IOl_.js +1 -0
  52. package/browser/chunk-DaoWXYMw.js +1 -0
  53. package/browser/{chunk-B7kKWG4P.js → chunk-DmaEv05C.js} +1 -1
  54. package/browser/{chunk-CpZK7G-Q.js → chunk-DoqL_RuM.js} +2 -2
  55. package/browser/chunk-FMHkoXwM.js +37 -0
  56. package/browser/{chunk-CXTwGKdl.js → chunk-Fr6-w83-.js} +1 -1
  57. package/browser/{chunk-DxrynR3o.js → chunk-HHPhxe9B.js} +1 -1
  58. package/browser/{chunk-DpHEu7EG.js → chunk-IYMfBoNU.js} +1 -1
  59. package/browser/chunk-PQu4_Hy2.js +2 -0
  60. package/browser/chunk-Qpb04pBJ.js +1 -0
  61. package/browser/{chunk-BVAD9f9s.js → chunk-W5DNK5PC.js} +1 -1
  62. package/browser/{chunk-B6BZBDSv.js → chunk-WSA7xa0h.js} +5 -5
  63. package/browser/{chunk-D-jBfPIO.js → chunk-lX2E6ugr.js} +1 -1
  64. package/browser/{chunk-C2VdQfMJ.js → chunk-o2LY9dfG.js} +1 -1
  65. package/browser/{chunk-CI760KmO.js → chunk-py_Q_oQH.js} +1 -1
  66. package/browser/{chunk-DCwEaE_b.js → chunk-t87lD8bQ.js} +1 -1
  67. package/browser/{chunk-B3-4EW3s.js → chunk-vL7dLM7S.js} +1 -1
  68. package/browser/{chunk-CI7wYBKk.js → chunk-zvR-rokl.js} +1 -1
  69. package/browser/index.html +1 -1
  70. package/browser/main-YYHD6X7H.js +1811 -0
  71. package/package.json +1 -1
  72. package/browser/chunk-0njD_aMa.js +0 -2
  73. package/browser/chunk-6WIaUDav.js +0 -1
  74. package/browser/chunk-B7yga-a4.js +0 -1
  75. package/browser/chunk-BAWubWk8.js +0 -1
  76. package/browser/chunk-BDaTUrH4.js +0 -1
  77. package/browser/chunk-BJ5G7Y-a.js +0 -276
  78. package/browser/chunk-BTX631I3.js +0 -5
  79. package/browser/chunk-BYyTBqh4.js +0 -37
  80. package/browser/chunk-B_49KV6W.js +0 -1
  81. package/browser/chunk-BaO2vi_O.js +0 -675
  82. package/browser/chunk-BcT0wYqu.js +0 -2
  83. package/browser/chunk-BdJzYh5V.js +0 -190
  84. package/browser/chunk-BwDJA6_r.js +0 -55
  85. package/browser/chunk-C49BBPGm.js +0 -1
  86. package/browser/chunk-CNAj5Eon.js +0 -1
  87. package/browser/chunk-DMRb150M.js +0 -2
  88. package/browser/chunk-DjMtxVWg.js +0 -508
  89. package/browser/chunk-DqioJb1X.js +0 -1
  90. package/browser/chunk-DrzvCb86.js +0 -1
  91. package/browser/chunk-DwFGK2iu.js +0 -1
  92. package/browser/chunk-DxvmpOv5.js +0 -1
  93. package/browser/chunk-P8B5rz7L.js +0 -1
  94. package/browser/chunk-R-GmZrHu.js +0 -9
  95. package/browser/main-LBRSRTYI.js +0 -1811
@@ -1 +1 @@
1
- import {S as St}from'./chunk-BTX631I3.js';import {an as ce,g,L,ao as V,G,N as N$1,ap as Hy,h as Fw,aq as a,ar as S,as as F,at as c,m as ws,o as Rg,q as oC,n as hl,v as bg,t as nI,x as iC,C as Pg,D as bC,H as SC,au as ov,ae as Ot,av as dt,Y as x,aw as gl,Q as QC,ax as ml,a8 as Yg,a9 as gC,aa as wf,ac as EC,ab as Cf,S as Sg}from'./main-LBRSRTYI.js';import {a as at,s as st,r as rt,_ as _i}from'./chunk-B6BZBDSv.js';import'./chunk-BHvLB-pV.js';import {G as Ge}from'./chunk-DjoW6kqa.js';import'./chunk-ClSDInQq.js';import'./chunk-DO3lSvop.js';import'./chunk-CKhGzoqa.js';import'./chunk-CpZK7G-Q.js';import'./chunk-bfpuueWC.js';import'./chunk-BaO2vi_O.js';import'./chunk-DjMtxVWg.js';import'./chunk-BYyTBqh4.js';var T=class o{welcomeMessages=["Welcome to Coday","Bienvenue sur Coday","Bienvenido a Coday","Willkommen bei Coday","Benvenuto su Coday","Bem-vindo ao Coday","Welkom bij Coday","\u0414\u043E\u0431\u0440\u043E \u043F\u043E\u0436\u0430\u043B\u043E\u0432\u0430\u0442\u044C \u0432 Coday","Coday \u3078\u3088\u3046\u3053\u305D","\u6B22\u8FCE\u6765\u5230 Coday","Coday \uC5D0 \uC624\uC2E0 \uAC83\uC744 \uD658\uC601\uD569\uB2C8\uB2E4","\u0645\u0631\u062D\u0628\u064B\u0627 \u0628\u0643 \u0641\u064A Coday"];currentWelcomeIndex=0;currentWelcomeMessage=this.welcomeMessages[0];welcomeRotationInterval;ngOnInit(){this.startWelcomeRotation();}ngOnDestroy(){this.stopWelcomeRotation();}startWelcomeRotation(){this.welcomeRotationInterval=window.setInterval(()=>{this.currentWelcomeIndex=(this.currentWelcomeIndex+1)%this.welcomeMessages.length,this.currentWelcomeMessage=this.welcomeMessages[this.currentWelcomeIndex];},3e3);}stopWelcomeRotation(){this.welcomeRotationInterval&&(clearInterval(this.welcomeRotationInterval),this.welcomeRotationInterval=void 0);}static \u0275fac=function(t){return new(t||o)};static \u0275cmp=Fw({type:o,selectors:[["app-welcome-message"]],decls:2,vars:1,consts:[[1,"welcome-title"]],template:function(t,i){t&1&&(gl(0,"h1",0),QC(1),ml()),t&2&&(nI(),Yg(i.currentWelcomeMessage));},styles:[".welcome-title[_ngcontent-%COMP%]{font-size:clamp(1.5rem,4vw,4rem);font-weight:700;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;margin:0;padding:0;line-height:1.2;transition:opacity .5s ease-in-out;display:block;min-height:1.2em;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@keyframes _ngcontent-%COMP%_gradientShift{0%{background-position:0% center}50%{background-position:100% center}to{background-position:0% center}}"],changeDetection:1})};var N=class o{destroy$=new ce;isSetup=false;codayService=g(Ge);preferencesService=g(L);setup(){if(this.isSetup){console.warn("[AGENT-NOTIFICATION] Service already set up");return}console.log("[AGENT-NOTIFICATION] Setting up agent notification service"),this.codayService.isThinking$.pipe(Hy(this.destroy$),ov(),Ot(([e,t])=>e===true&&t===false)).subscribe(()=>{console.log("[AGENT-NOTIFICATION] Agent stopped thinking, notifying task finished"),this.notifyTaskFinishedIfEnabled();}),this.preferencesService.browserNotificationEnabled$.pipe(Hy(this.destroy$),ov(),Ot(([e,t])=>e===false&&t===true)).subscribe(()=>{console.log("[AGENT-NOTIFICATION] Browser notifications enabled, checking permission"),this.handleBrowserNotificationEnabled();}),this.isSetup=true;}notifyTaskFinishedIfEnabled(){this.preferencesService.getAgentNotificationEnabled()&&(this.preferencesService.getNotificationSoundEnabled()&&this.playCompletionSound(),this.preferencesService.getBrowserNotificationEnabled()&&this.sendBrowserNotification());}playCompletionSound(){try{let e=new(window.AudioContext||window.webkitAudioContext),t=e.createOscillator(),i=e.createGain();t.connect(i),i.connect(e.destination),t.frequency.setValueAtTime(700,e.currentTime),i.gain.setValueAtTime(.1,e.currentTime),i.gain.exponentialRampToValueAtTime(.01,e.currentTime+.08),t.start(e.currentTime),t.stop(e.currentTime+.08);let n=e.createOscillator(),r=e.createGain();n.connect(r),r.connect(e.destination);let l=e.currentTime+.11;n.frequency.setValueAtTime(950,l),r.gain.setValueAtTime(.1,l),r.gain.exponentialRampToValueAtTime(.01,l+.09),n.start(l),n.stop(l+.09),console.log("[AGENT-NOTIFICATION] Completion sound played");}catch(e){console.error("[AGENT-NOTIFICATION] Failed to play completion sound:",e);}}handleBrowserNotificationEnabled(){return dt(this,null,function*(){if(!("Notification"in window)){console.warn("[AGENT-NOTIFICATION] Browser does not support notifications"),this.preferencesService.setBrowserNotificationEnabled(false);return}if(Notification.permission==="denied"){console.warn("[AGENT-NOTIFICATION] Permission denied, disabling browser notifications"),this.preferencesService.setBrowserNotificationEnabled(false);return}if(Notification.permission==="granted"){console.log("[AGENT-NOTIFICATION] Permission already granted, showing confirmation"),this.createConfirmationNotification();return}try{(yield Notification.requestPermission())==="granted"?(console.log("[AGENT-NOTIFICATION] Permission granted, showing confirmation"),this.createConfirmationNotification()):(console.log("[AGENT-NOTIFICATION] Permission denied or dismissed"),this.preferencesService.setBrowserNotificationEnabled(!1));}catch(e){console.error("[AGENT-NOTIFICATION] Error requesting permission:",e),this.preferencesService.setBrowserNotificationEnabled(false);}})}sendBrowserNotification(){if(!("Notification"in window)){console.warn("[AGENT-NOTIFICATION] Browser does not support notifications");return}if(document.hasFocus()){console.warn("[AGENT-NOTIFICATION] Document is focused, skipping browser notification");return}Notification.permission==="granted"?this.createTaskCompleteNotification():console.warn("[AGENT-NOTIFICATION] Permission not granted, cannot send notification");}createConfirmationNotification(){let e=new Notification("Coday - Notifications Enabled",{body:"You will be notified when the agent completes tasks",icon:"/favicon.ico",tag:"coday-notifications-enabled",requireInteraction:false});setTimeout(()=>e.close(),4e3),e.onclick=()=>{window.focus(),e.close();},console.log("[AGENT-NOTIFICATION] Confirmation notification sent");}createTaskCompleteNotification(){let e=new Notification("Coday - Task Complete",{body:"The agent has finished and is waiting for your input",icon:"/favicon.ico",tag:"coday-task-complete",requireInteraction:false});setTimeout(()=>e.close(),5e3),e.onclick=()=>{window.focus(),e.close();},console.log("[AGENT-NOTIFICATION] Task complete notification sent");}ngOnDestroy(){console.log("[AGENT-NOTIFICATION] Service destroyed"),this.destroy$.next(),this.destroy$.complete();}static \u0275fac=function(t){return new(t||o)};static \u0275prov=x({token:o,factory:o.\u0275fac,providedIn:"root"})};var Z=["inputSection"];function ee(o,e){if(o&1){let t=gC();ws(0,"app-thread",4),Rg("chatFocused",function(){wf(t);let n=EC();return Cf(n.onChatFocusedOnMobile())})("drawerStateChange",function(n){wf(t);let r=EC();return Cf(r.onDrawerStateChange(n))}),hl();}if(o&2){let t=EC();bg("projectName",t.projectName)("threadId",t.threadId);}}function te(o,e){if(o&1){let t=gC();ws(0,"div",5),Sg(1,"app-welcome-message"),hl(),ws(2,"div",6,0)(4,"div",7)(5,"div",8)(6,"app-chat-textarea",9),Rg("messageSubmitted",function(n){wf(t);let r=EC();return Cf(r.onMessageSubmitted(n))})("voiceMessageReady",function(n){wf(t);let r=EC();return Cf(r.onVoiceMessageReady(n))})("voiceRecordingToggled",function(n){wf(t);let r=EC();return Cf(r.onVoiceToggled(n))})("heightChanged",function(n){wf(t);let r=EC();return Cf(r.onInputHeightChanged(n))})("textareaFocused",function(){wf(t);let n=EC();return Cf(n.onChatFocusedOnMobile())}),hl()()()();}if(o&2){let t=EC();nI(6),bg("isDisabled",t.isSessionInitializing)("isSessionInitializing",t.isSessionInitializing)("showWelcome",true)("isThinking",false)("isStarting",t.isStartingFirstMessage);}}var K=class o{destroy$=new ce;inputSection;sidenav;projectName="";threadId=null;isSessionInitializing=false;isStartingFirstMessage=false;inputSectionHeight=80;codayService=g(Ge);titleService=g(at);preferencesService=g(L);route=g(V);router=g(G);threadApiService=g(N$1);agentNotificationService=g(N);firstMessageState=g(st);constructor(){console.log("[MAIN-APP] Using new thread-based architecture (no clientId needed)");}ngOnInit(){this.agentNotificationService.setup(),this.setupPrintHandlers(),this.route.params.pipe(Hy(this.destroy$)).subscribe(e=>{let t=e.projectName,i=e.threadId||null;console.log("[MAIN-APP] Route params updated:",{project:t,thread:i,previousProject:this.projectName,previousThread:this.threadId}),this.projectName=t,this.threadId=i,this.threadId?console.log("[MAIN-APP] Thread selected - ThreadComponent will display"):(console.log("[MAIN-APP] No thread selected - showing welcome view"),this.initializeWelcomeView());});}initializeWelcomeView(){this.codayService.setTabTitleService(this.titleService);}ngAfterViewInit(){setTimeout(()=>this.updateInputSectionHeight(),100);}ngOnDestroy(){this.destroy$.next(),this.destroy$.complete(),window.removeEventListener("beforeprint",this.handleBeforePrint),window.removeEventListener("afterprint",this.handleAfterPrint);}onMessageSubmitted(e){console.log("[MAIN-APP] First message submitted from welcome view:",e),this.isSessionInitializing=true,this.isStartingFirstMessage=true,this.threadApiService.createThread().subscribe({next:t=>{console.log("[MAIN-APP] Thread created:",t.thread.id),this.firstMessageState.setPendingFirstMessage(e),this.router.navigate(["project",this.projectName,"thread",t.thread.id]);},error:t=>{console.error("[MAIN-APP] Failed to create thread:",t),this.isSessionInitializing=false,this.isStartingFirstMessage=false,alert("Failed to create conversation: "+(t.message||"Unknown error"));}});}onVoiceToggled(e){console.log("[VOICE] Recording in welcome view:",e);}onVoiceMessageReady(e){console.log("[MAIN-APP] Voice message ready from welcome view"),this.isSessionInitializing=true,this.isStartingFirstMessage=true,this.threadApiService.createThread().subscribe({next:t=>{console.log("[MAIN-APP] Thread created for voice message:",t.thread.id),this.firstMessageState.setPendingVoiceMessage(e),this.router.navigate(["project",this.projectName,"thread",t.thread.id]);},error:t=>{console.error("[MAIN-APP] Failed to create thread for voice message:",t),this.isSessionInitializing=false,this.isStartingFirstMessage=false,alert("Failed to create conversation: "+(t.message||"Unknown error"));}});}isDrawerOpen=false;onDrawerStateChange(e){this.isDrawerOpen=e;}onChatFocusedOnMobile(){window.innerWidth<1024&&this.sidenav?.close();}onInputHeightChanged(e){console.log("[MAIN-APP] Input height changed:",e),this.inputSectionHeight=e;}updateInputSectionHeight(){if(this.inputSection?.nativeElement){let e=this.inputSection.nativeElement.offsetHeight;e!==this.inputSectionHeight&&(console.log("[MAIN-APP] Input section height updated:",e),this.inputSectionHeight=e);}}setupPrintHandlers(){window.addEventListener("beforeprint",this.handleBeforePrint),window.addEventListener("afterprint",this.handleAfterPrint);}handleBeforePrint=()=>{console.log("[PRINT] Before print event triggered");let e=this.preferencesService.getPrintTechnicalMessages();console.log("[PRINT] Print technical messages:",e),e?document.body.classList.add("print-include-technical"):document.body.classList.remove("print-include-technical");};handleAfterPrint=()=>{console.log("[PRINT] After print event triggered"),document.body.classList.remove("print-include-technical");};static \u0275fac=function(t){return new(t||o)};static \u0275cmp=Fw({type:o,selectors:[["app-main"]],viewQuery:function(t,i){if(t&1&&Pg(Z,5)(St,5),t&2){let n;bC(n=SC())&&(i.inputSection=n.first),bC(n=SC())&&(i.sidenav=n.first);}},decls:4,vars:2,consts:[["inputSection",""],[3,"drawerOpen"],[1,"app",3,"mousedown","touchstart"],[3,"projectName","threadId"],[3,"chatFocused","drawerStateChange","projectName","threadId"],[1,"welcome-section"],[1,"input-section"],[1,"input-center"],[1,"input-glass"],[3,"messageSubmitted","voiceMessageReady","voiceRecordingToggled","heightChanged","textareaFocused","isDisabled","isSessionInitializing","showWelcome","isThinking","isStarting"]],template:function(t,i){t&1&&(ws(0,"app-sidenav",1)(1,"div",2),Rg("mousedown",function(){return i.onChatFocusedOnMobile()})("touchstart",function(){return i.onChatFocusedOnMobile()}),oC(2,ee,1,2,"app-thread",3)(3,te,7,5),hl()()),t&2&&(bg("drawerOpen",i.isDrawerOpen),nI(2),iC(i.threadId?2:3));},dependencies:[rt,_i,T,St],styles:["[_nghost-%COMP%]{display:flex;height:100vh;width:100%;overflow:hidden;justify-content:center}.app[_ngcontent-%COMP%]{width:100%;max-width:100%;min-width:0;height:100%;display:flex;flex-direction:column;background:var(--color-bg);color:var(--color-text);transition:all .3s ease;position:relative;justify-content:center;overflow:hidden}.chat-wrapper[_ngcontent-%COMP%]{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden;background:transparent;width:100%;padding:2.5rem 0 1.5rem;display:flex;justify-content:center}.chat-wrapper[_ngcontent-%COMP%] .chat-center[_ngcontent-%COMP%]{max-width:760px;width:100%;margin:0;padding:0 2rem}@media(max-width:768px){.chat-wrapper[_ngcontent-%COMP%] .chat-center[_ngcontent-%COMP%]{padding:0 1rem}}.welcome-section[_ngcontent-%COMP%]{flex-shrink:0;text-align:center;padding:2rem 1rem;animation:_ngcontent-%COMP%_fadeInUp .8s ease-out;display:flex;justify-content:center;align-items:center;width:100%;min-width:0;overflow:hidden}@keyframes _ngcontent-%COMP%_fadeInUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.input-section[_ngcontent-%COMP%]{flex-shrink:0;position:relative;border-top:none;background:transparent;box-shadow:none;padding:2.5rem 0 2rem;overflow-y:visible;max-height:none;width:100%;z-index:10;pointer-events:none;display:flex;justify-content:center}.input-center[_ngcontent-%COMP%]{max-width:760px;width:100%;margin:0;padding:0 2rem;display:flex;justify-content:center;align-items:end;position:relative;pointer-events:auto}@media(max-width:768px){.input-center[_ngcontent-%COMP%]{padding:0 1rem}}.input-glass[_ngcontent-%COMP%]{background:none;box-shadow:none;width:100%;min-height:64px;display:flex;align-items:stretch;gap:0;pointer-events:auto;position:relative;overflow:visible}.input-glass[_ngcontent-%COMP%] app-chat-textarea[_ngcontent-%COMP%]{width:100%;min-width:0;flex:1 1 auto;align-self:stretch;display:flex}body.dark[_nghost-%COMP%], body.dark [_nghost-%COMP%], [_ngcontent-%COMP%]:root[data-theme=dark] .input-glass[_ngcontent-%COMP%]{background:#24283073;border-color:#b4c8ff17;box-shadow:0 8px 32px #0000002b,0 1.5px 8px #00000012}.choice-overlay[_ngcontent-%COMP%]{z-index:10;width:100%;display:flex;justify-content:center;align-items:center}.upload-status[_ngcontent-%COMP%]{position:fixed;bottom:100px;left:50%;transform:translate(-50%);z-index:1000;display:flex;align-items:center;padding:12px 20px;background:var(--glass-bg);backdrop-filter:var(--glass-backdrop-blur);-webkit-backdrop-filter:var(--glass-backdrop-blur);border:1px solid var(--glass-border);border-radius:16px;font-size:.9em;color:var(--color-text);box-shadow:var(--glass-shadow);max-width:300px;text-align:center}.upload-status.error[_ngcontent-%COMP%]{background:#ff3b3026;color:var(--color-error);border-color:#ff3b304d}@media(max-width:768px){.welcome-section[_ngcontent-%COMP%]{padding:1.5rem 1rem}.input-section[_ngcontent-%COMP%]{padding:1.5rem .75rem 1rem}.input-center[_ngcontent-%COMP%]{padding:0 .5rem}}@media print{[_nghost-%COMP%]{display:block!important;height:auto!important;overflow:visible!important}.app[_ngcontent-%COMP%]{height:auto!important;overflow:visible!important;display:block!important}.input-section[_ngcontent-%COMP%], .welcome-section[_ngcontent-%COMP%]{display:none!important}}"],data:{animation:[a("slideIn",[S(":enter",[F({transform:"translateY(100%)",opacity:0}),c("300ms ease-out",F({transform:"translateY(0)",opacity:1}))]),S(":leave",[c("200ms ease-in",F({transform:"translateY(100%)",opacity:0}))])])]},changeDetection:1})};export{K as MainAppComponent};
1
+ import {S as St}from'./chunk-ClCDsg8D.js';import {an as ue,g,L,ao as V,G,E as N$1,ap as zy,j as jw,aq as a,ar as S,as as F,at as c,k as Cs,n as kg,o as aC,m as hl,_ as _g,t as sI,u as cC,x as jg,y as MC,N as NC,au as cv,ae as kt,av as dt,K as x,aw as gl,J as JC,ax as ml,a8 as Kg,a9 as vC,aa as Cf,ac as CC,ab as Tf,M as Mg}from'./main-YYHD6X7H.js';import {a as at,s as st,r as rt,_ as _i}from'./chunk-WSA7xa0h.js';import'./chunk-DMUiJ7oP.js';import {G as Ge}from'./chunk-CJEW8Ogd.js';import'./chunk-4uEZjTft.js';import'./chunk-D26Y186i.js';import'./chunk-CmyT-Z4A.js';import'./chunk-DoqL_RuM.js';import'./chunk-CXgj_KJY.js';import'./chunk-B13_C_P9.js';import'./chunk-CgNkwpQ7.js';import'./chunk-FMHkoXwM.js';var T=class o{welcomeMessages=["Welcome to Coday","Bienvenue sur Coday","Bienvenido a Coday","Willkommen bei Coday","Benvenuto su Coday","Bem-vindo ao Coday","Welkom bij Coday","\u0414\u043E\u0431\u0440\u043E \u043F\u043E\u0436\u0430\u043B\u043E\u0432\u0430\u0442\u044C \u0432 Coday","Coday \u3078\u3088\u3046\u3053\u305D","\u6B22\u8FCE\u6765\u5230 Coday","Coday \uC5D0 \uC624\uC2E0 \uAC83\uC744 \uD658\uC601\uD569\uB2C8\uB2E4","\u0645\u0631\u062D\u0628\u064B\u0627 \u0628\u0643 \u0641\u064A Coday"];currentWelcomeIndex=0;currentWelcomeMessage=this.welcomeMessages[0];welcomeRotationInterval;ngOnInit(){this.startWelcomeRotation();}ngOnDestroy(){this.stopWelcomeRotation();}startWelcomeRotation(){this.welcomeRotationInterval=window.setInterval(()=>{this.currentWelcomeIndex=(this.currentWelcomeIndex+1)%this.welcomeMessages.length,this.currentWelcomeMessage=this.welcomeMessages[this.currentWelcomeIndex];},3e3);}stopWelcomeRotation(){this.welcomeRotationInterval&&(clearInterval(this.welcomeRotationInterval),this.welcomeRotationInterval=void 0);}static \u0275fac=function(t){return new(t||o)};static \u0275cmp=jw({type:o,selectors:[["app-welcome-message"]],decls:2,vars:1,consts:[[1,"welcome-title"]],template:function(t,i){t&1&&(gl(0,"h1",0),JC(1),ml()),t&2&&(sI(),Kg(i.currentWelcomeMessage));},styles:[".welcome-title[_ngcontent-%COMP%]{font-size:clamp(1.5rem,4vw,4rem);font-weight:700;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;margin:0;padding:0;line-height:1.2;transition:opacity .5s ease-in-out;display:block;min-height:1.2em;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@keyframes _ngcontent-%COMP%_gradientShift{0%{background-position:0% center}50%{background-position:100% center}to{background-position:0% center}}"],changeDetection:1})};var N=class o{destroy$=new ue;isSetup=false;codayService=g(Ge);preferencesService=g(L);setup(){if(this.isSetup){console.warn("[AGENT-NOTIFICATION] Service already set up");return}console.log("[AGENT-NOTIFICATION] Setting up agent notification service"),this.codayService.isThinking$.pipe(zy(this.destroy$),cv(),kt(([e,t])=>e===true&&t===false)).subscribe(()=>{console.log("[AGENT-NOTIFICATION] Agent stopped thinking, notifying task finished"),this.notifyTaskFinishedIfEnabled();}),this.preferencesService.browserNotificationEnabled$.pipe(zy(this.destroy$),cv(),kt(([e,t])=>e===false&&t===true)).subscribe(()=>{console.log("[AGENT-NOTIFICATION] Browser notifications enabled, checking permission"),this.handleBrowserNotificationEnabled();}),this.isSetup=true;}notifyTaskFinishedIfEnabled(){this.preferencesService.getAgentNotificationEnabled()&&(this.preferencesService.getNotificationSoundEnabled()&&this.playCompletionSound(),this.preferencesService.getBrowserNotificationEnabled()&&this.sendBrowserNotification());}playCompletionSound(){try{let e=new(window.AudioContext||window.webkitAudioContext),t=e.createOscillator(),i=e.createGain();t.connect(i),i.connect(e.destination),t.frequency.setValueAtTime(700,e.currentTime),i.gain.setValueAtTime(.1,e.currentTime),i.gain.exponentialRampToValueAtTime(.01,e.currentTime+.08),t.start(e.currentTime),t.stop(e.currentTime+.08);let n=e.createOscillator(),r=e.createGain();n.connect(r),r.connect(e.destination);let l=e.currentTime+.11;n.frequency.setValueAtTime(950,l),r.gain.setValueAtTime(.1,l),r.gain.exponentialRampToValueAtTime(.01,l+.09),n.start(l),n.stop(l+.09),console.log("[AGENT-NOTIFICATION] Completion sound played");}catch(e){console.error("[AGENT-NOTIFICATION] Failed to play completion sound:",e);}}handleBrowserNotificationEnabled(){return dt(this,null,function*(){if(!("Notification"in window)){console.warn("[AGENT-NOTIFICATION] Browser does not support notifications"),this.preferencesService.setBrowserNotificationEnabled(false);return}if(Notification.permission==="denied"){console.warn("[AGENT-NOTIFICATION] Permission denied, disabling browser notifications"),this.preferencesService.setBrowserNotificationEnabled(false);return}if(Notification.permission==="granted"){console.log("[AGENT-NOTIFICATION] Permission already granted, showing confirmation"),this.createConfirmationNotification();return}try{(yield Notification.requestPermission())==="granted"?(console.log("[AGENT-NOTIFICATION] Permission granted, showing confirmation"),this.createConfirmationNotification()):(console.log("[AGENT-NOTIFICATION] Permission denied or dismissed"),this.preferencesService.setBrowserNotificationEnabled(!1));}catch(e){console.error("[AGENT-NOTIFICATION] Error requesting permission:",e),this.preferencesService.setBrowserNotificationEnabled(false);}})}sendBrowserNotification(){if(!("Notification"in window)){console.warn("[AGENT-NOTIFICATION] Browser does not support notifications");return}if(document.hasFocus()){console.warn("[AGENT-NOTIFICATION] Document is focused, skipping browser notification");return}Notification.permission==="granted"?this.createTaskCompleteNotification():console.warn("[AGENT-NOTIFICATION] Permission not granted, cannot send notification");}createConfirmationNotification(){let e=new Notification("Coday - Notifications Enabled",{body:"You will be notified when the agent completes tasks",icon:"/favicon.ico",tag:"coday-notifications-enabled",requireInteraction:false});setTimeout(()=>e.close(),4e3),e.onclick=()=>{window.focus(),e.close();},console.log("[AGENT-NOTIFICATION] Confirmation notification sent");}createTaskCompleteNotification(){let e=new Notification("Coday - Task Complete",{body:"The agent has finished and is waiting for your input",icon:"/favicon.ico",tag:"coday-task-complete",requireInteraction:false});setTimeout(()=>e.close(),5e3),e.onclick=()=>{window.focus(),e.close();},console.log("[AGENT-NOTIFICATION] Task complete notification sent");}ngOnDestroy(){console.log("[AGENT-NOTIFICATION] Service destroyed"),this.destroy$.next(),this.destroy$.complete();}static \u0275fac=function(t){return new(t||o)};static \u0275prov=x({token:o,factory:o.\u0275fac,providedIn:"root"})};var Z=["inputSection"];function ee(o,e){if(o&1){let t=vC();Cs(0,"app-thread",4),kg("chatFocused",function(){Cf(t);let n=CC();return Tf(n.onChatFocusedOnMobile())})("drawerStateChange",function(n){Cf(t);let r=CC();return Tf(r.onDrawerStateChange(n))}),hl();}if(o&2){let t=CC();_g("projectName",t.projectName)("threadId",t.threadId);}}function te(o,e){if(o&1){let t=vC();Cs(0,"div",5),Mg(1,"app-welcome-message"),hl(),Cs(2,"div",6,0)(4,"div",7)(5,"div",8)(6,"app-chat-textarea",9),kg("messageSubmitted",function(n){Cf(t);let r=CC();return Tf(r.onMessageSubmitted(n))})("voiceMessageReady",function(n){Cf(t);let r=CC();return Tf(r.onVoiceMessageReady(n))})("voiceRecordingToggled",function(n){Cf(t);let r=CC();return Tf(r.onVoiceToggled(n))})("heightChanged",function(n){Cf(t);let r=CC();return Tf(r.onInputHeightChanged(n))})("textareaFocused",function(){Cf(t);let n=CC();return Tf(n.onChatFocusedOnMobile())}),hl()()()();}if(o&2){let t=CC();sI(6),_g("isDisabled",t.isSessionInitializing)("isSessionInitializing",t.isSessionInitializing)("showWelcome",true)("isThinking",false)("isStarting",t.isStartingFirstMessage);}}var K=class o{destroy$=new ue;inputSection;sidenav;projectName="";threadId=null;isSessionInitializing=false;isStartingFirstMessage=false;inputSectionHeight=80;codayService=g(Ge);titleService=g(at);preferencesService=g(L);route=g(V);router=g(G);threadApiService=g(N$1);agentNotificationService=g(N);firstMessageState=g(st);constructor(){console.log("[MAIN-APP] Using new thread-based architecture (no clientId needed)");}ngOnInit(){this.agentNotificationService.setup(),this.setupPrintHandlers(),this.route.params.pipe(zy(this.destroy$)).subscribe(e=>{let t=e.projectName,i=e.threadId||null;console.log("[MAIN-APP] Route params updated:",{project:t,thread:i,previousProject:this.projectName,previousThread:this.threadId}),this.projectName=t,this.threadId=i,this.threadId?console.log("[MAIN-APP] Thread selected - ThreadComponent will display"):(console.log("[MAIN-APP] No thread selected - showing welcome view"),this.initializeWelcomeView());});}initializeWelcomeView(){this.codayService.setTabTitleService(this.titleService);}ngAfterViewInit(){setTimeout(()=>this.updateInputSectionHeight(),100);}ngOnDestroy(){this.destroy$.next(),this.destroy$.complete(),window.removeEventListener("beforeprint",this.handleBeforePrint),window.removeEventListener("afterprint",this.handleAfterPrint);}onMessageSubmitted(e){console.log("[MAIN-APP] First message submitted from welcome view:",e),this.isSessionInitializing=true,this.isStartingFirstMessage=true,this.threadApiService.createThread().subscribe({next:t=>{console.log("[MAIN-APP] Thread created:",t.thread.id),this.firstMessageState.setPendingFirstMessage(e),this.router.navigate(["project",this.projectName,"thread",t.thread.id]);},error:t=>{console.error("[MAIN-APP] Failed to create thread:",t),this.isSessionInitializing=false,this.isStartingFirstMessage=false,alert("Failed to create conversation: "+(t.message||"Unknown error"));}});}onVoiceToggled(e){console.log("[VOICE] Recording in welcome view:",e);}onVoiceMessageReady(e){console.log("[MAIN-APP] Voice message ready from welcome view"),this.isSessionInitializing=true,this.isStartingFirstMessage=true,this.threadApiService.createThread().subscribe({next:t=>{console.log("[MAIN-APP] Thread created for voice message:",t.thread.id),this.firstMessageState.setPendingVoiceMessage(e),this.router.navigate(["project",this.projectName,"thread",t.thread.id]);},error:t=>{console.error("[MAIN-APP] Failed to create thread for voice message:",t),this.isSessionInitializing=false,this.isStartingFirstMessage=false,alert("Failed to create conversation: "+(t.message||"Unknown error"));}});}isDrawerOpen=false;onDrawerStateChange(e){this.isDrawerOpen=e;}onChatFocusedOnMobile(){window.innerWidth<1024&&this.sidenav?.close();}onInputHeightChanged(e){console.log("[MAIN-APP] Input height changed:",e),this.inputSectionHeight=e;}updateInputSectionHeight(){if(this.inputSection?.nativeElement){let e=this.inputSection.nativeElement.offsetHeight;e!==this.inputSectionHeight&&(console.log("[MAIN-APP] Input section height updated:",e),this.inputSectionHeight=e);}}setupPrintHandlers(){window.addEventListener("beforeprint",this.handleBeforePrint),window.addEventListener("afterprint",this.handleAfterPrint);}handleBeforePrint=()=>{console.log("[PRINT] Before print event triggered");let e=this.preferencesService.getPrintTechnicalMessages();console.log("[PRINT] Print technical messages:",e),e?document.body.classList.add("print-include-technical"):document.body.classList.remove("print-include-technical");};handleAfterPrint=()=>{console.log("[PRINT] After print event triggered"),document.body.classList.remove("print-include-technical");};static \u0275fac=function(t){return new(t||o)};static \u0275cmp=jw({type:o,selectors:[["app-main"]],viewQuery:function(t,i){if(t&1&&jg(Z,5)(St,5),t&2){let n;MC(n=NC())&&(i.inputSection=n.first),MC(n=NC())&&(i.sidenav=n.first);}},decls:4,vars:2,consts:[["inputSection",""],[3,"drawerOpen"],[1,"app",3,"mousedown","touchstart"],[3,"projectName","threadId"],[3,"chatFocused","drawerStateChange","projectName","threadId"],[1,"welcome-section"],[1,"input-section"],[1,"input-center"],[1,"input-glass"],[3,"messageSubmitted","voiceMessageReady","voiceRecordingToggled","heightChanged","textareaFocused","isDisabled","isSessionInitializing","showWelcome","isThinking","isStarting"]],template:function(t,i){t&1&&(Cs(0,"app-sidenav",1)(1,"div",2),kg("mousedown",function(){return i.onChatFocusedOnMobile()})("touchstart",function(){return i.onChatFocusedOnMobile()}),aC(2,ee,1,2,"app-thread",3)(3,te,7,5),hl()()),t&2&&(_g("drawerOpen",i.isDrawerOpen),sI(2),cC(i.threadId?2:3));},dependencies:[rt,_i,T,St],styles:["[_nghost-%COMP%]{display:flex;height:100vh;width:100%;overflow:hidden;justify-content:center}.app[_ngcontent-%COMP%]{width:100%;max-width:100%;min-width:0;height:100%;display:flex;flex-direction:column;background:var(--color-bg);color:var(--color-text);transition:all .3s ease;position:relative;justify-content:center;overflow:hidden}.chat-wrapper[_ngcontent-%COMP%]{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden;background:transparent;width:100%;padding:2.5rem 0 1.5rem;display:flex;justify-content:center}.chat-wrapper[_ngcontent-%COMP%] .chat-center[_ngcontent-%COMP%]{max-width:760px;width:100%;margin:0;padding:0 2rem}@media(max-width:768px){.chat-wrapper[_ngcontent-%COMP%] .chat-center[_ngcontent-%COMP%]{padding:0 1rem}}.welcome-section[_ngcontent-%COMP%]{flex-shrink:0;text-align:center;padding:2rem 1rem;animation:_ngcontent-%COMP%_fadeInUp .8s ease-out;display:flex;justify-content:center;align-items:center;width:100%;min-width:0;overflow:hidden}@keyframes _ngcontent-%COMP%_fadeInUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.input-section[_ngcontent-%COMP%]{flex-shrink:0;position:relative;border-top:none;background:transparent;box-shadow:none;padding:2.5rem 0 2rem;overflow-y:visible;max-height:none;width:100%;z-index:10;pointer-events:none;display:flex;justify-content:center}.input-center[_ngcontent-%COMP%]{max-width:760px;width:100%;margin:0;padding:0 2rem;display:flex;justify-content:center;align-items:end;position:relative;pointer-events:auto}@media(max-width:768px){.input-center[_ngcontent-%COMP%]{padding:0 1rem}}.input-glass[_ngcontent-%COMP%]{background:none;box-shadow:none;width:100%;min-height:64px;display:flex;align-items:stretch;gap:0;pointer-events:auto;position:relative;overflow:visible}.input-glass[_ngcontent-%COMP%] app-chat-textarea[_ngcontent-%COMP%]{width:100%;min-width:0;flex:1 1 auto;align-self:stretch;display:flex}body.dark[_nghost-%COMP%], body.dark [_nghost-%COMP%], [_ngcontent-%COMP%]:root[data-theme=dark] .input-glass[_ngcontent-%COMP%]{background:#24283073;border-color:#b4c8ff17;box-shadow:0 8px 32px #0000002b,0 1.5px 8px #00000012}.choice-overlay[_ngcontent-%COMP%]{z-index:10;width:100%;display:flex;justify-content:center;align-items:center}.upload-status[_ngcontent-%COMP%]{position:fixed;bottom:100px;left:50%;transform:translate(-50%);z-index:1000;display:flex;align-items:center;padding:12px 20px;background:var(--glass-bg);backdrop-filter:var(--glass-backdrop-blur);-webkit-backdrop-filter:var(--glass-backdrop-blur);border:1px solid var(--glass-border);border-radius:16px;font-size:.9em;color:var(--color-text);box-shadow:var(--glass-shadow);max-width:300px;text-align:center}.upload-status.error[_ngcontent-%COMP%]{background:#ff3b3026;color:var(--color-error);border-color:#ff3b304d}@media(max-width:768px){.welcome-section[_ngcontent-%COMP%]{padding:1.5rem 1rem}.input-section[_ngcontent-%COMP%]{padding:1.5rem .75rem 1rem}.input-center[_ngcontent-%COMP%]{padding:0 .5rem}}@media print{[_nghost-%COMP%]{display:block!important;height:auto!important;overflow:visible!important}.app[_ngcontent-%COMP%]{height:auto!important;overflow:visible!important;display:block!important}.input-section[_ngcontent-%COMP%], .welcome-section[_ngcontent-%COMP%]{display:none!important}}"],data:{animation:[a("slideIn",[S(":enter",[F({transform:"translateY(100%)",opacity:0}),c("300ms ease-out",F({transform:"translateY(0)",opacity:1}))]),S(":leave",[c("200ms ease-in",F({transform:"translateY(100%)",opacity:0}))])])]},changeDetection:1})};export{K as MainAppComponent};
@@ -1 +1 @@
1
- import {I}from'./chunk-Ci9l-k84.js';import {g,ao as V$1,G as G$1,w as we,de as B,dd as $,aJ as Tr,a as Gi,bS as Da,W as Vy,a7 as va,X as br,u as ue,c as U$1,h as Fw,aK as Ob,m as ws,bf as dT,o as Rg,n as hl,af as Eg,M as MC,v as bg,bg as pT,ah as aT,q as oC,ac as EC,x as iC,a9 as gC,aa as wf,ab as Cf,ag as mT}from'./main-LBRSRTYI.js';import {W as Wn,S as Se}from'./chunk-BaO2vi_O.js';import'./chunk-DjMtxVWg.js';import'./chunk-BYyTBqh4.js';var K=()=>[];function U(n,o){if(n&1){let i=gC();ws(0,"agentos-ai-model-item",4),Rg("deleteRequested",function(a){wf(i);let t=EC(2);return Cf(t.deleteModel(a))})("editRequested",function(a){wf(i);let t=EC(2);return Cf(t.editModel(a))}),hl();}if(n&2){let i=EC().$implicit,e=EC();bg("model",o)("namespaceId",e.namespaceId)("readOnly",e.isPlatformModel(i.id));}}function j(n,o){if(n&1&&oC(0,U,1,3,"agentos-ai-model-item",3),n&2){let i,e=o.$implicit,a=EC();iC((i=a.resolveModel(e.id))?0:-1,i);}}var G="__platform__",J="Platform (read-only)",V=class n{route=g(V$1);router=g(G$1);destroyRef=g(we);aiModelController=g(B);aiProviderController=g($);namespaceId=this.route.snapshot.params.namespaceId;refresh$=new Tr(void 0);isLoading=Gi(true);data$=this.refresh$.pipe(Da(()=>(this.isLoading.set(true),Vy({namespace:this.aiModelController.listByNamespaceIdAiModel(this.namespaceId),platform:this.aiModelController.listPlatformLevelAiModel().pipe(va(()=>br([]))),providers:this.aiProviderController.listAiProvider(this.namespaceId)}))));modelItems$=this.data$.pipe(ue(({namespace:o,platform:i,providers:e})=>{let a=new Map(e.map(t=>[t.id??"",t.name]));return [...i.map(t=>({id:t.id??"",name:t.alias??t.apiModelName,description:t.apiModelName,groupKey:G,groupLabel:J})),...o.map(t=>({id:t.id??"",name:t.alias??t.apiModelName,description:t.apiModelName,groupKey:t.aiProviderId,groupLabel:a.get(t.aiProviderId)??t.aiProviderId}))]}));namespaceModelsById=new Map;platformModelsById=new Map;constructor(){this.data$.pipe(U$1(this.destroyRef)).subscribe({next:({namespace:o,platform:i})=>{this.namespaceModelsById=new Map(o.map(e=>[e.id??"",e])),this.platformModelsById=new Map(i.map(e=>[e.id??"",e])),this.isLoading.set(false);},error:()=>this.isLoading.set(false)});}goBack(){this.router.navigate(["/agentos","namespaces"]);}openCreateForm(){this.router.navigate(["/agentos",this.namespaceId,"ai-models","new"]);}editModel(o){this.router.navigate(["/agentos",this.namespaceId,"ai-models",o.id,"edit"]);}deleteModel(o){this.aiModelController.deleteAiModel(o.id??"").pipe(U$1(this.destroyRef)).subscribe(()=>this.refresh$.next());}resolveModel(o){return this.namespaceModelsById.get(o)??this.platformModelsById.get(o)??null}isPlatformModel(o){return this.platformModelsById.has(o)}static \u0275fac=function(i){return new(i||n)};static \u0275cmp=Fw({type:n,selectors:[["agentos-namespace-ai-models"]],decls:5,vars:7,consts:[["aiModelItemTpl",""],["title","AI models","emptyMessage","No AI models configured yet. Add one above.","cardMinWidth","400px",3,"createRequested","items","loading","showCreate","itemTemplate"],["toolbar-start","","icon","arrow_back","title","Back",3,"action"],[3,"model","namespaceId","readOnly"],[3,"deleteRequested","editRequested","model","namespaceId","readOnly"]],template:function(i,e){if(i&1&&(ws(0,"ds-entity-list",1),dT(1,"async"),Rg("createRequested",function(){return e.openCreateForm()}),ws(2,"ds-icon-button",2),Rg("action",function(){return e.goBack()}),hl()(),Eg(3,j,1,1,"ng-template",null,0,mT)),i&2){let a=MC(4);bg("items",pT(1,4,e.modelItems$)??aT(6,K))("loading",e.isLoading())("showCreate",true)("itemTemplate",a);}},dependencies:[Wn,I,Se,Ob],encapsulation:2})};export{V as NamespaceAiModelsComponent};
1
+ import {I}from'./chunk-CxpHnwnx.js';import {g,ao as V$1,G as G$1,C as Ce,de as B,dd as $,aJ as Tr,W as Wi,bS as Da,$ as $y,a7 as va,I as br,r as re,b as U$1,j as jw,aK as Lb,k as Cs,bf as gT,n as kg,m as hl,af as wg,A as AC,_ as _g,bg as yT,ah as dT,o as aC,ac as CC,u as cC,a9 as vC,aa as Cf,ab as Tf,ag as ET}from'./main-YYHD6X7H.js';import {W as Wn,S as Se}from'./chunk-B13_C_P9.js';import'./chunk-CgNkwpQ7.js';import'./chunk-FMHkoXwM.js';var K=()=>[];function U(n,o){if(n&1){let i=vC();Cs(0,"agentos-ai-model-item",4),kg("deleteRequested",function(a){Cf(i);let t=CC(2);return Tf(t.deleteModel(a))})("editRequested",function(a){Cf(i);let t=CC(2);return Tf(t.editModel(a))}),hl();}if(n&2){let i=CC().$implicit,e=CC();_g("model",o)("namespaceId",e.namespaceId)("readOnly",e.isPlatformModel(i.id));}}function j(n,o){if(n&1&&aC(0,U,1,3,"agentos-ai-model-item",3),n&2){let i,e=o.$implicit,a=CC();cC((i=a.resolveModel(e.id))?0:-1,i);}}var G="__platform__",J="Platform (read-only)",V=class n{route=g(V$1);router=g(G$1);destroyRef=g(Ce);aiModelController=g(B);aiProviderController=g($);namespaceId=this.route.snapshot.params.namespaceId;refresh$=new Tr(void 0);isLoading=Wi(true);data$=this.refresh$.pipe(Da(()=>(this.isLoading.set(true),$y({namespace:this.aiModelController.listByNamespaceIdAiModel(this.namespaceId),platform:this.aiModelController.listPlatformLevelAiModel().pipe(va(()=>br([]))),providers:this.aiProviderController.listAiProvider(this.namespaceId)}))));modelItems$=this.data$.pipe(re(({namespace:o,platform:i,providers:e})=>{let a=new Map(e.map(t=>[t.id??"",t.name]));return [...i.map(t=>({id:t.id??"",name:t.alias??t.apiModelName,description:t.apiModelName,groupKey:G,groupLabel:J})),...o.map(t=>({id:t.id??"",name:t.alias??t.apiModelName,description:t.apiModelName,groupKey:t.aiProviderId,groupLabel:a.get(t.aiProviderId)??t.aiProviderId}))]}));namespaceModelsById=new Map;platformModelsById=new Map;constructor(){this.data$.pipe(U$1(this.destroyRef)).subscribe({next:({namespace:o,platform:i})=>{this.namespaceModelsById=new Map(o.map(e=>[e.id??"",e])),this.platformModelsById=new Map(i.map(e=>[e.id??"",e])),this.isLoading.set(false);},error:()=>this.isLoading.set(false)});}goBack(){this.router.navigate(["/agentos","namespaces"]);}openCreateForm(){this.router.navigate(["/agentos",this.namespaceId,"ai-models","new"]);}editModel(o){this.router.navigate(["/agentos",this.namespaceId,"ai-models",o.id,"edit"]);}deleteModel(o){this.aiModelController.deleteAiModel(o.id??"").pipe(U$1(this.destroyRef)).subscribe(()=>this.refresh$.next());}resolveModel(o){return this.namespaceModelsById.get(o)??this.platformModelsById.get(o)??null}isPlatformModel(o){return this.platformModelsById.has(o)}static \u0275fac=function(i){return new(i||n)};static \u0275cmp=jw({type:n,selectors:[["agentos-namespace-ai-models"]],decls:5,vars:7,consts:[["aiModelItemTpl",""],["title","AI models","emptyMessage","No AI models configured yet. Add one above.","cardMinWidth","400px",3,"createRequested","items","loading","showCreate","itemTemplate"],["toolbar-start","","icon","arrow_back","title","Back",3,"action"],[3,"model","namespaceId","readOnly"],[3,"deleteRequested","editRequested","model","namespaceId","readOnly"]],template:function(i,e){if(i&1&&(Cs(0,"ds-entity-list",1),gT(1,"async"),kg("createRequested",function(){return e.openCreateForm()}),Cs(2,"ds-icon-button",2),kg("action",function(){return e.goBack()}),hl()(),wg(3,j,1,1,"ng-template",null,0,ET)),i&2){let a=AC(4);_g("items",yT(1,4,e.modelItems$)??dT(6,K))("loading",e.isLoading())("showCreate",true)("itemTemplate",a);}},dependencies:[Wn,I,Se,Lb],encapsulation:2})};export{V as NamespaceAiModelsComponent};
@@ -0,0 +1,2 @@
1
+ import {O}from'./chunk-D92adUD_.js';import {R}from'./chunk-CR817PBg.js';import {N}from'./chunk-vL7dLM7S.js';import {g,G,bm as xm,C as Ce$1,W as Wi,T as TT,F,aD as Hy,r as re,b as U,j as jw,k as Cs,n as kg,m as hl,J as JC,o as aC,t as sI,u as cC,q as dC,ac as CC,v as fC,a9 as vC,w as zg,S as Sg,a8 as Kg,a5 as Dl,M as Mg,a3 as ZI,_ as _g,a6 as QI,aa as Cf,ab as Tf,cH as iC}from'./main-YYHD6X7H.js';import {l,I,f}from'./chunk-BJld3zB5.js';import {S as Se$1}from'./chunk-B13_C_P9.js';import'./chunk-CgNkwpQ7.js';import {o as z,k as _t,n as ni,J as Jn,Q as Qn,e as ei,Y as Ye,A as At,Z as Zn,l as Xn,E as En,p as An}from'./chunk-FMHkoXwM.js';import'./chunk-DaoWXYMw.js';import'./chunk-4uEZjTft.js';var D=(r,i)=>i.value;function se(r,i){r&1&&(Cs(0,"p",4),JC(1,"Loading\u2026"),hl());}function de(r,i){if(r&1){let e=vC();Cs(0,"button",18),kg("click",function(){let d=Cf(e).$implicit,_=CC(2);return Tf(_.setThemeVariant(d.value))}),Cs(1,"span",19),JC(2),hl(),Cs(3,"span",20),JC(4),hl()();}if(r&2){let e=i.$implicit,a=CC(2);zg("user-profile__theme-variant--active",a.themeVariant()===e.value),Sg("aria-pressed",a.themeVariant()===e.value),sI(2),Kg(e.label),sI(2),Kg(e.description);}}function _e(r,i){if(r&1){let e=vC();Cs(0,"button",21),kg("click",function(){let d=Cf(e).$implicit,_=CC(2);return Tf(_.setTheme(d.value))}),JC(1),hl();}if(r&2){let e=i.$implicit,a=CC(2);zg("user-profile__segmented-option--active",a.themeMode()===e.value),Sg("aria-pressed",a.themeMode()===e.value),sI(),Dl(" ",e.label," ");}}function ce(r,i){if(r&1){let e=vC();Cs(0,"button",21),kg("click",function(){let d=Cf(e).$implicit,_=CC(2);return Tf(_.setEnterKeyBehavior(d.value))}),JC(1),hl();}if(r&2){let e=i.$implicit,a=CC(2);zg("user-profile__segmented-option--active",a.enterKeyBehavior()===e.value),Sg("aria-pressed",a.enterKeyBehavior()===e.value),sI(),Dl(" ",e.label," ");}}function pe(r,i){if(r&1&&(Cs(0,"option",32),JC(1),hl()),r&2){let e=i.$implicit;_g("value",e.value),sI(),Kg(e.label);}}function me(r,i){if(r&1){let e=vC();Cs(0,"form",22),kg("ngSubmit",function(){Cf(e);let d=CC(2);return Tf(d.save())}),Cs(1,"div",5)(2,"h2",6),JC(3,"Identity"),hl(),Cs(4,"div",7)(5,"span",8),JC(6,"Email"),hl(),Cs(7,"span",23),JC(8),hl()(),Cs(9,"div",7)(10,"span",8),JC(11,"External ID"),hl(),Cs(12,"span",23),JC(13),hl()()(),Cs(14,"div",5)(15,"h2",6),JC(16,"Profile"),hl(),Cs(17,"div",7)(18,"label",24),JC(19,"First name"),hl(),Mg(20,"input",25),ZI(),hl(),Cs(21,"div",7)(22,"label",26),JC(23,"Last name"),hl(),Mg(24,"input",27),ZI(),hl(),Cs(25,"div",7)(26,"label",28),JC(27,"Bio"),hl(),Mg(28,"textarea",29),ZI(),hl(),Cs(29,"div",7)(30,"label",30),JC(31,"Language"),hl(),Cs(32,"select",31),dC(33,pe,2,2,"option",32,D),hl(),ZI(),hl()(),Cs(35,"div",33)(36,"button",34),JC(37),hl(),Cs(38,"button",35),kg("click",function(){Cf(e);let d=CC(2);return Tf(d.cancelEditing())}),JC(39,"Cancel"),hl()()();}if(r&2){let e=CC(),a=CC();_g("formGroup",a.form),sI(8),Kg(e.email),sI(5),Kg(e.externalId),sI(7),QI(),sI(4),QI(),sI(4),QI(),sI(4),QI(),sI(),fC(a.languageOptions),sI(3),_g("disabled",a.isSaving()),sI(),Dl(" ",a.isSaving()?"Saving\u2026":"Save changes"," ");}}function ue(r,i){r&1&&(Cs(0,"p",43),JC(1," No global configuration yet. Create one from the Integrations / AI Providers / Auth Settings pages of your namespaces. "),hl());}function fe(r,i){if(r&1){let e=vC();Cs(0,"span",50),JC(1,"Delete?"),hl(),Cs(2,"button",51),kg("click",function(){Cf(e);let d=CC().$implicit,_=CC(6);return Tf(_.confirmDelete(d))}),JC(3," Confirm "),hl(),Cs(4,"button",52),kg("click",function(){Cf(e);let d=CC(7);return Tf(d.cancelDelete())}),JC(5," Cancel "),hl();}}function ge(r,i){if(r&1){let e=vC();Cs(0,"button",52),kg("click",function(){Cf(e);let d=CC().$implicit,_=CC(6);return Tf(_.armDelete(d))}),JC(1," Delete "),hl();}}function Ce(r,i){if(r&1&&(Cs(0,"li",46)(1,"span",47),JC(2),hl(),Cs(3,"span",48),JC(4),hl(),aC(5,fe,6,0)(6,ge,2,0,"button",49),hl()),r&2){let e=i.$implicit,a=CC(6);sI(2),Kg(e.name),sI(2),Kg(e.subtitle),sI(),cC(a.isPendingDelete(e)?5:6);}}function ve(r,i){if(r&1&&(Cs(0,"h3",44),JC(1,"Integrations"),hl(),Cs(2,"ul",45),dC(3,Ce,7,3,"li",46,iC().trackEntry,true),hl()),r&2){let e=CC(5);sI(3),fC(e.recap().integrations);}}function xe(r,i){if(r&1){let e=vC();Cs(0,"span",50),JC(1,"Delete?"),hl(),Cs(2,"button",51),kg("click",function(){Cf(e);let d=CC().$implicit,_=CC(6);return Tf(_.confirmDelete(d))}),JC(3," Confirm "),hl(),Cs(4,"button",52),kg("click",function(){Cf(e);let d=CC(7);return Tf(d.cancelDelete())}),JC(5," Cancel "),hl();}}function be(r,i){if(r&1){let e=vC();Cs(0,"button",52),kg("click",function(){Cf(e);let d=CC().$implicit,_=CC(6);return Tf(_.armDelete(d))}),JC(1," Delete "),hl();}}function ye(r,i){if(r&1&&(Cs(0,"li",46)(1,"span",47),JC(2),hl(),Cs(3,"span",48),JC(4),hl(),aC(5,xe,6,0)(6,be,2,0,"button",49),hl()),r&2){let e=i.$implicit,a=CC(6);sI(2),Kg(e.name),sI(2),Kg(e.subtitle),sI(),cC(a.isPendingDelete(e)?5:6);}}function he(r,i){if(r&1&&(Cs(0,"h3",44),JC(1,"AI Providers"),hl(),Cs(2,"ul",45),dC(3,ye,7,3,"li",46,iC().trackEntry,true),hl()),r&2){let e=CC(5);sI(3),fC(e.recap().aiProviders);}}function Ee(r,i){if(r&1){let e=vC();Cs(0,"span",50),JC(1,"Delete?"),hl(),Cs(2,"button",51),kg("click",function(){Cf(e);let d=CC().$implicit,_=CC(6);return Tf(_.confirmDelete(d))}),JC(3," Confirm "),hl(),Cs(4,"button",52),kg("click",function(){Cf(e);let d=CC(7);return Tf(d.cancelDelete())}),JC(5," Cancel "),hl();}}function Pe(r,i){if(r&1){let e=vC();Cs(0,"button",52),kg("click",function(){Cf(e);let d=CC().$implicit,_=CC(6);return Tf(_.armDelete(d))}),JC(1," Delete "),hl();}}function Se(r,i){if(r&1&&(Cs(0,"li",46)(1,"span",47),JC(2),hl(),Cs(3,"span",48),JC(4),hl(),aC(5,Ee,6,0)(6,Pe,2,0,"button",49),hl()),r&2){let e=i.$implicit,a=CC(6);sI(2),Kg(e.name),sI(2),Kg(e.subtitle),sI(),cC(a.isPendingDelete(e)?5:6);}}function we(r,i){if(r&1&&(Cs(0,"h3",44),JC(1,"My global auth settings"),hl(),Cs(2,"ul",45),dC(3,Se,7,3,"li",46,iC().trackEntry,true),hl()),r&2){let e=CC(5);sI(3),fC(e.recap().authSettings);}}function ke(r,i){if(r&1&&(aC(0,ve,5,0),aC(1,he,5,0),aC(2,we,5,0)),r&2){let e=CC(4);cC(e.recap().integrations.length>0?0:-1),sI(),cC(e.recap().aiProviders.length>0?1:-1),sI(),cC(e.recap().authSettings.length>0?2:-1);}}function Me(r,i){if(r&1&&aC(0,ue,2,0,"p",43)(1,ke,3,3),r&2){let e=CC(3);cC(e.recap().total===0?0:1);}}function Oe(r,i){if(r&1){let e=vC();Cs(0,"div",17)(1,"div",5)(2,"h2",6),JC(3,"Identity"),hl(),Cs(4,"div",7)(5,"span",8),JC(6,"Email"),hl(),Cs(7,"span",36),JC(8),hl()(),Cs(9,"div",7)(10,"span",8),JC(11,"External ID"),hl(),Cs(12,"span",36),JC(13),hl()()(),Cs(14,"div",5)(15,"h2",6),JC(16,"Profile"),hl(),Cs(17,"div",7)(18,"span",8),JC(19,"First name"),hl(),Cs(20,"span",36),JC(21),hl()(),Cs(22,"div",7)(23,"span",8),JC(24,"Last name"),hl(),Cs(25,"span",36),JC(26),hl()(),Cs(27,"div",37)(28,"span",8),JC(29,"Bio"),hl(),Cs(30,"span",36),JC(31),hl()(),Cs(32,"div",7)(33,"span",8),JC(34,"Language"),hl(),Cs(35,"span",36),JC(36),hl()()(),Cs(37,"div",33)(38,"button",38),kg("click",function(){Cf(e);let d=CC(2);return Tf(d.startEditing())}),JC(39," Edit profile "),hl()(),Cs(40,"div",39)(41,"button",40),kg("click",function(){Cf(e);let d=CC(2);return Tf(d.toggleOverrides())}),Cs(42,"span",41),JC(43,"\u25B6"),hl(),JC(44," My global user configurations "),Cs(45,"span",42),JC(46),hl()(),aC(47,Me,2,1),hl()();}if(r&2){let e=CC(),a=CC();sI(8),Kg(e.email),sI(5),Kg(e.externalId),sI(8),Kg(e.firstname||"\u2014"),sI(5),Kg(e.lastname||"\u2014"),sI(5),Kg(e.bio||"\u2014"),sI(5),Kg(e.preferredLanguage||"\u2014"),sI(5),Sg("aria-expanded",a.isOverridesExpanded()),sI(),zg("user-profile__overrides-arrow--open",a.isOverridesExpanded()),sI(4),Dl("(",a.recap().total,")"),sI(),cC(a.isOverridesExpanded()?47:-1);}}function Ue(r,i){if(r&1&&(Cs(0,"div",5)(1,"h2",6),JC(2,"Appearance"),hl(),Cs(3,"div",7)(4,"span",8),JC(5,"Skin"),hl(),Cs(6,"div",9),dC(7,de,5,5,"button",10,D),hl()(),Cs(9,"div",7)(10,"span",8),JC(11,"Mode"),hl(),Cs(12,"div",11),dC(13,_e,2,4,"button",12,D),hl()()(),Cs(15,"div",5)(16,"h2",6),JC(17,"Composer"),hl(),Cs(18,"div",7)(19,"span",8),JC(20,"Enter key"),hl(),Cs(21,"div",13)(22,"div",14),dC(23,ce,2,4,"button",12,D),hl(),Cs(25,"p",15),JC(26,'In "New line" mode, press Ctrl or Cmd + Enter to send.'),hl()()()(),aC(27,me,40,5,"form",16)(28,Oe,48,11,"div",17)),r&2){let e=CC();sI(7),fC(e.themeVariantOptions),sI(6),fC(e.themeOptions),sI(10),fC(e.enterKeyOptions),sI(4),cC(e.isEditing()?27:28);}}function Te(r,i){r&1&&(Cs(0,"p",4),JC(1,"Unable to load profile."),hl());}var le=class r{userState=g(l);router=g(G);location=g(xm);destroyRef=g(Ce$1);integrationState=g(N);providerState=g(O);authSettingState=g(R);themePort=g(I);preferencesPort=g(f);isEditing=Wi(false);isLoading=Wi(false);isSaving=Wi(false);isOverridesExpanded=Wi(false);currentUser=this.userState.currentUser;theme=this.themePort.theme;themeMode=TT(()=>this.themePort.theme().mode);themeOptions=[{value:"light",label:"Light"},{value:"dark",label:"Dark"},{value:"system",label:"System"}];themeVariant=TT(()=>this.themePort.theme().variant);themeVariantOptions=[{value:"industry",label:"Industry",description:"Bleu acier, Barlow"},{value:"terminal",label:"Terminal",description:"Ambre CRT, JetBrains Mono"}];enterKeyBehavior=this.preferencesPort.enterKeyBehavior;enterKeyOptions=[{value:"send",label:"Send"},{value:"newline",label:"New line"}];languageOptions=[{value:"",label:"No preference (English fallback)"},{value:"fr",label:"French"},{value:"de",label:"German"},{value:"es",label:"Spanish"},{value:"pt",label:"Portuguese"},{value:"it",label:"Italian"},{value:"nl",label:"Dutch"},{value:"pl",label:"Polish"},{value:"ja",label:"Japanese"},{value:"zh",label:"Chinese"}];form=new z({firstname:new _t("",{nonNullable:true}),lastname:new _t("",{nonNullable:true}),bio:new _t("",{nonNullable:true}),preferredLanguage:new _t("",{nonNullable:true})});recap=F(Hy([this.integrationState.userGlobal$,this.providerState.userGlobal$,this.authSettingState.userGlobal$]).pipe(re(([i,e,a])=>{let d=i.map(g=>({category:"integration",id:g.id??"",name:g.name,subtitle:g.integrationType})),_=e.map(g=>({category:"aiProvider",id:g.id??"",name:g.name,subtitle:g.apiType})),I=a.map(g=>({category:"authSetting",id:g.id??"",name:g.name,subtitle:g.authType}));return {integrations:d,aiProviders:_,authSettings:I,total:d.length+_.length+I.length}})),{initialValue:{integrations:[],aiProviders:[],authSettings:[],total:0}});ngOnInit(){if(this.currentUser()){this.syncFormFromState();return}this.isLoading.set(true),this.userState.loadMe().pipe(U(this.destroyRef)).subscribe({next:()=>{this.syncFormFromState(),this.isLoading.set(false);},error:()=>this.isLoading.set(false)});}startEditing(){this.syncFormFromState(),this.isEditing.set(true);}cancelEditing(){this.isEditing.set(false);}setTheme(i){this.themePort.setTheme({variant:this.themePort.theme().variant,mode:i});}setThemeVariant(i){this.themePort.setTheme({variant:i,mode:this.themePort.theme().mode});}setEnterKeyBehavior(i){this.preferencesPort.setEnterKeyBehavior(i);}save(){if(this.isSaving())return;this.isSaving.set(true);let i=this.form.controls.preferredLanguage.value.trim();this.userState.updateMe({firstname:this.form.controls.firstname.value.trim()||void 0,lastname:this.form.controls.lastname.value.trim()||void 0,bio:this.form.controls.bio.value.trim()||void 0,preferredLanguage:i||void 0}).pipe(U(this.destroyRef)).subscribe({next:()=>{this.isSaving.set(false),this.isEditing.set(false);},error:()=>this.isSaving.set(false)});}toggleOverrides(){this.isOverridesExpanded.update(i=>!i),this.pendingDeleteKey.set(null);}pendingDeleteKey=Wi(null);isPendingDelete(i){return this.pendingDeleteKey()===this.entryKey(i)}armDelete(i){i.id&&this.pendingDeleteKey.set(this.entryKey(i));}cancelDelete(){this.pendingDeleteKey.set(null);}confirmDelete(i){if(!i.id)return;this.pendingDeleteKey.set(null),(i.category==="integration"?this.integrationState.delete(i.id,"userGlobal"):i.category==="authSetting"?this.authSettingState.delete(i.id,"userGlobal"):this.providerState.delete(i.id,"userGlobal")).pipe(U(this.destroyRef)).subscribe({error:a=>{console.error(`[UserProfile] Delete failed for ${i.category}:${i.id}:`,a);}});}entryKey(i){return `${i.category}:${i.id}`}goBack(){window.history.length>1?this.location.back():this.router.navigate(["/agentos"]);}trackEntry(i,e){return this.entryKey(e)}syncFormFromState(){let i=this.currentUser();i&&this.form.setValue({firstname:i.firstname??"",lastname:i.lastname??"",bio:i.bio??"",preferredLanguage:i.preferredLanguage??""});}static \u0275fac=function(e){return new(e||r)};static \u0275cmp=jw({type:r,selectors:[["agentos-user-profile"]],decls:8,vars:1,consts:[[1,"user-profile"],[1,"user-profile__header"],["icon","arrow_back","title","Back",3,"action"],[1,"user-profile__title"],[1,"user-profile__loading"],[1,"user-profile__section"],[1,"user-profile__section-title"],[1,"user-profile__field"],[1,"user-profile__label"],[1,"user-profile__theme-variants"],["type","button",1,"user-profile__theme-variant",3,"user-profile__theme-variant--active"],["role","group","aria-label","Color mode",1,"user-profile__segmented"],["type","button",1,"user-profile__segmented-option",3,"user-profile__segmented-option--active"],[1,"user-profile__field-control"],["role","group","aria-label","Enter key behavior",1,"user-profile__segmented"],[1,"user-profile__hint"],[1,"user-profile__form",3,"formGroup"],[1,"user-profile__view"],["type","button",1,"user-profile__theme-variant",3,"click"],[1,"user-profile__theme-variant-name"],[1,"user-profile__theme-variant-desc"],["type","button",1,"user-profile__segmented-option",3,"click"],[1,"user-profile__form",3,"ngSubmit","formGroup"],[1,"user-profile__value","user-profile__value--readonly"],["for","up-firstname",1,"user-profile__label"],["id","up-firstname","type","text","placeholder","Your first name","formControlName","firstname","autocomplete","given-name",1,"user-profile__input"],["for","up-lastname",1,"user-profile__label"],["id","up-lastname","type","text","placeholder","Your last name","formControlName","lastname","autocomplete","family-name",1,"user-profile__input"],["for","up-bio",1,"user-profile__label"],["id","up-bio","placeholder","A short description about yourself","formControlName","bio","rows","4",1,"user-profile__input","user-profile__input--textarea"],["for","up-preferredLanguage",1,"user-profile__label"],["id","up-preferredLanguage","formControlName","preferredLanguage",1,"user-profile__input","user-profile__select"],[3,"value"],[1,"user-profile__actions"],["type","submit",1,"user-profile__btn","user-profile__btn--primary",3,"disabled"],["type","button",1,"user-profile__btn",3,"click"],[1,"user-profile__value"],[1,"user-profile__field","user-profile__field--bio"],["type","button",1,"user-profile__btn","user-profile__btn--primary",3,"click"],[1,"user-profile__overrides"],["type","button",1,"user-profile__overrides-toggle",3,"click"],[1,"user-profile__overrides-arrow"],[1,"user-profile__overrides-count"],[1,"user-profile__overrides-empty"],[1,"user-profile__overrides-subtitle"],[1,"user-profile__overrides-list"],[1,"user-profile__overrides-row"],[1,"user-profile__overrides-name"],[1,"user-profile__overrides-subtitle-text"],["type","button",1,"user-profile__overrides-delete"],[1,"user-profile__overrides-confirm-label"],["type","button",1,"user-profile__overrides-delete","user-profile__overrides-delete--confirm",3,"click"],["type","button",1,"user-profile__overrides-delete",3,"click"]],template:function(e,a){if(e&1&&(Cs(0,"div",0)(1,"header",1)(2,"ds-icon-button",2),kg("action",function(){return a.goBack()}),hl(),Cs(3,"h1",3),JC(4,"My profile"),hl()(),aC(5,se,2,0,"p",4)(6,Ue,29,1)(7,Te,2,0,"p",4),hl()),e&2){let d;sI(5),cC(a.isLoading()?5:(d=a.currentUser())?6:7,d);}},dependencies:[ni,Jn,Qn,ei,Ye,At,Zn,Xn,En,An,Se$1],styles:[`.user-profile[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:2rem;max-width:560px;margin:0 auto;padding:2rem 1rem}.user-profile__header[_ngcontent-%COMP%]{display:flex;flex-direction:row;align-items:center;gap:.5rem}.user-profile__back[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:.375rem;background:none;border:none;padding:0;cursor:pointer;font-size:.875rem;color:var(--color-accent)}.user-profile__back[_ngcontent-%COMP%]:hover{text-decoration:underline}.user-profile__back-icon[_ngcontent-%COMP%]{font-size:1rem;line-height:1}.user-profile__title[_ngcontent-%COMP%]{margin:0;font-size:1.5rem;font-weight:700;color:var(--color-text);letter-spacing:-.02em}.user-profile__loading[_ngcontent-%COMP%]{color:var(--color-text-secondary);font-size:.9rem;margin:0}.user-profile__view[_ngcontent-%COMP%], .user-profile__form[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:2rem}.user-profile__section[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:1rem}.user-profile__section-title[_ngcontent-%COMP%]{margin:0;font-family:var(--font-heading);font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.12em;color:var(--color-neutral-500);border-bottom:1px solid var(--color-divider);padding-bottom:.5rem}.user-profile__field[_ngcontent-%COMP%]{display:grid;grid-template-columns:140px 1fr;align-items:baseline;gap:.75rem}.user-profile__field--bio[_ngcontent-%COMP%]{align-items:start}.user-profile__label[_ngcontent-%COMP%]{font-size:.875rem;font-weight:500;color:var(--color-text-secondary);white-space:nowrap}.user-profile__value[_ngcontent-%COMP%]{font-size:.9375rem;color:var(--color-text);word-break:break-word;white-space:pre-wrap}.user-profile__value--readonly[_ngcontent-%COMP%]{color:var(--color-text-secondary);font-size:.875rem}.user-profile__segmented[_ngcontent-%COMP%]{display:inline-flex;justify-self:start;border:1px solid var(--color-divider);overflow:hidden}.user-profile__segmented-option[_ngcontent-%COMP%]{padding:.4rem .85rem;background:transparent;border:none;border-right:1px solid var(--color-divider);color:var(--color-text-secondary);font-size:.875rem;cursor:pointer;transition:background .15s ease,color .15s ease}.user-profile__segmented-option[_ngcontent-%COMP%]:last-child{border-right:none}.user-profile__segmented-option[_ngcontent-%COMP%]:hover{background:var(--color-bg-hover)}.user-profile__segmented-option--active[_ngcontent-%COMP%]{background:var(--color-accent);color:#fff}.user-profile__segmented-option--active[_ngcontent-%COMP%]:hover{background:var(--color-accent-700)}.user-profile__field-control[_ngcontent-%COMP%]{display:flex;flex-direction:column;align-items:flex-start;gap:.4rem}.user-profile__hint[_ngcontent-%COMP%]{margin:0;font-size:.8rem;color:var(--color-text-secondary)}.user-profile__select[_ngcontent-%COMP%]{appearance:none;cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%236e6e73' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .75rem center;padding-right:2.25rem}.user-profile__input[_ngcontent-%COMP%]{width:100%;padding:.625rem .875rem;border:1px solid var(--color-divider);background:var(--color-surface);color:var(--color-text);font-size:.9375rem;font-family:inherit;outline:none;box-sizing:border-box;border-radius:0;transition:border-color .15s ease;resize:none}.user-profile__input[_ngcontent-%COMP%]:focus{border-color:var(--color-accent)}.user-profile__input[_ngcontent-%COMP%]::placeholder{color:var(--color-neutral-500)}.user-profile__input--textarea[_ngcontent-%COMP%]{line-height:1.5;resize:vertical}.user-profile__actions[_ngcontent-%COMP%]{display:flex;gap:.75rem;padding-top:.5rem}.user-profile__btn[_ngcontent-%COMP%]{padding:.6rem 1.25rem;border:1px solid var(--color-divider);background:transparent;color:var(--color-text);font-size:13px;font-family:var(--font-heading);font-weight:600;cursor:pointer;border-radius:0;transition:background .15s ease,border-color .15s ease}.user-profile__btn[_ngcontent-%COMP%]:hover:not(:disabled){background:var(--color-bg-hover);border-color:var(--color-neutral-500)}.user-profile__btn[_ngcontent-%COMP%]:disabled{opacity:.45;cursor:not-allowed}.user-profile__btn--primary[_ngcontent-%COMP%]{background:var(--color-accent);border-color:var(--color-accent);color:#fff}.user-profile__btn--primary[_ngcontent-%COMP%]:hover:not(:disabled){background:var(--color-accent-700);border-color:var(--color-accent-700)}.user-profile__theme-variants[_ngcontent-%COMP%]{display:flex;gap:8px;justify-self:start}.user-profile__theme-variant[_ngcontent-%COMP%]{display:flex;flex-direction:column;align-items:flex-start;gap:3px;padding:10px 16px;border:1px solid var(--color-divider);background:transparent;cursor:pointer;min-width:120px;transition:background .12s,border-color .12s}.user-profile__theme-variant[_ngcontent-%COMP%]:hover{background:var(--color-bg-hover);border-color:var(--color-neutral-500)}.user-profile__theme-variant--active[_ngcontent-%COMP%]{border-color:var(--color-accent);background:color-mix(in srgb,var(--color-accent) 8%,transparent)}.user-profile__theme-variant-name[_ngcontent-%COMP%]{font-family:var(--font-heading);font-size:13px;font-weight:600;color:var(--color-text)}.user-profile__theme-variant-desc[_ngcontent-%COMP%]{font-size:11px;color:var(--color-text-secondary);font-family:var(--font-body)}.user-profile__overrides[_ngcontent-%COMP%]{margin-top:1rem;padding-top:1rem;border-top:1px solid var(--color-divider)}.user-profile__overrides-toggle[_ngcontent-%COMP%]{background:transparent;border:none;padding:.25rem 0;font-size:.85rem;color:var(--color-text-secondary);cursor:pointer;display:flex;align-items:center;gap:.4rem}.user-profile__overrides-toggle[_ngcontent-%COMP%]:hover{color:var(--color-text)}.user-profile__overrides-arrow[_ngcontent-%COMP%]{display:inline-block;font-size:.65rem;transition:transform .15s ease}.user-profile__overrides-arrow--open[_ngcontent-%COMP%]{transform:rotate(90deg)}.user-profile__overrides-count[_ngcontent-%COMP%]{color:var(--color-text-tertiary)}.user-profile__overrides-empty[_ngcontent-%COMP%]{font-size:.8rem;color:var(--color-text-secondary);font-style:italic;padding:.5rem 0 0;margin:0}.user-profile__overrides-subtitle[_ngcontent-%COMP%]{font-family:var(--font-heading);font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.12em;color:var(--color-neutral-500);margin:.75rem 0 .25rem}.user-profile__overrides-list[_ngcontent-%COMP%]{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:.25rem}.user-profile__overrides-row[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.5rem;padding:.4rem .5rem;font-size:.85rem;border-radius:0}.user-profile__overrides-row[_ngcontent-%COMP%]:hover{background:var(--color-bg-hover)}.user-profile__overrides-name[_ngcontent-%COMP%]{flex:1;color:var(--color-text);font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.user-profile__overrides-subtitle-text[_ngcontent-%COMP%]{font-size:.75rem;color:var(--color-text-secondary);font-family:var(--font-heading)}.user-profile__overrides-confirm-label[_ngcontent-%COMP%]{font-size:11px;font-family:var(--font-heading);font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--red-deep);white-space:nowrap}.user-profile__overrides-delete[_ngcontent-%COMP%]{background:transparent;border:1px solid transparent;font-size:11px;font-family:var(--font-heading);font-weight:600;color:var(--color-neutral-500);cursor:pointer;padding:3px 8px;border-radius:0;transition:color .12s,background .12s,border-color .12s}.user-profile__overrides-delete[_ngcontent-%COMP%]:hover{color:var(--red);background:color-mix(in srgb,var(--red) 10%,transparent);border-color:var(--red)}.user-profile__overrides-delete--confirm[_ngcontent-%COMP%]{border-color:var(--red);background:var(--red);color:#fff}.user-profile__overrides-delete--confirm[_ngcontent-%COMP%]:hover{background:var(--red-deep);border-color:var(--red-deep)}`]})};
2
+ export{le as UserProfileComponent};
@@ -1 +1 @@
1
- import {i}from'./chunk-BDaTUrH4.js';import {l}from'./chunk-R-GmZrHu.js';import {g as g$1,dd as $,aJ as Tr,aD as jy,bS as Da,a7 as va,X as br,u as ue,cE as Od,bU as kd,b as P,Y as x}from'./main-LBRSRTYI.js';var g="none",N="me",O=class p{nsController=g$1($);userState=g$1(l);refresh$=new Tr(void 0);namespaceId$=new Tr(null);vm$=jy([this.namespaceId$,this.refresh$]).pipe(Da(([e])=>{let r=this.loadPlatformProviders().pipe(va(()=>br([])));return e?jy([r,this.loadNamespaceProviders(e).pipe(va(()=>br([]))),this.loadUserProviders(e).pipe(va(()=>br([]))),this.loadUserProviders("global").pipe(va(()=>br([])))]).pipe(ue(([i,n,s,t])=>({platform:i,namespace:n,userOnNs:s,userGlobal:t}))):jy([r,this.loadNamespaceProviders("").pipe(va(()=>br([]))),this.loadUserProviders("global").pipe(va(()=>br([])))]).pipe(ue(([i,n,s])=>({platform:i,namespace:n,userOnNs:[],userGlobal:s})))}),Od({bufferSize:1,refCount:true}));setNamespace(e){this.namespaceId$.value!==e&&this.namespaceId$.next(e);}refresh(){this.refresh$.next();}loadUserProviders(e){let r=e==="global"?g:e;return this.nsController.listAiProvider(r,N)}userGlobal$=i(this.refresh$,()=>this.loadUserProviders("global"),[]);loadPlatformProviders(){return this.nsController.listAiProvider(g)}loadNamespaceProviders(e){return e?this.nsController.listAiProvider(e):br([])}getById(e,r){return this.nsController.getByIdAiProvider(e)}create(e,r,i){let s=this.userState.currentUser()?.id;if((r==="userOnNs"||r==="userGlobal")&&!s)throw new Error(`Cannot create ${r} provider before UserStateService.loadMe() resolves \u2014 call loadMe() at app init`);if(r==="namespace"){if(i===void 0||i==="")throw new Error("Cannot create namespace-scoped provider without a namespaceId");let S={name:e.name,apiType:e.apiType,description:e.description,baseUrl:e.baseUrl,apiKey:e.apiKey,headers:e.headers??void 0,namespaceId:i??void 0};return this.nsController.createAiProvider(S).pipe(kd(()=>this.refresh()))}if(r==="userOnNs"&&!i)throw new Error("Cannot create userOnNs provider without a namespaceId");let t={name:e.name,apiType:e.apiType,description:e.description,baseUrl:e.baseUrl,apiKey:e.apiKey,headers:e.headers??void 0,userId:s,namespaceId:r==="userOnNs"?i:void 0};return this.nsController.createAiProvider(t).pipe(kd(()=>this.refresh()))}update(e,r,i,n){let s=r.apiKey===null?{}:{apiKey:r.apiKey},t=P({name:r.name,apiType:r.apiType,description:r.description,baseUrl:r.baseUrl,headers:r.headers??void 0,namespaceId:n.namespaceId,userId:n.userId},s);return this.nsController.updateAiProvider(e,t).pipe(kd(()=>this.refresh()))}delete(e,r){return this.nsController.deleteAiProvider(e).pipe(kd(()=>this.refresh()))}static \u0275fac=function(r){return new(r||p)};static \u0275prov=x({token:p,factory:p.\u0275fac,providedIn:"root"})};export{O};
1
+ import {i}from'./chunk-DaoWXYMw.js';import {l}from'./chunk-BJld3zB5.js';import {g as g$1,dd as $,aJ as Tr,aD as Hy,bS as Da,a7 as va,I as br,r as re,cE as kd,bU as Fd,a as P,K as x}from'./main-YYHD6X7H.js';var g="none",N="me",O=class p{nsController=g$1($);userState=g$1(l);refresh$=new Tr(void 0);namespaceId$=new Tr(null);vm$=Hy([this.namespaceId$,this.refresh$]).pipe(Da(([e])=>{let r=this.loadPlatformProviders().pipe(va(()=>br([])));return e?Hy([r,this.loadNamespaceProviders(e).pipe(va(()=>br([]))),this.loadUserProviders(e).pipe(va(()=>br([]))),this.loadUserProviders("global").pipe(va(()=>br([])))]).pipe(re(([i,n,s,t])=>({platform:i,namespace:n,userOnNs:s,userGlobal:t}))):Hy([r,this.loadNamespaceProviders("").pipe(va(()=>br([]))),this.loadUserProviders("global").pipe(va(()=>br([])))]).pipe(re(([i,n,s])=>({platform:i,namespace:n,userOnNs:[],userGlobal:s})))}),kd({bufferSize:1,refCount:true}));setNamespace(e){this.namespaceId$.value!==e&&this.namespaceId$.next(e);}refresh(){this.refresh$.next();}loadUserProviders(e){let r=e==="global"?g:e;return this.nsController.listAiProvider(r,N)}userGlobal$=i(this.refresh$,()=>this.loadUserProviders("global"),[]);loadPlatformProviders(){return this.nsController.listAiProvider(g)}loadNamespaceProviders(e){return e?this.nsController.listAiProvider(e):br([])}getById(e,r){return this.nsController.getByIdAiProvider(e)}create(e,r,i){let s=this.userState.currentUser()?.id;if((r==="userOnNs"||r==="userGlobal")&&!s)throw new Error(`Cannot create ${r} provider before UserStateService.loadMe() resolves \u2014 call loadMe() at app init`);if(r==="namespace"){if(i===void 0||i==="")throw new Error("Cannot create namespace-scoped provider without a namespaceId");let S={name:e.name,apiType:e.apiType,description:e.description,baseUrl:e.baseUrl,apiKey:e.apiKey,headers:e.headers??void 0,namespaceId:i??void 0};return this.nsController.createAiProvider(S).pipe(Fd(()=>this.refresh()))}if(r==="userOnNs"&&!i)throw new Error("Cannot create userOnNs provider without a namespaceId");let t={name:e.name,apiType:e.apiType,description:e.description,baseUrl:e.baseUrl,apiKey:e.apiKey,headers:e.headers??void 0,userId:s,namespaceId:r==="userOnNs"?i:void 0};return this.nsController.createAiProvider(t).pipe(Fd(()=>this.refresh()))}update(e,r,i,n){let s=r.apiKey===null?{}:{apiKey:r.apiKey},t=P({name:r.name,apiType:r.apiType,description:r.description,baseUrl:r.baseUrl,headers:r.headers??void 0,namespaceId:n.namespaceId,userId:n.userId},s);return this.nsController.updateAiProvider(e,t).pipe(Fd(()=>this.refresh()))}delete(e,r){return this.nsController.deleteAiProvider(e).pipe(Fd(()=>this.refresh()))}static \u0275fac=function(r){return new(r||p)};static \u0275prov=x({token:p,factory:p.\u0275fac,providedIn:"root"})};export{O};
@@ -1 +1 @@
1
- import {g,G,cb as LB,cc as PB,a as Gi,da as Ce,dk as me,h as Fw,m as ws,Q as QC,n as hl,q as oC,t as nI,a8 as Yg,A as Ug,a5 as Dl,x as iC,ac as EC,a9 as gC,o as Rg,v as bg,aa as wf,ab as Cf}from'./main-LBRSRTYI.js';import {Z as Zn,S as Se}from'./chunk-BaO2vi_O.js';function L(n,t){if(n&1&&(ws(0,"span",5),QC(1),hl()),n&2){let e=EC();nI(),Yg(e.definition().description);}}function q(n,t){if(n&1&&(ws(0,"span",7),QC(1),hl()),n&2){let e=EC();nI(),Dl("Next: ",e.nextRunLabel);}}function U(n,t){if(n&1&&(ws(0,"span",8),QC(1),hl()),n&2){let e=EC();nI(),Dl("Last run: ",e.lastRunLabel);}}function $(n,t){if(n&1){let e=gC();ws(0,"span",12),QC(1,"Delete?"),hl(),ws(2,"ds-icon-button",13),Rg("action",function(){wf(e);let a=EC(2);return Cf(a.onDeleteConfirmed())}),hl(),ws(3,"ds-icon-button",14),Rg("action",function(){wf(e);let a=EC(2);return Cf(a.onDeleteCancelled())}),hl();}}function N(n,t){if(n&1){let e=gC();ws(0,"ds-kebab-menu",15),Rg("itemSelected",function(a){wf(e);let p=EC(2);return Cf(p.onMenuAction(a))}),hl();}if(n&2){let e=EC(2);bg("items",e.menuItems);}}function V(n,t){if(n&1&&(ws(0,"div",10),oC(1,$,4,0)(2,N,1,1,"ds-kebab-menu",11),hl()),n&2){let e=EC();Ug("scheduled-prompt-item__actions--confirming",e.pendingDelete()),nI(),iC(e.pendingDelete()?1:2);}}var R=class n{router=g(G);definition=LB.required();namespaceId=LB(void 0);platformMode=LB(false);readOnly=LB(false);enableRequested=PB();disableRequested=PB();deleteRequested=PB();pendingDelete=Gi(false);get scheduleLabel(){let{recurrence:t}=this.definition(),e=t.unit,i=t.timeUtc,a=e===Ce.WEEK?"week":"month",p=e===Ce.WEEK&&t.days?.length?` (${t.days.map(_=>me[_]??_).join(", ")})`:"";return `Every ${a}${p} at ${i} UTC`}formatInstant(t){if(!t)return null;let e=new Date(t),i=e.getUTCDate(),a=e.toLocaleString("en-GB",{month:"short",timeZone:"UTC"}),p=e.getUTCFullYear(),_=String(e.getUTCHours()).padStart(2,"0"),T=String(e.getUTCMinutes()).padStart(2,"0");return `${i} ${a} ${p} at ${_}:${T} UTC`}get nextRunLabel(){return this.formatInstant(this.definition().nextRunAt)}get lastRunLabel(){return this.formatInstant(this.definition().lastRunAt)}get menuItems(){let t=this.definition();return [{key:"edit",label:"Edit scheduled prompt",icon:"edit"},{key:"toggle",label:t.enabled?"Disable":"Enable",icon:t.enabled?"toggle_on":"toggle_off"},{key:"delete",label:"Delete scheduled prompt",icon:"delete",variant:"danger"}]}onMenuAction(t){let e=this.definition();switch(t){case "edit":this.platformMode()?this.router.navigate(["/agentos","admin","scheduled-prompts",e.id,"edit"]):this.router.navigate(["/agentos",this.namespaceId(),"scheduled-prompts",e.id,"edit"]);break;case "toggle":e.enabled?this.disableRequested.emit(e):this.enableRequested.emit(e);break;case "delete":this.pendingDelete.set(true);break}}onDeleteConfirmed(){this.pendingDelete.set(false),this.deleteRequested.emit(this.definition());}onDeleteCancelled(){this.pendingDelete.set(false);}static \u0275fac=function(e){return new(e||n)};static \u0275cmp=Fw({type:n,selectors:[["agentos-scheduled-prompt-item"]],inputs:{definition:[1,"definition"],namespaceId:[1,"namespaceId"],platformMode:[1,"platformMode"],readOnly:[1,"readOnly"]},outputs:{enableRequested:"enableRequested",disableRequested:"disableRequested",deleteRequested:"deleteRequested"},decls:13,vars:11,consts:[["role","listitem",1,"scheduled-prompt-item"],[1,"scheduled-prompt-item__body"],[1,"scheduled-prompt-item__header"],[1,"scheduled-prompt-item__name"],[1,"scheduled-prompt-item__status"],[1,"scheduled-prompt-item__description"],[1,"scheduled-prompt-item__schedule"],[1,"scheduled-prompt-item__next-run"],[1,"scheduled-prompt-item__last-run"],[1,"scheduled-prompt-item__actions",3,"scheduled-prompt-item__actions--confirming"],[1,"scheduled-prompt-item__actions"],[3,"items"],[1,"scheduled-prompt-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,i){e&1&&(ws(0,"div",0)(1,"div",1)(2,"div",2)(3,"span",3),QC(4),hl(),ws(5,"span",4),QC(6),hl()(),oC(7,L,2,1,"span",5),ws(8,"span",6),QC(9),hl(),oC(10,q,2,1,"span",7),oC(11,U,2,1,"span",8),hl(),oC(12,V,3,3,"div",9),hl()),e&2&&(nI(4),Yg(i.definition().name),nI(),Ug("scheduled-prompt-item__status--enabled",i.definition().enabled)("scheduled-prompt-item__status--disabled",!i.definition().enabled),nI(),Dl(" ",i.definition().enabled?"Enabled":"Disabled"," "),nI(),iC(i.definition().description?7:-1),nI(2),Yg(i.scheduleLabel),nI(),iC(i.nextRunLabel?10:-1),nI(),iC(i.lastRunLabel?11:-1),nI(),iC(i.readOnly()?-1:12));},dependencies:[Zn,Se],styles:[".scheduled-prompt-item[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.5rem;padding:.75rem 1rem;border-radius:10px;border:1px solid var(--color-border, rgba(0, 0, 0, .08));background:var(--glass-bg, rgba(255, 255, 255, .72));-webkit-backdrop-filter:var(--glass-backdrop-blur, blur(20px));backdrop-filter:var(--glass-backdrop-blur, blur(20px));transition:background .15s ease,border-color .15s ease}.scheduled-prompt-item[_ngcontent-%COMP%]:hover{background:var(--color-bg-hover, rgba(0, 0, 0, .04));border-color:var(--color-primary, #007aff)}.scheduled-prompt-item__body[_ngcontent-%COMP%]{flex:1;display:flex;flex-direction:column;gap:.2rem;min-width:0}.scheduled-prompt-item__header[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.5rem;min-width:0}.scheduled-prompt-item__name[_ngcontent-%COMP%]{font-size:.95rem;font-weight:500;color:var(--color-text, #1d1d1f);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1;min-width:0}.scheduled-prompt-item__status[_ngcontent-%COMP%]{font-size:.7rem;font-weight:600;padding:.15rem .5rem;border-radius:999px;white-space:nowrap;flex-shrink:0;text-transform:uppercase;letter-spacing:.04em}.scheduled-prompt-item__status--enabled[_ngcontent-%COMP%]{background:var(--color-success-bg, rgba(52, 199, 89, .12));color:var(--color-success, #34c759)}.scheduled-prompt-item__status--disabled[_ngcontent-%COMP%]{background:var(--color-warning-bg, rgba(255, 159, 10, .12));color:var(--color-warning, #ff9f0a)}.scheduled-prompt-item__description[_ngcontent-%COMP%]{font-size:.8rem;color:var(--color-text-secondary, #6e6e73);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.scheduled-prompt-item__schedule[_ngcontent-%COMP%]{font-size:.8rem;color:var(--color-text-secondary, #6e6e73);font-family:monospace;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.scheduled-prompt-item__next-run[_ngcontent-%COMP%]{font-size:.8rem;color:var(--color-text, #1d1d1f);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.scheduled-prompt-item__last-run[_ngcontent-%COMP%]{font-size:.75rem;color:var(--color-text-secondary, #6e6e73);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.scheduled-prompt-item__actions[_ngcontent-%COMP%]{flex-shrink:0;display:flex;align-items:center;gap:.125rem;opacity:0;transition:opacity .15s ease}.scheduled-prompt-item[_ngcontent-%COMP%]:hover .scheduled-prompt-item__actions[_ngcontent-%COMP%], .scheduled-prompt-item[_ngcontent-%COMP%]:focus-within .scheduled-prompt-item__actions[_ngcontent-%COMP%]{opacity:1}.scheduled-prompt-item__actions--confirming[_ngcontent-%COMP%]{opacity:1}.scheduled-prompt-item__confirm-label[_ngcontent-%COMP%]{font-size:.8rem;font-weight:500;color:var(--color-error, #ff3b30);margin-right:.25rem;white-space:nowrap}"]})};export{R};
1
+ import {g,G,cb as JB,cc as XB,W as Wi,da as xe,dk as Ae,j as jw,k as Cs,J as JC,m as hl,o as aC,t as sI,a8 as Kg,w as zg,a5 as Dl,u as cC,ac as CC,a9 as vC,n as kg,_ as _g,aa as Cf,ab as Tf}from'./main-YYHD6X7H.js';import {Z as Zn,S as Se}from'./chunk-B13_C_P9.js';function L(n,t){if(n&1&&(Cs(0,"span",5),JC(1),hl()),n&2){let e=CC();sI(),Kg(e.definition().description);}}function q(n,t){if(n&1&&(Cs(0,"span",7),JC(1),hl()),n&2){let e=CC();sI(),Dl("Next: ",e.nextRunLabel);}}function U(n,t){if(n&1&&(Cs(0,"span",8),JC(1),hl()),n&2){let e=CC();sI(),Dl("Last run: ",e.lastRunLabel);}}function $(n,t){if(n&1){let e=vC();Cs(0,"span",12),JC(1,"Delete?"),hl(),Cs(2,"ds-icon-button",13),kg("action",function(){Cf(e);let a=CC(2);return Tf(a.onDeleteConfirmed())}),hl(),Cs(3,"ds-icon-button",14),kg("action",function(){Cf(e);let a=CC(2);return Tf(a.onDeleteCancelled())}),hl();}}function N(n,t){if(n&1){let e=vC();Cs(0,"ds-kebab-menu",15),kg("itemSelected",function(a){Cf(e);let p=CC(2);return Tf(p.onMenuAction(a))}),hl();}if(n&2){let e=CC(2);_g("items",e.menuItems);}}function V(n,t){if(n&1&&(Cs(0,"div",10),aC(1,$,4,0)(2,N,1,1,"ds-kebab-menu",11),hl()),n&2){let e=CC();zg("scheduled-prompt-item__actions--confirming",e.pendingDelete()),sI(),cC(e.pendingDelete()?1:2);}}var R=class n{router=g(G);definition=JB.required();namespaceId=JB(void 0);platformMode=JB(false);readOnly=JB(false);enableRequested=XB();disableRequested=XB();deleteRequested=XB();pendingDelete=Wi(false);get scheduleLabel(){let{recurrence:t}=this.definition(),e=t.unit,i=t.timeUtc,a=e===xe.WEEK?"week":"month",p=e===xe.WEEK&&t.days?.length?` (${t.days.map(_=>Ae[_]??_).join(", ")})`:"";return `Every ${a}${p} at ${i} UTC`}formatInstant(t){if(!t)return null;let e=new Date(t),i=e.getUTCDate(),a=e.toLocaleString("en-GB",{month:"short",timeZone:"UTC"}),p=e.getUTCFullYear(),_=String(e.getUTCHours()).padStart(2,"0"),T=String(e.getUTCMinutes()).padStart(2,"0");return `${i} ${a} ${p} at ${_}:${T} UTC`}get nextRunLabel(){return this.formatInstant(this.definition().nextRunAt)}get lastRunLabel(){return this.formatInstant(this.definition().lastRunAt)}get menuItems(){let t=this.definition();return [{key:"edit",label:"Edit scheduled prompt",icon:"edit"},{key:"toggle",label:t.enabled?"Disable":"Enable",icon:t.enabled?"toggle_on":"toggle_off"},{key:"delete",label:"Delete scheduled prompt",icon:"delete",variant:"danger"}]}onMenuAction(t){let e=this.definition();switch(t){case "edit":this.platformMode()?this.router.navigate(["/agentos","admin","scheduled-prompts",e.id,"edit"]):this.router.navigate(["/agentos",this.namespaceId(),"scheduled-prompts",e.id,"edit"]);break;case "toggle":e.enabled?this.disableRequested.emit(e):this.enableRequested.emit(e);break;case "delete":this.pendingDelete.set(true);break}}onDeleteConfirmed(){this.pendingDelete.set(false),this.deleteRequested.emit(this.definition());}onDeleteCancelled(){this.pendingDelete.set(false);}static \u0275fac=function(e){return new(e||n)};static \u0275cmp=jw({type:n,selectors:[["agentos-scheduled-prompt-item"]],inputs:{definition:[1,"definition"],namespaceId:[1,"namespaceId"],platformMode:[1,"platformMode"],readOnly:[1,"readOnly"]},outputs:{enableRequested:"enableRequested",disableRequested:"disableRequested",deleteRequested:"deleteRequested"},decls:13,vars:11,consts:[["role","listitem",1,"scheduled-prompt-item"],[1,"scheduled-prompt-item__body"],[1,"scheduled-prompt-item__header"],[1,"scheduled-prompt-item__name"],[1,"scheduled-prompt-item__status"],[1,"scheduled-prompt-item__description"],[1,"scheduled-prompt-item__schedule"],[1,"scheduled-prompt-item__next-run"],[1,"scheduled-prompt-item__last-run"],[1,"scheduled-prompt-item__actions",3,"scheduled-prompt-item__actions--confirming"],[1,"scheduled-prompt-item__actions"],[3,"items"],[1,"scheduled-prompt-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,i){e&1&&(Cs(0,"div",0)(1,"div",1)(2,"div",2)(3,"span",3),JC(4),hl(),Cs(5,"span",4),JC(6),hl()(),aC(7,L,2,1,"span",5),Cs(8,"span",6),JC(9),hl(),aC(10,q,2,1,"span",7),aC(11,U,2,1,"span",8),hl(),aC(12,V,3,3,"div",9),hl()),e&2&&(sI(4),Kg(i.definition().name),sI(),zg("scheduled-prompt-item__status--enabled",i.definition().enabled)("scheduled-prompt-item__status--disabled",!i.definition().enabled),sI(),Dl(" ",i.definition().enabled?"Enabled":"Disabled"," "),sI(),cC(i.definition().description?7:-1),sI(2),Kg(i.scheduleLabel),sI(),cC(i.nextRunLabel?10:-1),sI(),cC(i.lastRunLabel?11:-1),sI(),cC(i.readOnly()?-1:12));},dependencies:[Zn,Se],styles:[".scheduled-prompt-item[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.5rem;padding:.75rem 1rem;border-radius:10px;border:1px solid var(--color-border, rgba(0, 0, 0, .08));background:var(--glass-bg, rgba(255, 255, 255, .72));-webkit-backdrop-filter:var(--glass-backdrop-blur, blur(20px));backdrop-filter:var(--glass-backdrop-blur, blur(20px));transition:background .15s ease,border-color .15s ease}.scheduled-prompt-item[_ngcontent-%COMP%]:hover{background:var(--color-bg-hover, rgba(0, 0, 0, .04));border-color:var(--color-primary, #007aff)}.scheduled-prompt-item__body[_ngcontent-%COMP%]{flex:1;display:flex;flex-direction:column;gap:.2rem;min-width:0}.scheduled-prompt-item__header[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.5rem;min-width:0}.scheduled-prompt-item__name[_ngcontent-%COMP%]{font-size:.95rem;font-weight:500;color:var(--color-text, #1d1d1f);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1;min-width:0}.scheduled-prompt-item__status[_ngcontent-%COMP%]{font-size:.7rem;font-weight:600;padding:.15rem .5rem;border-radius:999px;white-space:nowrap;flex-shrink:0;text-transform:uppercase;letter-spacing:.04em}.scheduled-prompt-item__status--enabled[_ngcontent-%COMP%]{background:var(--color-success-bg, rgba(52, 199, 89, .12));color:var(--color-success, #34c759)}.scheduled-prompt-item__status--disabled[_ngcontent-%COMP%]{background:var(--color-warning-bg, rgba(255, 159, 10, .12));color:var(--color-warning, #ff9f0a)}.scheduled-prompt-item__description[_ngcontent-%COMP%]{font-size:.8rem;color:var(--color-text-secondary, #6e6e73);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.scheduled-prompt-item__schedule[_ngcontent-%COMP%]{font-size:.8rem;color:var(--color-text-secondary, #6e6e73);font-family:monospace;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.scheduled-prompt-item__next-run[_ngcontent-%COMP%]{font-size:.8rem;color:var(--color-text, #1d1d1f);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.scheduled-prompt-item__last-run[_ngcontent-%COMP%]{font-size:.75rem;color:var(--color-text-secondary, #6e6e73);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.scheduled-prompt-item__actions[_ngcontent-%COMP%]{flex-shrink:0;display:flex;align-items:center;gap:.125rem;opacity:0;transition:opacity .15s ease}.scheduled-prompt-item[_ngcontent-%COMP%]:hover .scheduled-prompt-item__actions[_ngcontent-%COMP%], .scheduled-prompt-item[_ngcontent-%COMP%]:focus-within .scheduled-prompt-item__actions[_ngcontent-%COMP%]{opacity:1}.scheduled-prompt-item__actions--confirming[_ngcontent-%COMP%]{opacity:1}.scheduled-prompt-item__confirm-label[_ngcontent-%COMP%]{font-size:.8rem;font-weight:500;color:var(--color-error, #ff3b30);margin-right:.25rem;white-space:nowrap}"]})};export{R};