@whoz-oss/coday-client 3.15.1 → 3.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (78) hide show
  1. package/browser/{chunk-CysW_ro-.js → chunk-0OiZWE88.js} +1 -1
  2. package/browser/{chunk-BhfpLr7-.js → chunk-6gdeYlLc.js} +1 -1
  3. package/browser/{chunk-B5_o_qhk.js → chunk-7jUQT_3F.js} +1 -1
  4. package/browser/{chunk-K-fhwl_z.js → chunk-B0vRsgnD.js} +1 -1
  5. package/browser/{chunk-RxHlNJ_t.js → chunk-BEKR4Un_.js} +1 -1
  6. package/browser/chunk-BEUXx3TO.js +1 -0
  7. package/browser/{chunk-Bnic_hdt.js → chunk-BHZY3TvC.js} +5 -5
  8. package/browser/{chunk-C6RPhP4t.js → chunk-BJYyjaQ6.js} +1 -1
  9. package/browser/chunk-BJeLQooO.js +1 -0
  10. package/browser/{chunk-BIMT-HvS.js → chunk-BNS6Fgaw.js} +1 -1
  11. package/browser/{chunk-BVCQOGLR.js → chunk-BSSDDOqW.js} +2 -2
  12. package/browser/{chunk-Dd2dq7xg.js → chunk-BTS5TBK0.js} +1 -1
  13. package/browser/{chunk-B11WEBEl.js → chunk-BUJoEGsf.js} +1 -1
  14. package/browser/chunk-BY7uKZAo.js +9 -0
  15. package/browser/{chunk-5t7zJzqM.js → chunk-B_9LxHBv.js} +1 -1
  16. package/browser/{chunk-DTZ7N3wC.js → chunk-BdApeECy.js} +1 -1
  17. package/browser/{chunk-BhM0bmJW.js → chunk-BdpJ2ZCM.js} +1 -1
  18. package/browser/{chunk-CyUmCedx.js → chunk-Be1LOFvg.js} +1 -1
  19. package/browser/{chunk-CYMQSJz6.js → chunk-Bhq5earA.js} +1 -1
  20. package/browser/{chunk-C5wr-vqf.js → chunk-Bib1Seeu.js} +1 -1
  21. package/browser/{chunk-C7MXO6BQ.js → chunk-Bn3R3VC2.js} +5 -5
  22. package/browser/{chunk-DxxECdrg.js → chunk-C-aF2_1R.js} +2 -2
  23. package/browser/{chunk-Jv7RGmnK.js → chunk-CBNhmZDS.js} +1 -1
  24. package/browser/{chunk-DzicJow4.js → chunk-CFZbDe5T.js} +3 -3
  25. package/browser/{chunk-mHtuxvLs.js → chunk-CGMAzvSo.js} +1 -1
  26. package/browser/chunk-CPBcDx4G.js +1 -0
  27. package/browser/{chunk-DYUMiAN8.js → chunk-CTuHnJP4.js} +1 -1
  28. package/browser/{chunk-n1eKIk8H.js → chunk-CXLytVC3.js} +1 -1
  29. package/browser/{chunk-5LRyprMF.js → chunk-CYulIMKp.js} +1 -1
  30. package/browser/{chunk-CyxhAtE7.js → chunk-C_s4Z3Dk.js} +1 -1
  31. package/browser/{chunk-D_vvo2qx.js → chunk-CbK5Lcu9.js} +1 -1
  32. package/browser/{chunk-9CSRlx74.js → chunk-CgqDTJ5-.js} +1 -1
  33. package/browser/{chunk-Dg6QAZUw.js → chunk-Ci1jk71f.js} +2 -2
  34. package/browser/{chunk-Bh1p6jDj.js → chunk-CiWu4t_i.js} +1 -1
  35. package/browser/{chunk-CUmS2-ak.js → chunk-CjrWXBiR.js} +1 -1
  36. package/browser/{chunk-BqKdrvcS.js → chunk-Co81dkbz.js} +1 -1
  37. package/browser/{chunk-Ce03Ba0V.js → chunk-CtWMrBfw.js} +1 -1
  38. package/browser/{chunk-l0HLnBLv.js → chunk-CtkiOUdU.js} +6 -6
  39. package/browser/{chunk-BlWlE-Cq.js → chunk-CwaAd8kk.js} +1 -1
  40. package/browser/{chunk-Bgy3uCgK.js → chunk-DDnWPYAA.js} +1 -1
  41. package/browser/{chunk-CHrmSvQM.js → chunk-DOq0u21j.js} +1 -1
  42. package/browser/{chunk-DX2ZzvT5.js → chunk-DQLU3kYb.js} +1 -1
  43. package/browser/{chunk-fP29MqaN.js → chunk-Dcftf7UY.js} +1 -1
  44. package/browser/{chunk-BZMAEe_X.js → chunk-Dfujxxcr.js} +1 -1
  45. package/browser/chunk-DgrvmqY2.js +2 -0
  46. package/browser/{chunk-CebS4RAf.js → chunk-DoKoAMs6.js} +1 -1
  47. package/browser/{chunk-CNIfOUla.js → chunk-Dtu-PLbq.js} +1 -1
  48. package/browser/{chunk-C4U0w8cP.js → chunk-DzlrRiVM.js} +1 -1
  49. package/browser/{chunk-BfD1F12k.js → chunk-HjD5Rk4C.js} +3 -3
  50. package/browser/{chunk-CcLheUaL.js → chunk-IUvEtpfr.js} +1 -1
  51. package/browser/{chunk-DTIhOEG_.js → chunk-S8F5_Te_.js} +6 -6
  52. package/browser/{chunk-HSc9fwVS.js → chunk-SbH2L3h2.js} +1 -1
  53. package/browser/{chunk-BKlwFrFB.js → chunk-UzUd84Qf.js} +1 -1
  54. package/browser/chunk-YS-vAhPY.js +190 -0
  55. package/browser/{chunk-BUEM7g7F.js → chunk-YfG457Nc.js} +3 -3
  56. package/browser/{chunk-DG2FCeMu.js → chunk-axGY7UtD.js} +1 -1
  57. package/browser/chunk-fYErSEXN.js +1 -0
  58. package/browser/{chunk-BgHTiTG2.js → chunk-fhFxOLYS.js} +1 -1
  59. package/browser/{chunk-qARg6ese.js → chunk-gmPqDrDS.js} +1 -1
  60. package/browser/{chunk-DvzNS1Bs.js → chunk-iNIQR015.js} +1 -1
  61. package/browser/{chunk-Dj9y_5pr.js → chunk-izARvh_2.js} +1 -1
  62. package/browser/{chunk-Cf3l2UgA.js → chunk-jv0lz5Ah.js} +1 -1
  63. package/browser/{chunk-nWqZHM4o.js → chunk-kvCfAm7Z.js} +1 -1
  64. package/browser/{chunk-ZvcyZV3G.js → chunk-pH1k_bet.js} +1 -1
  65. package/browser/{chunk-DYE131qf.js → chunk-rwEyLSEP.js} +1 -1
  66. package/browser/{chunk-XgEfnfT0.js → chunk-swj7IkJA.js} +1 -1
  67. package/browser/chunk-tTmeIHGS.js +37 -0
  68. package/browser/index.html +1 -1
  69. package/browser/{main-6K2UFGD2.js → main-5PAOSHSM.js} +19 -19
  70. package/package.json +1 -1
  71. package/browser/chunk-BC0acSZF.js +0 -1
  72. package/browser/chunk-BLa2Gx7h.js +0 -190
  73. package/browser/chunk-B_2kLXvG.js +0 -1
  74. package/browser/chunk-C9tuHQmZ.js +0 -37
  75. package/browser/chunk-CnnGSYzi.js +0 -2
  76. package/browser/chunk-DEsz0fzs.js +0 -1
  77. package/browser/chunk-DXDohTwX.js +0 -1
  78. package/browser/chunk-uPxETzZs.js +0 -9
