@whoz-oss/coday-client 0.212.0 → 0.213.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 (43) hide show
  1. package/browser/{chunk-6AVOYZCH.js → chunk-24GQIJ2V.js} +1 -1
  2. package/browser/{chunk-V4N6GKHW.js → chunk-2HEJ7K6I.js} +1 -1
  3. package/browser/{chunk-S5RA5ZES.js → chunk-4CDCFIEK.js} +1 -1
  4. package/browser/{chunk-7U5MROHI.js → chunk-4OCEBSTP.js} +1 -1
  5. package/browser/{chunk-NUQZWQIL.js → chunk-5GF6TTRK.js} +1 -1
  6. package/browser/{chunk-OINUZPA5.js → chunk-6MPSH5Y7.js} +1 -1
  7. package/browser/{chunk-PY555EP5.js → chunk-7FKWFZ3A.js} +1 -1
  8. package/browser/chunk-7FTSWXXP.js +1 -0
  9. package/browser/{chunk-CAGXAQN4.js → chunk-7RVP2EHC.js} +1 -1
  10. package/browser/{chunk-GUV6MT45.js → chunk-C3TALDAV.js} +1 -1
  11. package/browser/{chunk-E2KMSNBI.js → chunk-C47ZCNLR.js} +1 -1
  12. package/browser/{chunk-HV2LANES.js → chunk-CRJUN7EB.js} +1 -1
  13. package/browser/{chunk-XSG2UKSS.js → chunk-DB2U5ZVV.js} +1 -1
  14. package/browser/{chunk-QSWJW2CT.js → chunk-DEXRATBM.js} +1 -1
  15. package/browser/{chunk-FUCTIGHD.js → chunk-EFCBXNFU.js} +1 -1
  16. package/browser/{chunk-SPSSJANY.js → chunk-GVYMNRD4.js} +1 -1
  17. package/browser/{chunk-JEN2LAHJ.js → chunk-HMFEXHRI.js} +1 -1
  18. package/browser/{chunk-VLPN6IDQ.js → chunk-J7IFGV56.js} +1 -1
  19. package/browser/{chunk-K6PYQXSH.js → chunk-JCMCMBHO.js} +1 -1
  20. package/browser/{chunk-2M7UJVMC.js → chunk-JIPJ76UT.js} +1 -1
  21. package/browser/{chunk-SOAR3OAC.js → chunk-K7JRH3HO.js} +6 -6
  22. package/browser/{chunk-XRPNDAPU.js → chunk-KQVQSY4A.js} +1 -1
  23. package/browser/{chunk-KK4POI54.js → chunk-LCLP27IJ.js} +1 -1
  24. package/browser/{chunk-EKYOF32Y.js → chunk-MSMRBM6R.js} +1 -1
  25. package/browser/{chunk-DJOQI226.js → chunk-MVRV42NP.js} +1 -1
  26. package/browser/{chunk-O73HCJ4T.js → chunk-N5FLB2OL.js} +1 -1
  27. package/browser/{chunk-DVROUT7T.js → chunk-ONZHMPPP.js} +1 -1
  28. package/browser/{chunk-6SDJIZMP.js → chunk-OVCLHAFH.js} +1 -1
  29. package/browser/{chunk-WPII4MHK.js → chunk-QCUONBHJ.js} +1 -1
  30. package/browser/{chunk-M3LG5XSB.js → chunk-RTAXT4D4.js} +1 -1
  31. package/browser/{chunk-YTQT7NZE.js → chunk-TASI5WPN.js} +1 -1
  32. package/browser/{chunk-HPTWGGVI.js → chunk-TEJQAOQQ.js} +1 -1
  33. package/browser/chunk-UFZICL7S.js +1 -0
  34. package/browser/{chunk-UL6K7Q2E.js → chunk-VPYY4J2W.js} +1 -1
  35. package/browser/{chunk-3HJTBDXT.js → chunk-W7YYBRGC.js} +1 -1
  36. package/browser/{chunk-HPVNIFEJ.js → chunk-XEZKOM4R.js} +1 -1
  37. package/browser/{chunk-UR4HA56C.js → chunk-ZE2KJJWW.js} +1 -1
  38. package/browser/{chunk-3W2U42II.js → chunk-ZPHUI4F6.js} +1 -1
  39. package/browser/index.html +1 -1
  40. package/browser/{main-HWU5NMWS.js → main-JYYTUNUG.js} +1 -1
  41. package/package.json +1 -1
  42. package/browser/chunk-S3LSARXT.js +0 -1
  43. package/browser/chunk-VOUBTGWM.js +0 -1
