@whoz-oss/coday-client 3.16.0 → 3.17.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/browser/{chunk-CjrWXBiR.js → chunk-0njD_aMa.js} +1 -1
- package/browser/{chunk-Dtu-PLbq.js → chunk-6WIaUDav.js} +1 -1
- package/browser/{chunk-CgqDTJ5-.js → chunk-B1OTuTxt.js} +1 -1
- package/browser/{chunk-Be1LOFvg.js → chunk-B3-4EW3s.js} +1 -1
- package/browser/{chunk-B0vRsgnD.js → chunk-B626-rya.js} +1 -1
- package/browser/{chunk-BHZY3TvC.js → chunk-B6BZBDSv.js} +1 -1
- package/browser/{chunk-jv0lz5Ah.js → chunk-B7kKWG4P.js} +1 -1
- package/browser/chunk-B7yga-a4.js +1 -0
- package/browser/{chunk-rwEyLSEP.js → chunk-BAWubWk8.js} +1 -1
- package/browser/chunk-BDaTUrH4.js +1 -0
- package/browser/{chunk-UzUd84Qf.js → chunk-BHvLB-pV.js} +1 -1
- package/browser/{chunk-Ci1jk71f.js → chunk-BJ5G7Y-a.js} +1 -1
- package/browser/{chunk-7jUQT_3F.js → chunk-BPfJALqU.js} +1 -1
- package/browser/{chunk-CFZbDe5T.js → chunk-BTX631I3.js} +1 -1
- package/browser/{chunk-CBNhmZDS.js → chunk-BVAD9f9s.js} +1 -1
- package/browser/{chunk-Dcftf7UY.js → chunk-BXkvjekT.js} +1 -1
- package/browser/{chunk-tTmeIHGS.js → chunk-BYyTBqh4.js} +1 -1
- package/browser/{chunk-CPBcDx4G.js → chunk-B_49KV6W.js} +1 -1
- package/browser/{chunk-CtkiOUdU.js → chunk-BaO2vi_O.js} +1 -1
- package/browser/{chunk-DDnWPYAA.js → chunk-BcT0wYqu.js} +1 -1
- package/browser/{chunk-YS-vAhPY.js → chunk-BdJzYh5V.js} +1 -1
- package/browser/{chunk-BTS5TBK0.js → chunk-Bgd8Jkga.js} +1 -1
- package/browser/chunk-BkN5jb4J.js +1 -0
- package/browser/{chunk-0OiZWE88.js → chunk-Brx_KbnM.js} +1 -1
- package/browser/{chunk-Bib1Seeu.js → chunk-BtEXE3Xz.js} +1 -1
- package/browser/{chunk-6gdeYlLc.js → chunk-Bu5Xq3QT.js} +1 -1
- package/browser/{chunk-C-aF2_1R.js → chunk-BwDJA6_r.js} +1 -1
- package/browser/{chunk-CGMAzvSo.js → chunk-C2VdQfMJ.js} +1 -1
- package/browser/{chunk-Dfujxxcr.js → chunk-C49BBPGm.js} +1 -1
- package/browser/{chunk-HjD5Rk4C.js → chunk-C5WD0UQE.js} +1 -1
- package/browser/{chunk-DzlrRiVM.js → chunk-CI760KmO.js} +1 -1
- package/browser/{chunk-Co81dkbz.js → chunk-CI7wYBKk.js} +1 -1
- package/browser/{chunk-BdpJ2ZCM.js → chunk-CKhGzoqa.js} +1 -1
- package/browser/{chunk-izARvh_2.js → chunk-CNAj5Eon.js} +1 -1
- package/browser/{chunk-BNS6Fgaw.js → chunk-CUz5MHdA.js} +1 -1
- package/browser/{chunk-axGY7UtD.js → chunk-CXTwGKdl.js} +1 -1
- package/browser/{chunk-SbH2L3h2.js → chunk-Ci9l-k84.js} +1 -1
- package/browser/{chunk-CbK5Lcu9.js → chunk-ClEmA_ih.js} +1 -1
- package/browser/{chunk-kvCfAm7Z.js → chunk-ClSDInQq.js} +1 -1
- package/browser/{chunk-BSSDDOqW.js → chunk-CpZK7G-Q.js} +1 -1
- package/browser/{chunk-CYulIMKp.js → chunk-CxUcyBb9.js} +1 -1
- package/browser/{chunk-BJYyjaQ6.js → chunk-D-jBfPIO.js} +1 -1
- package/browser/{chunk-CXLytVC3.js → chunk-D202v_ff.js} +1 -1
- package/browser/{chunk-BUJoEGsf.js → chunk-DCwEaE_b.js} +1 -1
- package/browser/{chunk-CtWMrBfw.js → chunk-DFQuWS_F.js} +1 -1
- package/browser/{chunk-pH1k_bet.js → chunk-DHb3-uKf.js} +1 -1
- package/browser/{chunk-IUvEtpfr.js → chunk-DKllQ3Ve.js} +1 -1
- package/browser/{chunk-DgrvmqY2.js → chunk-DMRb150M.js} +1 -1
- package/browser/{chunk-B_9LxHBv.js → chunk-DMtXGu5h.js} +1 -1
- package/browser/{chunk-swj7IkJA.js → chunk-DO3lSvop.js} +1 -1
- package/browser/{chunk-CTuHnJP4.js → chunk-DQtoh8wv.js} +1 -1
- package/browser/{chunk-S8F5_Te_.js → chunk-DjMtxVWg.js} +1 -1
- package/browser/{chunk-Bn3R3VC2.js → chunk-DjoW6kqa.js} +1 -1
- package/browser/{chunk-fhFxOLYS.js → chunk-DpHEu7EG.js} +1 -1
- package/browser/{chunk-Bhq5earA.js → chunk-DqC8XT4v.js} +1 -1
- package/browser/{chunk-gmPqDrDS.js → chunk-DqioJb1X.js} +1 -1
- package/browser/{chunk-fYErSEXN.js → chunk-DrzvCb86.js} +1 -1
- package/browser/{chunk-CwaAd8kk.js → chunk-DwFGK2iu.js} +1 -1
- package/browser/{chunk-iNIQR015.js → chunk-DxrynR3o.js} +1 -1
- package/browser/{chunk-BJeLQooO.js → chunk-DxvmpOv5.js} +1 -1
- package/browser/{chunk-C_s4Z3Dk.js → chunk-EBW8PloQ.js} +1 -1
- package/browser/{chunk-DOq0u21j.js → chunk-LVItL87L.js} +1 -1
- package/browser/{chunk-BEKR4Un_.js → chunk-P8B5rz7L.js} +1 -1
- package/browser/{chunk-BY7uKZAo.js → chunk-R-GmZrHu.js} +3 -3
- package/browser/{chunk-CiWu4t_i.js → chunk-b6g-uBR5.js} +1 -1
- package/browser/{chunk-YfG457Nc.js → chunk-bfpuueWC.js} +1 -1
- package/browser/{chunk-DQLU3kYb.js → chunk-mrKeqPKc.js} +1 -1
- package/browser/index.html +1 -1
- package/browser/{main-5PAOSHSM.js → main-LBRSRTYI.js} +14 -14
- package/package.json +1 -1
- package/browser/chunk-BEUXx3TO.js +0 -1
- package/browser/chunk-BdApeECy.js +0 -1
- package/browser/chunk-DoKoAMs6.js +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {A,b as bt,k as kt}from'./chunk-
|
|
1
|
+
import {A,b as bt,k as kt}from'./chunk-CI760KmO.js';import {z as z$2}from'./chunk-DMRb150M.js';import {_ as _i}from'./chunk-B6BZBDSv.js';import {f as f$1}from'./chunk-BHvLB-pV.js';import {Y as Ye,E as Et$1,y as yt$1,Z as Ze}from'./chunk-DjoW6kqa.js';import'./chunk-ClSDInQq.js';import {g,w as we,R as Re,G,p as pe,L,P,U,O as Ot$1,F,u as ue,E as ET,a as Gi,z as z$1,b as P$1,c as U$1,l as le,f,d as b,e as O,V,h as Fw,i as hr,j as pr,k as Gn$1,s as si,m as ws,Q as QC,n as hl,o as Rg,q as oC,S as Sg,r as cC,M as MC,t as nI,v as bg,x as iC,y as uC,A as Ug,T as Tg,B as gE,C as Pg,D as bC,H as SC,I as fy,N,J as c,K as qy,W as Vy,X as br,Y as x,Z as z$3,_ as Ue,$ as zt$2,a0 as jt,a1 as Vt$1,a2 as Nt$1,a3 as GI,a4 as aC,a5 as Dl,a6 as qI,a7 as va,a8 as Yg,a9 as gC,aa as wf,ab as Cf,ac as EC,ad as Hg}from'./main-LBRSRTYI.js';import'./chunk-DO3lSvop.js';import {x as xe,k as kt$1,C as Ct,z as ze}from'./chunk-BwDJA6_r.js';import {P as Pt$1,L as Lt$1}from'./chunk-BdJzYh5V.js';import {v as ve,n as ne}from'./chunk-BXkvjekT.js';import'./chunk-CKhGzoqa.js';import {W,k as ke$1,s as se}from'./chunk-CpZK7G-Q.js';import {c as ce,n as nt,O as Ot$2,z as zt$1,T as Tn$1,S as Sn$1,a as ae}from'./chunk-bfpuueWC.js';import {I as In$1,D as De,B as Be,E as En$1,F as Fn$1}from'./chunk-BaO2vi_O.js';import {V as Ve,n as ne$1,H as He,N as Ne}from'./chunk-DjMtxVWg.js';import {y as yt,w as wt$1,t as ti,Y as Ye$1,f as fn$1,Z as Zn,$ as $t$1,c as cn$1}from'./chunk-BYyTBqh4.js';var Ot=(a,t)=>t.name;function Et(a,t){if(a&1&&(ws(0,"mat-option",11),QC(1),hl()),a&2){let e=t.$implicit;bg("value",e),nI(),Yg(e);}}function Nt(a,t){a&1&&Sg(0,"mat-spinner",13);}function It(a,t){if(a&1&&(ws(0,"span",20),QC(1),hl()),a&2){let e=EC().$implicit;nI(),Yg(e.description);}}function At(a,t){if(a&1&&(ws(0,"mat-option",11)(1,"span",19),QC(2),hl(),oC(3,It,2,1,"span",20),hl()),a&2){let e=t.$implicit;bg("value",e.name),nI(2),Yg(e.name),nI(),iC(e.description?3:-1);}}function Vt(a,t){if(a&1&&(ws(0,"mat-option",11),QC(1),hl()),a&2){let e=t.$implicit;bg("value",e),nI(),Yg(e);}}function Ft(a,t){if(a&1){let e=gC();ws(0,"div",25)(1,"mat-form-field",8)(2,"mat-label"),QC(3,"Name"),hl(),ws(4,"input",26),Rg("input",function(i){wf(e);let l=EC(2);return Cf(l.issueNumber.set(i.target.value))}),hl()(),ws(5,"mat-form-field",27)(6,"mat-label"),QC(7,"Type"),hl(),ws(8,"mat-select",28),Rg("selectionChange",function(i){wf(e);let l=EC(2);return Cf(l.branchType.set(i.value))}),cC(9,Vt,2,2,"mat-option",11,aC),hl()()();}if(a&2){let e=EC(2);nI(4),bg("value",e.issueNumber()),nI(4),bg("value",e.branchType()),nI(),uC(e.branchTypes);}}function Gt(a,t){a&1&&Sg(0,"mat-spinner",13);}function Rt(a,t){if(a&1&&(ws(0,"mat-option",11),QC(1),hl()),a&2){let e=t.$implicit;bg("value",e),nI(),Yg(e);}}function qt(a,t){if(a&1){let e=gC();ws(0,"mat-form-field",8)(1,"mat-label"),QC(2,"Source branch"),hl(),ws(3,"input",29,4),Rg("input",function(i){wf(e);let l=EC(2);return Cf(l.onBranchSearchInput(i.target.value))})("focus",function(){wf(e);let i=MC(4),l=EC(2);return Cf(l.openPanel(i))}),hl(),oC(5,Gt,1,0,"mat-spinner",13),ws(6,"mat-autocomplete",10,5),Rg("optionSelected",function(i){wf(e);let l=EC(2);return Cf(l.selectBranch(i.option.value))}),cC(8,Rt,2,2,"mat-option",11,aC),hl()();}if(a&2){let e=MC(7),n=EC(2);nI(3),bg("value",n.branchSearch())("matAutocomplete",e)("disabled",n.isLoadingBranches()),nI(2),iC(n.isLoadingBranches()?5:-1),nI(3),uC(n.filteredBranches());}}function $t(a,t){if(a&1){let e=gC();ws(0,"div",21)(1,"button",22),Rg("click",function(){wf(e);let i=EC();return Cf(i.onModeChange("local"))}),ws(2,"mat-icon"),QC(3,"folder_open"),hl(),ws(4,"span",23),QC(5,"Local"),hl(),ws(6,"span",24),QC(7,"Work directly on the current branch"),hl()(),ws(8,"button",22),Rg("click",function(){wf(e);let i=EC();return Cf(i.onModeChange("worktree"))}),ws(9,"mat-icon"),QC(10,"account_tree"),hl(),ws(11,"span",23),QC(12,"Worktree"),hl(),ws(13,"span",24),QC(14,"Create an isolated worktree from a branch"),hl()()(),oC(15,Ft,11,2,"div",25),oC(16,qt,10,4,"mat-form-field",8);}if(a&2){let e=EC();nI(),Ug("active",e.mode()==="local"),nI(7),Ug("active",e.mode()==="worktree"),nI(7),iC(e.isWorktree()?15:-1),nI(),iC(e.isWorktree()?16:-1);}}function Lt(a,t){a&1&&Sg(0,"mat-spinner",18);}function zt(a,t){a&1&&(ws(0,"mat-icon"),QC(1,"rocket_launch"),hl());}function Bt(a,t){a&1&&(ws(0,"mat-icon"),QC(1,"open_in_new"),hl());}var ke=class a{projectApi=g(c);agentApi=g(f$1);dialogRef=g(z$3);projectState=g(P);forcedProject=F(this.projectState.forcedProject$,{initialValue:null});selectedProject=Gi("");projectSearch=Gi("");selectedAgent=Gi("");agentSearch=Gi("");mode=Gi("local");selectedBranch=Gi("");branchSearch=Gi("");issueNumber=Gi("");branchType=Gi("feature");task=Gi("");hasGit=Gi(false);branchTypes=["feature","fix","refactor","chore","docs","build"];projects=Gi([]);agents=Gi([]);branches=Gi([]);filteredProjects=ET(()=>{let t=this.projectSearch().toLowerCase();return t?this.projects().filter(e=>e.toLowerCase().includes(t)):this.projects()});filteredAgents=ET(()=>{let t=this.agentSearch().toLowerCase();return t?this.agents().filter(e=>e.name.toLowerCase().includes(t)||e.description?.toLowerCase().includes(t)):this.agents()});filteredBranches=ET(()=>{let t=this.branchSearch().toLowerCase();return t?this.branches().filter(e=>e.toLowerCase().includes(t)):this.branches()});isLoadingAgents=Gi(false);isLoadingBranches=Gi(false);isSubmitting=Gi(false);isWorktree=ET(()=>this.mode()==="worktree"&&this.hasGit());isValid=ET(()=>{let t=this.projects().includes(this.selectedProject()),e=this.agents().some(i=>i.name===this.selectedAgent()),n=t&&e&&!!this.task().trim();return this.isWorktree()?n&&!!this.selectedBranch()&&!!this.issueNumber().trim()&&!!this.branchType():n});canNavigate=ET(()=>this.projects().includes(this.selectedProject()));openPanel(t){t.openPanel();}onProjectSearchInput(t){this.projectSearch.set(t),this.selectedProject()&&t!==this.selectedProject()&&(this.selectedProject.set(""),this.selectedAgent.set(""),this.agentSearch.set(""),this.agents.set([]));}selectProject(t){this.selectedProject.set(t),this.projectSearch.set(t),this.selectedAgent.set(""),this.agentSearch.set(""),this.agents.set([]),this.branches.set([]),this.selectedBranch.set(""),this.branchSearch.set(""),this.hasGit.set(false),this.mode.set("local"),this.isLoadingAgents.set(true),this.agentApi.getAgents(t).subscribe({next:e=>{this.agents.set(e),this.isLoadingAgents.set(false);},error:()=>{this.isLoadingAgents.set(false);}}),this.projectApi.getGitBranches(t).subscribe({next:({branches:e})=>{this.hasGit.set(e.length>0);},error:()=>{this.hasGit.set(false);}});}onAgentSearchInput(t){this.agentSearch.set(t),this.selectedAgent()&&t!==this.selectedAgent()&&this.selectedAgent.set("");}selectAgent(t){this.selectedAgent.set(t),this.agentSearch.set(t);}onBranchSearchInput(t){this.branchSearch.set(t),this.selectedBranch()&&t!==this.selectedBranch()&&this.selectedBranch.set("");}selectBranch(t){this.selectedBranch.set(t),this.branchSearch.set(t);}ngOnInit(){this.projectApi.listProjects().subscribe({next:({projects:t})=>{let e=t.map(n=>n.name);this.projects.set(e),e.length===1&&e[0]&&this.selectProject(e[0]);}});}onProjectChange(t){this.selectProject(t);}onModeChange(t){this.mode.set(t),t==="worktree"&&this.selectedProject()&&this.branches().length===0&&this.loadBranches();}loadBranches(){this.isLoadingBranches.set(true),this.projectApi.getGitBranches(this.selectedProject()).subscribe({next:({branches:t})=>{this.branches.set(t),this.isLoadingBranches.set(false);},error:()=>{this.isLoadingBranches.set(false);}});}submit(){if(!this.isSubmitting()){if(this.isValid()){this.isSubmitting.set(true);let t=this.isWorktree()&&this.issueNumber().trim()?`${this.issueNumber().trim()} ${this.task().trim()}`:this.task().trim();this.projectApi.createTask(this.selectedProject(),this.selectedAgent(),t,this.isWorktree()?"worktree":"local",this.isWorktree()?this.selectedBranch():void 0,this.isWorktree()?this.issueNumber().trim():void 0,this.isWorktree()?this.branchType():void 0).subscribe({next:({threadId:e,projectId:n})=>{this.dialogRef.close({threadId:e,projectId:n});},error:()=>{this.isSubmitting.set(false);}});return}if(this.canNavigate()){this.dialogRef.close({projectId:this.selectedProject(),navigate:true});return}}}cancel(){this.dialogRef.close(null);}static \u0275fac=function(e){return new(e||a)};static \u0275cmp=Fw({type:a,selectors:[["app-new-task-dialog"]],decls:37,vars:12,consts:[["projectTrigger","matAutocompleteTrigger"],["projectAuto",""],["agentTrigger","matAutocompleteTrigger"],["agentAuto",""],["branchTrigger","matAutocompleteTrigger"],["branchAuto",""],["mat-dialog-title",""],[1,"ntd-content"],["appearance","outline",1,"ntd-field"],["matInput","","placeholder","Search project...",3,"input","focus","value","matAutocomplete"],[3,"optionSelected"],[3,"value"],["matInput","","placeholder","Search agent...",3,"input","focus","value","matAutocomplete","disabled"],["matSuffix","","diameter","16"],["matInput","","placeholder","Describe what the agent should accomplish...","rows","4",3,"input","value"],["align","end"],["mat-button","",3,"click","disabled"],["mat-flat-button","",1,"ntd-launch-btn",3,"click","disabled"],["diameter","16"],[1,"ntd-agent-name"],[1,"ntd-agent-desc"],[1,"ntd-radio-group"],["type","button",1,"ntd-mode-btn",3,"click"],[1,"ntd-radio-label"],[1,"ntd-radio-hint"],[1,"ntd-row"],["matInput","","type","text","placeholder","Name",3,"input","value"],["appearance","outline",1,"ntd-field","ntd-field--small"],[3,"selectionChange","value"],["matInput","","placeholder","Search branch...",3,"input","focus","value","matAutocomplete","disabled"]],template:function(e,n){if(e&1){let i=gC();ws(0,"h2",6)(1,"mat-icon"),QC(2,"rocket_launch"),hl(),QC(3,` New Task
|
|
2
2
|
`),hl(),ws(4,"mat-dialog-content",7)(5,"mat-form-field",8)(6,"mat-label"),QC(7,"Project"),hl(),ws(8,"input",9,0),Rg("input",function(p){return n.onProjectSearchInput(p.target.value)})("focus",function(){wf(i);let p=MC(9);return Cf(n.openPanel(p))}),hl(),ws(10,"mat-autocomplete",10,1),Rg("optionSelected",function(p){return n.selectProject(p.option.value)}),cC(12,Et,2,2,"mat-option",11,aC),hl()(),ws(14,"mat-form-field",8)(15,"mat-label"),QC(16,"Agent"),hl(),ws(17,"input",12,2),Rg("input",function(p){return n.onAgentSearchInput(p.target.value)})("focus",function(){wf(i);let p=MC(18);return Cf(n.openPanel(p))}),hl(),oC(19,Nt,1,0,"mat-spinner",13),ws(20,"mat-autocomplete",10,3),Rg("optionSelected",function(p){return n.selectAgent(p.option.value)}),cC(22,At,4,3,"mat-option",11,Ot),hl()(),oC(24,$t,17,6),ws(25,"mat-form-field",8)(26,"mat-label"),QC(27,"Task"),hl(),ws(28,"textarea",14),Rg("input",function(p){return n.task.set(p.target.value)}),hl()()(),ws(29,"mat-dialog-actions",15)(30,"button",16),Rg("click",function(){return n.cancel()}),QC(31,"Cancel"),hl(),ws(32,"button",17),Rg("click",function(){return n.submit()}),oC(33,Lt,1,0,"mat-spinner",18)(34,zt,2,0,"mat-icon")(35,Bt,2,0,"mat-icon"),QC(36),hl()();}if(e&2){let i=MC(11),l=MC(21);nI(8),bg("value",n.projectSearch())("matAutocomplete",i),nI(4),uC(n.filteredProjects()),nI(5),bg("value",n.agentSearch())("matAutocomplete",l)("disabled",!n.selectedProject()||n.isLoadingAgents()),nI(2),iC(n.isLoadingAgents()?19:-1),nI(3),uC(n.filteredAgents()),nI(2),iC(n.hasGit()&&!n.forcedProject()?24:-1),nI(4),bg("value",n.task()),nI(2),bg("disabled",n.isSubmitting()),nI(2),bg("disabled",!n.canNavigate()||n.isSubmitting()),nI(),iC(n.isSubmitting()?33:n.isValid()?34:35),nI(3),Dl(" ",n.isValid()?"Launch":"Open"," ");}},dependencies:[ti,zt$2,jt,Vt$1,Nt$1,hr,pr,ce,nt,ae,zt$1,Tn$1,Sn$1,kt$1,Ct,Fn$1,ze,Pt$1,Lt$1,Et$1,yt$1,yt,wt$1],styles:["h2[mat-dialog-title][_ngcontent-%COMP%]{display:flex;align-items:center;gap:.5rem;margin-bottom:0}.ntd-content[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.25rem;padding-top:20px!important}.ntd-field[_ngcontent-%COMP%]{width:100%}.ntd-row[_ngcontent-%COMP%]{display:flex;gap:.75rem}.ntd-row[_ngcontent-%COMP%] .ntd-field--small[_ngcontent-%COMP%]{width:130px;flex-shrink:0}.ntd-radio-group[_ngcontent-%COMP%]{display:flex;gap:.75rem;padding:.25rem 0 .75rem}.ntd-mode-btn[_ngcontent-%COMP%]{flex:1;display:flex;flex-direction:column;align-items:flex-start;gap:.15rem;padding:.75rem;border:1px solid var(--color-border);border-radius:8px;background:transparent;color:var(--color-text);cursor:pointer;transition:border-color .15s,background .15s}.ntd-mode-btn[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{font-size:1.1rem;width:1.1rem;height:1.1rem;margin-bottom:.1rem}.ntd-mode-btn.active[_ngcontent-%COMP%]{border-color:var(--color-primary);background:color-mix(in srgb,var(--color-primary) 10%,transparent)}.ntd-mode-btn[_ngcontent-%COMP%]:hover:not(.active){border-color:var(--color-text-secondary)}.ntd-radio-label[_ngcontent-%COMP%]{font-weight:600;font-size:.9rem}.ntd-radio-hint[_ngcontent-%COMP%]{font-size:.72rem;color:var(--color-text-secondary);line-height:1.3;text-align:left}.ntd-agent-name[_ngcontent-%COMP%]{font-weight:500;display:block}.ntd-agent-desc[_ngcontent-%COMP%]{font-size:.75rem;color:var(--color-text-secondary);display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:380px}.ntd-launch-btn[_ngcontent-%COMP%]{background:var(--color-primary);color:var(--color-text-inverse)}.ntd-launch-btn[_ngcontent-%COMP%]:disabled{background:var(--color-border);color:var(--color-text-secondary);opacity:.6;cursor:not-allowed}"],changeDetection:1})};var Qt=(a,t)=>t.name,Ut=(a,t)=>t.value;function Ht(a,t){if(a&1&&(ws(0,"mat-option",8),QC(1),hl()),a&2){let e=t.$implicit;bg("value",e),nI(),Yg(e);}}function Jt(a,t){a&1&&Sg(0,"mat-spinner",9);}function Xt(a,t){if(a&1&&(ws(0,"mat-option",8),QC(1),hl()),a&2){let e=t.$implicit;bg("value",e.name),nI(),Yg(e.name);}}function Kt(a,t){if(a&1){let e=gC();ws(0,"button",37),Rg("click",function(){let i=wf(e).$implicit,l=EC();return Cf(l.toggleDay(i.value))}),QC(1),hl();}if(a&2){let e=t.$implicit,n=EC();Ug("selected",n.isDaySelected(e.value)),nI(),Dl(" ",e.label," ");}}function Yt(a,t){if(a&1){let e=gC();ws(0,"mat-form-field",4)(1,"mat-label"),QC(2,"Number of runs"),hl(),ws(3,"input",17),Rg("ngModelChange",function(i){wf(e);let l=EC();return Cf(l.endOccurrences.set(i))}),hl(),GI(),hl();}if(a&2){let e=EC();nI(3),bg("ngModel",e.endOccurrences()),qI();}}function Zt(a,t){if(a&1){let e=gC();ws(0,"mat-form-field",4)(1,"mat-label"),QC(2,"End date"),hl(),ws(3,"input",38),Rg("ngModelChange",function(i){wf(e);let l=EC();return Cf(l.endTimestamp.set(i))}),hl(),GI(),hl();}if(a&2){let e=EC();nI(3),bg("ngModel",e.endTimestamp())("min",e.startTimestamp()),qI();}}function en(a,t){if(a&1&&(ws(0,"div",32)(1,"mat-icon"),QC(2,"error"),hl(),ws(3,"span"),QC(4),hl()()),a&2){let e=EC();nI(4),Yg(e.errorMessage());}}function tn(a,t){a&1&&Sg(0,"mat-spinner",36);}function nn(a,t){a&1&&(ws(0,"mat-icon"),QC(1,"schedule"),hl());}var z=class a{projectApi=g(c);agentApi=g(f$1);schedulerApi=g(xe);dialogRef=g(z$3);dialogData=g(Ue,{optional:true});isEditMode=this.dialogData?.mode==="edit";projects=Gi([]);agents=Gi([]);name=Gi("");selectedProject=Gi("");selectedAgent=Gi("");instruction=Gi("");intervalValue=Gi(1);intervalUnit=Gi("d");startTimestamp=Gi("");daysOfWeek=Gi([]);endConditionType=Gi("none");endOccurrences=Gi(10);endTimestamp=Gi("");enabled=Gi(true);isLoadingAgents=Gi(false);isSaving=Gi(false);errorMessage=Gi("");daysOfWeekOptions=[{value:1,label:"Mon"},{value:2,label:"Tue"},{value:3,label:"Wed"},{value:4,label:"Thu"},{value:5,label:"Fri"},{value:6,label:"Sat"},{value:0,label:"Sun"}];filteredProjects=ET(()=>{let t=this.selectedProject().toLowerCase();return this.projects().filter(e=>e.toLowerCase().includes(t))});filteredAgents=ET(()=>{let t=this.selectedAgent().toLowerCase();return this.agents().filter(e=>e.name.toLowerCase().includes(t))});isValid=ET(()=>{let t=this.projects().includes(this.selectedProject()),e=this.agents().some(l=>l.name===this.selectedAgent()),n=this.instruction().trim().length>0,i=this.intervalValue()>=1;return t&&e&&n&&i});ngOnInit(){if(this.isEditMode&&this.dialogData?.scheduler){let t=this.dialogData.scheduler;this.name.set(t.name),this.selectedAgent.set(t.agentName??""),this.instruction.set(t.instruction??""),this.enabled.set(t.enabled);let e=t.schedule.interval.match(/^(\d+)(min|h|d|M)$/);e&&e[1]&&e[2]&&(this.intervalValue.set(parseInt(e[1],10)),this.intervalUnit.set(e[2])),t.schedule.startTimestamp&&this.startTimestamp.set(this.toDatetimeLocal(new Date(t.schedule.startTimestamp))),this.daysOfWeek.set(t.schedule.daysOfWeek??[]),t.schedule.endCondition&&(this.endConditionType.set(t.schedule.endCondition.type),t.schedule.endCondition.type==="occurrences"?this.endOccurrences.set(t.schedule.endCondition.value):t.schedule.endCondition.type==="endTimestamp"&&this.endTimestamp.set(this.toDatetimeLocal(new Date(t.schedule.endCondition.value))));}else this.startTimestamp.set(this.toDatetimeLocal(new Date));this.projectApi.listProjects().subscribe({next:({projects:t})=>{let e=t.map(i=>i.name).filter(i=>!i.includes("__"));this.projects.set(e);let n=this.dialogData?.projectName;this.isEditMode&&n?this.onProjectSelected(n):e.length===1&&e[0]&&this.onProjectSelected(e[0]);}});}onProjectSelected(t){this.selectedProject.set(t),this.isEditMode||(this.agents.set([]),this.selectedAgent.set("")),this.projects().includes(t)&&(this.isLoadingAgents.set(true),this.agentApi.getAgents(t).subscribe({next:e=>{this.agents.set(e),this.isLoadingAgents.set(false),!this.isEditMode&&e.length===1&&e[0]&&this.selectedAgent.set(e[0].name);},error:()=>this.isLoadingAgents.set(false)}));}toggleDay(t){let e=this.daysOfWeek();e.indexOf(t)>-1?this.daysOfWeek.set(e.filter(i=>i!==t)):this.daysOfWeek.set([...e,t].sort());}isDaySelected(t){return this.daysOfWeek().includes(t)}toDatetimeLocal(t){let e=n=>String(n).padStart(2,"0");return `${t.getFullYear()}-${e(t.getMonth()+1)}-${e(t.getDate())}T${e(t.getHours())}:${e(t.getMinutes())}`}submit(){if(!this.isValid()||this.isSaving())return;this.errorMessage.set(""),this.isSaving.set(true);let t=this.startTimestamp(),e={startTimestamp:t?new Date(t).toISOString():new Date().toISOString(),interval:`${this.intervalValue()}${this.intervalUnit()}`},n=this.daysOfWeek();n.length>0&&(e.daysOfWeek=n);let i=this.endConditionType();i==="occurrences"?e.endCondition={type:"occurrences",value:this.endOccurrences()}:i==="endTimestamp"&&this.endTimestamp()&&(e.endCondition={type:"endTimestamp",value:new Date(this.endTimestamp()).toISOString()});let l=this.instruction().trim(),p=l.length>40?l.slice(0,40)+"\u2026":l,L=this.name().trim()||`${this.selectedAgent()} \u2014 ${p}`;this.isEditMode&&this.dialogData?.scheduler&&this.dialogData.projectName?this.schedulerApi.updateSchedulerForProject(this.dialogData.projectName,this.dialogData.scheduler.id,{name:L,agentName:this.selectedAgent(),instruction:l,schedule:e,enabled:this.enabled()}).subscribe({next:()=>{this.isSaving.set(false),this.dialogRef.close(true);},error:oe=>{this.errorMessage.set(oe?.error?.error||"Failed to update scheduler"),this.isSaving.set(false);}}):this.schedulerApi.createSchedulerForProject(this.selectedProject(),{name:L,agentName:this.selectedAgent(),instruction:l,schedule:e,enabled:this.enabled()}).subscribe({next:()=>{this.isSaving.set(false),this.dialogRef.close(true);},error:oe=>{this.errorMessage.set(oe?.error?.error||"Failed to create scheduler"),this.isSaving.set(false);}});}cancel(){this.dialogRef.close(false);}static \u0275fac=function(e){return new(e||a)};static \u0275cmp=Fw({type:a,selectors:[["app-quick-scheduler-dialog"]],decls:84,vars:20,consts:[["projectAuto","matAutocomplete"],["agentAuto","matAutocomplete"],["mat-dialog-title",""],[1,"qsd-form"],["appearance","outline",1,"full-width"],["matInput","","placeholder","Optional \u2014 auto-generated if empty",3,"ngModelChange","ngModel"],["matInput","","placeholder","Select a project",3,"ngModelChange","focus","ngModel","matAutocomplete"],[3,"optionSelected"],[3,"value"],["matSuffix","","diameter","18"],["matInput","","placeholder","Select an agent",3,"ngModelChange","focus","ngModel","matAutocomplete","disabled"],["matInput","","placeholder","e.g. Review open PRs and summarize what needs attention","rows","3",3,"ngModelChange","ngModel"],[1,"qsd-divider"],["matInput","","type","datetime-local",3,"ngModelChange","ngModel"],[1,"qsd-interval"],[1,"qsd-label"],["appearance","outline",1,"interval-value"],["matInput","","type","number","min","1",3,"ngModelChange","ngModel"],["appearance","outline",1,"interval-unit"],[3,"ngModelChange","ngModel"],["value","min"],["value","h"],["value","d"],["value","M"],[1,"qsd-days"],[1,"qsd-day-chips"],["type","button",1,"day-chip",3,"selected"],[1,"qsd-hint"],[1,"qsd-end"],["value","none"],["value","occurrences"],["value","endTimestamp"],[1,"qsd-error"],["align","end"],["mat-button","",3,"click","disabled"],["mat-flat-button","",3,"click","disabled"],["diameter","18"],["type","button",1,"day-chip",3,"click"],["matInput","","type","datetime-local",3,"ngModelChange","ngModel","min"]],template:function(e,n){if(e&1&&(ws(0,"h2",2)(1,"mat-icon"),QC(2,"schedule"),hl(),QC(3),hl(),ws(4,"mat-dialog-content")(5,"div",3)(6,"mat-form-field",4)(7,"mat-label"),QC(8,"Name"),hl(),ws(9,"input",5),Rg("ngModelChange",function(l){return n.name.set(l)}),hl(),GI(),hl(),ws(10,"mat-form-field",4)(11,"mat-label"),QC(12,"Project"),hl(),ws(13,"input",6),Rg("ngModelChange",function(l){return n.onProjectSelected(l)})("focus",function(){return n.selectedProject.set(n.selectedProject())}),hl(),GI(),ws(14,"mat-autocomplete",7,0),Rg("optionSelected",function(l){return n.onProjectSelected(l.option.value)}),cC(16,Ht,2,2,"mat-option",8,aC),hl()(),ws(18,"mat-form-field",4)(19,"mat-label"),QC(20,"Agent"),hl(),oC(21,Jt,1,0,"mat-spinner",9),ws(22,"input",10),Rg("ngModelChange",function(l){return n.selectedAgent.set(l)})("focus",function(){return n.selectedAgent.set(n.selectedAgent())}),hl(),GI(),ws(23,"mat-autocomplete",7,1),Rg("optionSelected",function(l){return n.selectedAgent.set(l.option.value)}),cC(25,Xt,2,2,"mat-option",8,Qt),hl()(),ws(27,"mat-form-field",4)(28,"mat-label"),QC(29,"What should the agent do?"),hl(),ws(30,"textarea",11),Rg("ngModelChange",function(l){return n.instruction.set(l)}),hl(),GI(),hl(),ws(31,"div",12)(32,"span"),QC(33,"Scheduling"),hl()(),ws(34,"mat-form-field",4)(35,"mat-label"),QC(36,"Starts on"),hl(),ws(37,"input",13),Rg("ngModelChange",function(l){return n.startTimestamp.set(l)}),hl(),GI(),hl(),ws(38,"div",14)(39,"span",15),QC(40,"Every"),hl(),ws(41,"mat-form-field",16)(42,"input",17),Rg("ngModelChange",function(l){return n.intervalValue.set(l)}),hl(),GI(),hl(),ws(43,"mat-form-field",18)(44,"mat-select",19),Rg("ngModelChange",function(l){return n.intervalUnit.set(l)}),ws(45,"mat-option",20),QC(46,"minutes"),hl(),ws(47,"mat-option",21),QC(48,"hours"),hl(),ws(49,"mat-option",22),QC(50,"days"),hl(),ws(51,"mat-option",23),QC(52,"months"),hl()(),GI(),hl()(),ws(53,"div",24)(54,"span",15),QC(55,"Days"),hl(),ws(56,"div",25),cC(57,Kt,2,3,"button",26,Ut),hl(),ws(59,"span",27),QC(60,"Leave empty for every day"),hl()(),ws(61,"div",28)(62,"mat-form-field",4)(63,"mat-label"),QC(64,"Ends on"),hl(),ws(65,"mat-select",19),Rg("ngModelChange",function(l){return n.endConditionType.set(l)}),ws(66,"mat-option",29),QC(67,"Never"),hl(),ws(68,"mat-option",30),QC(69,"After N runs"),hl(),ws(70,"mat-option",31),QC(71,"On a date"),hl()(),GI(),hl(),oC(72,Yt,4,1,"mat-form-field",4),oC(73,Zt,4,2,"mat-form-field",4),hl(),ws(74,"mat-checkbox",19),Rg("ngModelChange",function(l){return n.enabled.set(l)}),QC(75,"Enable immediately"),hl(),GI(),oC(76,en,5,1,"div",32),hl()(),ws(77,"mat-dialog-actions",33)(78,"button",34),Rg("click",function(){return n.cancel()}),QC(79,"Cancel"),hl(),ws(80,"button",35),Rg("click",function(){return n.submit()}),oC(81,tn,1,0,"mat-spinner",36)(82,nn,2,0,"mat-icon"),QC(83," Schedule "),hl()()),e&2){let i=MC(15),l=MC(24);nI(3),Dl(" ",n.isEditMode?"Edit scheduled task":"New scheduled task",`
|
|
3
3
|
`),nI(6),bg("ngModel",n.name()),qI(),nI(4),bg("ngModel",n.selectedProject())("matAutocomplete",i),qI(),nI(3),uC(n.filteredProjects()),nI(5),iC(n.isLoadingAgents()?21:-1),nI(),bg("ngModel",n.selectedAgent())("matAutocomplete",l)("disabled",!n.projects().includes(n.selectedProject())),qI(),nI(3),uC(n.filteredAgents()),nI(5),bg("ngModel",n.instruction()),qI(),nI(7),bg("ngModel",n.startTimestamp()),qI(),nI(5),bg("ngModel",n.intervalValue()),qI(),nI(2),bg("ngModel",n.intervalUnit()),qI(),nI(13),uC(n.daysOfWeekOptions),nI(8),bg("ngModel",n.endConditionType()),qI(),nI(7),iC(n.endConditionType()==="occurrences"?72:-1),nI(),iC(n.endConditionType()==="endTimestamp"?73:-1),nI(),bg("ngModel",n.enabled()),qI(),nI(2),iC(n.errorMessage()?76:-1),nI(2),bg("disabled",n.isSaving()),nI(2),bg("disabled",!n.isValid()||n.isSaving()),nI(),iC(n.isSaving()?81:82);}},dependencies:[ti,Ye$1,fn$1,Zn,$t$1,cn$1,zt$2,jt,Vt$1,Nt$1,hr,pr,ce,nt,ae,zt$1,Tn$1,Sn$1,kt$1,Ct,Fn$1,ze,Pt$1,Lt$1,ve,ne,Et$1,yt$1,yt,wt$1],styles:['[_nghost-%COMP%]{display:block}h2[mat-dialog-title][_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px}.qsd-form[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:12px;padding-top:4px}.full-width[_ngcontent-%COMP%]{width:100%}.qsd-interval[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px}.qsd-interval[_ngcontent-%COMP%] .qsd-label[_ngcontent-%COMP%]{font-size:14px;color:var(--mat-sys-on-surface-variant);white-space:nowrap}.qsd-interval[_ngcontent-%COMP%] .interval-value[_ngcontent-%COMP%]{width:80px}.qsd-interval[_ngcontent-%COMP%] .interval-unit[_ngcontent-%COMP%]{flex:1}.qsd-days[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.qsd-days[_ngcontent-%COMP%] .qsd-label[_ngcontent-%COMP%]{font-size:14px;color:var(--mat-sys-on-surface-variant);white-space:nowrap}.qsd-days[_ngcontent-%COMP%] .qsd-hint[_ngcontent-%COMP%]{font-size:12px;color:var(--mat-sys-on-surface-variant);opacity:.7;width:100%;margin-top:-4px;padding-left:36px}.qsd-day-chips[_ngcontent-%COMP%]{display:flex;gap:4px;flex-wrap:wrap}.day-chip[_ngcontent-%COMP%]{padding:4px 10px;border-radius:16px;border:1px solid var(--mat-sys-outline);background:transparent;color:var(--mat-sys-on-surface);font-size:12px;cursor:pointer;transition:background .15s,color .15s}.day-chip.selected[_ngcontent-%COMP%]{background:var(--mat-sys-primary);color:var(--mat-sys-on-primary);border-color:var(--mat-sys-primary)}.day-chip[_ngcontent-%COMP%]:hover:not(.selected){background:var(--mat-sys-surface-variant)}.qsd-divider[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;margin:4px 0}.qsd-divider[_ngcontent-%COMP%]:before, .qsd-divider[_ngcontent-%COMP%]:after{content:"";flex:1;height:1px;background:var(--mat-sys-outline-variant)}.qsd-divider[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{font-size:12px;color:var(--mat-sys-on-surface-variant);text-transform:uppercase;letter-spacing:.5px}.qsd-end[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:8px}.qsd-error[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;color:var(--mat-sys-error);font-size:14px}.qsd-error[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{font-size:18px;width:18px;height:18px}mat-dialog-actions[_ngcontent-%COMP%]{gap:8px}mat-dialog-actions[_ngcontent-%COMP%] button[mat-flat-button][_ngcontent-%COMP%]{display:flex;align-items:center;gap:6px}']})};var rn=(a,t)=>t.id;function an(a,t){if(a&1){let e=gC();ws(0,"button",9),Rg("click",function(){let i=wf(e).$implicit,l=EC(2);return Cf(l.setProject(i))}),QC(1),hl();}if(a&2){let e=t.$implicit,n=EC(2);Ug("active",n.activeProject()===e),nI(),Dl(" ",e," ");}}function ln(a,t){if(a&1){let e=gC();ws(0,"nav",2)(1,"button",9),Rg("click",function(){wf(e);let i=EC();return Cf(i.setProject(null))}),QC(2," All projects "),hl(),cC(3,an,2,3,"button",10,aC),hl();}if(a&2){let e=EC();nI(),Ug("active",e.activeProject()===null),nI(2),uC(e.projects());}}function sn(a,t){a&1&&(ws(0,"div",3),Sg(1,"mat-spinner",11),hl());}function cn(a,t){if(a&1&&(ws(0,"div",4)(1,"mat-icon"),QC(2,"error"),hl(),QC(3),hl()),a&2){let e=EC();nI(3),Dl(" ",e.errorMessage()," ");}}function dn(a,t){if(a&1){let e=gC();ws(0,"div",5)(1,"mat-icon"),QC(2,"schedule"),hl(),ws(3,"p"),QC(4,"No scheduled tasks yet."),hl(),ws(5,"button",12),Rg("click",function(){wf(e);let i=EC();return Cf(i.openCreate())}),ws(6,"mat-icon"),QC(7,"add"),hl(),QC(8," Create one "),hl()();}}function pn(a,t){if(a&1&&(ws(0,"span",17),QC(1),hl()),a&2){let e=EC().$implicit;nI(),Yg(e.projectName);}}function mn(a,t){if(a&1){let e=gC();ws(0,"li",14)(1,"div",15)(2,"span",16),QC(3),hl(),oC(4,pn,2,1,"span",17),ws(5,"span",18),QC(6),hl()(),ws(7,"div",19)(8,"span",20),QC(9),hl(),ws(10,"span",21),QC(11),hl()(),ws(12,"div",22)(13,"mat-slide-toggle",23),Rg("change",function(){let i=wf(e).$implicit,l=EC(2);return Cf(l.toggleEnabled(i))}),hl(),ws(14,"button",24),Rg("click",function(){let i=wf(e).$implicit,l=EC(2);return Cf(l.runNow(i))}),ws(15,"mat-icon"),QC(16,"play_arrow"),hl()(),ws(17,"button",25),Rg("click",function(){let i=wf(e).$implicit,l=EC(2);return Cf(l.edit(i))}),ws(18,"mat-icon"),QC(19,"edit"),hl()(),ws(20,"button",26),Rg("click",function(){let i=wf(e).$implicit,l=EC(2);return Cf(l.delete(i))}),ws(21,"mat-icon"),QC(22,"delete"),hl()()()();}if(a&2){let e=t.$implicit,n=EC(2);Ug("disabled",!e.enabled),nI(3),Yg(e.name),nI(),iC(n.projects().length>1?4:-1),nI(2),Yg(n.getSource(e)),nI(3),Yg(n.formatInterval(e.schedule.interval)),nI(),Ug("due",!e.nextRun),nI(),Yg(n.formatNextRun(e.nextRun)),nI(2),bg("checked",e.enabled);}}function un(a,t){if(a&1&&(ws(0,"ul",6),cC(1,mn,23,10,"li",13,rn),hl()),a&2){let e=EC();nI(),uC(e.filteredSchedulers());}}var Me=class a{projectApi=g(c);schedulerApi=g(xe);dialog=g(Re);dialogRef=g(z$3);allSchedulers=Gi([]);isLoading=Gi(true);errorMessage=Gi("");activeProject=Gi(null);projects=Gi([]);filteredSchedulers=ET(()=>{let t=this.activeProject(),e=this.allSchedulers();return t?e.filter(n=>n.projectName===t):e});ngOnInit(){this.load();}load(){this.isLoading.set(true),this.errorMessage.set(""),this.projectApi.listProjects().subscribe({next:({projects:t})=>{let e=t.map(i=>i.name).filter(i=>!i.includes("__"));if(this.projects.set(e),e.length===0){this.isLoading.set(false);return}let n=e.map(i=>this.schedulerApi.listSchedulersForProject(i).pipe(va(()=>br([]))));Vy(n).subscribe({next:i=>{let l=[];i.forEach((p,L)=>{p.forEach(oe=>l.push(z$1(P$1({},oe),{projectName:e[L]})));}),this.allSchedulers.set(l),this.isLoading.set(false);},error:()=>{this.errorMessage.set("Failed to load schedulers"),this.isLoading.set(false);}});},error:()=>{this.errorMessage.set("Failed to load projects"),this.isLoading.set(false);}});}setProject(t){this.activeProject.set(t);}formatInterval(t){let e=/^(\d+)(min|h|d|M)$/.exec(t);if(!e)return t;let[,n,i]=e;return `Every ${n}${{min:"min",h:"h",d:"d",M:"mo"}[i??""]??i}`}formatNextRun(t){if(!t)return "Expired";let e=new Date(t),n=new Date,i=e.getTime()-n.getTime();if(i<0)return "Due";let l=Math.floor(i/6e4);if(l<60)return `in ${l}m`;let p=Math.floor(l/60);return p<24?`in ${p}h`:`in ${Math.floor(p/24)}d`}getSource(t){if(t.agentName&&t.instruction){let e=t.instruction.length>35?t.instruction.slice(0,35)+"\u2026":t.instruction;return `${t.agentName}: ${e}`}return t.promptId??""}toggleEnabled(t){(t.enabled?this.schedulerApi.disableSchedulerForProject(t.projectName,t.id):this.schedulerApi.enableSchedulerForProject(t.projectName,t.id)).subscribe({next:()=>{this.allSchedulers.update(n=>n.map(i=>i.id===t.id?z$1(P$1({},i),{enabled:!i.enabled}):i));},error:()=>this.errorMessage.set("Failed to toggle scheduler")});}runNow(t){this.schedulerApi.runSchedulerNowForProject(t.projectName,t.id).subscribe({error:()=>this.errorMessage.set("Failed to run scheduler")});}edit(t){let e={mode:"edit",projectName:t.projectName,scheduler:{id:t.id,name:t.name,agentName:t.agentName,instruction:t.instruction,enabled:t.enabled,schedule:t.schedule}};this.dialog.open(z,{width:"480px",data:e}).afterClosed().subscribe(i=>{i&&this.load();});}delete(t){this.schedulerApi.deleteSchedulerForProject(t.projectName,t.id).subscribe({next:()=>{this.allSchedulers.update(e=>e.filter(n=>n.id!==t.id));},error:()=>this.errorMessage.set("Failed to delete scheduler")});}openCreate(){this.dialogRef.close(),this.dialog.open(z,{width:"480px"});}close(){this.dialogRef.close();}static \u0275fac=function(e){return new(e||a)};static \u0275cmp=Fw({type:a,selectors:[["app-global-schedulers-dialog"]],decls:19,vars:3,consts:[["mat-dialog-title",""],[1,"gsd-count"],[1,"gsd-project-filters"],[1,"gsd-loading"],[1,"gsd-error"],[1,"gsd-empty"],[1,"gsd-list"],["align","end"],["mat-button","",3,"click"],[1,"proj-chip",3,"click"],[1,"proj-chip",3,"active"],["diameter","32"],["mat-flat-button","",3,"click"],[1,"gsd-item",3,"disabled"],[1,"gsd-item"],[1,"gsd-item-main"],[1,"gsd-item-name"],[1,"gsd-item-project"],[1,"gsd-item-source"],[1,"gsd-item-meta"],[1,"gsd-interval"],[1,"gsd-next"],[1,"gsd-item-actions"],["matTooltip","Enable / Disable",3,"change","checked"],["mat-icon-button","","matTooltip","Run now",3,"click"],["mat-icon-button","","matTooltip","Edit",3,"click"],["mat-icon-button","","matTooltip","Delete",1,"delete-btn",3,"click"]],template:function(e,n){e&1&&(ws(0,"h2",0)(1,"mat-icon"),QC(2,"schedule"),hl(),QC(3," Scheduled tasks "),ws(4,"span",1),QC(5),hl()(),ws(6,"mat-dialog-content"),oC(7,ln,5,2,"nav",2),oC(8,sn,2,0,"div",3)(9,cn,4,1,"div",4)(10,dn,9,0,"div",5)(11,un,3,0,"ul",6),hl(),ws(12,"mat-dialog-actions",7)(13,"button",8),Rg("click",function(){return n.openCreate()}),ws(14,"mat-icon"),QC(15,"add"),hl(),QC(16," New scheduler "),hl(),ws(17,"button",8),Rg("click",function(){return n.close()}),QC(18,"Close"),hl()()),e&2&&(nI(5),Yg(n.filteredSchedulers().length),nI(2),iC(n.projects().length>1?7:-1),nI(),iC(n.isLoading()?8:n.errorMessage()?9:n.filteredSchedulers().length===0?10:11));},dependencies:[ti,zt$2,jt,Vt$1,Nt$1,hr,pr,Gn$1,yt,wt$1,Et$1,yt$1,Pt$1,Ve,ne$1,ke$1,se],styles:["[_nghost-%COMP%]{display:block}h2[mat-dialog-title][_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px}h2[mat-dialog-title][_ngcontent-%COMP%] .gsd-count[_ngcontent-%COMP%]{font-size:13px;font-weight:400;color:var(--mat-sys-on-surface-variant);margin-left:2px}.gsd-project-filters[_ngcontent-%COMP%]{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:12px}.proj-chip[_ngcontent-%COMP%]{padding:4px 12px;border-radius:16px;border:1px solid var(--mat-sys-outline);background:transparent;color:var(--mat-sys-on-surface);font-size:13px;cursor:pointer;transition:background .15s,color .15s}.proj-chip.active[_ngcontent-%COMP%]{background:var(--mat-sys-primary);color:var(--mat-sys-on-primary);border-color:var(--mat-sys-primary)}.proj-chip[_ngcontent-%COMP%]:hover:not(.active){background:var(--mat-sys-surface-variant)}.gsd-loading[_ngcontent-%COMP%], .gsd-empty[_ngcontent-%COMP%]{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:32px 0;color:var(--mat-sys-on-surface-variant)}.gsd-loading[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%], .gsd-empty[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{font-size:40px;width:40px;height:40px;opacity:.4}.gsd-error[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;color:var(--mat-sys-error);padding:16px 0}.gsd-list[_ngcontent-%COMP%]{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px}.gsd-item[_ngcontent-%COMP%]{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:8px;background:var(--mat-sys-surface-container);transition:opacity .2s}.gsd-item.disabled[_ngcontent-%COMP%]{opacity:.5}.gsd-item-main[_ngcontent-%COMP%]{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.gsd-item-name[_ngcontent-%COMP%]{font-weight:500;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.gsd-item-project[_ngcontent-%COMP%]{font-size:11px;color:var(--mat-sys-primary);font-weight:500}.gsd-item-source[_ngcontent-%COMP%]{font-size:12px;color:var(--mat-sys-on-surface-variant);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.gsd-item-meta[_ngcontent-%COMP%]{display:flex;flex-direction:column;align-items:flex-end;gap:2px;white-space:nowrap}.gsd-interval[_ngcontent-%COMP%]{font-size:12px;color:var(--mat-sys-on-surface-variant)}.gsd-next[_ngcontent-%COMP%]{font-size:11px;color:var(--mat-sys-on-surface-variant)}.gsd-next.due[_ngcontent-%COMP%]{color:var(--mat-sys-error)}.gsd-item-actions[_ngcontent-%COMP%]{display:flex;align-items:center;gap:4px}.gsd-item-actions[_ngcontent-%COMP%] .delete-btn[_ngcontent-%COMP%]{color:var(--mat-sys-error);opacity:.7;transition:opacity .15s}.gsd-item-actions[_ngcontent-%COMP%] .delete-btn[_ngcontent-%COMP%]:hover{opacity:1}mat-dialog-actions[_ngcontent-%COMP%]{gap:8px}"]})};var Se=class a{http=g(fy);threadApi=g(N);projectApi=g(c);isLoading=Gi(false);tasks=Gi([]);refresh(){this.isLoading.set(true),this.threadApi.listAllThreads().pipe(qy(15e3)).subscribe({next:t=>{let e=t.filter(n=>!n.parentThreadId).map(n=>({id:n.id,name:n.name,summary:n.summary,modifiedDate:n.modifiedDate,starring:n.starring??[],users:n.users??[],isActive:false,status:this.deriveStatus(n),projectId:n.projectId,worktreeProject:n.worktreeProject}));this.tasks.set(this.sorted(e)),this.isLoading.set(false);},error:()=>{this.isLoading.set(false);}});}applyStatusEvent(t,e){let n=e==="invite"?"waiting-you":"in-progress";this.tasks.update(i=>this.sorted(i.map(l=>l.id===t?z$1(P$1({},l),{status:n}):l)));}closeTask(t,e){this.tasks.update(n=>n.filter(i=>i.id!==e)),this.http.delete(`/api/projects/${t}/missions/${e}`).subscribe({next:()=>this.refresh(),error:n=>{console.error("[GLOBAL-TC] Failed to close task:",n),this.refresh();}});}stopThread(t,e){this.http.post(`/api/projects/${t}/threads/${e}/stop`,{}).subscribe({error:n=>console.error("[GLOBAL-TC] Failed to stop thread:",n)});}deleteThread(t,e){this.tasks.update(n=>n.filter(i=>i.id!==e)),this.http.delete(`/api/projects/${t}/threads/${e}`).subscribe({next:()=>this.refresh(),error:n=>{console.error("[GLOBAL-TC] Failed to delete thread:",n),this.refresh();}});}toggleStar(t,e,n){let i=`/api/projects/${t}/threads/${e}/star`;(n?this.http.delete(i):this.http.post(i,{})).subscribe({next:()=>this.refresh(),error:p=>console.error("[GLOBAL-TC] Failed to toggle star:",p)});}markTaskDone(t,e){this.http.post(`/api/projects/${t}/threads/${e}/done`,{}).subscribe({next:()=>this.refresh(),error:n=>console.error("[GLOBAL-TC] Failed to mark task as done:",n)});}markTasksBatchDone(t){if(t.length===0)return;let e=new Map;for(let{id:l,projectId:p}of t){let L=e.get(p)??[];L.push(l),e.set(p,L);}let n=new Set(t.map(l=>l.id));this.tasks.update(l=>this.sorted(l.map(p=>n.has(p.id)?z$1(P$1({},p),{status:"done"}):p)));let i=[...e.entries()].map(([l,p])=>this.projectApi.markThreadsBatchDone(l,p));Vy(i.length>0?i:[br(null)]).subscribe({next:()=>this.refresh(),error:l=>{console.error("[GLOBAL-TC] Failed to batch-mark tasks as done:",l),this.refresh();}});}markTaskActive(t,e){this.http.delete(`/api/projects/${t}/threads/${e}/done`).subscribe({next:()=>this.refresh(),error:n=>console.error("[GLOBAL-TC] Failed to mark task as active:",n)});}deriveStatus(t){return t.closedByUser?"done":t.pendingInvite?"waiting-you":Date.now()-new Date(t.modifiedDate).getTime()<bt?"in-progress":"paused"}sorted(t){return [...t].sort((e,n)=>{let i=kt[e.status]-kt[n.status];return i!==0?i:e.modifiedDate>n.modifiedDate?-1:1})}static \u0275fac=function(e){return new(e||a)};static \u0275prov=x({token:a,factory:a.\u0275fac,providedIn:"root"})};var Te=class a{configApi=g(W);dialog=g(Re);openUserConfigEditor(){this.configApi.getUserConfig().subscribe({next:t=>{this.dialog.open(Ze,{data:{configType:"user",initialContent:JSON.stringify(t,null,2)}}).afterClosed().subscribe(n=>{n&&this.configApi.updateUserConfig(n).subscribe({error:i=>console.error("[CONFIG-STATE] Error saving user config:",i)});});},error:t=>console.error("[CONFIG-STATE] Error loading user config:",t)});}static \u0275fac=function(e){return new(e||a)};static \u0275prov=x({token:a,factory:a.\u0275fac,providedIn:"root"})};var gn=["layoutContainer"],hn=(a,t)=>t.key,_n=(a,t)=>t.name,fn=(a,t)=>t.status,Pt=(a,t)=>t.id;function bn(a,t){if(a&1){let e=gC();ws(0,"button",32),Rg("click",function(){wf(e);let i=EC();return Cf(i.clearSearch())}),ws(1,"mat-icon"),QC(2,"close"),hl()();}}function vn(a,t){if(a&1){let e=gC();ws(0,"button",33),Rg("click",function(){let i=wf(e).$implicit,l=EC(2);return Cf(l.setProject(i.name))}),QC(1),ws(2,"span",34),QC(3),hl()();}if(a&2){let e=t.$implicit,n=EC(2);Ug("active",n.activeProject()===e.name),nI(),Dl(" ",e.name," "),nI(2),Yg(e.count);}}function Cn(a,t){if(a&1){let e=gC();ws(0,"nav",22)(1,"button",33),Rg("click",function(){wf(e);let i=EC();return Cf(i.setProject(null))}),QC(2," All projects "),ws(3,"span",34),QC(4),hl()(),cC(5,vn,4,4,"button",35,_n),hl();}if(a&2){let e=EC();nI(),Ug("active",e.activeProject()===null),nI(3),Yg(e.allTasks().length),nI(),uC(e.projectSummaries());}}function yn(a,t){if(a&1&&(ws(0,"span",37),QC(1),hl()),a&2){let e=EC().$implicit,n=EC();nI(),Yg(n.filterCounts()[e.key]);}}function xn(a,t){if(a&1){let e=gC();ws(0,"button",36),Rg("click",function(){let i=wf(e).$implicit,l=EC();return Cf(l.setFilter(i.key))}),ws(1,"mat-icon",26),QC(2),hl(),ws(3,"span"),QC(4),hl(),oC(5,yn,2,1,"span",37),hl();}if(a&2){let e=t.$implicit,n=EC();Ug("active",n.activeFilter()===e.key),Tg("aria-selected",n.activeFilter()===e.key),nI(2),Yg(e.icon),nI(2),Yg(e.label),nI(),iC(n.filterCounts()[e.key]>0?5:-1);}}function kn(a,t){a&1&&(ws(0,"div",29),Sg(1,"mat-spinner",38),ws(2,"p"),QC(3,"Loading tasks from all projects\u2026"),hl()());}function Mn(a,t){a&1&&(ws(0,"div",30)(1,"mat-icon",39),QC(2,"hub"),hl(),ws(3,"p"),QC(4,"No tasks found."),hl()());}function Sn(a,t){if(a&1){let e=gC();ws(0,"button",51),Rg("click",function(){wf(e);let i=EC(5);return Cf(i.markSelectedPausedDone())}),ws(1,"mat-icon"),QC(2,"check_circle_outline"),hl(),QC(3),hl();}if(a&2){let e=EC(5);bg("matTooltip","Mark "+e.selectedPausedCount()+" task(s) as done"),nI(3),Dl(" Mark done (",e.selectedPausedCount(),") ");}}function Tn(a,t){if(a&1){let e=gC();ws(0,"mat-checkbox",48),Rg("change",function(){wf(e);let i=EC(4);return Cf(i.toggleSelectAllPaused())}),hl(),oC(1,Sn,4,2,"button",49),ws(2,"button",50),Rg("click",function(){wf(e);let i=EC(4);return Cf(i.toggleSelectMode())}),ws(3,"mat-icon"),QC(4,"close"),hl()();}if(a&2){let e=EC(4);bg("checked",e.allPausedSelected())("indeterminate",e.somePausedSelected()&&!e.allPausedSelected()),nI(),iC(e.selectedPausedCount()>0?1:-1);}}function wn(a,t){if(a&1){let e=gC();ws(0,"button",52),Rg("click",function(){wf(e);let i=EC(4);return Cf(i.toggleSelectMode())}),ws(1,"mat-icon"),QC(2,"checklist"),hl(),QC(3," Select "),hl();}}function Pn(a,t){if(a&1&&(ws(0,"div",41)(1,"h3",42)(2,"mat-icon",44),QC(3),hl(),QC(4),ws(5,"span",45),QC(6),hl()(),ws(7,"div",46),oC(8,Tn,5,3)(9,wn,4,0,"button",47),hl()()),a&2){let e=EC().$implicit,n=EC(2);nI(3),Yg(e.icon),nI(),Dl(" ",e.label," "),nI(2),Yg(e.tasks.length),nI(2),iC(n.isSelectMode()?8:9);}}function Dn(a,t){if(a&1&&(ws(0,"h3",42)(1,"mat-icon",44),QC(2),hl(),QC(3),ws(4,"span",45),QC(5),hl()()),a&2){let e=EC().$implicit;nI(2),Yg(e.icon),nI(),Dl(" ",e.label," "),nI(2),Yg(e.tasks.length);}}function jn(a,t){if(a&1){let e=gC();ws(0,"app-task-card",53),Rg("stopRequested",function(i){let l=wf(e).$implicit,p=EC(3);return Cf(p.onStopRequested(i,l.projectId))})("deleteRequested",function(i){let l=wf(e).$implicit,p=EC(3);return Cf(p.onDeleteRequested(i,l.projectId))})("starToggled",function(i){let l=wf(e).$implicit,p=EC(3);return Cf(p.onStarToggled(i,l.projectId))})("closeTaskRequested",function(i){let l=wf(e).$implicit,p=EC(3);return Cf(p.onCloseTaskRequested(i,l.projectId))})("markDoneRequested",function(i){let l=wf(e).$implicit,p=EC(3);return Cf(p.onMarkDoneRequested(i,l.projectId))})("markActiveRequested",function(i){let l=wf(e).$implicit,p=EC(3);return Cf(p.onMarkActiveRequested(i,l.projectId))})("previewRequested",function(i){let l=wf(e).$implicit,p=EC(3);return Cf(p.onPreviewRequested(i,l.projectId,l.name))})("selectionChanged",function(i){wf(e);let l=EC(3);return Cf(l.onPausedSelectionChanged(i.id,i.selected))}),hl();}if(a&2){let e=t.$implicit,n=EC().$implicit,i=EC(2);Ug("is-previewed",i.previewThreadId()===e.id),bg("task",e)("projectNameOverride",e.projectId)("showProject",true)("previewMode",i.previewActive())("selectable",n.status==="paused"&&i.isSelectMode())("selected",i.selectedPausedIds().has(e.id));}}function On(a,t){if(a&1&&(ws(0,"section",40),oC(1,Pn,10,4,"div",41)(2,Dn,6,3,"h3",42),ws(3,"div",31),cC(4,jn,1,8,"app-task-card",43,Pt),hl()()),a&2){let e=t.$implicit;nI(),iC(e.status==="paused"?1:2),nI(3),uC(e.tasks);}}function En(a,t){if(a&1&&cC(0,On,6,1,"section",40,fn),a&2){let e=EC();uC(e.taskGroups());}}function Nn(a,t){if(a&1){let e=gC();ws(0,"app-task-card",55),Rg("stopRequested",function(i){let l=wf(e).$implicit,p=EC(2);return Cf(p.onStopRequested(i,l.projectId))})("deleteRequested",function(i){let l=wf(e).$implicit,p=EC(2);return Cf(p.onDeleteRequested(i,l.projectId))})("starToggled",function(i){let l=wf(e).$implicit,p=EC(2);return Cf(p.onStarToggled(i,l.projectId))})("closeTaskRequested",function(i){let l=wf(e).$implicit,p=EC(2);return Cf(p.onCloseTaskRequested(i,l.projectId))})("markDoneRequested",function(i){let l=wf(e).$implicit,p=EC(2);return Cf(p.onMarkDoneRequested(i,l.projectId))})("markActiveRequested",function(i){let l=wf(e).$implicit,p=EC(2);return Cf(p.onMarkActiveRequested(i,l.projectId))})("previewRequested",function(i){let l=wf(e).$implicit,p=EC(2);return Cf(p.onPreviewRequested(i,l.projectId,l.name))}),hl();}if(a&2){let e=t.$implicit,n=EC(2);Ug("is-previewed",n.previewThreadId()===e.id),bg("task",e)("projectNameOverride",e.projectId)("showProject",true)("previewMode",n.previewActive());}}function In(a,t){if(a&1&&(ws(0,"div",31),cC(1,Nn,1,6,"app-task-card",54,Pt),hl()),a&2){let e=EC();nI(),uC(e.displayedTasks());}}function An(a,t){if(a&1){let e=gC();ws(0,"div",56),Rg("mousedown",function(i){wf(e);let l=EC();return Cf(l.onResizerMousedown(i))}),hl(),ws(1,"div",57)(2,"header",58)(3,"span",59),QC(4),hl(),ws(5,"div",60)(6,"button",61),Rg("click",function(){wf(e);let i=EC();return Cf(i.navigateToThread())}),ws(7,"mat-icon"),QC(8,"open_in_new"),hl()(),ws(9,"button",62),Rg("click",function(){wf(e);let i=EC();return Cf(i.closePreview())}),ws(10,"mat-icon"),QC(11,"close"),hl()()()(),ws(12,"div",63),Sg(13,"app-thread",64),hl()();}if(a&2){let e=EC();nI(),Hg("width",e.previewPanelWidthPercent(),"%"),nI(3),Yg(e.previewTaskName()||"Task"),nI(9),bg("projectName",e.previewProjectId())("threadId",e.previewThreadId());}}var Vn=20,Fn=70,Gn=[{status:"waiting-you",label:"Waiting for you",icon:"mark_unread_chat_alt"},{status:"in-progress",label:"In progress",icon:"pending"},{status:"paused",label:"Paused",icon:"pause_circle"},{status:"error",label:"Error",icon:"error"},{status:"done",label:"Done",icon:"check_circle"}],Rn=[{key:"all",label:"All",icon:"grid_view"},{key:"waiting-you",label:"Waiting for you",icon:"mark_unread_chat_alt"},{key:"in-progress",label:"In progress",icon:"pending"},{key:"paused",label:"Paused",icon:"pause_circle"},{key:"done",label:"Done",icon:"check_circle"}],wt=class a{globalTaskService=g(Se);destroyRef=g(we);dialog=g(Re);router=g(G);configState=g(Te);userService=g(pe);preferences=g(L);projectState=g(P);threadState=g(U);breakpointObserver=g(Ot$1);username=F(this.userService.username$,{initialValue:null});isDesktop=F(this.breakpointObserver.observe("(min-width: 1280px)").pipe(ue(t=>t.matches)),{initialValue:false});previewEnabled=F(this.preferences.missionPreviewEnabled$,{initialValue:false});previewActive=ET(()=>this.previewEnabled()&&this.isDesktop());previewThreadId=Gi(null);previewProjectId=Gi(null);previewTaskName=Gi(null);previewPanelWidthPercent=Gi(this.preferences.getMissionPreviewPanelWidth());isDraggingResizer=false;dragStartX=0;dragStartWidth=0;containerWidth=0;layoutContainerRef;globalEventSource=null;filters=Rn;activeFilter=Gi("all");starredOnly=Gi(false);activeProject=Gi(null);searchQuery=Gi("");isLoading=this.globalTaskService.isLoading;allTasks=this.globalTaskService.tasks;isSelectMode=Gi(false);selectedPausedIds=Gi(new Set);pausedTasks=ET(()=>this.displayedTasks().filter(t=>t.status==="paused"));allPausedSelected=ET(()=>{let t=this.pausedTasks(),e=this.selectedPausedIds();return t.length>0&&t.every(n=>e.has(n.id))});somePausedSelected=ET(()=>{let t=this.selectedPausedIds();return this.pausedTasks().some(e=>t.has(e.id))});selectedPausedCount=ET(()=>{let t=this.selectedPausedIds();return this.pausedTasks().filter(e=>t.has(e.id)).length});projectSummaries=ET(()=>{let t=this.allTasks(),e=new Map;for(let n of t)e.set(n.projectId,(e.get(n.projectId)??0)+1);return [...e.entries()].map(([n,i])=>({name:n,count:i})).sort((n,i)=>n.name.localeCompare(i.name))});filteredTasks=ET(()=>{let t=this.allTasks(),e=this.activeProject();e&&(t=t.filter(l=>l.projectId===e));let n=this.username();this.starredOnly()&&n&&(t=t.filter(l=>l.starring.includes(n)));let i=this.activeFilter();return i!=="all"&&(t=t.filter(l=>l.status===i)),t});filterCounts=ET(()=>{let t=this.allTasks(),e=this.activeProject();e&&(t=t.filter(i=>i.projectId===e));let n=this.username();return this.starredOnly()&&n&&(t=t.filter(i=>i.starring.includes(n))),{all:t.length,"waiting-you":t.filter(i=>i.status==="waiting-you").length,"in-progress":t.filter(i=>i.status==="in-progress").length,done:t.filter(i=>i.status==="done").length,paused:t.filter(i=>i.status==="paused").length,error:t.filter(i=>i.status==="error").length}});displayedTasks=ET(()=>{let t=this.searchQuery().toLowerCase().trim(),e=this.sortedFilteredTasks();return t?e.filter(n=>(n.name||"").toLowerCase().includes(t)||(n.summary||"").toLowerCase().includes(t)):e});taskGroups=ET(()=>{let t=this.displayedTasks();return Gn.map(e=>z$1(P$1({},e),{tasks:t.filter(n=>n.status===e.status)})).filter(e=>e.tasks.length>0)});sortedFilteredTasks=ET(()=>{let t=this.filteredTasks(),e={"waiting-you":0,"in-progress":1,paused:2,error:3,done:4};return [...t].sort((n,i)=>(e[n.status]??99)-(e[i.status]??99))});constructor(){this.destroyRef.onDestroy(()=>this.disconnectGlobalSse());}ngOnInit(){this.globalTaskService.refresh(),this.connectGlobalSse(),this.userService.fetchCurrentUser().pipe(U$1(this.destroyRef)).subscribe({error:t=>console.warn("[GTC] Could not fetch user:",t)});}setFilter(t){this.activeFilter.set(t);}toggleStarredFilter(){this.starredOnly.update(t=>!t);}setProject(t){this.activeProject.set(t),this.activeFilter.set("all");}onSearchInput(t){this.searchQuery.set(t.target.value);}clearSearch(){this.searchQuery.set("");}refresh(){this.globalTaskService.refresh();}openPreferences(){this.dialog.open(Ye,{width:"400px"});}openTokenUsage(){this.router.navigate(["/token-usage"]);}openUserConfig(){this.configState.openUserConfigEditor();}openQuickSchedulerDialog(){this.dialog.open(z,{width:"480px",disableClose:false});}openGlobalSchedulersDialog(){this.dialog.open(Me,{width:"600px",maxHeight:"80vh"});}openNewTaskDialog(){this.dialog.open(ke,{width:"500px",disableClose:false}).afterClosed().subscribe(e=>{e&&(e.navigate?this.router.navigate(["project",e.projectId]):(setTimeout(()=>this.globalTaskService.refresh(),300),setTimeout(()=>this.globalTaskService.refresh(),1500)));});}onStopRequested(t,e){this.globalTaskService.stopThread(e,t);}onDeleteRequested(t,e){this.globalTaskService.deleteThread(e,t);}onStarToggled(t,e){let n=this.allTasks().find(p=>p.id===t);if(!n)return;let i=this.username(),l=!!i&&n.starring.includes(i);this.globalTaskService.toggleStar(e,t,l);}onCloseTaskRequested(t,e){let i=this.allTasks().find(p=>p.id===t)?.worktreeProject??e;this.dialog.open(z$2,{width:"420px",data:{title:"Close task",message:`This will stop the agent, delete the thread and remove the worktree project "${i}" from disk. This cannot be undone.`,confirmLabel:"Close task",cancelLabel:"Cancel"}}).afterClosed().subscribe(p=>{p&&this.globalTaskService.closeTask(e,t);});}onMarkDoneRequested(t,e){this.globalTaskService.markTaskDone(e,t);}onMarkActiveRequested(t,e){this.globalTaskService.markTaskActive(e,t);}toggleSelectMode(){let t=!this.isSelectMode();this.isSelectMode.set(t),t||this.selectedPausedIds.set(new Set);}onPausedSelectionChanged(t,e){this.selectedPausedIds.update(n=>{let i=new Set(n);return e?i.add(t):i.delete(t),i});}toggleSelectAllPaused(){let t=this.pausedTasks();this.allPausedSelected()?this.selectedPausedIds.set(new Set):this.selectedPausedIds.set(new Set(t.map(e=>e.id)));}markSelectedPausedDone(){let t=this.selectedPausedIds(),e=this.pausedTasks().filter(n=>t.has(n.id)).map(n=>({id:n.id,projectId:n.projectId}));e.length!==0&&(this.selectedPausedIds.set(new Set),this.isSelectMode.set(false),this.globalTaskService.markTasksBatchDone(e));}onPreviewRequested(t,e,n){this.previewThreadId()===t?(this.previewThreadId.set(null),this.previewProjectId.set(null),this.previewTaskName.set(null)):(this.projectState.selectProject(e),this.threadState.selectThread(t),this.previewProjectId.set(e),this.previewThreadId.set(t),this.previewTaskName.set(n));}closePreview(){this.previewThreadId.set(null),this.previewProjectId.set(null),this.previewTaskName.set(null);}navigateToThread(){let t=this.previewThreadId(),e=this.previewProjectId();!t||!e||this.router.navigate(["project",e,"thread",t]);}onResizerMousedown(t){t.preventDefault(),this.isDraggingResizer=true,this.dragStartX=t.clientX,this.dragStartWidth=this.previewPanelWidthPercent(),this.containerWidth=this.layoutContainerRef?.nativeElement.offsetWidth??window.innerWidth;}onDocumentMousemove(t){if(!this.isDraggingResizer)return;let n=(this.dragStartX-t.clientX)/this.containerWidth*100,i=Math.min(Fn,Math.max(Vn,this.dragStartWidth+n));this.previewPanelWidthPercent.set(i);}onDocumentMouseup(){this.isDraggingResizer&&(this.isDraggingResizer=false,this.preferences.setMissionPreviewPanelWidth(this.previewPanelWidthPercent()));}connectGlobalSse(t=5e3){this.disconnectGlobalSse();let e=new EventSource("/api/event-stream");this.globalEventSource=e,e.onmessage=n=>{try{let i=JSON.parse(n.data),l=le(i);if(!l)return;let p=l.threadId;if(!p)return;l instanceof f||l instanceof b?this.globalTaskService.applyStatusEvent(p,"invite"):l instanceof O?this.globalTaskService.applyStatusEvent(p,"thinking"):l instanceof V&&this.globalTaskService.refresh();}catch(i){}},e.onerror=()=>{e.readyState===EventSource.CLOSED&&(this.globalEventSource=null,setTimeout(()=>{this.globalEventSource||this.connectGlobalSse(Math.min(t*2,6e4));},t));};}disconnectGlobalSse(){this.globalEventSource&&(this.globalEventSource.close(),this.globalEventSource=null);}static \u0275fac=function(e){return new(e||a)};static \u0275cmp=Fw({type:a,selectors:[["app-global-task-control"]],viewQuery:function(e,n){if(e&1&&Pg(gn,5),e&2){let i;bC(i=SC())&&(n.layoutContainerRef=i.first);}},hostBindings:function(e,n){e&1&&Rg("mousemove",function(l){return n.onDocumentMousemove(l)},gE)("mouseup",function(){return n.onDocumentMouseup()},gE);},decls:85,vars:11,consts:[["layoutContainer",""],["schedulerMenu","matMenu"],["controlCenterMenu","matMenu"],[1,"gtc"],[1,"gtc-toolbar"],[1,"gtc-toolbar-left"],[1,"gtc-logo-icon"],[1,"gtc-title"],["appearance","fill","subscriptSizing","dynamic",1,"gtc-search"],["matPrefix",""],["matInput","","type","search","placeholder","Filter tasks\u2026","autocomplete","off",3,"input","keydown.escape","value"],["matSuffix","","mat-icon-button","","aria-label","Clear"],[1,"gtc-toolbar-actions"],["mat-icon-button","","matTooltip","Schedulers","aria-label","Schedulers",3,"matMenuTriggerFor"],["mat-menu-item","",3,"click"],["mat-icon-button","","matTooltip","Control Center","aria-label","Control Center",3,"matMenuTriggerFor"],["mat-menu-item","","href","https://github.com/whoz-oss/coday","target","_blank","rel","noopener noreferrer"],["mat-icon-button","","matTooltip","Refresh all tasks","aria-label","Refresh tasks",3,"click","disabled"],["mat-stroked-button","","routerLink","/projects","aria-label","Manage projects","matTooltip","Manage projects"],[1,"btn-label"],["mat-flat-button","","aria-label","New task","matTooltip","New Task",1,"gtc-new-btn",3,"click"],[1,"gtc-filter-bar"],["aria-label","Filter by project",1,"gtc-project-filters"],["role","tablist","aria-label","Filter by status",1,"gtc-filters"],["role","tab",1,"filter-chip",3,"active"],["role","switch","aria-label","Show starred tasks only",1,"filter-chip","starred-filter",3,"click"],[1,"filter-icon"],[1,"gtc-body"],[1,"gtc-content"],[1,"gtc-loading"],[1,"gtc-empty"],[1,"gtc-grid"],["matSuffix","","mat-icon-button","","aria-label","Clear",3,"click"],[1,"project-chip",3,"click"],[1,"chip-count"],[1,"project-chip",3,"active"],["role","tab",1,"filter-chip",3,"click"],[1,"filter-badge"],["diameter","36"],[1,"empty-icon"],[1,"gtc-group"],[1,"gtc-group-header"],[1,"gtc-group-title"],[3,"task","projectNameOverride","showProject","previewMode","selectable","selected","is-previewed"],[1,"group-icon"],[1,"group-count"],[1,"gtc-group-actions"],["mat-stroked-button","","matTooltip","Select multiple tasks to mark as done","aria-label","Enter selection mode",1,"select-mode-btn"],["aria-label","Select all paused tasks",1,"select-all-checkbox",3,"change","checked","indeterminate"],["mat-flat-button","",1,"batch-done-btn",3,"matTooltip"],["mat-icon-button","","matTooltip","Cancel selection","aria-label","Cancel selection",1,"select-mode-cancel-btn",3,"click"],["mat-flat-button","",1,"batch-done-btn",3,"click","matTooltip"],["mat-stroked-button","","matTooltip","Select multiple tasks to mark as done","aria-label","Enter selection mode",1,"select-mode-btn",3,"click"],[3,"stopRequested","deleteRequested","starToggled","closeTaskRequested","markDoneRequested","markActiveRequested","previewRequested","selectionChanged","task","projectNameOverride","showProject","previewMode","selectable","selected"],[3,"task","projectNameOverride","showProject","previewMode","is-previewed"],[3,"stopRequested","deleteRequested","starToggled","closeTaskRequested","markDoneRequested","markActiveRequested","previewRequested","task","projectNameOverride","showProject","previewMode"],["matTooltip","Drag to resize","aria-hidden","true",1,"gtc-resizer",3,"mousedown"],[1,"gtc-preview-pane"],[1,"gtc-preview-header"],[1,"gtc-preview-title"],[1,"gtc-preview-actions"],["matTooltip","Open full view","aria-label","Open thread in full view","type","button",1,"preview-action-btn",3,"click"],["matTooltip","Close panel","aria-label","Close preview panel","type","button",1,"preview-action-btn",3,"click"],[1,"gtc-preview-body","thread-preview-host"],[3,"projectName","threadId"]],template:function(e,n){if(e&1&&(ws(0,"div",3,0)(2,"header",4)(3,"div",5)(4,"mat-icon",6),QC(5,"hub"),hl(),ws(6,"h1",7),QC(7,"Global Task Control"),hl()(),ws(8,"mat-form-field",8)(9,"mat-icon",9),QC(10,"search"),hl(),ws(11,"input",10),Rg("input",function(l){return n.onSearchInput(l)})("keydown.escape",function(){return n.clearSearch()}),hl(),oC(12,bn,3,0,"button",11),hl(),ws(13,"div",12)(14,"button",13)(15,"mat-icon"),QC(16,"schedule"),hl()(),ws(17,"mat-menu",null,1)(19,"button",14),Rg("click",function(){return n.openGlobalSchedulersDialog()}),ws(20,"mat-icon"),QC(21,"list"),hl(),ws(22,"span"),QC(23,"View schedulers"),hl()(),ws(24,"button",14),Rg("click",function(){return n.openQuickSchedulerDialog()}),ws(25,"mat-icon"),QC(26,"add"),hl(),ws(27,"span"),QC(28,"New scheduler"),hl()()(),ws(29,"button",15)(30,"mat-icon"),QC(31,"hub"),hl()(),ws(32,"mat-menu",null,2)(34,"button",14),Rg("click",function(){return n.openPreferences()}),ws(35,"mat-icon"),QC(36,"tune"),hl(),ws(37,"span"),QC(38,"Preferences"),hl()(),ws(39,"button",14),Rg("click",function(){return n.openTokenUsage()}),ws(40,"mat-icon"),QC(41,"data_usage"),hl(),ws(42,"span"),QC(43,"Token Usage"),hl()(),ws(44,"button",14),Rg("click",function(){return n.openUserConfig()}),ws(45,"mat-icon"),QC(46,"manage_accounts"),hl(),ws(47,"span"),QC(48,"User Configuration"),hl()(),Sg(49,"mat-divider"),ws(50,"a",16)(51,"mat-icon"),QC(52,"code"),hl(),ws(53,"span"),QC(54,"Contribute on GitHub"),hl()()(),ws(55,"button",17),Rg("click",function(){return n.refresh()}),ws(56,"mat-icon"),QC(57,"refresh"),hl()(),ws(58,"button",18)(59,"mat-icon"),QC(60,"settings"),hl(),ws(61,"span",19),QC(62,"Manage projects"),hl()(),ws(63,"button",20),Rg("click",function(){return n.openNewTaskDialog()}),ws(64,"mat-icon"),QC(65,"rocket_launch"),hl(),ws(66,"span",19),QC(67,"New Task"),hl()()()(),ws(68,"div",21),oC(69,Cn,7,3,"nav",22),ws(70,"nav",23),cC(71,xn,6,6,"button",24,hn),ws(73,"button",25),Rg("click",function(){return n.toggleStarredFilter()}),ws(74,"mat-icon",26),QC(75,"star"),hl(),ws(76,"span"),QC(77,"Starred"),hl()()()(),ws(78,"div",27)(79,"main",28),oC(80,kn,4,0,"div",29)(81,Mn,5,0,"div",30)(82,En,2,0)(83,In,3,0,"div",31),hl(),oC(84,An,14,5),hl()()),e&2){let i=MC(18),l=MC(33);nI(11),bg("value",n.searchQuery()),nI(),iC(n.searchQuery()?12:-1),nI(2),bg("matMenuTriggerFor",i),nI(15),bg("matMenuTriggerFor",l),nI(26),bg("disabled",n.isLoading()),nI(14),iC(n.projectSummaries().length>1?69:-1),nI(2),uC(n.filters),nI(2),Ug("active",n.starredOnly()),Tg("aria-checked",n.starredOnly()),nI(7),iC(n.isLoading()?80:n.displayedTasks().length===0?81:n.activeFilter()==="all"&&!n.searchQuery()?82:83),nI(4),iC(n.previewActive()&&n.previewThreadId()&&n.previewProjectId()?84:-1);}},dependencies:[A,_i,ve,ne,yt,wt$1,hr,pr,Gn$1,Ve,ne$1,Et$1,yt$1,In$1,De,Be,En$1,He,Ne,ce,nt,Ot$2,zt$1,Tn$1,Sn$1,si],styles:[".glass-panel[_ngcontent-%COMP%]{background:var(--glass-bg);backdrop-filter:var(--glass-backdrop-blur);-webkit-backdrop-filter:var(--glass-backdrop-blur);border:1px solid var(--glass-border);box-shadow:var(--glass-shadow)}.glass-interactive[_ngcontent-%COMP%]{background:var(--glass-bg);backdrop-filter:var(--glass-backdrop-blur);-webkit-backdrop-filter:var(--glass-backdrop-blur);border:1px solid var(--glass-border);box-shadow:var(--glass-shadow);transition:all .3s cubic-bezier(.4,0,.2,1)}.glass-interactive[_ngcontent-%COMP%]:hover{transform:translateY(-2px);box-shadow:0 12px 40px #00000026}.glass-interactive[_ngcontent-%COMP%]:active{transform:translateY(0)}.glass-card[_ngcontent-%COMP%]{background:var(--glass-bg);backdrop-filter:var(--glass-backdrop-blur);-webkit-backdrop-filter:var(--glass-backdrop-blur);border:1px solid var(--glass-border);box-shadow:var(--glass-shadow);border-radius:20px;padding:1.5rem}.glass-button[_ngcontent-%COMP%]{background:var(--glass-bg);backdrop-filter:var(--glass-backdrop-blur);-webkit-backdrop-filter:var(--glass-backdrop-blur);border:1px solid var(--glass-border);box-shadow:var(--glass-shadow);transition:all .3s cubic-bezier(.4,0,.2,1)}.glass-button[_ngcontent-%COMP%]:hover{transform:translateY(-2px);box-shadow:0 12px 40px #00000026}.glass-button[_ngcontent-%COMP%]:active{transform:translateY(0)}.glass-button[_ngcontent-%COMP%]{border-radius:12px;padding:.75rem 1.5rem;font-weight:600;cursor:pointer}.glass-button[_ngcontent-%COMP%]:disabled{opacity:.5;cursor:not-allowed;transform:none}.glass-button[_ngcontent-%COMP%]:disabled:hover{transform:none}.smooth-theme-transition[_ngcontent-%COMP%]{transition:background .3s ease,color .3s ease,border-color .3s ease,box-shadow .3s ease}[_nghost-%COMP%]{display:block;width:100%;height:100%;overflow:hidden}.gtc[_ngcontent-%COMP%]{display:flex;flex-direction:column;height:100%;overflow:hidden}.gtc-toolbar[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.5rem;padding:0 .75rem;height:56px;flex-shrink:0;border-bottom:1px solid var(--color-border, rgba(0, 0, 0, .1));box-sizing:border-box}.gtc-toolbar-left[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.375rem;flex-shrink:0}.gtc-logo-icon[_ngcontent-%COMP%]{font-size:1.25rem;width:1.25rem;height:1.25rem;color:var(--color-primary)}.gtc-title[_ngcontent-%COMP%]{margin:0;font-size:1rem;font-weight:600;color:var(--color-text);white-space:nowrap}.gtc-search[_ngcontent-%COMP%]{margin-left:auto;flex:0 1 240px;min-width:80px;--mat-form-field-container-height: 36px;--mat-form-field-container-vertical-padding: 6px;font-size:.875rem;--mdc-filled-text-field-container-color: transparent;--mdc-filled-text-field-hover-container-color: transparent;--mdc-filled-text-field-focus-container-color: transparent;--mdc-filled-text-field-active-indicator-color: transparent;--mdc-filled-text-field-hover-active-indicator-color: transparent;--mdc-filled-text-field-focus-active-indicator-color: transparent;--mdc-filled-text-field-active-indicator-height: 0}.gtc-toolbar-actions[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.375rem;flex-shrink:0}.gtc-new-btn[_ngcontent-%COMP%]{background:var(--color-primary);color:var(--color-text-inverse);border-radius:12px;font-weight:600;height:36px;padding:0 1rem}.gtc-new-btn[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{font-size:1.1rem;width:1.1rem;height:1.1rem}@media(max-width:600px){.gtc-toolbar[_ngcontent-%COMP%]{flex-wrap:wrap;height:auto;min-height:48px;padding:.5rem .75rem;gap:.375rem}.gtc-title[_ngcontent-%COMP%]{font-size:.875rem}.gtc-search[_ngcontent-%COMP%]{order:3;flex:1 1 100%;min-width:0;margin-left:0}.gtc-toolbar-actions[_ngcontent-%COMP%]{margin-left:auto}.btn-label[_ngcontent-%COMP%]{display:none}.gtc-toolbar-actions[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:not(mat-icon-button):not([mat-icon-button]){--mdc-text-button-container-height: 36px;--mdc-filled-button-container-height: 36px;--mdc-outlined-button-container-height: 36px;min-width:36px;width:36px;height:36px;padding:0;border-radius:50%!important}.gtc-toolbar-actions[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:not(mat-icon-button):not([mat-icon-button]) .mat-mdc-button-touch-target[_ngcontent-%COMP%]{width:36px;height:36px}.gtc-toolbar-actions[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:not(mat-icon-button):not([mat-icon-button]) mat-icon[_ngcontent-%COMP%]{margin:0!important}}.gtc-filter-bar[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.375rem;padding:.5rem .75rem;flex-shrink:0;border-bottom:1px solid var(--color-border, rgba(0, 0, 0, .08))}.gtc-project-filters[_ngcontent-%COMP%]{display:flex;gap:.375rem;flex-wrap:wrap}.project-chip[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:.375rem;padding:.2rem .65rem;border-radius:100px;font-size:.75rem;font-weight:500;color:var(--color-text-secondary);background:transparent;border:1px solid var(--color-border);cursor:pointer;transition:background .15s ease,color .15s ease,border-color .15s ease;white-space:nowrap}.project-chip[_ngcontent-%COMP%] .chip-count[_ngcontent-%COMP%]{background:var(--color-bg-hover);border-radius:100px;padding:0 .3rem;font-size:.68rem;font-weight:700;min-width:16px;text-align:center;line-height:16px}.project-chip.active[_ngcontent-%COMP%]{background:var(--color-primary);color:var(--color-text-inverse);border-color:var(--color-primary)}.project-chip.active[_ngcontent-%COMP%] .chip-count[_ngcontent-%COMP%]{background:#ffffff40;color:var(--color-text-inverse)}.project-chip[_ngcontent-%COMP%]:hover:not(.active){background:var(--color-bg-hover);color:var(--color-text)}.gtc-filters[_ngcontent-%COMP%]{display:flex;gap:.375rem;flex-wrap:wrap}.filter-chip[_ngcontent-%COMP%]{background:var(--glass-bg);backdrop-filter:var(--glass-backdrop-blur);-webkit-backdrop-filter:var(--glass-backdrop-blur);border:1px solid var(--glass-border);box-shadow:var(--glass-shadow);display:flex;align-items:center;gap:.375rem;padding:.3rem .75rem;border-radius:100px;font-size:.8rem;font-weight:500;color:var(--color-text-secondary);cursor:pointer;border:1px solid var(--color-border);transition:background .15s ease,color .15s ease,border-color .15s ease;white-space:nowrap}.filter-chip[_ngcontent-%COMP%] .filter-icon[_ngcontent-%COMP%]{font-size:.9rem;width:.9rem;height:.9rem}.filter-chip[_ngcontent-%COMP%] .filter-badge[_ngcontent-%COMP%]{background:var(--color-primary);color:var(--color-text-inverse);border-radius:100px;padding:0 .375rem;font-size:.7rem;font-weight:700;min-width:18px;text-align:center;line-height:18px}.filter-chip.active[_ngcontent-%COMP%]{background:var(--color-primary);color:var(--color-text-inverse);border-color:var(--color-primary)}.filter-chip.active[_ngcontent-%COMP%] .filter-icon[_ngcontent-%COMP%]{color:var(--color-text-inverse)}.filter-chip.active[_ngcontent-%COMP%] .filter-badge[_ngcontent-%COMP%]{background:#ffffff40;color:var(--color-text-inverse)}.filter-chip[_ngcontent-%COMP%]:hover:not(.active){background:var(--color-bg-hover);color:var(--color-text)}.starred-filter.active[_ngcontent-%COMP%]{background:#f5a62326;border-color:#f5a623;color:#f5a623}.starred-filter.active[_ngcontent-%COMP%] .filter-icon[_ngcontent-%COMP%]{color:#f5a623}.gtc-body[_ngcontent-%COMP%]{display:flex;flex-direction:row;flex:1;overflow:hidden;min-height:0}.gtc-content[_ngcontent-%COMP%]{flex:1;overflow-y:auto;padding:1rem 1rem 2rem;min-width:0}.gtc-resizer[_ngcontent-%COMP%]{width:6px;flex-shrink:0;cursor:col-resize;background:transparent;border-left:1px solid var(--color-border);border-right:1px solid var(--color-border);transition:background .15s ease}.gtc-resizer[_ngcontent-%COMP%]:hover, .gtc-resizer[_ngcontent-%COMP%]:active{background:var(--color-primary);opacity:.4}.gtc-preview-pane[_ngcontent-%COMP%]{display:flex;flex-direction:column;height:100%;overflow:hidden;flex-shrink:0;min-width:280px;border-left:1px solid var(--color-border);background:var(--glass-bg)}.gtc-preview-header[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;gap:.5rem;padding:.625rem .75rem .625rem 1rem;border-bottom:1px solid var(--color-border);flex-shrink:0}.gtc-preview-title[_ngcontent-%COMP%]{font-size:.875rem;font-weight:600;color:var(--color-text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1}.gtc-preview-actions[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.125rem;flex-shrink:0}.preview-action-btn[_ngcontent-%COMP%]{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;border:none;border-radius:6px;background:transparent;cursor:pointer;transition:background .15s ease}.preview-action-btn[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{font-size:18px;width:18px;height:18px;line-height:18px;vertical-align:middle;color:var(--color-text-secondary)}.preview-action-btn[_ngcontent-%COMP%]:hover{background:var(--color-bg-hover)}.preview-action-btn[_ngcontent-%COMP%]:hover mat-icon[_ngcontent-%COMP%]{color:var(--color-text)}.gtc-preview-body[_ngcontent-%COMP%]{flex:1;overflow:hidden;display:flex;flex-direction:column;min-height:0}.gtc-preview-body[_ngcontent-%COMP%] app-thread[_ngcontent-%COMP%]{flex:1;display:flex;flex-direction:column;overflow:hidden;min-height:0} app-task-card.is-previewed .task-card{border-color:var(--color-primary);box-shadow:0 0 0 2px var(--color-primary)}.gtc-group[_ngcontent-%COMP%]{margin-bottom:1.25rem}.gtc-group[_ngcontent-%COMP%]:last-child{margin-bottom:0}.gtc-group-header[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;margin-bottom:.75rem;gap:.75rem}.gtc-group-header[_ngcontent-%COMP%] .gtc-group-title[_ngcontent-%COMP%]{margin-bottom:0}.gtc-group-actions[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.375rem;flex-shrink:0}.select-all-checkbox[_ngcontent-%COMP%]{--mdc-checkbox-state-layer-size: 32px}.select-mode-btn[_ngcontent-%COMP%]{height:26px;font-size:.72rem;font-weight:600;padding:0 .625rem;border-radius:8px;color:var(--color-text-secondary);border-color:var(--color-border);line-height:26px}.select-mode-btn[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{font-size:.9rem;width:.9rem;height:.9rem;margin-right:.2rem}.select-mode-btn[_ngcontent-%COMP%]:hover{color:var(--color-text);border-color:var(--color-text-secondary);background:var(--color-bg-hover)}.batch-done-btn[_ngcontent-%COMP%]{height:26px;font-size:.72rem;font-weight:600;padding:0 .625rem;border-radius:8px;background:var(--color-success, #34c759);color:#fff;line-height:26px}.batch-done-btn[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{font-size:.9rem;width:.9rem;height:.9rem;margin-right:.2rem}.select-mode-cancel-btn[_ngcontent-%COMP%]{width:28px;height:28px;display:inline-flex!important;align-items:center!important;justify-content:center!important;color:var(--color-text-secondary)}.select-mode-cancel-btn[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{font-size:1rem;width:1rem;height:1rem;line-height:1}.select-mode-cancel-btn[_ngcontent-%COMP%]:hover{color:var(--color-text)}.gtc-group-title[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.5rem;margin:0 0 .75rem;font-size:.8rem;font-weight:600;color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.05em}.gtc-group-title[_ngcontent-%COMP%] .group-icon[_ngcontent-%COMP%]{font-size:.95rem;width:.95rem;height:.95rem}.gtc-group-title[_ngcontent-%COMP%] .group-count[_ngcontent-%COMP%]{background:var(--color-bg-hover);border-radius:100px;padding:0 .375rem;font-size:.7rem;font-weight:700;min-width:16px;text-align:center;line-height:16px}.gtc-grid[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1rem}@media(max-width:600px){.gtc-grid[_ngcontent-%COMP%]{grid-template-columns:1fr}}.gtc-loading[_ngcontent-%COMP%], .gtc-empty[_ngcontent-%COMP%]{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1rem;padding:3rem;color:var(--color-text-secondary);text-align:center}.gtc-loading[_ngcontent-%COMP%] p[_ngcontent-%COMP%], .gtc-empty[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{margin:0;font-size:.9rem}.empty-icon[_ngcontent-%COMP%]{font-size:2.5rem;width:2.5rem;height:2.5rem;opacity:.3}"]})};
|
|
4
4
|
export{wt as GlobalTaskControlComponent};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import {cb as LB,cc as PB,g,G as G$1,P,E as ET,h as Fw,i as hr,k as Gn,m as ws,o as Rg,q as oC,Q as QC,n as hl,b$ as BC,A as Ug,T as Tg,t as nI,x as iC,a8 as Yg,a5 as Dl,v as bg,a9 as gC,aa as wf,ac as EC,ab as Cf,S as Sg}from'./main-5PAOSHSM.js';import {v as ve,n as ne}from'./chunk-Dcftf7UY.js';import {V as Ve,n as ne$1}from'./chunk-S8F5_Te_.js';import {y as yt,w as wt}from'./chunk-tTmeIHGS.js';function L(a,e){if(a&1){let n=gC();ws(0,"div",1)(1,"mat-checkbox",21),Rg("click",function(r){return r.stopPropagation()})("change",function(r){wf(n);let i=EC();return Cf(i.selectionChanged.emit({id:i.task().id,selected:r.checked}))}),hl()();}if(a&2){let n=EC();nI(),bg("checked",n.selected()),Tg("aria-label","Select task: "+n.task().name);}}function Y(a,e){a&1&&(ws(0,"mat-icon",2),QC(1,"star"),hl());}function W(a,e){a&1&&Sg(0,"span",6);}function U(a,e){if(a&1&&(ws(0,"div",7)(1,"mat-icon",22),QC(2,"folder"),hl(),ws(3,"span"),QC(4),hl()()),a&2){let n=EC();nI(4),Yg(n.projectName());}}function B(a,e){if(a&1&&(ws(0,"p",9),QC(1),hl()),a&2){let n=EC();nI(),Yg(n.task().summary);}}function $(a,e){a&1&&(ws(0,"p",10),QC(1,"No summary yet"),hl());}function H(a,e){if(a&1){let n=gC();ws(0,"button",23),Rg("click",function(r){wf(n);let i=EC();return Cf(i.onOpenDirect(r))}),ws(1,"mat-icon"),QC(2,"open_in_new"),hl()();}}function F(a,e){if(a&1){let n=gC();ws(0,"button",24),Rg("click",function(r){wf(n);let i=EC();return Cf(i.onStop(r))}),ws(1,"mat-icon"),QC(2,"stop_circle"),hl()();}}function G(a,e){if(a&1){let n=gC();ws(0,"button",25),Rg("click",function(r){wf(n);let i=EC();return Cf(i.onMarkDone(r))}),ws(1,"mat-icon"),QC(2,"check_circle_outline"),hl()();}}function K(a,e){if(a&1){let n=gC();ws(0,"button",26),Rg("click",function(r){wf(n);let i=EC();return Cf(i.onMarkActive(r))}),ws(1,"mat-icon"),QC(2,"replay"),hl()();}}function J(a,e){if(a&1){let n=gC();ws(0,"button",27),Rg("click",function(r){wf(n);let i=EC();return Cf(i.onCloseTask(r))}),ws(1,"mat-icon"),QC(2,"close_fullscreen"),hl()();}}var A=class a{task=LB.required();projectNameOverride=LB(null);showProject=LB(false);previewMode=LB(false);selectable=LB(false);selected=LB(false);stopRequested=PB();deleteRequested=PB();starToggled=PB();closeTaskRequested=PB();markDoneRequested=PB();markActiveRequested=PB();previewRequested=PB();selectionChanged=PB();router=g(G$1);projectState=g(P);projectName=ET(()=>this.projectNameOverride()??this.projectState.getSelectedProjectId());statusLabel=ET(()=>Q[this.task().status]);statusIcon=ET(()=>X[this.task().status]);isWorktree=ET(()=>!!this.task().worktreeProject);navigate(){if(this.previewMode()){this.previewRequested.emit(this.task().id);return}let e=this.projectName();e&&(this.projectState.selectProject(e),this.router.navigate(["project",e,"thread",this.task().id]));}onStop(e){e.stopPropagation(),this.stopRequested.emit(this.task().id);}onDelete(e){e.stopPropagation(),this.deleteRequested.emit(this.task().id);}onStarToggle(e){e.stopPropagation(),this.starToggled.emit(this.task().id);}onCloseTask(e){e.stopPropagation(),this.closeTaskRequested.emit(this.task().id);}onMarkDone(e){e.stopPropagation(),this.markDoneRequested.emit(this.task().id);}onMarkActive(e){e.stopPropagation(),this.markActiveRequested.emit(this.task().id);}onOpenDirect(e){e.stopPropagation();let n=this.projectName();n&&(this.projectState.selectProject(n),this.router.navigate(["project",n,"thread",this.task().id]));}formatRelativeTime(e){let n=Date.now()-new Date(e).getTime(),t=Math.floor(n/6e4);if(t<1)return "just now";if(t<60)return `${t} min ago`;let r=Math.floor(t/60);if(r<24)return `${r}h ago`;let i=Math.floor(r/24);return i===1?"yesterday":i<7?`${i} days ago`:new Date(e).toLocaleDateString("en",{day:"numeric",month:"short"})}static \u0275fac=function(n){return new(n||a)};static \u0275cmp=Fw({type:a,selectors:[["app-task-card"]],inputs:{task:[1,"task"],projectNameOverride:[1,"projectNameOverride"],showProject:[1,"showProject"],previewMode:[1,"previewMode"],selectable:[1,"selectable"],selected:[1,"selected"]},outputs:{stopRequested:"stopRequested",deleteRequested:"deleteRequested",starToggled:"starToggled",closeTaskRequested:"closeTaskRequested",markDoneRequested:"markDoneRequested",markActiveRequested:"markActiveRequested",previewRequested:"previewRequested",selectionChanged:"selectionChanged"},decls:29,vars:25,consts:[["role","button","tabindex","0",1,"task-card",3,"click","keydown.enter","keydown.space"],[1,"selection-checkbox"],["aria-label","Starred",1,"starred-indicator"],[1,"status-badge"],[1,"status-icon"],[1,"status-label"],["aria-hidden","true",1,"pulse-ring"],[1,"task-project"],[1,"task-name"],[1,"task-summary"],[1,"task-summary","empty"],[1,"task-footer"],[1,"task-time"],[1,"task-actions"],["mat-icon-button","","matTooltip","Open full view","aria-label","Open task in full view",1,"action-btn","open-btn"],["mat-icon-button","","matTooltip","Stop agent","aria-label","Stop agent",1,"action-btn","stop-btn"],["mat-icon-button","","matTooltip","Mark as done","aria-label","Mark as done",1,"action-btn","mark-done-btn"],["mat-icon-button","","matTooltip","Mark as active","aria-label","Mark as active",1,"action-btn","mark-active-btn"],["mat-icon-button","",1,"action-btn","star-btn",3,"click","matTooltip"],["mat-icon-button","","matTooltip","Close task (removes worktree)","aria-label","Close task",1,"action-btn","close-task-btn"],["mat-icon-button","","matTooltip","Delete task","aria-label","Delete task",1,"action-btn","delete-btn",3,"click"],[3,"click","change","checked"],[1,"project-icon"],["mat-icon-button","","matTooltip","Open full view","aria-label","Open task in full view",1,"action-btn","open-btn",3,"click"],["mat-icon-button","","matTooltip","Stop agent","aria-label","Stop agent",1,"action-btn","stop-btn",3,"click"],["mat-icon-button","","matTooltip","Mark as done","aria-label","Mark as done",1,"action-btn","mark-done-btn",3,"click"],["mat-icon-button","","matTooltip","Mark as active","aria-label","Mark as active",1,"action-btn","mark-active-btn",3,"click"],["mat-icon-button","","matTooltip","Close task (removes worktree)","aria-label","Close task",1,"action-btn","close-task-btn",3,"click"]],template:function(n,t){n&1&&(ws(0,"article",0),Rg("click",function(){return t.navigate()})("keydown.enter",function(){return t.navigate()})("keydown.space",function(i){return t.navigate(),i.preventDefault()}),oC(1,L,2,2,"div",1),oC(2,Y,2,0,"mat-icon",2),ws(3,"div",3)(4,"mat-icon",4),QC(5),hl(),ws(6,"span",5),QC(7),hl(),oC(8,W,1,0,"span",6),hl(),oC(9,U,5,1,"div",7),ws(10,"h3",8),QC(11),hl(),oC(12,B,2,1,"p",9)(13,$,2,0,"p",10),ws(14,"footer",11)(15,"span",12),QC(16),hl(),ws(17,"div",13),oC(18,H,3,0,"button",14),oC(19,F,3,0,"button",15),oC(20,G,3,0,"button",16)(21,K,3,0,"button",17),ws(22,"button",18),Rg("click",function(i){return t.onStarToggle(i)}),ws(23,"mat-icon"),QC(24),hl()(),oC(25,J,3,0,"button",19),ws(26,"button",20),Rg("click",function(i){return t.onDelete(i)}),ws(27,"mat-icon"),QC(28,"delete_outline"),hl()()()()()),n&2&&(BC("status-"+t.task().status),Ug("is-active",t.task().isActive)("is-selected",t.selected()),Tg("aria-label","Open task: "+t.task().name),nI(),iC(t.selectable()?1:-1),nI(),iC(t.task().starring.length>0?2:-1),nI(3),Yg(t.statusIcon()),nI(2),Yg(t.statusLabel()),nI(),iC(t.task().status==="waiting-you"?8:-1),nI(),iC(t.showProject()&&t.projectName()?9:-1),nI(2),Dl(" ",t.task().name||"Unnamed task"," "),nI(),iC(t.task().summary?12:13),nI(4),Yg(t.formatRelativeTime(t.task().modifiedDate)),nI(2),iC(t.previewMode()?18:-1),nI(),iC(t.task().status==="in-progress"?19:-1),nI(),iC(t.task().status!=="done"?20:21),nI(2),Ug("starred",t.task().starring.length>0),bg("matTooltip",t.task().starring.length>0?"Unstar":"Star"),Tg("aria-label",t.task().starring.length>0?"Unstar task":"Star task"),nI(2),Yg(t.task().starring.length>0?"star":"star_border"),nI(),iC(t.isWorktree()?25:-1));},dependencies:[ve,ne,yt,wt,hr,Gn,Ve,ne$1],styles:['.glass-panel[_ngcontent-%COMP%]{background:var(--glass-bg);backdrop-filter:var(--glass-backdrop-blur);-webkit-backdrop-filter:var(--glass-backdrop-blur);border:1px solid var(--glass-border);box-shadow:var(--glass-shadow)}.glass-interactive[_ngcontent-%COMP%]{background:var(--glass-bg);backdrop-filter:var(--glass-backdrop-blur);-webkit-backdrop-filter:var(--glass-backdrop-blur);border:1px solid var(--glass-border);box-shadow:var(--glass-shadow);transition:all .3s cubic-bezier(.4,0,.2,1)}.glass-interactive[_ngcontent-%COMP%]:hover{transform:translateY(-2px);box-shadow:0 12px 40px #00000026}.glass-interactive[_ngcontent-%COMP%]:active{transform:translateY(0)}.glass-card[_ngcontent-%COMP%]{background:var(--glass-bg);backdrop-filter:var(--glass-backdrop-blur);-webkit-backdrop-filter:var(--glass-backdrop-blur);border:1px solid var(--glass-border);box-shadow:var(--glass-shadow);border-radius:20px;padding:1.5rem}.glass-button[_ngcontent-%COMP%]{background:var(--glass-bg);backdrop-filter:var(--glass-backdrop-blur);-webkit-backdrop-filter:var(--glass-backdrop-blur);border:1px solid var(--glass-border);box-shadow:var(--glass-shadow);transition:all .3s cubic-bezier(.4,0,.2,1)}.glass-button[_ngcontent-%COMP%]:hover{transform:translateY(-2px);box-shadow:0 12px 40px #00000026}.glass-button[_ngcontent-%COMP%]:active{transform:translateY(0)}.glass-button[_ngcontent-%COMP%]{border-radius:12px;padding:.75rem 1.5rem;font-weight:600;cursor:pointer}.glass-button[_ngcontent-%COMP%]:disabled{opacity:.5;cursor:not-allowed;transform:none}.glass-button[_ngcontent-%COMP%]:disabled:hover{transform:none}.smooth-theme-transition[_ngcontent-%COMP%]{transition:background .3s ease,color .3s ease,border-color .3s ease,box-shadow .3s ease}[_nghost-%COMP%]{display:block}.task-card[_ngcontent-%COMP%]{background:var(--glass-bg);backdrop-filter:var(--glass-backdrop-blur);-webkit-backdrop-filter:var(--glass-backdrop-blur);border:1px solid var(--glass-border);box-shadow:var(--glass-shadow);border-radius:16px;padding:1.25rem;cursor:pointer;position:relative;overflow:hidden;transition:transform .2s cubic-bezier(.4,0,.2,1),box-shadow .2s cubic-bezier(.4,0,.2,1),border-color .2s ease;outline:none;display:flex;flex-direction:column;gap:.5rem;min-height:160px}.task-card[_ngcontent-%COMP%]:hover, .task-card[_ngcontent-%COMP%]:focus-visible{transform:translateY(-3px);box-shadow:0 16px 48px #00000026}.task-card[_ngcontent-%COMP%]:active{transform:translateY(-1px)}.task-card[_ngcontent-%COMP%]:before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;border-radius:16px 0 0 16px;background:var(--status-color, var(--color-text-secondary))}.task-card.status-waiting-you[_ngcontent-%COMP%]{--status-color: var(--color-error);border-color:#ff3b3040}.task-card.status-in-progress[_ngcontent-%COMP%]{--status-color: var(--color-warning);border-color:#ff950033}.task-card.status-done[_ngcontent-%COMP%]{--status-color: var(--color-success)}.task-card.status-paused[_ngcontent-%COMP%]{--status-color: var(--color-text-secondary)}.task-card.status-error[_ngcontent-%COMP%]{--status-color: var(--color-error)}.task-card.is-active[_ngcontent-%COMP%]{box-shadow:var(--glass-shadow),0 0 0 2px rgba(var(--color-primary),.3)}.selection-checkbox[_ngcontent-%COMP%]{position:absolute;right:.875rem;top:1.125rem;z-index:2}.task-card.is-selected[_ngcontent-%COMP%]{border-color:var(--color-primary);box-shadow:var(--glass-shadow),0 0 0 2px var(--color-primary)}.task-card.is-selected[_ngcontent-%COMP%]:before{background:var(--color-primary)}.starred-indicator[_ngcontent-%COMP%]{position:absolute;top:.75rem;right:.75rem;font-size:1rem;width:1rem;height:1rem;color:#f5a623;pointer-events:none}.status-badge[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.375rem;position:relative}.status-badge[_ngcontent-%COMP%] .status-icon[_ngcontent-%COMP%]{font-size:1rem;width:1rem;height:1rem;color:var(--status-color, var(--color-text-secondary))}.status-in-progress[_ngcontent-%COMP%] .status-badge[_ngcontent-%COMP%] .status-icon[_ngcontent-%COMP%]{animation:_ngcontent-%COMP%_spin 2s linear infinite}.status-badge[_ngcontent-%COMP%] .status-label[_ngcontent-%COMP%]{font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--status-color, var(--color-text-secondary))}.status-badge[_ngcontent-%COMP%] .pulse-ring[_ngcontent-%COMP%]{position:absolute;left:-2px;top:-2px;width:20px;height:20px;border-radius:50%;border:2px solid var(--color-error);animation:_ngcontent-%COMP%_pulse 1.5s ease-out infinite;pointer-events:none}.task-project[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.25rem;font-size:.72rem;font-weight:600;color:var(--color-primary);opacity:.8;text-transform:uppercase;letter-spacing:.04em}.task-project[_ngcontent-%COMP%] .project-icon[_ngcontent-%COMP%]{font-size:.75rem;width:.75rem;height:.75rem}.task-name[_ngcontent-%COMP%]{margin:0;font-size:.95rem;font-weight:600;color:var(--color-text);line-height:1.3;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.task-summary[_ngcontent-%COMP%]{margin:0;font-size:.8rem;color:var(--color-text-secondary);line-height:1.4;flex:1;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.task-summary.empty[_ngcontent-%COMP%]{font-style:italic;opacity:.6}.task-footer[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;margin-top:auto;padding-top:.25rem}.task-time[_ngcontent-%COMP%]{font-size:.72rem;color:var(--color-text-secondary);opacity:.8}.task-actions[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.125rem;opacity:0;transition:opacity .15s ease}.task-card[_ngcontent-%COMP%]:hover .task-actions[_ngcontent-%COMP%], .task-card[_ngcontent-%COMP%]:focus-within .task-actions[_ngcontent-%COMP%]{opacity:1}.task-actions[_ngcontent-%COMP%] .action-btn[_ngcontent-%COMP%]{width:28px;height:28px;display:flex!important;align-items:center!important;justify-content:center!important;padding:0!important}.task-actions[_ngcontent-%COMP%] .action-btn[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{font-size:1rem;width:1rem;height:1rem;display:flex;align-items:center;justify-content:center}.task-actions[_ngcontent-%COMP%] .stop-btn[_ngcontent-%COMP%]{color:var(--color-error)}.task-actions[_ngcontent-%COMP%] .mark-done-btn[_ngcontent-%COMP%]{color:var(--color-success)}.task-actions[_ngcontent-%COMP%] .star-btn[_ngcontent-%COMP%]{color:var(--color-text-secondary)}.task-actions[_ngcontent-%COMP%] .star-btn.starred[_ngcontent-%COMP%]{color:#f5a623}.task-actions[_ngcontent-%COMP%] .delete-btn[_ngcontent-%COMP%]{color:var(--color-text-secondary)}.task-actions[_ngcontent-%COMP%] .delete-btn[_ngcontent-%COMP%]:hover{color:var(--color-error)}.task-actions[_ngcontent-%COMP%] .open-btn[_ngcontent-%COMP%]{color:var(--color-primary)}.task-actions[_ngcontent-%COMP%] .open-btn[_ngcontent-%COMP%]:hover{color:var(--color-primary-hover)}@media(max-width:600px){.task-actions[_ngcontent-%COMP%]{opacity:1}.task-actions[_ngcontent-%COMP%] .action-btn[_ngcontent-%COMP%]{width:36px;height:36px}.task-actions[_ngcontent-%COMP%] .action-btn[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{font-size:1.25rem;width:1.25rem;height:1.25rem}}@keyframes _ngcontent-%COMP%_spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes _ngcontent-%COMP%_pulse{0%{transform:scale(.8);opacity:1}to{transform:scale(2.2);opacity:0}}']})},Q={"waiting-you":"Waiting for you","in-progress":"In progress\u2026",done:"Done",paused:"Paused",error:"Error"},X={"waiting-you":"mark_unread_chat_alt","in-progress":"pending",done:"check_circle",paused:"pause_circle",error:"error"};var bt=300*1e3,kt={"waiting-you":0,"in-progress":1,done:2,paused:3,error:4};export{A,bt as b,kt as k};
|
|
1
|
+
import {cb as LB,cc as PB,g,G as G$1,P,E as ET,h as Fw,i as hr,k as Gn,m as ws,o as Rg,q as oC,Q as QC,n as hl,b$ as BC,A as Ug,T as Tg,t as nI,x as iC,a8 as Yg,a5 as Dl,v as bg,a9 as gC,aa as wf,ac as EC,ab as Cf,S as Sg}from'./main-LBRSRTYI.js';import {v as ve,n as ne}from'./chunk-BXkvjekT.js';import {V as Ve,n as ne$1}from'./chunk-DjMtxVWg.js';import {y as yt,w as wt}from'./chunk-BYyTBqh4.js';function L(a,e){if(a&1){let n=gC();ws(0,"div",1)(1,"mat-checkbox",21),Rg("click",function(r){return r.stopPropagation()})("change",function(r){wf(n);let i=EC();return Cf(i.selectionChanged.emit({id:i.task().id,selected:r.checked}))}),hl()();}if(a&2){let n=EC();nI(),bg("checked",n.selected()),Tg("aria-label","Select task: "+n.task().name);}}function Y(a,e){a&1&&(ws(0,"mat-icon",2),QC(1,"star"),hl());}function W(a,e){a&1&&Sg(0,"span",6);}function U(a,e){if(a&1&&(ws(0,"div",7)(1,"mat-icon",22),QC(2,"folder"),hl(),ws(3,"span"),QC(4),hl()()),a&2){let n=EC();nI(4),Yg(n.projectName());}}function B(a,e){if(a&1&&(ws(0,"p",9),QC(1),hl()),a&2){let n=EC();nI(),Yg(n.task().summary);}}function $(a,e){a&1&&(ws(0,"p",10),QC(1,"No summary yet"),hl());}function H(a,e){if(a&1){let n=gC();ws(0,"button",23),Rg("click",function(r){wf(n);let i=EC();return Cf(i.onOpenDirect(r))}),ws(1,"mat-icon"),QC(2,"open_in_new"),hl()();}}function F(a,e){if(a&1){let n=gC();ws(0,"button",24),Rg("click",function(r){wf(n);let i=EC();return Cf(i.onStop(r))}),ws(1,"mat-icon"),QC(2,"stop_circle"),hl()();}}function G(a,e){if(a&1){let n=gC();ws(0,"button",25),Rg("click",function(r){wf(n);let i=EC();return Cf(i.onMarkDone(r))}),ws(1,"mat-icon"),QC(2,"check_circle_outline"),hl()();}}function K(a,e){if(a&1){let n=gC();ws(0,"button",26),Rg("click",function(r){wf(n);let i=EC();return Cf(i.onMarkActive(r))}),ws(1,"mat-icon"),QC(2,"replay"),hl()();}}function J(a,e){if(a&1){let n=gC();ws(0,"button",27),Rg("click",function(r){wf(n);let i=EC();return Cf(i.onCloseTask(r))}),ws(1,"mat-icon"),QC(2,"close_fullscreen"),hl()();}}var A=class a{task=LB.required();projectNameOverride=LB(null);showProject=LB(false);previewMode=LB(false);selectable=LB(false);selected=LB(false);stopRequested=PB();deleteRequested=PB();starToggled=PB();closeTaskRequested=PB();markDoneRequested=PB();markActiveRequested=PB();previewRequested=PB();selectionChanged=PB();router=g(G$1);projectState=g(P);projectName=ET(()=>this.projectNameOverride()??this.projectState.getSelectedProjectId());statusLabel=ET(()=>Q[this.task().status]);statusIcon=ET(()=>X[this.task().status]);isWorktree=ET(()=>!!this.task().worktreeProject);navigate(){if(this.previewMode()){this.previewRequested.emit(this.task().id);return}let e=this.projectName();e&&(this.projectState.selectProject(e),this.router.navigate(["project",e,"thread",this.task().id]));}onStop(e){e.stopPropagation(),this.stopRequested.emit(this.task().id);}onDelete(e){e.stopPropagation(),this.deleteRequested.emit(this.task().id);}onStarToggle(e){e.stopPropagation(),this.starToggled.emit(this.task().id);}onCloseTask(e){e.stopPropagation(),this.closeTaskRequested.emit(this.task().id);}onMarkDone(e){e.stopPropagation(),this.markDoneRequested.emit(this.task().id);}onMarkActive(e){e.stopPropagation(),this.markActiveRequested.emit(this.task().id);}onOpenDirect(e){e.stopPropagation();let n=this.projectName();n&&(this.projectState.selectProject(n),this.router.navigate(["project",n,"thread",this.task().id]));}formatRelativeTime(e){let n=Date.now()-new Date(e).getTime(),t=Math.floor(n/6e4);if(t<1)return "just now";if(t<60)return `${t} min ago`;let r=Math.floor(t/60);if(r<24)return `${r}h ago`;let i=Math.floor(r/24);return i===1?"yesterday":i<7?`${i} days ago`:new Date(e).toLocaleDateString("en",{day:"numeric",month:"short"})}static \u0275fac=function(n){return new(n||a)};static \u0275cmp=Fw({type:a,selectors:[["app-task-card"]],inputs:{task:[1,"task"],projectNameOverride:[1,"projectNameOverride"],showProject:[1,"showProject"],previewMode:[1,"previewMode"],selectable:[1,"selectable"],selected:[1,"selected"]},outputs:{stopRequested:"stopRequested",deleteRequested:"deleteRequested",starToggled:"starToggled",closeTaskRequested:"closeTaskRequested",markDoneRequested:"markDoneRequested",markActiveRequested:"markActiveRequested",previewRequested:"previewRequested",selectionChanged:"selectionChanged"},decls:29,vars:25,consts:[["role","button","tabindex","0",1,"task-card",3,"click","keydown.enter","keydown.space"],[1,"selection-checkbox"],["aria-label","Starred",1,"starred-indicator"],[1,"status-badge"],[1,"status-icon"],[1,"status-label"],["aria-hidden","true",1,"pulse-ring"],[1,"task-project"],[1,"task-name"],[1,"task-summary"],[1,"task-summary","empty"],[1,"task-footer"],[1,"task-time"],[1,"task-actions"],["mat-icon-button","","matTooltip","Open full view","aria-label","Open task in full view",1,"action-btn","open-btn"],["mat-icon-button","","matTooltip","Stop agent","aria-label","Stop agent",1,"action-btn","stop-btn"],["mat-icon-button","","matTooltip","Mark as done","aria-label","Mark as done",1,"action-btn","mark-done-btn"],["mat-icon-button","","matTooltip","Mark as active","aria-label","Mark as active",1,"action-btn","mark-active-btn"],["mat-icon-button","",1,"action-btn","star-btn",3,"click","matTooltip"],["mat-icon-button","","matTooltip","Close task (removes worktree)","aria-label","Close task",1,"action-btn","close-task-btn"],["mat-icon-button","","matTooltip","Delete task","aria-label","Delete task",1,"action-btn","delete-btn",3,"click"],[3,"click","change","checked"],[1,"project-icon"],["mat-icon-button","","matTooltip","Open full view","aria-label","Open task in full view",1,"action-btn","open-btn",3,"click"],["mat-icon-button","","matTooltip","Stop agent","aria-label","Stop agent",1,"action-btn","stop-btn",3,"click"],["mat-icon-button","","matTooltip","Mark as done","aria-label","Mark as done",1,"action-btn","mark-done-btn",3,"click"],["mat-icon-button","","matTooltip","Mark as active","aria-label","Mark as active",1,"action-btn","mark-active-btn",3,"click"],["mat-icon-button","","matTooltip","Close task (removes worktree)","aria-label","Close task",1,"action-btn","close-task-btn",3,"click"]],template:function(n,t){n&1&&(ws(0,"article",0),Rg("click",function(){return t.navigate()})("keydown.enter",function(){return t.navigate()})("keydown.space",function(i){return t.navigate(),i.preventDefault()}),oC(1,L,2,2,"div",1),oC(2,Y,2,0,"mat-icon",2),ws(3,"div",3)(4,"mat-icon",4),QC(5),hl(),ws(6,"span",5),QC(7),hl(),oC(8,W,1,0,"span",6),hl(),oC(9,U,5,1,"div",7),ws(10,"h3",8),QC(11),hl(),oC(12,B,2,1,"p",9)(13,$,2,0,"p",10),ws(14,"footer",11)(15,"span",12),QC(16),hl(),ws(17,"div",13),oC(18,H,3,0,"button",14),oC(19,F,3,0,"button",15),oC(20,G,3,0,"button",16)(21,K,3,0,"button",17),ws(22,"button",18),Rg("click",function(i){return t.onStarToggle(i)}),ws(23,"mat-icon"),QC(24),hl()(),oC(25,J,3,0,"button",19),ws(26,"button",20),Rg("click",function(i){return t.onDelete(i)}),ws(27,"mat-icon"),QC(28,"delete_outline"),hl()()()()()),n&2&&(BC("status-"+t.task().status),Ug("is-active",t.task().isActive)("is-selected",t.selected()),Tg("aria-label","Open task: "+t.task().name),nI(),iC(t.selectable()?1:-1),nI(),iC(t.task().starring.length>0?2:-1),nI(3),Yg(t.statusIcon()),nI(2),Yg(t.statusLabel()),nI(),iC(t.task().status==="waiting-you"?8:-1),nI(),iC(t.showProject()&&t.projectName()?9:-1),nI(2),Dl(" ",t.task().name||"Unnamed task"," "),nI(),iC(t.task().summary?12:13),nI(4),Yg(t.formatRelativeTime(t.task().modifiedDate)),nI(2),iC(t.previewMode()?18:-1),nI(),iC(t.task().status==="in-progress"?19:-1),nI(),iC(t.task().status!=="done"?20:21),nI(2),Ug("starred",t.task().starring.length>0),bg("matTooltip",t.task().starring.length>0?"Unstar":"Star"),Tg("aria-label",t.task().starring.length>0?"Unstar task":"Star task"),nI(2),Yg(t.task().starring.length>0?"star":"star_border"),nI(),iC(t.isWorktree()?25:-1));},dependencies:[ve,ne,yt,wt,hr,Gn,Ve,ne$1],styles:['.glass-panel[_ngcontent-%COMP%]{background:var(--glass-bg);backdrop-filter:var(--glass-backdrop-blur);-webkit-backdrop-filter:var(--glass-backdrop-blur);border:1px solid var(--glass-border);box-shadow:var(--glass-shadow)}.glass-interactive[_ngcontent-%COMP%]{background:var(--glass-bg);backdrop-filter:var(--glass-backdrop-blur);-webkit-backdrop-filter:var(--glass-backdrop-blur);border:1px solid var(--glass-border);box-shadow:var(--glass-shadow);transition:all .3s cubic-bezier(.4,0,.2,1)}.glass-interactive[_ngcontent-%COMP%]:hover{transform:translateY(-2px);box-shadow:0 12px 40px #00000026}.glass-interactive[_ngcontent-%COMP%]:active{transform:translateY(0)}.glass-card[_ngcontent-%COMP%]{background:var(--glass-bg);backdrop-filter:var(--glass-backdrop-blur);-webkit-backdrop-filter:var(--glass-backdrop-blur);border:1px solid var(--glass-border);box-shadow:var(--glass-shadow);border-radius:20px;padding:1.5rem}.glass-button[_ngcontent-%COMP%]{background:var(--glass-bg);backdrop-filter:var(--glass-backdrop-blur);-webkit-backdrop-filter:var(--glass-backdrop-blur);border:1px solid var(--glass-border);box-shadow:var(--glass-shadow);transition:all .3s cubic-bezier(.4,0,.2,1)}.glass-button[_ngcontent-%COMP%]:hover{transform:translateY(-2px);box-shadow:0 12px 40px #00000026}.glass-button[_ngcontent-%COMP%]:active{transform:translateY(0)}.glass-button[_ngcontent-%COMP%]{border-radius:12px;padding:.75rem 1.5rem;font-weight:600;cursor:pointer}.glass-button[_ngcontent-%COMP%]:disabled{opacity:.5;cursor:not-allowed;transform:none}.glass-button[_ngcontent-%COMP%]:disabled:hover{transform:none}.smooth-theme-transition[_ngcontent-%COMP%]{transition:background .3s ease,color .3s ease,border-color .3s ease,box-shadow .3s ease}[_nghost-%COMP%]{display:block}.task-card[_ngcontent-%COMP%]{background:var(--glass-bg);backdrop-filter:var(--glass-backdrop-blur);-webkit-backdrop-filter:var(--glass-backdrop-blur);border:1px solid var(--glass-border);box-shadow:var(--glass-shadow);border-radius:16px;padding:1.25rem;cursor:pointer;position:relative;overflow:hidden;transition:transform .2s cubic-bezier(.4,0,.2,1),box-shadow .2s cubic-bezier(.4,0,.2,1),border-color .2s ease;outline:none;display:flex;flex-direction:column;gap:.5rem;min-height:160px}.task-card[_ngcontent-%COMP%]:hover, .task-card[_ngcontent-%COMP%]:focus-visible{transform:translateY(-3px);box-shadow:0 16px 48px #00000026}.task-card[_ngcontent-%COMP%]:active{transform:translateY(-1px)}.task-card[_ngcontent-%COMP%]:before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;border-radius:16px 0 0 16px;background:var(--status-color, var(--color-text-secondary))}.task-card.status-waiting-you[_ngcontent-%COMP%]{--status-color: var(--color-error);border-color:#ff3b3040}.task-card.status-in-progress[_ngcontent-%COMP%]{--status-color: var(--color-warning);border-color:#ff950033}.task-card.status-done[_ngcontent-%COMP%]{--status-color: var(--color-success)}.task-card.status-paused[_ngcontent-%COMP%]{--status-color: var(--color-text-secondary)}.task-card.status-error[_ngcontent-%COMP%]{--status-color: var(--color-error)}.task-card.is-active[_ngcontent-%COMP%]{box-shadow:var(--glass-shadow),0 0 0 2px rgba(var(--color-primary),.3)}.selection-checkbox[_ngcontent-%COMP%]{position:absolute;right:.875rem;top:1.125rem;z-index:2}.task-card.is-selected[_ngcontent-%COMP%]{border-color:var(--color-primary);box-shadow:var(--glass-shadow),0 0 0 2px var(--color-primary)}.task-card.is-selected[_ngcontent-%COMP%]:before{background:var(--color-primary)}.starred-indicator[_ngcontent-%COMP%]{position:absolute;top:.75rem;right:.75rem;font-size:1rem;width:1rem;height:1rem;color:#f5a623;pointer-events:none}.status-badge[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.375rem;position:relative}.status-badge[_ngcontent-%COMP%] .status-icon[_ngcontent-%COMP%]{font-size:1rem;width:1rem;height:1rem;color:var(--status-color, var(--color-text-secondary))}.status-in-progress[_ngcontent-%COMP%] .status-badge[_ngcontent-%COMP%] .status-icon[_ngcontent-%COMP%]{animation:_ngcontent-%COMP%_spin 2s linear infinite}.status-badge[_ngcontent-%COMP%] .status-label[_ngcontent-%COMP%]{font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--status-color, var(--color-text-secondary))}.status-badge[_ngcontent-%COMP%] .pulse-ring[_ngcontent-%COMP%]{position:absolute;left:-2px;top:-2px;width:20px;height:20px;border-radius:50%;border:2px solid var(--color-error);animation:_ngcontent-%COMP%_pulse 1.5s ease-out infinite;pointer-events:none}.task-project[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.25rem;font-size:.72rem;font-weight:600;color:var(--color-primary);opacity:.8;text-transform:uppercase;letter-spacing:.04em}.task-project[_ngcontent-%COMP%] .project-icon[_ngcontent-%COMP%]{font-size:.75rem;width:.75rem;height:.75rem}.task-name[_ngcontent-%COMP%]{margin:0;font-size:.95rem;font-weight:600;color:var(--color-text);line-height:1.3;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.task-summary[_ngcontent-%COMP%]{margin:0;font-size:.8rem;color:var(--color-text-secondary);line-height:1.4;flex:1;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.task-summary.empty[_ngcontent-%COMP%]{font-style:italic;opacity:.6}.task-footer[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;margin-top:auto;padding-top:.25rem}.task-time[_ngcontent-%COMP%]{font-size:.72rem;color:var(--color-text-secondary);opacity:.8}.task-actions[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.125rem;opacity:0;transition:opacity .15s ease}.task-card[_ngcontent-%COMP%]:hover .task-actions[_ngcontent-%COMP%], .task-card[_ngcontent-%COMP%]:focus-within .task-actions[_ngcontent-%COMP%]{opacity:1}.task-actions[_ngcontent-%COMP%] .action-btn[_ngcontent-%COMP%]{width:28px;height:28px;display:flex!important;align-items:center!important;justify-content:center!important;padding:0!important}.task-actions[_ngcontent-%COMP%] .action-btn[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{font-size:1rem;width:1rem;height:1rem;display:flex;align-items:center;justify-content:center}.task-actions[_ngcontent-%COMP%] .stop-btn[_ngcontent-%COMP%]{color:var(--color-error)}.task-actions[_ngcontent-%COMP%] .mark-done-btn[_ngcontent-%COMP%]{color:var(--color-success)}.task-actions[_ngcontent-%COMP%] .star-btn[_ngcontent-%COMP%]{color:var(--color-text-secondary)}.task-actions[_ngcontent-%COMP%] .star-btn.starred[_ngcontent-%COMP%]{color:#f5a623}.task-actions[_ngcontent-%COMP%] .delete-btn[_ngcontent-%COMP%]{color:var(--color-text-secondary)}.task-actions[_ngcontent-%COMP%] .delete-btn[_ngcontent-%COMP%]:hover{color:var(--color-error)}.task-actions[_ngcontent-%COMP%] .open-btn[_ngcontent-%COMP%]{color:var(--color-primary)}.task-actions[_ngcontent-%COMP%] .open-btn[_ngcontent-%COMP%]:hover{color:var(--color-primary-hover)}@media(max-width:600px){.task-actions[_ngcontent-%COMP%]{opacity:1}.task-actions[_ngcontent-%COMP%] .action-btn[_ngcontent-%COMP%]{width:36px;height:36px}.task-actions[_ngcontent-%COMP%] .action-btn[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{font-size:1.25rem;width:1.25rem;height:1.25rem}}@keyframes _ngcontent-%COMP%_spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes _ngcontent-%COMP%_pulse{0%{transform:scale(.8);opacity:1}to{transform:scale(2.2);opacity:0}}']})},Q={"waiting-you":"Waiting for you","in-progress":"In progress\u2026",done:"Done",paused:"Paused",error:"Error"},X={"waiting-you":"mark_unread_chat_alt","in-progress":"pending",done:"check_circle",paused:"pause_circle",error:"error"};var bt=300*1e3,kt={"waiting-you":0,"in-progress":1,done:2,paused:3,error:4};export{A,bt as b,kt as k};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import {v}from'./chunk-CPBcDx4G.js';import {R}from'./chunk-rwEyLSEP.js';import {N as N$1}from'./chunk-Be1LOFvg.js';import {g,ao as V,G,w as we,d6 as F,F as F$1,X as br,a as Gi,E as ET,cd as Uf,c as U,h as Fw,m as ws,o as Rg,Q as QC,n as hl,q as oC,t as nI,a8 as Yg,x as iC,a9 as gC,r as cC,cH as nC,a3 as GI,S as Sg,a4 as aC,ac as EC,v as bg,y as uC,a6 as qI,a5 as Dl,aa as wf,ab as Cf}from'./main-5PAOSHSM.js';import'./chunk-BY7uKZAo.js';import {n as nt}from'./chunk-CtkiOUdU.js';import'./chunk-S8F5_Te_.js';import {o as z,k as _t,b as _e,n as ni,J as Jn,Q as Qn,e as ei,Y as Ye,A as At,m as mn,Z as Zn,l as Xn,C as Cn,E as En}from'./chunk-tTmeIHGS.js';import'./chunk-BEUXx3TO.js';import'./chunk-kvCfAm7Z.js';function ae(r,t){r&1&&(ws(0,"p",5),QC(1,"Loading\u2026"),hl());}function le(r,t){if(r&1&&(ws(0,"label",10),Sg(1,"input",29),GI(),ws(2,"span"),QC(3),hl()()),r&2){let e=t.$implicit,n=EC(2);nI(),bg("value",e.value)("formControl",n.scopeControl)("disabled",e.value==="namespace"&&!n.isAdmin()),qI(),nI(2),Yg(e.label);}}function se(r,t){if(r&1&&(ws(0,"option",16),QC(1),hl()),r&2){let e=t.$implicit;bg("value",e.type),nI(),Yg(e.displayName);}}function ce(r,t){if(r&1&&(ws(0,"option",16),QC(1),hl()),r&2){let e=t.$implicit;bg("value",e),nI(),Yg(e);}}function me(r,t){if(r&1){let e=gC();ws(0,"div",24)(1,"ds-json-schema-form",30),Rg("valueChange",function(s){wf(e);let m=EC(2);return Cf(m.onParamsChange(s))}),hl()();}if(r&2){let e=EC(2);nI(),bg("schema",t)("value",e.initialParams());}}function de(r,t){if(r&1){let e=gC();ws(0,"button",31),Rg("click",function(){wf(e);let s=EC(2);return Cf(s.exportYaml())}),QC(1),hl();}if(r&2){let e=EC(2);bg("disabled",e.isExporting()),nI(),Dl(" ",e.isExporting()?"Exporting\u2026":"Export as YAML"," ");}}function pe(r,t){if(r&1){let e=gC();ws(0,"form",7),Rg("ngSubmit",function(){wf(e);let s=EC();return Cf(s.submit())}),ws(1,"fieldset",8)(2,"legend",9),QC(3,"Scope"),hl(),cC(4,le,4,4,"label",10,nC().trackByScope,true),hl(),ws(6,"div",11)(7,"label",12),QC(8,"Type "),ws(9,"span",13),QC(10,"*"),hl()(),ws(11,"select",14)(12,"option",15),QC(13,"Select type"),hl(),cC(14,se,2,2,"option",16,nC().trackByType,true),hl(),GI(),hl(),ws(16,"div",11)(17,"label",17),QC(18,"Name "),ws(19,"span",13),QC(20,"*"),hl()(),Sg(21,"input",18),GI(),hl(),ws(22,"div",11)(23,"label",19),QC(24,"Description"),hl(),Sg(25,"textarea",20),GI(),hl(),ws(26,"div",11)(27,"label",21),QC(28,"Auth Setting"),hl(),ws(29,"select",22)(30,"option",23),QC(31,"None"),hl(),cC(32,ce,2,2,"option",16,aC),hl(),GI(),hl(),oC(34,me,2,2,"div",24),ws(35,"div",25)(36,"button",26),QC(37),hl(),oC(38,de,2,2,"button",27),ws(39,"button",28),Rg("click",function(){wf(e);let s=EC();return Cf(s.cancel())}),QC(40,"Cancel"),hl()()();}if(r&2){let e,n=EC();bg("formGroup",n.form),nI(),bg("disabled",n.isEditMode()),nI(3),uC(n.scopeOptions),nI(7),bg("formControl",n.typeControl),qI(),nI(3),uC(n.integrationTypes()),nI(7),bg("formControl",n.nameControl),qI(),nI(4),bg("formControl",n.descriptionControl),qI(),nI(4),bg("formControl",n.authSettingNameControl),qI(),nI(),bg("ngValue",null),nI(2),uC(n.availableAuthSettings()),nI(2),iC((e=n.schema())?34:-1,e),nI(2),bg("disabled",n.nameControl.invalid||n.typeControl.invalid||n.isSubmitting()),nI(),Dl(" ",n.isEditMode()?"Save changes":"Create"," "),nI(),iC(n.isEditMode()?38:-1);}}var ge=new Set(["platform","namespace","userOnNs","userGlobal"]),N=Object.freeze({platform:"Configuration plateforme",namespace:"Configuration du namespace",userOnNs:"Pour moi sur ce namespace",userGlobal:"Pour moi globalement"}),ie=class r{route=g(V);router=g(G);destroyRef=g(we);state=g(N$1);integrationTypeController=g(F);authSettingState=g(R);namespaceRole=g(v);namespaceId=this.route.snapshot.params.namespaceId;isPlatformMode=!this.namespaceId;isAdmin=F$1(this.isPlatformMode?br(true):this.namespaceRole.isAdminOfNamespace$(this.namespaceId),{initialValue:this.isPlatformMode});form=new z({name:new _t("",{nonNullable:true,validators:[_e.required,_e.minLength(1)]}),description:new _t(null),type:new _t("",{nonNullable:true,validators:[_e.required]}),scope:new _t("namespace",{nonNullable:true})});get nameControl(){return this.form.controls.name}get descriptionControl(){return this.form.controls.description}get typeControl(){return this.form.controls.type}get scopeControl(){return this.form.controls.scope}isEditMode=Gi(false);isSubmitting=Gi(false);isLoading=Gi(false);isExporting=Gi(false);scopeOptions=[{value:"platform",label:N.platform},{value:"namespace",label:N.namespace},{value:"userOnNs",label:N.userOnNs},{value:"userGlobal",label:N.userGlobal}];authSettingNameControl=new _t(null);availableAuthSettings=Gi([]);paramsValue=Gi(null);initialParams=Gi(null);integrationTypes=F$1(this.integrationTypeController.listTypesIntegrationType(),{initialValue:[]});selectedType=F$1(this.form.controls.type.valueChanges,{initialValue:this.form.controls.type.value});schema=ET(()=>{let t=this.selectedType();return t?this.integrationTypes().find(n=>n.type===t)?.configSchema??null:null});existingConfig=null;constructor(){Uf(()=>{if(this.isAdmin()||this.isEditMode())return;["platform","namespace"].includes(this.scopeControl.value)&&this.scopeControl.setValue("userOnNs");});}ngOnInit(){this.namespaceId&&this.state.setNamespace(this.namespaceId);let t=this.route.snapshot.paramMap,e=this.route.snapshot.queryParamMap,n=t.get("integrationId");if(n){this.isEditMode.set(true),this.scopeControl.disable(),this.loadConfig(n);return}if(this.isPlatformMode){this.scopeControl.setValue("platform"),this.scopeControl.disable(),this.loadAuthSettingsForScope("platform");return}let s=this.parseScope(e.get("scope"));this.scopeControl.setValue(s),this.loadAuthSettingsForScope(s),this.scopeControl.valueChanges.pipe(U(this.destroyRef)).subscribe(re=>{this.loadAuthSettingsForScope(re);});let m=e.get("template");m&&this.hydrateFromTemplate(m);}parseScope(t){return t&&ge.has(t)?t:"namespace"}deriveScopeFromConfig(t){return !t.userId&&!t.namespaceId?"platform":t.userId?t.namespaceId?"userOnNs":"userGlobal":"namespace"}loadConfig(t){this.isLoading.set(true),this.state.getById(t).pipe(U(this.destroyRef)).subscribe({next:e=>{this.existingConfig=e;let n=this.deriveScopeFromConfig(e);this.scopeControl.setValue(n),this.applyConfigToForm(e),this.loadAuthSettingsForScope(n),this.isLoading.set(false);},error:()=>{this.isLoading.set(false),console.warn(`[IntegrationForm] Could not load config '${t}' \u2014 navigating back`),this.navigateBack();}});}hydrateFromTemplate(t){this.isLoading.set(true),this.state.getById(t).pipe(U(this.destroyRef)).subscribe({next:e=>{this.applyConfigToForm(e),this.isLoading.set(false),this.router.navigate([],{relativeTo:this.route,queryParams:{template:null,templateScope:null},queryParamsHandling:"merge",replaceUrl:true});},error:e=>{console.warn(`[IntegrationForm] Could not hydrate from template ${t}:`,e),this.isLoading.set(false),this.router.navigate([],{relativeTo:this.route,queryParams:{template:null,templateScope:null},queryParamsHandling:"merge",replaceUrl:true});}});}applyConfigToForm(t){this.nameControl.setValue(t.name),this.descriptionControl.setValue(t.description??null),this.typeControl.setValue(t.integrationType),this.initialParams.set(t.parameters),this.paramsValue.set(t.parameters),this.authSettingNameControl.setValue(t.authSettingName??null);}loadAuthSettingsForScope(t){let e;switch(t){case "platform":e=this.authSettingState.loadPlatformSettings();break;case "namespace":e=this.authSettingState.loadNamespaceSettings(this.namespaceId);break;case "userOnNs":e=this.authSettingState.loadUserSettings(this.namespaceId);break;case "userGlobal":e=this.authSettingState.loadUserSettings("global");break}e.pipe(U(this.destroyRef)).subscribe({next:n=>{let s=n.map(m=>m.name).filter(Boolean);this.availableAuthSettings.set([...new Set(s)]);},error:()=>this.availableAuthSettings.set([])});}onParamsChange(t){this.paramsValue.set(t);}submit(){if(this.nameControl.invalid||this.typeControl.invalid||this.isSubmitting())return;if(this.isEditMode()&&!this.existingConfig?.id){this.navigateBack();return}this.isSubmitting.set(true);let t=this.descriptionControl.value?.trim(),e={name:this.nameControl.value.trim(),description:t||null,integrationType:this.typeControl.value,parameters:this.paramsValue(),authSettingName:this.authSettingNameControl.value||null},n=this.form.getRawValue().scope;(this.isEditMode()&&this.existingConfig?.id?this.state.update(this.existingConfig.id,e,n,this.existingConfig):this.state.create(e,n,this.namespaceId??null)).pipe(U(this.destroyRef)).subscribe({next:()=>this.navigateBack(),error:()=>this.isSubmitting.set(false)});}exportYaml(){let t=this.existingConfig?.id;!t||this.isExporting()||(this.isExporting.set(true),this.state.exportAsYaml(t).pipe(U(this.destroyRef)).subscribe({next:e=>{let n=new Blob([e],{type:"application/yaml"}),s=URL.createObjectURL(n),m=document.createElement("a");m.href=s,m.download=`${this.existingConfig?.name??"integration"}.yaml`,m.click(),URL.revokeObjectURL(s),this.isExporting.set(false);},error:()=>this.isExporting.set(false)}));}cancel(){this.navigateBack();}navigateBack(){this.isPlatformMode?this.router.navigate(["/agentos","admin","integration-configs"]):this.router.navigate(["/agentos",this.namespaceId,"integrations"]);}trackByType(t,e){return e.type}trackByScope(t,e){return e.value}static \u0275fac=function(e){return new(e||r)};static \u0275cmp=Fw({type:r,selectors:[["agentos-integration-form"]],decls:10,vars:2,consts:[[1,"integration-form"],[1,"integration-form__header"],["type","button","title","Back to integrations",1,"integration-form__back",3,"click"],[1,"integration-form__back-icon"],[1,"integration-form__title"],[1,"integration-form__loading"],[1,"integration-form__form",3,"formGroup"],[1,"integration-form__form",3,"ngSubmit","formGroup"],[1,"integration-form__field","integration-form__scope",3,"disabled"],[1,"integration-form__label"],[1,"integration-form__scope-option"],[1,"integration-form__field"],["for","integration-type",1,"integration-form__label"],["aria-hidden","true"],["id","integration-type",1,"integration-form__select",3,"formControl"],["value","","disabled",""],[3,"value"],["for","integration-name",1,"integration-form__label"],["id","integration-name","type","text","placeholder","Integration name","autocomplete","off",1,"integration-form__input",3,"formControl"],["for","integration-description",1,"integration-form__label"],["id","integration-description","placeholder","Optional description","rows","3",1,"integration-form__textarea",3,"formControl"],["for","integration-auth-setting",1,"integration-form__label"],["id","integration-auth-setting",1,"integration-form__select",3,"formControl"],[3,"ngValue"],[1,"integration-form__schema-form"],[1,"integration-form__actions"],["type","submit",1,"integration-form__btn","integration-form__btn--primary",3,"disabled"],["type","button",1,"integration-form__btn","integration-form__btn--export",3,"disabled"],["type","button",1,"integration-form__btn",3,"click"],["type","radio",3,"value","formControl","disabled"],[3,"valueChange","schema","value"],["type","button",1,"integration-form__btn","integration-form__btn--export",3,"click","disabled"]],template:function(e,n){e&1&&(ws(0,"div",0)(1,"header",1)(2,"button",2),Rg("click",function(){return n.cancel()}),ws(3,"span",3),QC(4,"\u2190"),hl(),QC(5," Integrations "),hl(),ws(6,"h1",4),QC(7),hl()(),oC(8,ae,2,0,"p",5)(9,pe,41,11,"form",6),hl()),e&2&&(nI(7),Yg(n.isEditMode()?"Edit integration":"New integration"),nI(),iC(n.isLoading()?8:9));},dependencies:[ni,Jn,Qn,ei,Ye,At,mn,Zn,Xn,Cn,En,nt],styles:[".integration-form[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:2rem;max-width:560px;margin:0 auto;padding:2rem 1rem}.integration-form__header[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.5rem}.integration-form__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)}.integration-form__back[_ngcontent-%COMP%]:hover{text-decoration:underline}.integration-form__back-icon[_ngcontent-%COMP%]{font-size:1rem;line-height:1}.integration-form__title[_ngcontent-%COMP%]{margin:0;font-size:1.5rem;font-weight:700;color:var(--color-text);letter-spacing:-.02em}.integration-form__loading[_ngcontent-%COMP%]{color:var(--color-text-secondary);font-size:.9rem;margin:0}.integration-form__form[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:1.25rem}.integration-form__scope[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.4rem;border:1px solid var(--color-divider);border-radius:0;padding:.75rem 1rem;background:transparent;margin:0}.integration-form__scope[disabled][_ngcontent-%COMP%]{opacity:.6}.integration-form__scope-option[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:.5rem;font-size:.875rem;color:var(--color-text);cursor:pointer}.integration-form__scope-option[_ngcontent-%COMP%] input[type=radio][_ngcontent-%COMP%]{margin:0}.integration-form__field[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.375rem}.integration-form__label[_ngcontent-%COMP%]{font-size:.875rem;font-weight:500;color:var(--color-text)}.integration-form__input[_ngcontent-%COMP%], .integration-form__textarea[_ngcontent-%COMP%], .integration-form__select[_ngcontent-%COMP%]{width:100%;padding:.625rem .875rem;border-radius:0;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;transition:border-color .15s ease}.integration-form__input[_ngcontent-%COMP%]:focus, .integration-form__textarea[_ngcontent-%COMP%]:focus, .integration-form__select[_ngcontent-%COMP%]:focus{border-color:var(--color-accent)}.integration-form__input[_ngcontent-%COMP%]::placeholder, .integration-form__textarea[_ngcontent-%COMP%]::placeholder, .integration-form__select[_ngcontent-%COMP%]::placeholder{color:var(--color-neutral-500)}.integration-form__textarea[_ngcontent-%COMP%]{resize:vertical;min-height:4.5rem;line-height:1.5}.integration-form__select[_ngcontent-%COMP%]{cursor:pointer}.integration-form__select[_ngcontent-%COMP%] option[disabled][_ngcontent-%COMP%]{color:var(--color-text-secondary)}.integration-form__schema-form[_ngcontent-%COMP%]{padding:1rem;border-radius:0;border:1px solid var(--color-divider);background:var(--color-surface)}.integration-form__actions[_ngcontent-%COMP%]{display:flex;gap:.75rem;padding-top:.5rem}.integration-form__btn[_ngcontent-%COMP%]{padding:.6rem 1.25rem;border-radius:0;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;transition:background .15s ease,border-color .15s ease}.integration-form__btn[_ngcontent-%COMP%]:hover:not(:disabled){background:var(--color-bg-hover);border-color:var(--color-neutral-500)}.integration-form__btn[_ngcontent-%COMP%]:disabled{opacity:.45;cursor:not-allowed}.integration-form__btn--primary[_ngcontent-%COMP%]{background:var(--color-accent);border-color:var(--color-accent);color:#fff}.integration-form__btn--primary[_ngcontent-%COMP%]:hover:not(:disabled){background:var(--color-accent-700);border-color:var(--color-accent-700)}.integration-form__btn--export[_ngcontent-%COMP%]{border-color:var(--color-divider);color:var(--color-text-secondary)}.integration-form__btn--export[_ngcontent-%COMP%]:hover:not(:disabled){border-color:var(--color-accent);color:var(--color-accent)}"]})};export{ie as IntegrationFormComponent};
|
|
1
|
+
import {v}from'./chunk-B_49KV6W.js';import {R}from'./chunk-BAWubWk8.js';import {N as N$1}from'./chunk-B3-4EW3s.js';import {g,ao as V,G,w as we,d6 as F,F as F$1,X as br,a as Gi,E as ET,cd as Uf,c as U,h as Fw,m as ws,o as Rg,Q as QC,n as hl,q as oC,t as nI,a8 as Yg,x as iC,a9 as gC,r as cC,cH as nC,a3 as GI,S as Sg,a4 as aC,ac as EC,v as bg,y as uC,a6 as qI,a5 as Dl,aa as wf,ab as Cf}from'./main-LBRSRTYI.js';import'./chunk-R-GmZrHu.js';import {n as nt}from'./chunk-BaO2vi_O.js';import'./chunk-DjMtxVWg.js';import {o as z,k as _t,b as _e,n as ni,J as Jn,Q as Qn,e as ei,Y as Ye,A as At,m as mn,Z as Zn,l as Xn,C as Cn,E as En}from'./chunk-BYyTBqh4.js';import'./chunk-BDaTUrH4.js';import'./chunk-ClSDInQq.js';function ae(r,t){r&1&&(ws(0,"p",5),QC(1,"Loading\u2026"),hl());}function le(r,t){if(r&1&&(ws(0,"label",10),Sg(1,"input",29),GI(),ws(2,"span"),QC(3),hl()()),r&2){let e=t.$implicit,n=EC(2);nI(),bg("value",e.value)("formControl",n.scopeControl)("disabled",e.value==="namespace"&&!n.isAdmin()),qI(),nI(2),Yg(e.label);}}function se(r,t){if(r&1&&(ws(0,"option",16),QC(1),hl()),r&2){let e=t.$implicit;bg("value",e.type),nI(),Yg(e.displayName);}}function ce(r,t){if(r&1&&(ws(0,"option",16),QC(1),hl()),r&2){let e=t.$implicit;bg("value",e),nI(),Yg(e);}}function me(r,t){if(r&1){let e=gC();ws(0,"div",24)(1,"ds-json-schema-form",30),Rg("valueChange",function(s){wf(e);let m=EC(2);return Cf(m.onParamsChange(s))}),hl()();}if(r&2){let e=EC(2);nI(),bg("schema",t)("value",e.initialParams());}}function de(r,t){if(r&1){let e=gC();ws(0,"button",31),Rg("click",function(){wf(e);let s=EC(2);return Cf(s.exportYaml())}),QC(1),hl();}if(r&2){let e=EC(2);bg("disabled",e.isExporting()),nI(),Dl(" ",e.isExporting()?"Exporting\u2026":"Export as YAML"," ");}}function pe(r,t){if(r&1){let e=gC();ws(0,"form",7),Rg("ngSubmit",function(){wf(e);let s=EC();return Cf(s.submit())}),ws(1,"fieldset",8)(2,"legend",9),QC(3,"Scope"),hl(),cC(4,le,4,4,"label",10,nC().trackByScope,true),hl(),ws(6,"div",11)(7,"label",12),QC(8,"Type "),ws(9,"span",13),QC(10,"*"),hl()(),ws(11,"select",14)(12,"option",15),QC(13,"Select type"),hl(),cC(14,se,2,2,"option",16,nC().trackByType,true),hl(),GI(),hl(),ws(16,"div",11)(17,"label",17),QC(18,"Name "),ws(19,"span",13),QC(20,"*"),hl()(),Sg(21,"input",18),GI(),hl(),ws(22,"div",11)(23,"label",19),QC(24,"Description"),hl(),Sg(25,"textarea",20),GI(),hl(),ws(26,"div",11)(27,"label",21),QC(28,"Auth Setting"),hl(),ws(29,"select",22)(30,"option",23),QC(31,"None"),hl(),cC(32,ce,2,2,"option",16,aC),hl(),GI(),hl(),oC(34,me,2,2,"div",24),ws(35,"div",25)(36,"button",26),QC(37),hl(),oC(38,de,2,2,"button",27),ws(39,"button",28),Rg("click",function(){wf(e);let s=EC();return Cf(s.cancel())}),QC(40,"Cancel"),hl()()();}if(r&2){let e,n=EC();bg("formGroup",n.form),nI(),bg("disabled",n.isEditMode()),nI(3),uC(n.scopeOptions),nI(7),bg("formControl",n.typeControl),qI(),nI(3),uC(n.integrationTypes()),nI(7),bg("formControl",n.nameControl),qI(),nI(4),bg("formControl",n.descriptionControl),qI(),nI(4),bg("formControl",n.authSettingNameControl),qI(),nI(),bg("ngValue",null),nI(2),uC(n.availableAuthSettings()),nI(2),iC((e=n.schema())?34:-1,e),nI(2),bg("disabled",n.nameControl.invalid||n.typeControl.invalid||n.isSubmitting()),nI(),Dl(" ",n.isEditMode()?"Save changes":"Create"," "),nI(),iC(n.isEditMode()?38:-1);}}var ge=new Set(["platform","namespace","userOnNs","userGlobal"]),N=Object.freeze({platform:"Configuration plateforme",namespace:"Configuration du namespace",userOnNs:"Pour moi sur ce namespace",userGlobal:"Pour moi globalement"}),ie=class r{route=g(V);router=g(G);destroyRef=g(we);state=g(N$1);integrationTypeController=g(F);authSettingState=g(R);namespaceRole=g(v);namespaceId=this.route.snapshot.params.namespaceId;isPlatformMode=!this.namespaceId;isAdmin=F$1(this.isPlatformMode?br(true):this.namespaceRole.isAdminOfNamespace$(this.namespaceId),{initialValue:this.isPlatformMode});form=new z({name:new _t("",{nonNullable:true,validators:[_e.required,_e.minLength(1)]}),description:new _t(null),type:new _t("",{nonNullable:true,validators:[_e.required]}),scope:new _t("namespace",{nonNullable:true})});get nameControl(){return this.form.controls.name}get descriptionControl(){return this.form.controls.description}get typeControl(){return this.form.controls.type}get scopeControl(){return this.form.controls.scope}isEditMode=Gi(false);isSubmitting=Gi(false);isLoading=Gi(false);isExporting=Gi(false);scopeOptions=[{value:"platform",label:N.platform},{value:"namespace",label:N.namespace},{value:"userOnNs",label:N.userOnNs},{value:"userGlobal",label:N.userGlobal}];authSettingNameControl=new _t(null);availableAuthSettings=Gi([]);paramsValue=Gi(null);initialParams=Gi(null);integrationTypes=F$1(this.integrationTypeController.listTypesIntegrationType(),{initialValue:[]});selectedType=F$1(this.form.controls.type.valueChanges,{initialValue:this.form.controls.type.value});schema=ET(()=>{let t=this.selectedType();return t?this.integrationTypes().find(n=>n.type===t)?.configSchema??null:null});existingConfig=null;constructor(){Uf(()=>{if(this.isAdmin()||this.isEditMode())return;["platform","namespace"].includes(this.scopeControl.value)&&this.scopeControl.setValue("userOnNs");});}ngOnInit(){this.namespaceId&&this.state.setNamespace(this.namespaceId);let t=this.route.snapshot.paramMap,e=this.route.snapshot.queryParamMap,n=t.get("integrationId");if(n){this.isEditMode.set(true),this.scopeControl.disable(),this.loadConfig(n);return}if(this.isPlatformMode){this.scopeControl.setValue("platform"),this.scopeControl.disable(),this.loadAuthSettingsForScope("platform");return}let s=this.parseScope(e.get("scope"));this.scopeControl.setValue(s),this.loadAuthSettingsForScope(s),this.scopeControl.valueChanges.pipe(U(this.destroyRef)).subscribe(re=>{this.loadAuthSettingsForScope(re);});let m=e.get("template");m&&this.hydrateFromTemplate(m);}parseScope(t){return t&&ge.has(t)?t:"namespace"}deriveScopeFromConfig(t){return !t.userId&&!t.namespaceId?"platform":t.userId?t.namespaceId?"userOnNs":"userGlobal":"namespace"}loadConfig(t){this.isLoading.set(true),this.state.getById(t).pipe(U(this.destroyRef)).subscribe({next:e=>{this.existingConfig=e;let n=this.deriveScopeFromConfig(e);this.scopeControl.setValue(n),this.applyConfigToForm(e),this.loadAuthSettingsForScope(n),this.isLoading.set(false);},error:()=>{this.isLoading.set(false),console.warn(`[IntegrationForm] Could not load config '${t}' \u2014 navigating back`),this.navigateBack();}});}hydrateFromTemplate(t){this.isLoading.set(true),this.state.getById(t).pipe(U(this.destroyRef)).subscribe({next:e=>{this.applyConfigToForm(e),this.isLoading.set(false),this.router.navigate([],{relativeTo:this.route,queryParams:{template:null,templateScope:null},queryParamsHandling:"merge",replaceUrl:true});},error:e=>{console.warn(`[IntegrationForm] Could not hydrate from template ${t}:`,e),this.isLoading.set(false),this.router.navigate([],{relativeTo:this.route,queryParams:{template:null,templateScope:null},queryParamsHandling:"merge",replaceUrl:true});}});}applyConfigToForm(t){this.nameControl.setValue(t.name),this.descriptionControl.setValue(t.description??null),this.typeControl.setValue(t.integrationType),this.initialParams.set(t.parameters),this.paramsValue.set(t.parameters),this.authSettingNameControl.setValue(t.authSettingName??null);}loadAuthSettingsForScope(t){let e;switch(t){case "platform":e=this.authSettingState.loadPlatformSettings();break;case "namespace":e=this.authSettingState.loadNamespaceSettings(this.namespaceId);break;case "userOnNs":e=this.authSettingState.loadUserSettings(this.namespaceId);break;case "userGlobal":e=this.authSettingState.loadUserSettings("global");break}e.pipe(U(this.destroyRef)).subscribe({next:n=>{let s=n.map(m=>m.name).filter(Boolean);this.availableAuthSettings.set([...new Set(s)]);},error:()=>this.availableAuthSettings.set([])});}onParamsChange(t){this.paramsValue.set(t);}submit(){if(this.nameControl.invalid||this.typeControl.invalid||this.isSubmitting())return;if(this.isEditMode()&&!this.existingConfig?.id){this.navigateBack();return}this.isSubmitting.set(true);let t=this.descriptionControl.value?.trim(),e={name:this.nameControl.value.trim(),description:t||null,integrationType:this.typeControl.value,parameters:this.paramsValue(),authSettingName:this.authSettingNameControl.value||null},n=this.form.getRawValue().scope;(this.isEditMode()&&this.existingConfig?.id?this.state.update(this.existingConfig.id,e,n,this.existingConfig):this.state.create(e,n,this.namespaceId??null)).pipe(U(this.destroyRef)).subscribe({next:()=>this.navigateBack(),error:()=>this.isSubmitting.set(false)});}exportYaml(){let t=this.existingConfig?.id;!t||this.isExporting()||(this.isExporting.set(true),this.state.exportAsYaml(t).pipe(U(this.destroyRef)).subscribe({next:e=>{let n=new Blob([e],{type:"application/yaml"}),s=URL.createObjectURL(n),m=document.createElement("a");m.href=s,m.download=`${this.existingConfig?.name??"integration"}.yaml`,m.click(),URL.revokeObjectURL(s),this.isExporting.set(false);},error:()=>this.isExporting.set(false)}));}cancel(){this.navigateBack();}navigateBack(){this.isPlatformMode?this.router.navigate(["/agentos","admin","integration-configs"]):this.router.navigate(["/agentos",this.namespaceId,"integrations"]);}trackByType(t,e){return e.type}trackByScope(t,e){return e.value}static \u0275fac=function(e){return new(e||r)};static \u0275cmp=Fw({type:r,selectors:[["agentos-integration-form"]],decls:10,vars:2,consts:[[1,"integration-form"],[1,"integration-form__header"],["type","button","title","Back to integrations",1,"integration-form__back",3,"click"],[1,"integration-form__back-icon"],[1,"integration-form__title"],[1,"integration-form__loading"],[1,"integration-form__form",3,"formGroup"],[1,"integration-form__form",3,"ngSubmit","formGroup"],[1,"integration-form__field","integration-form__scope",3,"disabled"],[1,"integration-form__label"],[1,"integration-form__scope-option"],[1,"integration-form__field"],["for","integration-type",1,"integration-form__label"],["aria-hidden","true"],["id","integration-type",1,"integration-form__select",3,"formControl"],["value","","disabled",""],[3,"value"],["for","integration-name",1,"integration-form__label"],["id","integration-name","type","text","placeholder","Integration name","autocomplete","off",1,"integration-form__input",3,"formControl"],["for","integration-description",1,"integration-form__label"],["id","integration-description","placeholder","Optional description","rows","3",1,"integration-form__textarea",3,"formControl"],["for","integration-auth-setting",1,"integration-form__label"],["id","integration-auth-setting",1,"integration-form__select",3,"formControl"],[3,"ngValue"],[1,"integration-form__schema-form"],[1,"integration-form__actions"],["type","submit",1,"integration-form__btn","integration-form__btn--primary",3,"disabled"],["type","button",1,"integration-form__btn","integration-form__btn--export",3,"disabled"],["type","button",1,"integration-form__btn",3,"click"],["type","radio",3,"value","formControl","disabled"],[3,"valueChange","schema","value"],["type","button",1,"integration-form__btn","integration-form__btn--export",3,"click","disabled"]],template:function(e,n){e&1&&(ws(0,"div",0)(1,"header",1)(2,"button",2),Rg("click",function(){return n.cancel()}),ws(3,"span",3),QC(4,"\u2190"),hl(),QC(5," Integrations "),hl(),ws(6,"h1",4),QC(7),hl()(),oC(8,ae,2,0,"p",5)(9,pe,41,11,"form",6),hl()),e&2&&(nI(7),Yg(n.isEditMode()?"Edit integration":"New integration"),nI(),iC(n.isLoading()?8:9));},dependencies:[ni,Jn,Qn,ei,Ye,At,mn,Zn,Xn,Cn,En,nt],styles:[".integration-form[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:2rem;max-width:560px;margin:0 auto;padding:2rem 1rem}.integration-form__header[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.5rem}.integration-form__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)}.integration-form__back[_ngcontent-%COMP%]:hover{text-decoration:underline}.integration-form__back-icon[_ngcontent-%COMP%]{font-size:1rem;line-height:1}.integration-form__title[_ngcontent-%COMP%]{margin:0;font-size:1.5rem;font-weight:700;color:var(--color-text);letter-spacing:-.02em}.integration-form__loading[_ngcontent-%COMP%]{color:var(--color-text-secondary);font-size:.9rem;margin:0}.integration-form__form[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:1.25rem}.integration-form__scope[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.4rem;border:1px solid var(--color-divider);border-radius:0;padding:.75rem 1rem;background:transparent;margin:0}.integration-form__scope[disabled][_ngcontent-%COMP%]{opacity:.6}.integration-form__scope-option[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:.5rem;font-size:.875rem;color:var(--color-text);cursor:pointer}.integration-form__scope-option[_ngcontent-%COMP%] input[type=radio][_ngcontent-%COMP%]{margin:0}.integration-form__field[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.375rem}.integration-form__label[_ngcontent-%COMP%]{font-size:.875rem;font-weight:500;color:var(--color-text)}.integration-form__input[_ngcontent-%COMP%], .integration-form__textarea[_ngcontent-%COMP%], .integration-form__select[_ngcontent-%COMP%]{width:100%;padding:.625rem .875rem;border-radius:0;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;transition:border-color .15s ease}.integration-form__input[_ngcontent-%COMP%]:focus, .integration-form__textarea[_ngcontent-%COMP%]:focus, .integration-form__select[_ngcontent-%COMP%]:focus{border-color:var(--color-accent)}.integration-form__input[_ngcontent-%COMP%]::placeholder, .integration-form__textarea[_ngcontent-%COMP%]::placeholder, .integration-form__select[_ngcontent-%COMP%]::placeholder{color:var(--color-neutral-500)}.integration-form__textarea[_ngcontent-%COMP%]{resize:vertical;min-height:4.5rem;line-height:1.5}.integration-form__select[_ngcontent-%COMP%]{cursor:pointer}.integration-form__select[_ngcontent-%COMP%] option[disabled][_ngcontent-%COMP%]{color:var(--color-text-secondary)}.integration-form__schema-form[_ngcontent-%COMP%]{padding:1rem;border-radius:0;border:1px solid var(--color-divider);background:var(--color-surface)}.integration-form__actions[_ngcontent-%COMP%]{display:flex;gap:.75rem;padding-top:.5rem}.integration-form__btn[_ngcontent-%COMP%]{padding:.6rem 1.25rem;border-radius:0;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;transition:background .15s ease,border-color .15s ease}.integration-form__btn[_ngcontent-%COMP%]:hover:not(:disabled){background:var(--color-bg-hover);border-color:var(--color-neutral-500)}.integration-form__btn[_ngcontent-%COMP%]:disabled{opacity:.45;cursor:not-allowed}.integration-form__btn--primary[_ngcontent-%COMP%]{background:var(--color-accent);border-color:var(--color-accent);color:#fff}.integration-form__btn--primary[_ngcontent-%COMP%]:hover:not(:disabled){background:var(--color-accent-700);border-color:var(--color-accent-700)}.integration-form__btn--export[_ngcontent-%COMP%]{border-color:var(--color-divider);color:var(--color-text-secondary)}.integration-form__btn--export[_ngcontent-%COMP%]:hover:not(:disabled){border-color:var(--color-accent);color:var(--color-accent)}"]})};export{ie as IntegrationFormComponent};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import {g,I as fy,P,X as br,u as ue,Y as x}from'./main-
|
|
1
|
+
import {g,I as fy,P,X as br,u as ue,Y as x}from'./main-LBRSRTYI.js';var d=class i{http=g(fy);projectState=g(P);promptsCache=new Map;getBaseUrl(){return `/api/projects/${this.projectState.getSelectedProjectIdOrThrow()}/prompts`}listPrompts(){return this.http.get(this.getBaseUrl())}getPromptsAutocomplete(t,e){let r=this.promptsCache.get(t);return r?br(this.filterPromptsForAutocomplete(r,e)):this.http.get(`/api/projects/${t}/prompts`).pipe(ue(p=>(this.promptsCache.set(t,p),this.filterPromptsForAutocomplete(p,e))))}filterPromptsForAutocomplete(t,e){let r=e.toLowerCase();return t.filter(o=>o.name.toLowerCase().includes(r)||o.description.toLowerCase().includes(r)).map(o=>({name:o.name,description:o.description,parameterFormat:o.parameterFormat}))}clearCache(t){t?this.promptsCache.delete(t):this.promptsCache.clear();}getPrompt(t){return this.http.get(`${this.getBaseUrl()}/${t}`)}createPrompt(t){return this.http.post(this.getBaseUrl(),t).pipe(ue(e=>(this.clearCache(this.projectState.getSelectedProjectId()??void 0),e)))}updatePrompt(t,e){return this.http.put(`${this.getBaseUrl()}/${t}`,e).pipe(ue(r=>(this.clearCache(this.projectState.getSelectedProjectId()??void 0),r)))}deletePrompt(t){return this.http.delete(`${this.getBaseUrl()}/${t}`).pipe(ue(e=>(this.clearCache(this.projectState.getSelectedProjectId()??void 0),e)))}enableWebhook(t){return this.http.post(`${this.getBaseUrl()}/${t}/webhook`,{})}disableWebhook(t){return this.http.delete(`${this.getBaseUrl()}/${t}/webhook`)}static \u0275fac=function(e){return new(e||i)};static \u0275prov=x({token:i,factory:i.\u0275fac,providedIn:"root"})};export{d};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import {g,G,P,h as Fw,i as hr,j as pr,m as ws,o as Rg,Q as QC,n as hl,q as oC,t as nI,v as bg,x as iC,a5 as Dl,al as yt$1,am as Wm,a9 as gC,ai as em,aa as wf,aj as tT,ab as Cf,a3 as GI,ak as Jg,a6 as qI,C as Pg,D as bC,H as SC,ac as EC,a8 as Yg}from'./main-
|
|
1
|
+
import {g,G,P,h as Fw,i as hr,j as pr,m as ws,o as Rg,Q as QC,n as hl,q as oC,t as nI,v as bg,x as iC,a5 as Dl,al as yt$1,am as Wm,a9 as gC,ai as em,aa as wf,aj as tT,ab as Cf,a3 as GI,ak as Jg,a6 as qI,C as Pg,D as bC,H as SC,ac as EC,a8 as Yg}from'./main-LBRSRTYI.js';import {y as yt,w as wt,t as ti,Y as Ye,Z as Zn,c as cn}from'./chunk-BYyTBqh4.js';var J=["inputElement"];function K(o,r){if(o&1&&(ws(0,"span",3),QC(1),hl()),o&2){let t=EC();nI(),Yg(t.label);}}function U(o,r){if(o&1&&(ws(0,"small",5),QC(1),hl()),o&2){let t=EC();nI(),Yg(t.hint);}}var h=class o{label="";placeholder="";hint="";isDisabled=false;value="";autoFocus=true;valueChange=new yt$1;enterPressed=new yt$1;inputElement;inputValue="";ngAfterViewInit(){this.inputValue=this.value,this.autoFocus&&setTimeout(()=>this.inputElement?.nativeElement.focus(),100);}onValueChange(r){this.valueChange.emit(r);}onEnter(){this.inputValue.trim()&&this.enterPressed.emit(this.inputValue.trim());}focus(){this.inputElement?.nativeElement.focus();}static \u0275fac=function(t){return new(t||o)};static \u0275cmp=Fw({type:o,selectors:[["app-text-input"]],viewQuery:function(t,e){if(t&1&&Pg(J,5),t&2){let p;bC(p=SC())&&(e.inputElement=p.first);}},inputs:{label:"label",placeholder:"placeholder",hint:"hint",isDisabled:"isDisabled",value:"value",autoFocus:"autoFocus"},outputs:{valueChange:"valueChange",enterPressed:"enterPressed"},decls:6,vars:5,consts:[["inputElement",""],[1,"text-input-container"],[1,"text-input-wrapper"],[1,"text-input-label"],["type","text",1,"text-input-field",3,"ngModelChange","keydown.enter","ngModel","placeholder","disabled"],[1,"text-input-hint"]],template:function(t,e){if(t&1){let p=gC();ws(0,"div",1)(1,"label",2),oC(2,K,2,1,"span",3),ws(3,"input",4,0),em("ngModelChange",function(m){return wf(p),tT(e.inputValue,m)||(e.inputValue=m),Cf(m)}),Rg("ngModelChange",function(m){return e.onValueChange(m)})("keydown.enter",function(){return e.onEnter()}),hl(),GI(),hl(),oC(5,U,2,1,"small",5),hl();}t&2&&(nI(2),iC(e.label?2:-1),nI(),Jg("ngModel",e.inputValue),bg("placeholder",e.placeholder)("disabled",e.isDisabled),qI(),nI(2),iC(e.hint?5:-1));},dependencies:[ti,Ye,Zn,cn,Wm],styles:[".text-input-container[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.5rem;width:100%}.text-input-wrapper[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.5rem;width:100%;cursor:text}.text-input-label[_ngcontent-%COMP%]{font-size:.95rem;font-weight:500;color:var(--color-text);margin:0}.text-input-field[_ngcontent-%COMP%]{width:100%;padding:.75rem 1rem;font-size:1rem;color:var(--color-text);background:var(--color-bg);border:1px solid var(--color-border);border-radius:8px;outline:none;transition:all .2s ease}.text-input-field[_ngcontent-%COMP%]::placeholder{color:var(--color-text-secondary);opacity:.7}.text-input-field[_ngcontent-%COMP%]:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px rgba(var(--color-primary-rgb),.1)}.text-input-field[_ngcontent-%COMP%]:disabled{opacity:.6;cursor:not-allowed;background:var(--color-surface)}.text-input-hint[_ngcontent-%COMP%]{font-size:.85rem;color:var(--color-text-secondary);margin:0;font-style:italic}@media(max-width:768px){.text-input-field[_ngcontent-%COMP%]{padding:.65rem .85rem;font-size:.95rem}.text-input-label[_ngcontent-%COMP%]{font-size:.9rem}.text-input-hint[_ngcontent-%COMP%]{font-size:.8rem}}"],changeDetection:1})};function X(o,r){if(o&1&&(ws(0,"div",8),QC(1),hl()),o&2){let t=EC();nI(),Yg(t.errorMessage);}}var L=class o{router=g(G);projectStateService=g(P);projectName="";projectPath="";isCreating=false;errorMessage=null;isValid(){return this.projectName.trim()!==""&&this.projectPath.trim()!==""}onCreate(){if(!this.isValid()){this.errorMessage="Both name and path are required";return}this.isCreating=true,this.errorMessage=null,this.projectStateService.createProject(this.projectName.trim(),this.projectPath.trim()).subscribe({next:()=>{let r=this.projectName.trim();this.isCreating=false,this.projectStateService.selectProject(r),this.router.navigate(["project",r]);},error:r=>{this.errorMessage=r.error?.error??"Failed to create project",this.isCreating=false;}});}onCancel(){this.router.navigate(["/"]);}static \u0275fac=function(t){return new(t||o)};static \u0275cmp=Fw({type:o,selectors:[["app-project-new"]],decls:19,vars:9,consts:[[1,"project-new-page"],[1,"project-new-card"],["mat-button","",1,"project-new__back",3,"click"],[1,"project-new__title"],[1,"project-new__subtitle"],[1,"project-new__form"],["label","Project name","placeholder","my-project",3,"valueChange","value","isDisabled","autoFocus"],["label","Project path","placeholder","/path/to/project","hint","Absolute path to the project directory",3,"valueChange","enterPressed","value","isDisabled"],[1,"project-new__error"],[1,"project-new__actions"],["mat-button","",3,"click","disabled"],["mat-flat-button","","color","primary",3,"click","disabled"]],template:function(t,e){t&1&&(ws(0,"div",0)(1,"div",1)(2,"button",2),Rg("click",function(){return e.onCancel()}),ws(3,"mat-icon"),QC(4,"arrow_back"),hl(),QC(5," Back to projects "),hl(),ws(6,"h1",3),QC(7,"New project"),hl(),ws(8,"p",4),QC(9,"Point Coday to an existing directory on your machine."),hl(),ws(10,"div",5)(11,"app-text-input",6),Rg("valueChange",function(d){return e.projectName=d}),hl(),ws(12,"app-text-input",7),Rg("valueChange",function(d){return e.projectPath=d})("enterPressed",function(){return e.onCreate()}),hl(),oC(13,X,2,1,"div",8),hl(),ws(14,"div",9)(15,"button",10),Rg("click",function(){return e.onCancel()}),QC(16,"Cancel"),hl(),ws(17,"button",11),Rg("click",function(){return e.onCreate()}),QC(18),hl()()()()),t&2&&(nI(11),bg("value",e.projectName)("isDisabled",e.isCreating)("autoFocus",true),nI(),bg("value",e.projectPath)("isDisabled",e.isCreating),nI(),iC(e.errorMessage?13:-1),nI(2),bg("disabled",e.isCreating),nI(2),bg("disabled",!e.isValid()||e.isCreating),nI(),Dl(" ",e.isCreating?"Creating\u2026":"Create project"," "));},dependencies:[hr,pr,yt,wt,h],styles:[".project-new-page[_ngcontent-%COMP%]{display:flex;align-items:flex-start;justify-content:center;min-height:100vh;width:100%;background:var(--color-bg);padding:2rem 1.5rem;box-sizing:border-box}.project-new-card[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:1.5rem;width:100%;max-width:560px;padding:2rem;background:var(--color-bg-secondary, rgba(255, 255, 255, .7));border:1px solid var(--color-border, rgba(0, 0, 0, .1));border-radius:16px;box-shadow:var(--glass-shadow, 0 8px 32px rgba(31, 38, 135, .15));margin-top:2rem}.project-new__back[_ngcontent-%COMP%]{align-self:flex-start;margin-left:-.5rem;color:var(--color-text-secondary, #6e6e73)}.project-new__title[_ngcontent-%COMP%]{margin:0;font-size:1.625rem;font-weight:700;color:var(--color-text, #1d1d1f);letter-spacing:-.02em}.project-new__subtitle[_ngcontent-%COMP%]{margin:-.75rem 0 0;font-size:.9375rem;color:var(--color-text-secondary, #6e6e73)}.project-new__form[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:1.25rem}.project-new__error[_ngcontent-%COMP%]{padding:.75rem 1rem;background:#dc262614;border:1px solid rgba(220,38,38,.25);border-radius:8px;color:var(--color-error, #ff3b30);font-size:.875rem}.project-new__actions[_ngcontent-%COMP%]{display:flex;gap:.75rem;justify-content:flex-end;padding-top:.25rem}"],changeDetection:1})};export{L as ProjectNewComponent};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import {i}from'./chunk-
|
|
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,2 +1,2 @@
|
|
|
1
|
-
import {R}from'./chunk-rwEyLSEP.js';import {g,ao as V,G,dm as k,w as we,a as Gi,E as ET,W as Vy,a7 as va,X as br,c as U,h as Fw,m as ws,o as Rg,Q as QC,n as hl,q as oC,t as nI,x as iC,a9 as gC,a3 as GI,r as cC,ac as EC,v as bg,a6 as qI,y as uC,a5 as Dl,a8 as Yg,A as Ug,b0 as Qg,aa as wf,ab as Cf}from'./main-5PAOSHSM.js';import'./chunk-BY7uKZAo.js';import {t as ti,Q as Qn,e as ei,Y as Ye,A as At,Z as Zn,c as cn}from'./chunk-tTmeIHGS.js';import'./chunk-BEUXx3TO.js';import'./chunk-kvCfAm7Z.js';import'./chunk-CtkiOUdU.js';import'./chunk-S8F5_Te_.js';var $=(i,e)=>e.id;function J(i,e){i&1&&(ws(0,"p",5),QC(1,"Loading\u2026"),hl());}function q(i,e){if(i&1&&(ws(0,"p",8),QC(1),hl()),i&2){let t=EC(2);nI(),Yg(t.errorMessage());}}function Q(i,e){if(i&1&&(ws(0,"span",26),QC(1),hl()),i&2){let t=EC(3);nI(),Yg(t.association()?.checkoutFailureReason);}}function W(i,e){if(i&1&&(ws(0,"p",25),QC(1),oC(2,Q,2,1,"span",26),hl()),i&2){let t=EC(2);Ug("namespace-git__status--failed",t.checkoutStatus()==="FAILED")("namespace-git__status--ready",t.checkoutStatus()==="READY"),nI(),Dl(" Repository: ",t.checkoutStatus()," "),nI(),iC(t.association()?.checkoutFailureReason?2:-1);}}function X(i,e){if(i&1&&(ws(0,"option",19),QC(1),hl()),i&2){let t=e.$implicit,l=EC(2);bg("value",t.id),nI(),Qg("",t.name," (",l.authTypeLabel(t.authType),")");}}function Z(i,e){i&1&&(ws(0,"span",20),QC(1," No usable auth setting in this namespace. Create a BEARER_TOKEN one first. "),hl());}function ee(i,e){if(i&1){let t=gC();ws(0,"button",27),Rg("click",function(){wf(t);let c=EC(2);return Cf(c.remove())}),QC(1," Remove association "),hl();}if(i&2){let t=EC(2);bg("disabled",t.isSaving());}}function te(i,e){if(i&1){let t=gC();ws(0,"div",6)(1,"p",7),QC(2," Associate a repository with this namespace and prepare an internal clone. Namespace files remain shared documents outside Git. "),hl(),oC(3,q,2,1,"p",8),oC(4,W,3,6,"p",9),ws(5,"fieldset",10)(6,"legend",11),QC(7,"Repository"),hl(),ws(8,"label",12)(9,"span",13),QC(10,"Repository URL"),hl(),ws(11,"input",14),Rg("ngModelChange",function(c){wf(t);let v=EC();return Cf(v.repositoryUrl.set(c))}),hl(),GI(),ws(12,"span",15),QC(13,"HTTPS only, without credentials in the URL."),hl()(),ws(14,"label",12)(15,"span",13),QC(16,"Main branch"),hl(),ws(17,"input",16),Rg("ngModelChange",function(c){wf(t);let v=EC();return Cf(v.mainBranch.set(c))}),hl(),GI(),ws(18,"span",15),QC(19,"The internal clone starts from this remote branch."),hl()(),ws(20,"label",12)(21,"span",13),QC(22,"Service account"),hl(),ws(23,"select",17),Rg("ngModelChange",function(c){wf(t);let v=EC();return Cf(v.serviceAuthSettingId.set(c))}),ws(24,"option",18),QC(25,"Select an auth setting\u2026"),hl(),cC(26,X,2,3,"option",19,$),hl(),GI(),ws(28,"span",15),QC(29," Shared by the namespace. Every Git operation uses this identity, never the identity of whoever opened the case. "),hl(),oC(30,Z,2,0,"span",20),hl()(),ws(31,"div",21)(32,"button",22),Rg("click",function(){wf(t);let c=EC();return Cf(c.save())}),QC(33),hl(),oC(34,ee,2,1,"button",23),ws(35,"button",24),Rg("click",function(){wf(t);let c=EC();return Cf(c.cancel())}),QC(36,"Cancel"),hl()()();}if(i&2){let t=EC();nI(3),iC(t.errorMessage()?3:-1),nI(),iC(t.isAssociated()&&t.checkoutStatus()?4:-1),nI(7),bg("ngModel",t.repositoryUrl()),qI(),nI(6),bg("ngModel",t.mainBranch()),qI(),nI(6),bg("ngModel",t.serviceAuthSettingId()),qI(),nI(3),uC(t.eligibleAuthSettings()),nI(4),iC(t.eligibleAuthSettings().length===0?30:-1),nI(2),bg("disabled",!t.canSave()),nI(),Dl(" ",t.isSaving()?"Saving\u2026":t.isAssociated()?"Update":"Associate"," "),nI(),iC(t.isAssociated()?34:-1);}}var ne=["BearerTokenAuthSetting","BasicAuthAuthSetting","ApiKeyAuthSetting"],ie={BearerTokenAuthSetting:"token",BasicAuthAuthSetting:"basic auth",ApiKeyAuthSetting:"API key"},j=class i{route=g(V);router=g(G);gitApi=g(k);authSettingState=g(R);destroyRef=g(we);isLoading=Gi(true);isSaving=Gi(false);errorMessage=Gi(null);association=Gi(null);authSettings=Gi([]);repositoryUrl=Gi("");mainBranch=Gi("main");serviceAuthSettingId=Gi("");namespaceId="";isAssociated=ET(()=>this.association()?.associated===true);eligibleAuthSettings=ET(()=>this.authSettings().filter(e=>ne.includes(e.authType)));authTypeLabel(e){return ie[e??""]??e??"unknown"}canSave=ET(()=>this.repositoryUrl().trim().length>0&&this.serviceAuthSettingId().length>0&&!this.isSaving());checkoutStatus=ET(()=>this.association()?.checkoutStatus??null);ngOnInit(){this.namespaceId=this.route.snapshot.paramMap.get("namespaceId")??"",this.load();}load(){this.isLoading.set(true),Vy({association:this.gitApi.getAssociationNamespaceGit(this.namespaceId).pipe(va(e=>(console.error("Failed to load the Git association",e),this.errorMessage.set(this.messageOf(e)),br(null)))),authSettings:this.authSettingState.loadNamespaceSettings(this.namespaceId).pipe(va(e=>(console.error("Failed to load namespace auth settings",e),br([]))))}).pipe(U(this.destroyRef)).subscribe(({association:e,authSettings:t})=>{this.authSettings.set(t??[]),e&&(this.association.set(e),this.applyToForm(e)),this.isLoading.set(false);});}applyToForm(e){this.repositoryUrl.set(e.repositoryUrl??""),this.mainBranch.set(e.mainBranch??"main"),this.serviceAuthSettingId.set(e.serviceAuthSettingId??"");}save(){this.canSave()&&(this.isSaving.set(true),this.errorMessage.set(null),this.gitApi.setAssociationNamespaceGit(this.namespaceId,{repositoryUrl:this.repositoryUrl().trim(),mainBranch:this.mainBranch().trim()||void 0,serviceAuthSettingId:this.serviceAuthSettingId()}).pipe(U(this.destroyRef),va(e=>(console.error("Failed to save the Git association",e),this.errorMessage.set(this.messageOf(e)),this.isSaving.set(false),br(null)))).subscribe(e=>{e&&(this.association.set(e),this.applyToForm(e)),this.isSaving.set(false);}));}remove(){confirm("Remove the repository association? The internal clone is preserved.")&&(this.isSaving.set(true),this.gitApi.removeAssociationNamespaceGit(this.namespaceId).pipe(U(this.destroyRef),va(e=>(console.error("Failed to remove the Git association",e),this.errorMessage.set(this.messageOf(e)),this.isSaving.set(false),br(null)))).subscribe(e=>{e&&(this.association.set(e),this.applyToForm(e)),this.isSaving.set(false);}));}cancel(){this.router.navigate(["/agentos/namespaces"]);}messageOf(e){return e.error?.message??e.message??"Unexpected error"}static \u0275fac=function(t){return new(t||i)};static \u0275cmp=Fw({type:i,selectors:[["agentos-namespace-git"]],decls:10,vars:1,consts:[[1,"namespace-git"],[1,"namespace-git__header"],["type","button","title","Back to namespaces",1,"namespace-git__back",3,"click"],[1,"namespace-git__back-icon"],[1,"namespace-git__title"],[1,"namespace-git__loading"],[1,"namespace-git__body"],[1,"namespace-git__hint"],["role","alert",1,"namespace-git__error"],[1,"namespace-git__status",3,"namespace-git__status--failed","namespace-git__status--ready"],[1,"namespace-git__section"],[1,"namespace-git__label"],[1,"namespace-git__field"],[1,"namespace-git__field-label"],["type","url","placeholder","https://forge.example/org/project.git","name","repositoryUrl",1,"namespace-git__input",3,"ngModelChange","ngModel"],[1,"namespace-git__field-hint"],["type","text","placeholder","main","name","mainBranch",1,"namespace-git__input",3,"ngModelChange","ngModel"],["name","serviceAuthSettingId",1,"namespace-git__input",3,"ngModelChange","ngModel"],["value",""],[3,"value"],[1,"namespace-git__field-hint","namespace-git__field-hint--warn"],[1,"namespace-git__actions"],["type","button",1,"namespace-git__save",3,"click","disabled"],["type","button",1,"namespace-git__remove",3,"disabled"],["type","button",1,"namespace-git__cancel",3,"click"],[1,"namespace-git__status"],[1,"namespace-git__status-reason"],["type","button",1,"namespace-git__remove",3,"click","disabled"]],template:function(t,l){t&1&&(ws(0,"div",0)(1,"header",1)(2,"button",2),Rg("click",function(){return l.cancel()}),ws(3,"span",3),QC(4,"\u2190"),hl(),QC(5," Namespaces "),hl(),ws(6,"h1",4),QC(7,"Git repository"),hl()(),oC(8,J,2,0,"p",5)(9,te,37,9,"div",6),hl()),t&2&&(nI(8),iC(l.isLoading()?8:9));},dependencies:[ti,Qn,ei,Ye,At,Zn,cn],styles:[".namespace-git[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:2rem;max-width:560px;margin:0 auto;padding:2rem 1rem}.namespace-git__header[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.5rem}.namespace-git__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-primary, #007aff);font-family:inherit}.namespace-git__back[_ngcontent-%COMP%]:hover{text-decoration:underline}.namespace-git__title[_ngcontent-%COMP%]{margin:0;font-size:1.5rem}.namespace-git__body[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:1.5rem}.namespace-git__hint[_ngcontent-%COMP%]{margin:0;font-size:.875rem;color:var(--color-text-secondary, #6b7280)}.namespace-git__error[_ngcontent-%COMP%]{margin:0;padding:.75rem;border-radius:.375rem;background:var(--red-bg, #fef2f2);color:var(--color-error, #b91c1c);font-size:.875rem}.namespace-git__status[_ngcontent-%COMP%]{margin:0;padding:.5rem .75rem;border-radius:.375rem;background:var(--color-surface-secondary, #f3f4f6);font-size:.875rem;display:flex;flex-direction:column;gap:.25rem}.namespace-git__status--ready[_ngcontent-%COMP%]{background:var(--color-success-bg, #ecfdf5);color:var(--color-success, #047857)}.namespace-git__status--failed[_ngcontent-%COMP%]{background:var(--red-bg, #fef2f2);color:var(--color-error, #b91c1c)}.namespace-git__status-reason[_ngcontent-%COMP%]{font-size:.8125rem;opacity:.9}.namespace-git__section[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:1rem;border:1px solid var(--color-border, #e5e7eb);border-radius:.5rem;padding:1rem;margin:0}.namespace-git__label[_ngcontent-%COMP%]{font-weight:600;font-size:.9375rem;padding:0 .25rem}.namespace-git__field[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.375rem}.namespace-git__field-label[_ngcontent-%COMP%]{font-size:.875rem;font-weight:500}.namespace-git__field-hint[_ngcontent-%COMP%]{font-size:.8125rem;color:var(--color-text-secondary, #6b7280)}.namespace-git__field-hint--warn[_ngcontent-%COMP%]{color:var(--color-warning, #b45309)}.namespace-git__input[_ngcontent-%COMP%]{font-family:inherit;font-size:.875rem;padding:.5rem .625rem;border:1px solid var(--color-border, #e5e7eb);border-radius:.375rem;background:var(--color-surface, #fff);color:inherit}.namespace-git__actions[_ngcontent-%COMP%]{display:flex;gap:.75rem;align-items:center}.namespace-git__save[_ngcontent-%COMP%], .namespace-git__remove[_ngcontent-%COMP%], .namespace-git__cancel[_ngcontent-%COMP%]{font-family:inherit;font-size:.875rem;padding:.5rem 1rem;border-radius:.375rem;cursor:pointer;border:1px solid transparent}.namespace-git__save[_ngcontent-%COMP%]:disabled, .namespace-git__remove[_ngcontent-%COMP%]:disabled, .namespace-git__cancel[_ngcontent-%COMP%]:disabled{opacity:.5;cursor:not-allowed}.namespace-git__save[_ngcontent-%COMP%]{background:var(--color-primary, #007aff);color:var(--color-text-on-accent, #fff)}.namespace-git__remove[_ngcontent-%COMP%]{background:none;border-color:var(--color-error, #b91c1c);color:var(--color-error, #b91c1c)}.namespace-git__cancel[_ngcontent-%COMP%]{background:none;border-color:var(--color-border, #e5e7eb);color:inherit}"]})};
|
|
1
|
+
import {R}from'./chunk-BAWubWk8.js';import {g,ao as V,G,dm as k,w as we,a as Gi,E as ET,W as Vy,a7 as va,X as br,c as U,h as Fw,m as ws,o as Rg,Q as QC,n as hl,q as oC,t as nI,x as iC,a9 as gC,a3 as GI,r as cC,ac as EC,v as bg,a6 as qI,y as uC,a5 as Dl,a8 as Yg,A as Ug,b0 as Qg,aa as wf,ab as Cf}from'./main-LBRSRTYI.js';import'./chunk-R-GmZrHu.js';import {t as ti,Q as Qn,e as ei,Y as Ye,A as At,Z as Zn,c as cn}from'./chunk-BYyTBqh4.js';import'./chunk-BDaTUrH4.js';import'./chunk-ClSDInQq.js';import'./chunk-BaO2vi_O.js';import'./chunk-DjMtxVWg.js';var $=(i,e)=>e.id;function J(i,e){i&1&&(ws(0,"p",5),QC(1,"Loading\u2026"),hl());}function q(i,e){if(i&1&&(ws(0,"p",8),QC(1),hl()),i&2){let t=EC(2);nI(),Yg(t.errorMessage());}}function Q(i,e){if(i&1&&(ws(0,"span",26),QC(1),hl()),i&2){let t=EC(3);nI(),Yg(t.association()?.checkoutFailureReason);}}function W(i,e){if(i&1&&(ws(0,"p",25),QC(1),oC(2,Q,2,1,"span",26),hl()),i&2){let t=EC(2);Ug("namespace-git__status--failed",t.checkoutStatus()==="FAILED")("namespace-git__status--ready",t.checkoutStatus()==="READY"),nI(),Dl(" Repository: ",t.checkoutStatus()," "),nI(),iC(t.association()?.checkoutFailureReason?2:-1);}}function X(i,e){if(i&1&&(ws(0,"option",19),QC(1),hl()),i&2){let t=e.$implicit,l=EC(2);bg("value",t.id),nI(),Qg("",t.name," (",l.authTypeLabel(t.authType),")");}}function Z(i,e){i&1&&(ws(0,"span",20),QC(1," No usable auth setting in this namespace. Create a BEARER_TOKEN one first. "),hl());}function ee(i,e){if(i&1){let t=gC();ws(0,"button",27),Rg("click",function(){wf(t);let c=EC(2);return Cf(c.remove())}),QC(1," Remove association "),hl();}if(i&2){let t=EC(2);bg("disabled",t.isSaving());}}function te(i,e){if(i&1){let t=gC();ws(0,"div",6)(1,"p",7),QC(2," Associate a repository with this namespace and prepare an internal clone. Namespace files remain shared documents outside Git. "),hl(),oC(3,q,2,1,"p",8),oC(4,W,3,6,"p",9),ws(5,"fieldset",10)(6,"legend",11),QC(7,"Repository"),hl(),ws(8,"label",12)(9,"span",13),QC(10,"Repository URL"),hl(),ws(11,"input",14),Rg("ngModelChange",function(c){wf(t);let v=EC();return Cf(v.repositoryUrl.set(c))}),hl(),GI(),ws(12,"span",15),QC(13,"HTTPS only, without credentials in the URL."),hl()(),ws(14,"label",12)(15,"span",13),QC(16,"Main branch"),hl(),ws(17,"input",16),Rg("ngModelChange",function(c){wf(t);let v=EC();return Cf(v.mainBranch.set(c))}),hl(),GI(),ws(18,"span",15),QC(19,"The internal clone starts from this remote branch."),hl()(),ws(20,"label",12)(21,"span",13),QC(22,"Service account"),hl(),ws(23,"select",17),Rg("ngModelChange",function(c){wf(t);let v=EC();return Cf(v.serviceAuthSettingId.set(c))}),ws(24,"option",18),QC(25,"Select an auth setting\u2026"),hl(),cC(26,X,2,3,"option",19,$),hl(),GI(),ws(28,"span",15),QC(29," Shared by the namespace. Every Git operation uses this identity, never the identity of whoever opened the case. "),hl(),oC(30,Z,2,0,"span",20),hl()(),ws(31,"div",21)(32,"button",22),Rg("click",function(){wf(t);let c=EC();return Cf(c.save())}),QC(33),hl(),oC(34,ee,2,1,"button",23),ws(35,"button",24),Rg("click",function(){wf(t);let c=EC();return Cf(c.cancel())}),QC(36,"Cancel"),hl()()();}if(i&2){let t=EC();nI(3),iC(t.errorMessage()?3:-1),nI(),iC(t.isAssociated()&&t.checkoutStatus()?4:-1),nI(7),bg("ngModel",t.repositoryUrl()),qI(),nI(6),bg("ngModel",t.mainBranch()),qI(),nI(6),bg("ngModel",t.serviceAuthSettingId()),qI(),nI(3),uC(t.eligibleAuthSettings()),nI(4),iC(t.eligibleAuthSettings().length===0?30:-1),nI(2),bg("disabled",!t.canSave()),nI(),Dl(" ",t.isSaving()?"Saving\u2026":t.isAssociated()?"Update":"Associate"," "),nI(),iC(t.isAssociated()?34:-1);}}var ne=["BearerTokenAuthSetting","BasicAuthAuthSetting","ApiKeyAuthSetting"],ie={BearerTokenAuthSetting:"token",BasicAuthAuthSetting:"basic auth",ApiKeyAuthSetting:"API key"},j=class i{route=g(V);router=g(G);gitApi=g(k);authSettingState=g(R);destroyRef=g(we);isLoading=Gi(true);isSaving=Gi(false);errorMessage=Gi(null);association=Gi(null);authSettings=Gi([]);repositoryUrl=Gi("");mainBranch=Gi("main");serviceAuthSettingId=Gi("");namespaceId="";isAssociated=ET(()=>this.association()?.associated===true);eligibleAuthSettings=ET(()=>this.authSettings().filter(e=>ne.includes(e.authType)));authTypeLabel(e){return ie[e??""]??e??"unknown"}canSave=ET(()=>this.repositoryUrl().trim().length>0&&this.serviceAuthSettingId().length>0&&!this.isSaving());checkoutStatus=ET(()=>this.association()?.checkoutStatus??null);ngOnInit(){this.namespaceId=this.route.snapshot.paramMap.get("namespaceId")??"",this.load();}load(){this.isLoading.set(true),Vy({association:this.gitApi.getAssociationNamespaceGit(this.namespaceId).pipe(va(e=>(console.error("Failed to load the Git association",e),this.errorMessage.set(this.messageOf(e)),br(null)))),authSettings:this.authSettingState.loadNamespaceSettings(this.namespaceId).pipe(va(e=>(console.error("Failed to load namespace auth settings",e),br([]))))}).pipe(U(this.destroyRef)).subscribe(({association:e,authSettings:t})=>{this.authSettings.set(t??[]),e&&(this.association.set(e),this.applyToForm(e)),this.isLoading.set(false);});}applyToForm(e){this.repositoryUrl.set(e.repositoryUrl??""),this.mainBranch.set(e.mainBranch??"main"),this.serviceAuthSettingId.set(e.serviceAuthSettingId??"");}save(){this.canSave()&&(this.isSaving.set(true),this.errorMessage.set(null),this.gitApi.setAssociationNamespaceGit(this.namespaceId,{repositoryUrl:this.repositoryUrl().trim(),mainBranch:this.mainBranch().trim()||void 0,serviceAuthSettingId:this.serviceAuthSettingId()}).pipe(U(this.destroyRef),va(e=>(console.error("Failed to save the Git association",e),this.errorMessage.set(this.messageOf(e)),this.isSaving.set(false),br(null)))).subscribe(e=>{e&&(this.association.set(e),this.applyToForm(e)),this.isSaving.set(false);}));}remove(){confirm("Remove the repository association? The internal clone is preserved.")&&(this.isSaving.set(true),this.gitApi.removeAssociationNamespaceGit(this.namespaceId).pipe(U(this.destroyRef),va(e=>(console.error("Failed to remove the Git association",e),this.errorMessage.set(this.messageOf(e)),this.isSaving.set(false),br(null)))).subscribe(e=>{e&&(this.association.set(e),this.applyToForm(e)),this.isSaving.set(false);}));}cancel(){this.router.navigate(["/agentos/namespaces"]);}messageOf(e){return e.error?.message??e.message??"Unexpected error"}static \u0275fac=function(t){return new(t||i)};static \u0275cmp=Fw({type:i,selectors:[["agentos-namespace-git"]],decls:10,vars:1,consts:[[1,"namespace-git"],[1,"namespace-git__header"],["type","button","title","Back to namespaces",1,"namespace-git__back",3,"click"],[1,"namespace-git__back-icon"],[1,"namespace-git__title"],[1,"namespace-git__loading"],[1,"namespace-git__body"],[1,"namespace-git__hint"],["role","alert",1,"namespace-git__error"],[1,"namespace-git__status",3,"namespace-git__status--failed","namespace-git__status--ready"],[1,"namespace-git__section"],[1,"namespace-git__label"],[1,"namespace-git__field"],[1,"namespace-git__field-label"],["type","url","placeholder","https://forge.example/org/project.git","name","repositoryUrl",1,"namespace-git__input",3,"ngModelChange","ngModel"],[1,"namespace-git__field-hint"],["type","text","placeholder","main","name","mainBranch",1,"namespace-git__input",3,"ngModelChange","ngModel"],["name","serviceAuthSettingId",1,"namespace-git__input",3,"ngModelChange","ngModel"],["value",""],[3,"value"],[1,"namespace-git__field-hint","namespace-git__field-hint--warn"],[1,"namespace-git__actions"],["type","button",1,"namespace-git__save",3,"click","disabled"],["type","button",1,"namespace-git__remove",3,"disabled"],["type","button",1,"namespace-git__cancel",3,"click"],[1,"namespace-git__status"],[1,"namespace-git__status-reason"],["type","button",1,"namespace-git__remove",3,"click","disabled"]],template:function(t,l){t&1&&(ws(0,"div",0)(1,"header",1)(2,"button",2),Rg("click",function(){return l.cancel()}),ws(3,"span",3),QC(4,"\u2190"),hl(),QC(5," Namespaces "),hl(),ws(6,"h1",4),QC(7,"Git repository"),hl()(),oC(8,J,2,0,"p",5)(9,te,37,9,"div",6),hl()),t&2&&(nI(8),iC(l.isLoading()?8:9));},dependencies:[ti,Qn,ei,Ye,At,Zn,cn],styles:[".namespace-git[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:2rem;max-width:560px;margin:0 auto;padding:2rem 1rem}.namespace-git__header[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.5rem}.namespace-git__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-primary, #007aff);font-family:inherit}.namespace-git__back[_ngcontent-%COMP%]:hover{text-decoration:underline}.namespace-git__title[_ngcontent-%COMP%]{margin:0;font-size:1.5rem}.namespace-git__body[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:1.5rem}.namespace-git__hint[_ngcontent-%COMP%]{margin:0;font-size:.875rem;color:var(--color-text-secondary, #6b7280)}.namespace-git__error[_ngcontent-%COMP%]{margin:0;padding:.75rem;border-radius:.375rem;background:var(--red-bg, #fef2f2);color:var(--color-error, #b91c1c);font-size:.875rem}.namespace-git__status[_ngcontent-%COMP%]{margin:0;padding:.5rem .75rem;border-radius:.375rem;background:var(--color-surface-secondary, #f3f4f6);font-size:.875rem;display:flex;flex-direction:column;gap:.25rem}.namespace-git__status--ready[_ngcontent-%COMP%]{background:var(--color-success-bg, #ecfdf5);color:var(--color-success, #047857)}.namespace-git__status--failed[_ngcontent-%COMP%]{background:var(--red-bg, #fef2f2);color:var(--color-error, #b91c1c)}.namespace-git__status-reason[_ngcontent-%COMP%]{font-size:.8125rem;opacity:.9}.namespace-git__section[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:1rem;border:1px solid var(--color-border, #e5e7eb);border-radius:.5rem;padding:1rem;margin:0}.namespace-git__label[_ngcontent-%COMP%]{font-weight:600;font-size:.9375rem;padding:0 .25rem}.namespace-git__field[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.375rem}.namespace-git__field-label[_ngcontent-%COMP%]{font-size:.875rem;font-weight:500}.namespace-git__field-hint[_ngcontent-%COMP%]{font-size:.8125rem;color:var(--color-text-secondary, #6b7280)}.namespace-git__field-hint--warn[_ngcontent-%COMP%]{color:var(--color-warning, #b45309)}.namespace-git__input[_ngcontent-%COMP%]{font-family:inherit;font-size:.875rem;padding:.5rem .625rem;border:1px solid var(--color-border, #e5e7eb);border-radius:.375rem;background:var(--color-surface, #fff);color:inherit}.namespace-git__actions[_ngcontent-%COMP%]{display:flex;gap:.75rem;align-items:center}.namespace-git__save[_ngcontent-%COMP%], .namespace-git__remove[_ngcontent-%COMP%], .namespace-git__cancel[_ngcontent-%COMP%]{font-family:inherit;font-size:.875rem;padding:.5rem 1rem;border-radius:.375rem;cursor:pointer;border:1px solid transparent}.namespace-git__save[_ngcontent-%COMP%]:disabled, .namespace-git__remove[_ngcontent-%COMP%]:disabled, .namespace-git__cancel[_ngcontent-%COMP%]:disabled{opacity:.5;cursor:not-allowed}.namespace-git__save[_ngcontent-%COMP%]{background:var(--color-primary, #007aff);color:var(--color-text-on-accent, #fff)}.namespace-git__remove[_ngcontent-%COMP%]{background:none;border-color:var(--color-error, #b91c1c);color:var(--color-error, #b91c1c)}.namespace-git__cancel[_ngcontent-%COMP%]{background:none;border-color:var(--color-border, #e5e7eb);color:inherit}"]})};
|
|
2
2
|
export{j as NamespaceGitComponent};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import {K as Kn,Z as Zn,S as Se}from'./chunk-
|
|
1
|
+
import {K as Kn,Z as Zn,S as Se}from'./chunk-BaO2vi_O.js';import {cb as LB,cc as PB,a as Gi,h as Fw,m as ws,Q as QC,n as hl,q as oC,t as nI,a8 as Yg,a5 as Dl,x as iC,a9 as gC,o as Rg,ac as EC,v as bg,aa as wf,ab as Cf}from'./main-LBRSRTYI.js';function A(o,a){if(o&1){let e=gC();ws(0,"span",7),QC(1,"Delete?"),hl(),ws(2,"ds-icon-button",8),Rg("action",function(){wf(e);let l=EC();return Cf(l.onDeleteConfirmed())}),hl(),ws(3,"ds-icon-button",9),Rg("action",function(){wf(e);let l=EC();return Cf(l.onDeleteCancelled())}),hl();}}function P(o,a){if(o&1){let e=gC();ws(0,"ds-kebab-menu",10),Rg("itemSelected",function(l){wf(e);let O=EC();return Cf(O.onMenuAction(l))}),hl();}if(o&2){let e=EC();bg("items",e.menuItems);}}var I=class o{model=LB.required();namespaceId=LB(void 0);readOnly=LB(false);deleteRequested=PB();editRequested=PB();pendingDelete=Gi(false);menuItems=[{key:"edit",label:"Edit model",icon:"edit"},{key:"delete",label:"Delete model",icon:"delete",variant:"danger"}];get displayTitle(){return this.model().alias??this.model().apiModelName}onMenuAction(a){switch(a){case "edit":this.editRequested.emit(this.model());break;case "delete":this.pendingDelete.set(true);break}}onDeleteConfirmed(){this.pendingDelete.set(false),this.deleteRequested.emit(this.model());}onDeleteCancelled(){this.pendingDelete.set(false);}static \u0275fac=function(e){return new(e||o)};static \u0275cmp=Fw({type:o,selectors:[["agentos-ai-model-item"]],inputs:{model:[1,"model"],namespaceId:[1,"namespaceId"],readOnly:[1,"readOnly"]},outputs:{deleteRequested:"deleteRequested",editRequested:"editRequested"},decls:12,vars:4,consts:[["role","listitem","dsBlueprint","",1,"ai-model-item"],[1,"ai-model-item__body"],[1,"ai-model-item__name"],[1,"ai-model-item__api-name"],[1,"ai-model-item__params"],[1,"ai-model-item__actions"],[3,"items"],[1,"ai-model-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,"span",2),QC(3),hl(),ws(4,"span",3),QC(5),hl(),ws(6,"span",4)(7,"span"),QC(8),hl()()(),ws(9,"div",5),oC(10,A,4,0)(11,P,1,1,"ds-kebab-menu",6),hl()()),e&2&&(nI(3),Yg(i.displayTitle),nI(2),Yg(i.model().apiModelName),nI(3),Dl("priority: ",i.model().priority),nI(2),iC(i.pendingDelete()?10:i.readOnly()?-1:11));},dependencies:[Kn,Zn,Se],styles:[".ai-model-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}.ai-model-item[_ngcontent-%COMP%]:hover{border-color:var(--color-accent)}.ai-model-item__body[_ngcontent-%COMP%]{flex:1;display:flex;flex-direction:column;gap:.2rem;min-width:0}.ai-model-item__name[_ngcontent-%COMP%]{font-size:15px;font-weight:600;color:var(--color-text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ai-model-item__api-name[_ngcontent-%COMP%]{font-size:13px;color:var(--color-text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ai-model-item__params[_ngcontent-%COMP%]{display:flex;gap:.75rem;font-size:13px;color:var(--color-text-secondary)}.ai-model-item__actions[_ngcontent-%COMP%]{flex-shrink:0;display:flex;align-items:center;gap:.125rem;opacity:0;transition:opacity .15s ease}.ai-model-item[_ngcontent-%COMP%]:hover .ai-model-item__actions[_ngcontent-%COMP%], .ai-model-item[_ngcontent-%COMP%]:focus-within .ai-model-item__actions[_ngcontent-%COMP%]{opacity:1}.ai-model-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}"]})};export{I};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import {g,dj as ne,Y as x}from'./main-
|
|
1
|
+
import {g,dj as ne,Y as x}from'./main-LBRSRTYI.js';var c=class r{api=g(ne);getById(e){return this.api.getByIdScheduledPrompt(e)}listPlatform(){return this.api.searchScheduledPrompt({namespaceId:null,userId:null})}listByNamespace(e){return this.api.searchScheduledPrompt({namespaceId:e,userId:null})}search(e){return this.api.searchScheduledPrompt(e)}listEffective(e){return this.api.resolveEffectiveScheduledPrompt(e)}create(e){return this.api.createScheduledPrompt(e)}update(e,t){return this.api.updateScheduledPrompt(e,t)}enable(e){return this.api.enableScheduledPrompt(e)}disable(e){return this.api.disableScheduledPrompt(e)}delete(e){return this.api.deleteScheduledPrompt(e)}static \u0275fac=function(t){return new(t||r)};static \u0275prov=x({token:r,factory:r.\u0275fac,providedIn:"root"})};export{c};
|