@whoz-oss/coday-client 0.249.4 → 0.249.6

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 (73) hide show
  1. package/browser/{chunk-nHbbuVx2.js → chunk-3_ejZSiX.js} +1 -1
  2. package/browser/{chunk-p1EUiu98.js → chunk-3x6JTc-Q.js} +1 -1
  3. package/browser/{chunk-CSzw8H2F.js → chunk-8Eyic2K4.js} +1 -1
  4. package/browser/{chunk-BhlAZzwj.js → chunk-9yQCwEpD.js} +1 -1
  5. package/browser/{chunk-BC_2TEa6.js → chunk-B8vTtlfh.js} +1 -1
  6. package/browser/{chunk-CgrWMGhT.js → chunk-BAmsPD3r.js} +1 -1
  7. package/browser/{chunk-BLwyktBH.js → chunk-BBLhUbcZ.js} +4 -4
  8. package/browser/{chunk-BUF2p97y.js → chunk-BMgmcV4B.js} +1 -1
  9. package/browser/{chunk-2TapTaXG.js → chunk-BRXCNJvv.js} +1 -1
  10. package/browser/{chunk-BtVK9hVG.js → chunk-BUz3EUUk.js} +1 -1
  11. package/browser/{chunk-BlR-g_sS.js → chunk-BVn3NXYI.js} +1 -1
  12. package/browser/{chunk-Dlm3_p0t.js → chunk-BXQlLEq4.js} +2 -2
  13. package/browser/{chunk-CBe69s-2.js → chunk-BY12tEuK.js} +1 -1
  14. package/browser/{chunk-Sc506DO8.js → chunk-BZI3JT54.js} +1 -1
  15. package/browser/{chunk-De9hRkSc.js → chunk-Ba9oGMbp.js} +1 -1
  16. package/browser/{chunk-BkD_xP5e.js → chunk-BbBDsahP.js} +1 -1
  17. package/browser/{chunk-BPTzJwdV.js → chunk-BfeoBGQ9.js} +1 -1
  18. package/browser/{chunk-B4aBp6WW.js → chunk-Bm3jLRpw.js} +1 -1
  19. package/browser/{chunk-B6HBR6l3.js → chunk-BmXT79gZ.js} +1 -1
  20. package/browser/{chunk-CwUIxEoO.js → chunk-BuvPMEL0.js} +2 -2
  21. package/browser/{chunk-anmUJQp9.js → chunk-BwFdftpq.js} +1 -1
  22. package/browser/{chunk-BaP2JhEB.js → chunk-C5a0dF7k.js} +1 -1
  23. package/browser/{chunk-DwJCq7KC.js → chunk-C5iStkq3.js} +1 -1
  24. package/browser/{chunk-DoYeTXOn.js → chunk-C7dWjJdY.js} +2 -2
  25. package/browser/{chunk-DLXkxUg9.js → chunk-C7yIemdX.js} +1 -1
  26. package/browser/{chunk-6tHPoek7.js → chunk-C8-Us7mG.js} +1 -1
  27. package/browser/{chunk-Bggbx31H.js → chunk-CAtc1ecu.js} +1 -1
  28. package/browser/{chunk-DvXx9y4n.js → chunk-CFsppsJO.js} +1 -1
  29. package/browser/{chunk-BY3C8HLz.js → chunk-CUubHATe.js} +2 -2
  30. package/browser/{chunk-NOr0w_o_.js → chunk-Ce-SqhaH.js} +1 -1
  31. package/browser/{chunk-Cxcbg8Y2.js → chunk-CgJwfnU2.js} +1 -1
  32. package/browser/{chunk-B6DehsQ-.js → chunk-Cie8aEhE.js} +1 -1
  33. package/browser/{chunk-Bi0_x9sA.js → chunk-Clsp8PqN.js} +1 -1
  34. package/browser/{chunk-Pl7edkoq.js → chunk-CmdzwND4.js} +1 -1
  35. package/browser/{chunk-BZZR3aP2.js → chunk-CmjpqALv.js} +1 -1
  36. package/browser/{chunk-BT_iRqki.js → chunk-Cuj0_PIE.js} +1 -1
  37. package/browser/{chunk-BYD-ZEqa.js → chunk-CwOPXZEL.js} +1 -1
  38. package/browser/{chunk-cHZU18W6.js → chunk-CwVIbvMt.js} +1 -1
  39. package/browser/{chunk-Dlx5Rt5V.js → chunk-CyB5bq-B.js} +1 -1
  40. package/browser/{chunk-gI_QNDKB.js → chunk-CyPzVyFW.js} +2 -2
  41. package/browser/{chunk-DITp7n6E.js → chunk-D4BFancP.js} +1 -1
  42. package/browser/{chunk-C7zuPRu9.js → chunk-D4pA968T.js} +1 -1
  43. package/browser/{chunk-spSRZfqJ.js → chunk-DBVltHOO.js} +1 -1
  44. package/browser/{chunk-C4iXIN7X.js → chunk-DEM_1kYL.js} +1 -1
  45. package/browser/chunk-DGfCbMIU.js +1 -0
  46. package/browser/chunk-DLdFeD2Y.js +7 -0
  47. package/browser/{chunk-B0kyFx_y.js → chunk-DMseVDyx.js} +1 -1
  48. package/browser/chunk-DRHPWyM_.js +1 -0
  49. package/browser/{chunk-B-LBXHg-.js → chunk-DbPWDOCY.js} +1 -1
  50. package/browser/chunk-DdMCtiIj.js +1 -0
  51. package/browser/{chunk-B_crlzIY.js → chunk-DhoUXdbf.js} +1 -1
  52. package/browser/{chunk-CTYiqe0l.js → chunk-DiH98F5Y.js} +1 -1
  53. package/browser/{chunk-CFLyg-oC.js → chunk-Dl5GYR1f.js} +1 -1
  54. package/browser/{chunk-DrMoRmsm.js → chunk-DmDjr28S.js} +1 -1
  55. package/browser/{chunk-BWdSq8vF.js → chunk-Dszi4fsk.js} +1 -1
  56. package/browser/{chunk-DVQQW6km.js → chunk-Dt4HP_6r.js} +1 -1
  57. package/browser/{chunk-BzkpZO0i.js → chunk-DtRowKlH.js} +1 -1
  58. package/browser/{chunk-ZXaT_xHg.js → chunk-EWpqubAu.js} +1 -1
  59. package/browser/{chunk-DLsoHfhP.js → chunk-FyGR8D8l.js} +1 -1
  60. package/browser/{chunk-CsOfELwl.js → chunk-IRYK8gQC.js} +1 -1
  61. package/browser/{chunk-D2yqDA1u.js → chunk-SP2AM0SK.js} +1 -1
  62. package/browser/{chunk-CWFDInt7.js → chunk-cd-U8aJW.js} +1 -1
  63. package/browser/{chunk-CvL11Svz.js → chunk-m-JrYooj.js} +1 -1
  64. package/browser/{chunk-Cr2mSoCg.js → chunk-maGoHfNW.js} +1 -1
  65. package/browser/{chunk-BRKM9jBe.js → chunk-yZXrhXjq.js} +1 -1
  66. package/browser/{chunk-DcWLC4S7.js → chunk-zdTdqHNW.js} +1 -1
  67. package/browser/index.html +1 -1
  68. package/browser/{main-ZCJEGFW3.js → main-RF3N53YL.js} +1 -1
  69. package/package.json +1 -1
  70. package/browser/chunk-BTNW2iz6.js +0 -1
  71. package/browser/chunk-CtWA9Wcw.js +0 -7
  72. package/browser/chunk-DVJHLBDM.js +0 -1
  73. package/browser/chunk-ZrkAX8bu.js +0 -1