@@ -0,0 +1 @@
1
+ import{a as xt}from"./chunk-XC3I4AWV.js";import{c as Ie}from"./chunk-NCFBQG5D.js";import{a as Oe}from"./chunk-O37JOBGG.js";import{a as De}from"./chunk-IDD4RLL7.js";import{a as vt}from"./chunk-2BN4B3OL.js";import{c as bt}from"./chunk-7EHCV7WH.js";import{a as Ee,e as Te,f as dt,i as mt}from"./chunk-W7ZS65Y4.js";import{a as _t,b as ut,c as gt}from"./chunk-WIYSZEOD.js";import{a as J,c as Me}from"./chunk-P4GNUQZT.js";import{o as ht,p as ft,q as ke,r as H,s as Pe,x as Ct}from"./chunk-K7JRH3HO.js";import{a as A,b as pt,c as ee}from"./chunk-SKBT6DBT.js";import{$b as it,Ab as He,Bb as x,D as ne,Db as m,Eb as ae,F as oe,Fb as c,Ga as pe,Ic as st,Jb as K,Ka as l,Kb as L,Lb as $,Lc as lt,Ma as ie,Nb as fe,Ob as Ce,P as Ge,Pb as be,Q as Ke,Qb as xe,Rb as k,S as U,Sb as _e,Tb as d,Ub as v,Vb as q,Vc as Se,Wa as T,Xb as et,Yb as tt,Yc as ct,Z as ge,Zb as nt,_b as ot,a as le,ab as he,b as ce,ca as E,cc as at,d as B,dc as rt,ec as ve,fc as we,ga as p,h as ue,ha as _,i as de,ic as Be,jb as Z,kb as Ze,lb as g,lc as w,m as j,ma as Y,mb as h,n as Ye,oc as f,pa as Je,pb as P,pc as u,qb as O,qc as ye,rb as b,sb as r,t as W,ta as M,tb as s,ua as G,ub as I,va as Xe,vb as R,wb as N,xb as Ue,ya as me}from"./chunk-5NLXR4MK.js";var re=class o{caseController=E(Te);cases=M([]);loadSubscription=null;loadCases(t){this.loadSubscription?.unsubscribe(),this.loadSubscription=this.caseController.listByParentCase(t).subscribe(e=>{this.cases.set(e),this.loadSubscription=null})}addCase(t){this.cases.update(e=>[t,...e])}updateCaseTitle(t,e){this.cases.update(n=>n.map(i=>i.id===t?ce(le({},i),{title:e}):i))}static \u0275fac=function(e){return new(e||o)};static \u0275prov=ge({token:o,factory:o.\u0275fac,providedIn:"root"})};var qt=["promptItem"],wt=(o,t)=>t.name;function At(o,t){if(o&1&&(R(0,"span",5),d(1),N()),o&2){let e=t.$implicit;l(),et("","{","","{","",e.name,"","}","","}")}}function zt(o,t){if(o&1&&(R(0,"span",6),d(1),N()),o&2){let e=c().$implicit;l(),v(e.description)}}function Lt(o,t){if(o&1){let e=x();R(0,"li",3,0),ae("click",function(){let i=p(e).$implicit,a=c();return _(a.onItemClick(i))})("keydown.enter",function(){let i=p(e).$implicit,a=c();return _(a.onItemClick(i))})("mouseenter",function(){let i=p(e).$index,a=c();return _(a.activeIndex.set(i))}),R(2,"span",4),d(3),P(4,At,2,5,"span",5,wt),N(),g(6,zt,2,1,"span",6),N()}if(o&2){let e=t.$implicit,n=t.$index,i=c();k("prompt-autocomplete__item--active",i.isActive(n)),Z("aria-selected",i.isActive(n)),l(3),q(" /",e.name," "),l(),O(e.parameters),l(2),h(e.description?6:-1)}}var X=class o{prompts=u.required();selected=f();dismissed=f();activeIndex=M(0);itemRefs;ngOnChanges(t){t.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?.toArray()?.[this.activeIndex()]?.nativeElement.scrollIntoView({block:"nearest"})}static \u0275fac=function(e){return new(e||o)};static \u0275cmp=T({type:o,selectors:[["agentos-prompt-autocomplete"]],viewQuery:function(e,n){if(e&1&&K(qt,5),e&2){let i;L(i=$())&&(n.itemRefs=i)}},inputs:{prompts:[1,"prompts"]},outputs:{selected:"selected",dismissed:"dismissed"},features:[Xe],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&&(R(0,"ul",1),P(1,Lt,7,5,"li",2,wt),N()),e&2&&(l(),O(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 yt={status:"loading",files:[],capability:"NONE"};function $t(o){return[...o].sort((t,e)=>new Date(e.lastModified).getTime()-new Date(t.lastModified).getTime())}var se=class o{controller=E(dt);namespaceId=null;caseId=null;caseRefresh$=new de(void 0);namespaceRefresh$=new de(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=w(()=>this.caseView().status);namespaceStatus=w(()=>this.namespaceView().status);caseFiles=w(()=>this.caseView().files);namespaceFiles=w(()=>this.namespaceView().files);caseFileCount=w(()=>this.caseFiles().length);namespaceFileCount=w(()=>this.namespaceFiles().length);fileCount=w(()=>this.caseFileCount()+this.namespaceFileCount());canWriteCase=w(()=>this.caseView().capability==="READ_WRITE");canWriteNamespace=w(()=>this.namespaceView().capability==="READ_WRITE");caseSectionVisible=w(()=>this.caseView().status!=="forbidden");namespaceSectionVisible=w(()=>this.namespaceView().status!=="forbidden");caseUploading=M(!1);namespaceUploading=M(!1);loadScope(t){return t().pipe(W(e=>({status:"ready",files:$t(e.files??[]),capability:e.capability??"NONE"})),ne(e=>{let n=e?.status===403||e?.status===404;return j({status:n?"forbidden":"error",files:[],capability:"NONE"})}))}buildScopeView(t,e,n){let i=t.pipe(U(()=>{let a=e();return a?this.loadScope(()=>n(a)):j(yt)}),Ge({bufferSize:1,refCount:!0}));return ee(i,{initialValue:yt})}initializeForCase(t,e){this.namespaceId=t,this.caseId=e,this.refreshManifest()}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",i=n?this.caseId:this.namespaceId;return i?n?this.controller.getCaseFileContentExchange(i,e):this.controller.getNamespaceFileContentExchange(i,e):Ye(()=>new Error("No active scope for content request"))}uploadFile(t,e){return B(this,null,function*(){let n=t==="CASE",i=n?this.caseId:this.namespaceId;if(!i)return{success:!1,error:"No active scope"};let a=n?this.caseUploading:this.namespaceUploading;a.set(!0);let S=n?this.controller.uploadCaseFileExchange(i,e):this.controller.uploadNamespaceFileExchange(i,e);return new Promise(C=>{S.subscribe({next:()=>{a.set(!1),this.refreshManifest(),C({success:!0})},error:y=>{a.set(!1),C({success:!1,error:this.uploadErrorMessage(y)})}})})})}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 B(this,null,function*(){let n=t==="CASE",i=n?this.caseId:this.namespaceId;if(!i)return{success:!1,error:"No active scope"};let a=n?this.controller.deleteCaseFileExchange(i,e):this.controller.deleteNamespaceFileExchange(i,e);return new Promise(S=>{a.subscribe({next:()=>{this.refreshManifest(),S({success:!0})},error:C=>S({success:!1,error:C?.message??"Delete failed"})})})})}downloadFile(t,e){let n=t==="CASE",i=n?this.caseId:this.namespaceId;if(!i)return Promise.resolve({success:!1,error:"No active scope"});let a=e.split("/").pop()??e,S=n?this.controller.downloadCaseFileExchange(i,e):this.controller.downloadNamespaceFileExchange(i,e);return new Promise(C=>{S.subscribe({next:y=>{this.saveBlob(y,a),C({success:!0})},error:y=>{console.error("[exchange] download failed",y),C({success:!1,error:y?.message??"Download failed"})}})})}downloadAll(t){return B(this,null,function*(){let e=t==="CASE"?this.caseFiles():this.namespaceFiles(),n=0,i=0;for(let a of e)i++>0&&(yield new Promise(C=>setTimeout(C,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]),i=window.URL.createObjectURL(n),a=document.createElement("a");a.href=i,a.download=e,a.style.display="none",document.body.appendChild(a),a.click(),document.body.removeChild(a),window.URL.revokeObjectURL(i)}static \u0275fac=function(e){return new(e||o)};static \u0275prov=ge({token:o,factory:o.\u0275fac,providedIn:"root"})};var Wt=20*1024*1024,Ut=["pdf","png","jpg","jpeg","gif","webp","zip","tar","gz","exe","bin","doc","docx","xls","xlsx","ppt","pptx"];function je(o){return o.split(".").pop()?.toLowerCase()??""}function Mt(o){switch(je(o)){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 Et(o){return o<1024?`${o} B`:o<1024*1024?`${(o/1024).toFixed(1)} KB`:`${(o/(1024*1024)).toFixed(1)} MB`}function Tt(o){let t=new Date(o);return Number.isNaN(t.getTime())?o:t.toLocaleString(void 0,{year:"numeric",month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})}function kt(o){switch(je(o)){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 Ht(o){return!Ut.includes(je(o))}function Bt(o){return o<=Wt}function Pt(o){return Ht(o.filename)&&Bt(o.size)}function Ot(o){try{return JSON.stringify(JSON.parse(o),null,2)}catch(t){return o}}function It(o){let t=/^(case|namespace)-exchange__(editFiles|remove|moveFile)$/.exec(o??"");return t?t[1]:null}var jt=["backButton"];function Qt(o,t){if(o&1){let e=x();r(0,"ds-empty-state",7)(1,"button",13),m("click",function(){p(e);let i=c();return _(i.onDownload())}),d(2,"Download instead"),s()()}}function Yt(o,t){o&1&&(r(0,"div",8),I(1,"ds-spinner",14),s())}function Gt(o,t){if(o&1){let e=x();r(0,"ds-empty-state",9)(1,"button",13),m("click",function(){p(e);let i=c();return _(i.onDownload())}),d(2,"Download instead"),s()()}}function Kt(o,t){if(o&1&&(I(0,"div",10),ve(1,"agentosMarkdown")),o&2){let e=c();b("innerHTML",we(1,1,e.content()),pe)}}function Jt(o,t){if(o&1&&I(0,"iframe",11),o&2){let e=c();b("srcdoc",e.displayContent(),pe)("title","Preview of "+e.filename())}}function Xt(o,t){if(o&1&&(r(0,"pre",12),d(1),s()),o&2){let e=c();l(),v(e.displayContent())}}var Re=class o{file=u.required();content=u(null);status=u("loading");canView=u(!0);closeRequested=f();downloadRequested=f();backButton=ye("backButton",{read:me});constructor(){ie(()=>{this.backButton()?.nativeElement?.querySelector("button")?.focus()})}filename=w(()=>{let t=this.file().path;return t.split("/").pop()??t});format=w(()=>kt(this.filename()));displayContent=w(()=>{let t=this.content();return t==null?"":this.format()==="json"?Ot(t):t});onClose(){this.closeRequested.emit()}onDownload(){this.downloadRequested.emit(this.file())}static \u0275fac=function(e){return new(e||o)};static \u0275cmp=T({type:o,selectors:[["agentos-exchange-content-viewer"]],viewQuery:function(e,n){e&1&&fe(n.backButton,jt,5,me),e&2&&Ce()},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),m("action",function(){return n.onClose()}),s(),r(4,"span",4),d(5),s(),r(6,"ds-icon-button",5),m("action",function(){return n.onDownload()}),s()(),r(7,"div",6),g(8,Qt,3,0,"ds-empty-state",7)(9,Yt,2,0,"div",8)(10,Gt,3,0,"ds-empty-state",9)(11,Kt,2,3,"div",10)(12,Jt,1,2,"iframe",11)(13,Xt,2,1,"pre",12),s()()),e&2&&(l(4),b("title",n.filename()),l(),v(n.filename()),l(),b("title","Download "+n.filename()),l(2),h(n.canView()?n.status()==="loading"?9:n.status()==="error"?10:n.format()==="markdown"?11:n.format()==="html"?12:13:8))},dependencies:[Pe,ke,H,xt],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 Zt=(o,t)=>t.label;function en(o,t){if(o&1&&(r(0,"span"),d(1),s()),o&2){let e=t.$implicit;_e(it("exchange-item__badge exchange-item__badge--",e.variant)),l(),v(e.label)}}function tn(o,t){if(o&1){let e=x();r(0,"ds-icon-button",10),m("action",function(){p(e);let i=c();return _(i.deleteRequested.emit())}),s()}if(o&2){let e=c();b("title","Delete "+e.row().filename)}}var te=class o{row=u.required();active=u(!1);canWrite=u(!1);viewRequested=f();downloadRequested=f();deleteRequested=f();static toRow(t){return{path:t.path,filename:t.filename,meta:`${Et(t.size)} \xB7 ${Tt(t.lastModified)}`,icon:Mt(t.filename)}}static \u0275fac=function(e){return new(e||o)};static \u0275cmp=T({type:o,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),m("click",function(){return n.viewRequested.emit()}),r(2,"span",2),d(3),s(),r(4,"span",3)(5,"span",4),d(6),s(),r(7,"span",5),d(8),P(9,en,2,4,"span",6,Zt),s()()(),r(11,"div",7)(12,"ds-icon-button",8),m("action",function(){return n.downloadRequested.emit()}),s(),g(13,tn,1,1,"ds-icon-button",9),s()()),e&2&&(k("exchange-item--active",n.active()),l(),Z("data-exchange-path",n.row().path)("aria-current",n.active()?"true":null)("aria-label","View "+n.row().filename),l(2),v(n.row().icon),l(3),v(n.row().filename),l(2),q(" ",n.row().meta," "),l(),O(n.row().badges),l(3),b("title","Download "+n.row().filename),l(),h(n.canWrite()?13:-1))},dependencies:[H],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 nn=(o,t)=>t.path;function on(o,t){if(o&1){let e=x();r(0,"li",1)(1,"agentos-exchange-item",2),m("viewRequested",function(){let i=p(e).$implicit,a=c();return _(a.onView(i))})("downloadRequested",function(){let i=p(e).$implicit,a=c();return _(a.onDownload(i))})("deleteRequested",function(){let i=p(e).$implicit,a=c();return _(a.onDelete(i))}),s()()}if(o&2){let e=t.$implicit,n=c();l(),b("row",e)("active",n.isActive(e))("canWrite",n.canWrite())}}var Ne=class o{rows=u.required();scope=u.required();activeFile=u(null);canWrite=u(!1);fileSelected=f();downloadRequested=f();deleteRequested=f();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||o)};static \u0275cmp=T({type:o,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),P(1,on,2,3,"li",1,nn),s()),e&2&&(l(),O(n.rows()))},dependencies:[te],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 an=["fileInput"];function rn(o,t){if(o&1){let e=x();r(0,"agentos-exchange-content-viewer",4),m("closeRequested",function(){p(e);let i=c();return _(i.onViewerClose())})("downloadRequested",function(i){p(e);let a=c();return _(a.downloadRequested.emit(i))}),s()}if(o&2){let e=c();b("file",t)("content",e.selectedContent())("status",e.contentStatus())("canView",e.canViewSelected())}}function sn(o,t){if(o&1){let e=x();r(0,"ds-icon-button",20),m("action",function(){p(e);let i=c(3);return _(i.triggerUpload(i.CASE))}),s()}if(o&2){let e=c(3);b("disabled",e.caseUploading())}}function ln(o,t){o&1&&(r(0,"span",15),d(1,"read-only"),s())}function cn(o,t){if(o&1){let e=x();r(0,"ds-icon-button",21),m("action",function(){p(e);let i=c(3);return _(i.downloadAllRequested.emit(i.CASE))}),s()}}function dn(o,t){o&1&&(r(0,"p",17),d(1,"Uploading\u2026"),s())}function mn(o,t){o&1&&(r(0,"div",18),I(1,"ds-spinner",22),s())}function pn(o,t){if(o&1){let e=x();r(0,"div",19)(1,"span"),d(2,"Couldn't load case files."),s(),r(3,"button",23),m("click",function(){p(e);let i=c(3);return _(i.retryRequested.emit())}),d(4,"Retry"),s()()}}function _n(o,t){if(o&1&&I(0,"ds-empty-state",24),o&2){let e=c(4);b("hint",e.canWriteCase()?"Upload a file to share it with this case.":void 0)}}function un(o,t){if(o&1){let e=x();r(0,"agentos-exchange-file-list",26),m("fileSelected",function(i){p(e);let a=c(4);return _(a.onFileSelected(i))})("downloadRequested",function(i){p(e);let a=c(4);return _(a.downloadRequested.emit(i))})("deleteRequested",function(i){p(e);let a=c(4);return _(a.deleteRequested.emit(i))}),s()}if(o&2){let e=c(4);b("rows",e.caseRows())("scope",e.CASE)("canWrite",e.canWriteCase())("activeFile",e.activeFile())}}function gn(o,t){if(o&1&&g(0,_n,1,1,"ds-empty-state",24)(1,un,1,4,"agentos-exchange-file-list",25),o&2){let e=c(3);h(e.caseFiles().length===0?0:1)}}function hn(o,t){if(o&1&&(r(0,"section",9)(1,"div",11)(2,"h3",12),d(3,"Case files"),s(),r(4,"div",13),g(5,sn,1,1,"ds-icon-button",14)(6,ln,2,0,"span",15),g(7,cn,1,0,"ds-icon-button",16),s()(),g(8,dn,2,0,"p",17),g(9,mn,2,0,"div",18)(10,pn,5,0,"div",19)(11,gn,2,1),s()),o&2){let e,n=c(2);l(5),h(n.canWriteCase()?5:6),l(2),h(n.caseFiles().length>0?7:-1),l(),h(n.caseUploading()?8:-1),l(),h((e=n.caseStatus())==="loading"?9:e==="error"?10:11)}}function fn(o,t){if(o&1){let e=x();r(0,"ds-icon-button",20),m("action",function(){p(e);let i=c(3);return _(i.triggerUpload(i.NAMESPACE))}),s()}if(o&2){let e=c(3);b("disabled",e.namespaceUploading())}}function Cn(o,t){o&1&&(r(0,"span",15),d(1,"read-only"),s())}function bn(o,t){if(o&1){let e=x();r(0,"ds-icon-button",28),m("action",function(){p(e);let i=c(3);return _(i.downloadAllRequested.emit(i.NAMESPACE))}),s()}}function xn(o,t){o&1&&(r(0,"div",18),I(1,"ds-spinner",29),s())}function vn(o,t){if(o&1){let e=x();r(0,"div",19)(1,"span"),d(2,"Couldn't load namespace files."),s(),r(3,"button",23),m("click",function(){p(e);let i=c(3);return _(i.retryRequested.emit())}),d(4,"Retry"),s()()}}function wn(o,t){if(o&1&&I(0,"ds-empty-state",30),o&2){let e=c(4);b("hint",e.canWriteNamespace()?"Upload a file to share it across this namespace.":void 0)}}function yn(o,t){if(o&1){let e=x();r(0,"agentos-exchange-file-list",26),m("fileSelected",function(i){p(e);let a=c(4);return _(a.onFileSelected(i))})("downloadRequested",function(i){p(e);let a=c(4);return _(a.downloadRequested.emit(i))})("deleteRequested",function(i){p(e);let a=c(4);return _(a.deleteRequested.emit(i))}),s()}if(o&2){let e=c(4);b("rows",e.namespaceRows())("scope",e.NAMESPACE)("canWrite",e.canWriteNamespace())("activeFile",e.activeFile())}}function Sn(o,t){if(o&1&&g(0,wn,1,1,"ds-empty-state",30)(1,yn,1,4,"agentos-exchange-file-list",25),o&2){let e=c(3);h(e.namespaceFiles().length===0?0:1)}}function Mn(o,t){if(o&1&&(r(0,"section",9)(1,"div",11)(2,"h3",12),d(3,"Namespace files"),s(),r(4,"div",13),g(5,fn,1,1,"ds-icon-button",14)(6,Cn,2,0,"span",15),g(7,bn,1,0,"ds-icon-button",27),s()(),g(8,xn,2,0,"div",18)(9,vn,5,0,"div",19)(10,Sn,2,1),s()),o&2){let e,n=c(2);l(5),h(n.canWriteNamespace()?5:6),l(2),h(n.namespaceFiles().length>0?7:-1),l(),h((e=n.namespaceStatus())==="loading"?8:e==="error"?9:10)}}function En(o,t){o&1&&(r(0,"p",10),d(1,"No files available."),s())}function Tn(o,t){if(o&1){let e=x();r(0,"header",5)(1,"span",6),d(2,"Files"),s(),r(3,"ds-icon-button",7),m("action",function(){p(e);let i=c();return _(i.closeRequested.emit())}),s()(),r(4,"div",8),g(5,hn,12,4,"section",9),g(6,Mn,11,3,"section",9),g(7,En,2,0,"p",10),s()}if(o&2){let e=c();l(5),h(e.caseSectionVisible()?5:-1),l(),h(e.namespaceSectionVisible()?6:-1),l(),h(!e.caseSectionVisible()&&!e.namespaceSectionVisible()?7:-1)}}var Fe=class o{caseFiles=u([]);caseStatus=u.required();caseSectionVisible=u(!1);canWriteCase=u(!1);caseUploading=u(!1);namespaceFiles=u([]);namespaceStatus=u.required();namespaceSectionVisible=u(!1);canWriteNamespace=u(!1);namespaceUploading=u(!1);activeFile=u(null);selectedContent=u(null);contentStatus=u("loading");canViewSelected=u(!0);fileSelected=f();uploadRequested=f();downloadRequested=f();downloadAllRequested=f();deleteRequested=f();retryRequested=f();closeRequested=f();viewerClosed=f();host=E(me);fileInput=ye("fileInput");CASE="CASE";NAMESPACE="NAMESPACE";caseRows=w(()=>this.caseFiles().map(te.toRow));namespaceRows=w(()=>this.namespaceFiles().map(te.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||o)};static \u0275cmp=T({type:o,selectors:[["agentos-exchange-drawer"]],viewQuery:function(e,n){e&1&&fe(n.fileInput,an,5),e&2&&Ce()},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,rn,1,4,"agentos-exchange-content-viewer",2)(2,Tn,8,3),r(3,"input",3,0),m("change",function(a){return n.onFileInputChange(a)}),s()()),e&2){let i;l(),h((i=n.activeFile())?1:2,i)}},dependencies:[H,Pe,ke,Ne,Re],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 kn(o,t){if(o&1&&(r(0,"p",1),d(1),s()),o&2){let e=c();l(),v(e.actionError())}}var Ve=class o{route=E(J);destroyRef=E(Y);state=E(se);closeRequested=f();selectedFile=M(null);selectedContent=M(null);contentStatus=M("loading");canViewSelected=M(!0);actionError=M(null);pendingDelete=M(null);confirmOpen=w(()=>this.pendingDelete()!==null);deleteMessage=w(()=>{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(A()).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())}),G(t=>t(()=>this.state.clear()))}onFileSelected(t){this.selectedFile.set(t),this.selectedContent.set(null);let e=this.findFile(t),n=e?Pt(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(A(this.destroyRef)).subscribe({next:i=>{this.isStillSelected(t)&&(this.selectedContent.set(i.content),this.contentStatus.set("ready"))},error:()=>{this.isStillSelected(t)&&this.contentStatus.set("error")}})}onUpload(t){return B(this,null,function*(){this.actionError.set(null);let e=[];for(let n of t.files){let i=yield this.state.uploadFile(t.scope,n);i.success||e.push({name:n.name,error:i.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 B(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 B(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 B(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||o)};static \u0275cmp=T({type:o,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,kn,2,1,"p",1),r(2,"agentos-exchange-drawer",2),m("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()}),s()(),r(3,"ds-confirm-dialog",3),m("confirmed",function(){return n.onConfirmDelete()})("cancelled",function(){return n.onCancelDelete()}),s()),e&2&&(l(),h(n.actionError()?1:-1),l(),b("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()),l(),b("open",n.confirmOpen())("message",n.deleteMessage()))},dependencies:[Fe,ht],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 Pn=["composerInput"],On=["messagesContainer"],In=(o,t)=>t.phaseIndex;function Dn(o,t){if(o&1&&(r(0,"span",8),d(1),s()),o&2){let e=c();l(),v(e.exchangeFileCount())}}function Rn(o,t){o&1&&(r(0,"div",10)(1,"p"),d(2,"No messages yet."),s()())}function Nn(o,t){if(o&1&&(r(0,"div",25)(1,"span",28),d(2,"session context"),s(),r(3,"pre",29),d(4),ve(5,"json"),s()()),o&2){let e=c(2).$implicit;l(4),v(we(5,1,e.event.sessionContext))}}function Fn(o,t){if(o&1&&(r(0,"div",24),g(1,Nn,6,3,"div",25),r(2,"span",26),d(3),s(),I(4,"div",27),s()),o&2){let e=c().$implicit,n=c(2);k("case-chat__message--user",e.event.actor.role==="USER")("case-chat__message--agent",e.event.actor.role==="AGENT"),l(),h(n.showTechnical()&&e.event.sessionContext?1:-1),l(2),v(e.event.actor.displayName),l(),b("innerHTML",e.html,pe)}}function Vn(o,t){if(o&1&&(r(0,"div",21)(1,"span",26),d(2),s(),r(3,"p",30),d(4),s()()),o&2){let e=c().$implicit,n=c(2);l(2),v(n.agentDisplayName()),l(2),v(e.text)}}function qn(o,t){if(o&1&&(r(0,"div",35),d(1),s()),o&2){let e=c(3).$implicit;l(),v(e.item.detail)}}function An(o,t){if(o&1){let e=x();r(0,"button",33),m("click",function(){p(e);let i=c(2).$implicit,a=c(2);return _(a.toggleTechnical(i.eventId))}),r(1,"span",32),d(2),s(),r(3,"span",34),d(4),s()(),g(5,qn,2,1,"div",35)}if(o&2){let e=c(2).$implicit,n=c(2);Z("aria-expanded",n.isTechnicalExpanded(e.eventId)),l(2),v(e.item.label),l(2),v(n.isTechnicalExpanded(e.eventId)?"\u25BC":"\u25B6"),l(),h(n.isTechnicalExpanded(e.eventId)?5:-1)}}function zn(o,t){if(o&1&&(r(0,"span",32),d(1),s()),o&2){let e=c(2).$implicit;l(),v(e.item.label)}}function Ln(o,t){if(o&1&&(r(0,"div",31),g(1,An,6,4)(2,zn,2,1,"span",32),s()),o&2){let e=c().$implicit;k("case-chat__technical--warn",e.item.type==="WarnEvent")("case-chat__technical--error",e.item.type==="ErrorEvent"),l(),h(e.item.detail?1:2)}}function $n(o,t){o&1&&d(0," \u23F3 ")}function Wn(o,t){o&1&&d(0," \u2705 ")}function Un(o,t){o&1&&d(0," \u274C ")}function Hn(o,t){if(o&1&&(r(0,"div",52)(1,"span",53),d(2,"Enrichment content"),s(),r(3,"pre"),d(4),s()()),o&2){let e=c().$implicit;l(4),v(e.enrichmentContent)}}function Bn(o,t){if(o&1&&(r(0,"div",48)(1,"div",49)(2,"span",50),d(3),s(),r(4,"span",51),d(5),s()(),r(6,"div",52)(7,"span",53),d(8,"Prompt"),s(),r(9,"pre"),d(10),s()(),r(11,"div",52)(12,"span",53),d(13,"LLM output"),s(),r(14,"pre"),d(15),s()(),g(16,Hn,5,1,"div",52),s()),o&2){let e=t.$implicit;k("case-chat__enrichment-phase--failed",!e.success),l(3),q("Phase ",e.phaseIndex),l(2),v(e.success?"\u2705":"\u274C"),l(5),v(e.prompt),l(5),v(e.llmOutput),l(),h(e.enrichmentContent?16:-1)}}function jn(o,t){if(o&1&&(r(0,"div",42)(1,"span",44),d(2,"Enrichment phases"),s(),P(3,Bn,17,7,"div",47,In),s()),o&2){let e=c(3).$implicit;l(3),O(e.call.enrichmentPhases)}}function Qn(o,t){if(o&1&&(r(0,"div",43)(1,"span",44),d(2,"Payload"),s(),r(3,"pre"),d(4),s()()),o&2){let e=c(3).$implicit;l(4),v(e.call.args)}}function Yn(o,t){o&1&&(r(0,"pre"),d(1),s()),o&2&&(l(),v(t))}function Gn(o,t){o&1&&(r(0,"span",45),d(1,"Running\u2026"),s())}function Kn(o,t){o&1&&(r(0,"span",46),d(1,"No output"),s())}function Jn(o,t){if(o&1&&(r(0,"div",41),g(1,jn,5,0,"div",42),g(2,Qn,5,1,"div",43),r(3,"div",43)(4,"span",44),d(5,"Output"),s(),g(6,Yn,2,1,"pre")(7,Gn,2,0,"span",45)(8,Kn,2,0,"span",46),s()()),o&2){let e,n=c(2).$implicit,i=c(2);l(),h(i.showTechnical()&&(n.call.enrichmentPhases!=null&&n.call.enrichmentPhases.length)?1:-1),l(),h(n.call.args?2:-1),l(4),h((e=i.extractToolOutput(n.call))?6:n.call.response?8:7,e)}}function Xn(o,t){if(o&1){let e=x();r(0,"div",36)(1,"button",37),m("click",function(){p(e);let i=c().$implicit,a=c(2);return _(a.toggleToolCall(i.call.requestId))}),r(2,"span",38),g(3,$n,1,0)(4,Wn,1,0)(5,Un,1,0),s(),r(6,"span",39),d(7),s(),r(8,"span",40),d(9),s()(),g(10,Jn,9,3,"div",41),s()}if(o&2){let e=c().$implicit,n=c(2);k("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),l(),Z("aria-expanded",n.isToolCallExpanded(e.call.requestId)),l(2),h(e.call.response?e.call.response.success?4:5:3),l(4),v(e.call.toolName),l(2),v(n.isToolCallExpanded(e.call.requestId)?"\u25BC":"\u25B6"),l(),h(n.isToolCallExpanded(e.call.requestId)?10:-1)}}function Zn(o,t){if(o&1&&g(0,Fn,5,7,"div",20)(1,Vn,5,2,"div",21)(2,Ln,3,5,"div",22)(3,Xn,11,11,"div",23),o&2){let e=t.$implicit;h(e.kind==="message"?0:e.kind==="streaming"?1:e.kind==="technical"?2:3)}}function eo(o,t){if(o&1&&P(0,Zn,4,1,null,null,Ze().trackTimelineItem,!0),o&2){let e=c();O(e.timeline())}}function to(o,t){o&1&&(r(0,"div",11),I(1,"span",54)(2,"span",54)(3,"span",54),s())}function no(o,t){if(o&1){let e=x();r(0,"div",12)(1,"ds-icon-button",55),m("action",function(){p(e);let i=c();return _(i.onScrollToBottomClick())}),s()()}}function oo(o,t){if(o&1){let e=x();r(0,"div",14)(1,"agentos-prompt-autocomplete",56),m("selected",function(i){p(e);let a=c();return _(a.onPromptSelected(i))})("dismissed",function(){p(e);let i=c();return _(i.closeAutocomplete())}),s()()}if(o&2){let e=c();l(),b("prompts",e.slashSuggestions())}}function io(o,t){if(o&1){let e=x();r(0,"ds-icon-button",57),m("action",function(){p(e);let i=c();return _(i.interrupt())}),s()}}function ao(o,t){if(o&1){let e=x();r(0,"ds-icon-button",58),m("action",function(){p(e);let i=c();return _(i.submit())}),s()}if(o&2){let e=c();b("title",e.preferences.composerHint())("disabled",!e.canSend)}}var ro=64,qe=class o{route=E(J);http=E(Se);zone=E(Je);destroyRef=E(Y);domSanitizer=E(ct);exchangeState=E(se);config=E(Ee);preferences=E(Ie);caseState=E(re);promptState=E(Oe);exchangeOpen=M(!1);exchangeFileCount=this.exchangeState.fileCount;toggleExchange(){this.exchangeOpen.update(t=>!t)}caseId=this.route.snapshot.queryParams.case;namespaceId=this.route.snapshot.queryParams.ns;markdownRenderer=this.buildMarkdownRenderer();agentDisplayName=w(()=>{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 i=n.agentName;if(i&&i.trim().length>0)return i}if(n.type==="MessageEvent"&&n.actor.role==="AGENT"&&n.actor.displayName)return n.actor.displayName}}return"Assistant"});eventSource=null;composerInput;messagesContainer;autocompleteRef;events=M([]);messageHtmlCache=new Map;inputValue=M("");isRunning=M(!1);isTerminal=M(!1);effectivePrompts=[];promptsLoaded=!1;slashPrefix$=new ue;slashSuggestions=M([]);static SHOW_TECHNICAL_KEY="agentos.case-chat.showTechnical";showTechnical=M(localStorage.getItem(o.SHOW_TECHNICAL_KEY)==="true");showTechnicalOverride=u(!1);streamingText=M("");collapsedTools=M(new Set);expandedTechnicals=M(new Set);isAtBottom=M(!0);scrollListenerCleanup=null;constructor(){this.slashPrefix$.pipe(oe(60),U(t=>(this.promptsLoaded?j(this.effectivePrompts):this.promptState.listEffective(this.namespaceId).pipe(ne(()=>j([])))).pipe(W(n=>({prefix:t,prompts:n})))),A(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())))}),G(()=>{this.showTechnical.set(this.showTechnicalOverride())}),G(()=>{this.isRunning()||this.isTerminal()||queueMicrotask(()=>this.composerInput?.nativeElement.focus())}),G(()=>{this.timeline(),this.streamingText(),this.isAtBottom()&&queueMicrotask(()=>this.scrollToBottom())}),ie(()=>{this.attachScrollListener()})}baseTimeline=w(()=>{let t=this.events(),e=this.showTechnical(),n=new Map;for(let S of t)if(S.type==="ToolRequestEvent"){let C=S,y=C.toolRequestId??S.id,V=n.get(y);n.set(y,{requestId:y,toolName:C.toolName??"unknown",args:C.args??null,response:V?.response,enrichmentPhases:C.enrichmentPhases??null})}else if(S.type==="ToolResponseEvent"){let C=S,y=C.toolRequestId??S.id,V=n.get(y);n.set(y,{requestId:y,toolName:V?.toolName??C.toolName??"unknown",args:V?.args??null,response:C,enrichmentPhases:V?.enrichmentPhases??null})}let i=[],a=new Set;for(let S of t)if(S.type==="MessageEvent"){let C=S;i.push({kind:"message",event:C,html:this.messageHtmlCache.get(S.id)??""})}else if(S.type==="ToolRequestEvent"||S.type==="ToolResponseEvent"){let C=S.toolRequestId??S.id;a.has(C)||(a.add(C),i.push({kind:"tool",call:n.get(C)}))}else if(e){let C=this.toTechnicalItem(S);C&&i.push({kind:"technical",item:C,eventId:S.id})}return i});timeline=w(()=>{let t=this.baseTimeline(),e=this.streamingText();return e.trim().length===0?t:[...t,{kind:"streaming",text:e}]});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.isRunning()&&!this.isTerminal()}ngOnInit(){this.connectSse(),this.route.queryParams.pipe(A(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<=ro)};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=i=>{let a=performance.now(),S=i.type,C=i.data;console.log("[AgentOS SSE] frame received",{sseEventName:S,dataLength:C?.length??0,dataPreview:C?.slice(0,120),receivedAtMs:a});try{let y=JSON.parse(C);this.zone.run(()=>{let V=this.events().length;if(y.type==="MessageEvent"){let D=y,Q=this.extractText(D);this.messageHtmlCache.has(y.id)||this.messageHtmlCache.set(y.id,this.renderMarkdown(Q))}this.events.update(D=>D.some(Q=>Q.id===y.id)?D:[...D,y]);let Vt=this.events().length;if(console.log("[AgentOS SSE] event processed",{sseEventName:S,eventType:y.type,eventId:y.id,beforeLen:V,afterLen:Vt,running:this.isRunning(),terminal:this.isTerminal()}),y.type==="TextChunkEvent"){let D=y.chunk;D&&this.streamingText.update(Q=>Q+D);return}if(y.type==="CaseUpdatedEvent"){let D=y;D.title&&this.caseState.updateCaseTitle(y.caseId,D.title);return}if(y.type==="CaseStatusEvent"){let D=y.status,Q=D==="KILLED"||D==="ERROR";if(this.isTerminal.set(Q),Q)this.isRunning.set(!1),this.eventSource?.close(),this.eventSource=null;else{let Qe=D==="RUNNING";this.isRunning.set(Qe),Qe||this.streamingText.set("")}return}if(y.type==="AgentFinishedEvent"){this.isRunning.set(!1),this.streamingText.set(""),this.anyToolResponseThisTurn&&this.exchangeState.refreshManifest(),this.anyToolResponseThisTurn=!1;return}if(y.type==="ToolResponseEvent"){this.anyToolResponseThisTurn=!0;let D=It(y.toolName);D==="case"?this.exchangeState.refreshCase():D==="namespace"&&this.exchangeState.refreshNamespace();return}})}catch(y){console.warn("[AgentOS SSE] failed to parse event data",{sseEventName:S,error:y,dataPreview:C?.slice(0,500)})}},n=["MessageEvent","CaseStatusEvent","CaseUpdatedEvent","AgentSelectedEvent","AgentRunningEvent","AgentFinishedEvent","ThinkingEvent","TextChunkEvent","ToolRequestEvent","ToolResponseEvent","PendingConfirmationEvent","ConfirmationResolvedEvent","ErrorEvent","WarnEvent","IntentionGeneratedEvent"];for(let i of n)console.log("[AgentOS SSE] addEventListener",i),this.eventSource.addEventListener(i,e);this.eventSource.onopen=()=>{console.log("[AgentOS SSE] connection open",{readyState:this.eventSource?.readyState,at:new Date().toISOString()})},this.eventSource.onmessage=i=>{console.log("[AgentOS SSE] onmessage (unnamed event) received",{dataLength:i.data?.length??0,dataPreview:i.data?.slice(0,120)})},this.eventSource.onerror=i=>{console.warn("[AgentOS SSE] connection error",{err:i,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.inputValue.set(e),this.updateSlashAutocomplete(e)}onKeydown(t){if(this.slashSuggestions().length>0){if(t.key==="ArrowDown"||t.key==="ArrowUp"){t.preventDefault(),this.autocompleteRef?.navigate(t.key);return}if(t.key==="Escape"){t.preventDefault(),this.closeAutocomplete();return}if(t.key==="Tab"||t.key==="Enter"){t.preventDefault(),this.autocompleteRef?.navigate("Enter");return}}this.preferences.shouldSend(t)&&(t.preventDefault(),this.submit())}onPromptSelected(t){let e=this.autocompleteRef?.completionFor(t)??`/${t.name} `;this.inputValue.set(e),queueMicrotask(()=>{let n=this.composerInput?.nativeElement;n&&(n.value=e,n.setSelectionRange(e.length,e.length),n.focus())}),this.closeAutocomplete()}closeAutocomplete(){this.slashSuggestions.set([])}updateSlashAutocomplete(t){if(!t.startsWith("/")){this.slashSuggestions().length&&this.slashSuggestions.set([]);return}let e=t.slice(1);if(e.includes(" ")){this.slashSuggestions().length&&this.slashSuggestions.set([]);return}this.promptsLoaded&&this.slashSuggestions.set(this.effectivePrompts.filter(n=>n.name.toLowerCase().startsWith(e.toLowerCase()))),this.slashPrefix$.next(e)}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.streamingText.set(""),this.collapsedTools.set(new Set),this.isAtBottom.set(!0),this.slashSuggestions.set([]),this.effectivePrompts=[],this.promptsLoaded=!1,this.connectSse()}submit(){if(!this.canSend)return;let t=this.inputValue().trim();this.inputValue.set(""),this.sendMessage(t)}sendMessage(t){this.isRunning.set(!0),this.streamingText.set(""),this.http.post(`${this.config.basePath}/api/cases/${this.caseId}/messages`,{content:t,userId:"default-user"}).subscribe({error:e=>{console.error("[CaseChat] Failed to send message",e),this.isRunning.set(!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.showTechnical.update(t=>{let e=!t;return localStorage.setItem(o.SHOW_TECHNICAL_KEY,String(e)),e})}toggleTechnical(t){this.expandedTechnicals.update(e=>{let n=new Set(e);return n.has(t)?n.delete(t):n.add(t),n})}isTechnicalExpanded(t){return this.expandedTechnicals().has(t)}renderMarkdown(t){if(!t)return"";let e=ut.parse(t,{renderer:this.markdownRenderer,breaks:!0,gfm:!0,async:!1}),n=gt.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 _t,e=t.link.bind(t);return t.link=n=>{let i=e(n);return this.isExternalLink(n.href)&&(i=i.replace("<a ",'<a target="_blank" rel="noopener noreferrer" ').replace("</a>",'<span class="external-link-icon" aria-hidden="true">\u2197</span></a>')),i},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}}static \u0275fac=function(e){return new(e||o)};static \u0275cmp=T({type:o,selectors:[["agentos-case-chat"]],viewQuery:function(e,n){if(e&1&&K(Pn,5)(On,5)(X,5),e&2){let i;L(i=$())&&(n.composerInput=i.first),L(i=$())&&(n.messagesContainer=i.first),L(i=$())&&(n.autocompleteRef=i.first)}},inputs:{showTechnicalOverride:[1,"showTechnicalOverride"]},decls:22,vars:15,consts:[["messagesContainer",""],["composerInput",""],["position","end","drawerWidth","400px",3,"openChange","open","mobileFullWidth"],["dsDrawerSide","",3,"closeRequested"],["dsDrawerContent","",1,"case-chat__host"],[1,"case-chat"],[1,"case-chat__exchange-toggle"],["variant","default",3,"action","icon","title"],["aria-hidden","true",1,"case-chat__exchange-badge"],[1,"case-chat__messages"],[1,"case-chat__empty"],[1,"case-chat__thinking"],[1,"case-chat__scroll-anchor"],[1,"case-chat__composer"],[1,"case-chat__autocomplete"],["placeholder","Reply\u2026","rows","3",1,"case-chat__input",3,"input","keydown","value","disabled"],[1,"case-chat__actions"],["icon","stop","variant","danger","title","Interrupt"],["icon","send","variant","primary",3,"title","disabled"],["icon","cancel","variant","danger","title","Kill",3,"action","disabled"],[1,"case-chat__message",3,"case-chat__message--user","case-chat__message--agent"],[1,"case-chat__message","case-chat__message--agent","case-chat__message--streaming"],[1,"case-chat__technical",3,"case-chat__technical--warn","case-chat__technical--error"],[1,"case-chat__tool-call",3,"case-chat__tool-call--pending","case-chat__tool-call--success","case-chat__tool-call--error"],[1,"case-chat__message"],[1,"case-chat__session-context"],[1,"case-chat__message-author"],[1,"case-chat__message-text","case-chat__message-text--markdown",3,"innerHTML"],[1,"case-chat__session-context-label"],[1,"case-chat__session-context-body"],[1,"case-chat__message-text"],[1,"case-chat__technical"],[1,"case-chat__technical-label"],["type","button",1,"case-chat__technical-header",3,"click"],[1,"case-chat__technical-chevron"],[1,"case-chat__technical-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","prompts"],["icon","stop","variant","danger","title","Interrupt",3,"action"],["icon","send","variant","primary",3,"action","title","disabled"]],template:function(e,n){if(e&1){let i=x();r(0,"ds-drawer",2),ot("openChange",function(S){return p(i),nt(n.exchangeOpen,S)||(n.exchangeOpen=S),_(S)}),r(1,"agentos-exchange-shell",3),m("closeRequested",function(){return n.exchangeOpen.set(!1)}),s(),r(2,"div",4)(3,"div",5)(4,"div",6)(5,"ds-icon-button",7),m("action",function(){return n.toggleExchange()}),s(),g(6,Dn,2,1,"span",8),s(),r(7,"div",9,0),g(9,Rn,3,0,"div",10)(10,eo,2,0),g(11,to,4,0,"div",11),s(),g(12,no,2,0,"div",12),r(13,"div",13),g(14,oo,2,1,"div",14),r(15,"textarea",15,1),m("input",function(S){return n.onInput(S)})("keydown",function(S){return n.onKeydown(S)}),s(),r(17,"div",16)(18,"ds-icon-button",7),m("action",function(){return n.toggleShowTechnical()}),s(),g(19,io,1,0,"ds-icon-button",17)(20,ao,1,2,"ds-icon-button",18),r(21,"ds-icon-button",19),m("action",function(){return n.kill()}),s()()()()()()}e&2&&(tt("open",n.exchangeOpen),b("mobileFullWidth",!0),l(5),b("icon",n.exchangeOpen()?"chevron_right":"folder")("title","Files ("+n.exchangeFileCount()+")"),l(),h(n.exchangeFileCount()>0&&!n.exchangeOpen()?6:-1),l(3),h(n.timeline().length===0?9:10),l(2),h(n.isRunning()?11:-1),l(),h(n.isAtBottom()?-1:12),l(2),h(n.slashSuggestions().length>0?14:-1),l(),b("value",n.inputValue())("disabled",n.isRunning()||n.isTerminal()),l(3),b("icon",n.showTechnical()?"visibility_off":"bug_report")("title",n.showTechnical()?"Hide technical events":"Show technical events"),l(),h(n.isRunning()?19:20),l(2),b("disabled",n.isTerminal()))},dependencies:[H,ft,Ve,X,lt],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__exchange-toggle[_ngcontent-%COMP%]{position:absolute;top:.5rem;right:.5rem;z-index:10}.case-chat__exchange-badge[_ngcontent-%COMP%]{position:absolute;top:-2px;right:-2px;min-width:16px;height:16px;padding:0 4px;border-radius:999px;background:var(--color-primary, #007aff);color:var(--color-text-inverse, #ffffff);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;max-width:800px;width:100%;margin:0 auto;padding:1.5rem;gap:1rem;position:relative}.case-chat__messages[_ngcontent-%COMP%]{flex:1;min-height:0;overflow-y:auto;display:flex;flex-direction:column;gap:.75rem;padding-bottom:.5rem;-webkit-overflow-scrolling:touch;scrollbar-width:thin;scrollbar-color:var(--color-border, rgba(0, 0, 0, .15)) 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-text-secondary, #6e6e73);font-size:.9rem;margin:0}.case-chat__tool-calls[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.4rem;margin-top:.25rem}.case-chat__tool-call[_ngcontent-%COMP%]{flex-shrink:0;border-radius:8px;border:1px solid var(--color-border, rgba(0, 0, 0, .1));background:var(--glass-bg, rgba(255, 255, 255, .72));font-size:.8rem;overflow:hidden;transition:border-color .2s ease}.case-chat__tool-call--pending[_ngcontent-%COMP%]{border-color:var(--color-warning, #f5a623);opacity:.8}.case-chat__tool-call--success[_ngcontent-%COMP%]{border-color:var(--color-success, #34c759)}.case-chat__tool-call--error[_ngcontent-%COMP%]{border-color:var(--color-error, #ff3b30)}.case-chat__tool-call-header[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.4rem;width:100%;padding:.4rem .6rem;background:transparent;border:none;cursor:pointer;text-align:left;color:var(--color-text, #1d1d1f);font-family:inherit;font-size:.8rem}.case-chat__tool-call-header[_ngcontent-%COMP%]:hover{background:var(--color-bg-hover, rgba(0, 0, 0, .04))}.case-chat__tool-call-icon[_ngcontent-%COMP%]{flex-shrink:0;font-size:.75rem}.case-chat__tool-call-name[_ngcontent-%COMP%]{font-weight:600;font-family:var(--font-mono, ui-monospace, "SF Mono", monospace);color:var(--color-primary, #0071e3);flex-shrink:0}.case-chat__tool-call-args[_ngcontent-%COMP%]{color:var(--color-text-secondary, #6e6e73);font-family:var(--font-mono, ui-monospace, "SF Mono", monospace);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-text-secondary, #6e6e73);margin-left:auto}.case-chat__tool-call-output[_ngcontent-%COMP%]{border-top:1px solid var(--color-border, rgba(0, 0, 0, .08));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-border, rgba(0, 0, 0, .06))}.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-mono, ui-monospace, "SF Mono", monospace);font-size:.75rem;color:var(--color-text, #1d1d1f);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-text-secondary, #6e6e73)}.case-chat__enrichment-section[_ngcontent-%COMP%]{background:var(--color-surface-secondary, rgba(0, 0, 0, .02))}.case-chat__enrichment-phase[_ngcontent-%COMP%]{margin-top:.35rem;border-radius:4px;border:1px solid var(--color-border, rgba(0, 0, 0, .08));background:var(--glass-bg, rgba(255, 255, 255, .6));overflow:hidden}.case-chat__enrichment-phase--failed[_ngcontent-%COMP%]{border-color:var(--color-error, #ff3b30);background:#ff3b300a}.case-chat__enrichment-phase-header[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;padding:.2rem .5rem;background:var(--color-surface-secondary, rgba(0, 0, 0, .03));border-bottom:1px solid var(--color-border, rgba(0, 0, 0, .06))}.case-chat__enrichment-phase-index[_ngcontent-%COMP%]{font-weight:600;font-size:.7rem;text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-secondary, #6e6e73)}.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-border, rgba(0, 0, 0, .04))}.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-mono, ui-monospace, "SF Mono", monospace);font-size:.7rem;color:var(--color-text, #1d1d1f);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-text-secondary, #6e6e73)}.case-chat__tool-call-pending[_ngcontent-%COMP%], .case-chat__tool-call-empty[_ngcontent-%COMP%]{display:block;margin-top:.25rem;color:var(--color-text-secondary, #6e6e73);font-style:italic;font-size:.75rem}.case-chat__technical[_ngcontent-%COMP%]{flex-shrink:0;border-radius:6px;background:var(--color-surface-secondary, rgba(0, 0, 0, .03));border-left:3px solid var(--color-border, rgba(0, 0, 0, .12));font-size:.78rem;color:var(--color-text-secondary, #6e6e73);overflow:hidden}.case-chat__technical--warn[_ngcontent-%COMP%]{border-left-color:var(--color-warning, #f5a623);background:#f5a6230f;color:var(--color-text, #1d1d1f)}.case-chat__technical--error[_ngcontent-%COMP%]{border-left-color:var(--color-error, #ff3b30);background:#ff3b300f;color:var(--color-text, #1d1d1f)}.case-chat__technical-header[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.5rem;width:100%;padding:.2rem .75rem;background:transparent;border:none;cursor:pointer;text-align:left;color:inherit;font-family:inherit;font-size:inherit}.case-chat__technical-header[_ngcontent-%COMP%]:hover{background:var(--color-bg-hover, rgba(0, 0, 0, .04))}.case-chat__technical-label[_ngcontent-%COMP%]{font-weight:500;white-space:nowrap}.case-chat__technical-label[_ngcontent-%COMP%]:only-child{display:block;padding:.2rem .75rem}.case-chat__technical-chevron[_ngcontent-%COMP%]{flex-shrink:0;font-size:.6rem;color:var(--color-text-secondary, #6e6e73);margin-left:auto}.case-chat__technical-body[_ngcontent-%COMP%]{padding:.3rem .75rem .5rem;border-top:1px solid var(--color-border, rgba(0, 0, 0, .08));white-space:pre-wrap;word-break:break-word;font-size:.75rem;line-height:1.5;color:var(--color-text, #1d1d1f)}.case-chat__session-context[_ngcontent-%COMP%]{flex-shrink:0;border-radius:6px;background:var(--color-surface-secondary, rgba(0, 0, 0, .03));border-left:3px solid var(--color-primary, #0071e3);padding:.25rem .75rem .4rem;margin-bottom:.25rem;font-size:.75rem;color:var(--color-text-secondary, #6e6e73);overflow:hidden}.case-chat__session-context-label[_ngcontent-%COMP%]{display:block;font-size:.65rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--color-primary, #0071e3);margin-bottom:.2rem}.case-chat__session-context-body[_ngcontent-%COMP%]{margin:0;white-space:pre-wrap;word-break:break-all;font-family:var(--font-mono, ui-monospace, "SF Mono", monospace);font-size:.75rem;color:var(--color-text, #1d1d1f);max-height:160px;overflow-y:auto}.case-chat__message[_ngcontent-%COMP%]{flex-shrink:0}.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-mono, ui-monospace, "SF Mono", monospace);font-size:.85em;background:var(--color-code-bg, rgba(0, 0, 0, .06));border-radius:3px;padding:.1em .35em}.case-chat__message-text--markdown[_ngcontent-%COMP%] pre[_ngcontent-%COMP%]{background:var(--color-code-bg, rgba(0, 0, 0, .06));border-radius:6px;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-size:.8rem}.case-chat__message-text--markdown[_ngcontent-%COMP%] blockquote[_ngcontent-%COMP%]{margin:.4em 0;padding-left:.8em;border-left:3px solid var(--color-border, rgba(0, 0, 0, .15));color:var(--color-text-secondary, #6e6e73)}.case-chat__message-text--markdown[_ngcontent-%COMP%] a[_ngcontent-%COMP%]{color:var(--color-primary, #0071e3);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__message--streaming[_ngcontent-%COMP%]{opacity:.95}.case-chat__scroll-anchor[_ngcontent-%COMP%]{position:absolute;bottom:calc(2rem + 80px);left:50%;transform:translate(-50%);z-index:10;background:var(--glass-bg, rgba(255, 255, 255, .88));border:1px solid var(--glass-border, rgba(255, 255, 255, .3));backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-radius:50%;box-shadow:0 2px 12px var(--color-shadow, rgba(0, 0, 0, .12));animation:_ngcontent-%COMP%_scroll-anchor-in .15s ease}.case-chat__autocomplete[_ngcontent-%COMP%]{position:absolute;bottom:calc(100% + .5rem);left:0;right:0;background:var(--glass-bg, rgba(255, 255, 255, .96));border:1px solid var(--color-border, rgba(0, 0, 0, .1));backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border-radius:12px;box-shadow:0 8px 32px #00000026;z-index:20;animation:_ngcontent-%COMP%_autocomplete-in .12s ease}.case-chat__composer[_ngcontent-%COMP%]{flex-shrink:0;position:relative;display:flex;align-items:flex-end;gap:.5rem;background:var(--glass-bg, rgba(255, 255, 255, .72));border:1px solid var(--glass-border, rgba(255, 255, 255, .18));backdrop-filter:var(--glass-backdrop-blur, blur(20px));-webkit-backdrop-filter:var(--glass-backdrop-blur, blur(20px));border-radius:16px;padding:.5rem .5rem .5rem 1rem}.case-chat__input[_ngcontent-%COMP%]{flex:1;resize:none;padding:.5rem 0;border:none;background:transparent;color:var(--color-text, #1d1d1f);font-size:.95rem;font-family:inherit;line-height:1.5;outline:none;min-height:40px}.case-chat__input[_ngcontent-%COMP%]::placeholder{color:var(--color-text-secondary, #6e6e73)}.case-chat__input[_ngcontent-%COMP%]:disabled{opacity:.5;cursor:not-allowed}.case-chat__actions[_ngcontent-%COMP%]{display:flex;align-items:center;flex-shrink:0}.thinking-dot[_ngcontent-%COMP%]{width:8px;height:8px;border-radius:50%;background:var(--color-text-secondary, #6e6e73);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 so=["composerInput"];function lo(o,t){if(o&1){let e=x();r(0,"div",5)(1,"agentos-prompt-autocomplete",10),m("selected",function(i){p(e);let a=c();return _(a.onPromptSelected(i))})("dismissed",function(){p(e);let i=c();return _(i.closeAutocomplete())}),s()()}if(o&2){let e=c();l(),b("prompts",e.slashSuggestions())}}var Ae=class o{http=E(Se);router=E(Me);route=E(J);config=E(Ee);caseState=E(re);destroyRef=E(Y);preferences=E(Ie);promptState=E(Oe);composerInput;autocompleteRef;namespaceId=this.route.snapshot.queryParams.ns;inputValue=M("");isCreating=M(!1);effectivePrompts=[];promptsLoaded=!1;slashPrefix$=new ue;slashSuggestions=M([]);ngOnInit(){this.route.queryParams.pipe(A(this.destroyRef)).subscribe(t=>{let e=t.ns;e&&e!==this.namespaceId&&(this.namespaceId=e,this.effectivePrompts=[],this.promptsLoaded=!1,this.slashSuggestions.set([]),this.inputValue.set(""))})}constructor(){ie(()=>{this.composerInput?.nativeElement.focus()}),this.slashPrefix$.pipe(oe(60),U(t=>(this.promptsLoaded?j(this.effectivePrompts):this.promptState.listEffective(this.namespaceId).pipe(ne(()=>j([])))).pipe(W(n=>({prefix:t,prompts:n})))),A(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())))})}get canSend(){return!!this.inputValue().trim()&&!this.isCreating()}onInput(t){let e=t.target.value;this.inputValue.set(e),this.updateSlashAutocomplete(e)}onKeydown(t){if(this.slashSuggestions().length>0){if(t.key==="ArrowDown"||t.key==="ArrowUp"){t.preventDefault(),this.autocompleteRef?.navigate(t.key);return}if(t.key==="Escape"){t.preventDefault(),this.closeAutocomplete();return}if(t.key==="Tab"||t.key==="Enter"){t.preventDefault(),this.autocompleteRef?.navigate("Enter");return}}this.preferences.shouldSend(t)&&(t.preventDefault(),this.submit())}onPromptSelected(t){let e=this.autocompleteRef?.completionFor(t)??`/${t.name} `;this.inputValue.set(e),queueMicrotask(()=>{let n=this.composerInput?.nativeElement;n&&(n.value=e,n.setSelectionRange(e.length,e.length),n.focus())}),this.closeAutocomplete()}closeAutocomplete(){this.slashSuggestions.set([])}updateSlashAutocomplete(t){if(!t.startsWith("/")){this.slashSuggestions().length&&this.slashSuggestions.set([]);return}let e=t.slice(1);if(e.includes(" ")){this.slashSuggestions().length&&this.slashSuggestions.set([]);return}this.promptsLoaded&&this.slashSuggestions.set(this.effectivePrompts.filter(n=>n.name.toLowerCase().startsWith(e.toLowerCase()))),this.slashPrefix$.next(e)}submit(){if(!this.canSend)return;let t=this.inputValue().trim();this.inputValue.set(""),this.isCreating.set(!0),this.http.post(`${this.config.basePath}/api/cases`,{namespaceId:this.namespaceId,metadata:{}}).pipe(U(e=>(this.caseState.addCase(e),this.http.post(`${this.config.basePath}/api/cases/${e.id}/messages`,{content:t,userId:"default-user"}).pipe(W(()=>e)))),A(this.destroyRef)).subscribe({next:e=>{this.router.navigate(["/agentos/home"],{queryParams:{ns:this.namespaceId,case:e.id??""}})},error:e=>{console.error("[CaseHome] Failed to create case or send first message",e),this.isCreating.set(!1),this.inputValue.set(t)}})}static \u0275fac=function(e){return new(e||o)};static \u0275cmp=T({type:o,selectors:[["agentos-case-home"]],viewQuery:function(e,n){if(e&1&&K(so,5)(X,5),e&2){let i;L(i=$())&&(n.composerInput=i.first),L(i=$())&&(n.autocompleteRef=i.first)}},decls:12,vars:5,consts:[["composerInput",""],[1,"case-home"],[1,"case-home__hero"],[1,"case-home__headline"],[1,"case-home__composer"],[1,"case-home__autocomplete"],["placeholder","Describe your task or ask a question\u2026","rows","4",1,"case-home__input",3,"input","keydown","value","disabled"],[1,"case-home__composer-footer"],[1,"case-home__hint"],["icon","send","variant","primary","title","Start case",3,"action","disabled"],[3,"selected","dismissed","prompts"]],template:function(e,n){e&1&&(r(0,"div",1)(1,"div",2)(2,"h1",3),d(3,"What can I help you with?"),s(),r(4,"div",4),g(5,lo,2,1,"div",5),r(6,"textarea",6,0),m("input",function(a){return n.onInput(a)})("keydown",function(a){return n.onKeydown(a)}),s(),r(8,"div",7)(9,"span",8),d(10),s(),r(11,"ds-icon-button",9),m("action",function(){return n.submit()}),s()()()()()),e&2&&(l(5),h(n.slashSuggestions().length>0?5:-1),l(),b("value",n.inputValue())("disabled",n.isCreating()),l(4),v(n.preferences.composerHint()),l(),b("disabled",!n.canSend))},dependencies:[H,X],styles:[".case-home[_ngcontent-%COMP%]{display:flex;flex-direction:column;height:100%;align-items:center;justify-content:center}.case-home__hero[_ngcontent-%COMP%]{display:flex;flex-direction:column;align-items:center;gap:2rem;padding:2rem 1.5rem 4rem;max-width:680px;width:100%}.case-home__headline[_ngcontent-%COMP%]{margin:0;font-size:clamp(1.5rem,4vw,2.25rem);font-weight:700;letter-spacing:-.03em;color:var(--color-text);text-align:center;font-family:Inter,sans-serif}.case-home__autocomplete[_ngcontent-%COMP%]{position:absolute;bottom:calc(100% + .5rem);left:0;right:0;background:var(--glass-bg, rgba(255, 255, 255, .96));border:1px solid var(--color-border, rgba(0, 0, 0, .1));backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border-radius:12px;box-shadow:0 8px 32px #00000026;z-index:20;animation:_ngcontent-%COMP%_autocomplete-in .12s ease}.case-home__composer[_ngcontent-%COMP%]{position:relative;width:100%;display:flex;flex-direction:column;background:var(--glass-bg);border:1px solid var(--glass-border);backdrop-filter:var(--glass-backdrop-blur);-webkit-backdrop-filter:var(--glass-backdrop-blur);border-radius:16px;box-shadow:0 4px 24px var(--color-shadow);transition:box-shadow .2s ease,border-color .2s ease}.case-home__composer[_ngcontent-%COMP%]:focus-within{box-shadow:0 4px 32px color-mix(in srgb,var(--color-primary) 20%,transparent);border-color:var(--color-primary)}.case-home__input[_ngcontent-%COMP%]{width:100%;resize:none;padding:1rem 1.25rem .5rem;border:none;background:transparent;color:var(--color-text);font-size:1rem;font-family:Inter,sans-serif;line-height:1.6;outline:none;box-sizing:border-box}.case-home__input[_ngcontent-%COMP%]::placeholder{color:var(--color-text-secondary)}.case-home__input[_ngcontent-%COMP%]:disabled{opacity:.5;cursor:not-allowed}.case-home__composer-footer[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;padding:.5rem .5rem .5rem 1.25rem}.case-home__hint[_ngcontent-%COMP%]{font-family:Inter,sans-serif;font-size:.8125rem;font-weight:400;line-height:1.4;color:var(--color-text-secondary, #6e6e73);font-size:.75rem;opacity:.7}@keyframes _ngcontent-%COMP%_autocomplete-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}"]})};var co=["caseItemTpl"],mo=o=>({node:o,depth:0}),po=(o,t)=>({node:o,depth:t}),Dt=(o,t)=>t.id;function _o(o,t){if(o&1){let e=x();r(0,"button",5),m("click",function(){let i=p(e).$implicit,a=c(2);return _(a.onItemSelected(i.id))}),d(1),s()}if(o&2){let e=t.$implicit,n=c(2);k("case-drawer-compact__badge--active",e.id===n.activeCaseId()),b("title",e.name),l(),q(" ",e.initials," ")}}function uo(o,t){if(o&1&&(r(0,"div",3),P(1,_o,2,4,"button",4,Dt),s()),o&2){let e=c();l(),O(e.compactItems())}}function go(o,t){if(o&1){let e=x();r(0,"button",7),m("click",function(){p(e);let i=c().$implicit,a=c();return _(a.onItemSelected(i.id))}),r(1,"span",8),d(2),s()()}if(o&2){let e=c().$implicit,n=c();k("case-tree-node__row--active",e.id===n.activeCaseId()),l(2),v(e.name)}}function ho(o,t){o&1&&He(0)}function fo(o,t){if(o&1&&he(0,ho,1,0,"ng-container",9),o&2){let e=c().$implicit;c();let n=be(5);b("ngTemplateOutlet",n)("ngTemplateOutletContext",at(2,mo,e))}}function Co(o,t){if(o&1&&g(0,go,3,3,"button",6)(1,fo,1,4,"ng-container"),o&2){let e=c();h(e.isSearchActive()?0:1)}}function bo(o,t){if(o&1){let e=x();r(0,"button",12),m("click",function(i){p(e);let a=c().node,S=c();return _(S.toggleExpand(i,a.id))}),r(1,"span",13),d(2,"\u203A"),s()()}if(o&2){let e=c().node,n=c();b("title",n.isExpanded(e.id)?"Collapse":"Expand"),l(),k("case-tree-node__toggle-icon--open",n.isExpanded(e.id))}}function xo(o,t){o&1&&He(0)}function vo(o,t){if(o&1&&he(0,xo,1,0,"ng-container",9),o&2){let e=t.$implicit,n=c(2).depth;c();let i=be(5);b("ngTemplateOutlet",i)("ngTemplateOutletContext",rt(2,po,e,n+1))}}function wo(o,t){if(o&1&&P(0,vo,1,5,"ng-container",null,Dt),o&2){let e=c().node;O(e.children)}}function yo(o,t){if(o&1){let e=x();r(0,"div",10)(1,"button",7),m("click",function(){let i=p(e).node,a=c();return _(a.onItemSelected(i.id))}),g(2,bo,3,3,"button",11),r(3,"span",8),d(4),s()(),g(5,wo,2,0),s()}if(o&2){let e=t.node,n=t.depth,i=c();xe("--depth",n),l(),k("case-tree-node__row--active",e.id===i.activeCaseId()),l(),h(e.children.length?2:-1),l(2),v(e.name),l(),h(i.isExpanded(e.id)&&e.children.length?5:-1)}}var ze=class o{cases=u([]);activeCaseId=u(null);compact=u(!1);caseSelected=f();createRequested=f();caseItemTpl;searchQuery=M("");isSearchActive=w(()=>this.searchQuery().trim().length>0);rootItems=w(()=>Mo(this.cases()));compactItems=w(()=>this.rootItems().map(t=>ce(le({},t),{initials:So(t.name)})));flatFilteredItems=w(()=>{let t=this.searchQuery().toLowerCase().trim();return t?Rt(this.rootItems(),t):[]});displayItems=w(()=>this.isSearchActive()?this.flatFilteredItems():this.rootItems());autoExpandedIds=w(()=>{let t=this.activeCaseId();if(!t)return new Set;let e=new Set;return Nt(this.rootItems(),t,e),e});expandedIds=M(new Set);isExpanded(t){return this.expandedIds().has(t)||this.autoExpandedIds().has(t)}toggleExpand(t,e){t.stopPropagation(),this.expandedIds.update(n=>{let i=new Set(n);return i.has(e)?i.delete(e):i.add(e),i})}onSearchChanged(t){this.searchQuery.set(t)}onItemSelected(t){this.caseSelected.emit(t)}onCreateRequested(){this.createRequested.emit()}static \u0275fac=function(e){return new(e||o)};static \u0275cmp=T({type:o,selectors:[["agentos-case-drawer"]],viewQuery:function(e,n){if(e&1&&K(co,7),e&2){let i;L(i=$())&&(n.caseItemTpl=i.first)}},inputs:{cases:[1,"cases"],activeCaseId:[1,"activeCaseId"],compact:[1,"compact"]},outputs:{caseSelected:"caseSelected",createRequested:"createRequested"},decls:6,vars:6,consts:[["caseItemTpl",""],["caseRowTpl",""],["title","Cases","emptyMessage","No cases yet. Start one below.","searchPlaceholder","Filter cases\u2026","cardMinWidth","100%","contentMaxWidth","100%",3,"itemSelected","createRequested","searchChanged","items","itemTemplate","showCreate","toolbarOnly","disableInternalFilter"],[1,"case-drawer-compact"],["type","button",1,"case-drawer-compact__badge",3,"case-drawer-compact__badge--active","title"],["type","button",1,"case-drawer-compact__badge",3,"click","title"],["type","button",1,"case-tree-node__row",3,"case-tree-node__row--active"],["type","button",1,"case-tree-node__row",3,"click"],[1,"case-tree-node__name"],[4,"ngTemplateOutlet","ngTemplateOutletContext"],[1,"case-tree-node"],["type","button",1,"case-tree-node__toggle",3,"title"],["type","button",1,"case-tree-node__toggle",3,"click","title"],[1,"case-tree-node__toggle-icon"]],template:function(e,n){if(e&1&&(r(0,"ds-entity-list",2),m("itemSelected",function(a){return n.onItemSelected(a)})("createRequested",function(){return n.onCreateRequested()})("searchChanged",function(a){return n.onSearchChanged(a)}),s(),g(1,uo,3,0,"div",3),he(2,Co,2,1,"ng-template",null,0,Be)(4,yo,6,7,"ng-template",null,1,Be)),e&2){let i=be(3);b("items",n.displayItems())("itemTemplate",n.compact()?void 0:i)("showCreate",!0)("toolbarOnly",n.compact())("disableInternalFilter",!0),l(),h(n.compact()?1:-1)}},dependencies:[Ct,st],styles:["[_nghost-%COMP%]{display:flex;flex-direction:column;height:100%}.case-drawer-compact[_ngcontent-%COMP%]{display:flex;flex-direction:column;align-items:center;gap:4px;padding:8px 0;overflow-y:auto}.case-drawer-compact__badge[_ngcontent-%COMP%]{width:32px;height:32px;border-radius:8px;background:#161616;color:#fff;border:none;display:flex;align-items:center;justify-content:center;flex-shrink:0}[data-theme=dark][_ngcontent-%COMP%] .case-drawer-compact__badge[_ngcontent-%COMP%]{background:transparent;border:1.5px solid var(--color-border, rgba(255, 255, 255, .15));color:var(--color-text, #f5f5f7)}.case-drawer-compact__badge[_ngcontent-%COMP%]{font-family:Inter,sans-serif;font-size:13px;font-weight:700;line-height:1;width:36px;height:36px;letter-spacing:.03em;text-transform:uppercase;cursor:pointer;background:var(--color-bg-secondary, #fff);color:var(--color-text, #1b1916);border:1px solid var(--color-border);transition:background .12s ease,border-color .12s ease,box-shadow .12s ease}.case-drawer-compact__badge[_ngcontent-%COMP%]:hover{background:var(--color-bg-hover);border-color:var(--color-border)}.case-drawer-compact__badge--active[_ngcontent-%COMP%]{background:color-mix(in srgb,var(--color-primary) 12%,transparent);border-color:var(--color-primary);color:var(--color-primary)}.case-drawer-compact__badge--active[_ngcontent-%COMP%]:hover{background:color-mix(in srgb,var(--color-primary) 18%,transparent)}.case-tree-node[_ngcontent-%COMP%]{width:100%}.case-tree-node__row[_ngcontent-%COMP%]{appearance:none;background:transparent;border:none;padding:0;margin:0;font:inherit;cursor:pointer;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;display:flex;align-items:center;width:100%;text-align:left;padding:.375rem .5rem;padding-left:calc(.5rem + var(--depth, 0) * 1.25rem);color:var(--color-text);border-radius:6px;gap:.375rem;transition:background .12s ease;box-sizing:border-box}.case-tree-node__row[_ngcontent-%COMP%]:hover{background:var(--color-bg-hover)}.case-tree-node__row--active[_ngcontent-%COMP%]{background:color-mix(in srgb,var(--color-primary) 12%,transparent);color:var(--color-primary)}.case-tree-node__row--active[_ngcontent-%COMP%]:hover{background:color-mix(in srgb,var(--color-primary) 18%,transparent)}.case-tree-node__toggle[_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:1rem;height:1rem;border-radius:3px;color:var(--color-text-secondary, rgba(0, 0, 0, .35));display:flex;align-items:center;justify-content:center;transition:background .12s ease,color .12s ease}.case-tree-node__toggle[_ngcontent-%COMP%]:hover{background:var(--color-bg-hover, rgba(0, 0, 0, .05));color:var(--color-text, #1d1d1f)}.case-tree-node__toggle[_ngcontent-%COMP%]:focus-visible{outline:2px solid var(--color-primary, #007aff);outline-offset:2px;border-radius:2px}.case-tree-node__toggle[_ngcontent-%COMP%]:disabled{opacity:.4;cursor:not-allowed}.case-tree-node__toggle[_ngcontent-%COMP%]{color:inherit}.case-tree-node__toggle-icon[_ngcontent-%COMP%]{display:inline-block;font-size:1.1rem;line-height:1;transition:transform .15s ease;transform:rotate(0)}.case-tree-node__toggle-icon--open[_ngcontent-%COMP%]{transform:rotate(90deg)}.case-tree-node__name[_ngcontent-%COMP%]{font-family:Inter,sans-serif;font-size:11.5px;font-weight:500;line-height:1;color:var(--color-text, #1d1d1f);flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:var(--font-mono, SF Mono, Monaco, Inconsolata, Fira Mono, monospace);font-size:.8rem}"],changeDetection:0})};function So(o){let t=o.trim().split(/\s+/).filter(Boolean),e=t[0]?.[0]??"",n=t[1]?.[0]??t[0]?.[1]??"";return(e+n).toUpperCase()}function Mo(o){let t=new Set(o.map(C=>C.id??"")),e=new Map(o.map(C=>[C.id??"",C.created??""])),n=C=>({id:C.id??"",name:C.title??C.id??"\u2014",description:C.id??"",children:[]}),i=new Map;for(let C of o)i.set(C.id??"",n(C));let a=[];for(let C of o){let y=i.get(C.id??""),V=C.parentCaseId;V&&t.has(V)?i.get(V).children.push(y):a.push(y)}let S=C=>C.sort((y,V)=>(e.get(V.id)??"")>(e.get(y.id)??"")?1:-1).map(y=>ce(le({},y),{children:S(y.children)}));return S(a)}function Rt(o,t){return o.reduce((e,n)=>((n.name.toLowerCase().includes(t)||n.id.toLowerCase().includes(t))&&e.push(n),n.children.length&&e.push(...Rt(n.children,t)),e),[])}function Nt(o,t,e){for(let n of o){if(n.id===t)return!0;if(n.children.length&&Nt(n.children,t,e))return e.add(n.id),!0}return!1}var Eo=(o,t)=>t.id;function To(o,t){o&1&&(r(0,"span",3),d(1,"chevron_left"),s())}function ko(o,t){o&1&&I(0,"img",4)}function Po(o,t){o&1&&(r(0,"span",22),d(1,"\u2713"),s())}function Oo(o,t){if(o&1){let e=x();r(0,"button",19),m("click",function(){let i=p(e).$implicit,a=c(4);return _(a.namespaceSelected.emit(i))}),r(1,"span",20),d(2),s(),r(3,"span",21),d(4),s(),g(5,Po,2,0,"span",22),s()}if(o&2){let e,n,i=t.$implicit,a=c(4);k("shell-sidebar__ns-item--active",i.id===((e=a.selectedNamespace())==null?null:e.id)),l(2),v(a.nsInitial(i.name)),l(2),v(i.name),l(),h(i.id===((n=a.selectedNamespace())==null?null:n.id)?5:-1)}}function Io(o,t){if(o&1&&(r(0,"div",17),P(1,Oo,6,5,"button",18,Eo),s()),o&2){let e=c(3);l(),O(e.namespaces())}}function Do(o,t){if(o&1){let e=x();r(0,"div",11)(1,"button",13),m("click",function(){p(e);let i=c(2);return _(i.nsMenuToggled.emit())}),r(2,"span",14),d(3),s(),r(4,"span",15),d(5),s(),r(6,"span",16),d(7,"\u25BE"),s()(),g(8,Io,3,0,"div",17),s()}if(o&2){let e,n,i=c(2);l(),k("shell-sidebar__ns-trigger--open",i.nsMenuOpen()),l(2),v(i.nsInitial((e=i.selectedNamespace())==null?null:e.name)),l(2),v(((n=i.selectedNamespace())==null?null:n.name)??"Select namespace"),l(3),h(i.nsMenuOpen()?8:-1)}}function Ro(o,t){if(o&1&&(r(0,"div",12)(1,"span",14),d(2),s(),r(3,"span",15),d(4),s()()),o&2){let e,n,i=c(2);l(2),v(i.nsInitial((e=i.selectedNamespace())==null?null:e.name)),l(2),v((n=i.selectedNamespace())==null?null:n.name)}}function No(o,t){if(o&1&&(r(0,"div",5),g(1,Do,9,5,"div",11)(2,Ro,5,2,"div",12),s()),o&2){let e=c();l(),h(e.showNsPicker()?1:2)}}function Fo(o,t){if(o&1&&d(0),o&2){let e=c(2);q(" ",e.userInitials()," ")}}function Vo(o,t){o&1&&d(0," \u2022\u2022\u2022 ")}function qo(o,t){if(o&1){let e=x();r(0,"div",6)(1,"button",23),m("click",function(i){p(e);let a=c();return _(a.menuToggled.emit(i))}),g(2,Fo,1,1)(3,Vo,1,0),s(),r(4,"agentos-shell-user-menu",24),m("navigateTo",function(i){p(e);let a=c();return _(a.navigateTo.emit(i))})("themeToggled",function(){p(e);let i=c();return _(i.themeToggled.emit())})("logsToggled",function(){p(e);let i=c();return _(i.logsToggled.emit())})("closed",function(i){p(e);let a=c();return _(a.menuClosed.emit(i))}),s()()}if(o&2){let e=c();l(2),h(e.userInitials()?2:3),l(2),b("open",e.menuOpen())("isAdmin",e.isAdmin())("isDark",e.isDark())("showTechnical",e.showTechnical())}}var Le=class o{brandHovered=!1;static COMPACT_WIDTH=60;isCompact=M(!1);toggleCompact(){this.isCompact.update(t=>!t)}nsInitial(t){return(t??"?").charAt(0).toUpperCase()}effectiveWidth=w(()=>this.sidebarOpen()?this.isCompact()?o.COMPACT_WIDTH:this.sidebarWidth():0);sidebarWidth=u.required();sidebarOpen=u.required();selectedNamespace=u.required();namespaces=u.required();showNsPicker=u.required();nsMenuOpen=u.required();cases=u.required();activeCaseId=u.required();userInitials=u.required();menuOpen=u.required();isAdmin=u.required();isDark=u.required();showTechnical=u.required();collapseRequested=f();homeClicked=f();namespaceSelected=f();nsMenuToggled=f();nsMenuClosed=f();caseSelected=f();createRequested=f();menuToggled=f();menuClosed=f();navigateTo=f();themeToggled=f();logsToggled=f();static \u0275fac=function(e){return new(e||o)};static \u0275cmp=T({type:o,selectors:[["agentos-shell-sidebar"]],inputs:{sidebarWidth:[1,"sidebarWidth"],sidebarOpen:[1,"sidebarOpen"],selectedNamespace:[1,"selectedNamespace"],namespaces:[1,"namespaces"],showNsPicker:[1,"showNsPicker"],nsMenuOpen:[1,"nsMenuOpen"],cases:[1,"cases"],activeCaseId:[1,"activeCaseId"],userInitials:[1,"userInitials"],menuOpen:[1,"menuOpen"],isAdmin:[1,"isAdmin"],isDark:[1,"isDark"],showTechnical:[1,"showTechnical"]},outputs:{collapseRequested:"collapseRequested",homeClicked:"homeClicked",namespaceSelected:"namespaceSelected",nsMenuToggled:"nsMenuToggled",nsMenuClosed:"nsMenuClosed",caseSelected:"caseSelected",createRequested:"createRequested",menuToggled:"menuToggled",menuClosed:"menuClosed",navigateTo:"navigateTo",themeToggled:"themeToggled",logsToggled:"logsToggled"},decls:12,vars:14,consts:[[1,"shell-sidebar"],[1,"shell-sidebar__top"],["type","button",1,"shell-sidebar__brand",3,"mouseenter","mouseleave","click","title"],[1,"shell-sidebar__logo-chevron","material-icons"],["src","CODAY-Logo.png","alt","Coday",1,"shell-sidebar__logo-img"],[1,"shell-sidebar__ns-wrap"],[1,"shell-sidebar__user-menu"],[1,"shell-sidebar__cases-scroll"],[3,"caseSelected","createRequested","cases","activeCaseId","compact"],["type","button",1,"shell-sidebar__compact-toggle",3,"click","title"],[1,"material-icons","shell-sidebar__compact-toggle-icon"],[1,"shell-sidebar__ns-picker"],[1,"shell-sidebar__ns-trigger","shell-sidebar__ns-trigger--readonly"],[1,"shell-sidebar__ns-trigger",3,"click"],[1,"shell-sidebar__ns-mark"],[1,"shell-sidebar__ns-name"],[1,"shell-sidebar__ns-chevron"],[1,"shell-sidebar__ns-menu"],[1,"shell-sidebar__ns-item",3,"shell-sidebar__ns-item--active"],[1,"shell-sidebar__ns-item",3,"click"],[1,"shell-sidebar__ns-item-mark"],[1,"shell-sidebar__ns-item-name"],[1,"shell-sidebar__ns-item-check"],["type","button","title","Menu",1,"shell-sidebar__user-btn",3,"click"],["variant","desktop",3,"navigateTo","themeToggled","logsToggled","closed","open","isAdmin","isDark","showTechnical"]],template:function(e,n){e&1&&(r(0,"div",0)(1,"div",1)(2,"button",2),m("mouseenter",function(){return n.brandHovered=!0})("mouseleave",function(){return n.brandHovered=!1})("click",function(){return n.brandHovered?n.collapseRequested.emit():n.homeClicked.emit()}),g(3,To,2,0,"span",3)(4,ko,1,0,"img",4),s(),g(5,No,3,1,"div",5),g(6,qo,5,5,"div",6),s(),r(7,"div",7)(8,"agentos-case-drawer",8),m("caseSelected",function(a){return n.caseSelected.emit(a)})("createRequested",function(){return n.createRequested.emit()}),s()(),r(9,"button",9),m("click",function(){return n.toggleCompact()}),r(10,"span",10),d(11,"chevron_left"),s()()()),e&2&&(xe("width",n.effectiveWidth(),"px")("overflow",n.effectiveWidth()===0?"hidden":"visible"),l(2),b("title",n.brandHovered?"Close sidebar":"Home"),l(),h(n.brandHovered?3:4),l(2),h(n.isCompact()?-1:5),l(),h(n.isCompact()?-1:6),l(2),b("cases",n.cases())("activeCaseId",n.activeCaseId())("compact",n.isCompact()),l(),k("shell-sidebar__compact-toggle--compact",n.isCompact()),b("title",n.isCompact()?"Expand drawer":"Collapse to icons"))},dependencies:[ze,De],styles:["[_nghost-%COMP%]{display:contents}@media(max-width:900px){[_nghost-%COMP%]{display:none!important}}.shell-sidebar[_ngcontent-%COMP%]{display:flex;flex-direction:column;height:100%;overflow:visible;position:relative;border-right:1px solid var(--color-border);background:var(--color-bg);flex-shrink:0;transition:width .24s cubic-bezier(.4,0,.2,1);white-space:nowrap}.shell-sidebar__top[_ngcontent-%COMP%]{display:flex;align-items:center;gap:6px;padding:10px;border-bottom:1px solid var(--color-border);flex-shrink:0;overflow:visible}.shell-sidebar__brand[_ngcontent-%COMP%]{appearance:none;background:transparent;border:none;margin:0;font:inherit;cursor:pointer;text-align:left;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;display:flex;align-items:center;padding:4px;border-radius:8px;flex-shrink:0;transition:background .14s}.shell-sidebar__brand[_ngcontent-%COMP%]:hover{background:var(--color-bg-hover)}.shell-sidebar__logo-img[_ngcontent-%COMP%]{width:28px;height:28px;border-radius:6px;object-fit:contain}.shell-sidebar__logo-chevron[_ngcontent-%COMP%]{width:28px;height:28px;font-size:22px;display:flex;align-items:center;justify-content:center;color:var(--color-text-secondary)}.shell-sidebar__user-menu[_ngcontent-%COMP%]{position:relative;flex-shrink:0}.shell-sidebar__user-btn[_ngcontent-%COMP%]{font-family:Inter,sans-serif;font-size:13px;font-weight:700;line-height:1;width:32px;height:32px;border-radius:8px;border:none;background:var(--color-primary, #016b71);color:#fff;cursor:pointer;display:grid;place-items:center;transition:background .14s ease}.shell-sidebar__user-btn[_ngcontent-%COMP%]:hover{background:var(--color-primary-hover, #015a5f)}.shell-sidebar__ns-wrap[_ngcontent-%COMP%]{flex:1;min-width:0;position:relative}.shell-sidebar__ns-picker[_ngcontent-%COMP%]{position:relative}.shell-sidebar__ns-trigger[_ngcontent-%COMP%]{appearance:none;background:transparent;border:none;margin:0;font:inherit;cursor:pointer;text-align:left;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;width:100%;display:flex;align-items:center;gap:8px;padding:5px 8px 5px 5px;border-radius:8px;border:1px solid var(--color-border);background:var(--color-bg-secondary);color:var(--color-text);transition:all .15s}.shell-sidebar__ns-trigger[_ngcontent-%COMP%]:hover{background:var(--color-bg-hover)}.shell-sidebar__ns-trigger--open[_ngcontent-%COMP%]{border-color:var(--color-primary)}.shell-sidebar__ns-trigger--readonly[_ngcontent-%COMP%]{cursor:default;pointer-events:none}.shell-sidebar__ns-mark[_ngcontent-%COMP%]{width:32px;height:32px;border-radius:8px;background:#161616;color:#fff;border:none;display:flex;align-items:center;justify-content:center;flex-shrink:0}[data-theme=dark][_ngcontent-%COMP%] .shell-sidebar__ns-mark[_ngcontent-%COMP%]{background:transparent;border:1.5px solid var(--color-border, rgba(255, 255, 255, .15));color:var(--color-text, #f5f5f7)}.shell-sidebar__ns-mark[_ngcontent-%COMP%]{font-family:Inter,sans-serif;font-size:13px;font-weight:700;line-height:1;width:26px;height:26px;border-radius:6px;font-size:11px;flex-shrink:0}.shell-sidebar__ns-name[_ngcontent-%COMP%]{flex:1;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:.8rem;font-weight:600}.shell-sidebar__ns-chevron[_ngcontent-%COMP%]{color:var(--color-text-secondary);font-size:.7rem;flex-shrink:0}.shell-sidebar__ns-menu[_ngcontent-%COMP%]{background:var(--color-modal-bg, #ffffff);border:1px solid var(--color-border, rgba(0, 0, 0, .1));border-radius:10px;box-shadow:var(--color-modal-shadow, 0 6px 20px rgba(0, 0, 0, .08));padding:5px;position:absolute;left:0;right:0;top:calc(100% + 4px);z-index:100}.shell-sidebar__ns-item[_ngcontent-%COMP%]{appearance:none;background:transparent;border:none;margin:0;font:inherit;cursor:pointer;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;display:flex;align-items:center;width:100%;padding:8px 10px;border-radius:6px;font-family:Inter,sans-serif;font-size:12.5px;font-weight:500;color:var(--color-text, #1d1d1f);text-align:left;transition:background .1s ease}.shell-sidebar__ns-item[_ngcontent-%COMP%]:hover{background:var(--color-bg-hover, rgba(0, 0, 0, .04))}.shell-sidebar__ns-item--danger[_ngcontent-%COMP%]{color:var(--color-error, #a5140a)}.shell-sidebar__ns-item--danger[_ngcontent-%COMP%]:hover{background:rgba(from var(--color-error, #ff453a) r g b/.08)}.shell-sidebar__ns-item[_ngcontent-%COMP%]{gap:8px;padding:6px 8px}.shell-sidebar__ns-item--active[_ngcontent-%COMP%]{background:color-mix(in srgb,var(--color-primary) 10%,transparent);color:var(--color-primary)}.shell-sidebar__ns-item-mark[_ngcontent-%COMP%]{width:32px;height:32px;border-radius:8px;background:#161616;color:#fff;border:none;display:flex;align-items:center;justify-content:center;flex-shrink:0}[data-theme=dark][_ngcontent-%COMP%] .shell-sidebar__ns-item-mark[_ngcontent-%COMP%]{background:transparent;border:1.5px solid var(--color-border, rgba(255, 255, 255, .15));color:var(--color-text, #f5f5f7)}.shell-sidebar__ns-item-mark[_ngcontent-%COMP%]{font-family:Inter,sans-serif;font-size:13px;font-weight:700;line-height:1;width:22px;height:22px;border-radius:5px;font-size:10px;flex-shrink:0}.shell-sidebar__ns-item-name[_ngcontent-%COMP%]{flex:1;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.shell-sidebar__ns-item-check[_ngcontent-%COMP%]{color:var(--color-primary);font-size:.75rem;flex-shrink:0}.shell-sidebar__cases-scroll[_ngcontent-%COMP%]{flex:1;overflow-y:auto;overflow-x:hidden;padding-bottom:16px}.shell-sidebar__cases-scroll[_ngcontent-%COMP%]::-webkit-scrollbar{width:4px}.shell-sidebar__cases-scroll[_ngcontent-%COMP%]::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:999px}.shell-sidebar__compact-toggle[_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;position:absolute;top:50%;right:3px;transform:translateY(-50%);width:24px;height:40px;border-radius:20px;background:var(--color-bg-secondary);border:1px solid var(--color-border);box-shadow:0 2px 6px var(--color-shadow);display:flex;align-items:center;justify-content:center;z-index:10;color:var(--color-text-secondary);transition:color .14s ease,box-shadow .14s ease}.shell-sidebar__compact-toggle[_ngcontent-%COMP%]:hover{color:var(--color-text);box-shadow:0 3px 10px var(--color-shadow)}.shell-sidebar__compact-toggle-icon[_ngcontent-%COMP%]{font-size:18px;transition:transform .2s ease}.shell-sidebar__compact-toggle--compact[_ngcontent-%COMP%] .shell-sidebar__compact-toggle-icon[_ngcontent-%COMP%]{transform:rotate(180deg)}"],changeDetection:0})};var Ao=(o,t)=>t.id;function zo(o,t){o&1&&(r(0,"span"),d(1,"\u2713"),s())}function Lo(o,t){if(o&1){let e=x();r(0,"button",12),m("click",function(){let i=p(e).$implicit,a=c(2);return _(a.namespaceSelected.emit(i))}),r(1,"span",13),d(2),s(),g(3,zo,2,0,"span"),s()}if(o&2){let e,n,i=t.$implicit,a=c(2);k("shell-topbar-mobile__ns-item--active",i.id===((e=a.selectedNamespace())==null?null:e.id)),l(2),v(i.name),l(),h(i.id===((n=a.selectedNamespace())==null?null:n.id)?3:-1)}}function $o(o,t){if(o&1){let e=x();r(0,"div",9),m("click",function(i){p(e);let a=c();return _(a.nsMenuClosed.emit(i))})("keyup.escape",function(i){p(e);let a=c();return _(a.nsMenuClosed.emit(i))}),s(),r(1,"div",10),P(2,Lo,4,4,"button",11,Ao),s()}if(o&2){let e=c();l(2),O(e.namespaces())}}var $e=class o{selectedNamespace=u.required();namespaces=u.required();nsMenuOpen=u.required();userInitials=u.required();menuOpen=u.required();isAdmin=u.required();isDark=u.required();showTechnical=u.required();homeClicked=f();namespaceSelected=f();nsMenuToggled=f();nsMenuClosed=f();menuToggled=f();menuClosed=f();navigateTo=f();themeToggled=f();logsToggled=f();static \u0275fac=function(e){return new(e||o)};static \u0275cmp=T({type:o,selectors:[["agentos-shell-topbar-mobile"]],inputs:{selectedNamespace:[1,"selectedNamespace"],namespaces:[1,"namespaces"],nsMenuOpen:[1,"nsMenuOpen"],userInitials:[1,"userInitials"],menuOpen:[1,"menuOpen"],isAdmin:[1,"isAdmin"],isDark:[1,"isDark"],showTechnical:[1,"showTechnical"]},outputs:{homeClicked:"homeClicked",namespaceSelected:"namespaceSelected",nsMenuToggled:"nsMenuToggled",nsMenuClosed:"nsMenuClosed",menuToggled:"menuToggled",menuClosed:"menuClosed",navigateTo:"navigateTo",themeToggled:"themeToggled",logsToggled:"logsToggled"},decls:13,vars:9,consts:[[1,"shell-topbar-mobile__brand"],["type","button","title","Home",1,"shell-topbar-mobile__logo-btn",3,"click"],["src","CODAY-Logo.png","alt","Coday",1,"shell-topbar-mobile__logo-img"],[1,"shell-topbar-mobile__ns-wrap"],["type","button",1,"shell-topbar-mobile__ns-btn",3,"click"],[1,"shell-topbar-mobile__chevron"],[1,"shell-topbar-mobile__avatar-wrap"],["tabindex","0","role","button","aria-label","User menu",1,"shell-topbar-mobile__avatar",3,"click","keyup.enter"],["variant","mobile",3,"navigateTo","themeToggled","logsToggled","closed","open","isAdmin","isDark","showTechnical"],["role","presentation","tabindex","-1",1,"shell-topbar-mobile__ns-backdrop",3,"click","keyup.escape"],[1,"shell-topbar-mobile__ns-menu"],[1,"shell-topbar-mobile__ns-item",3,"shell-topbar-mobile__ns-item--active"],[1,"shell-topbar-mobile__ns-item",3,"click"],[1,"shell-topbar-mobile__ns-item-name"]],template:function(e,n){if(e&1&&(r(0,"div",0)(1,"button",1),m("click",function(){return n.homeClicked.emit()}),I(2,"img",2),s(),r(3,"div",3)(4,"button",4),m("click",function(a){return n.nsMenuToggled.emit(a)}),d(5),r(6,"span",5),d(7,"\u25BE"),s()(),g(8,$o,4,0),s()(),r(9,"div",6)(10,"div",7),m("click",function(a){return n.menuToggled.emit(a)})("keyup.enter",function(){return n.menuToggled.emit(void 0)}),d(11),s(),r(12,"agentos-shell-user-menu",8),m("navigateTo",function(a){return n.navigateTo.emit(a)})("themeToggled",function(){return n.themeToggled.emit()})("logsToggled",function(){return n.logsToggled.emit()})("closed",function(a){return n.menuClosed.emit(a)}),s()()),e&2){let i;l(4),k("shell-topbar-mobile__ns-btn--open",n.nsMenuOpen()),l(),q(" ",((i=n.selectedNamespace())==null?null:i.name)??""," "),l(3),h(n.nsMenuOpen()?8:-1),l(3),q(" ",n.userInitials()||"\xB7\xB7\xB7"," "),l(),b("open",n.menuOpen())("isAdmin",n.isAdmin())("isDark",n.isDark())("showTechnical",n.showTechnical())}},dependencies:[De],styles:["[_nghost-%COMP%]{display:none}.shell-topbar-mobile__brand[_ngcontent-%COMP%]{display:flex;align-items:center;gap:6px;min-width:0;flex:1;overflow:hidden}.shell-topbar-mobile__logo-btn[_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;display:flex;align-items:center;gap:6px;flex:none}.shell-topbar-mobile__logo-img[_ngcontent-%COMP%]{height:28px;width:auto;border-radius:6px;object-fit:contain}.shell-topbar-mobile__logo-text[_ngcontent-%COMP%]{font-family:Inter,sans-serif;font-size:11.5px;font-weight:500;line-height:1;color:var(--color-text, #1d1d1f)}.shell-topbar-mobile__sep[_ngcontent-%COMP%]{color:var(--color-text-tertiary);font:inherit;font-size:.75rem;flex:none}.shell-topbar-mobile__ns-wrap[_ngcontent-%COMP%]{position:static;min-width:0}.shell-topbar-mobile__ns-btn[_ngcontent-%COMP%]{appearance:none;background:transparent;border:none;margin:0;font:inherit;cursor:pointer;text-align:left;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;font-family:Inter,sans-serif;font-size:12.5px;font-weight:500;line-height:1.4;color:var(--color-text, #1d1d1f);font-weight:600;display:flex;align-items:center;gap:4px;padding:4px 8px;border-radius:6px;border:1px solid transparent;transition:all .15s;max-width:160px}.shell-topbar-mobile__ns-btn[_ngcontent-%COMP%]:hover{background:var(--color-bg-hover);border-color:var(--color-border)}.shell-topbar-mobile__ns-btn--open[_ngcontent-%COMP%]{border-color:var(--color-primary);background:color-mix(in srgb,var(--color-primary) 6%,transparent)}.shell-topbar-mobile__chevron[_ngcontent-%COMP%]{color:var(--color-text-secondary);font-size:9px;flex:none}.shell-topbar-mobile__ns-backdrop[_ngcontent-%COMP%]{position:fixed;inset:0;z-index:299}.shell-topbar-mobile__ns-menu[_ngcontent-%COMP%]{background:var(--color-modal-bg, #ffffff);border:1px solid var(--color-border, rgba(0, 0, 0, .1));border-radius:10px;box-shadow:var(--color-modal-shadow, 0 6px 20px rgba(0, 0, 0, .08));padding:5px;position:fixed;top:44px;left:16px;min-width:200px;z-index:300}.shell-topbar-mobile__ns-item[_ngcontent-%COMP%]{appearance:none;background:transparent;border:none;margin:0;font:inherit;cursor:pointer;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;display:flex;align-items:center;width:100%;padding:8px 10px;border-radius:6px;font-family:Inter,sans-serif;font-size:12.5px;font-weight:500;color:var(--color-text, #1d1d1f);text-align:left;transition:background .1s ease}.shell-topbar-mobile__ns-item[_ngcontent-%COMP%]:hover{background:var(--color-bg-hover, rgba(0, 0, 0, .04))}.shell-topbar-mobile__ns-item--danger[_ngcontent-%COMP%]{color:var(--color-error, #a5140a)}.shell-topbar-mobile__ns-item--danger[_ngcontent-%COMP%]:hover{background:rgba(from var(--color-error, #ff453a) r g b/.08)}.shell-topbar-mobile__ns-item--active[_ngcontent-%COMP%]{background:color-mix(in srgb,var(--color-primary) 12%,transparent);color:var(--color-primary)}.shell-topbar-mobile__ns-item-name[_ngcontent-%COMP%]{flex:1;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.shell-topbar-mobile__avatar-wrap[_ngcontent-%COMP%]{position:relative;flex-shrink:0}.shell-topbar-mobile__avatar[_ngcontent-%COMP%]{font-family:Inter,sans-serif;font-size:13px;font-weight:700;line-height:1;width:32px;height:32px;border-radius:8px;border:none;background:var(--color-primary, #016b71);color:#fff;display:grid;place-items:center;cursor:pointer;-webkit-user-select:none;user-select:none;transition:background .14s ease}.shell-topbar-mobile__avatar[_ngcontent-%COMP%]:hover{background:var(--color-primary-hover, #015a5f)}@media(max-width:900px){[_nghost-%COMP%]{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:0 16px;min-height:44px;border-bottom:1px solid var(--color-border);background:var(--color-bg);flex-shrink:0;position:relative}}"],changeDetection:0})};var Wo=(o,t)=>t.id;function Uo(o,t){if(o&1){let e=x();R(0,"div",9),ae("click",function(){let i=p(e).$implicit,a=c(2);return _(a.caseSelected.emit(i.id??""))})("keyup.enter",function(){let i=p(e).$implicit,a=c(2);return _(a.caseSelected.emit(i.id??""))}),Ue(1,"span",1),R(2,"span",2),d(3),N(),R(4,"span",3),d(5),N()()}if(o&2){let e=t.$implicit,n=c(2);l(),_e("shell-case-switcher__dot--"+n.deriveMobileStatus(e.status)),l(2),v(e.title??e.id),l(2),v(e.status.toLowerCase())}}function Ho(o,t){if(o&1){let e=x();R(0,"div",5)(1,"div",6),ae("click",function(){p(e);let i=c();return _(i.createRequested.emit())})("keyup.enter",function(){p(e);let i=c();return _(i.createRequested.emit())}),R(2,"span",7),d(3,"+"),N(),R(4,"span",2),d(5,"New case"),N()(),P(6,Uo,6,4,"div",8,Wo),N()}if(o&2){let e=c();l(6),O(e.otherCases())}}var We=class o{cases=u.required();activeCaseId=u.required();open=u.required();activeCase=w(()=>{let t=this.activeCaseId();return t?this.cases().find(e=>e.id===t)??null:null});activeCaseTitle=w(()=>this.activeCase()?.title??this.activeCaseId()??"New case");activeCaseStatus=w(()=>this.deriveMobileStatus(this.activeCase()?.status));activeCaseStatusLabel=w(()=>this.activeCase()?.status?.toLowerCase()??"");otherCases=w(()=>this.cases().filter(t=>t.id!==this.activeCaseId()));caseSelected=f();createRequested=f();toggled=f();deriveMobileStatus(t){switch(t){case"RUNNING":return"run";case"KILLED":return"killed";case"ERROR":return"error";default:return"idle"}}static \u0275fac=function(e){return new(e||o)};static \u0275cmp=T({type:o,selectors:[["agentos-shell-case-switcher-mobile"]],inputs:{cases:[1,"cases"],activeCaseId:[1,"activeCaseId"],open:[1,"open"]},outputs:{caseSelected:"caseSelected",createRequested:"createRequested",toggled:"toggled"},decls:9,vars:5,consts:[["tabindex","0","role","button",1,"shell-case-switcher__trigger",3,"click","keyup.enter"],[1,"shell-case-switcher__dot"],[1,"shell-case-switcher__title"],[1,"shell-case-switcher__status"],[1,"shell-case-switcher__chevron"],[1,"shell-case-switcher__list"],["tabindex","0","role","button",1,"shell-case-switcher__item","shell-case-switcher__item--new",3,"click","keyup.enter"],[1,"shell-case-switcher__new-icon"],["tabindex","0","role","button",1,"shell-case-switcher__item"],["tabindex","0","role","button",1,"shell-case-switcher__item",3,"click","keyup.enter"]],template:function(e,n){e&1&&(R(0,"div",0),ae("click",function(){return n.toggled.emit()})("keyup.enter",function(){return n.toggled.emit()}),Ue(1,"span",1),R(2,"span",2),d(3),N(),R(4,"span",3),d(5),N(),R(6,"span",4),d(7,"\u2304"),N()(),g(8,Ho,8,0,"div",5)),e&2&&(l(),_e("shell-case-switcher__dot--"+n.activeCaseStatus()),l(2),v(n.activeCaseTitle()),l(2),v(n.activeCaseStatusLabel()),l(3),h(n.open()?8:-1))},styles:["[_nghost-%COMP%]{display:none}.shell-case-switcher__trigger[_ngcontent-%COMP%]{display:flex;align-items:center;gap:7px;padding:10px 16px;min-height:44px;cursor:pointer;-webkit-user-select:none;user-select:none}.shell-case-switcher__trigger[_ngcontent-%COMP%]:hover{background:var(--color-bg-hover)}.shell-case-switcher__title[_ngcontent-%COMP%]{font-family:Inter,sans-serif;font-size:12.5px;font-weight:500;line-height:1.4;color:var(--color-text, #1d1d1f);font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1;min-width:0}.shell-case-switcher__status[_ngcontent-%COMP%]{font:inherit;font-size:.6875rem;color:var(--color-text-secondary);flex:none}.shell-case-switcher__chevron[_ngcontent-%COMP%]{color:var(--color-text-secondary);font-size:9px;flex:none}.shell-case-switcher__list[_ngcontent-%COMP%]{display:flex;flex-direction:column;border-top:1px solid var(--color-border-light);max-height:60vh;overflow-y:auto}.shell-case-switcher__item[_ngcontent-%COMP%]{display:flex;align-items:center;gap:7px;padding:0 16px;height:44px;flex-shrink:0;cursor:pointer}.shell-case-switcher__item[_ngcontent-%COMP%] .shell-case-switcher__title[_ngcontent-%COMP%]{font-weight:500;color:var(--color-text-secondary)}.shell-case-switcher__item[_ngcontent-%COMP%]:hover{background:var(--color-bg-hover)}.shell-case-switcher__item--new[_ngcontent-%COMP%]{border-bottom:1px solid var(--color-border, rgba(0, 0, 0, .08))}.shell-case-switcher__item--new[_ngcontent-%COMP%] .shell-case-switcher__title[_ngcontent-%COMP%]{font-weight:600;color:var(--color-primary, #016b71)}.shell-case-switcher__new-icon[_ngcontent-%COMP%]{width:6px;height:6px;display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:300;color:var(--color-primary, #016b71);flex:none}.shell-case-switcher__dot[_ngcontent-%COMP%]{width:6px;height:6px;border-radius:50%;flex:none}.shell-case-switcher__dot--run[_ngcontent-%COMP%]{background:var(--color-success)}.shell-case-switcher__dot--idle[_ngcontent-%COMP%]{background:var(--color-border)}.shell-case-switcher__dot--killed[_ngcontent-%COMP%], .shell-case-switcher__dot--error[_ngcontent-%COMP%]{background:var(--color-error)}@media(max-width:900px){[_nghost-%COMP%]{display:flex;flex-direction:column;border-bottom:1px solid var(--color-border, rgba(0, 0, 0, .08));background:var(--color-bg, #fff);flex-shrink:0}}"],changeDetection:0})};function Bo(o,t){if(o&1){let e=x();r(0,"div",8),m("mousedown",function(i){p(e);let a=c();return _(a.onResizeStart(i))}),s()}}function jo(o,t){if(o&1){let e=x();r(0,"button",9),m("click",function(){p(e);let i=c();return _(i.expandSidebar())}),r(1,"span",10),d(2,"menu"),s()()}}function Qo(o,t){if(o&1&&I(0,"agentos-case-chat",7),o&2){let e=c();b("showTechnicalOverride",e.showTechnical())}}function Yo(o,t){o&1&&I(0,"agentos-case-home")}var Ft=class o{router=E(Me);route=E(J);caseController=E(Te);namespaceController=E(mt);themePort=E(bt);userState=E(vt);destroyRef=E(Y);isAdmin=w(()=>this.userState.currentUser()?.isAdmin===!0);userInitials=w(()=>{let t=this.userState.currentUser();if(!t)return"";let e=t.firstname?.[0]??"",n=t.lastname?.[0]??"";return(e+n).toUpperCase()||t.email?.[0]?.toUpperCase()||""});isDark=w(()=>{let t=this.themePort.theme();return t==="dark"?!0:t==="light"?!1:typeof document<"u"&&document.documentElement.hasAttribute("data-theme")});sidebarWidth=M(Number(localStorage.getItem("agentos.sidebar.width"))||300);menuOpen=M(!1);nsMenuOpen=M(!1);sidebarOpen=M(localStorage.getItem("agentos.sidebar.open")!=="false");mobileSwitcherOpen=M(!1);showTechnical=M(!1);showNsPicker=w(()=>this.isAdmin()||this.namespaces().length>1);namespaceId$=this.route.queryParams.pipe(W(t=>t.ns??null));_namespaceIdRaw=ee(this.namespaceId$);namespaceId=w(()=>this._namespaceIdRaw()??null);_activeCaseIdRaw=ee(this.route.queryParams.pipe(W(t=>t.case??null)));activeCaseId=w(()=>this._activeCaseIdRaw()??null);refresh$=new de(void 0);cases$=this.namespaceId$.pipe(U(t=>t?this.refresh$.pipe(U(()=>this.caseController.listByParentCase(t))):[[]]));cases=ee(this.cases$,{initialValue:[]});namespaces=ee(this.namespaceController.listAllNamespace(),{initialValue:[]});selectedNamespace=M(null);constructor(){this.userState.currentUser()||this.userState.loadMe().pipe(A(this.destroyRef)).subscribe(),pt(this.sidebarWidth).pipe(Ke(1),oe(300),A(this.destroyRef)).subscribe(t=>localStorage.setItem("agentos.sidebar.width",String(t))),G(()=>{let t=this.namespaces(),e=this.namespaceId();if(t.length)if(e){let n=t.find(i=>i.id===e);this.selectedNamespace.set(n??t[0]??null)}else{let n=t[0];n?.id&&this.router.navigate(["/agentos/home"],{queryParams:{ns:n.id},replaceUrl:!0})}})}onNamespaceSelected(t){this.selectedNamespace.set(t),this.nsMenuOpen.set(!1),this.router.navigate(["/agentos/home"],{queryParams:{ns:t.id}})}toggleNsMenu(t){t?.stopPropagation(),t?.preventDefault(),this.nsMenuOpen.update(e=>!e)}closeNsMenu(t){t.stopPropagation(),this.nsMenuOpen.set(!1)}onCaseSelected(t){this.router.navigate(["/agentos/home"],{queryParams:{ns:this.namespaceId(),case:t}})}onCreateRequested(){this.router.navigate(["/agentos/home"],{queryParams:{ns:this.namespaceId()}})}navigateHome(){this.router.navigate(["/agentos/home"])}collapseSidebar(){this.sidebarOpen.set(!1),localStorage.setItem("agentos.sidebar.open","false")}expandSidebar(){this.sidebarOpen.set(!0),localStorage.setItem("agentos.sidebar.open","true")}onMenuNavigate(t){this.menuOpen.set(!1),this.router.navigate([t])}toggleMenu(t){t?.stopPropagation(),t?.preventDefault(),this.menuOpen.update(e=>!e)}closeMenu(t){t.stopPropagation(),this.menuOpen.set(!1)}onMenuToggleTheme(){this.menuOpen.set(!1);let t=this.isDark()?"light":"dark";this.themePort.setTheme(t)}onMenuToggleLogs(){this.menuOpen.set(!1),this.showTechnical.update(t=>!t)}toggleMobileSwitcher(){this.mobileSwitcherOpen.update(t=>!t)}onMobileCaseSelect(t){this.mobileSwitcherOpen.set(!1),this.onCaseSelected(t)}onMobileCreateCase(){this.mobileSwitcherOpen.set(!1),this.onCreateRequested()}onResizeStart(t){t.preventDefault();let e=t.clientX,n=this.sidebarWidth(),i=S=>{let C=S.clientX-e,y=Math.max(200,Math.min(500,n+C));this.sidebarWidth.set(y)},a=()=>{document.removeEventListener("mousemove",i),document.removeEventListener("mouseup",a)};document.addEventListener("mousemove",i),document.addEventListener("mouseup",a)}refreshCases(){this.refresh$.next()}static \u0275fac=function(e){return new(e||o)};static \u0275cmp=T({type:o,selectors:[["agentos-case-shell"]],decls:9,vars:27,consts:[[1,"case-shell"],[3,"homeClicked","namespaceSelected","nsMenuToggled","nsMenuClosed","menuToggled","menuClosed","navigateTo","themeToggled","logsToggled","selectedNamespace","namespaces","nsMenuOpen","userInitials","menuOpen","isAdmin","isDark","showTechnical"],[3,"caseSelected","createRequested","toggled","cases","activeCaseId","open"],[3,"collapseRequested","homeClicked","namespaceSelected","nsMenuToggled","nsMenuClosed","caseSelected","createRequested","menuToggled","menuClosed","navigateTo","themeToggled","logsToggled","sidebarWidth","sidebarOpen","selectedNamespace","namespaces","showNsPicker","nsMenuOpen","cases","activeCaseId","userInitials","menuOpen","isAdmin","isDark","showTechnical"],["role","separator","tabindex","-1","aria-label","Resize sidebar",1,"case-shell__resize-handle"],["type","button","title","Open sidebar",1,"case-shell__expand-btn"],[1,"case-shell__main"],[3,"showTechnicalOverride"],["role","separator","tabindex","-1","aria-label","Resize sidebar",1,"case-shell__resize-handle",3,"mousedown"],["type","button","title","Open sidebar",1,"case-shell__expand-btn",3,"click"],[1,"material-icons"]],template:function(e,n){e&1&&(r(0,"div",0)(1,"agentos-shell-topbar-mobile",1),m("homeClicked",function(){return n.navigateHome()})("namespaceSelected",function(a){return n.onNamespaceSelected(a)})("nsMenuToggled",function(a){return n.toggleNsMenu(a)})("nsMenuClosed",function(a){return n.closeNsMenu(a)})("menuToggled",function(a){return n.toggleMenu(a)})("menuClosed",function(a){return n.closeMenu(a)})("navigateTo",function(a){return n.onMenuNavigate(a)})("themeToggled",function(){return n.onMenuToggleTheme()})("logsToggled",function(){return n.onMenuToggleLogs()}),s(),r(2,"agentos-shell-case-switcher-mobile",2),m("caseSelected",function(a){return n.onMobileCaseSelect(a)})("createRequested",function(){return n.onMobileCreateCase()})("toggled",function(){return n.toggleMobileSwitcher()}),s(),r(3,"agentos-shell-sidebar",3),m("collapseRequested",function(){return n.collapseSidebar()})("homeClicked",function(){return n.navigateHome()})("namespaceSelected",function(a){return n.onNamespaceSelected(a)})("nsMenuToggled",function(){return n.toggleNsMenu()})("nsMenuClosed",function(a){return n.closeNsMenu(a)})("caseSelected",function(a){return n.onCaseSelected(a)})("createRequested",function(){return n.onCreateRequested()})("menuToggled",function(a){return n.toggleMenu(a)})("menuClosed",function(a){return n.closeMenu(a)})("navigateTo",function(a){return n.onMenuNavigate(a)})("themeToggled",function(){return n.onMenuToggleTheme()})("logsToggled",function(){return n.onMenuToggleLogs()}),s(),g(4,Bo,1,0,"div",4),g(5,jo,3,0,"button",5),r(6,"main",6),g(7,Qo,1,1,"agentos-case-chat",7)(8,Yo,1,0,"agentos-case-home"),s()()),e&2&&(l(),b("selectedNamespace",n.selectedNamespace())("namespaces",n.namespaces())("nsMenuOpen",n.nsMenuOpen())("userInitials",n.userInitials())("menuOpen",n.menuOpen())("isAdmin",n.isAdmin())("isDark",n.isDark())("showTechnical",n.showTechnical()),l(),b("cases",n.cases())("activeCaseId",n.activeCaseId())("open",n.mobileSwitcherOpen()),l(),b("sidebarWidth",n.sidebarWidth())("sidebarOpen",n.sidebarOpen())("selectedNamespace",n.selectedNamespace())("namespaces",n.namespaces())("showNsPicker",n.showNsPicker())("nsMenuOpen",n.nsMenuOpen())("cases",n.cases())("activeCaseId",n.activeCaseId())("userInitials",n.userInitials())("menuOpen",n.menuOpen())("isAdmin",n.isAdmin())("isDark",n.isDark())("showTechnical",n.showTechnical()),l(),h(n.sidebarOpen()?4:-1),l(),h(n.sidebarOpen()?-1:5),l(2),h(n.activeCaseId()?7:8))},dependencies:[qe,Ae,Le,$e,We],styles:["[_nghost-%COMP%]{display:flex;flex-direction:column;height:100dvh}.case-shell[_ngcontent-%COMP%]{display:flex;height:100%}.case-shell__resize-handle[_ngcontent-%COMP%]{width:4px;flex-shrink:0;cursor:col-resize;background:var(--color-border, rgba(0, 0, 0, .09));transition:background .15s;position:relative;z-index:10}.case-shell__resize-handle[_ngcontent-%COMP%]:hover, .case-shell__resize-handle[_ngcontent-%COMP%]:active{background:var(--color-primary, #016b71)}.case-shell__main[_ngcontent-%COMP%]{flex:1;min-width:0;min-height:0;display:flex;flex-direction:column;overflow:hidden}.case-shell__main[_ngcontent-%COMP%] > *[_ngcontent-%COMP%]{flex:1;min-height:0}@media(max-width:900px){.case-shell[_ngcontent-%COMP%]{flex-direction:column;overflow:hidden}.case-shell__resize-handle[_ngcontent-%COMP%]{display:none!important}.case-shell__main[_ngcontent-%COMP%]{flex:1;min-height:0;overflow:hidden}}.case-shell__expand-btn[_ngcontent-%COMP%]{position:fixed;top:14px;left:14px;z-index:200;width:28px;height:28px;display:flex;align-items:center;justify-content:center;border:none;border-radius:8px;background:transparent;cursor:pointer;color:var(--color-text-secondary, #968f85);transition:background .14s}.case-shell__expand-btn[_ngcontent-%COMP%] .material-icons[_ngcontent-%COMP%]{font-size:22px}.case-shell__expand-btn[_ngcontent-%COMP%]:hover{background:var(--color-surface-hover, rgba(0, 0, 0, .05));color:var(--color-text, #1b1916)}@media(max-width:900px){.case-shell__expand-btn[_ngcontent-%COMP%]{display:none}}"],changeDetection:0})};export{se as a,Wt as b,Mt as c,Et as d,Tt as e,kt as f,Ht as g,Bt as h,Pt as i,Ot as j,It as k,Re as l,te as m,Ne as n,Fe as o,Ve as p,qe as q,Ae as r,ze as s,Ft as t};
@@ -1 +1 @@
1
- import{a as k}from"./chunk-A34IERCN.js";import{c as T}from"./chunk-P4GNUQZT.js";import{r as D,x as L,y as E}from"./chunk-SOAR3OAC.js";import{a as U}from"./chunk-SKBT6DBT.js";import{Bb as w,Db as a,Fb as m,Ka as l,Pb as R,Tb as v,Ub as C,Wa as c,ab as I,ca as p,ga as y,ha as b,ic as M,lb as _,lc as S,ma as x,mb as g,oc as h,pc as q,rb as u,sb as s,tb as o}from"./chunk-5NLXR4MK.js";function O(i,e){if(i&1&&(s(0,"span",3),v(1),o()),i&2){let t=m();l(),C(t.subtitle)}}var f=class i{user=q.required();editRequested=h();deleteRequested=h();menuItems=[{key:"edit",label:"Edit user",icon:"edit"},{key:"delete",label:"Delete user",icon:"delete",variant:"danger"}];get displayName(){let{firstname:e,lastname:t,email:n}=this.user();return[e,t].filter(Boolean).join(" ")||n||"\u2014"}get subtitle(){return this.user().email??this.user().externalId??""}onMenuAction(e){switch(e){case"edit":this.editRequested.emit(this.user());break;case"delete":confirm(`Delete user "${this.displayName}"?`)&&this.deleteRequested.emit(this.user());break}}static \u0275fac=function(t){return new(t||i)};static \u0275cmp=c({type:i,selectors:[["agentos-user-item"]],inputs:{user:[1,"user"]},outputs:{editRequested:"editRequested",deleteRequested:"deleteRequested"},decls:7,vars:3,consts:[["role","listitem",1,"user-item"],[1,"user-item__body"],[1,"user-item__name"],[1,"user-item__subtitle"],[1,"user-item__actions"],[3,"itemSelected","items"]],template:function(t,n){t&1&&(s(0,"div",0)(1,"div",1)(2,"span",2),v(3),o(),_(4,O,2,1,"span",3),o(),s(5,"div",4)(6,"ds-kebab-menu",5),a("itemSelected",function(d){return n.onMenuAction(d)}),o()()()),t&2&&(l(3),C(n.displayName),l(),g(n.subtitle?4:-1),l(2),u("items",n.menuItems))},dependencies:[E],styles:[".user-item[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.5rem;width:100%;padding:1rem 1.25rem;background:var(--color-bg-secondary, rgba(255, 255, 255, .7));border:1px solid var(--color-border, rgba(0, 0, 0, .1));border-radius:12px;box-sizing:border-box;overflow:hidden;position:relative}.user-item__body[_ngcontent-%COMP%]{flex:1;min-width:0;display:flex;flex-direction:column;gap:.25rem}.user-item__name[_ngcontent-%COMP%]{font-size:.9375rem;font-weight:600;color:var(--color-text, #1d1d1f);line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.user-item__subtitle[_ngcontent-%COMP%]{font-size:.8125rem;color:var(--color-text-secondary, #6e6e73);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.user-item__actions[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.25rem;flex-shrink:0}"],changeDetection:0})};function P(i,e){if(i&1){let t=w();s(0,"agentos-user-item",4),a("editRequested",function(r){y(t);let d=m(2);return b(d.navigateToEdit(r))})("deleteRequested",function(r){y(t);let d=m(2);return b(d.deleteUser(r))}),o()}i&2&&u("user",e)}function V(i,e){if(i&1&&_(0,P,1,1,"agentos-user-item",3),i&2){let t,n=e.$implicit,r=m();g((t=r.resolveUser(n.id))?0:-1,t)}}var A=class i{router=p(T);destroyRef=p(x);userAdminState=p(k);isLoading=this.userAdminState.isLoading;userItems=S(()=>this.userAdminState.users().map(e=>({id:e.id??"",name:[e.firstname,e.lastname].filter(Boolean).join(" ")||e.email||"\u2014",description:e.email})));get usersById(){return new Map(this.userAdminState.users().map(e=>[e.id??"",e]))}ngOnInit(){this.userAdminState.loadAll().pipe(U(this.destroyRef)).subscribe()}goBack(){this.router.navigate(["/agentos","admin"])}navigateToCreate(){this.router.navigate(["/agentos/admin/users/new"])}navigateToEdit(e){this.router.navigate(["/agentos/admin/users",e.id??"","edit"])}deleteUser(e){this.userAdminState.deleteUser(e.id??"").pipe(U(this.destroyRef)).subscribe()}resolveUser(e){return this.usersById.get(e)??null}static \u0275fac=function(t){return new(t||i)};static \u0275cmp=c({type:i,selectors:[["agentos-user-list"]],decls:4,vars:3,consts:[["userItemTpl",""],["title","Users","emptyMessage","No users found.","cardMinWidth","320px",3,"createRequested","items","showCreate","itemTemplate"],["toolbar-start","","icon","arrow_back","title","Back",3,"action"],[3,"user"],[3,"editRequested","deleteRequested","user"]],template:function(t,n){if(t&1&&(s(0,"ds-entity-list",1),a("createRequested",function(){return n.navigateToCreate()}),s(1,"ds-icon-button",2),a("action",function(){return n.goBack()}),o()(),I(2,V,1,1,"ng-template",null,0,M)),t&2){let r=R(3);u("items",n.userItems())("showCreate",!0)("itemTemplate",r)}},dependencies:[L,f,D],encapsulation:2,changeDetection:0})};export{f as a,A as b};
1
+ import{a as k}from"./chunk-A34IERCN.js";import{c as T}from"./chunk-P4GNUQZT.js";import{r as D,x as L,y as E}from"./chunk-K7JRH3HO.js";import{a as U}from"./chunk-SKBT6DBT.js";import{Bb as w,Db as a,Fb as m,Ka as l,Pb as R,Tb as v,Ub as C,Wa as c,ab as I,ca as p,ga as y,ha as b,ic as M,lb as _,lc as S,ma as x,mb as g,oc as h,pc as q,rb as u,sb as s,tb as o}from"./chunk-5NLXR4MK.js";function O(i,e){if(i&1&&(s(0,"span",3),v(1),o()),i&2){let t=m();l(),C(t.subtitle)}}var f=class i{user=q.required();editRequested=h();deleteRequested=h();menuItems=[{key:"edit",label:"Edit user",icon:"edit"},{key:"delete",label:"Delete user",icon:"delete",variant:"danger"}];get displayName(){let{firstname:e,lastname:t,email:n}=this.user();return[e,t].filter(Boolean).join(" ")||n||"\u2014"}get subtitle(){return this.user().email??this.user().externalId??""}onMenuAction(e){switch(e){case"edit":this.editRequested.emit(this.user());break;case"delete":confirm(`Delete user "${this.displayName}"?`)&&this.deleteRequested.emit(this.user());break}}static \u0275fac=function(t){return new(t||i)};static \u0275cmp=c({type:i,selectors:[["agentos-user-item"]],inputs:{user:[1,"user"]},outputs:{editRequested:"editRequested",deleteRequested:"deleteRequested"},decls:7,vars:3,consts:[["role","listitem",1,"user-item"],[1,"user-item__body"],[1,"user-item__name"],[1,"user-item__subtitle"],[1,"user-item__actions"],[3,"itemSelected","items"]],template:function(t,n){t&1&&(s(0,"div",0)(1,"div",1)(2,"span",2),v(3),o(),_(4,O,2,1,"span",3),o(),s(5,"div",4)(6,"ds-kebab-menu",5),a("itemSelected",function(d){return n.onMenuAction(d)}),o()()()),t&2&&(l(3),C(n.displayName),l(),g(n.subtitle?4:-1),l(2),u("items",n.menuItems))},dependencies:[E],styles:[".user-item[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.5rem;width:100%;padding:1rem 1.25rem;background:var(--color-bg-secondary, rgba(255, 255, 255, .7));border:1px solid var(--color-border, rgba(0, 0, 0, .1));border-radius:12px;box-sizing:border-box;overflow:hidden;position:relative}.user-item__body[_ngcontent-%COMP%]{flex:1;min-width:0;display:flex;flex-direction:column;gap:.25rem}.user-item__name[_ngcontent-%COMP%]{font-size:.9375rem;font-weight:600;color:var(--color-text, #1d1d1f);line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.user-item__subtitle[_ngcontent-%COMP%]{font-size:.8125rem;color:var(--color-text-secondary, #6e6e73);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.user-item__actions[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.25rem;flex-shrink:0}"],changeDetection:0})};function P(i,e){if(i&1){let t=w();s(0,"agentos-user-item",4),a("editRequested",function(r){y(t);let d=m(2);return b(d.navigateToEdit(r))})("deleteRequested",function(r){y(t);let d=m(2);return b(d.deleteUser(r))}),o()}i&2&&u("user",e)}function V(i,e){if(i&1&&_(0,P,1,1,"agentos-user-item",3),i&2){let t,n=e.$implicit,r=m();g((t=r.resolveUser(n.id))?0:-1,t)}}var A=class i{router=p(T);destroyRef=p(x);userAdminState=p(k);isLoading=this.userAdminState.isLoading;userItems=S(()=>this.userAdminState.users().map(e=>({id:e.id??"",name:[e.firstname,e.lastname].filter(Boolean).join(" ")||e.email||"\u2014",description:e.email})));get usersById(){return new Map(this.userAdminState.users().map(e=>[e.id??"",e]))}ngOnInit(){this.userAdminState.loadAll().pipe(U(this.destroyRef)).subscribe()}goBack(){this.router.navigate(["/agentos","admin"])}navigateToCreate(){this.router.navigate(["/agentos/admin/users/new"])}navigateToEdit(e){this.router.navigate(["/agentos/admin/users",e.id??"","edit"])}deleteUser(e){this.userAdminState.deleteUser(e.id??"").pipe(U(this.destroyRef)).subscribe()}resolveUser(e){return this.usersById.get(e)??null}static \u0275fac=function(t){return new(t||i)};static \u0275cmp=c({type:i,selectors:[["agentos-user-list"]],decls:4,vars:3,consts:[["userItemTpl",""],["title","Users","emptyMessage","No users found.","cardMinWidth","320px",3,"createRequested","items","showCreate","itemTemplate"],["toolbar-start","","icon","arrow_back","title","Back",3,"action"],[3,"user"],[3,"editRequested","deleteRequested","user"]],template:function(t,n){if(t&1&&(s(0,"ds-entity-list",1),a("createRequested",function(){return n.navigateToCreate()}),s(1,"ds-icon-button",2),a("action",function(){return n.goBack()}),o()(),I(2,V,1,1,"ng-template",null,0,M)),t&2){let r=R(3);u("items",n.userItems())("showCreate",!0)("itemTemplate",r)}},dependencies:[L,f,D],encapsulation:2,changeDetection:0})};export{f as a,A as b};
@@ -1 +1 @@
1
- import{c as P}from"./chunk-P4GNUQZT.js";import{r as w,y as D}from"./chunk-SOAR3OAC.js";import{Bb as f,Db as c,Fb as a,Ka as p,Rb as h,Tb as _,Ub as b,Wa as y,ca as C,ga as d,ha as s,lb as g,mb as u,oc as M,pc as l,rb as x,sb as i,ta as v,tb as n}from"./chunk-5NLXR4MK.js";function k(t,r){if(t&1&&(i(0,"span",3),_(1),n()),t&2){let e=a();p(),b(e.prompt().description)}}function S(t,r){if(t&1){let e=f();i(0,"span",6),_(1,"Delete?"),n(),i(2,"ds-icon-button",7),c("action",function(){d(e);let m=a();return s(m.onDeleteConfirmed())}),n(),i(3,"ds-icon-button",8),c("action",function(){d(e);let m=a();return s(m.onDeleteCancelled())}),n()}}function E(t,r){if(t&1){let e=f();i(0,"ds-kebab-menu",9),c("itemSelected",function(m){d(e);let O=a();return s(O.onMenuAction(m))}),n()}if(t&2){let e=a();x("items",e.menuItems)}}var I=class t{router=C(P);prompt=l.required();namespaceId=l(void 0);platformMode=l(!1);readOnly=l(!1);deleteRequested=M();pendingDelete=v(!1);menuItems=[{key:"edit",label:"Edit prompt",icon:"edit"},{key:"delete",label:"Delete prompt",icon:"delete",variant:"danger"}];onMenuAction(r){switch(r){case"edit":this.platformMode()?this.router.navigate(["/agentos","admin","prompts",this.prompt().id,"edit"]):this.router.navigate(["/agentos",this.namespaceId(),"prompts",this.prompt().id,"edit"]);break;case"delete":this.pendingDelete.set(!0);break}}onDeleteConfirmed(){this.pendingDelete.set(!1),this.deleteRequested.emit(this.prompt())}onDeleteCancelled(){this.pendingDelete.set(!1)}static \u0275fac=function(e){return new(e||t)};static \u0275cmp=y({type:t,selectors:[["agentos-prompt-item"]],inputs:{prompt:[1,"prompt"],namespaceId:[1,"namespaceId"],platformMode:[1,"platformMode"],readOnly:[1,"readOnly"]},outputs:{deleteRequested:"deleteRequested"},decls:8,vars:5,consts:[["role","listitem",1,"prompt-item"],[1,"prompt-item__body"],[1,"prompt-item__name"],[1,"prompt-item__description"],[1,"prompt-item__actions"],[3,"items"],[1,"prompt-item__confirm-label"],["icon","check","variant","danger","title","Confirm deletion",3,"action"],["icon","close","title","Cancel deletion",3,"action"],[3,"itemSelected","items"]],template:function(e,o){e&1&&(i(0,"div",0)(1,"div",1)(2,"span",2),_(3),n(),g(4,k,2,1,"span",3),n(),i(5,"div",4),g(6,S,4,0)(7,E,1,1,"ds-kebab-menu",5),n()()),e&2&&(h("prompt-item--pending-delete",o.pendingDelete()),p(3),b(o.prompt().name),p(),u(o.prompt().description?4:-1),p(2),u(o.pendingDelete()?6:o.readOnly()?-1:7))},dependencies:[D,w],styles:[".prompt-item[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.5rem;padding:.75rem 1rem;border-radius:10px;border:1px solid var(--color-border, rgba(0, 0, 0, .08));background:var(--glass-bg, rgba(255, 255, 255, .72));-webkit-backdrop-filter:var(--glass-backdrop-blur, blur(20px));backdrop-filter:var(--glass-backdrop-blur, blur(20px));transition:background .15s ease,border-color .15s ease}.prompt-item[_ngcontent-%COMP%]:hover{background:var(--color-bg-hover, rgba(0, 0, 0, .04));border-color:var(--color-primary, #007aff)}.prompt-item__body[_ngcontent-%COMP%]{flex:1;display:flex;flex-direction:column;gap:.2rem;min-width:0}.prompt-item__name[_ngcontent-%COMP%]{font-size:.95rem;font-weight:500;color:var(--color-text, #1d1d1f);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.prompt-item__description[_ngcontent-%COMP%]{font-size:.75rem;color:var(--color-text-secondary, #6e6e73);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.prompt-item__actions[_ngcontent-%COMP%]{flex-shrink:0;display:flex;align-items:center;gap:.125rem;opacity:0;transition:opacity .15s ease}.prompt-item[_ngcontent-%COMP%]:hover .prompt-item__actions[_ngcontent-%COMP%], .prompt-item[_ngcontent-%COMP%]:focus-within .prompt-item__actions[_ngcontent-%COMP%], .prompt-item--pending-delete[_ngcontent-%COMP%] .prompt-item__actions[_ngcontent-%COMP%]{opacity:1}.prompt-item__confirm-label[_ngcontent-%COMP%]{font-size:.8rem;font-weight:500;color:var(--color-error, #ff3b30);margin-right:.25rem;white-space:nowrap}"],changeDetection:0})};export{I as a};
1
+ import{c as P}from"./chunk-P4GNUQZT.js";import{r as w,y as D}from"./chunk-K7JRH3HO.js";import{Bb as f,Db as c,Fb as a,Ka as p,Rb as h,Tb as _,Ub as b,Wa as y,ca as C,ga as d,ha as s,lb as g,mb as u,oc as M,pc as l,rb as x,sb as i,ta as v,tb as n}from"./chunk-5NLXR4MK.js";function k(t,r){if(t&1&&(i(0,"span",3),_(1),n()),t&2){let e=a();p(),b(e.prompt().description)}}function S(t,r){if(t&1){let e=f();i(0,"span",6),_(1,"Delete?"),n(),i(2,"ds-icon-button",7),c("action",function(){d(e);let m=a();return s(m.onDeleteConfirmed())}),n(),i(3,"ds-icon-button",8),c("action",function(){d(e);let m=a();return s(m.onDeleteCancelled())}),n()}}function E(t,r){if(t&1){let e=f();i(0,"ds-kebab-menu",9),c("itemSelected",function(m){d(e);let O=a();return s(O.onMenuAction(m))}),n()}if(t&2){let e=a();x("items",e.menuItems)}}var I=class t{router=C(P);prompt=l.required();namespaceId=l(void 0);platformMode=l(!1);readOnly=l(!1);deleteRequested=M();pendingDelete=v(!1);menuItems=[{key:"edit",label:"Edit prompt",icon:"edit"},{key:"delete",label:"Delete prompt",icon:"delete",variant:"danger"}];onMenuAction(r){switch(r){case"edit":this.platformMode()?this.router.navigate(["/agentos","admin","prompts",this.prompt().id,"edit"]):this.router.navigate(["/agentos",this.namespaceId(),"prompts",this.prompt().id,"edit"]);break;case"delete":this.pendingDelete.set(!0);break}}onDeleteConfirmed(){this.pendingDelete.set(!1),this.deleteRequested.emit(this.prompt())}onDeleteCancelled(){this.pendingDelete.set(!1)}static \u0275fac=function(e){return new(e||t)};static \u0275cmp=y({type:t,selectors:[["agentos-prompt-item"]],inputs:{prompt:[1,"prompt"],namespaceId:[1,"namespaceId"],platformMode:[1,"platformMode"],readOnly:[1,"readOnly"]},outputs:{deleteRequested:"deleteRequested"},decls:8,vars:5,consts:[["role","listitem",1,"prompt-item"],[1,"prompt-item__body"],[1,"prompt-item__name"],[1,"prompt-item__description"],[1,"prompt-item__actions"],[3,"items"],[1,"prompt-item__confirm-label"],["icon","check","variant","danger","title","Confirm deletion",3,"action"],["icon","close","title","Cancel deletion",3,"action"],[3,"itemSelected","items"]],template:function(e,o){e&1&&(i(0,"div",0)(1,"div",1)(2,"span",2),_(3),n(),g(4,k,2,1,"span",3),n(),i(5,"div",4),g(6,S,4,0)(7,E,1,1,"ds-kebab-menu",5),n()()),e&2&&(h("prompt-item--pending-delete",o.pendingDelete()),p(3),b(o.prompt().name),p(),u(o.prompt().description?4:-1),p(2),u(o.pendingDelete()?6:o.readOnly()?-1:7))},dependencies:[D,w],styles:[".prompt-item[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.5rem;padding:.75rem 1rem;border-radius:10px;border:1px solid var(--color-border, rgba(0, 0, 0, .08));background:var(--glass-bg, rgba(255, 255, 255, .72));-webkit-backdrop-filter:var(--glass-backdrop-blur, blur(20px));backdrop-filter:var(--glass-backdrop-blur, blur(20px));transition:background .15s ease,border-color .15s ease}.prompt-item[_ngcontent-%COMP%]:hover{background:var(--color-bg-hover, rgba(0, 0, 0, .04));border-color:var(--color-primary, #007aff)}.prompt-item__body[_ngcontent-%COMP%]{flex:1;display:flex;flex-direction:column;gap:.2rem;min-width:0}.prompt-item__name[_ngcontent-%COMP%]{font-size:.95rem;font-weight:500;color:var(--color-text, #1d1d1f);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.prompt-item__description[_ngcontent-%COMP%]{font-size:.75rem;color:var(--color-text-secondary, #6e6e73);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.prompt-item__actions[_ngcontent-%COMP%]{flex-shrink:0;display:flex;align-items:center;gap:.125rem;opacity:0;transition:opacity .15s ease}.prompt-item[_ngcontent-%COMP%]:hover .prompt-item__actions[_ngcontent-%COMP%], .prompt-item[_ngcontent-%COMP%]:focus-within .prompt-item__actions[_ngcontent-%COMP%], .prompt-item--pending-delete[_ngcontent-%COMP%] .prompt-item__actions[_ngcontent-%COMP%]{opacity:1}.prompt-item__confirm-label[_ngcontent-%COMP%]{font-size:.8rem;font-weight:500;color:var(--color-error, #ff3b30);margin-right:.25rem;white-space:nowrap}"],changeDetection:0})};export{I as a};
@@ -1 +1 @@
1
- import{a as S}from"./chunk-XSG2UKSS.js";import{c as $,d as k}from"./chunk-W7ZS65Y4.js";import{c as B}from"./chunk-P4GNUQZT.js";import{r as E,x as D}from"./chunk-SOAR3OAC.js";import"./chunk-EBAEYY2S.js";import"./chunk-BZ7URUNM.js";import{a as f}from"./chunk-SKBT6DBT.js";import"./chunk-GF3EMWCA.js";import"./chunk-Z6RFJ6L3.js";import"./chunk-OPSHMM4H.js";import{Bb as P,Db as l,Fb as d,Jc as q,Pb as I,S as y,Wa as C,ab as A,bc as w,ca as n,ec as R,fc as x,ga as m,ha as p,i as u,ic as T,lb as b,ma as g,mb as h,rb as c,sb as a,t as M,tb as _,u as v}from"./chunk-5NLXR4MK.js";var N=()=>[];function V(r,t){if(r&1){let o=P();a(0,"agentos-ai-model-item",4),l("editRequested",function(e){m(o);let s=d(2);return p(s.onEdit(e))})("deleteRequested",function(e){m(o);let s=d(2);return p(s.deleteModel(e))}),_()}r&2&&c("model",t)}function F(r,t){if(r&1&&b(0,V,1,1,"agentos-ai-model-item",3),r&2){let o,i=t.$implicit,e=d();h((o=e.resolveModel(i.id))?0:-1,o)}}var L=class r{router=n(B);destroyRef=n(g);aiModelController=n($);aiProviderController=n(k);refresh$=new u(void 0);data$=this.refresh$.pipe(y(()=>v([this.aiModelController.listPlatformLevelAiModel(),this.aiProviderController.listAiProvider("none")])));modelItems$=this.data$.pipe(M(([t,o])=>{let i=new Map(o.map(e=>[e.id??"",e.name]));return t.map(e=>({id:e.id??"",name:e.alias??e.apiModelName,description:e.apiModelName,groupKey:e.aiProviderId,groupLabel:i.get(e.aiProviderId)??e.aiProviderId}))}));modelsById=new Map;constructor(){this.data$.pipe(f(this.destroyRef)).subscribe(([t])=>{this.modelsById=new Map(t.map(o=>[o.id??"",o]))})}goBack(){this.router.navigate(["/agentos","admin"])}openCreateForm(){this.router.navigate(["/agentos","admin","ai-models","new"])}deleteModel(t){this.aiModelController.deleteAiModel(t.id??"").pipe(f(this.destroyRef)).subscribe(()=>this.refresh$.next())}onEdit(t){t.id&&this.router.navigate(["/agentos","admin","ai-models",t.id,"edit"])}resolveModel(t){return this.modelsById.get(t)??null}static \u0275fac=function(o){return new(o||r)};static \u0275cmp=C({type:r,selectors:[["agentos-platform-ai-models"]],decls:5,vars:6,consts:[["aiModelItemTpl",""],["title","Platform AI Models","emptyMessage","No platform AI models defined yet. Add one above.","cardMinWidth","400px",3,"createRequested","items","showCreate","itemTemplate"],["toolbar-start","","icon","arrow_back","title","Back",3,"action"],[3,"model"],[3,"editRequested","deleteRequested","model"]],template:function(o,i){if(o&1&&(a(0,"ds-entity-list",1),R(1,"async"),l("createRequested",function(){return i.openCreateForm()}),a(2,"ds-icon-button",2),l("action",function(){return i.goBack()}),_()(),A(3,F,1,1,"ng-template",null,0,T)),o&2){let e=I(4);c("items",x(1,3,i.modelItems$)??w(5,N))("showCreate",!0)("itemTemplate",e)}},dependencies:[D,S,E,q],styles:[".platform-ai-models__back[_ngcontent-%COMP%]{background:none;border:none;cursor:pointer;font-family:inherit;font-size:.875rem;color:var(--color-text-secondary, #6e6e73);padding:.25rem .5rem;border-radius:4px;transition:color .15s ease}.platform-ai-models__back[_ngcontent-%COMP%]:hover{color:var(--color-primary, #007aff)}"],changeDetection:0})};export{L as PlatformAiModelsComponent};
1
+ import{a as S}from"./chunk-DB2U5ZVV.js";import{c as $,d as k}from"./chunk-W7ZS65Y4.js";import{c as B}from"./chunk-P4GNUQZT.js";import{r as E,x as D}from"./chunk-K7JRH3HO.js";import"./chunk-EBAEYY2S.js";import"./chunk-BZ7URUNM.js";import{a as f}from"./chunk-SKBT6DBT.js";import"./chunk-GF3EMWCA.js";import"./chunk-Z6RFJ6L3.js";import"./chunk-OPSHMM4H.js";import{Bb as P,Db as l,Fb as d,Jc as q,Pb as I,S as y,Wa as C,ab as A,bc as w,ca as n,ec as R,fc as x,ga as m,ha as p,i as u,ic as T,lb as b,ma as g,mb as h,rb as c,sb as a,t as M,tb as _,u as v}from"./chunk-5NLXR4MK.js";var N=()=>[];function V(r,t){if(r&1){let o=P();a(0,"agentos-ai-model-item",4),l("editRequested",function(e){m(o);let s=d(2);return p(s.onEdit(e))})("deleteRequested",function(e){m(o);let s=d(2);return p(s.deleteModel(e))}),_()}r&2&&c("model",t)}function F(r,t){if(r&1&&b(0,V,1,1,"agentos-ai-model-item",3),r&2){let o,i=t.$implicit,e=d();h((o=e.resolveModel(i.id))?0:-1,o)}}var L=class r{router=n(B);destroyRef=n(g);aiModelController=n($);aiProviderController=n(k);refresh$=new u(void 0);data$=this.refresh$.pipe(y(()=>v([this.aiModelController.listPlatformLevelAiModel(),this.aiProviderController.listAiProvider("none")])));modelItems$=this.data$.pipe(M(([t,o])=>{let i=new Map(o.map(e=>[e.id??"",e.name]));return t.map(e=>({id:e.id??"",name:e.alias??e.apiModelName,description:e.apiModelName,groupKey:e.aiProviderId,groupLabel:i.get(e.aiProviderId)??e.aiProviderId}))}));modelsById=new Map;constructor(){this.data$.pipe(f(this.destroyRef)).subscribe(([t])=>{this.modelsById=new Map(t.map(o=>[o.id??"",o]))})}goBack(){this.router.navigate(["/agentos","admin"])}openCreateForm(){this.router.navigate(["/agentos","admin","ai-models","new"])}deleteModel(t){this.aiModelController.deleteAiModel(t.id??"").pipe(f(this.destroyRef)).subscribe(()=>this.refresh$.next())}onEdit(t){t.id&&this.router.navigate(["/agentos","admin","ai-models",t.id,"edit"])}resolveModel(t){return this.modelsById.get(t)??null}static \u0275fac=function(o){return new(o||r)};static \u0275cmp=C({type:r,selectors:[["agentos-platform-ai-models"]],decls:5,vars:6,consts:[["aiModelItemTpl",""],["title","Platform AI Models","emptyMessage","No platform AI models defined yet. Add one above.","cardMinWidth","400px",3,"createRequested","items","showCreate","itemTemplate"],["toolbar-start","","icon","arrow_back","title","Back",3,"action"],[3,"model"],[3,"editRequested","deleteRequested","model"]],template:function(o,i){if(o&1&&(a(0,"ds-entity-list",1),R(1,"async"),l("createRequested",function(){return i.openCreateForm()}),a(2,"ds-icon-button",2),l("action",function(){return i.goBack()}),_()(),A(3,F,1,1,"ng-template",null,0,T)),o&2){let e=I(4);c("items",x(1,3,i.modelItems$)??w(5,N))("showCreate",!0)("itemTemplate",e)}},dependencies:[D,S,E,q],styles:[".platform-ai-models__back[_ngcontent-%COMP%]{background:none;border:none;cursor:pointer;font-family:inherit;font-size:.875rem;color:var(--color-text-secondary, #6e6e73);padding:.25rem .5rem;border-radius:4px;transition:color .15s ease}.platform-ai-models__back[_ngcontent-%COMP%]:hover{color:var(--color-primary, #007aff)}"],changeDetection:0})};export{L as PlatformAiModelsComponent};
@@ -1 +1 @@
1
- import{b as me,c as le}from"./chunk-BZS55WHS.js";import{a as R}from"./chunk-V7NUXN3R.js";import{a as Oe,b as ke,c as z}from"./chunk-KD3BJ52V.js";import{a as he,b as be,g as Ce,h as fe,i as ye,j as we}from"./chunk-UDEMKCGK.js";import{a as de,b as pe,c as ge,d as ue,e as _e,v as Ee,w as Se,x as Fe}from"./chunk-SOAR3OAC.js";import"./chunk-EBAEYY2S.js";import{a as te,b as ne,d as oe,e as ie,f as re,g as ae,h as se}from"./chunk-C2XSJPYF.js";import"./chunk-BZ7URUNM.js";import"./chunk-SKBT6DBT.js";import{a as L,b as A}from"./chunk-GF3EMWCA.js";import{C as ve,E as B,b as Me,c as Pe,g as W,m as V,p as xe}from"./chunk-Z6RFJ6L3.js";import"./chunk-LN55MSDV.js";import{O as D,Q as ce,S as I}from"./chunk-OPSHMM4H.js";import{Bb as f,Db as d,Fb as l,Fc as $,Ka as c,Nc as ee,Pb as N,Rb as T,Tb as a,Ub as M,Vb as O,Wa as F,Yb as x,Zb as v,_b as y,ab as U,bc as J,ca as _,cc as Q,ga as g,ha as u,ic as X,lb as h,lc as Z,mb as b,nb as q,pb as H,qb as Y,rb as C,sb as n,ta as P,tb as o,yb as G,zb as K}from"./chunk-5NLXR4MK.js";function Re(s,i){if(s&1){let e=f();n(0,"div",9)(1,"mat-form-field",18)(2,"mat-label"),a(3),o(),n(4,"textarea",19),y("ngModelChange",function(r){let m=g(e).$index,E=l();return v(E.commands[m],r)||(E.commands[m]=r),u(r)}),o(),n(5,"mat-hint"),a(6,"Use placeholder for dynamic values"),o()(),n(7,"button",20),d("click",function(){let r=g(e).$index,m=l();return u(m.removeCommand(r))}),n(8,"mat-icon"),a(9,"delete"),o()()()}if(s&2){let e=i.$index,t=l();c(3),O("Prompt ",e+1),c(),x("ngModel",t.commands[e]),c(3),C("disabled",t.commands.length===1)}}function ze(s,i){if(s&1){let e=f();n(0,"div",10)(1,"h3"),a(2,"Save to"),o(),n(3,"div",21)(4,"label",22)(5,"input",23),y("ngModelChange",function(r){g(e);let m=l();return v(m.source,r)||(m.source=r),u(r)}),o(),n(6,"div",24)(7,"div",25)(8,"span",26),a(9,"\u{1F464}"),o(),n(10,"span",27),a(11,"Local"),o()(),n(12,"p",28),a(13,"Personal prompt in ~/.coday/... (not committed)"),o()()(),n(14,"label",22)(15,"input",29),y("ngModelChange",function(r){g(e);let m=l();return v(m.source,r)||(m.source=r),u(r)}),o(),n(16,"div",24)(17,"div",25)(18,"span",26),a(19,"\u{1F4E6}"),o(),n(20,"span",27),a(21,"Project"),o()(),n(22,"p",28),a(23,"Shared prompt in ./prompts/ (committable)"),o()()()(),n(24,"p",30),a(25,"Storage location is permanent and cannot be changed after creation"),o()()}if(s&2){let e=l();c(4),T("selected",e.source==="local"),c(),x("ngModel",e.source),c(9),T("selected",e.source==="project"),c(),x("ngModel",e.source)}}function Ue(s,i){if(s&1&&(n(0,"div",11)(1,"h3"),a(2,"Storage Location"),o(),n(3,"div",31)(4,"span",26),a(5),o(),n(6,"span",27),a(7),o()(),n(8,"p",30),a(9,"Cannot be changed after creation"),o()()),s&2){let e=l();c(3),T("badge-local",e.source==="local")("badge-project",e.source==="project"),c(2),M(e.source==="local"?"\u{1F464}":"\u{1F4E6}"),c(2),M(e.source==="local"?"Local":"Project")}}function Ne(s,i){if(s&1){let e=f();n(0,"div",12)(1,"label",32)(2,"input",33),y("ngModelChange",function(r){g(e);let m=l();return v(m.webhookEnabled,r)||(m.webhookEnabled=r),u(r)}),o(),n(3,"span"),a(4,"Enable webhook"),o()(),n(5,"p",30),a(6,"Enable webhook to trigger this prompt via HTTP POST"),o()()}if(s&2){let e=l();c(2),x("ngModel",e.webhookEnabled)}}function je(s,i){if(s&1){let e=f();n(0,"div",13)(1,"div",34)(2,"mat-icon",35),a(3,"link"),o(),n(4,"h4"),a(5,"Webhook URL"),o()(),n(6,"div",36)(7,"p",37),a(8),o(),n(9,"button",38),d("click",function(){g(e);let r=l();return u(r.copyWebhookUrl())}),n(10,"mat-icon"),a(11,"content_copy"),o(),n(12,"span"),a(13,"Copy URL"),o()()(),n(14,"p",30),a(15,"Use this URL to trigger the prompt via HTTP POST"),o()()}if(s&2){let e=l();c(8),M(e.getWebhookUrl())}}function qe(s,i){if(s&1&&(n(0,"div",14)(1,"mat-icon"),a(2,"error"),o(),n(3,"span"),a(4),o()()),s&2){let e=l();c(4),M(e.errorMessage)}}var k=class s{promptApi=_(R);dialogRef=_(te);configApi=_(z);snackBar=_(me);name="";description="";commands=[""];webhookEnabled=!1;threadLifetime="";source="local";isSaving=!1;errorMessage="";isAdmin=!1;isEditMode=!1;promptId="";data=_(ne);constructor(){this.isEditMode=this.data.mode==="edit"}ngOnInit(){this.configApi.getUserConfig().subscribe({next:i=>{this.isAdmin=i.groups?.includes("CODAY_ADMIN")??!1},error:i=>{console.error("[PROMPT_FORM] Error loading user config:",i),this.isAdmin=!1}}),this.isEditMode&&this.data.prompt&&(this.promptId=this.data.prompt.id,this.name=this.data.prompt.name,this.description=this.data.prompt.description,this.commands=[...this.data.prompt.commands],this.webhookEnabled=this.data.prompt.webhookEnabled,this.source=this.data.prompt.source)}addCommand(){this.commands.push("")}removeCommand(i){this.commands.length>1&&this.commands.splice(i,1)}trackByIndex(i){return i}normalizeName(){this.name=this.name.replace(/[\s_.,;:!?()[\]{}]+/g,"-").replace(/-+/g,"-").replace(/^-|-$/g,"").toLowerCase()}validateForm(){return this.name.trim()?this.description.trim()?this.commands.filter(e=>e.trim()).length===0?(this.errorMessage="At least one command is required",!1):!0:(this.errorMessage="Description is required",!1):(this.errorMessage="Name is required",!1)}save(){if(this.errorMessage="",!this.validateForm())return;let i=this.commands.filter(e=>e.trim());if(this.isSaving=!0,this.isEditMode&&this.data.prompt){let e={name:this.name.trim(),description:this.description.trim(),commands:i,webhookEnabled:this.webhookEnabled};this.promptApi.updatePrompt(this.data.prompt.id,e).subscribe({next:()=>{this.isSaving=!1,this.dialogRef.close(!0)},error:t=>{console.error("Error updating prompt:",t),this.errorMessage=t?.error?.error||t?.message||"Failed to update prompt",this.isSaving=!1}})}else{let e={name:this.name.trim(),description:this.description.trim(),commands:i,webhookEnabled:this.webhookEnabled,source:this.source};this.promptApi.createPrompt(e).subscribe({next:()=>{this.isSaving=!1,this.dialogRef.close(!0)},error:t=>{console.error("Error creating prompt:",t),this.errorMessage=t?.error?.error||t?.message||"Failed to create prompt",this.isSaving=!1}})}}cancel(){this.dialogRef.close(!1)}getWebhookUrl(){return`${window.location.origin}/api/webhooks/${this.promptId}/execute`}copyWebhookUrl(){if(!this.webhookEnabled){this.snackBar.open("Webhook is not enabled","Close",{duration:3e3});return}if(!this.promptId){this.snackBar.open("Prompt must be saved before getting webhook URL","Close",{duration:3e3});return}let i=this.getWebhookUrl();navigator.clipboard.writeText(i).then(()=>{this.snackBar.open("Webhook URL copied to clipboard!","Close",{duration:3e3})}).catch(e=>{console.error("Failed to copy webhook URL:",e),this.snackBar.open("Failed to copy URL","Close",{duration:3e3})})}static \u0275fac=function(e){return new(e||s)};static \u0275cmp=F({type:s,selectors:[["app-prompt-form"]],decls:36,vars:11,consts:[["mat-dialog-title",""],[1,"form-container"],["appearance","outline",1,"full-width"],["matInput","","placeholder","my-prompt","required","",3,"ngModelChange","blur","ngModel"],["matInput","","placeholder","What does this prompt do?","rows","3","required","",3,"ngModelChange","ngModel"],[1,"commands-section"],[1,"section-header"],["mat-icon-button","","type","button","title","Add command",3,"click"],[1,"commands-list"],[1,"command-item"],[1,"source-section"],[1,"source-display"],[1,"webhook-section"],[1,"webhook-url-section"],[1,"error-message"],["align","end"],["mat-button","",3,"click","disabled"],["mat-raised-button","","color","primary",3,"click","disabled"],["appearance","outline",1,"command-field"],["matInput","","placeholder","Enter command with placeholders like \\{\\{key\\}\\}","rows","2",3,"ngModelChange","ngModel"],["mat-icon-button","","type","button","title","Remove command",1,"remove-btn",3,"click","disabled"],[1,"source-options"],[1,"source-option"],["type","radio","name","source","value","local",3,"ngModelChange","ngModel"],[1,"source-content"],[1,"source-header"],[1,"source-icon"],[1,"source-label"],[1,"source-description"],["type","radio","name","source","value","project",3,"ngModelChange","ngModel"],[1,"hint"],[1,"source-badge"],[1,"checkbox-label"],["type","checkbox",3,"ngModelChange","ngModel"],[1,"webhook-url-header"],[1,"webhook-icon"],[1,"webhook-url-content"],[1,"url-text"],["mat-raised-button","","color","accent","type","button",3,"click"]],template:function(e,t){e&1&&(n(0,"h2",0),a(1),o(),n(2,"mat-dialog-content")(3,"div",1)(4,"mat-form-field",2)(5,"mat-label"),a(6,"Name"),o(),n(7,"input",3),y("ngModelChange",function(m){return v(t.name,m)||(t.name=m),m}),d("blur",function(){return t.normalizeName()}),o(),n(8,"mat-hint"),a(9,"A descriptive name (spaces and punctuation will be replaced with hyphens), will be used as command name"),o()(),n(10,"mat-form-field",2)(11,"mat-label"),a(12,"Description"),o(),n(13,"textarea",4),y("ngModelChange",function(m){return v(t.description,m)||(t.description=m),m}),o(),n(14,"mat-hint"),a(15,"Explain the purpose of this prompt, helps for searchability"),o()(),n(16,"div",5)(17,"div",6)(18,"h3"),a(19,"Prompts"),o(),n(20,"button",7),d("click",function(){return t.addCommand()}),n(21,"mat-icon"),a(22,"add"),o()()(),n(23,"div",8),H(24,Re,10,3,"div",9,q),o()(),h(26,ze,26,6,"div",10),h(27,Ue,10,6,"div",11),h(28,Ne,7,1,"div",12),h(29,je,16,1,"div",13),h(30,qe,5,1,"div",14),o()(),n(31,"mat-dialog-actions",15)(32,"button",16),d("click",function(){return t.cancel()}),a(33,"Cancel"),o(),n(34,"button",17),d("click",function(){return t.save()}),a(35),o()()),e&2&&(c(),M(t.isEditMode?"Edit Prompt":"Create Prompt"),c(6),x("ngModel",t.name),c(6),x("ngModel",t.description),c(11),Y(t.commands),c(2),b(t.isEditMode?-1:26),c(),b(t.isEditMode?27:-1),c(),b(t.isAdmin?28:-1),c(),b(t.isEditMode&&t.webhookEnabled&&t.isAdmin?29:-1),c(),b(t.errorMessage?30:-1),c(2),C("disabled",t.isSaving),c(2),C("disabled",t.isSaving),c(),O(" ",t.isSaving?"Saving...":"Save"," "))},dependencies:[ee,B,Pe,Me,xe,W,ve,V,se,ie,ae,re,I,ce,D,we,ye,Ce,he,be,fe,A,L,le],styles:[".form-container[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:1rem;padding:0;min-width:500px}@media(max-width:768px){.form-container[_ngcontent-%COMP%]{min-width:auto}}.full-width[_ngcontent-%COMP%]{width:100%}.commands-section[_ngcontent-%COMP%] .section-header[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem}.commands-section[_ngcontent-%COMP%] .section-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%]{margin:0;font-size:1rem;font-weight:600}.commands-section[_ngcontent-%COMP%] .commands-list[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:1rem}.commands-section[_ngcontent-%COMP%] .command-item[_ngcontent-%COMP%]{display:flex;align-items:flex-start;gap:.5rem}.commands-section[_ngcontent-%COMP%] .command-item[_ngcontent-%COMP%] .command-field[_ngcontent-%COMP%]{flex:1}.commands-section[_ngcontent-%COMP%] .command-item[_ngcontent-%COMP%] .remove-btn[_ngcontent-%COMP%]{margin-top:8px}.commands-section[_ngcontent-%COMP%] .command-item[_ngcontent-%COMP%] .remove-btn[_ngcontent-%COMP%]:disabled{opacity:.3;cursor:not-allowed}.webhook-section[_ngcontent-%COMP%]{padding:1rem;background:var(--color-surface);border-radius:8px;border:1px solid var(--color-border)}.webhook-section[_ngcontent-%COMP%] .checkbox-label[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.5rem;cursor:pointer}.webhook-section[_ngcontent-%COMP%] .checkbox-label[_ngcontent-%COMP%] input[type=checkbox][_ngcontent-%COMP%]{width:18px;height:18px;cursor:pointer}.webhook-section[_ngcontent-%COMP%] .checkbox-label[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{font-size:.95rem}.webhook-section[_ngcontent-%COMP%] .hint[_ngcontent-%COMP%]{margin:.5rem 0 0;font-size:.85rem;color:var(--color-text-secondary)}.webhook-url-section[_ngcontent-%COMP%]{padding:1rem;background:var(--color-surface);border-radius:8px;border:1px solid var(--color-border)}.webhook-url-section[_ngcontent-%COMP%] .webhook-url-header[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.5rem;margin-bottom:.75rem}.webhook-url-section[_ngcontent-%COMP%] .webhook-url-header[_ngcontent-%COMP%] .webhook-icon[_ngcontent-%COMP%]{color:var(--color-primary)}.webhook-url-section[_ngcontent-%COMP%] .webhook-url-header[_ngcontent-%COMP%] h4[_ngcontent-%COMP%]{margin:0;font-size:1rem;font-weight:600}.webhook-url-section[_ngcontent-%COMP%] .webhook-url-content[_ngcontent-%COMP%]{display:flex;align-items:center;gap:1rem;margin-bottom:.5rem}.webhook-url-section[_ngcontent-%COMP%] .webhook-url-content[_ngcontent-%COMP%] .url-text[_ngcontent-%COMP%]{flex:1;margin:0;padding:.75rem;background:var(--color-bg);border:1px solid var(--color-border);border-radius:4px;font-family:monospace;font-size:.85rem;word-break:break-all;color:var(--color-text)}.webhook-url-section[_ngcontent-%COMP%] .webhook-url-content[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{white-space:nowrap;display:flex;align-items:center;gap:.5rem}.webhook-url-section[_ngcontent-%COMP%] .hint[_ngcontent-%COMP%]{margin:0;font-size:.85rem;color:var(--color-text-secondary)}.error-message[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.5rem;padding:.75rem;background:#f443361a;border:1px solid var(--color-error);border-radius:4px;color:var(--color-error)}.error-message[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{font-size:1.25rem;width:1.25rem;height:1.25rem}.error-message[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{flex:1}.source-section[_ngcontent-%COMP%]{padding:1rem;background:var(--color-surface);border-radius:8px;border:1px solid var(--color-border)}.source-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%]{margin:0 0 1rem;font-size:1rem;font-weight:600}.source-section[_ngcontent-%COMP%] .source-options[_ngcontent-%COMP%]{display:flex;gap:1rem;margin-bottom:.75rem}@media(max-width:768px){.source-section[_ngcontent-%COMP%] .source-options[_ngcontent-%COMP%]{flex-direction:column}}.source-section[_ngcontent-%COMP%] .source-option[_ngcontent-%COMP%]{flex:1;display:flex;align-items:flex-start;gap:.75rem;padding:1rem;background:var(--color-bg);border:2px solid var(--color-border);border-radius:8px;cursor:pointer;transition:all .2s ease}.source-section[_ngcontent-%COMP%] .source-option[_ngcontent-%COMP%]:hover{border-color:var(--color-primary);background:var(--color-bg-hover)}.source-section[_ngcontent-%COMP%] .source-option.selected[_ngcontent-%COMP%]{border-color:var(--color-primary);background:var(--color-bg-hover);box-shadow:0 0 0 1px var(--color-primary)}.source-section[_ngcontent-%COMP%] .source-option[_ngcontent-%COMP%] input[type=radio][_ngcontent-%COMP%]{margin-top:2px;cursor:pointer}.source-section[_ngcontent-%COMP%] .source-option[_ngcontent-%COMP%] .source-content[_ngcontent-%COMP%]{flex:1}.source-section[_ngcontent-%COMP%] .source-option[_ngcontent-%COMP%] .source-content[_ngcontent-%COMP%] .source-header[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.5rem;margin-bottom:.5rem}.source-section[_ngcontent-%COMP%] .source-option[_ngcontent-%COMP%] .source-content[_ngcontent-%COMP%] .source-header[_ngcontent-%COMP%] .source-icon[_ngcontent-%COMP%]{font-size:1.25rem}.source-section[_ngcontent-%COMP%] .source-option[_ngcontent-%COMP%] .source-content[_ngcontent-%COMP%] .source-header[_ngcontent-%COMP%] .source-label[_ngcontent-%COMP%]{font-weight:600;font-size:.95rem}.source-section[_ngcontent-%COMP%] .source-option[_ngcontent-%COMP%] .source-content[_ngcontent-%COMP%] .source-description[_ngcontent-%COMP%]{margin:0;font-size:.85rem;color:var(--color-text-secondary);line-height:1.4}.source-section[_ngcontent-%COMP%] .hint[_ngcontent-%COMP%]{margin:0;font-size:.85rem;color:var(--color-text-secondary);font-style:italic}.thread-lifetime-disabled[_ngcontent-%COMP%]{display:flex;align-items:flex-start;gap:.75rem;padding:1rem;background:#2196f30d;border:1px solid rgba(33,150,243,.2);border-radius:8px;margin-bottom:1rem}.thread-lifetime-disabled[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{color:#2196f3cc;font-size:1.25rem;width:1.25rem;height:1.25rem;margin-top:2px}.thread-lifetime-disabled[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{margin:0;flex:1}.thread-lifetime-disabled[_ngcontent-%COMP%] p[_ngcontent-%COMP%] strong[_ngcontent-%COMP%]{font-size:.95rem;color:var(--color-text)}.thread-lifetime-disabled[_ngcontent-%COMP%] p[_ngcontent-%COMP%] .hint[_ngcontent-%COMP%]{display:block;margin-top:.25rem;font-size:.85rem;color:var(--color-text-secondary);line-height:1.4}.source-display[_ngcontent-%COMP%]{padding:1rem;background:var(--color-surface);border-radius:8px;border:1px solid var(--color-border)}.source-display[_ngcontent-%COMP%] h3[_ngcontent-%COMP%]{margin:0 0 .75rem;font-size:1rem;font-weight:600}.source-display[_ngcontent-%COMP%] .source-badge[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:.5rem;padding:.5rem 1rem;border-radius:6px;font-size:.9rem;font-weight:500;margin-bottom:.5rem}.source-display[_ngcontent-%COMP%] .source-badge[_ngcontent-%COMP%] .source-icon[_ngcontent-%COMP%]{font-size:1.1rem}.source-display[_ngcontent-%COMP%] .source-badge.badge-local[_ngcontent-%COMP%]{background:#2196f31a;color:#2196f3;border:1px solid rgba(33,150,243,.3)}.source-display[_ngcontent-%COMP%] .source-badge.badge-project[_ngcontent-%COMP%]{background:#4caf501a;color:#4caf50;border:1px solid rgba(76,175,80,.3)}.source-display[_ngcontent-%COMP%] .hint[_ngcontent-%COMP%]{margin:0;font-size:.85rem;color:var(--color-text-secondary);font-style:italic}"]})};var He=()=>[],Ye=s=>({id:s});function Ge(s,i){if(s&1&&(n(0,"div",6),a(1),o()),s&2){let e=l();c(),M(e.errorMessage())}}function Ke(s,i){if(s&1){let e=f();n(0,"ds-entity-card",8),d("selected",function(r){g(e);let m=l();return u(m.onEdit(r))}),G(1,9),n(2,"button",10),d("click",function(r){return r.stopPropagation()}),n(3,"mat-icon"),a(4,"more_vert"),o()(),K(),o()}if(s&2){let e=i.$implicit;l();let t=N(11);C("id",e.id)("name",e.name)("description",e.description)("badges",e.badges??J(6,He)),c(2),C("matMenuTriggerFor",t)("matMenuTriggerData",Q(7,Ye,e.id))}}function Je(s,i){if(s&1){let e=f();n(0,"button",11),d("click",function(){g(e);let r=l().id,m=l();return u(m.onToggleWebhook(r))}),n(1,"mat-icon"),a(2),o(),a(3),o()}if(s&2){let e=l().id,t=l();c(2),M(t.isWebhookEnabled(e)?"link_off":"link"),c(),O(" ",t.isWebhookEnabled(e)?"Disable webhook":"Enable webhook"," ")}}function Qe(s,i){if(s&1){let e=f();n(0,"button",11),d("click",function(){let r=g(e).id,m=l();return u(m.onEdit(r))}),n(1,"mat-icon"),a(2,"edit"),o(),a(3," Edit "),o(),h(4,Je,4,2,"button",12),n(5,"button",13),d("click",function(){let r=g(e).id,m=l();return u(m.onDelete(r))}),n(6,"mat-icon"),a(7,"delete"),o(),a(8," Delete "),o()}if(s&2){let e=l();c(4),b(e.isAdmin()?4:-1)}}var Te="system",De=class s{promptApi=_(R);configApi=_(z);location=_($);dialog=_(oe);prompts=P([]);isLoading=P(!1);errorMessage=P(null);showOnlyMine=P(!0);isAdmin=P(!1);currentUsername=P("");promptItems=Z(()=>{let i=this.prompts(),e=this.currentUsername(),r=this.showOnlyMine()&&e?i.filter(p=>this.isMyPrompt(p)):i,E=[...new Set(r.map(p=>p.createdBy))].sort((p,w)=>p===e&&w!==e?-1:w===e&&p!==e||p===Te?1:w===Te?-1:p.localeCompare(w)),j=[];for(let p of E){let w=p===e?`${p} (you)`:p;for(let S of r.filter(Ie=>Ie.createdBy===p))j.push({id:S.id,name:S.name,description:S.description,badges:this.buildBadges(S),groupKey:p,groupLabel:w})}return j});ngOnInit(){this.configApi.getUserConfig().subscribe({next:i=>{this.isAdmin.set(i.groups?.includes("CODAY_ADMIN")??!1),this.currentUsername.set(i.username??"")},error:()=>this.isAdmin.set(!1)}),this.loadPrompts()}loadPrompts(){this.isLoading.set(!0),this.promptApi.listPrompts().subscribe({next:i=>{this.prompts.set(i.filter(e=>!e.id.startsWith("builtin"))),this.isLoading.set(!1)},error:i=>{this.errorMessage.set(i?.error?.error??"Failed to load prompts"),this.isLoading.set(!1)}})}onBack(){this.location.back()}onCreate(){this.dialog.open(k,{width:"700px",maxHeight:"90vh",data:{mode:"create"}}).afterClosed().subscribe(e=>{e&&this.loadPrompts()})}onEdit(i){this.promptApi.getPrompt(i).subscribe({next:e=>{this.dialog.open(k,{width:"700px",maxHeight:"90vh",data:{mode:"edit",prompt:e}}).afterClosed().subscribe(r=>{r&&this.loadPrompts()})},error:e=>this.errorMessage.set(e?.error?.error??"Failed to load prompt")})}onDelete(i){confirm("Are you sure you want to delete this prompt?")&&this.promptApi.deletePrompt(i).subscribe({next:()=>this.loadPrompts(),error:e=>this.errorMessage.set(e?.error?.error??"Failed to delete prompt")})}onToggleWebhook(i){let e=this.prompts().find(r=>r.id===i);if(!e)return;(e.webhookEnabled?this.promptApi.disableWebhook(i):this.promptApi.enableWebhook(i)).subscribe({next:()=>this.loadPrompts(),error:r=>this.errorMessage.set(r?.error?.error??"Failed to toggle webhook")})}isWebhookEnabled(i){return this.prompts().find(e=>e.id===i)?.webhookEnabled??!1}isMyPrompt(i){let e=t=>t.replace(/[.\s]+/g,"_").toLowerCase();return e(i.createdBy)===e(this.currentUsername())}buildBadges(i){let e=[];return i.source==="local"?e.push({label:"local",variant:"info"}):e.push({label:"project",variant:"success"}),i.webhookEnabled&&e.push({label:"webhook",variant:"warning"}),e}static \u0275fac=function(e){return new(e||s)};static \u0275cmp=F({type:s,selectors:[["app-prompt-list"]],decls:13,vars:5,consts:[["promptCard",""],["cardMenu","matMenu"],[1,"prompt-list-page"],["title","Prompts","cardMinWidth","320px","contentMaxWidth","1400px","searchPlaceholder","Filter prompts\u2026","emptyMessage","No prompts found.",3,"createRequested","items","showCreate","itemTemplate"],["toolbar-start","","mat-icon-button","","title","Back",3,"click"],["toolbar-extras","","color","primary",1,"prompt-list__mine-toggle",3,"ngModelChange","ngModel"],[1,"prompt-list__error"],["matMenuContent",""],[3,"selected","id","name","description","badges"],["dsCardActions",""],["mat-icon-button","",3,"click","matMenuTriggerFor","matMenuTriggerData"],["mat-menu-item","",3,"click"],["mat-menu-item",""],["mat-menu-item","",1,"prompt-list__delete-item",3,"click"]],template:function(e,t){if(e&1&&(n(0,"div",2)(1,"ds-entity-list",3),d("createRequested",function(){return t.onCreate()}),n(2,"button",4),d("click",function(){return t.onBack()}),n(3,"mat-icon"),a(4,"chevron_left"),o()(),n(5,"mat-slide-toggle",5),d("ngModelChange",function(m){return t.showOnlyMine.set(m)}),a(6," Mine "),o()(),h(7,Ge,2,1,"div",6),o(),U(8,Ke,5,9,"ng-template",null,0,X),n(10,"mat-menu",null,1),U(12,Qe,9,1,"ng-template",7),o()),e&2){let r=N(9);c(),C("items",t.promptItems())("showCreate",!0)("itemTemplate",r),c(4),C("ngModel",t.showOnlyMine()),c(2),b(t.errorMessage()?7:-1)}},dependencies:[Fe,Se,Ee,I,D,A,L,ke,Oe,_e,ge,de,pe,ue,B,W,V],styles:["[_nghost-%COMP%]{display:block;width:100%;min-height:100vh;background:var(--color-bg);overflow-y:auto}.prompt-list__mine-toggle[_ngcontent-%COMP%]{flex-shrink:0;font-size:.875rem}.prompt-list__delete-item[_ngcontent-%COMP%]{color:var(--color-error, #ff3b30)}.prompt-list__delete-item[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{color:inherit}.prompt-list__error[_ngcontent-%COMP%]{margin:1rem auto;max-width:900px;padding:.75rem 1rem;background:#dc262614;border:1px solid rgba(220,38,38,.25);border-radius:8px;color:var(--color-error, #ff3b30);font-size:.875rem}"]})};export{De as PromptListComponent};
1
+ import{b as me,c as le}from"./chunk-BZS55WHS.js";import{a as R}from"./chunk-V7NUXN3R.js";import{a as Oe,b as ke,c as z}from"./chunk-KD3BJ52V.js";import{a as he,b as be,g as Ce,h as fe,i as ye,j as we}from"./chunk-UDEMKCGK.js";import{a as de,b as pe,c as ge,d as ue,e as _e,v as Ee,w as Se,x as Fe}from"./chunk-K7JRH3HO.js";import"./chunk-EBAEYY2S.js";import{a as te,b as ne,d as oe,e as ie,f as re,g as ae,h as se}from"./chunk-C2XSJPYF.js";import"./chunk-BZ7URUNM.js";import"./chunk-SKBT6DBT.js";import{a as L,b as A}from"./chunk-GF3EMWCA.js";import{C as ve,E as B,b as Me,c as Pe,g as W,m as V,p as xe}from"./chunk-Z6RFJ6L3.js";import"./chunk-LN55MSDV.js";import{O as D,Q as ce,S as I}from"./chunk-OPSHMM4H.js";import{Bb as f,Db as d,Fb as l,Fc as $,Ka as c,Nc as ee,Pb as N,Rb as T,Tb as a,Ub as M,Vb as O,Wa as F,Yb as x,Zb as v,_b as y,ab as U,bc as J,ca as _,cc as Q,ga as g,ha as u,ic as X,lb as h,lc as Z,mb as b,nb as q,pb as H,qb as Y,rb as C,sb as n,ta as P,tb as o,yb as G,zb as K}from"./chunk-5NLXR4MK.js";function Re(s,i){if(s&1){let e=f();n(0,"div",9)(1,"mat-form-field",18)(2,"mat-label"),a(3),o(),n(4,"textarea",19),y("ngModelChange",function(r){let m=g(e).$index,E=l();return v(E.commands[m],r)||(E.commands[m]=r),u(r)}),o(),n(5,"mat-hint"),a(6,"Use placeholder for dynamic values"),o()(),n(7,"button",20),d("click",function(){let r=g(e).$index,m=l();return u(m.removeCommand(r))}),n(8,"mat-icon"),a(9,"delete"),o()()()}if(s&2){let e=i.$index,t=l();c(3),O("Prompt ",e+1),c(),x("ngModel",t.commands[e]),c(3),C("disabled",t.commands.length===1)}}function ze(s,i){if(s&1){let e=f();n(0,"div",10)(1,"h3"),a(2,"Save to"),o(),n(3,"div",21)(4,"label",22)(5,"input",23),y("ngModelChange",function(r){g(e);let m=l();return v(m.source,r)||(m.source=r),u(r)}),o(),n(6,"div",24)(7,"div",25)(8,"span",26),a(9,"\u{1F464}"),o(),n(10,"span",27),a(11,"Local"),o()(),n(12,"p",28),a(13,"Personal prompt in ~/.coday/... (not committed)"),o()()(),n(14,"label",22)(15,"input",29),y("ngModelChange",function(r){g(e);let m=l();return v(m.source,r)||(m.source=r),u(r)}),o(),n(16,"div",24)(17,"div",25)(18,"span",26),a(19,"\u{1F4E6}"),o(),n(20,"span",27),a(21,"Project"),o()(),n(22,"p",28),a(23,"Shared prompt in ./prompts/ (committable)"),o()()()(),n(24,"p",30),a(25,"Storage location is permanent and cannot be changed after creation"),o()()}if(s&2){let e=l();c(4),T("selected",e.source==="local"),c(),x("ngModel",e.source),c(9),T("selected",e.source==="project"),c(),x("ngModel",e.source)}}function Ue(s,i){if(s&1&&(n(0,"div",11)(1,"h3"),a(2,"Storage Location"),o(),n(3,"div",31)(4,"span",26),a(5),o(),n(6,"span",27),a(7),o()(),n(8,"p",30),a(9,"Cannot be changed after creation"),o()()),s&2){let e=l();c(3),T("badge-local",e.source==="local")("badge-project",e.source==="project"),c(2),M(e.source==="local"?"\u{1F464}":"\u{1F4E6}"),c(2),M(e.source==="local"?"Local":"Project")}}function Ne(s,i){if(s&1){let e=f();n(0,"div",12)(1,"label",32)(2,"input",33),y("ngModelChange",function(r){g(e);let m=l();return v(m.webhookEnabled,r)||(m.webhookEnabled=r),u(r)}),o(),n(3,"span"),a(4,"Enable webhook"),o()(),n(5,"p",30),a(6,"Enable webhook to trigger this prompt via HTTP POST"),o()()}if(s&2){let e=l();c(2),x("ngModel",e.webhookEnabled)}}function je(s,i){if(s&1){let e=f();n(0,"div",13)(1,"div",34)(2,"mat-icon",35),a(3,"link"),o(),n(4,"h4"),a(5,"Webhook URL"),o()(),n(6,"div",36)(7,"p",37),a(8),o(),n(9,"button",38),d("click",function(){g(e);let r=l();return u(r.copyWebhookUrl())}),n(10,"mat-icon"),a(11,"content_copy"),o(),n(12,"span"),a(13,"Copy URL"),o()()(),n(14,"p",30),a(15,"Use this URL to trigger the prompt via HTTP POST"),o()()}if(s&2){let e=l();c(8),M(e.getWebhookUrl())}}function qe(s,i){if(s&1&&(n(0,"div",14)(1,"mat-icon"),a(2,"error"),o(),n(3,"span"),a(4),o()()),s&2){let e=l();c(4),M(e.errorMessage)}}var k=class s{promptApi=_(R);dialogRef=_(te);configApi=_(z);snackBar=_(me);name="";description="";commands=[""];webhookEnabled=!1;threadLifetime="";source="local";isSaving=!1;errorMessage="";isAdmin=!1;isEditMode=!1;promptId="";data=_(ne);constructor(){this.isEditMode=this.data.mode==="edit"}ngOnInit(){this.configApi.getUserConfig().subscribe({next:i=>{this.isAdmin=i.groups?.includes("CODAY_ADMIN")??!1},error:i=>{console.error("[PROMPT_FORM] Error loading user config:",i),this.isAdmin=!1}}),this.isEditMode&&this.data.prompt&&(this.promptId=this.data.prompt.id,this.name=this.data.prompt.name,this.description=this.data.prompt.description,this.commands=[...this.data.prompt.commands],this.webhookEnabled=this.data.prompt.webhookEnabled,this.source=this.data.prompt.source)}addCommand(){this.commands.push("")}removeCommand(i){this.commands.length>1&&this.commands.splice(i,1)}trackByIndex(i){return i}normalizeName(){this.name=this.name.replace(/[\s_.,;:!?()[\]{}]+/g,"-").replace(/-+/g,"-").replace(/^-|-$/g,"").toLowerCase()}validateForm(){return this.name.trim()?this.description.trim()?this.commands.filter(e=>e.trim()).length===0?(this.errorMessage="At least one command is required",!1):!0:(this.errorMessage="Description is required",!1):(this.errorMessage="Name is required",!1)}save(){if(this.errorMessage="",!this.validateForm())return;let i=this.commands.filter(e=>e.trim());if(this.isSaving=!0,this.isEditMode&&this.data.prompt){let e={name:this.name.trim(),description:this.description.trim(),commands:i,webhookEnabled:this.webhookEnabled};this.promptApi.updatePrompt(this.data.prompt.id,e).subscribe({next:()=>{this.isSaving=!1,this.dialogRef.close(!0)},error:t=>{console.error("Error updating prompt:",t),this.errorMessage=t?.error?.error||t?.message||"Failed to update prompt",this.isSaving=!1}})}else{let e={name:this.name.trim(),description:this.description.trim(),commands:i,webhookEnabled:this.webhookEnabled,source:this.source};this.promptApi.createPrompt(e).subscribe({next:()=>{this.isSaving=!1,this.dialogRef.close(!0)},error:t=>{console.error("Error creating prompt:",t),this.errorMessage=t?.error?.error||t?.message||"Failed to create prompt",this.isSaving=!1}})}}cancel(){this.dialogRef.close(!1)}getWebhookUrl(){return`${window.location.origin}/api/webhooks/${this.promptId}/execute`}copyWebhookUrl(){if(!this.webhookEnabled){this.snackBar.open("Webhook is not enabled","Close",{duration:3e3});return}if(!this.promptId){this.snackBar.open("Prompt must be saved before getting webhook URL","Close",{duration:3e3});return}let i=this.getWebhookUrl();navigator.clipboard.writeText(i).then(()=>{this.snackBar.open("Webhook URL copied to clipboard!","Close",{duration:3e3})}).catch(e=>{console.error("Failed to copy webhook URL:",e),this.snackBar.open("Failed to copy URL","Close",{duration:3e3})})}static \u0275fac=function(e){return new(e||s)};static \u0275cmp=F({type:s,selectors:[["app-prompt-form"]],decls:36,vars:11,consts:[["mat-dialog-title",""],[1,"form-container"],["appearance","outline",1,"full-width"],["matInput","","placeholder","my-prompt","required","",3,"ngModelChange","blur","ngModel"],["matInput","","placeholder","What does this prompt do?","rows","3","required","",3,"ngModelChange","ngModel"],[1,"commands-section"],[1,"section-header"],["mat-icon-button","","type","button","title","Add command",3,"click"],[1,"commands-list"],[1,"command-item"],[1,"source-section"],[1,"source-display"],[1,"webhook-section"],[1,"webhook-url-section"],[1,"error-message"],["align","end"],["mat-button","",3,"click","disabled"],["mat-raised-button","","color","primary",3,"click","disabled"],["appearance","outline",1,"command-field"],["matInput","","placeholder","Enter command with placeholders like \\{\\{key\\}\\}","rows","2",3,"ngModelChange","ngModel"],["mat-icon-button","","type","button","title","Remove command",1,"remove-btn",3,"click","disabled"],[1,"source-options"],[1,"source-option"],["type","radio","name","source","value","local",3,"ngModelChange","ngModel"],[1,"source-content"],[1,"source-header"],[1,"source-icon"],[1,"source-label"],[1,"source-description"],["type","radio","name","source","value","project",3,"ngModelChange","ngModel"],[1,"hint"],[1,"source-badge"],[1,"checkbox-label"],["type","checkbox",3,"ngModelChange","ngModel"],[1,"webhook-url-header"],[1,"webhook-icon"],[1,"webhook-url-content"],[1,"url-text"],["mat-raised-button","","color","accent","type","button",3,"click"]],template:function(e,t){e&1&&(n(0,"h2",0),a(1),o(),n(2,"mat-dialog-content")(3,"div",1)(4,"mat-form-field",2)(5,"mat-label"),a(6,"Name"),o(),n(7,"input",3),y("ngModelChange",function(m){return v(t.name,m)||(t.name=m),m}),d("blur",function(){return t.normalizeName()}),o(),n(8,"mat-hint"),a(9,"A descriptive name (spaces and punctuation will be replaced with hyphens), will be used as command name"),o()(),n(10,"mat-form-field",2)(11,"mat-label"),a(12,"Description"),o(),n(13,"textarea",4),y("ngModelChange",function(m){return v(t.description,m)||(t.description=m),m}),o(),n(14,"mat-hint"),a(15,"Explain the purpose of this prompt, helps for searchability"),o()(),n(16,"div",5)(17,"div",6)(18,"h3"),a(19,"Prompts"),o(),n(20,"button",7),d("click",function(){return t.addCommand()}),n(21,"mat-icon"),a(22,"add"),o()()(),n(23,"div",8),H(24,Re,10,3,"div",9,q),o()(),h(26,ze,26,6,"div",10),h(27,Ue,10,6,"div",11),h(28,Ne,7,1,"div",12),h(29,je,16,1,"div",13),h(30,qe,5,1,"div",14),o()(),n(31,"mat-dialog-actions",15)(32,"button",16),d("click",function(){return t.cancel()}),a(33,"Cancel"),o(),n(34,"button",17),d("click",function(){return t.save()}),a(35),o()()),e&2&&(c(),M(t.isEditMode?"Edit Prompt":"Create Prompt"),c(6),x("ngModel",t.name),c(6),x("ngModel",t.description),c(11),Y(t.commands),c(2),b(t.isEditMode?-1:26),c(),b(t.isEditMode?27:-1),c(),b(t.isAdmin?28:-1),c(),b(t.isEditMode&&t.webhookEnabled&&t.isAdmin?29:-1),c(),b(t.errorMessage?30:-1),c(2),C("disabled",t.isSaving),c(2),C("disabled",t.isSaving),c(),O(" ",t.isSaving?"Saving...":"Save"," "))},dependencies:[ee,B,Pe,Me,xe,W,ve,V,se,ie,ae,re,I,ce,D,we,ye,Ce,he,be,fe,A,L,le],styles:[".form-container[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:1rem;padding:0;min-width:500px}@media(max-width:768px){.form-container[_ngcontent-%COMP%]{min-width:auto}}.full-width[_ngcontent-%COMP%]{width:100%}.commands-section[_ngcontent-%COMP%] .section-header[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem}.commands-section[_ngcontent-%COMP%] .section-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%]{margin:0;font-size:1rem;font-weight:600}.commands-section[_ngcontent-%COMP%] .commands-list[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:1rem}.commands-section[_ngcontent-%COMP%] .command-item[_ngcontent-%COMP%]{display:flex;align-items:flex-start;gap:.5rem}.commands-section[_ngcontent-%COMP%] .command-item[_ngcontent-%COMP%] .command-field[_ngcontent-%COMP%]{flex:1}.commands-section[_ngcontent-%COMP%] .command-item[_ngcontent-%COMP%] .remove-btn[_ngcontent-%COMP%]{margin-top:8px}.commands-section[_ngcontent-%COMP%] .command-item[_ngcontent-%COMP%] .remove-btn[_ngcontent-%COMP%]:disabled{opacity:.3;cursor:not-allowed}.webhook-section[_ngcontent-%COMP%]{padding:1rem;background:var(--color-surface);border-radius:8px;border:1px solid var(--color-border)}.webhook-section[_ngcontent-%COMP%] .checkbox-label[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.5rem;cursor:pointer}.webhook-section[_ngcontent-%COMP%] .checkbox-label[_ngcontent-%COMP%] input[type=checkbox][_ngcontent-%COMP%]{width:18px;height:18px;cursor:pointer}.webhook-section[_ngcontent-%COMP%] .checkbox-label[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{font-size:.95rem}.webhook-section[_ngcontent-%COMP%] .hint[_ngcontent-%COMP%]{margin:.5rem 0 0;font-size:.85rem;color:var(--color-text-secondary)}.webhook-url-section[_ngcontent-%COMP%]{padding:1rem;background:var(--color-surface);border-radius:8px;border:1px solid var(--color-border)}.webhook-url-section[_ngcontent-%COMP%] .webhook-url-header[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.5rem;margin-bottom:.75rem}.webhook-url-section[_ngcontent-%COMP%] .webhook-url-header[_ngcontent-%COMP%] .webhook-icon[_ngcontent-%COMP%]{color:var(--color-primary)}.webhook-url-section[_ngcontent-%COMP%] .webhook-url-header[_ngcontent-%COMP%] h4[_ngcontent-%COMP%]{margin:0;font-size:1rem;font-weight:600}.webhook-url-section[_ngcontent-%COMP%] .webhook-url-content[_ngcontent-%COMP%]{display:flex;align-items:center;gap:1rem;margin-bottom:.5rem}.webhook-url-section[_ngcontent-%COMP%] .webhook-url-content[_ngcontent-%COMP%] .url-text[_ngcontent-%COMP%]{flex:1;margin:0;padding:.75rem;background:var(--color-bg);border:1px solid var(--color-border);border-radius:4px;font-family:monospace;font-size:.85rem;word-break:break-all;color:var(--color-text)}.webhook-url-section[_ngcontent-%COMP%] .webhook-url-content[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{white-space:nowrap;display:flex;align-items:center;gap:.5rem}.webhook-url-section[_ngcontent-%COMP%] .hint[_ngcontent-%COMP%]{margin:0;font-size:.85rem;color:var(--color-text-secondary)}.error-message[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.5rem;padding:.75rem;background:#f443361a;border:1px solid var(--color-error);border-radius:4px;color:var(--color-error)}.error-message[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{font-size:1.25rem;width:1.25rem;height:1.25rem}.error-message[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{flex:1}.source-section[_ngcontent-%COMP%]{padding:1rem;background:var(--color-surface);border-radius:8px;border:1px solid var(--color-border)}.source-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%]{margin:0 0 1rem;font-size:1rem;font-weight:600}.source-section[_ngcontent-%COMP%] .source-options[_ngcontent-%COMP%]{display:flex;gap:1rem;margin-bottom:.75rem}@media(max-width:768px){.source-section[_ngcontent-%COMP%] .source-options[_ngcontent-%COMP%]{flex-direction:column}}.source-section[_ngcontent-%COMP%] .source-option[_ngcontent-%COMP%]{flex:1;display:flex;align-items:flex-start;gap:.75rem;padding:1rem;background:var(--color-bg);border:2px solid var(--color-border);border-radius:8px;cursor:pointer;transition:all .2s ease}.source-section[_ngcontent-%COMP%] .source-option[_ngcontent-%COMP%]:hover{border-color:var(--color-primary);background:var(--color-bg-hover)}.source-section[_ngcontent-%COMP%] .source-option.selected[_ngcontent-%COMP%]{border-color:var(--color-primary);background:var(--color-bg-hover);box-shadow:0 0 0 1px var(--color-primary)}.source-section[_ngcontent-%COMP%] .source-option[_ngcontent-%COMP%] input[type=radio][_ngcontent-%COMP%]{margin-top:2px;cursor:pointer}.source-section[_ngcontent-%COMP%] .source-option[_ngcontent-%COMP%] .source-content[_ngcontent-%COMP%]{flex:1}.source-section[_ngcontent-%COMP%] .source-option[_ngcontent-%COMP%] .source-content[_ngcontent-%COMP%] .source-header[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.5rem;margin-bottom:.5rem}.source-section[_ngcontent-%COMP%] .source-option[_ngcontent-%COMP%] .source-content[_ngcontent-%COMP%] .source-header[_ngcontent-%COMP%] .source-icon[_ngcontent-%COMP%]{font-size:1.25rem}.source-section[_ngcontent-%COMP%] .source-option[_ngcontent-%COMP%] .source-content[_ngcontent-%COMP%] .source-header[_ngcontent-%COMP%] .source-label[_ngcontent-%COMP%]{font-weight:600;font-size:.95rem}.source-section[_ngcontent-%COMP%] .source-option[_ngcontent-%COMP%] .source-content[_ngcontent-%COMP%] .source-description[_ngcontent-%COMP%]{margin:0;font-size:.85rem;color:var(--color-text-secondary);line-height:1.4}.source-section[_ngcontent-%COMP%] .hint[_ngcontent-%COMP%]{margin:0;font-size:.85rem;color:var(--color-text-secondary);font-style:italic}.thread-lifetime-disabled[_ngcontent-%COMP%]{display:flex;align-items:flex-start;gap:.75rem;padding:1rem;background:#2196f30d;border:1px solid rgba(33,150,243,.2);border-radius:8px;margin-bottom:1rem}.thread-lifetime-disabled[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{color:#2196f3cc;font-size:1.25rem;width:1.25rem;height:1.25rem;margin-top:2px}.thread-lifetime-disabled[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{margin:0;flex:1}.thread-lifetime-disabled[_ngcontent-%COMP%] p[_ngcontent-%COMP%] strong[_ngcontent-%COMP%]{font-size:.95rem;color:var(--color-text)}.thread-lifetime-disabled[_ngcontent-%COMP%] p[_ngcontent-%COMP%] .hint[_ngcontent-%COMP%]{display:block;margin-top:.25rem;font-size:.85rem;color:var(--color-text-secondary);line-height:1.4}.source-display[_ngcontent-%COMP%]{padding:1rem;background:var(--color-surface);border-radius:8px;border:1px solid var(--color-border)}.source-display[_ngcontent-%COMP%] h3[_ngcontent-%COMP%]{margin:0 0 .75rem;font-size:1rem;font-weight:600}.source-display[_ngcontent-%COMP%] .source-badge[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:.5rem;padding:.5rem 1rem;border-radius:6px;font-size:.9rem;font-weight:500;margin-bottom:.5rem}.source-display[_ngcontent-%COMP%] .source-badge[_ngcontent-%COMP%] .source-icon[_ngcontent-%COMP%]{font-size:1.1rem}.source-display[_ngcontent-%COMP%] .source-badge.badge-local[_ngcontent-%COMP%]{background:#2196f31a;color:#2196f3;border:1px solid rgba(33,150,243,.3)}.source-display[_ngcontent-%COMP%] .source-badge.badge-project[_ngcontent-%COMP%]{background:#4caf501a;color:#4caf50;border:1px solid rgba(76,175,80,.3)}.source-display[_ngcontent-%COMP%] .hint[_ngcontent-%COMP%]{margin:0;font-size:.85rem;color:var(--color-text-secondary);font-style:italic}"]})};var He=()=>[],Ye=s=>({id:s});function Ge(s,i){if(s&1&&(n(0,"div",6),a(1),o()),s&2){let e=l();c(),M(e.errorMessage())}}function Ke(s,i){if(s&1){let e=f();n(0,"ds-entity-card",8),d("selected",function(r){g(e);let m=l();return u(m.onEdit(r))}),G(1,9),n(2,"button",10),d("click",function(r){return r.stopPropagation()}),n(3,"mat-icon"),a(4,"more_vert"),o()(),K(),o()}if(s&2){let e=i.$implicit;l();let t=N(11);C("id",e.id)("name",e.name)("description",e.description)("badges",e.badges??J(6,He)),c(2),C("matMenuTriggerFor",t)("matMenuTriggerData",Q(7,Ye,e.id))}}function Je(s,i){if(s&1){let e=f();n(0,"button",11),d("click",function(){g(e);let r=l().id,m=l();return u(m.onToggleWebhook(r))}),n(1,"mat-icon"),a(2),o(),a(3),o()}if(s&2){let e=l().id,t=l();c(2),M(t.isWebhookEnabled(e)?"link_off":"link"),c(),O(" ",t.isWebhookEnabled(e)?"Disable webhook":"Enable webhook"," ")}}function Qe(s,i){if(s&1){let e=f();n(0,"button",11),d("click",function(){let r=g(e).id,m=l();return u(m.onEdit(r))}),n(1,"mat-icon"),a(2,"edit"),o(),a(3," Edit "),o(),h(4,Je,4,2,"button",12),n(5,"button",13),d("click",function(){let r=g(e).id,m=l();return u(m.onDelete(r))}),n(6,"mat-icon"),a(7,"delete"),o(),a(8," Delete "),o()}if(s&2){let e=l();c(4),b(e.isAdmin()?4:-1)}}var Te="system",De=class s{promptApi=_(R);configApi=_(z);location=_($);dialog=_(oe);prompts=P([]);isLoading=P(!1);errorMessage=P(null);showOnlyMine=P(!0);isAdmin=P(!1);currentUsername=P("");promptItems=Z(()=>{let i=this.prompts(),e=this.currentUsername(),r=this.showOnlyMine()&&e?i.filter(p=>this.isMyPrompt(p)):i,E=[...new Set(r.map(p=>p.createdBy))].sort((p,w)=>p===e&&w!==e?-1:w===e&&p!==e||p===Te?1:w===Te?-1:p.localeCompare(w)),j=[];for(let p of E){let w=p===e?`${p} (you)`:p;for(let S of r.filter(Ie=>Ie.createdBy===p))j.push({id:S.id,name:S.name,description:S.description,badges:this.buildBadges(S),groupKey:p,groupLabel:w})}return j});ngOnInit(){this.configApi.getUserConfig().subscribe({next:i=>{this.isAdmin.set(i.groups?.includes("CODAY_ADMIN")??!1),this.currentUsername.set(i.username??"")},error:()=>this.isAdmin.set(!1)}),this.loadPrompts()}loadPrompts(){this.isLoading.set(!0),this.promptApi.listPrompts().subscribe({next:i=>{this.prompts.set(i.filter(e=>!e.id.startsWith("builtin"))),this.isLoading.set(!1)},error:i=>{this.errorMessage.set(i?.error?.error??"Failed to load prompts"),this.isLoading.set(!1)}})}onBack(){this.location.back()}onCreate(){this.dialog.open(k,{width:"700px",maxHeight:"90vh",data:{mode:"create"}}).afterClosed().subscribe(e=>{e&&this.loadPrompts()})}onEdit(i){this.promptApi.getPrompt(i).subscribe({next:e=>{this.dialog.open(k,{width:"700px",maxHeight:"90vh",data:{mode:"edit",prompt:e}}).afterClosed().subscribe(r=>{r&&this.loadPrompts()})},error:e=>this.errorMessage.set(e?.error?.error??"Failed to load prompt")})}onDelete(i){confirm("Are you sure you want to delete this prompt?")&&this.promptApi.deletePrompt(i).subscribe({next:()=>this.loadPrompts(),error:e=>this.errorMessage.set(e?.error?.error??"Failed to delete prompt")})}onToggleWebhook(i){let e=this.prompts().find(r=>r.id===i);if(!e)return;(e.webhookEnabled?this.promptApi.disableWebhook(i):this.promptApi.enableWebhook(i)).subscribe({next:()=>this.loadPrompts(),error:r=>this.errorMessage.set(r?.error?.error??"Failed to toggle webhook")})}isWebhookEnabled(i){return this.prompts().find(e=>e.id===i)?.webhookEnabled??!1}isMyPrompt(i){let e=t=>t.replace(/[.\s]+/g,"_").toLowerCase();return e(i.createdBy)===e(this.currentUsername())}buildBadges(i){let e=[];return i.source==="local"?e.push({label:"local",variant:"info"}):e.push({label:"project",variant:"success"}),i.webhookEnabled&&e.push({label:"webhook",variant:"warning"}),e}static \u0275fac=function(e){return new(e||s)};static \u0275cmp=F({type:s,selectors:[["app-prompt-list"]],decls:13,vars:5,consts:[["promptCard",""],["cardMenu","matMenu"],[1,"prompt-list-page"],["title","Prompts","cardMinWidth","320px","contentMaxWidth","1400px","searchPlaceholder","Filter prompts\u2026","emptyMessage","No prompts found.",3,"createRequested","items","showCreate","itemTemplate"],["toolbar-start","","mat-icon-button","","title","Back",3,"click"],["toolbar-extras","","color","primary",1,"prompt-list__mine-toggle",3,"ngModelChange","ngModel"],[1,"prompt-list__error"],["matMenuContent",""],[3,"selected","id","name","description","badges"],["dsCardActions",""],["mat-icon-button","",3,"click","matMenuTriggerFor","matMenuTriggerData"],["mat-menu-item","",3,"click"],["mat-menu-item",""],["mat-menu-item","",1,"prompt-list__delete-item",3,"click"]],template:function(e,t){if(e&1&&(n(0,"div",2)(1,"ds-entity-list",3),d("createRequested",function(){return t.onCreate()}),n(2,"button",4),d("click",function(){return t.onBack()}),n(3,"mat-icon"),a(4,"chevron_left"),o()(),n(5,"mat-slide-toggle",5),d("ngModelChange",function(m){return t.showOnlyMine.set(m)}),a(6," Mine "),o()(),h(7,Ge,2,1,"div",6),o(),U(8,Ke,5,9,"ng-template",null,0,X),n(10,"mat-menu",null,1),U(12,Qe,9,1,"ng-template",7),o()),e&2){let r=N(9);c(),C("items",t.promptItems())("showCreate",!0)("itemTemplate",r),c(4),C("ngModel",t.showOnlyMine()),c(2),b(t.errorMessage()?7:-1)}},dependencies:[Fe,Se,Ee,I,D,A,L,ke,Oe,_e,ge,de,pe,ue,B,W,V],styles:["[_nghost-%COMP%]{display:block;width:100%;min-height:100vh;background:var(--color-bg);overflow-y:auto}.prompt-list__mine-toggle[_ngcontent-%COMP%]{flex-shrink:0;font-size:.875rem}.prompt-list__delete-item[_ngcontent-%COMP%]{color:var(--color-error, #ff3b30)}.prompt-list__delete-item[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{color:inherit}.prompt-list__error[_ngcontent-%COMP%]{margin:1rem auto;max-width:900px;padding:.75rem 1rem;background:#dc262614;border:1px solid rgba(220,38,38,.25);border-radius:8px;color:var(--color-error, #ff3b30);font-size:.875rem}"]})};export{De as PromptListComponent};
@@ -1 +1 @@
1
- import{r as h,y as w}from"./chunk-SOAR3OAC.js";import{Bb as u,Db as p,Fb as r,Ka as d,Tb as m,Ub as g,Vb as x,Wa as C,ga as s,ha as c,lb as y,mb as M,oc as b,pc as _,rb as v,sb as t,ta as f,tb as n}from"./chunk-5NLXR4MK.js";function k(o,a){if(o&1){let e=u();t(0,"span",7),m(1,"Delete?"),n(),t(2,"ds-icon-button",8),p("action",function(){s(e);let l=r();return c(l.onDeleteConfirmed())}),n(),t(3,"ds-icon-button",9),p("action",function(){s(e);let l=r();return c(l.onDeleteCancelled())}),n()}}function O(o,a){if(o&1){let e=u();t(0,"ds-kebab-menu",10),p("itemSelected",function(l){s(e);let I=r();return c(I.onMenuAction(l))}),n()}if(o&2){let e=r();v("items",e.menuItems)}}var D=class o{model=_.required();namespaceId=_(void 0);readOnly=_(!1);deleteRequested=b();editRequested=b();pendingDelete=f(!1);menuItems=[{key:"edit",label:"Edit model",icon:"edit"},{key:"delete",label:"Delete model",icon:"delete",variant:"danger"}];get displayTitle(){return this.model().alias??this.model().apiModelName}onMenuAction(a){switch(a){case"edit":this.editRequested.emit(this.model());break;case"delete":this.pendingDelete.set(!0);break}}onDeleteConfirmed(){this.pendingDelete.set(!1),this.deleteRequested.emit(this.model())}onDeleteCancelled(){this.pendingDelete.set(!1)}static \u0275fac=function(e){return new(e||o)};static \u0275cmp=C({type:o,selectors:[["agentos-ai-model-item"]],inputs:{model:[1,"model"],namespaceId:[1,"namespaceId"],readOnly:[1,"readOnly"]},outputs:{deleteRequested:"deleteRequested",editRequested:"editRequested"},decls:12,vars:4,consts:[["role","listitem",1,"ai-model-item"],[1,"ai-model-item__body"],[1,"ai-model-item__name"],[1,"ai-model-item__api-name"],[1,"ai-model-item__params"],[1,"ai-model-item__actions"],[3,"items"],[1,"ai-model-item__confirm-label"],["icon","check","variant","danger","title","Confirm deletion",3,"action"],["icon","close","title","Cancel deletion",3,"action"],[3,"itemSelected","items"]],template:function(e,i){e&1&&(t(0,"div",0)(1,"div",1)(2,"span",2),m(3),n(),t(4,"span",3),m(5),n(),t(6,"span",4)(7,"span"),m(8),n()()(),t(9,"div",5),y(10,k,4,0)(11,O,1,1,"ds-kebab-menu",6),n()()),e&2&&(d(3),g(i.displayTitle),d(2),g(i.model().apiModelName),d(3),x("priority: ",i.model().priority),d(2),M(i.pendingDelete()?10:i.readOnly()?-1:11))},dependencies:[w,h],styles:[".ai-model-item[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.5rem;padding:.75rem 1rem;border-radius:10px;border:1px solid var(--color-border, rgba(0, 0, 0, .08));background:var(--glass-bg, rgba(255, 255, 255, .72));-webkit-backdrop-filter:var(--glass-backdrop-blur, blur(20px));backdrop-filter:var(--glass-backdrop-blur, blur(20px));transition:background .15s ease,border-color .15s ease}.ai-model-item[_ngcontent-%COMP%]:hover{background:var(--color-bg-hover, rgba(0, 0, 0, .04));border-color:var(--color-primary, #007aff)}.ai-model-item__body[_ngcontent-%COMP%]{flex:1;display:flex;flex-direction:column;gap:.2rem;min-width:0}.ai-model-item__name[_ngcontent-%COMP%]{font-size:.95rem;font-weight:500;color:var(--color-text, #1d1d1f);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ai-model-item__api-name[_ngcontent-%COMP%]{font-size:.78rem;color:var(--color-text-secondary, #6e6e73);font-family:monospace;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ai-model-item__params[_ngcontent-%COMP%]{display:flex;gap:.75rem;font-size:.75rem;color:var(--color-text-secondary, #6e6e73)}.ai-model-item__actions[_ngcontent-%COMP%]{flex-shrink:0;display:flex;align-items:center;gap:.125rem;opacity:0;transition:opacity .15s ease}.ai-model-item[_ngcontent-%COMP%]:hover .ai-model-item__actions[_ngcontent-%COMP%], .ai-model-item[_ngcontent-%COMP%]:focus-within .ai-model-item__actions[_ngcontent-%COMP%]{opacity:1}.ai-model-item__confirm-label[_ngcontent-%COMP%]{font-size:.8rem;font-weight:500;color:var(--color-error, #ff3b30);margin-right:.25rem;white-space:nowrap}"],changeDetection:0})};export{D as a};
1
+ import{r as h,y as w}from"./chunk-K7JRH3HO.js";import{Bb as u,Db as p,Fb as r,Ka as d,Tb as m,Ub as g,Vb as x,Wa as C,ga as s,ha as c,lb as y,mb as M,oc as b,pc as _,rb as v,sb as t,ta as f,tb as n}from"./chunk-5NLXR4MK.js";function k(o,a){if(o&1){let e=u();t(0,"span",7),m(1,"Delete?"),n(),t(2,"ds-icon-button",8),p("action",function(){s(e);let l=r();return c(l.onDeleteConfirmed())}),n(),t(3,"ds-icon-button",9),p("action",function(){s(e);let l=r();return c(l.onDeleteCancelled())}),n()}}function O(o,a){if(o&1){let e=u();t(0,"ds-kebab-menu",10),p("itemSelected",function(l){s(e);let I=r();return c(I.onMenuAction(l))}),n()}if(o&2){let e=r();v("items",e.menuItems)}}var D=class o{model=_.required();namespaceId=_(void 0);readOnly=_(!1);deleteRequested=b();editRequested=b();pendingDelete=f(!1);menuItems=[{key:"edit",label:"Edit model",icon:"edit"},{key:"delete",label:"Delete model",icon:"delete",variant:"danger"}];get displayTitle(){return this.model().alias??this.model().apiModelName}onMenuAction(a){switch(a){case"edit":this.editRequested.emit(this.model());break;case"delete":this.pendingDelete.set(!0);break}}onDeleteConfirmed(){this.pendingDelete.set(!1),this.deleteRequested.emit(this.model())}onDeleteCancelled(){this.pendingDelete.set(!1)}static \u0275fac=function(e){return new(e||o)};static \u0275cmp=C({type:o,selectors:[["agentos-ai-model-item"]],inputs:{model:[1,"model"],namespaceId:[1,"namespaceId"],readOnly:[1,"readOnly"]},outputs:{deleteRequested:"deleteRequested",editRequested:"editRequested"},decls:12,vars:4,consts:[["role","listitem",1,"ai-model-item"],[1,"ai-model-item__body"],[1,"ai-model-item__name"],[1,"ai-model-item__api-name"],[1,"ai-model-item__params"],[1,"ai-model-item__actions"],[3,"items"],[1,"ai-model-item__confirm-label"],["icon","check","variant","danger","title","Confirm deletion",3,"action"],["icon","close","title","Cancel deletion",3,"action"],[3,"itemSelected","items"]],template:function(e,i){e&1&&(t(0,"div",0)(1,"div",1)(2,"span",2),m(3),n(),t(4,"span",3),m(5),n(),t(6,"span",4)(7,"span"),m(8),n()()(),t(9,"div",5),y(10,k,4,0)(11,O,1,1,"ds-kebab-menu",6),n()()),e&2&&(d(3),g(i.displayTitle),d(2),g(i.model().apiModelName),d(3),x("priority: ",i.model().priority),d(2),M(i.pendingDelete()?10:i.readOnly()?-1:11))},dependencies:[w,h],styles:[".ai-model-item[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.5rem;padding:.75rem 1rem;border-radius:10px;border:1px solid var(--color-border, rgba(0, 0, 0, .08));background:var(--glass-bg, rgba(255, 255, 255, .72));-webkit-backdrop-filter:var(--glass-backdrop-blur, blur(20px));backdrop-filter:var(--glass-backdrop-blur, blur(20px));transition:background .15s ease,border-color .15s ease}.ai-model-item[_ngcontent-%COMP%]:hover{background:var(--color-bg-hover, rgba(0, 0, 0, .04));border-color:var(--color-primary, #007aff)}.ai-model-item__body[_ngcontent-%COMP%]{flex:1;display:flex;flex-direction:column;gap:.2rem;min-width:0}.ai-model-item__name[_ngcontent-%COMP%]{font-size:.95rem;font-weight:500;color:var(--color-text, #1d1d1f);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ai-model-item__api-name[_ngcontent-%COMP%]{font-size:.78rem;color:var(--color-text-secondary, #6e6e73);font-family:monospace;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ai-model-item__params[_ngcontent-%COMP%]{display:flex;gap:.75rem;font-size:.75rem;color:var(--color-text-secondary, #6e6e73)}.ai-model-item__actions[_ngcontent-%COMP%]{flex-shrink:0;display:flex;align-items:center;gap:.125rem;opacity:0;transition:opacity .15s ease}.ai-model-item[_ngcontent-%COMP%]:hover .ai-model-item__actions[_ngcontent-%COMP%], .ai-model-item[_ngcontent-%COMP%]:focus-within .ai-model-item__actions[_ngcontent-%COMP%]{opacity:1}.ai-model-item__confirm-label[_ngcontent-%COMP%]{font-size:.8rem;font-weight:500;color:var(--color-error, #ff3b30);margin-right:.25rem;white-space:nowrap}"],changeDetection:0})};export{D as a};
@@ -1 +1 @@
1
- import{a as D}from"./chunk-JEN2LAHJ.js";import{b as B}from"./chunk-W7ZS65Y4.js";import{c as x}from"./chunk-P4GNUQZT.js";import{r as $,x as k}from"./chunk-SOAR3OAC.js";import"./chunk-EBAEYY2S.js";import"./chunk-BZ7URUNM.js";import{a as l}from"./chunk-SKBT6DBT.js";import"./chunk-GF3EMWCA.js";import"./chunk-Z6RFJ6L3.js";import"./chunk-OPSHMM4H.js";import{Bb as b,Db as s,Fb as m,Jc as T,Pb as P,S as d,Wa as y,ab as h,bc as w,ca as r,ec as I,fc as M,ga as C,ha as _,i as p,ic as R,lb as v,ma as u,mb as A,rb as g,sb as a,t as c,tb as f}from"./chunk-5NLXR4MK.js";var S=()=>[];function F(n,t){if(n&1){let e=b();a(0,"agentos-agent-config-item",4),s("deleteRequested",function(o){C(e);let E=m(2);return _(E.deleteConfig(o))}),f()}n&2&&g("config",t)("platformMode",!0)}function L(n,t){if(n&1&&v(0,F,1,2,"agentos-agent-config-item",3),n&2){let e,i=t.$implicit,o=m();A((e=o.resolveConfig(i.id))?0:-1,e)}}var q=class n{router=r(x);destroyRef=r(u);agentConfigController=r(B);refresh$=new p(void 0);configs$=this.refresh$.pipe(d(()=>this.agentConfigController.listPlatformAgentsAgentConfig(!0)));configItems$=this.configs$.pipe(c(t=>t.map(e=>({id:e.id??"",name:e.name,description:e.description}))));configsById=new Map;constructor(){this.configs$.pipe(l(this.destroyRef)).subscribe(t=>{this.configsById=new Map(t.map(e=>[e.id??"",e]))})}goBack(){this.router.navigate(["/agentos","admin"])}openCreateForm(){this.router.navigate(["/agentos","admin","agent-configs","new"])}deleteConfig(t){this.agentConfigController.deleteAgentConfig(t.id??"").pipe(l(this.destroyRef)).subscribe(()=>this.refresh$.next())}resolveConfig(t){return this.configsById.get(t)??null}static \u0275fac=function(e){return new(e||n)};static \u0275cmp=y({type:n,selectors:[["agentos-platform-agent-configs"]],decls:5,vars:6,consts:[["agentConfigItemTpl",""],["title","Platform Agent Configs","emptyMessage","No platform agent configs defined yet. Add one above.","cardMinWidth","400px",3,"createRequested","items","showCreate","itemTemplate"],["toolbar-start","","icon","arrow_back","title","Back",3,"action"],[3,"config","platformMode"],[3,"deleteRequested","config","platformMode"]],template:function(e,i){if(e&1&&(a(0,"ds-entity-list",1),I(1,"async"),s("createRequested",function(){return i.openCreateForm()}),a(2,"ds-icon-button",2),s("action",function(){return i.goBack()}),f()(),h(3,L,1,1,"ng-template",null,0,R)),e&2){let o=P(4);g("items",M(1,3,i.configItems$)??w(5,S))("showCreate",!0)("itemTemplate",o)}},dependencies:[k,D,$,T],styles:[".platform-agent-configs__back[_ngcontent-%COMP%]{background:none;border:none;padding:0;cursor:pointer;font-size:.875rem;color:var(--color-primary, #007aff);font-family:inherit}.platform-agent-configs__back[_ngcontent-%COMP%]:hover{text-decoration:underline}"],changeDetection:0})};export{q as PlatformAgentConfigsComponent};
1
+ import{a as D}from"./chunk-HMFEXHRI.js";import{b as B}from"./chunk-W7ZS65Y4.js";import{c as x}from"./chunk-P4GNUQZT.js";import{r as $,x as k}from"./chunk-K7JRH3HO.js";import"./chunk-EBAEYY2S.js";import"./chunk-BZ7URUNM.js";import{a as l}from"./chunk-SKBT6DBT.js";import"./chunk-GF3EMWCA.js";import"./chunk-Z6RFJ6L3.js";import"./chunk-OPSHMM4H.js";import{Bb as b,Db as s,Fb as m,Jc as T,Pb as P,S as d,Wa as y,ab as h,bc as w,ca as r,ec as I,fc as M,ga as C,ha as _,i as p,ic as R,lb as v,ma as u,mb as A,rb as g,sb as a,t as c,tb as f}from"./chunk-5NLXR4MK.js";var S=()=>[];function F(n,t){if(n&1){let e=b();a(0,"agentos-agent-config-item",4),s("deleteRequested",function(o){C(e);let E=m(2);return _(E.deleteConfig(o))}),f()}n&2&&g("config",t)("platformMode",!0)}function L(n,t){if(n&1&&v(0,F,1,2,"agentos-agent-config-item",3),n&2){let e,i=t.$implicit,o=m();A((e=o.resolveConfig(i.id))?0:-1,e)}}var q=class n{router=r(x);destroyRef=r(u);agentConfigController=r(B);refresh$=new p(void 0);configs$=this.refresh$.pipe(d(()=>this.agentConfigController.listPlatformAgentsAgentConfig(!0)));configItems$=this.configs$.pipe(c(t=>t.map(e=>({id:e.id??"",name:e.name,description:e.description}))));configsById=new Map;constructor(){this.configs$.pipe(l(this.destroyRef)).subscribe(t=>{this.configsById=new Map(t.map(e=>[e.id??"",e]))})}goBack(){this.router.navigate(["/agentos","admin"])}openCreateForm(){this.router.navigate(["/agentos","admin","agent-configs","new"])}deleteConfig(t){this.agentConfigController.deleteAgentConfig(t.id??"").pipe(l(this.destroyRef)).subscribe(()=>this.refresh$.next())}resolveConfig(t){return this.configsById.get(t)??null}static \u0275fac=function(e){return new(e||n)};static \u0275cmp=y({type:n,selectors:[["agentos-platform-agent-configs"]],decls:5,vars:6,consts:[["agentConfigItemTpl",""],["title","Platform Agent Configs","emptyMessage","No platform agent configs defined yet. Add one above.","cardMinWidth","400px",3,"createRequested","items","showCreate","itemTemplate"],["toolbar-start","","icon","arrow_back","title","Back",3,"action"],[3,"config","platformMode"],[3,"deleteRequested","config","platformMode"]],template:function(e,i){if(e&1&&(a(0,"ds-entity-list",1),I(1,"async"),s("createRequested",function(){return i.openCreateForm()}),a(2,"ds-icon-button",2),s("action",function(){return i.goBack()}),f()(),h(3,L,1,1,"ng-template",null,0,R)),e&2){let o=P(4);g("items",M(1,3,i.configItems$)??w(5,S))("showCreate",!0)("itemTemplate",o)}},dependencies:[k,D,$,T],styles:[".platform-agent-configs__back[_ngcontent-%COMP%]{background:none;border:none;padding:0;cursor:pointer;font-size:.875rem;color:var(--color-primary, #007aff);font-family:inherit}.platform-agent-configs__back[_ngcontent-%COMP%]:hover{text-decoration:underline}"],changeDetection:0})};export{q as PlatformAgentConfigsComponent};