@whoz-oss/coday-client 0.235.0 → 0.237.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 (57) hide show
  1. package/browser/{chunk-RDEFHYHJ.js → chunk-2CLK2YAQ.js} +1 -1
  2. package/browser/{chunk-AK3ITDZL.js → chunk-4ECUO2YY.js} +1 -1
  3. package/browser/{chunk-7PHHASXE.js → chunk-4L5XXGY5.js} +1 -1
  4. package/browser/{chunk-6OUF4MB3.js → chunk-52YWFGFN.js} +1 -1
  5. package/browser/{chunk-EPOMVQLK.js → chunk-56AGQTO5.js} +1 -1
  6. package/browser/{chunk-VDPBH6I4.js → chunk-5RWZLO37.js} +1 -1
  7. package/browser/{chunk-ZO272F3U.js → chunk-6HEZEZQQ.js} +1 -1
  8. package/browser/chunk-6IRQTSLR.js +1 -0
  9. package/browser/{chunk-C7HN2AHW.js → chunk-7ANJLUAR.js} +1 -1
  10. package/browser/{chunk-QNOZT6US.js → chunk-7B5RR6OB.js} +1 -1
  11. package/browser/{chunk-3WHV3A3F.js → chunk-AGSUKDEP.js} +1 -1
  12. package/browser/{chunk-PBZL7DN5.js → chunk-BCOLCGBR.js} +1 -1
  13. package/browser/{chunk-PL3BJFLT.js → chunk-C247RNXV.js} +1 -1
  14. package/browser/{chunk-GVUZDCHM.js → chunk-C2MMUL6Z.js} +1 -1
  15. package/browser/{chunk-D4DYD37W.js → chunk-CLFHWHV3.js} +1 -1
  16. package/browser/{chunk-JWECOKZF.js → chunk-D2KVGRJG.js} +1 -1
  17. package/browser/{chunk-J3QUVW75.js → chunk-DAVGOCJA.js} +1 -1
  18. package/browser/{chunk-6V5ZHXTF.js → chunk-DEGPUDRF.js} +1 -1
  19. package/browser/{chunk-HW7FY6FY.js → chunk-DFVPKNEZ.js} +1 -1
  20. package/browser/{chunk-OLEK57CJ.js → chunk-DOYGU26T.js} +1 -1
  21. package/browser/{chunk-U26U4YUX.js → chunk-EQ2MGILE.js} +1 -1
  22. package/browser/{chunk-QO3SLUF6.js → chunk-FTITYI4Y.js} +1 -1
  23. package/browser/{chunk-SLVL4O7X.js → chunk-FZ3YRMXP.js} +1 -1
  24. package/browser/{chunk-OESN2OVC.js → chunk-GGXIZQ5Z.js} +1 -1
  25. package/browser/{chunk-XZDUSWYE.js → chunk-GSKGPUJP.js} +1 -1
  26. package/browser/{chunk-HQF5YXBC.js → chunk-HPTSFOTX.js} +1 -1
  27. package/browser/{chunk-3L5HH2LW.js → chunk-IA34GXSW.js} +1 -1
  28. package/browser/{chunk-T5DS7HZO.js → chunk-IKC6FOAS.js} +1 -1
  29. package/browser/{chunk-3XEA5TTG.js → chunk-IX5GY56Q.js} +1 -1
  30. package/browser/{chunk-HGDDIJKH.js → chunk-JNRTSSCT.js} +1 -1
  31. package/browser/{chunk-62SCRDTI.js → chunk-KAHTS3U2.js} +1 -1
  32. package/browser/{chunk-5P3YDX4D.js → chunk-KPMHVYDB.js} +1 -1
  33. package/browser/{chunk-FIDJLAO5.js → chunk-L775A25Y.js} +1 -1
  34. package/browser/{chunk-B235KWLK.js → chunk-LXPX6CQ5.js} +1 -1
  35. package/browser/chunk-NTK45Y5Q.js +1 -0
  36. package/browser/{chunk-4QUKFJVG.js → chunk-NTOOPF4U.js} +1 -1
  37. package/browser/{chunk-CMDN4G5T.js → chunk-NXIT4K7S.js} +1 -1
  38. package/browser/{chunk-YONCBD5A.js → chunk-O23Q6ASL.js} +1 -1
  39. package/browser/{chunk-UWESGTIU.js → chunk-O43NRMZR.js} +1 -1
  40. package/browser/{chunk-IGXPPLQW.js → chunk-O64KQPLM.js} +1 -1
  41. package/browser/{chunk-M4ES4I34.js → chunk-P3BVMFVH.js} +1 -1
  42. package/browser/{chunk-GGJJHI5J.js → chunk-PYYMSIRG.js} +1 -1
  43. package/browser/{chunk-7WNGYNNF.js → chunk-QMOVIQK5.js} +1 -1
  44. package/browser/{chunk-DYASMOHQ.js → chunk-S4JIGFDJ.js} +1 -1
  45. package/browser/{chunk-5F4OBAQR.js → chunk-UA6LHKG4.js} +1 -1
  46. package/browser/{chunk-IUKPWUMW.js → chunk-VXUJN775.js} +1 -1
  47. package/browser/{chunk-BSULGZWF.js → chunk-WJRZREJX.js} +1 -1
  48. package/browser/{chunk-OJPNIW6G.js → chunk-WM6MYYA2.js} +1 -1
  49. package/browser/{chunk-MGHX6XY3.js → chunk-WVZ5QVRG.js} +1 -1
  50. package/browser/{chunk-FKSUXVTW.js → chunk-XCEJNQPJ.js} +1 -1
  51. package/browser/{chunk-BJ6IXKIG.js → chunk-XUPIAUO6.js} +1 -1
  52. package/browser/{chunk-B4YVERDA.js → chunk-Y7VACSHM.js} +1 -1
  53. package/browser/index.html +1 -1
  54. package/browser/{main-6K2RB63O.js → main-OKF3ZHGL.js} +1 -1
  55. package/package.json +1 -1
  56. package/browser/chunk-3SWGL6G7.js +0 -1
  57. package/browser/chunk-DDBWRK3B.js +0 -1