@@ -1,4 +1,4 @@
1
- import {W as We$1,Q as Qt}from'./chunk-DTIhOEG_.js';import {_,b as _e,d as an,E as En}from'./chunk-C9tuHQmZ.js';import {aL as Eo,aM as qn,cq as Se,aO as wt$1,g,az as Kt,bs as Tl,bG as p,aT as Ut$1,aP as G,aW as w,cr as SB,y as yT,cs as MB,ct as vi,z as zi,an as ce$1,aS as K,bt as Qn,cd as Hf,bR as Sd,u as ue,au as nv,ae as Ot$1,ap as Vy,bP as Yy,cu as AB,h as Rw,ce as _b,bA as DC,af as Dg,ag as pT,I as Is,A as Ag,t as tC,bB as EC,m as pl,J as JE,H as Hg,v as nC,b5 as rT,cv as Lg,D as Fg,cw as TC,E as wC,K as CC,cx as Pg,bv as kg,aZ as Ls,aR as ks,cy as si,cz as Jr,aC as Tu,a_ as QT,c0 as Ng,C as Cg,bF as X,b6 as Sg,aw as hl,ax as gl,ac as yC,n as bg,T as Tg,r as bC,cA as _n,aX as D,cB as sn,cC as R,cD as Ce,q as qC,a8 as Zg,aF as A,cE as Rd}from'./main-6K2UFGD2.js';var oe=class{_box;_destroyed=new ce$1;_resizeSubject=new ce$1;_resizeObserver;_elementObservables=new Map;constructor(l){this._box=l,typeof ResizeObserver<"u"&&(this._resizeObserver=new ResizeObserver(e=>this._resizeSubject.next(e)));}observe(l){return this._elementObservables.has(l)||this._elementObservables.set(l,new A(e=>{let t=this._resizeSubject.subscribe(e);return this._resizeObserver?.observe(l,{box:this._box}),()=>{this._resizeObserver?.unobserve(l),t.unsubscribe(),this._elementObservables.delete(l);}}).pipe(Ot$1(e=>e.some(t=>t.target===l)),Rd({bufferSize:1,refCount:true}),Vy(this._destroyed))),this._elementObservables.get(l)}destroy(){this._destroyed.next(),this._destroyed.complete(),this._resizeSubject.complete(),this._elementObservables.clear();}},qe=(()=>{class i{_cleanupErrorListener;_observers=new Map;_ngZone=g(G);constructor(){}ngOnDestroy(){for(let[,e]of this._observers)e.destroy();this._observers.clear(),this._cleanupErrorListener?.();}observe(e,t){let n=t?.box||"content-box";return this._observers.has(n)||this._observers.set(n,new oe(n)),this._observers.get(n).observe(e)}static \u0275fac=function(t){return new(t||i)};static \u0275prov=Ce({token:i,factory:i.\u0275fac})}return i})();var ut=["notch"],ht=["*"],Ue=["iconPrefixContainer"],We=["textPrefixContainer"],Ge=["iconSuffixContainer"],$e=["textSuffixContainer"],pt=["textField"],_t=["*",[["mat-label"]],[["","matPrefix",""],["","matIconPrefix",""]],[["","matTextPrefix",""]],[["","matTextSuffix",""]],[["","matSuffix",""],["","matIconSuffix",""]],[["mat-error"],["","matError",""]],[["mat-hint",3,"align","end"]],[["mat-hint","align","end"]]],bt=["*","mat-label","[matPrefix], [matIconPrefix]","[matTextPrefix]","[matTextSuffix]","[matSuffix], [matIconSuffix]","mat-error, [matError]","mat-hint:not([align='end'])","mat-hint[align='end']"];function gt(i,l){i&1&&bg(0,"span",21);}function vt(i,l){if(i&1&&(Is(0,"label",20),EC(1,1),tC(2,gt,1,0,"span",21),pl()),i&2){let e=yC(2);Tg("floating",e._shouldLabelFloat())("monitorResize",e._hasOutline())("id",e._labelId),Cg("for",e._control.disableAutomaticLabeling?null:e._control.id),JE(2),nC(!e.hideRequiredMarker&&e._control.required?2:-1);}}function xt(i,l){if(i&1&&tC(0,vt,3,5,"label",20),i&2){let e=yC();nC(e._hasFloatingLabel()?0:-1);}}function yt(i,l){i&1&&bg(0,"div",7);}function Ft(i,l){}function Ct(i,l){if(i&1&&Dg(0,Ft,0,0,"ng-template",13),i&2){yC(2);let e=bC(1);Tg("ngTemplateOutlet",e);}}function wt(i,l){if(i&1&&(Is(0,"div",9),tC(1,Ct,1,1,null,13),pl()),i&2){let e=yC();Tg("matFormFieldNotchedOutlineOpen",e._shouldLabelFloat()),JE(),nC(e._forceDisplayInfixLabel()?-1:1);}}function Mt(i,l){i&1&&(Is(0,"div",10,2),EC(2,2),pl());}function Et(i,l){i&1&&(Is(0,"div",11,3),EC(2,3),pl());}function St(i,l){}function Tt(i,l){if(i&1&&Dg(0,St,0,0,"ng-template",13),i&2){yC();let e=bC(1);Tg("ngTemplateOutlet",e);}}function Rt(i,l){i&1&&(Is(0,"div",14,4),EC(2,4),pl());}function Dt(i,l){i&1&&(Is(0,"div",15,5),EC(2,5),pl());}function Nt(i,l){i&1&&bg(0,"div",16);}function At(i,l){i&1&&(Is(0,"div",18),EC(1,6),pl());}function It(i,l){if(i&1&&(Is(0,"mat-hint",22),qC(1),pl()),i&2){let e=yC(2);Tg("id",e._hintLabelId),JE(),Zg(e.hintLabel);}}function Lt(i,l){if(i&1&&(Is(0,"div",19),tC(1,It,2,2,"mat-hint",22),EC(2,7),bg(3,"div",23),EC(4,8),pl()),i&2){let e=yC();JE(),nC(e.hintLabel?1:-1);}}var ae=(()=>{class i{static \u0275fac=function(t){return new(t||i)};static \u0275dir=Ls({type:i,selectors:[["mat-label"]]})}return i})(),kt=new w("MatError");var le=(()=>{class i{align="start";id=g(Ut$1).getId("mat-mdc-hint-");static \u0275fac=function(t){return new(t||i)};static \u0275dir=Ls({type:i,selectors:[["mat-hint"]],hostAttrs:[1,"mat-mdc-form-field-hint","mat-mdc-form-field-bottom-align"],hostVars:4,hostBindings:function(t,n){t&2&&(Ng("id",n.id),Cg("align",null),Hg("mat-mdc-form-field-hint-end",n.align==="end"));},inputs:{align:"align",id:"id"}})}return i})(),et=new w("MatPrefix"),Ot=(()=>{class i{set _isTextSelector(e){this._isText=true;}_isText=false;static \u0275fac=function(t){return new(t||i)};static \u0275dir=Ls({type:i,selectors:[["","matPrefix",""],["","matIconPrefix",""],["","matTextPrefix",""]],inputs:{_isTextSelector:[0,"matTextPrefix","_isTextSelector"]},features:[rT([{provide:et,useExisting:i}])]})}return i})(),tt=new w("MatSuffix"),zt=(()=>{class i{set _isTextSelector(e){this._isText=true;}_isText=false;static \u0275fac=function(t){return new(t||i)};static \u0275dir=Ls({type:i,selectors:[["","matSuffix",""],["","matIconSuffix",""],["","matTextSuffix",""]],inputs:{_isTextSelector:[0,"matTextSuffix","_isTextSelector"]},features:[rT([{provide:tt,useExisting:i}])]})}return i})(),it=new w("FloatingLabelParent"),Ze=(()=>{class i{_elementRef=g(Kt);get floating(){return this._floating}set floating(e){this._floating=e,this.monitorResize&&this._handleResize();}_floating=false;get monitorResize(){return this._monitorResize}set monitorResize(e){this._monitorResize=e,this._monitorResize?this._subscribeToResize():this._resizeSubscription.unsubscribe();}_monitorResize=false;_resizeObserver=g(qe);_ngZone=g(G);_parent=g(it);_resizeSubscription=new X;ngOnDestroy(){this._resizeSubscription.unsubscribe();}getWidth(){return Pt(this._elementRef.nativeElement)}get element(){return this._elementRef.nativeElement}_handleResize(){setTimeout(()=>this._parent._handleLabelResized());}_subscribeToResize(){this._resizeSubscription.unsubscribe(),this._ngZone.runOutsideAngular(()=>{this._resizeSubscription=this._resizeObserver.observe(this._elementRef.nativeElement,{box:"border-box"}).subscribe(()=>this._handleResize());});}static \u0275fac=function(t){return new(t||i)};static \u0275dir=Ls({type:i,selectors:[["label","matFormFieldFloatingLabel",""]],hostAttrs:[1,"mdc-floating-label","mat-mdc-floating-label"],hostVars:2,hostBindings:function(t,n){t&2&&Hg("mdc-floating-label--float-above",n.floating);},inputs:{floating:"floating",monitorResize:"monitorResize"}})}return i})();function Pt(i){let l=i;if(l.offsetParent!==null)return l.scrollWidth;let e=l.cloneNode(true);e.style.setProperty("position","absolute"),e.style.setProperty("transform","translate(-9999px, -9999px)"),document.documentElement.appendChild(e);let t=e.scrollWidth;return e.remove(),t}var Qe="mdc-line-ripple--active",Z="mdc-line-ripple--deactivating",Xe=(()=>{class i{_elementRef=g(Kt);_cleanupTransitionEnd;constructor(){let e=g(G),t=g(ks);e.runOutsideAngular(()=>{this._cleanupTransitionEnd=t.listen(this._elementRef.nativeElement,"transitionend",this._handleTransitionEnd);});}activate(){let e=this._elementRef.nativeElement.classList;e.remove(Z),e.add(Qe);}deactivate(){this._elementRef.nativeElement.classList.add(Z);}_handleTransitionEnd=e=>{let t=this._elementRef.nativeElement.classList,n=t.contains(Z);e.propertyName==="opacity"&&n&&t.remove(Qe,Z);};ngOnDestroy(){this._cleanupTransitionEnd();}static \u0275fac=function(t){return new(t||i)};static \u0275dir=Ls({type:i,selectors:[["div","matFormFieldLineRipple",""]],hostAttrs:[1,"mdc-line-ripple"]})}return i})(),Ye=(()=>{class i{_elementRef=g(Kt);_ngZone=g(G);open=false;_notch;ngAfterViewInit(){let e=this._elementRef.nativeElement,t=e.querySelector(".mdc-floating-label");t?(e.classList.add("mdc-notched-outline--upgraded"),typeof requestAnimationFrame=="function"&&(t.style.transitionDuration="0s",this._ngZone.runOutsideAngular(()=>{requestAnimationFrame(()=>t.style.transitionDuration="");}))):e.classList.add("mdc-notched-outline--no-label");}_setNotchWidth(e){let t=this._notch.nativeElement;!this.open||!e?t.style.width="":t.style.width=`calc(${e}px * var(--mat-mdc-form-field-floating-label-scale, 0.75) + 9px)`;}_setMaxWidth(e){this._notch.nativeElement.style.setProperty("--mat-form-field-notch-max-width",`calc(100% - ${e}px)`);}static \u0275fac=function(t){return new(t||i)};static \u0275cmp=Rw({type:i,selectors:[["div","matFormFieldNotchedOutline",""]],viewQuery:function(t,n){if(t&1&&Fg(ut,5),t&2){let r;wC(r=CC())&&(n._notch=r.first);}},hostAttrs:[1,"mdc-notched-outline"],hostVars:2,hostBindings:function(t,n){t&2&&Hg("mdc-notched-outline--notched",n.open);},inputs:{open:[0,"matFormFieldNotchedOutlineOpen","open"]},ngContentSelectors:ht,decls:5,vars:0,consts:[["notch",""],[1,"mat-mdc-notch-piece","mdc-notched-outline__leading"],[1,"mat-mdc-notch-piece","mdc-notched-outline__notch"],[1,"mat-mdc-notch-piece","mdc-notched-outline__trailing"]],template:function(t,n){t&1&&(DC(),Sg(0,"div",1),hl(1,"div",2,0),EC(3),gl(),Sg(4,"div",3));},encapsulation:2})}return i})(),de=(()=>{class i{value=null;stateChanges;id;placeholder;ngControl=null;focused=false;empty=false;shouldLabelFloat=false;required=false;disabled=false;errorState=false;controlType;autofilled;userAriaDescribedBy;disableAutomaticLabeling;describedByIds;static \u0275fac=function(t){return new(t||i)};static \u0275dir=Ls({type:i})}return i})();var se=new w("MatFormField"),Bt=new w("MAT_FORM_FIELD_DEFAULT_OPTIONS"),Ke="fill",Vt="auto",Je="fixed",Ht="translateY(-50%)",nt=(()=>{class i{_elementRef=g(Kt);_changeDetectorRef=g(Tl);_platform=g(p);_idGenerator=g(Ut$1);_ngZone=g(G);_defaults=g(Bt,{optional:true});_currentDirection;_textField;_iconPrefixContainer;_textPrefixContainer;_iconSuffixContainer;_textSuffixContainer;_floatingLabel;_notchedOutline;_lineRipple;_iconPrefixContainerSignal=SB("iconPrefixContainer");_textPrefixContainerSignal=SB("textPrefixContainer");_iconSuffixContainerSignal=SB("iconSuffixContainer");_textSuffixContainerSignal=SB("textSuffixContainer");_prefixSuffixContainers=yT(()=>[this._iconPrefixContainerSignal(),this._textPrefixContainerSignal(),this._iconSuffixContainerSignal(),this._textSuffixContainerSignal()].map(e=>e?.nativeElement).filter(e=>e!==void 0));_formFieldControl;_prefixChildren;_suffixChildren;_errorChildren;_hintChildren;_labelChild=MB(ae);get hideRequiredMarker(){return this._hideRequiredMarker}set hideRequiredMarker(e){this._hideRequiredMarker=vi(e);}_hideRequiredMarker=false;color="primary";get floatLabel(){return this._floatLabel||this._defaults?.floatLabel||Vt}set floatLabel(e){e!==this._floatLabel&&(this._floatLabel=e,this._changeDetectorRef.markForCheck());}_floatLabel;get appearance(){return this._appearanceSignal()}set appearance(e){let t=e||this._defaults?.appearance||Ke;this._appearanceSignal.set(t);}_appearanceSignal=zi(Ke);get subscriptSizing(){return this._subscriptSizing||this._defaults?.subscriptSizing||Je}set subscriptSizing(e){this._subscriptSizing=e||this._defaults?.subscriptSizing||Je;}_subscriptSizing=null;get hintLabel(){return this._hintLabel}set hintLabel(e){this._hintLabel=e,this._processHints();}_hintLabel="";_hasIconPrefix=false;_hasTextPrefix=false;_hasIconSuffix=false;_hasTextSuffix=false;_labelId=this._idGenerator.getId("mat-mdc-form-field-label-");_hintLabelId=this._idGenerator.getId("mat-mdc-hint-");_describedByIds;get _control(){return this._explicitFormFieldControl||this._formFieldControl}set _control(e){this._explicitFormFieldControl=e;}_destroyed=new ce$1;_isFocused=null;_explicitFormFieldControl;_previousControl=null;_previousControlValidatorFn=null;_stateChanges;_valueChanges;_describedByChanges;_outlineLabelOffsetResizeObserver=null;_animationsDisabled=K();constructor(){let e=this._defaults,t=g(Qn);e&&(e.appearance&&(this.appearance=e.appearance),this._hideRequiredMarker=!!e?.hideRequiredMarker,e.color&&(this.color=e.color)),Hf(()=>this._currentDirection=t.valueSignal()),this._syncOutlineLabelOffset();}ngAfterViewInit(){this._updateFocusState(),this._animationsDisabled||this._ngZone.runOutsideAngular(()=>{setTimeout(()=>{this._elementRef.nativeElement.classList.add("mat-form-field-animations-enabled");},300);}),this._changeDetectorRef.detectChanges();}ngAfterContentInit(){this._assertFormFieldControl(),this._initializeSubscript(),this._initializePrefixAndSuffix();}ngAfterContentChecked(){this._assertFormFieldControl(),this._control!==this._previousControl&&(this._initializeControl(this._previousControl),this._control.ngControl&&this._control.ngControl.control&&(this._previousControlValidatorFn=this._control.ngControl.control.validator),this._previousControl=this._control),this._control.ngControl&&this._control.ngControl.control&&this._control.ngControl.control.validator!==this._previousControlValidatorFn&&this._changeDetectorRef.markForCheck();}ngOnDestroy(){this._outlineLabelOffsetResizeObserver?.disconnect(),this._stateChanges?.unsubscribe(),this._valueChanges?.unsubscribe(),this._describedByChanges?.unsubscribe(),this._destroyed.next(),this._destroyed.complete();}getLabelId=yT(()=>this._hasFloatingLabel()?this._labelId:null);getConnectedOverlayOrigin(){return this._textField||this._elementRef}_animateAndLockLabel(){this._hasFloatingLabel()&&(this.floatLabel="always");}_initializeControl(e){let t=this._control,n="mat-mdc-form-field-type-";e&&this._elementRef.nativeElement.classList.remove(n+e.controlType),t.controlType&&this._elementRef.nativeElement.classList.add(n+t.controlType),this._stateChanges?.unsubscribe(),this._stateChanges=t.stateChanges.subscribe(()=>{this._updateFocusState(),this._changeDetectorRef.markForCheck();}),this._describedByChanges?.unsubscribe(),this._describedByChanges=t.stateChanges.pipe(Sd([void 0,void 0]),ue(()=>[t.errorState,t.userAriaDescribedBy]),nv(),Ot$1(([[r,a],[s,C]])=>r!==s||a!==C)).subscribe(()=>this._syncDescribedByIds()),this._valueChanges?.unsubscribe(),t.ngControl&&t.ngControl.valueChanges&&(this._valueChanges=t.ngControl.valueChanges.pipe(Vy(this._destroyed)).subscribe(()=>this._changeDetectorRef.markForCheck()));}_checkPrefixAndSuffixTypes(){this._hasIconPrefix=!!this._prefixChildren.find(e=>!e._isText),this._hasTextPrefix=!!this._prefixChildren.find(e=>e._isText),this._hasIconSuffix=!!this._suffixChildren.find(e=>!e._isText),this._hasTextSuffix=!!this._suffixChildren.find(e=>e._isText);}_initializePrefixAndSuffix(){this._checkPrefixAndSuffixTypes(),Yy(this._prefixChildren.changes,this._suffixChildren.changes).subscribe(()=>{this._checkPrefixAndSuffixTypes(),this._changeDetectorRef.markForCheck();});}_initializeSubscript(){this._hintChildren.changes.subscribe(()=>{this._processHints(),this._changeDetectorRef.markForCheck();}),this._errorChildren.changes.subscribe(()=>{this._syncDescribedByIds(),this._changeDetectorRef.markForCheck();}),this._validateHints(),this._syncDescribedByIds();}_assertFormFieldControl(){this._control;}_updateFocusState(){let e=this._control.focused;e&&!this._isFocused?(this._isFocused=true,this._lineRipple?.activate()):!e&&(this._isFocused||this._isFocused===null)&&(this._isFocused=false,this._lineRipple?.deactivate()),this._elementRef.nativeElement.classList.toggle("mat-focused",e),this._textField?.nativeElement.classList.toggle("mdc-text-field--focused",e);}_syncOutlineLabelOffset(){AB({earlyRead:()=>{if(this._appearanceSignal()!=="outline")return this._outlineLabelOffsetResizeObserver?.disconnect(),null;if(globalThis.ResizeObserver){this._outlineLabelOffsetResizeObserver||=new globalThis.ResizeObserver(()=>{this._writeOutlinedLabelStyles(this._getOutlinedLabelOffset());});for(let e of this._prefixSuffixContainers())this._outlineLabelOffsetResizeObserver.observe(e,{box:"border-box"});}return this._getOutlinedLabelOffset()},write:e=>this._writeOutlinedLabelStyles(e())});}_shouldAlwaysFloat(){return this.floatLabel==="always"}_hasOutline(){return this.appearance==="outline"}_forceDisplayInfixLabel(){return !this._platform.isBrowser&&this._prefixChildren.length&&!this._shouldLabelFloat()}_hasFloatingLabel=yT(()=>!!this._labelChild());_shouldLabelFloat(){return this._hasFloatingLabel()?this._control.shouldLabelFloat||this._shouldAlwaysFloat():false}_shouldForward(e){let t=this._control?this._control.ngControl:null;return t&&t[e]}_getSubscriptMessageType(){return this._errorChildren&&this._errorChildren.length>0&&this._control.errorState?"error":"hint"}_handleLabelResized(){this._refreshOutlineNotchWidth();}_refreshOutlineNotchWidth(){!this._hasOutline()||!this._floatingLabel||!this._shouldLabelFloat()?this._notchedOutline?._setNotchWidth(0):this._notchedOutline?._setNotchWidth(this._floatingLabel.getWidth());}_processHints(){this._validateHints(),this._syncDescribedByIds();}_validateHints(){this._hintChildren;}_syncDescribedByIds(){if(this._control){let e=[];if(this._control.userAriaDescribedBy&&typeof this._control.userAriaDescribedBy=="string"&&e.push(...this._control.userAriaDescribedBy.split(" ")),this._getSubscriptMessageType()==="hint"){let r=this._hintChildren?this._hintChildren.find(s=>s.align==="start"):null,a=this._hintChildren?this._hintChildren.find(s=>s.align==="end"):null;r?e.push(r.id):this._hintLabel&&e.push(this._hintLabelId),a&&e.push(a.id);}else this._errorChildren&&e.push(...this._errorChildren.map(r=>r.id));let t=this._control.describedByIds,n;if(t){let r=this._describedByIds||e;n=e.concat(t.filter(a=>a&&!r.includes(a)));}else n=e;this._control.setDescribedByIds(n),this._describedByIds=e;}}_getOutlinedLabelOffset(){if(!this._hasOutline()||!this._floatingLabel)return null;if(!this._iconPrefixContainer&&!this._textPrefixContainer)return ["",null];if(!this._isAttachedToDom())return null;let e=this._iconPrefixContainer?.nativeElement,t=this._textPrefixContainer?.nativeElement,n=this._iconSuffixContainer?.nativeElement,r=this._textSuffixContainer?.nativeElement,a=e?.getBoundingClientRect().width??0,s=t?.getBoundingClientRect().width??0,C=n?.getBoundingClientRect().width??0,M=r?.getBoundingClientRect().width??0,dt=this._currentDirection==="rtl"?"-1":"1",st=`${a+s}px`,ct=`calc(${dt} * (${st} + var(--mat-mdc-form-field-label-offset-x, 0px)))`,ft=`var(--mat-mdc-form-field-label-transform, ${Ht} translateX(${ct}))`,mt=a+s+C+M;return [ft,mt]}_writeOutlinedLabelStyles(e){if(e!==null){let[t,n]=e;this._floatingLabel&&(this._floatingLabel.element.style.transform=t),n!==null&&this._notchedOutline?._setMaxWidth(n);}}_isAttachedToDom(){let e=this._elementRef.nativeElement;if(e.getRootNode){let t=e.getRootNode();return t&&t!==e}return document.documentElement.contains(e)}static \u0275fac=function(t){return new(t||i)};static \u0275cmp=Rw({type:i,selectors:[["mat-form-field"]],contentQueries:function(t,n,r){if(t&1&&(Pg(r,n._labelChild,ae,5),kg(r,de,5)(r,et,5)(r,tt,5)(r,kt,5)(r,le,5)),t&2){TC();let a;wC(a=CC())&&(n._formFieldControl=a.first),wC(a=CC())&&(n._prefixChildren=a),wC(a=CC())&&(n._suffixChildren=a),wC(a=CC())&&(n._errorChildren=a),wC(a=CC())&&(n._hintChildren=a);}},viewQuery:function(t,n){if(t&1&&(Lg(n._iconPrefixContainerSignal,Ue,5)(n._textPrefixContainerSignal,We,5)(n._iconSuffixContainerSignal,Ge,5)(n._textSuffixContainerSignal,$e,5),Fg(pt,5)(Ue,5)(We,5)(Ge,5)($e,5)(Ze,5)(Ye,5)(Xe,5)),t&2){TC(4);let r;wC(r=CC())&&(n._textField=r.first),wC(r=CC())&&(n._iconPrefixContainer=r.first),wC(r=CC())&&(n._textPrefixContainer=r.first),wC(r=CC())&&(n._iconSuffixContainer=r.first),wC(r=CC())&&(n._textSuffixContainer=r.first),wC(r=CC())&&(n._floatingLabel=r.first),wC(r=CC())&&(n._notchedOutline=r.first),wC(r=CC())&&(n._lineRipple=r.first);}},hostAttrs:[1,"mat-mdc-form-field"],hostVars:38,hostBindings:function(t,n){t&2&&Hg("mat-mdc-form-field-label-always-float",n._shouldAlwaysFloat())("mat-mdc-form-field-has-icon-prefix",n._hasIconPrefix)("mat-mdc-form-field-has-icon-suffix",n._hasIconSuffix)("mat-form-field-invalid",n._control.errorState)("mat-form-field-disabled",n._control.disabled)("mat-form-field-autofilled",n._control.autofilled)("mat-form-field-appearance-fill",n.appearance=="fill")("mat-form-field-appearance-outline",n.appearance=="outline")("mat-form-field-hide-placeholder",n._hasFloatingLabel()&&!n._shouldLabelFloat())("mat-primary",n.color!=="accent"&&n.color!=="warn")("mat-accent",n.color==="accent")("mat-warn",n.color==="warn")("ng-untouched",n._shouldForward("untouched"))("ng-touched",n._shouldForward("touched"))("ng-pristine",n._shouldForward("pristine"))("ng-dirty",n._shouldForward("dirty"))("ng-valid",n._shouldForward("valid"))("ng-invalid",n._shouldForward("invalid"))("ng-pending",n._shouldForward("pending"));},inputs:{hideRequiredMarker:"hideRequiredMarker",color:"color",floatLabel:"floatLabel",appearance:"appearance",subscriptSizing:"subscriptSizing",hintLabel:"hintLabel"},exportAs:["matFormField"],features:[rT([{provide:se,useExisting:i},{provide:it,useExisting:i}])],ngContentSelectors:bt,decls:18,vars:21,consts:[["labelTemplate",""],["textField",""],["iconPrefixContainer",""],["textPrefixContainer",""],["textSuffixContainer",""],["iconSuffixContainer",""],[1,"mat-mdc-text-field-wrapper","mdc-text-field",3,"click"],[1,"mat-mdc-form-field-focus-overlay"],[1,"mat-mdc-form-field-flex"],["matFormFieldNotchedOutline","",3,"matFormFieldNotchedOutlineOpen"],[1,"mat-mdc-form-field-icon-prefix"],[1,"mat-mdc-form-field-text-prefix"],[1,"mat-mdc-form-field-infix"],[3,"ngTemplateOutlet"],[1,"mat-mdc-form-field-text-suffix"],[1,"mat-mdc-form-field-icon-suffix"],["matFormFieldLineRipple",""],["aria-atomic","true","aria-live","polite",1,"mat-mdc-form-field-subscript-wrapper","mat-mdc-form-field-bottom-align"],[1,"mat-mdc-form-field-error-wrapper"],[1,"mat-mdc-form-field-hint-wrapper"],["matFormFieldFloatingLabel","",3,"floating","monitorResize","id"],["aria-hidden","true",1,"mat-mdc-form-field-required-marker","mdc-floating-label--required"],[3,"id"],[1,"mat-mdc-form-field-hint-spacer"]],template:function(t,n){if(t&1&&(DC(_t),Dg(0,xt,1,1,"ng-template",null,0,pT),Is(2,"div",6,1),Ag("click",function(a){return n._control.onContainerClick(a)}),tC(4,yt,1,0,"div",7),Is(5,"div",8),tC(6,wt,2,2,"div",9),tC(7,Mt,3,0,"div",10),tC(8,Et,3,0,"div",11),Is(9,"div",12),tC(10,Tt,1,1,null,13),EC(11),pl(),tC(12,Rt,3,0,"div",14),tC(13,Dt,3,0,"div",15),pl(),tC(14,Nt,1,0,"div",16),pl(),Is(15,"div",17),tC(16,At,2,0,"div",18)(17,Lt,5,1,"div",19),pl()),t&2){let r;JE(2),Hg("mdc-text-field--filled",!n._hasOutline())("mdc-text-field--outlined",n._hasOutline())("mdc-text-field--no-label",!n._hasFloatingLabel())("mdc-text-field--disabled",n._control.disabled)("mdc-text-field--invalid",n._control.errorState),JE(2),nC(!n._hasOutline()&&!n._control.disabled?4:-1),JE(2),nC(n._hasOutline()?6:-1),JE(),nC(n._hasIconPrefix?7:-1),JE(),nC(n._hasTextPrefix?8:-1),JE(2),nC(!n._hasOutline()||n._forceDisplayInfixLabel()?10:-1),JE(2),nC(n._hasTextSuffix?12:-1),JE(),nC(n._hasIconSuffix?13:-1),JE(),nC(n._hasOutline()?-1:14),JE(),Hg("mat-mdc-form-field-subscript-dynamic-size",n.subscriptSizing==="dynamic");let a=n._getSubscriptMessageType();JE(),nC((r=a)==="error"?16:r==="hint"?17:-1);}},dependencies:[Ze,Ye,_b,Xe,le],styles:[`.mdc-text-field {
1
+ import {W as We$1,Q as Qt}from'./chunk-S8F5_Te_.js';import {_,b as _e,d as an,E as En}from'./chunk-tTmeIHGS.js';import {aL as Eo,aM as qn,cq as Se,aO as wt$1,g,az as Kt,bs as bl,bG as p,aT as Ut$1,aP as G,aW as w,cr as BB,E as ET,cs as HB,ct as vi,a as Gi,an as ce$1,aS as K,bt as Qn,cd as Uf,bR as Sd,u as ue,au as ov,ae as Ot$1,ap as Hy,bP as Qy,cu as zB,h as Fw,ce as xb,bA as wC,af as Eg,ag as mT,m as ws,o as Rg,q as oC,bB as CC,n as hl,t as nI,A as Ug,x as iC,b5 as sT,cv as jg,C as Pg,cw as _C,D as bC,H as SC,cx as Lg,bv as Fg,aZ as js,aR as Fs,cy as si,cz as Jr,aC as bu,a_ as JT,c0 as xg,T as Tg,bF as X,b6 as _g,aw as gl,ax as ml,ac as EC,S as Sg,v as bg,M as MC,cA as _n,aX as D,cB as sn,cC as R,cD as Ce,Q as QC,a8 as Yg,aF as A,cE as Od}from'./main-5PAOSHSM.js';var oe=class{_box;_destroyed=new ce$1;_resizeSubject=new ce$1;_resizeObserver;_elementObservables=new Map;constructor(l){this._box=l,typeof ResizeObserver<"u"&&(this._resizeObserver=new ResizeObserver(e=>this._resizeSubject.next(e)));}observe(l){return this._elementObservables.has(l)||this._elementObservables.set(l,new A(e=>{let t=this._resizeSubject.subscribe(e);return this._resizeObserver?.observe(l,{box:this._box}),()=>{this._resizeObserver?.unobserve(l),t.unsubscribe(),this._elementObservables.delete(l);}}).pipe(Ot$1(e=>e.some(t=>t.target===l)),Od({bufferSize:1,refCount:true}),Hy(this._destroyed))),this._elementObservables.get(l)}destroy(){this._destroyed.next(),this._destroyed.complete(),this._resizeSubject.complete(),this._elementObservables.clear();}},qe=(()=>{class i{_cleanupErrorListener;_observers=new Map;_ngZone=g(G);constructor(){}ngOnDestroy(){for(let[,e]of this._observers)e.destroy();this._observers.clear(),this._cleanupErrorListener?.();}observe(e,t){let n=t?.box||"content-box";return this._observers.has(n)||this._observers.set(n,new oe(n)),this._observers.get(n).observe(e)}static \u0275fac=function(t){return new(t||i)};static \u0275prov=Ce({token:i,factory:i.\u0275fac})}return i})();var ut=["notch"],ht=["*"],Ue=["iconPrefixContainer"],We=["textPrefixContainer"],Ge=["iconSuffixContainer"],$e=["textSuffixContainer"],pt=["textField"],_t=["*",[["mat-label"]],[["","matPrefix",""],["","matIconPrefix",""]],[["","matTextPrefix",""]],[["","matTextSuffix",""]],[["","matSuffix",""],["","matIconSuffix",""]],[["mat-error"],["","matError",""]],[["mat-hint",3,"align","end"]],[["mat-hint","align","end"]]],bt=["*","mat-label","[matPrefix], [matIconPrefix]","[matTextPrefix]","[matTextSuffix]","[matSuffix], [matIconSuffix]","mat-error, [matError]","mat-hint:not([align='end'])","mat-hint[align='end']"];function gt(i,l){i&1&&Sg(0,"span",21);}function vt(i,l){if(i&1&&(ws(0,"label",20),CC(1,1),oC(2,gt,1,0,"span",21),hl()),i&2){let e=EC(2);bg("floating",e._shouldLabelFloat())("monitorResize",e._hasOutline())("id",e._labelId),Tg("for",e._control.disableAutomaticLabeling?null:e._control.id),nI(2),iC(!e.hideRequiredMarker&&e._control.required?2:-1);}}function xt(i,l){if(i&1&&oC(0,vt,3,5,"label",20),i&2){let e=EC();iC(e._hasFloatingLabel()?0:-1);}}function yt(i,l){i&1&&Sg(0,"div",7);}function Ft(i,l){}function Ct(i,l){if(i&1&&Eg(0,Ft,0,0,"ng-template",13),i&2){EC(2);let e=MC(1);bg("ngTemplateOutlet",e);}}function wt(i,l){if(i&1&&(ws(0,"div",9),oC(1,Ct,1,1,null,13),hl()),i&2){let e=EC();bg("matFormFieldNotchedOutlineOpen",e._shouldLabelFloat()),nI(),iC(e._forceDisplayInfixLabel()?-1:1);}}function Mt(i,l){i&1&&(ws(0,"div",10,2),CC(2,2),hl());}function Et(i,l){i&1&&(ws(0,"div",11,3),CC(2,3),hl());}function St(i,l){}function Tt(i,l){if(i&1&&Eg(0,St,0,0,"ng-template",13),i&2){EC();let e=MC(1);bg("ngTemplateOutlet",e);}}function Rt(i,l){i&1&&(ws(0,"div",14,4),CC(2,4),hl());}function Dt(i,l){i&1&&(ws(0,"div",15,5),CC(2,5),hl());}function Nt(i,l){i&1&&Sg(0,"div",16);}function At(i,l){i&1&&(ws(0,"div",18),CC(1,6),hl());}function It(i,l){if(i&1&&(ws(0,"mat-hint",22),QC(1),hl()),i&2){let e=EC(2);bg("id",e._hintLabelId),nI(),Yg(e.hintLabel);}}function Lt(i,l){if(i&1&&(ws(0,"div",19),oC(1,It,2,2,"mat-hint",22),CC(2,7),Sg(3,"div",23),CC(4,8),hl()),i&2){let e=EC();nI(),iC(e.hintLabel?1:-1);}}var ae=(()=>{class i{static \u0275fac=function(t){return new(t||i)};static \u0275dir=js({type:i,selectors:[["mat-label"]]})}return i})(),kt=new w("MatError");var le=(()=>{class i{align="start";id=g(Ut$1).getId("mat-mdc-hint-");static \u0275fac=function(t){return new(t||i)};static \u0275dir=js({type:i,selectors:[["mat-hint"]],hostAttrs:[1,"mat-mdc-form-field-hint","mat-mdc-form-field-bottom-align"],hostVars:4,hostBindings:function(t,n){t&2&&(xg("id",n.id),Tg("align",null),Ug("mat-mdc-form-field-hint-end",n.align==="end"));},inputs:{align:"align",id:"id"}})}return i})(),et=new w("MatPrefix"),Ot=(()=>{class i{set _isTextSelector(e){this._isText=true;}_isText=false;static \u0275fac=function(t){return new(t||i)};static \u0275dir=js({type:i,selectors:[["","matPrefix",""],["","matIconPrefix",""],["","matTextPrefix",""]],inputs:{_isTextSelector:[0,"matTextPrefix","_isTextSelector"]},features:[sT([{provide:et,useExisting:i}])]})}return i})(),tt=new w("MatSuffix"),zt=(()=>{class i{set _isTextSelector(e){this._isText=true;}_isText=false;static \u0275fac=function(t){return new(t||i)};static \u0275dir=js({type:i,selectors:[["","matSuffix",""],["","matIconSuffix",""],["","matTextSuffix",""]],inputs:{_isTextSelector:[0,"matTextSuffix","_isTextSelector"]},features:[sT([{provide:tt,useExisting:i}])]})}return i})(),it=new w("FloatingLabelParent"),Ze=(()=>{class i{_elementRef=g(Kt);get floating(){return this._floating}set floating(e){this._floating=e,this.monitorResize&&this._handleResize();}_floating=false;get monitorResize(){return this._monitorResize}set monitorResize(e){this._monitorResize=e,this._monitorResize?this._subscribeToResize():this._resizeSubscription.unsubscribe();}_monitorResize=false;_resizeObserver=g(qe);_ngZone=g(G);_parent=g(it);_resizeSubscription=new X;ngOnDestroy(){this._resizeSubscription.unsubscribe();}getWidth(){return Pt(this._elementRef.nativeElement)}get element(){return this._elementRef.nativeElement}_handleResize(){setTimeout(()=>this._parent._handleLabelResized());}_subscribeToResize(){this._resizeSubscription.unsubscribe(),this._ngZone.runOutsideAngular(()=>{this._resizeSubscription=this._resizeObserver.observe(this._elementRef.nativeElement,{box:"border-box"}).subscribe(()=>this._handleResize());});}static \u0275fac=function(t){return new(t||i)};static \u0275dir=js({type:i,selectors:[["label","matFormFieldFloatingLabel",""]],hostAttrs:[1,"mdc-floating-label","mat-mdc-floating-label"],hostVars:2,hostBindings:function(t,n){t&2&&Ug("mdc-floating-label--float-above",n.floating);},inputs:{floating:"floating",monitorResize:"monitorResize"}})}return i})();function Pt(i){let l=i;if(l.offsetParent!==null)return l.scrollWidth;let e=l.cloneNode(true);e.style.setProperty("position","absolute"),e.style.setProperty("transform","translate(-9999px, -9999px)"),document.documentElement.appendChild(e);let t=e.scrollWidth;return e.remove(),t}var Qe="mdc-line-ripple--active",Z="mdc-line-ripple--deactivating",Xe=(()=>{class i{_elementRef=g(Kt);_cleanupTransitionEnd;constructor(){let e=g(G),t=g(Fs);e.runOutsideAngular(()=>{this._cleanupTransitionEnd=t.listen(this._elementRef.nativeElement,"transitionend",this._handleTransitionEnd);});}activate(){let e=this._elementRef.nativeElement.classList;e.remove(Z),e.add(Qe);}deactivate(){this._elementRef.nativeElement.classList.add(Z);}_handleTransitionEnd=e=>{let t=this._elementRef.nativeElement.classList,n=t.contains(Z);e.propertyName==="opacity"&&n&&t.remove(Qe,Z);};ngOnDestroy(){this._cleanupTransitionEnd();}static \u0275fac=function(t){return new(t||i)};static \u0275dir=js({type:i,selectors:[["div","matFormFieldLineRipple",""]],hostAttrs:[1,"mdc-line-ripple"]})}return i})(),Ye=(()=>{class i{_elementRef=g(Kt);_ngZone=g(G);open=false;_notch;ngAfterViewInit(){let e=this._elementRef.nativeElement,t=e.querySelector(".mdc-floating-label");t?(e.classList.add("mdc-notched-outline--upgraded"),typeof requestAnimationFrame=="function"&&(t.style.transitionDuration="0s",this._ngZone.runOutsideAngular(()=>{requestAnimationFrame(()=>t.style.transitionDuration="");}))):e.classList.add("mdc-notched-outline--no-label");}_setNotchWidth(e){let t=this._notch.nativeElement;!this.open||!e?t.style.width="":t.style.width=`calc(${e}px * var(--mat-mdc-form-field-floating-label-scale, 0.75) + 9px)`;}_setMaxWidth(e){this._notch.nativeElement.style.setProperty("--mat-form-field-notch-max-width",`calc(100% - ${e}px)`);}static \u0275fac=function(t){return new(t||i)};static \u0275cmp=Fw({type:i,selectors:[["div","matFormFieldNotchedOutline",""]],viewQuery:function(t,n){if(t&1&&Pg(ut,5),t&2){let r;bC(r=SC())&&(n._notch=r.first);}},hostAttrs:[1,"mdc-notched-outline"],hostVars:2,hostBindings:function(t,n){t&2&&Ug("mdc-notched-outline--notched",n.open);},inputs:{open:[0,"matFormFieldNotchedOutlineOpen","open"]},ngContentSelectors:ht,decls:5,vars:0,consts:[["notch",""],[1,"mat-mdc-notch-piece","mdc-notched-outline__leading"],[1,"mat-mdc-notch-piece","mdc-notched-outline__notch"],[1,"mat-mdc-notch-piece","mdc-notched-outline__trailing"]],template:function(t,n){t&1&&(wC(),_g(0,"div",1),gl(1,"div",2,0),CC(3),ml(),_g(4,"div",3));},encapsulation:2})}return i})(),de=(()=>{class i{value=null;stateChanges;id;placeholder;ngControl=null;focused=false;empty=false;shouldLabelFloat=false;required=false;disabled=false;errorState=false;controlType;autofilled;userAriaDescribedBy;disableAutomaticLabeling;describedByIds;static \u0275fac=function(t){return new(t||i)};static \u0275dir=js({type:i})}return i})();var se=new w("MatFormField"),Bt=new w("MAT_FORM_FIELD_DEFAULT_OPTIONS"),Ke="fill",Vt="auto",Je="fixed",Ht="translateY(-50%)",nt=(()=>{class i{_elementRef=g(Kt);_changeDetectorRef=g(bl);_platform=g(p);_idGenerator=g(Ut$1);_ngZone=g(G);_defaults=g(Bt,{optional:true});_currentDirection;_textField;_iconPrefixContainer;_textPrefixContainer;_iconSuffixContainer;_textSuffixContainer;_floatingLabel;_notchedOutline;_lineRipple;_iconPrefixContainerSignal=BB("iconPrefixContainer");_textPrefixContainerSignal=BB("textPrefixContainer");_iconSuffixContainerSignal=BB("iconSuffixContainer");_textSuffixContainerSignal=BB("textSuffixContainer");_prefixSuffixContainers=ET(()=>[this._iconPrefixContainerSignal(),this._textPrefixContainerSignal(),this._iconSuffixContainerSignal(),this._textSuffixContainerSignal()].map(e=>e?.nativeElement).filter(e=>e!==void 0));_formFieldControl;_prefixChildren;_suffixChildren;_errorChildren;_hintChildren;_labelChild=HB(ae);get hideRequiredMarker(){return this._hideRequiredMarker}set hideRequiredMarker(e){this._hideRequiredMarker=vi(e);}_hideRequiredMarker=false;color="primary";get floatLabel(){return this._floatLabel||this._defaults?.floatLabel||Vt}set floatLabel(e){e!==this._floatLabel&&(this._floatLabel=e,this._changeDetectorRef.markForCheck());}_floatLabel;get appearance(){return this._appearanceSignal()}set appearance(e){let t=e||this._defaults?.appearance||Ke;this._appearanceSignal.set(t);}_appearanceSignal=Gi(Ke);get subscriptSizing(){return this._subscriptSizing||this._defaults?.subscriptSizing||Je}set subscriptSizing(e){this._subscriptSizing=e||this._defaults?.subscriptSizing||Je;}_subscriptSizing=null;get hintLabel(){return this._hintLabel}set hintLabel(e){this._hintLabel=e,this._processHints();}_hintLabel="";_hasIconPrefix=false;_hasTextPrefix=false;_hasIconSuffix=false;_hasTextSuffix=false;_labelId=this._idGenerator.getId("mat-mdc-form-field-label-");_hintLabelId=this._idGenerator.getId("mat-mdc-hint-");_describedByIds;get _control(){return this._explicitFormFieldControl||this._formFieldControl}set _control(e){this._explicitFormFieldControl=e;}_destroyed=new ce$1;_isFocused=null;_explicitFormFieldControl;_previousControl=null;_previousControlValidatorFn=null;_stateChanges;_valueChanges;_describedByChanges;_outlineLabelOffsetResizeObserver=null;_animationsDisabled=K();constructor(){let e=this._defaults,t=g(Qn);e&&(e.appearance&&(this.appearance=e.appearance),this._hideRequiredMarker=!!e?.hideRequiredMarker,e.color&&(this.color=e.color)),Uf(()=>this._currentDirection=t.valueSignal()),this._syncOutlineLabelOffset();}ngAfterViewInit(){this._updateFocusState(),this._animationsDisabled||this._ngZone.runOutsideAngular(()=>{setTimeout(()=>{this._elementRef.nativeElement.classList.add("mat-form-field-animations-enabled");},300);}),this._changeDetectorRef.detectChanges();}ngAfterContentInit(){this._assertFormFieldControl(),this._initializeSubscript(),this._initializePrefixAndSuffix();}ngAfterContentChecked(){this._assertFormFieldControl(),this._control!==this._previousControl&&(this._initializeControl(this._previousControl),this._control.ngControl&&this._control.ngControl.control&&(this._previousControlValidatorFn=this._control.ngControl.control.validator),this._previousControl=this._control),this._control.ngControl&&this._control.ngControl.control&&this._control.ngControl.control.validator!==this._previousControlValidatorFn&&this._changeDetectorRef.markForCheck();}ngOnDestroy(){this._outlineLabelOffsetResizeObserver?.disconnect(),this._stateChanges?.unsubscribe(),this._valueChanges?.unsubscribe(),this._describedByChanges?.unsubscribe(),this._destroyed.next(),this._destroyed.complete();}getLabelId=ET(()=>this._hasFloatingLabel()?this._labelId:null);getConnectedOverlayOrigin(){return this._textField||this._elementRef}_animateAndLockLabel(){this._hasFloatingLabel()&&(this.floatLabel="always");}_initializeControl(e){let t=this._control,n="mat-mdc-form-field-type-";e&&this._elementRef.nativeElement.classList.remove(n+e.controlType),t.controlType&&this._elementRef.nativeElement.classList.add(n+t.controlType),this._stateChanges?.unsubscribe(),this._stateChanges=t.stateChanges.subscribe(()=>{this._updateFocusState(),this._changeDetectorRef.markForCheck();}),this._describedByChanges?.unsubscribe(),this._describedByChanges=t.stateChanges.pipe(Sd([void 0,void 0]),ue(()=>[t.errorState,t.userAriaDescribedBy]),ov(),Ot$1(([[r,a],[s,C]])=>r!==s||a!==C)).subscribe(()=>this._syncDescribedByIds()),this._valueChanges?.unsubscribe(),t.ngControl&&t.ngControl.valueChanges&&(this._valueChanges=t.ngControl.valueChanges.pipe(Hy(this._destroyed)).subscribe(()=>this._changeDetectorRef.markForCheck()));}_checkPrefixAndSuffixTypes(){this._hasIconPrefix=!!this._prefixChildren.find(e=>!e._isText),this._hasTextPrefix=!!this._prefixChildren.find(e=>e._isText),this._hasIconSuffix=!!this._suffixChildren.find(e=>!e._isText),this._hasTextSuffix=!!this._suffixChildren.find(e=>e._isText);}_initializePrefixAndSuffix(){this._checkPrefixAndSuffixTypes(),Qy(this._prefixChildren.changes,this._suffixChildren.changes).subscribe(()=>{this._checkPrefixAndSuffixTypes(),this._changeDetectorRef.markForCheck();});}_initializeSubscript(){this._hintChildren.changes.subscribe(()=>{this._processHints(),this._changeDetectorRef.markForCheck();}),this._errorChildren.changes.subscribe(()=>{this._syncDescribedByIds(),this._changeDetectorRef.markForCheck();}),this._validateHints(),this._syncDescribedByIds();}_assertFormFieldControl(){this._control;}_updateFocusState(){let e=this._control.focused;e&&!this._isFocused?(this._isFocused=true,this._lineRipple?.activate()):!e&&(this._isFocused||this._isFocused===null)&&(this._isFocused=false,this._lineRipple?.deactivate()),this._elementRef.nativeElement.classList.toggle("mat-focused",e),this._textField?.nativeElement.classList.toggle("mdc-text-field--focused",e);}_syncOutlineLabelOffset(){zB({earlyRead:()=>{if(this._appearanceSignal()!=="outline")return this._outlineLabelOffsetResizeObserver?.disconnect(),null;if(globalThis.ResizeObserver){this._outlineLabelOffsetResizeObserver||=new globalThis.ResizeObserver(()=>{this._writeOutlinedLabelStyles(this._getOutlinedLabelOffset());});for(let e of this._prefixSuffixContainers())this._outlineLabelOffsetResizeObserver.observe(e,{box:"border-box"});}return this._getOutlinedLabelOffset()},write:e=>this._writeOutlinedLabelStyles(e())});}_shouldAlwaysFloat(){return this.floatLabel==="always"}_hasOutline(){return this.appearance==="outline"}_forceDisplayInfixLabel(){return !this._platform.isBrowser&&this._prefixChildren.length&&!this._shouldLabelFloat()}_hasFloatingLabel=ET(()=>!!this._labelChild());_shouldLabelFloat(){return this._hasFloatingLabel()?this._control.shouldLabelFloat||this._shouldAlwaysFloat():false}_shouldForward(e){let t=this._control?this._control.ngControl:null;return t&&t[e]}_getSubscriptMessageType(){return this._errorChildren&&this._errorChildren.length>0&&this._control.errorState?"error":"hint"}_handleLabelResized(){this._refreshOutlineNotchWidth();}_refreshOutlineNotchWidth(){!this._hasOutline()||!this._floatingLabel||!this._shouldLabelFloat()?this._notchedOutline?._setNotchWidth(0):this._notchedOutline?._setNotchWidth(this._floatingLabel.getWidth());}_processHints(){this._validateHints(),this._syncDescribedByIds();}_validateHints(){this._hintChildren;}_syncDescribedByIds(){if(this._control){let e=[];if(this._control.userAriaDescribedBy&&typeof this._control.userAriaDescribedBy=="string"&&e.push(...this._control.userAriaDescribedBy.split(" ")),this._getSubscriptMessageType()==="hint"){let r=this._hintChildren?this._hintChildren.find(s=>s.align==="start"):null,a=this._hintChildren?this._hintChildren.find(s=>s.align==="end"):null;r?e.push(r.id):this._hintLabel&&e.push(this._hintLabelId),a&&e.push(a.id);}else this._errorChildren&&e.push(...this._errorChildren.map(r=>r.id));let t=this._control.describedByIds,n;if(t){let r=this._describedByIds||e;n=e.concat(t.filter(a=>a&&!r.includes(a)));}else n=e;this._control.setDescribedByIds(n),this._describedByIds=e;}}_getOutlinedLabelOffset(){if(!this._hasOutline()||!this._floatingLabel)return null;if(!this._iconPrefixContainer&&!this._textPrefixContainer)return ["",null];if(!this._isAttachedToDom())return null;let e=this._iconPrefixContainer?.nativeElement,t=this._textPrefixContainer?.nativeElement,n=this._iconSuffixContainer?.nativeElement,r=this._textSuffixContainer?.nativeElement,a=e?.getBoundingClientRect().width??0,s=t?.getBoundingClientRect().width??0,C=n?.getBoundingClientRect().width??0,M=r?.getBoundingClientRect().width??0,dt=this._currentDirection==="rtl"?"-1":"1",st=`${a+s}px`,ct=`calc(${dt} * (${st} + var(--mat-mdc-form-field-label-offset-x, 0px)))`,ft=`var(--mat-mdc-form-field-label-transform, ${Ht} translateX(${ct}))`,mt=a+s+C+M;return [ft,mt]}_writeOutlinedLabelStyles(e){if(e!==null){let[t,n]=e;this._floatingLabel&&(this._floatingLabel.element.style.transform=t),n!==null&&this._notchedOutline?._setMaxWidth(n);}}_isAttachedToDom(){let e=this._elementRef.nativeElement;if(e.getRootNode){let t=e.getRootNode();return t&&t!==e}return document.documentElement.contains(e)}static \u0275fac=function(t){return new(t||i)};static \u0275cmp=Fw({type:i,selectors:[["mat-form-field"]],contentQueries:function(t,n,r){if(t&1&&(Lg(r,n._labelChild,ae,5),Fg(r,de,5)(r,et,5)(r,tt,5)(r,kt,5)(r,le,5)),t&2){_C();let a;bC(a=SC())&&(n._formFieldControl=a.first),bC(a=SC())&&(n._prefixChildren=a),bC(a=SC())&&(n._suffixChildren=a),bC(a=SC())&&(n._errorChildren=a),bC(a=SC())&&(n._hintChildren=a);}},viewQuery:function(t,n){if(t&1&&(jg(n._iconPrefixContainerSignal,Ue,5)(n._textPrefixContainerSignal,We,5)(n._iconSuffixContainerSignal,Ge,5)(n._textSuffixContainerSignal,$e,5),Pg(pt,5)(Ue,5)(We,5)(Ge,5)($e,5)(Ze,5)(Ye,5)(Xe,5)),t&2){_C(4);let r;bC(r=SC())&&(n._textField=r.first),bC(r=SC())&&(n._iconPrefixContainer=r.first),bC(r=SC())&&(n._textPrefixContainer=r.first),bC(r=SC())&&(n._iconSuffixContainer=r.first),bC(r=SC())&&(n._textSuffixContainer=r.first),bC(r=SC())&&(n._floatingLabel=r.first),bC(r=SC())&&(n._notchedOutline=r.first),bC(r=SC())&&(n._lineRipple=r.first);}},hostAttrs:[1,"mat-mdc-form-field"],hostVars:38,hostBindings:function(t,n){t&2&&Ug("mat-mdc-form-field-label-always-float",n._shouldAlwaysFloat())("mat-mdc-form-field-has-icon-prefix",n._hasIconPrefix)("mat-mdc-form-field-has-icon-suffix",n._hasIconSuffix)("mat-form-field-invalid",n._control.errorState)("mat-form-field-disabled",n._control.disabled)("mat-form-field-autofilled",n._control.autofilled)("mat-form-field-appearance-fill",n.appearance=="fill")("mat-form-field-appearance-outline",n.appearance=="outline")("mat-form-field-hide-placeholder",n._hasFloatingLabel()&&!n._shouldLabelFloat())("mat-primary",n.color!=="accent"&&n.color!=="warn")("mat-accent",n.color==="accent")("mat-warn",n.color==="warn")("ng-untouched",n._shouldForward("untouched"))("ng-touched",n._shouldForward("touched"))("ng-pristine",n._shouldForward("pristine"))("ng-dirty",n._shouldForward("dirty"))("ng-valid",n._shouldForward("valid"))("ng-invalid",n._shouldForward("invalid"))("ng-pending",n._shouldForward("pending"));},inputs:{hideRequiredMarker:"hideRequiredMarker",color:"color",floatLabel:"floatLabel",appearance:"appearance",subscriptSizing:"subscriptSizing",hintLabel:"hintLabel"},exportAs:["matFormField"],features:[sT([{provide:se,useExisting:i},{provide:it,useExisting:i}])],ngContentSelectors:bt,decls:18,vars:21,consts:[["labelTemplate",""],["textField",""],["iconPrefixContainer",""],["textPrefixContainer",""],["textSuffixContainer",""],["iconSuffixContainer",""],[1,"mat-mdc-text-field-wrapper","mdc-text-field",3,"click"],[1,"mat-mdc-form-field-focus-overlay"],[1,"mat-mdc-form-field-flex"],["matFormFieldNotchedOutline","",3,"matFormFieldNotchedOutlineOpen"],[1,"mat-mdc-form-field-icon-prefix"],[1,"mat-mdc-form-field-text-prefix"],[1,"mat-mdc-form-field-infix"],[3,"ngTemplateOutlet"],[1,"mat-mdc-form-field-text-suffix"],[1,"mat-mdc-form-field-icon-suffix"],["matFormFieldLineRipple",""],["aria-atomic","true","aria-live","polite",1,"mat-mdc-form-field-subscript-wrapper","mat-mdc-form-field-bottom-align"],[1,"mat-mdc-form-field-error-wrapper"],[1,"mat-mdc-form-field-hint-wrapper"],["matFormFieldFloatingLabel","",3,"floating","monitorResize","id"],["aria-hidden","true",1,"mat-mdc-form-field-required-marker","mdc-floating-label--required"],[3,"id"],[1,"mat-mdc-form-field-hint-spacer"]],template:function(t,n){if(t&1&&(wC(_t),Eg(0,xt,1,1,"ng-template",null,0,mT),ws(2,"div",6,1),Rg("click",function(a){return n._control.onContainerClick(a)}),oC(4,yt,1,0,"div",7),ws(5,"div",8),oC(6,wt,2,2,"div",9),oC(7,Mt,3,0,"div",10),oC(8,Et,3,0,"div",11),ws(9,"div",12),oC(10,Tt,1,1,null,13),CC(11),hl(),oC(12,Rt,3,0,"div",14),oC(13,Dt,3,0,"div",15),hl(),oC(14,Nt,1,0,"div",16),hl(),ws(15,"div",17),oC(16,At,2,0,"div",18)(17,Lt,5,1,"div",19),hl()),t&2){let r;nI(2),Ug("mdc-text-field--filled",!n._hasOutline())("mdc-text-field--outlined",n._hasOutline())("mdc-text-field--no-label",!n._hasFloatingLabel())("mdc-text-field--disabled",n._control.disabled)("mdc-text-field--invalid",n._control.errorState),nI(2),iC(!n._hasOutline()&&!n._control.disabled?4:-1),nI(2),iC(n._hasOutline()?6:-1),nI(),iC(n._hasIconPrefix?7:-1),nI(),iC(n._hasTextPrefix?8:-1),nI(2),iC(!n._hasOutline()||n._forceDisplayInfixLabel()?10:-1),nI(2),iC(n._hasTextSuffix?12:-1),nI(),iC(n._hasIconSuffix?13:-1),nI(),iC(n._hasOutline()?-1:14),nI(),Ug("mat-mdc-form-field-subscript-dynamic-size",n.subscriptSizing==="dynamic");let a=n._getSubscriptMessageType();nI(),iC((r=a)==="error"?16:r==="hint"?17:-1);}},dependencies:[Ze,Ye,xb,Xe,le],styles:[`.mdc-text-field {
2
2
  display: inline-flex;
3
3
  align-items: baseline;
4
4
  padding: 0 16px;
@@ -947,7 +947,7 @@ select.mat-mdc-form-field-input-control:not(.mat-mdc-native-select-inline) optio
947
947
  .mdc-notched-outline--upgraded .mdc-floating-label--float-above {
948
948
  max-width: calc(133.3333333333% + 1px);
949
949
  }
950
- `],encapsulation:2})}return i})();var ce=(()=>{class i{static \u0275fac=function(t){return new(t||i)};static \u0275mod=Eo({type:i});static \u0275inj=qn({imports:[Se,nt,wt$1]})}return i})();var jt=(()=>{class i{static \u0275fac=function(t){return new(t||i)};static \u0275cmp=Rw({type:i,selectors:[["ng-component"]],hostAttrs:["cdk-text-field-style-loader",""],decls:0,vars:0,template:function(t,n){},styles:[`textarea.cdk-textarea-autosize {
950
+ `],encapsulation:2})}return i})();var ce=(()=>{class i{static \u0275fac=function(t){return new(t||i)};static \u0275mod=Eo({type:i});static \u0275inj=qn({imports:[Se,nt,wt$1]})}return i})();var jt=(()=>{class i{static \u0275fac=function(t){return new(t||i)};static \u0275cmp=Fw({type:i,selectors:[["ng-component"]],hostAttrs:["cdk-text-field-style-loader",""],decls:0,vars:0,template:function(t,n){},styles:[`textarea.cdk-textarea-autosize {
951
951
  resize: none;
952
952
  }
953
953
 
@@ -973,4 +973,4 @@ textarea.cdk-textarea-autosize-measuring-firefox {
973
973
  .cdk-text-field-autofill-monitored:not(:-webkit-autofill) {
974
974
  animation: cdk-text-field-autofill-end 0s 1ms;
975
975
  }
976
- `],encapsulation:2})}return i})(),qt={passive:true},rt=(()=>{class i{_platform=g(p);_ngZone=g(G);_renderer=g(_n).createRenderer(null,null);_styleLoader=g(D);_monitoredElements=new Map;monitor(e){if(!this._platform.isBrowser)return sn;this._styleLoader.load(jt);let t=R(e),n=this._monitoredElements.get(t);if(n)return n.subject;let r=new ce$1,a="cdk-text-field-autofilled",s=M=>{M.animationName==="cdk-text-field-autofill-start"&&!t.classList.contains(a)?(t.classList.add(a),this._ngZone.run(()=>r.next({target:M.target,isAutofilled:true}))):M.animationName==="cdk-text-field-autofill-end"&&t.classList.contains(a)&&(t.classList.remove(a),this._ngZone.run(()=>r.next({target:M.target,isAutofilled:false})));},C=this._ngZone.runOutsideAngular(()=>(t.classList.add("cdk-text-field-autofill-monitored"),this._renderer.listen(t,"animationstart",s,qt)));return this._monitoredElements.set(t,{subject:r,unlisten:C}),r}stopMonitoring(e){let t=R(e),n=this._monitoredElements.get(t);n&&(n.unlisten(),n.subject.complete(),t.classList.remove("cdk-text-field-autofill-monitored"),t.classList.remove("cdk-text-field-autofilled"),this._monitoredElements.delete(t));}ngOnDestroy(){this._monitoredElements.forEach((e,t)=>this.stopMonitoring(t));}static \u0275fac=function(t){return new(t||i)};static \u0275prov=Ce({token:i,factory:i.\u0275fac})}return i})();var ot=(()=>{class i{static \u0275fac=function(t){return new(t||i)};static \u0275mod=Eo({type:i});static \u0275inj=qn({})}return i})();var at=new w("");var lt=new w("MAT_INPUT_VALUE_ACCESSOR");var Ut=["button","checkbox","file","hidden","image","radio","range","reset","submit"],Wt=new w("MAT_INPUT_CONFIG"),Sn=(()=>{class i{_elementRef=g(Kt);_platform=g(p);ngControl=g(_,{optional:true,self:true});_autofillMonitor=g(rt);_ngZone=g(G);_formField=g(se,{optional:true});_renderer=g(ks);_uid=g(Ut$1).getId("mat-input-");_previousNativeValue;_inputValueAccessor;_signalBasedValueAccessor;_previousPlaceholder=null;_errorStateTracker;_config=g(Wt,{optional:true});_cleanupIosKeyup;_cleanupWebkitWheel;_isServer=false;_isNativeSelect=false;_isTextarea=false;_isInFormField=false;focused=false;stateChanges=new ce$1;controlType="mat-input";autofilled=false;get disabled(){return this._disabled}set disabled(e){this._disabled=vi(e),this.focused&&(this.focused=false,this.stateChanges.next());}_disabled=false;get id(){return this._id}set id(e){this._id=e||this._uid;}_id;placeholder;name;get required(){return this._required??this.ngControl?.control?.hasValidator(_e.required)??false}set required(e){this._required=vi(e);}_required;get type(){return this._type}set type(e){this._type=e||"text",this._validateType(),!this._isTextarea&&si().has(this._type)&&(this._elementRef.nativeElement.type=this._type);}_type="text";get errorStateMatcher(){return this._errorStateTracker.matcher}set errorStateMatcher(e){this._errorStateTracker.matcher=e;}userAriaDescribedBy;get value(){return this._signalBasedValueAccessor?this._signalBasedValueAccessor.value():this._inputValueAccessor.value}set value(e){e!==this.value&&(this._signalBasedValueAccessor?this._signalBasedValueAccessor.value.set(e):this._inputValueAccessor.value=e,this.stateChanges.next());}get readonly(){return this._readonly}set readonly(e){this._readonly=vi(e);}_readonly=false;disabledInteractive;get errorState(){return this._errorStateTracker.errorState}set errorState(e){this._errorStateTracker.errorState=e;}_neverEmptyInputTypes=["date","datetime","datetime-local","month","time","week"].filter(e=>si().has(e));constructor(){let e=g(an,{optional:true}),t=g(En,{optional:true}),n=g(We$1),r=g(lt,{optional:true,self:true}),a=g(at,{optional:true,self:true}),s=this._elementRef.nativeElement,C=s.nodeName.toLowerCase();r?Jr(r.value)?this._signalBasedValueAccessor=r:this._inputValueAccessor=r:this._inputValueAccessor=s,this._previousNativeValue=this.value,this.id=this.id,this._platform.IOS&&this._ngZone.runOutsideAngular(()=>{this._cleanupIosKeyup=this._renderer.listen(s,"keyup",this._iOSKeyupListener);}),this._errorStateTracker=new Qt(n,a||this.ngControl,t,e,this.stateChanges),this._isServer=!this._platform.isBrowser,this._isNativeSelect=C==="select",this._isTextarea=C==="textarea",this._isInFormField=!!this._formField,this.disabledInteractive=this._config?.disabledInteractive||false,this._isNativeSelect&&(this.controlType=s.multiple?"mat-native-select-multiple":"mat-native-select"),this._signalBasedValueAccessor&&Hf(()=>{this._signalBasedValueAccessor.value(),this.stateChanges.next();});}ngAfterViewInit(){this._platform.isBrowser&&this._autofillMonitor.monitor(this._elementRef.nativeElement).subscribe(e=>{this.autofilled=e.isAutofilled,this.stateChanges.next();});}ngOnChanges(){this.stateChanges.next();}ngOnDestroy(){this.stateChanges.complete(),this._platform.isBrowser&&this._autofillMonitor.stopMonitoring(this._elementRef.nativeElement),this._cleanupIosKeyup?.(),this._cleanupWebkitWheel?.();}ngDoCheck(){this.ngControl&&(this.updateErrorState(),this.ngControl.disabled!==null&&this.ngControl.disabled!==this.disabled&&(this.disabled=this.ngControl.disabled,this.stateChanges.next())),this._dirtyCheckNativeValue(),this._dirtyCheckPlaceholder();}focus(e){this._elementRef.nativeElement.focus(e);}updateErrorState(){this._errorStateTracker.updateErrorState();}_focusChanged(e){if(e!==this.focused){if(!this._isNativeSelect&&e&&this.disabled&&this.disabledInteractive){let t=this._elementRef.nativeElement;t.type==="number"?(t.type="text",t.setSelectionRange(0,0),t.type="number"):t.setSelectionRange(0,0);}this.focused=e,this.stateChanges.next();}}_onInput(){}_dirtyCheckNativeValue(){let e=this._elementRef.nativeElement.value;this._previousNativeValue!==e&&(this._previousNativeValue=e,this.stateChanges.next());}_dirtyCheckPlaceholder(){let e=this._getPlaceholder();if(e!==this._previousPlaceholder){let t=this._elementRef.nativeElement;this._previousPlaceholder=e,e?t.setAttribute("placeholder",e):t.removeAttribute("placeholder");}}_getPlaceholder(){return this.placeholder||null}_validateType(){Ut.indexOf(this._type)>-1;}_isNeverEmpty(){return this._neverEmptyInputTypes.indexOf(this._type)>-1}_isBadInput(){let e=this._elementRef.nativeElement.validity;return e&&e.badInput}get empty(){return !this._isNeverEmpty()&&!this._elementRef.nativeElement.value&&!this._isBadInput()&&!this.autofilled}get shouldLabelFloat(){if(this._isNativeSelect){let e=this._elementRef.nativeElement,t=e.options[0];return this.focused||e.multiple||!this.empty||!!(e.selectedIndex>-1&&t&&t.label)}else return this.focused&&!this.disabled||!this.empty}get describedByIds(){return this._elementRef.nativeElement.getAttribute("aria-describedby")?.split(" ")||[]}setDescribedByIds(e){let t=this._elementRef.nativeElement;e.length?t.setAttribute("aria-describedby",e.join(" ")):t.removeAttribute("aria-describedby");}onContainerClick(){this.focused||this.focus();}_isInlineSelect(){let e=this._elementRef.nativeElement;return this._isNativeSelect&&(e.multiple||e.size>1)}_iOSKeyupListener=e=>{let t=e.target;!t.value&&t.selectionStart===0&&t.selectionEnd===0&&(t.setSelectionRange(1,1),t.setSelectionRange(0,0));};_getReadonlyAttribute(){return this._isNativeSelect?null:this.readonly||this.disabled&&this.disabledInteractive?"true":null}static \u0275fac=function(t){return new(t||i)};static \u0275dir=Ls({type:i,selectors:[["input","matInput",""],["textarea","matInput",""],["select","matNativeControl",""],["input","matNativeControl",""],["textarea","matNativeControl",""]],hostAttrs:[1,"mat-mdc-input-element"],hostVars:21,hostBindings:function(t,n){t&1&&Ag("focus",function(){return n._focusChanged(true)})("blur",function(){return n._focusChanged(false)})("input",function(){return n._onInput()}),t&2&&(Ng("id",n.id)("disabled",n.disabled&&!n.disabledInteractive)("required",n.required),Cg("name",n.name||null)("readonly",n._getReadonlyAttribute())("aria-disabled",n.disabled&&n.disabledInteractive?"true":null)("aria-invalid",n.empty&&n.required?null:n.errorState)("aria-required",n.required)("id",n.id),Hg("mat-input-server",n._isServer)("mat-mdc-form-field-textarea-control",n._isInFormField&&n._isTextarea)("mat-mdc-form-field-input-control",n._isInFormField)("mat-mdc-input-disabled-interactive",n.disabledInteractive)("mdc-text-field__input",n._isInFormField)("mat-mdc-native-select-inline",n._isInlineSelect()));},inputs:{disabled:"disabled",id:"id",placeholder:"placeholder",name:"name",required:"required",type:"type",errorStateMatcher:"errorStateMatcher",userAriaDescribedBy:[0,"aria-describedby","userAriaDescribedBy"],value:"value",readonly:"readonly",disabledInteractive:[2,"disabledInteractive","disabledInteractive",QT]},exportAs:["matInput"],features:[rT([{provide:de,useExisting:i}]),Tu]})}return i})(),Tn=(()=>{class i{static \u0275fac=function(t){return new(t||i)};static \u0275mod=Eo({type:i});static \u0275inj=qn({imports:[ce,ce,ot,wt$1]})}return i})();export{Ot as O,Sn as S,Tn as T,ae as a,at as b,ce as c,de as d,le as l,nt as n,se as s,zt as z};
976
+ `],encapsulation:2})}return i})(),qt={passive:true},rt=(()=>{class i{_platform=g(p);_ngZone=g(G);_renderer=g(_n).createRenderer(null,null);_styleLoader=g(D);_monitoredElements=new Map;monitor(e){if(!this._platform.isBrowser)return sn;this._styleLoader.load(jt);let t=R(e),n=this._monitoredElements.get(t);if(n)return n.subject;let r=new ce$1,a="cdk-text-field-autofilled",s=M=>{M.animationName==="cdk-text-field-autofill-start"&&!t.classList.contains(a)?(t.classList.add(a),this._ngZone.run(()=>r.next({target:M.target,isAutofilled:true}))):M.animationName==="cdk-text-field-autofill-end"&&t.classList.contains(a)&&(t.classList.remove(a),this._ngZone.run(()=>r.next({target:M.target,isAutofilled:false})));},C=this._ngZone.runOutsideAngular(()=>(t.classList.add("cdk-text-field-autofill-monitored"),this._renderer.listen(t,"animationstart",s,qt)));return this._monitoredElements.set(t,{subject:r,unlisten:C}),r}stopMonitoring(e){let t=R(e),n=this._monitoredElements.get(t);n&&(n.unlisten(),n.subject.complete(),t.classList.remove("cdk-text-field-autofill-monitored"),t.classList.remove("cdk-text-field-autofilled"),this._monitoredElements.delete(t));}ngOnDestroy(){this._monitoredElements.forEach((e,t)=>this.stopMonitoring(t));}static \u0275fac=function(t){return new(t||i)};static \u0275prov=Ce({token:i,factory:i.\u0275fac})}return i})();var ot=(()=>{class i{static \u0275fac=function(t){return new(t||i)};static \u0275mod=Eo({type:i});static \u0275inj=qn({})}return i})();var at=new w("");var lt=new w("MAT_INPUT_VALUE_ACCESSOR");var Ut=["button","checkbox","file","hidden","image","radio","range","reset","submit"],Wt=new w("MAT_INPUT_CONFIG"),Sn=(()=>{class i{_elementRef=g(Kt);_platform=g(p);ngControl=g(_,{optional:true,self:true});_autofillMonitor=g(rt);_ngZone=g(G);_formField=g(se,{optional:true});_renderer=g(Fs);_uid=g(Ut$1).getId("mat-input-");_previousNativeValue;_inputValueAccessor;_signalBasedValueAccessor;_previousPlaceholder=null;_errorStateTracker;_config=g(Wt,{optional:true});_cleanupIosKeyup;_cleanupWebkitWheel;_isServer=false;_isNativeSelect=false;_isTextarea=false;_isInFormField=false;focused=false;stateChanges=new ce$1;controlType="mat-input";autofilled=false;get disabled(){return this._disabled}set disabled(e){this._disabled=vi(e),this.focused&&(this.focused=false,this.stateChanges.next());}_disabled=false;get id(){return this._id}set id(e){this._id=e||this._uid;}_id;placeholder;name;get required(){return this._required??this.ngControl?.control?.hasValidator(_e.required)??false}set required(e){this._required=vi(e);}_required;get type(){return this._type}set type(e){this._type=e||"text",this._validateType(),!this._isTextarea&&si().has(this._type)&&(this._elementRef.nativeElement.type=this._type);}_type="text";get errorStateMatcher(){return this._errorStateTracker.matcher}set errorStateMatcher(e){this._errorStateTracker.matcher=e;}userAriaDescribedBy;get value(){return this._signalBasedValueAccessor?this._signalBasedValueAccessor.value():this._inputValueAccessor.value}set value(e){e!==this.value&&(this._signalBasedValueAccessor?this._signalBasedValueAccessor.value.set(e):this._inputValueAccessor.value=e,this.stateChanges.next());}get readonly(){return this._readonly}set readonly(e){this._readonly=vi(e);}_readonly=false;disabledInteractive;get errorState(){return this._errorStateTracker.errorState}set errorState(e){this._errorStateTracker.errorState=e;}_neverEmptyInputTypes=["date","datetime","datetime-local","month","time","week"].filter(e=>si().has(e));constructor(){let e=g(an,{optional:true}),t=g(En,{optional:true}),n=g(We$1),r=g(lt,{optional:true,self:true}),a=g(at,{optional:true,self:true}),s=this._elementRef.nativeElement,C=s.nodeName.toLowerCase();r?Jr(r.value)?this._signalBasedValueAccessor=r:this._inputValueAccessor=r:this._inputValueAccessor=s,this._previousNativeValue=this.value,this.id=this.id,this._platform.IOS&&this._ngZone.runOutsideAngular(()=>{this._cleanupIosKeyup=this._renderer.listen(s,"keyup",this._iOSKeyupListener);}),this._errorStateTracker=new Qt(n,a||this.ngControl,t,e,this.stateChanges),this._isServer=!this._platform.isBrowser,this._isNativeSelect=C==="select",this._isTextarea=C==="textarea",this._isInFormField=!!this._formField,this.disabledInteractive=this._config?.disabledInteractive||false,this._isNativeSelect&&(this.controlType=s.multiple?"mat-native-select-multiple":"mat-native-select"),this._signalBasedValueAccessor&&Uf(()=>{this._signalBasedValueAccessor.value(),this.stateChanges.next();});}ngAfterViewInit(){this._platform.isBrowser&&this._autofillMonitor.monitor(this._elementRef.nativeElement).subscribe(e=>{this.autofilled=e.isAutofilled,this.stateChanges.next();});}ngOnChanges(){this.stateChanges.next();}ngOnDestroy(){this.stateChanges.complete(),this._platform.isBrowser&&this._autofillMonitor.stopMonitoring(this._elementRef.nativeElement),this._cleanupIosKeyup?.(),this._cleanupWebkitWheel?.();}ngDoCheck(){this.ngControl&&(this.updateErrorState(),this.ngControl.disabled!==null&&this.ngControl.disabled!==this.disabled&&(this.disabled=this.ngControl.disabled,this.stateChanges.next())),this._dirtyCheckNativeValue(),this._dirtyCheckPlaceholder();}focus(e){this._elementRef.nativeElement.focus(e);}updateErrorState(){this._errorStateTracker.updateErrorState();}_focusChanged(e){if(e!==this.focused){if(!this._isNativeSelect&&e&&this.disabled&&this.disabledInteractive){let t=this._elementRef.nativeElement;t.type==="number"?(t.type="text",t.setSelectionRange(0,0),t.type="number"):t.setSelectionRange(0,0);}this.focused=e,this.stateChanges.next();}}_onInput(){}_dirtyCheckNativeValue(){let e=this._elementRef.nativeElement.value;this._previousNativeValue!==e&&(this._previousNativeValue=e,this.stateChanges.next());}_dirtyCheckPlaceholder(){let e=this._getPlaceholder();if(e!==this._previousPlaceholder){let t=this._elementRef.nativeElement;this._previousPlaceholder=e,e?t.setAttribute("placeholder",e):t.removeAttribute("placeholder");}}_getPlaceholder(){return this.placeholder||null}_validateType(){Ut.indexOf(this._type)>-1;}_isNeverEmpty(){return this._neverEmptyInputTypes.indexOf(this._type)>-1}_isBadInput(){let e=this._elementRef.nativeElement.validity;return e&&e.badInput}get empty(){return !this._isNeverEmpty()&&!this._elementRef.nativeElement.value&&!this._isBadInput()&&!this.autofilled}get shouldLabelFloat(){if(this._isNativeSelect){let e=this._elementRef.nativeElement,t=e.options[0];return this.focused||e.multiple||!this.empty||!!(e.selectedIndex>-1&&t&&t.label)}else return this.focused&&!this.disabled||!this.empty}get describedByIds(){return this._elementRef.nativeElement.getAttribute("aria-describedby")?.split(" ")||[]}setDescribedByIds(e){let t=this._elementRef.nativeElement;e.length?t.setAttribute("aria-describedby",e.join(" ")):t.removeAttribute("aria-describedby");}onContainerClick(){this.focused||this.focus();}_isInlineSelect(){let e=this._elementRef.nativeElement;return this._isNativeSelect&&(e.multiple||e.size>1)}_iOSKeyupListener=e=>{let t=e.target;!t.value&&t.selectionStart===0&&t.selectionEnd===0&&(t.setSelectionRange(1,1),t.setSelectionRange(0,0));};_getReadonlyAttribute(){return this._isNativeSelect?null:this.readonly||this.disabled&&this.disabledInteractive?"true":null}static \u0275fac=function(t){return new(t||i)};static \u0275dir=js({type:i,selectors:[["input","matInput",""],["textarea","matInput",""],["select","matNativeControl",""],["input","matNativeControl",""],["textarea","matNativeControl",""]],hostAttrs:[1,"mat-mdc-input-element"],hostVars:21,hostBindings:function(t,n){t&1&&Rg("focus",function(){return n._focusChanged(true)})("blur",function(){return n._focusChanged(false)})("input",function(){return n._onInput()}),t&2&&(xg("id",n.id)("disabled",n.disabled&&!n.disabledInteractive)("required",n.required),Tg("name",n.name||null)("readonly",n._getReadonlyAttribute())("aria-disabled",n.disabled&&n.disabledInteractive?"true":null)("aria-invalid",n.empty&&n.required?null:n.errorState)("aria-required",n.required)("id",n.id),Ug("mat-input-server",n._isServer)("mat-mdc-form-field-textarea-control",n._isInFormField&&n._isTextarea)("mat-mdc-form-field-input-control",n._isInFormField)("mat-mdc-input-disabled-interactive",n.disabledInteractive)("mdc-text-field__input",n._isInFormField)("mat-mdc-native-select-inline",n._isInlineSelect()));},inputs:{disabled:"disabled",id:"id",placeholder:"placeholder",name:"name",required:"required",type:"type",errorStateMatcher:"errorStateMatcher",userAriaDescribedBy:[0,"aria-describedby","userAriaDescribedBy"],value:"value",readonly:"readonly",disabledInteractive:[2,"disabledInteractive","disabledInteractive",JT]},exportAs:["matInput"],features:[sT([{provide:de,useExisting:i}]),bu]})}return i})(),Tn=(()=>{class i{static \u0275fac=function(t){return new(t||i)};static \u0275mod=Eo({type:i});static \u0275inj=qn({imports:[ce,ce,ot,wt$1]})}return i})();export{Ot as O,Sn as S,Tn as T,ae as a,at as b,ce as c,de as d,le as l,nt as n,se as s,zt as z};
@@ -1,2 +1,2 @@
1
- import {R}from'./chunk-DYE131qf.js';import {g,ao as V,G,dm as k,w as we,z as zi,y as yT,S as By,a7 as ya,X as br,c as U,h as Rw,I as Is,A as Ag,q as qC,m as pl,t as tC,J as JE,v as nC,a9 as fC,a3 as UI,o as iC,ac as yC,T as Tg,a6 as zI,x as sC,a5 as vl,a8 as Zg,H as Hg,b0 as Yg,aa as If,ab as wf}from'./main-6K2UFGD2.js';import'./chunk-uPxETzZs.js';import {t as ti,Q as Qn,e as ei,Y as Ye,A as At,Z as Zn,c as cn}from'./chunk-C9tuHQmZ.js';import'./chunk-DXDohTwX.js';import'./chunk-nWqZHM4o.js';import'./chunk-l0HLnBLv.js';import'./chunk-DTIhOEG_.js';var $=(i,e)=>e.id;function J(i,e){i&1&&(Is(0,"p",5),qC(1,"Loading\u2026"),pl());}function q(i,e){if(i&1&&(Is(0,"p",8),qC(1),pl()),i&2){let t=yC(2);JE(),Zg(t.errorMessage());}}function Q(i,e){if(i&1&&(Is(0,"span",26),qC(1),pl()),i&2){let t=yC(3);JE(),Zg(t.association()?.checkoutFailureReason);}}function W(i,e){if(i&1&&(Is(0,"p",25),qC(1),tC(2,Q,2,1,"span",26),pl()),i&2){let t=yC(2);Hg("namespace-git__status--failed",t.checkoutStatus()==="FAILED")("namespace-git__status--ready",t.checkoutStatus()==="READY"),JE(),vl(" Repository: ",t.checkoutStatus()," "),JE(),nC(t.association()?.checkoutFailureReason?2:-1);}}function X(i,e){if(i&1&&(Is(0,"option",19),qC(1),pl()),i&2){let t=e.$implicit,l=yC(2);Tg("value",t.id),JE(),Yg("",t.name," (",l.authTypeLabel(t.authType),")");}}function Z(i,e){i&1&&(Is(0,"span",20),qC(1," No usable auth setting in this namespace. Create a BEARER_TOKEN one first. "),pl());}function ee(i,e){if(i&1){let t=fC();Is(0,"button",27),Ag("click",function(){If(t);let c=yC(2);return wf(c.remove())}),qC(1," Remove association "),pl();}if(i&2){let t=yC(2);Tg("disabled",t.isSaving());}}function te(i,e){if(i&1){let t=fC();Is(0,"div",6)(1,"p",7),qC(2," Associate a repository with this namespace and prepare an internal clone. Namespace files remain shared documents outside Git. "),pl(),tC(3,q,2,1,"p",8),tC(4,W,3,6,"p",9),Is(5,"fieldset",10)(6,"legend",11),qC(7,"Repository"),pl(),Is(8,"label",12)(9,"span",13),qC(10,"Repository URL"),pl(),Is(11,"input",14),Ag("ngModelChange",function(c){If(t);let v=yC();return wf(v.repositoryUrl.set(c))}),pl(),UI(),Is(12,"span",15),qC(13,"HTTPS only, without credentials in the URL."),pl()(),Is(14,"label",12)(15,"span",13),qC(16,"Main branch"),pl(),Is(17,"input",16),Ag("ngModelChange",function(c){If(t);let v=yC();return wf(v.mainBranch.set(c))}),pl(),UI(),Is(18,"span",15),qC(19,"The internal clone starts from this remote branch."),pl()(),Is(20,"label",12)(21,"span",13),qC(22,"Service account"),pl(),Is(23,"select",17),Ag("ngModelChange",function(c){If(t);let v=yC();return wf(v.serviceAuthSettingId.set(c))}),Is(24,"option",18),qC(25,"Select an auth setting\u2026"),pl(),iC(26,X,2,3,"option",19,$),pl(),UI(),Is(28,"span",15),qC(29," Shared by the namespace. Every Git operation uses this identity, never the identity of whoever opened the case. "),pl(),tC(30,Z,2,0,"span",20),pl()(),Is(31,"div",21)(32,"button",22),Ag("click",function(){If(t);let c=yC();return wf(c.save())}),qC(33),pl(),tC(34,ee,2,1,"button",23),Is(35,"button",24),Ag("click",function(){If(t);let c=yC();return wf(c.cancel())}),qC(36,"Cancel"),pl()()();}if(i&2){let t=yC();JE(3),nC(t.errorMessage()?3:-1),JE(),nC(t.isAssociated()&&t.checkoutStatus()?4:-1),JE(7),Tg("ngModel",t.repositoryUrl()),zI(),JE(6),Tg("ngModel",t.mainBranch()),zI(),JE(6),Tg("ngModel",t.serviceAuthSettingId()),zI(),JE(3),sC(t.eligibleAuthSettings()),JE(4),nC(t.eligibleAuthSettings().length===0?30:-1),JE(2),Tg("disabled",!t.canSave()),JE(),vl(" ",t.isSaving()?"Saving\u2026":t.isAssociated()?"Update":"Associate"," "),JE(),nC(t.isAssociated()?34:-1);}}var ne=["BearerTokenAuthSetting","BasicAuthAuthSetting","ApiKeyAuthSetting"],ie={BearerTokenAuthSetting:"token",BasicAuthAuthSetting:"basic auth",ApiKeyAuthSetting:"API key"},j=class i{route=g(V);router=g(G);gitApi=g(k);authSettingState=g(R);destroyRef=g(we);isLoading=zi(true);isSaving=zi(false);errorMessage=zi(null);association=zi(null);authSettings=zi([]);repositoryUrl=zi("");mainBranch=zi("main");serviceAuthSettingId=zi("");namespaceId="";isAssociated=yT(()=>this.association()?.associated===true);eligibleAuthSettings=yT(()=>this.authSettings().filter(e=>ne.includes(e.authType)));authTypeLabel(e){return ie[e??""]??e??"unknown"}canSave=yT(()=>this.repositoryUrl().trim().length>0&&this.serviceAuthSettingId().length>0&&!this.isSaving());checkoutStatus=yT(()=>this.association()?.checkoutStatus??null);ngOnInit(){this.namespaceId=this.route.snapshot.paramMap.get("namespaceId")??"",this.load();}load(){this.isLoading.set(true),By({association:this.gitApi.getAssociationNamespaceGit(this.namespaceId).pipe(ya(e=>(console.error("Failed to load the Git association",e),this.errorMessage.set(this.messageOf(e)),br(null)))),authSettings:this.authSettingState.loadNamespaceSettings(this.namespaceId).pipe(ya(e=>(console.error("Failed to load namespace auth settings",e),br([]))))}).pipe(U(this.destroyRef)).subscribe(({association:e,authSettings:t})=>{this.authSettings.set(t??[]),e&&(this.association.set(e),this.applyToForm(e)),this.isLoading.set(false);});}applyToForm(e){this.repositoryUrl.set(e.repositoryUrl??""),this.mainBranch.set(e.mainBranch??"main"),this.serviceAuthSettingId.set(e.serviceAuthSettingId??"");}save(){this.canSave()&&(this.isSaving.set(true),this.errorMessage.set(null),this.gitApi.setAssociationNamespaceGit(this.namespaceId,{repositoryUrl:this.repositoryUrl().trim(),mainBranch:this.mainBranch().trim()||void 0,serviceAuthSettingId:this.serviceAuthSettingId()}).pipe(U(this.destroyRef),ya(e=>(console.error("Failed to save the Git association",e),this.errorMessage.set(this.messageOf(e)),this.isSaving.set(false),br(null)))).subscribe(e=>{e&&(this.association.set(e),this.applyToForm(e)),this.isSaving.set(false);}));}remove(){confirm("Remove the repository association? The internal clone is preserved.")&&(this.isSaving.set(true),this.gitApi.removeAssociationNamespaceGit(this.namespaceId).pipe(U(this.destroyRef),ya(e=>(console.error("Failed to remove the Git association",e),this.errorMessage.set(this.messageOf(e)),this.isSaving.set(false),br(null)))).subscribe(e=>{e&&(this.association.set(e),this.applyToForm(e)),this.isSaving.set(false);}));}cancel(){this.router.navigate(["/agentos/namespaces"]);}messageOf(e){return e.error?.message??e.message??"Unexpected error"}static \u0275fac=function(t){return new(t||i)};static \u0275cmp=Rw({type:i,selectors:[["agentos-namespace-git"]],decls:10,vars:1,consts:[[1,"namespace-git"],[1,"namespace-git__header"],["type","button","title","Back to namespaces",1,"namespace-git__back",3,"click"],[1,"namespace-git__back-icon"],[1,"namespace-git__title"],[1,"namespace-git__loading"],[1,"namespace-git__body"],[1,"namespace-git__hint"],["role","alert",1,"namespace-git__error"],[1,"namespace-git__status",3,"namespace-git__status--failed","namespace-git__status--ready"],[1,"namespace-git__section"],[1,"namespace-git__label"],[1,"namespace-git__field"],[1,"namespace-git__field-label"],["type","url","placeholder","https://forge.example/org/project.git","name","repositoryUrl",1,"namespace-git__input",3,"ngModelChange","ngModel"],[1,"namespace-git__field-hint"],["type","text","placeholder","main","name","mainBranch",1,"namespace-git__input",3,"ngModelChange","ngModel"],["name","serviceAuthSettingId",1,"namespace-git__input",3,"ngModelChange","ngModel"],["value",""],[3,"value"],[1,"namespace-git__field-hint","namespace-git__field-hint--warn"],[1,"namespace-git__actions"],["type","button",1,"namespace-git__save",3,"click","disabled"],["type","button",1,"namespace-git__remove",3,"disabled"],["type","button",1,"namespace-git__cancel",3,"click"],[1,"namespace-git__status"],[1,"namespace-git__status-reason"],["type","button",1,"namespace-git__remove",3,"click","disabled"]],template:function(t,l){t&1&&(Is(0,"div",0)(1,"header",1)(2,"button",2),Ag("click",function(){return l.cancel()}),Is(3,"span",3),qC(4,"\u2190"),pl(),qC(5," Namespaces "),pl(),Is(6,"h1",4),qC(7,"Git repository"),pl()(),tC(8,J,2,0,"p",5)(9,te,37,9,"div",6),pl()),t&2&&(JE(8),nC(l.isLoading()?8:9));},dependencies:[ti,Qn,ei,Ye,At,Zn,cn],styles:[".namespace-git[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:2rem;max-width:560px;margin:0 auto;padding:2rem 1rem}.namespace-git__header[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.5rem}.namespace-git__back[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:.375rem;background:none;border:none;padding:0;cursor:pointer;font-size:.875rem;color:var(--color-primary, #007aff);font-family:inherit}.namespace-git__back[_ngcontent-%COMP%]:hover{text-decoration:underline}.namespace-git__title[_ngcontent-%COMP%]{margin:0;font-size:1.5rem}.namespace-git__body[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:1.5rem}.namespace-git__hint[_ngcontent-%COMP%]{margin:0;font-size:.875rem;color:var(--color-text-secondary, #6b7280)}.namespace-git__error[_ngcontent-%COMP%]{margin:0;padding:.75rem;border-radius:.375rem;background:var(--red-bg, #fef2f2);color:var(--color-error, #b91c1c);font-size:.875rem}.namespace-git__status[_ngcontent-%COMP%]{margin:0;padding:.5rem .75rem;border-radius:.375rem;background:var(--color-surface-secondary, #f3f4f6);font-size:.875rem;display:flex;flex-direction:column;gap:.25rem}.namespace-git__status--ready[_ngcontent-%COMP%]{background:var(--color-success-bg, #ecfdf5);color:var(--color-success, #047857)}.namespace-git__status--failed[_ngcontent-%COMP%]{background:var(--red-bg, #fef2f2);color:var(--color-error, #b91c1c)}.namespace-git__status-reason[_ngcontent-%COMP%]{font-size:.8125rem;opacity:.9}.namespace-git__section[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:1rem;border:1px solid var(--color-border, #e5e7eb);border-radius:.5rem;padding:1rem;margin:0}.namespace-git__label[_ngcontent-%COMP%]{font-weight:600;font-size:.9375rem;padding:0 .25rem}.namespace-git__field[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.375rem}.namespace-git__field-label[_ngcontent-%COMP%]{font-size:.875rem;font-weight:500}.namespace-git__field-hint[_ngcontent-%COMP%]{font-size:.8125rem;color:var(--color-text-secondary, #6b7280)}.namespace-git__field-hint--warn[_ngcontent-%COMP%]{color:var(--color-warning, #b45309)}.namespace-git__input[_ngcontent-%COMP%]{font-family:inherit;font-size:.875rem;padding:.5rem .625rem;border:1px solid var(--color-border, #e5e7eb);border-radius:.375rem;background:var(--color-surface, #fff);color:inherit}.namespace-git__actions[_ngcontent-%COMP%]{display:flex;gap:.75rem;align-items:center}.namespace-git__save[_ngcontent-%COMP%], .namespace-git__remove[_ngcontent-%COMP%], .namespace-git__cancel[_ngcontent-%COMP%]{font-family:inherit;font-size:.875rem;padding:.5rem 1rem;border-radius:.375rem;cursor:pointer;border:1px solid transparent}.namespace-git__save[_ngcontent-%COMP%]:disabled, .namespace-git__remove[_ngcontent-%COMP%]:disabled, .namespace-git__cancel[_ngcontent-%COMP%]:disabled{opacity:.5;cursor:not-allowed}.namespace-git__save[_ngcontent-%COMP%]{background:var(--color-primary, #007aff);color:var(--color-text-on-accent, #fff)}.namespace-git__remove[_ngcontent-%COMP%]{background:none;border-color:var(--color-error, #b91c1c);color:var(--color-error, #b91c1c)}.namespace-git__cancel[_ngcontent-%COMP%]{background:none;border-color:var(--color-border, #e5e7eb);color:inherit}"]})};
1
+ import {R}from'./chunk-rwEyLSEP.js';import {g,ao as V,G,dm as k,w as we,a as Gi,E as ET,W as Vy,a7 as va,X as br,c as U,h as Fw,m as ws,o as Rg,Q as QC,n as hl,q as oC,t as nI,x as iC,a9 as gC,a3 as GI,r as cC,ac as EC,v as bg,a6 as qI,y as uC,a5 as Dl,a8 as Yg,A as Ug,b0 as Qg,aa as wf,ab as Cf}from'./main-5PAOSHSM.js';import'./chunk-BY7uKZAo.js';import {t as ti,Q as Qn,e as ei,Y as Ye,A as At,Z as Zn,c as cn}from'./chunk-tTmeIHGS.js';import'./chunk-BEUXx3TO.js';import'./chunk-kvCfAm7Z.js';import'./chunk-CtkiOUdU.js';import'./chunk-S8F5_Te_.js';var $=(i,e)=>e.id;function J(i,e){i&1&&(ws(0,"p",5),QC(1,"Loading\u2026"),hl());}function q(i,e){if(i&1&&(ws(0,"p",8),QC(1),hl()),i&2){let t=EC(2);nI(),Yg(t.errorMessage());}}function Q(i,e){if(i&1&&(ws(0,"span",26),QC(1),hl()),i&2){let t=EC(3);nI(),Yg(t.association()?.checkoutFailureReason);}}function W(i,e){if(i&1&&(ws(0,"p",25),QC(1),oC(2,Q,2,1,"span",26),hl()),i&2){let t=EC(2);Ug("namespace-git__status--failed",t.checkoutStatus()==="FAILED")("namespace-git__status--ready",t.checkoutStatus()==="READY"),nI(),Dl(" Repository: ",t.checkoutStatus()," "),nI(),iC(t.association()?.checkoutFailureReason?2:-1);}}function X(i,e){if(i&1&&(ws(0,"option",19),QC(1),hl()),i&2){let t=e.$implicit,l=EC(2);bg("value",t.id),nI(),Qg("",t.name," (",l.authTypeLabel(t.authType),")");}}function Z(i,e){i&1&&(ws(0,"span",20),QC(1," No usable auth setting in this namespace. Create a BEARER_TOKEN one first. "),hl());}function ee(i,e){if(i&1){let t=gC();ws(0,"button",27),Rg("click",function(){wf(t);let c=EC(2);return Cf(c.remove())}),QC(1," Remove association "),hl();}if(i&2){let t=EC(2);bg("disabled",t.isSaving());}}function te(i,e){if(i&1){let t=gC();ws(0,"div",6)(1,"p",7),QC(2," Associate a repository with this namespace and prepare an internal clone. Namespace files remain shared documents outside Git. "),hl(),oC(3,q,2,1,"p",8),oC(4,W,3,6,"p",9),ws(5,"fieldset",10)(6,"legend",11),QC(7,"Repository"),hl(),ws(8,"label",12)(9,"span",13),QC(10,"Repository URL"),hl(),ws(11,"input",14),Rg("ngModelChange",function(c){wf(t);let v=EC();return Cf(v.repositoryUrl.set(c))}),hl(),GI(),ws(12,"span",15),QC(13,"HTTPS only, without credentials in the URL."),hl()(),ws(14,"label",12)(15,"span",13),QC(16,"Main branch"),hl(),ws(17,"input",16),Rg("ngModelChange",function(c){wf(t);let v=EC();return Cf(v.mainBranch.set(c))}),hl(),GI(),ws(18,"span",15),QC(19,"The internal clone starts from this remote branch."),hl()(),ws(20,"label",12)(21,"span",13),QC(22,"Service account"),hl(),ws(23,"select",17),Rg("ngModelChange",function(c){wf(t);let v=EC();return Cf(v.serviceAuthSettingId.set(c))}),ws(24,"option",18),QC(25,"Select an auth setting\u2026"),hl(),cC(26,X,2,3,"option",19,$),hl(),GI(),ws(28,"span",15),QC(29," Shared by the namespace. Every Git operation uses this identity, never the identity of whoever opened the case. "),hl(),oC(30,Z,2,0,"span",20),hl()(),ws(31,"div",21)(32,"button",22),Rg("click",function(){wf(t);let c=EC();return Cf(c.save())}),QC(33),hl(),oC(34,ee,2,1,"button",23),ws(35,"button",24),Rg("click",function(){wf(t);let c=EC();return Cf(c.cancel())}),QC(36,"Cancel"),hl()()();}if(i&2){let t=EC();nI(3),iC(t.errorMessage()?3:-1),nI(),iC(t.isAssociated()&&t.checkoutStatus()?4:-1),nI(7),bg("ngModel",t.repositoryUrl()),qI(),nI(6),bg("ngModel",t.mainBranch()),qI(),nI(6),bg("ngModel",t.serviceAuthSettingId()),qI(),nI(3),uC(t.eligibleAuthSettings()),nI(4),iC(t.eligibleAuthSettings().length===0?30:-1),nI(2),bg("disabled",!t.canSave()),nI(),Dl(" ",t.isSaving()?"Saving\u2026":t.isAssociated()?"Update":"Associate"," "),nI(),iC(t.isAssociated()?34:-1);}}var ne=["BearerTokenAuthSetting","BasicAuthAuthSetting","ApiKeyAuthSetting"],ie={BearerTokenAuthSetting:"token",BasicAuthAuthSetting:"basic auth",ApiKeyAuthSetting:"API key"},j=class i{route=g(V);router=g(G);gitApi=g(k);authSettingState=g(R);destroyRef=g(we);isLoading=Gi(true);isSaving=Gi(false);errorMessage=Gi(null);association=Gi(null);authSettings=Gi([]);repositoryUrl=Gi("");mainBranch=Gi("main");serviceAuthSettingId=Gi("");namespaceId="";isAssociated=ET(()=>this.association()?.associated===true);eligibleAuthSettings=ET(()=>this.authSettings().filter(e=>ne.includes(e.authType)));authTypeLabel(e){return ie[e??""]??e??"unknown"}canSave=ET(()=>this.repositoryUrl().trim().length>0&&this.serviceAuthSettingId().length>0&&!this.isSaving());checkoutStatus=ET(()=>this.association()?.checkoutStatus??null);ngOnInit(){this.namespaceId=this.route.snapshot.paramMap.get("namespaceId")??"",this.load();}load(){this.isLoading.set(true),Vy({association:this.gitApi.getAssociationNamespaceGit(this.namespaceId).pipe(va(e=>(console.error("Failed to load the Git association",e),this.errorMessage.set(this.messageOf(e)),br(null)))),authSettings:this.authSettingState.loadNamespaceSettings(this.namespaceId).pipe(va(e=>(console.error("Failed to load namespace auth settings",e),br([]))))}).pipe(U(this.destroyRef)).subscribe(({association:e,authSettings:t})=>{this.authSettings.set(t??[]),e&&(this.association.set(e),this.applyToForm(e)),this.isLoading.set(false);});}applyToForm(e){this.repositoryUrl.set(e.repositoryUrl??""),this.mainBranch.set(e.mainBranch??"main"),this.serviceAuthSettingId.set(e.serviceAuthSettingId??"");}save(){this.canSave()&&(this.isSaving.set(true),this.errorMessage.set(null),this.gitApi.setAssociationNamespaceGit(this.namespaceId,{repositoryUrl:this.repositoryUrl().trim(),mainBranch:this.mainBranch().trim()||void 0,serviceAuthSettingId:this.serviceAuthSettingId()}).pipe(U(this.destroyRef),va(e=>(console.error("Failed to save the Git association",e),this.errorMessage.set(this.messageOf(e)),this.isSaving.set(false),br(null)))).subscribe(e=>{e&&(this.association.set(e),this.applyToForm(e)),this.isSaving.set(false);}));}remove(){confirm("Remove the repository association? The internal clone is preserved.")&&(this.isSaving.set(true),this.gitApi.removeAssociationNamespaceGit(this.namespaceId).pipe(U(this.destroyRef),va(e=>(console.error("Failed to remove the Git association",e),this.errorMessage.set(this.messageOf(e)),this.isSaving.set(false),br(null)))).subscribe(e=>{e&&(this.association.set(e),this.applyToForm(e)),this.isSaving.set(false);}));}cancel(){this.router.navigate(["/agentos/namespaces"]);}messageOf(e){return e.error?.message??e.message??"Unexpected error"}static \u0275fac=function(t){return new(t||i)};static \u0275cmp=Fw({type:i,selectors:[["agentos-namespace-git"]],decls:10,vars:1,consts:[[1,"namespace-git"],[1,"namespace-git__header"],["type","button","title","Back to namespaces",1,"namespace-git__back",3,"click"],[1,"namespace-git__back-icon"],[1,"namespace-git__title"],[1,"namespace-git__loading"],[1,"namespace-git__body"],[1,"namespace-git__hint"],["role","alert",1,"namespace-git__error"],[1,"namespace-git__status",3,"namespace-git__status--failed","namespace-git__status--ready"],[1,"namespace-git__section"],[1,"namespace-git__label"],[1,"namespace-git__field"],[1,"namespace-git__field-label"],["type","url","placeholder","https://forge.example/org/project.git","name","repositoryUrl",1,"namespace-git__input",3,"ngModelChange","ngModel"],[1,"namespace-git__field-hint"],["type","text","placeholder","main","name","mainBranch",1,"namespace-git__input",3,"ngModelChange","ngModel"],["name","serviceAuthSettingId",1,"namespace-git__input",3,"ngModelChange","ngModel"],["value",""],[3,"value"],[1,"namespace-git__field-hint","namespace-git__field-hint--warn"],[1,"namespace-git__actions"],["type","button",1,"namespace-git__save",3,"click","disabled"],["type","button",1,"namespace-git__remove",3,"disabled"],["type","button",1,"namespace-git__cancel",3,"click"],[1,"namespace-git__status"],[1,"namespace-git__status-reason"],["type","button",1,"namespace-git__remove",3,"click","disabled"]],template:function(t,l){t&1&&(ws(0,"div",0)(1,"header",1)(2,"button",2),Rg("click",function(){return l.cancel()}),ws(3,"span",3),QC(4,"\u2190"),hl(),QC(5," Namespaces "),hl(),ws(6,"h1",4),QC(7,"Git repository"),hl()(),oC(8,J,2,0,"p",5)(9,te,37,9,"div",6),hl()),t&2&&(nI(8),iC(l.isLoading()?8:9));},dependencies:[ti,Qn,ei,Ye,At,Zn,cn],styles:[".namespace-git[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:2rem;max-width:560px;margin:0 auto;padding:2rem 1rem}.namespace-git__header[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.5rem}.namespace-git__back[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:.375rem;background:none;border:none;padding:0;cursor:pointer;font-size:.875rem;color:var(--color-primary, #007aff);font-family:inherit}.namespace-git__back[_ngcontent-%COMP%]:hover{text-decoration:underline}.namespace-git__title[_ngcontent-%COMP%]{margin:0;font-size:1.5rem}.namespace-git__body[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:1.5rem}.namespace-git__hint[_ngcontent-%COMP%]{margin:0;font-size:.875rem;color:var(--color-text-secondary, #6b7280)}.namespace-git__error[_ngcontent-%COMP%]{margin:0;padding:.75rem;border-radius:.375rem;background:var(--red-bg, #fef2f2);color:var(--color-error, #b91c1c);font-size:.875rem}.namespace-git__status[_ngcontent-%COMP%]{margin:0;padding:.5rem .75rem;border-radius:.375rem;background:var(--color-surface-secondary, #f3f4f6);font-size:.875rem;display:flex;flex-direction:column;gap:.25rem}.namespace-git__status--ready[_ngcontent-%COMP%]{background:var(--color-success-bg, #ecfdf5);color:var(--color-success, #047857)}.namespace-git__status--failed[_ngcontent-%COMP%]{background:var(--red-bg, #fef2f2);color:var(--color-error, #b91c1c)}.namespace-git__status-reason[_ngcontent-%COMP%]{font-size:.8125rem;opacity:.9}.namespace-git__section[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:1rem;border:1px solid var(--color-border, #e5e7eb);border-radius:.5rem;padding:1rem;margin:0}.namespace-git__label[_ngcontent-%COMP%]{font-weight:600;font-size:.9375rem;padding:0 .25rem}.namespace-git__field[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.375rem}.namespace-git__field-label[_ngcontent-%COMP%]{font-size:.875rem;font-weight:500}.namespace-git__field-hint[_ngcontent-%COMP%]{font-size:.8125rem;color:var(--color-text-secondary, #6b7280)}.namespace-git__field-hint--warn[_ngcontent-%COMP%]{color:var(--color-warning, #b45309)}.namespace-git__input[_ngcontent-%COMP%]{font-family:inherit;font-size:.875rem;padding:.5rem .625rem;border:1px solid var(--color-border, #e5e7eb);border-radius:.375rem;background:var(--color-surface, #fff);color:inherit}.namespace-git__actions[_ngcontent-%COMP%]{display:flex;gap:.75rem;align-items:center}.namespace-git__save[_ngcontent-%COMP%], .namespace-git__remove[_ngcontent-%COMP%], .namespace-git__cancel[_ngcontent-%COMP%]{font-family:inherit;font-size:.875rem;padding:.5rem 1rem;border-radius:.375rem;cursor:pointer;border:1px solid transparent}.namespace-git__save[_ngcontent-%COMP%]:disabled, .namespace-git__remove[_ngcontent-%COMP%]:disabled, .namespace-git__cancel[_ngcontent-%COMP%]:disabled{opacity:.5;cursor:not-allowed}.namespace-git__save[_ngcontent-%COMP%]{background:var(--color-primary, #007aff);color:var(--color-text-on-accent, #fff)}.namespace-git__remove[_ngcontent-%COMP%]{background:none;border-color:var(--color-error, #b91c1c);color:var(--color-error, #b91c1c)}.namespace-git__cancel[_ngcontent-%COMP%]{background:none;border-color:var(--color-border, #e5e7eb);color:inherit}"]})};
2
2
  export{j as NamespaceGitComponent};
@@ -0,0 +1 @@
1
+ import {I}from'./chunk-Bhq5earA.js';import {m}from'./chunk-BY7uKZAo.js';import {g,G,w as we,aJ as Tr,a as Gi,bS as Da,u as ue,c as U,h as Fw,aK as Ob,m as ws,bf as dT,o as Rg,n as hl,af as Eg,M as MC,v as bg,bg as pT,ah as aT,q as oC,ac as EC,x as iC,a9 as gC,aa as wf,ab as Cf,ag as mT}from'./main-5PAOSHSM.js';import {W as Wn,S as Se}from'./chunk-CtkiOUdU.js';import'./chunk-S8F5_Te_.js';import'./chunk-tTmeIHGS.js';import'./chunk-kvCfAm7Z.js';var F=()=>[];function N(o,e){if(o&1){let t=gC();ws(0,"agentos-prompt-item",4),Rg("deleteRequested",function(n){wf(t);let E=EC(2);return Cf(E.deletePrompt(n))}),hl();}o&2&&bg("prompt",e)("platformMode",true);}function V(o,e){if(o&1&&oC(0,N,1,2,"agentos-prompt-item",3),o&2){let t,r=e.$implicit,n=EC();iC((t=n.resolvePrompt(r.id))?0:-1,t);}}var q=class o{router=g(G);destroyRef=g(we);promptState=g(m);refresh$=new Tr(void 0);isLoading=Gi(true);prompts$=this.refresh$.pipe(Da(()=>(this.isLoading.set(true),this.promptState.listPlatform())));promptItems$=this.prompts$.pipe(ue(e=>e.map(t=>({id:t.id??"",name:t.name,description:t.description}))));promptsById=new Map;constructor(){this.prompts$.pipe(U(this.destroyRef)).subscribe({next:e=>{this.promptsById=new Map(e.map(t=>[t.id??"",t])),this.isLoading.set(false);},error:()=>this.isLoading.set(false)});}goBack(){this.router.navigate(["/agentos","admin"]);}openCreateForm(){this.router.navigate(["/agentos","admin","prompts","new"]);}deletePrompt(e){this.promptState.delete(e.id??"").pipe(U(this.destroyRef)).subscribe(()=>this.refresh$.next());}resolvePrompt(e){return this.promptsById.get(e)??null}static \u0275fac=function(t){return new(t||o)};static \u0275cmp=Fw({type:o,selectors:[["agentos-platform-prompts"]],decls:5,vars:7,consts:[["promptItemTpl",""],["title","Platform Prompts","emptyMessage","No platform prompts defined yet. Add one above.","cardMinWidth","400px",3,"createRequested","items","loading","showCreate","itemTemplate"],["toolbar-start","","icon","arrow_back","title","Back",3,"action"],[3,"prompt","platformMode"],[3,"deleteRequested","prompt","platformMode"]],template:function(t,r){if(t&1&&(ws(0,"ds-entity-list",1),dT(1,"async"),Rg("createRequested",function(){return r.openCreateForm()}),ws(2,"ds-icon-button",2),Rg("action",function(){return r.goBack()}),hl()(),Eg(3,V,1,1,"ng-template",null,0,mT)),t&2){let n=MC(4);bg("items",pT(1,4,r.promptItems$)??aT(6,F))("loading",r.isLoading())("showCreate",true)("itemTemplate",n);}},dependencies:[Wn,I,Se,Ob],styles:[".platform-prompts__back[_ngcontent-%COMP%]{background:none;border:none;padding:0;cursor:pointer;font-size:.875rem;color:var(--color-primary, #007aff);font-family:inherit}.platform-prompts__back[_ngcontent-%COMP%]:hover{text-decoration:underline}"]})};export{q as PlatformPromptsComponent};
@@ -1 +1 @@
1
- import {p}from'./chunk-uPxETzZs.js';import {g,ao as V,M as dy,d4 as y,h as Rw,aw as hl,q as qC,ax as gl,J as JE,a8 as Zg}from'./main-6K2UFGD2.js';import'./chunk-nWqZHM4o.js';import'./chunk-l0HLnBLv.js';import'./chunk-DTIhOEG_.js';import'./chunk-C9tuHQmZ.js';var A=class r{route=g(V);http=g(dy);config=g(y);message="Authentication in progress\u2026";ngOnInit(){let e=this.route.snapshot.queryParamMap.get("code"),t=this.route.snapshot.queryParamMap.get("state"),o=this.route.snapshot.queryParamMap.get("error"),i=this.route.snapshot.queryParamMap.get("error_description");if(o){console.warn("[AgentOS OAuth Callback] OAuth error:",o,i),this.notifyParentAndClose({success:false,error:i||o});return}if(!e){console.error("[AgentOS OAuth Callback] Missing authorization code"),this.message="OAuth callback error: missing authorization code.",this.notifyParentAndClose({success:false,error:"Missing authorization code"});return}this.http.post(`${this.config.basePath}/api/oauth/callback`,{code:e,state:t}).subscribe({next:()=>{console.log("[AgentOS OAuth Callback] Backend callback resolved"),this.notifyParentAndClose({success:true});},error:a=>{console.error("[AgentOS OAuth Callback] Backend callback failed:",a),this.notifyParentAndClose({success:false,error:a?.error?.message||a?.message||"Token exchange failed"});}});}notifyParentAndClose(e){if(this.message=e.success?"Authentication complete. You can close this window.":`Authentication failed: ${e.error??"unknown error"}. You can close this window.`,window.opener)try{window.opener.postMessage(e,window.location.origin);}catch(t){console.error("[AgentOS OAuth Callback] postMessage failed:",t),localStorage.setItem(p,JSON.stringify(e));}else console.warn("[AgentOS OAuth Callback] No window.opener \u2014 localStorage fallback"),localStorage.setItem(p,JSON.stringify(e));setTimeout(()=>window.close(),1e3);}static \u0275fac=function(t){return new(t||r)};static \u0275cmp=Rw({type:r,selectors:[["agentos-oauth-callback"]],decls:2,vars:1,consts:[[2,"font-family","sans-serif","padding","2rem","text-align","center"]],template:function(t,o){t&1&&(hl(0,"p",0),qC(1),gl()),t&2&&(JE(),Zg(o.message));},encapsulation:2,changeDetection:1})};export{A as OAuthCallbackComponent};
1
+ import {p}from'./chunk-BY7uKZAo.js';import {g,ao as V,I as fy,d4 as y,h as Fw,aw as gl,Q as QC,ax as ml,t as nI,a8 as Yg}from'./main-5PAOSHSM.js';import'./chunk-kvCfAm7Z.js';import'./chunk-CtkiOUdU.js';import'./chunk-S8F5_Te_.js';import'./chunk-tTmeIHGS.js';var A=class r{route=g(V);http=g(fy);config=g(y);message="Authentication in progress\u2026";ngOnInit(){let e=this.route.snapshot.queryParamMap.get("code"),t=this.route.snapshot.queryParamMap.get("state"),o=this.route.snapshot.queryParamMap.get("error"),i=this.route.snapshot.queryParamMap.get("error_description");if(o){console.warn("[AgentOS OAuth Callback] OAuth error:",o,i),this.notifyParentAndClose({success:false,error:i||o});return}if(!e){console.error("[AgentOS OAuth Callback] Missing authorization code"),this.message="OAuth callback error: missing authorization code.",this.notifyParentAndClose({success:false,error:"Missing authorization code"});return}this.http.post(`${this.config.basePath}/api/oauth/callback`,{code:e,state:t}).subscribe({next:()=>{console.log("[AgentOS OAuth Callback] Backend callback resolved"),this.notifyParentAndClose({success:true});},error:a=>{console.error("[AgentOS OAuth Callback] Backend callback failed:",a),this.notifyParentAndClose({success:false,error:a?.error?.message||a?.message||"Token exchange failed"});}});}notifyParentAndClose(e){if(this.message=e.success?"Authentication complete. You can close this window.":`Authentication failed: ${e.error??"unknown error"}. You can close this window.`,window.opener)try{window.opener.postMessage(e,window.location.origin);}catch(t){console.error("[AgentOS OAuth Callback] postMessage failed:",t),localStorage.setItem(p,JSON.stringify(e));}else console.warn("[AgentOS OAuth Callback] No window.opener \u2014 localStorage fallback"),localStorage.setItem(p,JSON.stringify(e));setTimeout(()=>window.close(),1e3);}static \u0275fac=function(t){return new(t||r)};static \u0275cmp=Fw({type:r,selectors:[["agentos-oauth-callback"]],decls:2,vars:1,consts:[[2,"font-family","sans-serif","padding","2rem","text-align","center"]],template:function(t,o){t&1&&(gl(0,"p",0),QC(1),ml()),t&2&&(nI(),Yg(o.message));},encapsulation:2,changeDetection:1})};export{A as OAuthCallbackComponent};
@@ -1 +1 @@
1
- import {m}from'./chunk-uPxETzZs.js';import {g,ao as V,G,w as we,d8 as B,z as zi,c as U,a7 as ya,X as br,a as z$1,b as P,h as Rw,I as Is,A as Ag,q as qC,m as pl,t as tC,J as JE,a5 as vl,a8 as Zg,v as nC,a9 as fC,n as bg,a3 as UI,o as iC,bo as rC,ac as yC,T as Tg,H as Hg,a6 as zI,x as sC,aa as If,ab as wf}from'./main-6K2UFGD2.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,Z as Zn,l as Xn,C as Cn,E as En,p as An,q as Ct,V as Vt}from'./chunk-C9tuHQmZ.js';import'./chunk-nWqZHM4o.js';import'./chunk-l0HLnBLv.js';import'./chunk-DTIhOEG_.js';var ne=(i,t)=>t.id;function ie(i,t){i&1&&(Is(0,"p",5),qC(1,"Loading\u2026"),pl());}function ae(i,t){i&1&&(Is(0,"span",12),qC(1,"Name is required."),pl());}function le(i,t){if(i&1&&(Is(0,"p",32),qC(1),pl(),Is(2,"span",26),qC(3,"Agent Config cannot be changed after creation."),pl()),i&2){let e=yC(3);JE(),Zg(e.resolveAgentConfigName(e.agentConfigIdControl.value));}}function me(i,t){if(i&1&&(Is(0,"option",34),qC(1),pl()),i&2){let e=t.$implicit;Tg("ngValue",e.id),JE(),Zg(e.name);}}function pe(i,t){if(i&1&&(Is(0,"select",33)(1,"option",34),qC(2,"\u2014 None \u2014"),pl(),iC(3,me,2,2,"option",34,ne),pl(),UI(),Is(5,"span",26),qC(6,"Optional. Links this prompt to an agent as a starter. Immutable after creation."),pl()),i&2){let e=yC(3);Tg("formControl",e.agentConfigIdControl),zI(),JE(),Tg("ngValue",null),JE(2),sC(e.availableAgentConfigs());}}function de(i,t){if(i&1&&(Is(0,"div",8)(1,"label",31),qC(2,"Agent Config"),pl(),tC(3,le,4,1)(4,pe,7,2),pl()),i&2){let e=yC(2);JE(3),nC(e.isEditMode()&&e.agentConfigIdControl.value?3:e.isEditMode()?-1:4);}}function ce(i,t){i&1&&(Is(0,"p",19),qC(1,"No parameters defined."),pl());}function se(i,t){i&1&&(Is(0,"span",12),qC(1,"Parameter name is required."),pl());}function _e(i,t){if(i&1){let e=fC();Is(0,"div",20)(1,"div",35)(2,"div",36)(3,"label",37),qC(4,"Name "),Is(5,"span",10),qC(6,"*"),pl()(),bg(7,"input",38),UI(),tC(8,se,2,0,"span",12),pl(),Is(9,"div",36)(10,"label",37),qC(11,"Description"),pl(),bg(12,"input",39),UI(),pl(),Is(13,"div",36)(14,"label",37),qC(15,"Default value"),pl(),bg(16,"input",40),UI(),pl()(),Is(17,"button",41),Ag("click",function(){let m=If(e).$index,d=yC(2);return wf(d.removeParameter(m))}),qC(18," \xD7 "),pl()();}if(i&2){let e=t.$implicit,l=t.$index;Tg("formGroupName",l),JE(3),Tg("for","param-name-"+l),JE(4),Hg("prompt-form__input--invalid",e.controls.name.invalid&&e.controls.name.touched),Tg("id","param-name-"+l),zI(),JE(),nC(e.controls.name.invalid&&e.controls.name.touched?8:-1),JE(2),Tg("for","param-desc-"+l),JE(2),Tg("id","param-desc-"+l),zI(),JE(2),Tg("for","param-default-"+l),JE(2),Tg("id","param-default-"+l),zI();}}function fe(i,t){i&1&&(Is(0,"span",12),qC(1,"Content entry must not be blank."),pl());}function ue(i,t){if(i&1){let e=fC();Is(0,"div",22)(1,"span",42),qC(2),pl(),Is(3,"div",43),bg(4,"textarea",44),UI(),tC(5,fe,2,0,"span",12),pl(),Is(6,"button",45),Ag("click",function(){let m=If(e).$index,d=yC(2);return wf(d.removeContentEntry(m))}),qC(7," \xD7 "),pl()();}if(i&2){let e=t.$implicit,l=t.$index,m=yC(2);JE(2),Zg(l+1),JE(2),Hg("prompt-form__textarea--invalid",e.invalid&&e.touched),Tg("formControlName",l),zI(),JE(),nC(e.invalid&&e.touched?5:-1),JE(),Tg("disabled",m.contentArray.length===1);}}function ge(i,t){if(i&1&&(Is(0,"p",23),qC(1),pl()),i&2){let e=yC(2);JE(),Zg(e.errorMessage());}}function Ce(i,t){i&1&&(Is(0,"span",12),qC(1,"Invalid JSON."),pl());}function xe(i,t){if(i&1){let e=fC();Is(0,"button",46),Ag("click",function(){If(e);let m=yC(2);return wf(m.exportYaml())}),qC(1),pl();}if(i&2){let e=yC(2);Tg("disabled",e.isExporting()),JE(),vl(" ",e.isExporting()?"Exporting\u2026":"Export as YAML"," ");}}function ve(i,t){if(i&1){let e=fC();Is(0,"form",7),Ag("ngSubmit",function(){If(e);let m=yC();return wf(m.submit())}),Is(1,"div",8)(2,"label",9),qC(3,"Name "),Is(4,"span",10),qC(5,"*"),pl()(),bg(6,"input",11),UI(),tC(7,ae,2,0,"span",12),pl(),Is(8,"div",8)(9,"label",13),qC(10,"Description"),pl(),bg(11,"input",14),UI(),pl(),tC(12,de,5,1,"div",8),Is(13,"fieldset",15)(14,"legend",16),qC(15," Parameters "),Is(16,"span",17),qC(17,"Named placeholders used in content"),pl()(),Is(18,"p",18),qC(19," Each parameter must have a name and a default value. Use "),Is(20,"code"),qC(21),pl(),qC(22," in content entries to reference them. "),pl(),tC(23,ce,2,0,"p",19),iC(24,_e,19,10,"div",20,rC),Is(26,"button",21),Ag("click",function(){If(e);let m=yC();return wf(m.addParameter())}),qC(27,"+ Add parameter"),pl()(),Is(28,"fieldset",15)(29,"legend",16),qC(30," Content "),Is(31,"span",10),qC(32,"*"),pl(),Is(33,"span",17),qC(34,"Ordered list of text commands"),pl()(),Is(35,"p",18),qC(36," Each content entry is a command. Use "),Is(37,"code"),qC(38,"@AgentName"),pl(),qC(39," to target an agent, "),Is(40,"code"),qC(41,"/promptName param1 param2"),pl(),qC(42," to call another prompt, and "),Is(43,"code"),qC(44),pl(),qC(45," for parameter placeholders. "),pl(),iC(46,ue,8,6,"div",22,rC),Is(48,"button",21),Ag("click",function(){If(e);let m=yC();return wf(m.addContentEntry())}),qC(49,"+ Add content entry"),pl()(),tC(50,ge,2,1,"p",23),Is(51,"div",8)(52,"label",24),qC(53,"External Metadata"),pl(),bg(54,"textarea",25),UI(),tC(55,Ce,2,0,"span",12),Is(56,"span",26),qC(57,"Optional. Opaque JSON object stored as-is. Leave empty to clear."),pl()(),Is(58,"div",27)(59,"button",28),qC(60),pl(),tC(61,xe,2,2,"button",29),Is(62,"button",30),Ag("click",function(){If(e);let m=yC();return wf(m.cancel())}),qC(63,"Cancel"),pl()()();}if(i&2){let e=yC();Tg("formGroup",e.form),JE(6),Hg("prompt-form__input--invalid",e.nameControl.invalid&&e.nameControl.touched),Tg("formControl",e.nameControl),zI(),JE(),nC(e.nameControl.invalid&&e.nameControl.touched?7:-1),JE(4),Tg("formControl",e.descriptionControl),zI(),JE(),nC(e.availableAgentConfigs().length>0?12:-1),JE(),Tg("formArrayName","parameters"),JE(8),Zg(e.paramPlaceholderSyntax),JE(2),nC(e.parametersArray.length===0?23:-1),JE(),sC(e.parametersArray.controls),JE(4),Tg("formArrayName","content"),JE(16),Zg(e.paramPlaceholderSyntax),JE(2),sC(e.contentArray.controls),JE(4),nC(e.errorMessage()?50:-1),JE(4),Tg("formControl",e.externalMetadataJsonControl),zI(),JE(),nC(e.externalMetadataJsonControl.invalid&&e.externalMetadataJsonControl.touched?55:-1),JE(4),Tg("disabled",e.form.invalid||e.isSubmitting()),JE(),vl(" ",e.isEditMode()?"Save changes":"Create"," "),JE(),nC(e.isEditMode()?61:-1);}}var re=class i{route=g(V);router=g(G);destroyRef=g(we);promptState=g(m);agentConfigController=g(B);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),agentConfigId:new _t(null),externalMetadataJson:new _t("",{nonNullable:true,validators:[be]}),content:new ze([this.createContentControl()],{validators:[_e$1.required]}),parameters:new ze([])});get nameControl(){return this.form.controls.name}get descriptionControl(){return this.form.controls.description}get agentConfigIdControl(){return this.form.controls.agentConfigId}get externalMetadataJsonControl(){return this.form.controls.externalMetadataJson}get contentArray(){return this.form.controls.content}get parametersArray(){return this.form.controls.parameters}isEditMode=zi(false);isSubmitting=zi(false);isLoading=zi(false);isExporting=zi(false);errorMessage=zi(null);paramPlaceholderSyntax="{{paramName}}";agentConfigs=zi([]);availableAgentConfigs=this.agentConfigs.asReadonly();existingPrompt=null;ngOnInit(){let t=this.route.snapshot.paramMap.get("promptId");t&&(this.isEditMode.set(true),this.loadPrompt(t)),this.isPlatformMode?this.loadPlatformAgentConfigs():this.namespaceId&&this.loadAgentConfigs(this.namespaceId);}loadPrompt(t){this.isLoading.set(true),this.promptState.getById(t).pipe(U(this.destroyRef)).subscribe({next:e=>{this.existingPrompt=e,this.hydrateForm(e),this.isLoading.set(false);},error:()=>{this.isLoading.set(false),this.navigateBack();}});}loadAgentConfigs(t){this.agentConfigController.listByParentAgentConfig(t).pipe(U(this.destroyRef),ya(()=>br([]))).subscribe(e=>this.agentConfigs.set(e));}loadPlatformAgentConfigs(){this.agentConfigController.listPlatformAgentsAgentConfig().pipe(U(this.destroyRef),ya(()=>br([]))).subscribe(t=>this.agentConfigs.set(t));}hydrateForm(t){this.nameControl.setValue(t.name),this.descriptionControl.setValue(t.description??null),this.agentConfigIdControl.setValue(t.agentConfigId??null),this.contentArray.clear(),(t.content.length>0?t.content:[""]).forEach(l=>this.contentArray.push(this.createContentControl(l))),this.parametersArray.clear(),(t.parameters??[]).forEach(l=>this.parametersArray.push(this.createParameterGroup(l))),this.externalMetadataJsonControl.setValue(t.externalMetadata?JSON.stringify(t.externalMetadata,null,2):"");}resolveAgentConfigName(t){return this.agentConfigs().find(e=>e.id===t)?.name??t}createContentControl(t=""){return new _t(t,{nonNullable:true,validators:[_e$1.required,_e$1.pattern(/\S/)]})}addContentEntry(){this.contentArray.push(this.createContentControl());}removeContentEntry(t){this.contentArray.length>1&&this.contentArray.removeAt(t);}createParameterGroup(t){return new z({name:new _t(t?.name??"",{nonNullable:true,validators:[_e$1.required,_e$1.minLength(1)]}),description:new _t(t?.description??null),defaultValue:new _t(t?.defaultValue??"",{nonNullable:true,validators:[_e$1.required]})})}addParameter(){this.parametersArray.push(this.createParameterGroup());}removeParameter(t){this.parametersArray.removeAt(t);}submit(){if(this.form.invalid||this.isSubmitting())return;this.isSubmitting.set(true);let t=this.isEditMode()&&!!this.existingPrompt?.id,e=z$1(P({},this.existingPrompt??{}),{namespaceId:this.namespaceId,sourceLanguage:this.existingPrompt?.sourceLanguage??"en",name:this.nameControl.value.trim(),description:this.descriptionControl.value?.trim()||void 0,content:this.contentArray.controls.map(d=>d.value.trim()),parameters:this.parametersArray.controls.map(d=>({name:d.controls.name.value.trim(),description:d.controls.description.value?.trim()||void 0,defaultValue:d.controls.defaultValue.value.trim()}))});t||(e.agentConfigId=this.agentConfigIdControl.value||null);let l=this.externalMetadataJsonControl.value.trim();e.externalMetadata=l?JSON.parse(l):null;let m=t?this.promptState.update(this.existingPrompt.id,e):this.promptState.create(e);this.errorMessage.set(null),m.pipe(U(this.destroyRef)).subscribe({next:()=>this.navigateBack(),error:d=>{this.isSubmitting.set(false),d.status===409?this.errorMessage.set(`A prompt named "${e.name}" already exists in this scope.`):d.status===400?this.errorMessage.set(d.error?.message??"Invalid prompt data."):this.errorMessage.set("An unexpected error occurred. Please try again.");}});}exportYaml(){let t=this.existingPrompt?.id;!t||this.isExporting()||(this.isExporting.set(true),this.promptState.exportAsYaml(t).pipe(U(this.destroyRef)).subscribe({next:e=>{let l=new Blob([e],{type:"application/yaml"}),m=URL.createObjectURL(l),d=document.createElement("a");d.href=m,d.download=`${this.existingPrompt?.name??"prompt"}.yaml`,d.click(),URL.revokeObjectURL(m),this.isExporting.set(false);},error:()=>this.isExporting.set(false)}));}cancel(){this.navigateBack();}navigateBack(){this.isPlatformMode?this.router.navigate(["/agentos","admin","prompts"]):this.router.navigate(["/agentos",this.namespaceId,"prompts"]);}static \u0275fac=function(e){return new(e||i)};static \u0275cmp=Rw({type:i,selectors:[["agentos-prompt-form"]],decls:10,vars:3,consts:[[1,"prompt-form"],[1,"prompt-form__header"],["type","button","title","Back to prompts",1,"prompt-form__back",3,"click"],[1,"prompt-form__back-icon"],[1,"prompt-form__title"],[1,"prompt-form__loading"],[1,"prompt-form__form",3,"formGroup"],[1,"prompt-form__form",3,"ngSubmit","formGroup"],[1,"prompt-form__field"],["for","prompt-name",1,"prompt-form__label"],["aria-hidden","true"],["id","prompt-name","type","text","placeholder","e.g. Summarise meeting notes","autocomplete","off",1,"prompt-form__input",3,"formControl"],[1,"prompt-form__field-error"],["for","prompt-description",1,"prompt-form__label"],["id","prompt-description","type","text","placeholder","Optional \u2014 short description of this prompt","autocomplete","off",1,"prompt-form__input",3,"formControl"],[1,"prompt-form__section",3,"formArrayName"],[1,"prompt-form__label"],[1,"prompt-form__label-hint"],[1,"prompt-form__section-hint"],[1,"prompt-form__empty-hint"],[1,"prompt-form__param-row",3,"formGroupName"],["type","button",1,"prompt-form__add-btn",3,"click"],[1,"prompt-form__content-row"],[1,"prompt-form__error"],["for","prompt-external-metadata",1,"prompt-form__label"],["id","prompt-external-metadata","rows","6","placeholder",'{ "key": "value" }',"spellcheck","false","autocomplete","off",1,"prompt-form__textarea","prompt-form__textarea--code",3,"formControl"],[1,"prompt-form__field-hint"],[1,"prompt-form__actions"],["type","submit",1,"prompt-form__btn","prompt-form__btn--primary",3,"disabled"],["type","button",1,"prompt-form__btn","prompt-form__btn--export",3,"disabled"],["type","button",1,"prompt-form__btn",3,"click"],["for","prompt-agent-config",1,"prompt-form__label"],[1,"prompt-form__readonly-value"],["id","prompt-agent-config",1,"prompt-form__select",3,"formControl"],[3,"ngValue"],[1,"prompt-form__param-fields"],[1,"prompt-form__field","prompt-form__field--inline"],[1,"prompt-form__label",3,"for"],["type","text","placeholder","e.g. language","formControlName","name","autocomplete","off",1,"prompt-form__input",3,"id"],["type","text","placeholder","Optional","formControlName","description","autocomplete","off",1,"prompt-form__input",3,"id"],["type","text","placeholder","e.g. English","formControlName","defaultValue","autocomplete","off",1,"prompt-form__input",3,"id"],["type","button","title","Remove this parameter",1,"prompt-form__remove-btn",3,"click"],[1,"prompt-form__content-index"],[1,"prompt-form__content-field"],["rows","4","placeholder","Enter a command\u2026",1,"prompt-form__textarea",3,"formControlName"],["type","button","title","Remove this entry",1,"prompt-form__remove-btn",3,"click","disabled"],["type","button",1,"prompt-form__btn","prompt-form__btn--export",3,"click","disabled"]],template:function(e,l){e&1&&(Is(0,"div",0)(1,"header",1)(2,"button",2),Ag("click",function(){return l.cancel()}),Is(3,"span",3),qC(4,"\u2190"),pl(),qC(5),pl(),Is(6,"h1",4),qC(7),pl()(),tC(8,ie,2,0,"p",5)(9,ve,64,18,"form",6),pl()),e&2&&(JE(5),vl(" ",l.isPlatformMode?"Platform prompts":"Prompts"," "),JE(2),Zg(l.isEditMode()?"Edit prompt":"New prompt"),JE(),nC(l.isLoading()?8:9));},dependencies:[ni,Jn,Qn,ei,Ye,At,Zn,Xn,Cn,En,An,Ct,Vt],styles:[".prompt-form[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:2rem;max-width:560px;margin:0 auto;padding:2rem 1rem}.prompt-form__header[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.5rem}.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-accent)}.prompt-form__back[_ngcontent-%COMP%]:hover{text-decoration:underline}.prompt-form__back-icon[_ngcontent-%COMP%]{font-size:1rem;line-height:1}.prompt-form__title[_ngcontent-%COMP%]{margin:0;font-size:1.5rem;font-weight:700;color:var(--color-text);letter-spacing:-.02em}.prompt-form__loading[_ngcontent-%COMP%]{color:var(--color-text-secondary);font-size:.9rem;margin:0}.prompt-form__form[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:1.25rem}.prompt-form__field[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.375rem}.prompt-form__field--inline[_ngcontent-%COMP%]{flex:1}.prompt-form__label[_ngcontent-%COMP%]{font-size:.875rem;font-weight:500;color:var(--color-text)}.prompt-form__label-hint[_ngcontent-%COMP%]{font-weight:400;color:var(--color-text-secondary);margin-left:.375rem}.prompt-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;cursor:pointer;appearance:auto;transition:border-color .15s ease}.prompt-form__select[_ngcontent-%COMP%]:focus{border-color:var(--color-accent)}.prompt-form__field-hint[_ngcontent-%COMP%]{font-size:.8rem;color:var(--color-text-secondary);line-height:1.4}.prompt-form__readonly-value[_ngcontent-%COMP%]{margin:0;padding:.5rem .875rem;border-radius:0;background:var(--color-bg-hover);border:1px solid var(--color-divider);color:var(--color-text);font-size:.9375rem}.prompt-form__input[_ngcontent-%COMP%], .prompt-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}.prompt-form__input[_ngcontent-%COMP%]:focus, .prompt-form__textarea[_ngcontent-%COMP%]:focus{border-color:var(--color-accent)}.prompt-form__input[_ngcontent-%COMP%]::placeholder, .prompt-form__textarea[_ngcontent-%COMP%]::placeholder{color:var(--color-neutral-500)}.prompt-form__textarea[_ngcontent-%COMP%]{resize:vertical;min-height:100px;line-height:1.5}.prompt-form__textarea--code[_ngcontent-%COMP%]{font-family:monospace;font-size:.85rem;resize:vertical}.prompt-form__section[_ngcontent-%COMP%]{border:1px solid var(--color-divider);border-radius:0;padding:1rem;margin:0;display:flex;flex-direction:column;gap:.75rem}.prompt-form__section-hint[_ngcontent-%COMP%]{margin:0;font-size:.8rem;color:var(--color-text-secondary);line-height:1.4}.prompt-form__empty-hint[_ngcontent-%COMP%]{margin:0;font-size:.85rem;color:var(--color-text-secondary);font-style:italic}.prompt-form__content-row[_ngcontent-%COMP%]{display:flex;gap:.5rem;align-items:flex-start}.prompt-form__content-field[_ngcontent-%COMP%]{flex:1;display:flex;flex-direction:column;gap:.25rem}.prompt-form__content-index[_ngcontent-%COMP%]{flex-shrink:0;width:1.5rem;padding-top:.6rem;font-size:.8rem;font-weight:600;color:var(--color-text-secondary);text-align:right;-webkit-user-select:none;user-select:none}.prompt-form__param-row[_ngcontent-%COMP%]{display:flex;gap:.5rem;align-items:flex-end;padding:.75rem;border-radius:0;background:var(--color-bg-hover)}.prompt-form__param-fields[_ngcontent-%COMP%]{flex:1;display:flex;gap:.75rem;flex-wrap:wrap}.prompt-form__add-btn[_ngcontent-%COMP%]{align-self:flex-start;padding:.4rem .875rem;border-radius:0;border:1px solid var(--color-divider);background:transparent;color:var(--color-accent);font-size:.875rem;font-family:inherit;cursor:pointer;transition:background .15s ease,border-color .15s ease}.prompt-form__add-btn[_ngcontent-%COMP%]:hover{background:var(--color-bg-hover);border-color:var(--color-accent)}.prompt-form__remove-btn[_ngcontent-%COMP%]{flex-shrink:0;width:1.75rem;height:1.75rem;display:flex;align-items:center;justify-content:center;border-radius:0;border:1px solid transparent;background:transparent;color:var(--color-neutral-500);font-size:1rem;line-height:1;cursor:pointer;transition:background .15s ease,color .15s ease,border-color .15s ease}.prompt-form__remove-btn[_ngcontent-%COMP%]:hover:not(:disabled){background:color-mix(in srgb,var(--red) 10%,transparent);color:var(--red);border-color:var(--red)}.prompt-form__remove-btn[_ngcontent-%COMP%]:disabled{opacity:.3;cursor:not-allowed}.prompt-form__error[_ngcontent-%COMP%]{margin:0;padding:.625rem .875rem;border-radius:0;background:color-mix(in srgb,var(--red) 10%,transparent);border:1px solid var(--red);color:var(--red);font-size:.875rem;line-height:1.4}.prompt-form__field-error[_ngcontent-%COMP%]{font-size:.8rem;color:var(--red);line-height:1.3}.prompt-form__input--invalid[_ngcontent-%COMP%], .prompt-form__textarea--invalid[_ngcontent-%COMP%]{border-color:var(--red)}.prompt-form__input--invalid[_ngcontent-%COMP%]:focus, .prompt-form__textarea--invalid[_ngcontent-%COMP%]:focus{border-color:var(--red)}.prompt-form__actions[_ngcontent-%COMP%]{display:flex;gap:.75rem;padding-top:.5rem}.prompt-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}.prompt-form__btn[_ngcontent-%COMP%]:hover:not(:disabled){background:var(--color-bg-hover);border-color:var(--color-neutral-500)}.prompt-form__btn[_ngcontent-%COMP%]:disabled{opacity:.45;cursor:not-allowed}.prompt-form__btn--primary[_ngcontent-%COMP%]{background:var(--color-accent);border-color:var(--color-accent);color:#fff}.prompt-form__btn--primary[_ngcontent-%COMP%]:hover:not(:disabled){background:var(--color-accent-700);border-color:var(--color-accent-700)}.prompt-form__btn--export[_ngcontent-%COMP%]{border-color:var(--color-divider);color:var(--color-text-secondary)}.prompt-form__btn--export[_ngcontent-%COMP%]:hover:not(:disabled){border-color:var(--color-accent);color:var(--color-accent)}"]})};function be(i){let t=i.value?.trim();if(!t)return null;try{return JSON.parse(t),null}catch(e){return {invalidJson:true}}}export{re as PromptFormComponent};
1
+ import {m}from'./chunk-BY7uKZAo.js';import {g,ao as V,G,w as we,d8 as B,a as Gi,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,a8 as Yg,x as iC,a9 as gC,S as Sg,a3 as GI,r as cC,bo as sC,ac as EC,v as bg,A as Ug,a6 as qI,y as uC,aa as wf,ab as Cf}from'./main-5PAOSHSM.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,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-kvCfAm7Z.js';import'./chunk-CtkiOUdU.js';import'./chunk-S8F5_Te_.js';var ne=(i,t)=>t.id;function ie(i,t){i&1&&(ws(0,"p",5),QC(1,"Loading\u2026"),hl());}function ae(i,t){i&1&&(ws(0,"span",12),QC(1,"Name is required."),hl());}function le(i,t){if(i&1&&(ws(0,"p",32),QC(1),hl(),ws(2,"span",26),QC(3,"Agent Config cannot be changed after creation."),hl()),i&2){let e=EC(3);nI(),Yg(e.resolveAgentConfigName(e.agentConfigIdControl.value));}}function me(i,t){if(i&1&&(ws(0,"option",34),QC(1),hl()),i&2){let e=t.$implicit;bg("ngValue",e.id),nI(),Yg(e.name);}}function pe(i,t){if(i&1&&(ws(0,"select",33)(1,"option",34),QC(2,"\u2014 None \u2014"),hl(),cC(3,me,2,2,"option",34,ne),hl(),GI(),ws(5,"span",26),QC(6,"Optional. Links this prompt to an agent as a starter. Immutable after creation."),hl()),i&2){let e=EC(3);bg("formControl",e.agentConfigIdControl),qI(),nI(),bg("ngValue",null),nI(2),uC(e.availableAgentConfigs());}}function de(i,t){if(i&1&&(ws(0,"div",8)(1,"label",31),QC(2,"Agent Config"),hl(),oC(3,le,4,1)(4,pe,7,2),hl()),i&2){let e=EC(2);nI(3),iC(e.isEditMode()&&e.agentConfigIdControl.value?3:e.isEditMode()?-1:4);}}function ce(i,t){i&1&&(ws(0,"p",19),QC(1,"No parameters defined."),hl());}function se(i,t){i&1&&(ws(0,"span",12),QC(1,"Parameter name is required."),hl());}function _e(i,t){if(i&1){let e=gC();ws(0,"div",20)(1,"div",35)(2,"div",36)(3,"label",37),QC(4,"Name "),ws(5,"span",10),QC(6,"*"),hl()(),Sg(7,"input",38),GI(),oC(8,se,2,0,"span",12),hl(),ws(9,"div",36)(10,"label",37),QC(11,"Description"),hl(),Sg(12,"input",39),GI(),hl(),ws(13,"div",36)(14,"label",37),QC(15,"Default value"),hl(),Sg(16,"input",40),GI(),hl()(),ws(17,"button",41),Rg("click",function(){let m=wf(e).$index,d=EC(2);return Cf(d.removeParameter(m))}),QC(18," \xD7 "),hl()();}if(i&2){let e=t.$implicit,l=t.$index;bg("formGroupName",l),nI(3),bg("for","param-name-"+l),nI(4),Ug("prompt-form__input--invalid",e.controls.name.invalid&&e.controls.name.touched),bg("id","param-name-"+l),qI(),nI(),iC(e.controls.name.invalid&&e.controls.name.touched?8:-1),nI(2),bg("for","param-desc-"+l),nI(2),bg("id","param-desc-"+l),qI(),nI(2),bg("for","param-default-"+l),nI(2),bg("id","param-default-"+l),qI();}}function fe(i,t){i&1&&(ws(0,"span",12),QC(1,"Content entry must not be blank."),hl());}function ue(i,t){if(i&1){let e=gC();ws(0,"div",22)(1,"span",42),QC(2),hl(),ws(3,"div",43),Sg(4,"textarea",44),GI(),oC(5,fe,2,0,"span",12),hl(),ws(6,"button",45),Rg("click",function(){let m=wf(e).$index,d=EC(2);return Cf(d.removeContentEntry(m))}),QC(7," \xD7 "),hl()();}if(i&2){let e=t.$implicit,l=t.$index,m=EC(2);nI(2),Yg(l+1),nI(2),Ug("prompt-form__textarea--invalid",e.invalid&&e.touched),bg("formControlName",l),qI(),nI(),iC(e.invalid&&e.touched?5:-1),nI(),bg("disabled",m.contentArray.length===1);}}function ge(i,t){if(i&1&&(ws(0,"p",23),QC(1),hl()),i&2){let e=EC(2);nI(),Yg(e.errorMessage());}}function Ce(i,t){i&1&&(ws(0,"span",12),QC(1,"Invalid JSON."),hl());}function xe(i,t){if(i&1){let e=gC();ws(0,"button",46),Rg("click",function(){wf(e);let m=EC(2);return Cf(m.exportYaml())}),QC(1),hl();}if(i&2){let e=EC(2);bg("disabled",e.isExporting()),nI(),Dl(" ",e.isExporting()?"Exporting\u2026":"Export as YAML"," ");}}function ve(i,t){if(i&1){let e=gC();ws(0,"form",7),Rg("ngSubmit",function(){wf(e);let m=EC();return Cf(m.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,ae,2,0,"span",12),hl(),ws(8,"div",8)(9,"label",13),QC(10,"Description"),hl(),Sg(11,"input",14),GI(),hl(),oC(12,de,5,1,"div",8),ws(13,"fieldset",15)(14,"legend",16),QC(15," Parameters "),ws(16,"span",17),QC(17,"Named placeholders used in content"),hl()(),ws(18,"p",18),QC(19," Each parameter must have a name and a default value. Use "),ws(20,"code"),QC(21),hl(),QC(22," in content entries to reference them. "),hl(),oC(23,ce,2,0,"p",19),cC(24,_e,19,10,"div",20,sC),ws(26,"button",21),Rg("click",function(){wf(e);let m=EC();return Cf(m.addParameter())}),QC(27,"+ Add parameter"),hl()(),ws(28,"fieldset",15)(29,"legend",16),QC(30," Content "),ws(31,"span",10),QC(32,"*"),hl(),ws(33,"span",17),QC(34,"Ordered list of text commands"),hl()(),ws(35,"p",18),QC(36," Each content entry is a command. Use "),ws(37,"code"),QC(38,"@AgentName"),hl(),QC(39," to target an agent, "),ws(40,"code"),QC(41,"/promptName param1 param2"),hl(),QC(42," to call another prompt, and "),ws(43,"code"),QC(44),hl(),QC(45," for parameter placeholders. "),hl(),cC(46,ue,8,6,"div",22,sC),ws(48,"button",21),Rg("click",function(){wf(e);let m=EC();return Cf(m.addContentEntry())}),QC(49,"+ Add content entry"),hl()(),oC(50,ge,2,1,"p",23),ws(51,"div",8)(52,"label",24),QC(53,"External Metadata"),hl(),Sg(54,"textarea",25),GI(),oC(55,Ce,2,0,"span",12),ws(56,"span",26),QC(57,"Optional. Opaque JSON object stored as-is. Leave empty to clear."),hl()(),ws(58,"div",27)(59,"button",28),QC(60),hl(),oC(61,xe,2,2,"button",29),ws(62,"button",30),Rg("click",function(){wf(e);let m=EC();return Cf(m.cancel())}),QC(63,"Cancel"),hl()()();}if(i&2){let e=EC();bg("formGroup",e.form),nI(6),Ug("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(4),bg("formControl",e.descriptionControl),qI(),nI(),iC(e.availableAgentConfigs().length>0?12:-1),nI(),bg("formArrayName","parameters"),nI(8),Yg(e.paramPlaceholderSyntax),nI(2),iC(e.parametersArray.length===0?23:-1),nI(),uC(e.parametersArray.controls),nI(4),bg("formArrayName","content"),nI(16),Yg(e.paramPlaceholderSyntax),nI(2),uC(e.contentArray.controls),nI(4),iC(e.errorMessage()?50:-1),nI(4),bg("formControl",e.externalMetadataJsonControl),qI(),nI(),iC(e.externalMetadataJsonControl.invalid&&e.externalMetadataJsonControl.touched?55:-1),nI(4),bg("disabled",e.form.invalid||e.isSubmitting()),nI(),Dl(" ",e.isEditMode()?"Save changes":"Create"," "),nI(),iC(e.isEditMode()?61:-1);}}var re=class i{route=g(V);router=g(G);destroyRef=g(we);promptState=g(m);agentConfigController=g(B);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),agentConfigId:new _t(null),externalMetadataJson:new _t("",{nonNullable:true,validators:[be]}),content:new ze([this.createContentControl()],{validators:[_e$1.required]}),parameters:new ze([])});get nameControl(){return this.form.controls.name}get descriptionControl(){return this.form.controls.description}get agentConfigIdControl(){return this.form.controls.agentConfigId}get externalMetadataJsonControl(){return this.form.controls.externalMetadataJson}get contentArray(){return this.form.controls.content}get parametersArray(){return this.form.controls.parameters}isEditMode=Gi(false);isSubmitting=Gi(false);isLoading=Gi(false);isExporting=Gi(false);errorMessage=Gi(null);paramPlaceholderSyntax="{{paramName}}";agentConfigs=Gi([]);availableAgentConfigs=this.agentConfigs.asReadonly();existingPrompt=null;ngOnInit(){let t=this.route.snapshot.paramMap.get("promptId");t&&(this.isEditMode.set(true),this.loadPrompt(t)),this.isPlatformMode?this.loadPlatformAgentConfigs():this.namespaceId&&this.loadAgentConfigs(this.namespaceId);}loadPrompt(t){this.isLoading.set(true),this.promptState.getById(t).pipe(U(this.destroyRef)).subscribe({next:e=>{this.existingPrompt=e,this.hydrateForm(e),this.isLoading.set(false);},error:()=>{this.isLoading.set(false),this.navigateBack();}});}loadAgentConfigs(t){this.agentConfigController.listByParentAgentConfig(t).pipe(U(this.destroyRef),va(()=>br([]))).subscribe(e=>this.agentConfigs.set(e));}loadPlatformAgentConfigs(){this.agentConfigController.listPlatformAgentsAgentConfig().pipe(U(this.destroyRef),va(()=>br([]))).subscribe(t=>this.agentConfigs.set(t));}hydrateForm(t){this.nameControl.setValue(t.name),this.descriptionControl.setValue(t.description??null),this.agentConfigIdControl.setValue(t.agentConfigId??null),this.contentArray.clear(),(t.content.length>0?t.content:[""]).forEach(l=>this.contentArray.push(this.createContentControl(l))),this.parametersArray.clear(),(t.parameters??[]).forEach(l=>this.parametersArray.push(this.createParameterGroup(l))),this.externalMetadataJsonControl.setValue(t.externalMetadata?JSON.stringify(t.externalMetadata,null,2):"");}resolveAgentConfigName(t){return this.agentConfigs().find(e=>e.id===t)?.name??t}createContentControl(t=""){return new _t(t,{nonNullable:true,validators:[_e$1.required,_e$1.pattern(/\S/)]})}addContentEntry(){this.contentArray.push(this.createContentControl());}removeContentEntry(t){this.contentArray.length>1&&this.contentArray.removeAt(t);}createParameterGroup(t){return new z({name:new _t(t?.name??"",{nonNullable:true,validators:[_e$1.required,_e$1.minLength(1)]}),description:new _t(t?.description??null),defaultValue:new _t(t?.defaultValue??"",{nonNullable:true,validators:[_e$1.required]})})}addParameter(){this.parametersArray.push(this.createParameterGroup());}removeParameter(t){this.parametersArray.removeAt(t);}submit(){if(this.form.invalid||this.isSubmitting())return;this.isSubmitting.set(true);let t=this.isEditMode()&&!!this.existingPrompt?.id,e=z$1(P({},this.existingPrompt??{}),{namespaceId:this.namespaceId,sourceLanguage:this.existingPrompt?.sourceLanguage??"en",name:this.nameControl.value.trim(),description:this.descriptionControl.value?.trim()||void 0,content:this.contentArray.controls.map(d=>d.value.trim()),parameters:this.parametersArray.controls.map(d=>({name:d.controls.name.value.trim(),description:d.controls.description.value?.trim()||void 0,defaultValue:d.controls.defaultValue.value.trim()}))});t||(e.agentConfigId=this.agentConfigIdControl.value||null);let l=this.externalMetadataJsonControl.value.trim();e.externalMetadata=l?JSON.parse(l):null;let m=t?this.promptState.update(this.existingPrompt.id,e):this.promptState.create(e);this.errorMessage.set(null),m.pipe(U(this.destroyRef)).subscribe({next:()=>this.navigateBack(),error:d=>{this.isSubmitting.set(false),d.status===409?this.errorMessage.set(`A prompt named "${e.name}" already exists in this scope.`):d.status===400?this.errorMessage.set(d.error?.message??"Invalid prompt data."):this.errorMessage.set("An unexpected error occurred. Please try again.");}});}exportYaml(){let t=this.existingPrompt?.id;!t||this.isExporting()||(this.isExporting.set(true),this.promptState.exportAsYaml(t).pipe(U(this.destroyRef)).subscribe({next:e=>{let l=new Blob([e],{type:"application/yaml"}),m=URL.createObjectURL(l),d=document.createElement("a");d.href=m,d.download=`${this.existingPrompt?.name??"prompt"}.yaml`,d.click(),URL.revokeObjectURL(m),this.isExporting.set(false);},error:()=>this.isExporting.set(false)}));}cancel(){this.navigateBack();}navigateBack(){this.isPlatformMode?this.router.navigate(["/agentos","admin","prompts"]):this.router.navigate(["/agentos",this.namespaceId,"prompts"]);}static \u0275fac=function(e){return new(e||i)};static \u0275cmp=Fw({type:i,selectors:[["agentos-prompt-form"]],decls:10,vars:3,consts:[[1,"prompt-form"],[1,"prompt-form__header"],["type","button","title","Back to prompts",1,"prompt-form__back",3,"click"],[1,"prompt-form__back-icon"],[1,"prompt-form__title"],[1,"prompt-form__loading"],[1,"prompt-form__form",3,"formGroup"],[1,"prompt-form__form",3,"ngSubmit","formGroup"],[1,"prompt-form__field"],["for","prompt-name",1,"prompt-form__label"],["aria-hidden","true"],["id","prompt-name","type","text","placeholder","e.g. Summarise meeting notes","autocomplete","off",1,"prompt-form__input",3,"formControl"],[1,"prompt-form__field-error"],["for","prompt-description",1,"prompt-form__label"],["id","prompt-description","type","text","placeholder","Optional \u2014 short description of this prompt","autocomplete","off",1,"prompt-form__input",3,"formControl"],[1,"prompt-form__section",3,"formArrayName"],[1,"prompt-form__label"],[1,"prompt-form__label-hint"],[1,"prompt-form__section-hint"],[1,"prompt-form__empty-hint"],[1,"prompt-form__param-row",3,"formGroupName"],["type","button",1,"prompt-form__add-btn",3,"click"],[1,"prompt-form__content-row"],[1,"prompt-form__error"],["for","prompt-external-metadata",1,"prompt-form__label"],["id","prompt-external-metadata","rows","6","placeholder",'{ "key": "value" }',"spellcheck","false","autocomplete","off",1,"prompt-form__textarea","prompt-form__textarea--code",3,"formControl"],[1,"prompt-form__field-hint"],[1,"prompt-form__actions"],["type","submit",1,"prompt-form__btn","prompt-form__btn--primary",3,"disabled"],["type","button",1,"prompt-form__btn","prompt-form__btn--export",3,"disabled"],["type","button",1,"prompt-form__btn",3,"click"],["for","prompt-agent-config",1,"prompt-form__label"],[1,"prompt-form__readonly-value"],["id","prompt-agent-config",1,"prompt-form__select",3,"formControl"],[3,"ngValue"],[1,"prompt-form__param-fields"],[1,"prompt-form__field","prompt-form__field--inline"],[1,"prompt-form__label",3,"for"],["type","text","placeholder","e.g. language","formControlName","name","autocomplete","off",1,"prompt-form__input",3,"id"],["type","text","placeholder","Optional","formControlName","description","autocomplete","off",1,"prompt-form__input",3,"id"],["type","text","placeholder","e.g. English","formControlName","defaultValue","autocomplete","off",1,"prompt-form__input",3,"id"],["type","button","title","Remove this parameter",1,"prompt-form__remove-btn",3,"click"],[1,"prompt-form__content-index"],[1,"prompt-form__content-field"],["rows","4","placeholder","Enter a command\u2026",1,"prompt-form__textarea",3,"formControlName"],["type","button","title","Remove this entry",1,"prompt-form__remove-btn",3,"click","disabled"],["type","button",1,"prompt-form__btn","prompt-form__btn--export",3,"click","disabled"]],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,ie,2,0,"p",5)(9,ve,64,18,"form",6),hl()),e&2&&(nI(5),Dl(" ",l.isPlatformMode?"Platform prompts":"Prompts"," "),nI(2),Yg(l.isEditMode()?"Edit prompt":"New prompt"),nI(),iC(l.isLoading()?8:9));},dependencies:[ni,Jn,Qn,ei,Ye,At,Zn,Xn,Cn,En,An,Ct,Vt],styles:[".prompt-form[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:2rem;max-width:560px;margin:0 auto;padding:2rem 1rem}.prompt-form__header[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.5rem}.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-accent)}.prompt-form__back[_ngcontent-%COMP%]:hover{text-decoration:underline}.prompt-form__back-icon[_ngcontent-%COMP%]{font-size:1rem;line-height:1}.prompt-form__title[_ngcontent-%COMP%]{margin:0;font-size:1.5rem;font-weight:700;color:var(--color-text);letter-spacing:-.02em}.prompt-form__loading[_ngcontent-%COMP%]{color:var(--color-text-secondary);font-size:.9rem;margin:0}.prompt-form__form[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:1.25rem}.prompt-form__field[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.375rem}.prompt-form__field--inline[_ngcontent-%COMP%]{flex:1}.prompt-form__label[_ngcontent-%COMP%]{font-size:.875rem;font-weight:500;color:var(--color-text)}.prompt-form__label-hint[_ngcontent-%COMP%]{font-weight:400;color:var(--color-text-secondary);margin-left:.375rem}.prompt-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;cursor:pointer;appearance:auto;transition:border-color .15s ease}.prompt-form__select[_ngcontent-%COMP%]:focus{border-color:var(--color-accent)}.prompt-form__field-hint[_ngcontent-%COMP%]{font-size:.8rem;color:var(--color-text-secondary);line-height:1.4}.prompt-form__readonly-value[_ngcontent-%COMP%]{margin:0;padding:.5rem .875rem;border-radius:0;background:var(--color-bg-hover);border:1px solid var(--color-divider);color:var(--color-text);font-size:.9375rem}.prompt-form__input[_ngcontent-%COMP%], .prompt-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}.prompt-form__input[_ngcontent-%COMP%]:focus, .prompt-form__textarea[_ngcontent-%COMP%]:focus{border-color:var(--color-accent)}.prompt-form__input[_ngcontent-%COMP%]::placeholder, .prompt-form__textarea[_ngcontent-%COMP%]::placeholder{color:var(--color-neutral-500)}.prompt-form__textarea[_ngcontent-%COMP%]{resize:vertical;min-height:100px;line-height:1.5}.prompt-form__textarea--code[_ngcontent-%COMP%]{font-family:monospace;font-size:.85rem;resize:vertical}.prompt-form__section[_ngcontent-%COMP%]{border:1px solid var(--color-divider);border-radius:0;padding:1rem;margin:0;display:flex;flex-direction:column;gap:.75rem}.prompt-form__section-hint[_ngcontent-%COMP%]{margin:0;font-size:.8rem;color:var(--color-text-secondary);line-height:1.4}.prompt-form__empty-hint[_ngcontent-%COMP%]{margin:0;font-size:.85rem;color:var(--color-text-secondary);font-style:italic}.prompt-form__content-row[_ngcontent-%COMP%]{display:flex;gap:.5rem;align-items:flex-start}.prompt-form__content-field[_ngcontent-%COMP%]{flex:1;display:flex;flex-direction:column;gap:.25rem}.prompt-form__content-index[_ngcontent-%COMP%]{flex-shrink:0;width:1.5rem;padding-top:.6rem;font-size:.8rem;font-weight:600;color:var(--color-text-secondary);text-align:right;-webkit-user-select:none;user-select:none}.prompt-form__param-row[_ngcontent-%COMP%]{display:flex;gap:.5rem;align-items:flex-end;padding:.75rem;border-radius:0;background:var(--color-bg-hover)}.prompt-form__param-fields[_ngcontent-%COMP%]{flex:1;display:flex;gap:.75rem;flex-wrap:wrap}.prompt-form__add-btn[_ngcontent-%COMP%]{align-self:flex-start;padding:.4rem .875rem;border-radius:0;border:1px solid var(--color-divider);background:transparent;color:var(--color-accent);font-size:.875rem;font-family:inherit;cursor:pointer;transition:background .15s ease,border-color .15s ease}.prompt-form__add-btn[_ngcontent-%COMP%]:hover{background:var(--color-bg-hover);border-color:var(--color-accent)}.prompt-form__remove-btn[_ngcontent-%COMP%]{flex-shrink:0;width:1.75rem;height:1.75rem;display:flex;align-items:center;justify-content:center;border-radius:0;border:1px solid transparent;background:transparent;color:var(--color-neutral-500);font-size:1rem;line-height:1;cursor:pointer;transition:background .15s ease,color .15s ease,border-color .15s ease}.prompt-form__remove-btn[_ngcontent-%COMP%]:hover:not(:disabled){background:color-mix(in srgb,var(--red) 10%,transparent);color:var(--red);border-color:var(--red)}.prompt-form__remove-btn[_ngcontent-%COMP%]:disabled{opacity:.3;cursor:not-allowed}.prompt-form__error[_ngcontent-%COMP%]{margin:0;padding:.625rem .875rem;border-radius:0;background:color-mix(in srgb,var(--red) 10%,transparent);border:1px solid var(--red);color:var(--red);font-size:.875rem;line-height:1.4}.prompt-form__field-error[_ngcontent-%COMP%]{font-size:.8rem;color:var(--red);line-height:1.3}.prompt-form__input--invalid[_ngcontent-%COMP%], .prompt-form__textarea--invalid[_ngcontent-%COMP%]{border-color:var(--red)}.prompt-form__input--invalid[_ngcontent-%COMP%]:focus, .prompt-form__textarea--invalid[_ngcontent-%COMP%]:focus{border-color:var(--red)}.prompt-form__actions[_ngcontent-%COMP%]{display:flex;gap:.75rem;padding-top:.5rem}.prompt-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}.prompt-form__btn[_ngcontent-%COMP%]:hover:not(:disabled){background:var(--color-bg-hover);border-color:var(--color-neutral-500)}.prompt-form__btn[_ngcontent-%COMP%]:disabled{opacity:.45;cursor:not-allowed}.prompt-form__btn--primary[_ngcontent-%COMP%]{background:var(--color-accent);border-color:var(--color-accent);color:#fff}.prompt-form__btn--primary[_ngcontent-%COMP%]:hover:not(:disabled){background:var(--color-accent-700);border-color:var(--color-accent-700)}.prompt-form__btn--export[_ngcontent-%COMP%]{border-color:var(--color-divider);color:var(--color-text-secondary)}.prompt-form__btn--export[_ngcontent-%COMP%]:hover:not(:disabled){border-color:var(--color-accent);color:var(--color-accent)}"]})};function be(i){let t=i.value?.trim();if(!t)return null;try{return JSON.parse(t),null}catch(e){return {invalidJson:true}}}export{re as PromptFormComponent};
@@ -1 +1 @@
1
- import {f}from'./chunk-BKlwFrFB.js';import {g,bm as Sm,R as Re,z as zi,y as yT,h as Rw,i as hr,k as Gn,I as Is,A as Ag,q as qC,m as pl,t as tC,af as Dg,ag as pT,r as bC,J as JE,T as Tg,v as nC,M as dy,P,aF as A,Y as x,Z as z,_ as Ue,$ as zt,a0 as jt,a1 as Vt,a2 as Nt,j as pr,bn as Xt,ai as Jg,aj as XC,a3 as UI,o as iC,bo as rC,a8 as Zg,ak as Xg,a6 as zI,x as sC,a5 as vl,ac as yC,a9 as fC,aa as If,ab as wf,bp as ml,bq as yl,ah as oT,b4 as iT,H as Hg,b0 as Yg,a4 as oC,C as Cg,n as bg}from'./main-6K2UFGD2.js';import {P as Pt}from'./chunk-BLa2Gx7h.js';import {T as Tn,S as Sn,n as nt$1,a as ae,l as le,c as ce}from'./chunk-BUEM7g7F.js';import {W as Wn,o as ot$1,i as it$1,I as In,D as De,B as Be,y as ya,E as En}from'./chunk-l0HLnBLv.js';import'./chunk-DTIhOEG_.js';import {y as yt,w as wt,t as ti,Q as Qn,e as ei,Y as Ye$1,f as fn,m as mn,Z as Zn,g as gt,$ as $t,W as Wt,c as cn}from'./chunk-C9tuHQmZ.js';var w=class s{http=g(dy);projectState=g(P);getBaseUrl(){return `/api/projects/${this.projectState.getSelectedProjectIdOrThrow()}/agents`}listEditableAgents(){return this.http.get(`${this.getBaseUrl()}/editable`)}getAgent(t){return this.http.get(`${this.getBaseUrl()}/${encodeURIComponent(t)}`)}createAgent(t,e){return this.http.post(this.getBaseUrl(),{location:e,definition:t})}updateAgent(t,e){return this.http.put(`${this.getBaseUrl()}/${encodeURIComponent(t)}`,{definition:e})}listDocuments(t){return this.http.get(`${this.getBaseUrl()}/documents`,{params:{location:t}})}uploadDocument(t,e){return new A(n=>{let a=new FileReader;a.onload=()=>{let r=a.result.split(",")[1];this.http.post(`${this.getBaseUrl()}/documents`,{filename:e.name,content:r,mimeType:e.type},{params:{location:t}}).subscribe(n);},a.onerror=()=>n.error(a.error),a.readAsDataURL(e);})}deleteAgent(t){return this.http.delete(`${this.getBaseUrl()}/${encodeURIComponent(t)}`)}static \u0275fac=function(e){return new(e||s)};static \u0275prov=x({token:s,factory:s.\u0275fac,providedIn:"root"})};function ze(s,t){s&1&&(Is(0,"p",15),qC(1,"No integrations defined \u2014 agent will have access to all tools."),pl());}function qe(s,t){if(s&1){let e=fC();Is(0,"div",16)(1,"mat-form-field",22)(2,"mat-label"),qC(3,"Integration"),pl(),Is(4,"input",23),Jg("ngModelChange",function(a){let r=If(e).$implicit;return XC(r.integration,a)||(r.integration=a),wf(a)}),pl(),UI(),pl(),Is(5,"mat-form-field",24)(6,"mat-label"),qC(7,"Tools (comma-separated)"),pl(),Is(8,"input",25),Jg("ngModelChange",function(a){let r=If(e).$implicit;return XC(r.tools,a)||(r.tools=a),wf(a)}),pl(),UI(),pl(),Is(9,"button",26),Ag("click",function(){let a=If(e).$index,r=yC();return wf(r.removeIntegrationRow(a))}),Is(10,"mat-icon"),qC(11,"delete"),pl()()();}if(s&2){let e=t.$implicit;JE(4),Xg("ngModel",e.integration),zI(),JE(4),Xg("ngModel",e.tools),zI();}}function He(s,t){if(s&1&&(Is(0,"p",30),qC(1),pl()),s&2){let e=yC(2);JE(),Zg(e.docUploadError);}}function Ge(s,t){s&1&&(Is(0,"p",15),qC(1,"No mandatory documents defined."),pl());}function Ze(s,t){if(s&1&&bg(0,"option",35),s&2){let e=t.$implicit;Tg("value","documents/"+e);}}function Ke(s,t){if(s&1){let e=fC();Is(0,"div",31)(1,"mat-form-field",32)(2,"mat-label"),qC(3,"Document path"),pl(),Is(4,"input",33),Jg("ngModelChange",function(a){let r=If(e).$index,j=yC(2);return XC(j.mandatoryDocs[r],a)||(j.mandatoryDocs[r]=a),wf(a)}),pl(),UI(),Is(5,"datalist",34),iC(6,Ze,1,1,"option",35,oC),pl()(),Is(8,"button",26),Ag("click",function(){let a=If(e).$index,r=yC(2);return wf(r.removeDocRow(a))}),Is(9,"mat-icon"),qC(10,"delete"),pl()()();}if(s&2){let e=t.$index,n=yC(2);JE(4),Xg("ngModel",n.mandatoryDocs[e]),Cg("list","docs-list-"+e),zI(),JE(),Tg("id","docs-list-"+e),JE(),sC(n.availableDocuments);}}function Je(s,t){if(s&1){let e=fC();Is(0,"div",6)(1,"span"),qC(2,"Mandatory Documents"),pl(),Is(3,"button",27),Ag("click",function(){If(e);let a=yC();return wf(a.addDocRow())}),Is(4,"mat-icon"),qC(5,"add"),pl()(),Is(6,"label",28)(7,"mat-icon"),qC(8,"upload_file"),pl(),Is(9,"input",29),Ag("change",function(a){If(e);let r=yC();return wf(r.onDocFileSelected(a))}),pl()()(),tC(10,He,2,1,"p",30),tC(11,Ge,2,0,"p",15),iC(12,Ke,11,3,"div",31,rC);}if(s&2){let e=yC();JE(6),Hg("uploading",e.isUploadingDoc),JE(3),Tg("disabled",e.isUploadingDoc),JE(),nC(e.docUploadError?10:-1),JE(),nC(e.mandatoryDocs.length===0?11:-1),JE(),sC(e.mandatoryDocs);}}function Qe(s,t){s&1&&(Is(0,"p",15),qC(1,"\u{1F4A1} Documents can be added after the agent is created."),pl());}function Xe(s,t){if(s&1){let e=fC();Is(0,"div",6),qC(1,"Save to"),pl(),Is(2,"div",36)(3,"label",37)(4,"input",38),Jg("ngModelChange",function(a){If(e);let r=yC();return XC(r.location,a)||(r.location=a),wf(a)}),pl(),UI(),Is(5,"div",39)(6,"div",40)(7,"span",41),qC(8,"\u{1F464}"),pl(),Is(9,"span",42),qC(10,"Project config"),pl()(),Is(11,"p",43),qC(12),pl()()(),Is(13,"label",37)(14,"input",44),Jg("ngModelChange",function(a){If(e);let r=yC();return XC(r.location,a)||(r.location=a),wf(a)}),pl(),UI(),Is(15,"div",39)(16,"div",40)(17,"span",41),qC(18,"\u{1F4E6}"),pl(),Is(19,"span",42),qC(20,"Colocated"),pl()(),Is(21,"p",43),qC(22,"Next to coday.yaml in ./agents/ (committable)"),pl()()()(),Is(23,"p",15),qC(24,"Storage location is permanent and cannot be changed after creation."),pl();}if(s&2){let e=yC();JE(3),Hg("selected",e.location==="project"),JE(),Xg("ngModel",e.location),zI(),JE(8),Yg("~/.coday/projects/","{","name","}","/agents/ (not committed)"),JE(),Hg("selected",e.location==="colocated"),JE(),Xg("ngModel",e.location),zI();}}function Ye(s,t){if(s&1&&(Is(0,"div",17)(1,"span",6),qC(2,"Storage Location"),pl(),Is(3,"span",45),qC(4),pl(),Is(5,"p",15),qC(6,"Cannot be changed after creation."),pl()()),s&2){let e=yC();JE(3),Hg("badge-project",e.location==="project")("badge-colocated",e.location==="colocated"),JE(),vl(" ",e.location==="project"?"\u{1F464} Project config":"\u{1F4E6} Colocated"," ");}}function $e(s,t){if(s&1&&(Is(0,"div",18)(1,"mat-icon"),qC(2,"error"),pl(),Is(3,"span"),qC(4),pl()()),s&2){let e=yC();JE(4),Zg(e.errorMessage);}}var E=class s{agentCrudApi=g(w);agentApi=g(f);dialogRef=g(z);data=g(Ue);name="";description="";instructions="";aiProvider="";modelName="";temperature=null;maxOutputTokens=null;openaiAssistantId="";integrationRows=[];mandatoryDocs=[];availableDocuments=[];isUploadingDoc=false;docUploadError="";location="project";isSaving=false;errorMessage="";isEditMode=false;ngOnInit(){if(this.isEditMode=this.data.mode==="edit",this.isEditMode&&this.data.agent){let t=this.data.agent.definition;this.name=t.name,this.description=t.description,this.instructions=t.instructions??"",this.aiProvider=t.aiProvider??"",this.modelName=t.modelName??"",this.temperature=t.temperature??null,this.maxOutputTokens=t.maxOutputTokens??null,this.openaiAssistantId=t.openaiAssistantId??"",this.location=this.data.agent.source,t.integrations&&(this.integrationRows=Object.entries(t.integrations).map(([e,n])=>({integration:e,tools:n?.join(", ")??""}))),this.mandatoryDocs=[...t.mandatoryDocs??[]],this.loadAvailableDocuments();}}loadAvailableDocuments(){this.agentCrudApi.listDocuments(this.location).subscribe({next:t=>this.availableDocuments=t,error:()=>this.availableDocuments=[]});}addDocRow(){this.mandatoryDocs.push("");}removeDocRow(t){this.mandatoryDocs.splice(t,1);}onDocFileSelected(t){let e=t.target,n=e.files?.[0];n&&(this.isUploadingDoc=true,this.docUploadError="",this.agentCrudApi.uploadDocument(this.location,n).subscribe({next:a=>{this.isUploadingDoc=false,this.mandatoryDocs.push(a.relativePath),this.loadAvailableDocuments(),e.value="";},error:a=>{this.isUploadingDoc=false,this.docUploadError=a?.error?.error??a?.message??"Upload failed",e.value="";}}));}addIntegrationRow(){this.integrationRows.push({integration:"",tools:""});}removeIntegrationRow(t){this.integrationRows.splice(t,1);}trackByIndex(t){return t}validateForm(){if(!this.name.trim())return this.errorMessage="Name is required",false;if(!/^[a-zA-Z0-9][a-zA-Z0-9_-]*$/.test(this.name.trim()))return this.errorMessage="Name must start with alphanumeric and contain only letters, digits, hyphens or underscores",false;if(!this.description.trim())return this.errorMessage="Description is required",false;for(let t of this.integrationRows)if(!t.integration.trim())return this.errorMessage="Integration name cannot be empty",false;return true}buildDefinition(){let t=this.mandatoryDocs.map(n=>n.trim()).filter(Boolean),e=this.integrationRows.length>0?Object.fromEntries(this.integrationRows.filter(n=>n.integration.trim()).map(n=>[n.integration.trim(),n.tools.split(",").map(a=>a.trim()).filter(Boolean)])):void 0;return {name:this.name.trim(),description:this.description.trim(),instructions:this.instructions.trim()||void 0,aiProvider:this.aiProvider.trim()||void 0,modelName:this.modelName.trim()||void 0,temperature:this.temperature??void 0,maxOutputTokens:this.maxOutputTokens??void 0,openaiAssistantId:this.openaiAssistantId.trim()||void 0,integrations:e,mandatoryDocs:t.length>0?t:void 0}}save(){if(this.errorMessage="",!this.validateForm())return;let t=this.buildDefinition();this.isSaving=true,(this.isEditMode?this.agentCrudApi.updateAgent(this.name.trim(),t):this.agentCrudApi.createAgent(t,this.location)).subscribe({next:()=>{this.isSaving=false,this.agentApi.clearAllCache(),this.dialogRef.close(true);},error:n=>{this.isSaving=false,this.errorMessage=n?.error?.error||n?.message||"Failed to save agent";}});}cancel(){this.dialogRef.close(false);}static \u0275fac=function(e){return new(e||s)};static \u0275cmp=Rw({type:s,selectors:[["app-agent-form"]],decls:69,vars:18,consts:[["mat-dialog-title",""],[1,"form-container"],["appearance","outline",1,"full-width"],["matInput","","placeholder","my-agent","required","",3,"ngModelChange","ngModel","readonly"],["matInput","","placeholder","What does this agent do?","rows","2","required","",3,"ngModelChange","ngModel"],["matInput","","placeholder","System instructions for the agent...","rows","6",3,"ngModelChange","ngModel"],[1,"section-title"],[1,"row-2col"],["appearance","outline"],["matInput","","placeholder","e.g. anthropic, openai",3,"ngModelChange","ngModel"],["matInput","","placeholder","e.g. claude-sonnet-4-5",3,"ngModelChange","ngModel"],["matInput","","type","number","min","0","max","2","step","0.1","placeholder","0.0 \u2013 2.0",3,"ngModelChange","ngModel"],["matInput","","type","number","min","1","placeholder","e.g. 4096",3,"ngModelChange","ngModel"],["matInput","","placeholder","asst_...",3,"ngModelChange","ngModel"],["mat-icon-button","","type","button","title","Add integration",3,"click"],[1,"hint"],[1,"integration-row"],[1,"source-display"],[1,"error-message"],["align","end"],["mat-button","",3,"click","disabled"],["mat-raised-button","","color","primary",3,"click","disabled"],["appearance","outline",1,"integration-name"],["matInput","","placeholder","e.g. GITHUB",3,"ngModelChange","ngModel"],["appearance","outline",1,"integration-tools"],["matInput","","placeholder","Leave empty for all tools",3,"ngModelChange","ngModel"],["mat-icon-button","","type","button","title","Remove",3,"click"],["mat-icon-button","","type","button","title","Add document path",3,"click"],["title","Upload a document to the pool",1,"upload-btn"],["type","file","hidden","",3,"change","disabled"],[1,"doc-upload-error"],[1,"doc-row"],["appearance","outline",1,"doc-field"],["matInput","","placeholder","documents/guide.md",3,"ngModelChange","ngModel"],[3,"id"],[3,"value"],[1,"source-options"],[1,"source-option"],["type","radio","name","location","value","project",3,"ngModelChange","ngModel"],[1,"source-content"],[1,"source-header"],[1,"source-icon"],[1,"source-label"],[1,"source-description"],["type","radio","name","location","value","colocated",3,"ngModelChange","ngModel"],[1,"source-badge"]],template:function(e,n){e&1&&(Is(0,"h2",0),qC(1),pl(),Is(2,"mat-dialog-content")(3,"div",1)(4,"mat-form-field",2)(5,"mat-label"),qC(6,"Name"),pl(),Is(7,"input",3),Jg("ngModelChange",function(r){return XC(n.name,r)||(n.name=r),r}),pl(),UI(),Is(8,"mat-hint"),qC(9,"Alphanumeric, hyphens and underscores only. Cannot be changed after creation."),pl()(),Is(10,"mat-form-field",2)(11,"mat-label"),qC(12,"Description"),pl(),Is(13,"textarea",4),Jg("ngModelChange",function(r){return XC(n.description,r)||(n.description=r),r}),pl(),UI(),pl(),Is(14,"mat-form-field",2)(15,"mat-label"),qC(16,"Instructions"),pl(),Is(17,"textarea",5),Jg("ngModelChange",function(r){return XC(n.instructions,r)||(n.instructions=r),r}),pl(),UI(),Is(18,"mat-hint"),qC(19,"System prompt / instructions sent to the AI model"),pl()(),Is(20,"div",6),qC(21,"AI Configuration"),pl(),Is(22,"div",7)(23,"mat-form-field",8)(24,"mat-label"),qC(25,"AI Provider"),pl(),Is(26,"input",9),Jg("ngModelChange",function(r){return XC(n.aiProvider,r)||(n.aiProvider=r),r}),pl(),UI(),pl(),Is(27,"mat-form-field",8)(28,"mat-label"),qC(29,"Model Name"),pl(),Is(30,"input",10),Jg("ngModelChange",function(r){return XC(n.modelName,r)||(n.modelName=r),r}),pl(),UI(),pl()(),Is(31,"div",7)(32,"mat-form-field",8)(33,"mat-label"),qC(34,"Temperature"),pl(),Is(35,"input",11),Jg("ngModelChange",function(r){return XC(n.temperature,r)||(n.temperature=r),r}),pl(),UI(),Is(36,"mat-hint"),qC(37,"Leave empty for model default"),pl()(),Is(38,"mat-form-field",8)(39,"mat-label"),qC(40,"Max Output Tokens"),pl(),Is(41,"input",12),Jg("ngModelChange",function(r){return XC(n.maxOutputTokens,r)||(n.maxOutputTokens=r),r}),pl(),UI(),Is(42,"mat-hint"),qC(43,"Leave empty for model default"),pl()()(),Is(44,"mat-form-field",2)(45,"mat-label"),qC(46,"OpenAI Assistant ID"),pl(),Is(47,"input",13),Jg("ngModelChange",function(r){return XC(n.openaiAssistantId,r)||(n.openaiAssistantId=r),r}),pl(),UI(),Is(48,"mat-hint"),qC(49,"If set, forces aiProvider to openai"),pl()(),Is(50,"div",6)(51,"span"),qC(52,"Integrations"),pl(),Is(53,"button",14),Ag("click",function(){return n.addIntegrationRow()}),Is(54,"mat-icon"),qC(55,"add"),pl()()(),tC(56,ze,2,0,"p",15),iC(57,qe,12,2,"div",16,rC),tC(59,Je,14,5)(60,Qe,2,0,"p",15),tC(61,Xe,25,8),tC(62,Ye,7,5,"div",17),tC(63,$e,5,1,"div",18),pl()(),Is(64,"mat-dialog-actions",19)(65,"button",20),Ag("click",function(){return n.cancel()}),qC(66,"Cancel"),pl(),Is(67,"button",21),Ag("click",function(){return n.save()}),qC(68),pl()()),e&2&&(JE(),Zg(n.isEditMode?"Edit Agent":"Create Agent"),JE(6),Xg("ngModel",n.name),Tg("readonly",n.isEditMode),zI(),JE(6),Xg("ngModel",n.description),zI(),JE(4),Xg("ngModel",n.instructions),zI(),JE(9),Xg("ngModel",n.aiProvider),zI(),JE(4),Xg("ngModel",n.modelName),zI(),JE(5),Xg("ngModel",n.temperature),zI(),JE(6),Xg("ngModel",n.maxOutputTokens),zI(),JE(6),Xg("ngModel",n.openaiAssistantId),zI(),JE(9),nC(n.integrationRows.length===0?56:-1),JE(),sC(n.integrationRows),JE(2),nC(n.isEditMode?59:60),JE(2),nC(n.isEditMode?-1:61),JE(),nC(n.isEditMode?62:-1),JE(),nC(n.errorMessage?63:-1),JE(2),Tg("disabled",n.isSaving),JE(2),Tg("disabled",n.isSaving),JE(),vl(" ",n.isSaving?"Saving...":"Save"," "));},dependencies:[ti,Qn,ei,Ye$1,fn,mn,Zn,gt,$t,Wt,cn,zt,jt,Vt,Nt,hr,pr,Gn,Tn,Sn,nt$1,ae,le,ce,yt,wt,Pt,Xt],styles:[".form-container[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:1rem;padding:0;min-width:560px}@media(max-width:768px){.form-container[_ngcontent-%COMP%]{min-width:auto}}.full-width[_ngcontent-%COMP%]{width:100%}.section-title[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.5rem;font-size:1rem;font-weight:600;margin-top:.5rem;margin-bottom:-.25rem}.row-2col[_ngcontent-%COMP%]{display:grid;grid-template-columns:1fr 1fr;gap:1rem}@media(max-width:768px){.row-2col[_ngcontent-%COMP%]{grid-template-columns:1fr}}.integration-row[_ngcontent-%COMP%]{display:flex;align-items:flex-start;gap:.5rem}.integration-row[_ngcontent-%COMP%] .integration-name[_ngcontent-%COMP%]{flex:0 0 180px}.integration-row[_ngcontent-%COMP%] .integration-tools[_ngcontent-%COMP%]{flex:1}.hint[_ngcontent-%COMP%]{margin:0;font-size:.85rem;color:var(--color-text-secondary);font-style:italic}.source-options[_ngcontent-%COMP%]{display:flex;gap:1rem;margin-bottom:.5rem}@media(max-width:768px){.source-options[_ngcontent-%COMP%]{flex-direction:column}}.source-option[_ngcontent-%COMP%]{flex:1;display:flex;align-items:flex-start;gap:.75rem;padding:1rem;background:var(--color-bg);border:2px solid var(--color-border);border-radius:8px;cursor:pointer;transition:all .2s ease}.source-option[_ngcontent-%COMP%]:hover{border-color:var(--color-primary);background:var(--color-bg-hover)}.source-option.selected[_ngcontent-%COMP%]{border-color:var(--color-primary);background:var(--color-bg-hover);box-shadow:0 0 0 1px var(--color-primary)}.source-option[_ngcontent-%COMP%] input[type=radio][_ngcontent-%COMP%]{margin-top:2px;cursor:pointer}.source-option[_ngcontent-%COMP%] .source-content[_ngcontent-%COMP%]{flex:1}.source-option[_ngcontent-%COMP%] .source-content[_ngcontent-%COMP%] .source-header[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.5rem;margin-bottom:.5rem}.source-option[_ngcontent-%COMP%] .source-content[_ngcontent-%COMP%] .source-header[_ngcontent-%COMP%] .source-icon[_ngcontent-%COMP%]{font-size:1.25rem}.source-option[_ngcontent-%COMP%] .source-content[_ngcontent-%COMP%] .source-header[_ngcontent-%COMP%] .source-label[_ngcontent-%COMP%]{font-weight:600;font-size:.95rem}.source-option[_ngcontent-%COMP%] .source-content[_ngcontent-%COMP%] .source-description[_ngcontent-%COMP%]{margin:0;font-size:.85rem;color:var(--color-text-secondary);font-family:monospace;line-height:1.4}.source-display[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.5rem}.source-badge[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:.5rem;padding:.5rem 1rem;border-radius:6px;font-size:.9rem;font-weight:500}.source-badge.badge-project[_ngcontent-%COMP%]{background:#2196f31a;color:#2196f3;border:1px solid rgba(33,150,243,.3)}.source-badge.badge-colocated[_ngcontent-%COMP%]{background:#4caf501a;color:#4caf50;border:1px solid rgba(76,175,80,.3)}.doc-row[_ngcontent-%COMP%]{display:flex;align-items:flex-start;gap:.5rem}.doc-row[_ngcontent-%COMP%] .doc-field[_ngcontent-%COMP%]{flex:1}.upload-btn[_ngcontent-%COMP%]{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:50%;cursor:pointer;color:var(--color-text-secondary);transition:background .2s}.upload-btn[_ngcontent-%COMP%]:hover{background:var(--color-bg-hover);color:var(--color-primary)}.upload-btn.uploading[_ngcontent-%COMP%]{opacity:.5;cursor:wait}.upload-btn[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{font-size:1.25rem;width:1.25rem;height:1.25rem}.doc-upload-error[_ngcontent-%COMP%]{margin:0;font-size:.85rem;color:var(--color-error)}.error-message[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.5rem;padding:.75rem;background:#f443361a;border:1px solid var(--color-error);border-radius:4px;color:var(--color-error)}.error-message[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{font-size:1.25rem;width:1.25rem;height:1.25rem}.error-message[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{flex:1}"],changeDetection:1})};var et=()=>[],tt=s=>({id:s});function nt(s,t){if(s&1&&(Is(0,"div",5),qC(1),pl()),s&2){let e=yC();JE(),Zg(e.errorMessage());}}function it(s,t){if(s&1){let e=fC();Is(0,"ds-entity-card",7),Ag("selected",function(a){If(e);let r=yC();return wf(r.onEdit(a))}),ml(1,8),Is(2,"button",9),Ag("click",function(a){return a.stopPropagation()}),Is(3,"mat-icon"),qC(4,"more_vert"),pl()(),yl(),pl();}if(s&2){let e=t.$implicit;yC();let n=bC(9);Tg("id",e.id)("name",e.name)("description",e.description)("badges",e.badges??oT(6,et)),JE(2),Tg("matMenuTriggerFor",n)("matMenuTriggerData",iT(7,tt,e.id));}}function ot(s,t){if(s&1){let e=fC();Is(0,"button",10),Ag("click",function(){let a=If(e).id,r=yC();return wf(r.onEdit(a))}),Is(1,"mat-icon"),qC(2,"edit"),pl(),qC(3," Edit "),pl(),Is(4,"button",11),Ag("click",function(){let a=If(e).id,r=yC();return wf(r.onDelete(a))}),Is(5,"mat-icon"),qC(6,"delete"),pl(),qC(7," Delete "),pl();}}var Ve=class s{agentCrudApi=g(w);location=g(Sm);dialog=g(Re);agents=zi([]);isLoading=zi(false);errorMessage=zi(null);agentItems=yT(()=>this.agents().map(t=>({id:t.name,name:t.name,description:t.description,badges:this.buildBadges(t),groupKey:t.source,groupLabel:t.source==="project"?"Project (~/.coday/)":"Colocated (next to coday.yaml)"})));ngOnInit(){this.loadAgents();}loadAgents(){this.isLoading.set(true),this.errorMessage.set(null),this.agentCrudApi.listEditableAgents().subscribe({next:t=>{this.agents.set(t),this.isLoading.set(false);},error:t=>{this.errorMessage.set(t?.error?.error??"Failed to load agents"),this.isLoading.set(false);}});}onBack(){this.location.back();}onCreate(){this.dialog.open(E,{width:"700px",maxHeight:"90vh",data:{mode:"create"}}).afterClosed().subscribe(e=>{e&&this.loadAgents();});}onEdit(t){this.agentCrudApi.getAgent(t).subscribe({next:e=>{this.dialog.open(E,{width:"700px",maxHeight:"90vh",data:{mode:"edit",agent:e}}).afterClosed().subscribe(a=>{a&&this.loadAgents();});},error:e=>this.errorMessage.set(e?.error?.error??"Failed to load agent")});}onDelete(t){confirm(`Are you sure you want to delete agent "${t}"?`)&&this.agentCrudApi.deleteAgent(t).subscribe({next:()=>this.loadAgents(),error:e=>this.errorMessage.set(e?.error?.error??"Failed to delete agent")});}buildBadges(t){return [t.source==="project"?{label:"project",variant:"info"}:{label:"colocated",variant:"success"}]}static \u0275fac=function(e){return new(e||s)};static \u0275cmp=Rw({type:s,selectors:[["app-agent-list"]],decls:11,vars:5,consts:[["agentCard",""],["cardMenu","matMenu"],[1,"agent-list-page"],["title","Agents","cardMinWidth","260px","contentMaxWidth","1400px","searchPlaceholder","Filter agents\u2026","emptyMessage","No file-based agents found.",3,"createRequested","items","loading","showCreate","itemTemplate"],["toolbar-start","","mat-icon-button","","title","Back",3,"click"],[1,"agent-list__error"],["matMenuContent",""],[3,"selected","id","name","description","badges"],["dsCardActions",""],["mat-icon-button","",3,"click","matMenuTriggerFor","matMenuTriggerData"],["mat-menu-item","",3,"click"],["mat-menu-item","",1,"agent-list__delete-item",3,"click"]],template:function(e,n){if(e&1&&(Is(0,"div",2)(1,"ds-entity-list",3),Ag("createRequested",function(){return n.onCreate()}),Is(2,"button",4),Ag("click",function(){return n.onBack()}),Is(3,"mat-icon"),qC(4,"chevron_left"),pl()()(),tC(5,nt,2,1,"div",5),pl(),Dg(6,it,5,9,"ng-template",null,0,pT),Is(8,"mat-menu",null,1),Dg(10,ot,8,0,"ng-template",6),pl()),e&2){let a=bC(7);JE(),Tg("items",n.agentItems())("loading",n.isLoading())("showCreate",true)("itemTemplate",a),JE(4),nC(n.errorMessage()?5:-1);}},dependencies:[Wn,ot$1,it$1,hr,Gn,yt,wt,In,De,Be,ya,En],styles:["[_nghost-%COMP%]{display:block;width:100%;min-height:100vh;background:var(--color-bg);overflow-y:auto}.agent-list__delete-item[_ngcontent-%COMP%]{color:var(--color-error, #ff3b30)}.agent-list__delete-item[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{color:inherit}.agent-list__error[_ngcontent-%COMP%]{margin:1rem auto;max-width:900px;padding:.75rem 1rem;background:#dc262614;border:1px solid rgba(220,38,38,.25);border-radius:8px;color:var(--color-error, #ff3b30);font-size:.875rem}"],changeDetection:1})};export{Ve as AgentListComponent};
1
+ import {f}from'./chunk-UzUd84Qf.js';import {g,bm as _m,R as Re,a as Gi,E as ET,h as Fw,i as hr,k as Gn,m as ws,o as Rg,Q as QC,n as hl,q as oC,af as Eg,ag as mT,M as MC,t as nI,v as bg,x as iC,I as fy,P,aF as A,Y as x,Z as z,_ as Ue,$ as zt,a0 as jt,a1 as Vt,a2 as Nt,j as pr,bn as Xt,ai as em,aj as tT,a3 as GI,r as cC,bo as sC,a8 as Yg,ak as Jg,a6 as qI,y as uC,a5 as Dl,ac as EC,a9 as gC,aa as wf,ab as Cf,bp as yl,bq as vl,ah as aT,b4 as cT,A as Ug,b0 as Qg,a4 as aC,T as Tg,S as Sg}from'./main-5PAOSHSM.js';import {P as Pt}from'./chunk-YS-vAhPY.js';import {T as Tn,S as Sn,n as nt$1,a as ae,l as le,c as ce}from'./chunk-YfG457Nc.js';import {W as Wn,o as ot$1,i as it$1,I as In,D as De,B as Be,y as ya,E as En}from'./chunk-CtkiOUdU.js';import'./chunk-S8F5_Te_.js';import {y as yt,w as wt,t as ti,Q as Qn,e as ei,Y as Ye$1,f as fn,m as mn,Z as Zn,g as gt,$ as $t,W as Wt,c as cn}from'./chunk-tTmeIHGS.js';var w=class s{http=g(fy);projectState=g(P);getBaseUrl(){return `/api/projects/${this.projectState.getSelectedProjectIdOrThrow()}/agents`}listEditableAgents(){return this.http.get(`${this.getBaseUrl()}/editable`)}getAgent(t){return this.http.get(`${this.getBaseUrl()}/${encodeURIComponent(t)}`)}createAgent(t,e){return this.http.post(this.getBaseUrl(),{location:e,definition:t})}updateAgent(t,e){return this.http.put(`${this.getBaseUrl()}/${encodeURIComponent(t)}`,{definition:e})}listDocuments(t){return this.http.get(`${this.getBaseUrl()}/documents`,{params:{location:t}})}uploadDocument(t,e){return new A(n=>{let a=new FileReader;a.onload=()=>{let r=a.result.split(",")[1];this.http.post(`${this.getBaseUrl()}/documents`,{filename:e.name,content:r,mimeType:e.type},{params:{location:t}}).subscribe(n);},a.onerror=()=>n.error(a.error),a.readAsDataURL(e);})}deleteAgent(t){return this.http.delete(`${this.getBaseUrl()}/${encodeURIComponent(t)}`)}static \u0275fac=function(e){return new(e||s)};static \u0275prov=x({token:s,factory:s.\u0275fac,providedIn:"root"})};function ze(s,t){s&1&&(ws(0,"p",15),QC(1,"No integrations defined \u2014 agent will have access to all tools."),hl());}function qe(s,t){if(s&1){let e=gC();ws(0,"div",16)(1,"mat-form-field",22)(2,"mat-label"),QC(3,"Integration"),hl(),ws(4,"input",23),em("ngModelChange",function(a){let r=wf(e).$implicit;return tT(r.integration,a)||(r.integration=a),Cf(a)}),hl(),GI(),hl(),ws(5,"mat-form-field",24)(6,"mat-label"),QC(7,"Tools (comma-separated)"),hl(),ws(8,"input",25),em("ngModelChange",function(a){let r=wf(e).$implicit;return tT(r.tools,a)||(r.tools=a),Cf(a)}),hl(),GI(),hl(),ws(9,"button",26),Rg("click",function(){let a=wf(e).$index,r=EC();return Cf(r.removeIntegrationRow(a))}),ws(10,"mat-icon"),QC(11,"delete"),hl()()();}if(s&2){let e=t.$implicit;nI(4),Jg("ngModel",e.integration),qI(),nI(4),Jg("ngModel",e.tools),qI();}}function He(s,t){if(s&1&&(ws(0,"p",30),QC(1),hl()),s&2){let e=EC(2);nI(),Yg(e.docUploadError);}}function Ge(s,t){s&1&&(ws(0,"p",15),QC(1,"No mandatory documents defined."),hl());}function Ze(s,t){if(s&1&&Sg(0,"option",35),s&2){let e=t.$implicit;bg("value","documents/"+e);}}function Ke(s,t){if(s&1){let e=gC();ws(0,"div",31)(1,"mat-form-field",32)(2,"mat-label"),QC(3,"Document path"),hl(),ws(4,"input",33),em("ngModelChange",function(a){let r=wf(e).$index,j=EC(2);return tT(j.mandatoryDocs[r],a)||(j.mandatoryDocs[r]=a),Cf(a)}),hl(),GI(),ws(5,"datalist",34),cC(6,Ze,1,1,"option",35,aC),hl()(),ws(8,"button",26),Rg("click",function(){let a=wf(e).$index,r=EC(2);return Cf(r.removeDocRow(a))}),ws(9,"mat-icon"),QC(10,"delete"),hl()()();}if(s&2){let e=t.$index,n=EC(2);nI(4),Jg("ngModel",n.mandatoryDocs[e]),Tg("list","docs-list-"+e),qI(),nI(),bg("id","docs-list-"+e),nI(),uC(n.availableDocuments);}}function Je(s,t){if(s&1){let e=gC();ws(0,"div",6)(1,"span"),QC(2,"Mandatory Documents"),hl(),ws(3,"button",27),Rg("click",function(){wf(e);let a=EC();return Cf(a.addDocRow())}),ws(4,"mat-icon"),QC(5,"add"),hl()(),ws(6,"label",28)(7,"mat-icon"),QC(8,"upload_file"),hl(),ws(9,"input",29),Rg("change",function(a){wf(e);let r=EC();return Cf(r.onDocFileSelected(a))}),hl()()(),oC(10,He,2,1,"p",30),oC(11,Ge,2,0,"p",15),cC(12,Ke,11,3,"div",31,sC);}if(s&2){let e=EC();nI(6),Ug("uploading",e.isUploadingDoc),nI(3),bg("disabled",e.isUploadingDoc),nI(),iC(e.docUploadError?10:-1),nI(),iC(e.mandatoryDocs.length===0?11:-1),nI(),uC(e.mandatoryDocs);}}function Qe(s,t){s&1&&(ws(0,"p",15),QC(1,"\u{1F4A1} Documents can be added after the agent is created."),hl());}function Xe(s,t){if(s&1){let e=gC();ws(0,"div",6),QC(1,"Save to"),hl(),ws(2,"div",36)(3,"label",37)(4,"input",38),em("ngModelChange",function(a){wf(e);let r=EC();return tT(r.location,a)||(r.location=a),Cf(a)}),hl(),GI(),ws(5,"div",39)(6,"div",40)(7,"span",41),QC(8,"\u{1F464}"),hl(),ws(9,"span",42),QC(10,"Project config"),hl()(),ws(11,"p",43),QC(12),hl()()(),ws(13,"label",37)(14,"input",44),em("ngModelChange",function(a){wf(e);let r=EC();return tT(r.location,a)||(r.location=a),Cf(a)}),hl(),GI(),ws(15,"div",39)(16,"div",40)(17,"span",41),QC(18,"\u{1F4E6}"),hl(),ws(19,"span",42),QC(20,"Colocated"),hl()(),ws(21,"p",43),QC(22,"Next to coday.yaml in ./agents/ (committable)"),hl()()()(),ws(23,"p",15),QC(24,"Storage location is permanent and cannot be changed after creation."),hl();}if(s&2){let e=EC();nI(3),Ug("selected",e.location==="project"),nI(),Jg("ngModel",e.location),qI(),nI(8),Qg("~/.coday/projects/","{","name","}","/agents/ (not committed)"),nI(),Ug("selected",e.location==="colocated"),nI(),Jg("ngModel",e.location),qI();}}function Ye(s,t){if(s&1&&(ws(0,"div",17)(1,"span",6),QC(2,"Storage Location"),hl(),ws(3,"span",45),QC(4),hl(),ws(5,"p",15),QC(6,"Cannot be changed after creation."),hl()()),s&2){let e=EC();nI(3),Ug("badge-project",e.location==="project")("badge-colocated",e.location==="colocated"),nI(),Dl(" ",e.location==="project"?"\u{1F464} Project config":"\u{1F4E6} Colocated"," ");}}function $e(s,t){if(s&1&&(ws(0,"div",18)(1,"mat-icon"),QC(2,"error"),hl(),ws(3,"span"),QC(4),hl()()),s&2){let e=EC();nI(4),Yg(e.errorMessage);}}var E=class s{agentCrudApi=g(w);agentApi=g(f);dialogRef=g(z);data=g(Ue);name="";description="";instructions="";aiProvider="";modelName="";temperature=null;maxOutputTokens=null;openaiAssistantId="";integrationRows=[];mandatoryDocs=[];availableDocuments=[];isUploadingDoc=false;docUploadError="";location="project";isSaving=false;errorMessage="";isEditMode=false;ngOnInit(){if(this.isEditMode=this.data.mode==="edit",this.isEditMode&&this.data.agent){let t=this.data.agent.definition;this.name=t.name,this.description=t.description,this.instructions=t.instructions??"",this.aiProvider=t.aiProvider??"",this.modelName=t.modelName??"",this.temperature=t.temperature??null,this.maxOutputTokens=t.maxOutputTokens??null,this.openaiAssistantId=t.openaiAssistantId??"",this.location=this.data.agent.source,t.integrations&&(this.integrationRows=Object.entries(t.integrations).map(([e,n])=>({integration:e,tools:n?.join(", ")??""}))),this.mandatoryDocs=[...t.mandatoryDocs??[]],this.loadAvailableDocuments();}}loadAvailableDocuments(){this.agentCrudApi.listDocuments(this.location).subscribe({next:t=>this.availableDocuments=t,error:()=>this.availableDocuments=[]});}addDocRow(){this.mandatoryDocs.push("");}removeDocRow(t){this.mandatoryDocs.splice(t,1);}onDocFileSelected(t){let e=t.target,n=e.files?.[0];n&&(this.isUploadingDoc=true,this.docUploadError="",this.agentCrudApi.uploadDocument(this.location,n).subscribe({next:a=>{this.isUploadingDoc=false,this.mandatoryDocs.push(a.relativePath),this.loadAvailableDocuments(),e.value="";},error:a=>{this.isUploadingDoc=false,this.docUploadError=a?.error?.error??a?.message??"Upload failed",e.value="";}}));}addIntegrationRow(){this.integrationRows.push({integration:"",tools:""});}removeIntegrationRow(t){this.integrationRows.splice(t,1);}trackByIndex(t){return t}validateForm(){if(!this.name.trim())return this.errorMessage="Name is required",false;if(!/^[a-zA-Z0-9][a-zA-Z0-9_-]*$/.test(this.name.trim()))return this.errorMessage="Name must start with alphanumeric and contain only letters, digits, hyphens or underscores",false;if(!this.description.trim())return this.errorMessage="Description is required",false;for(let t of this.integrationRows)if(!t.integration.trim())return this.errorMessage="Integration name cannot be empty",false;return true}buildDefinition(){let t=this.mandatoryDocs.map(n=>n.trim()).filter(Boolean),e=this.integrationRows.length>0?Object.fromEntries(this.integrationRows.filter(n=>n.integration.trim()).map(n=>[n.integration.trim(),n.tools.split(",").map(a=>a.trim()).filter(Boolean)])):void 0;return {name:this.name.trim(),description:this.description.trim(),instructions:this.instructions.trim()||void 0,aiProvider:this.aiProvider.trim()||void 0,modelName:this.modelName.trim()||void 0,temperature:this.temperature??void 0,maxOutputTokens:this.maxOutputTokens??void 0,openaiAssistantId:this.openaiAssistantId.trim()||void 0,integrations:e,mandatoryDocs:t.length>0?t:void 0}}save(){if(this.errorMessage="",!this.validateForm())return;let t=this.buildDefinition();this.isSaving=true,(this.isEditMode?this.agentCrudApi.updateAgent(this.name.trim(),t):this.agentCrudApi.createAgent(t,this.location)).subscribe({next:()=>{this.isSaving=false,this.agentApi.clearAllCache(),this.dialogRef.close(true);},error:n=>{this.isSaving=false,this.errorMessage=n?.error?.error||n?.message||"Failed to save agent";}});}cancel(){this.dialogRef.close(false);}static \u0275fac=function(e){return new(e||s)};static \u0275cmp=Fw({type:s,selectors:[["app-agent-form"]],decls:69,vars:18,consts:[["mat-dialog-title",""],[1,"form-container"],["appearance","outline",1,"full-width"],["matInput","","placeholder","my-agent","required","",3,"ngModelChange","ngModel","readonly"],["matInput","","placeholder","What does this agent do?","rows","2","required","",3,"ngModelChange","ngModel"],["matInput","","placeholder","System instructions for the agent...","rows","6",3,"ngModelChange","ngModel"],[1,"section-title"],[1,"row-2col"],["appearance","outline"],["matInput","","placeholder","e.g. anthropic, openai",3,"ngModelChange","ngModel"],["matInput","","placeholder","e.g. claude-sonnet-4-5",3,"ngModelChange","ngModel"],["matInput","","type","number","min","0","max","2","step","0.1","placeholder","0.0 \u2013 2.0",3,"ngModelChange","ngModel"],["matInput","","type","number","min","1","placeholder","e.g. 4096",3,"ngModelChange","ngModel"],["matInput","","placeholder","asst_...",3,"ngModelChange","ngModel"],["mat-icon-button","","type","button","title","Add integration",3,"click"],[1,"hint"],[1,"integration-row"],[1,"source-display"],[1,"error-message"],["align","end"],["mat-button","",3,"click","disabled"],["mat-raised-button","","color","primary",3,"click","disabled"],["appearance","outline",1,"integration-name"],["matInput","","placeholder","e.g. GITHUB",3,"ngModelChange","ngModel"],["appearance","outline",1,"integration-tools"],["matInput","","placeholder","Leave empty for all tools",3,"ngModelChange","ngModel"],["mat-icon-button","","type","button","title","Remove",3,"click"],["mat-icon-button","","type","button","title","Add document path",3,"click"],["title","Upload a document to the pool",1,"upload-btn"],["type","file","hidden","",3,"change","disabled"],[1,"doc-upload-error"],[1,"doc-row"],["appearance","outline",1,"doc-field"],["matInput","","placeholder","documents/guide.md",3,"ngModelChange","ngModel"],[3,"id"],[3,"value"],[1,"source-options"],[1,"source-option"],["type","radio","name","location","value","project",3,"ngModelChange","ngModel"],[1,"source-content"],[1,"source-header"],[1,"source-icon"],[1,"source-label"],[1,"source-description"],["type","radio","name","location","value","colocated",3,"ngModelChange","ngModel"],[1,"source-badge"]],template:function(e,n){e&1&&(ws(0,"h2",0),QC(1),hl(),ws(2,"mat-dialog-content")(3,"div",1)(4,"mat-form-field",2)(5,"mat-label"),QC(6,"Name"),hl(),ws(7,"input",3),em("ngModelChange",function(r){return tT(n.name,r)||(n.name=r),r}),hl(),GI(),ws(8,"mat-hint"),QC(9,"Alphanumeric, hyphens and underscores only. Cannot be changed after creation."),hl()(),ws(10,"mat-form-field",2)(11,"mat-label"),QC(12,"Description"),hl(),ws(13,"textarea",4),em("ngModelChange",function(r){return tT(n.description,r)||(n.description=r),r}),hl(),GI(),hl(),ws(14,"mat-form-field",2)(15,"mat-label"),QC(16,"Instructions"),hl(),ws(17,"textarea",5),em("ngModelChange",function(r){return tT(n.instructions,r)||(n.instructions=r),r}),hl(),GI(),ws(18,"mat-hint"),QC(19,"System prompt / instructions sent to the AI model"),hl()(),ws(20,"div",6),QC(21,"AI Configuration"),hl(),ws(22,"div",7)(23,"mat-form-field",8)(24,"mat-label"),QC(25,"AI Provider"),hl(),ws(26,"input",9),em("ngModelChange",function(r){return tT(n.aiProvider,r)||(n.aiProvider=r),r}),hl(),GI(),hl(),ws(27,"mat-form-field",8)(28,"mat-label"),QC(29,"Model Name"),hl(),ws(30,"input",10),em("ngModelChange",function(r){return tT(n.modelName,r)||(n.modelName=r),r}),hl(),GI(),hl()(),ws(31,"div",7)(32,"mat-form-field",8)(33,"mat-label"),QC(34,"Temperature"),hl(),ws(35,"input",11),em("ngModelChange",function(r){return tT(n.temperature,r)||(n.temperature=r),r}),hl(),GI(),ws(36,"mat-hint"),QC(37,"Leave empty for model default"),hl()(),ws(38,"mat-form-field",8)(39,"mat-label"),QC(40,"Max Output Tokens"),hl(),ws(41,"input",12),em("ngModelChange",function(r){return tT(n.maxOutputTokens,r)||(n.maxOutputTokens=r),r}),hl(),GI(),ws(42,"mat-hint"),QC(43,"Leave empty for model default"),hl()()(),ws(44,"mat-form-field",2)(45,"mat-label"),QC(46,"OpenAI Assistant ID"),hl(),ws(47,"input",13),em("ngModelChange",function(r){return tT(n.openaiAssistantId,r)||(n.openaiAssistantId=r),r}),hl(),GI(),ws(48,"mat-hint"),QC(49,"If set, forces aiProvider to openai"),hl()(),ws(50,"div",6)(51,"span"),QC(52,"Integrations"),hl(),ws(53,"button",14),Rg("click",function(){return n.addIntegrationRow()}),ws(54,"mat-icon"),QC(55,"add"),hl()()(),oC(56,ze,2,0,"p",15),cC(57,qe,12,2,"div",16,sC),oC(59,Je,14,5)(60,Qe,2,0,"p",15),oC(61,Xe,25,8),oC(62,Ye,7,5,"div",17),oC(63,$e,5,1,"div",18),hl()(),ws(64,"mat-dialog-actions",19)(65,"button",20),Rg("click",function(){return n.cancel()}),QC(66,"Cancel"),hl(),ws(67,"button",21),Rg("click",function(){return n.save()}),QC(68),hl()()),e&2&&(nI(),Yg(n.isEditMode?"Edit Agent":"Create Agent"),nI(6),Jg("ngModel",n.name),bg("readonly",n.isEditMode),qI(),nI(6),Jg("ngModel",n.description),qI(),nI(4),Jg("ngModel",n.instructions),qI(),nI(9),Jg("ngModel",n.aiProvider),qI(),nI(4),Jg("ngModel",n.modelName),qI(),nI(5),Jg("ngModel",n.temperature),qI(),nI(6),Jg("ngModel",n.maxOutputTokens),qI(),nI(6),Jg("ngModel",n.openaiAssistantId),qI(),nI(9),iC(n.integrationRows.length===0?56:-1),nI(),uC(n.integrationRows),nI(2),iC(n.isEditMode?59:60),nI(2),iC(n.isEditMode?-1:61),nI(),iC(n.isEditMode?62:-1),nI(),iC(n.errorMessage?63:-1),nI(2),bg("disabled",n.isSaving),nI(2),bg("disabled",n.isSaving),nI(),Dl(" ",n.isSaving?"Saving...":"Save"," "));},dependencies:[ti,Qn,ei,Ye$1,fn,mn,Zn,gt,$t,Wt,cn,zt,jt,Vt,Nt,hr,pr,Gn,Tn,Sn,nt$1,ae,le,ce,yt,wt,Pt,Xt],styles:[".form-container[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:1rem;padding:0;min-width:560px}@media(max-width:768px){.form-container[_ngcontent-%COMP%]{min-width:auto}}.full-width[_ngcontent-%COMP%]{width:100%}.section-title[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.5rem;font-size:1rem;font-weight:600;margin-top:.5rem;margin-bottom:-.25rem}.row-2col[_ngcontent-%COMP%]{display:grid;grid-template-columns:1fr 1fr;gap:1rem}@media(max-width:768px){.row-2col[_ngcontent-%COMP%]{grid-template-columns:1fr}}.integration-row[_ngcontent-%COMP%]{display:flex;align-items:flex-start;gap:.5rem}.integration-row[_ngcontent-%COMP%] .integration-name[_ngcontent-%COMP%]{flex:0 0 180px}.integration-row[_ngcontent-%COMP%] .integration-tools[_ngcontent-%COMP%]{flex:1}.hint[_ngcontent-%COMP%]{margin:0;font-size:.85rem;color:var(--color-text-secondary);font-style:italic}.source-options[_ngcontent-%COMP%]{display:flex;gap:1rem;margin-bottom:.5rem}@media(max-width:768px){.source-options[_ngcontent-%COMP%]{flex-direction:column}}.source-option[_ngcontent-%COMP%]{flex:1;display:flex;align-items:flex-start;gap:.75rem;padding:1rem;background:var(--color-bg);border:2px solid var(--color-border);border-radius:8px;cursor:pointer;transition:all .2s ease}.source-option[_ngcontent-%COMP%]:hover{border-color:var(--color-primary);background:var(--color-bg-hover)}.source-option.selected[_ngcontent-%COMP%]{border-color:var(--color-primary);background:var(--color-bg-hover);box-shadow:0 0 0 1px var(--color-primary)}.source-option[_ngcontent-%COMP%] input[type=radio][_ngcontent-%COMP%]{margin-top:2px;cursor:pointer}.source-option[_ngcontent-%COMP%] .source-content[_ngcontent-%COMP%]{flex:1}.source-option[_ngcontent-%COMP%] .source-content[_ngcontent-%COMP%] .source-header[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.5rem;margin-bottom:.5rem}.source-option[_ngcontent-%COMP%] .source-content[_ngcontent-%COMP%] .source-header[_ngcontent-%COMP%] .source-icon[_ngcontent-%COMP%]{font-size:1.25rem}.source-option[_ngcontent-%COMP%] .source-content[_ngcontent-%COMP%] .source-header[_ngcontent-%COMP%] .source-label[_ngcontent-%COMP%]{font-weight:600;font-size:.95rem}.source-option[_ngcontent-%COMP%] .source-content[_ngcontent-%COMP%] .source-description[_ngcontent-%COMP%]{margin:0;font-size:.85rem;color:var(--color-text-secondary);font-family:monospace;line-height:1.4}.source-display[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.5rem}.source-badge[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:.5rem;padding:.5rem 1rem;border-radius:6px;font-size:.9rem;font-weight:500}.source-badge.badge-project[_ngcontent-%COMP%]{background:#2196f31a;color:#2196f3;border:1px solid rgba(33,150,243,.3)}.source-badge.badge-colocated[_ngcontent-%COMP%]{background:#4caf501a;color:#4caf50;border:1px solid rgba(76,175,80,.3)}.doc-row[_ngcontent-%COMP%]{display:flex;align-items:flex-start;gap:.5rem}.doc-row[_ngcontent-%COMP%] .doc-field[_ngcontent-%COMP%]{flex:1}.upload-btn[_ngcontent-%COMP%]{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:50%;cursor:pointer;color:var(--color-text-secondary);transition:background .2s}.upload-btn[_ngcontent-%COMP%]:hover{background:var(--color-bg-hover);color:var(--color-primary)}.upload-btn.uploading[_ngcontent-%COMP%]{opacity:.5;cursor:wait}.upload-btn[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{font-size:1.25rem;width:1.25rem;height:1.25rem}.doc-upload-error[_ngcontent-%COMP%]{margin:0;font-size:.85rem;color:var(--color-error)}.error-message[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.5rem;padding:.75rem;background:#f443361a;border:1px solid var(--color-error);border-radius:4px;color:var(--color-error)}.error-message[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{font-size:1.25rem;width:1.25rem;height:1.25rem}.error-message[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{flex:1}"],changeDetection:1})};var et=()=>[],tt=s=>({id:s});function nt(s,t){if(s&1&&(ws(0,"div",5),QC(1),hl()),s&2){let e=EC();nI(),Yg(e.errorMessage());}}function it(s,t){if(s&1){let e=gC();ws(0,"ds-entity-card",7),Rg("selected",function(a){wf(e);let r=EC();return Cf(r.onEdit(a))}),yl(1,8),ws(2,"button",9),Rg("click",function(a){return a.stopPropagation()}),ws(3,"mat-icon"),QC(4,"more_vert"),hl()(),vl(),hl();}if(s&2){let e=t.$implicit;EC();let n=MC(9);bg("id",e.id)("name",e.name)("description",e.description)("badges",e.badges??aT(6,et)),nI(2),bg("matMenuTriggerFor",n)("matMenuTriggerData",cT(7,tt,e.id));}}function ot(s,t){if(s&1){let e=gC();ws(0,"button",10),Rg("click",function(){let a=wf(e).id,r=EC();return Cf(r.onEdit(a))}),ws(1,"mat-icon"),QC(2,"edit"),hl(),QC(3," Edit "),hl(),ws(4,"button",11),Rg("click",function(){let a=wf(e).id,r=EC();return Cf(r.onDelete(a))}),ws(5,"mat-icon"),QC(6,"delete"),hl(),QC(7," Delete "),hl();}}var Ve=class s{agentCrudApi=g(w);location=g(_m);dialog=g(Re);agents=Gi([]);isLoading=Gi(false);errorMessage=Gi(null);agentItems=ET(()=>this.agents().map(t=>({id:t.name,name:t.name,description:t.description,badges:this.buildBadges(t),groupKey:t.source,groupLabel:t.source==="project"?"Project (~/.coday/)":"Colocated (next to coday.yaml)"})));ngOnInit(){this.loadAgents();}loadAgents(){this.isLoading.set(true),this.errorMessage.set(null),this.agentCrudApi.listEditableAgents().subscribe({next:t=>{this.agents.set(t),this.isLoading.set(false);},error:t=>{this.errorMessage.set(t?.error?.error??"Failed to load agents"),this.isLoading.set(false);}});}onBack(){this.location.back();}onCreate(){this.dialog.open(E,{width:"700px",maxHeight:"90vh",data:{mode:"create"}}).afterClosed().subscribe(e=>{e&&this.loadAgents();});}onEdit(t){this.agentCrudApi.getAgent(t).subscribe({next:e=>{this.dialog.open(E,{width:"700px",maxHeight:"90vh",data:{mode:"edit",agent:e}}).afterClosed().subscribe(a=>{a&&this.loadAgents();});},error:e=>this.errorMessage.set(e?.error?.error??"Failed to load agent")});}onDelete(t){confirm(`Are you sure you want to delete agent "${t}"?`)&&this.agentCrudApi.deleteAgent(t).subscribe({next:()=>this.loadAgents(),error:e=>this.errorMessage.set(e?.error?.error??"Failed to delete agent")});}buildBadges(t){return [t.source==="project"?{label:"project",variant:"info"}:{label:"colocated",variant:"success"}]}static \u0275fac=function(e){return new(e||s)};static \u0275cmp=Fw({type:s,selectors:[["app-agent-list"]],decls:11,vars:5,consts:[["agentCard",""],["cardMenu","matMenu"],[1,"agent-list-page"],["title","Agents","cardMinWidth","260px","contentMaxWidth","1400px","searchPlaceholder","Filter agents\u2026","emptyMessage","No file-based agents found.",3,"createRequested","items","loading","showCreate","itemTemplate"],["toolbar-start","","mat-icon-button","","title","Back",3,"click"],[1,"agent-list__error"],["matMenuContent",""],[3,"selected","id","name","description","badges"],["dsCardActions",""],["mat-icon-button","",3,"click","matMenuTriggerFor","matMenuTriggerData"],["mat-menu-item","",3,"click"],["mat-menu-item","",1,"agent-list__delete-item",3,"click"]],template:function(e,n){if(e&1&&(ws(0,"div",2)(1,"ds-entity-list",3),Rg("createRequested",function(){return n.onCreate()}),ws(2,"button",4),Rg("click",function(){return n.onBack()}),ws(3,"mat-icon"),QC(4,"chevron_left"),hl()()(),oC(5,nt,2,1,"div",5),hl(),Eg(6,it,5,9,"ng-template",null,0,mT),ws(8,"mat-menu",null,1),Eg(10,ot,8,0,"ng-template",6),hl()),e&2){let a=MC(7);nI(),bg("items",n.agentItems())("loading",n.isLoading())("showCreate",true)("itemTemplate",a),nI(4),iC(n.errorMessage()?5:-1);}},dependencies:[Wn,ot$1,it$1,hr,Gn,yt,wt,In,De,Be,ya,En],styles:["[_nghost-%COMP%]{display:block;width:100%;min-height:100vh;background:var(--color-bg);overflow-y:auto}.agent-list__delete-item[_ngcontent-%COMP%]{color:var(--color-error, #ff3b30)}.agent-list__delete-item[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{color:inherit}.agent-list__error[_ngcontent-%COMP%]{margin:1rem auto;max-width:900px;padding:.75rem 1rem;background:#dc262614;border:1px solid rgba(220,38,38,.25);border-radius:8px;color:var(--color-error, #ff3b30);font-size:.875rem}"],changeDetection:1})};export{Ve as AgentListComponent};
@@ -1 +1 @@
1
- import {g,G,P,h as Rw,i as hr,j as pr,I as Is,A as Ag,q as qC,m as pl,t as tC,J as JE,T as Tg,v as nC,a5 as vl,al as yt$1,am as Gm,a9 as fC,ai as Jg,aa as If,aj as XC,ab as wf,a3 as UI,ak as Xg,a6 as zI,D as Fg,E as wC,K as CC,ac as yC,a8 as Zg}from'./main-6K2UFGD2.js';import {y as yt,w as wt,t as ti,Y as Ye,Z as Zn,c as cn}from'./chunk-C9tuHQmZ.js';var J=["inputElement"];function K(o,r){if(o&1&&(Is(0,"span",3),qC(1),pl()),o&2){let t=yC();JE(),Zg(t.label);}}function U(o,r){if(o&1&&(Is(0,"small",5),qC(1),pl()),o&2){let t=yC();JE(),Zg(t.hint);}}var h=class o{label="";placeholder="";hint="";isDisabled=false;value="";autoFocus=true;valueChange=new yt$1;enterPressed=new yt$1;inputElement;inputValue="";ngAfterViewInit(){this.inputValue=this.value,this.autoFocus&&setTimeout(()=>this.inputElement?.nativeElement.focus(),100);}onValueChange(r){this.valueChange.emit(r);}onEnter(){this.inputValue.trim()&&this.enterPressed.emit(this.inputValue.trim());}focus(){this.inputElement?.nativeElement.focus();}static \u0275fac=function(t){return new(t||o)};static \u0275cmp=Rw({type:o,selectors:[["app-text-input"]],viewQuery:function(t,e){if(t&1&&Fg(J,5),t&2){let p;wC(p=CC())&&(e.inputElement=p.first);}},inputs:{label:"label",placeholder:"placeholder",hint:"hint",isDisabled:"isDisabled",value:"value",autoFocus:"autoFocus"},outputs:{valueChange:"valueChange",enterPressed:"enterPressed"},decls:6,vars:5,consts:[["inputElement",""],[1,"text-input-container"],[1,"text-input-wrapper"],[1,"text-input-label"],["type","text",1,"text-input-field",3,"ngModelChange","keydown.enter","ngModel","placeholder","disabled"],[1,"text-input-hint"]],template:function(t,e){if(t&1){let p=fC();Is(0,"div",1)(1,"label",2),tC(2,K,2,1,"span",3),Is(3,"input",4,0),Jg("ngModelChange",function(m){return If(p),XC(e.inputValue,m)||(e.inputValue=m),wf(m)}),Ag("ngModelChange",function(m){return e.onValueChange(m)})("keydown.enter",function(){return e.onEnter()}),pl(),UI(),pl(),tC(5,U,2,1,"small",5),pl();}t&2&&(JE(2),nC(e.label?2:-1),JE(),Xg("ngModel",e.inputValue),Tg("placeholder",e.placeholder)("disabled",e.isDisabled),zI(),JE(2),nC(e.hint?5:-1));},dependencies:[ti,Ye,Zn,cn,Gm],styles:[".text-input-container[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.5rem;width:100%}.text-input-wrapper[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.5rem;width:100%;cursor:text}.text-input-label[_ngcontent-%COMP%]{font-size:.95rem;font-weight:500;color:var(--color-text);margin:0}.text-input-field[_ngcontent-%COMP%]{width:100%;padding:.75rem 1rem;font-size:1rem;color:var(--color-text);background:var(--color-bg);border:1px solid var(--color-border);border-radius:8px;outline:none;transition:all .2s ease}.text-input-field[_ngcontent-%COMP%]::placeholder{color:var(--color-text-secondary);opacity:.7}.text-input-field[_ngcontent-%COMP%]:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px rgba(var(--color-primary-rgb),.1)}.text-input-field[_ngcontent-%COMP%]:disabled{opacity:.6;cursor:not-allowed;background:var(--color-surface)}.text-input-hint[_ngcontent-%COMP%]{font-size:.85rem;color:var(--color-text-secondary);margin:0;font-style:italic}@media(max-width:768px){.text-input-field[_ngcontent-%COMP%]{padding:.65rem .85rem;font-size:.95rem}.text-input-label[_ngcontent-%COMP%]{font-size:.9rem}.text-input-hint[_ngcontent-%COMP%]{font-size:.8rem}}"],changeDetection:1})};function X(o,r){if(o&1&&(Is(0,"div",8),qC(1),pl()),o&2){let t=yC();JE(),Zg(t.errorMessage);}}var L=class o{router=g(G);projectStateService=g(P);projectName="";projectPath="";isCreating=false;errorMessage=null;isValid(){return this.projectName.trim()!==""&&this.projectPath.trim()!==""}onCreate(){if(!this.isValid()){this.errorMessage="Both name and path are required";return}this.isCreating=true,this.errorMessage=null,this.projectStateService.createProject(this.projectName.trim(),this.projectPath.trim()).subscribe({next:()=>{let r=this.projectName.trim();this.isCreating=false,this.projectStateService.selectProject(r),this.router.navigate(["project",r]);},error:r=>{this.errorMessage=r.error?.error??"Failed to create project",this.isCreating=false;}});}onCancel(){this.router.navigate(["/"]);}static \u0275fac=function(t){return new(t||o)};static \u0275cmp=Rw({type:o,selectors:[["app-project-new"]],decls:19,vars:9,consts:[[1,"project-new-page"],[1,"project-new-card"],["mat-button","",1,"project-new__back",3,"click"],[1,"project-new__title"],[1,"project-new__subtitle"],[1,"project-new__form"],["label","Project name","placeholder","my-project",3,"valueChange","value","isDisabled","autoFocus"],["label","Project path","placeholder","/path/to/project","hint","Absolute path to the project directory",3,"valueChange","enterPressed","value","isDisabled"],[1,"project-new__error"],[1,"project-new__actions"],["mat-button","",3,"click","disabled"],["mat-flat-button","","color","primary",3,"click","disabled"]],template:function(t,e){t&1&&(Is(0,"div",0)(1,"div",1)(2,"button",2),Ag("click",function(){return e.onCancel()}),Is(3,"mat-icon"),qC(4,"arrow_back"),pl(),qC(5," Back to projects "),pl(),Is(6,"h1",3),qC(7,"New project"),pl(),Is(8,"p",4),qC(9,"Point Coday to an existing directory on your machine."),pl(),Is(10,"div",5)(11,"app-text-input",6),Ag("valueChange",function(d){return e.projectName=d}),pl(),Is(12,"app-text-input",7),Ag("valueChange",function(d){return e.projectPath=d})("enterPressed",function(){return e.onCreate()}),pl(),tC(13,X,2,1,"div",8),pl(),Is(14,"div",9)(15,"button",10),Ag("click",function(){return e.onCancel()}),qC(16,"Cancel"),pl(),Is(17,"button",11),Ag("click",function(){return e.onCreate()}),qC(18),pl()()()()),t&2&&(JE(11),Tg("value",e.projectName)("isDisabled",e.isCreating)("autoFocus",true),JE(),Tg("value",e.projectPath)("isDisabled",e.isCreating),JE(),nC(e.errorMessage?13:-1),JE(2),Tg("disabled",e.isCreating),JE(2),Tg("disabled",!e.isValid()||e.isCreating),JE(),vl(" ",e.isCreating?"Creating\u2026":"Create project"," "));},dependencies:[hr,pr,yt,wt,h],styles:[".project-new-page[_ngcontent-%COMP%]{display:flex;align-items:flex-start;justify-content:center;min-height:100vh;width:100%;background:var(--color-bg);padding:2rem 1.5rem;box-sizing:border-box}.project-new-card[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:1.5rem;width:100%;max-width:560px;padding:2rem;background:var(--color-bg-secondary, rgba(255, 255, 255, .7));border:1px solid var(--color-border, rgba(0, 0, 0, .1));border-radius:16px;box-shadow:var(--glass-shadow, 0 8px 32px rgba(31, 38, 135, .15));margin-top:2rem}.project-new__back[_ngcontent-%COMP%]{align-self:flex-start;margin-left:-.5rem;color:var(--color-text-secondary, #6e6e73)}.project-new__title[_ngcontent-%COMP%]{margin:0;font-size:1.625rem;font-weight:700;color:var(--color-text, #1d1d1f);letter-spacing:-.02em}.project-new__subtitle[_ngcontent-%COMP%]{margin:-.75rem 0 0;font-size:.9375rem;color:var(--color-text-secondary, #6e6e73)}.project-new__form[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:1.25rem}.project-new__error[_ngcontent-%COMP%]{padding:.75rem 1rem;background:#dc262614;border:1px solid rgba(220,38,38,.25);border-radius:8px;color:var(--color-error, #ff3b30);font-size:.875rem}.project-new__actions[_ngcontent-%COMP%]{display:flex;gap:.75rem;justify-content:flex-end;padding-top:.25rem}"],changeDetection:1})};export{L as ProjectNewComponent};
1
+ import {g,G,P,h as Fw,i as hr,j as pr,m as ws,o as Rg,Q as QC,n as hl,q as oC,t as nI,v as bg,x as iC,a5 as Dl,al as yt$1,am as Wm,a9 as gC,ai as em,aa as wf,aj as tT,ab as Cf,a3 as GI,ak as Jg,a6 as qI,C as Pg,D as bC,H as SC,ac as EC,a8 as Yg}from'./main-5PAOSHSM.js';import {y as yt,w as wt,t as ti,Y as Ye,Z as Zn,c as cn}from'./chunk-tTmeIHGS.js';var J=["inputElement"];function K(o,r){if(o&1&&(ws(0,"span",3),QC(1),hl()),o&2){let t=EC();nI(),Yg(t.label);}}function U(o,r){if(o&1&&(ws(0,"small",5),QC(1),hl()),o&2){let t=EC();nI(),Yg(t.hint);}}var h=class o{label="";placeholder="";hint="";isDisabled=false;value="";autoFocus=true;valueChange=new yt$1;enterPressed=new yt$1;inputElement;inputValue="";ngAfterViewInit(){this.inputValue=this.value,this.autoFocus&&setTimeout(()=>this.inputElement?.nativeElement.focus(),100);}onValueChange(r){this.valueChange.emit(r);}onEnter(){this.inputValue.trim()&&this.enterPressed.emit(this.inputValue.trim());}focus(){this.inputElement?.nativeElement.focus();}static \u0275fac=function(t){return new(t||o)};static \u0275cmp=Fw({type:o,selectors:[["app-text-input"]],viewQuery:function(t,e){if(t&1&&Pg(J,5),t&2){let p;bC(p=SC())&&(e.inputElement=p.first);}},inputs:{label:"label",placeholder:"placeholder",hint:"hint",isDisabled:"isDisabled",value:"value",autoFocus:"autoFocus"},outputs:{valueChange:"valueChange",enterPressed:"enterPressed"},decls:6,vars:5,consts:[["inputElement",""],[1,"text-input-container"],[1,"text-input-wrapper"],[1,"text-input-label"],["type","text",1,"text-input-field",3,"ngModelChange","keydown.enter","ngModel","placeholder","disabled"],[1,"text-input-hint"]],template:function(t,e){if(t&1){let p=gC();ws(0,"div",1)(1,"label",2),oC(2,K,2,1,"span",3),ws(3,"input",4,0),em("ngModelChange",function(m){return wf(p),tT(e.inputValue,m)||(e.inputValue=m),Cf(m)}),Rg("ngModelChange",function(m){return e.onValueChange(m)})("keydown.enter",function(){return e.onEnter()}),hl(),GI(),hl(),oC(5,U,2,1,"small",5),hl();}t&2&&(nI(2),iC(e.label?2:-1),nI(),Jg("ngModel",e.inputValue),bg("placeholder",e.placeholder)("disabled",e.isDisabled),qI(),nI(2),iC(e.hint?5:-1));},dependencies:[ti,Ye,Zn,cn,Wm],styles:[".text-input-container[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.5rem;width:100%}.text-input-wrapper[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.5rem;width:100%;cursor:text}.text-input-label[_ngcontent-%COMP%]{font-size:.95rem;font-weight:500;color:var(--color-text);margin:0}.text-input-field[_ngcontent-%COMP%]{width:100%;padding:.75rem 1rem;font-size:1rem;color:var(--color-text);background:var(--color-bg);border:1px solid var(--color-border);border-radius:8px;outline:none;transition:all .2s ease}.text-input-field[_ngcontent-%COMP%]::placeholder{color:var(--color-text-secondary);opacity:.7}.text-input-field[_ngcontent-%COMP%]:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px rgba(var(--color-primary-rgb),.1)}.text-input-field[_ngcontent-%COMP%]:disabled{opacity:.6;cursor:not-allowed;background:var(--color-surface)}.text-input-hint[_ngcontent-%COMP%]{font-size:.85rem;color:var(--color-text-secondary);margin:0;font-style:italic}@media(max-width:768px){.text-input-field[_ngcontent-%COMP%]{padding:.65rem .85rem;font-size:.95rem}.text-input-label[_ngcontent-%COMP%]{font-size:.9rem}.text-input-hint[_ngcontent-%COMP%]{font-size:.8rem}}"],changeDetection:1})};function X(o,r){if(o&1&&(ws(0,"div",8),QC(1),hl()),o&2){let t=EC();nI(),Yg(t.errorMessage);}}var L=class o{router=g(G);projectStateService=g(P);projectName="";projectPath="";isCreating=false;errorMessage=null;isValid(){return this.projectName.trim()!==""&&this.projectPath.trim()!==""}onCreate(){if(!this.isValid()){this.errorMessage="Both name and path are required";return}this.isCreating=true,this.errorMessage=null,this.projectStateService.createProject(this.projectName.trim(),this.projectPath.trim()).subscribe({next:()=>{let r=this.projectName.trim();this.isCreating=false,this.projectStateService.selectProject(r),this.router.navigate(["project",r]);},error:r=>{this.errorMessage=r.error?.error??"Failed to create project",this.isCreating=false;}});}onCancel(){this.router.navigate(["/"]);}static \u0275fac=function(t){return new(t||o)};static \u0275cmp=Fw({type:o,selectors:[["app-project-new"]],decls:19,vars:9,consts:[[1,"project-new-page"],[1,"project-new-card"],["mat-button","",1,"project-new__back",3,"click"],[1,"project-new__title"],[1,"project-new__subtitle"],[1,"project-new__form"],["label","Project name","placeholder","my-project",3,"valueChange","value","isDisabled","autoFocus"],["label","Project path","placeholder","/path/to/project","hint","Absolute path to the project directory",3,"valueChange","enterPressed","value","isDisabled"],[1,"project-new__error"],[1,"project-new__actions"],["mat-button","",3,"click","disabled"],["mat-flat-button","","color","primary",3,"click","disabled"]],template:function(t,e){t&1&&(ws(0,"div",0)(1,"div",1)(2,"button",2),Rg("click",function(){return e.onCancel()}),ws(3,"mat-icon"),QC(4,"arrow_back"),hl(),QC(5," Back to projects "),hl(),ws(6,"h1",3),QC(7,"New project"),hl(),ws(8,"p",4),QC(9,"Point Coday to an existing directory on your machine."),hl(),ws(10,"div",5)(11,"app-text-input",6),Rg("valueChange",function(d){return e.projectName=d}),hl(),ws(12,"app-text-input",7),Rg("valueChange",function(d){return e.projectPath=d})("enterPressed",function(){return e.onCreate()}),hl(),oC(13,X,2,1,"div",8),hl(),ws(14,"div",9)(15,"button",10),Rg("click",function(){return e.onCancel()}),QC(16,"Cancel"),hl(),ws(17,"button",11),Rg("click",function(){return e.onCreate()}),QC(18),hl()()()()),t&2&&(nI(11),bg("value",e.projectName)("isDisabled",e.isCreating)("autoFocus",true),nI(),bg("value",e.projectPath)("isDisabled",e.isCreating),nI(),iC(e.errorMessage?13:-1),nI(2),bg("disabled",e.isCreating),nI(2),bg("disabled",!e.isValid()||e.isCreating),nI(),Dl(" ",e.isCreating?"Creating\u2026":"Create project"," "));},dependencies:[hr,pr,yt,wt,h],styles:[".project-new-page[_ngcontent-%COMP%]{display:flex;align-items:flex-start;justify-content:center;min-height:100vh;width:100%;background:var(--color-bg);padding:2rem 1.5rem;box-sizing:border-box}.project-new-card[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:1.5rem;width:100%;max-width:560px;padding:2rem;background:var(--color-bg-secondary, rgba(255, 255, 255, .7));border:1px solid var(--color-border, rgba(0, 0, 0, .1));border-radius:16px;box-shadow:var(--glass-shadow, 0 8px 32px rgba(31, 38, 135, .15));margin-top:2rem}.project-new__back[_ngcontent-%COMP%]{align-self:flex-start;margin-left:-.5rem;color:var(--color-text-secondary, #6e6e73)}.project-new__title[_ngcontent-%COMP%]{margin:0;font-size:1.625rem;font-weight:700;color:var(--color-text, #1d1d1f);letter-spacing:-.02em}.project-new__subtitle[_ngcontent-%COMP%]{margin:-.75rem 0 0;font-size:.9375rem;color:var(--color-text-secondary, #6e6e73)}.project-new__form[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:1.25rem}.project-new__error[_ngcontent-%COMP%]{padding:.75rem 1rem;background:#dc262614;border:1px solid rgba(220,38,38,.25);border-radius:8px;color:var(--color-error, #ff3b30);font-size:.875rem}.project-new__actions[_ngcontent-%COMP%]{display:flex;gap:.75rem;justify-content:flex-end;padding-top:.25rem}"],changeDetection:1})};export{L as ProjectNewComponent};