@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.
Files changed (69) hide show
  1. package/browser/{chunk-LHKOA7FX.js → chunk-2BMHZNQA.js} +1 -1
  2. package/browser/{chunk-ADEIEQGJ.js → chunk-2IN2N6PV.js} +1 -1
  3. package/browser/{chunk-TRFKVZGV.js → chunk-2QDRHKK5.js} +1 -1
  4. package/browser/{chunk-AK746XRX.js → chunk-45MC2DTD.js} +1 -1
  5. package/browser/{chunk-WMHS3NSI.js → chunk-4QVEFNE3.js} +1 -1
  6. package/browser/{chunk-4CNY7Z64.js → chunk-4QXUUAXS.js} +1 -1
  7. package/browser/{chunk-6BMCL5TR.js → chunk-5PVR7BPQ.js} +1 -1
  8. package/browser/{chunk-VZOBZ3DD.js → chunk-6QJAB37Y.js} +1 -1
  9. package/browser/chunk-6UZOFA34.js +1 -0
  10. package/browser/{chunk-76HYDFUL.js → chunk-7QFIBIYY.js} +1 -1
  11. package/browser/{chunk-LUB22VNT.js → chunk-AGUXPJDD.js} +1 -1
  12. package/browser/{chunk-UO7SKQEC.js → chunk-AMWKKZG5.js} +1 -1
  13. package/browser/{chunk-X73LZ3QV.js → chunk-ARAXWPWU.js} +1 -1
  14. package/browser/{chunk-5OGZHNUE.js → chunk-BSYMLXS6.js} +1 -1
  15. package/browser/{chunk-UQTA3ACH.js → chunk-C2LUO2MP.js} +1 -1
  16. package/browser/{chunk-F4ZRQ6MH.js → chunk-CQANBPMP.js} +1 -1
  17. package/browser/{chunk-VLDPXI7G.js → chunk-CWVJWHAD.js} +1 -1
  18. package/browser/{chunk-U7ZJFIOR.js → chunk-D67AF7QL.js} +1 -1
  19. package/browser/{chunk-CSHG3PLJ.js → chunk-DGCILIN5.js} +1 -1
  20. package/browser/{chunk-U3AHBQTX.js → chunk-EG5EQQU3.js} +1 -1
  21. package/browser/{chunk-CU7SABOQ.js → chunk-EHQPUQEI.js} +1 -1
  22. package/browser/{chunk-QXBTTCPM.js → chunk-FCEVFEIX.js} +1 -1
  23. package/browser/{chunk-ONZVOEJQ.js → chunk-FCFKY56K.js} +1 -1
  24. package/browser/{chunk-X5ZRXGFA.js → chunk-FSUOGZGO.js} +1 -1
  25. package/browser/{chunk-QTXEWRHZ.js → chunk-GLZG7RKF.js} +1 -1
  26. package/browser/{chunk-YGBFW4ZS.js → chunk-GS2CQHR7.js} +1 -1
  27. package/browser/{chunk-W7A7CPWM.js → chunk-HD2F6BMJ.js} +1 -1
  28. package/browser/{chunk-NYUYHMIH.js → chunk-IMS7HQGJ.js} +1 -1
  29. package/browser/chunk-KCFDTF3A.js +1 -0
  30. package/browser/{chunk-GLFQ37PU.js → chunk-KYYI3JSI.js} +1 -1
  31. package/browser/{chunk-KWJJEVAI.js → chunk-LIBCKDBU.js} +1 -1
  32. package/browser/{chunk-5Y2Q6WKL.js → chunk-LRIDOWQT.js} +1 -1
  33. package/browser/{chunk-I4RHXOIC.js → chunk-M6HAWZVC.js} +1 -1
  34. package/browser/chunk-MBQHFE5U.js +1 -0
  35. package/browser/{chunk-BWBZLC7A.js → chunk-NT57GO6D.js} +1 -1
  36. package/browser/{chunk-N2NJQ7DJ.js → chunk-NYQXGX3Y.js} +1 -1
  37. package/browser/{chunk-XAEUGARN.js → chunk-OTZDQE5T.js} +1 -1
  38. package/browser/{chunk-ZXQEKBPA.js → chunk-PEPRUAAU.js} +1 -1
  39. package/browser/{chunk-7H4TBVB7.js → chunk-PKLY5FK2.js} +1 -1
  40. package/browser/{chunk-S5QSZK6N.js → chunk-Q3UQBBUS.js} +1 -1
  41. package/browser/{chunk-MIAKSSSF.js → chunk-QCLAOYIL.js} +1 -1
  42. package/browser/chunk-QKICZGWX.js +1 -0
  43. package/browser/{chunk-7O6TY5IW.js → chunk-QTGBG7IF.js} +1 -1
  44. package/browser/{chunk-SZM3NJVZ.js → chunk-SC7BP3G3.js} +1 -1
  45. package/browser/chunk-SFQE4GQ6.js +1 -0
  46. package/browser/{chunk-5N6DUZII.js → chunk-SI42WXFB.js} +1 -1
  47. package/browser/{chunk-TNSH3NBF.js → chunk-T4R5WSRE.js} +1 -1
  48. package/browser/chunk-UJ2IGPRI.js +1 -0
  49. package/browser/{chunk-R2NWLPS6.js → chunk-VVFVGWIQ.js} +1 -1
  50. package/browser/{chunk-RQKLSUW5.js → chunk-W34FCJM7.js} +1 -1
  51. package/browser/{chunk-H6NBS4JE.js → chunk-W7ONGRS7.js} +1 -1
  52. package/browser/{chunk-NNUJIQ6R.js → chunk-WJZ4NXIG.js} +1 -1
  53. package/browser/{chunk-GSUU7JSY.js → chunk-WTBQIOPQ.js} +1 -1
  54. package/browser/{chunk-FA2MVU23.js → chunk-XC5W65K7.js} +1 -1
  55. package/browser/{chunk-4FGWE3EW.js → chunk-XKHDPUML.js} +1 -1
  56. package/browser/{chunk-ECISS7V2.js → chunk-XS4CC6GG.js} +1 -1
  57. package/browser/{chunk-UWYJO2DN.js → chunk-YCZCEQQL.js} +1 -1
  58. package/browser/chunk-YFQUZF2M.js +1 -0
  59. package/browser/{chunk-ZQZHBROX.js → chunk-ZEN5PJJE.js} +1 -1
  60. package/browser/{chunk-KJJPVCIH.js → chunk-ZJLDJUUY.js} +1 -1
  61. package/browser/{chunk-MFSY4HYK.js → chunk-ZM4HUO26.js} +1 -1
  62. package/browser/index.html +1 -1
  63. package/browser/{main-VWHGBAF5.js → main-5JFQENOY.js} +1 -1
  64. package/package.json +1 -1
  65. package/browser/chunk-EAVXJ7QN.js +0 -1
  66. package/browser/chunk-ENRRDIUM.js +0 -1
  67. package/browser/chunk-P6WNH2KJ.js +0 -1
  68. package/browser/chunk-XJYEZL5J.js +0 -1
  69. package/browser/chunk-XZRVHU66.js +0 -1
