@whoz-oss/coday-client 3.16.0 → 3.18.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/browser/chunk--yaU4Sri.js +1 -0
- package/browser/{chunk-kvCfAm7Z.js → chunk-4uEZjTft.js} +1 -1
- package/browser/chunk-4v7WiOTx.js +1 -0
- package/browser/chunk-B-UKlpjJ.js +1 -0
- package/browser/chunk-B13_C_P9.js +675 -0
- package/browser/chunk-B17Inq8D.js +2 -0
- package/browser/chunk-B1vuv-dv.js +1 -0
- package/browser/{chunk-Bhq5earA.js → chunk-BEdQqXxw.js} +1 -1
- package/browser/{chunk-B_9LxHBv.js → chunk-BGTRsbsl.js} +1 -1
- package/browser/{chunk-pH1k_bet.js → chunk-BHiaH1Jm.js} +1 -1
- package/browser/chunk-BJld3zB5.js +9 -0
- package/browser/{chunk-7jUQT_3F.js → chunk-BVmICoo4.js} +1 -1
- package/browser/chunk-BXCHG0wB.js +1 -0
- package/browser/{chunk-DOq0u21j.js → chunk-B_Sx6nwb.js} +1 -1
- package/browser/{chunk-CXLytVC3.js → chunk-BbPMe8u2.js} +1 -1
- package/browser/{chunk-6gdeYlLc.js → chunk-Bb_J3EoX.js} +1 -1
- package/browser/chunk-BfE6wTUj.js +1 -0
- package/browser/chunk-Bnj9Hkqy.js +276 -0
- package/browser/chunk-BqWEyotW.js +55 -0
- package/browser/{chunk-Dcftf7UY.js → chunk-Buu9Jf-V.js} +2 -2
- package/browser/{chunk-0OiZWE88.js → chunk-CJAdjOmi.js} +1 -1
- package/browser/{chunk-Bn3R3VC2.js → chunk-CJEW8Ogd.js} +5 -5
- package/browser/chunk-CM1_Z4h5.js +1 -0
- package/browser/{chunk-BTS5TBK0.js → chunk-CP3b1EMm.js} +1 -1
- package/browser/chunk-CR817PBg.js +1 -0
- package/browser/{chunk-YfG457Nc.js → chunk-CXgj_KJY.js} +3 -3
- package/browser/{chunk-CYulIMKp.js → chunk-CakkML6n.js} +1 -1
- package/browser/{chunk-DQLU3kYb.js → chunk-CfPmQ0Fw.js} +1 -1
- package/browser/chunk-CgNkwpQ7.js +508 -0
- package/browser/chunk-Cjk-zAXy.js +1 -0
- package/browser/chunk-ClCDsg8D.js +5 -0
- package/browser/{chunk-BdpJ2ZCM.js → chunk-CmyT-Z4A.js} +1 -1
- package/browser/{chunk-C_s4Z3Dk.js → chunk-CqJ7rGVY.js} +1 -1
- package/browser/{chunk-SbH2L3h2.js → chunk-CxpHnwnx.js} +1 -1
- package/browser/{chunk-CtWMrBfw.js → chunk-D1ZnLng-.js} +1 -1
- package/browser/{chunk-swj7IkJA.js → chunk-D26Y186i.js} +1 -1
- package/browser/chunk-D2zGvbD2.js +190 -0
- package/browser/{chunk-IUvEtpfr.js → chunk-D30bRRTP.js} +1 -1
- package/browser/{chunk-CTuHnJP4.js → chunk-D4dmZgr6.js} +1 -1
- package/browser/{chunk-CiWu4t_i.js → chunk-D6nkbOg1.js} +1 -1
- package/browser/chunk-D8nXP3jN.js +2 -0
- package/browser/{chunk-BNS6Fgaw.js → chunk-D92adUD_.js} +1 -1
- package/browser/{chunk-Bib1Seeu.js → chunk-DDu5Ufv3.js} +1 -1
- package/browser/{chunk-HjD5Rk4C.js → chunk-DFjZf9oL.js} +3 -3
- package/browser/{chunk-B0vRsgnD.js → chunk-DJjbZAaS.js} +1 -1
- package/browser/{chunk-CgqDTJ5-.js → chunk-DKQvH1hP.js} +1 -1
- package/browser/{chunk-UzUd84Qf.js → chunk-DMUiJ7oP.js} +1 -1
- package/browser/chunk-DMyGIjcZ.js +1 -0
- package/browser/chunk-DOHvMo5p.js +1 -0
- package/browser/{chunk-CbK5Lcu9.js → chunk-DVTNoWCQ.js} +1 -1
- package/browser/chunk-DV_7IOl_.js +1 -0
- package/browser/chunk-DaoWXYMw.js +1 -0
- package/browser/{chunk-jv0lz5Ah.js → chunk-DmaEv05C.js} +1 -1
- package/browser/{chunk-BSSDDOqW.js → chunk-DoqL_RuM.js} +2 -2
- package/browser/chunk-FMHkoXwM.js +37 -0
- package/browser/{chunk-axGY7UtD.js → chunk-Fr6-w83-.js} +1 -1
- package/browser/{chunk-iNIQR015.js → chunk-HHPhxe9B.js} +1 -1
- package/browser/{chunk-fhFxOLYS.js → chunk-IYMfBoNU.js} +1 -1
- package/browser/chunk-PQu4_Hy2.js +2 -0
- package/browser/chunk-Qpb04pBJ.js +1 -0
- package/browser/{chunk-CBNhmZDS.js → chunk-W5DNK5PC.js} +1 -1
- package/browser/{chunk-BHZY3TvC.js → chunk-WSA7xa0h.js} +5 -5
- package/browser/{chunk-BJYyjaQ6.js → chunk-lX2E6ugr.js} +1 -1
- package/browser/{chunk-CGMAzvSo.js → chunk-o2LY9dfG.js} +1 -1
- package/browser/{chunk-DzlrRiVM.js → chunk-py_Q_oQH.js} +1 -1
- package/browser/{chunk-BUJoEGsf.js → chunk-t87lD8bQ.js} +1 -1
- package/browser/{chunk-Be1LOFvg.js → chunk-vL7dLM7S.js} +1 -1
- package/browser/{chunk-Co81dkbz.js → chunk-zvR-rokl.js} +1 -1
- package/browser/index.html +1 -1
- package/browser/main-YYHD6X7H.js +1811 -0
- package/package.json +1 -1
- package/browser/chunk-BEKR4Un_.js +0 -1
- package/browser/chunk-BEUXx3TO.js +0 -1
- package/browser/chunk-BJeLQooO.js +0 -1
- package/browser/chunk-BY7uKZAo.js +0 -9
- package/browser/chunk-BdApeECy.js +0 -1
- package/browser/chunk-C-aF2_1R.js +0 -55
- package/browser/chunk-CFZbDe5T.js +0 -5
- package/browser/chunk-CPBcDx4G.js +0 -1
- package/browser/chunk-Ci1jk71f.js +0 -276
- package/browser/chunk-CjrWXBiR.js +0 -2
- package/browser/chunk-CtkiOUdU.js +0 -675
- package/browser/chunk-CwaAd8kk.js +0 -1
- package/browser/chunk-DDnWPYAA.js +0 -2
- package/browser/chunk-Dfujxxcr.js +0 -1
- package/browser/chunk-DgrvmqY2.js +0 -2
- package/browser/chunk-DoKoAMs6.js +0 -1
- package/browser/chunk-Dtu-PLbq.js +0 -1
- package/browser/chunk-S8F5_Te_.js +0 -508
- package/browser/chunk-YS-vAhPY.js +0 -190
- package/browser/chunk-fYErSEXN.js +0 -1
- package/browser/chunk-gmPqDrDS.js +0 -1
- package/browser/chunk-izARvh_2.js +0 -1
- package/browser/chunk-rwEyLSEP.js +0 -1
- package/browser/chunk-tTmeIHGS.js +0 -37
- package/browser/main-5PAOSHSM.js +0 -1811
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import {g,bm as _m,a as Gi,E as ET,cF as Bb,h as Fw,i as hr,k as Gn,m as ws,o as Rg,Q as QC,n as hl,a3 as GI,q as oC,t as nI,v as bg,a6 as qI,x as iC,w as we$1,z as z$1,b as P,W as Vy,c as U,Y as x,b1 as Rn,bf as dT,ac as EC,a8 as Yg,bi as hT,cG as gT,r as cC,cH as nC,S as Sg,y as uC,I as fy,cI as Nt,aw as gl,ax as ml,c9 as Ff,b6 as _g,ck as Pf,T as Tg,a5 as Dl,a9 as gC,cJ as Og,aa as wf,ab as Cf,ad as Hg}from'./main-5PAOSHSM.js';import {t as ti,Q as Qn,e as ei,Y as Ye$1,A as At,Z as Zn,c as cn,y as yt,w as wt}from'./chunk-tTmeIHGS.js';var Ae=(o,t)=>t.date,He=(o,t)=>t.x,$e=(o,t)=>t.label;function Ve(o,t){o&1&&(gl(0,"div",0),QC(1,"No daily data points for this period."),ml());}function Le(o,t){if(o&1&&(Ff(),_g(0,"rect",18)),o&2){let e=EC().$implicit,n=EC(2);Tg("x",e.w+6)("y",n.yBase-e.tokensStubH)("width",e.w)("height",e.tokensStubH);}}function Ge(o,t){if(o&1&&(Ff(),_g(0,"rect",19)(1,"rect",20)),o&2){let e=EC().$implicit,n=EC(2);Tg("x",e.w+6)("y",n.yBase-(e.promptH??0))("width",e.w)("height",e.promptH??0),nI(),Tg("x",e.w+6)("y",n.yBase-((e.promptH??0)+(e.completionH??0)))("width",e.w)("height",e.completionH??0);}}function Ye(o,t){if(o&1){let e=gC();Ff(),gl(0,"g",15),Og("mouseenter",function(i){let d=wf(e).$implicit,u=EC(2);return Cf(u.showTooltip(i,d.point))})("mousemove",function(i){let d=wf(e).$implicit,u=EC(2);return Cf(u.showTooltip(i,d.point))})("mouseleave",function(){wf(e);let i=EC(2);return Cf(i.hideTooltip())}),_g(1,"rect",16)(2,"rect",17),oC(3,Le,1,4,":svg:rect",18)(4,Ge,2,8),ml();}if(o&2){let e=t.$implicit,n=EC(2);Tg("transform","translate("+e.xGroup+",0)"),nI(),Tg("y",n.yTop)("width",e.groupW)("height",n.yBase-n.yTop),nI(),Tg("y",n.yBase-e.costH)("width",e.w)("height",e.costH),nI(),iC(e.tokensStubH!==null?3:4);}}function We(o,t){if(o&1&&(Ff(),gl(0,"text",5),QC(1),ml()),o&2){let e=t.$implicit,n=EC(2);Tg("x",e.x)("y",n.yAxis),nI(),Yg(e.label);}}function je(o,t){if(o&1&&(gl(0,"div",24),QC(1),ml(),gl(2,"div",25),QC(3),ml()),o&2){let e=t.$implicit;nI(),Yg(e.label),nI(2),Yg(e.value);}}function ze(o,t){if(o&1&&(gl(0,"div",21)(1,"div",22),QC(2),ml(),gl(3,"div",23),cC(4,je,4,2,null,null,$e),ml()()),o&2){let e=EC(2);Hg("left",e.tooltip().x+12,"px")("top",e.tooltip().y+12,"px"),nI(2),Yg(e.tooltip().data.date),nI(2),uC(e.tooltipLines());}}function Xe(o,t){if(o&1&&(gl(0,"div",8)(1,"span",10),QC(2),ml()()),o&2){let e=EC(2);nI(2),Yg(e.tokenCoverageLabel());}}function Je(o,t){if(o&1&&(gl(0,"div",1),Ff(),gl(1,"svg",2),_g(2,"line",3)(3,"line",3),cC(4,Ye,5,8,":svg:g",4,Ae),cC(6,We,2,3,":svg:text",5,He),ml(),oC(8,ze,6,5,"div",6),Pf(),gl(9,"div",7)(10,"div",8),_g(11,"span",9),gl(12,"span",10),QC(13,"Cost (per day)"),ml(),gl(14,"span",11),QC(15),ml()(),gl(16,"div",8),_g(17,"span",12),gl(18,"span",10),QC(19,"Prompt tokens"),ml()(),gl(20,"div",8),_g(21,"span",13),gl(22,"span",10),QC(23,"Completion tokens"),ml()(),gl(24,"div",8),_g(25,"span",14),gl(26,"span",10),QC(27,"Tokens missing"),ml()(),gl(28,"div",8)(29,"span",10),QC(30,"Tokens scale"),ml(),gl(31,"span",11),QC(32),ml()(),oC(33,Xe,3,1,"div",8),ml()()),o&2){let e=EC();nI(),Tg("viewBox",e.viewBox),nI(),Tg("y1",e.yTop)("x2",720)("y2",e.yTop),nI(),Tg("y1",e.yBase)("x2",720)("y2",e.yBase),nI(),uC(e.bars()),nI(2),uC(e.axisLabels()),nI(2),iC(e.tooltip().visible&&e.tooltip().data?8:-1),nI(7),Dl("max ",e.maxCostLabel()),nI(17),Dl("max ",e.maxTokensLabel()),nI(),iC(e.tokenCoverageLabel()?33:-1);}}var j=class o{points=[];width=720;height=240;paddingX=12;paddingY=16;bottomAxisH=48;viewBox=`0 0 ${this.width} ${this.height}`;innerW=this.width-this.paddingX*2;innerH=this.height-this.paddingY*2-this.bottomAxisH;barGap=6;groupGap=14;safePoints=ET(()=>(this.points??[]).filter(t=>!!t.date));maxCost=ET(()=>Math.max(0,...this.safePoints().map(t=>t.cost??0)));maxTokens=ET(()=>{let t=this.safePoints().map(e=>{let n=e.promptTokens??null,i=e.completionTokens??null;return n===null&&i===null?null:(n??0)+(i??0)}).filter(e=>e!==null);return Math.max(0,...t)});tokenCoverageLabel=ET(()=>{let t=this.safePoints();return t.length===0?"":`Tokens available for ${t.filter(n=>n.promptTokens!==null||n.completionTokens!==null).length}/${t.length} days`});maxCostLabel=ET(()=>"$"+(new Bb("en-US").transform(this.maxCost(),"1.2-2")??"0.00"));maxTokensLabel=ET(()=>new Bb("en-US").transform(this.maxTokens(),"1.0-2")??"0");tooltip=Gi({visible:false,x:0,y:0,data:null});toTooltipData(t){let e=t.promptTokens,n=t.completionTokens,i=e===null&&n===null?null:(e??0)+(n??0);return {date:t.date,cost:t.cost??0,promptTokens:e,completionTokens:n,totalTokens:i,callCount:t.callCount??0}}showTooltip(t,e){let i=t.currentTarget?.closest(".chart")?.getBoundingClientRect(),d=i?t.clientX-i.left:t.clientX,u=i?t.clientY-i.top:t.clientY,f=320,k=170,U=12,C=i?Math.max(0,i.width-f-U):d,B=i?Math.max(0,i.height-k-U):u,F=i?Math.min(Math.max(0,d),C):d,ne=i?Math.min(Math.max(0,u),B):u;this.tooltip.set({visible:true,x:F,y:ne,data:this.toTooltipData(e)});}hideTooltip(){this.tooltip.update(t=>z$1(P({},t),{visible:false}));}formatTokens(t){return t===null?"\u2014":new Bb("en-US").transform(t,"1.0-2")??"0"}formatCost(t){return "$"+(new Bb("en-US").transform(t??0,"1.2-2")??"0.00")}tooltipLines=ET(()=>{let t=this.tooltip(),e=t.data;return !t.visible||!e?[]:[{label:"Cost",value:this.formatCost(e.cost)},{label:"Prompt tokens",value:this.formatTokens(e.promptTokens)},{label:"Completion tokens",value:this.formatTokens(e.completionTokens)},{label:"Total tokens",value:this.formatTokens(e.totalTokens)},{label:"Calls",value:`${e.callCount}`}]});bars=ET(()=>{let t=this.safePoints(),e=t.length;if(e===0)return [];let n=(this.innerW-(e-1)*this.groupGap)/e,i=Math.max(2,n),d=(i-this.barGap)/2,u=Math.max(1,d),f=this.maxCost()||1,k=this.maxTokens()||1,U=45;return t.map((C,B)=>{let F=this.paddingX+B*(i+this.groupGap),Ie=(C.cost??0)/f*this.innerH,oe=C.promptTokens,ae=C.completionTokens,Z=oe!==null||ae!==null,Ne=oe??0,Ue=ae??0,Be=Z?Ne/k*this.innerH:null,Fe=Z?Ue/k*this.innerH:null;return {date:C.date,point:C,xGroup:F,groupW:i,xCost:F,w:u,costH:Ie,xTokens:F+u+this.barGap,promptH:Be,completionH:Fe,tokensStubH:Z?null:U}})});axisLabels=ET(()=>{let t=this.safePoints(),e=t.length;if(e===0)return [];let i=Math.max(1,Math.ceil(e/8)),d=(this.innerW-(e-1)*this.groupGap)/e,u=Math.max(2,d);return t.map((f,k)=>({p:f,i:k})).filter(({i:f})=>f%i===0||f===e-1).map(({p:f,i:k})=>{let C=this.paddingX+k*(u+this.groupGap)+u/2,B=f.date.slice(5);return {x:C,label:B}})});yTop=this.paddingY;yBase=this.paddingY+this.innerH;yAxis=this.yBase+28;static \u0275fac=function(e){return new(e||o)};static \u0275cmp=Fw({type:o,selectors:[["app-daily-series-chart"]],inputs:{points:"points"},decls:2,vars:1,consts:[[1,"muted"],[1,"chart"],["preserveAspectRatio","none","role","img","aria-label","Daily token and cost usage",1,"chart__svg"],["x1","0",1,"chart__grid"],[1,"chart__day"],["text-anchor","middle",1,"chart__axis-label"],[1,"chart__tooltip",3,"left","top"],[1,"chart__legend"],[1,"chart__legend-item"],["aria-hidden","true",1,"chart__legend-swatch","chart__legend-swatch--cost"],[1,"chart__legend-label"],[1,"chart__legend-value"],["aria-hidden","true",1,"chart__legend-swatch","chart__legend-swatch--prompt"],["aria-hidden","true",1,"chart__legend-swatch","chart__legend-swatch--completion"],["aria-hidden","true",1,"chart__legend-swatch","chart__legend-swatch--tokens-missing"],[1,"chart__day",3,"mouseenter","mousemove","mouseleave"],["x","0",1,"chart__hover"],["x","0",1,"chart__bar","chart__bar--cost"],[1,"chart__bar","chart__bar--tokens-missing"],[1,"chart__bar","chart__bar--prompt"],[1,"chart__bar","chart__bar--completion"],[1,"chart__tooltip"],[1,"chart__tooltip-title"],[1,"chart__tooltip-grid"],[1,"chart__tooltip-label"],[1,"chart__tooltip-value"]],template:function(e,n){e&1&&oC(0,Ve,2,0,"div",0)(1,Je,34,11,"div",1),e&2&&iC(n.safePoints().length===0?0:1);},styles:[".chart[_ngcontent-%COMP%]{display:grid;gap:.5rem;position:relative}.chart__svg[_ngcontent-%COMP%]{width:100%;height:260px;display:block;border-radius:12px;background:var(--color-bg-secondary, rgba(255, 255, 255, .72));border:1px solid var(--color-border-light, rgba(0, 0, 0, .08))}.chart__grid[_ngcontent-%COMP%]{stroke:var(--color-border-light, rgba(0, 0, 0, .08));stroke-width:1}.chart__day[_ngcontent-%COMP%]{cursor:default}.chart__hover[_ngcontent-%COMP%]{fill:transparent}.chart__day[_ngcontent-%COMP%]:hover .chart__hover[_ngcontent-%COMP%]{fill:var(--color-bg-hover, rgba(0, 0, 0, .03))}.chart__tooltip[_ngcontent-%COMP%]{position:absolute;z-index:2;min-width:220px;max-width:320px;padding:10px 12px;border-radius:12px;background:rgb(var(--color-bg-secondary-rgb, 255 255 255)/1);border:1px solid var(--color-border-light, rgba(0, 0, 0, .08));box-shadow:var(--glass-shadow, 0 8px 24px rgba(0, 0, 0, .12));pointer-events:none}.chart__tooltip-title[_ngcontent-%COMP%]{font-weight:650;margin-bottom:6px}.chart__tooltip-grid[_ngcontent-%COMP%]{display:grid;grid-template-columns:1fr auto;column-gap:10px;row-gap:4px}.chart__tooltip-label[_ngcontent-%COMP%]{color:var(--color-text-secondary, rgba(29, 29, 31, .7));font-size:.85rem}.chart__tooltip-value[_ngcontent-%COMP%]{font-variant-numeric:tabular-nums;text-align:right}.chart__bar[_ngcontent-%COMP%]{shape-rendering:geometricPrecision;rx:2;ry:2}.chart__bar--cost[_ngcontent-%COMP%]{fill:var(--color-primary, #007aff);opacity:.85}.chart__bar--prompt[_ngcontent-%COMP%]{fill:var(--color-success, #34c759);opacity:.85}.chart__bar--completion[_ngcontent-%COMP%]{fill:var(--color-warning, #ff9500);opacity:.85}.chart__bar--tokens-missing[_ngcontent-%COMP%]{fill:transparent;stroke:var(--color-text-secondary, rgba(29, 29, 31, .55));stroke-width:1.5;stroke-dasharray:4 3}.chart__axis-label[_ngcontent-%COMP%]{fill:var(--color-text-secondary, rgba(29, 29, 31, .7));font-size:12px;font-variant-numeric:tabular-nums}.chart__legend[_ngcontent-%COMP%]{display:flex;justify-content:space-between;gap:.75rem;flex-wrap:wrap}.chart__legend-item[_ngcontent-%COMP%]{display:flex;gap:.5rem;align-items:baseline}.chart__legend-swatch[_ngcontent-%COMP%]{width:10px;height:10px;border-radius:3px;align-self:center}.chart__legend-swatch--cost[_ngcontent-%COMP%]{background:var(--color-primary, #007aff)}.chart__legend-swatch--prompt[_ngcontent-%COMP%]{background:var(--color-success, #34c759)}.chart__legend-swatch--completion[_ngcontent-%COMP%]{background:var(--color-warning, #ff9500)}.chart__legend-swatch--tokens-missing[_ngcontent-%COMP%]{background:transparent;border:1px dashed var(--color-text-secondary, rgba(29, 29, 31, .55))}.chart__legend-label[_ngcontent-%COMP%]{color:var(--color-text-secondary, rgba(29, 29, 31, .7));font-size:.85rem}.chart__legend-value[_ngcontent-%COMP%]{font-variant-numeric:tabular-nums}.muted[_ngcontent-%COMP%]{color:var(--color-text-secondary, rgba(29, 29, 31, .7))}"]})};var X=class o{http=g(fy);getTokenUsage(t){let e=new Nt;return t.from&&(e=e.set("from",t.from)),t.to&&(e=e.set("to",t.to)),this.http.get("/api/token-usage",{params:e})}getTokenUsageSeries(t){let e=new Nt;return t.from&&(e=e.set("from",t.from)),t.to&&(e=e.set("to",t.to)),this.http.get("/api/token-usage/series",{params:e})}static \u0275fac=function(e){return new(e||o)};static \u0275prov=x({token:o,factory:o.\u0275fac,providedIn:"root"})};function Pe(o){return `${o}`.padStart(2,"0")}function we(o){return `${o.getUTCFullYear()}-${Pe(o.getUTCMonth()+1)}-${Pe(o.getUTCDate())}`}function qe(o=new Date){return new Date(Date.UTC(o.getUTCFullYear(),o.getUTCMonth(),1))}function Ke(o=new Date){return new Date(Date.UTC(o.getUTCFullYear(),o.getUTCMonth()+1,1))}var J=class o{api=g(X);destroyRef=g(we$1);defaultFrom=we(qe());defaultTo=we(Ke());draftFilters=Gi({from:this.defaultFrom,to:this.defaultTo});appliedFilters=Gi({from:this.defaultFrom,to:this.defaultTo});loading=Gi(false);error=Gi(null);aggregation=Gi(null);seriesResponse=Gi(null);series=Gi(null);tokenDataPartial=Gi(false);aggregationByModelId=Gi(null);seriesByModelId=Gi(null);init(){this.reload();}setDraftFrom(t){this.draftFilters.update(e=>z$1(P({},e),{from:t}));}setDraftTo(t){this.draftFilters.update(e=>z$1(P({},e),{to:t}));}clearDraftFrom(){this.setDraftFrom(null);}clearDraftTo(){this.setDraftTo(null);}apply(){this.appliedFilters.set(this.draftFilters()),this.reload();}addNullableTokens(t,e){return t===null&&e===null?null:(t??0)+(e??0)}aggregateByModelId(t){let e=new Map;for(let n of t){let i=n.modelId,d=e.get(i);d?(d.promptTokens=this.addNullableTokens(d.promptTokens,n.promptTokens),d.completionTokens=this.addNullableTokens(d.completionTokens,n.completionTokens),d.totalTokens=this.addNullableTokens(d.totalTokens,n.totalTokens),d.callCount+=n.callCount??0,d.cost=(d.cost??0)+(n.cost??0)):e.set(i,{agentName:"All agents",providerName:"all",modelId:n.modelId,promptTokens:n.promptTokens,completionTokens:n.completionTokens,totalTokens:n.totalTokens,callCount:n.callCount??0,cost:n.cost??0});}return [...e.values()].sort((n,i)=>(i.totalTokens??0)-(n.totalTokens??0))}aggregateSeriesByModelId(t){let e=new Map;for(let n of t){let i=`${n.date}|${n.modelId}`,d=e.get(i);d?(d.promptTokens=this.addNullableTokens(d.promptTokens,n.promptTokens),d.completionTokens=this.addNullableTokens(d.completionTokens,n.completionTokens),d.totalTokens=this.addNullableTokens(d.totalTokens,n.totalTokens),d.callCount+=n.callCount??0,d.cost=(d.cost??0)+(n.cost??0)):e.set(i,{date:n.date,agentName:"All agents",providerName:"all",modelId:n.modelId,promptTokens:n.promptTokens,completionTokens:n.completionTokens,totalTokens:n.totalTokens,callCount:n.callCount??0,cost:n.cost??0});}return [...e.values()].sort((n,i)=>n.date<i.date?-1:1)}reload(){let{from:t,to:e}=this.appliedFilters();this.loading.set(true),this.error.set(null),Vy({aggregation:this.api.getTokenUsage({from:t,to:e}),series:this.api.getTokenUsageSeries({from:t,to:e})}).pipe(U(this.destroyRef)).subscribe({next:({aggregation:n,series:i})=>{this.aggregation.set(n),this.seriesResponse.set(i);let d=i.points??[];this.series.set(d),this.tokenDataPartial.set(n.tokenDataPartial||i.tokenDataPartial);let u=this.aggregateByModelId(n.models??[]);this.aggregationByModelId.set(u),this.seriesByModelId.set(this.aggregateSeriesByModelId(d)),this.loading.set(false);},error:n=>{this.loading.set(false),this.aggregation.set(null),this.seriesResponse.set(null),this.series.set(null),this.tokenDataPartial.set(false),this.aggregationByModelId.set(null),this.seriesByModelId.set(null),this.error.set(n instanceof Error?n.message:"Failed to load token usage");}});}static \u0275fac=function(e){return new(e||o)};static \u0275prov=x({token:o,factory:o.\u0275fac,providedIn:"root"})};var q=function(){throw new Error("DON'T USE this INSIDE A FUNCTION CALLED BY | call OR | apply IT MUST BE A PURE FUNCTION!")},De=typeof Proxy!="function"?Object.seal({}):new Proxy({},{get:q,set:q,deleteProperty:q,has:q}),K=class o{transform(t,e){if(typeof e!="function")throw new TypeError("You must pass a PURE function to | call");return e?.call(De,t)}static \u0275fac=function(e){return new(e||o)};static \u0275pipe=Rn({name:"call",type:o,pure:true})},Q=class o{transform(t,...e){if(typeof t!="function")throw new TypeError("You must use | apply on a PURE function");return t.apply(De,e)}static \u0275fac=function(e){return new(e||o)};static \u0275pipe=Rn({name:"apply",type:o,pure:true})};function Qe(o,t){o&1&&(ws(0,"div",23),QC(1," Partial data \u2014 token counts may not cover the full period "),hl());}function Ze(o,t){o&1&&(ws(0,"div",24),QC(1," No token data collected for this period "),hl());}function et(o,t){if(o&1&&(ws(0,"div",19)(1,"div",20)(2,"div",21),QC(3,"Total tokens"),hl(),ws(4,"div",22),QC(5),dT(6,"call"),hl()(),ws(7,"div",20)(8,"div",21),QC(9,"Total calls"),hl(),ws(10,"div",22),QC(11),hl()(),ws(12,"div",20)(13,"div",21),QC(14,"Total cost"),hl(),ws(15,"div",22),QC(16),dT(17,"apply"),hl()()(),oC(18,Qe,2,0,"div",23),oC(19,Ze,2,0,"div",24)),o&2){let e=EC();nI(5),Yg(hT(6,5,e.totalRow().totalTokens,e.formatTokenValue)),nI(6),Yg(e.totalRow().callCount),nI(5),Yg(gT(17,8,e.formatCostValue,e.isMissingPeriod(),e.totalRow().cost)),nI(2),iC(e.isPartialPeriod()?18:-1),nI(),iC(e.isMissingPeriod()?19:-1);}}function tt(o,t){o&1&&(ws(0,"div",16)(1,"div",25),QC(2,"Loading token usage\u2026"),hl()());}function nt(o,t){if(o&1&&(ws(0,"div",17)(1,"div",26),QC(2,"Failed to load"),hl(),ws(3,"div",25),QC(4),hl()()),o&2){let e=EC();nI(4),Yg(e.state.error());}}function ot(o,t){o&1&&(ws(0,"div",16)(1,"div",26),QC(2,"No data"),hl(),ws(3,"div",25),QC(4,"No token usage recorded yet for this period."),hl()());}function at(o,t){if(o&1&&(ws(0,"div",32)(1,"div",29),QC(2),hl(),ws(3,"div",29),QC(4),hl(),ws(5,"div",29),QC(6),hl(),ws(7,"div",30),QC(8),dT(9,"call"),hl(),ws(10,"div",30),QC(11),dT(12,"call"),hl(),ws(13,"div",30),QC(14),dT(15,"call"),hl(),ws(16,"div",30),QC(17),hl(),ws(18,"div",30),QC(19),dT(20,"apply"),hl()()),o&2){let e=t.$implicit,n=EC(2);nI(2),Yg(e.agentName),nI(2),Yg(e.providerName),nI(2),Yg(e.modelId),nI(2),Yg(hT(9,8,e.promptTokens,n.formatTokenValue)),nI(3),Yg(hT(12,11,e.completionTokens,n.formatTokenValue)),nI(3),Yg(hT(15,14,e.totalTokens,n.formatTokenValue)),nI(3),Yg(e.callCount),nI(2),Dl(" ",gT(20,17,n.formatCostValue,n.isMissingPeriod(),e.cost)," ");}}function it(o,t){if(o&1&&(ws(0,"div",33)(1,"div",29),QC(2),hl(),ws(3,"div",29),QC(4),hl(),ws(5,"div",29),QC(6),hl(),ws(7,"div",30),QC(8),dT(9,"call"),hl(),ws(10,"div",30),QC(11),dT(12,"call"),hl(),ws(13,"div",30),QC(14),dT(15,"call"),hl(),ws(16,"div",30),QC(17),hl(),ws(18,"div",30),QC(19),dT(20,"apply"),hl()()),o&2){let e=EC(2);nI(2),Yg(e.totalRow().agentName),nI(2),Yg(e.totalRow().providerName),nI(2),Yg(e.totalRow().modelId),nI(2),Yg(hT(9,8,e.totalRow().promptTokens,e.formatTokenValue)),nI(3),Dl(" ",hT(12,11,e.totalRow().completionTokens,e.formatTokenValue)," "),nI(3),Yg(hT(15,14,e.totalRow().totalTokens,e.formatTokenValue)),nI(3),Yg(e.totalRow().callCount),nI(2),Dl(" ",gT(20,17,e.formatCostValue,e.isMissingPeriod(),e.totalRow().cost)," ");}}function rt(o,t){if(o&1&&(ws(0,"div",18)(1,"section",16)(2,"div",26),QC(3,"Summary"),hl(),ws(4,"div",27)(5,"div",28)(6,"div",29),QC(7,"agentName"),hl(),ws(8,"div",29),QC(9,"providerName"),hl(),ws(10,"div",29),QC(11,"modelId"),hl(),ws(12,"div",30),QC(13,"promptTokens"),hl(),ws(14,"div",30),QC(15,"completionTokens"),hl(),ws(16,"div",30),QC(17,"totalTokens"),hl(),ws(18,"div",30),QC(19,"callCount"),hl(),ws(20,"div",30),QC(21,"cost"),hl()(),ws(22,"div",31),cC(23,at,21,21,"div",32,nC().trackRow,true),oC(25,it,21,21,"div",33),hl()()(),ws(26,"section",16)(27,"div",26),QC(28,"Daily series"),hl(),Sg(29,"app-daily-series-chart",34),hl()()),o&2){let e=EC();nI(23),uC(e.rows()),nI(2),iC(e.totalRow()?25:-1),nI(4),bg("points",e.chartPoints());}}var Ee="\u2014",Oe=class o{location=g(_m);state=g(J);view=Gi("byModel");rowsByAgent=ET(()=>this.state.aggregation()?.models??[]);totalRow=ET(()=>this.state.aggregation()?.total??null);rowsByModel=ET(()=>this.state.aggregationByModelId()??[]);chartPointsByAgent=ET(()=>{let t=this.state.series()??[];return this.aggregateDailyPoints(t)});chartPointsByModel=ET(()=>{let t=this.state.seriesByModelId()??[];return this.aggregateDailyPoints(t)});chartPoints=ET(()=>this.view()==="byAgent"?this.chartPointsByAgent():this.chartPointsByModel());rows=ET(()=>this.view()==="byAgent"?this.rowsByAgent():this.rowsByModel());isEmpty=ET(()=>{let t=this.state.aggregation();return t?(t.models?.length??0)===0&&(t.total?.callCount??0)===0:false});ngOnInit(){this.state.init();}onFromChange(t){this.state.setDraftFrom(t||null);}onToChange(t){this.state.setDraftTo(t||null);}clearFrom(){this.state.clearDraftFrom();}clearTo(){this.state.clearDraftTo();}apply(){this.state.apply();}aggregateDailyPoints(t){let e=new Map;for(let n of t){let i=e.get(n.date);if(!i)e.set(n.date,{date:n.date,promptTokens:n.promptTokens,completionTokens:n.completionTokens,cost:n.cost??0,callCount:n.callCount??0});else {let d=(u,f)=>u===null&&f===null?null:(u??0)+(f??0);i.promptTokens=d(i.promptTokens,n.promptTokens),i.completionTokens=d(i.completionTokens,n.completionTokens),i.cost=(i.cost??0)+(n.cost??0),i.callCount=(i.callCount??0)+(n.callCount??0);}}return [...e.values()].sort((n,i)=>n.date<i.date?-1:1)}trackRow(t,e){return `${e.agentName}|${e.providerName}|${e.modelId}`}isMissingPeriod=ET(()=>{if(this.state.loading())return false;let t=this.state.aggregation()?.total;return t?t.totalTokens===null&&(t.cost===null||t.cost===void 0):false});isPartialPeriod=ET(()=>!this.isMissingPeriod()&&this.state.tokenDataPartial());navigateBack(){this.location.back();}formatTokenValue(t){return t===null?Ee:new Bb("en-US").transform(t,"1.0-2")??"0"}formatCostValue(t,e){return t?Ee:"$"+(new Bb("en-US").transform(e??0,"1.2-2")??"0.00")}static \u0275fac=function(e){return new(e||o)};static \u0275cmp=Fw({type:o,selectors:[["app-token-usage"]],decls:41,vars:8,consts:[[1,"page"],[1,"page__header"],[1,"page__title-block"],["mat-icon-button","","title","Back",3,"click"],[1,"page__title"],[1,"page__subtitle"],[1,"filters"],[1,"filters__field"],[1,"filters__label"],[1,"filters__control"],["type","date",1,"filters__input",3,"ngModelChange","ngModel"],["type","button",1,"filters__clear",3,"click","disabled"],[1,"filters__select",3,"ngModelChange","ngModel"],["value","byModel"],["value","byAgent"],["type","button",1,"filters__apply",3,"click","disabled"],[1,"card"],[1,"card","card--error"],[1,"grid"],[1,"kpis"],[1,"kpi"],[1,"kpi__label"],[1,"kpi__value"],["title","Some calls in this period were recorded before token tracking was enabled. Token counts reflect only the portion where data was collected.",1,"hint"],["title","No token usage data was collected for this period.",1,"hint"],[1,"muted"],[1,"card__title"],[1,"table"],[1,"table__head"],[1,"table__cell"],[1,"table__cell","table__cell--num"],[1,"table__body"],[1,"table__row"],[1,"table__row","table__row--total"],[3,"points"]],template:function(e,n){e&1&&(ws(0,"section",0)(1,"header",1)(2,"div",2)(3,"button",3),Rg("click",function(){return n.navigateBack()}),ws(4,"mat-icon"),QC(5,"chevron_left"),hl()(),ws(6,"div")(7,"h1",4),QC(8,"Token Usage"),hl(),ws(9,"p",5),QC(10,"Track prompt and completion token usage by agent and model."),hl()()(),ws(11,"div",6)(12,"label",7)(13,"span",8),QC(14,"From"),hl(),ws(15,"div",9)(16,"input",10),Rg("ngModelChange",function(d){return n.onFromChange(d)}),hl(),GI(),ws(17,"button",11),Rg("click",function(){return n.clearFrom()}),QC(18," Clear "),hl()()(),ws(19,"label",7)(20,"span",8),QC(21,"To"),hl(),ws(22,"div",9)(23,"input",10),Rg("ngModelChange",function(d){return n.onToChange(d)}),hl(),GI(),ws(24,"button",11),Rg("click",function(){return n.clearTo()}),QC(25," Clear "),hl()()(),ws(26,"label",7)(27,"span",8),QC(28,"View"),hl(),ws(29,"select",12),Rg("ngModelChange",function(d){return n.view.set(d)}),ws(30,"option",13),QC(31,"By model"),hl(),ws(32,"option",14),QC(33,"By agent"),hl()(),GI(),hl(),ws(34,"button",15),Rg("click",function(){return n.apply()}),QC(35,"Apply"),hl()()(),oC(36,et,20,12),oC(37,tt,3,0,"div",16)(38,nt,5,1,"div",17)(39,ot,5,0,"div",16)(40,rt,30,2,"div",18),hl()),e&2&&(nI(16),bg("ngModel",n.state.draftFilters().from),qI(),nI(),bg("disabled",!n.state.draftFilters().from),nI(6),bg("ngModel",n.state.draftFilters().to),qI(),nI(),bg("disabled",!n.state.draftFilters().to),nI(5),bg("ngModel",n.view()),qI(),nI(5),bg("disabled",n.state.loading()),nI(2),iC(n.totalRow()?36:-1),nI(),iC(n.state.loading()?37:n.state.error()?38:n.isEmpty()?39:40));},dependencies:[ti,Qn,ei,Ye$1,At,Zn,cn,j,hr,Gn,yt,wt,K,Q],styles:[".page[_ngcontent-%COMP%]{padding:1.5rem;color:var(--color-text, #1d1d1f)}.page__header[_ngcontent-%COMP%]{display:flex;align-items:flex-start;justify-content:space-between;gap:1.5rem;margin-bottom:1rem}.page__title-block[_ngcontent-%COMP%]{display:flex;align-items:flex-start;gap:.75rem}.page__title[_ngcontent-%COMP%]{margin:0;font-size:1.25rem;font-weight:650}.page__subtitle[_ngcontent-%COMP%]{margin:.25rem 0 0;color:var(--color-text-secondary, rgba(29, 29, 31, .7));font-size:.95rem}.filters[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:flex-end;gap:.75rem}.filters__field[_ngcontent-%COMP%]{display:grid;gap:.25rem}.filters__label[_ngcontent-%COMP%]{font-size:.8rem;color:var(--color-text-secondary, rgba(29, 29, 31, .7))}.filters__control[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.5rem}.filters__input[_ngcontent-%COMP%], .filters__select[_ngcontent-%COMP%]{height:34px;padding:0 .5rem;border-radius:8px;border:1px solid var(--color-border, rgba(0, 0, 0, .12));background:var(--color-bg-secondary, rgba(255, 255, 255, .72));color:var(--color-text, #1d1d1f)}.filters__apply[_ngcontent-%COMP%], .filters__clear[_ngcontent-%COMP%]{height:34px;padding:0 .75rem;border-radius:8px;border:1px solid var(--color-border, rgba(0, 0, 0, .12));background:var(--color-bg-secondary, rgba(255, 255, 255, .72));color:var(--color-text, #1d1d1f);cursor:pointer}.kpis[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.75rem;margin:.75rem 0 1rem}@media(max-width:900px){.kpis[_ngcontent-%COMP%]{grid-template-columns:1fr}}.kpi[_ngcontent-%COMP%]{border-radius:14px;padding:.75rem 1rem;background:var(--glass-bg, rgba(255, 255, 255, .72));border:1px solid var(--glass-border, rgba(255, 255, 255, .18));box-shadow:var(--glass-shadow, 0 8px 24px rgba(0, 0, 0, .08))}.kpi__label[_ngcontent-%COMP%]{font-size:.8rem;color:var(--color-text-secondary, rgba(29, 29, 31, .7))}.kpi__value[_ngcontent-%COMP%]{margin-top:.25rem;font-size:1.2rem;font-weight:650;font-variant-numeric:tabular-nums}.filters__apply[_ngcontent-%COMP%]{border-color:var(--color-primary, #007aff);background:var(--color-primary, #007aff);color:var(--color-text-inverse, #ffffff)}.filters__apply[_ngcontent-%COMP%]:disabled, .filters__clear[_ngcontent-%COMP%]:disabled{opacity:.6;cursor:not-allowed}.grid[_ngcontent-%COMP%]{display:grid;grid-template-columns:1.5fr 1fr;gap:1rem;align-items:start}@media(max-width:1100px){.grid[_ngcontent-%COMP%]{grid-template-columns:1fr}}.card[_ngcontent-%COMP%]{border-radius:14px;padding:1rem;background:var(--glass-bg, rgba(255, 255, 255, .72));border:1px solid var(--glass-border, rgba(255, 255, 255, .18));box-shadow:var(--glass-shadow, 0 8px 24px rgba(0, 0, 0, .08))}.card--error[_ngcontent-%COMP%]{border-color:var(--color-error, #ff3b30)}.card__title[_ngcontent-%COMP%]{font-weight:650;margin-bottom:.75rem}.muted[_ngcontent-%COMP%]{color:var(--color-text-secondary, rgba(29, 29, 31, .7))}.table[_ngcontent-%COMP%]{overflow-x:auto}.table__head[_ngcontent-%COMP%], .table__row[_ngcontent-%COMP%]{display:grid;grid-template-columns:1fr 1fr 2fr 1fr 1fr 1fr .7fr 1fr;gap:.5rem;align-items:center}.table__head[_ngcontent-%COMP%]{font-size:.8rem;color:var(--color-text-secondary, rgba(29, 29, 31, .7));padding:.25rem 0;border-bottom:1px solid var(--color-border-light, rgba(0, 0, 0, .08))}.table__row[_ngcontent-%COMP%]{padding:.5rem 0;border-bottom:1px solid var(--color-border-light, rgba(0, 0, 0, .08))}.table__row--total[_ngcontent-%COMP%]{font-weight:650;background:var(--color-bg-hover, rgba(0, 0, 0, .03));border-radius:10px;padding:.6rem .5rem;border-bottom:none;margin-top:.5rem}.table__cell[_ngcontent-%COMP%]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.table__cell--num[_ngcontent-%COMP%]{text-align:right;font-variant-numeric:tabular-nums}.hint[_ngcontent-%COMP%]{margin:.25rem 0 1rem;color:var(--color-text-secondary, rgba(29, 29, 31, .7));font-size:.85rem}"],changeDetection:1})};export{Oe as TokenUsageComponent};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import {O}from'./chunk-BNS6Fgaw.js';import {R}from'./chunk-rwEyLSEP.js';import {N}from'./chunk-Be1LOFvg.js';import {g,G,bm as _m,w as we$1,a as Gi,E as ET,F,aD as jy,u as ue$1,c as U,h as Fw,m as ws,o as Rg,n as hl,Q as QC,q as oC,t as nI,x as iC,r as cC,ac as EC,y as uC,a9 as gC,A as Ug,T as Tg,a8 as Yg,a5 as Dl,S as Sg,a3 as GI,v as bg,a6 as qI,aa as wf,ab as Cf,cH as nC}from'./main-5PAOSHSM.js';import {l,I,f}from'./chunk-BY7uKZAo.js';import {S as Se$1}from'./chunk-CtkiOUdU.js';import'./chunk-S8F5_Te_.js';import {o as z,k as _t,n as ni,J as Jn,Q as Qn,e as ei,Y as Ye,A as At,Z as Zn,l as Xn,E as En,p as An}from'./chunk-tTmeIHGS.js';import'./chunk-BEUXx3TO.js';import'./chunk-kvCfAm7Z.js';var D=(r,i)=>i.value;function se(r,i){r&1&&(ws(0,"p",4),QC(1,"Loading\u2026"),hl());}function de(r,i){if(r&1){let e=gC();ws(0,"button",18),Rg("click",function(){let d=wf(e).$implicit,_=EC(2);return Cf(_.setThemeVariant(d.value))}),ws(1,"span",19),QC(2),hl(),ws(3,"span",20),QC(4),hl()();}if(r&2){let e=i.$implicit,a=EC(2);Ug("user-profile__theme-variant--active",a.themeVariant()===e.value),Tg("aria-pressed",a.themeVariant()===e.value),nI(2),Yg(e.label),nI(2),Yg(e.description);}}function _e(r,i){if(r&1){let e=gC();ws(0,"button",21),Rg("click",function(){let d=wf(e).$implicit,_=EC(2);return Cf(_.setTheme(d.value))}),QC(1),hl();}if(r&2){let e=i.$implicit,a=EC(2);Ug("user-profile__segmented-option--active",a.themeMode()===e.value),Tg("aria-pressed",a.themeMode()===e.value),nI(),Dl(" ",e.label," ");}}function ce(r,i){if(r&1){let e=gC();ws(0,"button",21),Rg("click",function(){let d=wf(e).$implicit,_=EC(2);return Cf(_.setEnterKeyBehavior(d.value))}),QC(1),hl();}if(r&2){let e=i.$implicit,a=EC(2);Ug("user-profile__segmented-option--active",a.enterKeyBehavior()===e.value),Tg("aria-pressed",a.enterKeyBehavior()===e.value),nI(),Dl(" ",e.label," ");}}function pe(r,i){if(r&1&&(ws(0,"option",32),QC(1),hl()),r&2){let e=i.$implicit;bg("value",e.value),nI(),Yg(e.label);}}function me(r,i){if(r&1){let e=gC();ws(0,"form",22),Rg("ngSubmit",function(){wf(e);let d=EC(2);return Cf(d.save())}),ws(1,"div",5)(2,"h2",6),QC(3,"Identity"),hl(),ws(4,"div",7)(5,"span",8),QC(6,"Email"),hl(),ws(7,"span",23),QC(8),hl()(),ws(9,"div",7)(10,"span",8),QC(11,"External ID"),hl(),ws(12,"span",23),QC(13),hl()()(),ws(14,"div",5)(15,"h2",6),QC(16,"Profile"),hl(),ws(17,"div",7)(18,"label",24),QC(19,"First name"),hl(),Sg(20,"input",25),GI(),hl(),ws(21,"div",7)(22,"label",26),QC(23,"Last name"),hl(),Sg(24,"input",27),GI(),hl(),ws(25,"div",7)(26,"label",28),QC(27,"Bio"),hl(),Sg(28,"textarea",29),GI(),hl(),ws(29,"div",7)(30,"label",30),QC(31,"Language"),hl(),ws(32,"select",31),cC(33,pe,2,2,"option",32,D),hl(),GI(),hl()(),ws(35,"div",33)(36,"button",34),QC(37),hl(),ws(38,"button",35),Rg("click",function(){wf(e);let d=EC(2);return Cf(d.cancelEditing())}),QC(39,"Cancel"),hl()()();}if(r&2){let e=EC(),a=EC();bg("formGroup",a.form),nI(8),Yg(e.email),nI(5),Yg(e.externalId),nI(7),qI(),nI(4),qI(),nI(4),qI(),nI(4),qI(),nI(),uC(a.languageOptions),nI(3),bg("disabled",a.isSaving()),nI(),Dl(" ",a.isSaving()?"Saving\u2026":"Save changes"," ");}}function ue(r,i){r&1&&(ws(0,"p",43),QC(1," No global configuration yet. Create one from the Integrations / AI Providers / Auth Settings pages of your namespaces. "),hl());}function fe(r,i){if(r&1){let e=gC();ws(0,"span",50),QC(1,"Delete?"),hl(),ws(2,"button",51),Rg("click",function(){wf(e);let d=EC().$implicit,_=EC(6);return Cf(_.confirmDelete(d))}),QC(3," Confirm "),hl(),ws(4,"button",52),Rg("click",function(){wf(e);let d=EC(7);return Cf(d.cancelDelete())}),QC(5," Cancel "),hl();}}function ge(r,i){if(r&1){let e=gC();ws(0,"button",52),Rg("click",function(){wf(e);let d=EC().$implicit,_=EC(6);return Cf(_.armDelete(d))}),QC(1," Delete "),hl();}}function Ce(r,i){if(r&1&&(ws(0,"li",46)(1,"span",47),QC(2),hl(),ws(3,"span",48),QC(4),hl(),oC(5,fe,6,0)(6,ge,2,0,"button",49),hl()),r&2){let e=i.$implicit,a=EC(6);nI(2),Yg(e.name),nI(2),Yg(e.subtitle),nI(),iC(a.isPendingDelete(e)?5:6);}}function ve(r,i){if(r&1&&(ws(0,"h3",44),QC(1,"Integrations"),hl(),ws(2,"ul",45),cC(3,Ce,7,3,"li",46,nC().trackEntry,true),hl()),r&2){let e=EC(5);nI(3),uC(e.recap().integrations);}}function xe(r,i){if(r&1){let e=gC();ws(0,"span",50),QC(1,"Delete?"),hl(),ws(2,"button",51),Rg("click",function(){wf(e);let d=EC().$implicit,_=EC(6);return Cf(_.confirmDelete(d))}),QC(3," Confirm "),hl(),ws(4,"button",52),Rg("click",function(){wf(e);let d=EC(7);return Cf(d.cancelDelete())}),QC(5," Cancel "),hl();}}function be(r,i){if(r&1){let e=gC();ws(0,"button",52),Rg("click",function(){wf(e);let d=EC().$implicit,_=EC(6);return Cf(_.armDelete(d))}),QC(1," Delete "),hl();}}function ye(r,i){if(r&1&&(ws(0,"li",46)(1,"span",47),QC(2),hl(),ws(3,"span",48),QC(4),hl(),oC(5,xe,6,0)(6,be,2,0,"button",49),hl()),r&2){let e=i.$implicit,a=EC(6);nI(2),Yg(e.name),nI(2),Yg(e.subtitle),nI(),iC(a.isPendingDelete(e)?5:6);}}function he(r,i){if(r&1&&(ws(0,"h3",44),QC(1,"AI Providers"),hl(),ws(2,"ul",45),cC(3,ye,7,3,"li",46,nC().trackEntry,true),hl()),r&2){let e=EC(5);nI(3),uC(e.recap().aiProviders);}}function Ee(r,i){if(r&1){let e=gC();ws(0,"span",50),QC(1,"Delete?"),hl(),ws(2,"button",51),Rg("click",function(){wf(e);let d=EC().$implicit,_=EC(6);return Cf(_.confirmDelete(d))}),QC(3," Confirm "),hl(),ws(4,"button",52),Rg("click",function(){wf(e);let d=EC(7);return Cf(d.cancelDelete())}),QC(5," Cancel "),hl();}}function Pe(r,i){if(r&1){let e=gC();ws(0,"button",52),Rg("click",function(){wf(e);let d=EC().$implicit,_=EC(6);return Cf(_.armDelete(d))}),QC(1," Delete "),hl();}}function Se(r,i){if(r&1&&(ws(0,"li",46)(1,"span",47),QC(2),hl(),ws(3,"span",48),QC(4),hl(),oC(5,Ee,6,0)(6,Pe,2,0,"button",49),hl()),r&2){let e=i.$implicit,a=EC(6);nI(2),Yg(e.name),nI(2),Yg(e.subtitle),nI(),iC(a.isPendingDelete(e)?5:6);}}function we(r,i){if(r&1&&(ws(0,"h3",44),QC(1,"My global auth settings"),hl(),ws(2,"ul",45),cC(3,Se,7,3,"li",46,nC().trackEntry,true),hl()),r&2){let e=EC(5);nI(3),uC(e.recap().authSettings);}}function ke(r,i){if(r&1&&(oC(0,ve,5,0),oC(1,he,5,0),oC(2,we,5,0)),r&2){let e=EC(4);iC(e.recap().integrations.length>0?0:-1),nI(),iC(e.recap().aiProviders.length>0?1:-1),nI(),iC(e.recap().authSettings.length>0?2:-1);}}function Me(r,i){if(r&1&&oC(0,ue,2,0,"p",43)(1,ke,3,3),r&2){let e=EC(3);iC(e.recap().total===0?0:1);}}function Oe(r,i){if(r&1){let e=gC();ws(0,"div",17)(1,"div",5)(2,"h2",6),QC(3,"Identity"),hl(),ws(4,"div",7)(5,"span",8),QC(6,"Email"),hl(),ws(7,"span",36),QC(8),hl()(),ws(9,"div",7)(10,"span",8),QC(11,"External ID"),hl(),ws(12,"span",36),QC(13),hl()()(),ws(14,"div",5)(15,"h2",6),QC(16,"Profile"),hl(),ws(17,"div",7)(18,"span",8),QC(19,"First name"),hl(),ws(20,"span",36),QC(21),hl()(),ws(22,"div",7)(23,"span",8),QC(24,"Last name"),hl(),ws(25,"span",36),QC(26),hl()(),ws(27,"div",37)(28,"span",8),QC(29,"Bio"),hl(),ws(30,"span",36),QC(31),hl()(),ws(32,"div",7)(33,"span",8),QC(34,"Language"),hl(),ws(35,"span",36),QC(36),hl()()(),ws(37,"div",33)(38,"button",38),Rg("click",function(){wf(e);let d=EC(2);return Cf(d.startEditing())}),QC(39," Edit profile "),hl()(),ws(40,"div",39)(41,"button",40),Rg("click",function(){wf(e);let d=EC(2);return Cf(d.toggleOverrides())}),ws(42,"span",41),QC(43,"\u25B6"),hl(),QC(44," My global user configurations "),ws(45,"span",42),QC(46),hl()(),oC(47,Me,2,1),hl()();}if(r&2){let e=EC(),a=EC();nI(8),Yg(e.email),nI(5),Yg(e.externalId),nI(8),Yg(e.firstname||"\u2014"),nI(5),Yg(e.lastname||"\u2014"),nI(5),Yg(e.bio||"\u2014"),nI(5),Yg(e.preferredLanguage||"\u2014"),nI(5),Tg("aria-expanded",a.isOverridesExpanded()),nI(),Ug("user-profile__overrides-arrow--open",a.isOverridesExpanded()),nI(4),Dl("(",a.recap().total,")"),nI(),iC(a.isOverridesExpanded()?47:-1);}}function Ue(r,i){if(r&1&&(ws(0,"div",5)(1,"h2",6),QC(2,"Appearance"),hl(),ws(3,"div",7)(4,"span",8),QC(5,"Skin"),hl(),ws(6,"div",9),cC(7,de,5,5,"button",10,D),hl()(),ws(9,"div",7)(10,"span",8),QC(11,"Mode"),hl(),ws(12,"div",11),cC(13,_e,2,4,"button",12,D),hl()()(),ws(15,"div",5)(16,"h2",6),QC(17,"Composer"),hl(),ws(18,"div",7)(19,"span",8),QC(20,"Enter key"),hl(),ws(21,"div",13)(22,"div",14),cC(23,ce,2,4,"button",12,D),hl(),ws(25,"p",15),QC(26,'In "New line" mode, press Ctrl or Cmd + Enter to send.'),hl()()()(),oC(27,me,40,5,"form",16)(28,Oe,48,11,"div",17)),r&2){let e=EC();nI(7),uC(e.themeVariantOptions),nI(6),uC(e.themeOptions),nI(10),uC(e.enterKeyOptions),nI(4),iC(e.isEditing()?27:28);}}function Te(r,i){r&1&&(ws(0,"p",4),QC(1,"Unable to load profile."),hl());}var le=class r{userState=g(l);router=g(G);location=g(_m);destroyRef=g(we$1);integrationState=g(N);providerState=g(O);authSettingState=g(R);themePort=g(I);preferencesPort=g(f);isEditing=Gi(false);isLoading=Gi(false);isSaving=Gi(false);isOverridesExpanded=Gi(false);currentUser=this.userState.currentUser;theme=this.themePort.theme;themeMode=ET(()=>this.themePort.theme().mode);themeOptions=[{value:"light",label:"Light"},{value:"dark",label:"Dark"},{value:"system",label:"System"}];themeVariant=ET(()=>this.themePort.theme().variant);themeVariantOptions=[{value:"industry",label:"Industry",description:"Bleu acier, Barlow"},{value:"terminal",label:"Terminal",description:"Ambre CRT, JetBrains Mono"}];enterKeyBehavior=this.preferencesPort.enterKeyBehavior;enterKeyOptions=[{value:"send",label:"Send"},{value:"newline",label:"New line"}];languageOptions=[{value:"",label:"No preference (English fallback)"},{value:"fr",label:"French"},{value:"de",label:"German"},{value:"es",label:"Spanish"},{value:"pt",label:"Portuguese"},{value:"it",label:"Italian"},{value:"nl",label:"Dutch"},{value:"pl",label:"Polish"},{value:"ja",label:"Japanese"},{value:"zh",label:"Chinese"}];form=new z({firstname:new _t("",{nonNullable:true}),lastname:new _t("",{nonNullable:true}),bio:new _t("",{nonNullable:true}),preferredLanguage:new _t("",{nonNullable:true})});recap=F(jy([this.integrationState.userGlobal$,this.providerState.userGlobal$,this.authSettingState.userGlobal$]).pipe(ue$1(([i,e,a])=>{let d=i.map(g=>({category:"integration",id:g.id??"",name:g.name,subtitle:g.integrationType})),_=e.map(g=>({category:"aiProvider",id:g.id??"",name:g.name,subtitle:g.apiType})),I=a.map(g=>({category:"authSetting",id:g.id??"",name:g.name,subtitle:g.authType}));return {integrations:d,aiProviders:_,authSettings:I,total:d.length+_.length+I.length}})),{initialValue:{integrations:[],aiProviders:[],authSettings:[],total:0}});ngOnInit(){if(this.currentUser()){this.syncFormFromState();return}this.isLoading.set(true),this.userState.loadMe().pipe(U(this.destroyRef)).subscribe({next:()=>{this.syncFormFromState(),this.isLoading.set(false);},error:()=>this.isLoading.set(false)});}startEditing(){this.syncFormFromState(),this.isEditing.set(true);}cancelEditing(){this.isEditing.set(false);}setTheme(i){this.themePort.setTheme({variant:this.themePort.theme().variant,mode:i});}setThemeVariant(i){this.themePort.setTheme({variant:i,mode:this.themePort.theme().mode});}setEnterKeyBehavior(i){this.preferencesPort.setEnterKeyBehavior(i);}save(){if(this.isSaving())return;this.isSaving.set(true);let i=this.form.controls.preferredLanguage.value.trim();this.userState.updateMe({firstname:this.form.controls.firstname.value.trim()||void 0,lastname:this.form.controls.lastname.value.trim()||void 0,bio:this.form.controls.bio.value.trim()||void 0,preferredLanguage:i||void 0}).pipe(U(this.destroyRef)).subscribe({next:()=>{this.isSaving.set(false),this.isEditing.set(false);},error:()=>this.isSaving.set(false)});}toggleOverrides(){this.isOverridesExpanded.update(i=>!i),this.pendingDeleteKey.set(null);}pendingDeleteKey=Gi(null);isPendingDelete(i){return this.pendingDeleteKey()===this.entryKey(i)}armDelete(i){i.id&&this.pendingDeleteKey.set(this.entryKey(i));}cancelDelete(){this.pendingDeleteKey.set(null);}confirmDelete(i){if(!i.id)return;this.pendingDeleteKey.set(null),(i.category==="integration"?this.integrationState.delete(i.id,"userGlobal"):i.category==="authSetting"?this.authSettingState.delete(i.id,"userGlobal"):this.providerState.delete(i.id,"userGlobal")).pipe(U(this.destroyRef)).subscribe({error:a=>{console.error(`[UserProfile] Delete failed for ${i.category}:${i.id}:`,a);}});}entryKey(i){return `${i.category}:${i.id}`}goBack(){window.history.length>1?this.location.back():this.router.navigate(["/agentos"]);}trackEntry(i,e){return this.entryKey(e)}syncFormFromState(){let i=this.currentUser();i&&this.form.setValue({firstname:i.firstname??"",lastname:i.lastname??"",bio:i.bio??"",preferredLanguage:i.preferredLanguage??""});}static \u0275fac=function(e){return new(e||r)};static \u0275cmp=Fw({type:r,selectors:[["agentos-user-profile"]],decls:8,vars:1,consts:[[1,"user-profile"],[1,"user-profile__header"],["icon","arrow_back","title","Back",3,"action"],[1,"user-profile__title"],[1,"user-profile__loading"],[1,"user-profile__section"],[1,"user-profile__section-title"],[1,"user-profile__field"],[1,"user-profile__label"],[1,"user-profile__theme-variants"],["type","button",1,"user-profile__theme-variant",3,"user-profile__theme-variant--active"],["role","group","aria-label","Color mode",1,"user-profile__segmented"],["type","button",1,"user-profile__segmented-option",3,"user-profile__segmented-option--active"],[1,"user-profile__field-control"],["role","group","aria-label","Enter key behavior",1,"user-profile__segmented"],[1,"user-profile__hint"],[1,"user-profile__form",3,"formGroup"],[1,"user-profile__view"],["type","button",1,"user-profile__theme-variant",3,"click"],[1,"user-profile__theme-variant-name"],[1,"user-profile__theme-variant-desc"],["type","button",1,"user-profile__segmented-option",3,"click"],[1,"user-profile__form",3,"ngSubmit","formGroup"],[1,"user-profile__value","user-profile__value--readonly"],["for","up-firstname",1,"user-profile__label"],["id","up-firstname","type","text","placeholder","Your first name","formControlName","firstname","autocomplete","given-name",1,"user-profile__input"],["for","up-lastname",1,"user-profile__label"],["id","up-lastname","type","text","placeholder","Your last name","formControlName","lastname","autocomplete","family-name",1,"user-profile__input"],["for","up-bio",1,"user-profile__label"],["id","up-bio","placeholder","A short description about yourself","formControlName","bio","rows","4",1,"user-profile__input","user-profile__input--textarea"],["for","up-preferredLanguage",1,"user-profile__label"],["id","up-preferredLanguage","formControlName","preferredLanguage",1,"user-profile__input","user-profile__select"],[3,"value"],[1,"user-profile__actions"],["type","submit",1,"user-profile__btn","user-profile__btn--primary",3,"disabled"],["type","button",1,"user-profile__btn",3,"click"],[1,"user-profile__value"],[1,"user-profile__field","user-profile__field--bio"],["type","button",1,"user-profile__btn","user-profile__btn--primary",3,"click"],[1,"user-profile__overrides"],["type","button",1,"user-profile__overrides-toggle",3,"click"],[1,"user-profile__overrides-arrow"],[1,"user-profile__overrides-count"],[1,"user-profile__overrides-empty"],[1,"user-profile__overrides-subtitle"],[1,"user-profile__overrides-list"],[1,"user-profile__overrides-row"],[1,"user-profile__overrides-name"],[1,"user-profile__overrides-subtitle-text"],["type","button",1,"user-profile__overrides-delete"],[1,"user-profile__overrides-confirm-label"],["type","button",1,"user-profile__overrides-delete","user-profile__overrides-delete--confirm",3,"click"],["type","button",1,"user-profile__overrides-delete",3,"click"]],template:function(e,a){if(e&1&&(ws(0,"div",0)(1,"header",1)(2,"ds-icon-button",2),Rg("action",function(){return a.goBack()}),hl(),ws(3,"h1",3),QC(4,"My profile"),hl()(),oC(5,se,2,0,"p",4)(6,Ue,29,1)(7,Te,2,0,"p",4),hl()),e&2){let d;nI(5),iC(a.isLoading()?5:(d=a.currentUser())?6:7,d);}},dependencies:[ni,Jn,Qn,ei,Ye,At,Zn,Xn,En,An,Se$1],styles:[`.user-profile[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:2rem;max-width:560px;margin:0 auto;padding:2rem 1rem}.user-profile__header[_ngcontent-%COMP%]{display:flex;flex-direction:row;align-items:center;gap:.5rem}.user-profile__back[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:.375rem;background:none;border:none;padding:0;cursor:pointer;font-size:.875rem;color:var(--color-accent)}.user-profile__back[_ngcontent-%COMP%]:hover{text-decoration:underline}.user-profile__back-icon[_ngcontent-%COMP%]{font-size:1rem;line-height:1}.user-profile__title[_ngcontent-%COMP%]{margin:0;font-size:1.5rem;font-weight:700;color:var(--color-text);letter-spacing:-.02em}.user-profile__loading[_ngcontent-%COMP%]{color:var(--color-text-secondary);font-size:.9rem;margin:0}.user-profile__view[_ngcontent-%COMP%], .user-profile__form[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:2rem}.user-profile__section[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:1rem}.user-profile__section-title[_ngcontent-%COMP%]{margin:0;font-family:var(--font-heading);font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.12em;color:var(--color-neutral-500);border-bottom:1px solid var(--color-divider);padding-bottom:.5rem}.user-profile__field[_ngcontent-%COMP%]{display:grid;grid-template-columns:140px 1fr;align-items:baseline;gap:.75rem}.user-profile__field--bio[_ngcontent-%COMP%]{align-items:start}.user-profile__label[_ngcontent-%COMP%]{font-size:.875rem;font-weight:500;color:var(--color-text-secondary);white-space:nowrap}.user-profile__value[_ngcontent-%COMP%]{font-size:.9375rem;color:var(--color-text);word-break:break-word;white-space:pre-wrap}.user-profile__value--readonly[_ngcontent-%COMP%]{color:var(--color-text-secondary);font-size:.875rem}.user-profile__segmented[_ngcontent-%COMP%]{display:inline-flex;justify-self:start;border:1px solid var(--color-divider);overflow:hidden}.user-profile__segmented-option[_ngcontent-%COMP%]{padding:.4rem .85rem;background:transparent;border:none;border-right:1px solid var(--color-divider);color:var(--color-text-secondary);font-size:.875rem;cursor:pointer;transition:background .15s ease,color .15s ease}.user-profile__segmented-option[_ngcontent-%COMP%]:last-child{border-right:none}.user-profile__segmented-option[_ngcontent-%COMP%]:hover{background:var(--color-bg-hover)}.user-profile__segmented-option--active[_ngcontent-%COMP%]{background:var(--color-accent);color:#fff}.user-profile__segmented-option--active[_ngcontent-%COMP%]:hover{background:var(--color-accent-700)}.user-profile__field-control[_ngcontent-%COMP%]{display:flex;flex-direction:column;align-items:flex-start;gap:.4rem}.user-profile__hint[_ngcontent-%COMP%]{margin:0;font-size:.8rem;color:var(--color-text-secondary)}.user-profile__select[_ngcontent-%COMP%]{appearance:none;cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%236e6e73' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .75rem center;padding-right:2.25rem}.user-profile__input[_ngcontent-%COMP%]{width:100%;padding:.625rem .875rem;border:1px solid var(--color-divider);background:var(--color-surface);color:var(--color-text);font-size:.9375rem;font-family:inherit;outline:none;box-sizing:border-box;border-radius:0;transition:border-color .15s ease;resize:none}.user-profile__input[_ngcontent-%COMP%]:focus{border-color:var(--color-accent)}.user-profile__input[_ngcontent-%COMP%]::placeholder{color:var(--color-neutral-500)}.user-profile__input--textarea[_ngcontent-%COMP%]{line-height:1.5;resize:vertical}.user-profile__actions[_ngcontent-%COMP%]{display:flex;gap:.75rem;padding-top:.5rem}.user-profile__btn[_ngcontent-%COMP%]{padding:.6rem 1.25rem;border:1px solid var(--color-divider);background:transparent;color:var(--color-text);font-size:13px;font-family:var(--font-heading);font-weight:600;cursor:pointer;border-radius:0;transition:background .15s ease,border-color .15s ease}.user-profile__btn[_ngcontent-%COMP%]:hover:not(:disabled){background:var(--color-bg-hover);border-color:var(--color-neutral-500)}.user-profile__btn[_ngcontent-%COMP%]:disabled{opacity:.45;cursor:not-allowed}.user-profile__btn--primary[_ngcontent-%COMP%]{background:var(--color-accent);border-color:var(--color-accent);color:#fff}.user-profile__btn--primary[_ngcontent-%COMP%]:hover:not(:disabled){background:var(--color-accent-700);border-color:var(--color-accent-700)}.user-profile__theme-variants[_ngcontent-%COMP%]{display:flex;gap:8px;justify-self:start}.user-profile__theme-variant[_ngcontent-%COMP%]{display:flex;flex-direction:column;align-items:flex-start;gap:3px;padding:10px 16px;border:1px solid var(--color-divider);background:transparent;cursor:pointer;min-width:120px;transition:background .12s,border-color .12s}.user-profile__theme-variant[_ngcontent-%COMP%]:hover{background:var(--color-bg-hover);border-color:var(--color-neutral-500)}.user-profile__theme-variant--active[_ngcontent-%COMP%]{border-color:var(--color-accent);background:color-mix(in srgb,var(--color-accent) 8%,transparent)}.user-profile__theme-variant-name[_ngcontent-%COMP%]{font-family:var(--font-heading);font-size:13px;font-weight:600;color:var(--color-text)}.user-profile__theme-variant-desc[_ngcontent-%COMP%]{font-size:11px;color:var(--color-text-secondary);font-family:var(--font-body)}.user-profile__overrides[_ngcontent-%COMP%]{margin-top:1rem;padding-top:1rem;border-top:1px solid var(--color-divider)}.user-profile__overrides-toggle[_ngcontent-%COMP%]{background:transparent;border:none;padding:.25rem 0;font-size:.85rem;color:var(--color-text-secondary);cursor:pointer;display:flex;align-items:center;gap:.4rem}.user-profile__overrides-toggle[_ngcontent-%COMP%]:hover{color:var(--color-text)}.user-profile__overrides-arrow[_ngcontent-%COMP%]{display:inline-block;font-size:.65rem;transition:transform .15s ease}.user-profile__overrides-arrow--open[_ngcontent-%COMP%]{transform:rotate(90deg)}.user-profile__overrides-count[_ngcontent-%COMP%]{color:var(--color-text-tertiary)}.user-profile__overrides-empty[_ngcontent-%COMP%]{font-size:.8rem;color:var(--color-text-secondary);font-style:italic;padding:.5rem 0 0;margin:0}.user-profile__overrides-subtitle[_ngcontent-%COMP%]{font-family:var(--font-heading);font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.12em;color:var(--color-neutral-500);margin:.75rem 0 .25rem}.user-profile__overrides-list[_ngcontent-%COMP%]{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:.25rem}.user-profile__overrides-row[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.5rem;padding:.4rem .5rem;font-size:.85rem;border-radius:0}.user-profile__overrides-row[_ngcontent-%COMP%]:hover{background:var(--color-bg-hover)}.user-profile__overrides-name[_ngcontent-%COMP%]{flex:1;color:var(--color-text);font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.user-profile__overrides-subtitle-text[_ngcontent-%COMP%]{font-size:.75rem;color:var(--color-text-secondary);font-family:var(--font-heading)}.user-profile__overrides-confirm-label[_ngcontent-%COMP%]{font-size:11px;font-family:var(--font-heading);font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--red-deep);white-space:nowrap}.user-profile__overrides-delete[_ngcontent-%COMP%]{background:transparent;border:1px solid transparent;font-size:11px;font-family:var(--font-heading);font-weight:600;color:var(--color-neutral-500);cursor:pointer;padding:3px 8px;border-radius:0;transition:color .12s,background .12s,border-color .12s}.user-profile__overrides-delete[_ngcontent-%COMP%]:hover{color:var(--red);background:color-mix(in srgb,var(--red) 10%,transparent);border-color:var(--red)}.user-profile__overrides-delete--confirm[_ngcontent-%COMP%]{border-color:var(--red);background:var(--red);color:#fff}.user-profile__overrides-delete--confirm[_ngcontent-%COMP%]:hover{background:var(--red-deep);border-color:var(--red-deep)}`]})};
|
|
2
|
-
export{le as UserProfileComponent};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import {O}from'./chunk-BNS6Fgaw.js';import {v}from'./chunk-CPBcDx4G.js';import {g,ao as V,G,w as we,a as Gi,F as F$1,dc as ge$1,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,a4 as aC,a3 as GI,S as Sg,bo as sC,ac as EC,v as bg,a6 as qI,y as uC,a5 as Dl,cH as nC,aa as wf,ab as Cf}from'./main-5PAOSHSM.js';import'./chunk-BY7uKZAo.js';import {o as z,z as ze,k as _t,b as _e$1,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,p as An,q as Ct,V as Vt}from'./chunk-tTmeIHGS.js';import'./chunk-BEUXx3TO.js';import'./chunk-kvCfAm7Z.js';import'./chunk-CtkiOUdU.js';import'./chunk-S8F5_Te_.js';function ce(a,r){a&1&&(ws(0,"p",5),QC(1,"Loading\u2026"),hl());}function me(a,r){if(a&1&&(ws(0,"label",30),Sg(1,"input",31),GI(),ws(2,"span"),QC(3),hl()()),a&2){let e=r.$implicit,l=EC(3);nI(),bg("formControl",l.scopeControl)("value",e.value)("disabled",e.value==="namespace"&&!l.isAdmin()),qI(),nI(2),Yg(e.label);}}function ue(a,r){if(a&1&&(ws(0,"fieldset",8)(1,"legend",24),QC(2,"Port\xE9e de la configuration"),hl(),cC(3,me,4,4,"label",30,nC().trackByScope,true),hl()),a&2){let e=EC(2);bg("disabled",e.isEditMode()),nI(3),uC(e.scopeOptions);}}function ve(a,r){if(a&1&&(ws(0,"option",13),QC(1),hl()),a&2){let e=r.$implicit;bg("value",e),nI(),Yg(e);}}function fe(a,r){if(a&1){let e=gC();ws(0,"div",26),Sg(1,"input",32),GI(),Sg(2,"input",33),GI(),ws(3,"button",34),Rg("click",function(){let s=wf(e).$index,f=EC(2);return Cf(f.removeHeader(s))}),QC(4," \xD7 "),hl()();}if(a&2){let e=r.$index;bg("formGroupName",e),nI(),qI(),nI(),qI();}}function _e(a,r){if(a&1){let e=gC();ws(0,"form",7),Rg("ngSubmit",function(){wf(e);let s=EC();return Cf(s.submit())}),oC(1,ue,5,1,"fieldset",8),ws(2,"div",9)(3,"label",10),QC(4,"API type "),ws(5,"span",11),QC(6,"*"),hl()(),ws(7,"select",12),cC(8,ve,2,2,"option",13,aC),hl(),GI(),hl(),ws(10,"div",9)(11,"label",14),QC(12,"Name "),ws(13,"span",11),QC(14,"*"),hl()(),Sg(15,"input",15),GI(),hl(),ws(16,"div",9)(17,"label",16),QC(18,"Description"),hl(),Sg(19,"input",17),GI(),hl(),ws(20,"div",9)(21,"label",18),QC(22,"Base URL"),hl(),Sg(23,"input",19),GI(),hl(),ws(24,"div",9)(25,"label",20),QC(26,"API key"),hl(),Sg(27,"input",21),GI(),hl(),ws(28,"div",22)(29,"div",23)(30,"span",24),QC(31,"Custom headers"),hl(),ws(32,"button",25),Rg("click",function(){wf(e);let s=EC();return Cf(s.addHeader())}),QC(33,"+ Add header"),hl()(),cC(34,fe,5,1,"div",26,sC),hl(),ws(36,"div",27)(37,"button",28),QC(38),hl(),ws(39,"button",29),Rg("click",function(){wf(e);let s=EC();return Cf(s.cancel())}),QC(40,"Cancel"),hl()()();}if(a&2){let e=EC();bg("formGroup",e.form),nI(),iC(e.isPlatformMode?-1:1),nI(6),bg("formControl",e.apiTypeControl),qI(),nI(),uC(e.apiTypeOptions),nI(7),bg("formControl",e.nameControl),qI(),nI(4),bg("formControl",e.descriptionControl),qI(),nI(4),bg("formControl",e.baseUrlControl),qI(),nI(4),bg("formControl",e.apiKeyControl),qI(),nI(),bg("formArrayName","headers"),nI(6),uC(e.headersArray.controls),nI(3),bg("disabled",e.form.invalid||e.isSubmitting()),nI(),Dl(" ",e.isEditMode()?"Save changes":"Create"," ");}}var ge=new Set(["namespace","userOnNs","userGlobal"]),F=Object.freeze({platform:"Configuration de niveau plateforme",namespace:"Configuration du namespace",userOnNs:"Pour moi sur ce namespace",userGlobal:"Pour moi globalement"}),se=class a{route=g(V);router=g(G);destroyRef=g(we);state=g(O);namespaceRole=g(v);namespaceId=this.route.snapshot.params.namespaceId;isPlatformMode=this.namespaceId===void 0;isAdmin=this.isPlatformMode?Gi(true):F$1(this.namespaceRole.isAdminOfNamespace$(this.namespaceId),{initialValue:false});apiTypeOptions=Object.values(ge$1);scopeOptions=[{value:"namespace",label:F.namespace},{value:"userOnNs",label:F.userOnNs},{value:"userGlobal",label:F.userGlobal}];form=new z({name:new _t("",{nonNullable:true,validators:[_e$1.required,_e$1.minLength(1)]}),description:new _t(null),apiType:new _t("OpenAI",{nonNullable:true,validators:[_e$1.required]}),baseUrl:new _t("",{nonNullable:true}),apiKey:new _t("",{nonNullable:true}),scope:new _t("namespace",{nonNullable:true}),headers:new ze([],{validators:[]})});get nameControl(){return this.form.controls.name}get descriptionControl(){return this.form.controls.description}get apiTypeControl(){return this.form.controls.apiType}get baseUrlControl(){return this.form.controls.baseUrl}get apiKeyControl(){return this.form.controls.apiKey}get scopeControl(){return this.form.controls.scope}get headersArray(){return this.form.controls.headers}addHeader(){this.headersArray.push(new z({key:new _t("",{nonNullable:true,validators:[_e$1.required]}),value:new _t("",{nonNullable:true})}));}removeHeader(r){this.headersArray.removeAt(r);}isEditMode=Gi(false);isSubmitting=Gi(false);isLoading=Gi(false);existingConfig=null;initialApiKey="";constructor(){this.isPlatformMode||Uf(()=>{this.isAdmin()||this.isEditMode()||this.scopeControl.value==="namespace"&&this.scopeControl.setValue("userOnNs");});}ngOnInit(){this.namespaceId&&this.state.setNamespace(this.namespaceId);let r=this.route.snapshot.paramMap,e=this.route.snapshot.queryParamMap,l=r.get("aiProviderId"),s=this.isPlatformMode?"namespace":this.parseScope(e.get("scope"));if(l){this.isEditMode.set(true),this.scopeControl.disable(),this.apiTypeControl.disable(),this.loadConfig(l);return}this.scopeControl.setValue(s);let f=e.get("template");f&&this.hydrateFromTemplate(f);}parseScope(r){return r&&ge.has(r)?r:"namespace"}deriveScopeFromConfig(r){return !r.userId?"namespace":r.namespaceId?"userOnNs":"userGlobal"}loadConfig(r){this.isLoading.set(true),this.state.getById(r).pipe(U(this.destroyRef)).subscribe({next:e=>{this.existingConfig=e,this.scopeControl.setValue(this.deriveScopeFromConfig(e)),this.applyConfigToForm(e),this.isLoading.set(false);},error:()=>{this.isLoading.set(false),console.warn(`[AiProviderForm] Could not load provider '${r}' \u2014 navigating back`),this.navigateBack();}});}hydrateFromTemplate(r){this.isLoading.set(true),this.state.getById(r).pipe(U(this.destroyRef)).subscribe({next:e=>{this.nameControl.setValue(e.name),this.descriptionControl.setValue(e.description??null),this.apiTypeControl.setValue(e.apiType),this.baseUrlControl.setValue(e.baseUrl??""),this.apiKeyControl.setValue(""),this.initialApiKey="",this.apiKeyControl.markAsTouched(),this.isLoading.set(false),this.router.navigate([],{relativeTo:this.route,queryParams:{template:null,templateScope:null},queryParamsHandling:"merge",replaceUrl:true});},error:e=>{console.warn(`[AiProviderForm] Could not hydrate from template ${r}:`,e),this.isLoading.set(false),this.router.navigate([],{relativeTo:this.route,queryParams:{template:null,templateScope:null},queryParamsHandling:"merge",replaceUrl:true});}});}applyConfigToForm(r){this.nameControl.setValue(r.name),this.descriptionControl.setValue(r.description??null),this.apiTypeControl.setValue(r.apiType),this.baseUrlControl.setValue(r.baseUrl??"");let e=r.apiKey??"";this.apiKeyControl.setValue(e),this.initialApiKey=e,this.headersArray.clear();for(let[l,s]of Object.entries(r.headers??{}))this.headersArray.push(new z({key:new _t(l,{nonNullable:true,validators:[_e$1.required]}),value:new _t(s,{nonNullable:true})}));}submit(){if(this.form.invalid||this.isSubmitting())return;if(this.isEditMode()&&!this.existingConfig?.id){this.navigateBack();return}this.isSubmitting.set(true);let r=this.descriptionControl.value?.trim(),e=this.baseUrlControl.value.trim(),l=this.apiKeyControl.value,s=this.isEditMode()&&l===this.initialApiKey?null:l,f=this.headersArray.controls.filter(x=>x.controls.key.value.trim()).map(x=>[x.controls.key.value.trim(),x.controls.value.value]),de=f.length>0?Object.fromEntries(f):null,N={name:this.nameControl.value.trim(),apiType:this.apiTypeControl.value,description:r||null,baseUrl:e||null,apiKey:s,headers:de},T=this.form.getRawValue().scope,pe=this.isPlatformMode?null:this.namespaceId??null;(this.isEditMode()&&this.existingConfig?.id?this.state.update(this.existingConfig.id,N,T,this.existingConfig):this.state.create(N,T,pe)).pipe(U(this.destroyRef)).subscribe({next:()=>this.navigateBack(),error:()=>this.isSubmitting.set(false)});}cancel(){this.navigateBack();}navigateBack(){this.isPlatformMode?this.router.navigate(["/agentos","admin","ai-providers"]):this.router.navigate(["/agentos",this.namespaceId,"ai-providers"]);}trackByScope(r,e){return e.value}static \u0275fac=function(e){return new(e||a)};static \u0275cmp=Fw({type:a,selectors:[["agentos-ai-provider-form"]],decls:10,vars:2,consts:[[1,"ai-provider-form"],[1,"ai-provider-form__header"],["type","button","title","Back to AI providers",1,"ai-provider-form__back",3,"click"],[1,"ai-provider-form__back-icon"],[1,"ai-provider-form__title"],[1,"ai-provider-form__loading"],[1,"ai-provider-form__form",3,"formGroup"],[1,"ai-provider-form__form",3,"ngSubmit","formGroup"],[1,"ai-provider-form__scope",3,"disabled"],[1,"ai-provider-form__field"],["for","llm-api-type",1,"ai-provider-form__label"],["aria-hidden","true"],["id","llm-api-type",1,"ai-provider-form__select",3,"formControl"],[3,"value"],["for","llm-name",1,"ai-provider-form__label"],["id","llm-name","type","text","placeholder","e.g. OpenAI prod","autocomplete","off",1,"ai-provider-form__input",3,"formControl"],["for","llm-description",1,"ai-provider-form__label"],["id","llm-description","type","text","placeholder","Optional \u2014 short description of this provider","autocomplete","off",1,"ai-provider-form__input",3,"formControl"],["for","llm-base-url",1,"ai-provider-form__label"],["id","llm-base-url","type","url","placeholder","Optional \u2014 leave empty for default endpoint","autocomplete","off",1,"ai-provider-form__input",3,"formControl"],["for","llm-api-key",1,"ai-provider-form__label"],["id","llm-api-key","type","password","placeholder","sk-\u2026","autocomplete","new-password",1,"ai-provider-form__input","ai-provider-form__input--secret",3,"formControl"],[1,"ai-provider-form__headers",3,"formArrayName"],[1,"ai-provider-form__headers-title"],[1,"ai-provider-form__label"],["type","button",1,"ai-provider-form__headers-add",3,"click"],[1,"ai-provider-form__header-row",3,"formGroupName"],[1,"ai-provider-form__actions"],["type","submit",1,"ai-provider-form__btn","ai-provider-form__btn--primary",3,"disabled"],["type","button",1,"ai-provider-form__btn",3,"click"],[1,"ai-provider-form__scope-option"],["type","radio",3,"formControl","value","disabled"],["type","text","placeholder","Header name","formControlName","key","autocomplete","off",1,"ai-provider-form__input"],["type","text","placeholder","Value","formControlName","value","autocomplete","off",1,"ai-provider-form__input"],["type","button","title","Remove header","aria-label","Remove header",1,"ai-provider-form__header-remove",3,"click"]],template:function(e,l){e&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," AI Providers "),hl(),ws(6,"h1",4),QC(7),hl()(),oC(8,ce,2,0,"p",5)(9,_e,41,10,"form",6),hl()),e&2&&(nI(7),Yg(l.isEditMode()?"Edit AI provider":"New AI provider"),nI(),iC(l.isLoading()?8:9));},dependencies:[ni,Jn,Qn,ei,Ye,At,mn,Zn,Xn,Cn,En,An,Ct,Vt],styles:[".ai-provider-form[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:2rem;max-width:480px;margin:0 auto;padding:2rem 1rem}.ai-provider-form__scope[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.4rem;border:1px solid var(--color-divider);border-radius:0;padding:.75rem 1rem;margin:0}.ai-provider-form__scope[disabled][_ngcontent-%COMP%]{opacity:.6}.ai-provider-form__scope-option[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.5rem;font-size:.85rem;color:var(--color-text);cursor:pointer}.ai-provider-form__header[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.5rem}.ai-provider-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)}.ai-provider-form__back[_ngcontent-%COMP%]:hover{text-decoration:underline}.ai-provider-form__back-icon[_ngcontent-%COMP%]{font-size:1rem;line-height:1}.ai-provider-form__title[_ngcontent-%COMP%]{margin:0;font-size:1.5rem;font-weight:700;color:var(--color-text);letter-spacing:-.02em}.ai-provider-form__loading[_ngcontent-%COMP%]{color:var(--color-text-secondary);font-size:.9rem;margin:0}.ai-provider-form__form[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:1.25rem}.ai-provider-form__field[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.375rem}.ai-provider-form__label[_ngcontent-%COMP%]{font-size:.875rem;font-weight:500;color:var(--color-text)}.ai-provider-form__input[_ngcontent-%COMP%], .ai-provider-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}.ai-provider-form__input[_ngcontent-%COMP%]:focus, .ai-provider-form__select[_ngcontent-%COMP%]:focus{border-color:var(--color-accent)}.ai-provider-form__input[_ngcontent-%COMP%]::placeholder, .ai-provider-form__select[_ngcontent-%COMP%]::placeholder{color:var(--color-neutral-500)}.ai-provider-form__input--secret[_ngcontent-%COMP%]{font-family:monospace;letter-spacing:.05em}.ai-provider-form__headers[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.5rem}.ai-provider-form__headers-title[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between}.ai-provider-form__headers-add[_ngcontent-%COMP%]{background:none;border:none;padding:0;cursor:pointer;font-size:.8125rem;color:var(--color-accent)}.ai-provider-form__headers-add[_ngcontent-%COMP%]:hover{text-decoration:underline}.ai-provider-form__header-row[_ngcontent-%COMP%]{display:grid;grid-template-columns:1fr 1fr auto;gap:.5rem;align-items:center}.ai-provider-form__header-remove[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:center;width:2rem;height:2rem;background:none;border:1px solid transparent;border-radius:0;cursor:pointer;font-size:1rem;color:var(--color-neutral-500);transition:background .15s ease,color .15s ease,border-color .15s ease;flex-shrink:0}.ai-provider-form__header-remove[_ngcontent-%COMP%]:hover{color:var(--red);background:color-mix(in srgb,var(--red) 10%,transparent);border-color:var(--red)}.ai-provider-form__actions[_ngcontent-%COMP%]{display:flex;gap:.75rem;padding-top:.5rem}.ai-provider-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}.ai-provider-form__btn[_ngcontent-%COMP%]:hover:not(:disabled){background:var(--color-bg-hover);border-color:var(--color-neutral-500)}.ai-provider-form__btn[_ngcontent-%COMP%]:disabled{opacity:.45;cursor:not-allowed}.ai-provider-form__btn--primary[_ngcontent-%COMP%]{background:var(--color-accent);border-color:var(--color-accent);color:#fff}.ai-provider-form__btn--primary[_ngcontent-%COMP%]:hover:not(:disabled){background:var(--color-accent-700);border-color:var(--color-accent-700)}"]})};export{se as AiProviderFormComponent};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import {n as ne}from'./chunk-Dcftf7UY.js';import {g,Z as z$1,_ as Ue,h as Fw,$ as zt,a0 as jt,a1 as Vt,a2 as Nt,i as hr,j as pr,m as ws,Q as QC,n as hl,q as oC,o as Rg,t as nI,A as Ug,a5 as Dl,a8 as Yg,x as iC,v as bg,a9 as gC,ai as em,aa as wf,ac as EC,aj as tT,ab as Cf,a3 as GI,ak as Jg,a6 as qI}from'./main-5PAOSHSM.js';import {y as yt,w as wt,t as ti,Z as Zn,c as cn}from'./chunk-tTmeIHGS.js';function G(c,p){if(c&1){let t=gC();ws(0,"mat-checkbox",5),em("ngModelChange",function(l){wf(t);let f=EC();return tT(f.checkboxChecked,l)||(f.checkboxChecked=l),Cf(l)}),QC(1),hl(),GI();}if(c&2){let t=EC();Jg("ngModel",t.checkboxChecked),qI(),nI(),Yg(t.data.checkboxLabel);}}var z=class c{dialogRef=g(z$1);data=g(Ue);checkboxChecked=false;confirm(){this.dialogRef.close({confirmed:true,checkboxChecked:this.checkboxChecked});}cancel(){this.dialogRef.close({confirmed:false});}static \u0275fac=function(t){return new(t||c)};static \u0275cmp=Fw({type:c,selectors:[["app-confirm-dialog"]],decls:13,vars:8,consts:[["mat-dialog-title",""],[3,"ngModel"],["align","end"],["mat-button","",3,"click"],["mat-flat-button","",3,"click","color"],[3,"ngModelChange","ngModel"]],template:function(t,e){t&1&&(ws(0,"h2",0)(1,"mat-icon"),QC(2,"warning"),hl(),QC(3),hl(),ws(4,"mat-dialog-content")(5,"p"),QC(6),hl(),oC(7,G,2,2,"mat-checkbox",1),hl(),ws(8,"mat-dialog-actions",2)(9,"button",3),Rg("click",function(){return e.cancel()}),QC(10),hl(),ws(11,"button",4),Rg("click",function(){return e.confirm()}),QC(12),hl()()),t&2&&(nI(),Ug("destructive",!!e.data.isDestructive),nI(2),Dl(" ",e.data.title,`
|
|
2
|
-
`),nI(3),Yg(e.data.message),nI(),iC(e.data.checkboxLabel?7:-1),nI(3),Yg(e.data.cancelLabel??"Cancel"),nI(),bg("color",e.data.isDestructive?"warn":"primary"),nI(),Dl(" ",e.data.confirmLabel??"Confirm"," "));},dependencies:[zt,jt,Vt,Nt,hr,pr,yt,wt,ne,ti,Zn,cn],styles:["h2[mat-dialog-title][_ngcontent-%COMP%]{display:flex;align-items:center;gap:.5rem}h2[mat-dialog-title][_ngcontent-%COMP%] mat-icon.destructive[_ngcontent-%COMP%]{color:var(--color-error, #f44336)}mat-dialog-content[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{color:var(--color-text-secondary);line-height:1.5}mat-dialog-content[_ngcontent-%COMP%] mat-checkbox[_ngcontent-%COMP%]{display:block;margin-top:8px;font-size:.875rem}"]})};export{z};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import {c}from'./chunk-CbK5Lcu9.js';import {g,ao as V,G,w as we$1,d8 as B,d9 as He,da as Ce$1,a as Gi,db as xe$1,F,bR as Sd,E as ET,W as Vy,c as U,a7 as va,X as br,z as z$1,b as P,h as Fw,m as ws,o as Rg,Q as QC,n as hl,q as oC,t as nI,a5 as Dl,x as iC,a9 as gC,S as Sg,a3 as GI,r as cC,ac as EC,v as bg,A as Ug,a6 as qI,y as uC,a8 as Yg,aa as wf,ab as Cf,bk as vh}from'./main-5PAOSHSM.js';import {o as z,k as _t,b as _e$1,n as ni,J as Jn,Q as Qn,e as ei,Y as Ye,f as fn,a as wt,A as At,Z as Zn,l as Xn,$ as $t,C as Cn,E as En}from'./chunk-tTmeIHGS.js';var A=(n,t)=>t.value,se=(n,t)=>t.id;function pe(n,t){n&1&&(ws(0,"p",5),QC(1,"Loading\u2026"),hl());}function ue(n,t){n&1&&(ws(0,"span",12),QC(1," Name is required. "),hl());}function fe(n,t){if(n&1&&(ws(0,"p",40),QC(1),hl(),ws(2,"span",13),QC(3,"Agent Config cannot be changed after creation."),hl()),n&2){let e=EC(2);nI(),Yg(e.resolveAgentConfigName(e.agentConfigIdControl.value));}}function _e(n,t){if(n&1&&(ws(0,"a",41),QC(1,"Add an agent config"),hl(),QC(2," first. ")),n&2){let e=EC(3);bg("href","/agentos/"+e.namespaceId+"/agent-configs/new",vh);}}function he(n,t){if(n&1&&(ws(0,"p",13),QC(1," No agent configs available in this scope yet. "),oC(2,_e,3,1),hl()),n&2){let e=EC(2);nI(2),iC(e.isPlatformMode?-1:2);}}function ge(n,t){if(n&1&&(ws(0,"option",23),QC(1),hl()),n&2){let e=t.$implicit;bg("value",e.id),nI(),Yg(e.name);}}function Ce(n,t){n&1&&(ws(0,"span",12),QC(1,"Agent Config is required."),hl());}function ve(n,t){if(n&1&&(ws(0,"select",42)(1,"option",43),QC(2,"Select an agent config\u2026"),hl(),cC(3,ge,2,2,"option",23,se),hl(),GI(),oC(5,Ce,2,0,"span",12),ws(6,"span",13),QC(7,"Immutable after creation."),hl()),n&2){let e=EC(2);bg("formControl",e.agentConfigIdControl),qI(),nI(3),uC(e.availableAgentConfigs()),nI(2),iC(e.agentConfigIdControl.invalid&&e.agentConfigIdControl.touched?5:-1);}}function ye(n,t){n&1&&(ws(0,"span",12),QC(1,"Opening message is required."),hl());}function be(n,t){if(n&1&&(ws(0,"option",23),QC(1),hl()),n&2){let e=t.$implicit;bg("value",e.value),nI(),Yg(e.label);}}function xe(n,t){if(n&1){let e=gC();ws(0,"label",46)(1,"input",47),Rg("change",function(){let h=wf(e).$implicit,P=EC(3);return Cf(P.toggleDay(h.value))}),hl(),ws(2,"span",48),QC(3),hl()();}if(n&2){let e=t.$implicit,l=EC(3);nI(),bg("checked",l.isDaySelected(e.value)),nI(2),Yg(e.label);}}function Se(n,t){if(n&1&&(ws(0,"div",8)(1,"span",44),QC(2,"Days of week"),hl(),ws(3,"div",45),cC(4,xe,4,2,"label",46,A),hl(),ws(6,"span",13),QC(7,"Leave empty to run every day of the week."),hl()()),n&2){let e=EC(2);nI(4),uC(e.dayOptions);}}function Pe(n,t){n&1&&(ws(0,"span",12),QC(1,"Valid time is required (HH:mm)."),hl());}function Ee(n,t){n&1&&(ws(0,"span",12),QC(1,"Start date is required."),hl());}function Me(n,t){if(n&1&&(ws(0,"option",23),QC(1),hl()),n&2){let e=t.$implicit;bg("value",e.value),nI(),Yg(e.label);}}function Oe(n,t){n&1&&(ws(0,"span",12),QC(1,"End date is required."),hl());}function De(n,t){if(n&1&&(ws(0,"div",8)(1,"label",49),QC(2," End date "),ws(3,"span",10),QC(4,"*"),hl()(),Sg(5,"input",50),GI(),oC(6,Oe,2,0,"span",12),hl()),n&2){let e=EC(2);nI(5),Ug("scheduled-prompt-form__input--invalid",e.form.hasError("endDateRequired")&&e.endDateControl.touched),bg("formControl",e.endDateControl),qI(),nI(),iC(e.form.hasError("endDateRequired")&&e.endDateControl.touched?6:-1);}}function Te(n,t){n&1&&(ws(0,"span",12),QC(1,"Must be at least 1."),hl());}function we(n,t){if(n&1&&(ws(0,"div",8)(1,"label",51),QC(2," Number of occurrences "),ws(3,"span",10),QC(4,"*"),hl()(),Sg(5,"input",52),GI(),oC(6,Te,2,0,"span",12),hl()),n&2){let e=EC(2);nI(5),Ug("scheduled-prompt-form__input--invalid",e.form.hasError("occurrenceCountRequired")&&e.occurrenceCountControl.touched),bg("formControl",e.occurrenceCountControl),qI(),nI(),iC(e.form.hasError("occurrenceCountRequired")&&e.occurrenceCountControl.touched?6:-1);}}function ke(n,t){if(n&1&&(ws(0,"p",36),QC(1),hl()),n&2){let e=EC(2);nI(),Yg(e.errorMessage());}}function Fe(n,t){if(n&1){let e=gC();ws(0,"form",7),Rg("ngSubmit",function(){wf(e);let h=EC();return Cf(h.submit())}),ws(1,"div",8)(2,"label",9),QC(3," Name "),ws(4,"span",10),QC(5,"*"),hl()(),Sg(6,"input",11),GI(),oC(7,ue,2,0,"span",12),ws(8,"span",13),QC(9,'Free-form name (e.g. "Weekly Report"). Cannot be changed after creation.'),hl()(),ws(10,"div",8)(11,"label",14),QC(12,"Description"),hl(),Sg(13,"input",15),GI(),hl(),ws(14,"div",8)(15,"label",16),QC(16," Agent Config "),ws(17,"span",10),QC(18,"*"),hl()(),oC(19,fe,4,1)(20,he,3,1,"p",13)(21,ve,8,2),hl(),ws(22,"div",8)(23,"label",17),QC(24," Opening message "),ws(25,"span",10),QC(26,"*"),hl()(),Sg(27,"textarea",18),GI(),oC(28,ye,2,0,"span",12),ws(29,"span",13),QC(30," The message sent to the agent when the scheduled prompt fires. "),hl()(),ws(31,"fieldset",19)(32,"legend",20),QC(33,"Recurrence"),hl(),ws(34,"div",8)(35,"label",21),QC(36," Unit "),ws(37,"span",10),QC(38,"*"),hl()(),ws(39,"select",22),cC(40,be,2,2,"option",23,A),hl(),GI(),hl(),oC(42,Se,8,0,"div",8),ws(43,"div",8)(44,"label",24),QC(45," Time (UTC) "),ws(46,"span",10),QC(47,"*"),hl()(),ws(48,"div",25),Sg(49,"input",26),GI(),ws(50,"span",27),QC(51,"UTC"),hl()(),oC(52,Pe,2,0,"span",12),hl()(),ws(53,"fieldset",19)(54,"legend",20),QC(55,"Planning"),hl(),ws(56,"div",8)(57,"label",28),QC(58," Start date "),ws(59,"span",10),QC(60,"*"),hl()(),Sg(61,"input",29),GI(),oC(62,Ee,2,0,"span",12),hl(),ws(63,"div",8)(64,"label",30),QC(65," Ends "),ws(66,"span",10),QC(67,"*"),hl()(),ws(68,"select",31),cC(69,Me,2,2,"option",23,A),hl(),GI(),hl(),oC(71,De,7,4,"div",8),oC(72,we,7,4,"div",8),hl(),ws(73,"div",8)(74,"label",32),Sg(75,"input",33),GI(),ws(76,"span",34),QC(77,"Enabled"),hl()(),ws(78,"p",35),QC(79," When disabled, the scheduled prompt is saved but will not run on schedule. "),hl()(),oC(80,ke,2,1,"p",36),ws(81,"div",37)(82,"button",38),QC(83),hl(),ws(84,"button",39),Rg("click",function(){wf(e);let h=EC();return Cf(h.cancel())}),QC(85,"Cancel"),hl()()();}if(n&2){let e=EC();bg("formGroup",e.form),nI(6),Ug("scheduled-prompt-form__input--invalid",e.nameControl.invalid&&e.nameControl.touched),bg("formControl",e.nameControl),qI(),nI(),iC(e.nameControl.invalid&&e.nameControl.touched?7:-1),nI(6),bg("formControl",e.descriptionControl),qI(),nI(6),iC(e.isEditMode()?19:e.availableAgentConfigs().length===0?20:21),nI(8),Ug("scheduled-prompt-form__textarea--invalid",e.promptContentControl.invalid&&e.promptContentControl.touched),bg("formControl",e.promptContentControl),qI(),nI(),iC(e.promptContentControl.invalid&&e.promptContentControl.touched?28:-1),nI(11),bg("formControl",e.unitControl),qI(),nI(),uC(e.schedulerUnits),nI(2),iC(e.showDayFilter()?42:-1),nI(7),bg("formControl",e.timeUtcControl),qI(),nI(3),iC(e.timeUtcControl.invalid&&e.timeUtcControl.touched?52:-1),nI(9),Ug("scheduled-prompt-form__input--invalid",e.startDateControl.invalid&&e.startDateControl.touched),bg("formControl",e.startDateControl),qI(),nI(),iC(e.startDateControl.invalid&&e.startDateControl.touched?62:-1),nI(6),bg("formControl",e.endTypeControl),qI(),nI(),uC(e.endTypes),nI(2),iC(e.showEndDate()?71:-1),nI(),iC(e.showOccurrenceCount()?72:-1),nI(3),bg("formControl",e.enabledControl),qI(),nI(5),iC(e.errorMessage()?80:-1),nI(2),bg("disabled",e.form.invalid||e.isSubmitting()),nI(),Dl(" ",e.isEditMode()?"Save changes":"Create scheduled prompt"," ");}}var me=class n{route=g(V);router=g(G);destroyRef=g(we$1);state=g(c);agentConfigController=g(B);namespaceId=this.route.snapshot.params.namespaceId;isPlatformMode=!this.namespaceId;form=new z({name:new _t("",{nonNullable:true,validators:[_e$1.required]}),description:new _t(null),agentConfigId:new _t("",{nonNullable:true,validators:[_e$1.required]}),promptContent:new _t("",{nonNullable:true,validators:[_e$1.required]}),unit:new _t(Ce$1.WEEK,{nonNullable:true,validators:[_e$1.required]}),days:new _t([],{nonNullable:true}),timeUtc:new _t("09:00",{nonNullable:true,validators:[_e$1.required,_e$1.pattern(/^([01]\d|2[0-3]):[0-5]\d$/)]}),startDate:new _t("",{nonNullable:true,validators:[_e$1.required]}),endType:new _t(He.NEVER,{nonNullable:true,validators:[_e$1.required]}),endDate:new _t(null),occurrenceCount:new _t(null),enabled:new _t(true,{nonNullable:true})},{validators:[Ne,Ie]});get nameControl(){return this.form.controls.name}get descriptionControl(){return this.form.controls.description}get agentConfigIdControl(){return this.form.controls.agentConfigId}get promptContentControl(){return this.form.controls.promptContent}get unitControl(){return this.form.controls.unit}get daysControl(){return this.form.controls.days}get timeUtcControl(){return this.form.controls.timeUtc}get startDateControl(){return this.form.controls.startDate}get endTypeControl(){return this.form.controls.endType}get endDateControl(){return this.form.controls.endDate}get occurrenceCountControl(){return this.form.controls.occurrenceCount}get enabledControl(){return this.form.controls.enabled}isEditMode=Gi(false);isSubmitting=Gi(false);isLoading=Gi(false);errorMessage=Gi(null);SchedulerUnit=Ce$1;SchedulerEndType=He;schedulerUnits=[{value:Ce$1.WEEK,label:"Week(s)"},{value:Ce$1.MONTH,label:"Month(s)"}];endTypes=[{value:He.NEVER,label:"Never"},{value:He.ON_DATE,label:"On date"},{value:He.OCCURRENCES,label:"After N occurrences"}];dayOptions=Object.entries(xe$1).map(([t,e])=>({value:t,label:e}));unitSignal=F(this.unitControl.valueChanges.pipe(Sd(this.unitControl.value)));endTypeSignal=F(this.endTypeControl.valueChanges.pipe(Sd(this.endTypeControl.value)));showDayFilter=ET(()=>this.unitSignal()===Ce$1.WEEK);showEndDate=ET(()=>this.endTypeSignal()===He.ON_DATE);showOccurrenceCount=ET(()=>this.endTypeSignal()===He.OCCURRENCES);agentConfigs=Gi([]);availableAgentConfigs=this.agentConfigs.asReadonly();existingPrompt=null;ngOnInit(){this.startDateControl.setValue(Ve());let t=this.route.snapshot.paramMap.get("scheduledPromptId");t?(this.isEditMode.set(true),this.loadPromptAndResources(t)):this.loadResources();}loadPromptAndResources(t){this.isLoading.set(true),Vy({prompt:this.state.getById(t),agentConfigs:this.agentConfigs$()}).pipe(U(this.destroyRef)).subscribe({next:({prompt:e,agentConfigs:l})=>{this.existingPrompt=e,this.agentConfigs.set(l),this.hydrateForm(e),this.isLoading.set(false);},error:()=>{this.isLoading.set(false),this.navigateBack();}});}loadResources(){this.agentConfigs$().pipe(U(this.destroyRef)).subscribe(t=>this.agentConfigs.set(t));}agentConfigs$(){return (this.isPlatformMode?this.agentConfigController.listPlatformAgentsAgentConfig():this.agentConfigController.listByParentAgentConfig(this.namespaceId)).pipe(va(()=>br([])))}hydrateForm(t){this.nameControl.setValue(t.name),this.descriptionControl.setValue(t.description??null),this.agentConfigIdControl.setValue(t.agentConfigId),this.promptContentControl.setValue(t.promptContent),this.unitControl.setValue(t.recurrence.unit),this.daysControl.setValue(t.recurrence.days??[]),this.timeUtcControl.setValue(t.recurrence.timeUtc),this.startDateControl.setValue(t.planning.startDate),this.endTypeControl.setValue(t.planning.endType),this.endDateControl.setValue(t.planning.endDate??null),this.occurrenceCountControl.setValue(t.planning.maxOccurrenceCount??null),this.enabledControl.setValue(t.enabled);}isDaySelected(t){return this.daysControl.value.includes(t)}toggleDay(t){let e=this.daysControl.value,l=e.includes(t)?e.filter(h=>h!==t):[...e,t];this.daysControl.setValue(l);}resolveAgentConfigName(t){return this.agentConfigs().find(e=>e.id===t)?.name??t}submit(){if(this.form.invalid||this.isSubmitting())return;this.isSubmitting.set(true),this.errorMessage.set(null);let t=this.isEditMode()&&!!this.existingPrompt?.id,e=this.endTypeControl.value,l=z$1(P({},this.existingPrompt??{}),{namespaceId:this.namespaceId??null,name:this.nameControl.value.trim(),description:this.descriptionControl.value?.trim()||void 0,agentConfigId:t?this.existingPrompt.agentConfigId:this.agentConfigIdControl.value,promptContent:this.promptContentControl.value.trim(),recurrence:{unit:this.unitControl.value,days:this.daysControl.value,timeUtc:this.timeUtcControl.value},planning:{startDate:this.startDateControl.value,endType:e,endDate:e===He.ON_DATE?this.endDateControl.value??void 0:void 0,maxOccurrenceCount:e===He.OCCURRENCES?this.occurrenceCountControl.value??void 0:void 0},enabled:this.enabledControl.value});(t?this.state.update(this.existingPrompt.id,l):this.state.create(l)).pipe(U(this.destroyRef)).subscribe({next:()=>this.navigateBack(),error:P=>{this.isSubmitting.set(false),P.status===409?this.errorMessage.set(`A scheduled prompt named "${l.name}" already exists in this scope.`):P.status===400?this.errorMessage.set(P.error?.message??"Invalid scheduled prompt data."):this.errorMessage.set("An unexpected error occurred. Please try again.");}});}cancel(){this.navigateBack();}navigateBack(){this.isPlatformMode?this.router.navigate(["/agentos","admin","scheduled-prompts"]):this.router.navigate(["/agentos",this.namespaceId,"scheduled-prompts"]);}static \u0275fac=function(e){return new(e||n)};static \u0275cmp=Fw({type:n,selectors:[["agentos-scheduled-prompt-form"]],decls:10,vars:3,consts:[[1,"scheduled-prompt-form"],[1,"scheduled-prompt-form__header"],["type","button","title","Back to scheduled prompts",1,"scheduled-prompt-form__back",3,"click"],[1,"scheduled-prompt-form__back-icon"],[1,"scheduled-prompt-form__title"],[1,"scheduled-prompt-form__loading"],[1,"scheduled-prompt-form__form",3,"formGroup"],[1,"scheduled-prompt-form__form",3,"ngSubmit","formGroup"],[1,"scheduled-prompt-form__field"],["for","sp-name",1,"scheduled-prompt-form__label"],["aria-hidden","true"],["id","sp-name","type","text","placeholder","e.g. Weekly Report","autocomplete","off",1,"scheduled-prompt-form__input",3,"formControl"],[1,"scheduled-prompt-form__field-error"],[1,"scheduled-prompt-form__field-hint"],["for","sp-description",1,"scheduled-prompt-form__label"],["id","sp-description","type","text","placeholder","Optional \u2014 short description","autocomplete","off",1,"scheduled-prompt-form__input",3,"formControl"],["for","sp-agent-config",1,"scheduled-prompt-form__label"],["for","sp-prompt-content",1,"scheduled-prompt-form__label"],["id","sp-prompt-content","rows","6","placeholder","Enter the message sent to the agent when the scheduled prompt fires\u2026",1,"scheduled-prompt-form__textarea",3,"formControl"],[1,"scheduled-prompt-form__fieldset"],[1,"scheduled-prompt-form__legend"],["for","sp-unit",1,"scheduled-prompt-form__label"],["id","sp-unit",1,"scheduled-prompt-form__select",3,"formControl"],[3,"value"],["for","sp-time",1,"scheduled-prompt-form__label"],[1,"scheduled-prompt-form__time-wrapper"],["id","sp-time","type","time",1,"scheduled-prompt-form__input","scheduled-prompt-form__input--time",3,"formControl"],[1,"scheduled-prompt-form__utc-badge"],["for","sp-start-date",1,"scheduled-prompt-form__label"],["id","sp-start-date","type","date",1,"scheduled-prompt-form__input",3,"formControl"],["for","sp-end-type",1,"scheduled-prompt-form__label"],["id","sp-end-type",1,"scheduled-prompt-form__select",3,"formControl"],[1,"scheduled-prompt-form__toggle-label"],["type","checkbox",1,"scheduled-prompt-form__toggle-checkbox",3,"formControl"],[1,"scheduled-prompt-form__toggle-text"],[1,"scheduled-prompt-form__toggle-hint"],[1,"scheduled-prompt-form__error"],[1,"scheduled-prompt-form__actions"],["type","submit",1,"scheduled-prompt-form__btn","scheduled-prompt-form__btn--primary",3,"disabled"],["type","button",1,"scheduled-prompt-form__btn",3,"click"],[1,"scheduled-prompt-form__readonly-value"],[3,"href"],["id","sp-agent-config",1,"scheduled-prompt-form__select",3,"formControl"],["value","","disabled",""],[1,"scheduled-prompt-form__label"],[1,"scheduled-prompt-form__day-grid"],[1,"scheduled-prompt-form__day-label"],["type","checkbox",1,"scheduled-prompt-form__day-checkbox",3,"change","checked"],[1,"scheduled-prompt-form__day-text"],["for","sp-end-date",1,"scheduled-prompt-form__label"],["id","sp-end-date","type","date",1,"scheduled-prompt-form__input",3,"formControl"],["for","sp-occurrence-count",1,"scheduled-prompt-form__label"],["id","sp-occurrence-count","type","number","min","1",1,"scheduled-prompt-form__input","scheduled-prompt-form__input--number",3,"formControl"]],template:function(e,l){e&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),hl(),ws(6,"h1",4),QC(7),hl()(),oC(8,pe,2,0,"p",5)(9,Fe,86,26,"form",6),hl()),e&2&&(nI(5),Dl(" ",l.isPlatformMode?"Platform Scheduled Prompts":"Scheduled Prompts"," "),nI(2),Dl(" ",l.isEditMode()?"Edit scheduled prompt":"New scheduled prompt"," "),nI(),iC(l.isLoading()?8:9));},dependencies:[ni,Jn,Qn,ei,Ye,fn,wt,At,Zn,Xn,$t,Cn,En],styles:[".scheduled-prompt-form[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:2rem;max-width:560px;margin:0 auto;padding:2rem 1rem}.scheduled-prompt-form__header[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.5rem}.scheduled-prompt-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-primary, #007aff);font-family:inherit}.scheduled-prompt-form__back[_ngcontent-%COMP%]:hover{text-decoration:underline}.scheduled-prompt-form__back-icon[_ngcontent-%COMP%]{font-size:1rem;line-height:1}.scheduled-prompt-form__title[_ngcontent-%COMP%]{margin:0;font-size:1.5rem;font-weight:600;color:var(--color-text, #1d1d1f);letter-spacing:-.02em}.scheduled-prompt-form__loading[_ngcontent-%COMP%]{color:var(--color-text-secondary, #6e6e73);font-size:.9rem;margin:0}.scheduled-prompt-form__form[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:1.25rem}.scheduled-prompt-form__field[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.375rem}.scheduled-prompt-form__row[_ngcontent-%COMP%]{display:grid;grid-template-columns:1fr 1fr;gap:1rem}.scheduled-prompt-form__label[_ngcontent-%COMP%]{font-size:.875rem;font-weight:500;color:var(--color-text, #1d1d1f)}.scheduled-prompt-form__input[_ngcontent-%COMP%], .scheduled-prompt-form__select[_ngcontent-%COMP%], .scheduled-prompt-form__textarea[_ngcontent-%COMP%]{width:100%;padding:.625rem .875rem;border-radius:8px;border:1px solid var(--color-border, rgba(0, 0, 0, .1));background:transparent;color:var(--color-text, #1d1d1f);font-size:.9375rem;font-family:inherit;outline:none;box-sizing:border-box;transition:border-color .15s ease}.scheduled-prompt-form__input[_ngcontent-%COMP%]:focus, .scheduled-prompt-form__select[_ngcontent-%COMP%]:focus, .scheduled-prompt-form__textarea[_ngcontent-%COMP%]:focus{border-color:var(--color-primary, #007aff)}.scheduled-prompt-form__input[_ngcontent-%COMP%]::placeholder, .scheduled-prompt-form__select[_ngcontent-%COMP%]::placeholder, .scheduled-prompt-form__textarea[_ngcontent-%COMP%]::placeholder{color:var(--color-text-secondary, #6e6e73)}.scheduled-prompt-form__select[_ngcontent-%COMP%]{cursor:pointer;appearance:auto}.scheduled-prompt-form__textarea[_ngcontent-%COMP%]{resize:vertical;min-height:100px;line-height:1.5}.scheduled-prompt-form__input--time[_ngcontent-%COMP%]{flex:1;min-width:0}.scheduled-prompt-form__input--number[_ngcontent-%COMP%]{max-width:120px}.scheduled-prompt-form__time-wrapper[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.5rem}.scheduled-prompt-form__utc-badge[_ngcontent-%COMP%]{flex-shrink:0;font-size:.75rem;font-weight:600;font-family:monospace;color:var(--color-text-secondary, #6e6e73);background:var(--color-surface, rgba(0, 0, 0, .05));padding:.25rem .5rem;border-radius:4px;text-transform:uppercase;letter-spacing:.06em}.scheduled-prompt-form__fieldset[_ngcontent-%COMP%]{border:1px solid var(--color-border, rgba(0, 0, 0, .1));border-radius:8px;padding:1rem 1.25rem 1.25rem;margin:0;display:flex;flex-direction:column;gap:1.25rem}.scheduled-prompt-form__legend[_ngcontent-%COMP%]{font-size:.8125rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--color-text-secondary, #6e6e73);padding:0 .375rem}.scheduled-prompt-form__day-grid[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:.5rem}.scheduled-prompt-form__day-label[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.375rem;cursor:pointer;-webkit-user-select:none;user-select:none}.scheduled-prompt-form__day-checkbox[_ngcontent-%COMP%]{width:1rem;height:1rem;flex-shrink:0;accent-color:var(--color-primary, #007aff);cursor:pointer}.scheduled-prompt-form__day-text[_ngcontent-%COMP%]{font-size:.875rem;color:var(--color-text, #1d1d1f)}.scheduled-prompt-form__hint[_ngcontent-%COMP%]{margin:0;font-size:.875rem;color:var(--color-text-secondary, #6e6e73)}.scheduled-prompt-form__hint[_ngcontent-%COMP%] a[_ngcontent-%COMP%]{color:var(--color-primary, #007aff);text-decoration:none}.scheduled-prompt-form__hint[_ngcontent-%COMP%] a[_ngcontent-%COMP%]:hover{text-decoration:underline}.scheduled-prompt-form__error[_ngcontent-%COMP%]{font-size:.8rem;color:var(--color-error, #ff3b30);margin:0}.scheduled-prompt-form__field-error[_ngcontent-%COMP%]{font-size:.8rem;color:var(--color-error, #ff3b30)}.scheduled-prompt-form__field-hint[_ngcontent-%COMP%]{font-size:.8rem;color:var(--color-text-secondary, #6e6e73);line-height:1.4}.scheduled-prompt-form__field-hint[_ngcontent-%COMP%] a[_ngcontent-%COMP%]{color:var(--color-primary, #007aff);text-decoration:none}.scheduled-prompt-form__field-hint[_ngcontent-%COMP%] a[_ngcontent-%COMP%]:hover{text-decoration:underline}.scheduled-prompt-form__readonly-value[_ngcontent-%COMP%]{margin:0;font-size:.9375rem;color:var(--color-text, #1d1d1f);padding:.625rem .875rem;border-radius:8px;border:1px solid var(--color-border, rgba(0, 0, 0, .08));background:var(--color-surface, rgba(0, 0, 0, .03))}.scheduled-prompt-form__input--invalid[_ngcontent-%COMP%], .scheduled-prompt-form__textarea--invalid[_ngcontent-%COMP%]{border-color:var(--color-error, #ff3b30)}.scheduled-prompt-form__toggle-label[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.5rem;cursor:pointer;-webkit-user-select:none;user-select:none}.scheduled-prompt-form__toggle-checkbox[_ngcontent-%COMP%]{width:1rem;height:1rem;flex-shrink:0;accent-color:var(--color-primary, #007aff);cursor:pointer}.scheduled-prompt-form__toggle-text[_ngcontent-%COMP%]{font-size:.9rem;font-weight:500;color:var(--color-text, #1d1d1f)}.scheduled-prompt-form__toggle-hint[_ngcontent-%COMP%]{margin:.25rem 0 0 1.5rem;font-size:.8rem;color:var(--color-text-secondary, #6e6e73);line-height:1.4}.scheduled-prompt-form__actions[_ngcontent-%COMP%]{display:flex;gap:.75rem;padding-top:.5rem}.scheduled-prompt-form__btn[_ngcontent-%COMP%]{padding:.6rem 1.25rem;border-radius:8px;border:1px solid var(--color-border, rgba(0, 0, 0, .1));background:transparent;color:var(--color-text, #1d1d1f);font-size:.9375rem;font-family:inherit;cursor:pointer;transition:background .15s ease,border-color .15s ease}.scheduled-prompt-form__btn[_ngcontent-%COMP%]:hover:not(:disabled){background:var(--color-surface-hover, rgba(0, 0, 0, .04))}.scheduled-prompt-form__btn[_ngcontent-%COMP%]:disabled{opacity:.45;cursor:not-allowed}.scheduled-prompt-form__btn--primary[_ngcontent-%COMP%]{background:var(--color-primary, #007aff);border-color:var(--color-primary, #007aff);color:#fff}.scheduled-prompt-form__btn--primary[_ngcontent-%COMP%]:hover:not(:disabled){background:var(--color-primary-hover, #0051d5);border-color:var(--color-primary-hover, #0051d5)}"]})};function Ne(n){let t=n.get("endType")?.value,e=n.get("endDate")?.value;return t===He.ON_DATE&&!e?{endDateRequired:true}:null}function Ie(n){let t=n.get("endType")?.value,e=n.get("occurrenceCount")?.value;return t===He.OCCURRENCES&&(e==null||e<1)?{occurrenceCountRequired:true}:null}function Ve(){let n=new Date,t=n.getFullYear(),e=String(n.getMonth()+1).padStart(2,"0"),l=String(n.getDate()).padStart(2,"0");return `${t}-${e}-${l}`}export{me as ScheduledPromptFormComponent};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import {N}from'./chunk-Be1LOFvg.js';import {g,ao as V,G,w as we,d8 as B,dl as G$1,d6 as F,a as Gi,W as Vy,X as br,c as U,u as ue$1,a7 as va,z as z$1,b as P,h as Fw,s as si,m as ws,o as Rg,Q as QC,n as hl,q as oC,t as nI,a8 as Yg,x as iC,ac as EC,v as bg,a9 as gC,S as Sg,a3 as GI,a6 as qI,a5 as Dl,r as cC,y as uC,bo as sC,aa as wf,ab as Cf,T as Tg}from'./main-5PAOSHSM.js';import'./chunk-BY7uKZAo.js';import {o as z,k as _t,b as _e$1,n as ni,J as Jn,Q as Qn,e as ei,Y as Ye,a as wt,Z as Zn,l as Xn,C as Cn,E as En}from'./chunk-tTmeIHGS.js';import'./chunk-BEUXx3TO.js';import'./chunk-kvCfAm7Z.js';import'./chunk-CtkiOUdU.js';import'./chunk-S8F5_Te_.js';var le=(r,t)=>t.config.id,ce=(r,t)=>t.type;function ge(r,t){if(r&1&&(ws(0,"a",5),QC(1,"View resolved definition \u2192"),hl()),r&2){let e=EC();bg("routerLink",e.inspectRoute());}}function se(r,t){r&1&&(ws(0,"span",6),QC(1,"Platform level"),hl());}function de(r,t){r&1&&(ws(0,"p",7),QC(1,"Loading\u2026"),hl());}function me(r,t){if(r&1&&(ws(0,"span",41),QC(1),hl()),r&2){let e=EC().$implicit;nI(),Yg(e.config.integrationType);}}function fe(r,t){if(r&1&&(Sg(0,"input",42),GI()),r&2){let e=EC().$implicit;bg("formControl",e.toolsControl),qI();}}function pe(r,t){if(r&1){let e=gC();ws(0,"div",37)(1,"label",38)(2,"input",39),Rg("change",function(){let l=wf(e).$implicit,g=EC(3);return Cf(g.toggleIntegration(l))}),hl(),ws(3,"span",40),QC(4),hl(),oC(5,me,2,1,"span",41),hl(),oC(6,fe,1,1,"input",42),hl();}if(r&2){let e=t.$implicit;nI(2),bg("checked",e.enabled()),nI(2),Yg(e.config.name),nI(),iC(e.config.integrationType?5:-1),nI(),iC(e.enabled()?6:-1);}}function _e(r,t){if(r&1&&(ws(0,"p",48),QC(1),hl()),r&2){let e=EC().$implicit;nI(),Dl(" Restricted to: ",e.restrictedTools.join(", ")," (set outside this form, preserved on save) ");}}function ue(r,t){if(r&1){let e=gC();ws(0,"div",37)(1,"label",38)(2,"span",40),QC(3),hl(),ws(4,"span",41),QC(5,"built-in"),hl()(),ws(6,"select",44),Rg("change",function(l){let g=wf(e).$implicit,m=EC(4);return Cf(m.setBuiltInState(g,l.target.value))}),ws(7,"option",45),QC(8),hl(),ws(9,"option",46),QC(10,"Enabled"),hl(),ws(11,"option",47),QC(12,"Disabled"),hl()(),oC(13,_e,2,1,"p",48),ws(14,"p",49),QC(15),hl()();}if(r&2){let e=t.$implicit,o=EC(4);nI(),Tg("for","built-in-"+e.type),nI(2),Yg(e.displayName),nI(3),bg("id","built-in-"+e.type)("value",e.state()),nI(2),Yg(o.builtInDefaultLabel(e)),nI(5),iC(e.state()==="on"&&e.restrictedTools?13:-1),nI(2),Yg(e.description);}}function be(r,t){if(r&1&&(ws(0,"p",43),QC(1,"Built-in integrations"),hl(),cC(2,ue,16,7,"div",37,ce)),r&2){let e=EC(3);nI(2),uC(e.builtInRows());}}function Ce(r,t){if(r&1&&(ws(0,"fieldset",20)(1,"legend",25),QC(2,"Integrations"),hl(),ws(3,"p",36),QC(4," Select which integrations this agent can use. Leave tool names empty to allow all tools from an integration. "),hl(),cC(5,pe,7,4,"div",37,le),oC(7,be,4,0),hl()),r&2){let e=EC(2);nI(5),uC(e.integrationRows()),nI(2),iC(e.builtInRows().length>0?7:-1);}}function xe(r,t){if(r&1){let e=gC();ws(0,"li",50),Sg(1,"input",51),GI(),ws(2,"button",52),Rg("click",function(){let l=wf(e).$implicit,g=EC(3);return Cf(g.removeSubAgent(l))}),QC(3," \u{1F5D1} "),hl()();}if(r&2){let e=t.$implicit;nI(),bg("formControl",e.control),qI();}}function ye(r,t){if(r&1&&(ws(0,"ul",28),cC(1,xe,4,1,"li",50,sC),hl()),r&2){let e=EC(2);nI(),uC(e.subAgentRows());}}function he(r,t){if(r&1){let e=gC();ws(0,"button",53),Rg("click",function(){wf(e);let l=EC(2);return Cf(l.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 ve(r,t){if(r&1){let e=gC();ws(0,"form",9),Rg("ngSubmit",function(){wf(e);let l=EC();return Cf(l.submit())}),ws(1,"div",10)(2,"label",11),QC(3,"Name "),ws(4,"span",12),QC(5,"*"),hl()(),Sg(6,"input",13),GI(),hl(),ws(7,"div",10)(8,"label",14),QC(9,"Description"),hl(),Sg(10,"input",15),GI(),hl(),ws(11,"div",10)(12,"label",16),QC(13,"Model name"),hl(),Sg(14,"input",17),GI(),hl(),ws(15,"div",10)(16,"label",18),QC(17,"Instructions"),hl(),Sg(18,"textarea",19),GI(),hl(),oC(19,Ce,8,1,"fieldset",20),ws(20,"div",10)(21,"label",21),Sg(22,"input",22),GI(),ws(23,"span",23),QC(24,"Advanced mode"),hl()(),ws(25,"p",24),QC(26," When enabled, this agent uses a multi-step reasoning loop instead of a single LLM call. "),hl()(),ws(27,"div",10)(28,"label",21),Sg(29,"input",22),GI(),ws(30,"span",23),QC(31,"Enabled"),hl()(),ws(32,"p",24),QC(33,"Disabled agents are excluded from namespace resolution."),hl()(),ws(34,"div",10)(35,"span",25),QC(36,"Sub-agents"),hl(),ws(37,"p",26),QC(38," Glob patterns for agents this agent may delegate to. "),ws(39,"code",27),QC(40,"*"),hl(),QC(41," matches any sequence of characters (e.g.\xA0"),ws(42,"code",27),QC(43,"*Fixer"),hl(),QC(44,", "),ws(45,"code",27),QC(46,"*"),hl(),QC(47," for all). Leave empty to disable delegation. "),hl(),oC(48,ye,3,0,"ul",28),ws(49,"div",29)(50,"input",30),Rg("keydown.enter",function(){wf(e);let l=EC();return Cf(l.addSubAgent())}),hl(),GI(),ws(51,"button",31),Rg("click",function(){wf(e);let l=EC();return Cf(l.addSubAgent())}),QC(52," + "),hl()()(),ws(53,"div",32)(54,"button",33),QC(55),hl(),oC(56,he,2,2,"button",34),ws(57,"button",35),Rg("click",function(){wf(e);let l=EC();return Cf(l.cancel())}),QC(58,"Cancel"),hl()()();}if(r&2){let e=EC();bg("formGroup",e.form),nI(6),bg("formControl",e.nameControl),qI(),nI(4),bg("formControl",e.descriptionControl),qI(),nI(4),bg("formControl",e.modelNameControl),qI(),nI(4),bg("formControl",e.instructionsControl),qI(),nI(),iC(e.integrationRows().length>0||e.builtInRows().length>0?19:-1),nI(3),bg("formControl",e.advancedExecutionControl),qI(),nI(7),bg("formControl",e.enabledControl),qI(),nI(19),iC(e.subAgentRows().length>0?48:-1),nI(2),bg("formControl",e.newSubAgentControl),qI(),nI(),bg("disabled",!e.newSubAgentControl.value.trim()),nI(3),bg("disabled",e.form.invalid||e.isSubmitting()),nI(),Dl(" ",e.isEditMode()?"Save changes":"Create"," "),nI(),iC(e.isEditMode()?56:-1);}}var ae=class r{route=g(V);router=g(G);destroyRef=g(we);agentConfigController=g(B);exportService=g(G$1);integrationConfigState=g(N);integrationTypeController=g(F);namespaceId=this.route.snapshot.params.namespaceId;isPlatformMode=!this.namespaceId;form=new z({name:new _t("",{nonNullable:true,validators:[_e$1.required,_e$1.minLength(1)]}),description:new _t(null),modelName:new _t(null),instructions:new _t(null),advancedExecution:new _t(false,{nonNullable:true}),enabled:new _t(false,{nonNullable:true})});get nameControl(){return this.form.controls.name}get descriptionControl(){return this.form.controls.description}get modelNameControl(){return this.form.controls.modelName}get instructionsControl(){return this.form.controls.instructions}get advancedExecutionControl(){return this.form.controls.advancedExecution}get enabledControl(){return this.form.controls.enabled}subAgentRows=Gi([]);newSubAgentControl=new _t("",{nonNullable:true});isEditMode=Gi(false);isSubmitting=Gi(false);isLoading=Gi(false);isExporting=Gi(false);builtInRows=Gi([]);inspectRoute(){let t=this.route.snapshot.paramMap.get("agentConfigId")??"";return this.isPlatformMode?["/agentos","admin","agent-configs",t,"inspect"]:["/agentos",this.namespaceId,"agent-configs",t,"inspect"]}integrationRows=Gi([]);existingConfig=null;ngOnInit(){let t=this.route.snapshot.paramMap.get("agentConfigId");t?(this.isEditMode.set(true),this.loadConfigAndIntegrations(t)):this.loadIntegrations(void 0);}loadConfigAndIntegrations(t){this.isLoading.set(true),Vy({config:this.agentConfigController.getByIdAgentConfig(t),namespaceIntegrations:this.namespaceId?this.integrationConfigState.loadNamespaceConfigs(this.namespaceId):br([]),platformIntegrations:this.integrationConfigState.loadPlatformConfigs(),builtInTypes:this.loadBuiltInTypes()}).pipe(U(this.destroyRef)).subscribe({next:({config:e,namespaceIntegrations:o,platformIntegrations:l,builtInTypes:g})=>{this.existingConfig=e,this.nameControl.setValue(e.name),this.descriptionControl.setValue(e.description??null),this.modelNameControl.setValue(e.modelName??null),this.instructionsControl.setValue(e.instructions??null),this.advancedExecutionControl.setValue(e.advancedExecution??false),this.enabledControl.setValue(e.enabled??true);let m=[...l,...o];this.integrationRows.set(this.buildIntegrationRows(m,e.integrations??void 0)),this.builtInRows.set(this.buildBuiltInRows(g,e.integrations??void 0)),this.subAgentRows.set((e.subAgents??[]).map(P=>({control:new _t(P,{nonNullable:true})}))),this.isLoading.set(false);},error:()=>{this.isLoading.set(false),this.navigateBack();}});}loadIntegrations(t){Vy({namespaceIntegrations:this.namespaceId?this.integrationConfigState.loadNamespaceConfigs(this.namespaceId):br([]),platformIntegrations:this.integrationConfigState.loadPlatformConfigs(),builtInTypes:this.loadBuiltInTypes()}).pipe(U(this.destroyRef)).subscribe({next:({namespaceIntegrations:e,platformIntegrations:o,builtInTypes:l})=>{let g=[...o,...e];this.integrationRows.set(this.buildIntegrationRows(g,t??void 0)),this.builtInRows.set(this.buildBuiltInRows(l,t??void 0));}});}loadBuiltInTypes(){return this.integrationTypeController.listTypesIntegrationType().pipe(ue$1(t=>t.filter(e=>!e.configSchema)),va(t=>(console.error("[agent-config-form] failed to load integration types",t),br([]))))}buildIntegrationRows(t,e){return t.map(o=>{let l=o.name??"",g=e?.[l],m=e!=null&&l in e,P=Array.isArray(g)?g.join(", "):"";return {config:o,enabled:Gi(m),toolsControl:new _t(P,{nonNullable:true})}})}buildBuiltInRows(t,e){return t.map(o=>{let l=e!=null&&o.type in e,g=e?.[o.type],m=l?Array.isArray(g)&&g.length===0?"off":"on":"default";return {type:o.type,displayName:o.displayName,description:o.description,enabledByDefault:o.enabledByDefault===true,state:Gi(m),restrictedTools:Array.isArray(g)&&g.length>0?g:null}})}toggleIntegration(t){t.enabled.update(e=>!e);}setBuiltInState(t,e){t.state.set(e);}builtInDefaultLabel(t){return t.enabledByDefault?"Platform default (enabled)":"Platform default (disabled)"}addSubAgent(){let t=this.newSubAgentControl.value.trim();t&&(this.subAgentRows.update(e=>[...e,{control:new _t(t,{nonNullable:true})}]),this.newSubAgentControl.reset(""));}removeSubAgent(t){this.subAgentRows.update(e=>e.filter(o=>o!==t));}buildSubAgentsPayload(){let t=this.subAgentRows().map(e=>e.control.value.trim()).filter(e=>e.length>0);return t.length>0?t:void 0}buildIntegrationsPayload(){let t={};for(let o of this.integrationRows().filter(l=>l.enabled())){let l=o.config.name??"",g=o.toolsControl.value.trim();t[l]=g===""?null:g.split(",").map(m=>m.trim()).filter(m=>m.length>0);}for(let o of this.builtInRows()){let l=o.state();l==="on"?t[o.type]=o.restrictedTools??null:l==="off"&&(t[o.type]=[]);}let e=new Set([...this.integrationRows().map(o=>o.config.name??""),...this.builtInRows().map(o=>o.type)]);for(let[o,l]of Object.entries(this.existingConfig?.integrations??{}))e.has(o)||(t[o]=l);return Object.keys(t).length>0?t:void 0}submit(){if(this.form.invalid||this.isSubmitting())return;this.addSubAgent(),this.isSubmitting.set(true);let t=z$1(P({},this.existingConfig??{}),{createdOn:this.existingConfig?.createdOn,updatedOn:this.existingConfig?.updatedOn,namespaceId:this.namespaceId,name:this.nameControl.value.trim(),description:this.descriptionControl.value?.trim()||void 0,modelName:this.modelNameControl.value?.trim()||void 0,instructions:this.instructionsControl.value?.trim()||void 0,integrations:this.buildIntegrationsPayload(),advancedExecution:this.advancedExecutionControl.value,enabled:this.enabledControl.value,subAgents:this.buildSubAgentsPayload()});(this.isEditMode()?this.agentConfigController.updateAgentConfig(this.existingConfig.id??"",t):this.agentConfigController.createAgentConfig(t)).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.exportService.exportAsYaml(t).pipe(U(this.destroyRef)).subscribe({next:e=>{let o=new Blob([e],{type:"application/yaml"}),l=URL.createObjectURL(o),g=document.createElement("a");g.href=l,g.download=`${this.existingConfig?.name??"agent"}.yaml`,g.click(),URL.revokeObjectURL(l),this.isExporting.set(false);},error:()=>this.isExporting.set(false)}));}cancel(){this.navigateBack();}navigateBack(){this.isPlatformMode?this.router.navigate(["/agentos","admin","agent-configs"]):this.router.navigate(["/agentos",this.namespaceId,"agent-configs"]);}static \u0275fac=function(e){return new(e||r)};static \u0275cmp=Fw({type:r,selectors:[["agentos-agent-config-form"]],decls:12,vars:4,consts:[[1,"agent-config-form"],[1,"agent-config-form__header"],["type","button","title","Back to agent configs",1,"agent-config-form__back",3,"click"],[1,"agent-config-form__back-icon"],[1,"agent-config-form__title"],[1,"agent-config-form__sibling-link",3,"routerLink"],[1,"agent-config-form__platform-badge"],[1,"agent-config-form__loading"],[1,"agent-config-form__form",3,"formGroup"],[1,"agent-config-form__form",3,"ngSubmit","formGroup"],[1,"agent-config-form__field"],["for","agent-config-name",1,"agent-config-form__label"],["aria-hidden","true"],["id","agent-config-name","type","text","placeholder","e.g. Support agent","autocomplete","off",1,"agent-config-form__input",3,"formControl"],["for","agent-config-description",1,"agent-config-form__label"],["id","agent-config-description","type","text","placeholder","Optional \u2014 short description of this agent","autocomplete","off",1,"agent-config-form__input",3,"formControl"],["for","agent-config-model-name",1,"agent-config-form__label"],["id","agent-config-model-name","type","text","placeholder","Optional \u2014 model alias or name to use","autocomplete","off",1,"agent-config-form__input",3,"formControl"],["for","agent-config-instructions",1,"agent-config-form__label"],["id","agent-config-instructions","rows","6","placeholder","Optional \u2014 system instructions for this agent",1,"agent-config-form__textarea",3,"formControl"],[1,"agent-config-form__integrations"],[1,"agent-config-form__toggle-label"],["type","checkbox",1,"agent-config-form__toggle-checkbox",3,"formControl"],[1,"agent-config-form__toggle-text"],[1,"agent-config-form__toggle-hint"],[1,"agent-config-form__label"],[1,"agent-config-form__field-hint"],[1,"agent-config-form__code"],[1,"agent-config-form__sub-agent-list"],[1,"agent-config-form__sub-agent-add"],["type","text","placeholder","e.g. *Fixer or *","autocomplete","off",1,"agent-config-form__input","agent-config-form__sub-agent-input",3,"keydown.enter","formControl"],["type","button","title","Add pattern",1,"agent-config-form__sub-agent-btn","agent-config-form__sub-agent-btn--add",3,"click","disabled"],[1,"agent-config-form__actions"],["type","submit",1,"agent-config-form__btn","agent-config-form__btn--primary",3,"disabled"],["type","button",1,"agent-config-form__btn","agent-config-form__btn--export",3,"disabled"],["type","button",1,"agent-config-form__btn",3,"click"],[1,"agent-config-form__integrations-hint"],[1,"agent-config-form__integration-row"],[1,"agent-config-form__integration-toggle"],["type","checkbox",1,"agent-config-form__integration-checkbox",3,"change","checked"],[1,"agent-config-form__integration-name"],[1,"agent-config-form__integration-type"],["type","text","placeholder","Tool names, comma-separated (empty = all tools)","autocomplete","off",1,"agent-config-form__input","agent-config-form__integration-tools",3,"formControl"],[1,"agent-config-form__integrations-separator"],[1,"agent-config-form__integration-state",3,"change","id","value"],["value","default"],["value","on"],["value","off"],[1,"agent-config-form__integration-restriction"],[1,"agent-config-form__integration-builtin-desc"],[1,"agent-config-form__sub-agent-row"],["type","text","autocomplete","off",1,"agent-config-form__input","agent-config-form__sub-agent-input",3,"formControl"],["type","button","title","Remove",1,"agent-config-form__sub-agent-btn","agent-config-form__sub-agent-btn--danger",3,"click"],["type","button",1,"agent-config-form__btn","agent-config-form__btn--export",3,"click","disabled"]],template:function(e,o){e&1&&(ws(0,"div",0)(1,"header",1)(2,"button",2),Rg("click",function(){return o.cancel()}),ws(3,"span",3),QC(4,"\u2190"),hl(),QC(5," Agent Configs "),hl(),ws(6,"h1",4),QC(7),hl(),oC(8,ge,2,1,"a",5),oC(9,se,2,0,"span",6),hl(),oC(10,de,2,0,"p",7)(11,ve,59,14,"form",8),hl()),e&2&&(nI(7),Yg(o.isEditMode()?"Edit agent config":"New agent config"),nI(),iC(o.isEditMode()?8:-1),nI(),iC(o.isPlatformMode?9:-1),nI(),iC(o.isLoading()?10:11));},dependencies:[ni,Jn,Qn,ei,Ye,wt,Zn,Xn,Cn,En,si],styles:[".agent-config-form[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:2rem;max-width:560px;margin:0 auto;padding:2rem 1rem}.agent-config-form__header[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.5rem}.agent-config-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)}.agent-config-form__back[_ngcontent-%COMP%]:hover{text-decoration:underline}.agent-config-form__back-icon[_ngcontent-%COMP%]{font-size:1rem;line-height:1}.agent-config-form__title[_ngcontent-%COMP%]{margin:0;font-size:1.5rem;font-weight:700;color:var(--color-text);letter-spacing:-.02em}.agent-config-form__sibling-link[_ngcontent-%COMP%]{font-size:.8125rem;color:var(--color-accent);text-decoration:none}.agent-config-form__sibling-link[_ngcontent-%COMP%]:hover{text-decoration:underline}.agent-config-form__platform-badge[_ngcontent-%COMP%]{display:inline-block;font-size:.75rem;font-weight:500;color:var(--color-text-secondary);background:var(--color-surface);border:1px solid var(--color-divider);border-radius:0;padding:.125rem .5rem;letter-spacing:.02em;align-self:flex-start}.agent-config-form__loading[_ngcontent-%COMP%]{color:var(--color-text-secondary);font-size:.9rem;margin:0}.agent-config-form__form[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:1.25rem}.agent-config-form__field[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.375rem}.agent-config-form__label[_ngcontent-%COMP%]{font-size:.875rem;font-weight:500;color:var(--color-text)}.agent-config-form__input[_ngcontent-%COMP%], .agent-config-form__textarea[_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}.agent-config-form__input[_ngcontent-%COMP%]:focus, .agent-config-form__textarea[_ngcontent-%COMP%]:focus{border-color:var(--color-accent)}.agent-config-form__input[_ngcontent-%COMP%]::placeholder, .agent-config-form__textarea[_ngcontent-%COMP%]::placeholder{color:var(--color-neutral-500)}.agent-config-form__textarea[_ngcontent-%COMP%]{resize:vertical;min-height:120px;line-height:1.5}.agent-config-form__integrations[_ngcontent-%COMP%]{border:1px solid var(--color-divider);border-radius:0;padding:1rem;margin:0;display:flex;flex-direction:column;gap:.75rem}.agent-config-form__integrations-hint[_ngcontent-%COMP%]{margin:0;font-size:.8rem;color:var(--color-text-secondary);line-height:1.4}.agent-config-form__integration-row[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.375rem}.agent-config-form__integration-toggle[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.5rem;cursor:pointer;-webkit-user-select:none;user-select:none}.agent-config-form__integration-checkbox[_ngcontent-%COMP%]{width:1rem;height:1rem;flex-shrink:0;accent-color:var(--color-accent);cursor:pointer}.agent-config-form__integration-name[_ngcontent-%COMP%]{font-size:.9rem;font-weight:500;color:var(--color-text)}.agent-config-form__integration-type[_ngcontent-%COMP%]{font-size:.75rem;color:var(--color-text-secondary);font-family:monospace}.agent-config-form__integration-tools[_ngcontent-%COMP%]{margin-left:1.5rem;font-size:.875rem}.agent-config-form__integrations-separator[_ngcontent-%COMP%]{margin:.25rem 0 0;padding-top:.5rem;border-top:1px solid var(--color-divider);font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.12em;color:var(--color-neutral-500);font-family:var(--font-heading)}.agent-config-form__integration-state[_ngcontent-%COMP%]{margin-left:1.5rem;padding:.375rem .625rem;border-radius:8px;border:1px solid var(--color-border, rgba(0, 0, 0, .1));background:transparent;color:var(--color-text, #1d1d1f);font-size:.875rem;font-family:inherit;outline:none;transition:border-color .15s ease}.agent-config-form__integration-state[_ngcontent-%COMP%]:focus{border-color:var(--color-primary, #007aff)}.agent-config-form__integration-restriction[_ngcontent-%COMP%]{margin:0 0 0 1.5rem;font-size:.8rem;font-style:italic;color:var(--color-text-secondary, #6e6e73);line-height:1.4}.agent-config-form__integration-builtin-desc[_ngcontent-%COMP%]{margin:0 0 0 1.5rem;font-size:.8rem;color:var(--color-text-secondary);line-height:1.4}.agent-config-form__field-hint[_ngcontent-%COMP%]{margin:.25rem 0 0;font-size:.8rem;color:var(--color-text-secondary);line-height:1.4}.agent-config-form__code[_ngcontent-%COMP%]{font-family:monospace;font-size:.85em;background:var(--color-surface-muted, rgba(0, 0, 0, .06));padding:.1em .3em;border-radius:0}.agent-config-form__sub-agent-list[_ngcontent-%COMP%]{list-style:none;margin:.5rem 0 0;padding:0;display:flex;flex-direction:column;gap:.375rem}.agent-config-form__sub-agent-row[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.375rem}.agent-config-form__sub-agent-input[_ngcontent-%COMP%]{flex:1;min-width:0}.agent-config-form__sub-agent-add[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.375rem;margin-top:.5rem}.agent-config-form__sub-agent-btn[_ngcontent-%COMP%]{flex-shrink:0;width:2rem;height:2rem;padding:0;border-radius:0;border:1px solid var(--color-divider);background:transparent;color:var(--color-text-secondary);font-size:.9rem;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .15s ease,border-color .15s ease,color .15s ease}.agent-config-form__sub-agent-btn[_ngcontent-%COMP%]:hover:not(:disabled){background:var(--color-bg-hover);border-color:var(--color-neutral-500);color:var(--color-text)}.agent-config-form__sub-agent-btn[_ngcontent-%COMP%]:disabled{opacity:.35;cursor:not-allowed}.agent-config-form__sub-agent-btn--add[_ngcontent-%COMP%]{width:2rem;height:2rem;font-size:1.25rem;font-weight:300;border-color:var(--color-accent);color:var(--color-accent)}.agent-config-form__sub-agent-btn--add[_ngcontent-%COMP%]:hover:not(:disabled){background:var(--color-accent);color:#fff}.agent-config-form__sub-agent-btn--danger[_ngcontent-%COMP%]{border:1px solid transparent;color:var(--color-neutral-500)}.agent-config-form__sub-agent-btn--danger[_ngcontent-%COMP%]:hover:not(:disabled){border-color:var(--red);color:var(--red);background:color-mix(in srgb,var(--red) 10%,transparent)}.agent-config-form__toggle-label[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.5rem;cursor:pointer;-webkit-user-select:none;user-select:none}.agent-config-form__toggle-checkbox[_ngcontent-%COMP%]{width:1rem;height:1rem;flex-shrink:0;accent-color:var(--color-accent);cursor:pointer}.agent-config-form__toggle-text[_ngcontent-%COMP%]{font-size:.9rem;font-weight:500;color:var(--color-text)}.agent-config-form__toggle-hint[_ngcontent-%COMP%]{margin:.25rem 0 0 1.5rem;font-size:.8rem;color:var(--color-text-secondary);line-height:1.4}.agent-config-form__actions[_ngcontent-%COMP%]{display:flex;gap:.75rem;padding-top:.5rem}.agent-config-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}.agent-config-form__btn[_ngcontent-%COMP%]:hover:not(:disabled){background:var(--color-bg-hover);border-color:var(--color-neutral-500)}.agent-config-form__btn[_ngcontent-%COMP%]:disabled{opacity:.45;cursor:not-allowed}.agent-config-form__btn--primary[_ngcontent-%COMP%]{background:var(--color-accent);border-color:var(--color-accent);color:#fff}.agent-config-form__btn--primary[_ngcontent-%COMP%]:hover:not(:disabled){background:var(--color-accent-700);border-color:var(--color-accent-700)}"]})};export{ae as AgentConfigFormComponent};
|