@whoz-oss/coday-factory-cockpit 0.0.0-workstream-forge.47 → 0.0.0-workstream-forge.49

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.
@@ -1 +1 @@
1
- import {a5 as je,h,i as Ze,cK as g,n as nT,bA as yr,bz as R}from'./main-GN2IPP5X.js';function U(n){n||(n=h(je));let e=new R(t=>{if(n.destroyed){t.next();return}return n.onDestroy(t.next.bind(t))});return t=>t.pipe(yr(e))}function T(n,e){let d=!e?.manualCleanup?e?.injector?.get(je)??h(je):null,l=p(e?.equal),o;e?.requireSync?o=Ze({kind:0},{equal:l}):o=Ze({kind:1,value:e?.initialValue},{equal:l});let i,b=n.subscribe({next:r=>o.set({kind:1,value:r}),error:r=>{o.set({kind:2,error:r}),i?.();},complete:()=>{i?.();}});if(e?.requireSync&&o().kind===0)throw new g(601,false);return i=d?.onDestroy(b.unsubscribe.bind(b)),nT(()=>{let r=o();switch(r.kind){case 1:return r.value;case 2:throw r.error;case 0:throw new g(601,false)}},{equal:e?.equal})}function p(n=Object.is){return (e,t)=>e.kind===1&&t.kind===1&&n(e.value,t.value)}export{T,U};
1
+ import {ac as je,h,Z as Ze,cK as g,r as aT,bA as vr,bz as R}from'./main-R4PLQRBB.js';function U(n){n||(n=h(je));let e=new R(t=>{if(n.destroyed){t.next();return}return n.onDestroy(t.next.bind(t))});return t=>t.pipe(vr(e))}function T(n,e){let d=!e?.manualCleanup?e?.injector?.get(je)??h(je):null,l=p(e?.equal),o;e?.requireSync?o=Ze({kind:0},{equal:l}):o=Ze({kind:1,value:e?.initialValue},{equal:l});let i,b=n.subscribe({next:r=>o.set({kind:1,value:r}),error:r=>{o.set({kind:2,error:r}),i?.();},complete:()=>{i?.();}});if(e?.requireSync&&o().kind===0)throw new g(601,false);return i=d?.onDestroy(b.unsubscribe.bind(b)),aT(()=>{let r=o();switch(r.kind){case 1:return r.value;case 2:throw r.error;case 0:throw new g(601,false)}},{equal:e?.equal})}function p(n=Object.is){return (e,t)=>e.kind===1&&t.kind===1&&n(e.value,t.value)}export{T,U};
@@ -1 +1 @@
1
- import {I}from'./chunk-nhm8xk1A.js';import {e as ee$1}from'./chunk-IkmBS9rU.js';import {U}from'./chunk-CUCsmBSU.js';import {c as ci,Z as Zt,e as ei,n as ni,t as ti,J as Jt,r as ri,i as ii,o as oi,s as si,a as ai}from'./chunk-BEmYKpv0.js';import {_}from'./chunk-BTNOhGYT.js';import {h,a5 as je,i as Ze,p as pb,V as Vs,aE as O,x as xe,I as IW,_ as _W,A as A8,a as x8,f as fa,b as kC,E as Ed,v as ni$1,d as Yg,z as zg,bS as _d,b4 as jg,bT as Id,Q as Qo,$ as $g,a2 as Cd,y as ri$1,ar as gy,u as uy,e as eC,S as sC,a0 as Vp,a1 as Hp}from'./main-GN2IPP5X.js';import {c}from'./chunk-CH91lkh4.js';function te(e,t){e&1&&(fa(0,"div",5)(1,"mat-icon",29),kC(2,"gpp_bad"),Ed(),fa(3,"span"),kC(4),Ed()()),e&2&&(Qo(4),uy(t));}function ne(e,t){e&1&&(fa(0,"span",11),kC(1),Ed()),e&2&&(Qo(),uy(t.name));}function ie(e,t){e&1&&(fa(0,"div",15),kC(1),Ed()),e&2&&(Qo(),uy(t));}function oe(e,t){e&1&&(fa(0,"th",30),kC(1,"Type"),Ed());}function ae(e,t){if(e&1&&(fa(0,"td",31),kC(1),Ed()),e&2){let i=t.$implicit;Qo(),uy(i.workflowType);}}function re(e,t){e&1&&(fa(0,"th",30),kC(1,"Version"),Ed());}function de(e,t){if(e&1&&(fa(0,"td",32),kC(1),Ed()),e&2){let i=t.$implicit;Qo(),uy(i.version);}}function le(e,t){e&1&&(fa(0,"th",30),kC(1,"Hash"),Ed());}function se(e,t){if(e&1&&(fa(0,"td",33),kC(1),Ed()),e&2){let i=t.$implicit;Qo(),uy(i.definitionHash);}}function me(e,t){e&1&&zg(0,"th",30);}function fe(e,t){if(e&1){let i=eC();fa(0,"td",34)(1,"button",35),Yg("click",function(){let l=Vp(i).$implicit,m=sC();return Hp(m.deleteDefinition(l))}),kC(2),Ed()();}if(e&2){let i=t.$implicit,n=sC();Qo(),$g("disabled",n.adminDisabled()||n.deletingKey()===n.definitionKey(i)),Qo(),Cd(" ",n.deletingKey()===n.definitionKey(i)?"Deleting\u2026":"Delete"," ");}}function pe(e,t){e&1&&zg(0,"tr",36);}function ce(e,t){e&1&&zg(0,"tr",37);}function ue(e,t){if(e&1&&(fa(0,"p",28),kC(1),Ed()),e&2){let i=sC();Qo(),Cd(" ",i.definitionsLoading()?"Loading\u2026":"No definitions registered."," ");}}var Z="FORBIDDEN_ADMIN_REQUIRED";function ge(e){let t=e?.status===403||e?.code===Z,i=typeof e?.message=="string"&&e.message.trim()?e.message.trim():null;return t?{forbidden:true,message:`Access denied: ${i??"admin rights required"} (${Z})`}:{forbidden:false,message:i??"Admin command failed (network or server error)."}}var ee=class e{state=h(c);dialog=h(ee$1);destroyRef=h(je);adminDisabled=Ze(false);forbiddenError=Ze(null);definitions=this.state.definitions;definitionsLoading=this.state.loading;uploading=this.state.uploading;selectedFile=Ze(null);definitionsError=Ze(null);deletingKey=this.state.deletingKey;definitionColumns=["workflowType","version","definitionHash","actions"];constructor(){h(pb).crumbs.set([{label:"Workflow definitions"}]),Vs(()=>{let t=this.state.error();t&&this.applyError(t,i=>this.definitionsError.set(i));}),this.loadDefinitions();}loadDefinitions(){this.adminDisabled()||this.state.load();}onFileSelected(t){let i=t.target;this.selectedFile.set(i.files?.[0]??null);}uploadDefinition(){if(this.adminDisabled()||this.uploading())return;let t=this.selectedFile();if(!t){this.definitionsError.set("Please select a JSON definition file.");return}this.definitionsError.set(null),this.state.upload(t).pipe(U(this.destroyRef)).subscribe({next:()=>{this.selectedFile.set(null),this.loadDefinitions();},error:i=>{this.applyError(i,n=>this.definitionsError.set(n));}});}deleteDefinition(t){if(this.adminDisabled()||this.deletingKey())return;let i=String(t.workflowType??"").trim(),n=String(t.version??"").trim();!i||!n||this.confirm({title:"Delete definition",message:"This will permanently delete the workflow definition. Already running executions are not affected.",detail:`${i}@${n}`,confirmLabel:"Delete",destructive:true}).pipe(U(this.destroyRef)).subscribe(l=>{l&&(this.definitionsError.set(null),this.state.delete(i,n).pipe(U(this.destroyRef)).subscribe({next:()=>this.loadDefinitions(),error:m=>{this.applyError(m,D=>this.definitionsError.set(D));}}));});}definitionKey(t){return `${t.workflowType??""}@${t.version??""}`}confirm(t){return this.dialog.open(I,{data:t,width:"440px"}).afterClosed().pipe(O(i=>i===true))}applyError(t,i){let n=ge(t);n.forbidden?(this.adminDisabled.set(true),this.forbiddenError.set(n.message)):i(n.message);}static \u0275fac=function(i){return new(i||e)};static \u0275cmp=xe({type:e,selectors:[["sf-admin-page"]],features:[gy([c])],decls:44,vars:13,consts:[[1,"page"],[1,"page-head"],[1,"titles"],[1,"sf-muted"],["dot","",3,"tone"],["role","alert","data-admin-forbidden","true",1,"banner","banner--error"],["data-admin-definitions","true",1,"section","sf-panel"],[1,"section-title"],[1,"sf-muted","section-desc"],[1,"row","file-row"],["type","file","accept",".json,application/json","data-admin-definition-file","true",3,"change","disabled"],["data-admin-definition-filename","true",1,"result-chip"],[1,"sf-spacer"],["mat-flat-button","","data-admin-definition-upload","true",1,"sf-primary",3,"click","disabled"],["mat-stroked-button","","data-admin-definition-refresh","true",1,"sf-secondary",3,"click","disabled"],["role","alert","data-admin-definition-error","true",1,"banner","banner--warn"],["mat-table","",1,"definitions-table",3,"dataSource"],["matColumnDef","workflowType"],["mat-header-cell","",4,"matHeaderCellDef"],["mat-cell","","class","sf-mono","data-definition-type","true",4,"matCellDef"],["matColumnDef","version"],["mat-cell","","class","sf-mono","data-definition-version","true",4,"matCellDef"],["matColumnDef","definitionHash"],["mat-cell","","class","sf-mono","data-definition-hash","true",4,"matCellDef"],["matColumnDef","actions"],["mat-cell","",4,"matCellDef"],["mat-header-row","",4,"matHeaderRowDef"],["mat-row","",4,"matRowDef","matRowDefColumns"],["data-definition-empty","true",1,"sf-muted","empty"],["aria-hidden","true"],["mat-header-cell",""],["mat-cell","","data-definition-type","true",1,"sf-mono"],["mat-cell","","data-definition-version","true",1,"sf-mono"],["mat-cell","","data-definition-hash","true",1,"sf-mono"],["mat-cell",""],["mat-stroked-button","","data-admin-definition-delete","true",1,"sf-danger",3,"click","disabled"],["mat-header-row",""],["mat-row",""]],template:function(i,n){if(i&1&&(fa(0,"div",0)(1,"header",1)(2,"div",2)(3,"h1"),kC(4,"Workflow definitions"),Ed(),fa(5,"p",3),kC(6,"Import and manage registered workflow definitions."),Ed()(),fa(7,"sf-status-chip",4),kC(8),Ed()(),ni$1(9,te,5,1,"div",5),fa(10,"section",6)(11,"h2",7),kC(12,"Workflow definitions"),Ed(),fa(13,"p",8),kC(14,"Import a JSON definition (v1 format) and manage registered definitions."),Ed(),fa(15,"div",9)(16,"input",10),Yg("change",function(m){return n.onFileSelected(m)}),Ed(),ni$1(17,ne,2,1,"span",11),zg(18,"span",12),fa(19,"button",13),Yg("click",function(){return n.uploadDefinition()}),fa(20,"mat-icon"),kC(21,"upload"),Ed(),kC(22),Ed(),fa(23,"button",14),Yg("click",function(){return n.loadDefinitions()}),fa(24,"mat-icon"),kC(25,"refresh"),Ed(),kC(26," Refresh "),Ed()(),ni$1(27,ie,2,1,"div",15),fa(28,"table",16),_d(29,17),jg(30,oe,2,0,"th",18)(31,ae,2,1,"td",19),Id(),_d(32,20),jg(33,re,2,0,"th",18)(34,de,2,1,"td",21),Id(),_d(35,22),jg(36,le,2,0,"th",18)(37,se,2,1,"td",23),Id(),_d(38,24),jg(39,me,1,0,"th",18)(40,fe,3,2,"td",25),Id(),jg(41,pe,1,0,"tr",26)(42,ce,1,0,"tr",27),Ed(),ni$1(43,ue,2,1,"p",28),Ed()()),i&2){let l,m,D;Qo(7),$g("tone",n.adminDisabled()?"red":"green"),Qo(),Cd(" ",n.adminDisabled()?"Access denied":"Admin"," "),Qo(),ri$1((l=n.forbiddenError())?9:-1,l),Qo(7),$g("disabled",n.adminDisabled()||n.uploading()),Qo(),ri$1((m=n.selectedFile())?17:-1,m),Qo(2),$g("disabled",n.adminDisabled()||n.uploading()),Qo(3),Cd(" ",n.uploading()?"Importing\u2026":"Import definition"," "),Qo(),$g("disabled",n.adminDisabled()||n.definitionsLoading()),Qo(4),ri$1((D=n.definitionsError())?27:-1,D),Qo(),$g("dataSource",n.definitions()),Qo(13),$g("matHeaderRowDef",n.definitionColumns),Qo(),$g("matRowDefColumns",n.definitionColumns),Qo(),ri$1(n.definitions().length===0?43:-1);}},dependencies:[IW,_W,A8,x8,ci,Zt,ei,ni,ti,Jt,ri,ii,oi,si,ai,_],styles:[".page[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:18px;max-width:1100px}.page-head[_ngcontent-%COMP%]{display:flex;align-items:flex-end;gap:16px}.titles[_ngcontent-%COMP%]{flex:1;display:flex;flex-direction:column;gap:4px}h1[_ngcontent-%COMP%]{margin:0;font-size:28px;font-weight:800;letter-spacing:-.01em}.titles[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{margin:0;font-size:14px}.section[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:12px;padding:20px}.section-title[_ngcontent-%COMP%]{margin:0;font-size:18px;font-weight:700}.section-desc[_ngcontent-%COMP%]{margin:0;font-size:13.5px}.row[_ngcontent-%COMP%]{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.file-row[_ngcontent-%COMP%]{gap:10px}.file-row[_ngcontent-%COMP%] input[type=file][_ngcontent-%COMP%]{color:var(--sf-text-2);font-size:13px}.field[_ngcontent-%COMP%]{width:100%;max-width:480px}.result[_ngcontent-%COMP%]{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding-top:4px}.result-chip[_ngcontent-%COMP%]{display:inline-flex;align-items:center;height:26px;padding:0 12px;border-radius:999px;border:1px solid var(--sf-outline-strong);background:var(--sf-surface-2);color:var(--sf-text-2);font-size:13px;font-weight:600}.result-chip--success[_ngcontent-%COMP%]{color:#6ee79a;border-color:#22583a;background:#0e1f16}.result-chip--error[_ngcontent-%COMP%]{color:#f58f8f;border-color:#6b2a2e;background:#1f1114}.timestamp[_ngcontent-%COMP%]{color:var(--sf-text-muted);font-size:12.5px}.banner[_ngcontent-%COMP%]{display:flex;align-items:flex-start;gap:10px;padding:12px 14px;border-radius:10px;border:1px solid;font-size:13.5px;font-weight:600}.banner[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{width:18px;height:18px;font-size:18px}.banner--error[_ngcontent-%COMP%]{color:#f58f8f;border-color:#6b2a2e;background:#1f1114}.banner--warn[_ngcontent-%COMP%]{color:var(--sf-tertiary);border-color:#5a4818;background:#1d180b}.definitions-table[_ngcontent-%COMP%]{width:100%}th.mat-mdc-header-cell[_ngcontent-%COMP%]{background:var(--sf-chrome);font-size:11px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--sf-text-faint)}td.mat-mdc-cell[_ngcontent-%COMP%]{border-bottom-color:#1a1f2c}.empty[_ngcontent-%COMP%]{margin:0;padding:12px 4px;font-size:13.5px}.mat-mdc-unelevated-button.sf-danger[_ngcontent-%COMP%]{background:#6b2a2e;color:#ffd9d9;border-radius:10px;font-weight:700}"]})};export{ee as AdminPageComponent,Z as FORBIDDEN_ADMIN_REQUIRED,ge as describeAdminError};
1
+ import {I}from'./chunk-DGkAOvSG.js';import {e as ee$1}from'./chunk-DECdbS2h.js';import {U}from'./chunk-B6bFaZA9.js';import {c as ci,Z as Zt,e as ei,n as ni,t as ti,J as Jt,r as ri,i as ii,o as oi,s as si,a as ai}from'./chunk-qi8DFb6B.js';import {_}from'./chunk-DbUeQHir.js';import {h,ac as je,Z as Ze,g as gb,A as Hs,aE as O,x as xe,B as BW,j as jW,G as G8,W as W8,p as pa,d as jC,_ as _d,f as oi$1,X as Xg,q as qg,bS as Id,b4 as Hg,bT as wd,J as Jo,i as Gg,a9 as Td,l as ii$1,ar as by,m as fy,y as iC,w as dC,a7 as $p,a8 as zp}from'./main-R4PLQRBB.js';import {c}from'./chunk-DQ8fnaDi.js';function te(e,t){e&1&&(pa(0,"div",5)(1,"mat-icon",29),jC(2,"gpp_bad"),_d(),pa(3,"span"),jC(4),_d()()),e&2&&(Jo(4),fy(t));}function ne(e,t){e&1&&(pa(0,"span",11),jC(1),_d()),e&2&&(Jo(),fy(t.name));}function ie(e,t){e&1&&(pa(0,"div",15),jC(1),_d()),e&2&&(Jo(),fy(t));}function oe(e,t){e&1&&(pa(0,"th",30),jC(1,"Type"),_d());}function ae(e,t){if(e&1&&(pa(0,"td",31),jC(1),_d()),e&2){let i=t.$implicit;Jo(),fy(i.workflowType);}}function re(e,t){e&1&&(pa(0,"th",30),jC(1,"Version"),_d());}function de(e,t){if(e&1&&(pa(0,"td",32),jC(1),_d()),e&2){let i=t.$implicit;Jo(),fy(i.version);}}function le(e,t){e&1&&(pa(0,"th",30),jC(1,"Hash"),_d());}function se(e,t){if(e&1&&(pa(0,"td",33),jC(1),_d()),e&2){let i=t.$implicit;Jo(),fy(i.definitionHash);}}function me(e,t){e&1&&qg(0,"th",30);}function fe(e,t){if(e&1){let i=iC();pa(0,"td",34)(1,"button",35),Xg("click",function(){let l=$p(i).$implicit,m=dC();return zp(m.deleteDefinition(l))}),jC(2),_d()();}if(e&2){let i=t.$implicit,n=dC();Jo(),Gg("disabled",n.adminDisabled()||n.deletingKey()===n.definitionKey(i)),Jo(),Td(" ",n.deletingKey()===n.definitionKey(i)?"Deleting\u2026":"Delete"," ");}}function pe(e,t){e&1&&qg(0,"tr",36);}function ce(e,t){e&1&&qg(0,"tr",37);}function ue(e,t){if(e&1&&(pa(0,"p",28),jC(1),_d()),e&2){let i=dC();Jo(),Td(" ",i.definitionsLoading()?"Loading\u2026":"No definitions registered."," ");}}var Z="FORBIDDEN_ADMIN_REQUIRED";function ge(e){let t=e?.status===403||e?.code===Z,i=typeof e?.message=="string"&&e.message.trim()?e.message.trim():null;return t?{forbidden:true,message:`Access denied: ${i??"admin rights required"} (${Z})`}:{forbidden:false,message:i??"Admin command failed (network or server error)."}}var ee=class e{state=h(c);dialog=h(ee$1);destroyRef=h(je);adminDisabled=Ze(false);forbiddenError=Ze(null);definitions=this.state.definitions;definitionsLoading=this.state.loading;uploading=this.state.uploading;selectedFile=Ze(null);definitionsError=Ze(null);deletingKey=this.state.deletingKey;definitionColumns=["workflowType","version","definitionHash","actions"];constructor(){h(gb).crumbs.set([{label:"Workflow definitions"}]),Hs(()=>{let t=this.state.error();t&&this.applyError(t,i=>this.definitionsError.set(i));}),this.loadDefinitions();}loadDefinitions(){this.adminDisabled()||this.state.load();}onFileSelected(t){let i=t.target;this.selectedFile.set(i.files?.[0]??null);}uploadDefinition(){if(this.adminDisabled()||this.uploading())return;let t=this.selectedFile();if(!t){this.definitionsError.set("Please select a JSON definition file.");return}this.definitionsError.set(null),this.state.upload(t).pipe(U(this.destroyRef)).subscribe({next:()=>{this.selectedFile.set(null),this.loadDefinitions();},error:i=>{this.applyError(i,n=>this.definitionsError.set(n));}});}deleteDefinition(t){if(this.adminDisabled()||this.deletingKey())return;let i=String(t.workflowType??"").trim(),n=String(t.version??"").trim();!i||!n||this.confirm({title:"Delete definition",message:"This will permanently delete the workflow definition. Already running executions are not affected.",detail:`${i}@${n}`,confirmLabel:"Delete",destructive:true}).pipe(U(this.destroyRef)).subscribe(l=>{l&&(this.definitionsError.set(null),this.state.delete(i,n).pipe(U(this.destroyRef)).subscribe({next:()=>this.loadDefinitions(),error:m=>{this.applyError(m,D=>this.definitionsError.set(D));}}));});}definitionKey(t){return `${t.workflowType??""}@${t.version??""}`}confirm(t){return this.dialog.open(I,{data:t,width:"440px"}).afterClosed().pipe(O(i=>i===true))}applyError(t,i){let n=ge(t);n.forbidden?(this.adminDisabled.set(true),this.forbiddenError.set(n.message)):i(n.message);}static \u0275fac=function(i){return new(i||e)};static \u0275cmp=xe({type:e,selectors:[["sf-admin-page"]],features:[by([c])],decls:44,vars:13,consts:[[1,"page"],[1,"page-head"],[1,"titles"],[1,"sf-muted"],["dot","",3,"tone"],["role","alert","data-admin-forbidden","true",1,"banner","banner--error"],["data-admin-definitions","true",1,"section","sf-panel"],[1,"section-title"],[1,"sf-muted","section-desc"],[1,"row","file-row"],["type","file","accept",".json,application/json","data-admin-definition-file","true",3,"change","disabled"],["data-admin-definition-filename","true",1,"result-chip"],[1,"sf-spacer"],["mat-flat-button","","data-admin-definition-upload","true",1,"sf-primary",3,"click","disabled"],["mat-stroked-button","","data-admin-definition-refresh","true",1,"sf-secondary",3,"click","disabled"],["role","alert","data-admin-definition-error","true",1,"banner","banner--warn"],["mat-table","",1,"definitions-table",3,"dataSource"],["matColumnDef","workflowType"],["mat-header-cell","",4,"matHeaderCellDef"],["mat-cell","","class","sf-mono","data-definition-type","true",4,"matCellDef"],["matColumnDef","version"],["mat-cell","","class","sf-mono","data-definition-version","true",4,"matCellDef"],["matColumnDef","definitionHash"],["mat-cell","","class","sf-mono","data-definition-hash","true",4,"matCellDef"],["matColumnDef","actions"],["mat-cell","",4,"matCellDef"],["mat-header-row","",4,"matHeaderRowDef"],["mat-row","",4,"matRowDef","matRowDefColumns"],["data-definition-empty","true",1,"sf-muted","empty"],["aria-hidden","true"],["mat-header-cell",""],["mat-cell","","data-definition-type","true",1,"sf-mono"],["mat-cell","","data-definition-version","true",1,"sf-mono"],["mat-cell","","data-definition-hash","true",1,"sf-mono"],["mat-cell",""],["mat-stroked-button","","data-admin-definition-delete","true",1,"sf-danger",3,"click","disabled"],["mat-header-row",""],["mat-row",""]],template:function(i,n){if(i&1&&(pa(0,"div",0)(1,"header",1)(2,"div",2)(3,"h1"),jC(4,"Workflow definitions"),_d(),pa(5,"p",3),jC(6,"Import and manage registered workflow definitions."),_d()(),pa(7,"sf-status-chip",4),jC(8),_d()(),oi$1(9,te,5,1,"div",5),pa(10,"section",6)(11,"h2",7),jC(12,"Workflow definitions"),_d(),pa(13,"p",8),jC(14,"Import a JSON definition (v1 format) and manage registered definitions."),_d(),pa(15,"div",9)(16,"input",10),Xg("change",function(m){return n.onFileSelected(m)}),_d(),oi$1(17,ne,2,1,"span",11),qg(18,"span",12),pa(19,"button",13),Xg("click",function(){return n.uploadDefinition()}),pa(20,"mat-icon"),jC(21,"upload"),_d(),jC(22),_d(),pa(23,"button",14),Xg("click",function(){return n.loadDefinitions()}),pa(24,"mat-icon"),jC(25,"refresh"),_d(),jC(26," Refresh "),_d()(),oi$1(27,ie,2,1,"div",15),pa(28,"table",16),Id(29,17),Hg(30,oe,2,0,"th",18)(31,ae,2,1,"td",19),wd(),Id(32,20),Hg(33,re,2,0,"th",18)(34,de,2,1,"td",21),wd(),Id(35,22),Hg(36,le,2,0,"th",18)(37,se,2,1,"td",23),wd(),Id(38,24),Hg(39,me,1,0,"th",18)(40,fe,3,2,"td",25),wd(),Hg(41,pe,1,0,"tr",26)(42,ce,1,0,"tr",27),_d(),oi$1(43,ue,2,1,"p",28),_d()()),i&2){let l,m,D;Jo(7),Gg("tone",n.adminDisabled()?"red":"green"),Jo(),Td(" ",n.adminDisabled()?"Access denied":"Admin"," "),Jo(),ii$1((l=n.forbiddenError())?9:-1,l),Jo(7),Gg("disabled",n.adminDisabled()||n.uploading()),Jo(),ii$1((m=n.selectedFile())?17:-1,m),Jo(2),Gg("disabled",n.adminDisabled()||n.uploading()),Jo(3),Td(" ",n.uploading()?"Importing\u2026":"Import definition"," "),Jo(),Gg("disabled",n.adminDisabled()||n.definitionsLoading()),Jo(4),ii$1((D=n.definitionsError())?27:-1,D),Jo(),Gg("dataSource",n.definitions()),Jo(13),Gg("matHeaderRowDef",n.definitionColumns),Jo(),Gg("matRowDefColumns",n.definitionColumns),Jo(),ii$1(n.definitions().length===0?43:-1);}},dependencies:[BW,jW,G8,W8,ci,Zt,ei,ni,ti,Jt,ri,ii,oi,si,ai,_],styles:[".page[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:18px;max-width:1100px}.page-head[_ngcontent-%COMP%]{display:flex;align-items:flex-end;gap:16px}.titles[_ngcontent-%COMP%]{flex:1;display:flex;flex-direction:column;gap:4px}h1[_ngcontent-%COMP%]{margin:0;font-size:28px;font-weight:800;letter-spacing:-.01em}.titles[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{margin:0;font-size:14px}.section[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:12px;padding:20px}.section-title[_ngcontent-%COMP%]{margin:0;font-size:18px;font-weight:700}.section-desc[_ngcontent-%COMP%]{margin:0;font-size:13.5px}.row[_ngcontent-%COMP%]{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.file-row[_ngcontent-%COMP%]{gap:10px}.file-row[_ngcontent-%COMP%] input[type=file][_ngcontent-%COMP%]{color:var(--sf-text-2);font-size:13px}.field[_ngcontent-%COMP%]{width:100%;max-width:480px}.result[_ngcontent-%COMP%]{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding-top:4px}.result-chip[_ngcontent-%COMP%]{display:inline-flex;align-items:center;height:26px;padding:0 12px;border-radius:999px;border:1px solid var(--sf-outline-strong);background:var(--sf-surface-2);color:var(--sf-text-2);font-size:13px;font-weight:600}.result-chip--success[_ngcontent-%COMP%]{color:#6ee79a;border-color:#22583a;background:#0e1f16}.result-chip--error[_ngcontent-%COMP%]{color:#f58f8f;border-color:#6b2a2e;background:#1f1114}.timestamp[_ngcontent-%COMP%]{color:var(--sf-text-muted);font-size:12.5px}.banner[_ngcontent-%COMP%]{display:flex;align-items:flex-start;gap:10px;padding:12px 14px;border-radius:10px;border:1px solid;font-size:13.5px;font-weight:600}.banner[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{width:18px;height:18px;font-size:18px}.banner--error[_ngcontent-%COMP%]{color:#f58f8f;border-color:#6b2a2e;background:#1f1114}.banner--warn[_ngcontent-%COMP%]{color:var(--sf-tertiary);border-color:#5a4818;background:#1d180b}.definitions-table[_ngcontent-%COMP%]{width:100%}th.mat-mdc-header-cell[_ngcontent-%COMP%]{background:var(--sf-chrome);font-size:11px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--sf-text-faint)}td.mat-mdc-cell[_ngcontent-%COMP%]{border-bottom-color:#1a1f2c}.empty[_ngcontent-%COMP%]{margin:0;padding:12px 4px;font-size:13.5px}.mat-mdc-unelevated-button.sf-danger[_ngcontent-%COMP%]{background:#6b2a2e;color:#ffd9d9;border-radius:10px;font-weight:700}"]})};export{ee as AdminPageComponent,Z as FORBIDDEN_ADMIN_REQUIRED,ge as describeAdminError};
@@ -0,0 +1 @@
1
+ import {B as Be,P as Pe$1}from'./chunk-BhmL2pre.js';import {h,M as Mi,ab as ce,ac as je,Z as Ze,r as aT,ad as Rr,ae as Ht,g as gb,A as Hs,af as I,x as xe,ag as Nr,ah as Vr,ai as Yn,aj as Er,ak as Mr,al as is,am as Ss,an as As,N as Nt,B as BW,j as jW,P as Pt,I as It,a as Me$1,S as Se$1,ao as _i,G as G8,W as W8,b as Wr,H as Hr,c as ce$1,p as pa,d as jC,_ as _d,f as oi,X as Xg,e as Xw,ap as BI,q as qg,J as Jo,l as ii,i as Gg,m as fy,aq as HI,k as Jw,a9 as Td,ar as by,as as mb,at as Cc,au as at,av as $e,aw as yr,ax as GW,ay as uc,az as Ut,aA as M,aB as Qw,w as dC}from'./main-R4PLQRBB.js';import {T,U}from'./chunk-B6bFaZA9.js';import {g}from'./chunk-DQ8fnaDi.js';var w=class e{api=h(mb);workflowTypes=Ze([]);namespaces=Ze([]);loading=Ze(false);definitionsError=Ze(null);namespacesError=Ze(null);submitting=Ze(false);submissionError=Ze(null);loadOptions(){this.loading.set(true),this.definitionsError.set(null),this.namespacesError.set(null),Cc({definitions:this.api.getWorkflowDefinitions().pipe(at(t=>(this.definitionsError.set(t),$e([])))),namespaces:this.api.getNamespaces().pipe(at(t=>(this.namespacesError.set(t),$e([]))))}).pipe(yr(()=>this.loading.set(false))).subscribe(({definitions:t,namespaces:r})=>{let l=new Set;for(let f of g(t)){let u=f.workflowType;typeof u=="string"&&u.trim()&&l.add(u.trim());}this.workflowTypes.set([...l]),this.namespaces.set(GW(r));});}launch(t){return this.submitting.set(true),this.submissionError.set(null),this.api.createWorkflowRun(t,uc()).pipe(Ut({error:r=>this.submissionError.set(r)}),yr(()=>this.submitting.set(false)))}static \u0275fac=function(r){return new(r||e)};static \u0275prov=M({token:e,factory:e.\u0275fac})};var Me=(e,t)=>t.id;function Se(e,t){e&1&&(pa(0,"div",4)(1,"mat-icon",24),jC(2,"check_circle"),_d(),pa(3,"span"),jC(4),_d()()),e&2&&(Jo(4),fy(t));}function ke(e,t){e&1&&(pa(0,"div",5)(1,"mat-icon",24),jC(2,"error"),_d(),pa(3,"span"),jC(4),_d()()),e&2&&(Jo(4),fy(t));}function Te(e,t){e&1&&(pa(0,"div",6)(1,"mat-icon",24),jC(2,"warning"),_d(),pa(3,"span"),jC(4),_d()()),e&2&&(Jo(4),fy(t));}function Le(e,t){e&1&&(pa(0,"div",7)(1,"mat-icon",24),jC(2,"error"),_d(),pa(3,"span"),jC(4),_d()()),e&2&&(Jo(4),fy(t));}function Ne(e,t){if(e&1&&(pa(0,"mat-option",13),jC(1),_d()),e&2){let r=t.$implicit;Gg("value",r),Jo(),fy(r);}}function Pe(e,t){if(e&1&&(pa(0,"mat-select",10),Xw(1,Ne,2,2,"mat-option",13,Qw),_d(),BI()),e&2){let r=dC();HI(),Jo(),Jw(r.workflowTypes());}}function Ie(e,t){e&1&&(qg(0,"input",11),BI()),e&2&&HI();}function Oe(e,t){e&1&&(pa(0,"mat-error"),jC(1,"Workflow definition is required."),_d());}function Fe(e,t){if(e&1&&(pa(0,"mat-option",13),jC(1),_d()),e&2){let r=t.$implicit;Gg("value",r.id),Jo(),fy(r.name);}}function Re(e,t){e&1&&(pa(0,"mat-error"),jC(1,"An accessible namespace is required."),_d());}function De(e,t){e&1&&(pa(0,"mat-hint"),jC(1),_d()),e&2&&(Jo(),Td("Namespace id: ",t.id));}function qe(e,t){e&1&&(pa(0,"mat-hint",14),jC(1,"Loading namespaces\u2026"),_d());}function Ae(e,t){e&1&&(pa(0,"mat-hint",15),jC(1,"No AgentOS namespace is available."),_d());}function We(e,t){e&1&&(pa(0,"mat-error"),jC(1,"The objective must not exceed 4,000 characters."),_d());}function Ve(e){let t=e?.code??"UNKNOWN_ERROR",r=e?.message?.trim();return r?`${r} (${t})`:`Launch failed (${t}).`}var Ee=class e{launchState=h(w);store=h(Mi);router=h(ce);destroyRef=h(je);workflowTypes=this.launchState.workflowTypes;namespaces=this.launchState.namespaces;submitting=this.launchState.submitting;successMessage=Ze(null);errorMessage=Ze(null);definitionsLoading=this.launchState.loading;definitionsError=aT(()=>this.launchState.definitionsError()?.message??null);launchTargetsLoading=this.launchState.loading;launchTargetsError=aT(()=>this.launchState.namespacesError()?.message??null);form=h(Rr).group({workflowType:["",Ht.required],namespaceId:["",Ht.required],title:["",Ht.maxLength(200)],ticket:["",Ht.maxLength(64)],initialRequest:["",Ht.maxLength(4e3)]});selectedNamespaceId=T(this.form.controls.namespaceId.valueChanges,{initialValue:this.form.controls.namespaceId.value});selectedNamespace=aT(()=>this.namespaces().find(t=>t.id===this.selectedNamespaceId())??null);constructor(){h(gb).crumbs.set([{label:"Sandboxes",link:"/sandboxes"},{label:"Launch a run"}]),this.launchState.loadOptions(),Hs(()=>{let t=this.workflowTypes();t.length===1&&!this.form.controls.workflowType.value&&this.form.controls.workflowType.setValue(t[0]??"");let r=this.namespaces();r.length===1&&!this.form.controls.namespaceId.value&&this.form.controls.namespaceId.setValue(r[0]?.id??"");});}onSubmit(){if(this.submitting())return;if(this.form.invalid){this.form.markAllAsTouched();return}let{workflowType:t,namespaceId:r,title:l,ticket:f,initialRequest:u}=this.form.getRawValue();if(this.launchTargetsLoading()||this.launchTargetsError()||!this.namespaces().some(y=>y.id===r)){this.errorMessage.set("Select an available namespace before launching.");return}let C=l.trim(),v=f.trim(),x=u.trim();this.submitting.set(true),this.successMessage.set(null),this.errorMessage.set(null),this.launchState.launch(I(I(I({namespaceId:r,workflowType:t},C?{title:C}:{}),x?{initialRequest:x}:{}),v?{parameters:{ticket:v}}:{})).pipe(U(this.destroyRef)).subscribe({next:y=>{let O=y?.submissionId;this.successMessage.set(O?`Launch accepted (id: ${O})`:"Launch accepted."),this.store.selectNamespace(r),this.store.refresh(),this.router.navigate(["/sessions",y.workflowId],{queryParams:{namespaceId:r}});},error:y=>{this.errorMessage.set(Ve(y));}});}static \u0275fac=function(r){return new(r||e)};static \u0275cmp=xe({type:e,selectors:[["sf-launch-page"]],features:[by([w])],decls:54,vars:14,consts:[[1,"page"],[1,"page-head"],[1,"titles"],[1,"sf-muted"],["role","status","data-launch-success","true",1,"banner","banner--success"],["role","alert","data-launch-error","true",1,"banner","banner--error"],["role","alert","data-launch-definitions-error","true",1,"banner","banner--warn"],["role","alert","data-launch-targets-error","true",1,"banner","banner--error"],["novalidate","",1,"sf-panel","launch-form",3,"ngSubmit","formGroup"],["appearance","outline",1,"field"],["formControlName","workflowType","data-launch-workflow-type","true"],["matInput","","formControlName","workflowType","placeholder","adw_simple_sdlc","data-launch-workflow-type","true",1,"sf-mono"],["formControlName","namespaceId","data-launch-namespace","true"],[3,"value"],["data-launch-targets-loading","true"],["data-launch-targets-empty","true"],["appearance","outline",1,"field","field--wide"],["matInput","","formControlName","title","maxlength","200","placeholder","Readable run title","data-launch-title","true"],["matInput","","formControlName","ticket","placeholder","ABC-123","data-launch-ticket","true",1,"sf-mono"],["matInput","","id","launch-initial-request","formControlName","initialRequest","aria-describedby","launch-initial-request-help","rows","5","maxlength","4000","data-launch-initial-request","true"],["id","launch-initial-request-help"],[1,"form-actions"],["mat-flat-button","","type","submit","data-launch-submit","true",1,"sf-primary",3,"disabled"],["mat-stroked-button","","routerLink","/sandboxes",1,"sf-secondary"],["aria-hidden","true"]],template:function(r,l){if(r&1&&(pa(0,"div",0)(1,"header",1)(2,"div",2)(3,"h1"),jC(4,"Launch a run"),_d(),pa(5,"p",3),jC(6," Creates and durably submits a real workflow. Factory assigns identity and execution context. "),_d()()(),oi(7,Se,5,1,"div",4),oi(8,ke,5,1,"div",5),oi(9,Te,5,1,"div",6),oi(10,Le,5,1,"div",7),pa(11,"form",8),Xg("ngSubmit",function(){return l.onSubmit()}),pa(12,"mat-form-field",9)(13,"mat-label"),jC(14,"Workflow definition"),_d(),oi(15,Pe,3,0,"mat-select",10)(16,Ie,1,0,"input",11),oi(17,Oe,2,0,"mat-error"),pa(18,"mat-hint"),jC(19),_d()(),pa(20,"mat-form-field",9)(21,"mat-label"),jC(22,"AgentOS namespace"),_d(),pa(23,"mat-select",12),Xw(24,Fe,2,2,"mat-option",13,Me),_d(),BI(),oi(26,Re,2,0,"mat-error"),oi(27,De,2,1,"mat-hint")(28,qe,2,0,"mat-hint",14)(29,Ae,2,0,"mat-hint",15),_d(),pa(30,"mat-form-field",16)(31,"mat-label"),jC(32,"Title (optional)"),_d(),qg(33,"input",17),BI(),pa(34,"mat-hint"),jC(35,"Factory generates a readable title if omitted."),_d()(),pa(36,"mat-form-field",9)(37,"mat-label"),jC(38,"Jira ticket (optional)"),_d(),qg(39,"input",18),BI(),_d(),pa(40,"mat-form-field",16)(41,"mat-label"),jC(42,"What would you like to do? (optional)"),_d(),qg(43,"textarea",19),BI(),oi(44,We,2,0,"mat-error"),pa(45,"mat-hint",20),jC(46," Describe your objective, even briefly. The agent will ask for any clarifications needed. "),_d()(),pa(47,"div",21)(48,"button",22)(49,"mat-icon"),jC(50),_d(),jC(51),_d(),pa(52,"a",23),jC(53,"Cancel"),_d()()()()),r&2){let f,u,C,v,x;Jo(7),ii((f=l.successMessage())?7:-1,f),Jo(),ii((u=l.errorMessage())?8:-1,u),Jo(),ii((C=l.definitionsError())?9:-1,C),Jo(),ii((v=l.launchTargetsError())?10:-1,v),Jo(),Gg("formGroup",l.form),Jo(4),ii(l.workflowTypes().length>0?15:16),Jo(2),ii(l.form.controls.workflowType.hasError("required")?17:-1),Jo(2),fy(l.definitionsLoading()?"Loading definitions\u2026":"workflowType"),Jo(4),HI(),Jo(),Jw(l.namespaces()),Jo(2),ii(l.form.controls.namespaceId.hasError("required")?26:-1),Jo(),ii((x=l.selectedNamespace())?27:l.launchTargetsLoading()?28:!l.launchTargetsError()&&l.namespaces().length===0?29:-1,x),Jo(6),HI(),Jo(6),HI(),Jo(4),HI(),Jo(),ii(l.form.controls.initialRequest.hasError("maxlength")?44:-1),Jo(4),Gg("disabled",l.submitting()||l.launchTargetsLoading()||!!l.launchTargetsError()||l.namespaces().length===0),Jo(2),fy(l.submitting()?"hourglass_top":"play_arrow"),Jo(),Td(" ",l.submitting()?"Launching\u2026":"Launch run"," ");}},dependencies:[Nr,Vr,Yn,Er,Mr,is,Ss,As,Nt,BW,jW,Pt,It,Me$1,Se$1,_i,G8,W8,Be,Pe$1,Wr,Hr,ce$1],styles:[".page[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:18px;max-width:900px}.page-head[_ngcontent-%COMP%]{display:flex;align-items:flex-end;gap:12px}.titles[_ngcontent-%COMP%]{flex:1;display:flex;flex-direction:column;gap:4px}h1[_ngcontent-%COMP%]{margin:0;font-size:28px;font-weight:800;letter-spacing:-.01em}.titles[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{margin:0;font-size:14px}.launch-form[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px 20px;padding:24px}.field[_ngcontent-%COMP%]{width:100%}.field--wide[_ngcontent-%COMP%]{grid-column:1/-1}.form-actions[_ngcontent-%COMP%]{grid-column:1/-1;display:flex;gap:10px;padding-top:8px}.banner[_ngcontent-%COMP%]{display:flex;align-items:flex-start;gap:10px;padding:12px 14px;border-radius:10px;border:1px solid;font-size:13.5px;font-weight:600}.banner[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{width:18px;height:18px;font-size:18px}.banner--success[_ngcontent-%COMP%]{color:#6ee79a;border-color:#22583a;background:#0e1f16}.banner--error[_ngcontent-%COMP%]{color:#f58f8f;border-color:#6b2a2e;background:#1f1114}.banner--warn[_ngcontent-%COMP%]{color:var(--sf-tertiary);border-color:#5a4818;background:#1d180b}@media(max-width:720px){.launch-form[_ngcontent-%COMP%]{grid-template-columns:minmax(0,1fr)}}"]})};export{Ee as LaunchPageComponent,Ve as formatLaunchError};
@@ -1 +1 @@
1
- import {J,Z}from'./chunk-DMBZriQW.js';import {h,n as nT,p as pb,x as xe,N as Nt,I as IW,_ as _W,A as A8,a as x8,f as fa,b as kC,E as Ed,d as Yg,v as ni,Q as Qo,$ as $g,y as ri,ar as gy,u as uy,z as zg,q as qw,S as sC,Z as Zw,r as rr,l as ly,a2 as Cd}from'./main-GN2IPP5X.js';import {c}from'./chunk-CH91lkh4.js';function L(n,e){return this.definitionKey(e)}function H(n,e){n&1&&(fa(0,"div",5)(1,"mat-icon",9),kC(2,"cloud_off"),Ed(),fa(3,"span"),kC(4),Ed()()),n&2&&(Qo(4),uy(e));}function $(n,e){n&1&&(fa(0,"div",6),zg(1,"mat-progress-spinner",10),fa(2,"span",3),kC(3,"Loading definitions\u2026"),Ed()());}function K(n,e){n&1&&(fa(0,"div",7)(1,"mat-icon",9),kC(2,"inventory_2"),Ed(),fa(3,"p",3),kC(4,"No workflow definitions registered."),Ed()());}function N(n,e){if(n&1&&(fa(0,"a",11)(1,"div",12)(2,"h2",13),kC(3),Ed(),fa(4,"p",14),kC(5),Ed()(),fa(6,"span",15),kC(7),Ed(),fa(8,"mat-icon",16),kC(9,"chevron_right"),Ed()()),n&2){let t=e.$implicit,a=sC(2);$g("routerLink",a.detailLink(t)),rr("data-workflow-card",a.definitionKey(t))("data-workflow-card-link",a.definitionKey(t)),Qo(3),uy(a.definitionTitle(t)),Qo(2),ly(" ",t.workflowType,"@",t.version," "),Qo(),$g("title",t.definitionHash??""),Qo(),Cd(" ",a.shortHash(t)," ");}}function F(n,e){if(n&1&&(fa(0,"div",8),qw(1,N,10,8,"a",11,L,true),Ed()),n&2){let t=sC();Qo(),Zw(t.definitions());}}var I=class n{state=h(c);definitions=this.state.definitions;loading=this.state.loading;error=nT(()=>this.state.error()?.message?.trim()||(this.state.error()?"Unable to load workflow definitions.":null));constructor(){h(pb).crumbs.set([{label:"Workflows"}]),this.load();}load(){this.state.load();}definitionKey(e){return `${e.workflowType??""}@${e.version??""}`}definitionTitle(e){let t=typeof e.title=="string"?e.title.trim():"",a=typeof e.workflowType=="string"?e.workflowType.trim():"";return t||a||"Definition without type"}shortHash(e){let t=typeof e.definitionHash=="string"?e.definitionHash.trim():"";return t?t.length>12?`${t.slice(0,12)}\u2026`:t:"\u2014"}detailLink(e){return ["/workflows",String(e.workflowType??""),String(e.version??"")]}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=xe({type:n,selectors:[["sf-workflows-page"]],features:[gy([c])],decls:15,vars:3,consts:[[1,"page"],[1,"page-head"],[1,"titles"],[1,"sf-muted"],["mat-stroked-button","",1,"sf-secondary",3,"click","disabled"],["role","alert","data-workflow-error","true",1,"banner","banner--warn"],["data-workflow-loading","true",1,"state"],["data-workflow-empty","true",1,"state","sf-panel"],["data-workflow-list","true",1,"grid"],["aria-hidden","true"],["diameter","32","mode","indeterminate"],[1,"wf-card",3,"routerLink"],[1,"wf-card__titles"],["data-workflow-title","",1,"wf-card__title"],["data-workflow-subtitle","",1,"wf-card__subtitle","sf-mono"],["data-workflow-hash","",1,"wf-card__hash","sf-mono",3,"title"],["aria-hidden","true",1,"wf-card__chevron"]],template:function(t,a){if(t&1&&(fa(0,"div",0)(1,"header",1)(2,"div",2)(3,"h1"),kC(4,"Workflows"),Ed(),fa(5,"p",3),kC(6,"Registered workflow definitions and their governed steps."),Ed()(),fa(7,"button",4),Yg("click",function(){return a.load()}),fa(8,"mat-icon"),kC(9,"refresh"),Ed(),kC(10," Refresh "),Ed()(),ni(11,H,5,1,"div",5),ni(12,$,4,0,"div",6)(13,K,5,0,"div",7)(14,F,3,0,"div",8),Ed()),t&2){let d;Qo(7),$g("disabled",a.loading()),Qo(4),ri((d=a.error())?11:-1,d),Qo(),ri(a.loading()?12:a.definitions().length===0?13:14);}},dependencies:[Nt,IW,_W,A8,x8,J,Z],styles:[".page[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:18px;max-width:1200px}.page-head[_ngcontent-%COMP%]{display:flex;align-items:flex-end;gap:16px}.titles[_ngcontent-%COMP%]{flex:1;display:flex;flex-direction:column;gap:4px}h1[_ngcontent-%COMP%]{margin:0;font-size:28px;font-weight:800;letter-spacing:-.01em}.titles[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{margin:0;font-size:14px}.banner[_ngcontent-%COMP%]{display:flex;align-items:flex-start;gap:10px;padding:12px 14px;border-radius:10px;border:1px solid;font-size:13.5px;font-weight:600}.banner[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{width:18px;height:18px;font-size:18px}.banner--warn[_ngcontent-%COMP%]{color:var(--sf-tertiary);border-color:#5a4818;background:#1d180b}.state[_ngcontent-%COMP%]{display:flex;align-items:center;gap:12px}.state.sf-panel[_ngcontent-%COMP%]{flex-direction:column;justify-content:center;gap:8px;padding:40px;text-align:center}.state.sf-panel[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{width:36px;height:36px;font-size:36px;color:var(--sf-text-muted)}.grid[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(auto-fill,minmax(420px,1fr));gap:16px}.wf-card[_ngcontent-%COMP%]{display:flex;align-items:center;gap:14px;padding:18px 20px;border-radius:12px;border:1px solid var(--sf-outline);background:var(--sf-surface);text-decoration:none;color:inherit;cursor:pointer;transition:background .15s ease,border-color .15s ease}.wf-card[_ngcontent-%COMP%]:hover{background:#141a26;border-color:var(--sf-outline-active)}.wf-card[_ngcontent-%COMP%]:focus-visible{outline:2px solid var(--sf-primary);outline-offset:2px}.wf-card__titles[_ngcontent-%COMP%]{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}.wf-card__title[_ngcontent-%COMP%]{margin:0;font-size:17px;font-weight:700;color:var(--sf-text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.wf-card__subtitle[_ngcontent-%COMP%]{margin:0;font-size:12.5px;color:var(--sf-secondary)}.wf-card__hash[_ngcontent-%COMP%]{font-size:12px;color:var(--sf-text-muted);padding:4px 10px;border:1px solid var(--sf-outline-strong);border-radius:999px;background:var(--sf-surface-2);white-space:nowrap;flex-shrink:0}.wf-card__chevron[_ngcontent-%COMP%]{color:var(--sf-text-muted);flex-shrink:0}"]})};export{I as WorkflowsPageComponent};
1
+ import {J,Z}from'./chunk-sRb0Gr6G.js';import {h,r as aT,g as gb,x as xe,N as Nt,B as BW,j as jW,G as G8,W as W8,p as pa,d as jC,_ as _d,X as Xg,f as oi,J as Jo,i as Gg,l as ii,ar as by,m as fy,q as qg,e as Xw,w as dC,k as Jw,s as or,u as py,a9 as Td}from'./main-R4PLQRBB.js';import {c}from'./chunk-DQ8fnaDi.js';function L(n,e){return this.definitionKey(e)}function H(n,e){n&1&&(pa(0,"div",5)(1,"mat-icon",9),jC(2,"cloud_off"),_d(),pa(3,"span"),jC(4),_d()()),n&2&&(Jo(4),fy(e));}function $(n,e){n&1&&(pa(0,"div",6),qg(1,"mat-progress-spinner",10),pa(2,"span",3),jC(3,"Loading definitions\u2026"),_d()());}function K(n,e){n&1&&(pa(0,"div",7)(1,"mat-icon",9),jC(2,"inventory_2"),_d(),pa(3,"p",3),jC(4,"No workflow definitions registered."),_d()());}function N(n,e){if(n&1&&(pa(0,"a",11)(1,"div",12)(2,"h2",13),jC(3),_d(),pa(4,"p",14),jC(5),_d()(),pa(6,"span",15),jC(7),_d(),pa(8,"mat-icon",16),jC(9,"chevron_right"),_d()()),n&2){let t=e.$implicit,a=dC(2);Gg("routerLink",a.detailLink(t)),or("data-workflow-card",a.definitionKey(t))("data-workflow-card-link",a.definitionKey(t)),Jo(3),fy(a.definitionTitle(t)),Jo(2),py(" ",t.workflowType,"@",t.version," "),Jo(),Gg("title",t.definitionHash??""),Jo(),Td(" ",a.shortHash(t)," ");}}function F(n,e){if(n&1&&(pa(0,"div",8),Xw(1,N,10,8,"a",11,L,true),_d()),n&2){let t=dC();Jo(),Jw(t.definitions());}}var I=class n{state=h(c);definitions=this.state.definitions;loading=this.state.loading;error=aT(()=>this.state.error()?.message?.trim()||(this.state.error()?"Unable to load workflow definitions.":null));constructor(){h(gb).crumbs.set([{label:"Workflows"}]),this.load();}load(){this.state.load();}definitionKey(e){return `${e.workflowType??""}@${e.version??""}`}definitionTitle(e){let t=typeof e.title=="string"?e.title.trim():"",a=typeof e.workflowType=="string"?e.workflowType.trim():"";return t||a||"Definition without type"}shortHash(e){let t=typeof e.definitionHash=="string"?e.definitionHash.trim():"";return t?t.length>12?`${t.slice(0,12)}\u2026`:t:"\u2014"}detailLink(e){return ["/workflows",String(e.workflowType??""),String(e.version??"")]}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=xe({type:n,selectors:[["sf-workflows-page"]],features:[by([c])],decls:15,vars:3,consts:[[1,"page"],[1,"page-head"],[1,"titles"],[1,"sf-muted"],["mat-stroked-button","",1,"sf-secondary",3,"click","disabled"],["role","alert","data-workflow-error","true",1,"banner","banner--warn"],["data-workflow-loading","true",1,"state"],["data-workflow-empty","true",1,"state","sf-panel"],["data-workflow-list","true",1,"grid"],["aria-hidden","true"],["diameter","32","mode","indeterminate"],[1,"wf-card",3,"routerLink"],[1,"wf-card__titles"],["data-workflow-title","",1,"wf-card__title"],["data-workflow-subtitle","",1,"wf-card__subtitle","sf-mono"],["data-workflow-hash","",1,"wf-card__hash","sf-mono",3,"title"],["aria-hidden","true",1,"wf-card__chevron"]],template:function(t,a){if(t&1&&(pa(0,"div",0)(1,"header",1)(2,"div",2)(3,"h1"),jC(4,"Workflows"),_d(),pa(5,"p",3),jC(6,"Registered workflow definitions and their governed steps."),_d()(),pa(7,"button",4),Xg("click",function(){return a.load()}),pa(8,"mat-icon"),jC(9,"refresh"),_d(),jC(10," Refresh "),_d()(),oi(11,H,5,1,"div",5),oi(12,$,4,0,"div",6)(13,K,5,0,"div",7)(14,F,3,0,"div",8),_d()),t&2){let d;Jo(7),Gg("disabled",a.loading()),Jo(4),ii((d=a.error())?11:-1,d),Jo(),ii(a.loading()?12:a.definitions().length===0?13:14);}},dependencies:[Nt,BW,jW,G8,W8,J,Z],styles:[".page[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:18px;max-width:1200px}.page-head[_ngcontent-%COMP%]{display:flex;align-items:flex-end;gap:16px}.titles[_ngcontent-%COMP%]{flex:1;display:flex;flex-direction:column;gap:4px}h1[_ngcontent-%COMP%]{margin:0;font-size:28px;font-weight:800;letter-spacing:-.01em}.titles[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{margin:0;font-size:14px}.banner[_ngcontent-%COMP%]{display:flex;align-items:flex-start;gap:10px;padding:12px 14px;border-radius:10px;border:1px solid;font-size:13.5px;font-weight:600}.banner[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{width:18px;height:18px;font-size:18px}.banner--warn[_ngcontent-%COMP%]{color:var(--sf-tertiary);border-color:#5a4818;background:#1d180b}.state[_ngcontent-%COMP%]{display:flex;align-items:center;gap:12px}.state.sf-panel[_ngcontent-%COMP%]{flex-direction:column;justify-content:center;gap:8px;padding:40px;text-align:center}.state.sf-panel[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{width:36px;height:36px;font-size:36px;color:var(--sf-text-muted)}.grid[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(auto-fill,minmax(420px,1fr));gap:16px}.wf-card[_ngcontent-%COMP%]{display:flex;align-items:center;gap:14px;padding:18px 20px;border-radius:12px;border:1px solid var(--sf-outline);background:var(--sf-surface);text-decoration:none;color:inherit;cursor:pointer;transition:background .15s ease,border-color .15s ease}.wf-card[_ngcontent-%COMP%]:hover{background:#141a26;border-color:var(--sf-outline-active)}.wf-card[_ngcontent-%COMP%]:focus-visible{outline:2px solid var(--sf-primary);outline-offset:2px}.wf-card__titles[_ngcontent-%COMP%]{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}.wf-card__title[_ngcontent-%COMP%]{margin:0;font-size:17px;font-weight:700;color:var(--sf-text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.wf-card__subtitle[_ngcontent-%COMP%]{margin:0;font-size:12.5px;color:var(--sf-secondary)}.wf-card__hash[_ngcontent-%COMP%]{font-size:12px;color:var(--sf-text-muted);padding:4px 10px;border:1px solid var(--sf-outline-strong);border-radius:999px;background:var(--sf-surface-2);white-space:nowrap;flex-shrink:0}.wf-card__chevron[_ngcontent-%COMP%]{color:var(--sf-text-muted);flex-shrink:0}"]})};export{I as WorkflowsPageComponent};
@@ -0,0 +1,27 @@
1
+ import {O as pe,T as ce,P as Pt,V as eo,h,aV as ue,cf as be,cg as Ae,aU as P,ch as Ee,aW as ri,aZ as pf,Y as y,aY as Z,ci as J3,ae as Ht,cj as H3,ck as ys,am as Ss,bY as Vt,cl as zt,cm as qn,cn as me,A as Hs,aL as et,b3 as ma,aN as _t,ar as by,co as Fe,X as Xg,bM as Kg,s as or,K as Et,cp as Xe,b9 as Bt,bc as Cn,cq as hn,cr as F,x as xe}from'./main-R4PLQRBB.js';var J=(()=>{class s{static \u0275fac=function(t){return new(t||s)};static \u0275cmp=xe({type:s,selectors:[["ng-component"]],hostAttrs:["cdk-text-field-style-loader",""],decls:0,vars:0,template:function(t,i){},styles:[`textarea.cdk-textarea-autosize {
2
+ resize: none;
3
+ }
4
+
5
+ textarea.cdk-textarea-autosize-measuring {
6
+ padding: 2px 0 !important;
7
+ box-sizing: content-box !important;
8
+ height: auto !important;
9
+ overflow: hidden !important;
10
+ }
11
+
12
+ textarea.cdk-textarea-autosize-measuring-firefox {
13
+ padding: 2px 0 !important;
14
+ box-sizing: content-box !important;
15
+ height: 0 !important;
16
+ }
17
+
18
+ @keyframes cdk-text-field-autofill-start { /*!*/ }
19
+ @keyframes cdk-text-field-autofill-end { /*!*/ }
20
+ .cdk-text-field-autofill-monitored:-webkit-autofill {
21
+ animation: cdk-text-field-autofill-start 0s 1ms;
22
+ }
23
+
24
+ .cdk-text-field-autofill-monitored:not(:-webkit-autofill) {
25
+ animation: cdk-text-field-autofill-end 0s 1ms;
26
+ }
27
+ `],encapsulation:2})}return s})(),Q={passive:true},$=(()=>{class s{_platform=h(be);_ngZone=h(P);_renderer=h(Xe).createRenderer(null,null);_styleLoader=h(Bt);_monitoredElements=new Map;monitor(e){if(!this._platform.isBrowser)return Cn;this._styleLoader.load(J);let t=hn(e),i=this._monitoredElements.get(t);if(i)return i.subject;let r=new Z,o="cdk-text-field-autofilled",a=d=>{d.animationName==="cdk-text-field-autofill-start"&&!t.classList.contains(o)?(t.classList.add(o),this._ngZone.run(()=>r.next({target:d.target,isAutofilled:true}))):d.animationName==="cdk-text-field-autofill-end"&&t.classList.contains(o)&&(t.classList.remove(o),this._ngZone.run(()=>r.next({target:d.target,isAutofilled:false})));},l=this._ngZone.runOutsideAngular(()=>(t.classList.add("cdk-text-field-autofill-monitored"),this._renderer.listen(t,"animationstart",a,Q)));return this._monitoredElements.set(t,{subject:r,unlisten:l}),r}stopMonitoring(e){let t=hn(e),i=this._monitoredElements.get(t);i&&(i.unlisten(),i.subject.complete(),t.classList.remove("cdk-text-field-autofill-monitored"),t.classList.remove("cdk-text-field-autofilled"),this._monitoredElements.delete(t));}ngOnDestroy(){this._monitoredElements.forEach((e,t)=>this.stopMonitoring(t));}static \u0275fac=function(t){return new(t||s)};static \u0275prov=F({token:s,factory:s.\u0275fac})}return s})();var W=(()=>{class s{static \u0275fac=function(t){return new(t||s)};static \u0275mod=pe({type:s});static \u0275inj=ce({})}return s})();var Y=new y("MAT_INPUT_VALUE_ACCESSOR");var ee=["button","checkbox","file","hidden","image","radio","range","reset","submit"],te=new y("MAT_INPUT_CONFIG"),Pe=(()=>{class s{_elementRef=h(ue);_platform=h(be);ngControl=h(Ae,{optional:true,self:true});_autofillMonitor=h($);_ngZone=h(P);_formField=h(Ee,{optional:true});_renderer=h(ri);_uid=h(pf).getId("mat-input-");_previousNativeValue;_inputValueAccessor;_signalBasedValueAccessor;_previousPlaceholder=null;_errorStateTracker;_config=h(te,{optional:true});_cleanupIosKeyup;_cleanupWebkitWheel;_isServer=false;_isNativeSelect=false;_isTextarea=false;_isInFormField=false;focused=false;stateChanges=new Z;controlType="mat-input";autofilled=false;get disabled(){return this._disabled}set disabled(e){this._disabled=J3(e),this.focused&&(this.focused=false,this.stateChanges.next());}_disabled=false;get id(){return this._id}set id(e){this._id=e||this._uid;}_id;placeholder;name;get required(){return this._required??this.ngControl?.control?.hasValidator(Ht.required)??false}set required(e){this._required=J3(e);}_required;get type(){return this._type}set type(e){this._type=e||"text",this._validateType(),!this._isTextarea&&H3().has(this._type)&&(this._elementRef.nativeElement.type=this._type);}_type="text";get errorStateMatcher(){return this._errorStateTracker.matcher}set errorStateMatcher(e){this._errorStateTracker.matcher=e;}userAriaDescribedBy;get value(){return this._signalBasedValueAccessor?this._signalBasedValueAccessor.value():this._inputValueAccessor.value}set value(e){e!==this.value&&(this._signalBasedValueAccessor?this._signalBasedValueAccessor.value.set(e):this._inputValueAccessor.value=e,this.stateChanges.next());}get readonly(){return this._readonly}set readonly(e){this._readonly=J3(e);}_readonly=false;disabledInteractive;get errorState(){return this._errorStateTracker.errorState}set errorState(e){this._errorStateTracker.errorState=e;}_neverEmptyInputTypes=["date","datetime","datetime-local","month","time","week"].filter(e=>H3().has(e));constructor(){let e=h(ys,{optional:true}),t=h(Ss,{optional:true}),i=h(Vt),r=h(Y,{optional:true,self:true}),o=h(zt,{optional:true,self:true}),a=this._elementRef.nativeElement,l=a.nodeName.toLowerCase();r?qn(r.value)?this._signalBasedValueAccessor=r:this._inputValueAccessor=r:this._inputValueAccessor=a,this._previousNativeValue=this.value,this.id=this.id,this._platform.IOS&&this._ngZone.runOutsideAngular(()=>{this._cleanupIosKeyup=this._renderer.listen(a,"keyup",this._iOSKeyupListener);}),this._errorStateTracker=new me(i,o||this.ngControl,t,e,this.stateChanges),this._isServer=!this._platform.isBrowser,this._isNativeSelect=l==="select",this._isTextarea=l==="textarea",this._isInFormField=!!this._formField,this.disabledInteractive=this._config?.disabledInteractive||false,this._isNativeSelect&&(this.controlType=a.multiple?"mat-native-select-multiple":"mat-native-select"),this._signalBasedValueAccessor&&Hs(()=>{this._signalBasedValueAccessor.value(),this.stateChanges.next();});}ngAfterViewInit(){this._platform.isBrowser&&this._autofillMonitor.monitor(this._elementRef.nativeElement).subscribe(e=>{this.autofilled=e.isAutofilled,this.stateChanges.next();});}ngOnChanges(){this.stateChanges.next();}ngOnDestroy(){this.stateChanges.complete(),this._platform.isBrowser&&this._autofillMonitor.stopMonitoring(this._elementRef.nativeElement),this._cleanupIosKeyup?.(),this._cleanupWebkitWheel?.();}ngDoCheck(){this.ngControl&&(this.updateErrorState(),this.ngControl.disabled!==null&&this.ngControl.disabled!==this.disabled&&(this.disabled=this.ngControl.disabled,this.stateChanges.next())),this._dirtyCheckNativeValue(),this._dirtyCheckPlaceholder();}focus(e){this._elementRef.nativeElement.focus(e);}updateErrorState(){this._errorStateTracker.updateErrorState();}_focusChanged(e){if(e!==this.focused){if(!this._isNativeSelect&&e&&this.disabled&&this.disabledInteractive){let t=this._elementRef.nativeElement;t.type==="number"?(t.type="text",t.setSelectionRange(0,0),t.type="number"):t.setSelectionRange(0,0);}this.focused=e,this.stateChanges.next();}}_onInput(){}_dirtyCheckNativeValue(){let e=this._elementRef.nativeElement.value;this._previousNativeValue!==e&&(this._previousNativeValue=e,this.stateChanges.next());}_dirtyCheckPlaceholder(){let e=this._getPlaceholder();if(e!==this._previousPlaceholder){let t=this._elementRef.nativeElement;this._previousPlaceholder=e,e?t.setAttribute("placeholder",e):t.removeAttribute("placeholder");}}_getPlaceholder(){return this.placeholder||null}_validateType(){ee.indexOf(this._type)>-1;}_isNeverEmpty(){return this._neverEmptyInputTypes.indexOf(this._type)>-1}_isBadInput(){let e=this._elementRef.nativeElement.validity;return e&&e.badInput}get empty(){return !this._isNeverEmpty()&&!this._elementRef.nativeElement.value&&!this._isBadInput()&&!this.autofilled}get shouldLabelFloat(){if(this._isNativeSelect){let e=this._elementRef.nativeElement,t=e.options[0];return this.focused||e.multiple||!this.empty||!!(e.selectedIndex>-1&&t&&t.label)}else return this.focused&&!this.disabled||!this.empty}get describedByIds(){return this._elementRef.nativeElement.getAttribute("aria-describedby")?.split(" ")||[]}setDescribedByIds(e){let t=this._elementRef.nativeElement;e.length?t.setAttribute("aria-describedby",e.join(" ")):t.removeAttribute("aria-describedby");}onContainerClick(){this.focused||this.focus();}_isInlineSelect(){let e=this._elementRef.nativeElement;return this._isNativeSelect&&(e.multiple||e.size>1)}_iOSKeyupListener=e=>{let t=e.target;!t.value&&t.selectionStart===0&&t.selectionEnd===0&&(t.setSelectionRange(1,1),t.setSelectionRange(0,0));};_getReadonlyAttribute(){return this._isNativeSelect?null:this.readonly||this.disabled&&this.disabledInteractive?"true":null}static \u0275fac=function(t){return new(t||s)};static \u0275dir=et({type:s,selectors:[["input","matInput",""],["textarea","matInput",""],["select","matNativeControl",""],["input","matNativeControl",""],["textarea","matNativeControl",""]],hostAttrs:[1,"mat-mdc-input-element"],hostVars:21,hostBindings:function(t,i){t&1&&Xg("focus",function(){return i._focusChanged(true)})("blur",function(){return i._focusChanged(false)})("input",function(){return i._onInput()}),t&2&&(Kg("id",i.id)("disabled",i.disabled&&!i.disabledInteractive)("required",i.required),or("name",i.name||null)("readonly",i._getReadonlyAttribute())("aria-disabled",i.disabled&&i.disabledInteractive?"true":null)("aria-invalid",i.empty&&i.required?null:i.errorState)("aria-required",i.required)("id",i.id),Et("mat-input-server",i._isServer)("mat-mdc-form-field-textarea-control",i._isInFormField&&i._isTextarea)("mat-mdc-form-field-input-control",i._isInFormField)("mat-mdc-input-disabled-interactive",i.disabledInteractive)("mdc-text-field__input",i._isInFormField)("mat-mdc-native-select-inline",i._isInlineSelect()));},inputs:{disabled:"disabled",id:"id",placeholder:"placeholder",name:"name",required:"required",type:"type",errorStateMatcher:"errorStateMatcher",userAriaDescribedBy:[0,"aria-describedby","userAriaDescribedBy"],value:"value",readonly:"readonly",disabledInteractive:[2,"disabledInteractive","disabledInteractive",_t]},exportAs:["matInput"],features:[by([{provide:Fe,useExisting:s}]),ma]})}return s})(),Be=(()=>{class s{static \u0275fac=function(t){return new(t||s)};static \u0275mod=pe({type:s});static \u0275inj=ce({imports:[Pt,Pt,W,eo]})}return s})();export{Be as B,Pe as P};
@@ -1 +1 @@
1
- import {J,Z}from'./chunk-DMBZriQW.js';import {h,as as fb,aC as G,p as pb,i as Ze,x as xe,I as IW,_ as _W,A as A8,a as x8,N as Nt,f as fa,b as kC,E as Ed,v as ni,Q as Qo,$ as $g,l as ly,y as ri,u as uy,z as zg,S as sC}from'./main-GN2IPP5X.js';function T(e,t){e&1&&(fa(0,"p",5),kC(1),Ed()),e&2&&(Qo(),uy(t));}function W(e,t){e&1&&(fa(0,"div",6),zg(1,"mat-progress-spinner",9),fa(2,"span",10),kC(3,"Loading definition\u2026"),Ed()());}function I(e,t){e&1&&(fa(0,"div",7)(1,"mat-icon",11),kC(2,"cloud_off"),Ed(),fa(3,"span"),kC(4),Ed()()),e&2&&(Qo(4),uy(t));}function z(e,t){if(e&1&&(fa(0,"pre",8)(1,"code"),kC(2),Ed()()),e&2){let l=sC();Qo(2),uy(l.formatJson(t));}}function F(e){try{return JSON.stringify(e,null,2)}catch{return String(e)}}var E=class e{api=h(fb);route=h(G);shell=h(pb);backLink=["/workflows"];loading=Ze(false);error=Ze(null);definition=Ze(null);workflowType;version;formatJson=F;constructor(){let t=this.route.snapshot.paramMap;this.workflowType=t.get("type")??"",this.version=t.get("version")??"",this.shell.crumbs.set([{label:"Workflows",link:"/workflows"},{label:`${this.workflowType}@${this.version}`,mono:true}]),this.load();}load(){if(!this.workflowType||!this.version){this.error.set("Missing route parameters (type or version).");return}this.loading.set(true),this.error.set(null),this.api.getWorkflowDefinition(this.workflowType,this.version).subscribe({next:t=>{this.definition.set(t),this.loading.set(false);},error:t=>{this.error.set(t?.message?.trim()||"Unable to load workflow definition."),this.loading.set(false);}});}static \u0275fac=function(l){return new(l||e)};static \u0275cmp=xe({type:e,selectors:[["sf-workflow-detail-page"]],decls:13,vars:5,consts:[[1,"page"],[1,"page-head"],["mat-stroked-button","","data-workflow-back","",1,"sf-secondary","back-btn",3,"routerLink"],[1,"titles"],["data-workflow-detail-type","",1,"sf-mono"],["data-workflow-detail-title","",1,"sf-muted"],["data-workflow-detail-loading","",1,"state"],["role","alert","data-workflow-detail-error","",1,"banner","banner--warn"],["data-workflow-detail-json","",1,"json-block"],["diameter","32","mode","indeterminate"],[1,"sf-muted"],["aria-hidden","true"]],template:function(l,a){if(l&1&&(fa(0,"div",0)(1,"header",1)(2,"a",2)(3,"mat-icon"),kC(4,"arrow_back"),Ed(),kC(5," Back "),Ed(),fa(6,"div",3)(7,"h1",4),kC(8),Ed(),ni(9,T,2,1,"p",5),Ed()(),ni(10,W,4,0,"div",6)(11,I,5,1,"div",7)(12,z,3,1,"pre",8),Ed()),l&2){let g,f;Qo(2),$g("routerLink",a.backLink),Qo(6),ly("",a.workflowType,"@",a.version),Qo(),ri((g=a.definition()?.title)?9:-1,g),Qo(),ri(a.loading()?10:(f=a.error())?11:(f=a.definition())?12:-1,f);}},dependencies:[IW,_W,A8,x8,J,Z,Nt],styles:[".page[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:18px;max-width:1200px}.page-head[_ngcontent-%COMP%]{display:flex;align-items:flex-start;gap:16px}.back-btn[_ngcontent-%COMP%]{flex-shrink:0;margin-top:2px}.titles[_ngcontent-%COMP%]{flex:1;display:flex;flex-direction:column;gap:4px}h1[_ngcontent-%COMP%]{margin:0;font-size:22px;font-weight:700;letter-spacing:-.01em;word-break:break-all}.titles[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{margin:0;font-size:14px}.banner[_ngcontent-%COMP%]{display:flex;align-items:flex-start;gap:10px;padding:12px 14px;border-radius:10px;border:1px solid;font-size:13.5px;font-weight:600}.banner[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{width:18px;height:18px;font-size:18px}.banner--warn[_ngcontent-%COMP%]{color:var(--sf-tertiary);border-color:#5a4818;background:#1d180b}.state[_ngcontent-%COMP%]{display:flex;align-items:center;gap:12px}.json-block[_ngcontent-%COMP%]{margin:0;padding:20px 24px;border-radius:12px;border:1px solid var(--sf-outline);background:var(--sf-surface-2);font-family:var(--sf-mono);font-size:13px;line-height:1.6;overflow-x:auto;overflow-y:auto;max-height:75vh;white-space:pre;tab-size:2}.json-block[_ngcontent-%COMP%] code[_ngcontent-%COMP%]{font:inherit;color:inherit;background:none;padding:0}"]})};export{E as WorkflowDetailPageComponent,F as formatJson};
1
+ import {J,Z}from'./chunk-sRb0Gr6G.js';import {h,as as mb,aC as G,g as gb,Z as Ze,x as xe,B as BW,j as jW,G as G8,W as W8,N as Nt,p as pa,d as jC,_ as _d,f as oi,J as Jo,i as Gg,u as py,l as ii,m as fy,q as qg,w as dC}from'./main-R4PLQRBB.js';function T(e,t){e&1&&(pa(0,"p",5),jC(1),_d()),e&2&&(Jo(),fy(t));}function W(e,t){e&1&&(pa(0,"div",6),qg(1,"mat-progress-spinner",9),pa(2,"span",10),jC(3,"Loading definition\u2026"),_d()());}function I(e,t){e&1&&(pa(0,"div",7)(1,"mat-icon",11),jC(2,"cloud_off"),_d(),pa(3,"span"),jC(4),_d()()),e&2&&(Jo(4),fy(t));}function z(e,t){if(e&1&&(pa(0,"pre",8)(1,"code"),jC(2),_d()()),e&2){let l=dC();Jo(2),fy(l.formatJson(t));}}function F(e){try{return JSON.stringify(e,null,2)}catch{return String(e)}}var E=class e{api=h(mb);route=h(G);shell=h(gb);backLink=["/workflows"];loading=Ze(false);error=Ze(null);definition=Ze(null);workflowType;version;formatJson=F;constructor(){let t=this.route.snapshot.paramMap;this.workflowType=t.get("type")??"",this.version=t.get("version")??"",this.shell.crumbs.set([{label:"Workflows",link:"/workflows"},{label:`${this.workflowType}@${this.version}`,mono:true}]),this.load();}load(){if(!this.workflowType||!this.version){this.error.set("Missing route parameters (type or version).");return}this.loading.set(true),this.error.set(null),this.api.getWorkflowDefinition(this.workflowType,this.version).subscribe({next:t=>{this.definition.set(t),this.loading.set(false);},error:t=>{this.error.set(t?.message?.trim()||"Unable to load workflow definition."),this.loading.set(false);}});}static \u0275fac=function(l){return new(l||e)};static \u0275cmp=xe({type:e,selectors:[["sf-workflow-detail-page"]],decls:13,vars:5,consts:[[1,"page"],[1,"page-head"],["mat-stroked-button","","data-workflow-back","",1,"sf-secondary","back-btn",3,"routerLink"],[1,"titles"],["data-workflow-detail-type","",1,"sf-mono"],["data-workflow-detail-title","",1,"sf-muted"],["data-workflow-detail-loading","",1,"state"],["role","alert","data-workflow-detail-error","",1,"banner","banner--warn"],["data-workflow-detail-json","",1,"json-block"],["diameter","32","mode","indeterminate"],[1,"sf-muted"],["aria-hidden","true"]],template:function(l,a){if(l&1&&(pa(0,"div",0)(1,"header",1)(2,"a",2)(3,"mat-icon"),jC(4,"arrow_back"),_d(),jC(5," Back "),_d(),pa(6,"div",3)(7,"h1",4),jC(8),_d(),oi(9,T,2,1,"p",5),_d()(),oi(10,W,4,0,"div",6)(11,I,5,1,"div",7)(12,z,3,1,"pre",8),_d()),l&2){let g,f;Jo(2),Gg("routerLink",a.backLink),Jo(6),py("",a.workflowType,"@",a.version),Jo(),ii((g=a.definition()?.title)?9:-1,g),Jo(),ii(a.loading()?10:(f=a.error())?11:(f=a.definition())?12:-1,f);}},dependencies:[BW,jW,G8,W8,J,Z,Nt],styles:[".page[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:18px;max-width:1200px}.page-head[_ngcontent-%COMP%]{display:flex;align-items:flex-start;gap:16px}.back-btn[_ngcontent-%COMP%]{flex-shrink:0;margin-top:2px}.titles[_ngcontent-%COMP%]{flex:1;display:flex;flex-direction:column;gap:4px}h1[_ngcontent-%COMP%]{margin:0;font-size:22px;font-weight:700;letter-spacing:-.01em;word-break:break-all}.titles[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{margin:0;font-size:14px}.banner[_ngcontent-%COMP%]{display:flex;align-items:flex-start;gap:10px;padding:12px 14px;border-radius:10px;border:1px solid;font-size:13.5px;font-weight:600}.banner[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{width:18px;height:18px;font-size:18px}.banner--warn[_ngcontent-%COMP%]{color:var(--sf-tertiary);border-color:#5a4818;background:#1d180b}.state[_ngcontent-%COMP%]{display:flex;align-items:center;gap:12px}.json-block[_ngcontent-%COMP%]{margin:0;padding:20px 24px;border-radius:12px;border:1px solid var(--sf-outline);background:var(--sf-surface-2);font-family:var(--sf-mono);font-size:13px;line-height:1.6;overflow-x:auto;overflow-y:auto;max-height:75vh;white-space:pre;tab-size:2}.json-block[_ngcontent-%COMP%] code[_ngcontent-%COMP%]{font:inherit;color:inherit;background:none;padding:0}"]})};export{E as WorkflowDetailPageComponent,F as formatJson};