@@ -1 +1 @@
1
- import{a as oe}from"./chunk-ADEIEQGJ.js";import"./chunk-NWFFZ2FW.js";import"./chunk-VZOBZ3DD.js";import{b as G,i as U,w as W}from"./chunk-UQTA3ACH.js";import{a as L,c as $,d as j}from"./chunk-6XX7GME4.js";import{a as S}from"./chunk-VMYKE4ZC.js";import{F as ne,b as Y,c as q,e as P,g as J,h as H,i as K,l as _,n as Q,s as X,w as Z,y as ee,z as te}from"./chunk-7OGOI6WM.js";import{Bb as w,D as N,Db as b,Fb as s,Ka as g,Tb as a,Ub as y,Vb as E,Wa as V,a as R,b as T,ca as v,ga as C,ha as x,jb as B,lb as f,m as I,ma as D,mb as p,nb as z,pb as A,qb as M,rb as d,sb as i,t as F,ta as u,tb as n,ub as h,z as O}from"./chunk-CHEXA6RY.js";var re=(r,t)=>t.config.id,ae=(r,t)=>t.type;function le(r,t){if(r&1&&(i(0,"a",5),a(1,"View resolved definition \u2192"),n()),r&2){let e=s();d("routerLink",e.inspectRoute())}}function ge(r,t){r&1&&(i(0,"span",6),a(1,"Platform level"),n())}function ce(r,t){r&1&&(i(0,"p",7),a(1,"Loading\u2026"),n())}function se(r,t){if(r&1&&(i(0,"span",41),a(1),n()),r&2){let e=s().$implicit;g(),y(e.config.integrationType)}}function de(r,t){if(r&1&&h(0,"input",42),r&2){let e=s().$implicit;d("formControl",e.toolsControl)}}function me(r,t){if(r&1){let e=w();i(0,"div",37)(1,"label",38)(2,"input",39),b("change",function(){let l=C(e).$implicit,c=s(3);return x(c.toggleIntegration(l))}),n(),i(3,"span",40),a(4),n(),f(5,se,2,1,"span",41),n(),f(6,de,1,1,"input",42),n()}if(r&2){let e=t.$implicit;g(2),d("checked",e.enabled()),g(2),y(e.config.name),g(),p(e.config.integrationType?5:-1),g(),p(e.enabled()?6:-1)}}function fe(r,t){if(r&1&&(i(0,"p",48),a(1),n()),r&2){let e=s().$implicit;g(),E(" Restricted to: ",e.restrictedTools.join(", ")," (set outside this form, preserved on save) ")}}function pe(r,t){if(r&1){let e=w();i(0,"div",37)(1,"label",38)(2,"span",40),a(3),n(),i(4,"span",41),a(5,"built-in"),n()(),i(6,"select",44),b("change",function(l){let c=C(e).$implicit,m=s(4);return x(m.setBuiltInState(c,l.target.value))}),i(7,"option",45),a(8),n(),i(9,"option",46),a(10,"Enabled"),n(),i(11,"option",47),a(12,"Disabled"),n()(),f(13,fe,2,1,"p",48),i(14,"p",49),a(15),n()()}if(r&2){let e=t.$implicit,o=s(4);g(),B("for","built-in-"+e.type),g(2),y(e.displayName),g(3),d("id","built-in-"+e.type)("value",e.state()),g(2),y(o.builtInDefaultLabel(e)),g(5),p(e.state()==="on"&&e.restrictedTools?13:-1),g(2),y(e.description)}}function _e(r,t){if(r&1&&(i(0,"p",43),a(1,"Built-in integrations"),n(),A(2,pe,16,7,"div",37,ae)),r&2){let e=s(3);g(2),M(e.builtInRows())}}function ue(r,t){if(r&1&&(i(0,"fieldset",20)(1,"legend",25),a(2,"Integrations"),n(),i(3,"p",36),a(4," Select which integrations this agent can use. Leave tool names empty to allow all tools from an integration. "),n(),A(5,me,7,4,"div",37,re),f(7,_e,4,0),n()),r&2){let e=s(2);g(5),M(e.integrationRows()),g(2),p(e.builtInRows().length>0?7:-1)}}function be(r,t){if(r&1){let e=w();i(0,"li",50),h(1,"input",51),i(2,"button",52),b("click",function(){let l=C(e).$implicit,c=s(3);return x(c.removeSubAgent(l))}),a(3," \u{1F5D1} "),n()()}if(r&2){let e=t.$implicit;g(),d("formControl",e.control)}}function Ce(r,t){if(r&1&&(i(0,"ul",28),A(1,be,4,1,"li",50,z),n()),r&2){let e=s(2);g(),M(e.subAgentRows())}}function xe(r,t){if(r&1){let e=w();i(0,"button",53),b("click",function(){C(e);let l=s(2);return x(l.exportYaml())}),a(1),n()}if(r&2){let e=s(2);d("disabled",e.isExporting()),g(),E(" ",e.isExporting()?"Exporting\u2026":"Export as YAML"," ")}}function he(r,t){if(r&1){let e=w();i(0,"form",9),b("ngSubmit",function(){C(e);let l=s();return x(l.submit())}),i(1,"div",10)(2,"label",11),a(3,"Name "),i(4,"span",12),a(5,"*"),n()(),h(6,"input",13),n(),i(7,"div",10)(8,"label",14),a(9,"Description"),n(),h(10,"input",15),n(),i(11,"div",10)(12,"label",16),a(13,"Model name"),n(),h(14,"input",17),n(),i(15,"div",10)(16,"label",18),a(17,"Instructions"),n(),h(18,"textarea",19),n(),f(19,ue,8,1,"fieldset",20),i(20,"div",10)(21,"label",21),h(22,"input",22),i(23,"span",23),a(24,"Advanced mode"),n()(),i(25,"p",24),a(26," When enabled, this agent uses a multi-step reasoning loop instead of a single LLM call. "),n()(),i(27,"div",10)(28,"label",21),h(29,"input",22),i(30,"span",23),a(31,"Enabled"),n()(),i(32,"p",24),a(33,"Disabled agents are excluded from namespace resolution."),n()(),i(34,"div",10)(35,"span",25),a(36,"Sub-agents"),n(),i(37,"p",26),a(38," Glob patterns for agents this agent may delegate to. "),i(39,"code",27),a(40,"*"),n(),a(41," matches any sequence of characters (e.g.\xA0"),i(42,"code",27),a(43,"*Fixer"),n(),a(44,", "),i(45,"code",27),a(46,"*"),n(),a(47," for all). Leave empty to disable delegation. "),n(),f(48,Ce,3,0,"ul",28),i(49,"div",29)(50,"input",30),b("keydown.enter",function(){C(e);let l=s();return x(l.addSubAgent())}),n(),i(51,"button",31),b("click",function(){C(e);let l=s();return x(l.addSubAgent())}),a(52," + "),n()()(),i(53,"div",32)(54,"button",33),a(55),n(),f(56,xe,2,2,"button",34),i(57,"button",35),b("click",function(){C(e);let l=s();return x(l.cancel())}),a(58,"Cancel"),n()()()}if(r&2){let e=s();d("formGroup",e.form),g(6),d("formControl",e.nameControl),g(4),d("formControl",e.descriptionControl),g(4),d("formControl",e.modelNameControl),g(4),d("formControl",e.instructionsControl),g(),p(e.integrationRows().length>0||e.builtInRows().length>0?19:-1),g(3),d("formControl",e.advancedExecutionControl),g(7),d("formControl",e.enabledControl),g(19),p(e.subAgentRows().length>0?48:-1),g(2),d("formControl",e.newSubAgentControl),g(),d("disabled",!e.newSubAgentControl.value.trim()),g(3),d("disabled",e.form.invalid||e.isSubmitting()),g(),E(" ",e.isEditMode()?"Save changes":"Create"," "),g(),p(e.isEditMode()?56:-1)}}var ie=class r{route=v(L);router=v($);destroyRef=v(D);agentConfigController=v(G);exportService=v(W);integrationConfigState=v(oe);integrationTypeController=v(U);namespaceId=this.route.snapshot.params.namespaceId;isPlatformMode=!this.namespaceId;form=new K({name:new _("",{nonNullable:!0,validators:[P.required,P.minLength(1)]}),description:new _(null),modelName:new _(null),instructions:new _(null),advancedExecution:new _(!1,{nonNullable:!0}),enabled:new _(!1,{nonNullable:!0})});get nameControl(){return this.form.controls.name}get descriptionControl(){return this.form.controls.description}get modelNameControl(){return this.form.controls.modelName}get instructionsControl(){return this.form.controls.instructions}get advancedExecutionControl(){return this.form.controls.advancedExecution}get enabledControl(){return this.form.controls.enabled}subAgentRows=u([]);newSubAgentControl=new _("",{nonNullable:!0});isEditMode=u(!1);isSubmitting=u(!1);isLoading=u(!1);isExporting=u(!1);builtInRows=u([]);inspectRoute(){let t=this.route.snapshot.paramMap.get("agentConfigId")??"";return this.isPlatformMode?["/agentos","admin","agent-configs",t,"inspect"]:["/agentos",this.namespaceId,"agent-configs",t,"inspect"]}integrationRows=u([]);existingConfig=null;ngOnInit(){let t=this.route.snapshot.paramMap.get("agentConfigId");t?(this.isEditMode.set(!0),this.loadConfigAndIntegrations(t)):this.loadIntegrations(void 0)}loadConfigAndIntegrations(t){this.isLoading.set(!0),O({config:this.agentConfigController.getByIdAgentConfig(t),namespaceIntegrations:this.namespaceId?this.integrationConfigState.loadNamespaceConfigs(this.namespaceId):I([]),platformIntegrations:this.integrationConfigState.loadPlatformConfigs(),builtInTypes:this.loadBuiltInTypes()}).pipe(S(this.destroyRef)).subscribe({next:({config:e,namespaceIntegrations:o,platformIntegrations:l,builtInTypes:c})=>{this.existingConfig=e,this.nameControl.setValue(e.name),this.descriptionControl.setValue(e.description??null),this.modelNameControl.setValue(e.modelName??null),this.instructionsControl.setValue(e.instructions??null),this.advancedExecutionControl.setValue(e.advancedExecution??!1),this.enabledControl.setValue(e.enabled??!0);let m=[...l,...o];this.integrationRows.set(this.buildIntegrationRows(m,e.integrations??void 0)),this.builtInRows.set(this.buildBuiltInRows(c,e.integrations??void 0)),this.subAgentRows.set((e.subAgents??[]).map(k=>({control:new _(k,{nonNullable:!0})}))),this.isLoading.set(!1)},error:()=>{this.isLoading.set(!1),this.navigateBack()}})}loadIntegrations(t){O({namespaceIntegrations:this.namespaceId?this.integrationConfigState.loadNamespaceConfigs(this.namespaceId):I([]),platformIntegrations:this.integrationConfigState.loadPlatformConfigs(),builtInTypes:this.loadBuiltInTypes()}).pipe(S(this.destroyRef)).subscribe({next:({namespaceIntegrations:e,platformIntegrations:o,builtInTypes:l})=>{let c=[...o,...e];this.integrationRows.set(this.buildIntegrationRows(c,t??void 0)),this.builtInRows.set(this.buildBuiltInRows(l,t??void 0))}})}loadBuiltInTypes(){return this.integrationTypeController.listTypesIntegrationType().pipe(F(t=>t.filter(e=>!e.configSchema)),N(t=>(console.error("[agent-config-form] failed to load integration types",t),I([]))))}buildIntegrationRows(t,e){return t.map(o=>{let l=o.name??"",c=e?.[l],m=e!=null&&l in e,k=Array.isArray(c)?c.join(", "):"";return{config:o,enabled:u(m),toolsControl:new _(k,{nonNullable:!0})}})}buildBuiltInRows(t,e){return t.map(o=>{let l=e!=null&&o.type in e,c=e?.[o.type],m=l?Array.isArray(c)&&c.length===0?"off":"on":"default";return{type:o.type,displayName:o.displayName,description:o.description,enabledByDefault:o.enabledByDefault===!0,state:u(m),restrictedTools:Array.isArray(c)&&c.length>0?c:null}})}toggleIntegration(t){t.enabled.update(e=>!e)}setBuiltInState(t,e){t.state.set(e)}builtInDefaultLabel(t){return t.enabledByDefault?"Platform default (enabled)":"Platform default (disabled)"}addSubAgent(){let t=this.newSubAgentControl.value.trim();t&&(this.subAgentRows.update(e=>[...e,{control:new _(t,{nonNullable:!0})}]),this.newSubAgentControl.reset(""))}removeSubAgent(t){this.subAgentRows.update(e=>e.filter(o=>o!==t))}buildSubAgentsPayload(){let t=this.subAgentRows().map(e=>e.control.value.trim()).filter(e=>e.length>0);return t.length>0?t:void 0}buildIntegrationsPayload(){let t={};for(let o of this.integrationRows().filter(l=>l.enabled())){let l=o.config.name??"",c=o.toolsControl.value.trim();t[l]=c===""?null:c.split(",").map(m=>m.trim()).filter(m=>m.length>0)}for(let o of this.builtInRows()){let l=o.state();l==="on"?t[o.type]=o.restrictedTools??null:l==="off"&&(t[o.type]=[])}let e=new Set([...this.integrationRows().map(o=>o.config.name??""),...this.builtInRows().map(o=>o.type)]);for(let[o,l]of Object.entries(this.existingConfig?.integrations??{}))e.has(o)||(t[o]=l);return Object.keys(t).length>0?t:void 0}submit(){if(this.form.invalid||this.isSubmitting())return;this.addSubAgent(),this.isSubmitting.set(!0);let t=T(R({},this.existingConfig??{}),{createdOn:this.existingConfig?.createdOn,updatedOn:this.existingConfig?.updatedOn,namespaceId:this.namespaceId,name:this.nameControl.value.trim(),description:this.descriptionControl.value?.trim()||void 0,modelName:this.modelNameControl.value?.trim()||void 0,instructions:this.instructionsControl.value?.trim()||void 0,integrations:this.buildIntegrationsPayload(),advancedExecution:this.advancedExecutionControl.value,enabled:this.enabledControl.value,subAgents:this.buildSubAgentsPayload()});(this.isEditMode()?this.agentConfigController.updateAgentConfig(this.existingConfig.id??"",t):this.agentConfigController.createAgentConfig(t)).pipe(S(this.destroyRef)).subscribe({next:()=>this.navigateBack(),error:()=>this.isSubmitting.set(!1)})}exportYaml(){let t=this.existingConfig?.id;!t||this.isExporting()||(this.isExporting.set(!0),this.exportService.exportAsYaml(t).pipe(S(this.destroyRef)).subscribe({next:e=>{let o=new Blob([e],{type:"application/yaml"}),l=URL.createObjectURL(o),c=document.createElement("a");c.href=l,c.download=`${this.existingConfig?.name??"agent"}.yaml`,c.click(),URL.revokeObjectURL(l),this.isExporting.set(!1)},error:()=>this.isExporting.set(!1)}))}cancel(){this.navigateBack()}navigateBack(){this.isPlatformMode?this.router.navigate(["/agentos","admin","agent-configs"]):this.router.navigate(["/agentos",this.namespaceId,"agent-configs"])}static \u0275fac=function(e){return new(e||r)};static \u0275cmp=V({type:r,selectors:[["agentos-agent-config-form"]],decls:12,vars:4,consts:[[1,"agent-config-form"],[1,"agent-config-form__header"],["type","button","title","Back to agent configs",1,"agent-config-form__back",3,"click"],[1,"agent-config-form__back-icon"],[1,"agent-config-form__title"],[1,"agent-config-form__sibling-link",3,"routerLink"],[1,"agent-config-form__platform-badge"],[1,"agent-config-form__loading"],[1,"agent-config-form__form",3,"formGroup"],[1,"agent-config-form__form",3,"ngSubmit","formGroup"],[1,"agent-config-form__field"],["for","agent-config-name",1,"agent-config-form__label"],["aria-hidden","true"],["id","agent-config-name","type","text","placeholder","e.g. Support agent","autocomplete","off",1,"agent-config-form__input",3,"formControl"],["for","agent-config-description",1,"agent-config-form__label"],["id","agent-config-description","type","text","placeholder","Optional \u2014 short description of this agent","autocomplete","off",1,"agent-config-form__input",3,"formControl"],["for","agent-config-model-name",1,"agent-config-form__label"],["id","agent-config-model-name","type","text","placeholder","Optional \u2014 model alias or name to use","autocomplete","off",1,"agent-config-form__input",3,"formControl"],["for","agent-config-instructions",1,"agent-config-form__label"],["id","agent-config-instructions","rows","6","placeholder","Optional \u2014 system instructions for this agent",1,"agent-config-form__textarea",3,"formControl"],[1,"agent-config-form__integrations"],[1,"agent-config-form__toggle-label"],["type","checkbox",1,"agent-config-form__toggle-checkbox",3,"formControl"],[1,"agent-config-form__toggle-text"],[1,"agent-config-form__toggle-hint"],[1,"agent-config-form__label"],[1,"agent-config-form__field-hint"],[1,"agent-config-form__code"],[1,"agent-config-form__sub-agent-list"],[1,"agent-config-form__sub-agent-add"],["type","text","placeholder","e.g. *Fixer or *","autocomplete","off",1,"agent-config-form__input","agent-config-form__sub-agent-input",3,"keydown.enter","formControl"],["type","button","title","Add pattern",1,"agent-config-form__sub-agent-btn","agent-config-form__sub-agent-btn--add",3,"click","disabled"],[1,"agent-config-form__actions"],["type","submit",1,"agent-config-form__btn","agent-config-form__btn--primary",3,"disabled"],["type","button",1,"agent-config-form__btn","agent-config-form__btn--export",3,"disabled"],["type","button",1,"agent-config-form__btn",3,"click"],[1,"agent-config-form__integrations-hint"],[1,"agent-config-form__integration-row"],[1,"agent-config-form__integration-toggle"],["type","checkbox",1,"agent-config-form__integration-checkbox",3,"change","checked"],[1,"agent-config-form__integration-name"],[1,"agent-config-form__integration-type"],["type","text","placeholder","Tool names, comma-separated (empty = all tools)","autocomplete","off",1,"agent-config-form__input","agent-config-form__integration-tools",3,"formControl"],[1,"agent-config-form__integrations-separator"],[1,"agent-config-form__integration-state",3,"change","id","value"],["value","default"],["value","on"],["value","off"],[1,"agent-config-form__integration-restriction"],[1,"agent-config-form__integration-builtin-desc"],[1,"agent-config-form__sub-agent-row"],["type","text","autocomplete","off",1,"agent-config-form__input","agent-config-form__sub-agent-input",3,"formControl"],["type","button","title","Remove",1,"agent-config-form__sub-agent-btn","agent-config-form__sub-agent-btn--danger",3,"click"],["type","button",1,"agent-config-form__btn","agent-config-form__btn--export",3,"click","disabled"]],template:function(e,o){e&1&&(i(0,"div",0)(1,"header",1)(2,"button",2),b("click",function(){return o.cancel()}),i(3,"span",3),a(4,"\u2190"),n(),a(5," Agent Configs "),n(),i(6,"h1",4),a(7),n(),f(8,le,2,1,"a",5),f(9,ge,2,0,"span",6),n(),f(10,ce,2,0,"p",7)(11,he,59,14,"form",8),n()),e&2&&(g(7),y(o.isEditMode()?"Edit agent config":"New agent config"),g(),p(o.isEditMode()?8:-1),g(),p(o.isPlatformMode?9:-1),g(),p(o.isLoading()?10:11))},dependencies:[ne,Q,ee,te,q,Y,J,H,X,Z,j],styles:[".agent-config-form[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:2rem;max-width:560px;margin:0 auto;padding:2rem 1rem}.agent-config-form__header[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.5rem}.agent-config-form__back[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:.375rem;background:none;border:none;padding:0;cursor:pointer;font-size:.875rem;color:var(--color-accent)}.agent-config-form__back[_ngcontent-%COMP%]:hover{text-decoration:underline}.agent-config-form__back-icon[_ngcontent-%COMP%]{font-size:1rem;line-height:1}.agent-config-form__title[_ngcontent-%COMP%]{margin:0;font-size:1.5rem;font-weight:700;color:var(--color-text);letter-spacing:-.02em}.agent-config-form__sibling-link[_ngcontent-%COMP%]{font-size:.8125rem;color:var(--color-accent);text-decoration:none}.agent-config-form__sibling-link[_ngcontent-%COMP%]:hover{text-decoration:underline}.agent-config-form__platform-badge[_ngcontent-%COMP%]{display:inline-block;font-size:.75rem;font-weight:500;color:var(--color-text-secondary);background:var(--color-surface);border:1px solid var(--color-divider);border-radius:0;padding:.125rem .5rem;letter-spacing:.02em;align-self:flex-start}.agent-config-form__loading[_ngcontent-%COMP%]{color:var(--color-text-secondary);font-size:.9rem;margin:0}.agent-config-form__form[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:1.25rem}.agent-config-form__field[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.375rem}.agent-config-form__label[_ngcontent-%COMP%]{font-size:.875rem;font-weight:500;color:var(--color-text)}.agent-config-form__input[_ngcontent-%COMP%], .agent-config-form__textarea[_ngcontent-%COMP%]{width:100%;padding:.625rem .875rem;border-radius:0;border:1px solid var(--color-divider);background:var(--color-surface);color:var(--color-text);font-size:.9375rem;font-family:inherit;outline:none;box-sizing:border-box;transition:border-color .15s ease}.agent-config-form__input[_ngcontent-%COMP%]:focus, .agent-config-form__textarea[_ngcontent-%COMP%]:focus{border-color:var(--color-accent)}.agent-config-form__input[_ngcontent-%COMP%]::placeholder, .agent-config-form__textarea[_ngcontent-%COMP%]::placeholder{color:var(--color-neutral-500)}.agent-config-form__textarea[_ngcontent-%COMP%]{resize:vertical;min-height:120px;line-height:1.5}.agent-config-form__integrations[_ngcontent-%COMP%]{border:1px solid var(--color-divider);border-radius:0;padding:1rem;margin:0;display:flex;flex-direction:column;gap:.75rem}.agent-config-form__integrations-hint[_ngcontent-%COMP%]{margin:0;font-size:.8rem;color:var(--color-text-secondary);line-height:1.4}.agent-config-form__integration-row[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.375rem}.agent-config-form__integration-toggle[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.5rem;cursor:pointer;-webkit-user-select:none;user-select:none}.agent-config-form__integration-checkbox[_ngcontent-%COMP%]{width:1rem;height:1rem;flex-shrink:0;accent-color:var(--color-accent);cursor:pointer}.agent-config-form__integration-name[_ngcontent-%COMP%]{font-size:.9rem;font-weight:500;color:var(--color-text)}.agent-config-form__integration-type[_ngcontent-%COMP%]{font-size:.75rem;color:var(--color-text-secondary);font-family:monospace}.agent-config-form__integration-tools[_ngcontent-%COMP%]{margin-left:1.5rem;font-size:.875rem}.agent-config-form__integrations-separator[_ngcontent-%COMP%]{margin:.25rem 0 0;padding-top:.5rem;border-top:1px solid var(--color-divider);font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.12em;color:var(--color-neutral-500);font-family:var(--font-heading)}.agent-config-form__integration-state[_ngcontent-%COMP%]{margin-left:1.5rem;padding:.375rem .625rem;border-radius:8px;border:1px solid var(--color-border, rgba(0, 0, 0, .1));background:transparent;color:var(--color-text, #1d1d1f);font-size:.875rem;font-family:inherit;outline:none;transition:border-color .15s ease}.agent-config-form__integration-state[_ngcontent-%COMP%]:focus{border-color:var(--color-primary, #007aff)}.agent-config-form__integration-restriction[_ngcontent-%COMP%]{margin:0 0 0 1.5rem;font-size:.8rem;font-style:italic;color:var(--color-text-secondary, #6e6e73);line-height:1.4}.agent-config-form__integration-builtin-desc[_ngcontent-%COMP%]{margin:0 0 0 1.5rem;font-size:.8rem;color:var(--color-text-secondary);line-height:1.4}.agent-config-form__field-hint[_ngcontent-%COMP%]{margin:.25rem 0 0;font-size:.8rem;color:var(--color-text-secondary);line-height:1.4}.agent-config-form__code[_ngcontent-%COMP%]{font-family:monospace;font-size:.85em;background:var(--color-surface-muted, rgba(0, 0, 0, .06));padding:.1em .3em;border-radius:0}.agent-config-form__sub-agent-list[_ngcontent-%COMP%]{list-style:none;margin:.5rem 0 0;padding:0;display:flex;flex-direction:column;gap:.375rem}.agent-config-form__sub-agent-row[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.375rem}.agent-config-form__sub-agent-input[_ngcontent-%COMP%]{flex:1;min-width:0}.agent-config-form__sub-agent-add[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.375rem;margin-top:.5rem}.agent-config-form__sub-agent-btn[_ngcontent-%COMP%]{flex-shrink:0;width:2rem;height:2rem;padding:0;border-radius:0;border:1px solid var(--color-divider);background:transparent;color:var(--color-text-secondary);font-size:.9rem;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .15s ease,border-color .15s ease,color .15s ease}.agent-config-form__sub-agent-btn[_ngcontent-%COMP%]:hover:not(:disabled){background:var(--color-bg-hover);border-color:var(--color-neutral-500);color:var(--color-text)}.agent-config-form__sub-agent-btn[_ngcontent-%COMP%]:disabled{opacity:.35;cursor:not-allowed}.agent-config-form__sub-agent-btn--add[_ngcontent-%COMP%]{width:2rem;height:2rem;font-size:1.25rem;font-weight:300;border-color:var(--color-accent);color:var(--color-accent)}.agent-config-form__sub-agent-btn--add[_ngcontent-%COMP%]:hover:not(:disabled){background:var(--color-accent);color:#fff}.agent-config-form__sub-agent-btn--danger[_ngcontent-%COMP%]{border:1px solid transparent;color:var(--color-neutral-500)}.agent-config-form__sub-agent-btn--danger[_ngcontent-%COMP%]:hover:not(:disabled){border-color:var(--red);color:var(--red);background:color-mix(in srgb,var(--red) 10%,transparent)}.agent-config-form__toggle-label[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.5rem;cursor:pointer;-webkit-user-select:none;user-select:none}.agent-config-form__toggle-checkbox[_ngcontent-%COMP%]{width:1rem;height:1rem;flex-shrink:0;accent-color:var(--color-accent);cursor:pointer}.agent-config-form__toggle-text[_ngcontent-%COMP%]{font-size:.9rem;font-weight:500;color:var(--color-text)}.agent-config-form__toggle-hint[_ngcontent-%COMP%]{margin:.25rem 0 0 1.5rem;font-size:.8rem;color:var(--color-text-secondary);line-height:1.4}.agent-config-form__actions[_ngcontent-%COMP%]{display:flex;gap:.75rem;padding-top:.5rem}.agent-config-form__btn[_ngcontent-%COMP%]{padding:.6rem 1.25rem;border-radius:0;border:1px solid var(--color-divider);background:transparent;color:var(--color-text);font-size:13px;font-family:var(--font-heading);font-weight:600;cursor:pointer;transition:background .15s ease,border-color .15s ease}.agent-config-form__btn[_ngcontent-%COMP%]:hover:not(:disabled){background:var(--color-bg-hover);border-color:var(--color-neutral-500)}.agent-config-form__btn[_ngcontent-%COMP%]:disabled{opacity:.45;cursor:not-allowed}.agent-config-form__btn--primary[_ngcontent-%COMP%]{background:var(--color-accent);border-color:var(--color-accent);color:#fff}.agent-config-form__btn--primary[_ngcontent-%COMP%]:hover:not(:disabled){background:var(--color-accent-700);border-color:var(--color-accent-700)}"],changeDetection:0})};export{ie as AgentConfigFormComponent};
1
+ import{a as oe}from"./chunk-2IN2N6PV.js";import"./chunk-NWFFZ2FW.js";import"./chunk-6QJAB37Y.js";import{b as G,i as U,w as W}from"./chunk-C2LUO2MP.js";import{a as L,c as $,d as j}from"./chunk-6XX7GME4.js";import{a as S}from"./chunk-VMYKE4ZC.js";import{F as ne,b as Y,c as q,e as P,g as J,h as H,i as K,l as _,n as Q,s as X,w as Z,y as ee,z as te}from"./chunk-7OGOI6WM.js";import{Bb as w,D as N,Db as b,Fb as s,Ka as g,Tb as a,Ub as y,Vb as E,Wa as V,a as R,b as T,ca as v,ga as C,ha as x,jb as B,lb as f,m as I,ma as D,mb as p,nb as z,pb as A,qb as M,rb as d,sb as i,t as F,ta as u,tb as n,ub as h,z as O}from"./chunk-CHEXA6RY.js";var re=(r,t)=>t.config.id,ae=(r,t)=>t.type;function le(r,t){if(r&1&&(i(0,"a",5),a(1,"View resolved definition \u2192"),n()),r&2){let e=s();d("routerLink",e.inspectRoute())}}function ge(r,t){r&1&&(i(0,"span",6),a(1,"Platform level"),n())}function ce(r,t){r&1&&(i(0,"p",7),a(1,"Loading\u2026"),n())}function se(r,t){if(r&1&&(i(0,"span",41),a(1),n()),r&2){let e=s().$implicit;g(),y(e.config.integrationType)}}function de(r,t){if(r&1&&h(0,"input",42),r&2){let e=s().$implicit;d("formControl",e.toolsControl)}}function me(r,t){if(r&1){let e=w();i(0,"div",37)(1,"label",38)(2,"input",39),b("change",function(){let l=C(e).$implicit,c=s(3);return x(c.toggleIntegration(l))}),n(),i(3,"span",40),a(4),n(),f(5,se,2,1,"span",41),n(),f(6,de,1,1,"input",42),n()}if(r&2){let e=t.$implicit;g(2),d("checked",e.enabled()),g(2),y(e.config.name),g(),p(e.config.integrationType?5:-1),g(),p(e.enabled()?6:-1)}}function fe(r,t){if(r&1&&(i(0,"p",48),a(1),n()),r&2){let e=s().$implicit;g(),E(" Restricted to: ",e.restrictedTools.join(", ")," (set outside this form, preserved on save) ")}}function pe(r,t){if(r&1){let e=w();i(0,"div",37)(1,"label",38)(2,"span",40),a(3),n(),i(4,"span",41),a(5,"built-in"),n()(),i(6,"select",44),b("change",function(l){let c=C(e).$implicit,m=s(4);return x(m.setBuiltInState(c,l.target.value))}),i(7,"option",45),a(8),n(),i(9,"option",46),a(10,"Enabled"),n(),i(11,"option",47),a(12,"Disabled"),n()(),f(13,fe,2,1,"p",48),i(14,"p",49),a(15),n()()}if(r&2){let e=t.$implicit,o=s(4);g(),B("for","built-in-"+e.type),g(2),y(e.displayName),g(3),d("id","built-in-"+e.type)("value",e.state()),g(2),y(o.builtInDefaultLabel(e)),g(5),p(e.state()==="on"&&e.restrictedTools?13:-1),g(2),y(e.description)}}function _e(r,t){if(r&1&&(i(0,"p",43),a(1,"Built-in integrations"),n(),A(2,pe,16,7,"div",37,ae)),r&2){let e=s(3);g(2),M(e.builtInRows())}}function ue(r,t){if(r&1&&(i(0,"fieldset",20)(1,"legend",25),a(2,"Integrations"),n(),i(3,"p",36),a(4," Select which integrations this agent can use. Leave tool names empty to allow all tools from an integration. "),n(),A(5,me,7,4,"div",37,re),f(7,_e,4,0),n()),r&2){let e=s(2);g(5),M(e.integrationRows()),g(2),p(e.builtInRows().length>0?7:-1)}}function be(r,t){if(r&1){let e=w();i(0,"li",50),h(1,"input",51),i(2,"button",52),b("click",function(){let l=C(e).$implicit,c=s(3);return x(c.removeSubAgent(l))}),a(3," \u{1F5D1} "),n()()}if(r&2){let e=t.$implicit;g(),d("formControl",e.control)}}function Ce(r,t){if(r&1&&(i(0,"ul",28),A(1,be,4,1,"li",50,z),n()),r&2){let e=s(2);g(),M(e.subAgentRows())}}function xe(r,t){if(r&1){let e=w();i(0,"button",53),b("click",function(){C(e);let l=s(2);return x(l.exportYaml())}),a(1),n()}if(r&2){let e=s(2);d("disabled",e.isExporting()),g(),E(" ",e.isExporting()?"Exporting\u2026":"Export as YAML"," ")}}function he(r,t){if(r&1){let e=w();i(0,"form",9),b("ngSubmit",function(){C(e);let l=s();return x(l.submit())}),i(1,"div",10)(2,"label",11),a(3,"Name "),i(4,"span",12),a(5,"*"),n()(),h(6,"input",13),n(),i(7,"div",10)(8,"label",14),a(9,"Description"),n(),h(10,"input",15),n(),i(11,"div",10)(12,"label",16),a(13,"Model name"),n(),h(14,"input",17),n(),i(15,"div",10)(16,"label",18),a(17,"Instructions"),n(),h(18,"textarea",19),n(),f(19,ue,8,1,"fieldset",20),i(20,"div",10)(21,"label",21),h(22,"input",22),i(23,"span",23),a(24,"Advanced mode"),n()(),i(25,"p",24),a(26," When enabled, this agent uses a multi-step reasoning loop instead of a single LLM call. "),n()(),i(27,"div",10)(28,"label",21),h(29,"input",22),i(30,"span",23),a(31,"Enabled"),n()(),i(32,"p",24),a(33,"Disabled agents are excluded from namespace resolution."),n()(),i(34,"div",10)(35,"span",25),a(36,"Sub-agents"),n(),i(37,"p",26),a(38," Glob patterns for agents this agent may delegate to. "),i(39,"code",27),a(40,"*"),n(),a(41," matches any sequence of characters (e.g.\xA0"),i(42,"code",27),a(43,"*Fixer"),n(),a(44,", "),i(45,"code",27),a(46,"*"),n(),a(47," for all). Leave empty to disable delegation. "),n(),f(48,Ce,3,0,"ul",28),i(49,"div",29)(50,"input",30),b("keydown.enter",function(){C(e);let l=s();return x(l.addSubAgent())}),n(),i(51,"button",31),b("click",function(){C(e);let l=s();return x(l.addSubAgent())}),a(52," + "),n()()(),i(53,"div",32)(54,"button",33),a(55),n(),f(56,xe,2,2,"button",34),i(57,"button",35),b("click",function(){C(e);let l=s();return x(l.cancel())}),a(58,"Cancel"),n()()()}if(r&2){let e=s();d("formGroup",e.form),g(6),d("formControl",e.nameControl),g(4),d("formControl",e.descriptionControl),g(4),d("formControl",e.modelNameControl),g(4),d("formControl",e.instructionsControl),g(),p(e.integrationRows().length>0||e.builtInRows().length>0?19:-1),g(3),d("formControl",e.advancedExecutionControl),g(7),d("formControl",e.enabledControl),g(19),p(e.subAgentRows().length>0?48:-1),g(2),d("formControl",e.newSubAgentControl),g(),d("disabled",!e.newSubAgentControl.value.trim()),g(3),d("disabled",e.form.invalid||e.isSubmitting()),g(),E(" ",e.isEditMode()?"Save changes":"Create"," "),g(),p(e.isEditMode()?56:-1)}}var ie=class r{route=v(L);router=v($);destroyRef=v(D);agentConfigController=v(G);exportService=v(W);integrationConfigState=v(oe);integrationTypeController=v(U);namespaceId=this.route.snapshot.params.namespaceId;isPlatformMode=!this.namespaceId;form=new K({name:new _("",{nonNullable:!0,validators:[P.required,P.minLength(1)]}),description:new _(null),modelName:new _(null),instructions:new _(null),advancedExecution:new _(!1,{nonNullable:!0}),enabled:new _(!1,{nonNullable:!0})});get nameControl(){return this.form.controls.name}get descriptionControl(){return this.form.controls.description}get modelNameControl(){return this.form.controls.modelName}get instructionsControl(){return this.form.controls.instructions}get advancedExecutionControl(){return this.form.controls.advancedExecution}get enabledControl(){return this.form.controls.enabled}subAgentRows=u([]);newSubAgentControl=new _("",{nonNullable:!0});isEditMode=u(!1);isSubmitting=u(!1);isLoading=u(!1);isExporting=u(!1);builtInRows=u([]);inspectRoute(){let t=this.route.snapshot.paramMap.get("agentConfigId")??"";return this.isPlatformMode?["/agentos","admin","agent-configs",t,"inspect"]:["/agentos",this.namespaceId,"agent-configs",t,"inspect"]}integrationRows=u([]);existingConfig=null;ngOnInit(){let t=this.route.snapshot.paramMap.get("agentConfigId");t?(this.isEditMode.set(!0),this.loadConfigAndIntegrations(t)):this.loadIntegrations(void 0)}loadConfigAndIntegrations(t){this.isLoading.set(!0),O({config:this.agentConfigController.getByIdAgentConfig(t),namespaceIntegrations:this.namespaceId?this.integrationConfigState.loadNamespaceConfigs(this.namespaceId):I([]),platformIntegrations:this.integrationConfigState.loadPlatformConfigs(),builtInTypes:this.loadBuiltInTypes()}).pipe(S(this.destroyRef)).subscribe({next:({config:e,namespaceIntegrations:o,platformIntegrations:l,builtInTypes:c})=>{this.existingConfig=e,this.nameControl.setValue(e.name),this.descriptionControl.setValue(e.description??null),this.modelNameControl.setValue(e.modelName??null),this.instructionsControl.setValue(e.instructions??null),this.advancedExecutionControl.setValue(e.advancedExecution??!1),this.enabledControl.setValue(e.enabled??!0);let m=[...l,...o];this.integrationRows.set(this.buildIntegrationRows(m,e.integrations??void 0)),this.builtInRows.set(this.buildBuiltInRows(c,e.integrations??void 0)),this.subAgentRows.set((e.subAgents??[]).map(k=>({control:new _(k,{nonNullable:!0})}))),this.isLoading.set(!1)},error:()=>{this.isLoading.set(!1),this.navigateBack()}})}loadIntegrations(t){O({namespaceIntegrations:this.namespaceId?this.integrationConfigState.loadNamespaceConfigs(this.namespaceId):I([]),platformIntegrations:this.integrationConfigState.loadPlatformConfigs(),builtInTypes:this.loadBuiltInTypes()}).pipe(S(this.destroyRef)).subscribe({next:({namespaceIntegrations:e,platformIntegrations:o,builtInTypes:l})=>{let c=[...o,...e];this.integrationRows.set(this.buildIntegrationRows(c,t??void 0)),this.builtInRows.set(this.buildBuiltInRows(l,t??void 0))}})}loadBuiltInTypes(){return this.integrationTypeController.listTypesIntegrationType().pipe(F(t=>t.filter(e=>!e.configSchema)),N(t=>(console.error("[agent-config-form] failed to load integration types",t),I([]))))}buildIntegrationRows(t,e){return t.map(o=>{let l=o.name??"",c=e?.[l],m=e!=null&&l in e,k=Array.isArray(c)?c.join(", "):"";return{config:o,enabled:u(m),toolsControl:new _(k,{nonNullable:!0})}})}buildBuiltInRows(t,e){return t.map(o=>{let l=e!=null&&o.type in e,c=e?.[o.type],m=l?Array.isArray(c)&&c.length===0?"off":"on":"default";return{type:o.type,displayName:o.displayName,description:o.description,enabledByDefault:o.enabledByDefault===!0,state:u(m),restrictedTools:Array.isArray(c)&&c.length>0?c:null}})}toggleIntegration(t){t.enabled.update(e=>!e)}setBuiltInState(t,e){t.state.set(e)}builtInDefaultLabel(t){return t.enabledByDefault?"Platform default (enabled)":"Platform default (disabled)"}addSubAgent(){let t=this.newSubAgentControl.value.trim();t&&(this.subAgentRows.update(e=>[...e,{control:new _(t,{nonNullable:!0})}]),this.newSubAgentControl.reset(""))}removeSubAgent(t){this.subAgentRows.update(e=>e.filter(o=>o!==t))}buildSubAgentsPayload(){let t=this.subAgentRows().map(e=>e.control.value.trim()).filter(e=>e.length>0);return t.length>0?t:void 0}buildIntegrationsPayload(){let t={};for(let o of this.integrationRows().filter(l=>l.enabled())){let l=o.config.name??"",c=o.toolsControl.value.trim();t[l]=c===""?null:c.split(",").map(m=>m.trim()).filter(m=>m.length>0)}for(let o of this.builtInRows()){let l=o.state();l==="on"?t[o.type]=o.restrictedTools??null:l==="off"&&(t[o.type]=[])}let e=new Set([...this.integrationRows().map(o=>o.config.name??""),...this.builtInRows().map(o=>o.type)]);for(let[o,l]of Object.entries(this.existingConfig?.integrations??{}))e.has(o)||(t[o]=l);return Object.keys(t).length>0?t:void 0}submit(){if(this.form.invalid||this.isSubmitting())return;this.addSubAgent(),this.isSubmitting.set(!0);let t=T(R({},this.existingConfig??{}),{createdOn:this.existingConfig?.createdOn,updatedOn:this.existingConfig?.updatedOn,namespaceId:this.namespaceId,name:this.nameControl.value.trim(),description:this.descriptionControl.value?.trim()||void 0,modelName:this.modelNameControl.value?.trim()||void 0,instructions:this.instructionsControl.value?.trim()||void 0,integrations:this.buildIntegrationsPayload(),advancedExecution:this.advancedExecutionControl.value,enabled:this.enabledControl.value,subAgents:this.buildSubAgentsPayload()});(this.isEditMode()?this.agentConfigController.updateAgentConfig(this.existingConfig.id??"",t):this.agentConfigController.createAgentConfig(t)).pipe(S(this.destroyRef)).subscribe({next:()=>this.navigateBack(),error:()=>this.isSubmitting.set(!1)})}exportYaml(){let t=this.existingConfig?.id;!t||this.isExporting()||(this.isExporting.set(!0),this.exportService.exportAsYaml(t).pipe(S(this.destroyRef)).subscribe({next:e=>{let o=new Blob([e],{type:"application/yaml"}),l=URL.createObjectURL(o),c=document.createElement("a");c.href=l,c.download=`${this.existingConfig?.name??"agent"}.yaml`,c.click(),URL.revokeObjectURL(l),this.isExporting.set(!1)},error:()=>this.isExporting.set(!1)}))}cancel(){this.navigateBack()}navigateBack(){this.isPlatformMode?this.router.navigate(["/agentos","admin","agent-configs"]):this.router.navigate(["/agentos",this.namespaceId,"agent-configs"])}static \u0275fac=function(e){return new(e||r)};static \u0275cmp=V({type:r,selectors:[["agentos-agent-config-form"]],decls:12,vars:4,consts:[[1,"agent-config-form"],[1,"agent-config-form__header"],["type","button","title","Back to agent configs",1,"agent-config-form__back",3,"click"],[1,"agent-config-form__back-icon"],[1,"agent-config-form__title"],[1,"agent-config-form__sibling-link",3,"routerLink"],[1,"agent-config-form__platform-badge"],[1,"agent-config-form__loading"],[1,"agent-config-form__form",3,"formGroup"],[1,"agent-config-form__form",3,"ngSubmit","formGroup"],[1,"agent-config-form__field"],["for","agent-config-name",1,"agent-config-form__label"],["aria-hidden","true"],["id","agent-config-name","type","text","placeholder","e.g. Support agent","autocomplete","off",1,"agent-config-form__input",3,"formControl"],["for","agent-config-description",1,"agent-config-form__label"],["id","agent-config-description","type","text","placeholder","Optional \u2014 short description of this agent","autocomplete","off",1,"agent-config-form__input",3,"formControl"],["for","agent-config-model-name",1,"agent-config-form__label"],["id","agent-config-model-name","type","text","placeholder","Optional \u2014 model alias or name to use","autocomplete","off",1,"agent-config-form__input",3,"formControl"],["for","agent-config-instructions",1,"agent-config-form__label"],["id","agent-config-instructions","rows","6","placeholder","Optional \u2014 system instructions for this agent",1,"agent-config-form__textarea",3,"formControl"],[1,"agent-config-form__integrations"],[1,"agent-config-form__toggle-label"],["type","checkbox",1,"agent-config-form__toggle-checkbox",3,"formControl"],[1,"agent-config-form__toggle-text"],[1,"agent-config-form__toggle-hint"],[1,"agent-config-form__label"],[1,"agent-config-form__field-hint"],[1,"agent-config-form__code"],[1,"agent-config-form__sub-agent-list"],[1,"agent-config-form__sub-agent-add"],["type","text","placeholder","e.g. *Fixer or *","autocomplete","off",1,"agent-config-form__input","agent-config-form__sub-agent-input",3,"keydown.enter","formControl"],["type","button","title","Add pattern",1,"agent-config-form__sub-agent-btn","agent-config-form__sub-agent-btn--add",3,"click","disabled"],[1,"agent-config-form__actions"],["type","submit",1,"agent-config-form__btn","agent-config-form__btn--primary",3,"disabled"],["type","button",1,"agent-config-form__btn","agent-config-form__btn--export",3,"disabled"],["type","button",1,"agent-config-form__btn",3,"click"],[1,"agent-config-form__integrations-hint"],[1,"agent-config-form__integration-row"],[1,"agent-config-form__integration-toggle"],["type","checkbox",1,"agent-config-form__integration-checkbox",3,"change","checked"],[1,"agent-config-form__integration-name"],[1,"agent-config-form__integration-type"],["type","text","placeholder","Tool names, comma-separated (empty = all tools)","autocomplete","off",1,"agent-config-form__input","agent-config-form__integration-tools",3,"formControl"],[1,"agent-config-form__integrations-separator"],[1,"agent-config-form__integration-state",3,"change","id","value"],["value","default"],["value","on"],["value","off"],[1,"agent-config-form__integration-restriction"],[1,"agent-config-form__integration-builtin-desc"],[1,"agent-config-form__sub-agent-row"],["type","text","autocomplete","off",1,"agent-config-form__input","agent-config-form__sub-agent-input",3,"formControl"],["type","button","title","Remove",1,"agent-config-form__sub-agent-btn","agent-config-form__sub-agent-btn--danger",3,"click"],["type","button",1,"agent-config-form__btn","agent-config-form__btn--export",3,"click","disabled"]],template:function(e,o){e&1&&(i(0,"div",0)(1,"header",1)(2,"button",2),b("click",function(){return o.cancel()}),i(3,"span",3),a(4,"\u2190"),n(),a(5," Agent Configs "),n(),i(6,"h1",4),a(7),n(),f(8,le,2,1,"a",5),f(9,ge,2,0,"span",6),n(),f(10,ce,2,0,"p",7)(11,he,59,14,"form",8),n()),e&2&&(g(7),y(o.isEditMode()?"Edit agent config":"New agent config"),g(),p(o.isEditMode()?8:-1),g(),p(o.isPlatformMode?9:-1),g(),p(o.isLoading()?10:11))},dependencies:[ne,Q,ee,te,q,Y,J,H,X,Z,j],styles:[".agent-config-form[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:2rem;max-width:560px;margin:0 auto;padding:2rem 1rem}.agent-config-form__header[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.5rem}.agent-config-form__back[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:.375rem;background:none;border:none;padding:0;cursor:pointer;font-size:.875rem;color:var(--color-accent)}.agent-config-form__back[_ngcontent-%COMP%]:hover{text-decoration:underline}.agent-config-form__back-icon[_ngcontent-%COMP%]{font-size:1rem;line-height:1}.agent-config-form__title[_ngcontent-%COMP%]{margin:0;font-size:1.5rem;font-weight:700;color:var(--color-text);letter-spacing:-.02em}.agent-config-form__sibling-link[_ngcontent-%COMP%]{font-size:.8125rem;color:var(--color-accent);text-decoration:none}.agent-config-form__sibling-link[_ngcontent-%COMP%]:hover{text-decoration:underline}.agent-config-form__platform-badge[_ngcontent-%COMP%]{display:inline-block;font-size:.75rem;font-weight:500;color:var(--color-text-secondary);background:var(--color-surface);border:1px solid var(--color-divider);border-radius:0;padding:.125rem .5rem;letter-spacing:.02em;align-self:flex-start}.agent-config-form__loading[_ngcontent-%COMP%]{color:var(--color-text-secondary);font-size:.9rem;margin:0}.agent-config-form__form[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:1.25rem}.agent-config-form__field[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.375rem}.agent-config-form__label[_ngcontent-%COMP%]{font-size:.875rem;font-weight:500;color:var(--color-text)}.agent-config-form__input[_ngcontent-%COMP%], .agent-config-form__textarea[_ngcontent-%COMP%]{width:100%;padding:.625rem .875rem;border-radius:0;border:1px solid var(--color-divider);background:var(--color-surface);color:var(--color-text);font-size:.9375rem;font-family:inherit;outline:none;box-sizing:border-box;transition:border-color .15s ease}.agent-config-form__input[_ngcontent-%COMP%]:focus, .agent-config-form__textarea[_ngcontent-%COMP%]:focus{border-color:var(--color-accent)}.agent-config-form__input[_ngcontent-%COMP%]::placeholder, .agent-config-form__textarea[_ngcontent-%COMP%]::placeholder{color:var(--color-neutral-500)}.agent-config-form__textarea[_ngcontent-%COMP%]{resize:vertical;min-height:120px;line-height:1.5}.agent-config-form__integrations[_ngcontent-%COMP%]{border:1px solid var(--color-divider);border-radius:0;padding:1rem;margin:0;display:flex;flex-direction:column;gap:.75rem}.agent-config-form__integrations-hint[_ngcontent-%COMP%]{margin:0;font-size:.8rem;color:var(--color-text-secondary);line-height:1.4}.agent-config-form__integration-row[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.375rem}.agent-config-form__integration-toggle[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.5rem;cursor:pointer;-webkit-user-select:none;user-select:none}.agent-config-form__integration-checkbox[_ngcontent-%COMP%]{width:1rem;height:1rem;flex-shrink:0;accent-color:var(--color-accent);cursor:pointer}.agent-config-form__integration-name[_ngcontent-%COMP%]{font-size:.9rem;font-weight:500;color:var(--color-text)}.agent-config-form__integration-type[_ngcontent-%COMP%]{font-size:.75rem;color:var(--color-text-secondary);font-family:monospace}.agent-config-form__integration-tools[_ngcontent-%COMP%]{margin-left:1.5rem;font-size:.875rem}.agent-config-form__integrations-separator[_ngcontent-%COMP%]{margin:.25rem 0 0;padding-top:.5rem;border-top:1px solid var(--color-divider);font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.12em;color:var(--color-neutral-500);font-family:var(--font-heading)}.agent-config-form__integration-state[_ngcontent-%COMP%]{margin-left:1.5rem;padding:.375rem .625rem;border-radius:8px;border:1px solid var(--color-border, rgba(0, 0, 0, .1));background:transparent;color:var(--color-text, #1d1d1f);font-size:.875rem;font-family:inherit;outline:none;transition:border-color .15s ease}.agent-config-form__integration-state[_ngcontent-%COMP%]:focus{border-color:var(--color-primary, #007aff)}.agent-config-form__integration-restriction[_ngcontent-%COMP%]{margin:0 0 0 1.5rem;font-size:.8rem;font-style:italic;color:var(--color-text-secondary, #6e6e73);line-height:1.4}.agent-config-form__integration-builtin-desc[_ngcontent-%COMP%]{margin:0 0 0 1.5rem;font-size:.8rem;color:var(--color-text-secondary);line-height:1.4}.agent-config-form__field-hint[_ngcontent-%COMP%]{margin:.25rem 0 0;font-size:.8rem;color:var(--color-text-secondary);line-height:1.4}.agent-config-form__code[_ngcontent-%COMP%]{font-family:monospace;font-size:.85em;background:var(--color-surface-muted, rgba(0, 0, 0, .06));padding:.1em .3em;border-radius:0}.agent-config-form__sub-agent-list[_ngcontent-%COMP%]{list-style:none;margin:.5rem 0 0;padding:0;display:flex;flex-direction:column;gap:.375rem}.agent-config-form__sub-agent-row[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.375rem}.agent-config-form__sub-agent-input[_ngcontent-%COMP%]{flex:1;min-width:0}.agent-config-form__sub-agent-add[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.375rem;margin-top:.5rem}.agent-config-form__sub-agent-btn[_ngcontent-%COMP%]{flex-shrink:0;width:2rem;height:2rem;padding:0;border-radius:0;border:1px solid var(--color-divider);background:transparent;color:var(--color-text-secondary);font-size:.9rem;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .15s ease,border-color .15s ease,color .15s ease}.agent-config-form__sub-agent-btn[_ngcontent-%COMP%]:hover:not(:disabled){background:var(--color-bg-hover);border-color:var(--color-neutral-500);color:var(--color-text)}.agent-config-form__sub-agent-btn[_ngcontent-%COMP%]:disabled{opacity:.35;cursor:not-allowed}.agent-config-form__sub-agent-btn--add[_ngcontent-%COMP%]{width:2rem;height:2rem;font-size:1.25rem;font-weight:300;border-color:var(--color-accent);color:var(--color-accent)}.agent-config-form__sub-agent-btn--add[_ngcontent-%COMP%]:hover:not(:disabled){background:var(--color-accent);color:#fff}.agent-config-form__sub-agent-btn--danger[_ngcontent-%COMP%]{border:1px solid transparent;color:var(--color-neutral-500)}.agent-config-form__sub-agent-btn--danger[_ngcontent-%COMP%]:hover:not(:disabled){border-color:var(--red);color:var(--red);background:color-mix(in srgb,var(--red) 10%,transparent)}.agent-config-form__toggle-label[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.5rem;cursor:pointer;-webkit-user-select:none;user-select:none}.agent-config-form__toggle-checkbox[_ngcontent-%COMP%]{width:1rem;height:1rem;flex-shrink:0;accent-color:var(--color-accent);cursor:pointer}.agent-config-form__toggle-text[_ngcontent-%COMP%]{font-size:.9rem;font-weight:500;color:var(--color-text)}.agent-config-form__toggle-hint[_ngcontent-%COMP%]{margin:.25rem 0 0 1.5rem;font-size:.8rem;color:var(--color-text-secondary);line-height:1.4}.agent-config-form__actions[_ngcontent-%COMP%]{display:flex;gap:.75rem;padding-top:.5rem}.agent-config-form__btn[_ngcontent-%COMP%]{padding:.6rem 1.25rem;border-radius:0;border:1px solid var(--color-divider);background:transparent;color:var(--color-text);font-size:13px;font-family:var(--font-heading);font-weight:600;cursor:pointer;transition:background .15s ease,border-color .15s ease}.agent-config-form__btn[_ngcontent-%COMP%]:hover:not(:disabled){background:var(--color-bg-hover);border-color:var(--color-neutral-500)}.agent-config-form__btn[_ngcontent-%COMP%]:disabled{opacity:.45;cursor:not-allowed}.agent-config-form__btn--primary[_ngcontent-%COMP%]{background:var(--color-accent);border-color:var(--color-accent);color:#fff}.agent-config-form__btn--primary[_ngcontent-%COMP%]:hover:not(:disabled){background:var(--color-accent-700);border-color:var(--color-accent-700)}"],changeDetection:0})};export{ie as AgentConfigFormComponent};
@@ -0,0 +1 @@
1
+ import{b as a}from"./chunk-KCFDTF3A.js";import"./chunk-6QJAB37Y.js";import"./chunk-C2LUO2MP.js";import"./chunk-6XX7GME4.js";import"./chunk-VNO76B3S.js";import"./chunk-E6T6QLQT.js";import"./chunk-SPV5SLNS.js";import"./chunk-VMYKE4ZC.js";import"./chunk-AS2L77JV.js";import"./chunk-7OGOI6WM.js";import"./chunk-G5RWG2GK.js";import"./chunk-CHEXA6RY.js";export{a as NamespaceMembersComponent};
@@ -1 +1 @@
1
- import{j as I}from"./chunk-UQTA3ACH.js";import{a as k,c as w}from"./chunk-6XX7GME4.js";import{a as C}from"./chunk-VMYKE4ZC.js";import{F as B,c as D,e as h,g as F,h as V,i as A,l as c,n as z,s as L,w as R}from"./chunk-7OGOI6WM.js";import{Bb as O,Db as u,Fb as g,Ka as r,Tb as o,Ub as S,Vb as E,Wa as N,a as v,b as x,ca as p,ga as _,ha as b,lb as M,ma as y,mb as P,rb as i,sb as n,ta as f,tb as t,ub as m}from"./chunk-CHEXA6RY.js";function T(l,a){l&1&&(n(0,"p",5),o(1,"Loading\u2026"),t())}function $(l,a){if(l&1){let e=O();n(0,"form",7),u("ngSubmit",function(){_(e);let d=g();return b(d.submit())}),n(1,"div",8)(2,"label",9),o(3,"Name "),n(4,"span",10),o(5,"*"),t()(),m(6,"input",11),t(),n(7,"div",8)(8,"label",12),o(9,"Description"),t(),m(10,"textarea",13),t(),n(11,"div",8)(12,"label",14),o(13,"External ID"),t(),m(14,"input",15),t(),n(15,"div",8)(16,"label",16),o(17,"Default agent"),t(),m(18,"input",17),t(),n(19,"div",8)(20,"label",18),o(21,"Config path"),t(),m(22,"input",19),t(),n(23,"div",20)(24,"button",21),o(25),t(),n(26,"button",22),u("click",function(){_(e);let d=g();return b(d.cancel())}),o(27,"Cancel"),t()()()}if(l&2){let e=g();i("formGroup",e.form),r(6),i("formControl",e.nameControl),r(4),i("formControl",e.descriptionControl),r(4),i("formControl",e.externalIdControl),r(4),i("formControl",e.defaultAgentNameControl),r(4),i("formControl",e.configPathControl),r(2),i("disabled",e.nameControl.invalid||e.isSubmitting()),r(),E(" ",e.isEditMode()?"Save changes":"Create"," ")}}var G=class l{route=p(k);router=p(w);namespaceController=p(I);destroyRef=p(y);form=new A({name:new c("",{nonNullable:!0,validators:[h.required,h.minLength(1)]}),description:new c("",{nonNullable:!0}),configPath:new c("",{nonNullable:!0}),externalId:new c("",{nonNullable:!0}),defaultAgentName:new c("",{nonNullable:!0})});get nameControl(){return this.form.controls.name}get descriptionControl(){return this.form.controls.description}get configPathControl(){return this.form.controls.configPath}get externalIdControl(){return this.form.controls.externalId}get defaultAgentNameControl(){return this.form.controls.defaultAgentName}isEditMode=f(!1);isSubmitting=f(!1);isLoading=f(!1);existingNamespace=null;ngOnInit(){let a=this.route.snapshot.paramMap.get("namespaceId");a&&(this.isEditMode.set(!0),this.loadNamespace(a))}loadNamespace(a){this.isLoading.set(!0),this.namespaceController.getByIdNamespace(a).pipe(C(this.destroyRef)).subscribe({next:e=>{this.existingNamespace=e,this.nameControl.setValue(e.name),this.descriptionControl.setValue(e.description??""),this.configPathControl.setValue(e.configPath??""),this.externalIdControl.setValue(e.externalId??""),this.defaultAgentNameControl.setValue(e.defaultAgentName??""),this.isLoading.set(!1)},error:()=>{this.isLoading.set(!1),this.navigateBack()}})}submit(){if(this.nameControl.invalid||this.isSubmitting())return;this.isSubmitting.set(!0);let a=x(v({},this.existingNamespace),{name:this.nameControl.value.trim(),description:this.descriptionControl.value.trim()||void 0,configPath:this.configPathControl.value.trim()||void 0,externalId:this.externalIdControl.value.trim()||void 0,defaultAgentName:this.defaultAgentNameControl.value.trim()||void 0});(this.isEditMode()?this.namespaceController.updateNamespace(this.existingNamespace.id??"",a):this.namespaceController.createNamespace(a)).pipe(C(this.destroyRef)).subscribe({next:()=>this.navigateBack(),error:()=>this.isSubmitting.set(!1)})}cancel(){this.navigateBack()}navigateBack(){this.router.navigate(["/agentos/namespaces"])}static \u0275fac=function(e){return new(e||l)};static \u0275cmp=N({type:l,selectors:[["agentos-namespace-form"]],decls:10,vars:2,consts:[[1,"namespace-form"],[1,"namespace-form__header"],["type","button","title","Back to namespaces",1,"namespace-form__back",3,"click"],[1,"namespace-form__back-icon"],[1,"namespace-form__title"],[1,"namespace-form__loading"],[1,"namespace-form__form",3,"formGroup"],[1,"namespace-form__form",3,"ngSubmit","formGroup"],[1,"namespace-form__field"],["for","ns-name",1,"namespace-form__label"],["aria-hidden","true"],["id","ns-name","type","text","placeholder","Namespace name","autocomplete","off",1,"namespace-form__input",3,"formControl"],["for","ns-description",1,"namespace-form__label"],["id","ns-description","rows","4","placeholder","Optional description",1,"namespace-form__textarea",3,"formControl"],["for","ns-external-id",1,"namespace-form__label"],["id","ns-external-id","type","text","placeholder","Optional federation ID from an external system","autocomplete","off",1,"namespace-form__input",3,"formControl"],["for","ns-default-agent",1,"namespace-form__label"],["id","ns-default-agent","type","text","placeholder","Logical name of the default agent (e.g. coday)","autocomplete","off",1,"namespace-form__input",3,"formControl"],["for","ns-config-path",1,"namespace-form__label"],["id","ns-config-path","type","text","placeholder","Optional path to base configuration directory","autocomplete","off",1,"namespace-form__input",3,"formControl"],[1,"namespace-form__actions"],["type","submit",1,"namespace-form__btn","namespace-form__btn--primary",3,"disabled"],["type","button",1,"namespace-form__btn",3,"click"]],template:function(e,s){e&1&&(n(0,"div",0)(1,"header",1)(2,"button",2),u("click",function(){return s.cancel()}),n(3,"span",3),o(4,"\u2190"),t(),o(5," Namespaces "),t(),n(6,"h1",4),o(7),t()(),M(8,T,2,0,"p",5)(9,$,28,8,"form",6),t()),e&2&&(r(7),S(s.isEditMode()?"Edit namespace":"New namespace"),r(),P(s.isLoading()?8:9))},dependencies:[B,z,D,F,V,L,R],styles:[".namespace-form[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:2rem;max-width:480px;margin:0 auto;padding:2rem 1rem}.namespace-form__header[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.5rem}.namespace-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)}.namespace-form__back[_ngcontent-%COMP%]:hover{text-decoration:underline}.namespace-form__back-icon[_ngcontent-%COMP%]{font-size:1rem;line-height:1}.namespace-form__title[_ngcontent-%COMP%]{margin:0;font-size:1.5rem;font-weight:700;color:var(--color-text);letter-spacing:-.02em}.namespace-form__loading[_ngcontent-%COMP%]{color:var(--color-text-secondary);font-size:.9rem;margin:0}.namespace-form__form[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:1.25rem}.namespace-form__field[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.375rem}.namespace-form__label[_ngcontent-%COMP%]{font-size:.875rem;font-weight:500;color:var(--color-text)}.namespace-form__input[_ngcontent-%COMP%], .namespace-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}.namespace-form__input[_ngcontent-%COMP%]:focus, .namespace-form__textarea[_ngcontent-%COMP%]:focus{border-color:var(--color-accent)}.namespace-form__input[_ngcontent-%COMP%]::placeholder, .namespace-form__textarea[_ngcontent-%COMP%]::placeholder{color:var(--color-neutral-500)}.namespace-form__textarea[_ngcontent-%COMP%]{resize:vertical;min-height:96px;line-height:1.5}.namespace-form__actions[_ngcontent-%COMP%]{display:flex;gap:.75rem;padding-top:.5rem}.namespace-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}.namespace-form__btn[_ngcontent-%COMP%]:hover:not(:disabled){background:var(--color-bg-hover);border-color:var(--color-neutral-500)}.namespace-form__btn[_ngcontent-%COMP%]:disabled{opacity:.45;cursor:not-allowed}.namespace-form__btn--primary[_ngcontent-%COMP%]{background:var(--color-accent);border-color:var(--color-accent);color:#fff}.namespace-form__btn--primary[_ngcontent-%COMP%]:hover:not(:disabled){background:var(--color-accent-700);border-color:var(--color-accent-700)}"],changeDetection:0})};export{G as NamespaceFormComponent};
1
+ import{j as I}from"./chunk-C2LUO2MP.js";import{a as k,c as w}from"./chunk-6XX7GME4.js";import{a as C}from"./chunk-VMYKE4ZC.js";import{F as B,c as D,e as h,g as F,h as V,i as A,l as c,n as z,s as L,w as R}from"./chunk-7OGOI6WM.js";import{Bb as O,Db as u,Fb as g,Ka as r,Tb as o,Ub as S,Vb as E,Wa as N,a as v,b as x,ca as p,ga as _,ha as b,lb as M,ma as y,mb as P,rb as i,sb as n,ta as f,tb as t,ub as m}from"./chunk-CHEXA6RY.js";function T(l,a){l&1&&(n(0,"p",5),o(1,"Loading\u2026"),t())}function $(l,a){if(l&1){let e=O();n(0,"form",7),u("ngSubmit",function(){_(e);let d=g();return b(d.submit())}),n(1,"div",8)(2,"label",9),o(3,"Name "),n(4,"span",10),o(5,"*"),t()(),m(6,"input",11),t(),n(7,"div",8)(8,"label",12),o(9,"Description"),t(),m(10,"textarea",13),t(),n(11,"div",8)(12,"label",14),o(13,"External ID"),t(),m(14,"input",15),t(),n(15,"div",8)(16,"label",16),o(17,"Default agent"),t(),m(18,"input",17),t(),n(19,"div",8)(20,"label",18),o(21,"Config path"),t(),m(22,"input",19),t(),n(23,"div",20)(24,"button",21),o(25),t(),n(26,"button",22),u("click",function(){_(e);let d=g();return b(d.cancel())}),o(27,"Cancel"),t()()()}if(l&2){let e=g();i("formGroup",e.form),r(6),i("formControl",e.nameControl),r(4),i("formControl",e.descriptionControl),r(4),i("formControl",e.externalIdControl),r(4),i("formControl",e.defaultAgentNameControl),r(4),i("formControl",e.configPathControl),r(2),i("disabled",e.nameControl.invalid||e.isSubmitting()),r(),E(" ",e.isEditMode()?"Save changes":"Create"," ")}}var G=class l{route=p(k);router=p(w);namespaceController=p(I);destroyRef=p(y);form=new A({name:new c("",{nonNullable:!0,validators:[h.required,h.minLength(1)]}),description:new c("",{nonNullable:!0}),configPath:new c("",{nonNullable:!0}),externalId:new c("",{nonNullable:!0}),defaultAgentName:new c("",{nonNullable:!0})});get nameControl(){return this.form.controls.name}get descriptionControl(){return this.form.controls.description}get configPathControl(){return this.form.controls.configPath}get externalIdControl(){return this.form.controls.externalId}get defaultAgentNameControl(){return this.form.controls.defaultAgentName}isEditMode=f(!1);isSubmitting=f(!1);isLoading=f(!1);existingNamespace=null;ngOnInit(){let a=this.route.snapshot.paramMap.get("namespaceId");a&&(this.isEditMode.set(!0),this.loadNamespace(a))}loadNamespace(a){this.isLoading.set(!0),this.namespaceController.getByIdNamespace(a).pipe(C(this.destroyRef)).subscribe({next:e=>{this.existingNamespace=e,this.nameControl.setValue(e.name),this.descriptionControl.setValue(e.description??""),this.configPathControl.setValue(e.configPath??""),this.externalIdControl.setValue(e.externalId??""),this.defaultAgentNameControl.setValue(e.defaultAgentName??""),this.isLoading.set(!1)},error:()=>{this.isLoading.set(!1),this.navigateBack()}})}submit(){if(this.nameControl.invalid||this.isSubmitting())return;this.isSubmitting.set(!0);let a=x(v({},this.existingNamespace),{name:this.nameControl.value.trim(),description:this.descriptionControl.value.trim()||void 0,configPath:this.configPathControl.value.trim()||void 0,externalId:this.externalIdControl.value.trim()||void 0,defaultAgentName:this.defaultAgentNameControl.value.trim()||void 0});(this.isEditMode()?this.namespaceController.updateNamespace(this.existingNamespace.id??"",a):this.namespaceController.createNamespace(a)).pipe(C(this.destroyRef)).subscribe({next:()=>this.navigateBack(),error:()=>this.isSubmitting.set(!1)})}cancel(){this.navigateBack()}navigateBack(){this.router.navigate(["/agentos/namespaces"])}static \u0275fac=function(e){return new(e||l)};static \u0275cmp=N({type:l,selectors:[["agentos-namespace-form"]],decls:10,vars:2,consts:[[1,"namespace-form"],[1,"namespace-form__header"],["type","button","title","Back to namespaces",1,"namespace-form__back",3,"click"],[1,"namespace-form__back-icon"],[1,"namespace-form__title"],[1,"namespace-form__loading"],[1,"namespace-form__form",3,"formGroup"],[1,"namespace-form__form",3,"ngSubmit","formGroup"],[1,"namespace-form__field"],["for","ns-name",1,"namespace-form__label"],["aria-hidden","true"],["id","ns-name","type","text","placeholder","Namespace name","autocomplete","off",1,"namespace-form__input",3,"formControl"],["for","ns-description",1,"namespace-form__label"],["id","ns-description","rows","4","placeholder","Optional description",1,"namespace-form__textarea",3,"formControl"],["for","ns-external-id",1,"namespace-form__label"],["id","ns-external-id","type","text","placeholder","Optional federation ID from an external system","autocomplete","off",1,"namespace-form__input",3,"formControl"],["for","ns-default-agent",1,"namespace-form__label"],["id","ns-default-agent","type","text","placeholder","Logical name of the default agent (e.g. coday)","autocomplete","off",1,"namespace-form__input",3,"formControl"],["for","ns-config-path",1,"namespace-form__label"],["id","ns-config-path","type","text","placeholder","Optional path to base configuration directory","autocomplete","off",1,"namespace-form__input",3,"formControl"],[1,"namespace-form__actions"],["type","submit",1,"namespace-form__btn","namespace-form__btn--primary",3,"disabled"],["type","button",1,"namespace-form__btn",3,"click"]],template:function(e,s){e&1&&(n(0,"div",0)(1,"header",1)(2,"button",2),u("click",function(){return s.cancel()}),n(3,"span",3),o(4,"\u2190"),t(),o(5," Namespaces "),t(),n(6,"h1",4),o(7),t()(),M(8,T,2,0,"p",5)(9,$,28,8,"form",6),t()),e&2&&(r(7),S(s.isEditMode()?"Edit namespace":"New namespace"),r(),P(s.isLoading()?8:9))},dependencies:[B,z,D,F,V,L,R],styles:[".namespace-form[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:2rem;max-width:480px;margin:0 auto;padding:2rem 1rem}.namespace-form__header[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.5rem}.namespace-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)}.namespace-form__back[_ngcontent-%COMP%]:hover{text-decoration:underline}.namespace-form__back-icon[_ngcontent-%COMP%]{font-size:1rem;line-height:1}.namespace-form__title[_ngcontent-%COMP%]{margin:0;font-size:1.5rem;font-weight:700;color:var(--color-text);letter-spacing:-.02em}.namespace-form__loading[_ngcontent-%COMP%]{color:var(--color-text-secondary);font-size:.9rem;margin:0}.namespace-form__form[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:1.25rem}.namespace-form__field[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.375rem}.namespace-form__label[_ngcontent-%COMP%]{font-size:.875rem;font-weight:500;color:var(--color-text)}.namespace-form__input[_ngcontent-%COMP%], .namespace-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}.namespace-form__input[_ngcontent-%COMP%]:focus, .namespace-form__textarea[_ngcontent-%COMP%]:focus{border-color:var(--color-accent)}.namespace-form__input[_ngcontent-%COMP%]::placeholder, .namespace-form__textarea[_ngcontent-%COMP%]::placeholder{color:var(--color-neutral-500)}.namespace-form__textarea[_ngcontent-%COMP%]{resize:vertical;min-height:96px;line-height:1.5}.namespace-form__actions[_ngcontent-%COMP%]{display:flex;gap:.75rem;padding-top:.5rem}.namespace-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}.namespace-form__btn[_ngcontent-%COMP%]:hover:not(:disabled){background:var(--color-bg-hover);border-color:var(--color-neutral-500)}.namespace-form__btn[_ngcontent-%COMP%]:disabled{opacity:.45;cursor:not-allowed}.namespace-form__btn--primary[_ngcontent-%COMP%]{background:var(--color-accent);border-color:var(--color-accent);color:#fff}.namespace-form__btn--primary[_ngcontent-%COMP%]:hover:not(:disabled){background:var(--color-accent-700);border-color:var(--color-accent-700)}"],changeDetection:0})};export{G as NamespaceFormComponent};
@@ -1 +1 @@
1
- import{a as S}from"./chunk-TIO4RSPY.js";import{c as $,d as k}from"./chunk-UQTA3ACH.js";import{c as B}from"./chunk-6XX7GME4.js";import{s as E,z as D}from"./chunk-VNO76B3S.js";import"./chunk-E6T6QLQT.js";import"./chunk-SPV5SLNS.js";import{a as f}from"./chunk-VMYKE4ZC.js";import"./chunk-AS2L77JV.js";import"./chunk-7OGOI6WM.js";import"./chunk-G5RWG2GK.js";import{Bb as P,Db as l,Fb as d,Lc as q,Pb as I,S as y,Wa as C,ab as A,ca as n,cc as w,fc as R,ga as m,gc as x,ha as p,i as u,jc as T,lb as b,ma as g,mb as h,rb as c,sb as a,t as M,tb as _,u as v}from"./chunk-CHEXA6RY.js";var N=()=>[];function V(r,t){if(r&1){let o=P();a(0,"agentos-ai-model-item",4),l("editRequested",function(e){m(o);let s=d(2);return p(s.onEdit(e))})("deleteRequested",function(e){m(o);let s=d(2);return p(s.deleteModel(e))}),_()}r&2&&c("model",t)}function F(r,t){if(r&1&&b(0,V,1,1,"agentos-ai-model-item",3),r&2){let o,i=t.$implicit,e=d();h((o=e.resolveModel(i.id))?0:-1,o)}}var L=class r{router=n(B);destroyRef=n(g);aiModelController=n($);aiProviderController=n(k);refresh$=new u(void 0);data$=this.refresh$.pipe(y(()=>v([this.aiModelController.listPlatformLevelAiModel(),this.aiProviderController.listAiProvider("none")])));modelItems$=this.data$.pipe(M(([t,o])=>{let i=new Map(o.map(e=>[e.id??"",e.name]));return t.map(e=>({id:e.id??"",name:e.alias??e.apiModelName,description:e.apiModelName,groupKey:e.aiProviderId,groupLabel:i.get(e.aiProviderId)??e.aiProviderId}))}));modelsById=new Map;constructor(){this.data$.pipe(f(this.destroyRef)).subscribe(([t])=>{this.modelsById=new Map(t.map(o=>[o.id??"",o]))})}goBack(){this.router.navigate(["/agentos","admin"])}openCreateForm(){this.router.navigate(["/agentos","admin","ai-models","new"])}deleteModel(t){this.aiModelController.deleteAiModel(t.id??"").pipe(f(this.destroyRef)).subscribe(()=>this.refresh$.next())}onEdit(t){t.id&&this.router.navigate(["/agentos","admin","ai-models",t.id,"edit"])}resolveModel(t){return this.modelsById.get(t)??null}static \u0275fac=function(o){return new(o||r)};static \u0275cmp=C({type:r,selectors:[["agentos-platform-ai-models"]],decls:5,vars:6,consts:[["aiModelItemTpl",""],["title","Platform AI Models","emptyMessage","No platform AI models defined yet. Add one above.","cardMinWidth","400px",3,"createRequested","items","showCreate","itemTemplate"],["toolbar-start","","icon","arrow_back","title","Back",3,"action"],[3,"model"],[3,"editRequested","deleteRequested","model"]],template:function(o,i){if(o&1&&(a(0,"ds-entity-list",1),R(1,"async"),l("createRequested",function(){return i.openCreateForm()}),a(2,"ds-icon-button",2),l("action",function(){return i.goBack()}),_()(),A(3,F,1,1,"ng-template",null,0,T)),o&2){let e=I(4);c("items",x(1,3,i.modelItems$)??w(5,N))("showCreate",!0)("itemTemplate",e)}},dependencies:[D,S,E,q],styles:[".platform-ai-models__back[_ngcontent-%COMP%]{background:none;border:none;cursor:pointer;font-family:inherit;font-size:.875rem;color:var(--color-text-secondary, #6e6e73);padding:.25rem .5rem;border-radius:4px;transition:color .15s ease}.platform-ai-models__back[_ngcontent-%COMP%]:hover{color:var(--color-primary, #007aff)}"],changeDetection:0})};export{L as PlatformAiModelsComponent};
1
+ import{a as S}from"./chunk-TIO4RSPY.js";import{c as $,d as k}from"./chunk-C2LUO2MP.js";import{c as B}from"./chunk-6XX7GME4.js";import{s as E,z as D}from"./chunk-VNO76B3S.js";import"./chunk-E6T6QLQT.js";import"./chunk-SPV5SLNS.js";import{a as f}from"./chunk-VMYKE4ZC.js";import"./chunk-AS2L77JV.js";import"./chunk-7OGOI6WM.js";import"./chunk-G5RWG2GK.js";import{Bb as P,Db as l,Fb as d,Lc as q,Pb as I,S as y,Wa as C,ab as A,ca as n,cc as w,fc as R,ga as m,gc as x,ha as p,i as u,jc as T,lb as b,ma as g,mb as h,rb as c,sb as a,t as M,tb as _,u as v}from"./chunk-CHEXA6RY.js";var N=()=>[];function V(r,t){if(r&1){let o=P();a(0,"agentos-ai-model-item",4),l("editRequested",function(e){m(o);let s=d(2);return p(s.onEdit(e))})("deleteRequested",function(e){m(o);let s=d(2);return p(s.deleteModel(e))}),_()}r&2&&c("model",t)}function F(r,t){if(r&1&&b(0,V,1,1,"agentos-ai-model-item",3),r&2){let o,i=t.$implicit,e=d();h((o=e.resolveModel(i.id))?0:-1,o)}}var L=class r{router=n(B);destroyRef=n(g);aiModelController=n($);aiProviderController=n(k);refresh$=new u(void 0);data$=this.refresh$.pipe(y(()=>v([this.aiModelController.listPlatformLevelAiModel(),this.aiProviderController.listAiProvider("none")])));modelItems$=this.data$.pipe(M(([t,o])=>{let i=new Map(o.map(e=>[e.id??"",e.name]));return t.map(e=>({id:e.id??"",name:e.alias??e.apiModelName,description:e.apiModelName,groupKey:e.aiProviderId,groupLabel:i.get(e.aiProviderId)??e.aiProviderId}))}));modelsById=new Map;constructor(){this.data$.pipe(f(this.destroyRef)).subscribe(([t])=>{this.modelsById=new Map(t.map(o=>[o.id??"",o]))})}goBack(){this.router.navigate(["/agentos","admin"])}openCreateForm(){this.router.navigate(["/agentos","admin","ai-models","new"])}deleteModel(t){this.aiModelController.deleteAiModel(t.id??"").pipe(f(this.destroyRef)).subscribe(()=>this.refresh$.next())}onEdit(t){t.id&&this.router.navigate(["/agentos","admin","ai-models",t.id,"edit"])}resolveModel(t){return this.modelsById.get(t)??null}static \u0275fac=function(o){return new(o||r)};static \u0275cmp=C({type:r,selectors:[["agentos-platform-ai-models"]],decls:5,vars:6,consts:[["aiModelItemTpl",""],["title","Platform AI Models","emptyMessage","No platform AI models defined yet. Add one above.","cardMinWidth","400px",3,"createRequested","items","showCreate","itemTemplate"],["toolbar-start","","icon","arrow_back","title","Back",3,"action"],[3,"model"],[3,"editRequested","deleteRequested","model"]],template:function(o,i){if(o&1&&(a(0,"ds-entity-list",1),R(1,"async"),l("createRequested",function(){return i.openCreateForm()}),a(2,"ds-icon-button",2),l("action",function(){return i.goBack()}),_()(),A(3,F,1,1,"ng-template",null,0,T)),o&2){let e=I(4);c("items",x(1,3,i.modelItems$)??w(5,N))("showCreate",!0)("itemTemplate",e)}},dependencies:[D,S,E,q],styles:[".platform-ai-models__back[_ngcontent-%COMP%]{background:none;border:none;cursor:pointer;font-family:inherit;font-size:.875rem;color:var(--color-text-secondary, #6e6e73);padding:.25rem .5rem;border-radius:4px;transition:color .15s ease}.platform-ai-models__back[_ngcontent-%COMP%]:hover{color:var(--color-primary, #007aff)}"],changeDetection:0})};export{L as PlatformAiModelsComponent};
@@ -1 +1 @@
1
- import{a as ne}from"./chunk-QXBTTCPM.js";import{a as ie}from"./chunk-KJJPVCIH.js";import"./chunk-NWFFZ2FW.js";import"./chunk-VZOBZ3DD.js";import{q as L}from"./chunk-UQTA3ACH.js";import{a as K,c as G}from"./chunk-6XX7GME4.js";import{a as A,c as B}from"./chunk-VMYKE4ZC.js";import{F as oe,c as z,e as _,g as $,h as q,i as S,l as p,n as j,p as H,r as J,s as Q,t as W,u as X,v as Y,w as Z,x as ee,y as re,z as te}from"./chunk-7OGOI6WM.js";import{Bb as k,Db as f,Fb as m,Ka as l,Tb as i,Ub as P,Vb as U,Wa as I,ca as v,ga as g,ha as h,kb as V,lb as M,ma as N,mb as O,nb as R,ob as D,pb as C,qb as x,rb as d,sb as o,ta as y,tb as t,ua as T,ub as u}from"./chunk-CHEXA6RY.js";function de(n,r){n&1&&(o(0,"p",5),i(1,"Loading\u2026"),t())}function pe(n,r){if(n&1&&(o(0,"label",30),u(1,"input",31),o(2,"span"),i(3),t()()),n&2){let e=r.$implicit,a=m(3);l(),d("formControl",a.scopeControl)("value",e.value)("disabled",e.value==="namespace"&&!a.isAdmin()),l(2),P(e.label)}}function me(n,r){if(n&1&&(o(0,"fieldset",8)(1,"legend",24),i(2,"Port\xE9e de la configuration"),t(),C(3,pe,4,4,"label",30,V().trackByScope,!0),t()),n&2){let e=m(2);d("disabled",e.isEditMode()),l(3),x(e.scopeOptions)}}function ce(n,r){if(n&1&&(o(0,"option",13),i(1),t()),n&2){let e=r.$implicit;d("value",e),l(),P(e)}}function ue(n,r){if(n&1){let e=k();o(0,"div",26),u(1,"input",32)(2,"input",33),o(3,"button",34),f("click",function(){let s=g(e).$index,c=m(2);return h(c.removeHeader(s))}),i(4," \xD7 "),t()()}if(n&2){let e=r.$index;d("formGroupName",e)}}function ve(n,r){if(n&1){let e=k();o(0,"form",7),f("ngSubmit",function(){g(e);let s=m();return h(s.submit())}),M(1,me,5,1,"fieldset",8),o(2,"div",9)(3,"label",10),i(4,"API type "),o(5,"span",11),i(6,"*"),t()(),o(7,"select",12),C(8,ce,2,2,"option",13,D),t()(),o(10,"div",9)(11,"label",14),i(12,"Name "),o(13,"span",11),i(14,"*"),t()(),u(15,"input",15),t(),o(16,"div",9)(17,"label",16),i(18,"Description"),t(),u(19,"input",17),t(),o(20,"div",9)(21,"label",18),i(22,"Base URL"),t(),u(23,"input",19),t(),o(24,"div",9)(25,"label",20),i(26,"API key"),t(),u(27,"input",21),t(),o(28,"div",22)(29,"div",23)(30,"span",24),i(31,"Custom headers"),t(),o(32,"button",25),f("click",function(){g(e);let s=m();return h(s.addHeader())}),i(33,"+ Add header"),t()(),C(34,ue,5,1,"div",26,R),t(),o(36,"div",27)(37,"button",28),i(38),t(),o(39,"button",29),f("click",function(){g(e);let s=m();return h(s.cancel())}),i(40,"Cancel"),t()()()}if(n&2){let e=m();d("formGroup",e.form),l(),O(e.isPlatformMode?-1:1),l(6),d("formControl",e.apiTypeControl),l(),x(e.apiTypeOptions),l(7),d("formControl",e.nameControl),l(4),d("formControl",e.descriptionControl),l(4),d("formControl",e.baseUrlControl),l(4),d("formControl",e.apiKeyControl),l(),d("formArrayName","headers"),l(6),x(e.headersArray.controls),l(3),d("disabled",e.form.invalid||e.isSubmitting()),l(),U(" ",e.isEditMode()?"Save changes":"Create"," ")}}var fe=new Set(["namespace","userOnNs","userGlobal"]),E=Object.freeze({platform:"Configuration de niveau plateforme",namespace:"Configuration du namespace",userOnNs:"Pour moi sur ce namespace",userGlobal:"Pour moi globalement"}),ae=class n{route=v(K);router=v(G);destroyRef=v(N);state=v(ne);namespaceRole=v(ie);namespaceId=this.route.snapshot.params.namespaceId;isPlatformMode=this.namespaceId===void 0;isAdmin=this.isPlatformMode?y(!0):B(this.namespaceRole.isAdminOfNamespace$(this.namespaceId),{initialValue:!1});apiTypeOptions=Object.values(L);scopeOptions=[{value:"namespace",label:E.namespace},{value:"userOnNs",label:E.userOnNs},{value:"userGlobal",label:E.userGlobal}];form=new S({name:new p("",{nonNullable:!0,validators:[_.required,_.minLength(1)]}),description:new p(null),apiType:new p("OpenAI",{nonNullable:!0,validators:[_.required]}),baseUrl:new p("",{nonNullable:!0}),apiKey:new p("",{nonNullable:!0}),scope:new p("namespace",{nonNullable:!0}),headers:new J([],{validators:[]})});get nameControl(){return this.form.controls.name}get descriptionControl(){return this.form.controls.description}get apiTypeControl(){return this.form.controls.apiType}get baseUrlControl(){return this.form.controls.baseUrl}get apiKeyControl(){return this.form.controls.apiKey}get scopeControl(){return this.form.controls.scope}get headersArray(){return this.form.controls.headers}addHeader(){this.headersArray.push(new S({key:new p("",{nonNullable:!0,validators:[_.required]}),value:new p("",{nonNullable:!0})}))}removeHeader(r){this.headersArray.removeAt(r)}isEditMode=y(!1);isSubmitting=y(!1);isLoading=y(!1);existingConfig=null;initialApiKey="";constructor(){this.isPlatformMode||T(()=>{this.isAdmin()||this.isEditMode()||this.scopeControl.value==="namespace"&&this.scopeControl.setValue("userOnNs")})}ngOnInit(){this.namespaceId&&this.state.setNamespace(this.namespaceId);let r=this.route.snapshot.paramMap,e=this.route.snapshot.queryParamMap,a=r.get("aiProviderId"),s=this.isPlatformMode?"namespace":this.parseScope(e.get("scope"));if(a){this.isEditMode.set(!0),this.scopeControl.disable(),this.apiTypeControl.disable(),this.loadConfig(a);return}this.scopeControl.setValue(s);let c=e.get("template");c&&this.hydrateFromTemplate(c)}parseScope(r){return r&&fe.has(r)?r:"namespace"}deriveScopeFromConfig(r){return!r.userId?"namespace":r.namespaceId?"userOnNs":"userGlobal"}loadConfig(r){this.isLoading.set(!0),this.state.getById(r).pipe(A(this.destroyRef)).subscribe({next:e=>{this.existingConfig=e,this.scopeControl.setValue(this.deriveScopeFromConfig(e)),this.applyConfigToForm(e),this.isLoading.set(!1)},error:()=>{this.isLoading.set(!1),console.warn(`[AiProviderForm] Could not load provider '${r}' \u2014 navigating back`),this.navigateBack()}})}hydrateFromTemplate(r){this.isLoading.set(!0),this.state.getById(r).pipe(A(this.destroyRef)).subscribe({next:e=>{this.nameControl.setValue(e.name),this.descriptionControl.setValue(e.description??null),this.apiTypeControl.setValue(e.apiType),this.baseUrlControl.setValue(e.baseUrl??""),this.apiKeyControl.setValue(""),this.initialApiKey="",this.apiKeyControl.markAsTouched(),this.isLoading.set(!1),this.router.navigate([],{relativeTo:this.route,queryParams:{template:null,templateScope:null},queryParamsHandling:"merge",replaceUrl:!0})},error:e=>{console.warn(`[AiProviderForm] Could not hydrate from template ${r}:`,e),this.isLoading.set(!1),this.router.navigate([],{relativeTo:this.route,queryParams:{template:null,templateScope:null},queryParamsHandling:"merge",replaceUrl:!0})}})}applyConfigToForm(r){this.nameControl.setValue(r.name),this.descriptionControl.setValue(r.description??null),this.apiTypeControl.setValue(r.apiType),this.baseUrlControl.setValue(r.baseUrl??"");let e=r.apiKey??"";this.apiKeyControl.setValue(e),this.initialApiKey=e,this.headersArray.clear();for(let[a,s]of Object.entries(r.headers??{}))this.headersArray.push(new S({key:new p(a,{nonNullable:!0,validators:[_.required]}),value:new p(s,{nonNullable:!0})}))}submit(){if(this.form.invalid||this.isSubmitting())return;if(this.isEditMode()&&!this.existingConfig?.id){this.navigateBack();return}this.isSubmitting.set(!0);let r=this.descriptionControl.value?.trim(),e=this.baseUrlControl.value.trim(),a=this.apiKeyControl.value,s=this.isEditMode()&&a===this.initialApiKey?null:a,c=this.headersArray.controls.filter(b=>b.controls.key.value.trim()).map(b=>[b.controls.key.value.trim(),b.controls.value.value]),le=c.length>0?Object.fromEntries(c):null,w={name:this.nameControl.value.trim(),apiType:this.apiTypeControl.value,description:r||null,baseUrl:e||null,apiKey:s,headers:le},F=this.form.getRawValue().scope,se=this.isPlatformMode?null:this.namespaceId??null;(this.isEditMode()&&this.existingConfig?.id?this.state.update(this.existingConfig.id,w,F,this.existingConfig):this.state.create(w,F,se)).pipe(A(this.destroyRef)).subscribe({next:()=>this.navigateBack(),error:()=>this.isSubmitting.set(!1)})}cancel(){this.navigateBack()}navigateBack(){this.isPlatformMode?this.router.navigate(["/agentos","admin","ai-providers"]):this.router.navigate(["/agentos",this.namespaceId,"ai-providers"])}trackByScope(r,e){return e.value}static \u0275fac=function(e){return new(e||n)};static \u0275cmp=I({type:n,selectors:[["agentos-ai-provider-form"]],decls:10,vars:2,consts:[[1,"ai-provider-form"],[1,"ai-provider-form__header"],["type","button","title","Back to AI providers",1,"ai-provider-form__back",3,"click"],[1,"ai-provider-form__back-icon"],[1,"ai-provider-form__title"],[1,"ai-provider-form__loading"],[1,"ai-provider-form__form",3,"formGroup"],[1,"ai-provider-form__form",3,"ngSubmit","formGroup"],[1,"ai-provider-form__scope",3,"disabled"],[1,"ai-provider-form__field"],["for","llm-api-type",1,"ai-provider-form__label"],["aria-hidden","true"],["id","llm-api-type",1,"ai-provider-form__select",3,"formControl"],[3,"value"],["for","llm-name",1,"ai-provider-form__label"],["id","llm-name","type","text","placeholder","e.g. OpenAI prod","autocomplete","off",1,"ai-provider-form__input",3,"formControl"],["for","llm-description",1,"ai-provider-form__label"],["id","llm-description","type","text","placeholder","Optional \u2014 short description of this provider","autocomplete","off",1,"ai-provider-form__input",3,"formControl"],["for","llm-base-url",1,"ai-provider-form__label"],["id","llm-base-url","type","url","placeholder","Optional \u2014 leave empty for default endpoint","autocomplete","off",1,"ai-provider-form__input",3,"formControl"],["for","llm-api-key",1,"ai-provider-form__label"],["id","llm-api-key","type","password","placeholder","sk-\u2026","autocomplete","new-password",1,"ai-provider-form__input","ai-provider-form__input--secret",3,"formControl"],[1,"ai-provider-form__headers",3,"formArrayName"],[1,"ai-provider-form__headers-title"],[1,"ai-provider-form__label"],["type","button",1,"ai-provider-form__headers-add",3,"click"],[1,"ai-provider-form__header-row",3,"formGroupName"],[1,"ai-provider-form__actions"],["type","submit",1,"ai-provider-form__btn","ai-provider-form__btn--primary",3,"disabled"],["type","button",1,"ai-provider-form__btn",3,"click"],[1,"ai-provider-form__scope-option"],["type","radio",3,"formControl","value","disabled"],["type","text","placeholder","Header name","formControlName","key","autocomplete","off",1,"ai-provider-form__input"],["type","text","placeholder","Value","formControlName","value","autocomplete","off",1,"ai-provider-form__input"],["type","button","title","Remove header","aria-label","Remove header",1,"ai-provider-form__header-remove",3,"click"]],template:function(e,a){e&1&&(o(0,"div",0)(1,"header",1)(2,"button",2),f("click",function(){return a.cancel()}),o(3,"span",3),i(4,"\u2190"),t(),i(5," AI Providers "),t(),o(6,"h1",4),i(7),t()(),M(8,de,2,0,"p",5)(9,ve,41,10,"form",6),t()),e&2&&(l(7),P(a.isEditMode()?"Edit AI provider":"New AI provider"),l(),O(a.isLoading()?8:9))},dependencies:[oe,j,re,te,z,ee,H,$,q,Q,Z,Y,W,X],styles:[".ai-provider-form[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:2rem;max-width:480px;margin:0 auto;padding:2rem 1rem}.ai-provider-form__scope[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.4rem;border:1px solid var(--color-divider);border-radius:0;padding:.75rem 1rem;margin:0}.ai-provider-form__scope[disabled][_ngcontent-%COMP%]{opacity:.6}.ai-provider-form__scope-option[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.5rem;font-size:.85rem;color:var(--color-text);cursor:pointer}.ai-provider-form__header[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.5rem}.ai-provider-form__back[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:.375rem;background:none;border:none;padding:0;cursor:pointer;font-size:.875rem;color:var(--color-accent)}.ai-provider-form__back[_ngcontent-%COMP%]:hover{text-decoration:underline}.ai-provider-form__back-icon[_ngcontent-%COMP%]{font-size:1rem;line-height:1}.ai-provider-form__title[_ngcontent-%COMP%]{margin:0;font-size:1.5rem;font-weight:700;color:var(--color-text);letter-spacing:-.02em}.ai-provider-form__loading[_ngcontent-%COMP%]{color:var(--color-text-secondary);font-size:.9rem;margin:0}.ai-provider-form__form[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:1.25rem}.ai-provider-form__field[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.375rem}.ai-provider-form__label[_ngcontent-%COMP%]{font-size:.875rem;font-weight:500;color:var(--color-text)}.ai-provider-form__input[_ngcontent-%COMP%], .ai-provider-form__select[_ngcontent-%COMP%]{width:100%;padding:.625rem .875rem;border-radius:0;border:1px solid var(--color-divider);background:var(--color-surface);color:var(--color-text);font-size:.9375rem;font-family:inherit;outline:none;box-sizing:border-box;transition:border-color .15s ease}.ai-provider-form__input[_ngcontent-%COMP%]:focus, .ai-provider-form__select[_ngcontent-%COMP%]:focus{border-color:var(--color-accent)}.ai-provider-form__input[_ngcontent-%COMP%]::placeholder, .ai-provider-form__select[_ngcontent-%COMP%]::placeholder{color:var(--color-neutral-500)}.ai-provider-form__input--secret[_ngcontent-%COMP%]{font-family:monospace;letter-spacing:.05em}.ai-provider-form__headers[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.5rem}.ai-provider-form__headers-title[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between}.ai-provider-form__headers-add[_ngcontent-%COMP%]{background:none;border:none;padding:0;cursor:pointer;font-size:.8125rem;color:var(--color-accent)}.ai-provider-form__headers-add[_ngcontent-%COMP%]:hover{text-decoration:underline}.ai-provider-form__header-row[_ngcontent-%COMP%]{display:grid;grid-template-columns:1fr 1fr auto;gap:.5rem;align-items:center}.ai-provider-form__header-remove[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:center;width:2rem;height:2rem;background:none;border:1px solid transparent;border-radius:0;cursor:pointer;font-size:1rem;color:var(--color-neutral-500);transition:background .15s ease,color .15s ease,border-color .15s ease;flex-shrink:0}.ai-provider-form__header-remove[_ngcontent-%COMP%]:hover{color:var(--red);background:color-mix(in srgb,var(--red) 10%,transparent);border-color:var(--red)}.ai-provider-form__actions[_ngcontent-%COMP%]{display:flex;gap:.75rem;padding-top:.5rem}.ai-provider-form__btn[_ngcontent-%COMP%]{padding:.6rem 1.25rem;border-radius:0;border:1px solid var(--color-divider);background:transparent;color:var(--color-text);font-size:13px;font-family:var(--font-heading);font-weight:600;cursor:pointer;transition:background .15s ease,border-color .15s ease}.ai-provider-form__btn[_ngcontent-%COMP%]:hover:not(:disabled){background:var(--color-bg-hover);border-color:var(--color-neutral-500)}.ai-provider-form__btn[_ngcontent-%COMP%]:disabled{opacity:.45;cursor:not-allowed}.ai-provider-form__btn--primary[_ngcontent-%COMP%]{background:var(--color-accent);border-color:var(--color-accent);color:#fff}.ai-provider-form__btn--primary[_ngcontent-%COMP%]:hover:not(:disabled){background:var(--color-accent-700);border-color:var(--color-accent-700)}"],changeDetection:0})};export{ae as AiProviderFormComponent};
1
+ import{a as ne}from"./chunk-FCEVFEIX.js";import{a as ie}from"./chunk-ZJLDJUUY.js";import"./chunk-NWFFZ2FW.js";import"./chunk-6QJAB37Y.js";import{q as L}from"./chunk-C2LUO2MP.js";import{a as K,c as G}from"./chunk-6XX7GME4.js";import{a as A,c as B}from"./chunk-VMYKE4ZC.js";import{F as oe,c as z,e as _,g as $,h as q,i as S,l as p,n as j,p as H,r as J,s as Q,t as W,u as X,v as Y,w as Z,x as ee,y as re,z as te}from"./chunk-7OGOI6WM.js";import{Bb as k,Db as f,Fb as m,Ka as l,Tb as i,Ub as P,Vb as U,Wa as I,ca as v,ga as g,ha as h,kb as V,lb as M,ma as N,mb as O,nb as R,ob as D,pb as C,qb as x,rb as d,sb as o,ta as y,tb as t,ua as T,ub as u}from"./chunk-CHEXA6RY.js";function de(n,r){n&1&&(o(0,"p",5),i(1,"Loading\u2026"),t())}function pe(n,r){if(n&1&&(o(0,"label",30),u(1,"input",31),o(2,"span"),i(3),t()()),n&2){let e=r.$implicit,a=m(3);l(),d("formControl",a.scopeControl)("value",e.value)("disabled",e.value==="namespace"&&!a.isAdmin()),l(2),P(e.label)}}function me(n,r){if(n&1&&(o(0,"fieldset",8)(1,"legend",24),i(2,"Port\xE9e de la configuration"),t(),C(3,pe,4,4,"label",30,V().trackByScope,!0),t()),n&2){let e=m(2);d("disabled",e.isEditMode()),l(3),x(e.scopeOptions)}}function ce(n,r){if(n&1&&(o(0,"option",13),i(1),t()),n&2){let e=r.$implicit;d("value",e),l(),P(e)}}function ue(n,r){if(n&1){let e=k();o(0,"div",26),u(1,"input",32)(2,"input",33),o(3,"button",34),f("click",function(){let s=g(e).$index,c=m(2);return h(c.removeHeader(s))}),i(4," \xD7 "),t()()}if(n&2){let e=r.$index;d("formGroupName",e)}}function ve(n,r){if(n&1){let e=k();o(0,"form",7),f("ngSubmit",function(){g(e);let s=m();return h(s.submit())}),M(1,me,5,1,"fieldset",8),o(2,"div",9)(3,"label",10),i(4,"API type "),o(5,"span",11),i(6,"*"),t()(),o(7,"select",12),C(8,ce,2,2,"option",13,D),t()(),o(10,"div",9)(11,"label",14),i(12,"Name "),o(13,"span",11),i(14,"*"),t()(),u(15,"input",15),t(),o(16,"div",9)(17,"label",16),i(18,"Description"),t(),u(19,"input",17),t(),o(20,"div",9)(21,"label",18),i(22,"Base URL"),t(),u(23,"input",19),t(),o(24,"div",9)(25,"label",20),i(26,"API key"),t(),u(27,"input",21),t(),o(28,"div",22)(29,"div",23)(30,"span",24),i(31,"Custom headers"),t(),o(32,"button",25),f("click",function(){g(e);let s=m();return h(s.addHeader())}),i(33,"+ Add header"),t()(),C(34,ue,5,1,"div",26,R),t(),o(36,"div",27)(37,"button",28),i(38),t(),o(39,"button",29),f("click",function(){g(e);let s=m();return h(s.cancel())}),i(40,"Cancel"),t()()()}if(n&2){let e=m();d("formGroup",e.form),l(),O(e.isPlatformMode?-1:1),l(6),d("formControl",e.apiTypeControl),l(),x(e.apiTypeOptions),l(7),d("formControl",e.nameControl),l(4),d("formControl",e.descriptionControl),l(4),d("formControl",e.baseUrlControl),l(4),d("formControl",e.apiKeyControl),l(),d("formArrayName","headers"),l(6),x(e.headersArray.controls),l(3),d("disabled",e.form.invalid||e.isSubmitting()),l(),U(" ",e.isEditMode()?"Save changes":"Create"," ")}}var fe=new Set(["namespace","userOnNs","userGlobal"]),E=Object.freeze({platform:"Configuration de niveau plateforme",namespace:"Configuration du namespace",userOnNs:"Pour moi sur ce namespace",userGlobal:"Pour moi globalement"}),ae=class n{route=v(K);router=v(G);destroyRef=v(N);state=v(ne);namespaceRole=v(ie);namespaceId=this.route.snapshot.params.namespaceId;isPlatformMode=this.namespaceId===void 0;isAdmin=this.isPlatformMode?y(!0):B(this.namespaceRole.isAdminOfNamespace$(this.namespaceId),{initialValue:!1});apiTypeOptions=Object.values(L);scopeOptions=[{value:"namespace",label:E.namespace},{value:"userOnNs",label:E.userOnNs},{value:"userGlobal",label:E.userGlobal}];form=new S({name:new p("",{nonNullable:!0,validators:[_.required,_.minLength(1)]}),description:new p(null),apiType:new p("OpenAI",{nonNullable:!0,validators:[_.required]}),baseUrl:new p("",{nonNullable:!0}),apiKey:new p("",{nonNullable:!0}),scope:new p("namespace",{nonNullable:!0}),headers:new J([],{validators:[]})});get nameControl(){return this.form.controls.name}get descriptionControl(){return this.form.controls.description}get apiTypeControl(){return this.form.controls.apiType}get baseUrlControl(){return this.form.controls.baseUrl}get apiKeyControl(){return this.form.controls.apiKey}get scopeControl(){return this.form.controls.scope}get headersArray(){return this.form.controls.headers}addHeader(){this.headersArray.push(new S({key:new p("",{nonNullable:!0,validators:[_.required]}),value:new p("",{nonNullable:!0})}))}removeHeader(r){this.headersArray.removeAt(r)}isEditMode=y(!1);isSubmitting=y(!1);isLoading=y(!1);existingConfig=null;initialApiKey="";constructor(){this.isPlatformMode||T(()=>{this.isAdmin()||this.isEditMode()||this.scopeControl.value==="namespace"&&this.scopeControl.setValue("userOnNs")})}ngOnInit(){this.namespaceId&&this.state.setNamespace(this.namespaceId);let r=this.route.snapshot.paramMap,e=this.route.snapshot.queryParamMap,a=r.get("aiProviderId"),s=this.isPlatformMode?"namespace":this.parseScope(e.get("scope"));if(a){this.isEditMode.set(!0),this.scopeControl.disable(),this.apiTypeControl.disable(),this.loadConfig(a);return}this.scopeControl.setValue(s);let c=e.get("template");c&&this.hydrateFromTemplate(c)}parseScope(r){return r&&fe.has(r)?r:"namespace"}deriveScopeFromConfig(r){return!r.userId?"namespace":r.namespaceId?"userOnNs":"userGlobal"}loadConfig(r){this.isLoading.set(!0),this.state.getById(r).pipe(A(this.destroyRef)).subscribe({next:e=>{this.existingConfig=e,this.scopeControl.setValue(this.deriveScopeFromConfig(e)),this.applyConfigToForm(e),this.isLoading.set(!1)},error:()=>{this.isLoading.set(!1),console.warn(`[AiProviderForm] Could not load provider '${r}' \u2014 navigating back`),this.navigateBack()}})}hydrateFromTemplate(r){this.isLoading.set(!0),this.state.getById(r).pipe(A(this.destroyRef)).subscribe({next:e=>{this.nameControl.setValue(e.name),this.descriptionControl.setValue(e.description??null),this.apiTypeControl.setValue(e.apiType),this.baseUrlControl.setValue(e.baseUrl??""),this.apiKeyControl.setValue(""),this.initialApiKey="",this.apiKeyControl.markAsTouched(),this.isLoading.set(!1),this.router.navigate([],{relativeTo:this.route,queryParams:{template:null,templateScope:null},queryParamsHandling:"merge",replaceUrl:!0})},error:e=>{console.warn(`[AiProviderForm] Could not hydrate from template ${r}:`,e),this.isLoading.set(!1),this.router.navigate([],{relativeTo:this.route,queryParams:{template:null,templateScope:null},queryParamsHandling:"merge",replaceUrl:!0})}})}applyConfigToForm(r){this.nameControl.setValue(r.name),this.descriptionControl.setValue(r.description??null),this.apiTypeControl.setValue(r.apiType),this.baseUrlControl.setValue(r.baseUrl??"");let e=r.apiKey??"";this.apiKeyControl.setValue(e),this.initialApiKey=e,this.headersArray.clear();for(let[a,s]of Object.entries(r.headers??{}))this.headersArray.push(new S({key:new p(a,{nonNullable:!0,validators:[_.required]}),value:new p(s,{nonNullable:!0})}))}submit(){if(this.form.invalid||this.isSubmitting())return;if(this.isEditMode()&&!this.existingConfig?.id){this.navigateBack();return}this.isSubmitting.set(!0);let r=this.descriptionControl.value?.trim(),e=this.baseUrlControl.value.trim(),a=this.apiKeyControl.value,s=this.isEditMode()&&a===this.initialApiKey?null:a,c=this.headersArray.controls.filter(b=>b.controls.key.value.trim()).map(b=>[b.controls.key.value.trim(),b.controls.value.value]),le=c.length>0?Object.fromEntries(c):null,w={name:this.nameControl.value.trim(),apiType:this.apiTypeControl.value,description:r||null,baseUrl:e||null,apiKey:s,headers:le},F=this.form.getRawValue().scope,se=this.isPlatformMode?null:this.namespaceId??null;(this.isEditMode()&&this.existingConfig?.id?this.state.update(this.existingConfig.id,w,F,this.existingConfig):this.state.create(w,F,se)).pipe(A(this.destroyRef)).subscribe({next:()=>this.navigateBack(),error:()=>this.isSubmitting.set(!1)})}cancel(){this.navigateBack()}navigateBack(){this.isPlatformMode?this.router.navigate(["/agentos","admin","ai-providers"]):this.router.navigate(["/agentos",this.namespaceId,"ai-providers"])}trackByScope(r,e){return e.value}static \u0275fac=function(e){return new(e||n)};static \u0275cmp=I({type:n,selectors:[["agentos-ai-provider-form"]],decls:10,vars:2,consts:[[1,"ai-provider-form"],[1,"ai-provider-form__header"],["type","button","title","Back to AI providers",1,"ai-provider-form__back",3,"click"],[1,"ai-provider-form__back-icon"],[1,"ai-provider-form__title"],[1,"ai-provider-form__loading"],[1,"ai-provider-form__form",3,"formGroup"],[1,"ai-provider-form__form",3,"ngSubmit","formGroup"],[1,"ai-provider-form__scope",3,"disabled"],[1,"ai-provider-form__field"],["for","llm-api-type",1,"ai-provider-form__label"],["aria-hidden","true"],["id","llm-api-type",1,"ai-provider-form__select",3,"formControl"],[3,"value"],["for","llm-name",1,"ai-provider-form__label"],["id","llm-name","type","text","placeholder","e.g. OpenAI prod","autocomplete","off",1,"ai-provider-form__input",3,"formControl"],["for","llm-description",1,"ai-provider-form__label"],["id","llm-description","type","text","placeholder","Optional \u2014 short description of this provider","autocomplete","off",1,"ai-provider-form__input",3,"formControl"],["for","llm-base-url",1,"ai-provider-form__label"],["id","llm-base-url","type","url","placeholder","Optional \u2014 leave empty for default endpoint","autocomplete","off",1,"ai-provider-form__input",3,"formControl"],["for","llm-api-key",1,"ai-provider-form__label"],["id","llm-api-key","type","password","placeholder","sk-\u2026","autocomplete","new-password",1,"ai-provider-form__input","ai-provider-form__input--secret",3,"formControl"],[1,"ai-provider-form__headers",3,"formArrayName"],[1,"ai-provider-form__headers-title"],[1,"ai-provider-form__label"],["type","button",1,"ai-provider-form__headers-add",3,"click"],[1,"ai-provider-form__header-row",3,"formGroupName"],[1,"ai-provider-form__actions"],["type","submit",1,"ai-provider-form__btn","ai-provider-form__btn--primary",3,"disabled"],["type","button",1,"ai-provider-form__btn",3,"click"],[1,"ai-provider-form__scope-option"],["type","radio",3,"formControl","value","disabled"],["type","text","placeholder","Header name","formControlName","key","autocomplete","off",1,"ai-provider-form__input"],["type","text","placeholder","Value","formControlName","value","autocomplete","off",1,"ai-provider-form__input"],["type","button","title","Remove header","aria-label","Remove header",1,"ai-provider-form__header-remove",3,"click"]],template:function(e,a){e&1&&(o(0,"div",0)(1,"header",1)(2,"button",2),f("click",function(){return a.cancel()}),o(3,"span",3),i(4,"\u2190"),t(),i(5," AI Providers "),t(),o(6,"h1",4),i(7),t()(),M(8,de,2,0,"p",5)(9,ve,41,10,"form",6),t()),e&2&&(l(7),P(a.isEditMode()?"Edit AI provider":"New AI provider"),l(),O(a.isLoading()?8:9))},dependencies:[oe,j,re,te,z,ee,H,$,q,Q,Z,Y,W,X],styles:[".ai-provider-form[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:2rem;max-width:480px;margin:0 auto;padding:2rem 1rem}.ai-provider-form__scope[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.4rem;border:1px solid var(--color-divider);border-radius:0;padding:.75rem 1rem;margin:0}.ai-provider-form__scope[disabled][_ngcontent-%COMP%]{opacity:.6}.ai-provider-form__scope-option[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.5rem;font-size:.85rem;color:var(--color-text);cursor:pointer}.ai-provider-form__header[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.5rem}.ai-provider-form__back[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:.375rem;background:none;border:none;padding:0;cursor:pointer;font-size:.875rem;color:var(--color-accent)}.ai-provider-form__back[_ngcontent-%COMP%]:hover{text-decoration:underline}.ai-provider-form__back-icon[_ngcontent-%COMP%]{font-size:1rem;line-height:1}.ai-provider-form__title[_ngcontent-%COMP%]{margin:0;font-size:1.5rem;font-weight:700;color:var(--color-text);letter-spacing:-.02em}.ai-provider-form__loading[_ngcontent-%COMP%]{color:var(--color-text-secondary);font-size:.9rem;margin:0}.ai-provider-form__form[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:1.25rem}.ai-provider-form__field[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.375rem}.ai-provider-form__label[_ngcontent-%COMP%]{font-size:.875rem;font-weight:500;color:var(--color-text)}.ai-provider-form__input[_ngcontent-%COMP%], .ai-provider-form__select[_ngcontent-%COMP%]{width:100%;padding:.625rem .875rem;border-radius:0;border:1px solid var(--color-divider);background:var(--color-surface);color:var(--color-text);font-size:.9375rem;font-family:inherit;outline:none;box-sizing:border-box;transition:border-color .15s ease}.ai-provider-form__input[_ngcontent-%COMP%]:focus, .ai-provider-form__select[_ngcontent-%COMP%]:focus{border-color:var(--color-accent)}.ai-provider-form__input[_ngcontent-%COMP%]::placeholder, .ai-provider-form__select[_ngcontent-%COMP%]::placeholder{color:var(--color-neutral-500)}.ai-provider-form__input--secret[_ngcontent-%COMP%]{font-family:monospace;letter-spacing:.05em}.ai-provider-form__headers[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.5rem}.ai-provider-form__headers-title[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between}.ai-provider-form__headers-add[_ngcontent-%COMP%]{background:none;border:none;padding:0;cursor:pointer;font-size:.8125rem;color:var(--color-accent)}.ai-provider-form__headers-add[_ngcontent-%COMP%]:hover{text-decoration:underline}.ai-provider-form__header-row[_ngcontent-%COMP%]{display:grid;grid-template-columns:1fr 1fr auto;gap:.5rem;align-items:center}.ai-provider-form__header-remove[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:center;width:2rem;height:2rem;background:none;border:1px solid transparent;border-radius:0;cursor:pointer;font-size:1rem;color:var(--color-neutral-500);transition:background .15s ease,color .15s ease,border-color .15s ease;flex-shrink:0}.ai-provider-form__header-remove[_ngcontent-%COMP%]:hover{color:var(--red);background:color-mix(in srgb,var(--red) 10%,transparent);border-color:var(--red)}.ai-provider-form__actions[_ngcontent-%COMP%]{display:flex;gap:.75rem;padding-top:.5rem}.ai-provider-form__btn[_ngcontent-%COMP%]{padding:.6rem 1.25rem;border-radius:0;border:1px solid var(--color-divider);background:transparent;color:var(--color-text);font-size:13px;font-family:var(--font-heading);font-weight:600;cursor:pointer;transition:background .15s ease,border-color .15s ease}.ai-provider-form__btn[_ngcontent-%COMP%]:hover:not(:disabled){background:var(--color-bg-hover);border-color:var(--color-neutral-500)}.ai-provider-form__btn[_ngcontent-%COMP%]:disabled{opacity:.45;cursor:not-allowed}.ai-provider-form__btn--primary[_ngcontent-%COMP%]{background:var(--color-accent);border-color:var(--color-accent);color:#fff}.ai-provider-form__btn--primary[_ngcontent-%COMP%]:hover:not(:disabled){background:var(--color-accent-700);border-color:var(--color-accent-700)}"],changeDetection:0})};export{ae as AiProviderFormComponent};
@@ -1 +1 @@
1
- import{a as G}from"./chunk-AIC4U2MU.js";import{a as K}from"./chunk-QXBTTCPM.js";import{a as B}from"./chunk-WAGXU26A.js";import{a as V}from"./chunk-KJJPVCIH.js";import"./chunk-NWFFZ2FW.js";import"./chunk-VZOBZ3DD.js";import"./chunk-UQTA3ACH.js";import{a as N,c as D}from"./chunk-6XX7GME4.js";import{s as $,z as L}from"./chunk-VNO76B3S.js";import"./chunk-E6T6QLQT.js";import"./chunk-SPV5SLNS.js";import{a as d}from"./chunk-VMYKE4ZC.js";import"./chunk-AS2L77JV.js";import"./chunk-7OGOI6WM.js";import"./chunk-G5RWG2GK.js";import{Bb as b,Db as u,Fb as s,Ka as A,Lc as q,Pb as S,S as g,Tb as x,Ub as E,Wa as I,ab as P,ca as n,cc as w,fc as O,ga as l,gc as M,ha as c,jc as T,lb as C,m as f,ma as y,mb as R,rb as v,sb as p,t as _,ta as h,tb as m}from"./chunk-CHEXA6RY.js";var z=()=>[];function W(r,e){if(r&1&&(p(0,"p",3),x(1),m()),r&2){let t=s().$implicit;A(),E(t.name)}}function U(r,e){if(r&1){let t=b();p(0,"agentos-ai-provider-item",5),u("editRequested",function(){let o=l(t),a=s(2);return c(a.onEdit(o))})("deleteRequested",function(){let o=l(t),a=s(2);return c(a.onDelete(o))})("duplicateRequested",function(){let o=l(t),a=s(2);return c(a.onDuplicate(o))}),m()}if(r&2){let t=e,i=s(2);v("config",t.config)("scope",t.scope)("readOnly",t.scope==="platform"||t.scope==="namespace"&&!i.isAdmin())}}function X(r,e){if(r&1&&C(0,W,2,1,"p",3)(1,U,1,3,"agentos-ai-provider-item",4),r&2){let t,i=e.$implicit,o=s();R(o.isEmptyPlaceholder(i.id)?0:(t=o.resolve(i.id))?1:-1,t)}}var k=Object.freeze({platform:"Platform (read-only)",namespace:"AI Providers du namespace",userOnNs:"Mes overrides sur ce namespace",userGlobal:"Mes overrides globaux"}),F="__empty__",j=class r{route=n(N);router=n(D);destroyRef=n(y);state=n(K);namespaceRole=n(V);namespaceId=this.route.snapshot.params.namespaceId;isAdmin=h(!1);listItems$=this.state.vm$.pipe(_(e=>this.toListItems(e)));resolved=new Map;ngOnInit(){this.route.paramMap.pipe(d(this.destroyRef)).subscribe(e=>{let t=e.get("namespaceId")??"";t&&t!==this.namespaceId&&(this.namespaceId=t),this.state.setNamespace(t)}),this.route.paramMap.pipe(_(e=>e.get("namespaceId")??""),g(e=>e?this.namespaceRole.isAdminOfNamespace$(e):f(!1)),d(this.destroyRef)).subscribe(e=>this.isAdmin.set(e)),this.state.vm$.pipe(d(this.destroyRef)).subscribe(e=>{let t=new Map;e.platform.forEach(i=>{i.id&&t.set(this.itemKey("platform",i.id),{config:i,scope:"platform"})}),e.namespace.forEach(i=>{i.id&&t.set(this.itemKey("namespace",i.id),{config:i,scope:"namespace"})}),e.userOnNs.forEach(i=>{i.id&&t.set(this.itemKey("userOnNs",i.id),{config:i,scope:"userOnNs"})}),e.userGlobal.forEach(i=>{i.id&&t.set(this.itemKey("userGlobal",i.id),{config:i,scope:"userGlobal"})}),this.resolved=t})}isEmptyPlaceholder(e){return e.startsWith(F)}resolve(e){return this.resolved.get(e)??null}itemKey(e,t){return`${e}:${t}`}goBack(){this.router.navigate(["/agentos","namespaces"])}openCreateForm(){this.router.navigate(["/agentos",this.namespaceId,"ai-providers","new"],{queryParams:{scope:G(this.isAdmin())}})}onEdit(e){let t=e.config.id;t&&this.router.navigate(["/agentos",this.namespaceId,"ai-providers",t,"edit"],{queryParams:{scope:e.scope}})}onDelete(e){let t=e.config.id;t&&this.state.delete(t,e.scope).pipe(d(this.destroyRef)).subscribe({error:i=>{console.error(`[AiProvidersAllScopes] Delete failed for ${e.scope}:${t}:`,i)}})}onDuplicate(e){if(!e.config.id)return;let t=e.scope==="namespace"&&!this.isAdmin()?"userOnNs":e.scope;this.router.navigate(["/agentos",this.namespaceId,"ai-providers","new"],{queryParams:{scope:t,template:e.config.id,templateScope:e.scope}})}toListItems(e){let t=[];return t.push(...this.sectionItems("platform",e.platform)),t.push(...this.sectionItems("namespace",e.namespace)),t.push(...this.sectionItems("userOnNs",e.userOnNs)),t.push(...this.sectionItems("userGlobal",e.userGlobal)),t}sectionItems(e,t){return t.length===0?[{id:`${F}${e}`,name:"Aucun AI Provider",groupKey:e,groupLabel:k[e]}]:t.filter(i=>!!i.id).map(i=>({id:this.itemKey(e,i.id),name:i.name,description:i.apiType,groupKey:e,groupLabel:k[e]}))}static \u0275fac=function(t){return new(t||r)};static \u0275cmp=I({type:r,selectors:[["agentos-ai-providers-all-scopes"]],decls:5,vars:6,consts:[["aiProviderItemTpl",""],["title","AI Providers","emptyMessage","No AI providers available.","cardMinWidth","400px",3,"createRequested","items","showCreate","itemTemplate"],["toolbar-start","","icon","arrow_back","title","Back",3,"action"],[1,"ai-providers-all-scopes__empty"],[3,"config","scope","readOnly"],[3,"editRequested","deleteRequested","duplicateRequested","config","scope","readOnly"]],template:function(t,i){if(t&1&&(p(0,"ds-entity-list",1),O(1,"async"),u("createRequested",function(){return i.openCreateForm()}),p(2,"ds-icon-button",2),u("action",function(){return i.goBack()}),m()(),P(3,X,2,1,"ng-template",null,0,T)),t&2){let o=S(4);v("items",M(1,3,i.listItems$)??w(5,z))("showCreate",!0)("itemTemplate",o)}},dependencies:[L,B,$,q],styles:[".ai-providers-all-scopes__empty[_ngcontent-%COMP%]{font-size:.85rem;color:var(--color-text-secondary);padding:.5rem .25rem;margin:0;font-style:italic}"],changeDetection:0})};export{j as AiProvidersAllScopesComponent};
1
+ import{a as G}from"./chunk-AIC4U2MU.js";import{a as K}from"./chunk-FCEVFEIX.js";import{a as B}from"./chunk-WAGXU26A.js";import{a as V}from"./chunk-ZJLDJUUY.js";import"./chunk-NWFFZ2FW.js";import"./chunk-6QJAB37Y.js";import"./chunk-C2LUO2MP.js";import{a as N,c as D}from"./chunk-6XX7GME4.js";import{s as $,z as L}from"./chunk-VNO76B3S.js";import"./chunk-E6T6QLQT.js";import"./chunk-SPV5SLNS.js";import{a as d}from"./chunk-VMYKE4ZC.js";import"./chunk-AS2L77JV.js";import"./chunk-7OGOI6WM.js";import"./chunk-G5RWG2GK.js";import{Bb as b,Db as u,Fb as s,Ka as A,Lc as q,Pb as S,S as g,Tb as x,Ub as E,Wa as I,ab as P,ca as n,cc as w,fc as O,ga as l,gc as M,ha as c,jc as T,lb as C,m as f,ma as y,mb as R,rb as v,sb as p,t as _,ta as h,tb as m}from"./chunk-CHEXA6RY.js";var z=()=>[];function W(r,e){if(r&1&&(p(0,"p",3),x(1),m()),r&2){let t=s().$implicit;A(),E(t.name)}}function U(r,e){if(r&1){let t=b();p(0,"agentos-ai-provider-item",5),u("editRequested",function(){let o=l(t),a=s(2);return c(a.onEdit(o))})("deleteRequested",function(){let o=l(t),a=s(2);return c(a.onDelete(o))})("duplicateRequested",function(){let o=l(t),a=s(2);return c(a.onDuplicate(o))}),m()}if(r&2){let t=e,i=s(2);v("config",t.config)("scope",t.scope)("readOnly",t.scope==="platform"||t.scope==="namespace"&&!i.isAdmin())}}function X(r,e){if(r&1&&C(0,W,2,1,"p",3)(1,U,1,3,"agentos-ai-provider-item",4),r&2){let t,i=e.$implicit,o=s();R(o.isEmptyPlaceholder(i.id)?0:(t=o.resolve(i.id))?1:-1,t)}}var k=Object.freeze({platform:"Platform (read-only)",namespace:"AI Providers du namespace",userOnNs:"Mes overrides sur ce namespace",userGlobal:"Mes overrides globaux"}),F="__empty__",j=class r{route=n(N);router=n(D);destroyRef=n(y);state=n(K);namespaceRole=n(V);namespaceId=this.route.snapshot.params.namespaceId;isAdmin=h(!1);listItems$=this.state.vm$.pipe(_(e=>this.toListItems(e)));resolved=new Map;ngOnInit(){this.route.paramMap.pipe(d(this.destroyRef)).subscribe(e=>{let t=e.get("namespaceId")??"";t&&t!==this.namespaceId&&(this.namespaceId=t),this.state.setNamespace(t)}),this.route.paramMap.pipe(_(e=>e.get("namespaceId")??""),g(e=>e?this.namespaceRole.isAdminOfNamespace$(e):f(!1)),d(this.destroyRef)).subscribe(e=>this.isAdmin.set(e)),this.state.vm$.pipe(d(this.destroyRef)).subscribe(e=>{let t=new Map;e.platform.forEach(i=>{i.id&&t.set(this.itemKey("platform",i.id),{config:i,scope:"platform"})}),e.namespace.forEach(i=>{i.id&&t.set(this.itemKey("namespace",i.id),{config:i,scope:"namespace"})}),e.userOnNs.forEach(i=>{i.id&&t.set(this.itemKey("userOnNs",i.id),{config:i,scope:"userOnNs"})}),e.userGlobal.forEach(i=>{i.id&&t.set(this.itemKey("userGlobal",i.id),{config:i,scope:"userGlobal"})}),this.resolved=t})}isEmptyPlaceholder(e){return e.startsWith(F)}resolve(e){return this.resolved.get(e)??null}itemKey(e,t){return`${e}:${t}`}goBack(){this.router.navigate(["/agentos","namespaces"])}openCreateForm(){this.router.navigate(["/agentos",this.namespaceId,"ai-providers","new"],{queryParams:{scope:G(this.isAdmin())}})}onEdit(e){let t=e.config.id;t&&this.router.navigate(["/agentos",this.namespaceId,"ai-providers",t,"edit"],{queryParams:{scope:e.scope}})}onDelete(e){let t=e.config.id;t&&this.state.delete(t,e.scope).pipe(d(this.destroyRef)).subscribe({error:i=>{console.error(`[AiProvidersAllScopes] Delete failed for ${e.scope}:${t}:`,i)}})}onDuplicate(e){if(!e.config.id)return;let t=e.scope==="namespace"&&!this.isAdmin()?"userOnNs":e.scope;this.router.navigate(["/agentos",this.namespaceId,"ai-providers","new"],{queryParams:{scope:t,template:e.config.id,templateScope:e.scope}})}toListItems(e){let t=[];return t.push(...this.sectionItems("platform",e.platform)),t.push(...this.sectionItems("namespace",e.namespace)),t.push(...this.sectionItems("userOnNs",e.userOnNs)),t.push(...this.sectionItems("userGlobal",e.userGlobal)),t}sectionItems(e,t){return t.length===0?[{id:`${F}${e}`,name:"Aucun AI Provider",groupKey:e,groupLabel:k[e]}]:t.filter(i=>!!i.id).map(i=>({id:this.itemKey(e,i.id),name:i.name,description:i.apiType,groupKey:e,groupLabel:k[e]}))}static \u0275fac=function(t){return new(t||r)};static \u0275cmp=I({type:r,selectors:[["agentos-ai-providers-all-scopes"]],decls:5,vars:6,consts:[["aiProviderItemTpl",""],["title","AI Providers","emptyMessage","No AI providers available.","cardMinWidth","400px",3,"createRequested","items","showCreate","itemTemplate"],["toolbar-start","","icon","arrow_back","title","Back",3,"action"],[1,"ai-providers-all-scopes__empty"],[3,"config","scope","readOnly"],[3,"editRequested","deleteRequested","duplicateRequested","config","scope","readOnly"]],template:function(t,i){if(t&1&&(p(0,"ds-entity-list",1),O(1,"async"),u("createRequested",function(){return i.openCreateForm()}),p(2,"ds-icon-button",2),u("action",function(){return i.goBack()}),m()(),P(3,X,2,1,"ng-template",null,0,T)),t&2){let o=S(4);v("items",M(1,3,i.listItems$)??w(5,z))("showCreate",!0)("itemTemplate",o)}},dependencies:[L,B,$,q],styles:[".ai-providers-all-scopes__empty[_ngcontent-%COMP%]{font-size:.85rem;color:var(--color-text-secondary);padding:.5rem .25rem;margin:0;font-style:italic}"],changeDetection:0})};export{j as AiProvidersAllScopesComponent};
@@ -1 +1 @@
1
- import{a as J,c as Q}from"./chunk-X73LZ3QV.js";import{a as H}from"./chunk-H6NBS4JE.js";import{j as G,k as V}from"./chunk-UQTA3ACH.js";import{a as q,c as I}from"./chunk-6XX7GME4.js";import{A as W,o as j,s as K,z as $}from"./chunk-VNO76B3S.js";import{a as T,b as F,c as z}from"./chunk-VMYKE4ZC.js";import{Bb as C,D as P,Db as m,Fb as l,Ka as d,Pb as O,Rb as D,S as R,Tb as u,Ub as A,Wa as v,ab as E,ca as c,ga as g,ha as _,jb as N,jc as L,lb as b,m as S,ma as w,mb as f,mc as U,pc as x,qc as h,rb as p,sb as o,t as B,ta as y,tb as r}from"./chunk-CHEXA6RY.js";function ee(s,t){if(s&1&&(o(0,"span",3),u(1),r()),s&2){let e=l();d(),A(e.subtitle)}}var M=class s{user=h.required();editRequested=x();deleteRequested=x();menuItems=[{key:"edit",label:"Edit user",icon:"edit"},{key:"delete",label:"Delete user",icon:"delete",variant:"danger"}];get displayName(){let{firstname:t,lastname:e,email:n}=this.user();return[t,e].filter(Boolean).join(" ")||n||"\u2014"}get subtitle(){return this.user().email??this.user().externalId??""}onMenuAction(t){switch(t){case"edit":this.editRequested.emit(this.user());break;case"delete":confirm(`Delete user "${this.displayName}"?`)&&this.deleteRequested.emit(this.user());break}}static \u0275fac=function(e){return new(e||s)};static \u0275cmp=v({type:s,selectors:[["agentos-user-item"]],inputs:{user:[1,"user"]},outputs:{editRequested:"editRequested",deleteRequested:"deleteRequested"},decls:7,vars:3,consts:[["role","listitem","dsBlueprint","",1,"user-item"],[1,"user-item__body"],[1,"user-item__name"],[1,"user-item__subtitle"],[1,"user-item__actions"],[3,"itemSelected","items"]],template:function(e,n){e&1&&(o(0,"div",0)(1,"div",1)(2,"span",2),u(3),r(),b(4,ee,2,1,"span",3),r(),o(5,"div",4)(6,"ds-kebab-menu",5),m("itemSelected",function(a){return n.onMenuAction(a)}),r()()()),e&2&&(d(3),A(n.displayName),d(),f(n.subtitle?4:-1),d(2),p("items",n.menuItems))},dependencies:[j,W],styles:[".user-item[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.5rem;width:100%;padding:14px 16px;position:relative;border-radius:0;border:1px solid var(--color-divider);background:var(--color-bg);box-shadow:var(--shadow-sm);box-sizing:border-box;overflow:visible;transition:border-color .15s ease}.user-item[_ngcontent-%COMP%]:hover{border-color:var(--color-accent)}.user-item__body[_ngcontent-%COMP%]{flex:1;min-width:0;display:flex;flex-direction:column;gap:.25rem}.user-item__name[_ngcontent-%COMP%]{font-size:15px;font-weight:600;color:var(--color-text);line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.user-item__subtitle[_ngcontent-%COMP%]{font-size:13px;color:var(--color-text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.user-item__actions[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.25rem;flex-shrink:0;opacity:0;transition:opacity .15s ease}.user-item[_ngcontent-%COMP%]:hover .user-item__actions[_ngcontent-%COMP%], .user-item[_ngcontent-%COMP%]:focus-within .user-item__actions[_ngcontent-%COMP%]{opacity:1}"],changeDetection:0})};function te(s,t){if(s&1){let e=C();o(0,"agentos-namespace-select",4),m("valueChange",function(i){g(e);let a=l();return _(a.onNamespaceChange(i))}),r()}if(s&2){let e=l();p("namespaces",t)("value",e.selectedNamespaceId())("includeAllOption",!0)}}function ne(s,t){if(s&1){let e=C();o(0,"ds-icon-button",5),m("action",function(){g(e);let i=l();return _(i.goBack())}),r()}}function se(s,t){if(s&1){let e=C();o(0,"agentos-user-item",7),m("editRequested",function(i){g(e);let a=l(2);return _(a.navigateToEdit(i))})("deleteRequested",function(i){g(e);let a=l(2);return _(a.deleteUser(i))}),r()}s&2&&p("user",t)}function ie(s,t){if(s&1&&b(0,se,1,1,"agentos-user-item",6),s&2){let e,n=t.$implicit,i=l();f((e=i.resolveUser(n.id))?0:-1,e)}}var k=class s{router=c(I);destroyRef=c(w);userAdminState=c(H);namespacePermissions=c(V);showBackButton=h(!0);namespaces=h(void 0);selectedNamespaceId=h(null);hideTitle=h(!1);namespaceFilterChange=x();isLoading=this.userAdminState.isLoading;namespaceUserIds=z(F(this.selectedNamespaceId).pipe(R(t=>t?this.namespacePermissions.listNamespaceUsers(t).pipe(B(e=>new Set(e.map(n=>n.id))),P(e=>(console.error("[UserList] Failed to load namespace users",e),S(null)))):S(null))),{initialValue:null});userItems=U(()=>{let t=this.namespaceUserIds();return this.userAdminState.users().filter(e=>t===null||t.has(e.id??"")).map(e=>({id:e.id??"",name:[e.firstname,e.lastname].filter(Boolean).join(" ")||e.email||"\u2014",description:e.email}))});get usersById(){return new Map(this.userAdminState.users().map(t=>[t.id??"",t]))}ngOnInit(){this.userAdminState.loadAll().pipe(T(this.destroyRef)).subscribe()}onNamespaceChange(t){this.namespaceFilterChange.emit(t)}goBack(){this.router.navigate(["/agentos","admin"])}navigateToCreate(){this.router.navigate(["/agentos/admin/users/new"])}navigateToEdit(t){this.router.navigate(["/agentos/admin/users",t.id??"","edit"])}deleteUser(t){this.userAdminState.deleteUser(t.id??"").pipe(T(this.destroyRef)).subscribe()}resolveUser(t){return this.usersById.get(t)??null}static \u0275fac=function(e){return new(e||s)};static \u0275cmp=v({type:s,selectors:[["agentos-user-list"]],inputs:{showBackButton:[1,"showBackButton"],namespaces:[1,"namespaces"],selectedNamespaceId:[1,"selectedNamespaceId"],hideTitle:[1,"hideTitle"]},outputs:{namespaceFilterChange:"namespaceFilterChange"},decls:5,vars:5,consts:[["userItemTpl",""],["title","Users","emptyMessage","No users found.","cardMinWidth","320px",3,"createRequested","hideTitle","items","showCreate","itemTemplate"],["toolbar-start","",3,"namespaces","value","includeAllOption"],["toolbar-start","","icon","arrow_back","title","Back"],["toolbar-start","",3,"valueChange","namespaces","value","includeAllOption"],["toolbar-start","","icon","arrow_back","title","Back",3,"action"],[3,"user"],[3,"editRequested","deleteRequested","user"]],template:function(e,n){if(e&1&&(o(0,"ds-entity-list",1),m("createRequested",function(){return n.navigateToCreate()}),b(1,te,1,3,"agentos-namespace-select",2)(2,ne,1,0,"ds-icon-button",3),r(),E(3,ie,1,1,"ng-template",null,0,L)),e&2){let i,a=O(4);p("hideTitle",n.hideTitle())("items",n.userItems())("showCreate",!0)("itemTemplate",a),d(),f((i=n.namespaces())?1:n.showBackButton()?2:-1,i)}},dependencies:[$,M,K,J],encapsulation:2,changeDetection:0})};function re(s,t){if(s&1){let e=C();o(0,"agentos-user-list",9),m("namespaceFilterChange",function(i){g(e);let a=l();return _(a.onUsersNamespaceChange(i))}),r()}if(s&2){let e=l();p("showBackButton",!1)("hideTitle",!0)("namespaces",e.namespaces())("selectedNamespaceId",e.usersNamespaceFilter())}}function oe(s,t){s&1&&(o(0,"p",10),u(1,"No namespaces yet. Create one before managing groups."),r())}function ae(s,t){if(s&1){let e=C();o(0,"agentos-user-group-list",12),m("namespaceChange",function(i){g(e);let a=l(2);return _(a.onGroupsNamespaceChange(i))}),r()}if(s&2){let e=l(2);p("namespaceId",t)("hideTitle",!0)("namespaces",e.namespaces())("returnTo",e.returnTo())}}function le(s,t){if(s&1&&b(0,oe,2,0,"p",10)(1,ae,1,4,"agentos-user-group-list",11),s&2){let e,n=l();f(n.namespaces().length===0?0:(e=n.groupsNamespaceId())?1:-1,e)}}var Z=class s{router=c(I);route=c(q);destroyRef=c(w);namespaceController=c(G);activeTab=y(this.route.snapshot.queryParamMap.get("tab")==="groups"?"groups":"users");namespaces=y([]);usersNamespaceFilter=y(null);groupsNamespaceId=y(null);returnTo=U(()=>{let t=this.groupsNamespaceId();return t?`/agentos/admin/users?tab=groups&ns=${t}`:"/agentos/admin/users?tab=groups"});constructor(){let t=this.route.snapshot.queryParamMap.get("ns");this.namespaceController.listAllNamespace().pipe(T(this.destroyRef)).subscribe(e=>{let n=e.filter(a=>a.role!=="MEMBER");this.namespaces.set(n);let i=t&&n.some(a=>a.id===t)?t:n[0]?.id??null;this.groupsNamespaceId.set(i)})}setTab(t){this.activeTab.set(t)}onUsersNamespaceChange(t){this.usersNamespaceFilter.set(t)}onGroupsNamespaceChange(t){this.groupsNamespaceId.set(t)}goBack(){this.router.navigate(["/agentos","admin"])}static \u0275fac=function(e){return new(e||s)};static \u0275cmp=v({type:s,selectors:[["agentos-admin-users-groups"]],decls:14,vars:8,consts:[[1,"admin-users-groups"],[1,"admin-users-groups__header"],["type","button",1,"admin-users-groups__back",3,"click"],[1,"admin-users-groups__title"],["role","tablist","aria-label","Users and Groups",1,"admin-users-groups__tabs"],["id","admin-tab-users","type","button","role","tab","aria-controls","admin-users-groups-panel",1,"admin-users-groups__tab",3,"click"],["id","admin-tab-groups","type","button","role","tab","aria-controls","admin-users-groups-panel",1,"admin-users-groups__tab",3,"click"],["id","admin-users-groups-panel","role","tabpanel","tabindex","0",1,"admin-users-groups__panel"],[3,"showBackButton","hideTitle","namespaces","selectedNamespaceId"],[3,"namespaceFilterChange","showBackButton","hideTitle","namespaces","selectedNamespaceId"],[1,"admin-users-groups__empty"],[3,"namespaceId","hideTitle","namespaces","returnTo"],[3,"namespaceChange","namespaceId","hideTitle","namespaces","returnTo"]],template:function(e,n){e&1&&(o(0,"div",0)(1,"header",1)(2,"button",2),m("click",function(){return n.goBack()}),u(3,"\u2190 Admin"),r(),o(4,"h1",3),u(5,"Users & Groups"),r()(),o(6,"div",4)(7,"button",5),m("click",function(){return n.setTab("users")}),u(8," Users "),r(),o(9,"button",6),m("click",function(){return n.setTab("groups")}),u(10," Groups "),r()(),o(11,"div",7),b(12,re,1,4,"agentos-user-list",8)(13,le,2,1),r()()),e&2&&(d(7),D("admin-users-groups__tab--active",n.activeTab()==="users"),N("aria-selected",n.activeTab()==="users"),d(2),D("admin-users-groups__tab--active",n.activeTab()==="groups"),N("aria-selected",n.activeTab()==="groups"),d(2),N("aria-labelledby",n.activeTab()==="users"?"admin-tab-users":"admin-tab-groups"),d(),f(n.activeTab()==="users"?12:13))},dependencies:[k,Q],styles:[".admin-users-groups[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:1rem;padding:1.5rem 1rem 0;--entity-list-toolbar-max-width: 900px}.admin-users-groups__header[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.5rem;max-width:900px;margin:0 auto;width:100%}.admin-users-groups__back[_ngcontent-%COMP%]{align-self:flex-start;background:none;border:none;padding:0;cursor:pointer;font-size:.875rem;color:var(--color-primary, #007aff);font-family:inherit}.admin-users-groups__back[_ngcontent-%COMP%]:hover{text-decoration:underline}.admin-users-groups__title[_ngcontent-%COMP%]{margin:0;font-size:1.5rem;font-weight:600;color:var(--color-text, #1d1d1f);letter-spacing:-.02em}.admin-users-groups__tabs[_ngcontent-%COMP%]{display:inline-flex;gap:.25rem;padding:.25rem;border-radius:10px;background:var(--color-surface-hover, rgba(0, 0, 0, .05));border:1px solid var(--color-border, rgba(0, 0, 0, .08));max-width:900px;margin:0 auto;width:fit-content;align-self:center}.admin-users-groups__tab[_ngcontent-%COMP%]{padding:.4rem 1.25rem;border-radius:8px;border:none;background:transparent;color:var(--color-text-secondary, #6e6e73);font-size:.9rem;font-family:inherit;font-weight:500;cursor:pointer;transition:background .15s ease,color .15s ease}.admin-users-groups__tab[_ngcontent-%COMP%]:hover{color:var(--color-text, #1d1d1f)}.admin-users-groups__tab--active[_ngcontent-%COMP%]{background:var(--color-bg-surface, #fff);color:var(--color-text, #1d1d1f);box-shadow:0 1px 2px #00000014}.admin-users-groups__empty[_ngcontent-%COMP%]{max-width:900px;margin:1rem auto;width:100%;color:var(--color-text-secondary, #6e6e73);font-size:.9rem}"],changeDetection:0})};export{M as a,k as b,Z as c};
1
+ import{a as J,c as Q}from"./chunk-ARAXWPWU.js";import{a as H}from"./chunk-W7ONGRS7.js";import{j as G,k as V}from"./chunk-C2LUO2MP.js";import{a as q,c as I}from"./chunk-6XX7GME4.js";import{A as W,o as j,s as K,z as $}from"./chunk-VNO76B3S.js";import{a as T,b as F,c as z}from"./chunk-VMYKE4ZC.js";import{Bb as C,D as P,Db as m,Fb as l,Ka as d,Pb as O,Rb as D,S as R,Tb as u,Ub as A,Wa as v,ab as E,ca as c,ga as g,ha as _,jb as N,jc as L,lb as b,m as S,ma as w,mb as f,mc as U,pc as x,qc as h,rb as p,sb as o,t as B,ta as y,tb as r}from"./chunk-CHEXA6RY.js";function ee(s,t){if(s&1&&(o(0,"span",3),u(1),r()),s&2){let e=l();d(),A(e.subtitle)}}var M=class s{user=h.required();editRequested=x();deleteRequested=x();menuItems=[{key:"edit",label:"Edit user",icon:"edit"},{key:"delete",label:"Delete user",icon:"delete",variant:"danger"}];get displayName(){let{firstname:t,lastname:e,email:n}=this.user();return[t,e].filter(Boolean).join(" ")||n||"\u2014"}get subtitle(){return this.user().email??this.user().externalId??""}onMenuAction(t){switch(t){case"edit":this.editRequested.emit(this.user());break;case"delete":confirm(`Delete user "${this.displayName}"?`)&&this.deleteRequested.emit(this.user());break}}static \u0275fac=function(e){return new(e||s)};static \u0275cmp=v({type:s,selectors:[["agentos-user-item"]],inputs:{user:[1,"user"]},outputs:{editRequested:"editRequested",deleteRequested:"deleteRequested"},decls:7,vars:3,consts:[["role","listitem","dsBlueprint","",1,"user-item"],[1,"user-item__body"],[1,"user-item__name"],[1,"user-item__subtitle"],[1,"user-item__actions"],[3,"itemSelected","items"]],template:function(e,n){e&1&&(o(0,"div",0)(1,"div",1)(2,"span",2),u(3),r(),b(4,ee,2,1,"span",3),r(),o(5,"div",4)(6,"ds-kebab-menu",5),m("itemSelected",function(a){return n.onMenuAction(a)}),r()()()),e&2&&(d(3),A(n.displayName),d(),f(n.subtitle?4:-1),d(2),p("items",n.menuItems))},dependencies:[j,W],styles:[".user-item[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.5rem;width:100%;padding:14px 16px;position:relative;border-radius:0;border:1px solid var(--color-divider);background:var(--color-bg);box-shadow:var(--shadow-sm);box-sizing:border-box;overflow:visible;transition:border-color .15s ease}.user-item[_ngcontent-%COMP%]:hover{border-color:var(--color-accent)}.user-item__body[_ngcontent-%COMP%]{flex:1;min-width:0;display:flex;flex-direction:column;gap:.25rem}.user-item__name[_ngcontent-%COMP%]{font-size:15px;font-weight:600;color:var(--color-text);line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.user-item__subtitle[_ngcontent-%COMP%]{font-size:13px;color:var(--color-text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.user-item__actions[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.25rem;flex-shrink:0;opacity:0;transition:opacity .15s ease}.user-item[_ngcontent-%COMP%]:hover .user-item__actions[_ngcontent-%COMP%], .user-item[_ngcontent-%COMP%]:focus-within .user-item__actions[_ngcontent-%COMP%]{opacity:1}"],changeDetection:0})};function te(s,t){if(s&1){let e=C();o(0,"agentos-namespace-select",4),m("valueChange",function(i){g(e);let a=l();return _(a.onNamespaceChange(i))}),r()}if(s&2){let e=l();p("namespaces",t)("value",e.selectedNamespaceId())("includeAllOption",!0)}}function ne(s,t){if(s&1){let e=C();o(0,"ds-icon-button",5),m("action",function(){g(e);let i=l();return _(i.goBack())}),r()}}function se(s,t){if(s&1){let e=C();o(0,"agentos-user-item",7),m("editRequested",function(i){g(e);let a=l(2);return _(a.navigateToEdit(i))})("deleteRequested",function(i){g(e);let a=l(2);return _(a.deleteUser(i))}),r()}s&2&&p("user",t)}function ie(s,t){if(s&1&&b(0,se,1,1,"agentos-user-item",6),s&2){let e,n=t.$implicit,i=l();f((e=i.resolveUser(n.id))?0:-1,e)}}var k=class s{router=c(I);destroyRef=c(w);userAdminState=c(H);namespacePermissions=c(V);showBackButton=h(!0);namespaces=h(void 0);selectedNamespaceId=h(null);hideTitle=h(!1);namespaceFilterChange=x();isLoading=this.userAdminState.isLoading;namespaceUserIds=z(F(this.selectedNamespaceId).pipe(R(t=>t?this.namespacePermissions.listNamespaceUsers(t).pipe(B(e=>new Set(e.map(n=>n.id))),P(e=>(console.error("[UserList] Failed to load namespace users",e),S(null)))):S(null))),{initialValue:null});userItems=U(()=>{let t=this.namespaceUserIds();return this.userAdminState.users().filter(e=>t===null||t.has(e.id??"")).map(e=>({id:e.id??"",name:[e.firstname,e.lastname].filter(Boolean).join(" ")||e.email||"\u2014",description:e.email}))});get usersById(){return new Map(this.userAdminState.users().map(t=>[t.id??"",t]))}ngOnInit(){this.userAdminState.loadAll().pipe(T(this.destroyRef)).subscribe()}onNamespaceChange(t){this.namespaceFilterChange.emit(t)}goBack(){this.router.navigate(["/agentos","admin"])}navigateToCreate(){this.router.navigate(["/agentos/admin/users/new"])}navigateToEdit(t){this.router.navigate(["/agentos/admin/users",t.id??"","edit"])}deleteUser(t){this.userAdminState.deleteUser(t.id??"").pipe(T(this.destroyRef)).subscribe()}resolveUser(t){return this.usersById.get(t)??null}static \u0275fac=function(e){return new(e||s)};static \u0275cmp=v({type:s,selectors:[["agentos-user-list"]],inputs:{showBackButton:[1,"showBackButton"],namespaces:[1,"namespaces"],selectedNamespaceId:[1,"selectedNamespaceId"],hideTitle:[1,"hideTitle"]},outputs:{namespaceFilterChange:"namespaceFilterChange"},decls:5,vars:5,consts:[["userItemTpl",""],["title","Users","emptyMessage","No users found.","cardMinWidth","320px",3,"createRequested","hideTitle","items","showCreate","itemTemplate"],["toolbar-start","",3,"namespaces","value","includeAllOption"],["toolbar-start","","icon","arrow_back","title","Back"],["toolbar-start","",3,"valueChange","namespaces","value","includeAllOption"],["toolbar-start","","icon","arrow_back","title","Back",3,"action"],[3,"user"],[3,"editRequested","deleteRequested","user"]],template:function(e,n){if(e&1&&(o(0,"ds-entity-list",1),m("createRequested",function(){return n.navigateToCreate()}),b(1,te,1,3,"agentos-namespace-select",2)(2,ne,1,0,"ds-icon-button",3),r(),E(3,ie,1,1,"ng-template",null,0,L)),e&2){let i,a=O(4);p("hideTitle",n.hideTitle())("items",n.userItems())("showCreate",!0)("itemTemplate",a),d(),f((i=n.namespaces())?1:n.showBackButton()?2:-1,i)}},dependencies:[$,M,K,J],encapsulation:2,changeDetection:0})};function re(s,t){if(s&1){let e=C();o(0,"agentos-user-list",9),m("namespaceFilterChange",function(i){g(e);let a=l();return _(a.onUsersNamespaceChange(i))}),r()}if(s&2){let e=l();p("showBackButton",!1)("hideTitle",!0)("namespaces",e.namespaces())("selectedNamespaceId",e.usersNamespaceFilter())}}function oe(s,t){s&1&&(o(0,"p",10),u(1,"No namespaces yet. Create one before managing groups."),r())}function ae(s,t){if(s&1){let e=C();o(0,"agentos-user-group-list",12),m("namespaceChange",function(i){g(e);let a=l(2);return _(a.onGroupsNamespaceChange(i))}),r()}if(s&2){let e=l(2);p("namespaceId",t)("hideTitle",!0)("namespaces",e.namespaces())("returnTo",e.returnTo())}}function le(s,t){if(s&1&&b(0,oe,2,0,"p",10)(1,ae,1,4,"agentos-user-group-list",11),s&2){let e,n=l();f(n.namespaces().length===0?0:(e=n.groupsNamespaceId())?1:-1,e)}}var Z=class s{router=c(I);route=c(q);destroyRef=c(w);namespaceController=c(G);activeTab=y(this.route.snapshot.queryParamMap.get("tab")==="groups"?"groups":"users");namespaces=y([]);usersNamespaceFilter=y(null);groupsNamespaceId=y(null);returnTo=U(()=>{let t=this.groupsNamespaceId();return t?`/agentos/admin/users?tab=groups&ns=${t}`:"/agentos/admin/users?tab=groups"});constructor(){let t=this.route.snapshot.queryParamMap.get("ns");this.namespaceController.listAllNamespace().pipe(T(this.destroyRef)).subscribe(e=>{let n=e.filter(a=>a.role!=="MEMBER");this.namespaces.set(n);let i=t&&n.some(a=>a.id===t)?t:n[0]?.id??null;this.groupsNamespaceId.set(i)})}setTab(t){this.activeTab.set(t)}onUsersNamespaceChange(t){this.usersNamespaceFilter.set(t)}onGroupsNamespaceChange(t){this.groupsNamespaceId.set(t)}goBack(){this.router.navigate(["/agentos","admin"])}static \u0275fac=function(e){return new(e||s)};static \u0275cmp=v({type:s,selectors:[["agentos-admin-users-groups"]],decls:14,vars:8,consts:[[1,"admin-users-groups"],[1,"admin-users-groups__header"],["type","button",1,"admin-users-groups__back",3,"click"],[1,"admin-users-groups__title"],["role","tablist","aria-label","Users and Groups",1,"admin-users-groups__tabs"],["id","admin-tab-users","type","button","role","tab","aria-controls","admin-users-groups-panel",1,"admin-users-groups__tab",3,"click"],["id","admin-tab-groups","type","button","role","tab","aria-controls","admin-users-groups-panel",1,"admin-users-groups__tab",3,"click"],["id","admin-users-groups-panel","role","tabpanel","tabindex","0",1,"admin-users-groups__panel"],[3,"showBackButton","hideTitle","namespaces","selectedNamespaceId"],[3,"namespaceFilterChange","showBackButton","hideTitle","namespaces","selectedNamespaceId"],[1,"admin-users-groups__empty"],[3,"namespaceId","hideTitle","namespaces","returnTo"],[3,"namespaceChange","namespaceId","hideTitle","namespaces","returnTo"]],template:function(e,n){e&1&&(o(0,"div",0)(1,"header",1)(2,"button",2),m("click",function(){return n.goBack()}),u(3,"\u2190 Admin"),r(),o(4,"h1",3),u(5,"Users & Groups"),r()(),o(6,"div",4)(7,"button",5),m("click",function(){return n.setTab("users")}),u(8," Users "),r(),o(9,"button",6),m("click",function(){return n.setTab("groups")}),u(10," Groups "),r()(),o(11,"div",7),b(12,re,1,4,"agentos-user-list",8)(13,le,2,1),r()()),e&2&&(d(7),D("admin-users-groups__tab--active",n.activeTab()==="users"),N("aria-selected",n.activeTab()==="users"),d(2),D("admin-users-groups__tab--active",n.activeTab()==="groups"),N("aria-selected",n.activeTab()==="groups"),d(2),N("aria-labelledby",n.activeTab()==="users"?"admin-tab-users":"admin-tab-groups"),d(),f(n.activeTab()==="users"?12:13))},dependencies:[k,Q],styles:[".admin-users-groups[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:1rem;padding:1.5rem 1rem 0;--entity-list-toolbar-max-width: 900px}.admin-users-groups__header[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.5rem;max-width:900px;margin:0 auto;width:100%}.admin-users-groups__back[_ngcontent-%COMP%]{align-self:flex-start;background:none;border:none;padding:0;cursor:pointer;font-size:.875rem;color:var(--color-primary, #007aff);font-family:inherit}.admin-users-groups__back[_ngcontent-%COMP%]:hover{text-decoration:underline}.admin-users-groups__title[_ngcontent-%COMP%]{margin:0;font-size:1.5rem;font-weight:600;color:var(--color-text, #1d1d1f);letter-spacing:-.02em}.admin-users-groups__tabs[_ngcontent-%COMP%]{display:inline-flex;gap:.25rem;padding:.25rem;border-radius:10px;background:var(--color-surface-hover, rgba(0, 0, 0, .05));border:1px solid var(--color-border, rgba(0, 0, 0, .08));max-width:900px;margin:0 auto;width:fit-content;align-self:center}.admin-users-groups__tab[_ngcontent-%COMP%]{padding:.4rem 1.25rem;border-radius:8px;border:none;background:transparent;color:var(--color-text-secondary, #6e6e73);font-size:.9rem;font-family:inherit;font-weight:500;cursor:pointer;transition:background .15s ease,color .15s ease}.admin-users-groups__tab[_ngcontent-%COMP%]:hover{color:var(--color-text, #1d1d1f)}.admin-users-groups__tab--active[_ngcontent-%COMP%]{background:var(--color-bg-surface, #fff);color:var(--color-text, #1d1d1f);box-shadow:0 1px 2px #00000014}.admin-users-groups__empty[_ngcontent-%COMP%]{max-width:900px;margin:1rem auto;width:100%;color:var(--color-text-secondary, #6e6e73);font-size:.9rem}"],changeDetection:0})};export{M as a,k as b,Z as c};
@@ -1 +1 @@
1
- import{a as L}from"./chunk-KB2ABAWC.js";import{b as O}from"./chunk-UQTA3ACH.js";import{a as E,c as $}from"./chunk-6XX7GME4.js";import{z as D}from"./chunk-VNO76B3S.js";import"./chunk-E6T6QLQT.js";import"./chunk-SPV5SLNS.js";import{a as c}from"./chunk-VMYKE4ZC.js";import"./chunk-AS2L77JV.js";import"./chunk-7OGOI6WM.js";import"./chunk-G5RWG2GK.js";import{Bb as x,D as u,Db as p,Fb as r,Lc as T,Pb as N,S as _,Tb as w,Wa as b,ab as v,ca as a,cc as M,fc as P,ga as y,gc as B,ha as h,i as f,jc as k,lb as I,m as l,ma as A,mb as R,rb as g,sb as s,t as d,tb as m,z as C}from"./chunk-CHEXA6RY.js";var F=()=>[];function U(o,t){if(o&1){let n=x();s(0,"agentos-agent-config-item",4),p("deleteRequested",function(i){y(n);let q=r(2);return h(q.deleteConfig(i))}),m()}if(o&2){let n=r().$implicit,e=r();g("config",t)("namespaceId",e.namespaceId)("readOnly",e.isPlatformConfig(n.id))}}function V(o,t){if(o&1&&I(0,U,1,3,"agentos-agent-config-item",3),o&2){let n,e=t.$implicit,i=r();R((n=i.resolveConfig(e.id))?0:-1,n)}}var j="namespace",G="platform",S=class o{route=a(E);router=a($);destroyRef=a(A);agentConfigController=a(O);namespaceId=this.route.snapshot.params.namespaceId;refresh$=new f(void 0);allConfigs$=this.refresh$.pipe(_(()=>C({namespace:this.agentConfigController.listByParentAgentConfig(this.namespaceId),platform:this.agentConfigController.listPlatformAgentsAgentConfig().pipe(u(()=>l([])))})));configItems$=this.allConfigs$.pipe(d(({namespace:t,platform:n})=>[...n.map(e=>({id:e.id??"",name:e.name,description:e.description,groupKey:G,groupLabel:"Platform (read-only)"})),...t.map(e=>({id:e.id??"",name:e.name,description:e.description,groupKey:j,groupLabel:"Namespace"}))]));namespaceConfigsById=new Map;platformConfigsById=new Map;constructor(){this.allConfigs$.pipe(c(this.destroyRef)).subscribe(({namespace:t,platform:n})=>{this.namespaceConfigsById=new Map(t.map(e=>[e.id??"",e])),this.platformConfigsById=new Map(n.map(e=>[e.id??"",e]))})}goBack(){this.router.navigate(["/agentos","namespaces"])}openCreateForm(){this.router.navigate(["/agentos",this.namespaceId,"agent-configs","new"])}deleteConfig(t){this.agentConfigController.deleteAgentConfig(t.id??"").pipe(c(this.destroyRef)).subscribe(()=>this.refresh$.next())}resolveConfig(t){return this.namespaceConfigsById.get(t)??this.platformConfigsById.get(t)??null}isPlatformConfig(t){return this.platformConfigsById.has(t)}static \u0275fac=function(n){return new(n||o)};static \u0275cmp=b({type:o,selectors:[["agentos-namespace-agent-configs"]],decls:6,vars:6,consts:[["agentConfigItemTpl",""],["title","Agent Configs","emptyMessage","No agent configs defined yet. Add one above.","cardMinWidth","400px",3,"createRequested","items","showCreate","itemTemplate"],["toolbar-start","","type","button",1,"namespace-agent-configs__back",3,"click"],[3,"config","namespaceId","readOnly"],[3,"deleteRequested","config","namespaceId","readOnly"]],template:function(n,e){if(n&1&&(s(0,"ds-entity-list",1),P(1,"async"),p("createRequested",function(){return e.openCreateForm()}),s(2,"button",2),p("click",function(){return e.goBack()}),w(3," \u2190 Namespaces "),m()(),v(4,V,1,1,"ng-template",null,0,k)),n&2){let i=N(5);g("items",B(1,3,e.configItems$)??M(5,F))("showCreate",!0)("itemTemplate",i)}},dependencies:[D,L,T],styles:[".namespace-agent-configs__back[_ngcontent-%COMP%]{background:none;border:none;padding:0;cursor:pointer;font-size:.875rem;color:var(--color-primary, #007aff);font-family:inherit}.namespace-agent-configs__back[_ngcontent-%COMP%]:hover{text-decoration:underline}"],changeDetection:0})};export{S as NamespaceAgentConfigsComponent};
1
+ import{a as L}from"./chunk-KB2ABAWC.js";import{b as O}from"./chunk-C2LUO2MP.js";import{a as E,c as $}from"./chunk-6XX7GME4.js";import{z as D}from"./chunk-VNO76B3S.js";import"./chunk-E6T6QLQT.js";import"./chunk-SPV5SLNS.js";import{a as c}from"./chunk-VMYKE4ZC.js";import"./chunk-AS2L77JV.js";import"./chunk-7OGOI6WM.js";import"./chunk-G5RWG2GK.js";import{Bb as x,D as u,Db as p,Fb as r,Lc as T,Pb as N,S as _,Tb as w,Wa as b,ab as v,ca as a,cc as M,fc as P,ga as y,gc as B,ha as h,i as f,jc as k,lb as I,m as l,ma as A,mb as R,rb as g,sb as s,t as d,tb as m,z as C}from"./chunk-CHEXA6RY.js";var F=()=>[];function U(o,t){if(o&1){let n=x();s(0,"agentos-agent-config-item",4),p("deleteRequested",function(i){y(n);let q=r(2);return h(q.deleteConfig(i))}),m()}if(o&2){let n=r().$implicit,e=r();g("config",t)("namespaceId",e.namespaceId)("readOnly",e.isPlatformConfig(n.id))}}function V(o,t){if(o&1&&I(0,U,1,3,"agentos-agent-config-item",3),o&2){let n,e=t.$implicit,i=r();R((n=i.resolveConfig(e.id))?0:-1,n)}}var j="namespace",G="platform",S=class o{route=a(E);router=a($);destroyRef=a(A);agentConfigController=a(O);namespaceId=this.route.snapshot.params.namespaceId;refresh$=new f(void 0);allConfigs$=this.refresh$.pipe(_(()=>C({namespace:this.agentConfigController.listByParentAgentConfig(this.namespaceId),platform:this.agentConfigController.listPlatformAgentsAgentConfig().pipe(u(()=>l([])))})));configItems$=this.allConfigs$.pipe(d(({namespace:t,platform:n})=>[...n.map(e=>({id:e.id??"",name:e.name,description:e.description,groupKey:G,groupLabel:"Platform (read-only)"})),...t.map(e=>({id:e.id??"",name:e.name,description:e.description,groupKey:j,groupLabel:"Namespace"}))]));namespaceConfigsById=new Map;platformConfigsById=new Map;constructor(){this.allConfigs$.pipe(c(this.destroyRef)).subscribe(({namespace:t,platform:n})=>{this.namespaceConfigsById=new Map(t.map(e=>[e.id??"",e])),this.platformConfigsById=new Map(n.map(e=>[e.id??"",e]))})}goBack(){this.router.navigate(["/agentos","namespaces"])}openCreateForm(){this.router.navigate(["/agentos",this.namespaceId,"agent-configs","new"])}deleteConfig(t){this.agentConfigController.deleteAgentConfig(t.id??"").pipe(c(this.destroyRef)).subscribe(()=>this.refresh$.next())}resolveConfig(t){return this.namespaceConfigsById.get(t)??this.platformConfigsById.get(t)??null}isPlatformConfig(t){return this.platformConfigsById.has(t)}static \u0275fac=function(n){return new(n||o)};static \u0275cmp=b({type:o,selectors:[["agentos-namespace-agent-configs"]],decls:6,vars:6,consts:[["agentConfigItemTpl",""],["title","Agent Configs","emptyMessage","No agent configs defined yet. Add one above.","cardMinWidth","400px",3,"createRequested","items","showCreate","itemTemplate"],["toolbar-start","","type","button",1,"namespace-agent-configs__back",3,"click"],[3,"config","namespaceId","readOnly"],[3,"deleteRequested","config","namespaceId","readOnly"]],template:function(n,e){if(n&1&&(s(0,"ds-entity-list",1),P(1,"async"),p("createRequested",function(){return e.openCreateForm()}),s(2,"button",2),p("click",function(){return e.goBack()}),w(3," \u2190 Namespaces "),m()(),v(4,V,1,1,"ng-template",null,0,k)),n&2){let i=N(5);g("items",B(1,3,e.configItems$)??M(5,F))("showCreate",!0)("itemTemplate",i)}},dependencies:[D,L,T],styles:[".namespace-agent-configs__back[_ngcontent-%COMP%]{background:none;border:none;padding:0;cursor:pointer;font-size:.875rem;color:var(--color-primary, #007aff);font-family:inherit}.namespace-agent-configs__back[_ngcontent-%COMP%]:hover{text-decoration:underline}"],changeDetection:0})};export{S as NamespaceAgentConfigsComponent};
@@ -1 +1 @@
1
- import{a as oe}from"./chunk-5N6DUZII.js";import{a as B,c as j}from"./chunk-6XX7GME4.js";import{w as re}from"./chunk-VNO76B3S.js";import{a as E}from"./chunk-VMYKE4ZC.js";import{F as te,c as q,e as F,g as H,h as X,i as J,l as K,n as W,v as Y,w as Z,y as Q,z as ee}from"./chunk-7OGOI6WM.js";import{Ab as O,Bb as I,Db as f,Fb as d,Ka as l,Kc as $,Pb as A,Rb as w,Tb as s,Ub as h,Vb as k,Wa as R,a as U,ab as M,b as T,ca as C,dc as P,ga as b,ha as x,jb as L,jc as z,lb as u,m as N,ma as D,mb as g,pb as y,qb as S,rb as _,sb as a,ta as p,tb as i,ub as V}from"./chunk-CHEXA6RY.js";function ne(r,t){let e=new Map;for(let o of r)if(o.userGroupId!==t)for(let n of o.agentIds)e.has(n)||e.set(n,o.name);return e}function ie(r,t){let e=new Set(r),o=new Set(t);return{toAdd:t.filter(n=>!e.has(n)),toRemove:r.filter(n=>!o.has(n))}}function v(r){return[r.firstname,r.lastname].filter(Boolean).join(" ").trim()||r.externalId}var de=20,G=class{constructor(t,e){this.candidates=t;this.excludedExternalIds=e}search(t){let e=t.toLowerCase(),o=this.excludedExternalIds(),n=this.candidates().filter(m=>!o.has(m.externalId)).filter(m=>this.matches(m,e)).slice(0,de).map(m=>({id:m.externalId,name:v(m),description:m.email}));return N(n)}matches(t,e){return t.externalId.toLowerCase().includes(e)||t.email.toLowerCase().includes(e)||v(t).toLowerCase().includes(e)}};var se=r=>({$implicit:r}),le=(r,t)=>t.id,ce=(r,t)=>t.externalId;function pe(r,t){r&1&&(a(0,"p",6),s(1,"Loading\u2026"),i())}function ue(r,t){r&1&&(a(0,"span",13),s(1,"Name is required."),i())}function ge(r,t){r&1&&(a(0,"p",18),s(1,"No agent configs available in this namespace."),i())}function _e(r,t){r&1&&O(0)}function fe(r,t){if(r&1&&M(0,_e,1,0,"ng-container",27),r&2){let e=t.$implicit;d(3);let o=A(11);_("ngTemplateOutlet",o)("ngTemplateOutletContext",P(2,se,e))}}function be(r,t){if(r&1&&(a(0,"div",19)(1,"span",26),s(2,"Platform"),i(),y(3,fe,1,4,"ng-container",null,le),i()),r&2){let e=d(2);l(3),S(e.platformAgents())}}function xe(r,t){r&1&&O(0)}function he(r,t){if(r&1&&M(0,xe,1,0,"ng-container",27),r&2){let e=t.$implicit;d(3);let o=A(11);_("ngTemplateOutlet",o)("ngTemplateOutletContext",P(2,se,e))}}function Ce(r,t){if(r&1&&(a(0,"div",19)(1,"span",26),s(2,"Namespace"),i(),y(3,he,1,4,"ng-container",null,le),i()),r&2){let e=d(2);l(3),S(e.namespaceAgents())}}function ve(r,t){r&1&&(a(0,"p",18),s(1,"No members yet."),i())}function Me(r,t){if(r&1&&(a(0,"span",31),s(1),i()),r&2){let e=d().$implicit;l(),h(e.email)}}function ye(r,t){if(r&1){let e=I();a(0,"li",28)(1,"div",29)(2,"span",30),s(3),i(),u(4,Me,2,1,"span",31),i(),a(5,"select",32),f("change",function(n){let m=b(e).$implicit,c=d(3);return x(c.setMemberRole(m.externalId,n.target.value))}),a(6,"option",33),s(7,"Member"),i(),a(8,"option",34),s(9,"Admin"),i()(),a(10,"button",35),f("click",function(){let n=b(e).$implicit,m=d(3);return x(m.removeMember(n.externalId))}),s(11," \xD7 "),i()()}if(r&2){let e=t.$implicit;l(3),h(e.label),l(),g(e.email&&e.email!==e.label?4:-1),l(),_("value",e.role),L("aria-label","Role of "+e.label),l(5),_("title","Remove "+e.label)}}function Se(r,t){if(r&1&&(a(0,"ul",20),y(1,ye,12,5,"li",28,ce),i()),r&2){let e=d(2);l(),S(e.selectedMembers())}}function Ie(r,t){if(r&1&&(a(0,"p",22),s(1),i()),r&2){let e=d(2);l(),h(e.errorMessage())}}function Ee(r,t){if(r&1){let e=I();a(0,"form",8),f("ngSubmit",function(){b(e);let n=d();return x(n.submit())}),a(1,"div",9)(2,"label",10),s(3,"Name "),a(4,"span",11),s(5,"*"),i()(),V(6,"input",12),u(7,ue,2,0,"span",13),i(),a(8,"fieldset",14)(9,"legend",15),s(10," Deployed agents "),a(11,"span",16),s(12,"Agents this group can use"),i()(),a(13,"p",17),s(14," Pick from platform agents and this namespace's agents. An agent already deployed to another group in this namespace is unavailable here. "),i(),u(15,ge,2,0,"p",18),u(16,be,5,0,"div",19),u(17,Ce,5,0,"div",19),i(),a(18,"fieldset",14)(19,"legend",15),s(20," Members "),a(21,"span",16),s(22,"Users in this group"),i()(),a(23,"p",17),s(24,"ADMIN members can manage this group; MEMBER is read-only."),i(),u(25,ve,2,0,"p",18)(26,Se,3,0,"ul",20),a(27,"ds-autocomplete-input",21),f("itemSelected",function(n){b(e);let m=d();return x(m.onMemberSelected(n))}),i()(),u(28,Ie,2,1,"p",22),a(29,"div",23)(30,"button",24),s(31),i(),a(32,"button",25),f("click",function(){b(e);let n=d();return x(n.cancel())}),s(33,"Cancel"),i()()()}if(r&2){let e=d();_("formGroup",e.form),l(6),w("user-group-form__input--invalid",e.nameControl.invalid&&e.nameControl.touched),l(),g(e.nameControl.invalid&&e.nameControl.touched?7:-1),l(8),g(e.platformAgents().length===0&&e.namespaceAgents().length===0?15:-1),l(),g(e.platformAgents().length>0?16:-1),l(),g(e.namespaceAgents().length>0?17:-1),l(8),g(e.selectedMembers().length===0?25:26),l(2),_("dataSource",e.memberDataSource),l(),g(e.errorMessage()?28:-1),l(2),_("disabled",e.nameControl.invalid||e.isSubmitting()),l(),k(" ",e.isEditMode()?"Save changes":"Create"," ")}}function Ge(r,t){if(r&1&&(a(0,"span",39),s(1),i()),r&2){let e=d().$implicit,o=d();l(),k("in ",o.agentOwnerGroup(e))}}function Oe(r,t){if(r&1){let e=I();a(0,"label",36)(1,"input",37),f("change",function(){let n=b(e).$implicit,m=d();return x(m.toggleAgent(n))}),i(),a(2,"span",38),s(3),i(),u(4,Ge,2,1,"span",39),i()}if(r&2){let e=t.$implicit,o=d();w("user-group-form__agent--disabled",o.isAgentDisabled(e)),l(),_("checked",o.isAgentSelected(e))("disabled",o.isAgentDisabled(e)),l(2),h(e.name),l(),g(o.isAgentDisabled(e)?4:-1)}}var Ae=250,ae=class r{route=C(B);router=C(j);destroyRef=C(D);userGroupState=C(oe);namespaceId=this.route.snapshot.params.namespaceId;userGroupId=this.route.snapshot.paramMap.get("userGroupId");returnTo=this.route.snapshot.queryParamMap.get("returnTo");isEditMode=p(!1);isLoading=p(!1);isSubmitting=p(!1);errorMessage=p(null);form=new J({name:new K("",{nonNullable:!0,validators:[F.required,F.maxLength(Ae)]})});get nameControl(){return this.form.controls.name}platformAgents=p([]);namespaceAgents=p([]);takenElsewhere=p(new Map);selectedAgentIds=p(new Set);candidateUsers=p([]);selectedMembers=p([]);originalMemberExternalIds=[];memberDataSource=new G(()=>this.candidateUsers(),()=>new Set(this.selectedMembers().map(t=>t.externalId)));ngOnInit(){this.isEditMode.set(!!this.userGroupId),this.loadFormData()}loadFormData(){this.isLoading.set(!0),this.userGroupState.loadFormData(this.namespaceId).pipe(E(this.destroyRef)).subscribe({next:({namespaceAgents:t,platformAgents:e,groups:o,users:n})=>{this.namespaceAgents.set(t),this.platformAgents.set(e),this.takenElsewhere.set(ne(o,this.userGroupId)),this.candidateUsers.set(n),this.userGroupId?this.loadExistingGroup(this.userGroupId):this.isLoading.set(!1)},error:t=>{console.error("[UserGroupForm] Failed to load form data",t),this.isLoading.set(!1),this.errorMessage.set("Failed to load form data. Please try again.")}})}loadExistingGroup(t){this.userGroupState.loadExistingGroup(t).pipe(E(this.destroyRef)).subscribe({next:({group:e,members:o})=>{this.nameControl.setValue(e.name),this.selectedAgentIds.set(new Set(e.agentIds)),this.originalMemberExternalIds=o.map(n=>n.externalId),this.selectedMembers.set(o.map(n=>({externalId:n.externalId,label:v(n),email:n.email,role:n.role}))),this.isLoading.set(!1)},error:e=>{console.error("[UserGroupForm] Failed to load user group for editing",e),this.isLoading.set(!1),this.navigateBack()}})}isAgentDisabled(t){return this.takenElsewhere().has(t.id??"")}agentOwnerGroup(t){return this.takenElsewhere().get(t.id??"")}isAgentSelected(t){return this.selectedAgentIds().has(t.id??"")}toggleAgent(t){let e=t.id;if(!e||this.isAgentDisabled(t))return;let o=new Set(this.selectedAgentIds());o.has(e)?o.delete(e):o.add(e),this.selectedAgentIds.set(o)}onMemberSelected(t){this.selectedMembers().some(e=>e.externalId===t.id)||this.selectedMembers.update(e=>[...e,{externalId:t.id,label:t.name,email:t.description,role:"MEMBER"}])}removeMember(t){this.selectedMembers.update(e=>e.filter(o=>o.externalId!==t))}setMemberRole(t,e){let o=e==="ADMIN"?"ADMIN":"MEMBER";this.selectedMembers.update(n=>n.map(m=>m.externalId===t?T(U({},m),{role:o}):m))}submit(){if(this.nameControl.invalid||this.isSubmitting())return;this.isSubmitting.set(!0),this.errorMessage.set(null);let t=this.nameControl.value.trim(),e=[...this.selectedAgentIds()],o=this.selectedMembers().map(c=>c.externalId),n=this.selectedMembers().filter(c=>c.role==="ADMIN").map(c=>c.externalId);(this.isEditMode()&&this.userGroupId?this.updateGroup(this.userGroupId,t,e,o,n):this.createGroup(t,e,o,n)).pipe(E(this.destroyRef)).subscribe({next:()=>this.navigateBack(),error:c=>{this.isSubmitting.set(!1),c.status===409?this.errorMessage.set(`A user group named "${t}" already exists in this namespace.`):c.status===400||c.status===422?this.errorMessage.set(c.error?.message??"Invalid user group data."):this.errorMessage.set("An unexpected error occurred. Please try again.")}})}createGroup(t,e,o,n){return this.userGroupState.create({namespaceId:this.namespaceId,name:t,agentIds:e,memberExternalIdsToAdd:o,adminExternalIds:n})}updateGroup(t,e,o,n,m){let{toAdd:c,toRemove:me}=ie(this.originalMemberExternalIds,n);return this.userGroupState.update(t,{name:e,agentIds:o,memberExternalIdsToAdd:c,memberExternalIdsToRemove:me,adminExternalIds:m})}cancel(){this.navigateBack()}navigateBack(){this.returnTo?this.router.navigateByUrl(this.returnTo):this.router.navigate(["/agentos",this.namespaceId,"user-groups"])}static \u0275fac=function(e){return new(e||r)};static \u0275cmp=R({type:r,selectors:[["agentos-user-group-form"]],decls:12,vars:2,consts:[["agentRow",""],[1,"user-group-form"],[1,"user-group-form__header"],["type","button","title","Back to user groups",1,"user-group-form__back",3,"click"],[1,"user-group-form__back-icon"],[1,"user-group-form__title"],[1,"user-group-form__loading"],[1,"user-group-form__form",3,"formGroup"],[1,"user-group-form__form",3,"ngSubmit","formGroup"],[1,"user-group-form__field"],["for","user-group-name",1,"user-group-form__label"],["aria-hidden","true"],["id","user-group-name","type","text","placeholder","e.g. Support team","formControlName","name","autocomplete","off",1,"user-group-form__input"],[1,"user-group-form__field-error"],[1,"user-group-form__section"],[1,"user-group-form__label"],[1,"user-group-form__label-hint"],[1,"user-group-form__section-hint"],[1,"user-group-form__empty-hint"],[1,"user-group-form__agent-group"],[1,"user-group-form__members"],["placeholder","Add a member\u2026",3,"itemSelected","dataSource"],[1,"user-group-form__error"],[1,"user-group-form__actions"],["type","submit",1,"user-group-form__btn","user-group-form__btn--primary",3,"disabled"],["type","button",1,"user-group-form__btn",3,"click"],[1,"user-group-form__agent-group-title"],[4,"ngTemplateOutlet","ngTemplateOutletContext"],[1,"user-group-form__member"],[1,"user-group-form__member-info"],[1,"user-group-form__member-name"],[1,"user-group-form__member-email"],[1,"user-group-form__member-role",3,"change","value"],["value","MEMBER"],["value","ADMIN"],["type","button",1,"user-group-form__member-remove",3,"click","title"],[1,"user-group-form__agent"],["type","checkbox",1,"user-group-form__agent-checkbox",3,"change","checked","disabled"],[1,"user-group-form__agent-name"],[1,"user-group-form__agent-note"]],template:function(e,o){e&1&&(a(0,"div",1)(1,"header",2)(2,"button",3),f("click",function(){return o.cancel()}),a(3,"span",4),s(4,"\u2190"),i(),s(5," User Groups "),i(),a(6,"h1",5),s(7),i()(),u(8,pe,2,0,"p",6)(9,Ee,34,12,"form",7),i(),M(10,Oe,5,6,"ng-template",null,0,z)),e&2&&(l(7),h(o.isEditMode()?"Edit user group":"New user group"),l(),g(o.isLoading()?8:9))},dependencies:[$,te,W,Q,ee,q,H,X,Z,Y,re],styles:[".user-group-form[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:2rem;max-width:560px;margin:0 auto;padding:2rem 1rem}.user-group-form__header[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.5rem}.user-group-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}.user-group-form__back[_ngcontent-%COMP%]:hover{text-decoration:underline}.user-group-form__back-icon[_ngcontent-%COMP%]{font-size:1rem;line-height:1}.user-group-form__title[_ngcontent-%COMP%]{margin:0;font-size:1.5rem;font-weight:600;color:var(--color-text, #1d1d1f);letter-spacing:-.02em}.user-group-form__loading[_ngcontent-%COMP%]{color:var(--color-text-secondary, #6e6e73);font-size:.9rem;margin:0}.user-group-form__form[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:1.25rem}.user-group-form__field[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.375rem}.user-group-form__label[_ngcontent-%COMP%]{font-size:.875rem;font-weight:500;color:var(--color-text, #1d1d1f)}.user-group-form__label-hint[_ngcontent-%COMP%]{font-weight:400;color:var(--color-text-secondary, #6e6e73);margin-left:.375rem}.user-group-form__input[_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}.user-group-form__input[_ngcontent-%COMP%]:focus{border-color:var(--color-primary, #007aff)}.user-group-form__input[_ngcontent-%COMP%]::placeholder{color:var(--color-text-secondary, #6e6e73)}.user-group-form__input--invalid[_ngcontent-%COMP%]{border-color:var(--color-error, #ff3b30)}.user-group-form__input--invalid[_ngcontent-%COMP%]:focus{border-color:var(--color-error, #ff3b30)}.user-group-form__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}.user-group-form__section-hint[_ngcontent-%COMP%]{margin:0;font-size:.8rem;color:var(--color-text-secondary, #6e6e73);line-height:1.4}.user-group-form__empty-hint[_ngcontent-%COMP%]{margin:0;font-size:.85rem;color:var(--color-text-secondary, #6e6e73);font-style:italic}.user-group-form__agent-group[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.25rem}.user-group-form__agent-group-title[_ngcontent-%COMP%]{font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-secondary, #6e6e73);margin-bottom:.25rem}.user-group-form__agent[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.5rem;padding:.375rem .5rem;border-radius:6px;cursor:pointer;transition:background .15s ease}.user-group-form__agent[_ngcontent-%COMP%]:hover{background:var(--color-surface-hover, rgba(0, 0, 0, .03))}.user-group-form__agent--disabled[_ngcontent-%COMP%]{cursor:not-allowed;opacity:.55}.user-group-form__agent--disabled[_ngcontent-%COMP%]:hover{background:transparent}.user-group-form__agent-checkbox[_ngcontent-%COMP%]{flex-shrink:0;accent-color:var(--color-primary, #007aff)}.user-group-form__agent-name[_ngcontent-%COMP%]{font-size:.9rem;color:var(--color-text, #1d1d1f)}.user-group-form__agent-note[_ngcontent-%COMP%]{font-size:.75rem;color:var(--color-text-secondary, #6e6e73);font-style:italic}.user-group-form__members[_ngcontent-%COMP%]{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.375rem}.user-group-form__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))}.user-group-form__member-info[_ngcontent-%COMP%]{flex:1;display:flex;flex-direction:column;gap:.1rem;min-width:0}.user-group-form__member-name[_ngcontent-%COMP%]{font-size:.9rem;color:var(--color-text, #1d1d1f);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.user-group-form__member-email[_ngcontent-%COMP%]{font-size:.75rem;color:var(--color-text-secondary, #6e6e73);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.user-group-form__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}.user-group-form__member-role[_ngcontent-%COMP%]:focus{outline:none;border-color:var(--color-primary, #007aff)}.user-group-form__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}.user-group-form__member-remove[_ngcontent-%COMP%]:hover{background:var(--color-error-light, rgba(255, 59, 48, .12));color:var(--color-error, #ff3b30)}.user-group-form__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}.user-group-form__field-error[_ngcontent-%COMP%]{font-size:.8rem;color:var(--color-error, #ff3b30);line-height:1.3}.user-group-form__actions[_ngcontent-%COMP%]{display:flex;gap:.75rem;padding-top:.5rem}.user-group-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}.user-group-form__btn[_ngcontent-%COMP%]:hover:not(:disabled){background:var(--color-surface-hover, rgba(0, 0, 0, .04))}.user-group-form__btn[_ngcontent-%COMP%]:disabled{opacity:.45;cursor:not-allowed}.user-group-form__btn--primary[_ngcontent-%COMP%]{background:var(--color-primary, #007aff);border-color:var(--color-primary, #007aff);color:#fff}.user-group-form__btn--primary[_ngcontent-%COMP%]:hover:not(:disabled){background:var(--color-primary-hover, #0051d5);border-color:var(--color-primary-hover, #0051d5)}"],changeDetection:0})};export{ae as a};
1
+ import{a as oe}from"./chunk-SI42WXFB.js";import{a as B,c as j}from"./chunk-6XX7GME4.js";import{w as re}from"./chunk-VNO76B3S.js";import{a as E}from"./chunk-VMYKE4ZC.js";import{F as te,c as q,e as F,g as H,h as X,i as J,l as K,n as W,v as Y,w as Z,y as Q,z as ee}from"./chunk-7OGOI6WM.js";import{Ab as O,Bb as I,Db as f,Fb as d,Ka as l,Kc as $,Pb as A,Rb as w,Tb as s,Ub as h,Vb as k,Wa as R,a as U,ab as M,b as T,ca as C,dc as P,ga as b,ha as x,jb as L,jc as z,lb as u,m as N,ma as D,mb as g,pb as y,qb as S,rb as _,sb as a,ta as p,tb as i,ub as V}from"./chunk-CHEXA6RY.js";function ne(r,t){let e=new Map;for(let o of r)if(o.userGroupId!==t)for(let n of o.agentIds)e.has(n)||e.set(n,o.name);return e}function ie(r,t){let e=new Set(r),o=new Set(t);return{toAdd:t.filter(n=>!e.has(n)),toRemove:r.filter(n=>!o.has(n))}}function v(r){return[r.firstname,r.lastname].filter(Boolean).join(" ").trim()||r.externalId}var de=20,G=class{constructor(t,e){this.candidates=t;this.excludedExternalIds=e}search(t){let e=t.toLowerCase(),o=this.excludedExternalIds(),n=this.candidates().filter(m=>!o.has(m.externalId)).filter(m=>this.matches(m,e)).slice(0,de).map(m=>({id:m.externalId,name:v(m),description:m.email}));return N(n)}matches(t,e){return t.externalId.toLowerCase().includes(e)||t.email.toLowerCase().includes(e)||v(t).toLowerCase().includes(e)}};var se=r=>({$implicit:r}),le=(r,t)=>t.id,ce=(r,t)=>t.externalId;function pe(r,t){r&1&&(a(0,"p",6),s(1,"Loading\u2026"),i())}function ue(r,t){r&1&&(a(0,"span",13),s(1,"Name is required."),i())}function ge(r,t){r&1&&(a(0,"p",18),s(1,"No agent configs available in this namespace."),i())}function _e(r,t){r&1&&O(0)}function fe(r,t){if(r&1&&M(0,_e,1,0,"ng-container",27),r&2){let e=t.$implicit;d(3);let o=A(11);_("ngTemplateOutlet",o)("ngTemplateOutletContext",P(2,se,e))}}function be(r,t){if(r&1&&(a(0,"div",19)(1,"span",26),s(2,"Platform"),i(),y(3,fe,1,4,"ng-container",null,le),i()),r&2){let e=d(2);l(3),S(e.platformAgents())}}function xe(r,t){r&1&&O(0)}function he(r,t){if(r&1&&M(0,xe,1,0,"ng-container",27),r&2){let e=t.$implicit;d(3);let o=A(11);_("ngTemplateOutlet",o)("ngTemplateOutletContext",P(2,se,e))}}function Ce(r,t){if(r&1&&(a(0,"div",19)(1,"span",26),s(2,"Namespace"),i(),y(3,he,1,4,"ng-container",null,le),i()),r&2){let e=d(2);l(3),S(e.namespaceAgents())}}function ve(r,t){r&1&&(a(0,"p",18),s(1,"No members yet."),i())}function Me(r,t){if(r&1&&(a(0,"span",31),s(1),i()),r&2){let e=d().$implicit;l(),h(e.email)}}function ye(r,t){if(r&1){let e=I();a(0,"li",28)(1,"div",29)(2,"span",30),s(3),i(),u(4,Me,2,1,"span",31),i(),a(5,"select",32),f("change",function(n){let m=b(e).$implicit,c=d(3);return x(c.setMemberRole(m.externalId,n.target.value))}),a(6,"option",33),s(7,"Member"),i(),a(8,"option",34),s(9,"Admin"),i()(),a(10,"button",35),f("click",function(){let n=b(e).$implicit,m=d(3);return x(m.removeMember(n.externalId))}),s(11," \xD7 "),i()()}if(r&2){let e=t.$implicit;l(3),h(e.label),l(),g(e.email&&e.email!==e.label?4:-1),l(),_("value",e.role),L("aria-label","Role of "+e.label),l(5),_("title","Remove "+e.label)}}function Se(r,t){if(r&1&&(a(0,"ul",20),y(1,ye,12,5,"li",28,ce),i()),r&2){let e=d(2);l(),S(e.selectedMembers())}}function Ie(r,t){if(r&1&&(a(0,"p",22),s(1),i()),r&2){let e=d(2);l(),h(e.errorMessage())}}function Ee(r,t){if(r&1){let e=I();a(0,"form",8),f("ngSubmit",function(){b(e);let n=d();return x(n.submit())}),a(1,"div",9)(2,"label",10),s(3,"Name "),a(4,"span",11),s(5,"*"),i()(),V(6,"input",12),u(7,ue,2,0,"span",13),i(),a(8,"fieldset",14)(9,"legend",15),s(10," Deployed agents "),a(11,"span",16),s(12,"Agents this group can use"),i()(),a(13,"p",17),s(14," Pick from platform agents and this namespace's agents. An agent already deployed to another group in this namespace is unavailable here. "),i(),u(15,ge,2,0,"p",18),u(16,be,5,0,"div",19),u(17,Ce,5,0,"div",19),i(),a(18,"fieldset",14)(19,"legend",15),s(20," Members "),a(21,"span",16),s(22,"Users in this group"),i()(),a(23,"p",17),s(24,"ADMIN members can manage this group; MEMBER is read-only."),i(),u(25,ve,2,0,"p",18)(26,Se,3,0,"ul",20),a(27,"ds-autocomplete-input",21),f("itemSelected",function(n){b(e);let m=d();return x(m.onMemberSelected(n))}),i()(),u(28,Ie,2,1,"p",22),a(29,"div",23)(30,"button",24),s(31),i(),a(32,"button",25),f("click",function(){b(e);let n=d();return x(n.cancel())}),s(33,"Cancel"),i()()()}if(r&2){let e=d();_("formGroup",e.form),l(6),w("user-group-form__input--invalid",e.nameControl.invalid&&e.nameControl.touched),l(),g(e.nameControl.invalid&&e.nameControl.touched?7:-1),l(8),g(e.platformAgents().length===0&&e.namespaceAgents().length===0?15:-1),l(),g(e.platformAgents().length>0?16:-1),l(),g(e.namespaceAgents().length>0?17:-1),l(8),g(e.selectedMembers().length===0?25:26),l(2),_("dataSource",e.memberDataSource),l(),g(e.errorMessage()?28:-1),l(2),_("disabled",e.nameControl.invalid||e.isSubmitting()),l(),k(" ",e.isEditMode()?"Save changes":"Create"," ")}}function Ge(r,t){if(r&1&&(a(0,"span",39),s(1),i()),r&2){let e=d().$implicit,o=d();l(),k("in ",o.agentOwnerGroup(e))}}function Oe(r,t){if(r&1){let e=I();a(0,"label",36)(1,"input",37),f("change",function(){let n=b(e).$implicit,m=d();return x(m.toggleAgent(n))}),i(),a(2,"span",38),s(3),i(),u(4,Ge,2,1,"span",39),i()}if(r&2){let e=t.$implicit,o=d();w("user-group-form__agent--disabled",o.isAgentDisabled(e)),l(),_("checked",o.isAgentSelected(e))("disabled",o.isAgentDisabled(e)),l(2),h(e.name),l(),g(o.isAgentDisabled(e)?4:-1)}}var Ae=250,ae=class r{route=C(B);router=C(j);destroyRef=C(D);userGroupState=C(oe);namespaceId=this.route.snapshot.params.namespaceId;userGroupId=this.route.snapshot.paramMap.get("userGroupId");returnTo=this.route.snapshot.queryParamMap.get("returnTo");isEditMode=p(!1);isLoading=p(!1);isSubmitting=p(!1);errorMessage=p(null);form=new J({name:new K("",{nonNullable:!0,validators:[F.required,F.maxLength(Ae)]})});get nameControl(){return this.form.controls.name}platformAgents=p([]);namespaceAgents=p([]);takenElsewhere=p(new Map);selectedAgentIds=p(new Set);candidateUsers=p([]);selectedMembers=p([]);originalMemberExternalIds=[];memberDataSource=new G(()=>this.candidateUsers(),()=>new Set(this.selectedMembers().map(t=>t.externalId)));ngOnInit(){this.isEditMode.set(!!this.userGroupId),this.loadFormData()}loadFormData(){this.isLoading.set(!0),this.userGroupState.loadFormData(this.namespaceId).pipe(E(this.destroyRef)).subscribe({next:({namespaceAgents:t,platformAgents:e,groups:o,users:n})=>{this.namespaceAgents.set(t),this.platformAgents.set(e),this.takenElsewhere.set(ne(o,this.userGroupId)),this.candidateUsers.set(n),this.userGroupId?this.loadExistingGroup(this.userGroupId):this.isLoading.set(!1)},error:t=>{console.error("[UserGroupForm] Failed to load form data",t),this.isLoading.set(!1),this.errorMessage.set("Failed to load form data. Please try again.")}})}loadExistingGroup(t){this.userGroupState.loadExistingGroup(t).pipe(E(this.destroyRef)).subscribe({next:({group:e,members:o})=>{this.nameControl.setValue(e.name),this.selectedAgentIds.set(new Set(e.agentIds)),this.originalMemberExternalIds=o.map(n=>n.externalId),this.selectedMembers.set(o.map(n=>({externalId:n.externalId,label:v(n),email:n.email,role:n.role}))),this.isLoading.set(!1)},error:e=>{console.error("[UserGroupForm] Failed to load user group for editing",e),this.isLoading.set(!1),this.navigateBack()}})}isAgentDisabled(t){return this.takenElsewhere().has(t.id??"")}agentOwnerGroup(t){return this.takenElsewhere().get(t.id??"")}isAgentSelected(t){return this.selectedAgentIds().has(t.id??"")}toggleAgent(t){let e=t.id;if(!e||this.isAgentDisabled(t))return;let o=new Set(this.selectedAgentIds());o.has(e)?o.delete(e):o.add(e),this.selectedAgentIds.set(o)}onMemberSelected(t){this.selectedMembers().some(e=>e.externalId===t.id)||this.selectedMembers.update(e=>[...e,{externalId:t.id,label:t.name,email:t.description,role:"MEMBER"}])}removeMember(t){this.selectedMembers.update(e=>e.filter(o=>o.externalId!==t))}setMemberRole(t,e){let o=e==="ADMIN"?"ADMIN":"MEMBER";this.selectedMembers.update(n=>n.map(m=>m.externalId===t?T(U({},m),{role:o}):m))}submit(){if(this.nameControl.invalid||this.isSubmitting())return;this.isSubmitting.set(!0),this.errorMessage.set(null);let t=this.nameControl.value.trim(),e=[...this.selectedAgentIds()],o=this.selectedMembers().map(c=>c.externalId),n=this.selectedMembers().filter(c=>c.role==="ADMIN").map(c=>c.externalId);(this.isEditMode()&&this.userGroupId?this.updateGroup(this.userGroupId,t,e,o,n):this.createGroup(t,e,o,n)).pipe(E(this.destroyRef)).subscribe({next:()=>this.navigateBack(),error:c=>{this.isSubmitting.set(!1),c.status===409?this.errorMessage.set(`A user group named "${t}" already exists in this namespace.`):c.status===400||c.status===422?this.errorMessage.set(c.error?.message??"Invalid user group data."):this.errorMessage.set("An unexpected error occurred. Please try again.")}})}createGroup(t,e,o,n){return this.userGroupState.create({namespaceId:this.namespaceId,name:t,agentIds:e,memberExternalIdsToAdd:o,adminExternalIds:n})}updateGroup(t,e,o,n,m){let{toAdd:c,toRemove:me}=ie(this.originalMemberExternalIds,n);return this.userGroupState.update(t,{name:e,agentIds:o,memberExternalIdsToAdd:c,memberExternalIdsToRemove:me,adminExternalIds:m})}cancel(){this.navigateBack()}navigateBack(){this.returnTo?this.router.navigateByUrl(this.returnTo):this.router.navigate(["/agentos",this.namespaceId,"user-groups"])}static \u0275fac=function(e){return new(e||r)};static \u0275cmp=R({type:r,selectors:[["agentos-user-group-form"]],decls:12,vars:2,consts:[["agentRow",""],[1,"user-group-form"],[1,"user-group-form__header"],["type","button","title","Back to user groups",1,"user-group-form__back",3,"click"],[1,"user-group-form__back-icon"],[1,"user-group-form__title"],[1,"user-group-form__loading"],[1,"user-group-form__form",3,"formGroup"],[1,"user-group-form__form",3,"ngSubmit","formGroup"],[1,"user-group-form__field"],["for","user-group-name",1,"user-group-form__label"],["aria-hidden","true"],["id","user-group-name","type","text","placeholder","e.g. Support team","formControlName","name","autocomplete","off",1,"user-group-form__input"],[1,"user-group-form__field-error"],[1,"user-group-form__section"],[1,"user-group-form__label"],[1,"user-group-form__label-hint"],[1,"user-group-form__section-hint"],[1,"user-group-form__empty-hint"],[1,"user-group-form__agent-group"],[1,"user-group-form__members"],["placeholder","Add a member\u2026",3,"itemSelected","dataSource"],[1,"user-group-form__error"],[1,"user-group-form__actions"],["type","submit",1,"user-group-form__btn","user-group-form__btn--primary",3,"disabled"],["type","button",1,"user-group-form__btn",3,"click"],[1,"user-group-form__agent-group-title"],[4,"ngTemplateOutlet","ngTemplateOutletContext"],[1,"user-group-form__member"],[1,"user-group-form__member-info"],[1,"user-group-form__member-name"],[1,"user-group-form__member-email"],[1,"user-group-form__member-role",3,"change","value"],["value","MEMBER"],["value","ADMIN"],["type","button",1,"user-group-form__member-remove",3,"click","title"],[1,"user-group-form__agent"],["type","checkbox",1,"user-group-form__agent-checkbox",3,"change","checked","disabled"],[1,"user-group-form__agent-name"],[1,"user-group-form__agent-note"]],template:function(e,o){e&1&&(a(0,"div",1)(1,"header",2)(2,"button",3),f("click",function(){return o.cancel()}),a(3,"span",4),s(4,"\u2190"),i(),s(5," User Groups "),i(),a(6,"h1",5),s(7),i()(),u(8,pe,2,0,"p",6)(9,Ee,34,12,"form",7),i(),M(10,Oe,5,6,"ng-template",null,0,z)),e&2&&(l(7),h(o.isEditMode()?"Edit user group":"New user group"),l(),g(o.isLoading()?8:9))},dependencies:[$,te,W,Q,ee,q,H,X,Z,Y,re],styles:[".user-group-form[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:2rem;max-width:560px;margin:0 auto;padding:2rem 1rem}.user-group-form__header[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.5rem}.user-group-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}.user-group-form__back[_ngcontent-%COMP%]:hover{text-decoration:underline}.user-group-form__back-icon[_ngcontent-%COMP%]{font-size:1rem;line-height:1}.user-group-form__title[_ngcontent-%COMP%]{margin:0;font-size:1.5rem;font-weight:600;color:var(--color-text, #1d1d1f);letter-spacing:-.02em}.user-group-form__loading[_ngcontent-%COMP%]{color:var(--color-text-secondary, #6e6e73);font-size:.9rem;margin:0}.user-group-form__form[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:1.25rem}.user-group-form__field[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.375rem}.user-group-form__label[_ngcontent-%COMP%]{font-size:.875rem;font-weight:500;color:var(--color-text, #1d1d1f)}.user-group-form__label-hint[_ngcontent-%COMP%]{font-weight:400;color:var(--color-text-secondary, #6e6e73);margin-left:.375rem}.user-group-form__input[_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}.user-group-form__input[_ngcontent-%COMP%]:focus{border-color:var(--color-primary, #007aff)}.user-group-form__input[_ngcontent-%COMP%]::placeholder{color:var(--color-text-secondary, #6e6e73)}.user-group-form__input--invalid[_ngcontent-%COMP%]{border-color:var(--color-error, #ff3b30)}.user-group-form__input--invalid[_ngcontent-%COMP%]:focus{border-color:var(--color-error, #ff3b30)}.user-group-form__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}.user-group-form__section-hint[_ngcontent-%COMP%]{margin:0;font-size:.8rem;color:var(--color-text-secondary, #6e6e73);line-height:1.4}.user-group-form__empty-hint[_ngcontent-%COMP%]{margin:0;font-size:.85rem;color:var(--color-text-secondary, #6e6e73);font-style:italic}.user-group-form__agent-group[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.25rem}.user-group-form__agent-group-title[_ngcontent-%COMP%]{font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-secondary, #6e6e73);margin-bottom:.25rem}.user-group-form__agent[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.5rem;padding:.375rem .5rem;border-radius:6px;cursor:pointer;transition:background .15s ease}.user-group-form__agent[_ngcontent-%COMP%]:hover{background:var(--color-surface-hover, rgba(0, 0, 0, .03))}.user-group-form__agent--disabled[_ngcontent-%COMP%]{cursor:not-allowed;opacity:.55}.user-group-form__agent--disabled[_ngcontent-%COMP%]:hover{background:transparent}.user-group-form__agent-checkbox[_ngcontent-%COMP%]{flex-shrink:0;accent-color:var(--color-primary, #007aff)}.user-group-form__agent-name[_ngcontent-%COMP%]{font-size:.9rem;color:var(--color-text, #1d1d1f)}.user-group-form__agent-note[_ngcontent-%COMP%]{font-size:.75rem;color:var(--color-text-secondary, #6e6e73);font-style:italic}.user-group-form__members[_ngcontent-%COMP%]{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.375rem}.user-group-form__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))}.user-group-form__member-info[_ngcontent-%COMP%]{flex:1;display:flex;flex-direction:column;gap:.1rem;min-width:0}.user-group-form__member-name[_ngcontent-%COMP%]{font-size:.9rem;color:var(--color-text, #1d1d1f);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.user-group-form__member-email[_ngcontent-%COMP%]{font-size:.75rem;color:var(--color-text-secondary, #6e6e73);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.user-group-form__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}.user-group-form__member-role[_ngcontent-%COMP%]:focus{outline:none;border-color:var(--color-primary, #007aff)}.user-group-form__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}.user-group-form__member-remove[_ngcontent-%COMP%]:hover{background:var(--color-error-light, rgba(255, 59, 48, .12));color:var(--color-error, #ff3b30)}.user-group-form__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}.user-group-form__field-error[_ngcontent-%COMP%]{font-size:.8rem;color:var(--color-error, #ff3b30);line-height:1.3}.user-group-form__actions[_ngcontent-%COMP%]{display:flex;gap:.75rem;padding-top:.5rem}.user-group-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}.user-group-form__btn[_ngcontent-%COMP%]:hover:not(:disabled){background:var(--color-surface-hover, rgba(0, 0, 0, .04))}.user-group-form__btn[_ngcontent-%COMP%]:disabled{opacity:.45;cursor:not-allowed}.user-group-form__btn--primary[_ngcontent-%COMP%]{background:var(--color-primary, #007aff);border-color:var(--color-primary, #007aff);color:#fff}.user-group-form__btn--primary[_ngcontent-%COMP%]:hover:not(:disabled){background:var(--color-primary-hover, #0051d5);border-color:var(--color-primary-hover, #0051d5)}"],changeDetection:0})};export{ae as a};
@@ -0,0 +1 @@
1
+ import{a as U,b as F}from"./chunk-Y42FQQZC.js";import{j}from"./chunk-C2LUO2MP.js";import{c as $}from"./chunk-6XX7GME4.js";import{s as B,z}from"./chunk-VNO76B3S.js";import{a as N}from"./chunk-VMYKE4ZC.js";import{Bb as v,Db as p,Fb as r,Ka as P,Lc as O,Pb as A,S as T,Tb as u,Wa as w,ab as L,ca as f,cc as R,fc as E,ga as c,gc as D,ha as m,i as S,ia as _,ja as h,jc as G,lb as k,ma as I,mb as y,pc as l,qc as H,rb as C,sb as s,t as V,ta as x,tb as a,ub as g,yb as q,zb as b}from"./chunk-CHEXA6RY.js";var Q=()=>[];function X(d,n){if(d&1){let t=v();q(0,1),s(1,"span",2),u(2,"Delete?"),a(),s(3,"ds-icon-button",3),p("action",function(){c(t);let e=r();return m(e.onDeleteConfirmed())}),a(),s(4,"ds-icon-button",4),p("action",function(){c(t);let e=r();return m(e.onDeleteCancelled())}),a(),b()}}function Y(d,n){if(d&1){let t=v();q(0,1),s(1,"button",5),p("click",function(){c(t);let e=r();return m(e.onIntegrations())}),_(),s(2,"svg",6),g(3,"path",7)(4,"path",8),a(),u(5," Integrations "),a(),h(),s(6,"button",5),p("click",function(){c(t);let e=r();return m(e.onAiProviders())}),_(),s(7,"svg",6),g(8,"rect",9)(9,"rect",10)(10,"path",11),a(),u(11," AI Providers "),a(),h(),s(12,"button",5),p("click",function(){c(t);let e=r();return m(e.onAiModels())}),_(),s(13,"svg",6),g(14,"path",12),a(),u(15," AI Models "),a(),h(),s(16,"button",5),p("click",function(){c(t);let e=r();return m(e.onAgentConfigs())}),_(),s(17,"svg",6),g(18,"path",13)(19,"circle",14)(20,"circle",15),a(),u(21," Agent Configs "),a(),h(),s(22,"button",5),p("click",function(){c(t);let e=r();return m(e.onPrompts())}),_(),s(23,"svg",6),g(24,"path",16)(25,"path",17)(26,"path",18),a(),u(27," Prompts "),a(),h(),s(28,"button",5),p("click",function(){c(t);let e=r();return m(e.onScheduledPrompts())}),_(),s(29,"svg",6),g(30,"circle",19)(31,"path",20),a(),u(32," Schedulers "),a(),h(),s(33,"button",5),p("click",function(){c(t);let e=r();return m(e.onUserGroups())}),_(),s(34,"svg",6),g(35,"circle",21)(36,"path",22)(37,"path",23),a(),u(38," User Groups "),a(),h(),s(39,"button",5),p("click",function(){c(t);let e=r();return m(e.onAuthSettings())}),_(),s(40,"svg",6),g(41,"circle",24)(42,"path",25)(43,"path",26),a(),u(44," Auth Settings "),a(),h(),s(45,"button",5),p("click",function(){c(t);let e=r();return m(e.onMembers())}),_(),s(46,"svg",6),g(47,"circle",24)(48,"path",27),a(),u(49," Members "),a(),b()}}var M=class d{namespace=H.required();selected=l();editRequested=l();integrationsRequested=l();aiProvidersRequested=l();aiModelsRequested=l();agentConfigsRequested=l();promptsRequested=l();scheduledPromptsRequested=l();userGroupsRequested=l();membersRequested=l();authSettingsRequested=l();deleteRequested=l();pendingDelete=x(!1);menuItems=[{key:"edit",label:"Edit namespace"},{key:"separator",label:"",variant:"separator"},{key:"delete",label:"Delete namespace",variant:"danger"}];onSelect(){this.selected.emit(this.namespace())}onIntegrations(){this.integrationsRequested.emit(this.namespace())}onAiProviders(){this.aiProvidersRequested.emit(this.namespace())}onAiModels(){this.aiModelsRequested.emit(this.namespace())}onAgentConfigs(){this.agentConfigsRequested.emit(this.namespace())}onPrompts(){this.promptsRequested.emit(this.namespace())}onScheduledPrompts(){this.scheduledPromptsRequested.emit(this.namespace())}onUserGroups(){this.userGroupsRequested.emit(this.namespace())}onMembers(){this.membersRequested.emit(this.namespace())}onAuthSettings(){this.authSettingsRequested.emit(this.namespace())}onMenuAction(n){switch(n){case"edit":this.editRequested.emit(this.namespace());break;case"delete":this.pendingDelete.set(!0);break}}onDeleteConfirmed(){this.pendingDelete.set(!1),this.deleteRequested.emit(this.namespace())}onDeleteCancelled(){this.pendingDelete.set(!1)}static \u0275fac=function(t){return new(t||d)};static \u0275cmp=w({type:d,selectors:[["agentos-namespace-item"]],inputs:{namespace:[1,"namespace"]},outputs:{selected:"selected",editRequested:"editRequested",integrationsRequested:"integrationsRequested",aiProvidersRequested:"aiProvidersRequested",aiModelsRequested:"aiModelsRequested",agentConfigsRequested:"agentConfigsRequested",promptsRequested:"promptsRequested",scheduledPromptsRequested:"scheduledPromptsRequested",userGroupsRequested:"userGroupsRequested",membersRequested:"membersRequested",authSettingsRequested:"authSettingsRequested",deleteRequested:"deleteRequested"},decls:3,vars:4,consts:[[3,"nameClicked","menuAction","name","menuItems"],["agentosCardChips",""],[1,"ns-confirm-label"],["icon","check","variant","danger","title","Confirm deletion",3,"action"],["icon","close","title","Cancel",3,"action"],["type","button",1,"ac-chip",3,"click"],["width","13","height","13","viewBox","0 0 24 24","fill","none","aria-hidden","true"],["d","M8 2v4M16 2v4M6 8h12v3a6 6 0 01-12 0V8z","stroke","currentColor","stroke-width","1.6","stroke-linecap","round","stroke-linejoin","round"],["d","M12 17v3","stroke","currentColor","stroke-width","1.6","stroke-linecap","round"],["x","7","y","7","width","10","height","10","rx","1.5","stroke","currentColor","stroke-width","1.6"],["x","10","y","10","width","4","height","4","rx","0.5","stroke","currentColor","stroke-width","1.4"],["d","M9 2v3M12 2v3M15 2v3M9 19v3M12 19v3M15 19v3M2 9h3M2 12h3M2 15h3M19 9h3M19 12h3M19 15h3","stroke","currentColor","stroke-width","1.4","stroke-linecap","round"],["d","M12 3l1.8 5.6L19 10l-5.2 1.6L12 17l-1.8-5.4L5 10l5.2-1.4L12 3z","stroke","currentColor","stroke-width","1.5","stroke-linejoin","round"],["d","M4 7h9M17 7h3M4 17h3M11 17h9","stroke","currentColor","stroke-width","1.6","stroke-linecap","round"],["cx","13","cy","7","r","2.2","stroke","currentColor","stroke-width","1.6"],["cx","8","cy","17","r","2.2","stroke","currentColor","stroke-width","1.6"],["d","M7 3h7l4 4v14a1 1 0 01-1 1H7a1 1 0 01-1-1V4a1 1 0 011-1z","stroke","currentColor","stroke-width","1.6","stroke-linejoin","round"],["d","M14 3v4h4","stroke","currentColor","stroke-width","1.6","stroke-linejoin","round"],["d","M9 13h6M9 17h6","stroke","currentColor","stroke-width","1.4","stroke-linecap","round"],["cx","12","cy","12","r","9","stroke","currentColor","stroke-width","1.6"],["d","M12 7v5l3 3","stroke","currentColor","stroke-width","1.6","stroke-linecap","round","stroke-linejoin","round"],["cx","9","cy","8","r","3","stroke","currentColor","stroke-width","1.6"],["d","M3 20a6 6 0 0112 0","stroke","currentColor","stroke-width","1.6","stroke-linecap","round"],["d","M16 5.5a3 3 0 010 5.5M18 20a6 6 0 00-3-5.2","stroke","currentColor","stroke-width","1.5","stroke-linecap","round"],["cx","12","cy","8","r","3.2","stroke","currentColor","stroke-width","1.6"],["d","M5 20c0-3.3 3.1-6 7-6s7 2.7 7 6","stroke","currentColor","stroke-width","1.6","stroke-linecap","round"],["d","M17 13.5l1 1.5-.8.5.8 1.5H16l-.3-1-.7.2-.7-.2-.3 1h-2l.8-1.5-.8-.5 1-1.5","stroke","currentColor","stroke-width","1.3","stroke-linejoin","round"],["d","M5 20a7 7 0 0114 0","stroke","currentColor","stroke-width","1.6","stroke-linecap","round"]],template:function(t,i){t&1&&(s(0,"agentos-action-card",0),p("nameClicked",function(){return i.onSelect()})("menuAction",function(o){return i.onMenuAction(o)}),k(1,X,5,0,"ng-container",1)(2,Y,50,0,"ng-container",1),a()),t&2&&(C("name",i.namespace().name)("menuItems",i.pendingDelete()?R(3,Q):i.menuItems),P(),y(i.pendingDelete()?1:2))},dependencies:[F,U,B],styles:[".ns-confirm-label[_ngcontent-%COMP%]{font:500 12px Inter,sans-serif;color:var(--color-error, #a5140a);white-space:nowrap;align-self:center}"],changeDetection:0})};var Z=()=>[];function ee(d,n){if(d&1){let t=v();s(0,"agentos-namespace-item",3),p("selected",function(e){c(t);let o=r(2);return m(o.navigateToHome(e.id??""))})("editRequested",function(e){c(t);let o=r(2);return m(o.navigateToEdit(e))})("deleteRequested",function(e){c(t);let o=r(2);return m(o.deleteNamespace(e))})("integrationsRequested",function(e){c(t);let o=r(2);return m(o.openIntegrations(e))})("aiProvidersRequested",function(e){c(t);let o=r(2);return m(o.openAiProviders(e))})("aiModelsRequested",function(e){c(t);let o=r(2);return m(o.openAiModels(e))})("agentConfigsRequested",function(e){c(t);let o=r(2);return m(o.openAgentConfigs(e))})("promptsRequested",function(e){c(t);let o=r(2);return m(o.openPrompts(e))})("scheduledPromptsRequested",function(e){c(t);let o=r(2);return m(o.openScheduledPrompts(e))})("userGroupsRequested",function(e){c(t);let o=r(2);return m(o.openUserGroups(e))})("membersRequested",function(e){c(t);let o=r(2);return m(o.openMembers(e))})("authSettingsRequested",function(e){c(t);let o=r(2);return m(o.openAuthSettings(e))}),a()}d&2&&C("namespace",n)}function te(d,n){if(d&1&&k(0,ee,1,1,"agentos-namespace-item",2),d&2){let t,i=n.$implicit,e=r();y((t=e.namespacesById().get(i.id))?0:-1,t)}}var W=class d{router=f($);namespaceController=f(j);destroyRef=f(I);refresh$=new S(void 0);namespaces$=this.refresh$.pipe(T(()=>this.namespaceController.listAllNamespace()));namespaceItems$=this.namespaces$.pipe(V(n=>n.map(t=>({id:t.id??"",name:t.name,description:t.description,badges:t.defaultAgentName?[{label:t.defaultAgentName,variant:"info"}]:void 0}))));namespacesById=x(new Map);constructor(){this.namespaces$.pipe(N(this.destroyRef)).subscribe(n=>{this.namespacesById.set(new Map(n.map(t=>[t.id??"",t])))})}navigateToHome(n){this.router.navigate(["/agentos/home"],{queryParams:{ns:n}})}navigateToCreate(){this.router.navigate(["/agentos/namespaces/new"])}navigateToEdit(n){this.router.navigate(["/agentos/namespaces",n.id??"","edit"])}openIntegrations(n){this.router.navigate(["/agentos",n.id,"integrations"])}openAiProviders(n){this.router.navigate(["/agentos",n.id,"ai-providers"])}openAiModels(n){this.router.navigate(["/agentos",n.id,"ai-models"])}openAgentConfigs(n){this.router.navigate(["/agentos",n.id,"agent-configs"])}openPrompts(n){this.router.navigate(["/agentos",n.id,"prompts"])}openScheduledPrompts(n){this.router.navigate(["/agentos",n.id,"scheduled-prompts"])}openUserGroups(n){this.router.navigate(["/agentos",n.id,"user-groups"])}openAuthSettings(n){this.router.navigate(["/agentos",n.id,"auth-settings"])}openMembers(n){this.router.navigate(["/agentos",n.id,"members"])}deleteNamespace(n){this.namespaceController.deleteNamespace(n.id??"").pipe(N(this.destroyRef)).subscribe(()=>this.refresh$.next())}static \u0275fac=function(t){return new(t||d)};static \u0275cmp=w({type:d,selectors:[["agentos-namespace-list"]],decls:4,vars:6,consts:[["namespaceItemTpl",""],["title","Namespaces","emptyMessage","No namespaces yet. Create one to get started.","cardMinWidth","400px",3,"itemSelected","createRequested","items","showCreate","itemTemplate"],[3,"namespace"],[3,"selected","editRequested","deleteRequested","integrationsRequested","aiProvidersRequested","aiModelsRequested","agentConfigsRequested","promptsRequested","scheduledPromptsRequested","userGroupsRequested","membersRequested","authSettingsRequested","namespace"]],template:function(t,i){if(t&1&&(s(0,"ds-entity-list",1),E(1,"async"),p("itemSelected",function(o){return i.navigateToHome(o)})("createRequested",function(){return i.navigateToCreate()}),a(),L(2,te,1,1,"ng-template",null,0,G)),t&2){let e=A(3);C("items",D(1,3,i.namespaceItems$)??R(5,Z))("showCreate",!0)("itemTemplate",e)}},dependencies:[M,z,O],styles:["[_nghost-%COMP%] .ac, [_nghost-%COMP%] .ac--clickable{background:var(--color-bg);border:1px solid var(--color-divider);box-shadow:none}[_nghost-%COMP%] .ac:hover, [_nghost-%COMP%] .ac--clickable:hover{border-color:var(--color-accent);box-shadow:none}[_nghost-%COMP%] .ac__mark{width:28px;height:28px;border-radius:0;background:var(--color-accent-900);color:var(--color-accent-100);font-family:var(--font-heading);font-weight:600;font-size:13px}[_nghost-%COMP%] .ac__name{font-family:var(--font-heading);font-weight:600;font-size:16.5px;line-height:1.15;overflow-wrap:anywhere;color:var(--color-text)}[_nghost-%COMP%] .ac__chips{gap:6px;padding:0 16px 16px}[_nghost-%COMP%] .ac-chip{border:1px solid var(--color-divider);color:var(--color-neutral-600);background:transparent;font-family:var(--font-heading);font-weight:600;font-size:11px;letter-spacing:.08em;text-transform:uppercase}[_nghost-%COMP%] .ac-chip:hover{background:var(--color-accent-100);border-color:var(--color-accent-300);color:var(--color-accent-700)}"],changeDetection:0})};export{M as a,W as b};
@@ -1 +1 @@
1
- import{a as D}from"./chunk-TCHHDPN6.js";import{h as $}from"./chunk-UQTA3ACH.js";import{c as M}from"./chunk-6XX7GME4.js";import{s as k,z as E}from"./chunk-VNO76B3S.js";import"./chunk-E6T6QLQT.js";import"./chunk-SPV5SLNS.js";import{a as d}from"./chunk-VMYKE4ZC.js";import"./chunk-AS2L77JV.js";import"./chunk-7OGOI6WM.js";import"./chunk-G5RWG2GK.js";import{Bb as R,Db as s,Fb as g,Lc as B,Pb as w,S as u,Wa as I,ab as h,ca as r,cc as P,fc as x,ga as m,gc as T,ha as p,i as _,jc as q,lb as v,ma as y,mb as b,rb as l,sb as a,t as C,tb as c}from"./chunk-CHEXA6RY.js";var V=()=>[];function F(i,e){if(i&1){let t=R();a(0,"agentos-integration-config-item",4),s("editRequested",function(n){m(t);let f=g(2);return p(f.onEdit(n))})("deleteRequested",function(n){m(t);let f=g(2);return p(f.deleteConfig(n))}),c()}i&2&&l("config",e)}function L(i,e){if(i&1&&v(0,F,1,1,"agentos-integration-config-item",3),i&2){let t,o=e.$implicit,n=g();b((t=n.resolveConfig(o.id))?0:-1,t)}}var S=class i{router=r(M);destroyRef=r(y);integrationConfigController=r($);refresh$=new _(void 0);configs$=this.refresh$.pipe(u(()=>this.integrationConfigController.listIntegrationConfig()));configItems$=this.configs$.pipe(C(e=>e.map(t=>({id:t.id??"",name:t.name,description:t.integrationType}))));configsById=new Map;constructor(){this.configs$.pipe(d(this.destroyRef)).subscribe(e=>{this.configsById=new Map(e.map(t=>[t.id??"",t]))})}goBack(){this.router.navigate(["/agentos","admin"])}openCreateForm(){this.router.navigate(["/agentos","admin","integration-configs","new"])}deleteConfig(e){this.integrationConfigController.deleteIntegrationConfig(e.id??"").pipe(d(this.destroyRef)).subscribe(()=>this.refresh$.next())}onEdit(e){this.router.navigate(["/agentos","admin","integration-configs",e.id??"","edit"])}resolveConfig(e){return this.configsById.get(e)??null}static \u0275fac=function(t){return new(t||i)};static \u0275cmp=I({type:i,selectors:[["agentos-platform-integration-configs"]],decls:5,vars:6,consts:[["integrationConfigItemTpl",""],["title","Platform Integration Configs","emptyMessage","No platform integration configs defined yet. Add one above.","cardMinWidth","400px",3,"createRequested","items","showCreate","itemTemplate"],["toolbar-start","","icon","arrow_back","title","Back",3,"action"],["scope","platform",3,"config"],["scope","platform",3,"editRequested","deleteRequested","config"]],template:function(t,o){if(t&1&&(a(0,"ds-entity-list",1),x(1,"async"),s("createRequested",function(){return o.openCreateForm()}),a(2,"ds-icon-button",2),s("action",function(){return o.goBack()}),c()(),h(3,L,1,1,"ng-template",null,0,q)),t&2){let n=w(4);l("items",T(1,3,o.configItems$)??P(5,V))("showCreate",!0)("itemTemplate",n)}},dependencies:[E,D,k,B],styles:[".platform-integration-configs__back[_ngcontent-%COMP%]{background:none;border:none;padding:0;cursor:pointer;font-size:.875rem;color:var(--color-primary, #007aff);font-family:inherit}.platform-integration-configs__back[_ngcontent-%COMP%]:hover{text-decoration:underline}"],changeDetection:0})};export{S as PlatformIntegrationConfigsComponent};
1
+ import{a as D}from"./chunk-TCHHDPN6.js";import{h as $}from"./chunk-C2LUO2MP.js";import{c as M}from"./chunk-6XX7GME4.js";import{s as k,z as E}from"./chunk-VNO76B3S.js";import"./chunk-E6T6QLQT.js";import"./chunk-SPV5SLNS.js";import{a as d}from"./chunk-VMYKE4ZC.js";import"./chunk-AS2L77JV.js";import"./chunk-7OGOI6WM.js";import"./chunk-G5RWG2GK.js";import{Bb as R,Db as s,Fb as g,Lc as B,Pb as w,S as u,Wa as I,ab as h,ca as r,cc as P,fc as x,ga as m,gc as T,ha as p,i as _,jc as q,lb as v,ma as y,mb as b,rb as l,sb as a,t as C,tb as c}from"./chunk-CHEXA6RY.js";var V=()=>[];function F(i,e){if(i&1){let t=R();a(0,"agentos-integration-config-item",4),s("editRequested",function(n){m(t);let f=g(2);return p(f.onEdit(n))})("deleteRequested",function(n){m(t);let f=g(2);return p(f.deleteConfig(n))}),c()}i&2&&l("config",e)}function L(i,e){if(i&1&&v(0,F,1,1,"agentos-integration-config-item",3),i&2){let t,o=e.$implicit,n=g();b((t=n.resolveConfig(o.id))?0:-1,t)}}var S=class i{router=r(M);destroyRef=r(y);integrationConfigController=r($);refresh$=new _(void 0);configs$=this.refresh$.pipe(u(()=>this.integrationConfigController.listIntegrationConfig()));configItems$=this.configs$.pipe(C(e=>e.map(t=>({id:t.id??"",name:t.name,description:t.integrationType}))));configsById=new Map;constructor(){this.configs$.pipe(d(this.destroyRef)).subscribe(e=>{this.configsById=new Map(e.map(t=>[t.id??"",t]))})}goBack(){this.router.navigate(["/agentos","admin"])}openCreateForm(){this.router.navigate(["/agentos","admin","integration-configs","new"])}deleteConfig(e){this.integrationConfigController.deleteIntegrationConfig(e.id??"").pipe(d(this.destroyRef)).subscribe(()=>this.refresh$.next())}onEdit(e){this.router.navigate(["/agentos","admin","integration-configs",e.id??"","edit"])}resolveConfig(e){return this.configsById.get(e)??null}static \u0275fac=function(t){return new(t||i)};static \u0275cmp=I({type:i,selectors:[["agentos-platform-integration-configs"]],decls:5,vars:6,consts:[["integrationConfigItemTpl",""],["title","Platform Integration Configs","emptyMessage","No platform integration configs defined yet. Add one above.","cardMinWidth","400px",3,"createRequested","items","showCreate","itemTemplate"],["toolbar-start","","icon","arrow_back","title","Back",3,"action"],["scope","platform",3,"config"],["scope","platform",3,"editRequested","deleteRequested","config"]],template:function(t,o){if(t&1&&(a(0,"ds-entity-list",1),x(1,"async"),s("createRequested",function(){return o.openCreateForm()}),a(2,"ds-icon-button",2),s("action",function(){return o.goBack()}),c()(),h(3,L,1,1,"ng-template",null,0,q)),t&2){let n=w(4);l("items",T(1,3,o.configItems$)??P(5,V))("showCreate",!0)("itemTemplate",n)}},dependencies:[E,D,k,B],styles:[".platform-integration-configs__back[_ngcontent-%COMP%]{background:none;border:none;padding:0;cursor:pointer;font-size:.875rem;color:var(--color-primary, #007aff);font-family:inherit}.platform-integration-configs__back[_ngcontent-%COMP%]:hover{text-decoration:underline}"],changeDetection:0})};export{S as PlatformIntegrationConfigsComponent};
@@ -1 +1 @@
1
- import{b as a}from"./chunk-XZRVHU66.js";import"./chunk-Y42FQQZC.js";import"./chunk-UQTA3ACH.js";import"./chunk-6XX7GME4.js";import"./chunk-VNO76B3S.js";import"./chunk-E6T6QLQT.js";import"./chunk-SPV5SLNS.js";import"./chunk-VMYKE4ZC.js";import"./chunk-AS2L77JV.js";import"./chunk-7OGOI6WM.js";import"./chunk-G5RWG2GK.js";import"./chunk-CHEXA6RY.js";export{a as NamespaceListComponent};
1
+ import{b as a}from"./chunk-QKICZGWX.js";import"./chunk-Y42FQQZC.js";import"./chunk-C2LUO2MP.js";import"./chunk-6XX7GME4.js";import"./chunk-VNO76B3S.js";import"./chunk-E6T6QLQT.js";import"./chunk-SPV5SLNS.js";import"./chunk-VMYKE4ZC.js";import"./chunk-AS2L77JV.js";import"./chunk-7OGOI6WM.js";import"./chunk-G5RWG2GK.js";import"./chunk-CHEXA6RY.js";export{a as NamespaceListComponent};