@@ -1 +0,0 @@
1
- import {bR as ga,a7 as ha,S as pa,cD as Rd}from'./main-ZCJEGFW3.js';function i(t,o,p){return t.pipe(ga(()=>o().pipe(ha(()=>pa(p)))),Rd({bufferSize:1,refCount:true}))}export{i};
@@ -1 +0,0 @@
1
- import {g,bl as Sm,R as Re,H as Hi,m as mT,A as Aw,i as hr,j as Gn,v as vs,l as Ag,W as WC,k as dl,a3 as HI,n as eC,af as Dg,ag as fT,T as TC,X as XE,r as Tg,a6 as $I,t as tC,Z as z,bk as Mt,_ as Ue$1,am as Gm,$ as zt,a0 as jt,a1 as Vt,a2 as Nt,p as pr,bm as Xt,ai as Jg,aj as KC,q as oC,bn as nC,a8 as Zg,ak as Xg,x as iC,a5 as ml,ac as mC,a9 as dC,aa as If,ab as wf,bo as hl,bp as gl,ah as rT,b3 as oT,y as Hg}from'./main-ZCJEGFW3.js';import {d}from'./chunk-nHbbuVx2.js';import {W,k as ke,s as se}from'./chunk-DcWLC4S7.js';import {T as Tn,S as Sn,n as nt$1,a as ae,l as le,c as ce}from'./chunk-spSRZfqJ.js';import {W as Wn,i as it,n as nt,I as In,k as ke$1,L as Le$1,g as ga,E as En}from'./chunk-BLwyktBH.js';import'./chunk-BUF2p97y.js';import {y as yt,w as wt,t as ti,Z as Zn,c as cn,Y as Ye$1,a as wt$1,m as mn,g as gt}from'./chunk-Pl7edkoq.js';function Ue(s,i){if(s&1){let e=dC();vs(0,"div",9)(1,"mat-form-field",18)(2,"mat-label"),WC(3),dl(),vs(4,"textarea",19),Jg("ngModelChange",function(r){let m=If(e).$index,D=mC();return KC(D.commands[m],r)||(D.commands[m]=r),wf(r)}),dl(),HI(),vs(5,"mat-hint"),WC(6,"Use placeholder for dynamic values"),dl()(),vs(7,"button",20),Ag("click",function(){let r=If(e).$index,m=mC();return wf(m.removeCommand(r))}),vs(8,"mat-icon"),WC(9,"delete"),dl()()();}if(s&2){let e=i.$index,t=mC();XE(3),ml("Prompt ",e+1),XE(),Xg("ngModel",t.commands[e]),$I(),XE(3),Tg("disabled",t.commands.length===1);}}function Ne(s,i){if(s&1){let e=dC();vs(0,"div",10)(1,"h3"),WC(2,"Save to"),dl(),vs(3,"div",21)(4,"label",22)(5,"input",23),Jg("ngModelChange",function(r){If(e);let m=mC();return KC(m.source,r)||(m.source=r),wf(r)}),dl(),HI(),vs(6,"div",24)(7,"div",25)(8,"span",26),WC(9,"\u{1F464}"),dl(),vs(10,"span",27),WC(11,"Local"),dl()(),vs(12,"p",28),WC(13,"Personal prompt in ~/.coday/... (not committed)"),dl()()(),vs(14,"label",22)(15,"input",29),Jg("ngModelChange",function(r){If(e);let m=mC();return KC(m.source,r)||(m.source=r),wf(r)}),dl(),HI(),vs(16,"div",24)(17,"div",25)(18,"span",26),WC(19,"\u{1F4E6}"),dl(),vs(20,"span",27),WC(21,"Project"),dl()(),vs(22,"p",28),WC(23,"Shared prompt in ./prompts/ (committable)"),dl()()()(),vs(24,"p",30),WC(25,"Storage location is permanent and cannot be changed after creation"),dl()();}if(s&2){let e=mC();XE(4),Hg("selected",e.source==="local"),XE(),Xg("ngModel",e.source),$I(),XE(9),Hg("selected",e.source==="project"),XE(),Xg("ngModel",e.source),$I();}}function je(s,i){if(s&1&&(vs(0,"div",11)(1,"h3"),WC(2,"Storage Location"),dl(),vs(3,"div",31)(4,"span",26),WC(5),dl(),vs(6,"span",27),WC(7),dl()(),vs(8,"p",30),WC(9,"Cannot be changed after creation"),dl()()),s&2){let e=mC();XE(3),Hg("badge-local",e.source==="local")("badge-project",e.source==="project"),XE(2),Zg(e.source==="local"?"\u{1F464}":"\u{1F4E6}"),XE(2),Zg(e.source==="local"?"Local":"Project");}}function qe(s,i){if(s&1){let e=dC();vs(0,"div",12)(1,"label",32)(2,"input",33),Jg("ngModelChange",function(r){If(e);let m=mC();return KC(m.webhookEnabled,r)||(m.webhookEnabled=r),wf(r)}),dl(),HI(),vs(3,"span"),WC(4,"Enable webhook"),dl()(),vs(5,"p",30),WC(6,"Enable webhook to trigger this prompt via HTTP POST"),dl()();}if(s&2){let e=mC();XE(2),Xg("ngModel",e.webhookEnabled),$I();}}function He(s,i){if(s&1){let e=dC();vs(0,"div",13)(1,"div",34)(2,"mat-icon",35),WC(3,"link"),dl(),vs(4,"h4"),WC(5,"Webhook URL"),dl()(),vs(6,"div",36)(7,"p",37),WC(8),dl(),vs(9,"button",38),Ag("click",function(){If(e);let r=mC();return wf(r.copyWebhookUrl())}),vs(10,"mat-icon"),WC(11,"content_copy"),dl(),vs(12,"span"),WC(13,"Copy URL"),dl()()(),vs(14,"p",30),WC(15,"Use this URL to trigger the prompt via HTTP POST"),dl()();}if(s&2){let e=mC();XE(8),Zg(e.getWebhookUrl());}}function Ye(s,i){if(s&1&&(vs(0,"div",14)(1,"mat-icon"),WC(2,"error"),dl(),vs(3,"span"),WC(4),dl()()),s&2){let e=mC();XE(4),Zg(e.errorMessage);}}var S=class s{promptApi=g(d);dialogRef=g(z);configApi=g(W);snackBar=g(Mt);name="";description="";commands=[""];webhookEnabled=false;threadLifetime="";source="local";isSaving=false;errorMessage="";isAdmin=false;isEditMode=false;promptId="";data=g(Ue$1);constructor(){this.isEditMode=this.data.mode==="edit";}ngOnInit(){this.configApi.getUserConfig().subscribe({next:i=>{this.isAdmin=i.groups?.includes("CODAY_ADMIN")??false;},error:i=>{console.error("[PROMPT_FORM] Error loading user config:",i),this.isAdmin=false;}}),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",false):true:(this.errorMessage="Description is required",false):(this.errorMessage="Name is required",false)}save(){if(this.errorMessage="",!this.validateForm())return;let i=this.commands.filter(e=>e.trim());if(this.isSaving=true,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=false,this.dialogRef.close(true);},error:t=>{console.error("Error updating prompt:",t),this.errorMessage=t?.error?.error||t?.message||"Failed to update prompt",this.isSaving=false;}});}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=false,this.dialogRef.close(true);},error:t=>{console.error("Error creating prompt:",t),this.errorMessage=t?.error?.error||t?.message||"Failed to create prompt",this.isSaving=false;}});}}cancel(){this.dialogRef.close(false);}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=Aw({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&&(vs(0,"h2",0),WC(1),dl(),vs(2,"mat-dialog-content")(3,"div",1)(4,"mat-form-field",2)(5,"mat-label"),WC(6,"Name"),dl(),vs(7,"input",3),Jg("ngModelChange",function(m){return KC(t.name,m)||(t.name=m),m}),Ag("blur",function(){return t.normalizeName()}),dl(),HI(),vs(8,"mat-hint"),WC(9,"A descriptive name (spaces and punctuation will be replaced with hyphens), will be used as command name"),dl()(),vs(10,"mat-form-field",2)(11,"mat-label"),WC(12,"Description"),dl(),vs(13,"textarea",4),Jg("ngModelChange",function(m){return KC(t.description,m)||(t.description=m),m}),dl(),HI(),vs(14,"mat-hint"),WC(15,"Explain the purpose of this prompt, helps for searchability"),dl()(),vs(16,"div",5)(17,"div",6)(18,"h3"),WC(19,"Prompts"),dl(),vs(20,"button",7),Ag("click",function(){return t.addCommand()}),vs(21,"mat-icon"),WC(22,"add"),dl()()(),vs(23,"div",8),oC(24,Ue,10,3,"div",9,nC),dl()(),eC(26,Ne,26,6,"div",10),eC(27,je,10,6,"div",11),eC(28,qe,7,1,"div",12),eC(29,He,16,1,"div",13),eC(30,Ye,5,1,"div",14),dl()(),vs(31,"mat-dialog-actions",15)(32,"button",16),Ag("click",function(){return t.cancel()}),WC(33,"Cancel"),dl(),vs(34,"button",17),Ag("click",function(){return t.save()}),WC(35),dl()()),e&2&&(XE(),Zg(t.isEditMode?"Edit Prompt":"Create Prompt"),XE(6),Xg("ngModel",t.name),$I(),XE(6),Xg("ngModel",t.description),$I(),XE(11),iC(t.commands),XE(2),tC(t.isEditMode?-1:26),XE(),tC(t.isEditMode?27:-1),XE(),tC(t.isAdmin?28:-1),XE(),tC(t.isEditMode&&t.webhookEnabled&&t.isAdmin?29:-1),XE(),tC(t.errorMessage?30:-1),XE(2),Tg("disabled",t.isSaving),XE(2),Tg("disabled",t.isSaving),XE(),ml(" ",t.isSaving?"Saving...":"Save"," "));},dependencies:[Gm,ti,Ye$1,wt$1,mn,Zn,gt,cn,zt,jt,Vt,Nt,hr,pr,Gn,Tn,Sn,nt$1,ae,le,ce,yt,wt,Xt],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}"],changeDetection:1})};var Ge=()=>[],Ke=s=>({id:s});function Je(s,i){if(s&1&&(vs(0,"div",6),WC(1),dl()),s&2){let e=mC();XE(),Zg(e.errorMessage());}}function Qe(s,i){if(s&1){let e=dC();vs(0,"ds-entity-card",8),Ag("selected",function(r){If(e);let m=mC();return wf(m.onEdit(r))}),hl(1,9),vs(2,"button",10),Ag("click",function(r){return r.stopPropagation()}),vs(3,"mat-icon"),WC(4,"more_vert"),dl()(),gl(),dl();}if(s&2){let e=i.$implicit;mC();let t=TC(11);Tg("id",e.id)("name",e.name)("description",e.description)("badges",e.badges??rT(6,Ge)),XE(2),Tg("matMenuTriggerFor",t)("matMenuTriggerData",oT(7,Ke,e.id));}}function Xe(s,i){if(s&1){let e=dC();vs(0,"button",11),Ag("click",function(){If(e);let r=mC().id,m=mC();return wf(m.onToggleWebhook(r))}),vs(1,"mat-icon"),WC(2),dl(),WC(3),dl();}if(s&2){let e=mC().id,t=mC();XE(2),Zg(t.isWebhookEnabled(e)?"link_off":"link"),XE(),ml(" ",t.isWebhookEnabled(e)?"Disable webhook":"Enable webhook"," ");}}function Ze(s,i){if(s&1){let e=dC();vs(0,"button",11),Ag("click",function(){let r=If(e).id,m=mC();return wf(m.onEdit(r))}),vs(1,"mat-icon"),WC(2,"edit"),dl(),WC(3," Edit "),dl(),eC(4,Xe,4,2,"button",12),vs(5,"button",13),Ag("click",function(){let r=If(e).id,m=mC();return wf(m.onDelete(r))}),vs(6,"mat-icon"),WC(7,"delete"),dl(),WC(8," Delete "),dl();}if(s&2){let e=mC();XE(4),tC(e.isAdmin()?4:-1);}}var Ie="system",Le=class s{promptApi=g(d);configApi=g(W);location=g(Sm);dialog=g(Re);prompts=Hi([]);isLoading=Hi(false);errorMessage=Hi(null);showOnlyMine=Hi(true);isAdmin=Hi(false);currentUsername=Hi("");promptItems=mT(()=>{let i=this.prompts(),e=this.currentUsername(),r=this.showOnlyMine()&&e?i.filter(p=>this.isMyPrompt(p)):i,D=[...new Set(r.map(p=>p.createdBy))].sort((p,k)=>p===e&&k!==e?-1:k===e&&p!==e||p===Ie?1:k===Ie?-1:p.localeCompare(k)),H=[];for(let p of D){let k=p===e?`${p} (you)`:p;for(let F of r.filter(Ae=>Ae.createdBy===p))H.push({id:F.id,name:F.name,description:F.description,badges:this.buildBadges(F),groupKey:p,groupLabel:k});}return H});ngOnInit(){this.configApi.getUserConfig().subscribe({next:i=>{this.isAdmin.set(i.groups?.includes("CODAY_ADMIN")??false),this.currentUsername.set(i.username??"");},error:()=>this.isAdmin.set(false)}),this.loadPrompts();}loadPrompts(){this.isLoading.set(true),this.promptApi.listPrompts().subscribe({next:i=>{this.prompts.set(i.filter(e=>!e.id.startsWith("builtin"))),this.isLoading.set(false);},error:i=>{this.errorMessage.set(i?.error?.error??"Failed to load prompts"),this.isLoading.set(false);}});}onBack(){this.location.back();}onCreate(){this.dialog.open(S,{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(S,{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??false}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=Aw({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&&(vs(0,"div",2)(1,"ds-entity-list",3),Ag("createRequested",function(){return t.onCreate()}),vs(2,"button",4),Ag("click",function(){return t.onBack()}),vs(3,"mat-icon"),WC(4,"chevron_left"),dl()(),vs(5,"mat-slide-toggle",5),Ag("ngModelChange",function(m){return t.showOnlyMine.set(m)}),WC(6," Mine "),dl(),HI(),dl(),eC(7,Je,2,1,"div",6),dl(),Dg(8,Qe,5,9,"ng-template",null,0,fT),vs(10,"mat-menu",null,1),Dg(12,Ze,9,1,"ng-template",7),dl()),e&2){let r=TC(9);XE(),Tg("items",t.promptItems())("showCreate",true)("itemTemplate",r),XE(4),Tg("ngModel",t.showOnlyMine()),$I(),XE(2),tC(t.errorMessage()?7:-1);}},dependencies:[Wn,it,nt,hr,Gn,yt,wt,ke,se,In,ke$1,Le$1,ga,En,ti,Zn,cn],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}"],changeDetection:1})};export{Le as PromptListComponent};