@@ -1,4 +1,4 @@
1
- import{a as Gt}from"./chunk-TBHL5APT.js";import{c as Le}from"./chunk-R727IQCN.js";import{a as Wt}from"./chunk-6OUF4MB3.js";import{a as jt,b as Qt}from"./chunk-VDPBH6I4.js";import{a as qe}from"./chunk-FIDJLAO5.js";import{d as Ut}from"./chunk-UNIVHWT7.js";import{a as Re,b as It,f as Vt,g as Rt,j as Nt,r as At,s as Ne}from"./chunk-DDBWRK3B.js";import{a as qt,b as Lt,c as zt}from"./chunk-3A3LFDQO.js";import{a as de,c as Ve}from"./chunk-COLWSJEP.js";import{o as we,p as $t,q as Ht,r as Ae,s as X,t as Bt,u as Fe}from"./chunk-2X6HKQMK.js";import{a as U,b as Ft,c as ve}from"./chunk-PUWEEZSA.js";import{$b as yt,Ab as at,Ac as kt,Bb as b,D as le,Db as _,Eb as te,F as Me,Fb as s,Ga as he,Jb as ht,Ka as c,Kb as ft,Kc as Pt,Lb as Ct,Ma as xe,Nb as H,Nc as Ot,Ob as B,P as dt,Pb as fe,Q as pt,Qb as ce,Rb as O,S as Ee,Sb as bt,Tb as m,Ub as y,V as mt,Vb as K,Wa as D,Xc as Ie,Yb as xt,Z,Zb as vt,_b as wt,_c as Dt,a as j,ab as ut,ac as St,b as J,bc as ke,ca as T,d as G,dc as Mt,ec as Et,fc as Pe,ga as d,gc as Oe,h as nt,ha as p,i as ot,ia as k,ja as L,jb as $,jc as Tt,kb as gt,lb as g,m as re,ma as ee,mb as h,mc as E,n as be,pa as _t,pb as R,pc as w,qb as N,qc as f,r as Se,rb as x,rc as z,sb as r,sc as De,t as se,ta as v,tb as l,ua as Y,ub as S,vb as V,wb as A,xb as Q,y as it,ya as ge}from"./chunk-3DOXTB6J.js";function gn(i,t){i&1&&(k(),Q(0,"circle",2)(1,"path",3))}function hn(i,t){i&1&&(k(),Q(0,"circle",4)(1,"circle",5))}function fn(i,t){i&1&&(k(),Q(0,"circle",6)(1,"rect",7))}function Cn(i,t){i&1&&(k(),Q(0,"circle",8)(1,"line",9)(2,"circle",10))}function bn(i,t){i&1&&(k(),Q(0,"circle",1))}var pe=class i{status=f.required();size=f(16);Status=Ne;static \u0275fac=function(e){return new(e||i)};static \u0275cmp=D({type:i,selectors:[["agentos-case-status-glyph"]],hostVars:8,hostBindings:function(e,n){e&2&&O("is-running",n.status()===n.Status.RUNNING)("is-pending",n.status()===n.Status.PENDING)("is-error",n.status()===n.Status.ERROR)("is-killed",n.status()===n.Status.KILLED)},inputs:{status:[1,"status"],size:[1,"size"]},decls:6,vars:3,consts:[["viewBox","0 0 16 16","fill","none","aria-hidden","true"],["cx","8","cy","8","r","5.5","stroke","currentColor","stroke-width","1.6"],["cx","8","cy","8","r","6","stroke","currentColor","stroke-width","1.6","opacity","0.25"],["d","M8 2 A6 6 0 0 1 14 8","stroke","currentColor","stroke-width","1.8","stroke-linecap","round",1,"arc"],["cx","8","cy","8","r","6","stroke","currentColor","stroke-width","1.4","opacity","0.5"],["cx","8","cy","8","r","2.4","fill","currentColor",1,"dot"],["cx","8","cy","8","r","6.2","fill","currentColor","opacity","0.9"],["x","4.6","y","7.1","width","6.8","height","1.8","fill","var(--color-bg)"],["cx","8","cy","8","r","6.2","fill","currentColor"],["x1","8","y1","4.6","x2","8","y2","8.8","stroke","var(--color-bg)","stroke-width","1.7","stroke-linecap","round"],["cx","8","cy","11.2","r","1","fill","var(--color-bg)"]],template:function(e,n){if(e&1&&(k(),V(0,"svg",0),g(1,gn,2,0)(2,hn,2,0)(3,fn,2,0)(4,Cn,3,0)(5,bn,1,0,":svg:circle",1),A()),e&2){let o;$("width",n.size())("height",n.size()),c(),h((o=n.status())===n.Status.RUNNING?1:o===n.Status.PENDING?2:o===n.Status.KILLED?3:o===n.Status.ERROR?4:5)}},styles:["[_nghost-%COMP%]{display:inline-grid;place-items:center;flex:none;pointer-events:none;color:var(--status-idle-color)}.is-running[_nghost-%COMP%]{color:var(--color-accent)}.is-running[_nghost-%COMP%] .arc[_ngcontent-%COMP%]{transform-origin:center;animation:_ngcontent-%COMP%_glyph-spin .9s linear infinite}.is-pending[_nghost-%COMP%]{color:var(--status-pending-color)}.is-pending[_nghost-%COMP%] .dot[_ngcontent-%COMP%]{animation:_ngcontent-%COMP%_glyph-pulse 1.5s ease infinite}.is-error[_nghost-%COMP%]{color:var(--red)}.is-killed[_nghost-%COMP%]{color:var(--status-killed-color)}@keyframes _ngcontent-%COMP%_glyph-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes _ngcontent-%COMP%_glyph-pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.4;transform:scale(.6)}}"],changeDetection:0})};var me=class i{caseController=T(Vt);cases=v([]);loadSubscription=null;currentNamespaceId=null;loadCases(t){t!==this.currentNamespaceId&&(this.currentNamespaceId=t,this.cases.set([])),this.loadSubscription?.unsubscribe(),this.loadSubscription=this.caseController.listMineByParentCase(t).subscribe({next:e=>{this.cases.set(e),this.loadSubscription=null},error:e=>{console.error(`[CaseState] Failed to load cases for namespace ${t}:`,e),this.loadSubscription=null}})}deleteCase(t){return this.caseController.deleteCase(t).pipe(mt(()=>this.reloadCurrent()))}setStarred(t,e){return it(()=>(this.patchFavorite(t,e),(e?this.caseController.starCase(t):this.caseController.unstarCase(t)).pipe(le(o=>(this.patchFavorite(t,!e),be(()=>o))))))}renameCase(t,e){return it(()=>{let n=this.cases().find(a=>a.id===t);if(!n)return be(()=>new Error(`[CaseState] Case ${t} is not in the current list`));let o=n.title;return this.patchTitle(t,e),this.caseController.updateCase(t,J(j({},n),{title:e})).pipe(le(a=>(this.patchTitle(t,o),be(()=>a))))})}patchFavorite(t,e){this.cases.update(n=>n.map(o=>o.id===t?J(j({},o),{favorite:e}):o))}patchTitle(t,e){this.cases.update(n=>n.map(o=>o.id===t?J(j({},o),{title:e}):o))}reloadCurrent(){this.currentNamespaceId&&this.loadCases(this.currentNamespaceId)}addCase(t){this.cases.update(e=>[t,...e])}updateCaseTitle(t,e){this.patchTitle(t,e)}updateCaseStatus(t,e){this.cases.update(n=>n.map(o=>o.id===t?J(j({},o),{status:e}):o))}static \u0275fac=function(e){return new(e||i)};static \u0275prov=Z({token:i,factory:i.\u0275fac,providedIn:"root"})};var xn=["promptItem"],Kt=(i,t)=>t.name;function vn(i,t){if(i&1&&(V(0,"span",5),m(1),A()),i&2){let e=t.$implicit;c(),xt("","{","","{","",e.name,"","}","","}")}}function wn(i,t){if(i&1&&(V(0,"span",6),m(1),A()),i&2){let e=s().$implicit;c(),y(e.description)}}function yn(i,t){if(i&1){let e=b();V(0,"li",3,0),te("click",function(){let o=d(e).$implicit,a=s();return p(a.onItemClick(o))})("keydown.enter",function(){let o=d(e).$implicit,a=s();return p(a.onItemClick(o))})("mouseenter",function(){let o=d(e).$index,a=s();return p(a.activeIndex.set(o))}),V(2,"span",4),m(3),R(4,vn,2,5,"span",5,Kt),A(),g(6,wn,2,1,"span",6),A()}if(i&2){let e=t.$implicit,n=t.$index,o=s();O("prompt-autocomplete__item--active",o.isActive(n)),$("aria-selected",o.isActive(n)),c(3),K(" /",e.name," "),c(),N(e.parameters),c(2),h(e.description?6:-1)}}var ne=class i{prompts=f.required();selected=w();dismissed=w();activeIndex=v(0);itemRefs=De("promptItem");constructor(){Y(()=>{this.prompts(),this.activeIndex.set(0)})}navigate(t){let e=this.prompts();switch(t){case"ArrowDown":this.activeIndex.set(Math.min(this.activeIndex()+1,e.length-1)),this.scrollActiveIntoView();break;case"ArrowUp":this.activeIndex.set(Math.max(this.activeIndex()-1,0)),this.scrollActiveIntoView();break;case"Enter":{let n=e[this.activeIndex()];n&&this.selected.emit(n);break}case"Escape":this.dismissed.emit();break}}onItemClick(t){this.selected.emit(t)}isActive(t){return this.activeIndex()===t}completionFor(t){return`/${t.name} `}scrollActiveIntoView(){this.itemRefs()[this.activeIndex()]?.nativeElement.scrollIntoView({block:"nearest"})}static \u0275fac=function(e){return new(e||i)};static \u0275cmp=D({type:i,selectors:[["agentos-prompt-autocomplete"]],viewQuery:function(e,n){e&1&&H(n.itemRefs,xn,5),e&2&&B()},inputs:{prompts:[1,"prompts"]},outputs:{selected:"selected",dismissed:"dismissed"},decls:3,vars:0,consts:[["promptItem",""],["role","listbox","aria-label","Slash commands",1,"prompt-autocomplete"],["role","option","tabindex","-1",1,"prompt-autocomplete__item",3,"prompt-autocomplete__item--active"],["role","option","tabindex","-1",1,"prompt-autocomplete__item",3,"click","keydown.enter","mouseenter"],[1,"prompt-autocomplete__name"],[1,"prompt-autocomplete__param"],[1,"prompt-autocomplete__description"]],template:function(e,n){e&1&&(V(0,"ul",1),R(1,yn,7,5,"li",2,Kt),A()),e&2&&(c(),N(n.prompts()))},styles:[".prompt-autocomplete[_ngcontent-%COMP%]{list-style:none;margin:0;padding:0;max-height:400px;width:100%;overflow-y:auto}.prompt-autocomplete[_ngcontent-%COMP%]::-webkit-scrollbar{width:8px}.prompt-autocomplete[_ngcontent-%COMP%]::-webkit-scrollbar-track{background:transparent}.prompt-autocomplete[_ngcontent-%COMP%]::-webkit-scrollbar-thumb{background:var(--color-border, rgba(0, 0, 0, .15));border-radius:4px}.prompt-autocomplete[_ngcontent-%COMP%]::-webkit-scrollbar-thumb:hover{background:var(--color-text-secondary, #6e6e73)}.prompt-autocomplete[_ngcontent-%COMP%]{display:grid;grid-template-columns:max-content 1fr}.prompt-autocomplete__item[_ngcontent-%COMP%]{grid-column:1/-1;display:grid;grid-template-columns:subgrid;align-items:center;cursor:pointer;transition:background .2s;border-left:3px solid transparent;padding:.5rem 0}.prompt-autocomplete__item[_ngcontent-%COMP%]:hover, .prompt-autocomplete__item--active[_ngcontent-%COMP%]{background:var(--color-bg-hover, rgba(0, 113, 227, .08))}.prompt-autocomplete__item--active[_ngcontent-%COMP%]{border-left-color:var(--color-primary, #007aff)}.prompt-autocomplete__name[_ngcontent-%COMP%]{font-weight:600;font-size:.95rem;color:var(--color-text, #1d1d1f);font-family:SF Mono,Monaco,Menlo,Cascadia Code,Consolas,monospace;white-space:nowrap;padding:0 1.5rem 0 .75rem;display:flex;align-items:center;gap:.4rem}.prompt-autocomplete__param[_ngcontent-%COMP%]{font-size:.85rem;font-family:SF Mono,Monaco,Menlo,Cascadia Code,Consolas,monospace;color:var(--color-text-secondary, #6e6e73);font-weight:400}.prompt-autocomplete__description[_ngcontent-%COMP%]{font-size:.85rem;color:var(--color-text-secondary, #6e6e73);line-height:1.3;padding:0 1rem 0 0}"],changeDetection:0})};var Sn=["agentItem"],Mn=(i,t)=>t.id;function En(i,t){if(i&1&&(V(0,"span",5),m(1),A()),i&2){let e=s().$implicit;c(),y(e.description)}}function Tn(i,t){if(i&1){let e=b();V(0,"li",3,0),te("click",function(){let o=d(e).$implicit,a=s();return p(a.onItemClick(o))})("keydown.enter",function(){let o=d(e).$implicit,a=s();return p(a.onItemClick(o))})("mouseenter",function(){let o=d(e).$index,a=s();return p(a.activeIndex.set(o))}),V(2,"span",4),m(3),A(),g(4,En,2,1,"span",5),A()}if(i&2){let e=t.$implicit,n=t.$index,o=s();O("agent-autocomplete__item--active",o.isActive(n)),$("aria-selected",o.isActive(n)),c(3),y("@"+e.name),c(),h(e.description?4:-1)}}var oe=class i{agents=f.required();selected=w();dismissed=w();activeIndex=v(0);itemRefs=De("agentItem");constructor(){Y(()=>{this.agents(),this.activeIndex.set(0)})}navigate(t){let e=this.agents();switch(t){case"ArrowDown":this.activeIndex.set(Math.min(this.activeIndex()+1,e.length-1)),this.scrollActiveIntoView();break;case"ArrowUp":this.activeIndex.set(Math.max(this.activeIndex()-1,0)),this.scrollActiveIntoView();break;case"Enter":{let n=e[this.activeIndex()];n&&this.selected.emit(n);break}case"Escape":this.dismissed.emit();break}}onItemClick(t){this.selected.emit(t)}isActive(t){return this.activeIndex()===t}completionFor(t){return`@${t.name} `}scrollActiveIntoView(){this.itemRefs()[this.activeIndex()]?.nativeElement.scrollIntoView({block:"nearest"})}static \u0275fac=function(e){return new(e||i)};static \u0275cmp=D({type:i,selectors:[["agentos-agent-autocomplete"]],viewQuery:function(e,n){e&1&&H(n.itemRefs,Sn,5),e&2&&B()},inputs:{agents:[1,"agents"]},outputs:{selected:"selected",dismissed:"dismissed"},decls:3,vars:0,consts:[["agentItem",""],["role","listbox","aria-label","Agent mentions",1,"agent-autocomplete"],["role","option","tabindex","-1",1,"agent-autocomplete__item",3,"agent-autocomplete__item--active"],["role","option","tabindex","-1",1,"agent-autocomplete__item",3,"click","keydown.enter","mouseenter"],[1,"agent-autocomplete__name"],[1,"agent-autocomplete__description"]],template:function(e,n){e&1&&(V(0,"ul",1),R(1,Tn,5,5,"li",2,Mn),A()),e&2&&(c(),N(n.agents()))},styles:['.agent-autocomplete[_ngcontent-%COMP%]{list-style:none;margin:0;padding:0;max-height:400px;width:100%;overflow-y:auto;display:grid;grid-template-columns:max-content 1fr}.agent-autocomplete[_ngcontent-%COMP%]::-webkit-scrollbar{width:8px}.agent-autocomplete[_ngcontent-%COMP%]::-webkit-scrollbar-track{background:transparent}.agent-autocomplete[_ngcontent-%COMP%]::-webkit-scrollbar-thumb{background:var(--color-divider);border-radius:0}.agent-autocomplete[_ngcontent-%COMP%]::-webkit-scrollbar-thumb:hover{background:var(--color-text-secondary)}.agent-autocomplete__item[_ngcontent-%COMP%]{grid-column:1/-1;display:grid;grid-template-columns:subgrid;align-items:center;cursor:pointer;transition:background .12s ease;border-left:3px solid transparent;padding:8px 0}.agent-autocomplete__item[_ngcontent-%COMP%]:hover, .agent-autocomplete__item--active[_ngcontent-%COMP%]{background:var(--color-bg-hover)}.agent-autocomplete__item--active[_ngcontent-%COMP%]{border-left-color:var(--color-accent)}.agent-autocomplete__name[_ngcontent-%COMP%]{font-size:14px;font-weight:600;line-height:1.3;color:var(--color-text, #1d1d1f);font-family:var(--font-body, "Inter", -apple-system, sans-serif);white-space:nowrap;padding:0 24px 0 12px}.agent-autocomplete__description[_ngcontent-%COMP%]{font-family:var(--font-body, "Inter", -apple-system, sans-serif);font-size:.8125rem;font-weight:400;line-height:1.4;color:var(--color-text-secondary, #6e6e73);line-height:1.3;padding:0 16px 0 0}'],changeDetection:0})};var ze=class i{agentConfigController=T(It);userState=T(qe);listEffective(t){let e=this.userState.currentUser(),n=e?.externalId??e?.email??"";return this.agentConfigController.searchAgentConfig({namespaceId:t,userExternalId:n})}static \u0275fac=function(e){return new(e||i)};static \u0275prov=Z({token:i,factory:i.\u0275fac,providedIn:"root"})};function rt(i,t){let e=t.toLowerCase(),n=[],o=[];for(let a of i)a.name.toLowerCase().startsWith(e)?n.push(a):a.description?.toLowerCase().includes(e)&&o.push(a);return[...n,...o]}var _e=class i{promptState=T(Wt);agentState=T(ze);destroyRef=T(ee);slashSuggestions=v([]);atSuggestions=v([]);namespaceId="";effectivePrompts=[];promptsLoaded=!1;slashPrefix$=new nt;effectiveAgents=[];agentsLoaded=!1;atPrefix$=new nt;constructor(){this.slashPrefix$.pipe(Me(60),Ee(t=>(this.promptsLoaded?re(this.effectivePrompts):this.promptState.listEffective(this.namespaceId).pipe(le(()=>re([])))).pipe(se(n=>({prefix:t,prompts:n})))),U(this.destroyRef)).subscribe(({prefix:t,prompts:e})=>{this.effectivePrompts=e,this.promptsLoaded=!0,this.slashSuggestions.set(e.filter(n=>n.name.toLowerCase().startsWith(t.toLowerCase())))}),this.atPrefix$.pipe(Me(60),Ee(t=>(this.agentsLoaded?re(this.effectiveAgents):this.agentState.listEffective(this.namespaceId).pipe(le(()=>re([])))).pipe(se(n=>({prefix:t,agents:n})))),U(this.destroyRef)).subscribe(({prefix:t,agents:e})=>{this.effectiveAgents=e,this.agentsLoaded=!0,this.atSuggestions.set(rt(e,t))})}init(t){this.namespaceId=t}reset(){this.slashSuggestions.set([]),this.effectivePrompts=[],this.promptsLoaded=!1,this.atSuggestions.set([]),this.effectiveAgents=[],this.agentsLoaded=!1}onInput(t,e){e.set(t),this.updateAutocomplete(t)}onKeydown(t,e,n){if(this.slashSuggestions().length>0){if(t.key==="ArrowDown"||t.key==="ArrowUp")return t.preventDefault(),e()?.navigate(t.key),!0;if(t.key==="Escape")return t.preventDefault(),this.slashSuggestions.set([]),!0;if(t.key==="Tab"||t.key==="Enter")return t.preventDefault(),e()?.navigate("Enter"),!0}if(this.atSuggestions().length>0){if(t.key==="ArrowDown"||t.key==="ArrowUp")return t.preventDefault(),n()?.navigate(t.key),!0;if(t.key==="Escape")return t.preventDefault(),this.atSuggestions.set([]),!0;if(t.key==="Tab"||t.key==="Enter")return t.preventDefault(),n()?.navigate("Enter"),!0}return!1}onPromptSelected(t,e,n,o){let a=e()?.completionFor(t)??`/${t.name} `;o.set(a),queueMicrotask(()=>{let u=n()?.nativeElement;u&&(u.value=a,u.setSelectionRange(a.length,a.length),u.focus())}),this.slashSuggestions.set([])}onAgentSelected(t,e,n,o){let a=e()?.completionFor(t)??`@${t.name} `,u=o().replace(/@\w*$/,a);o.set(u),queueMicrotask(()=>{let M=n()?.nativeElement;M&&(M.value=u,M.setSelectionRange(u.length,u.length),M.focus())}),this.atSuggestions.set([])}updateAutocomplete(t){if(t.startsWith("/")){let n=t.slice(1);if(!n.includes(" ")){this.atSuggestions().length&&this.atSuggestions.set([]),this.promptsLoaded&&this.slashSuggestions.set(this.effectivePrompts.filter(o=>o.name.toLowerCase().startsWith(n.toLowerCase()))),this.slashPrefix$.next(n);return}}this.slashSuggestions().length&&this.slashSuggestions.set([]);let e=t.match(/@(\w*)$/);if(e){let n=e[1]??"";this.agentsLoaded&&this.atSuggestions.set(rt(this.effectiveAgents,n)),this.atPrefix$.next(n);return}this.atSuggestions().length&&this.atSuggestions.set([])}static \u0275fac=function(e){return new(e||i)};static \u0275prov=Z({token:i,factory:i.\u0275fac})};var Yt={status:"loading",files:[],capability:"NONE"};function kn(i){return[...i].sort((t,e)=>new Date(e.lastModified).getTime()-new Date(t.lastModified).getTime())}var ie=class i{controller=T(Rt);namespaceId=null;caseId=null;caseRefresh$=new ot(void 0);namespaceRefresh$=new ot(void 0);caseView=this.buildScopeView(this.caseRefresh$,()=>this.caseId,t=>this.controller.getCaseFilesManifestExchange(t));namespaceView=this.buildScopeView(this.namespaceRefresh$,()=>this.namespaceId,t=>this.controller.getNamespaceFilesManifestExchange(t));caseStatus=E(()=>this.caseView().status);namespaceStatus=E(()=>this.namespaceView().status);caseFiles=E(()=>this.caseView().files);namespaceFiles=E(()=>this.namespaceView().files);caseFileCount=E(()=>this.caseFiles().length);namespaceFileCount=E(()=>this.namespaceFiles().length);fileCount=E(()=>this.caseFileCount()+this.namespaceFileCount());canWriteCase=E(()=>this.caseView().capability==="READ_WRITE");canWriteNamespace=E(()=>this.namespaceView().capability==="READ_WRITE");caseSectionVisible=E(()=>this.caseView().status!=="forbidden");namespaceSectionVisible=E(()=>this.namespaceView().status!=="forbidden");caseUploading=v(!1);namespaceUploading=v(!1);loadScope(t){return t().pipe(se(e=>({status:"ready",files:kn(e.files??[]),capability:e.capability??"NONE"})),le(e=>{let n=e?.status===403||e?.status===404;return re({status:n?"forbidden":"error",files:[],capability:"NONE"})}))}buildScopeView(t,e,n){let o=t.pipe(Ee(()=>{let a=e();return a?this.loadScope(()=>n(a)):re(Yt)}),dt({bufferSize:1,refCount:!0}));return ve(o,{initialValue:Yt})}initializeForCase(t,e){this.namespaceId=t,this.caseId=e,this.refreshManifest()}initializeForNamespace(t){this.namespaceId=t,this.namespaceRefresh$.next()}clear(){this.namespaceId=null,this.caseId=null,this.refreshManifest()}refreshManifest(){this.caseRefresh$.next(),this.namespaceRefresh$.next()}refreshCase(){this.caseRefresh$.next()}refreshNamespace(){this.namespaceRefresh$.next()}getContent(t,e){let n=t==="CASE",o=n?this.caseId:this.namespaceId;return o?n?this.controller.getCaseFileContentExchange(o,e):this.controller.getNamespaceFileContentExchange(o,e):be(()=>new Error("No active scope for content request"))}uploadFile(t,e){return G(this,null,function*(){let n=t==="CASE",o=n?this.caseId:this.namespaceId;if(!o)return{success:!1,error:"No active scope"};let a=n?this.caseUploading:this.namespaceUploading;a.set(!0);let u=n?this.controller.uploadCaseFileExchange(o,e):this.controller.uploadNamespaceFileExchange(o,e);return new Promise(M=>{u.subscribe({next:()=>{a.set(!1),this.refreshManifest(),M({success:!0})},error:C=>{a.set(!1),M({success:!1,error:this.uploadErrorMessage(C)})}})})})}uploadErrorMessage(t){let e={400:t?.error?.message??"This file type is not allowed.",409:"A file with this name already exists.",413:"This file is too large."};return t?.status!=null&&e[t.status]||t?.message||"Upload failed"}deleteFile(t,e){return G(this,null,function*(){let n=t==="CASE",o=n?this.caseId:this.namespaceId;if(!o)return{success:!1,error:"No active scope"};let a=n?this.controller.deleteCaseFileExchange(o,e):this.controller.deleteNamespaceFileExchange(o,e);return new Promise(u=>{a.subscribe({next:()=>{this.refreshManifest(),u({success:!0})},error:M=>u({success:!1,error:M?.message??"Delete failed"})})})})}downloadFile(t,e){let n=t==="CASE",o=n?this.caseId:this.namespaceId;if(!o)return Promise.resolve({success:!1,error:"No active scope"});let a=e.split("/").pop()??e,u=n?this.controller.downloadCaseFileExchange(o,e):this.controller.downloadNamespaceFileExchange(o,e);return new Promise(M=>{u.subscribe({next:C=>{this.saveBlob(C,a),M({success:!0})},error:C=>{console.error("[exchange] download failed",C),M({success:!1,error:C?.message??"Download failed"})}})})}downloadAll(t){return G(this,null,function*(){let e=t==="CASE"?this.caseFiles():this.namespaceFiles(),n=0,o=0;for(let a of e)o++>0&&(yield new Promise(M=>setTimeout(M,300))),(yield this.downloadFile(t,a.path)).success||n++;return{success:n===0,failedCount:n}})}saveBlob(t,e){let n=t instanceof Blob?t:new Blob([t]),o=window.URL.createObjectURL(n),a=document.createElement("a");a.href=o,a.download=e,a.style.display="none",document.body.appendChild(a),a.click(),document.body.removeChild(a),window.URL.revokeObjectURL(o)}static \u0275fac=function(e){return new(e||i)};static \u0275prov=Z({token:i,factory:i.\u0275fac,providedIn:"root"})};var Pn=20*1024*1024,On=["pdf","png","jpg","jpeg","gif","webp","zip","tar","gz","exe","bin","doc","docx","xls","xlsx","ppt","pptx"];function st(i){return i.split(".").pop()?.toLowerCase()??""}function He(i){switch(st(i)){case"pdf":return"picture_as_pdf";case"csv":case"xlsx":case"xls":return"table_chart";case"txt":case"md":return"description";case"jpg":case"jpeg":case"png":case"gif":case"webp":return"image";case"zip":case"tar":case"gz":return"folder_zip";default:return"insert_drive_file"}}function Xt(i){return i<1024?`${i} B`:i<1024*1024?`${(i/1024).toFixed(1)} KB`:`${(i/(1024*1024)).toFixed(1)} MB`}function Jt(i){let t=new Date(i);return Number.isNaN(t.getTime())?i:t.toLocaleString(void 0,{year:"numeric",month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})}function Zt(i){switch(st(i)){case"md":case"markdown":return"markdown";case"json":return"json";case"yaml":case"yml":return"yaml";case"html":case"htm":return"html";default:return"text"}}function Dn(i){return!On.includes(st(i))}function In(i){return i<=Pn}function en(i){return Dn(i.filename)&&In(i.size)}function tn(i){try{return JSON.stringify(JSON.parse(i),null,2)}catch(t){return i}}function nn(i){let t=/^(case|namespace)-exchange__(editFiles|remove|moveFile)$/.exec(i??"");return t?t[1]:null}var Vn=["backButton"];function Rn(i,t){if(i&1){let e=b();r(0,"ds-empty-state",7)(1,"button",13),_("click",function(){d(e);let o=s();return p(o.onDownload())}),m(2,"Download instead"),l()()}}function Nn(i,t){i&1&&(r(0,"div",8),S(1,"ds-spinner",14),l())}function An(i,t){if(i&1){let e=b();r(0,"ds-empty-state",9)(1,"button",13),_("click",function(){d(e);let o=s();return p(o.onDownload())}),m(2,"Download instead"),l()()}}function Fn(i,t){if(i&1&&(S(0,"div",10),Pe(1,"agentosMarkdown")),i&2){let e=s();x("innerHTML",Oe(1,1,e.content()),he)}}function qn(i,t){if(i&1&&S(0,"iframe",11),i&2){let e=s();x("srcdoc",e.displayContent(),he)("title","Preview of "+e.filename())}}function Ln(i,t){if(i&1&&(r(0,"pre",12),m(1),l()),i&2){let e=s();c(),y(e.displayContent())}}var Be=class i{file=f.required();content=f(null);status=f("loading");canView=f(!0);closeRequested=w();downloadRequested=w();backButton=z("backButton",{read:ge});constructor(){xe(()=>{this.backButton()?.nativeElement?.querySelector("button")?.focus()})}filename=E(()=>{let t=this.file().path;return t.split("/").pop()??t});format=E(()=>Zt(this.filename()));displayContent=E(()=>{let t=this.content();return t==null?"":this.format()==="json"?tn(t):t});onClose(){this.closeRequested.emit()}onDownload(){this.downloadRequested.emit(this.file())}static \u0275fac=function(e){return new(e||i)};static \u0275cmp=D({type:i,selectors:[["agentos-exchange-content-viewer"]],viewQuery:function(e,n){e&1&&H(n.backButton,Vn,5,ge),e&2&&B()},inputs:{file:[1,"file"],content:[1,"content"],status:[1,"status"],canView:[1,"canView"]},outputs:{closeRequested:"closeRequested",downloadRequested:"downloadRequested"},decls:14,vars:4,consts:[["backButton",""],[1,"exchange-content-viewer"],[1,"exchange-content-viewer__header"],["icon","chevron_left","variant","default","title","Back to files",3,"action"],[1,"exchange-content-viewer__filename",3,"title"],["icon","download","variant","default",3,"action","title"],[1,"exchange-content-viewer__body"],["icon","insert_drive_file","title","Preview not available","hint","This file is binary or too large to display. Download it to view the contents."],[1,"exchange-content-viewer__center"],["icon","error_outline","title","Couldn't load this file","hint","The content could not be retrieved."],[1,"exchange-content-viewer__markdown",3,"innerHTML"],["sandbox","",1,"exchange-content-viewer__iframe",3,"srcdoc","title"],[1,"exchange-content-viewer__pre"],["type","button",1,"exchange-content-viewer__cta",3,"click"],["size","md","label","Loading content"]],template:function(e,n){e&1&&(r(0,"div",1)(1,"header",2)(2,"ds-icon-button",3,0),_("action",function(){return n.onClose()}),l(),r(4,"span",4),m(5),l(),r(6,"ds-icon-button",5),_("action",function(){return n.onDownload()}),l()(),r(7,"div",6),g(8,Rn,3,0,"ds-empty-state",7)(9,Nn,2,0,"div",8)(10,An,3,0,"ds-empty-state",9)(11,Fn,2,3,"div",10)(12,qn,1,2,"iframe",11)(13,Ln,2,1,"pre",12),l()()),e&2&&(c(4),x("title",n.filename()),c(),y(n.filename()),c(),x("title","Download "+n.filename()),c(2),h(n.canView()?n.status()==="loading"?9:n.status()==="error"?10:n.format()==="markdown"?11:n.format()==="html"?12:13:8))},dependencies:[Fe,Ae,X,Gt],styles:['.exchange-content-viewer[_ngcontent-%COMP%]{display:flex;flex-direction:column;height:100%;min-height:0;overflow:hidden}.exchange-content-viewer__header[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.5rem;padding:.5rem .5rem .5rem .75rem;border-bottom:1px solid var(--color-border, rgba(0, 0, 0, .1));flex-shrink:0}.exchange-content-viewer__filename[_ngcontent-%COMP%]{flex:1;min-width:0;font-size:.8125rem;font-weight:600;color:var(--color-text, #1d1d1f);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.exchange-content-viewer__body[_ngcontent-%COMP%]{flex:1;min-height:0;overflow:auto;padding:.75rem}.exchange-content-viewer__iframe[_ngcontent-%COMP%]{width:100%;height:100%;min-height:320px;border:1px solid var(--color-border, rgba(0, 0, 0, .1));border-radius:8px;background:#fff}.exchange-content-viewer__cta[_ngcontent-%COMP%]{appearance:none;cursor:pointer;padding:.4rem .9rem;border-radius:8px;border:1px solid var(--color-border, rgba(0, 0, 0, .1));background:var(--color-primary, #007aff);color:var(--color-text-inverse, #ffffff);font-size:.8125rem;font-weight:600}.exchange-content-viewer__cta[_ngcontent-%COMP%]:hover{background:var(--color-primary-hover, #0066d6)}.exchange-content-viewer__cta[_ngcontent-%COMP%]:focus-visible{outline:2px solid var(--color-primary, #007aff);outline-offset:2px}.exchange-content-viewer__center[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:center;height:100%}.exchange-content-viewer__pre[_ngcontent-%COMP%]{margin:0;white-space:pre-wrap;word-break:break-word;font-family:var(--font-mono, ui-monospace, "SF Mono", "Menlo", monospace);font-size:.75rem;line-height:1.5;color:var(--color-text, #1d1d1f)}.exchange-content-viewer__markdown[_ngcontent-%COMP%]{font-size:.8125rem;line-height:1.6;color:var(--color-text, #1d1d1f);word-break:break-word}.exchange-content-viewer__markdown[_ngcontent-%COMP%] :where(img[_ngcontent-%COMP%], table[_ngcontent-%COMP%], pre[_ngcontent-%COMP%]){max-width:100%}.exchange-content-viewer__markdown[_ngcontent-%COMP%] :where(pre[_ngcontent-%COMP%]){overflow-x:auto}'],changeDetection:0})};var zn=(i,t)=>t.label;function $n(i,t){if(i&1&&(r(0,"span"),m(1),l()),i&2){let e=t.$implicit;bt(St("exchange-item__badge exchange-item__badge--",e.variant)),c(),y(e.label)}}function Hn(i,t){if(i&1){let e=b();r(0,"ds-icon-button",10),_("action",function(){d(e);let o=s();return p(o.deleteRequested.emit())}),l()}if(i&2){let e=s();x("title","Delete "+e.row().filename)}}var Ce=class i{row=f.required();active=f(!1);canWrite=f(!1);viewRequested=w();downloadRequested=w();deleteRequested=w();static toRow(t){return{path:t.path,filename:t.filename,meta:`${Xt(t.size)} \xB7 ${Jt(t.lastModified)}`,icon:He(t.filename)}}static \u0275fac=function(e){return new(e||i)};static \u0275cmp=D({type:i,selectors:[["agentos-exchange-item"]],inputs:{row:[1,"row"],active:[1,"active"],canWrite:[1,"canWrite"]},outputs:{viewRequested:"viewRequested",downloadRequested:"downloadRequested",deleteRequested:"deleteRequested"},decls:14,vars:10,consts:[[1,"exchange-item"],["type","button",1,"exchange-item__main",3,"click"],["aria-hidden","true",1,"exchange-item__icon","material-icons"],[1,"exchange-item__text"],[1,"exchange-item__name"],[1,"exchange-item__meta"],[3,"class"],[1,"exchange-item__actions"],["icon","download","variant","default",3,"action","title"],["icon","delete","variant","danger",3,"title"],["icon","delete","variant","danger",3,"action","title"]],template:function(e,n){e&1&&(r(0,"div",0)(1,"button",1),_("click",function(){return n.viewRequested.emit()}),r(2,"span",2),m(3),l(),r(4,"span",3)(5,"span",4),m(6),l(),r(7,"span",5),m(8),R(9,$n,2,4,"span",6,zn),l()()(),r(11,"div",7)(12,"ds-icon-button",8),_("action",function(){return n.downloadRequested.emit()}),l(),g(13,Hn,1,1,"ds-icon-button",9),l()()),e&2&&(O("exchange-item--active",n.active()),c(),$("data-exchange-path",n.row().path)("aria-current",n.active()?"true":null)("aria-label","View "+n.row().filename),c(2),y(n.row().icon),c(3),y(n.row().filename),c(2),K(" ",n.row().meta," "),c(),N(n.row().badges),c(3),x("title","Download "+n.row().filename),c(),h(n.canWrite()?13:-1))},dependencies:[X],styles:[".exchange-item[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.25rem;padding:.125rem .25rem .125rem .375rem;border-radius:8px;border:1px solid transparent;transition:background .15s ease,border-color .15s ease}.exchange-item[_ngcontent-%COMP%]:hover{background:var(--color-bg-hover, rgba(0, 0, 0, .04))}.exchange-item--active[_ngcontent-%COMP%]{background:var(--color-bg-hover, rgba(0, 0, 0, .04));border-color:var(--color-primary, #007aff)}.exchange-item__main[_ngcontent-%COMP%]{flex:1;min-width:0;display:flex;align-items:center;gap:.5rem;padding:.375rem .25rem;border:none;background:transparent;text-align:left;cursor:pointer;color:inherit;font:inherit}.exchange-item__main[_ngcontent-%COMP%]:focus-visible{outline:2px solid var(--color-primary, #007aff);outline-offset:2px;border-radius:6px}.exchange-item__icon[_ngcontent-%COMP%]{flex-shrink:0;font-size:1.25rem;color:var(--color-text-secondary, #6e6e73)}.exchange-item__text[_ngcontent-%COMP%]{flex:1;min-width:0;display:flex;flex-direction:column;gap:.125rem}.exchange-item__name[_ngcontent-%COMP%]{font-size:.8125rem;font-weight:600;color:var(--color-text, #1d1d1f);line-height:1.3;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.exchange-item__meta[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.375rem;font-size:.6875rem;color:var(--color-text-secondary, #6e6e73);line-height:1.3}.exchange-item__badge[_ngcontent-%COMP%]{display:inline-flex;align-items:center;padding:.0625rem .3rem;border-radius:999px;font-size:.5625rem;font-weight:800;letter-spacing:.04em;text-transform:uppercase;color:#fff}.exchange-item__badge--warning[_ngcontent-%COMP%]{background:var(--color-warning, #ff9500)}.exchange-item__badge--info[_ngcontent-%COMP%]{background:var(--color-info, #5ac8fa)}.exchange-item__badge--success[_ngcontent-%COMP%]{background:var(--color-success, #34c759)}.exchange-item__badge--error[_ngcontent-%COMP%]{background:var(--color-error, #ff3b30)}.exchange-item__actions[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.125rem;flex-shrink:0}"],changeDetection:0})};var Bn=(i,t)=>t.path;function Un(i,t){if(i&1){let e=b();r(0,"li",1)(1,"agentos-exchange-item",2),_("viewRequested",function(){let o=d(e).$implicit,a=s();return p(a.onView(o))})("downloadRequested",function(){let o=d(e).$implicit,a=s();return p(a.onDownload(o))})("deleteRequested",function(){let o=d(e).$implicit,a=s();return p(a.onDelete(o))}),l()()}if(i&2){let e=t.$implicit,n=s();c(),x("row",e)("active",n.isActive(e))("canWrite",n.canWrite())}}var Ue=class i{rows=f.required();scope=f.required();activeFile=f(null);canWrite=f(!1);fileSelected=w();downloadRequested=w();deleteRequested=w();isActive(t){let e=this.activeFile();return e!==null&&e.scope===this.scope()&&e.path===t.path}onView(t){this.fileSelected.emit({scope:this.scope(),path:t.path})}onDownload(t){this.downloadRequested.emit({scope:this.scope(),path:t.path})}onDelete(t){this.deleteRequested.emit({scope:this.scope(),path:t.path})}static \u0275fac=function(e){return new(e||i)};static \u0275cmp=D({type:i,selectors:[["agentos-exchange-file-list"]],inputs:{rows:[1,"rows"],scope:[1,"scope"],activeFile:[1,"activeFile"],canWrite:[1,"canWrite"]},outputs:{fileSelected:"fileSelected",downloadRequested:"downloadRequested",deleteRequested:"deleteRequested"},decls:3,vars:0,consts:[["role","list",1,"exchange-file-list"],["role","listitem",1,"exchange-file-list__row"],[3,"viewRequested","downloadRequested","deleteRequested","row","active","canWrite"]],template:function(e,n){e&1&&(r(0,"ul",0),R(1,Un,2,3,"li",1,Bn),l()),e&2&&(c(),N(n.rows()))},dependencies:[Ce],styles:[".exchange-file-list[_ngcontent-%COMP%]{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.125rem}.exchange-file-list__row[_ngcontent-%COMP%]{display:block}"],changeDetection:0})};var Wn=["fileInput"];function Gn(i,t){if(i&1){let e=b();r(0,"agentos-exchange-content-viewer",4),_("closeRequested",function(){d(e);let o=s();return p(o.onViewerClose())})("downloadRequested",function(o){d(e);let a=s();return p(a.downloadRequested.emit(o))}),l()}if(i&2){let e=s();x("file",t)("content",e.selectedContent())("status",e.contentStatus())("canView",e.canViewSelected())}}function jn(i,t){if(i&1){let e=b();r(0,"ds-icon-button",20),_("action",function(){d(e);let o=s(3);return p(o.triggerUpload(o.CASE))}),l()}if(i&2){let e=s(3);x("disabled",e.caseUploading())}}function Qn(i,t){i&1&&(r(0,"span",15),m(1,"read-only"),l())}function Kn(i,t){if(i&1){let e=b();r(0,"ds-icon-button",21),_("action",function(){d(e);let o=s(3);return p(o.downloadAllRequested.emit(o.CASE))}),l()}}function Yn(i,t){i&1&&(r(0,"p",17),m(1,"Uploading\u2026"),l())}function Xn(i,t){i&1&&(r(0,"div",18),S(1,"ds-spinner",22),l())}function Jn(i,t){if(i&1){let e=b();r(0,"div",19)(1,"span"),m(2,"Couldn't load case files."),l(),r(3,"button",23),_("click",function(){d(e);let o=s(3);return p(o.retryRequested.emit())}),m(4,"Retry"),l()()}}function Zn(i,t){if(i&1&&S(0,"ds-empty-state",24),i&2){let e=s(4);x("hint",e.canWriteCase()?"Upload a file to share it with this case.":void 0)}}function eo(i,t){if(i&1){let e=b();r(0,"agentos-exchange-file-list",26),_("fileSelected",function(o){d(e);let a=s(4);return p(a.onFileSelected(o))})("downloadRequested",function(o){d(e);let a=s(4);return p(a.downloadRequested.emit(o))})("deleteRequested",function(o){d(e);let a=s(4);return p(a.deleteRequested.emit(o))}),l()}if(i&2){let e=s(4);x("rows",e.caseRows())("scope",e.CASE)("canWrite",e.canWriteCase())("activeFile",e.activeFile())}}function to(i,t){if(i&1&&g(0,Zn,1,1,"ds-empty-state",24)(1,eo,1,4,"agentos-exchange-file-list",25),i&2){let e=s(3);h(e.caseFiles().length===0?0:1)}}function no(i,t){if(i&1&&(r(0,"section",9)(1,"div",11)(2,"h3",12),m(3,"Case files"),l(),r(4,"div",13),g(5,jn,1,1,"ds-icon-button",14)(6,Qn,2,0,"span",15),g(7,Kn,1,0,"ds-icon-button",16),l()(),g(8,Yn,2,0,"p",17),g(9,Xn,2,0,"div",18)(10,Jn,5,0,"div",19)(11,to,2,1),l()),i&2){let e,n=s(2);c(5),h(n.canWriteCase()?5:6),c(2),h(n.caseFiles().length>0?7:-1),c(),h(n.caseUploading()?8:-1),c(),h((e=n.caseStatus())==="loading"?9:e==="error"?10:11)}}function oo(i,t){if(i&1){let e=b();r(0,"ds-icon-button",20),_("action",function(){d(e);let o=s(3);return p(o.triggerUpload(o.NAMESPACE))}),l()}if(i&2){let e=s(3);x("disabled",e.namespaceUploading())}}function io(i,t){i&1&&(r(0,"span",15),m(1,"read-only"),l())}function ao(i,t){if(i&1){let e=b();r(0,"ds-icon-button",28),_("action",function(){d(e);let o=s(3);return p(o.downloadAllRequested.emit(o.NAMESPACE))}),l()}}function ro(i,t){i&1&&(r(0,"div",18),S(1,"ds-spinner",29),l())}function so(i,t){if(i&1){let e=b();r(0,"div",19)(1,"span"),m(2,"Couldn't load namespace files."),l(),r(3,"button",23),_("click",function(){d(e);let o=s(3);return p(o.retryRequested.emit())}),m(4,"Retry"),l()()}}function lo(i,t){if(i&1&&S(0,"ds-empty-state",30),i&2){let e=s(4);x("hint",e.canWriteNamespace()?"Upload a file to share it across this namespace.":void 0)}}function co(i,t){if(i&1){let e=b();r(0,"agentos-exchange-file-list",26),_("fileSelected",function(o){d(e);let a=s(4);return p(a.onFileSelected(o))})("downloadRequested",function(o){d(e);let a=s(4);return p(a.downloadRequested.emit(o))})("deleteRequested",function(o){d(e);let a=s(4);return p(a.deleteRequested.emit(o))}),l()}if(i&2){let e=s(4);x("rows",e.namespaceRows())("scope",e.NAMESPACE)("canWrite",e.canWriteNamespace())("activeFile",e.activeFile())}}function po(i,t){if(i&1&&g(0,lo,1,1,"ds-empty-state",30)(1,co,1,4,"agentos-exchange-file-list",25),i&2){let e=s(3);h(e.namespaceFiles().length===0?0:1)}}function mo(i,t){if(i&1&&(r(0,"section",9)(1,"div",11)(2,"h3",12),m(3,"Namespace files"),l(),r(4,"div",13),g(5,oo,1,1,"ds-icon-button",14)(6,io,2,0,"span",15),g(7,ao,1,0,"ds-icon-button",27),l()(),g(8,ro,2,0,"div",18)(9,so,5,0,"div",19)(10,po,2,1),l()),i&2){let e,n=s(2);c(5),h(n.canWriteNamespace()?5:6),c(2),h(n.namespaceFiles().length>0?7:-1),c(),h((e=n.namespaceStatus())==="loading"?8:e==="error"?9:10)}}function _o(i,t){i&1&&(r(0,"p",10),m(1,"No files available."),l())}function uo(i,t){if(i&1){let e=b();r(0,"header",5)(1,"span",6),m(2,"Files"),l(),r(3,"ds-icon-button",7),_("action",function(){d(e);let o=s();return p(o.closeRequested.emit())}),l()(),r(4,"div",8),g(5,no,12,4,"section",9),g(6,mo,11,3,"section",9),g(7,_o,2,0,"p",10),l()}if(i&2){let e=s();c(5),h(e.caseSectionVisible()?5:-1),c(),h(e.namespaceSectionVisible()?6:-1),c(),h(!e.caseSectionVisible()&&!e.namespaceSectionVisible()?7:-1)}}var We=class i{caseFiles=f([]);caseStatus=f.required();caseSectionVisible=f(!1);canWriteCase=f(!1);caseUploading=f(!1);namespaceFiles=f([]);namespaceStatus=f.required();namespaceSectionVisible=f(!1);canWriteNamespace=f(!1);namespaceUploading=f(!1);activeFile=f(null);selectedContent=f(null);contentStatus=f("loading");canViewSelected=f(!0);fileSelected=w();uploadRequested=w();downloadRequested=w();downloadAllRequested=w();deleteRequested=w();retryRequested=w();closeRequested=w();viewerClosed=w();host=T(ge);fileInput=z("fileInput");CASE="CASE";NAMESPACE="NAMESPACE";caseRows=E(()=>this.caseFiles().map(Ce.toRow));namespaceRows=E(()=>this.namespaceFiles().map(Ce.toRow));lastSelectedPath=null;onFileSelected(t){this.lastSelectedPath=t.path,this.fileSelected.emit(t)}onViewerClose(){this.viewerClosed.emit();let t=this.lastSelectedPath;t&&queueMicrotask(()=>{let e=this.host.nativeElement.querySelectorAll("[data-exchange-path]");for(let n of Array.from(e))if(n.getAttribute("data-exchange-path")===t){n.focus();break}})}pendingUploadScope="CASE";triggerUpload(t){this.pendingUploadScope=t,this.fileInput()?.nativeElement.click()}onFileInputChange(t){let e=t.target,n=e.files?Array.from(e.files):[];n.length>0&&this.uploadRequested.emit({scope:this.pendingUploadScope,files:n}),e.value=""}static \u0275fac=function(e){return new(e||i)};static \u0275cmp=D({type:i,selectors:[["agentos-exchange-drawer"]],viewQuery:function(e,n){e&1&&H(n.fileInput,Wn,5),e&2&&B()},inputs:{caseFiles:[1,"caseFiles"],caseStatus:[1,"caseStatus"],caseSectionVisible:[1,"caseSectionVisible"],canWriteCase:[1,"canWriteCase"],caseUploading:[1,"caseUploading"],namespaceFiles:[1,"namespaceFiles"],namespaceStatus:[1,"namespaceStatus"],namespaceSectionVisible:[1,"namespaceSectionVisible"],canWriteNamespace:[1,"canWriteNamespace"],namespaceUploading:[1,"namespaceUploading"],activeFile:[1,"activeFile"],selectedContent:[1,"selectedContent"],contentStatus:[1,"contentStatus"],canViewSelected:[1,"canViewSelected"]},outputs:{fileSelected:"fileSelected",uploadRequested:"uploadRequested",downloadRequested:"downloadRequested",downloadAllRequested:"downloadAllRequested",deleteRequested:"deleteRequested",retryRequested:"retryRequested",closeRequested:"closeRequested",viewerClosed:"viewerClosed"},decls:5,vars:1,consts:[["fileInput",""],[1,"exchange-drawer"],[3,"file","content","status","canView"],["type","file","multiple","","aria-hidden","true","tabindex","-1",1,"exchange-drawer__file-input",3,"change"],[3,"closeRequested","downloadRequested","file","content","status","canView"],[1,"exchange-drawer__header"],[1,"exchange-drawer__title"],["icon","close","variant","default","title","Close files panel",3,"action"],[1,"exchange-drawer__sections"],[1,"exchange-drawer__section"],[1,"exchange-drawer__no-access"],[1,"exchange-drawer__section-header"],[1,"exchange-drawer__section-title"],[1,"exchange-drawer__section-actions"],["icon","upload_file","variant","primary","title","Upload a file",3,"disabled"],[1,"exchange-drawer__readonly-badge"],["icon","download","variant","default","title","Download all case files"],[1,"exchange-drawer__inflight"],[1,"exchange-drawer__center"],["role","alert",1,"exchange-drawer__error"],["icon","upload_file","variant","primary","title","Upload a file",3,"action","disabled"],["icon","download","variant","default","title","Download all case files",3,"action"],["size","md","label","Loading case files"],["type","button",1,"exchange-drawer__retry",3,"click"],["icon","folder_open","title","No case files",3,"hint"],[3,"rows","scope","canWrite","activeFile"],[3,"fileSelected","downloadRequested","deleteRequested","rows","scope","canWrite","activeFile"],["icon","download","variant","default","title","Download all namespace files"],["icon","download","variant","default","title","Download all namespace files",3,"action"],["size","md","label","Loading namespace files"],["icon","folder_shared","title","No namespace files",3,"hint"]],template:function(e,n){if(e&1&&(r(0,"div",1),g(1,Gn,1,4,"agentos-exchange-content-viewer",2)(2,uo,8,3),r(3,"input",3,0),_("change",function(a){return n.onFileInputChange(a)}),l()()),e&2){let o;c(),h((o=n.activeFile())?1:2,o)}},dependencies:[X,Fe,Ae,Ue,Be],styles:[".exchange-drawer[_ngcontent-%COMP%]{display:flex;flex-direction:column;height:100%;min-height:0;overflow:hidden}.exchange-drawer__header[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;gap:.5rem;padding:.5rem .5rem .5rem .75rem;border-bottom:1px solid var(--color-border, rgba(0, 0, 0, .1));flex-shrink:0}.exchange-drawer__title[_ngcontent-%COMP%]{font-size:.875rem;font-weight:700;color:var(--color-text, #1d1d1f)}.exchange-drawer__sections[_ngcontent-%COMP%]{flex:1;min-height:0;overflow:auto;padding:.5rem;display:flex;flex-direction:column;gap:1rem}.exchange-drawer__section-header[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;gap:.5rem;padding:0 .25rem .25rem}.exchange-drawer__section-actions[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.25rem;flex-shrink:0}.exchange-drawer__center[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:center;padding:1.5rem}.exchange-drawer__error[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;gap:.5rem;padding:.5rem .75rem;border-radius:8px;font-size:.8125rem;color:var(--color-error, #ff3b30);background:var(--color-bg-hover, rgba(0, 0, 0, .04))}.exchange-drawer__retry[_ngcontent-%COMP%]{appearance:none;cursor:pointer;border:1px solid var(--color-border, rgba(0, 0, 0, .1));border-radius:6px;background:transparent;padding:.2rem .6rem;font-size:.75rem;font-weight:600;color:var(--color-text, #1d1d1f)}.exchange-drawer__retry[_ngcontent-%COMP%]:hover{background:var(--color-bg-hover, rgba(0, 0, 0, .04))}.exchange-drawer__retry[_ngcontent-%COMP%]:focus-visible{outline:2px solid var(--color-primary, #007aff);outline-offset:2px}.exchange-drawer__inflight[_ngcontent-%COMP%]{margin:0 0 .25rem;padding:0 .25rem;font-size:.75rem;color:var(--color-text-secondary, #6e6e73)}.exchange-drawer__section-title[_ngcontent-%COMP%]{margin:0;font-size:.6875rem;font-weight:800;letter-spacing:.05em;text-transform:uppercase;color:var(--color-text-secondary, #6e6e73)}.exchange-drawer__readonly-badge[_ngcontent-%COMP%]{font-size:.5625rem;font-weight:800;letter-spacing:.05em;text-transform:uppercase;color:var(--color-text-secondary, #6e6e73);border:1px solid var(--color-border, rgba(0, 0, 0, .1));border-radius:999px;padding:.0625rem .375rem}.exchange-drawer__no-access[_ngcontent-%COMP%]{margin:0;padding:1.5rem .75rem;text-align:center;font-size:.8125rem;color:var(--color-text-secondary, #6e6e73)}.exchange-drawer__file-input[_ngcontent-%COMP%]{display:none}"],changeDetection:0})};function go(i,t){if(i&1&&(r(0,"p",1),m(1),l()),i&2){let e=s();c(),y(e.actionError())}}var Ge=class i{route=T(de);destroyRef=T(ee);state=T(ie);closeRequested=w();selectedFile=v(null);selectedContent=v(null);contentStatus=v("loading");canViewSelected=v(!0);actionError=v(null);pendingDelete=v(null);confirmOpen=E(()=>this.pendingDelete()!==null);deleteMessage=E(()=>{let t=this.pendingDelete();return t?`Delete "${t.path.split("/").pop()??t.path}"? This action cannot be undone.`:""});activeCaseId=null;constructor(){this.route.queryParams.pipe(U()).subscribe(t=>{let e=t.ns,n=t.case;if(e&&n){if(n===this.activeCaseId)return;this.activeCaseId=n,this.resetSelection(),this.state.initializeForCase(e,n)}else this.activeCaseId!==null&&(this.activeCaseId=null,this.state.clear())}),Y(t=>t(()=>this.state.clear()))}onFileSelected(t){this.selectedFile.set(t),this.selectedContent.set(null);let e=this.findFile(t),n=e?en(e):!1;if(this.canViewSelected.set(n),!n){this.contentStatus.set("ready");return}this.contentStatus.set("loading"),this.state.getContent(t.scope,t.path).pipe(U(this.destroyRef)).subscribe({next:o=>{this.isStillSelected(t)&&(this.selectedContent.set(o.content),this.contentStatus.set("ready"))},error:()=>{this.isStillSelected(t)&&this.contentStatus.set("error")}})}onUpload(t){return G(this,null,function*(){this.actionError.set(null);let e=[];for(let n of t.files){let o=yield this.state.uploadFile(t.scope,n);o.success||e.push({name:n.name,error:o.error??"Upload failed"})}e.length===1?this.actionError.set(e[0]?.error??"Upload failed"):e.length>1&&this.actionError.set(`${e.length} of ${t.files.length} files failed to upload: ${e.map(n=>n.name).join(", ")}`)})}onDownload(t){return G(this,null,function*(){this.actionError.set(null);let e=yield this.state.downloadFile(t.scope,t.path);e.success||this.actionError.set(e.error??"Download failed")})}onDownloadAll(t){return G(this,null,function*(){this.actionError.set(null);let e=yield this.state.downloadAll(t);e.failedCount>0&&this.actionError.set(e.failedCount===1?"A file failed to download.":`${e.failedCount} files failed to download.`)})}onDeleteRequest(t){this.pendingDelete.set(t)}onConfirmDelete(){return G(this,null,function*(){let t=this.pendingDelete();if(this.pendingDelete.set(null),t){let e=yield this.state.deleteFile(t.scope,t.path);e.success?this.isStillSelected(t)&&this.clearSelection():this.actionError.set(e.error??"Delete failed")}})}onCancelDelete(){this.pendingDelete.set(null)}onRetry(){this.state.refreshManifest()}onClose(){this.closeRequested.emit()}onViewerClosed(){this.clearSelection()}clearSelection(){this.selectedFile.set(null),this.selectedContent.set(null),this.contentStatus.set("loading"),this.canViewSelected.set(!0)}resetSelection(){this.clearSelection(),this.actionError.set(null)}findFile(t){return(t.scope==="CASE"?this.state.caseFiles():this.state.namespaceFiles()).find(n=>n.path===t.path)}isStillSelected(t){let e=this.selectedFile();return e!==null&&e.scope===t.scope&&e.path===t.path}static \u0275fac=function(e){return new(e||i)};static \u0275cmp=D({type:i,selectors:[["agentos-exchange-shell"]],outputs:{closeRequested:"closeRequested"},decls:4,vars:17,consts:[[1,"exchange-shell"],["role","alert",1,"exchange-shell__upload-error"],[1,"exchange-shell__drawer",3,"fileSelected","uploadRequested","downloadRequested","downloadAllRequested","deleteRequested","retryRequested","viewerClosed","closeRequested","caseFiles","caseStatus","caseSectionVisible","canWriteCase","caseUploading","namespaceFiles","namespaceStatus","namespaceSectionVisible","canWriteNamespace","namespaceUploading","activeFile","selectedContent","contentStatus","canViewSelected"],["title","Delete file","confirmLabel","Delete","cancelLabel","Cancel",3,"confirmed","cancelled","open","message"]],template:function(e,n){e&1&&(r(0,"div",0),g(1,go,2,1,"p",1),r(2,"agentos-exchange-drawer",2),_("fileSelected",function(a){return n.onFileSelected(a)})("uploadRequested",function(a){return n.onUpload(a)})("downloadRequested",function(a){return n.onDownload(a)})("downloadAllRequested",function(a){return n.onDownloadAll(a)})("deleteRequested",function(a){return n.onDeleteRequest(a)})("retryRequested",function(){return n.onRetry()})("viewerClosed",function(){return n.onViewerClosed()})("closeRequested",function(){return n.onClose()}),l()(),r(3,"ds-confirm-dialog",3),_("confirmed",function(){return n.onConfirmDelete()})("cancelled",function(){return n.onCancelDelete()}),l()),e&2&&(c(),h(n.actionError()?1:-1),c(),x("caseFiles",n.state.caseFiles())("caseStatus",n.state.caseStatus())("caseSectionVisible",n.state.caseSectionVisible())("canWriteCase",n.state.canWriteCase())("caseUploading",n.state.caseUploading())("namespaceFiles",n.state.namespaceFiles())("namespaceStatus",n.state.namespaceStatus())("namespaceSectionVisible",n.state.namespaceSectionVisible())("canWriteNamespace",n.state.canWriteNamespace())("namespaceUploading",n.state.namespaceUploading())("activeFile",n.selectedFile())("selectedContent",n.selectedContent())("contentStatus",n.contentStatus())("canViewSelected",n.canViewSelected()),c(),x("open",n.confirmOpen())("message",n.deleteMessage()))},dependencies:[We,$t],styles:["[_nghost-%COMP%]{display:flex;flex-direction:column;height:100%;min-height:0}.exchange-shell[_ngcontent-%COMP%]{display:flex;flex-direction:column;height:100%;min-height:0;overflow:hidden}.exchange-shell__drawer[_ngcontent-%COMP%]{flex:1;min-height:0;display:flex;flex-direction:column}.exchange-shell__upload-error[_ngcontent-%COMP%]{margin:0;padding:.5rem .75rem;font-size:.8125rem;color:var(--color-error, #ff3b30);background:var(--color-bg-hover, rgba(0, 0, 0, .04));flex-shrink:0}"],changeDetection:0})};var je=10,ho=/\bnamespace\b/i;function Te(i,t){return ho.test(i)&&t?"NAMESPACE":"CASE"}function Qe(i,t){return Te(i,t)==="NAMESPACE"}function on(i){let t=a=>i.filter(u=>u.uploadedScope===a).map(u=>u.file.name),e=[],n=t("CASE"),o=t("NAMESPACE");return n.length>0&&e.push(`[Files attached to the case exchange: ${n.join(", ")}]`),o.length>0&&e.push(`[Files attached to the namespace exchange: ${o.join(", ")}]`),e.join(`
1
+ import{a as Gt}from"./chunk-TBHL5APT.js";import{c as Le}from"./chunk-R727IQCN.js";import{a as Wt}from"./chunk-52YWFGFN.js";import{a as jt,b as Qt}from"./chunk-5RWZLO37.js";import{a as qe}from"./chunk-L775A25Y.js";import{d as Ut}from"./chunk-UNIVHWT7.js";import{a as Re,b as It,f as Vt,g as Rt,j as Nt,r as At,s as Ne}from"./chunk-NTK45Y5Q.js";import{a as qt,b as Lt,c as zt}from"./chunk-3A3LFDQO.js";import{a as de,c as Ve}from"./chunk-COLWSJEP.js";import{o as we,p as $t,q as Ht,r as Ae,s as X,t as Bt,u as Fe}from"./chunk-2X6HKQMK.js";import{a as U,b as Ft,c as ve}from"./chunk-PUWEEZSA.js";import{$b as yt,Ab as at,Ac as kt,Bb as b,D as le,Db as _,Eb as te,F as Me,Fb as s,Ga as he,Jb as ht,Ka as c,Kb as ft,Kc as Pt,Lb as Ct,Ma as xe,Nb as H,Nc as Ot,Ob as B,P as dt,Pb as fe,Q as pt,Qb as ce,Rb as O,S as Ee,Sb as bt,Tb as m,Ub as y,V as mt,Vb as K,Wa as D,Xc as Ie,Yb as xt,Z,Zb as vt,_b as wt,_c as Dt,a as j,ab as ut,ac as St,b as J,bc as ke,ca as T,d as G,dc as Mt,ec as Et,fc as Pe,ga as d,gc as Oe,h as nt,ha as p,i as ot,ia as k,ja as L,jb as $,jc as Tt,kb as gt,lb as g,m as re,ma as ee,mb as h,mc as E,n as be,pa as _t,pb as R,pc as w,qb as N,qc as f,r as Se,rb as x,rc as z,sb as r,sc as De,t as se,ta as v,tb as l,ua as Y,ub as S,vb as V,wb as A,xb as Q,y as it,ya as ge}from"./chunk-3DOXTB6J.js";function gn(i,t){i&1&&(k(),Q(0,"circle",2)(1,"path",3))}function hn(i,t){i&1&&(k(),Q(0,"circle",4)(1,"circle",5))}function fn(i,t){i&1&&(k(),Q(0,"circle",6)(1,"rect",7))}function Cn(i,t){i&1&&(k(),Q(0,"circle",8)(1,"line",9)(2,"circle",10))}function bn(i,t){i&1&&(k(),Q(0,"circle",1))}var pe=class i{status=f.required();size=f(16);Status=Ne;static \u0275fac=function(e){return new(e||i)};static \u0275cmp=D({type:i,selectors:[["agentos-case-status-glyph"]],hostVars:8,hostBindings:function(e,n){e&2&&O("is-running",n.status()===n.Status.RUNNING)("is-pending",n.status()===n.Status.PENDING)("is-error",n.status()===n.Status.ERROR)("is-killed",n.status()===n.Status.KILLED)},inputs:{status:[1,"status"],size:[1,"size"]},decls:6,vars:3,consts:[["viewBox","0 0 16 16","fill","none","aria-hidden","true"],["cx","8","cy","8","r","5.5","stroke","currentColor","stroke-width","1.6"],["cx","8","cy","8","r","6","stroke","currentColor","stroke-width","1.6","opacity","0.25"],["d","M8 2 A6 6 0 0 1 14 8","stroke","currentColor","stroke-width","1.8","stroke-linecap","round",1,"arc"],["cx","8","cy","8","r","6","stroke","currentColor","stroke-width","1.4","opacity","0.5"],["cx","8","cy","8","r","2.4","fill","currentColor",1,"dot"],["cx","8","cy","8","r","6.2","fill","currentColor","opacity","0.9"],["x","4.6","y","7.1","width","6.8","height","1.8","fill","var(--color-bg)"],["cx","8","cy","8","r","6.2","fill","currentColor"],["x1","8","y1","4.6","x2","8","y2","8.8","stroke","var(--color-bg)","stroke-width","1.7","stroke-linecap","round"],["cx","8","cy","11.2","r","1","fill","var(--color-bg)"]],template:function(e,n){if(e&1&&(k(),V(0,"svg",0),g(1,gn,2,0)(2,hn,2,0)(3,fn,2,0)(4,Cn,3,0)(5,bn,1,0,":svg:circle",1),A()),e&2){let o;$("width",n.size())("height",n.size()),c(),h((o=n.status())===n.Status.RUNNING?1:o===n.Status.PENDING?2:o===n.Status.KILLED?3:o===n.Status.ERROR?4:5)}},styles:["[_nghost-%COMP%]{display:inline-grid;place-items:center;flex:none;pointer-events:none;color:var(--status-idle-color)}.is-running[_nghost-%COMP%]{color:var(--color-accent)}.is-running[_nghost-%COMP%] .arc[_ngcontent-%COMP%]{transform-origin:center;animation:_ngcontent-%COMP%_glyph-spin .9s linear infinite}.is-pending[_nghost-%COMP%]{color:var(--status-pending-color)}.is-pending[_nghost-%COMP%] .dot[_ngcontent-%COMP%]{animation:_ngcontent-%COMP%_glyph-pulse 1.5s ease infinite}.is-error[_nghost-%COMP%]{color:var(--red)}.is-killed[_nghost-%COMP%]{color:var(--status-killed-color)}@keyframes _ngcontent-%COMP%_glyph-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes _ngcontent-%COMP%_glyph-pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.4;transform:scale(.6)}}"],changeDetection:0})};var me=class i{caseController=T(Vt);cases=v([]);loadSubscription=null;currentNamespaceId=null;loadCases(t){t!==this.currentNamespaceId&&(this.currentNamespaceId=t,this.cases.set([])),this.loadSubscription?.unsubscribe(),this.loadSubscription=this.caseController.listMineByParentCase(t).subscribe({next:e=>{this.cases.set(e),this.loadSubscription=null},error:e=>{console.error(`[CaseState] Failed to load cases for namespace ${t}:`,e),this.loadSubscription=null}})}deleteCase(t){return this.caseController.deleteCase(t).pipe(mt(()=>this.reloadCurrent()))}setStarred(t,e){return it(()=>(this.patchFavorite(t,e),(e?this.caseController.starCase(t):this.caseController.unstarCase(t)).pipe(le(o=>(this.patchFavorite(t,!e),be(()=>o))))))}renameCase(t,e){return it(()=>{let n=this.cases().find(a=>a.id===t);if(!n)return be(()=>new Error(`[CaseState] Case ${t} is not in the current list`));let o=n.title;return this.patchTitle(t,e),this.caseController.updateCase(t,J(j({},n),{title:e})).pipe(le(a=>(this.patchTitle(t,o),be(()=>a))))})}patchFavorite(t,e){this.cases.update(n=>n.map(o=>o.id===t?J(j({},o),{favorite:e}):o))}patchTitle(t,e){this.cases.update(n=>n.map(o=>o.id===t?J(j({},o),{title:e}):o))}reloadCurrent(){this.currentNamespaceId&&this.loadCases(this.currentNamespaceId)}addCase(t){this.cases.update(e=>[t,...e])}updateCaseTitle(t,e){this.patchTitle(t,e)}updateCaseStatus(t,e){this.cases.update(n=>n.map(o=>o.id===t?J(j({},o),{status:e}):o))}static \u0275fac=function(e){return new(e||i)};static \u0275prov=Z({token:i,factory:i.\u0275fac,providedIn:"root"})};var xn=["promptItem"],Kt=(i,t)=>t.name;function vn(i,t){if(i&1&&(V(0,"span",5),m(1),A()),i&2){let e=t.$implicit;c(),xt("","{","","{","",e.name,"","}","","}")}}function wn(i,t){if(i&1&&(V(0,"span",6),m(1),A()),i&2){let e=s().$implicit;c(),y(e.description)}}function yn(i,t){if(i&1){let e=b();V(0,"li",3,0),te("click",function(){let o=d(e).$implicit,a=s();return p(a.onItemClick(o))})("keydown.enter",function(){let o=d(e).$implicit,a=s();return p(a.onItemClick(o))})("mouseenter",function(){let o=d(e).$index,a=s();return p(a.activeIndex.set(o))}),V(2,"span",4),m(3),R(4,vn,2,5,"span",5,Kt),A(),g(6,wn,2,1,"span",6),A()}if(i&2){let e=t.$implicit,n=t.$index,o=s();O("prompt-autocomplete__item--active",o.isActive(n)),$("aria-selected",o.isActive(n)),c(3),K(" /",e.name," "),c(),N(e.parameters),c(2),h(e.description?6:-1)}}var ne=class i{prompts=f.required();selected=w();dismissed=w();activeIndex=v(0);itemRefs=De("promptItem");constructor(){Y(()=>{this.prompts(),this.activeIndex.set(0)})}navigate(t){let e=this.prompts();switch(t){case"ArrowDown":this.activeIndex.set(Math.min(this.activeIndex()+1,e.length-1)),this.scrollActiveIntoView();break;case"ArrowUp":this.activeIndex.set(Math.max(this.activeIndex()-1,0)),this.scrollActiveIntoView();break;case"Enter":{let n=e[this.activeIndex()];n&&this.selected.emit(n);break}case"Escape":this.dismissed.emit();break}}onItemClick(t){this.selected.emit(t)}isActive(t){return this.activeIndex()===t}completionFor(t){return`/${t.name} `}scrollActiveIntoView(){this.itemRefs()[this.activeIndex()]?.nativeElement.scrollIntoView({block:"nearest"})}static \u0275fac=function(e){return new(e||i)};static \u0275cmp=D({type:i,selectors:[["agentos-prompt-autocomplete"]],viewQuery:function(e,n){e&1&&H(n.itemRefs,xn,5),e&2&&B()},inputs:{prompts:[1,"prompts"]},outputs:{selected:"selected",dismissed:"dismissed"},decls:3,vars:0,consts:[["promptItem",""],["role","listbox","aria-label","Slash commands",1,"prompt-autocomplete"],["role","option","tabindex","-1",1,"prompt-autocomplete__item",3,"prompt-autocomplete__item--active"],["role","option","tabindex","-1",1,"prompt-autocomplete__item",3,"click","keydown.enter","mouseenter"],[1,"prompt-autocomplete__name"],[1,"prompt-autocomplete__param"],[1,"prompt-autocomplete__description"]],template:function(e,n){e&1&&(V(0,"ul",1),R(1,yn,7,5,"li",2,Kt),A()),e&2&&(c(),N(n.prompts()))},styles:[".prompt-autocomplete[_ngcontent-%COMP%]{list-style:none;margin:0;padding:0;max-height:400px;width:100%;overflow-y:auto}.prompt-autocomplete[_ngcontent-%COMP%]::-webkit-scrollbar{width:8px}.prompt-autocomplete[_ngcontent-%COMP%]::-webkit-scrollbar-track{background:transparent}.prompt-autocomplete[_ngcontent-%COMP%]::-webkit-scrollbar-thumb{background:var(--color-border, rgba(0, 0, 0, .15));border-radius:4px}.prompt-autocomplete[_ngcontent-%COMP%]::-webkit-scrollbar-thumb:hover{background:var(--color-text-secondary, #6e6e73)}.prompt-autocomplete[_ngcontent-%COMP%]{display:grid;grid-template-columns:max-content 1fr}.prompt-autocomplete__item[_ngcontent-%COMP%]{grid-column:1/-1;display:grid;grid-template-columns:subgrid;align-items:center;cursor:pointer;transition:background .2s;border-left:3px solid transparent;padding:.5rem 0}.prompt-autocomplete__item[_ngcontent-%COMP%]:hover, .prompt-autocomplete__item--active[_ngcontent-%COMP%]{background:var(--color-bg-hover, rgba(0, 113, 227, .08))}.prompt-autocomplete__item--active[_ngcontent-%COMP%]{border-left-color:var(--color-primary, #007aff)}.prompt-autocomplete__name[_ngcontent-%COMP%]{font-weight:600;font-size:.95rem;color:var(--color-text, #1d1d1f);font-family:SF Mono,Monaco,Menlo,Cascadia Code,Consolas,monospace;white-space:nowrap;padding:0 1.5rem 0 .75rem;display:flex;align-items:center;gap:.4rem}.prompt-autocomplete__param[_ngcontent-%COMP%]{font-size:.85rem;font-family:SF Mono,Monaco,Menlo,Cascadia Code,Consolas,monospace;color:var(--color-text-secondary, #6e6e73);font-weight:400}.prompt-autocomplete__description[_ngcontent-%COMP%]{font-size:.85rem;color:var(--color-text-secondary, #6e6e73);line-height:1.3;padding:0 1rem 0 0}"],changeDetection:0})};var Sn=["agentItem"],Mn=(i,t)=>t.id;function En(i,t){if(i&1&&(V(0,"span",5),m(1),A()),i&2){let e=s().$implicit;c(),y(e.description)}}function Tn(i,t){if(i&1){let e=b();V(0,"li",3,0),te("click",function(){let o=d(e).$implicit,a=s();return p(a.onItemClick(o))})("keydown.enter",function(){let o=d(e).$implicit,a=s();return p(a.onItemClick(o))})("mouseenter",function(){let o=d(e).$index,a=s();return p(a.activeIndex.set(o))}),V(2,"span",4),m(3),A(),g(4,En,2,1,"span",5),A()}if(i&2){let e=t.$implicit,n=t.$index,o=s();O("agent-autocomplete__item--active",o.isActive(n)),$("aria-selected",o.isActive(n)),c(3),y("@"+e.name),c(),h(e.description?4:-1)}}var oe=class i{agents=f.required();selected=w();dismissed=w();activeIndex=v(0);itemRefs=De("agentItem");constructor(){Y(()=>{this.agents(),this.activeIndex.set(0)})}navigate(t){let e=this.agents();switch(t){case"ArrowDown":this.activeIndex.set(Math.min(this.activeIndex()+1,e.length-1)),this.scrollActiveIntoView();break;case"ArrowUp":this.activeIndex.set(Math.max(this.activeIndex()-1,0)),this.scrollActiveIntoView();break;case"Enter":{let n=e[this.activeIndex()];n&&this.selected.emit(n);break}case"Escape":this.dismissed.emit();break}}onItemClick(t){this.selected.emit(t)}isActive(t){return this.activeIndex()===t}completionFor(t){return`@${t.name} `}scrollActiveIntoView(){this.itemRefs()[this.activeIndex()]?.nativeElement.scrollIntoView({block:"nearest"})}static \u0275fac=function(e){return new(e||i)};static \u0275cmp=D({type:i,selectors:[["agentos-agent-autocomplete"]],viewQuery:function(e,n){e&1&&H(n.itemRefs,Sn,5),e&2&&B()},inputs:{agents:[1,"agents"]},outputs:{selected:"selected",dismissed:"dismissed"},decls:3,vars:0,consts:[["agentItem",""],["role","listbox","aria-label","Agent mentions",1,"agent-autocomplete"],["role","option","tabindex","-1",1,"agent-autocomplete__item",3,"agent-autocomplete__item--active"],["role","option","tabindex","-1",1,"agent-autocomplete__item",3,"click","keydown.enter","mouseenter"],[1,"agent-autocomplete__name"],[1,"agent-autocomplete__description"]],template:function(e,n){e&1&&(V(0,"ul",1),R(1,Tn,5,5,"li",2,Mn),A()),e&2&&(c(),N(n.agents()))},styles:['.agent-autocomplete[_ngcontent-%COMP%]{list-style:none;margin:0;padding:0;max-height:400px;width:100%;overflow-y:auto;display:grid;grid-template-columns:max-content 1fr}.agent-autocomplete[_ngcontent-%COMP%]::-webkit-scrollbar{width:8px}.agent-autocomplete[_ngcontent-%COMP%]::-webkit-scrollbar-track{background:transparent}.agent-autocomplete[_ngcontent-%COMP%]::-webkit-scrollbar-thumb{background:var(--color-divider);border-radius:0}.agent-autocomplete[_ngcontent-%COMP%]::-webkit-scrollbar-thumb:hover{background:var(--color-text-secondary)}.agent-autocomplete__item[_ngcontent-%COMP%]{grid-column:1/-1;display:grid;grid-template-columns:subgrid;align-items:center;cursor:pointer;transition:background .12s ease;border-left:3px solid transparent;padding:8px 0}.agent-autocomplete__item[_ngcontent-%COMP%]:hover, .agent-autocomplete__item--active[_ngcontent-%COMP%]{background:var(--color-bg-hover)}.agent-autocomplete__item--active[_ngcontent-%COMP%]{border-left-color:var(--color-accent)}.agent-autocomplete__name[_ngcontent-%COMP%]{font-size:14px;font-weight:600;line-height:1.3;color:var(--color-text, #1d1d1f);font-family:var(--font-body, "Inter", -apple-system, sans-serif);white-space:nowrap;padding:0 24px 0 12px}.agent-autocomplete__description[_ngcontent-%COMP%]{font-family:var(--font-body, "Inter", -apple-system, sans-serif);font-size:.8125rem;font-weight:400;line-height:1.4;color:var(--color-text-secondary, #6e6e73);line-height:1.3;padding:0 16px 0 0}'],changeDetection:0})};var ze=class i{agentConfigController=T(It);userState=T(qe);listEffective(t){let e=this.userState.currentUser(),n=e?.externalId??e?.email??"";return this.agentConfigController.searchAgentConfig({namespaceId:t,userExternalId:n})}static \u0275fac=function(e){return new(e||i)};static \u0275prov=Z({token:i,factory:i.\u0275fac,providedIn:"root"})};function rt(i,t){let e=t.toLowerCase(),n=[],o=[];for(let a of i)a.name.toLowerCase().startsWith(e)?n.push(a):a.description?.toLowerCase().includes(e)&&o.push(a);return[...n,...o]}var _e=class i{promptState=T(Wt);agentState=T(ze);destroyRef=T(ee);slashSuggestions=v([]);atSuggestions=v([]);namespaceId="";effectivePrompts=[];promptsLoaded=!1;slashPrefix$=new nt;effectiveAgents=[];agentsLoaded=!1;atPrefix$=new nt;constructor(){this.slashPrefix$.pipe(Me(60),Ee(t=>(this.promptsLoaded?re(this.effectivePrompts):this.promptState.listEffective(this.namespaceId).pipe(le(()=>re([])))).pipe(se(n=>({prefix:t,prompts:n})))),U(this.destroyRef)).subscribe(({prefix:t,prompts:e})=>{this.effectivePrompts=e,this.promptsLoaded=!0,this.slashSuggestions.set(e.filter(n=>n.name.toLowerCase().startsWith(t.toLowerCase())))}),this.atPrefix$.pipe(Me(60),Ee(t=>(this.agentsLoaded?re(this.effectiveAgents):this.agentState.listEffective(this.namespaceId).pipe(le(()=>re([])))).pipe(se(n=>({prefix:t,agents:n})))),U(this.destroyRef)).subscribe(({prefix:t,agents:e})=>{this.effectiveAgents=e,this.agentsLoaded=!0,this.atSuggestions.set(rt(e,t))})}init(t){this.namespaceId=t}reset(){this.slashSuggestions.set([]),this.effectivePrompts=[],this.promptsLoaded=!1,this.atSuggestions.set([]),this.effectiveAgents=[],this.agentsLoaded=!1}onInput(t,e){e.set(t),this.updateAutocomplete(t)}onKeydown(t,e,n){if(this.slashSuggestions().length>0){if(t.key==="ArrowDown"||t.key==="ArrowUp")return t.preventDefault(),e()?.navigate(t.key),!0;if(t.key==="Escape")return t.preventDefault(),this.slashSuggestions.set([]),!0;if(t.key==="Tab"||t.key==="Enter")return t.preventDefault(),e()?.navigate("Enter"),!0}if(this.atSuggestions().length>0){if(t.key==="ArrowDown"||t.key==="ArrowUp")return t.preventDefault(),n()?.navigate(t.key),!0;if(t.key==="Escape")return t.preventDefault(),this.atSuggestions.set([]),!0;if(t.key==="Tab"||t.key==="Enter")return t.preventDefault(),n()?.navigate("Enter"),!0}return!1}onPromptSelected(t,e,n,o){let a=e()?.completionFor(t)??`/${t.name} `;o.set(a),queueMicrotask(()=>{let u=n()?.nativeElement;u&&(u.value=a,u.setSelectionRange(a.length,a.length),u.focus())}),this.slashSuggestions.set([])}onAgentSelected(t,e,n,o){let a=e()?.completionFor(t)??`@${t.name} `,u=o().replace(/@\w*$/,a);o.set(u),queueMicrotask(()=>{let M=n()?.nativeElement;M&&(M.value=u,M.setSelectionRange(u.length,u.length),M.focus())}),this.atSuggestions.set([])}updateAutocomplete(t){if(t.startsWith("/")){let n=t.slice(1);if(!n.includes(" ")){this.atSuggestions().length&&this.atSuggestions.set([]),this.promptsLoaded&&this.slashSuggestions.set(this.effectivePrompts.filter(o=>o.name.toLowerCase().startsWith(n.toLowerCase()))),this.slashPrefix$.next(n);return}}this.slashSuggestions().length&&this.slashSuggestions.set([]);let e=t.match(/@(\w*)$/);if(e){let n=e[1]??"";this.agentsLoaded&&this.atSuggestions.set(rt(this.effectiveAgents,n)),this.atPrefix$.next(n);return}this.atSuggestions().length&&this.atSuggestions.set([])}static \u0275fac=function(e){return new(e||i)};static \u0275prov=Z({token:i,factory:i.\u0275fac})};var Yt={status:"loading",files:[],capability:"NONE"};function kn(i){return[...i].sort((t,e)=>new Date(e.lastModified).getTime()-new Date(t.lastModified).getTime())}var ie=class i{controller=T(Rt);namespaceId=null;caseId=null;caseRefresh$=new ot(void 0);namespaceRefresh$=new ot(void 0);caseView=this.buildScopeView(this.caseRefresh$,()=>this.caseId,t=>this.controller.getCaseFilesManifestExchange(t));namespaceView=this.buildScopeView(this.namespaceRefresh$,()=>this.namespaceId,t=>this.controller.getNamespaceFilesManifestExchange(t));caseStatus=E(()=>this.caseView().status);namespaceStatus=E(()=>this.namespaceView().status);caseFiles=E(()=>this.caseView().files);namespaceFiles=E(()=>this.namespaceView().files);caseFileCount=E(()=>this.caseFiles().length);namespaceFileCount=E(()=>this.namespaceFiles().length);fileCount=E(()=>this.caseFileCount()+this.namespaceFileCount());canWriteCase=E(()=>this.caseView().capability==="READ_WRITE");canWriteNamespace=E(()=>this.namespaceView().capability==="READ_WRITE");caseSectionVisible=E(()=>this.caseView().status!=="forbidden");namespaceSectionVisible=E(()=>this.namespaceView().status!=="forbidden");caseUploading=v(!1);namespaceUploading=v(!1);loadScope(t){return t().pipe(se(e=>({status:"ready",files:kn(e.files??[]),capability:e.capability??"NONE"})),le(e=>{let n=e?.status===403||e?.status===404;return re({status:n?"forbidden":"error",files:[],capability:"NONE"})}))}buildScopeView(t,e,n){let o=t.pipe(Ee(()=>{let a=e();return a?this.loadScope(()=>n(a)):re(Yt)}),dt({bufferSize:1,refCount:!0}));return ve(o,{initialValue:Yt})}initializeForCase(t,e){this.namespaceId=t,this.caseId=e,this.refreshManifest()}initializeForNamespace(t){this.namespaceId=t,this.namespaceRefresh$.next()}clear(){this.namespaceId=null,this.caseId=null,this.refreshManifest()}refreshManifest(){this.caseRefresh$.next(),this.namespaceRefresh$.next()}refreshCase(){this.caseRefresh$.next()}refreshNamespace(){this.namespaceRefresh$.next()}getContent(t,e){let n=t==="CASE",o=n?this.caseId:this.namespaceId;return o?n?this.controller.getCaseFileContentExchange(o,e):this.controller.getNamespaceFileContentExchange(o,e):be(()=>new Error("No active scope for content request"))}uploadFile(t,e){return G(this,null,function*(){let n=t==="CASE",o=n?this.caseId:this.namespaceId;if(!o)return{success:!1,error:"No active scope"};let a=n?this.caseUploading:this.namespaceUploading;a.set(!0);let u=n?this.controller.uploadCaseFileExchange(o,e):this.controller.uploadNamespaceFileExchange(o,e);return new Promise(M=>{u.subscribe({next:()=>{a.set(!1),this.refreshManifest(),M({success:!0})},error:C=>{a.set(!1),M({success:!1,error:this.uploadErrorMessage(C)})}})})})}uploadErrorMessage(t){let e={400:t?.error?.message??"This file type is not allowed.",409:"A file with this name already exists.",413:"This file is too large."};return t?.status!=null&&e[t.status]||t?.message||"Upload failed"}deleteFile(t,e){return G(this,null,function*(){let n=t==="CASE",o=n?this.caseId:this.namespaceId;if(!o)return{success:!1,error:"No active scope"};let a=n?this.controller.deleteCaseFileExchange(o,e):this.controller.deleteNamespaceFileExchange(o,e);return new Promise(u=>{a.subscribe({next:()=>{this.refreshManifest(),u({success:!0})},error:M=>u({success:!1,error:M?.message??"Delete failed"})})})})}downloadFile(t,e){let n=t==="CASE",o=n?this.caseId:this.namespaceId;if(!o)return Promise.resolve({success:!1,error:"No active scope"});let a=e.split("/").pop()??e,u=n?this.controller.downloadCaseFileExchange(o,e):this.controller.downloadNamespaceFileExchange(o,e);return new Promise(M=>{u.subscribe({next:C=>{this.saveBlob(C,a),M({success:!0})},error:C=>{console.error("[exchange] download failed",C),M({success:!1,error:C?.message??"Download failed"})}})})}downloadAll(t){return G(this,null,function*(){let e=t==="CASE"?this.caseFiles():this.namespaceFiles(),n=0,o=0;for(let a of e)o++>0&&(yield new Promise(M=>setTimeout(M,300))),(yield this.downloadFile(t,a.path)).success||n++;return{success:n===0,failedCount:n}})}saveBlob(t,e){let n=t instanceof Blob?t:new Blob([t]),o=window.URL.createObjectURL(n),a=document.createElement("a");a.href=o,a.download=e,a.style.display="none",document.body.appendChild(a),a.click(),document.body.removeChild(a),window.URL.revokeObjectURL(o)}static \u0275fac=function(e){return new(e||i)};static \u0275prov=Z({token:i,factory:i.\u0275fac,providedIn:"root"})};var Pn=20*1024*1024,On=["pdf","png","jpg","jpeg","gif","webp","zip","tar","gz","exe","bin","doc","docx","xls","xlsx","ppt","pptx"];function st(i){return i.split(".").pop()?.toLowerCase()??""}function He(i){switch(st(i)){case"pdf":return"picture_as_pdf";case"csv":case"xlsx":case"xls":return"table_chart";case"txt":case"md":return"description";case"jpg":case"jpeg":case"png":case"gif":case"webp":return"image";case"zip":case"tar":case"gz":return"folder_zip";default:return"insert_drive_file"}}function Xt(i){return i<1024?`${i} B`:i<1024*1024?`${(i/1024).toFixed(1)} KB`:`${(i/(1024*1024)).toFixed(1)} MB`}function Jt(i){let t=new Date(i);return Number.isNaN(t.getTime())?i:t.toLocaleString(void 0,{year:"numeric",month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})}function Zt(i){switch(st(i)){case"md":case"markdown":return"markdown";case"json":return"json";case"yaml":case"yml":return"yaml";case"html":case"htm":return"html";default:return"text"}}function Dn(i){return!On.includes(st(i))}function In(i){return i<=Pn}function en(i){return Dn(i.filename)&&In(i.size)}function tn(i){try{return JSON.stringify(JSON.parse(i),null,2)}catch(t){return i}}function nn(i){let t=/^(case|namespace)-exchange__(editFiles|remove|moveFile)$/.exec(i??"");return t?t[1]:null}var Vn=["backButton"];function Rn(i,t){if(i&1){let e=b();r(0,"ds-empty-state",7)(1,"button",13),_("click",function(){d(e);let o=s();return p(o.onDownload())}),m(2,"Download instead"),l()()}}function Nn(i,t){i&1&&(r(0,"div",8),S(1,"ds-spinner",14),l())}function An(i,t){if(i&1){let e=b();r(0,"ds-empty-state",9)(1,"button",13),_("click",function(){d(e);let o=s();return p(o.onDownload())}),m(2,"Download instead"),l()()}}function Fn(i,t){if(i&1&&(S(0,"div",10),Pe(1,"agentosMarkdown")),i&2){let e=s();x("innerHTML",Oe(1,1,e.content()),he)}}function qn(i,t){if(i&1&&S(0,"iframe",11),i&2){let e=s();x("srcdoc",e.displayContent(),he)("title","Preview of "+e.filename())}}function Ln(i,t){if(i&1&&(r(0,"pre",12),m(1),l()),i&2){let e=s();c(),y(e.displayContent())}}var Be=class i{file=f.required();content=f(null);status=f("loading");canView=f(!0);closeRequested=w();downloadRequested=w();backButton=z("backButton",{read:ge});constructor(){xe(()=>{this.backButton()?.nativeElement?.querySelector("button")?.focus()})}filename=E(()=>{let t=this.file().path;return t.split("/").pop()??t});format=E(()=>Zt(this.filename()));displayContent=E(()=>{let t=this.content();return t==null?"":this.format()==="json"?tn(t):t});onClose(){this.closeRequested.emit()}onDownload(){this.downloadRequested.emit(this.file())}static \u0275fac=function(e){return new(e||i)};static \u0275cmp=D({type:i,selectors:[["agentos-exchange-content-viewer"]],viewQuery:function(e,n){e&1&&H(n.backButton,Vn,5,ge),e&2&&B()},inputs:{file:[1,"file"],content:[1,"content"],status:[1,"status"],canView:[1,"canView"]},outputs:{closeRequested:"closeRequested",downloadRequested:"downloadRequested"},decls:14,vars:4,consts:[["backButton",""],[1,"exchange-content-viewer"],[1,"exchange-content-viewer__header"],["icon","chevron_left","variant","default","title","Back to files",3,"action"],[1,"exchange-content-viewer__filename",3,"title"],["icon","download","variant","default",3,"action","title"],[1,"exchange-content-viewer__body"],["icon","insert_drive_file","title","Preview not available","hint","This file is binary or too large to display. Download it to view the contents."],[1,"exchange-content-viewer__center"],["icon","error_outline","title","Couldn't load this file","hint","The content could not be retrieved."],[1,"exchange-content-viewer__markdown",3,"innerHTML"],["sandbox","",1,"exchange-content-viewer__iframe",3,"srcdoc","title"],[1,"exchange-content-viewer__pre"],["type","button",1,"exchange-content-viewer__cta",3,"click"],["size","md","label","Loading content"]],template:function(e,n){e&1&&(r(0,"div",1)(1,"header",2)(2,"ds-icon-button",3,0),_("action",function(){return n.onClose()}),l(),r(4,"span",4),m(5),l(),r(6,"ds-icon-button",5),_("action",function(){return n.onDownload()}),l()(),r(7,"div",6),g(8,Rn,3,0,"ds-empty-state",7)(9,Nn,2,0,"div",8)(10,An,3,0,"ds-empty-state",9)(11,Fn,2,3,"div",10)(12,qn,1,2,"iframe",11)(13,Ln,2,1,"pre",12),l()()),e&2&&(c(4),x("title",n.filename()),c(),y(n.filename()),c(),x("title","Download "+n.filename()),c(2),h(n.canView()?n.status()==="loading"?9:n.status()==="error"?10:n.format()==="markdown"?11:n.format()==="html"?12:13:8))},dependencies:[Fe,Ae,X,Gt],styles:['.exchange-content-viewer[_ngcontent-%COMP%]{display:flex;flex-direction:column;height:100%;min-height:0;overflow:hidden}.exchange-content-viewer__header[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.5rem;padding:.5rem .5rem .5rem .75rem;border-bottom:1px solid var(--color-border, rgba(0, 0, 0, .1));flex-shrink:0}.exchange-content-viewer__filename[_ngcontent-%COMP%]{flex:1;min-width:0;font-size:.8125rem;font-weight:600;color:var(--color-text, #1d1d1f);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.exchange-content-viewer__body[_ngcontent-%COMP%]{flex:1;min-height:0;overflow:auto;padding:.75rem}.exchange-content-viewer__iframe[_ngcontent-%COMP%]{width:100%;height:100%;min-height:320px;border:1px solid var(--color-border, rgba(0, 0, 0, .1));border-radius:8px;background:#fff}.exchange-content-viewer__cta[_ngcontent-%COMP%]{appearance:none;cursor:pointer;padding:.4rem .9rem;border-radius:8px;border:1px solid var(--color-border, rgba(0, 0, 0, .1));background:var(--color-primary, #007aff);color:var(--color-text-inverse, #ffffff);font-size:.8125rem;font-weight:600}.exchange-content-viewer__cta[_ngcontent-%COMP%]:hover{background:var(--color-primary-hover, #0066d6)}.exchange-content-viewer__cta[_ngcontent-%COMP%]:focus-visible{outline:2px solid var(--color-primary, #007aff);outline-offset:2px}.exchange-content-viewer__center[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:center;height:100%}.exchange-content-viewer__pre[_ngcontent-%COMP%]{margin:0;white-space:pre-wrap;word-break:break-word;font-family:var(--font-mono, ui-monospace, "SF Mono", "Menlo", monospace);font-size:.75rem;line-height:1.5;color:var(--color-text, #1d1d1f)}.exchange-content-viewer__markdown[_ngcontent-%COMP%]{font-size:.8125rem;line-height:1.6;color:var(--color-text, #1d1d1f);word-break:break-word}.exchange-content-viewer__markdown[_ngcontent-%COMP%] :where(img[_ngcontent-%COMP%], table[_ngcontent-%COMP%], pre[_ngcontent-%COMP%]){max-width:100%}.exchange-content-viewer__markdown[_ngcontent-%COMP%] :where(pre[_ngcontent-%COMP%]){overflow-x:auto}'],changeDetection:0})};var zn=(i,t)=>t.label;function $n(i,t){if(i&1&&(r(0,"span"),m(1),l()),i&2){let e=t.$implicit;bt(St("exchange-item__badge exchange-item__badge--",e.variant)),c(),y(e.label)}}function Hn(i,t){if(i&1){let e=b();r(0,"ds-icon-button",10),_("action",function(){d(e);let o=s();return p(o.deleteRequested.emit())}),l()}if(i&2){let e=s();x("title","Delete "+e.row().filename)}}var Ce=class i{row=f.required();active=f(!1);canWrite=f(!1);viewRequested=w();downloadRequested=w();deleteRequested=w();static toRow(t){return{path:t.path,filename:t.filename,meta:`${Xt(t.size)} \xB7 ${Jt(t.lastModified)}`,icon:He(t.filename)}}static \u0275fac=function(e){return new(e||i)};static \u0275cmp=D({type:i,selectors:[["agentos-exchange-item"]],inputs:{row:[1,"row"],active:[1,"active"],canWrite:[1,"canWrite"]},outputs:{viewRequested:"viewRequested",downloadRequested:"downloadRequested",deleteRequested:"deleteRequested"},decls:14,vars:10,consts:[[1,"exchange-item"],["type","button",1,"exchange-item__main",3,"click"],["aria-hidden","true",1,"exchange-item__icon","material-icons"],[1,"exchange-item__text"],[1,"exchange-item__name"],[1,"exchange-item__meta"],[3,"class"],[1,"exchange-item__actions"],["icon","download","variant","default",3,"action","title"],["icon","delete","variant","danger",3,"title"],["icon","delete","variant","danger",3,"action","title"]],template:function(e,n){e&1&&(r(0,"div",0)(1,"button",1),_("click",function(){return n.viewRequested.emit()}),r(2,"span",2),m(3),l(),r(4,"span",3)(5,"span",4),m(6),l(),r(7,"span",5),m(8),R(9,$n,2,4,"span",6,zn),l()()(),r(11,"div",7)(12,"ds-icon-button",8),_("action",function(){return n.downloadRequested.emit()}),l(),g(13,Hn,1,1,"ds-icon-button",9),l()()),e&2&&(O("exchange-item--active",n.active()),c(),$("data-exchange-path",n.row().path)("aria-current",n.active()?"true":null)("aria-label","View "+n.row().filename),c(2),y(n.row().icon),c(3),y(n.row().filename),c(2),K(" ",n.row().meta," "),c(),N(n.row().badges),c(3),x("title","Download "+n.row().filename),c(),h(n.canWrite()?13:-1))},dependencies:[X],styles:[".exchange-item[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.25rem;padding:.125rem .25rem .125rem .375rem;border-radius:8px;border:1px solid transparent;transition:background .15s ease,border-color .15s ease}.exchange-item[_ngcontent-%COMP%]:hover{background:var(--color-bg-hover, rgba(0, 0, 0, .04))}.exchange-item--active[_ngcontent-%COMP%]{background:var(--color-bg-hover, rgba(0, 0, 0, .04));border-color:var(--color-primary, #007aff)}.exchange-item__main[_ngcontent-%COMP%]{flex:1;min-width:0;display:flex;align-items:center;gap:.5rem;padding:.375rem .25rem;border:none;background:transparent;text-align:left;cursor:pointer;color:inherit;font:inherit}.exchange-item__main[_ngcontent-%COMP%]:focus-visible{outline:2px solid var(--color-primary, #007aff);outline-offset:2px;border-radius:6px}.exchange-item__icon[_ngcontent-%COMP%]{flex-shrink:0;font-size:1.25rem;color:var(--color-text-secondary, #6e6e73)}.exchange-item__text[_ngcontent-%COMP%]{flex:1;min-width:0;display:flex;flex-direction:column;gap:.125rem}.exchange-item__name[_ngcontent-%COMP%]{font-size:.8125rem;font-weight:600;color:var(--color-text, #1d1d1f);line-height:1.3;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.exchange-item__meta[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.375rem;font-size:.6875rem;color:var(--color-text-secondary, #6e6e73);line-height:1.3}.exchange-item__badge[_ngcontent-%COMP%]{display:inline-flex;align-items:center;padding:.0625rem .3rem;border-radius:999px;font-size:.5625rem;font-weight:800;letter-spacing:.04em;text-transform:uppercase;color:#fff}.exchange-item__badge--warning[_ngcontent-%COMP%]{background:var(--color-warning, #ff9500)}.exchange-item__badge--info[_ngcontent-%COMP%]{background:var(--color-info, #5ac8fa)}.exchange-item__badge--success[_ngcontent-%COMP%]{background:var(--color-success, #34c759)}.exchange-item__badge--error[_ngcontent-%COMP%]{background:var(--color-error, #ff3b30)}.exchange-item__actions[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.125rem;flex-shrink:0}"],changeDetection:0})};var Bn=(i,t)=>t.path;function Un(i,t){if(i&1){let e=b();r(0,"li",1)(1,"agentos-exchange-item",2),_("viewRequested",function(){let o=d(e).$implicit,a=s();return p(a.onView(o))})("downloadRequested",function(){let o=d(e).$implicit,a=s();return p(a.onDownload(o))})("deleteRequested",function(){let o=d(e).$implicit,a=s();return p(a.onDelete(o))}),l()()}if(i&2){let e=t.$implicit,n=s();c(),x("row",e)("active",n.isActive(e))("canWrite",n.canWrite())}}var Ue=class i{rows=f.required();scope=f.required();activeFile=f(null);canWrite=f(!1);fileSelected=w();downloadRequested=w();deleteRequested=w();isActive(t){let e=this.activeFile();return e!==null&&e.scope===this.scope()&&e.path===t.path}onView(t){this.fileSelected.emit({scope:this.scope(),path:t.path})}onDownload(t){this.downloadRequested.emit({scope:this.scope(),path:t.path})}onDelete(t){this.deleteRequested.emit({scope:this.scope(),path:t.path})}static \u0275fac=function(e){return new(e||i)};static \u0275cmp=D({type:i,selectors:[["agentos-exchange-file-list"]],inputs:{rows:[1,"rows"],scope:[1,"scope"],activeFile:[1,"activeFile"],canWrite:[1,"canWrite"]},outputs:{fileSelected:"fileSelected",downloadRequested:"downloadRequested",deleteRequested:"deleteRequested"},decls:3,vars:0,consts:[["role","list",1,"exchange-file-list"],["role","listitem",1,"exchange-file-list__row"],[3,"viewRequested","downloadRequested","deleteRequested","row","active","canWrite"]],template:function(e,n){e&1&&(r(0,"ul",0),R(1,Un,2,3,"li",1,Bn),l()),e&2&&(c(),N(n.rows()))},dependencies:[Ce],styles:[".exchange-file-list[_ngcontent-%COMP%]{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.125rem}.exchange-file-list__row[_ngcontent-%COMP%]{display:block}"],changeDetection:0})};var Wn=["fileInput"];function Gn(i,t){if(i&1){let e=b();r(0,"agentos-exchange-content-viewer",4),_("closeRequested",function(){d(e);let o=s();return p(o.onViewerClose())})("downloadRequested",function(o){d(e);let a=s();return p(a.downloadRequested.emit(o))}),l()}if(i&2){let e=s();x("file",t)("content",e.selectedContent())("status",e.contentStatus())("canView",e.canViewSelected())}}function jn(i,t){if(i&1){let e=b();r(0,"ds-icon-button",20),_("action",function(){d(e);let o=s(3);return p(o.triggerUpload(o.CASE))}),l()}if(i&2){let e=s(3);x("disabled",e.caseUploading())}}function Qn(i,t){i&1&&(r(0,"span",15),m(1,"read-only"),l())}function Kn(i,t){if(i&1){let e=b();r(0,"ds-icon-button",21),_("action",function(){d(e);let o=s(3);return p(o.downloadAllRequested.emit(o.CASE))}),l()}}function Yn(i,t){i&1&&(r(0,"p",17),m(1,"Uploading\u2026"),l())}function Xn(i,t){i&1&&(r(0,"div",18),S(1,"ds-spinner",22),l())}function Jn(i,t){if(i&1){let e=b();r(0,"div",19)(1,"span"),m(2,"Couldn't load case files."),l(),r(3,"button",23),_("click",function(){d(e);let o=s(3);return p(o.retryRequested.emit())}),m(4,"Retry"),l()()}}function Zn(i,t){if(i&1&&S(0,"ds-empty-state",24),i&2){let e=s(4);x("hint",e.canWriteCase()?"Upload a file to share it with this case.":void 0)}}function eo(i,t){if(i&1){let e=b();r(0,"agentos-exchange-file-list",26),_("fileSelected",function(o){d(e);let a=s(4);return p(a.onFileSelected(o))})("downloadRequested",function(o){d(e);let a=s(4);return p(a.downloadRequested.emit(o))})("deleteRequested",function(o){d(e);let a=s(4);return p(a.deleteRequested.emit(o))}),l()}if(i&2){let e=s(4);x("rows",e.caseRows())("scope",e.CASE)("canWrite",e.canWriteCase())("activeFile",e.activeFile())}}function to(i,t){if(i&1&&g(0,Zn,1,1,"ds-empty-state",24)(1,eo,1,4,"agentos-exchange-file-list",25),i&2){let e=s(3);h(e.caseFiles().length===0?0:1)}}function no(i,t){if(i&1&&(r(0,"section",9)(1,"div",11)(2,"h3",12),m(3,"Case files"),l(),r(4,"div",13),g(5,jn,1,1,"ds-icon-button",14)(6,Qn,2,0,"span",15),g(7,Kn,1,0,"ds-icon-button",16),l()(),g(8,Yn,2,0,"p",17),g(9,Xn,2,0,"div",18)(10,Jn,5,0,"div",19)(11,to,2,1),l()),i&2){let e,n=s(2);c(5),h(n.canWriteCase()?5:6),c(2),h(n.caseFiles().length>0?7:-1),c(),h(n.caseUploading()?8:-1),c(),h((e=n.caseStatus())==="loading"?9:e==="error"?10:11)}}function oo(i,t){if(i&1){let e=b();r(0,"ds-icon-button",20),_("action",function(){d(e);let o=s(3);return p(o.triggerUpload(o.NAMESPACE))}),l()}if(i&2){let e=s(3);x("disabled",e.namespaceUploading())}}function io(i,t){i&1&&(r(0,"span",15),m(1,"read-only"),l())}function ao(i,t){if(i&1){let e=b();r(0,"ds-icon-button",28),_("action",function(){d(e);let o=s(3);return p(o.downloadAllRequested.emit(o.NAMESPACE))}),l()}}function ro(i,t){i&1&&(r(0,"div",18),S(1,"ds-spinner",29),l())}function so(i,t){if(i&1){let e=b();r(0,"div",19)(1,"span"),m(2,"Couldn't load namespace files."),l(),r(3,"button",23),_("click",function(){d(e);let o=s(3);return p(o.retryRequested.emit())}),m(4,"Retry"),l()()}}function lo(i,t){if(i&1&&S(0,"ds-empty-state",30),i&2){let e=s(4);x("hint",e.canWriteNamespace()?"Upload a file to share it across this namespace.":void 0)}}function co(i,t){if(i&1){let e=b();r(0,"agentos-exchange-file-list",26),_("fileSelected",function(o){d(e);let a=s(4);return p(a.onFileSelected(o))})("downloadRequested",function(o){d(e);let a=s(4);return p(a.downloadRequested.emit(o))})("deleteRequested",function(o){d(e);let a=s(4);return p(a.deleteRequested.emit(o))}),l()}if(i&2){let e=s(4);x("rows",e.namespaceRows())("scope",e.NAMESPACE)("canWrite",e.canWriteNamespace())("activeFile",e.activeFile())}}function po(i,t){if(i&1&&g(0,lo,1,1,"ds-empty-state",30)(1,co,1,4,"agentos-exchange-file-list",25),i&2){let e=s(3);h(e.namespaceFiles().length===0?0:1)}}function mo(i,t){if(i&1&&(r(0,"section",9)(1,"div",11)(2,"h3",12),m(3,"Namespace files"),l(),r(4,"div",13),g(5,oo,1,1,"ds-icon-button",14)(6,io,2,0,"span",15),g(7,ao,1,0,"ds-icon-button",27),l()(),g(8,ro,2,0,"div",18)(9,so,5,0,"div",19)(10,po,2,1),l()),i&2){let e,n=s(2);c(5),h(n.canWriteNamespace()?5:6),c(2),h(n.namespaceFiles().length>0?7:-1),c(),h((e=n.namespaceStatus())==="loading"?8:e==="error"?9:10)}}function _o(i,t){i&1&&(r(0,"p",10),m(1,"No files available."),l())}function uo(i,t){if(i&1){let e=b();r(0,"header",5)(1,"span",6),m(2,"Files"),l(),r(3,"ds-icon-button",7),_("action",function(){d(e);let o=s();return p(o.closeRequested.emit())}),l()(),r(4,"div",8),g(5,no,12,4,"section",9),g(6,mo,11,3,"section",9),g(7,_o,2,0,"p",10),l()}if(i&2){let e=s();c(5),h(e.caseSectionVisible()?5:-1),c(),h(e.namespaceSectionVisible()?6:-1),c(),h(!e.caseSectionVisible()&&!e.namespaceSectionVisible()?7:-1)}}var We=class i{caseFiles=f([]);caseStatus=f.required();caseSectionVisible=f(!1);canWriteCase=f(!1);caseUploading=f(!1);namespaceFiles=f([]);namespaceStatus=f.required();namespaceSectionVisible=f(!1);canWriteNamespace=f(!1);namespaceUploading=f(!1);activeFile=f(null);selectedContent=f(null);contentStatus=f("loading");canViewSelected=f(!0);fileSelected=w();uploadRequested=w();downloadRequested=w();downloadAllRequested=w();deleteRequested=w();retryRequested=w();closeRequested=w();viewerClosed=w();host=T(ge);fileInput=z("fileInput");CASE="CASE";NAMESPACE="NAMESPACE";caseRows=E(()=>this.caseFiles().map(Ce.toRow));namespaceRows=E(()=>this.namespaceFiles().map(Ce.toRow));lastSelectedPath=null;onFileSelected(t){this.lastSelectedPath=t.path,this.fileSelected.emit(t)}onViewerClose(){this.viewerClosed.emit();let t=this.lastSelectedPath;t&&queueMicrotask(()=>{let e=this.host.nativeElement.querySelectorAll("[data-exchange-path]");for(let n of Array.from(e))if(n.getAttribute("data-exchange-path")===t){n.focus();break}})}pendingUploadScope="CASE";triggerUpload(t){this.pendingUploadScope=t,this.fileInput()?.nativeElement.click()}onFileInputChange(t){let e=t.target,n=e.files?Array.from(e.files):[];n.length>0&&this.uploadRequested.emit({scope:this.pendingUploadScope,files:n}),e.value=""}static \u0275fac=function(e){return new(e||i)};static \u0275cmp=D({type:i,selectors:[["agentos-exchange-drawer"]],viewQuery:function(e,n){e&1&&H(n.fileInput,Wn,5),e&2&&B()},inputs:{caseFiles:[1,"caseFiles"],caseStatus:[1,"caseStatus"],caseSectionVisible:[1,"caseSectionVisible"],canWriteCase:[1,"canWriteCase"],caseUploading:[1,"caseUploading"],namespaceFiles:[1,"namespaceFiles"],namespaceStatus:[1,"namespaceStatus"],namespaceSectionVisible:[1,"namespaceSectionVisible"],canWriteNamespace:[1,"canWriteNamespace"],namespaceUploading:[1,"namespaceUploading"],activeFile:[1,"activeFile"],selectedContent:[1,"selectedContent"],contentStatus:[1,"contentStatus"],canViewSelected:[1,"canViewSelected"]},outputs:{fileSelected:"fileSelected",uploadRequested:"uploadRequested",downloadRequested:"downloadRequested",downloadAllRequested:"downloadAllRequested",deleteRequested:"deleteRequested",retryRequested:"retryRequested",closeRequested:"closeRequested",viewerClosed:"viewerClosed"},decls:5,vars:1,consts:[["fileInput",""],[1,"exchange-drawer"],[3,"file","content","status","canView"],["type","file","multiple","","aria-hidden","true","tabindex","-1",1,"exchange-drawer__file-input",3,"change"],[3,"closeRequested","downloadRequested","file","content","status","canView"],[1,"exchange-drawer__header"],[1,"exchange-drawer__title"],["icon","close","variant","default","title","Close files panel",3,"action"],[1,"exchange-drawer__sections"],[1,"exchange-drawer__section"],[1,"exchange-drawer__no-access"],[1,"exchange-drawer__section-header"],[1,"exchange-drawer__section-title"],[1,"exchange-drawer__section-actions"],["icon","upload_file","variant","primary","title","Upload a file",3,"disabled"],[1,"exchange-drawer__readonly-badge"],["icon","download","variant","default","title","Download all case files"],[1,"exchange-drawer__inflight"],[1,"exchange-drawer__center"],["role","alert",1,"exchange-drawer__error"],["icon","upload_file","variant","primary","title","Upload a file",3,"action","disabled"],["icon","download","variant","default","title","Download all case files",3,"action"],["size","md","label","Loading case files"],["type","button",1,"exchange-drawer__retry",3,"click"],["icon","folder_open","title","No case files",3,"hint"],[3,"rows","scope","canWrite","activeFile"],[3,"fileSelected","downloadRequested","deleteRequested","rows","scope","canWrite","activeFile"],["icon","download","variant","default","title","Download all namespace files"],["icon","download","variant","default","title","Download all namespace files",3,"action"],["size","md","label","Loading namespace files"],["icon","folder_shared","title","No namespace files",3,"hint"]],template:function(e,n){if(e&1&&(r(0,"div",1),g(1,Gn,1,4,"agentos-exchange-content-viewer",2)(2,uo,8,3),r(3,"input",3,0),_("change",function(a){return n.onFileInputChange(a)}),l()()),e&2){let o;c(),h((o=n.activeFile())?1:2,o)}},dependencies:[X,Fe,Ae,Ue,Be],styles:[".exchange-drawer[_ngcontent-%COMP%]{display:flex;flex-direction:column;height:100%;min-height:0;overflow:hidden}.exchange-drawer__header[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;gap:.5rem;padding:.5rem .5rem .5rem .75rem;border-bottom:1px solid var(--color-border, rgba(0, 0, 0, .1));flex-shrink:0}.exchange-drawer__title[_ngcontent-%COMP%]{font-size:.875rem;font-weight:700;color:var(--color-text, #1d1d1f)}.exchange-drawer__sections[_ngcontent-%COMP%]{flex:1;min-height:0;overflow:auto;padding:.5rem;display:flex;flex-direction:column;gap:1rem}.exchange-drawer__section-header[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;gap:.5rem;padding:0 .25rem .25rem}.exchange-drawer__section-actions[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.25rem;flex-shrink:0}.exchange-drawer__center[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:center;padding:1.5rem}.exchange-drawer__error[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;gap:.5rem;padding:.5rem .75rem;border-radius:8px;font-size:.8125rem;color:var(--color-error, #ff3b30);background:var(--color-bg-hover, rgba(0, 0, 0, .04))}.exchange-drawer__retry[_ngcontent-%COMP%]{appearance:none;cursor:pointer;border:1px solid var(--color-border, rgba(0, 0, 0, .1));border-radius:6px;background:transparent;padding:.2rem .6rem;font-size:.75rem;font-weight:600;color:var(--color-text, #1d1d1f)}.exchange-drawer__retry[_ngcontent-%COMP%]:hover{background:var(--color-bg-hover, rgba(0, 0, 0, .04))}.exchange-drawer__retry[_ngcontent-%COMP%]:focus-visible{outline:2px solid var(--color-primary, #007aff);outline-offset:2px}.exchange-drawer__inflight[_ngcontent-%COMP%]{margin:0 0 .25rem;padding:0 .25rem;font-size:.75rem;color:var(--color-text-secondary, #6e6e73)}.exchange-drawer__section-title[_ngcontent-%COMP%]{margin:0;font-size:.6875rem;font-weight:800;letter-spacing:.05em;text-transform:uppercase;color:var(--color-text-secondary, #6e6e73)}.exchange-drawer__readonly-badge[_ngcontent-%COMP%]{font-size:.5625rem;font-weight:800;letter-spacing:.05em;text-transform:uppercase;color:var(--color-text-secondary, #6e6e73);border:1px solid var(--color-border, rgba(0, 0, 0, .1));border-radius:999px;padding:.0625rem .375rem}.exchange-drawer__no-access[_ngcontent-%COMP%]{margin:0;padding:1.5rem .75rem;text-align:center;font-size:.8125rem;color:var(--color-text-secondary, #6e6e73)}.exchange-drawer__file-input[_ngcontent-%COMP%]{display:none}"],changeDetection:0})};function go(i,t){if(i&1&&(r(0,"p",1),m(1),l()),i&2){let e=s();c(),y(e.actionError())}}var Ge=class i{route=T(de);destroyRef=T(ee);state=T(ie);closeRequested=w();selectedFile=v(null);selectedContent=v(null);contentStatus=v("loading");canViewSelected=v(!0);actionError=v(null);pendingDelete=v(null);confirmOpen=E(()=>this.pendingDelete()!==null);deleteMessage=E(()=>{let t=this.pendingDelete();return t?`Delete "${t.path.split("/").pop()??t.path}"? This action cannot be undone.`:""});activeCaseId=null;constructor(){this.route.queryParams.pipe(U()).subscribe(t=>{let e=t.ns,n=t.case;if(e&&n){if(n===this.activeCaseId)return;this.activeCaseId=n,this.resetSelection(),this.state.initializeForCase(e,n)}else this.activeCaseId!==null&&(this.activeCaseId=null,this.state.clear())}),Y(t=>t(()=>this.state.clear()))}onFileSelected(t){this.selectedFile.set(t),this.selectedContent.set(null);let e=this.findFile(t),n=e?en(e):!1;if(this.canViewSelected.set(n),!n){this.contentStatus.set("ready");return}this.contentStatus.set("loading"),this.state.getContent(t.scope,t.path).pipe(U(this.destroyRef)).subscribe({next:o=>{this.isStillSelected(t)&&(this.selectedContent.set(o.content),this.contentStatus.set("ready"))},error:()=>{this.isStillSelected(t)&&this.contentStatus.set("error")}})}onUpload(t){return G(this,null,function*(){this.actionError.set(null);let e=[];for(let n of t.files){let o=yield this.state.uploadFile(t.scope,n);o.success||e.push({name:n.name,error:o.error??"Upload failed"})}e.length===1?this.actionError.set(e[0]?.error??"Upload failed"):e.length>1&&this.actionError.set(`${e.length} of ${t.files.length} files failed to upload: ${e.map(n=>n.name).join(", ")}`)})}onDownload(t){return G(this,null,function*(){this.actionError.set(null);let e=yield this.state.downloadFile(t.scope,t.path);e.success||this.actionError.set(e.error??"Download failed")})}onDownloadAll(t){return G(this,null,function*(){this.actionError.set(null);let e=yield this.state.downloadAll(t);e.failedCount>0&&this.actionError.set(e.failedCount===1?"A file failed to download.":`${e.failedCount} files failed to download.`)})}onDeleteRequest(t){this.pendingDelete.set(t)}onConfirmDelete(){return G(this,null,function*(){let t=this.pendingDelete();if(this.pendingDelete.set(null),t){let e=yield this.state.deleteFile(t.scope,t.path);e.success?this.isStillSelected(t)&&this.clearSelection():this.actionError.set(e.error??"Delete failed")}})}onCancelDelete(){this.pendingDelete.set(null)}onRetry(){this.state.refreshManifest()}onClose(){this.closeRequested.emit()}onViewerClosed(){this.clearSelection()}clearSelection(){this.selectedFile.set(null),this.selectedContent.set(null),this.contentStatus.set("loading"),this.canViewSelected.set(!0)}resetSelection(){this.clearSelection(),this.actionError.set(null)}findFile(t){return(t.scope==="CASE"?this.state.caseFiles():this.state.namespaceFiles()).find(n=>n.path===t.path)}isStillSelected(t){let e=this.selectedFile();return e!==null&&e.scope===t.scope&&e.path===t.path}static \u0275fac=function(e){return new(e||i)};static \u0275cmp=D({type:i,selectors:[["agentos-exchange-shell"]],outputs:{closeRequested:"closeRequested"},decls:4,vars:17,consts:[[1,"exchange-shell"],["role","alert",1,"exchange-shell__upload-error"],[1,"exchange-shell__drawer",3,"fileSelected","uploadRequested","downloadRequested","downloadAllRequested","deleteRequested","retryRequested","viewerClosed","closeRequested","caseFiles","caseStatus","caseSectionVisible","canWriteCase","caseUploading","namespaceFiles","namespaceStatus","namespaceSectionVisible","canWriteNamespace","namespaceUploading","activeFile","selectedContent","contentStatus","canViewSelected"],["title","Delete file","confirmLabel","Delete","cancelLabel","Cancel",3,"confirmed","cancelled","open","message"]],template:function(e,n){e&1&&(r(0,"div",0),g(1,go,2,1,"p",1),r(2,"agentos-exchange-drawer",2),_("fileSelected",function(a){return n.onFileSelected(a)})("uploadRequested",function(a){return n.onUpload(a)})("downloadRequested",function(a){return n.onDownload(a)})("downloadAllRequested",function(a){return n.onDownloadAll(a)})("deleteRequested",function(a){return n.onDeleteRequest(a)})("retryRequested",function(){return n.onRetry()})("viewerClosed",function(){return n.onViewerClosed()})("closeRequested",function(){return n.onClose()}),l()(),r(3,"ds-confirm-dialog",3),_("confirmed",function(){return n.onConfirmDelete()})("cancelled",function(){return n.onCancelDelete()}),l()),e&2&&(c(),h(n.actionError()?1:-1),c(),x("caseFiles",n.state.caseFiles())("caseStatus",n.state.caseStatus())("caseSectionVisible",n.state.caseSectionVisible())("canWriteCase",n.state.canWriteCase())("caseUploading",n.state.caseUploading())("namespaceFiles",n.state.namespaceFiles())("namespaceStatus",n.state.namespaceStatus())("namespaceSectionVisible",n.state.namespaceSectionVisible())("canWriteNamespace",n.state.canWriteNamespace())("namespaceUploading",n.state.namespaceUploading())("activeFile",n.selectedFile())("selectedContent",n.selectedContent())("contentStatus",n.contentStatus())("canViewSelected",n.canViewSelected()),c(),x("open",n.confirmOpen())("message",n.deleteMessage()))},dependencies:[We,$t],styles:["[_nghost-%COMP%]{display:flex;flex-direction:column;height:100%;min-height:0}.exchange-shell[_ngcontent-%COMP%]{display:flex;flex-direction:column;height:100%;min-height:0;overflow:hidden}.exchange-shell__drawer[_ngcontent-%COMP%]{flex:1;min-height:0;display:flex;flex-direction:column}.exchange-shell__upload-error[_ngcontent-%COMP%]{margin:0;padding:.5rem .75rem;font-size:.8125rem;color:var(--color-error, #ff3b30);background:var(--color-bg-hover, rgba(0, 0, 0, .04));flex-shrink:0}"],changeDetection:0})};var je=10,ho=/\bnamespace\b/i;function Te(i,t){return ho.test(i)&&t?"NAMESPACE":"CASE"}function Qe(i,t){return Te(i,t)==="NAMESPACE"}function on(i){let t=a=>i.filter(u=>u.uploadedScope===a).map(u=>u.file.name),e=[],n=t("CASE"),o=t("NAMESPACE");return n.length>0&&e.push(`[Files attached to the case exchange: ${n.join(", ")}]`),o.length>0&&e.push(`[Files attached to the namespace exchange: ${o.join(", ")}]`),e.join(`
2
2
  `)}function an(i,t=32){if(i.length<=t)return i;let e=t-1,n=Math.ceil(e/2),o=Math.floor(e/2);return`${i.slice(0,n)}\u2026${i.slice(i.length-o)}`}function rn(i){let t=i.lastIndexOf(".");return t<=0||t===i.length-1?"FILE":i.slice(t+1).toUpperCase()}var ue=class i{exchangeState=T(ie);nextId=0;generation=0;dragDepth=0;attachments=v([]);limitError=v(null);isDragOver=v(!1);isUploading=v(!1);hasAttachments=E(()=>this.attachments().length>0);addFiles(t){if(this.isUploading())return;let e=Array.from(t);if(e.length===0)return;let n=this.attachments(),o=je-n.length;this.limitError.set(e.length>o?`You can attach up to ${je} files per message.`:null);let a=e.slice(0,Math.max(0,o)).map(u=>({id:`attachment-${this.nextId++}`,file:u,status:"pending"}));a.length>0&&this.attachments.set([...n,...a])}remove(t){this.isUploading()||(this.attachments.update(e=>e.filter(n=>n.id!==t)),this.attachments().length<je&&this.limitError.set(null))}reset(){this.generation++,this.attachments.set([]),this.limitError.set(null),this.isDragOver.set(!1),this.isUploading.set(!1),this.dragDepth=0}onDragEnter(t){this.holdsFiles(t)&&(t.preventDefault(),this.dragDepth++,this.isDragOver.set(!0))}onDragOver(t){this.holdsFiles(t)&&(t.preventDefault(),t.dataTransfer&&(t.dataTransfer.dropEffect="copy"))}onDragLeave(){this.dragDepth>0&&this.dragDepth--,this.dragDepth===0&&this.isDragOver.set(!1)}onDrop(t){if(!this.holdsFiles(t))return;t.preventDefault(),this.dragDepth=0,this.isDragOver.set(!1);let e=t.dataTransfer?.files;e&&e.length>0&&this.addFiles(e)}uploadAllAndBuildMention(t){return G(this,null,function*(){let e=this.generation;this.isUploading.set(!0);try{let n=!1;for(let o of this.attachments()){if(this.generation!==e)return null;if(o.status==="uploaded")continue;this.patch(o.id,{status:"uploading",error:void 0});let a=yield this.exchangeState.uploadFile(t,o.file);if(this.generation!==e)return null;a.success?this.patch(o.id,{status:"uploaded",uploadedScope:t}):(n=!0,this.patch(o.id,{status:"error",error:a.error??"Upload failed"}))}return n||this.generation!==e?null:on(this.attachments())}finally{this.generation===e&&this.isUploading.set(!1)}})}holdsFiles(t){return t.dataTransfer?.types.includes("Files")??!1}patch(t,e){this.attachments.update(n=>n.map(o=>o.id===t?j(j({},o),e):o))}static \u0275fac=function(e){return new(e||i)};static \u0275prov=Z({token:i,factory:i.\u0275fac})};var fo=["fileInput"],Co=(i,t)=>t.id;function bo(i,t){i&1&&(r(0,"span",10),m(1,"namespace"),l())}function xo(i,t){if(i&1&&(r(0,"span",12),m(1),l()),i&2){let e=s().$implicit;c(),y(e.error)}}function vo(i,t){if(i&1){let e=b();r(0,"div",6)(1,"span",7),m(2),l(),r(3,"span",8),m(4),l(),r(5,"span",9),m(6),l(),g(7,bo,2,0,"span",10),r(8,"ds-icon-button",11),_("action",function(){let o=d(e).$implicit,a=s(3);return p(a.removed.emit(o.id))}),l(),g(9,xo,2,1,"span",12),l()}if(i&2){let e=t.$implicit,n=s(3);O("composer-attachments__chip--error",e.status==="error")("composer-attachments__chip--uploaded",e.status==="uploaded"),c(),O("composer-attachments__icon--spinning",e.status==="uploading"),c(),y(n.chipIcon(e)),c(),x("title",e.file.name),c(),y(n.middleTruncate(e.file.name)),c(2),y(n.kindLabel(e.file.name)),c(),h(n.showNamespaceBadge(e)?7:-1),c(),x("title",n.removeTitle(e))("disabled",n.disabled()),c(),h(e.status==="error"&&e.error?9:-1)}}function wo(i,t){if(i&1&&(r(0,"div",3),R(1,vo,10,14,"div",5,Co),l()),i&2){let e=s(2);c(),N(e.attachments())}}function yo(i,t){i&1&&(r(0,"p",4),m(1),l()),i&2&&(c(),y(t))}function So(i,t){if(i&1&&(r(0,"div",1),g(1,wo,3,0,"div",3),g(2,yo,2,1,"p",4),l()),i&2){let e,n=s();c(),h(n.attachments().length>0?1:-1),c(),h((e=n.limitError())?2:-1,e)}}var ye=class i{attachments=f.required();namespaceBadge=f(!1);limitError=f(null);disabled=f(!1);removed=w();filesSelected=w();fileInput=z("fileInput");kindLabel=rn;middleTruncate=an;chipIcon(t){return t.status==="uploading"?"progress_activity":t.status==="uploaded"?"check_circle":He(t.file.name)}showNamespaceBadge(t){return t.uploadedScope?t.uploadedScope==="NAMESPACE":this.namespaceBadge()}removeTitle(t){return t.status==="uploaded"?`Remove ${t.file.name} from the list (the uploaded file stays in the exchange)`:`Remove ${t.file.name}`}openPicker(){this.fileInput()?.nativeElement.click()}onFileInputChange(t){let e=t.target,n=e.files?Array.from(e.files):[];n.length>0&&this.filesSelected.emit(n),e.value=""}static \u0275fac=function(e){return new(e||i)};static \u0275cmp=D({type:i,selectors:[["agentos-composer-attachments"]],viewQuery:function(e,n){e&1&&H(n.fileInput,fo,5),e&2&&B()},inputs:{attachments:[1,"attachments"],namespaceBadge:[1,"namespaceBadge"],limitError:[1,"limitError"],disabled:[1,"disabled"]},outputs:{removed:"removed",filesSelected:"filesSelected"},decls:3,vars:1,consts:[["fileInput",""],[1,"composer-attachments"],["type","file","multiple","","aria-hidden","true","tabindex","-1",1,"composer-attachments__file-input",3,"change"],[1,"composer-attachments__chips"],["role","alert",1,"composer-attachments__limit"],[1,"composer-attachments__chip",3,"composer-attachments__chip--error","composer-attachments__chip--uploaded"],[1,"composer-attachments__chip"],["aria-hidden","true",1,"composer-attachments__icon","material-icons"],[1,"composer-attachments__name",3,"title"],[1,"composer-attachments__kind"],[1,"composer-attachments__badge"],["icon","close",3,"action","title","disabled"],["role","alert",1,"composer-attachments__error"]],template:function(e,n){e&1&&(g(0,So,3,2,"div",1),r(1,"input",2,0),_("change",function(a){return n.onFileInputChange(a)}),l()),e&2&&h(n.attachments().length>0||n.limitError()?0:-1)},dependencies:[X],styles:[".composer-attachments[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.375rem;width:100%}.composer-attachments__chips[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:.5rem}.composer-attachments__chip[_ngcontent-%COMP%]{display:flex;align-items:center;flex-wrap:wrap;gap:.5rem;padding:.375rem .375rem .375rem .625rem;border:1px solid var(--color-border, rgba(0, 0, 0, .12));border-radius:12px;background:var(--color-surface-secondary, rgba(0, 0, 0, .04));font-size:.8125rem}.composer-attachments__chip--error[_ngcontent-%COMP%]{border-color:var(--color-error, #d13438)}.composer-attachments__chip--uploaded[_ngcontent-%COMP%]{border-color:var(--color-success, #2e7d32)}.composer-attachments__icon[_ngcontent-%COMP%]{font-size:1.25rem;color:var(--color-text-secondary, rgba(0, 0, 0, .6))}.composer-attachments__icon--spinning[_ngcontent-%COMP%]{animation:_ngcontent-%COMP%_composer-attachments-spin 1s linear infinite}.composer-attachments__name[_ngcontent-%COMP%]{font-weight:500}.composer-attachments__kind[_ngcontent-%COMP%]{font-size:.6875rem;letter-spacing:.04em;color:var(--color-text-secondary, rgba(0, 0, 0, .6))}.composer-attachments__badge[_ngcontent-%COMP%]{padding:.0625rem .375rem;border-radius:999px;background:var(--color-primary, #0071e3);color:var(--color-text-inverse, #fff);font-size:.6875rem;font-weight:600}.composer-attachments__error[_ngcontent-%COMP%]{flex-basis:100%;font-size:.75rem;color:var(--color-error, #d13438)}.composer-attachments__limit[_ngcontent-%COMP%]{margin:0;font-size:.75rem;color:var(--color-error, #d13438)}.composer-attachments__file-input[_ngcontent-%COMP%]{display:none}@keyframes _ngcontent-%COMP%_composer-attachments-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}"],changeDetection:0})};var Mo=["composerInput"],Eo=["messagesContainer"],To=(i,t)=>t.phaseIndex;function ko(i,t){if(i&1&&(r(0,"span",13),m(1),l()),i&2){let e=s();c(),y(e.exchangeFileCount())}}function Po(i,t){if(i&1){let e=b();r(0,"ds-icon-button",32),_("action",function(){let o;d(e);let a=s();return p(a.starToggled.emit({id:a.caseId,starred:!((o=a.activeCase())!=null&&o.favorite)}))}),l(),r(1,"ds-icon-button",33),_("action",function(){d(e);let o=s();return p(o.confirmingDelete.set(!0))}),l()}if(i&2){let e,n,o,a=s();O("case-chat__header-star--active",(e=a.activeCase())==null?null:e.favorite),x("icon",(n=a.activeCase())!=null&&n.favorite?"star":"star_border")("title",(o=a.activeCase())!=null&&o.favorite?"Remove from favorites":"Add to favorites")}}function Oo(i,t){if(i&1){let e=b();r(0,"span",15)(1,"span",34),m(2,"Delete this case?"),l(),r(3,"button",35),_("click",function(){d(e);let o=s();return o.deleteRequested.emit(o.caseId),p(o.confirmingDelete.set(!1))}),r(4,"span",36),m(5,"check"),l(),m(6," Delete "),l(),r(7,"button",37),_("click",function(){d(e);let o=s();return p(o.confirmingDelete.set(!1))}),r(8,"span",36),m(9,"close"),l()()()}}function Do(i,t){i&1&&(r(0,"div",17)(1,"span",38),m(2,"upload_file"),l(),r(3,"span"),m(4,"Drop files to attach"),l()())}function Io(i,t){i&1&&(r(0,"div",19)(1,"p"),m(2,"No messages yet."),l()())}function Vo(i,t){if(i&1&&(r(0,"span",44),m(1),l()),i&2){let e=s(2).$implicit;c(),K(" ",e.event.actor.role==="USER"?"You":e.event.actor.displayName||"Agent"," ")}}function Ro(i,t){if(i&1&&(r(0,"div",45)(1,"span",50),m(2,"session context"),l(),r(3,"pre",51),m(4),Pe(5,"json"),l()()),i&2){let e=s(2).$implicit;c(4),y(Oe(5,1,e.event.sessionContext))}}function No(i,t){if(i&1&&S(0,"div",47),i&2){let e=s(2).$implicit;x("innerHTML",e.html,he)}}function Ao(i,t){if(i&1&&S(0,"div",48),i&2){let e=s(2).$implicit;x("innerHTML",e.html,he)}}function Fo(i,t){if(i&1&&(r(0,"div",43),g(1,Vo,2,1,"span",44),g(2,Ro,6,3,"div",45),r(3,"div",46),g(4,No,1,1,"div",47)(5,Ao,1,1,"div",48),S(6,"ds-copy-button",49),l()()),i&2){let e=s().$implicit,n=s(2);O("case-chat__turn--user",e.event.actor.role==="USER")("case-chat__turn--agent",e.event.actor.role==="AGENT"),c(),h(e.isFirstInGroup?1:-1),c(),h(n.showTechnical()&&e.event.sessionContext?2:-1),c(2),h(e.event.actor.role==="USER"?4:5),c(2),x("text",n.messageText(e))}}function qo(i,t){if(i&1&&(r(0,"div",40)(1,"span",44),m(2),l(),S(3,"div",48),l()),i&2){let e=s(3);c(2),y(e.agentDisplayName()),c(),x("innerHTML",e.streamingHtml(),he)}}function Lo(i,t){if(i&1&&(r(0,"div",53),m(1),l()),i&2){let e=s(2).$implicit;c(),y(e.item.detail)}}function zo(i,t){if(i&1&&(r(0,"details",41)(1,"summary",52),m(2),l(),g(3,Lo,2,1,"div",53),l()),i&2){let e=s().$implicit;c(2),K("\u2699 System log \xB7 ",e.item.label),c(),h(e.item.detail?3:-1)}}function $o(i,t){i&1&&m(0," \u23F3 ")}function Ho(i,t){i&1&&m(0," \u2705 ")}function Bo(i,t){i&1&&m(0," \u274C ")}function Uo(i,t){if(i&1&&(r(0,"div",70)(1,"span",71),m(2,"Enrichment content"),l(),r(3,"pre"),m(4),l()()),i&2){let e=s().$implicit;c(4),y(e.enrichmentContent)}}function Wo(i,t){if(i&1&&(r(0,"div",66)(1,"div",67)(2,"span",68),m(3),l(),r(4,"span",69),m(5),l()(),r(6,"div",70)(7,"span",71),m(8,"Prompt"),l(),r(9,"pre"),m(10),l()(),r(11,"div",70)(12,"span",71),m(13,"LLM output"),l(),r(14,"pre"),m(15),l()(),g(16,Uo,5,1,"div",70),l()),i&2){let e=t.$implicit;O("case-chat__enrichment-phase--failed",!e.success),c(3),K("Phase ",e.phaseIndex),c(2),y(e.success?"\u2705":"\u274C"),c(5),y(e.prompt),c(5),y(e.llmOutput),c(),h(e.enrichmentContent?16:-1)}}function Go(i,t){if(i&1&&(r(0,"div",60)(1,"span",62),m(2,"Enrichment phases"),l(),R(3,Wo,17,7,"div",65,To),l()),i&2){let e=s(3).$implicit;c(3),N(e.call.enrichmentPhases)}}function jo(i,t){if(i&1&&(r(0,"div",61)(1,"span",62),m(2,"Payload"),l(),r(3,"pre"),m(4),l()()),i&2){let e=s(3).$implicit;c(4),y(e.call.args)}}function Qo(i,t){i&1&&(r(0,"pre"),m(1),l()),i&2&&(c(),y(t))}function Ko(i,t){i&1&&(r(0,"span",63),m(1,"Running\u2026"),l())}function Yo(i,t){i&1&&(r(0,"span",64),m(1,"No output"),l())}function Xo(i,t){if(i&1&&(r(0,"div",59),g(1,Go,5,0,"div",60),g(2,jo,5,1,"div",61),r(3,"div",61)(4,"span",62),m(5,"Output"),l(),g(6,Qo,2,1,"pre")(7,Ko,2,0,"span",63)(8,Yo,2,0,"span",64),l()()),i&2){let e,n=s(2).$implicit,o=s(2);c(),h(o.showTechnical()&&(n.call.enrichmentPhases!=null&&n.call.enrichmentPhases.length)?1:-1),c(),h(n.call.args?2:-1),c(4),h((e=o.extractToolOutput(n.call))?6:n.call.response?8:7,e)}}function Jo(i,t){if(i&1){let e=b();r(0,"div",54)(1,"button",55),_("click",function(){d(e);let o=s().$implicit,a=s(2);return p(a.toggleToolCall(o.call.requestId))}),r(2,"span",56),g(3,$o,1,0)(4,Ho,1,0)(5,Bo,1,0),l(),r(6,"span",57),m(7),l(),r(8,"span",58),m(9),l()(),g(10,Xo,9,3,"div",59),l()}if(i&2){let e=s().$implicit,n=s(2);O("case-chat__tool-call--pending",!e.call.response)("case-chat__tool-call--success",(e.call.response==null?null:e.call.response.success)===!0)("case-chat__tool-call--error",(e.call.response==null?null:e.call.response.success)===!1),c(),$("aria-expanded",n.isToolCallExpanded(e.call.requestId)),c(2),h(e.call.response?e.call.response.success?4:5:3),c(4),y(e.call.toolName),c(2),y(n.isToolCallExpanded(e.call.requestId)?"\u25BC":"\u25B6"),c(),h(n.isToolCallExpanded(e.call.requestId)?10:-1)}}function Zo(i,t){if(i&1&&g(0,Fo,7,8,"div",39)(1,qo,4,2,"div",40)(2,zo,4,2,"details",41)(3,Jo,11,11,"div",42),i&2){let e=t.$implicit;h(e.kind==="message"?0:e.kind==="streaming"?1:e.kind==="technical"?2:3)}}function ei(i,t){if(i&1&&R(0,Zo,4,1,null,null,gt().trackTimelineItem,!0),i&2){let e=s();N(e.timeline())}}function ti(i,t){i&1&&(r(0,"div",20),S(1,"span",72)(2,"span",72)(3,"span",72),l())}function ni(i,t){if(i&1){let e=b();r(0,"div",21)(1,"ds-icon-button",73),_("action",function(){d(e);let o=s();return p(o.onScrollToBottomClick())}),l()()}}function oi(i,t){if(i&1){let e=b();r(0,"div",23)(1,"agentos-agent-autocomplete",74),_("selected",function(o){d(e);let a=s();return p(a.onAgentSelected(o))})("dismissed",function(){d(e);let o=s();return p(o.closeAtAutocomplete())}),l()()}if(i&2){let e=s();c(),x("agents",e.autocomplete.atSuggestions())}}function ii(i,t){if(i&1){let e=b();r(0,"div",23)(1,"agentos-prompt-autocomplete",75),_("selected",function(o){d(e);let a=s();return p(a.onPromptSelected(o))})("dismissed",function(){d(e);let o=s();return p(o.closeSlashAutocomplete())}),l()()}if(i&2){let e=s();c(),x("prompts",e.autocomplete.slashSuggestions())}}function ai(i,t){if(i&1){let e=b();r(0,"ds-icon-button",76),_("action",function(){d(e),s();let o=fe(28);return p(o.openPicker())}),l()}if(i&2){let e=s();x("disabled",!e.canStageFiles())}}function ri(i,t){if(i&1){let e=b();r(0,"ds-icon-button",77),_("action",function(){d(e);let o=s();return p(o.interrupt())}),l()}}function si(i,t){if(i&1){let e=b();r(0,"ds-icon-button",78),_("action",function(){d(e);let o=s();return p(o.submit())}),l()}if(i&2){let e=s();x("title",e.preferences.composerHint())("disabled",!e.canSend)}}var li=64;function sn(){let i=window.getSelection();return!!i&&i.toString().length>0}var Ke=class i{route=T(de);http=T(Ie);zone=T(_t);destroyRef=T(ee);domSanitizer=T(Dt);exchangeState=T(ie);config=T(Re);preferences=T(Le);caseState=T(me);exchangeOpen=v(!1);exchangeFileCount=this.exchangeState.fileCount;attachments=T(ue);autocomplete=T(_e);canAttach=this.exchangeState.canWriteCase;canStageFiles=E(()=>this.canAttach()&&!this.isRunning()&&!this.isTerminal()&&!this.attachments.isUploading());toggleExchange(){this.exchangeOpen.update(t=>!t)}caseId=this.route.snapshot.queryParams.case;namespaceId=this.route.snapshot.queryParams.ns;markdownRenderer=this.buildMarkdownRenderer();agentDisplayName=E(()=>{let t=this.events();for(let e=t.length-1;e>=0;e--){let n=t[e];if(n){if(n.type==="AgentRunningEvent"||n.type==="AgentSelectedEvent"||n.type==="AgentFinishedEvent"){let o=n.agentName;if(o&&o.trim().length>0)return o}if(n.type==="MessageEvent"&&n.actor.role==="AGENT"&&n.actor.displayName)return n.actor.displayName}}return"Assistant"});eventSource=null;composerInput=z("composerInput");messagesContainer=z("messagesContainer");promptAutocompleteRef=z(ne);agentAutocompleteRef=z(oe);events=v([]);messageHtmlCache=new Map;inputValue=v("");isRunning=v(!1);isTerminal=v(!1);activeCase=E(()=>this.caseState.cases().find(t=>t.id===this.caseId)??null);_sseStatus=v("");caseStatus=E(()=>this._sseStatus()||this.activeCase()?.status||"IDLE");confirmingDelete=v(!1);starToggled=w();deleteRequested=w();logsToggled=w();showTechnicalOverride=f(!1);showTechnical=E(()=>this.showTechnicalOverride());streamingText=v("");streamingHtml=E(()=>{let t=this.streamingText();return t?this.renderMarkdown(t):""});namespaceTargeted=E(()=>Qe(this.inputValue(),this.exchangeState.canWriteNamespace()));collapsedTools=v(new Set);isAtBottom=v(!0);scrollListenerCleanup=null;constructor(){this.autocomplete.init(this.namespaceId),Y(()=>{this.isRunning()||this.isTerminal()||queueMicrotask(()=>{sn()||this.composerInput()?.nativeElement.focus()})}),Y(()=>{this.timeline(),this.streamingText(),this.isAtBottom()&&queueMicrotask(()=>{sn()||this.scrollToBottom()})}),xe(()=>{this.attachScrollListener()})}baseTimeline=E(()=>{let t=this.events(),e=this.showTechnical(),n=new Map;for(let M of t)if(M.type==="ToolRequestEvent"){let C=M,I=C.toolRequestId??M.id,P=n.get(I);n.set(I,{requestId:I,toolName:C.toolName??"unknown",args:C.args??null,response:P?.response,enrichmentPhases:C.enrichmentPhases??null})}else if(M.type==="ToolResponseEvent"){let C=M,I=C.toolRequestId??M.id,P=n.get(I);n.set(I,{requestId:I,toolName:P?.toolName??C.toolName??"unknown",args:P?.args??null,response:C,enrichmentPhases:P?.enrichmentPhases??null})}let o=[],a=new Set,u=null;for(let M of t)if(M.type==="MessageEvent"){let C=M,I=C.actor.role,P=I!==u;u=I,o.push({kind:"message",event:C,html:this.messageHtmlCache.get(M.id)??"",isFirstInGroup:P})}else if(M.type==="ToolRequestEvent"||M.type==="ToolResponseEvent"){let C=M.toolRequestId??M.id;a.has(C)||(a.add(C),o.push({kind:"tool",call:n.get(C)})),u=null}else if(e){let C=this.toTechnicalItem(M);C&&(o.push({kind:"technical",item:C,eventId:M.id}),u=null)}return o});timeline=E(()=>{let t=this.baseTimeline();return this.streamingText().trim().length===0?t:[...t,{kind:"streaming"}]});trackTimelineItem(t,e){switch(e.kind){case"message":return e.event.id;case"tool":return e.call.requestId;case"technical":return e.eventId;case"streaming":return"streaming"}}get canSend(){return(!!this.inputValue().trim()||this.attachments.hasAttachments())&&!this.isRunning()&&!this.isTerminal()&&!this.attachments.isUploading()}ngOnInit(){this.connectSse(),this.route.queryParams.pipe(U(this.destroyRef)).subscribe(t=>{let e=t.case;e&&e!==this.caseId&&(this.caseId=e,this.reinitialise())})}ngOnDestroy(){this.eventSource?.close(),this.scrollListenerCleanup?.()}attachScrollListener(){let t=this.messagesContainer()?.nativeElement;if(!t)return;let e=()=>{let n=t.scrollHeight-t.scrollTop-t.clientHeight;this.isAtBottom.set(n<=li)};t.addEventListener("scroll",e,{passive:!0}),this.scrollListenerCleanup=()=>t.removeEventListener("scroll",e)}scrollToBottom(){let t=this.messagesContainer()?.nativeElement;t&&(t.scrollTop=t.scrollHeight)}onScrollToBottomClick(){this.isAtBottom.set(!0),this.scrollToBottom()}connectSse(){let t=`${this.config.basePath}/api/cases/${this.caseId}/events`;console.log("[AgentOS SSE] connecting",{url:t,basePath:this.config.basePath,caseId:this.caseId,namespaceId:this.namespaceId,now:new Date().toISOString()}),this.eventSource=this.zone.runOutsideAngular(()=>new EventSource(t));let e=o=>{let a=performance.now(),u=o.type,M=o.data;console.log("[AgentOS SSE] frame received",{sseEventName:u,dataLength:M?.length??0,dataPreview:M?.slice(0,120),receivedAtMs:a});try{let C=JSON.parse(M);this.zone.run(()=>{let I=this.events().length;if(C.type==="MessageEvent"){let q=C,ae=this.extractText(q);this.messageHtmlCache.has(C.id)||this.messageHtmlCache.set(C.id,this.renderMarkdown(ae))}this.events.update(q=>q.some(ae=>ae.id===C.id)?q:[...q,C]);let P=this.events().length;if(console.log("[AgentOS SSE] event processed",{sseEventName:u,eventType:C.type,eventId:C.id,beforeLen:I,afterLen:P,running:this.isRunning(),terminal:this.isTerminal()}),C.type==="TextChunkEvent"){let q=C.chunk;q&&this.streamingText.update(ae=>ae+q);return}if(C.type==="CaseUpdatedEvent"){let q=C;q.title&&this.caseState.updateCaseTitle(C.caseId,q.title);return}if(C.type==="CaseStatusEvent"){let q=C.status;this._sseStatus.set(q),this.caseState.updateCaseStatus(this.caseId,q);let ae=q==="KILLED"||q==="ERROR";if(this.isTerminal.set(ae),ae)this.isRunning.set(!1),this.eventSource?.close(),this.eventSource=null;else{let ct=q==="RUNNING";this.isRunning.set(ct),ct||this.streamingText.set("")}return}if(C.type==="AgentFinishedEvent"){this.isRunning.set(!1),this.streamingText.set(""),this.anyToolResponseThisTurn&&this.exchangeState.refreshManifest(),this.anyToolResponseThisTurn=!1;return}if(C.type==="ToolResponseEvent"){this.anyToolResponseThisTurn=!0;let q=nn(C.toolName);q==="case"?this.exchangeState.refreshCase():q==="namespace"&&this.exchangeState.refreshNamespace();return}})}catch(C){console.warn("[AgentOS SSE] failed to parse event data",{sseEventName:u,error:C,dataPreview:M?.slice(0,500)})}},n=["MessageEvent","CaseStatusEvent","CaseUpdatedEvent","AgentSelectedEvent","AgentRunningEvent","AgentFinishedEvent","ThinkingEvent","TextChunkEvent","ToolRequestEvent","ToolResponseEvent","PendingConfirmationEvent","ConfirmationResolvedEvent","ErrorEvent","WarnEvent","IntentionGeneratedEvent"];for(let o of n)console.log("[AgentOS SSE] addEventListener",o),this.eventSource.addEventListener(o,e);this.eventSource.onopen=()=>{console.log("[AgentOS SSE] connection open",{readyState:this.eventSource?.readyState,at:new Date().toISOString()})},this.eventSource.onmessage=o=>{console.log("[AgentOS SSE] onmessage (unnamed event) received",{dataLength:o.data?.length??0,dataPreview:o.data?.slice(0,120)})},this.eventSource.onerror=o=>{console.warn("[AgentOS SSE] connection error",{err:o,readyState:this.eventSource?.readyState,at:new Date().toISOString()}),this.zone.run(()=>{this.isRunning.set(!1)})}}anyToolResponseThisTurn=!1;onInput(t){let e=t.target.value;this.autocomplete.onInput(e,this.inputValue)}onKeydown(t){this.autocomplete.onKeydown(t,this.promptAutocompleteRef,this.agentAutocompleteRef)||this.preferences.shouldSend(t)&&(t.preventDefault(),this.submit())}onPromptSelected(t){this.autocomplete.onPromptSelected(t,this.promptAutocompleteRef,this.composerInput,this.inputValue)}onAgentSelected(t){this.autocomplete.onAgentSelected(t,this.agentAutocompleteRef,this.composerInput,this.inputValue)}closeSlashAutocomplete(){this.autocomplete.slashSuggestions.set([])}closeAtAutocomplete(){this.autocomplete.atSuggestions.set([])}reinitialise(){this.eventSource?.close(),this.eventSource=null,this.events.set([]),this.messageHtmlCache.clear(),this.inputValue.set(""),this.isRunning.set(!1),this.isTerminal.set(!1),this._sseStatus.set(""),this.confirmingDelete.set(!1),this.streamingText.set(""),this.collapsedTools.set(new Set),this.isAtBottom.set(!0),this.autocomplete.reset(),this.attachments.reset(),this.connectSse()}submitting=!1;submit(){return G(this,null,function*(){if(this.submitting||!this.canSend)return;let t=this.inputValue().trim();if(this.attachments.hasAttachments()){this.submitting=!0;try{let e=this.caseId,n=Te(t,this.exchangeState.canWriteNamespace()),o=yield this.attachments.uploadAllAndBuildMention(n);if(o===null||this.caseId!==e)return;(yield this.postMessage(t?`${t}
3
3
 
4
4
  ${o}`:o))&&this.caseId===e&&(this.inputValue.set(""),this.attachments.reset())}finally{this.submitting=!1}return}this.inputValue.set(""),this.sendMessage(t)})}sendMessage(t){this.postMessage(t)}postMessage(t){return this.isRunning.set(!0),this.streamingText.set(""),Se(this.http.post(`${this.config.basePath}/api/cases/${this.caseId}/messages`,{content:t,userId:"default-user"})).then(()=>!0,e=>(console.error("[CaseChat] Failed to send message",e),this.isRunning.set(!1),!1))}interrupt(){this.http.post(`${this.config.basePath}/api/cases/${this.caseId}/interrupt`,{}).subscribe({error:t=>console.error("[CaseChat] Failed to interrupt case",t)})}kill(){this.http.post(`${this.config.basePath}/api/cases/${this.caseId}/kill`,{}).subscribe({error:t=>console.error("[CaseChat] Failed to kill case",t)})}extractText(t){return t.content?.filter(e=>"content"in e).map(e=>e.content).join("")??""}extractToolOutput(t){if(!t.response)return null;let e=t.response.output;return e?e.content??null:null}toggleToolCall(t){this.collapsedTools.update(e=>{let n=new Set(e);return n.has(t)?n.delete(t):n.add(t),n})}isToolCallExpanded(t){return this.collapsedTools().has(t)}toggleShowTechnical(){this.logsToggled.emit()}messageText(t){return this.extractText(t.event)}renderMarkdown(t){if(!t)return"";let e=Lt.parse(t,{renderer:this.markdownRenderer,breaks:!0,gfm:!0,async:!1}),n=zt.sanitize(e,{ADD_TAGS:["span"],ADD_ATTR:["aria-hidden","aria-label","target","rel"],ALLOWED_URI_REGEXP:/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp):|[^a-z]|[a-z+.-]+(?:[^a-z+.-:]|$))/i});return this.domSanitizer.bypassSecurityTrustHtml(n)}buildMarkdownRenderer(){let t=new qt,e=t.link.bind(t);return t.link=n=>{let o=e(n);return this.isExternalLink(n.href)&&(o=o.replace("<a ",'<a target="_blank" rel="noopener noreferrer" ').replace("</a>",'<span class="external-link-icon" aria-hidden="true">\u2197</span></a>')),o},t}isExternalLink(t){if(!t||t.startsWith("/")||t.startsWith("#")||t.startsWith("?"))return!1;if(t.startsWith("//"))return!0;try{return new URL(t,window.location.href).hostname!==window.location.hostname}catch(e){return!1}}toTechnicalItem(t){switch(t.type){case"WarnEvent":return{type:"WarnEvent",label:"\u26A0\uFE0F Warn",detail:t.message};case"ErrorEvent":return{type:"ErrorEvent",label:"\u274C Error",detail:t.message};case"CaseStatusEvent":return{type:"CaseStatusEvent",label:`\u{1F7E1} Status: ${t.status}`};case"AgentRunningEvent":return{type:"AgentRunningEvent",label:`\u25B6\uFE0F Agent running: ${t.agentName}`};case"AgentFinishedEvent":return{type:"AgentFinishedEvent",label:`\u2705 Agent finished: ${t.agentName}`};case"AgentSelectedEvent":return{type:"AgentSelectedEvent",label:`\u{1F3AF} Agent selected: ${t.agentName}`};case"IntentionGeneratedEvent":{let e=t;return{type:"IntentionGeneratedEvent",label:`\u{1F9E0} Intention \u2192 ${e.toolName}`,detail:e.intention}}default:return null}}CaseStatusEnum=At;static \u0275fac=function(e){return new(e||i)};static \u0275cmp=D({type:i,selectors:[["agentos-case-chat"]],viewQuery:function(e,n){e&1&&H(n.composerInput,Mo,5)(n.messagesContainer,Eo,5)(n.promptAutocompleteRef,ne,5)(n.agentAutocompleteRef,oe,5),e&2&&B(4)},inputs:{showTechnicalOverride:[1,"showTechnicalOverride"]},outputs:{starToggled:"starToggled",deleteRequested:"deleteRequested",logsToggled:"logsToggled"},features:[ke([ue,_e])],decls:38,vars:33,consts:[["messagesContainer",""],["attachmentsUi",""],["composerInput",""],["position","end","drawerWidth","400px",3,"openChange","open","mobileFullWidth"],["dsDrawerSide","",3,"closeRequested"],["dsDrawerContent","",1,"case-chat__host"],[1,"case-chat__header"],[1,"case-chat__header-title-group"],[3,"status","size"],[1,"case-chat__header-title"],[1,"case-chat__header-badge"],[1,"case-chat__header-exchange"],["icon","folder","variant","default",3,"action","title"],["aria-hidden","true",1,"case-chat__exchange-badge"],[1,"case-chat__header-sep"],[1,"case-chat__header-confirm"],[1,"case-chat",3,"dragenter","dragover","dragleave","drop"],["aria-hidden","true",1,"case-chat__drop-overlay"],[1,"case-chat__messages"],[1,"case-chat__empty"],[1,"case-chat__thinking"],[1,"case-chat__scroll-anchor"],["dsBlueprint","",1,"case-chat__composer"],[1,"case-chat__autocomplete"],[3,"removed","filesSelected","attachments","namespaceBadge","limitError","disabled"],["placeholder","Reply\u2026","rows","3",1,"case-chat__input",3,"input","keydown","value","disabled"],[1,"case-chat__actions"],["icon","attach_file","variant","default","title","Attach files",3,"disabled"],[1,"case-chat__actions-hint"],["icon","stop","variant","danger","title","Interrupt"],["icon","send","variant","primary",3,"title","disabled"],["icon","cancel","variant","danger","title","Kill",3,"action","disabled"],["variant","default",1,"case-chat__header-star",3,"action","icon","title"],["icon","delete","variant","danger","title","Delete case",3,"action"],[1,"case-chat__header-confirm-label"],["type","button","title","Confirm delete",1,"case-chat__header-confirm-yes",3,"click"],["aria-hidden","true",1,"material-icons"],["type","button","title","Cancel",1,"case-chat__header-confirm-no",3,"click"],[1,"material-icons"],[1,"case-chat__turn",3,"case-chat__turn--user","case-chat__turn--agent"],[1,"case-chat__turn","case-chat__turn--agent","case-chat__turn--streaming"],[1,"case-chat__log"],[1,"case-chat__tool-call",3,"case-chat__tool-call--pending","case-chat__tool-call--success","case-chat__tool-call--error"],[1,"case-chat__turn"],[1,"case-chat__role-label"],[1,"case-chat__session-context"],[1,"case-chat__bubble-wrapper"],["dsBlueprint","",1,"case-chat__bubble","case-chat__message-text--markdown",3,"innerHTML"],[1,"case-chat__bubble","case-chat__message-text--markdown",3,"innerHTML"],["title","Copy message",1,"case-chat__bubble-copy",3,"text"],[1,"case-chat__session-context-label"],[1,"case-chat__session-context-body"],[1,"case-chat__log-summary"],[1,"case-chat__log-body"],[1,"case-chat__tool-call"],["type","button",1,"case-chat__tool-call-header",3,"click"],[1,"case-chat__tool-call-icon"],[1,"case-chat__tool-call-name"],[1,"case-chat__tool-call-chevron"],[1,"case-chat__tool-call-output"],[1,"case-chat__tool-call-section","case-chat__enrichment-section"],[1,"case-chat__tool-call-section"],[1,"case-chat__tool-call-label"],[1,"case-chat__tool-call-pending"],[1,"case-chat__tool-call-empty"],[1,"case-chat__enrichment-phase",3,"case-chat__enrichment-phase--failed"],[1,"case-chat__enrichment-phase"],[1,"case-chat__enrichment-phase-header"],[1,"case-chat__enrichment-phase-index"],[1,"case-chat__enrichment-phase-status"],[1,"case-chat__enrichment-phase-row"],[1,"case-chat__enrichment-phase-label"],[1,"thinking-dot"],["icon","keyboard_arrow_down","variant","default","title","Scroll to bottom",3,"action"],[3,"selected","dismissed","agents"],[3,"selected","dismissed","prompts"],["icon","attach_file","variant","default","title","Attach files",3,"action","disabled"],["icon","stop","variant","danger","title","Interrupt",3,"action"],["icon","send","variant","primary",3,"action","title","disabled"]],template:function(e,n){if(e&1){let o=b();r(0,"ds-drawer",3),yt("openChange",function(u){return d(o),wt(n.exchangeOpen,u)||(n.exchangeOpen=u),p(u)}),r(1,"agentos-exchange-shell",4),_("closeRequested",function(){return n.exchangeOpen.set(!1)}),l(),r(2,"div",5)(3,"header",6)(4,"div",7),S(5,"agentos-case-status-glyph",8),r(6,"span",9),m(7),l(),r(8,"span",10),m(9),l()(),r(10,"div",11)(11,"ds-icon-button",12),_("action",function(){return n.toggleExchange()}),l(),g(12,ko,2,1,"span",13),l(),S(13,"span",14),g(14,Po,2,4)(15,Oo,10,0,"span",15),l(),r(16,"div",16),_("dragenter",function(u){return n.canStageFiles()&&n.attachments.onDragEnter(u)})("dragover",function(u){return n.canStageFiles()&&n.attachments.onDragOver(u)})("dragleave",function(){return n.attachments.onDragLeave()})("drop",function(u){return n.canStageFiles()&&n.attachments.onDrop(u)}),g(17,Do,5,0,"div",17),r(18,"div",18,0),g(20,Io,3,0,"div",19)(21,ei,2,0),g(22,ti,4,0,"div",20),l(),g(23,ni,2,0,"div",21),r(24,"div",22),g(25,oi,2,1,"div",23),g(26,ii,2,1,"div",23),r(27,"agentos-composer-attachments",24,1),_("removed",function(u){return n.attachments.remove(u)})("filesSelected",function(u){return n.attachments.addFiles(u)}),l(),r(29,"textarea",25,2),_("input",function(u){return n.onInput(u)})("keydown",function(u){return n.onKeydown(u)}),l(),r(31,"div",26),g(32,ai,1,1,"ds-icon-button",27),r(33,"span",28),m(34),l(),g(35,ri,1,0,"ds-icon-button",29)(36,si,1,2,"ds-icon-button",30),r(37,"ds-icon-button",31),_("action",function(){return n.kill()}),l()()()()()()}if(e&2){let o;vt("open",n.exchangeOpen),x("mobileFullWidth",!0),c(5),x("status",n.caseStatus())("size",16),c(2),y(((o=n.activeCase())==null?null:o.title)??""),c(),O("case-chat__header-badge--running",n.caseStatus()===n.CaseStatusEnum.RUNNING)("case-chat__header-badge--error",n.caseStatus()===n.CaseStatusEnum.ERROR)("case-chat__header-badge--pending",n.caseStatus()===n.CaseStatusEnum.PENDING)("case-chat__header-badge--killed",n.caseStatus()===n.CaseStatusEnum.KILLED),c(),y(n.caseStatus().toLowerCase()),c(2),x("title","Files ("+n.exchangeFileCount()+")"),c(),h(n.exchangeFileCount()>0&&!n.exchangeOpen()?12:-1),c(2),h(n.confirmingDelete()?15:14),c(3),h(n.attachments.isDragOver()?17:-1),c(3),h(n.timeline().length===0?20:21),c(2),h(n.isRunning()?22:-1),c(),h(n.isAtBottom()?-1:23),c(2),h(n.autocomplete.atSuggestions().length>0?25:-1),c(),h(n.autocomplete.slashSuggestions().length>0?26:-1),c(),x("attachments",n.attachments.attachments())("namespaceBadge",n.namespaceTargeted())("limitError",n.attachments.limitError())("disabled",n.attachments.isUploading()),c(2),x("value",n.inputValue())("disabled",n.isRunning()||n.isTerminal()||n.attachments.isUploading()),c(3),h(n.canAttach()?32:-1),c(2),y(n.preferences.composerHint()),c(),h(n.isRunning()?35:36),c(2),x("disabled",n.isTerminal())}},dependencies:[X,Ht,Ge,ne,oe,we,pe,Bt,ye,Ot],styles:["[_nghost-%COMP%]{display:flex;flex-direction:column;flex:1;min-height:0;overflow:hidden}.case-chat__host[_ngcontent-%COMP%]{position:relative;flex:1;min-height:0;display:flex;flex-direction:column;height:100%;overflow:hidden}.case-chat__header[_ngcontent-%COMP%]{display:flex;align-items:center;gap:10px;height:54px;flex:none;padding:0 12px;border-bottom:1px solid var(--color-divider);background:var(--color-bg);min-width:0;overflow:hidden}@media(min-width:600px){.case-chat__header[_ngcontent-%COMP%]{padding:0 20px}}.case-chat__header-star--active[_ngcontent-%COMP%]{--color-text-secondary: var(--color-accent)}.case-chat__header-confirm[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:6px}.case-chat__header-confirm-label[_ngcontent-%COMP%]{font-size:11px;color:var(--red-deep);font-family:var(--font-heading);font-weight:600;letter-spacing:.08em;text-transform:uppercase;white-space:nowrap}.case-chat__header-confirm-yes[_ngcontent-%COMP%]{appearance:none;background:transparent;border:none;margin:0;font:inherit;text-align:left;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;display:inline-flex;align-items:center;gap:5px;height:30px;padding:0 10px;border:1px solid var(--red);background:var(--red);color:#fff;font-family:var(--font-heading);font-weight:600;font-size:11px;cursor:pointer;transition:background .14s,border-color .14s}.case-chat__header-confirm-yes[_ngcontent-%COMP%] .material-icons[_ngcontent-%COMP%]{font-size:16px;line-height:1}.case-chat__header-confirm-yes[_ngcontent-%COMP%]:hover{background:var(--red-deep);border-color:var(--red-deep)}.case-chat__header-confirm-yes[_ngcontent-%COMP%]{gap:6px;padding:0 12px;font-size:12px}.case-chat__header-confirm-no[_ngcontent-%COMP%]{appearance:none;background:transparent;border:none;padding:0;margin:0;font:inherit;cursor:pointer;text-align:left;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;width:30px;height:30px;border-radius:0;color:var(--color-text-secondary);display:flex;align-items:center;justify-content:center;transition:background .12s ease,color .12s ease}.case-chat__header-confirm-no[_ngcontent-%COMP%]:hover{background:var(--color-bg-hover);color:var(--color-text)}.case-chat__header-confirm-no[_ngcontent-%COMP%]:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px;border-radius:0}.case-chat__header-confirm-no[_ngcontent-%COMP%]:disabled{opacity:.4;cursor:not-allowed}.case-chat__header-confirm-no[_ngcontent-%COMP%]{border:1px solid var(--color-divider);color:var(--color-neutral-600)}.case-chat__header-confirm-no[_ngcontent-%COMP%]:hover{color:var(--color-text);border-color:var(--color-neutral-500);background:var(--color-bg-hover)}.case-chat__header-title-group[_ngcontent-%COMP%]{flex:1;min-width:0;display:flex;align-items:center;gap:8px;overflow:hidden}.case-chat__header-title[_ngcontent-%COMP%]{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:var(--font-heading);font-weight:600;font-size:17px;color:var(--color-text)}@media(max-width:600px){.case-chat__header-title[_ngcontent-%COMP%]{font-size:14px}}.case-chat__header-badge[_ngcontent-%COMP%]{display:inline-flex;align-items:center;border:1px solid currentColor;font-size:9.5px;font-family:var(--font-heading);font-weight:600;letter-spacing:.1em;text-transform:uppercase;white-space:nowrap;padding:1px 6px;color:var(--status-idle-text)}.case-chat__header-badge--running[_ngcontent-%COMP%]{color:var(--color-accent-700)}.case-chat__header-badge--error[_ngcontent-%COMP%]{color:var(--red-deep)}.case-chat__header-badge--pending[_ngcontent-%COMP%]{color:var(--status-pending-text)}.case-chat__header-badge--killed[_ngcontent-%COMP%]{color:var(--status-killed-text)}.case-chat__header-badge[_ngcontent-%COMP%]{flex:none;padding:2px 8px;border-color:var(--color-neutral-500);color:var(--color-neutral-600)}@media(max-width:600px){.case-chat__header-badge[_ngcontent-%COMP%]{display:none}}.case-chat__header-exchange[_ngcontent-%COMP%]{position:relative;flex:none}.case-chat__header-sep[_ngcontent-%COMP%]{width:1px;height:18px;background:var(--color-divider);flex:none}.case-chat__exchange-badge[_ngcontent-%COMP%]{position:absolute;top:-2px;right:-2px;min-width:16px;height:16px;padding:0 4px;background:var(--color-accent);color:var(--color-text-inverse);font-size:.625rem;font-weight:700;line-height:16px;text-align:center;pointer-events:none}.case-chat[_ngcontent-%COMP%]{display:flex;flex-direction:column;flex:1;min-height:0;width:100%;padding:1rem;gap:1rem;position:relative;background:var(--color-bg)}@media(min-width:900px){.case-chat[_ngcontent-%COMP%]{padding:1.5rem}}.case-chat__messages[_ngcontent-%COMP%]{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden;display:flex;flex-direction:column;gap:.75rem;padding-bottom:.5rem;-webkit-overflow-scrolling:touch;scrollbar-width:thin;scrollbar-color:var(--color-divider) transparent}.case-chat__empty[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:center;flex:1}.case-chat__empty[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{color:var(--color-neutral-500);font-size:.9rem;margin:0}.case-chat__turn[_ngcontent-%COMP%]{flex-shrink:0;display:flex;flex-direction:column;gap:6px;max-width:88%}@media(max-width:600px){.case-chat__turn[_ngcontent-%COMP%]{max-width:100%;width:100%}}.case-chat__turn--user[_ngcontent-%COMP%]{align-self:flex-end;align-items:flex-end;max-width:78%}@media(max-width:600px){.case-chat__turn--user[_ngcontent-%COMP%]{max-width:95%;align-self:flex-end;align-items:flex-end}}.case-chat__turn--agent[_ngcontent-%COMP%]{align-self:flex-start;align-items:flex-start}@media(max-width:600px){.case-chat__turn--agent[_ngcontent-%COMP%]{align-self:stretch;align-items:stretch}}.case-chat__turn--streaming[_ngcontent-%COMP%]{opacity:.95}.case-chat__role-label[_ngcontent-%COMP%]{font-family:var(--font-heading);font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.12em;line-height:1}.case-chat__turn--agent[_ngcontent-%COMP%] .case-chat__role-label[_ngcontent-%COMP%]{color:var(--color-accent-700)}.case-chat__turn--user[_ngcontent-%COMP%] .case-chat__role-label[_ngcontent-%COMP%]{color:var(--color-neutral-700)}.case-chat__bubble-wrapper[_ngcontent-%COMP%]{position:relative}.case-chat__bubble-wrapper[_ngcontent-%COMP%]:hover .case-chat__bubble-copy[_ngcontent-%COMP%]{opacity:1}.case-chat__bubble-copy[_ngcontent-%COMP%]{position:absolute;top:6px;right:6px;opacity:0;transition:opacity .15s ease;z-index:1}.case-chat__bubble[_ngcontent-%COMP%]{padding:16px 18px;font-size:16px;line-height:1.6;word-break:break-word;overflow-x:hidden;background:var(--color-neutral-100);border-left:2px solid var(--color-accent-300);color:var(--color-text)}@media(max-width:600px){.case-chat__bubble[_ngcontent-%COMP%]{font-size:14px;padding:12px 14px;width:100%;box-sizing:border-box}}.case-chat__turn--user[_ngcontent-%COMP%] .case-chat__bubble[_ngcontent-%COMP%]{background:var(--color-accent-200);color:var(--color-accent-800);border-left:none;padding:11px 15px;overflow:visible}@media(max-width:600px){.case-chat__turn--user[_ngcontent-%COMP%] .case-chat__bubble[_ngcontent-%COMP%]{padding:10px 12px}}.case-chat__tool-call[_ngcontent-%COMP%]{flex-shrink:0;align-self:flex-start;max-width:90%;border:1px solid var(--color-divider);background:transparent;font-size:12px;overflow:hidden;transition:border-color .15s ease}.case-chat__tool-call--pending[_ngcontent-%COMP%]{border-color:var(--color-warning);opacity:.8}.case-chat__tool-call--success[_ngcontent-%COMP%]{border-color:var(--color-success)}.case-chat__tool-call--error[_ngcontent-%COMP%]{border-color:var(--color-error)}.case-chat__tool-call-header[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:7px;width:100%;padding:5px 11px;background:transparent;border:none;cursor:pointer;text-align:left;color:var(--color-accent-700);font-family:var(--font-heading);font-size:12px}.case-chat__tool-call-header[_ngcontent-%COMP%]:hover{background:color-mix(in srgb,var(--color-text) 4%,transparent)}.case-chat__tool-call-icon[_ngcontent-%COMP%]{flex-shrink:0;font-size:.75rem}.case-chat__tool-call-name[_ngcontent-%COMP%]{font-family:var(--font-heading);color:var(--color-accent-700);flex-shrink:0;font-weight:500}.case-chat__tool-call-args[_ngcontent-%COMP%]{color:var(--color-neutral-500);font-family:var(--font-heading);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1;min-width:0}.case-chat__tool-call-chevron[_ngcontent-%COMP%]{flex-shrink:0;font-size:.6rem;color:var(--color-neutral-500);margin-left:auto}.case-chat__tool-call-output[_ngcontent-%COMP%]{border-top:1px solid var(--color-divider);display:flex;flex-direction:column}.case-chat__tool-call-section[_ngcontent-%COMP%]{padding:.4rem .6rem .5rem}.case-chat__tool-call-section[_ngcontent-%COMP%] + .case-chat__tool-call-section[_ngcontent-%COMP%]{border-top:1px solid var(--color-divider)}.case-chat__tool-call-section[_ngcontent-%COMP%] pre[_ngcontent-%COMP%]{margin:.25rem 0 0;white-space:pre-wrap;word-break:break-all;font-family:var(--font-heading);font-size:.75rem;color:var(--color-text);max-height:200px;overflow-y:auto}.case-chat__tool-call-label[_ngcontent-%COMP%]{display:block;font-size:.65rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--color-neutral-500)}.case-chat__enrichment-section[_ngcontent-%COMP%]{background:var(--color-neutral-100)}.case-chat__enrichment-phase[_ngcontent-%COMP%]{margin-top:.35rem;border:1px solid var(--color-divider);background:var(--color-surface);overflow:hidden}.case-chat__enrichment-phase--failed[_ngcontent-%COMP%]{border-color:var(--color-error);background:color-mix(in srgb,var(--color-error) 4%,transparent)}.case-chat__enrichment-phase-header[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;padding:.2rem .5rem;background:var(--color-neutral-100);border-bottom:1px solid var(--color-divider)}.case-chat__enrichment-phase-index[_ngcontent-%COMP%]{font-weight:600;font-size:.7rem;text-transform:uppercase;letter-spacing:.04em;color:var(--color-neutral-500)}.case-chat__enrichment-phase-status[_ngcontent-%COMP%]{font-size:.7rem}.case-chat__enrichment-phase-row[_ngcontent-%COMP%]{padding:.25rem .5rem}.case-chat__enrichment-phase-row[_ngcontent-%COMP%] + .case-chat__enrichment-phase-row[_ngcontent-%COMP%]{border-top:1px solid var(--color-divider)}.case-chat__enrichment-phase-row[_ngcontent-%COMP%] pre[_ngcontent-%COMP%]{margin:.15rem 0 0;white-space:pre-wrap;word-break:break-all;font-family:var(--font-heading);font-size:.7rem;color:var(--color-text);max-height:150px;overflow-y:auto}.case-chat__enrichment-phase-label[_ngcontent-%COMP%]{display:block;font-size:.6rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--color-neutral-500)}.case-chat__tool-call-pending[_ngcontent-%COMP%], .case-chat__tool-call-empty[_ngcontent-%COMP%]{display:block;margin-top:.25rem;color:var(--color-neutral-500);font-style:italic;font-size:.75rem}.case-chat__log[_ngcontent-%COMP%]{flex-shrink:0;align-self:flex-start;width:fit-content;max-width:90%}.case-chat__log-summary[_ngcontent-%COMP%]{display:flex;align-items:center;gap:5px;font-family:var(--font-heading);font-size:10px;font-weight:600;color:var(--color-neutral-500);letter-spacing:.02em;cursor:pointer;outline:none;list-style:none;background:none;border:none;padding:0}.case-chat__log-summary[_ngcontent-%COMP%]::-webkit-details-marker{display:none}.case-chat__log-body[_ngcontent-%COMP%]{margin-top:4px;padding:10px 12px;font-family:var(--font-heading);font-size:11px;line-height:1.6;white-space:pre-wrap;word-break:break-word;background:var(--color-neutral-200);color:var(--color-text)}.case-chat__session-context[_ngcontent-%COMP%]{margin-bottom:6px}.case-chat__session-context-label[_ngcontent-%COMP%]{display:block;font-size:9px;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--color-neutral-500);margin-bottom:3px}.case-chat__session-context-body[_ngcontent-%COMP%]{font-family:var(--font-heading);font-size:10px;color:var(--color-neutral-600);white-space:pre-wrap;word-break:break-all;margin:0;max-height:120px;overflow-y:auto}.case-chat__thinking[_ngcontent-%COMP%]{flex-shrink:0;display:flex;gap:.3rem;padding:.75rem 1rem;align-self:flex-start}.case-chat__message-text--markdown[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{margin:0 0 .5em}.case-chat__message-text--markdown[_ngcontent-%COMP%] p[_ngcontent-%COMP%]:last-child{margin-bottom:0}.case-chat__message-text--markdown[_ngcontent-%COMP%] ul[_ngcontent-%COMP%], .case-chat__message-text--markdown[_ngcontent-%COMP%] ol[_ngcontent-%COMP%]{margin:.25em 0 .5em;padding-left:1.4em}.case-chat__message-text--markdown[_ngcontent-%COMP%] li[_ngcontent-%COMP%]{margin-bottom:.2em}.case-chat__message-text--markdown[_ngcontent-%COMP%] code[_ngcontent-%COMP%]{font-family:var(--font-heading);font-size:.85em;background:var(--color-neutral-200);padding:.1em .35em}.case-chat__message-text--markdown[_ngcontent-%COMP%] pre[_ngcontent-%COMP%]{background:var(--color-neutral-100);padding:.6em .8em;overflow-x:auto;margin:.4em 0}.case-chat__message-text--markdown[_ngcontent-%COMP%] pre[_ngcontent-%COMP%] code[_ngcontent-%COMP%]{background:none;padding:0;font-family:var(--font-heading);font-size:.8rem}.case-chat__message-text--markdown[_ngcontent-%COMP%] blockquote[_ngcontent-%COMP%]{margin:.4em 0;padding-left:.8em;border-left:2px solid var(--color-accent-300);color:var(--color-neutral-600)}.case-chat__message-text--markdown[_ngcontent-%COMP%] a[_ngcontent-%COMP%]{color:var(--color-accent);text-decoration:underline}.case-chat__message-text--markdown[_ngcontent-%COMP%] h1[_ngcontent-%COMP%], .case-chat__message-text--markdown[_ngcontent-%COMP%] h2[_ngcontent-%COMP%], .case-chat__message-text--markdown[_ngcontent-%COMP%] h3[_ngcontent-%COMP%], .case-chat__message-text--markdown[_ngcontent-%COMP%] h4[_ngcontent-%COMP%]{margin:.5em 0 .25em;font-size:1em;font-weight:600}.case-chat__message-text--markdown[_ngcontent-%COMP%] .external-link-icon[_ngcontent-%COMP%]{font-size:.75em;margin-left:.15em;vertical-align:super}.case-chat__composer[_ngcontent-%COMP%]{flex-shrink:0;position:relative;background:var(--color-bg);box-shadow:var(--shadow-sm);border:1px solid var(--color-divider);display:flex;flex-direction:column}.case-chat__composer[_ngcontent-%COMP%]:focus-within{border-color:var(--color-accent)}.case-chat__autocomplete[_ngcontent-%COMP%]{position:absolute;bottom:calc(100% + .5rem);left:0;right:0;background:var(--color-surface);border:1px solid var(--color-divider);box-shadow:var(--shadow-lg);z-index:20;animation:_ngcontent-%COMP%_autocomplete-in .12s ease}.case-chat__drop-overlay[_ngcontent-%COMP%]{position:absolute;inset:0;z-index:30;pointer-events:none;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.5rem;border:2px dashed var(--color-accent);background:color-mix(in srgb,var(--color-accent) 8%,transparent);color:var(--color-accent);font-weight:600}.case-chat__input[_ngcontent-%COMP%]{flex:1;resize:none;padding:13px 16px 4px;border:none;background:transparent;color:var(--color-text);font-size:14px;font-family:var(--font-body);line-height:1.55;outline:none;min-height:52px}.case-chat__input[_ngcontent-%COMP%]::placeholder{color:var(--color-neutral-700)}.case-chat__input[_ngcontent-%COMP%]:disabled{opacity:.5;cursor:not-allowed}.case-chat__actions[_ngcontent-%COMP%]{display:flex;align-items:center;gap:10px;padding:6px 10px 10px}.case-chat__actions-hint[_ngcontent-%COMP%]{flex:1;font-size:11px;color:var(--color-neutral-700);font-family:var(--font-body);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding-left:6px}.case-chat__scroll-anchor[_ngcontent-%COMP%]{position:absolute;bottom:calc(2rem + 80px);left:50%;transform:translate(-50%);z-index:10;background:var(--color-surface);border:1px solid var(--color-divider);box-shadow:var(--shadow-sm);animation:_ngcontent-%COMP%_scroll-anchor-in .15s ease}.case-chat__attachments[_ngcontent-%COMP%]{display:block;padding:.75rem .75rem 0}.thinking-dot[_ngcontent-%COMP%]{width:8px;height:8px;background:var(--color-neutral-500);animation:_ngcontent-%COMP%_thinking-bounce 1.2s ease-in-out infinite}.thinking-dot[_ngcontent-%COMP%]:nth-child(2){animation-delay:.2s}.thinking-dot[_ngcontent-%COMP%]:nth-child(3){animation-delay:.4s}@keyframes _ngcontent-%COMP%_thinking-bounce{0%,80%,to{transform:translateY(0);opacity:.4}40%{transform:translateY(-6px);opacity:1}}@keyframes _ngcontent-%COMP%_scroll-anchor-in{0%{opacity:0;transform:translate(-50%) translateY(8px)}to{opacity:1;transform:translate(-50%) translateY(0)}}@keyframes _ngcontent-%COMP%_autocomplete-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}"]})};var ci=["composerInput"];function di(i,t){i&1&&(r(0,"div",3)(1,"span",17),m(2,"upload_file"),l(),r(3,"span"),m(4,"Drop files to attach"),l()())}function pi(i,t){if(i&1&&(r(0,"div",6),m(1),l()),i&2){let e=s();c(),K("Namespace \xB7 ",e.namespaceName()??e.namespaceId)}}function mi(i,t){if(i&1){let e=b();r(0,"div",9)(1,"agentos-agent-autocomplete",18),_("selected",function(o){d(e);let a=s();return p(a.onAgentSelected(o))})("dismissed",function(){d(e);let o=s();return p(o.closeAtAutocomplete())}),l()()}if(i&2){let e=s();c(),x("agents",e.autocomplete.atSuggestions())}}function _i(i,t){if(i&1){let e=b();r(0,"div",9)(1,"agentos-prompt-autocomplete",19),_("selected",function(o){d(e);let a=s();return p(a.onPromptSelected(o))})("dismissed",function(){d(e);let o=s();return p(o.closeSlashAutocomplete())}),l()()}if(i&2){let e=s();c(),x("prompts",e.autocomplete.slashSuggestions())}}var Ye=class i{http=T(Ie);router=T(Ve);route=T(de);config=T(Re);caseState=T(me);destroyRef=T(ee);preferences=T(Le);namespaceName=f(null);exchangeState=T(ie);attachments=T(ue);autocomplete=T(_e);composerInput=z("composerInput");promptAutocompleteRef=z(ne);agentAutocompleteRef=z(oe);namespaceId=this.route.snapshot.queryParams.ns;inputValue=v("");isCreating=v(!1);pendingCaseId=v(null);destroyed=!1;namespaceTargeted=E(()=>Qe(this.inputValue(),this.exchangeState.canWriteNamespace()));ngOnInit(){this.exchangeState.initializeForNamespace(this.namespaceId),this.route.queryParams.pipe(U(this.destroyRef)).subscribe(t=>{let e=t.ns;e&&e!==this.namespaceId&&(this.namespaceId=e,this.autocomplete.init(e),this.autocomplete.reset(),this.inputValue.set(""),this.attachments.reset(),this.pendingCaseId.set(null),this.exchangeState.initializeForNamespace(e))})}constructor(){this.destroyRef.onDestroy(()=>this.destroyed=!0),this.autocomplete.init(this.namespaceId),xe(()=>{this.composerInput()?.nativeElement.focus()})}get canSend(){return(!!this.inputValue().trim()||this.attachments.hasAttachments())&&!this.isCreating()}onInput(t){let e=t.target.value;this.autocomplete.onInput(e,this.inputValue)}onKeydown(t){this.autocomplete.onKeydown(t,this.promptAutocompleteRef,this.agentAutocompleteRef)||this.preferences.shouldSend(t)&&(t.preventDefault(),this.submit())}onPromptSelected(t){this.autocomplete.onPromptSelected(t,this.promptAutocompleteRef,this.composerInput,this.inputValue)}onAgentSelected(t){this.autocomplete.onAgentSelected(t,this.agentAutocompleteRef,this.composerInput,this.inputValue)}closeSlashAutocomplete(){this.autocomplete.slashSuggestions.set([])}closeAtAutocomplete(){this.autocomplete.atSuggestions.set([])}submit(){return G(this,null,function*(){if(!this.canSend)return;let t=this.inputValue().trim(),e=this.namespaceId;this.isCreating.set(!0);try{let n=this.pendingCaseId();if(!n){let a=yield Se(this.http.post(`${this.config.basePath}/api/cases`,{namespaceId:e,metadata:{}}));this.caseState.addCase(a),n=a.id??"",this.pendingCaseId.set(n)}if(this.abandoned(e)){this.isCreating.set(!1);return}let o=t;if(this.attachments.hasAttachments()){this.exchangeState.initializeForCase(e,n);let a=Te(t,this.exchangeState.canWriteNamespace()),u=yield this.attachments.uploadAllAndBuildMention(a);if(u===null||this.abandoned(e)){this.isCreating.set(!1);return}o=o?`${o}
@@ -1 +1 @@
1
- import{a as ne}from"./chunk-7WNGYNNF.js";import{a as ie}from"./chunk-QO3SLUF6.js";import"./chunk-JIYGZGAO.js";import"./chunk-FIDJLAO5.js";import{q as L}from"./chunk-DDBWRK3B.js";import{a as K,c as G}from"./chunk-COLWSJEP.js";import{a as A,c as B}from"./chunk-PUWEEZSA.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-ZJV25K6M.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-3DOXTB6J.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-QMOVIQK5.js";import{a as ie}from"./chunk-FTITYI4Y.js";import"./chunk-JIYGZGAO.js";import"./chunk-L775A25Y.js";import{q as L}from"./chunk-NTK45Y5Q.js";import{a as K,c as G}from"./chunk-COLWSJEP.js";import{a as A,c as B}from"./chunk-PUWEEZSA.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-ZJV25K6M.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-3DOXTB6J.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 B}from"./chunk-A2IQII4O.js";import{c as K}from"./chunk-HW7FY6FY.js";import{a as V}from"./chunk-QO3SLUF6.js";import"./chunk-JIYGZGAO.js";import"./chunk-FIDJLAO5.js";import"./chunk-DDBWRK3B.js";import{a as N,c as $}from"./chunk-COLWSJEP.js";import{s as L,z as P}from"./chunk-2X6HKQMK.js";import"./chunk-EGMTTOHU.js";import"./chunk-TQXOFKZO.js";import{a as l}from"./chunk-PUWEEZSA.js";import"./chunk-WXFL4OGQ.js";import"./chunk-ZJV25K6M.js";import"./chunk-GO5IXCK2.js";import{Bb as b,Db as u,Fb as o,Ka as A,Lc as M,Pb as x,S as f,Tb as E,Ub as w,Wa as v,ab as C,ca as a,cc as D,fc as O,ga as c,gc as T,ha as m,jc as q,lb as I,m as _,ma as S,mb as R,rb as h,sb as p,t as g,ta as y,tb as d}from"./chunk-3DOXTB6J.js";var W=()=>[];function z(s,e){if(s&1&&(p(0,"p",3),E(1),d()),s&2){let t=o().$implicit;A(),w(t.name)}}function U(s,e){if(s&1){let t=b();p(0,"agentos-auth-setting-item",5),u("editRequested",function(){let n=c(t),r=o(2);return m(r.onEdit(n))})("deleteRequested",function(){let n=c(t),r=o(2);return m(r.onDelete(n))})("duplicateRequested",function(){let n=c(t),r=o(2);return m(r.onDuplicate(n))}),d()}if(s&2){let t=e,i=o(2);h("config",t.config)("scope",t.scope)("readOnly",t.scope==="platform"||t.scope==="namespace"&&!i.isAdmin())}}function X(s,e){if(s&1&&I(0,z,2,1,"p",3)(1,U,1,3,"agentos-auth-setting-item",4),s&2){let t,i=e.$implicit,n=o();R(n.isEmptyPlaceholder(i.id)?0:(t=n.resolve(i.id))?1:-1,t)}}var k=Object.freeze({platform:"Platform (read-only)",namespace:"Auth Settings du namespace",userOnNs:"Mes overrides sur ce namespace",userGlobal:"Mes overrides globaux"}),F="__empty__",j=class s{route=a(N);router=a($);destroyRef=a(S);state=a(K);namespaceRole=a(V);namespaceId=this.route.snapshot.params.namespaceId;isAdmin=y(!1);listItems$=this.state.vm$.pipe(g(e=>this.toListItems(e)));resolved=new Map;ngOnInit(){this.route.paramMap.pipe(l(this.destroyRef)).subscribe(e=>{let t=e.get("namespaceId")??"";t&&t!==this.namespaceId&&(this.namespaceId=t),this.state.setNamespace(t)}),this.route.paramMap.pipe(g(e=>e.get("namespaceId")??""),f(e=>e?this.namespaceRole.isAdminOfNamespace$(e):_(!1)),l(this.destroyRef)).subscribe(e=>this.isAdmin.set(e)),this.state.vm$.pipe(l(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,"auth-settings","new"],{queryParams:{scope:G(this.isAdmin())}})}onEdit(e){let t=e.config.id;t&&this.router.navigate(["/agentos",this.namespaceId,"auth-settings",t,"edit"],{queryParams:{scope:e.scope}})}onDelete(e){let t=e.config.id;t&&this.state.delete(t,e.scope).pipe(l(this.destroyRef)).subscribe({error:i=>{console.error(`[AuthSettingsAllScopes] Delete failed for ${e.scope}:${t}:`,i)}})}onDuplicate(e){if(!e.config.id)return;let t=e.scope==="platform"||e.scope==="namespace"&&!this.isAdmin()?"userOnNs":e.scope;this.router.navigate(["/agentos",this.namespaceId,"auth-settings","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 Auth Setting",groupKey:e,groupLabel:k[e]}]:t.filter(i=>!!i.id).map(i=>({id:this.itemKey(e,i.id),name:i.name,description:i.authType,groupKey:e,groupLabel:k[e]}))}static \u0275fac=function(t){return new(t||s)};static \u0275cmp=v({type:s,selectors:[["agentos-auth-settings-all-scopes"]],decls:5,vars:6,consts:[["authSettingItemTpl",""],["title","Auth Settings","emptyMessage","No auth settings available.","cardMinWidth","400px",3,"createRequested","items","showCreate","itemTemplate"],["toolbar-start","","icon","arrow_back","title","Back",3,"action"],[1,"auth-settings-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()}),d()(),C(3,X,2,1,"ng-template",null,0,q)),t&2){let n=x(4);h("items",T(1,3,i.listItems$)??D(5,W))("showCreate",!0)("itemTemplate",n)}},dependencies:[P,B,L,M],encapsulation:2,changeDetection:0})};export{j as AuthSettingsAllScopesComponent};
1
+ import{a as G}from"./chunk-AIC4U2MU.js";import{a as B}from"./chunk-A2IQII4O.js";import{c as K}from"./chunk-DFVPKNEZ.js";import{a as V}from"./chunk-FTITYI4Y.js";import"./chunk-JIYGZGAO.js";import"./chunk-L775A25Y.js";import"./chunk-NTK45Y5Q.js";import{a as N,c as $}from"./chunk-COLWSJEP.js";import{s as L,z as P}from"./chunk-2X6HKQMK.js";import"./chunk-EGMTTOHU.js";import"./chunk-TQXOFKZO.js";import{a as l}from"./chunk-PUWEEZSA.js";import"./chunk-WXFL4OGQ.js";import"./chunk-ZJV25K6M.js";import"./chunk-GO5IXCK2.js";import{Bb as b,Db as u,Fb as o,Ka as A,Lc as M,Pb as x,S as f,Tb as E,Ub as w,Wa as v,ab as C,ca as a,cc as D,fc as O,ga as c,gc as T,ha as m,jc as q,lb as I,m as _,ma as S,mb as R,rb as h,sb as p,t as g,ta as y,tb as d}from"./chunk-3DOXTB6J.js";var W=()=>[];function z(s,e){if(s&1&&(p(0,"p",3),E(1),d()),s&2){let t=o().$implicit;A(),w(t.name)}}function U(s,e){if(s&1){let t=b();p(0,"agentos-auth-setting-item",5),u("editRequested",function(){let n=c(t),r=o(2);return m(r.onEdit(n))})("deleteRequested",function(){let n=c(t),r=o(2);return m(r.onDelete(n))})("duplicateRequested",function(){let n=c(t),r=o(2);return m(r.onDuplicate(n))}),d()}if(s&2){let t=e,i=o(2);h("config",t.config)("scope",t.scope)("readOnly",t.scope==="platform"||t.scope==="namespace"&&!i.isAdmin())}}function X(s,e){if(s&1&&I(0,z,2,1,"p",3)(1,U,1,3,"agentos-auth-setting-item",4),s&2){let t,i=e.$implicit,n=o();R(n.isEmptyPlaceholder(i.id)?0:(t=n.resolve(i.id))?1:-1,t)}}var k=Object.freeze({platform:"Platform (read-only)",namespace:"Auth Settings du namespace",userOnNs:"Mes overrides sur ce namespace",userGlobal:"Mes overrides globaux"}),F="__empty__",j=class s{route=a(N);router=a($);destroyRef=a(S);state=a(K);namespaceRole=a(V);namespaceId=this.route.snapshot.params.namespaceId;isAdmin=y(!1);listItems$=this.state.vm$.pipe(g(e=>this.toListItems(e)));resolved=new Map;ngOnInit(){this.route.paramMap.pipe(l(this.destroyRef)).subscribe(e=>{let t=e.get("namespaceId")??"";t&&t!==this.namespaceId&&(this.namespaceId=t),this.state.setNamespace(t)}),this.route.paramMap.pipe(g(e=>e.get("namespaceId")??""),f(e=>e?this.namespaceRole.isAdminOfNamespace$(e):_(!1)),l(this.destroyRef)).subscribe(e=>this.isAdmin.set(e)),this.state.vm$.pipe(l(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,"auth-settings","new"],{queryParams:{scope:G(this.isAdmin())}})}onEdit(e){let t=e.config.id;t&&this.router.navigate(["/agentos",this.namespaceId,"auth-settings",t,"edit"],{queryParams:{scope:e.scope}})}onDelete(e){let t=e.config.id;t&&this.state.delete(t,e.scope).pipe(l(this.destroyRef)).subscribe({error:i=>{console.error(`[AuthSettingsAllScopes] Delete failed for ${e.scope}:${t}:`,i)}})}onDuplicate(e){if(!e.config.id)return;let t=e.scope==="platform"||e.scope==="namespace"&&!this.isAdmin()?"userOnNs":e.scope;this.router.navigate(["/agentos",this.namespaceId,"auth-settings","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 Auth Setting",groupKey:e,groupLabel:k[e]}]:t.filter(i=>!!i.id).map(i=>({id:this.itemKey(e,i.id),name:i.name,description:i.authType,groupKey:e,groupLabel:k[e]}))}static \u0275fac=function(t){return new(t||s)};static \u0275cmp=v({type:s,selectors:[["agentos-auth-settings-all-scopes"]],decls:5,vars:6,consts:[["authSettingItemTpl",""],["title","Auth Settings","emptyMessage","No auth settings available.","cardMinWidth","400px",3,"createRequested","items","showCreate","itemTemplate"],["toolbar-start","","icon","arrow_back","title","Back",3,"action"],[1,"auth-settings-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()}),d()(),C(3,X,2,1,"ng-template",null,0,q)),t&2){let n=x(4);h("items",T(1,3,i.listItems$)??D(5,W))("showCreate",!0)("itemTemplate",n)}},dependencies:[P,B,L,M],encapsulation:2,changeDetection:0})};export{j as AuthSettingsAllScopesComponent};
@@ -1 +1 @@
1
- import{a as P,b as O}from"./chunk-VDPBH6I4.js";import{a as x}from"./chunk-FIDJLAO5.js";import{d as S}from"./chunk-UNIVHWT7.js";import{b as C,c as M}from"./chunk-COLWSJEP.js";import{Db as d,Fb as y,Ka as _,Tb as u,Vb as T,Wa as c,ca as s,lb as b,mb as f,mc as p,rb as v,sb as a,ta as g,tb as l,ub as m}from"./chunk-3DOXTB6J.js";function N(o,e){if(o&1&&u(0),o&2){let t=y();T(" ",t.userInitials()," ")}}function V(o,e){o&1&&u(0," \u2022\u2022\u2022 ")}var h=class o{router=s(M);userState=s(x);themePort=s(S);namespaceState=s(P);menuOpen=g(!1);isAdmin=p(()=>this.userState.currentUser()?.isAdmin===!0);isDark=p(()=>{let{mode:e}=this.themePort.theme();return e==="dark"?!0:e==="light"?!1:typeof document<"u"&&document.documentElement.getAttribute("data-theme")?.includes("dark")===!0});themeVariant=p(()=>this.themePort.theme().variant);userInitials=p(()=>{let e=this.userState.currentUser();if(!e)return"";let t=e.firstname?.[0]??"",n=e.lastname?.[0]??"";return(t+n).toUpperCase()||e.email?.[0]?.toUpperCase()||""});showTechnical=g(!1);navigateHome(){let e=this.namespaceState.activeNamespaceId();this.router.navigate(["/agentos/home"],e?{queryParams:{ns:e}}:{})}toggleMenu(e){e.stopPropagation(),this.menuOpen.update(t=>!t)}closeMenu(e){e.stopPropagation(),this.menuOpen.set(!1)}onNavigate(e){this.menuOpen.set(!1),this.router.navigate([e])}onThemeToggle(){this.menuOpen.set(!1);let e=this.isDark()?"light":"dark";this.themePort.setTheme({variant:this.themePort.theme().variant,mode:e})}onThemeVariantChanged(e){this.menuOpen.set(!1);let t=this.themePort.theme();this.themePort.setTheme({variant:e,mode:t.mode})}onLogsToggle(){this.menuOpen.set(!1)}static \u0275fac=function(t){return new(t||o)};static \u0275cmp=c({type:o,selectors:[["agentos-shell-topbar"]],decls:10,vars:6,consts:[[1,"shell-topbar"],["type","button","title","Home",1,"shell-topbar__brand",3,"click"],["src","CODAY-Logo.png","alt","Coday",1,"shell-topbar__logo-img"],[1,"shell-topbar__logo-text"],[1,"shell-topbar__user-menu"],["type","button","title","Menu",1,"shell-topbar__user-btn",3,"click"],["variant","topbar",3,"navigateTo","themeToggled","themeVariantChanged","logsToggled","closed","open","isAdmin","isDark","themeVariant","showTechnical"]],template:function(t,n){t&1&&(a(0,"div",0)(1,"button",1),d("click",function(){return n.navigateHome()}),m(2,"img",2),a(3,"span",3),u(4,"Coday"),l()(),a(5,"div",4)(6,"button",5),d("click",function(r){return n.toggleMenu(r)}),b(7,N,1,1)(8,V,1,0),l(),a(9,"agentos-shell-user-menu",6),d("navigateTo",function(r){return n.onNavigate(r)})("themeToggled",function(){return n.onThemeToggle()})("themeVariantChanged",function(r){return n.onThemeVariantChanged(r)})("logsToggled",function(){return n.onLogsToggle()})("closed",function(r){return n.closeMenu(r)}),l()()()),t&2&&(_(7),f(n.userInitials()?7:8),_(2),v("open",n.menuOpen())("isAdmin",n.isAdmin())("isDark",n.isDark())("themeVariant",n.themeVariant())("showTechnical",n.showTechnical()))},dependencies:[O],styles:[".shell-topbar[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:14px 12px;border-bottom:1px solid var(--color-divider);background:var(--color-bg);flex-shrink:0}.shell-topbar__brand[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;padding:0;border:none;background:transparent;cursor:pointer;transition:opacity .14s ease}.shell-topbar__brand[_ngcontent-%COMP%]:hover{opacity:.8}.shell-topbar__logo-img[_ngcontent-%COMP%]{height:28px;width:auto;object-fit:contain;display:block;flex:none}.shell-topbar__logo-text[_ngcontent-%COMP%]{font-weight:700;font-size:18px;color:var(--color-text);letter-spacing:-.02em;white-space:nowrap}.shell-topbar__user-menu[_ngcontent-%COMP%]{position:relative;flex-shrink:0}.shell-topbar__user-btn[_ngcontent-%COMP%]{width:32px;height:32px;flex:none;display:grid;place-items:center;border:1px solid var(--color-divider);background:var(--color-surface);font-family:var(--font-heading);font-weight:600;font-size:13px;color:var(--color-accent-700);cursor:pointer;transition:border-color .14s;border-radius:0}.shell-topbar__user-btn[_ngcontent-%COMP%]:hover{border-color:var(--color-accent)}"],changeDetection:0})};var k=class o{static \u0275fac=function(t){return new(t||o)};static \u0275cmp=c({type:o,selectors:[["agentos-layout"]],decls:4,vars:0,consts:[[1,"layout"],[1,"layout__content"]],template:function(t,n){t&1&&(a(0,"div",0),m(1,"agentos-shell-topbar"),a(2,"main",1),m(3,"router-outlet"),l()())},dependencies:[C,h],styles:[".layout[_ngcontent-%COMP%]{display:flex;flex-direction:column;min-height:100vh}.layout__content[_ngcontent-%COMP%]{flex:1;overflow-y:auto}"]})};export{k as a};
1
+ import{a as P,b as O}from"./chunk-5RWZLO37.js";import{a as x}from"./chunk-L775A25Y.js";import{d as S}from"./chunk-UNIVHWT7.js";import{b as C,c as M}from"./chunk-COLWSJEP.js";import{Db as d,Fb as y,Ka as _,Tb as u,Vb as T,Wa as c,ca as s,lb as b,mb as f,mc as p,rb as v,sb as a,ta as g,tb as l,ub as m}from"./chunk-3DOXTB6J.js";function N(o,e){if(o&1&&u(0),o&2){let t=y();T(" ",t.userInitials()," ")}}function V(o,e){o&1&&u(0," \u2022\u2022\u2022 ")}var h=class o{router=s(M);userState=s(x);themePort=s(S);namespaceState=s(P);menuOpen=g(!1);isAdmin=p(()=>this.userState.currentUser()?.isAdmin===!0);isDark=p(()=>{let{mode:e}=this.themePort.theme();return e==="dark"?!0:e==="light"?!1:typeof document<"u"&&document.documentElement.getAttribute("data-theme")?.includes("dark")===!0});themeVariant=p(()=>this.themePort.theme().variant);userInitials=p(()=>{let e=this.userState.currentUser();if(!e)return"";let t=e.firstname?.[0]??"",n=e.lastname?.[0]??"";return(t+n).toUpperCase()||e.email?.[0]?.toUpperCase()||""});showTechnical=g(!1);navigateHome(){let e=this.namespaceState.activeNamespaceId();this.router.navigate(["/agentos/home"],e?{queryParams:{ns:e}}:{})}toggleMenu(e){e.stopPropagation(),this.menuOpen.update(t=>!t)}closeMenu(e){e.stopPropagation(),this.menuOpen.set(!1)}onNavigate(e){this.menuOpen.set(!1),this.router.navigate([e])}onThemeToggle(){this.menuOpen.set(!1);let e=this.isDark()?"light":"dark";this.themePort.setTheme({variant:this.themePort.theme().variant,mode:e})}onThemeVariantChanged(e){this.menuOpen.set(!1);let t=this.themePort.theme();this.themePort.setTheme({variant:e,mode:t.mode})}onLogsToggle(){this.menuOpen.set(!1)}static \u0275fac=function(t){return new(t||o)};static \u0275cmp=c({type:o,selectors:[["agentos-shell-topbar"]],decls:10,vars:6,consts:[[1,"shell-topbar"],["type","button","title","Home",1,"shell-topbar__brand",3,"click"],["src","CODAY-Logo.png","alt","Coday",1,"shell-topbar__logo-img"],[1,"shell-topbar__logo-text"],[1,"shell-topbar__user-menu"],["type","button","title","Menu",1,"shell-topbar__user-btn",3,"click"],["variant","topbar",3,"navigateTo","themeToggled","themeVariantChanged","logsToggled","closed","open","isAdmin","isDark","themeVariant","showTechnical"]],template:function(t,n){t&1&&(a(0,"div",0)(1,"button",1),d("click",function(){return n.navigateHome()}),m(2,"img",2),a(3,"span",3),u(4,"Coday"),l()(),a(5,"div",4)(6,"button",5),d("click",function(r){return n.toggleMenu(r)}),b(7,N,1,1)(8,V,1,0),l(),a(9,"agentos-shell-user-menu",6),d("navigateTo",function(r){return n.onNavigate(r)})("themeToggled",function(){return n.onThemeToggle()})("themeVariantChanged",function(r){return n.onThemeVariantChanged(r)})("logsToggled",function(){return n.onLogsToggle()})("closed",function(r){return n.closeMenu(r)}),l()()()),t&2&&(_(7),f(n.userInitials()?7:8),_(2),v("open",n.menuOpen())("isAdmin",n.isAdmin())("isDark",n.isDark())("themeVariant",n.themeVariant())("showTechnical",n.showTechnical()))},dependencies:[O],styles:[".shell-topbar[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:14px 12px;border-bottom:1px solid var(--color-divider);background:var(--color-bg);flex-shrink:0}.shell-topbar__brand[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;padding:0;border:none;background:transparent;cursor:pointer;transition:opacity .14s ease}.shell-topbar__brand[_ngcontent-%COMP%]:hover{opacity:.8}.shell-topbar__logo-img[_ngcontent-%COMP%]{height:28px;width:auto;object-fit:contain;display:block;flex:none}.shell-topbar__logo-text[_ngcontent-%COMP%]{font-weight:700;font-size:18px;color:var(--color-text);letter-spacing:-.02em;white-space:nowrap}.shell-topbar__user-menu[_ngcontent-%COMP%]{position:relative;flex-shrink:0}.shell-topbar__user-btn[_ngcontent-%COMP%]{width:32px;height:32px;flex:none;display:grid;place-items:center;border:1px solid var(--color-divider);background:var(--color-surface);font-family:var(--font-heading);font-weight:600;font-size:13px;color:var(--color-accent-700);cursor:pointer;transition:border-color .14s;border-radius:0}.shell-topbar__user-btn[_ngcontent-%COMP%]:hover{border-color:var(--color-accent)}"],changeDetection:0})};var k=class o{static \u0275fac=function(t){return new(t||o)};static \u0275cmp=c({type:o,selectors:[["agentos-layout"]],decls:4,vars:0,consts:[[1,"layout"],[1,"layout__content"]],template:function(t,n){t&1&&(a(0,"div",0),m(1,"agentos-shell-topbar"),a(2,"main",1),m(3,"router-outlet"),l()())},dependencies:[C,h],styles:[".layout[_ngcontent-%COMP%]{display:flex;flex-direction:column;min-height:100vh}.layout__content[_ngcontent-%COMP%]{flex:1;overflow-y:auto}"]})};export{k as a};
@@ -1 +1 @@
1
- import{o as p}from"./chunk-DDBWRK3B.js";import{V as s,Z as d,a as n,ca as u,ta as a}from"./chunk-3DOXTB6J.js";var c=class o{userController=u(p);users=a([]);isLoading=a(!1);loadAll(){return this.isLoading.set(!0),this.userController.listAllUser().pipe(s({next:e=>{this.users.set(e),this.isLoading.set(!1)},error:()=>this.isLoading.set(!1)}))}createUser(e){return this.userController.createUser(e).pipe(s(()=>{this.loadAll().subscribe()}))}updateUser(e,r){let t=this.users().find(i=>i.id===e);if(!t)throw new Error(`Cannot update: user ${e} not found in state`);let U=n(n({},t),r);return this.userController.updateUser(e,U).pipe(s(i=>{this.users.update(b=>b.map(l=>l.id===i.id?i:l))}))}deleteUser(e){return this.userController.deleteUser(e).pipe(s(()=>{this.users.update(r=>r.filter(t=>t.id!==e))}))}static \u0275fac=function(r){return new(r||o)};static \u0275prov=d({token:o,factory:o.\u0275fac,providedIn:"root"})};export{c as a};
1
+ import{o as p}from"./chunk-NTK45Y5Q.js";import{V as s,Z as d,a as n,ca as u,ta as a}from"./chunk-3DOXTB6J.js";var c=class o{userController=u(p);users=a([]);isLoading=a(!1);loadAll(){return this.isLoading.set(!0),this.userController.listAllUser().pipe(s({next:e=>{this.users.set(e),this.isLoading.set(!1)},error:()=>this.isLoading.set(!1)}))}createUser(e){return this.userController.createUser(e).pipe(s(()=>{this.loadAll().subscribe()}))}updateUser(e,r){let t=this.users().find(i=>i.id===e);if(!t)throw new Error(`Cannot update: user ${e} not found in state`);let U=n(n({},t),r);return this.userController.updateUser(e,U).pipe(s(i=>{this.users.update(b=>b.map(l=>l.id===i.id?i:l))}))}deleteUser(e){return this.userController.deleteUser(e).pipe(s(()=>{this.users.update(r=>r.filter(t=>t.id!==e))}))}static \u0275fac=function(r){return new(r||o)};static \u0275prov=d({token:o,factory:o.\u0275fac,providedIn:"root"})};export{c as a};