@whoz-oss/coday-client 0.244.0 → 0.245.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/browser/{chunk-LHKOA7FX.js → chunk-2BMHZNQA.js} +1 -1
- package/browser/{chunk-ADEIEQGJ.js → chunk-2IN2N6PV.js} +1 -1
- package/browser/{chunk-TRFKVZGV.js → chunk-2QDRHKK5.js} +1 -1
- package/browser/{chunk-AK746XRX.js → chunk-45MC2DTD.js} +1 -1
- package/browser/{chunk-WMHS3NSI.js → chunk-4QVEFNE3.js} +1 -1
- package/browser/{chunk-4CNY7Z64.js → chunk-4QXUUAXS.js} +1 -1
- package/browser/{chunk-6BMCL5TR.js → chunk-5PVR7BPQ.js} +1 -1
- package/browser/{chunk-VZOBZ3DD.js → chunk-6QJAB37Y.js} +1 -1
- package/browser/chunk-6UZOFA34.js +1 -0
- package/browser/{chunk-76HYDFUL.js → chunk-7QFIBIYY.js} +1 -1
- package/browser/{chunk-LUB22VNT.js → chunk-AGUXPJDD.js} +1 -1
- package/browser/{chunk-UO7SKQEC.js → chunk-AMWKKZG5.js} +1 -1
- package/browser/{chunk-X73LZ3QV.js → chunk-ARAXWPWU.js} +1 -1
- package/browser/{chunk-5OGZHNUE.js → chunk-BSYMLXS6.js} +1 -1
- package/browser/{chunk-UQTA3ACH.js → chunk-C2LUO2MP.js} +1 -1
- package/browser/{chunk-F4ZRQ6MH.js → chunk-CQANBPMP.js} +1 -1
- package/browser/{chunk-VLDPXI7G.js → chunk-CWVJWHAD.js} +1 -1
- package/browser/{chunk-U7ZJFIOR.js → chunk-D67AF7QL.js} +1 -1
- package/browser/{chunk-CSHG3PLJ.js → chunk-DGCILIN5.js} +1 -1
- package/browser/{chunk-U3AHBQTX.js → chunk-EG5EQQU3.js} +1 -1
- package/browser/{chunk-CU7SABOQ.js → chunk-EHQPUQEI.js} +1 -1
- package/browser/{chunk-QXBTTCPM.js → chunk-FCEVFEIX.js} +1 -1
- package/browser/{chunk-ONZVOEJQ.js → chunk-FCFKY56K.js} +1 -1
- package/browser/{chunk-X5ZRXGFA.js → chunk-FSUOGZGO.js} +1 -1
- package/browser/{chunk-QTXEWRHZ.js → chunk-GLZG7RKF.js} +1 -1
- package/browser/{chunk-YGBFW4ZS.js → chunk-GS2CQHR7.js} +1 -1
- package/browser/{chunk-W7A7CPWM.js → chunk-HD2F6BMJ.js} +1 -1
- package/browser/{chunk-NYUYHMIH.js → chunk-IMS7HQGJ.js} +1 -1
- package/browser/chunk-KCFDTF3A.js +1 -0
- package/browser/{chunk-GLFQ37PU.js → chunk-KYYI3JSI.js} +1 -1
- package/browser/{chunk-KWJJEVAI.js → chunk-LIBCKDBU.js} +1 -1
- package/browser/{chunk-5Y2Q6WKL.js → chunk-LRIDOWQT.js} +1 -1
- package/browser/{chunk-I4RHXOIC.js → chunk-M6HAWZVC.js} +1 -1
- package/browser/chunk-MBQHFE5U.js +1 -0
- package/browser/{chunk-BWBZLC7A.js → chunk-NT57GO6D.js} +1 -1
- package/browser/{chunk-N2NJQ7DJ.js → chunk-NYQXGX3Y.js} +1 -1
- package/browser/{chunk-XAEUGARN.js → chunk-OTZDQE5T.js} +1 -1
- package/browser/{chunk-ZXQEKBPA.js → chunk-PEPRUAAU.js} +1 -1
- package/browser/{chunk-7H4TBVB7.js → chunk-PKLY5FK2.js} +1 -1
- package/browser/{chunk-S5QSZK6N.js → chunk-Q3UQBBUS.js} +1 -1
- package/browser/{chunk-MIAKSSSF.js → chunk-QCLAOYIL.js} +1 -1
- package/browser/chunk-QKICZGWX.js +1 -0
- package/browser/{chunk-7O6TY5IW.js → chunk-QTGBG7IF.js} +1 -1
- package/browser/{chunk-SZM3NJVZ.js → chunk-SC7BP3G3.js} +1 -1
- package/browser/chunk-SFQE4GQ6.js +1 -0
- package/browser/{chunk-5N6DUZII.js → chunk-SI42WXFB.js} +1 -1
- package/browser/{chunk-TNSH3NBF.js → chunk-T4R5WSRE.js} +1 -1
- package/browser/chunk-UJ2IGPRI.js +1 -0
- package/browser/{chunk-R2NWLPS6.js → chunk-VVFVGWIQ.js} +1 -1
- package/browser/{chunk-RQKLSUW5.js → chunk-W34FCJM7.js} +1 -1
- package/browser/{chunk-H6NBS4JE.js → chunk-W7ONGRS7.js} +1 -1
- package/browser/{chunk-NNUJIQ6R.js → chunk-WJZ4NXIG.js} +1 -1
- package/browser/{chunk-GSUU7JSY.js → chunk-WTBQIOPQ.js} +1 -1
- package/browser/{chunk-FA2MVU23.js → chunk-XC5W65K7.js} +1 -1
- package/browser/{chunk-4FGWE3EW.js → chunk-XKHDPUML.js} +1 -1
- package/browser/{chunk-ECISS7V2.js → chunk-XS4CC6GG.js} +1 -1
- package/browser/{chunk-UWYJO2DN.js → chunk-YCZCEQQL.js} +1 -1
- package/browser/chunk-YFQUZF2M.js +1 -0
- package/browser/{chunk-ZQZHBROX.js → chunk-ZEN5PJJE.js} +1 -1
- package/browser/{chunk-KJJPVCIH.js → chunk-ZJLDJUUY.js} +1 -1
- package/browser/{chunk-MFSY4HYK.js → chunk-ZM4HUO26.js} +1 -1
- package/browser/index.html +1 -1
- package/browser/{main-VWHGBAF5.js → main-5JFQENOY.js} +1 -1
- package/package.json +1 -1
- package/browser/chunk-EAVXJ7QN.js +0 -1
- package/browser/chunk-ENRRDIUM.js +0 -1
- package/browser/chunk-P6WNH2KJ.js +0 -1
- package/browser/chunk-XJYEZL5J.js +0 -1
- package/browser/chunk-XZRVHU66.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as le}from"./chunk-UO7SKQEC.js";import{A as H,b as G,y as x,z as u}from"./chunk-UQTA3ACH.js";import{a as L,c as B}from"./chunk-6XX7GME4.js";import{a as w,c as N}from"./chunk-VMYKE4ZC.js";import{B as ie,F as ae,b as K,c as j,e as h,g as Y,h as J,i as Q,l as p,n as X,o as Z,s as ee,w as te,x as ne,y as oe,z as re}from"./chunk-7OGOI6WM.js";import{Bb as F,D as q,Db as E,Fb as s,Ha as $,Ka as a,R as k,Rb as b,Tb as i,Ub as g,Vb as D,Wa as W,a as V,b as A,ca as C,ga as M,ha as O,lb as c,m as R,ma as z,mb as m,mc as T,pb as S,qb as P,rb as d,sb as o,ta as v,tb as r,ub as _,z as U}from"./chunk-CHEXA6RY.js";var I=(n,t)=>t.value,ce=(n,t)=>t.id;function me(n,t){n&1&&(o(0,"p",5),i(1,"Loading\u2026"),r())}function se(n,t){n&1&&(o(0,"span",12),i(1," Name is required. "),r())}function pe(n,t){if(n&1&&(o(0,"p",40),i(1),r(),o(2,"span",13),i(3,"Agent Config cannot be changed after creation."),r()),n&2){let e=s(2);a(),g(e.resolveAgentConfigName(e.agentConfigIdControl.value))}}function ue(n,t){if(n&1&&(o(0,"a",41),i(1,"Add an agent config"),r(),i(2," first. ")),n&2){let e=s(3);d("href","/agentos/"+e.namespaceId+"/agent-configs/new",$)}}function fe(n,t){if(n&1&&(o(0,"p",13),i(1," No agent configs available in this scope yet. "),c(2,ue,3,1),r()),n&2){let e=s(2);a(2),m(e.isPlatformMode?-1:2)}}function _e(n,t){if(n&1&&(o(0,"option",23),i(1),r()),n&2){let e=t.$implicit;d("value",e.id),a(),g(e.name)}}function he(n,t){n&1&&(o(0,"span",12),i(1,"Agent Config is required."),r())}function ge(n,t){if(n&1&&(o(0,"select",42)(1,"option",43),i(2,"Select an agent config\u2026"),r(),S(3,_e,2,2,"option",23,ce),r(),c(5,he,2,0,"span",12),o(6,"span",13),i(7,"Immutable after creation."),r()),n&2){let e=s(2);d("formControl",e.agentConfigIdControl),a(3),P(e.availableAgentConfigs()),a(2),m(e.agentConfigIdControl.invalid&&e.agentConfigIdControl.touched?5:-1)}}function Ce(n,t){n&1&&(o(0,"span",12),i(1,"Opening message is required."),r())}function ve(n,t){if(n&1&&(o(0,"option",23),i(1),r()),n&2){let e=t.$implicit;d("value",e.value),a(),g(e.label)}}function be(n,t){if(n&1){let e=F();o(0,"label",46)(1,"input",47),E("change",function(){let f=M(e).$implicit,y=s(3);return O(y.toggleDay(f.value))}),r(),o(2,"span",48),i(3),r()()}if(n&2){let e=t.$implicit,l=s(3);a(),d("checked",l.isDaySelected(e.value)),a(2),g(e.label)}}function xe(n,t){if(n&1&&(o(0,"div",8)(1,"span",44),i(2,"Days of week"),r(),o(3,"div",45),S(4,be,4,2,"label",46,I),r(),o(6,"span",13),i(7,"Leave empty to run every day of the week."),r()()),n&2){let e=s(2);a(4),P(e.dayOptions)}}function ye(n,t){n&1&&(o(0,"span",12),i(1,"Valid time is required (HH:mm)."),r())}function Se(n,t){n&1&&(o(0,"span",12),i(1,"Start date is required."),r())}function Pe(n,t){if(n&1&&(o(0,"option",23),i(1),r()),n&2){let e=t.$implicit;d("value",e.value),a(),g(e.label)}}function Ee(n,t){n&1&&(o(0,"span",12),i(1,"End date is required."),r())}function Me(n,t){if(n&1&&(o(0,"div",8)(1,"label",49),i(2," End date "),o(3,"span",10),i(4,"*"),r()(),_(5,"input",50),c(6,Ee,2,0,"span",12),r()),n&2){let e=s(2);a(5),b("scheduled-prompt-form__input--invalid",e.form.hasError("endDateRequired")&&e.endDateControl.touched),d("formControl",e.endDateControl),a(),m(e.form.hasError("endDateRequired")&&e.endDateControl.touched?6:-1)}}function Oe(n,t){n&1&&(o(0,"span",12),i(1,"Must be at least 1."),r())}function De(n,t){if(n&1&&(o(0,"div",8)(1,"label",51),i(2," Number of occurrences "),o(3,"span",10),i(4,"*"),r()(),_(5,"input",52),c(6,Oe,2,0,"span",12),r()),n&2){let e=s(2);a(5),b("scheduled-prompt-form__input--invalid",e.form.hasError("occurrenceCountRequired")&&e.occurrenceCountControl.touched),d("formControl",e.occurrenceCountControl),a(),m(e.form.hasError("occurrenceCountRequired")&&e.occurrenceCountControl.touched?6:-1)}}function Te(n,t){if(n&1&&(o(0,"p",36),i(1),r()),n&2){let e=s(2);a(),g(e.errorMessage())}}function we(n,t){if(n&1){let e=F();o(0,"form",7),E("ngSubmit",function(){M(e);let f=s();return O(f.submit())}),o(1,"div",8)(2,"label",9),i(3," Name "),o(4,"span",10),i(5,"*"),r()(),_(6,"input",11),c(7,se,2,0,"span",12),o(8,"span",13),i(9,'Free-form name (e.g. "Weekly Report"). Cannot be changed after creation.'),r()(),o(10,"div",8)(11,"label",14),i(12,"Description"),r(),_(13,"input",15),r(),o(14,"div",8)(15,"label",16),i(16," Agent Config "),o(17,"span",10),i(18,"*"),r()(),c(19,pe,4,1)(20,fe,3,1,"p",13)(21,ge,8,2),r(),o(22,"div",8)(23,"label",17),i(24," Opening message "),o(25,"span",10),i(26,"*"),r()(),_(27,"textarea",18),c(28,Ce,2,0,"span",12),o(29,"span",13),i(30," The message sent to the agent when the scheduled prompt fires. "),r()(),o(31,"fieldset",19)(32,"legend",20),i(33,"Recurrence"),r(),o(34,"div",8)(35,"label",21),i(36," Unit "),o(37,"span",10),i(38,"*"),r()(),o(39,"select",22),S(40,ve,2,2,"option",23,I),r()(),c(42,xe,8,0,"div",8),o(43,"div",8)(44,"label",24),i(45," Time (UTC) "),o(46,"span",10),i(47,"*"),r()(),o(48,"div",25),_(49,"input",26),o(50,"span",27),i(51,"UTC"),r()(),c(52,ye,2,0,"span",12),r()(),o(53,"fieldset",19)(54,"legend",20),i(55,"Planning"),r(),o(56,"div",8)(57,"label",28),i(58," Start date "),o(59,"span",10),i(60,"*"),r()(),_(61,"input",29),c(62,Se,2,0,"span",12),r(),o(63,"div",8)(64,"label",30),i(65," Ends "),o(66,"span",10),i(67,"*"),r()(),o(68,"select",31),S(69,Pe,2,2,"option",23,I),r()(),c(71,Me,7,4,"div",8),c(72,De,7,4,"div",8),r(),o(73,"div",8)(74,"label",32),_(75,"input",33),o(76,"span",34),i(77,"Enabled"),r()(),o(78,"p",35),i(79," When disabled, the scheduled prompt is saved but will not run on schedule. "),r()(),c(80,Te,2,1,"p",36),o(81,"div",37)(82,"button",38),i(83),r(),o(84,"button",39),E("click",function(){M(e);let f=s();return O(f.cancel())}),i(85,"Cancel"),r()()()}if(n&2){let e=s();d("formGroup",e.form),a(6),b("scheduled-prompt-form__input--invalid",e.nameControl.invalid&&e.nameControl.touched),d("formControl",e.nameControl),a(),m(e.nameControl.invalid&&e.nameControl.touched?7:-1),a(6),d("formControl",e.descriptionControl),a(6),m(e.isEditMode()?19:e.availableAgentConfigs().length===0?20:21),a(8),b("scheduled-prompt-form__textarea--invalid",e.promptContentControl.invalid&&e.promptContentControl.touched),d("formControl",e.promptContentControl),a(),m(e.promptContentControl.invalid&&e.promptContentControl.touched?28:-1),a(11),d("formControl",e.unitControl),a(),P(e.schedulerUnits),a(2),m(e.showDayFilter()?42:-1),a(7),d("formControl",e.timeUtcControl),a(3),m(e.timeUtcControl.invalid&&e.timeUtcControl.touched?52:-1),a(9),b("scheduled-prompt-form__input--invalid",e.startDateControl.invalid&&e.startDateControl.touched),d("formControl",e.startDateControl),a(),m(e.startDateControl.invalid&&e.startDateControl.touched?62:-1),a(6),d("formControl",e.endTypeControl),a(),P(e.endTypes),a(2),m(e.showEndDate()?71:-1),a(),m(e.showOccurrenceCount()?72:-1),a(3),d("formControl",e.enabledControl),a(5),m(e.errorMessage()?80:-1),a(2),d("disabled",e.form.invalid||e.isSubmitting()),a(),D(" ",e.isEditMode()?"Save changes":"Create scheduled prompt"," ")}}var de=class n{route=C(L);router=C(B);destroyRef=C(z);state=C(le);agentConfigController=C(G);namespaceId=this.route.snapshot.params.namespaceId;isPlatformMode=!this.namespaceId;form=new Q({name:new p("",{nonNullable:!0,validators:[h.required]}),description:new p(null),agentConfigId:new p("",{nonNullable:!0,validators:[h.required]}),promptContent:new p("",{nonNullable:!0,validators:[h.required]}),unit:new p(x.WEEK,{nonNullable:!0,validators:[h.required]}),days:new p([],{nonNullable:!0}),timeUtc:new p("09:00",{nonNullable:!0,validators:[h.required,h.pattern(/^([01]\d|2[0-3]):[0-5]\d$/)]}),startDate:new p("",{nonNullable:!0,validators:[h.required]}),endType:new p(u.NEVER,{nonNullable:!0,validators:[h.required]}),endDate:new p(null),occurrenceCount:new p(null),enabled:new p(!0,{nonNullable:!0})},{validators:[ke,Fe]});get nameControl(){return this.form.controls.name}get descriptionControl(){return this.form.controls.description}get agentConfigIdControl(){return this.form.controls.agentConfigId}get promptContentControl(){return this.form.controls.promptContent}get unitControl(){return this.form.controls.unit}get daysControl(){return this.form.controls.days}get timeUtcControl(){return this.form.controls.timeUtc}get startDateControl(){return this.form.controls.startDate}get endTypeControl(){return this.form.controls.endType}get endDateControl(){return this.form.controls.endDate}get occurrenceCountControl(){return this.form.controls.occurrenceCount}get enabledControl(){return this.form.controls.enabled}isEditMode=v(!1);isSubmitting=v(!1);isLoading=v(!1);errorMessage=v(null);SchedulerUnit=x;SchedulerEndType=u;schedulerUnits=[{value:x.WEEK,label:"Week(s)"},{value:x.MONTH,label:"Month(s)"}];endTypes=[{value:u.NEVER,label:"Never"},{value:u.ON_DATE,label:"On date"},{value:u.OCCURRENCES,label:"After N occurrences"}];dayOptions=Object.entries(H).map(([t,e])=>({value:t,label:e}));unitSignal=N(this.unitControl.valueChanges.pipe(k(this.unitControl.value)));endTypeSignal=N(this.endTypeControl.valueChanges.pipe(k(this.endTypeControl.value)));showDayFilter=T(()=>this.unitSignal()===x.WEEK);showEndDate=T(()=>this.endTypeSignal()===u.ON_DATE);showOccurrenceCount=T(()=>this.endTypeSignal()===u.OCCURRENCES);agentConfigs=v([]);availableAgentConfigs=this.agentConfigs.asReadonly();existingPrompt=null;ngOnInit(){this.startDateControl.setValue(Ne());let t=this.route.snapshot.paramMap.get("scheduledPromptId");t?(this.isEditMode.set(!0),this.loadPromptAndResources(t)):this.loadResources()}loadPromptAndResources(t){this.isLoading.set(!0),U({prompt:this.state.getById(t),agentConfigs:this.agentConfigs$()}).pipe(w(this.destroyRef)).subscribe({next:({prompt:e,agentConfigs:l})=>{this.existingPrompt=e,this.agentConfigs.set(l),this.hydrateForm(e),this.isLoading.set(!1)},error:()=>{this.isLoading.set(!1),this.navigateBack()}})}loadResources(){this.agentConfigs$().pipe(w(this.destroyRef)).subscribe(t=>this.agentConfigs.set(t))}agentConfigs$(){return(this.isPlatformMode?this.agentConfigController.listPlatformAgentsAgentConfig():this.agentConfigController.listByParentAgentConfig(this.namespaceId)).pipe(q(()=>R([])))}hydrateForm(t){this.nameControl.setValue(t.name),this.descriptionControl.setValue(t.description??null),this.agentConfigIdControl.setValue(t.agentConfigId),this.promptContentControl.setValue(t.promptContent),this.unitControl.setValue(t.recurrence.unit),this.daysControl.setValue(t.recurrence.days??[]),this.timeUtcControl.setValue(t.recurrence.timeUtc),this.startDateControl.setValue(t.planning.startDate),this.endTypeControl.setValue(t.planning.endType),this.endDateControl.setValue(t.planning.endDate??null),this.occurrenceCountControl.setValue(t.planning.maxOccurrenceCount??null),this.enabledControl.setValue(t.enabled)}isDaySelected(t){return this.daysControl.value.includes(t)}toggleDay(t){let e=this.daysControl.value,l=e.includes(t)?e.filter(f=>f!==t):[...e,t];this.daysControl.setValue(l)}resolveAgentConfigName(t){return this.agentConfigs().find(e=>e.id===t)?.name??t}submit(){if(this.form.invalid||this.isSubmitting())return;this.isSubmitting.set(!0),this.errorMessage.set(null);let t=this.isEditMode()&&!!this.existingPrompt?.id,e=this.endTypeControl.value,l=A(V({},this.existingPrompt??{}),{namespaceId:this.namespaceId??null,name:this.nameControl.value.trim(),description:this.descriptionControl.value?.trim()||void 0,agentConfigId:t?this.existingPrompt.agentConfigId:this.agentConfigIdControl.value,promptContent:this.promptContentControl.value.trim(),recurrence:{unit:this.unitControl.value,days:this.daysControl.value,timeUtc:this.timeUtcControl.value},planning:{startDate:this.startDateControl.value,endType:e,endDate:e===u.ON_DATE?this.endDateControl.value??void 0:void 0,maxOccurrenceCount:e===u.OCCURRENCES?this.occurrenceCountControl.value??void 0:void 0},enabled:this.enabledControl.value});(t?this.state.update(this.existingPrompt.id,l):this.state.create(l)).pipe(w(this.destroyRef)).subscribe({next:()=>this.navigateBack(),error:y=>{this.isSubmitting.set(!1),y.status===409?this.errorMessage.set(`A scheduled prompt named "${l.name}" already exists in this scope.`):y.status===400?this.errorMessage.set(y.error?.message??"Invalid scheduled prompt data."):this.errorMessage.set("An unexpected error occurred. Please try again.")}})}cancel(){this.navigateBack()}navigateBack(){this.isPlatformMode?this.router.navigate(["/agentos","admin","scheduled-prompts"]):this.router.navigate(["/agentos",this.namespaceId,"scheduled-prompts"])}static \u0275fac=function(e){return new(e||n)};static \u0275cmp=W({type:n,selectors:[["agentos-scheduled-prompt-form"]],decls:10,vars:3,consts:[[1,"scheduled-prompt-form"],[1,"scheduled-prompt-form__header"],["type","button","title","Back to scheduled prompts",1,"scheduled-prompt-form__back",3,"click"],[1,"scheduled-prompt-form__back-icon"],[1,"scheduled-prompt-form__title"],[1,"scheduled-prompt-form__loading"],[1,"scheduled-prompt-form__form",3,"formGroup"],[1,"scheduled-prompt-form__form",3,"ngSubmit","formGroup"],[1,"scheduled-prompt-form__field"],["for","sp-name",1,"scheduled-prompt-form__label"],["aria-hidden","true"],["id","sp-name","type","text","placeholder","e.g. Weekly Report","autocomplete","off",1,"scheduled-prompt-form__input",3,"formControl"],[1,"scheduled-prompt-form__field-error"],[1,"scheduled-prompt-form__field-hint"],["for","sp-description",1,"scheduled-prompt-form__label"],["id","sp-description","type","text","placeholder","Optional \u2014 short description","autocomplete","off",1,"scheduled-prompt-form__input",3,"formControl"],["for","sp-agent-config",1,"scheduled-prompt-form__label"],["for","sp-prompt-content",1,"scheduled-prompt-form__label"],["id","sp-prompt-content","rows","6","placeholder","Enter the message sent to the agent when the scheduled prompt fires\u2026",1,"scheduled-prompt-form__textarea",3,"formControl"],[1,"scheduled-prompt-form__fieldset"],[1,"scheduled-prompt-form__legend"],["for","sp-unit",1,"scheduled-prompt-form__label"],["id","sp-unit",1,"scheduled-prompt-form__select",3,"formControl"],[3,"value"],["for","sp-time",1,"scheduled-prompt-form__label"],[1,"scheduled-prompt-form__time-wrapper"],["id","sp-time","type","time",1,"scheduled-prompt-form__input","scheduled-prompt-form__input--time",3,"formControl"],[1,"scheduled-prompt-form__utc-badge"],["for","sp-start-date",1,"scheduled-prompt-form__label"],["id","sp-start-date","type","date",1,"scheduled-prompt-form__input",3,"formControl"],["for","sp-end-type",1,"scheduled-prompt-form__label"],["id","sp-end-type",1,"scheduled-prompt-form__select",3,"formControl"],[1,"scheduled-prompt-form__toggle-label"],["type","checkbox",1,"scheduled-prompt-form__toggle-checkbox",3,"formControl"],[1,"scheduled-prompt-form__toggle-text"],[1,"scheduled-prompt-form__toggle-hint"],[1,"scheduled-prompt-form__error"],[1,"scheduled-prompt-form__actions"],["type","submit",1,"scheduled-prompt-form__btn","scheduled-prompt-form__btn--primary",3,"disabled"],["type","button",1,"scheduled-prompt-form__btn",3,"click"],[1,"scheduled-prompt-form__readonly-value"],[3,"href"],["id","sp-agent-config",1,"scheduled-prompt-form__select",3,"formControl"],["value","","disabled",""],[1,"scheduled-prompt-form__label"],[1,"scheduled-prompt-form__day-grid"],[1,"scheduled-prompt-form__day-label"],["type","checkbox",1,"scheduled-prompt-form__day-checkbox",3,"change","checked"],[1,"scheduled-prompt-form__day-text"],["for","sp-end-date",1,"scheduled-prompt-form__label"],["id","sp-end-date","type","date",1,"scheduled-prompt-form__input",3,"formControl"],["for","sp-occurrence-count",1,"scheduled-prompt-form__label"],["id","sp-occurrence-count","type","number","min","1",1,"scheduled-prompt-form__input","scheduled-prompt-form__input--number",3,"formControl"]],template:function(e,l){e&1&&(o(0,"div",0)(1,"header",1)(2,"button",2),E("click",function(){return l.cancel()}),o(3,"span",3),i(4,"\u2190"),r(),i(5),r(),o(6,"h1",4),i(7),r()(),c(8,me,2,0,"p",5)(9,we,86,26,"form",6),r()),e&2&&(a(5),D(" ",l.isPlatformMode?"Platform Scheduled Prompts":"Scheduled Prompts"," "),a(2),D(" ",l.isEditMode()?"Edit scheduled prompt":"New scheduled prompt"," "),a(),m(l.isLoading()?8:9))},dependencies:[ae,X,oe,re,j,Z,K,ne,Y,J,ie,ee,te],styles:[".scheduled-prompt-form[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:2rem;max-width:560px;margin:0 auto;padding:2rem 1rem}.scheduled-prompt-form__header[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.5rem}.scheduled-prompt-form__back[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:.375rem;background:none;border:none;padding:0;cursor:pointer;font-size:.875rem;color:var(--color-primary, #007aff);font-family:inherit}.scheduled-prompt-form__back[_ngcontent-%COMP%]:hover{text-decoration:underline}.scheduled-prompt-form__back-icon[_ngcontent-%COMP%]{font-size:1rem;line-height:1}.scheduled-prompt-form__title[_ngcontent-%COMP%]{margin:0;font-size:1.5rem;font-weight:600;color:var(--color-text, #1d1d1f);letter-spacing:-.02em}.scheduled-prompt-form__loading[_ngcontent-%COMP%]{color:var(--color-text-secondary, #6e6e73);font-size:.9rem;margin:0}.scheduled-prompt-form__form[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:1.25rem}.scheduled-prompt-form__field[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.375rem}.scheduled-prompt-form__row[_ngcontent-%COMP%]{display:grid;grid-template-columns:1fr 1fr;gap:1rem}.scheduled-prompt-form__label[_ngcontent-%COMP%]{font-size:.875rem;font-weight:500;color:var(--color-text, #1d1d1f)}.scheduled-prompt-form__input[_ngcontent-%COMP%], .scheduled-prompt-form__select[_ngcontent-%COMP%], .scheduled-prompt-form__textarea[_ngcontent-%COMP%]{width:100%;padding:.625rem .875rem;border-radius:8px;border:1px solid var(--color-border, rgba(0, 0, 0, .1));background:transparent;color:var(--color-text, #1d1d1f);font-size:.9375rem;font-family:inherit;outline:none;box-sizing:border-box;transition:border-color .15s ease}.scheduled-prompt-form__input[_ngcontent-%COMP%]:focus, .scheduled-prompt-form__select[_ngcontent-%COMP%]:focus, .scheduled-prompt-form__textarea[_ngcontent-%COMP%]:focus{border-color:var(--color-primary, #007aff)}.scheduled-prompt-form__input[_ngcontent-%COMP%]::placeholder, .scheduled-prompt-form__select[_ngcontent-%COMP%]::placeholder, .scheduled-prompt-form__textarea[_ngcontent-%COMP%]::placeholder{color:var(--color-text-secondary, #6e6e73)}.scheduled-prompt-form__select[_ngcontent-%COMP%]{cursor:pointer;appearance:auto}.scheduled-prompt-form__textarea[_ngcontent-%COMP%]{resize:vertical;min-height:100px;line-height:1.5}.scheduled-prompt-form__input--time[_ngcontent-%COMP%]{flex:1;min-width:0}.scheduled-prompt-form__input--number[_ngcontent-%COMP%]{max-width:120px}.scheduled-prompt-form__time-wrapper[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.5rem}.scheduled-prompt-form__utc-badge[_ngcontent-%COMP%]{flex-shrink:0;font-size:.75rem;font-weight:600;font-family:monospace;color:var(--color-text-secondary, #6e6e73);background:var(--color-surface, rgba(0, 0, 0, .05));padding:.25rem .5rem;border-radius:4px;text-transform:uppercase;letter-spacing:.06em}.scheduled-prompt-form__fieldset[_ngcontent-%COMP%]{border:1px solid var(--color-border, rgba(0, 0, 0, .1));border-radius:8px;padding:1rem 1.25rem 1.25rem;margin:0;display:flex;flex-direction:column;gap:1.25rem}.scheduled-prompt-form__legend[_ngcontent-%COMP%]{font-size:.8125rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--color-text-secondary, #6e6e73);padding:0 .375rem}.scheduled-prompt-form__day-grid[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:.5rem}.scheduled-prompt-form__day-label[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.375rem;cursor:pointer;-webkit-user-select:none;user-select:none}.scheduled-prompt-form__day-checkbox[_ngcontent-%COMP%]{width:1rem;height:1rem;flex-shrink:0;accent-color:var(--color-primary, #007aff);cursor:pointer}.scheduled-prompt-form__day-text[_ngcontent-%COMP%]{font-size:.875rem;color:var(--color-text, #1d1d1f)}.scheduled-prompt-form__hint[_ngcontent-%COMP%]{margin:0;font-size:.875rem;color:var(--color-text-secondary, #6e6e73)}.scheduled-prompt-form__hint[_ngcontent-%COMP%] a[_ngcontent-%COMP%]{color:var(--color-primary, #007aff);text-decoration:none}.scheduled-prompt-form__hint[_ngcontent-%COMP%] a[_ngcontent-%COMP%]:hover{text-decoration:underline}.scheduled-prompt-form__error[_ngcontent-%COMP%]{font-size:.8rem;color:var(--color-error, #ff3b30);margin:0}.scheduled-prompt-form__field-error[_ngcontent-%COMP%]{font-size:.8rem;color:var(--color-error, #ff3b30)}.scheduled-prompt-form__field-hint[_ngcontent-%COMP%]{font-size:.8rem;color:var(--color-text-secondary, #6e6e73);line-height:1.4}.scheduled-prompt-form__field-hint[_ngcontent-%COMP%] a[_ngcontent-%COMP%]{color:var(--color-primary, #007aff);text-decoration:none}.scheduled-prompt-form__field-hint[_ngcontent-%COMP%] a[_ngcontent-%COMP%]:hover{text-decoration:underline}.scheduled-prompt-form__readonly-value[_ngcontent-%COMP%]{margin:0;font-size:.9375rem;color:var(--color-text, #1d1d1f);padding:.625rem .875rem;border-radius:8px;border:1px solid var(--color-border, rgba(0, 0, 0, .08));background:var(--color-surface, rgba(0, 0, 0, .03))}.scheduled-prompt-form__input--invalid[_ngcontent-%COMP%], .scheduled-prompt-form__textarea--invalid[_ngcontent-%COMP%]{border-color:var(--color-error, #ff3b30)}.scheduled-prompt-form__toggle-label[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.5rem;cursor:pointer;-webkit-user-select:none;user-select:none}.scheduled-prompt-form__toggle-checkbox[_ngcontent-%COMP%]{width:1rem;height:1rem;flex-shrink:0;accent-color:var(--color-primary, #007aff);cursor:pointer}.scheduled-prompt-form__toggle-text[_ngcontent-%COMP%]{font-size:.9rem;font-weight:500;color:var(--color-text, #1d1d1f)}.scheduled-prompt-form__toggle-hint[_ngcontent-%COMP%]{margin:.25rem 0 0 1.5rem;font-size:.8rem;color:var(--color-text-secondary, #6e6e73);line-height:1.4}.scheduled-prompt-form__actions[_ngcontent-%COMP%]{display:flex;gap:.75rem;padding-top:.5rem}.scheduled-prompt-form__btn[_ngcontent-%COMP%]{padding:.6rem 1.25rem;border-radius:8px;border:1px solid var(--color-border, rgba(0, 0, 0, .1));background:transparent;color:var(--color-text, #1d1d1f);font-size:.9375rem;font-family:inherit;cursor:pointer;transition:background .15s ease,border-color .15s ease}.scheduled-prompt-form__btn[_ngcontent-%COMP%]:hover:not(:disabled){background:var(--color-surface-hover, rgba(0, 0, 0, .04))}.scheduled-prompt-form__btn[_ngcontent-%COMP%]:disabled{opacity:.45;cursor:not-allowed}.scheduled-prompt-form__btn--primary[_ngcontent-%COMP%]{background:var(--color-primary, #007aff);border-color:var(--color-primary, #007aff);color:#fff}.scheduled-prompt-form__btn--primary[_ngcontent-%COMP%]:hover:not(:disabled){background:var(--color-primary-hover, #0051d5);border-color:var(--color-primary-hover, #0051d5)}"],changeDetection:0})};function ke(n){let t=n.get("endType")?.value,e=n.get("endDate")?.value;return t===u.ON_DATE&&!e?{endDateRequired:!0}:null}function Fe(n){let t=n.get("endType")?.value,e=n.get("occurrenceCount")?.value;return t===u.OCCURRENCES&&(e==null||e<1)?{occurrenceCountRequired:!0}:null}function Ne(){let n=new Date,t=n.getFullYear(),e=String(n.getMonth()+1).padStart(2,"0"),l=String(n.getDate()).padStart(2,"0");return`${t}-${e}-${l}`}export{de as ScheduledPromptFormComponent};
|
|
1
|
+
import{a as le}from"./chunk-AMWKKZG5.js";import{A as H,b as G,y as x,z as u}from"./chunk-C2LUO2MP.js";import{a as L,c as B}from"./chunk-6XX7GME4.js";import{a as w,c as N}from"./chunk-VMYKE4ZC.js";import{B as ie,F as ae,b as K,c as j,e as h,g as Y,h as J,i as Q,l as p,n as X,o as Z,s as ee,w as te,x as ne,y as oe,z as re}from"./chunk-7OGOI6WM.js";import{Bb as F,D as q,Db as E,Fb as s,Ha as $,Ka as a,R as k,Rb as b,Tb as i,Ub as g,Vb as D,Wa as W,a as V,b as A,ca as C,ga as M,ha as O,lb as c,m as R,ma as z,mb as m,mc as T,pb as S,qb as P,rb as d,sb as o,ta as v,tb as r,ub as _,z as U}from"./chunk-CHEXA6RY.js";var I=(n,t)=>t.value,ce=(n,t)=>t.id;function me(n,t){n&1&&(o(0,"p",5),i(1,"Loading\u2026"),r())}function se(n,t){n&1&&(o(0,"span",12),i(1," Name is required. "),r())}function pe(n,t){if(n&1&&(o(0,"p",40),i(1),r(),o(2,"span",13),i(3,"Agent Config cannot be changed after creation."),r()),n&2){let e=s(2);a(),g(e.resolveAgentConfigName(e.agentConfigIdControl.value))}}function ue(n,t){if(n&1&&(o(0,"a",41),i(1,"Add an agent config"),r(),i(2," first. ")),n&2){let e=s(3);d("href","/agentos/"+e.namespaceId+"/agent-configs/new",$)}}function fe(n,t){if(n&1&&(o(0,"p",13),i(1," No agent configs available in this scope yet. "),c(2,ue,3,1),r()),n&2){let e=s(2);a(2),m(e.isPlatformMode?-1:2)}}function _e(n,t){if(n&1&&(o(0,"option",23),i(1),r()),n&2){let e=t.$implicit;d("value",e.id),a(),g(e.name)}}function he(n,t){n&1&&(o(0,"span",12),i(1,"Agent Config is required."),r())}function ge(n,t){if(n&1&&(o(0,"select",42)(1,"option",43),i(2,"Select an agent config\u2026"),r(),S(3,_e,2,2,"option",23,ce),r(),c(5,he,2,0,"span",12),o(6,"span",13),i(7,"Immutable after creation."),r()),n&2){let e=s(2);d("formControl",e.agentConfigIdControl),a(3),P(e.availableAgentConfigs()),a(2),m(e.agentConfigIdControl.invalid&&e.agentConfigIdControl.touched?5:-1)}}function Ce(n,t){n&1&&(o(0,"span",12),i(1,"Opening message is required."),r())}function ve(n,t){if(n&1&&(o(0,"option",23),i(1),r()),n&2){let e=t.$implicit;d("value",e.value),a(),g(e.label)}}function be(n,t){if(n&1){let e=F();o(0,"label",46)(1,"input",47),E("change",function(){let f=M(e).$implicit,y=s(3);return O(y.toggleDay(f.value))}),r(),o(2,"span",48),i(3),r()()}if(n&2){let e=t.$implicit,l=s(3);a(),d("checked",l.isDaySelected(e.value)),a(2),g(e.label)}}function xe(n,t){if(n&1&&(o(0,"div",8)(1,"span",44),i(2,"Days of week"),r(),o(3,"div",45),S(4,be,4,2,"label",46,I),r(),o(6,"span",13),i(7,"Leave empty to run every day of the week."),r()()),n&2){let e=s(2);a(4),P(e.dayOptions)}}function ye(n,t){n&1&&(o(0,"span",12),i(1,"Valid time is required (HH:mm)."),r())}function Se(n,t){n&1&&(o(0,"span",12),i(1,"Start date is required."),r())}function Pe(n,t){if(n&1&&(o(0,"option",23),i(1),r()),n&2){let e=t.$implicit;d("value",e.value),a(),g(e.label)}}function Ee(n,t){n&1&&(o(0,"span",12),i(1,"End date is required."),r())}function Me(n,t){if(n&1&&(o(0,"div",8)(1,"label",49),i(2," End date "),o(3,"span",10),i(4,"*"),r()(),_(5,"input",50),c(6,Ee,2,0,"span",12),r()),n&2){let e=s(2);a(5),b("scheduled-prompt-form__input--invalid",e.form.hasError("endDateRequired")&&e.endDateControl.touched),d("formControl",e.endDateControl),a(),m(e.form.hasError("endDateRequired")&&e.endDateControl.touched?6:-1)}}function Oe(n,t){n&1&&(o(0,"span",12),i(1,"Must be at least 1."),r())}function De(n,t){if(n&1&&(o(0,"div",8)(1,"label",51),i(2," Number of occurrences "),o(3,"span",10),i(4,"*"),r()(),_(5,"input",52),c(6,Oe,2,0,"span",12),r()),n&2){let e=s(2);a(5),b("scheduled-prompt-form__input--invalid",e.form.hasError("occurrenceCountRequired")&&e.occurrenceCountControl.touched),d("formControl",e.occurrenceCountControl),a(),m(e.form.hasError("occurrenceCountRequired")&&e.occurrenceCountControl.touched?6:-1)}}function Te(n,t){if(n&1&&(o(0,"p",36),i(1),r()),n&2){let e=s(2);a(),g(e.errorMessage())}}function we(n,t){if(n&1){let e=F();o(0,"form",7),E("ngSubmit",function(){M(e);let f=s();return O(f.submit())}),o(1,"div",8)(2,"label",9),i(3," Name "),o(4,"span",10),i(5,"*"),r()(),_(6,"input",11),c(7,se,2,0,"span",12),o(8,"span",13),i(9,'Free-form name (e.g. "Weekly Report"). Cannot be changed after creation.'),r()(),o(10,"div",8)(11,"label",14),i(12,"Description"),r(),_(13,"input",15),r(),o(14,"div",8)(15,"label",16),i(16," Agent Config "),o(17,"span",10),i(18,"*"),r()(),c(19,pe,4,1)(20,fe,3,1,"p",13)(21,ge,8,2),r(),o(22,"div",8)(23,"label",17),i(24," Opening message "),o(25,"span",10),i(26,"*"),r()(),_(27,"textarea",18),c(28,Ce,2,0,"span",12),o(29,"span",13),i(30," The message sent to the agent when the scheduled prompt fires. "),r()(),o(31,"fieldset",19)(32,"legend",20),i(33,"Recurrence"),r(),o(34,"div",8)(35,"label",21),i(36," Unit "),o(37,"span",10),i(38,"*"),r()(),o(39,"select",22),S(40,ve,2,2,"option",23,I),r()(),c(42,xe,8,0,"div",8),o(43,"div",8)(44,"label",24),i(45," Time (UTC) "),o(46,"span",10),i(47,"*"),r()(),o(48,"div",25),_(49,"input",26),o(50,"span",27),i(51,"UTC"),r()(),c(52,ye,2,0,"span",12),r()(),o(53,"fieldset",19)(54,"legend",20),i(55,"Planning"),r(),o(56,"div",8)(57,"label",28),i(58," Start date "),o(59,"span",10),i(60,"*"),r()(),_(61,"input",29),c(62,Se,2,0,"span",12),r(),o(63,"div",8)(64,"label",30),i(65," Ends "),o(66,"span",10),i(67,"*"),r()(),o(68,"select",31),S(69,Pe,2,2,"option",23,I),r()(),c(71,Me,7,4,"div",8),c(72,De,7,4,"div",8),r(),o(73,"div",8)(74,"label",32),_(75,"input",33),o(76,"span",34),i(77,"Enabled"),r()(),o(78,"p",35),i(79," When disabled, the scheduled prompt is saved but will not run on schedule. "),r()(),c(80,Te,2,1,"p",36),o(81,"div",37)(82,"button",38),i(83),r(),o(84,"button",39),E("click",function(){M(e);let f=s();return O(f.cancel())}),i(85,"Cancel"),r()()()}if(n&2){let e=s();d("formGroup",e.form),a(6),b("scheduled-prompt-form__input--invalid",e.nameControl.invalid&&e.nameControl.touched),d("formControl",e.nameControl),a(),m(e.nameControl.invalid&&e.nameControl.touched?7:-1),a(6),d("formControl",e.descriptionControl),a(6),m(e.isEditMode()?19:e.availableAgentConfigs().length===0?20:21),a(8),b("scheduled-prompt-form__textarea--invalid",e.promptContentControl.invalid&&e.promptContentControl.touched),d("formControl",e.promptContentControl),a(),m(e.promptContentControl.invalid&&e.promptContentControl.touched?28:-1),a(11),d("formControl",e.unitControl),a(),P(e.schedulerUnits),a(2),m(e.showDayFilter()?42:-1),a(7),d("formControl",e.timeUtcControl),a(3),m(e.timeUtcControl.invalid&&e.timeUtcControl.touched?52:-1),a(9),b("scheduled-prompt-form__input--invalid",e.startDateControl.invalid&&e.startDateControl.touched),d("formControl",e.startDateControl),a(),m(e.startDateControl.invalid&&e.startDateControl.touched?62:-1),a(6),d("formControl",e.endTypeControl),a(),P(e.endTypes),a(2),m(e.showEndDate()?71:-1),a(),m(e.showOccurrenceCount()?72:-1),a(3),d("formControl",e.enabledControl),a(5),m(e.errorMessage()?80:-1),a(2),d("disabled",e.form.invalid||e.isSubmitting()),a(),D(" ",e.isEditMode()?"Save changes":"Create scheduled prompt"," ")}}var de=class n{route=C(L);router=C(B);destroyRef=C(z);state=C(le);agentConfigController=C(G);namespaceId=this.route.snapshot.params.namespaceId;isPlatformMode=!this.namespaceId;form=new Q({name:new p("",{nonNullable:!0,validators:[h.required]}),description:new p(null),agentConfigId:new p("",{nonNullable:!0,validators:[h.required]}),promptContent:new p("",{nonNullable:!0,validators:[h.required]}),unit:new p(x.WEEK,{nonNullable:!0,validators:[h.required]}),days:new p([],{nonNullable:!0}),timeUtc:new p("09:00",{nonNullable:!0,validators:[h.required,h.pattern(/^([01]\d|2[0-3]):[0-5]\d$/)]}),startDate:new p("",{nonNullable:!0,validators:[h.required]}),endType:new p(u.NEVER,{nonNullable:!0,validators:[h.required]}),endDate:new p(null),occurrenceCount:new p(null),enabled:new p(!0,{nonNullable:!0})},{validators:[ke,Fe]});get nameControl(){return this.form.controls.name}get descriptionControl(){return this.form.controls.description}get agentConfigIdControl(){return this.form.controls.agentConfigId}get promptContentControl(){return this.form.controls.promptContent}get unitControl(){return this.form.controls.unit}get daysControl(){return this.form.controls.days}get timeUtcControl(){return this.form.controls.timeUtc}get startDateControl(){return this.form.controls.startDate}get endTypeControl(){return this.form.controls.endType}get endDateControl(){return this.form.controls.endDate}get occurrenceCountControl(){return this.form.controls.occurrenceCount}get enabledControl(){return this.form.controls.enabled}isEditMode=v(!1);isSubmitting=v(!1);isLoading=v(!1);errorMessage=v(null);SchedulerUnit=x;SchedulerEndType=u;schedulerUnits=[{value:x.WEEK,label:"Week(s)"},{value:x.MONTH,label:"Month(s)"}];endTypes=[{value:u.NEVER,label:"Never"},{value:u.ON_DATE,label:"On date"},{value:u.OCCURRENCES,label:"After N occurrences"}];dayOptions=Object.entries(H).map(([t,e])=>({value:t,label:e}));unitSignal=N(this.unitControl.valueChanges.pipe(k(this.unitControl.value)));endTypeSignal=N(this.endTypeControl.valueChanges.pipe(k(this.endTypeControl.value)));showDayFilter=T(()=>this.unitSignal()===x.WEEK);showEndDate=T(()=>this.endTypeSignal()===u.ON_DATE);showOccurrenceCount=T(()=>this.endTypeSignal()===u.OCCURRENCES);agentConfigs=v([]);availableAgentConfigs=this.agentConfigs.asReadonly();existingPrompt=null;ngOnInit(){this.startDateControl.setValue(Ne());let t=this.route.snapshot.paramMap.get("scheduledPromptId");t?(this.isEditMode.set(!0),this.loadPromptAndResources(t)):this.loadResources()}loadPromptAndResources(t){this.isLoading.set(!0),U({prompt:this.state.getById(t),agentConfigs:this.agentConfigs$()}).pipe(w(this.destroyRef)).subscribe({next:({prompt:e,agentConfigs:l})=>{this.existingPrompt=e,this.agentConfigs.set(l),this.hydrateForm(e),this.isLoading.set(!1)},error:()=>{this.isLoading.set(!1),this.navigateBack()}})}loadResources(){this.agentConfigs$().pipe(w(this.destroyRef)).subscribe(t=>this.agentConfigs.set(t))}agentConfigs$(){return(this.isPlatformMode?this.agentConfigController.listPlatformAgentsAgentConfig():this.agentConfigController.listByParentAgentConfig(this.namespaceId)).pipe(q(()=>R([])))}hydrateForm(t){this.nameControl.setValue(t.name),this.descriptionControl.setValue(t.description??null),this.agentConfigIdControl.setValue(t.agentConfigId),this.promptContentControl.setValue(t.promptContent),this.unitControl.setValue(t.recurrence.unit),this.daysControl.setValue(t.recurrence.days??[]),this.timeUtcControl.setValue(t.recurrence.timeUtc),this.startDateControl.setValue(t.planning.startDate),this.endTypeControl.setValue(t.planning.endType),this.endDateControl.setValue(t.planning.endDate??null),this.occurrenceCountControl.setValue(t.planning.maxOccurrenceCount??null),this.enabledControl.setValue(t.enabled)}isDaySelected(t){return this.daysControl.value.includes(t)}toggleDay(t){let e=this.daysControl.value,l=e.includes(t)?e.filter(f=>f!==t):[...e,t];this.daysControl.setValue(l)}resolveAgentConfigName(t){return this.agentConfigs().find(e=>e.id===t)?.name??t}submit(){if(this.form.invalid||this.isSubmitting())return;this.isSubmitting.set(!0),this.errorMessage.set(null);let t=this.isEditMode()&&!!this.existingPrompt?.id,e=this.endTypeControl.value,l=A(V({},this.existingPrompt??{}),{namespaceId:this.namespaceId??null,name:this.nameControl.value.trim(),description:this.descriptionControl.value?.trim()||void 0,agentConfigId:t?this.existingPrompt.agentConfigId:this.agentConfigIdControl.value,promptContent:this.promptContentControl.value.trim(),recurrence:{unit:this.unitControl.value,days:this.daysControl.value,timeUtc:this.timeUtcControl.value},planning:{startDate:this.startDateControl.value,endType:e,endDate:e===u.ON_DATE?this.endDateControl.value??void 0:void 0,maxOccurrenceCount:e===u.OCCURRENCES?this.occurrenceCountControl.value??void 0:void 0},enabled:this.enabledControl.value});(t?this.state.update(this.existingPrompt.id,l):this.state.create(l)).pipe(w(this.destroyRef)).subscribe({next:()=>this.navigateBack(),error:y=>{this.isSubmitting.set(!1),y.status===409?this.errorMessage.set(`A scheduled prompt named "${l.name}" already exists in this scope.`):y.status===400?this.errorMessage.set(y.error?.message??"Invalid scheduled prompt data."):this.errorMessage.set("An unexpected error occurred. Please try again.")}})}cancel(){this.navigateBack()}navigateBack(){this.isPlatformMode?this.router.navigate(["/agentos","admin","scheduled-prompts"]):this.router.navigate(["/agentos",this.namespaceId,"scheduled-prompts"])}static \u0275fac=function(e){return new(e||n)};static \u0275cmp=W({type:n,selectors:[["agentos-scheduled-prompt-form"]],decls:10,vars:3,consts:[[1,"scheduled-prompt-form"],[1,"scheduled-prompt-form__header"],["type","button","title","Back to scheduled prompts",1,"scheduled-prompt-form__back",3,"click"],[1,"scheduled-prompt-form__back-icon"],[1,"scheduled-prompt-form__title"],[1,"scheduled-prompt-form__loading"],[1,"scheduled-prompt-form__form",3,"formGroup"],[1,"scheduled-prompt-form__form",3,"ngSubmit","formGroup"],[1,"scheduled-prompt-form__field"],["for","sp-name",1,"scheduled-prompt-form__label"],["aria-hidden","true"],["id","sp-name","type","text","placeholder","e.g. Weekly Report","autocomplete","off",1,"scheduled-prompt-form__input",3,"formControl"],[1,"scheduled-prompt-form__field-error"],[1,"scheduled-prompt-form__field-hint"],["for","sp-description",1,"scheduled-prompt-form__label"],["id","sp-description","type","text","placeholder","Optional \u2014 short description","autocomplete","off",1,"scheduled-prompt-form__input",3,"formControl"],["for","sp-agent-config",1,"scheduled-prompt-form__label"],["for","sp-prompt-content",1,"scheduled-prompt-form__label"],["id","sp-prompt-content","rows","6","placeholder","Enter the message sent to the agent when the scheduled prompt fires\u2026",1,"scheduled-prompt-form__textarea",3,"formControl"],[1,"scheduled-prompt-form__fieldset"],[1,"scheduled-prompt-form__legend"],["for","sp-unit",1,"scheduled-prompt-form__label"],["id","sp-unit",1,"scheduled-prompt-form__select",3,"formControl"],[3,"value"],["for","sp-time",1,"scheduled-prompt-form__label"],[1,"scheduled-prompt-form__time-wrapper"],["id","sp-time","type","time",1,"scheduled-prompt-form__input","scheduled-prompt-form__input--time",3,"formControl"],[1,"scheduled-prompt-form__utc-badge"],["for","sp-start-date",1,"scheduled-prompt-form__label"],["id","sp-start-date","type","date",1,"scheduled-prompt-form__input",3,"formControl"],["for","sp-end-type",1,"scheduled-prompt-form__label"],["id","sp-end-type",1,"scheduled-prompt-form__select",3,"formControl"],[1,"scheduled-prompt-form__toggle-label"],["type","checkbox",1,"scheduled-prompt-form__toggle-checkbox",3,"formControl"],[1,"scheduled-prompt-form__toggle-text"],[1,"scheduled-prompt-form__toggle-hint"],[1,"scheduled-prompt-form__error"],[1,"scheduled-prompt-form__actions"],["type","submit",1,"scheduled-prompt-form__btn","scheduled-prompt-form__btn--primary",3,"disabled"],["type","button",1,"scheduled-prompt-form__btn",3,"click"],[1,"scheduled-prompt-form__readonly-value"],[3,"href"],["id","sp-agent-config",1,"scheduled-prompt-form__select",3,"formControl"],["value","","disabled",""],[1,"scheduled-prompt-form__label"],[1,"scheduled-prompt-form__day-grid"],[1,"scheduled-prompt-form__day-label"],["type","checkbox",1,"scheduled-prompt-form__day-checkbox",3,"change","checked"],[1,"scheduled-prompt-form__day-text"],["for","sp-end-date",1,"scheduled-prompt-form__label"],["id","sp-end-date","type","date",1,"scheduled-prompt-form__input",3,"formControl"],["for","sp-occurrence-count",1,"scheduled-prompt-form__label"],["id","sp-occurrence-count","type","number","min","1",1,"scheduled-prompt-form__input","scheduled-prompt-form__input--number",3,"formControl"]],template:function(e,l){e&1&&(o(0,"div",0)(1,"header",1)(2,"button",2),E("click",function(){return l.cancel()}),o(3,"span",3),i(4,"\u2190"),r(),i(5),r(),o(6,"h1",4),i(7),r()(),c(8,me,2,0,"p",5)(9,we,86,26,"form",6),r()),e&2&&(a(5),D(" ",l.isPlatformMode?"Platform Scheduled Prompts":"Scheduled Prompts"," "),a(2),D(" ",l.isEditMode()?"Edit scheduled prompt":"New scheduled prompt"," "),a(),m(l.isLoading()?8:9))},dependencies:[ae,X,oe,re,j,Z,K,ne,Y,J,ie,ee,te],styles:[".scheduled-prompt-form[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:2rem;max-width:560px;margin:0 auto;padding:2rem 1rem}.scheduled-prompt-form__header[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.5rem}.scheduled-prompt-form__back[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:.375rem;background:none;border:none;padding:0;cursor:pointer;font-size:.875rem;color:var(--color-primary, #007aff);font-family:inherit}.scheduled-prompt-form__back[_ngcontent-%COMP%]:hover{text-decoration:underline}.scheduled-prompt-form__back-icon[_ngcontent-%COMP%]{font-size:1rem;line-height:1}.scheduled-prompt-form__title[_ngcontent-%COMP%]{margin:0;font-size:1.5rem;font-weight:600;color:var(--color-text, #1d1d1f);letter-spacing:-.02em}.scheduled-prompt-form__loading[_ngcontent-%COMP%]{color:var(--color-text-secondary, #6e6e73);font-size:.9rem;margin:0}.scheduled-prompt-form__form[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:1.25rem}.scheduled-prompt-form__field[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.375rem}.scheduled-prompt-form__row[_ngcontent-%COMP%]{display:grid;grid-template-columns:1fr 1fr;gap:1rem}.scheduled-prompt-form__label[_ngcontent-%COMP%]{font-size:.875rem;font-weight:500;color:var(--color-text, #1d1d1f)}.scheduled-prompt-form__input[_ngcontent-%COMP%], .scheduled-prompt-form__select[_ngcontent-%COMP%], .scheduled-prompt-form__textarea[_ngcontent-%COMP%]{width:100%;padding:.625rem .875rem;border-radius:8px;border:1px solid var(--color-border, rgba(0, 0, 0, .1));background:transparent;color:var(--color-text, #1d1d1f);font-size:.9375rem;font-family:inherit;outline:none;box-sizing:border-box;transition:border-color .15s ease}.scheduled-prompt-form__input[_ngcontent-%COMP%]:focus, .scheduled-prompt-form__select[_ngcontent-%COMP%]:focus, .scheduled-prompt-form__textarea[_ngcontent-%COMP%]:focus{border-color:var(--color-primary, #007aff)}.scheduled-prompt-form__input[_ngcontent-%COMP%]::placeholder, .scheduled-prompt-form__select[_ngcontent-%COMP%]::placeholder, .scheduled-prompt-form__textarea[_ngcontent-%COMP%]::placeholder{color:var(--color-text-secondary, #6e6e73)}.scheduled-prompt-form__select[_ngcontent-%COMP%]{cursor:pointer;appearance:auto}.scheduled-prompt-form__textarea[_ngcontent-%COMP%]{resize:vertical;min-height:100px;line-height:1.5}.scheduled-prompt-form__input--time[_ngcontent-%COMP%]{flex:1;min-width:0}.scheduled-prompt-form__input--number[_ngcontent-%COMP%]{max-width:120px}.scheduled-prompt-form__time-wrapper[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.5rem}.scheduled-prompt-form__utc-badge[_ngcontent-%COMP%]{flex-shrink:0;font-size:.75rem;font-weight:600;font-family:monospace;color:var(--color-text-secondary, #6e6e73);background:var(--color-surface, rgba(0, 0, 0, .05));padding:.25rem .5rem;border-radius:4px;text-transform:uppercase;letter-spacing:.06em}.scheduled-prompt-form__fieldset[_ngcontent-%COMP%]{border:1px solid var(--color-border, rgba(0, 0, 0, .1));border-radius:8px;padding:1rem 1.25rem 1.25rem;margin:0;display:flex;flex-direction:column;gap:1.25rem}.scheduled-prompt-form__legend[_ngcontent-%COMP%]{font-size:.8125rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--color-text-secondary, #6e6e73);padding:0 .375rem}.scheduled-prompt-form__day-grid[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:.5rem}.scheduled-prompt-form__day-label[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.375rem;cursor:pointer;-webkit-user-select:none;user-select:none}.scheduled-prompt-form__day-checkbox[_ngcontent-%COMP%]{width:1rem;height:1rem;flex-shrink:0;accent-color:var(--color-primary, #007aff);cursor:pointer}.scheduled-prompt-form__day-text[_ngcontent-%COMP%]{font-size:.875rem;color:var(--color-text, #1d1d1f)}.scheduled-prompt-form__hint[_ngcontent-%COMP%]{margin:0;font-size:.875rem;color:var(--color-text-secondary, #6e6e73)}.scheduled-prompt-form__hint[_ngcontent-%COMP%] a[_ngcontent-%COMP%]{color:var(--color-primary, #007aff);text-decoration:none}.scheduled-prompt-form__hint[_ngcontent-%COMP%] a[_ngcontent-%COMP%]:hover{text-decoration:underline}.scheduled-prompt-form__error[_ngcontent-%COMP%]{font-size:.8rem;color:var(--color-error, #ff3b30);margin:0}.scheduled-prompt-form__field-error[_ngcontent-%COMP%]{font-size:.8rem;color:var(--color-error, #ff3b30)}.scheduled-prompt-form__field-hint[_ngcontent-%COMP%]{font-size:.8rem;color:var(--color-text-secondary, #6e6e73);line-height:1.4}.scheduled-prompt-form__field-hint[_ngcontent-%COMP%] a[_ngcontent-%COMP%]{color:var(--color-primary, #007aff);text-decoration:none}.scheduled-prompt-form__field-hint[_ngcontent-%COMP%] a[_ngcontent-%COMP%]:hover{text-decoration:underline}.scheduled-prompt-form__readonly-value[_ngcontent-%COMP%]{margin:0;font-size:.9375rem;color:var(--color-text, #1d1d1f);padding:.625rem .875rem;border-radius:8px;border:1px solid var(--color-border, rgba(0, 0, 0, .08));background:var(--color-surface, rgba(0, 0, 0, .03))}.scheduled-prompt-form__input--invalid[_ngcontent-%COMP%], .scheduled-prompt-form__textarea--invalid[_ngcontent-%COMP%]{border-color:var(--color-error, #ff3b30)}.scheduled-prompt-form__toggle-label[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.5rem;cursor:pointer;-webkit-user-select:none;user-select:none}.scheduled-prompt-form__toggle-checkbox[_ngcontent-%COMP%]{width:1rem;height:1rem;flex-shrink:0;accent-color:var(--color-primary, #007aff);cursor:pointer}.scheduled-prompt-form__toggle-text[_ngcontent-%COMP%]{font-size:.9rem;font-weight:500;color:var(--color-text, #1d1d1f)}.scheduled-prompt-form__toggle-hint[_ngcontent-%COMP%]{margin:.25rem 0 0 1.5rem;font-size:.8rem;color:var(--color-text-secondary, #6e6e73);line-height:1.4}.scheduled-prompt-form__actions[_ngcontent-%COMP%]{display:flex;gap:.75rem;padding-top:.5rem}.scheduled-prompt-form__btn[_ngcontent-%COMP%]{padding:.6rem 1.25rem;border-radius:8px;border:1px solid var(--color-border, rgba(0, 0, 0, .1));background:transparent;color:var(--color-text, #1d1d1f);font-size:.9375rem;font-family:inherit;cursor:pointer;transition:background .15s ease,border-color .15s ease}.scheduled-prompt-form__btn[_ngcontent-%COMP%]:hover:not(:disabled){background:var(--color-surface-hover, rgba(0, 0, 0, .04))}.scheduled-prompt-form__btn[_ngcontent-%COMP%]:disabled{opacity:.45;cursor:not-allowed}.scheduled-prompt-form__btn--primary[_ngcontent-%COMP%]{background:var(--color-primary, #007aff);border-color:var(--color-primary, #007aff);color:#fff}.scheduled-prompt-form__btn--primary[_ngcontent-%COMP%]:hover:not(:disabled){background:var(--color-primary-hover, #0051d5);border-color:var(--color-primary-hover, #0051d5)}"],changeDetection:0})};function ke(n){let t=n.get("endType")?.value,e=n.get("endDate")?.value;return t===u.ON_DATE&&!e?{endDateRequired:!0}:null}function Fe(n){let t=n.get("endType")?.value,e=n.get("occurrenceCount")?.value;return t===u.OCCURRENCES&&(e==null||e<1)?{occurrenceCountRequired:!0}:null}function Ne(){let n=new Date,t=n.getFullYear(),e=String(n.getMonth()+1).padStart(2,"0"),l=String(n.getDate()).padStart(2,"0");return`${t}-${e}-${l}`}export{de as ScheduledPromptFormComponent};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as P,b as O}from"./chunk-
|
|
1
|
+
import{a as P,b as O}from"./chunk-YCZCEQQL.js";import{a as x}from"./chunk-6QJAB37Y.js";import{d as S}from"./chunk-YFCRBVWD.js";import{b as C,c as M}from"./chunk-6XX7GME4.js";import{Db as d,Fb as y,Ka as _,Tb as u,Vb as T,Wa as c,ca as s,lb as b,mb as f,mc as p,rb as v,sb as a,ta as g,tb as l,ub as m}from"./chunk-CHEXA6RY.js";function N(o,e){if(o&1&&u(0),o&2){let t=y();T(" ",t.userInitials()," ")}}function V(o,e){o&1&&u(0," \u2022\u2022\u2022 ")}var h=class o{router=s(M);userState=s(x);themePort=s(S);namespaceState=s(P);menuOpen=g(!1);isAdmin=p(()=>this.userState.currentUser()?.isAdmin===!0);isDark=p(()=>{let{mode:e}=this.themePort.theme();return e==="dark"?!0:e==="light"?!1:typeof document<"u"&&document.documentElement.getAttribute("data-theme")?.includes("dark")===!0});themeVariant=p(()=>this.themePort.theme().variant);userInitials=p(()=>{let e=this.userState.currentUser();if(!e)return"";let t=e.firstname?.[0]??"",n=e.lastname?.[0]??"";return(t+n).toUpperCase()||e.email?.[0]?.toUpperCase()||""});showTechnical=g(!1);navigateHome(){let e=this.namespaceState.activeNamespaceId();this.router.navigate(["/agentos/home"],e?{queryParams:{ns:e}}:{})}toggleMenu(e){e.stopPropagation(),this.menuOpen.update(t=>!t)}closeMenu(e){e.stopPropagation(),this.menuOpen.set(!1)}onNavigate(e){this.menuOpen.set(!1),this.router.navigate([e])}onThemeToggle(){this.menuOpen.set(!1);let e=this.isDark()?"light":"dark";this.themePort.setTheme({variant:this.themePort.theme().variant,mode:e})}onThemeVariantChanged(e){this.menuOpen.set(!1);let t=this.themePort.theme();this.themePort.setTheme({variant:e,mode:t.mode})}onLogsToggle(){this.menuOpen.set(!1)}static \u0275fac=function(t){return new(t||o)};static \u0275cmp=c({type:o,selectors:[["agentos-shell-topbar"]],decls:10,vars:6,consts:[[1,"shell-topbar"],["type","button","title","Home",1,"shell-topbar__brand",3,"click"],["src","CODAY-Logo.png","alt","Coday",1,"shell-topbar__logo-img"],[1,"shell-topbar__logo-text"],[1,"shell-topbar__user-menu"],["type","button","title","Menu",1,"shell-topbar__user-btn",3,"click"],["variant","topbar",3,"navigateTo","themeToggled","themeVariantChanged","logsToggled","closed","open","isAdmin","isDark","themeVariant","showTechnical"]],template:function(t,n){t&1&&(a(0,"div",0)(1,"button",1),d("click",function(){return n.navigateHome()}),m(2,"img",2),a(3,"span",3),u(4,"Coday"),l()(),a(5,"div",4)(6,"button",5),d("click",function(r){return n.toggleMenu(r)}),b(7,N,1,1)(8,V,1,0),l(),a(9,"agentos-shell-user-menu",6),d("navigateTo",function(r){return n.onNavigate(r)})("themeToggled",function(){return n.onThemeToggle()})("themeVariantChanged",function(r){return n.onThemeVariantChanged(r)})("logsToggled",function(){return n.onLogsToggle()})("closed",function(r){return n.closeMenu(r)}),l()()()),t&2&&(_(7),f(n.userInitials()?7:8),_(2),v("open",n.menuOpen())("isAdmin",n.isAdmin())("isDark",n.isDark())("themeVariant",n.themeVariant())("showTechnical",n.showTechnical()))},dependencies:[O],styles:[".shell-topbar[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:14px 12px;border-bottom:1px solid var(--color-divider);background:var(--color-bg);flex-shrink:0}.shell-topbar__brand[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;padding:0;border:none;background:transparent;cursor:pointer;transition:opacity .14s ease}.shell-topbar__brand[_ngcontent-%COMP%]:hover{opacity:.8}.shell-topbar__logo-img[_ngcontent-%COMP%]{height:28px;width:auto;object-fit:contain;display:block;flex:none}.shell-topbar__logo-text[_ngcontent-%COMP%]{font-weight:700;font-size:18px;color:var(--color-text);letter-spacing:-.02em;white-space:nowrap}.shell-topbar__user-menu[_ngcontent-%COMP%]{position:relative;flex-shrink:0}.shell-topbar__user-btn[_ngcontent-%COMP%]{width:32px;height:32px;flex:none;display:grid;place-items:center;border:1px solid var(--color-divider);background:var(--color-surface);font-family:var(--font-heading);font-weight:600;font-size:13px;color:var(--color-accent-700);cursor:pointer;transition:border-color .14s;border-radius:0}.shell-topbar__user-btn[_ngcontent-%COMP%]:hover{border-color:var(--color-accent)}"],changeDetection:0})};var k=class o{static \u0275fac=function(t){return new(t||o)};static \u0275cmp=c({type:o,selectors:[["agentos-layout"]],decls:4,vars:0,consts:[[1,"layout"],[1,"layout__content"]],template:function(t,n){t&1&&(a(0,"div",0),m(1,"agentos-shell-topbar"),a(2,"main",1),m(3,"router-outlet"),l()())},dependencies:[C,h],styles:[".layout[_ngcontent-%COMP%]{display:flex;flex-direction:column;min-height:100vh}.layout__content[_ngcontent-%COMP%]{flex:1;overflow-y:auto}"]})};export{k as a};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as $}from"./chunk-6QJAB37Y.js";import{k as V,o as B}from"./chunk-C2LUO2MP.js";import{a as T,c as z}from"./chunk-6XX7GME4.js";import{w as F}from"./chunk-VNO76B3S.js";import{a as I}from"./chunk-VMYKE4ZC.js";import{Bb as C,D as U,Db as g,Fb as d,Ka as l,Tb as m,Ub as S,Wa as R,Z as O,a as y,b as N,ca as p,ga as M,ha as h,jb as D,lb as b,m as f,ma as k,mb as u,pb as P,qb as L,rb as v,sb as a,ta as _,tb as i,z as A}from"./chunk-CHEXA6RY.js";var E=class r{permissions=p(V);userController=p(B);listMembers(t){return this.permissions.listNamespaceUsers(t)}listAllUsers(){return this.userController.listAllUser()}updateMembers(t,e){let o=e.map(n=>y({userId:n.userId},n.role!==void 0?{role:n.role}:{}));return this.permissions.updateMembers(t,o)}static \u0275fac=function(e){return new(e||r)};static \u0275prov=O({token:r,factory:r.\u0275fac,providedIn:"root"})};function j(r,t){let e=new Map(r.map(c=>[c.userId,c.role])),o=new Set(t.map(c=>c.userId)),n=t.filter(c=>e.get(c.userId)!==c.role),s=r.filter(c=>!o.has(c.userId)).map(c=>c.userId);return{toUpsert:n,toRemove:s}}function H(r){return r.some(t=>t.role==="ADMIN")}function x(r){return[r.firstname,r.lastname].filter(Boolean).join(" ").trim()||r.email||r.externalId||""}var J=20,w=class{constructor(t,e){this.candidates=t;this.excludedUserIds=e}search(t){let e=t.toLowerCase(),o=this.excludedUserIds(),n=this.candidates().filter(s=>!!s.id&&!o.has(s.id)).filter(s=>this.matches(s,e)).slice(0,J).map(s=>({id:s.id,name:x(s),description:s.email}));return f(n)}matches(t,e){return(t.externalId??"").toLowerCase().includes(e)||(t.email??"").toLowerCase().includes(e)||x(t).toLowerCase().includes(e)}};var X=(r,t)=>t.userId;function q(r,t){r&1&&(a(0,"p",5),m(1,"Loading\u2026"),i())}function K(r,t){r&1&&(a(0,"p",7),m(1," You can change roles or remove existing members. Only a platform super-admin can add a new user to this namespace. "),i())}function W(r,t){r&1&&(a(0,"p",11),m(1,"No members yet."),i())}function Z(r,t){if(r&1&&(a(0,"span",22),m(1),i()),r&2){let e=d().$implicit;l(),S(e.email)}}function Q(r,t){if(r&1){let e=C();a(0,"li",19)(1,"div",20)(2,"span",21),m(3),i(),b(4,Z,2,1,"span",22),i(),a(5,"select",23),g("change",function(n){let s=M(e).$implicit,c=d(3);return h(c.setMemberRole(s.userId,n.target.value))}),a(6,"option",24),m(7,"Member"),i(),a(8,"option",25),m(9,"Admin"),i()(),a(10,"button",26),g("click",function(){let n=M(e).$implicit,s=d(3);return h(s.removeMember(n.userId))}),m(11," \xD7 "),i()()}if(r&2){let e=t.$implicit;l(3),S(e.label),l(),u(e.email&&e.email!==e.label?4:-1),l(),v("value",e.role),D("aria-label","Role of "+e.label),l(5),v("title","Remove "+e.label)}}function ee(r,t){if(r&1&&(a(0,"ul",12),P(1,Q,12,5,"li",19,X),i()),r&2){let e=d(2);l(),L(e.selectedMembers())}}function te(r,t){r&1&&(a(0,"p",13),m(1," At least one ADMIN must remain on the namespace. Assign ADMIN to someone before saving. "),i())}function re(r,t){if(r&1){let e=C();a(0,"ds-autocomplete-input",27),g("itemSelected",function(n){M(e);let s=d(2);return h(s.onMemberSelected(n))}),i()}if(r&2){let e=d(2);v("dataSource",e.memberDataSource)}}function ne(r,t){if(r&1&&(a(0,"p",15),m(1),i()),r&2){let e=d(2);l(),S(e.errorMessage())}}function oe(r,t){if(r&1){let e=C();a(0,"div",6),b(1,K,2,0,"p",7),a(2,"fieldset",8)(3,"legend",9),m(4," Roster "),a(5,"span",10),m(6,"Exactly one role per user: ADMIN or MEMBER"),i()(),b(7,W,2,0,"p",11)(8,ee,3,0,"ul",12),b(9,te,2,0,"p",13),b(10,re,1,1,"ds-autocomplete-input",14),i(),b(11,ne,2,1,"p",15),a(12,"div",16)(13,"button",17),g("click",function(){M(e);let n=d();return h(n.submit())}),m(14," Save changes "),i(),a(15,"button",18),g("click",function(){M(e);let n=d();return h(n.cancel())}),m(16,"Cancel"),i()()()}if(r&2){let e=d();l(),u(e.isSuperAdmin()?-1:1),l(6),u(e.selectedMembers().length===0?7:8),l(2),u(e.wouldLockOutAdmins()?9:-1),l(),u(e.isSuperAdmin()?10:-1),l(),u(e.errorMessage()?11:-1),l(2),v("disabled",e.isSubmitting()||e.wouldLockOutAdmins())}}var Y=class r{route=p(T);router=p(z);destroyRef=p(k);memberState=p(E);userState=p($);namespaceId=this.route.snapshot.params.namespaceId;isLoading=_(!1);isSubmitting=_(!1);errorMessage=_(null);isSuperAdmin=_(!1);selectedMembers=_([]);originalMembers=[];candidateUsers=_([]);memberDataSource=new w(()=>this.candidateUsers(),()=>new Set(this.selectedMembers().map(t=>t.userId)));ngOnInit(){this.loadData()}loadData(){this.isLoading.set(!0),(this.userState.currentUser()?f(this.userState.currentUser()):this.userState.loadMe()).pipe(U(e=>(console.error("[NamespaceMembers] Failed to load current user",e),f(null))),I(this.destroyRef)).subscribe(e=>{let o=e?.isAdmin===!0;this.isSuperAdmin.set(o),this.loadMembersAndCandidates(o)})}loadMembersAndCandidates(t){A({members:this.memberState.listMembers(this.namespaceId),allUsers:t?this.memberState.listAllUsers():f([])}).pipe(I(this.destroyRef)).subscribe({next:({members:e,allUsers:o})=>{this.applyMembers(e),this.candidateUsers.set(o),this.isLoading.set(!1)},error:e=>{console.error("[NamespaceMembers] Failed to load namespace members",e),this.isLoading.set(!1),this.errorMessage.set("Failed to load namespace members. Please try again.")}})}applyMembers(t){this.originalMembers=t.map(e=>({userId:e.id,role:e.role})),this.selectedMembers.set(t.map(e=>({userId:e.id,label:x(e),email:e.email,role:e.role})))}onMemberSelected(t){this.selectedMembers().some(e=>e.userId===t.id)||this.selectedMembers.update(e=>[...e,{userId:t.id,label:t.name,email:t.description,role:"MEMBER"}])}removeMember(t){this.selectedMembers.update(e=>e.filter(o=>o.userId!==t))}setMemberRole(t,e){let o=e==="ADMIN"?"ADMIN":"MEMBER";this.selectedMembers.update(n=>n.map(s=>s.userId===t?N(y({},s),{role:o}):s))}wouldLockOutAdmins=()=>!H(this.selectedMembers());submit(){if(this.isSubmitting())return;if(this.wouldLockOutAdmins()){this.errorMessage.set("At least one ADMIN must remain on the namespace. Assign ADMIN to someone before saving.");return}this.isSubmitting.set(!0),this.errorMessage.set(null);let{toUpsert:t,toRemove:e}=j(this.originalMembers,this.selectedMembers().map(n=>({userId:n.userId,role:n.role})));if(t.length===0&&e.length===0){this.isSubmitting.set(!1),this.navigateBack();return}let o=[...t.map(n=>({userId:n.userId,role:n.role})),...e.map(n=>({userId:n}))];this.memberState.updateMembers(this.namespaceId,o).pipe(I(this.destroyRef)).subscribe({next:n=>{this.applyMembers(n),this.isSubmitting.set(!1),this.navigateBack()},error:n=>{this.isSubmitting.set(!1),this.errorMessage.set(this.describeError(n))}})}describeError(t){return t.status===403?"You do not have permission to add a new user to this namespace \u2014 only a platform super-admin can add someone new. You can still change roles or remove existing members.":t.status===422?t.error?.message??"This change would leave the namespace without any ADMIN. Assign ADMIN to at least one member and try again.":"An unexpected error occurred while saving namespace members. Please try again."}cancel(){this.navigateBack()}navigateBack(){this.router.navigate(["/agentos","namespaces"])}static \u0275fac=function(e){return new(e||r)};static \u0275cmp=R({type:r,selectors:[["agentos-namespace-members"]],decls:10,vars:1,consts:[[1,"namespace-members"],[1,"namespace-members__header"],["type","button","title","Back to namespaces",1,"namespace-members__back",3,"click"],[1,"namespace-members__back-icon"],[1,"namespace-members__title"],[1,"namespace-members__loading"],[1,"namespace-members__body"],[1,"namespace-members__hint"],[1,"namespace-members__section"],[1,"namespace-members__label"],[1,"namespace-members__label-hint"],[1,"namespace-members__empty-hint"],[1,"namespace-members__members"],[1,"namespace-members__warning"],["placeholder","Add a member\u2026",3,"dataSource"],[1,"namespace-members__error"],[1,"namespace-members__actions"],["type","button",1,"namespace-members__btn","namespace-members__btn--primary",3,"click","disabled"],["type","button",1,"namespace-members__btn",3,"click"],[1,"namespace-members__member"],[1,"namespace-members__member-info"],[1,"namespace-members__member-name"],[1,"namespace-members__member-email"],[1,"namespace-members__member-role",3,"change","value"],["value","MEMBER"],["value","ADMIN"],["type","button",1,"namespace-members__member-remove",3,"click","title"],["placeholder","Add a member\u2026",3,"itemSelected","dataSource"]],template:function(e,o){e&1&&(a(0,"div",0)(1,"header",1)(2,"button",2),g("click",function(){return o.cancel()}),a(3,"span",3),m(4,"\u2190"),i(),m(5," Namespaces "),i(),a(6,"h1",4),m(7,"Members"),i()(),b(8,q,2,0,"p",5)(9,oe,17,6,"div",6),i()),e&2&&(l(8),u(o.isLoading()?8:9))},dependencies:[F],styles:[".namespace-members[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:2rem;max-width:560px;margin:0 auto;padding:2rem 1rem}.namespace-members__header[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.5rem}.namespace-members__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-members__back[_ngcontent-%COMP%]:hover{text-decoration:underline}.namespace-members__back-icon[_ngcontent-%COMP%]{font-size:1rem;line-height:1}.namespace-members__title[_ngcontent-%COMP%]{margin:0;font-size:1.5rem;font-weight:600;color:var(--color-text, #1d1d1f);letter-spacing:-.02em}.namespace-members__loading[_ngcontent-%COMP%]{color:var(--color-text-secondary, #6e6e73);font-size:.9rem;margin:0}.namespace-members__body[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:1.25rem}.namespace-members__hint[_ngcontent-%COMP%]{margin:0;font-size:.85rem;color:var(--color-text-secondary, #6e6e73);line-height:1.4}.namespace-members__label[_ngcontent-%COMP%]{font-size:.875rem;font-weight:500;color:var(--color-text, #1d1d1f)}.namespace-members__label-hint[_ngcontent-%COMP%]{font-weight:400;color:var(--color-text-secondary, #6e6e73);margin-left:.375rem}.namespace-members__section[_ngcontent-%COMP%]{border:1px solid var(--color-border, rgba(0, 0, 0, .1));border-radius:8px;padding:1rem;margin:0;display:flex;flex-direction:column;gap:.75rem}.namespace-members__empty-hint[_ngcontent-%COMP%]{margin:0;font-size:.85rem;color:var(--color-text-secondary, #6e6e73);font-style:italic}.namespace-members__members[_ngcontent-%COMP%]{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.375rem}.namespace-members__member[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.75rem;padding:.4rem .5rem;border-radius:8px;background:var(--color-surface-hover, rgba(0, 0, 0, .03));border:1px solid var(--color-border, rgba(0, 0, 0, .08))}.namespace-members__member-info[_ngcontent-%COMP%]{flex:1;display:flex;flex-direction:column;gap:.1rem;min-width:0}.namespace-members__member-name[_ngcontent-%COMP%]{font-size:.9rem;color:var(--color-text, #1d1d1f);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.namespace-members__member-email[_ngcontent-%COMP%]{font-size:.75rem;color:var(--color-text-secondary, #6e6e73);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.namespace-members__member-role[_ngcontent-%COMP%]{flex-shrink:0;padding:.3rem .5rem;border-radius:6px;border:1px solid var(--color-border, rgba(0, 0, 0, .1));background:transparent;color:var(--color-text, #1d1d1f);font-size:.8rem;font-family:inherit;cursor:pointer}.namespace-members__member-role[_ngcontent-%COMP%]:focus{outline:none;border-color:var(--color-primary, #007aff)}.namespace-members__member-remove[_ngcontent-%COMP%]{flex-shrink:0;width:1.5rem;height:1.5rem;display:flex;align-items:center;justify-content:center;border-radius:50%;border:none;background:transparent;color:var(--color-text-secondary, #6e6e73);font-size:1rem;line-height:1;cursor:pointer;transition:background .15s ease,color .15s ease}.namespace-members__member-remove[_ngcontent-%COMP%]:hover{background:var(--color-error-light, rgba(255, 59, 48, .12));color:var(--color-error, #ff3b30)}.namespace-members__warning[_ngcontent-%COMP%]{margin:0;padding:.5rem .75rem;border-radius:8px;background:var(--color-warning-light, rgba(255, 149, 0, .1));border:1px solid var(--color-warning, #ff9500);color:var(--color-warning, #ff9500);font-size:.8rem;line-height:1.4}.namespace-members__error[_ngcontent-%COMP%]{margin:0;padding:.625rem .875rem;border-radius:8px;background:var(--color-error-light, rgba(255, 59, 48, .08));border:1px solid var(--color-error, #ff3b30);color:var(--color-error, #ff3b30);font-size:.875rem;line-height:1.4}.namespace-members__actions[_ngcontent-%COMP%]{display:flex;gap:.75rem;padding-top:.5rem}.namespace-members__btn[_ngcontent-%COMP%]{padding:.6rem 1.25rem;border-radius:8px;border:1px solid var(--color-border, rgba(0, 0, 0, .1));background:transparent;color:var(--color-text, #1d1d1f);font-size:.9375rem;font-family:inherit;cursor:pointer;transition:background .15s ease,border-color .15s ease}.namespace-members__btn[_ngcontent-%COMP%]:hover:not(:disabled){background:var(--color-surface-hover, rgba(0, 0, 0, .04))}.namespace-members__btn[_ngcontent-%COMP%]:disabled{opacity:.45;cursor:not-allowed}.namespace-members__btn--primary[_ngcontent-%COMP%]{background:var(--color-primary, #007aff);border-color:var(--color-primary, #007aff);color:#fff}.namespace-members__btn--primary[_ngcontent-%COMP%]:hover:not(:disabled){background:var(--color-primary-hover, #0051d5);border-color:var(--color-primary-hover, #0051d5)}"],changeDetection:0})};export{E as a,Y as b};
|