@ngocsangairvds/vsaf 5.1.6 → 5.1.7

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 (77) hide show
  1. package/package.json +1 -1
  2. package/packages/cli/dist/adapters/antigravity.d.ts.map +1 -1
  3. package/packages/cli/dist/adapters/antigravity.js +9 -30
  4. package/packages/cli/dist/adapters/antigravity.js.map +1 -1
  5. package/packages/cli/dist/adapters/claude.d.ts.map +1 -1
  6. package/packages/cli/dist/adapters/claude.js +8 -10
  7. package/packages/cli/dist/adapters/claude.js.map +1 -1
  8. package/packages/cli/dist/adapters/codex.d.ts.map +1 -1
  9. package/packages/cli/dist/adapters/codex.js +6 -9
  10. package/packages/cli/dist/adapters/codex.js.map +1 -1
  11. package/packages/cli/dist/adapters/cursor.d.ts.map +1 -1
  12. package/packages/cli/dist/adapters/cursor.js +22 -24
  13. package/packages/cli/dist/adapters/cursor.js.map +1 -1
  14. package/packages/cli/dist/commands/init.d.ts.map +1 -1
  15. package/packages/cli/dist/commands/init.js +7 -19
  16. package/packages/cli/dist/commands/init.js.map +1 -1
  17. package/packages/cli/dist/commands/install.d.ts +3 -6
  18. package/packages/cli/dist/commands/install.d.ts.map +1 -1
  19. package/packages/cli/dist/commands/install.js +6 -9
  20. package/packages/cli/dist/commands/install.js.map +1 -1
  21. package/packages/cli/dist/commands/skill.d.ts.map +1 -1
  22. package/packages/cli/dist/commands/skill.js +35 -14
  23. package/packages/cli/dist/commands/skill.js.map +1 -1
  24. package/packages/cli/dist/index.js +2 -2
  25. package/packages/cli/dist/index.js.map +1 -1
  26. package/packages/cli/dist/install/orchestrator.d.ts +0 -8
  27. package/packages/cli/dist/install/orchestrator.d.ts.map +1 -1
  28. package/packages/cli/dist/install/orchestrator.js +3 -54
  29. package/packages/cli/dist/install/orchestrator.js.map +1 -1
  30. package/packages/cli/dist/server/routes/runs.d.ts.map +1 -1
  31. package/packages/cli/dist/server/routes/runs.js +81 -3
  32. package/packages/cli/dist/server/routes/runs.js.map +1 -1
  33. package/packages/cli/dist/server/routes/workflows.d.ts.map +1 -1
  34. package/packages/cli/dist/server/routes/workflows.js +76 -17
  35. package/packages/cli/dist/server/routes/workflows.js.map +1 -1
  36. package/packages/cli/dist/server/services/execution-manager.d.ts +11 -1
  37. package/packages/cli/dist/server/services/execution-manager.d.ts.map +1 -1
  38. package/packages/cli/dist/server/services/execution-manager.js +88 -17
  39. package/packages/cli/dist/server/services/execution-manager.js.map +1 -1
  40. package/packages/cli/dist/server/static.d.ts.map +1 -1
  41. package/packages/cli/dist/server/static.js +4 -1
  42. package/packages/cli/dist/server/static.js.map +1 -1
  43. package/packages/cli/dist/server/workflow-path.d.ts +3 -0
  44. package/packages/cli/dist/server/workflow-path.d.ts.map +1 -0
  45. package/packages/cli/dist/server/workflow-path.js +25 -0
  46. package/packages/cli/dist/server/workflow-path.js.map +1 -0
  47. package/packages/core/dist/store/recovery.d.ts.map +1 -1
  48. package/packages/core/dist/store/recovery.js +12 -1
  49. package/packages/core/dist/store/recovery.js.map +1 -1
  50. package/packages/core/dist/store/run-store.d.ts +3 -0
  51. package/packages/core/dist/store/run-store.d.ts.map +1 -1
  52. package/packages/core/dist/store/run-store.js +33 -0
  53. package/packages/core/dist/store/run-store.js.map +1 -1
  54. package/packages/core/dist/store/types.d.ts +2 -2
  55. package/packages/core/dist/store/types.d.ts.map +1 -1
  56. package/packages/core/dist/store/types.js.map +1 -1
  57. package/packages/core/dist/store/wal.js +1 -1
  58. package/packages/core/dist/store/wal.js.map +1 -1
  59. package/packages/web/dist/web/3rdpartylicenses.txt +26 -26
  60. package/packages/web/dist/web/browser/chunk-4YPNNQ2T.js +4 -0
  61. package/packages/web/dist/web/browser/chunk-E227ZHPJ.js +1 -0
  62. package/packages/web/dist/web/browser/chunk-JFBK3MNW.js +1 -0
  63. package/packages/web/dist/web/browser/chunk-L2VOQBBI.js +1 -0
  64. package/packages/web/dist/web/browser/chunk-OJJM5VOH.js +1 -0
  65. package/packages/web/dist/web/browser/chunk-U2H3QYAG.js +5 -0
  66. package/packages/web/dist/web/browser/chunk-VA7KFQOR.js +1 -0
  67. package/packages/web/dist/web/browser/chunk-WV3C6DNH.js +1 -0
  68. package/packages/web/dist/web/browser/index.html +2 -2
  69. package/packages/web/dist/web/browser/main-THGFWXYL.js +1 -0
  70. package/packages/web/dist/web/browser/{styles-JBPZVY54.css → styles-PWTTI45T.css} +1 -1
  71. package/packages/web/dist/web/browser/chunk-IPMFXW6N.js +0 -1
  72. package/packages/web/dist/web/browser/chunk-IX2QWMX2.js +0 -1
  73. package/packages/web/dist/web/browser/chunk-QMAH5NZC.js +0 -1
  74. package/packages/web/dist/web/browser/chunk-RGFLNLPM.js +0 -1
  75. package/packages/web/dist/web/browser/chunk-RKWDHBN3.js +0 -5
  76. package/packages/web/dist/web/browser/chunk-XGYEZIV4.js +0 -1
  77. package/packages/web/dist/web/browser/main-IIUZVPMI.js +0 -1
@@ -0,0 +1 @@
1
+ import{a as A,b as R,c as j,d as q,e as B,f as $,j as D}from"./chunk-L2VOQBBI.js";import{a as Q}from"./chunk-OJJM5VOH.js";import{$ as w,D as y,Fa as N,Ga as L,H as u,P as s,Q as n,R as t,T as M,U as O,W as x,X as _,Y as d,Z as S,_ as E,ba as r,ca as m,da as W,ea as F,fa as C,g as v,ga as h,ha as k,ka as b,n as P,na as I,o as f,p as g,va as V,wa as T,z as l,za as z}from"./chunk-U2H3QYAG.js";var J=a=>({folder:a}),Y=a=>({id:a});function K(a,i){a&1&&(n(0,"div",7),r(1,"Loading workflows..."),t())}function U(a,i){if(a&1&&(n(0,"div",8),r(1),t()),a&2){let e=d();l(),m(e.loadError)}}function X(a,i){if(a&1&&(n(0,"p"),r(1),t()),a&2){let e=d(3);l(),m(e.folderError)}}function Z(a,i){if(a&1){let e=x();n(0,"form",30),_("ngSubmit",function(){f(e);let c=d(2);return g(c.createFolder())}),n(1,"span"),r(2),t(),n(3,"input",31),k("ngModelChange",function(c){f(e);let p=d(2);return h(p.newFolderName,c)||(p.newFolderName=c),g(c)}),t(),n(4,"div")(5,"button",32),r(6,"Create"),t(),n(7,"button",22),_("click",function(){f(e);let c=d(2);return g(c.cancelFolder())}),r(8,"Cancel"),t()(),u(9,X,2,1,"p",33),t()}if(a&2){let e=d(2);l(2),m(e.selectedFolder?e.selectedFolder+"/":""),l(),C("ngModel",e.newFolderName),l(2),s("disabled",e.creatingFolder),l(4),s("ngIf",e.folderError)}}function ee(a,i){if(a&1){let e=x();n(0,"button",34),_("click",function(){let c=f(e).$implicit,p=d(2);return g(p.selectFolder(c.path))}),n(1,"span",16),r(2,"\u203A"),t(),n(3,"span"),r(4),t(),n(5,"strong"),r(6),t()()}if(a&2){let e=i.$implicit,o=d(2);E("padding-left",14+e.depth*16,"px"),w("active",o.selectedFolder===e.path),l(4),m(e.name),l(2),m(e.count)}}function te(a,i){if(a&1){let e=x();M(0),n(1,"span"),r(2,"/"),t(),n(3,"button",22),_("click",function(){let c=f(e).$implicit,p=d(2);return g(p.selectFolder(c.path))}),r(4),t(),O()}if(a&2){let e=i.$implicit,o=i.last;l(3),w("current",o),l(),m(e.name)}}function ne(a,i){if(a&1){let e=x();n(0,"article",35),_("click",function(){let c=f(e).$implicit,p=d(2);return g(p.selectWorkflow(c))}),n(1,"div",36)(2,"span",37),r(3,"Y"),t(),n(4,"div")(5,"strong"),r(6),t(),n(7,"p"),r(8),t()()(),n(9,"span",38),r(10),t(),n(11,"code"),r(12),t(),n(13,"div",39)(14,"a",40),_("click",function(c){return c.stopPropagation()}),r(15,"Details"),t(),n(16,"button",22),_("click",function(c){let p=f(e).$implicit,H=d(2);return c.stopPropagation(),g(H.selectWorkflow(p))}),r(17,"Run"),t()()()}if(a&2){let e=i.$implicit,o=d(2);w("selected",(o.selectedWorkflow==null?null:o.selectedWorkflow.id)===e.id),l(6),m(e.name),l(2),m(e.description||"No description provided."),l(2),m(e.nodeCount),l(2),m(e.file),l(2),s("queryParams",b(7,Y,e.id))}}function oe(a,i){a&1&&(n(0,"div",41),r(1,"No workflows match this folder and search."),t())}function re(a,i){if(a&1&&(n(0,"div",48),r(1),t()),a&2){let e=d(3);l(),m(e.runError)}}function ie(a,i){if(a&1){let e=x();M(0),n(1,"div",12),r(2,"Run workflow"),t(),n(3,"span",42),r(4),t(),n(5,"h2"),r(6),t(),n(7,"p"),r(8),t(),n(9,"dl")(10,"div")(11,"dt"),r(12,"Nodes"),t(),n(13,"dd"),r(14),t()(),n(15,"div")(16,"dt"),r(17,"File"),t(),n(18,"dd"),r(19),t()()(),n(20,"label",43),r(21,"Arguments"),t(),n(22,"input",44),k("ngModelChange",function(c){f(e);let p=d(2);return h(p.runArgs,c)||(p.runArgs=c),g(c)}),t(),n(23,"button",45),_("click",function(){f(e);let c=d(2);return g(c.runSelected())}),r(24),t(),n(25,"a",46),r(26,"Open details"),t(),u(27,re,2,1,"div",47),O()}if(a&2){let e=d(2);l(4),m(e.selectedWorkflow.id),l(2),m(e.selectedWorkflow.name),l(2),m(e.selectedWorkflow.description||"No description provided."),l(6),m(e.selectedWorkflow.nodeCount),l(5),m(e.selectedWorkflow.file),l(3),C("ngModel",e.runArgs),s("disabled",e.running),l(),s("disabled",e.running),l(),W(" ",e.running?"Starting...":"Run workflow"," "),l(),s("queryParams",b(11,Y,e.selectedWorkflow.id)),l(2),s("ngIf",e.runError)}}function le(a,i){a&1&&(n(0,"div",12),r(1,"Inspector"),t(),n(2,"p"),r(3,"Select a workflow to inspect and run it."),t())}function ae(a,i){if(a&1){let e=x();n(0,"div",9)(1,"aside",10)(2,"div",11)(3,"div",12),r(4,"Folders"),t(),n(5,"button",13),_("click",function(){f(e);let c=d();return g(c.showFolderForm=!0)}),r(6,"+"),t()(),u(7,Z,10,4,"form",14),n(8,"button",15),_("click",function(){f(e);let c=d();return g(c.selectFolder(""))}),n(9,"span",16),r(10,"\u2302"),t(),n(11,"span"),r(12,".vsaf/workflows"),t(),n(13,"strong"),r(14),t()(),u(15,ee,7,6,"button",17),n(16,"a",18),r(17,"+ Workflow in this folder"),t()(),n(18,"main",19)(19,"div",20)(20,"div")(21,"nav",21)(22,"button",22),_("click",function(){f(e);let c=d();return g(c.selectFolder(""))}),r(23,"workflows"),t(),u(24,te,5,3,"ng-container",23),t(),n(25,"p"),r(26),t()(),n(27,"input",24),k("ngModelChange",function(c){f(e);let p=d();return h(p.searchQuery,c)||(p.searchQuery=c),g(c)}),t()(),n(28,"div",25)(29,"span"),r(30,"Name"),t(),n(31,"span"),r(32,"Nodes"),t(),n(33,"span"),r(34,"Location"),t(),n(35,"span"),r(36,"Actions"),t()(),u(37,ne,18,9,"article",26)(38,oe,2,0,"div",27),t(),n(39,"aside",28),u(40,ie,28,13,"ng-container",29)(41,le,4,0,"ng-template",null,0,I),t()()}if(a&2){let e=S(42),o=d();l(7),s("ngIf",o.showFolderForm),l(),w("active",o.selectedFolder===""),l(6),m(o.workflows.length),l(),s("ngForOf",o.folders),l(),s("queryParams",b(15,J,o.selectedFolder||null)),l(8),s("ngForOf",o.breadcrumbs),l(2),F("",o.visibleWorkflows.length," workflow",o.visibleWorkflows.length===1?"":"s"),l(),C("ngModel",o.searchQuery),l(10),s("ngForOf",o.visibleWorkflows)("ngForTrackBy",o.trackWorkflow),l(),s("ngIf",!o.visibleWorkflows.length),l(2),s("ngIf",o.selectedWorkflow)("ngIfElse",e)}}var G=class a{api=P(Q);router=P(N);workflows=[];folderPaths=[];loading=!0;loadError="";selectedFolder="";selectedWorkflow;searchQuery="";runArgs="";running=!1;runError="";showFolderForm=!1;newFolderName="";creatingFolder=!1;folderError="";ngOnInit(){v({workflows:this.api.getWorkflows(),folders:this.api.getWorkflowFolders()}).subscribe({next:i=>{this.workflows=i.workflows,this.folderPaths=i.folders,this.loading=!1},error:i=>{this.loadError=i?.error?.error??"Failed to load workflows.",this.loading=!1}})}get folders(){let i=new Set(this.folderPaths);for(let e of this.workflows){let o=e.directory.split("/").filter(Boolean);o.forEach((c,p)=>i.add(o.slice(0,p+1).join("/")))}return[...i].sort().map(e=>({path:e,name:e.slice(e.lastIndexOf("/")+1),depth:e.split("/").length-1,count:this.workflows.filter(o=>o.directory===e||o.directory.startsWith(`${e}/`)).length}))}get breadcrumbs(){let i=this.selectedFolder.split("/").filter(Boolean);return i.map((e,o)=>({name:e,path:i.slice(0,o+1).join("/")}))}get visibleWorkflows(){let i=this.searchQuery.trim().toLowerCase();return this.workflows.filter(e=>{let o=!this.selectedFolder||e.directory===this.selectedFolder,c=!i||`${e.name} ${e.id} ${e.description}`.toLowerCase().includes(i);return o&&c})}selectFolder(i){this.selectedFolder=i,this.selectedWorkflow=void 0,this.runError=""}createFolder(){let i=this.newFolderName.trim().toLowerCase().replace(/[^a-z0-9_-]+/g,"-").replace(/^-+|-+$/g,"");if(!i){this.folderError="Enter a valid folder name.";return}let e=this.selectedFolder?`${this.selectedFolder}/${i}`:i;this.creatingFolder=!0,this.folderError="",this.api.createWorkflowFolder(e).subscribe({next:()=>{this.creatingFolder=!1,this.folderPaths=[...new Set([...this.folderPaths,e])].sort(),this.selectFolder(e),this.cancelFolder()},error:o=>{this.creatingFolder=!1,this.folderError=o?.error?.error??"Failed to create folder."}})}cancelFolder(){this.showFolderForm=!1,this.newFolderName="",this.folderError=""}selectWorkflow(i){this.selectedWorkflow=i,this.runError=""}trackWorkflow(i,e){return e.id}runSelected(){!this.selectedWorkflow||this.running||(this.running=!0,this.api.startRun(this.selectedWorkflow.id,this.runArgs).subscribe({next:i=>this.router.navigate(["/runs",i.runId]),error:i=>{this.running=!1,this.runError=i?.error?.error??"Failed to start workflow."}}))}static \u0275fac=function(e){return new(e||a)};static \u0275cmp=y({type:a,selectors:[["app-workflows"]],decls:14,vars:6,consts:[["noSelection",""],[1,"page"],[1,"page-header"],["routerLink","/workflows/builder",1,"primary-button",3,"queryParams"],["class","state",4,"ngIf"],["class","state error",4,"ngIf"],["class","explorer",4,"ngIf"],[1,"state"],[1,"state","error"],[1,"explorer"],[1,"folder-panel"],[1,"folder-heading"],[1,"panel-heading"],["type","button","title","Create subfolder",3,"click"],["class","folder-form",3,"ngSubmit",4,"ngIf"],["type","button",1,"folder-row","root",3,"click"],[1,"chevron"],["type","button","class","folder-row",3,"active","padding-left","click",4,"ngFor","ngForOf"],["routerLink","/workflows/builder",1,"folder-new-flow",3,"queryParams"],[1,"content-panel"],[1,"content-toolbar"],["aria-label","Workflow folder",1,"breadcrumb"],["type","button",3,"click"],[4,"ngFor","ngForOf"],["type","search","placeholder","Search this workspace",3,"ngModelChange","ngModel"],[1,"column-head"],["class","workflow-row",3,"selected","click",4,"ngFor","ngForOf","ngForTrackBy"],["class","empty",4,"ngIf"],[1,"run-panel"],[4,"ngIf","ngIfElse"],[1,"folder-form",3,"ngSubmit"],["name","folderName","placeholder","folder-name","autofocus","",3,"ngModelChange","ngModel"],["type","submit",3,"disabled"],[4,"ngIf"],["type","button",1,"folder-row",3,"click"],[1,"workflow-row",3,"click"],[1,"workflow-name"],[1,"file-icon"],[1,"node-count"],[1,"row-actions"],["routerLink","/workflows/detail",3,"click","queryParams"],[1,"empty"],[1,"namespace"],["for","run-args"],["id","run-args","placeholder","Optional run args",3,"ngModelChange","ngModel","disabled"],["type","button",1,"run-button",3,"click","disabled"],["routerLink","/workflows/detail",1,"details-button",3,"queryParams"],["class","run-error",4,"ngIf"],[1,"run-error"]],template:function(e,o){e&1&&(n(0,"section",1)(1,"header",2)(2,"div")(3,"h1"),r(4,"Workflows"),t(),n(5,"p"),r(6,"Browse workflow definitions by their directory structure."),t()(),n(7,"a",3)(8,"span"),r(9,"+"),t(),r(10," New workflow"),t()(),u(11,K,2,0,"div",4)(12,U,2,1,"div",5)(13,ae,43,17,"div",6),t()),e&2&&(l(7),s("queryParams",b(4,J,o.selectedFolder||null)),l(4),s("ngIf",o.loading),l(),s("ngIf",o.loadError),l(),s("ngIf",!o.loading&&!o.loadError))},dependencies:[z,V,T,D,$,A,R,j,B,q,L],styles:["[_nghost-%COMP%]{display:block;min-height:calc(100vh - 56px);background:#101114;color:#e7e7ea}.page[_ngcontent-%COMP%]{padding:22px;max-width:1600px;margin:auto}.page-header[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center;margin-bottom:18px}.page-header[_ngcontent-%COMP%] h1[_ngcontent-%COMP%]{font-size:21px;margin:0}.page-header[_ngcontent-%COMP%] p[_ngcontent-%COMP%], .content-toolbar[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{font-size:13px;color:#8f96a3;margin:4px 0 0}.primary-button[_ngcontent-%COMP%], .details-button[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:7px;background:#6366f1;color:#fff;text-decoration:none;padding:9px 12px;border-radius:6px;font-size:13px;font-weight:700}.explorer[_ngcontent-%COMP%]{display:grid;grid-template-columns:240px minmax(500px,1fr) 280px;min-height:620px;border:1px solid #292c34;border-radius:7px;overflow:hidden;background:#15161a}.folder-panel[_ngcontent-%COMP%], .run-panel[_ngcontent-%COMP%]{background:#131419}.folder-panel[_ngcontent-%COMP%]{border-right:1px solid #292c34;padding:12px 8px}.run-panel[_ngcontent-%COMP%]{border-left:1px solid #292c34;padding:14px}.panel-heading[_ngcontent-%COMP%]{font-size:11px;color:#8f96a3;text-transform:uppercase;font-weight:800;margin:3px 7px 12px}.folder-heading[_ngcontent-%COMP%]{display:flex;justify-content:space-between}.folder-heading[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{width:24px;height:24px;border:1px solid #353842;border-radius:4px;background:#202229;color:#fff;cursor:pointer}.folder-form[_ngcontent-%COMP%]{border:1px solid #383b45;background:#191b20;padding:8px;margin-bottom:8px;border-radius:5px}.folder-form[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{display:block;color:#777e8b;font-size:10px;overflow-wrap:anywhere}.folder-form[_ngcontent-%COMP%] input[_ngcontent-%COMP%]{box-sizing:border-box;width:100%;margin:5px 0;border:1px solid #3b3e49;background:#101114;color:#fff;padding:6px;border-radius:4px}.folder-form[_ngcontent-%COMP%] div[_ngcontent-%COMP%]{display:flex;gap:5px}.folder-form[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{border:1px solid #3b3e49;background:#252731;color:#ddd;padding:4px 6px;border-radius:4px;font-size:10px}.folder-form[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{color:#fca5a5;font-size:10px;margin:6px 0 0}.folder-new-flow[_ngcontent-%COMP%]{display:block;color:#a5b4fc;text-decoration:none;font-size:11px;padding:9px 12px;border-top:1px solid #292c34;margin-top:8px}.folder-row[_ngcontent-%COMP%]{display:grid;grid-template-columns:16px minmax(0,1fr) auto;gap:7px;align-items:center;width:100%;height:34px;border:0;border-radius:5px;background:transparent;color:#b7bbc4;text-align:left;cursor:pointer;padding-right:9px}.folder-row[_ngcontent-%COMP%]:hover, .folder-row.active[_ngcontent-%COMP%]{background:#242630;color:#fff}.folder-row[_ngcontent-%COMP%] span[_ngcontent-%COMP%]:nth-child(2){overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.folder-row[_ngcontent-%COMP%] strong[_ngcontent-%COMP%]{font-size:10px;color:#6f7684}.chevron[_ngcontent-%COMP%]{color:#7c83ff}.content-panel[_ngcontent-%COMP%]{min-width:0;padding:0 16px 20px}.content-toolbar[_ngcontent-%COMP%]{min-height:72px;display:flex;justify-content:space-between;align-items:center;gap:20px;border-bottom:1px solid #292c34}.breadcrumb[_ngcontent-%COMP%]{display:flex;align-items:center;gap:6px}.breadcrumb[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{border:0;background:transparent;color:#949ba8;padding:0;cursor:pointer;font-weight:600}.breadcrumb[_ngcontent-%COMP%] button.current[_ngcontent-%COMP%]{color:#fff}.breadcrumb[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{color:#555b67}.content-toolbar[_ngcontent-%COMP%] input[_ngcontent-%COMP%], .run-panel[_ngcontent-%COMP%] input[_ngcontent-%COMP%]{box-sizing:border-box;border:1px solid #343741;background:#101114;color:#eee;border-radius:5px;padding:8px 10px;outline:none}.content-toolbar[_ngcontent-%COMP%] input[_ngcontent-%COMP%]{width:260px}.content-toolbar[_ngcontent-%COMP%] input[_ngcontent-%COMP%]:focus, .run-panel[_ngcontent-%COMP%] input[_ngcontent-%COMP%]:focus{border-color:#6366f1}.column-head[_ngcontent-%COMP%], .workflow-row[_ngcontent-%COMP%]{display:grid;grid-template-columns:minmax(220px,1.4fr) 60px minmax(150px,.8fr) 120px;gap:12px;align-items:center}.column-head[_ngcontent-%COMP%]{height:38px;color:#707784;font-size:10px;text-transform:uppercase;font-weight:800}.workflow-row[_ngcontent-%COMP%]{min-height:68px;border-top:1px solid #25272e;padding:10px 0;cursor:pointer}.workflow-row[_ngcontent-%COMP%]:hover, .workflow-row.selected[_ngcontent-%COMP%]{background:#1b1d23}.workflow-name[_ngcontent-%COMP%]{display:flex;align-items:flex-start;gap:10px;min-width:0;padding-left:8px}.workflow-name[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{min-width:0}.file-icon[_ngcontent-%COMP%]{display:grid;place-items:center;flex:0 0 28px;width:28px;height:32px;border:1px solid #4b4f5c;border-radius:4px;color:#a5b4fc;font-size:11px;font-weight:900}.workflow-name[_ngcontent-%COMP%] strong[_ngcontent-%COMP%]{display:block;font-size:13px;overflow-wrap:anywhere}.workflow-name[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{margin:4px 0 0;color:#777e8b;font-size:11px;line-height:1.4;overflow:hidden;overflow-wrap:anywhere;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3}.node-count[_ngcontent-%COMP%]{color:#aeb4bf;font-size:12px}.workflow-row[_ngcontent-%COMP%] code[_ngcontent-%COMP%]{font-size:10px;color:#777e8b;overflow:hidden;text-overflow:ellipsis}.row-actions[_ngcontent-%COMP%]{display:flex;gap:6px}.row-actions[_ngcontent-%COMP%] a[_ngcontent-%COMP%], .row-actions[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{border:1px solid #383b45;background:#202229;color:#c9ccd3;border-radius:4px;padding:5px 7px;text-decoration:none;font:inherit;font-size:11px;cursor:pointer}.run-panel[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{font-size:16px;margin:7px 0}.run-panel[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{color:#9299a5;font-size:12px;line-height:1.5}.namespace[_ngcontent-%COMP%]{font:10px ui-monospace,monospace;color:#818cf8;overflow-wrap:anywhere}.run-panel[_ngcontent-%COMP%] dl[_ngcontent-%COMP%]{border-top:1px solid #292c34;border-bottom:1px solid #292c34;padding:8px 0;margin:14px 0}.run-panel[_ngcontent-%COMP%] dl[_ngcontent-%COMP%] div[_ngcontent-%COMP%]{display:flex;justify-content:space-between;font-size:11px;padding:4px 0}.run-panel[_ngcontent-%COMP%] dt[_ngcontent-%COMP%]{color:#777e8b}.run-panel[_ngcontent-%COMP%] dd[_ngcontent-%COMP%]{margin:0;max-width:170px;overflow-wrap:anywhere;text-align:right}.run-panel[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{display:block;font-size:10px;text-transform:uppercase;color:#8f96a3;font-weight:700;margin-bottom:6px}.run-panel[_ngcontent-%COMP%] input[_ngcontent-%COMP%]{width:100%}.run-button[_ngcontent-%COMP%], .details-button[_ngcontent-%COMP%]{width:100%;justify-content:center;box-sizing:border-box;margin-top:9px;border:0}.run-button[_ngcontent-%COMP%]{background:#059669;color:#fff;padding:9px;border-radius:5px;font-weight:700;cursor:pointer}.run-button[_ngcontent-%COMP%]:disabled{opacity:.5}.details-button[_ngcontent-%COMP%]{background:#242630}.run-error[_ngcontent-%COMP%], .state.error[_ngcontent-%COMP%]{color:#fecaca}.run-error[_ngcontent-%COMP%]{font-size:11px;margin-top:10px}.state[_ngcontent-%COMP%], .empty[_ngcontent-%COMP%]{border:1px solid #292c34;padding:18px;color:#949ba8;border-radius:6px}.empty[_ngcontent-%COMP%]{text-align:center;margin-top:12px}.state[_ngcontent-%COMP%] code[_ngcontent-%COMP%]{background:#0b0c0f;padding:2px 5px}@media(max-width:1100px){.explorer[_ngcontent-%COMP%]{grid-template-columns:210px 1fr}.run-panel[_ngcontent-%COMP%]{display:none}}@media(max-width:720px){.page[_ngcontent-%COMP%]{padding:14px}.page-header[_ngcontent-%COMP%]{align-items:flex-start}.explorer[_ngcontent-%COMP%]{display:block}.folder-panel[_ngcontent-%COMP%]{border-right:0;border-bottom:1px solid #292c34}.content-toolbar[_ngcontent-%COMP%]{align-items:flex-start;flex-direction:column;padding:14px 0}.content-toolbar[_ngcontent-%COMP%] input[_ngcontent-%COMP%]{width:100%}.column-head[_ngcontent-%COMP%]{display:none}.workflow-row[_ngcontent-%COMP%]{grid-template-columns:1fr auto}.workflow-row[_ngcontent-%COMP%] > code[_ngcontent-%COMP%], .node-count[_ngcontent-%COMP%]{display:none}}"]})};export{G as WorkflowsComponent};
@@ -0,0 +1 @@
1
+ import{a as G,b as H,e as J,j as K}from"./chunk-L2VOQBBI.js";import{a as Q}from"./chunk-OJJM5VOH.js";import{$ as M,D as C,Da as $,Fa as B,Ga as q,H as f,K as v,L as D,M as W,P as s,Q as n,R as t,S as N,T,U as R,W as u,X as _,Y as p,ba as o,ca as d,da as b,fa as V,g as I,ga as z,ha as F,ka as P,la as h,ma as k,n as w,o as g,p as x,t as O,va as A,wa as L,ya as j,z as i,za as Y}from"./chunk-U2H3QYAG.js";function ne(r,l){if(r&1){let e=u();n(0,"div",1),_("click",function(){g(e);let a=p();return x(a.close())}),n(1,"div",2),_("click",function(a){return a.stopPropagation()}),n(2,"h3",3),o(3),t(),n(4,"label",4),o(5,"Arguments"),t(),n(6,"input",5),F("ngModelChange",function(a){g(e);let m=p();return z(m.args,a)||(m.args=a),x(a)}),_("keydown.enter",function(){g(e);let a=p();return x(a.submit())}),t(),n(7,"div",6)(8,"button",7),_("click",function(){g(e);let a=p();return x(a.close())}),o(9,"Cancel"),t(),n(10,"button",8),_("click",function(){g(e);let a=p();return x(a.submit())}),o(11,"Start \u25B6"),t()()()()}if(r&2){let e=p();i(3),b("Run ",e.workflowName),i(3),V("ngModel",e.args)}}var y=class r{visible=!1;workflowName="";run=new O;closed=new O;args="";submit(){this.run.emit(this.args),this.args=""}close(){this.visible=!1,this.args="",this.closed.emit()}static \u0275fac=function(e){return new(e||r)};static \u0275cmp=C({type:r,selectors:[["app-run-dialog"]],inputs:{visible:"visible",workflowName:"workflowName"},outputs:{run:"run",closed:"closed"},decls:1,vars:1,consts:[[1,"fixed","inset-0","bg-black/60","flex","items-center","justify-center","z-50"],[1,"fixed","inset-0","bg-black/60","flex","items-center","justify-center","z-50",3,"click"],[1,"bg-slate-800","rounded-lg","p-6","w-full","max-w-md","border","border-slate-700",3,"click"],[1,"text-lg","font-semibold","text-slate-100","mb-4"],[1,"block","text-sm","text-slate-400","mb-1"],["placeholder",'e.g. "fix #42"',1,"w-full","bg-slate-900","border","border-slate-600","rounded","px-3","py-2","text-slate-100","text-sm","focus:outline-none","focus:border-blue-500","mb-4",3,"ngModelChange","keydown.enter","ngModel"],[1,"flex","justify-end","gap-3"],[1,"px-4","py-2","text-sm","text-slate-400","hover:text-slate-200",3,"click"],[1,"px-4","py-2","text-sm","bg-blue-600","text-white","rounded","hover:bg-blue-500",3,"click"]],template:function(e,c){e&1&&D(0,ne,12,2,"div",0),e&2&&W(c.visible?0:-1)},dependencies:[K,G,H,J],encapsulation:2})};var oe=r=>({edit:r}),ie=r=>["/runs",r];function re(r,l){if(r&1&&(n(0,"div",4),o(1),t()),r&2){let e=p();i(),d(e.error)}}function ae(r,l){r&1&&(n(0,"div",5),o(1,"Loading workflow definition..."),t())}function le(r,l){if(r&1&&(n(0,"span"),o(1),t()),r&2){let e=p(3);i(),d(e.runs.length)}}function de(r,l){if(r&1){let e=u();n(0,"button",24),_("click",function(){let a=g(e).$implicit,m=p(2);return x(m.tab=a.id)}),o(1),f(2,le,2,1,"span",3),t()}if(r&2){let e=l.$implicit,c=p(2);M("active",c.tab===e.id),i(),b(" ",e.label," "),i(),s("ngIf",e.id==="runs")}}function ce(r,l){if(r&1){let e=u();n(0,"button",30),_("click",function(){let a=g(e).$implicit,m=p(3);return x(m.selectedNode=a)}),n(1,"span",31),o(2),t(),n(3,"span",32),o(4),t(),n(5,"span",33)(6,"strong"),o(7),t(),n(8,"small"),o(9),t()(),n(10,"span",34),o(11),t()()}if(r&2){let e=l.$implicit,c=l.index,a=p(3);M("selected",(a.selectedNode==null?null:a.selectedNode.id)===e.id),i(2),d(c+1),i(),v("data-type",e.type),i(),d(a.typeLabel(e.type)),i(3),d(e.id),i(2),d(e.content),i(2),d(e.dependsOn.length?"After "+e.dependsOn.join(", "):"Entry point")}}function pe(r,l){if(r&1&&(n(0,"aside",35)(1,"div",36),o(2,"Node inspector"),t(),n(3,"h3"),o(4),t(),n(5,"span",37),o(6),t(),n(7,"dl")(8,"div")(9,"dt"),o(10,"Depends on"),t(),n(11,"dd"),o(12),t()(),n(13,"div")(14,"dt"),o(15,"Trigger"),t(),n(16,"dd"),o(17),t()(),n(18,"div")(19,"dt"),o(20,"Context"),t(),n(21,"dd"),o(22),t()(),n(23,"div")(24,"dt"),o(25,"Condition"),t(),n(26,"dd"),o(27),t()(),n(28,"div")(29,"dt"),o(30,"Model"),t(),n(31,"dd"),o(32),t()()(),n(33,"label"),o(34,"Content"),t(),n(35,"pre"),o(36),t()()),r&2){let e=p(3);i(4),d(e.selectedNode.id),i(2),d(e.selectedNode.type),i(6),d(e.selectedNode.dependsOn.join(", ")||"None"),i(5),d(e.selectedNode.triggerRule),i(5),d(e.selectedNode.context),i(5),d(e.selectedNode.when||"Always"),i(5),d(e.selectedNode.model||e.workflow.defaultModel||"Default"),i(4),d(e.selectedNode.content)}}function se(r,l){if(r&1&&(n(0,"div",25)(1,"main",26)(2,"div",27)(3,"div")(4,"h2"),o(5,"Workflow steps"),t(),n(6,"p"),o(7,"Execution order and node configuration."),t()()(),f(8,ce,12,8,"button",28),t(),f(9,pe,37,8,"aside",29),t()),r&2){let e=p(2);i(8),s("ngForOf",e.workflow.nodes),i(),s("ngIf",e.selectedNode)}}function me(r,l){if(r&1&&(n(0,"article")(1,"div")(2,"span",32),o(3),t(),n(4,"strong"),o(5),t()(),n(6,"small"),o(7),t()()),r&2){let e=l.$implicit,c=p(4);i(2),v("data-type",e.type),i(),d(c.typeLabel(e.type)),i(2),d(e.id),i(2),d(e.dependsOn.length?"\u2190 "+e.dependsOn.join(", "):"Entry point")}}function ge(r,l){if(r&1&&(n(0,"div",42)(1,"span",43),o(2),t(),f(3,me,8,4,"article",44),t()),r&2){let e=l.$implicit,c=l.index;i(2),b("Stage ",c+1),i(),s("ngForOf",e)}}function xe(r,l){if(r&1&&(n(0,"div",38)(1,"div",39)(2,"div")(3,"h2"),o(4,"DAG topology"),t(),n(5,"p"),o(6,"Dependencies flow from left to right."),t()(),n(7,"span"),o(8),t()(),n(9,"div",40),f(10,ge,4,2,"div",41),t()()),r&2){let e=p(2);i(8),b("",e.dagLayers.length," stages"),i(2),s("ngForOf",e.dagLayers)}}function _e(r,l){if(r&1){let e=u();n(0,"div",45)(1,"div",46)(2,"span"),o(3,"Read-only YAML definition"),t(),n(4,"button",24),_("click",function(){g(e);let a=p(2);return x(a.copyYaml())}),o(5),t()(),n(6,"pre"),o(7),t()()}if(r&2){let e=p(2);i(5),d(e.copied?"Copied":"Copy"),i(2),d(e.workflow.yaml)}}function fe(r,l){if(r&1&&(n(0,"tr")(1,"td")(2,"code"),o(3),t()(),n(4,"td")(5,"span",48),o(6),t()(),n(7,"td"),o(8),h(9,"date"),t(),n(10,"td"),o(11),h(12,"date"),t(),n(13,"td")(14,"a",49),o(15,"Open"),t()()()),r&2){let e=l.$implicit;i(3),d(e.runId),i(2),v("data-status",e.status),i(),d(e.status),i(2),d(k(9,6,e.startedAt,"medium")),i(3),d(e.completedAt?k(12,9,e.completedAt,"medium"):"In progress"),i(3),s("routerLink",P(12,ie,e.runId))}}function ue(r,l){r&1&&(n(0,"tr")(1,"td",50),o(2,"This workflow has not been run yet."),t()())}function be(r,l){if(r&1&&(n(0,"div",47)(1,"table")(2,"thead")(3,"tr")(4,"th"),o(5,"Run ID"),t(),n(6,"th"),o(7,"Status"),t(),n(8,"th"),o(9,"Started"),t(),n(10,"th"),o(11,"Completed"),t(),N(12,"th"),t()(),n(13,"tbody"),f(14,fe,16,14,"tr",44)(15,ue,3,0,"tr",3),t()()()),r&2){let e=p(2);i(14),s("ngForOf",e.runs),i(),s("ngIf",!e.runs.length)}}function we(r,l){if(r&1){let e=u();T(0),n(1,"nav",6)(2,"a",7),o(3,"Workflows"),t(),n(4,"span"),o(5,"/"),t(),n(6,"span"),o(7),t()(),n(8,"header",8)(9,"div",9),o(10,"Y"),t(),n(11,"div",10)(12,"span",11),o(13),t(),n(14,"h1"),o(15),t(),n(16,"p"),o(17),t()(),n(18,"div",12)(19,"a",13),o(20,"Edit"),t(),n(21,"button",14),_("click",function(){g(e);let a=p();return x(a.showRunDialog=!0)}),o(22,"Run workflow"),t()()(),n(23,"div",15)(24,"div")(25,"span"),o(26,"Nodes"),t(),n(27,"strong"),o(28),t()(),n(29,"div")(30,"span"),o(31,"Dependencies"),t(),n(32,"strong"),o(33),t()(),n(34,"div")(35,"span"),o(36,"Provider"),t(),n(37,"strong"),o(38),t()(),n(39,"div")(40,"span"),o(41,"Model"),t(),n(42,"strong"),o(43),t()(),n(44,"div")(45,"span"),o(46,"Runs"),t(),n(47,"strong"),o(48),t()()(),n(49,"div",16)(50,"span"),o(51,"Definition"),t(),n(52,"code"),o(53),t()(),n(54,"nav",17),f(55,de,3,4,"button",18),t(),f(56,se,10,2,"div",19)(57,xe,11,2,"div",20)(58,_e,8,2,"div",21)(59,be,16,2,"div",22),n(60,"app-run-dialog",23),_("run",function(a){g(e);let m=p();return x(m.onStartRun(a))})("closed",function(){g(e);let a=p();return x(a.showRunDialog=!1)}),t(),R()}if(r&2){let e=p();i(7),d(e.workflow.id),i(6),d(e.workflow.id),i(2),d(e.workflow.name),i(2),d(e.workflow.description||"No description provided."),i(2),s("queryParams",P(18,oe,e.workflow.id)),i(9),d(e.workflow.nodeCount),i(5),d(e.dependencyCount),i(5),d(e.workflow.defaultProvider||"default"),i(5),d(e.workflow.defaultModel||"default"),i(5),d(e.runs.length),i(5),b(".vsaf/workflows/",e.workflow.file),i(2),s("ngForOf",e.tabs),i(),s("ngIf",e.tab==="overview"),i(),s("ngIf",e.tab==="dag"),i(),s("ngIf",e.tab==="yaml"),i(),s("ngIf",e.tab==="runs"),i(),s("visible",e.showRunDialog)("workflowName",e.workflow.id)}}var U=class r{route=w($);api=w(Q);router=w(B);workflow;runs=[];selectedNode;tab="overview";showRunDialog=!1;loading=!0;error="";copied=!1;tabs=[{id:"overview",label:"Overview"},{id:"dag",label:"DAG"},{id:"yaml",label:"YAML"},{id:"runs",label:"Runs"}];ngOnInit(){let l=this.route.snapshot.queryParamMap.get("id");if(!l){this.loading=!1,this.error="Missing workflow id.";return}I({workflow:this.api.getWorkflow(l),runs:this.api.getRuns()}).subscribe({next:e=>{this.workflow=e.workflow,this.selectedNode=e.workflow.nodes[0],this.runs=e.runs.filter(c=>c.workflow===l).reverse(),this.loading=!1},error:e=>{this.loading=!1,this.error=e?.error?.error??"Failed to load workflow."}})}get dependencyCount(){return this.workflow?.nodes.reduce((l,e)=>l+e.dependsOn.length,0)??0}get dagLayers(){if(!this.workflow)return[];let l=new Map,e=(a,m=new Set)=>{if(l.has(a.id))return l.get(a.id);if(m.has(a.id)||!a.dependsOn.length)return 0;m.add(a.id);let S=1+Math.max(...a.dependsOn.map(X=>{let E=this.workflow.nodes.find(Z=>Z.id===X);return E?e(E,m):0}));return m.delete(a.id),l.set(a.id,S),S};for(let a of this.workflow.nodes)l.set(a.id,e(a));let c=[];for(let a of this.workflow.nodes)(c[l.get(a.id)??0]??=[]).push(a);return c}typeLabel(l){return l==="command"?"CMD":l==="prompt"?"AI":"SH"}onStartRun(l){this.showRunDialog=!1,this.api.startRun(this.workflow.id,l).subscribe(e=>this.router.navigate(["/runs",e.runId]))}copyYaml(){this.workflow&&navigator.clipboard.writeText(this.workflow.yaml).then(()=>{this.copied=!0,setTimeout(()=>this.copied=!1,1500)})}static \u0275fac=function(e){return new(e||r)};static \u0275cmp=C({type:r,selectors:[["app-workflow-detail"]],decls:4,vars:3,consts:[[1,"detail-page"],["class","state error",4,"ngIf"],["class","state",4,"ngIf"],[4,"ngIf"],[1,"state","error"],[1,"state"],[1,"breadcrumb"],["routerLink","/workflows"],[1,"hero"],[1,"workflow-icon"],[1,"hero-copy"],[1,"namespace"],[1,"hero-actions"],["routerLink","/workflows/builder",1,"button","secondary",3,"queryParams"],["type","button",1,"button","primary",3,"click"],[1,"stats"],[1,"file-strip"],["aria-label","Workflow detail sections",1,"tabs"],["type","button",3,"active","click",4,"ngFor","ngForOf"],["class","tab-content",4,"ngIf"],["class","dag-panel",4,"ngIf"],["class","yaml-panel",4,"ngIf"],["class","runs-panel",4,"ngIf"],[3,"run","closed","visible","workflowName"],["type","button",3,"click"],[1,"tab-content"],[1,"node-list"],[1,"section-heading"],["type","button","class","node-row",3,"selected","click",4,"ngFor","ngForOf"],["class","inspector",4,"ngIf"],["type","button",1,"node-row",3,"click"],[1,"step-index"],[1,"type-icon"],[1,"node-main"],[1,"dependency"],[1,"inspector"],[1,"inspector-title"],[1,"badge"],[1,"dag-panel"],[1,"dag-toolbar"],[1,"dag-canvas"],["class","dag-layer",4,"ngFor","ngForOf"],[1,"dag-layer"],[1,"layer-label"],[4,"ngFor","ngForOf"],[1,"yaml-panel"],[1,"yaml-toolbar"],[1,"runs-panel"],[1,"status"],[3,"routerLink"],["colspan","5",1,"empty"]],template:function(e,c){e&1&&(n(0,"section",0),f(1,re,2,1,"div",1)(2,ae,2,0,"div",2)(3,we,61,20,"ng-container",3),t()),e&2&&(i(),s("ngIf",c.error),i(),s("ngIf",c.loading),i(),s("ngIf",c.workflow))},dependencies:[Y,A,L,q,y,j],styles:["[_nghost-%COMP%]{display:block;min-height:calc(100vh - 56px);background:#101114;color:#e7e7ea}.detail-page[_ngcontent-%COMP%]{max-width:1320px;margin:auto;padding:24px 28px 60px}.breadcrumb[_ngcontent-%COMP%]{display:flex;gap:7px;color:#737a87;font-size:12px;margin-bottom:18px}.breadcrumb[_ngcontent-%COMP%] a[_ngcontent-%COMP%]{color:#9ca3af;text-decoration:none}.hero[_ngcontent-%COMP%]{display:flex;align-items:flex-start;gap:15px}.workflow-icon[_ngcontent-%COMP%]{display:grid;place-items:center;flex:0 0 46px;height:52px;border:1px solid #454957;border-radius:6px;color:#a5b4fc;font-weight:900}.hero-copy[_ngcontent-%COMP%]{min-width:0}.namespace[_ngcontent-%COMP%]{font:11px ui-monospace,monospace;color:#818cf8}.hero[_ngcontent-%COMP%] h1[_ngcontent-%COMP%]{font-size:26px;margin:4px 0}.hero[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{color:#9ba1ad;margin:5px 0;line-height:1.5;max-width:800px}.hero-actions[_ngcontent-%COMP%]{display:flex;gap:8px;margin-left:auto}.button[_ngcontent-%COMP%]{padding:9px 13px;border-radius:5px;text-decoration:none;font:inherit;font-size:12px;font-weight:700;cursor:pointer}.button.secondary[_ngcontent-%COMP%]{border:1px solid #3b3e48;background:#1c1e24;color:#e5e7eb}.button.primary[_ngcontent-%COMP%]{border:1px solid #6366f1;background:#6366f1;color:#fff}.stats[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(5,1fr);border:1px solid #2d3038;border-radius:7px;margin-top:24px;background:#16171c}.stats[_ngcontent-%COMP%] div[_ngcontent-%COMP%]{padding:13px 16px;border-right:1px solid #2d3038}.stats[_ngcontent-%COMP%] div[_ngcontent-%COMP%]:last-child{border:0}.stats[_ngcontent-%COMP%] span[_ngcontent-%COMP%], .file-strip[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{display:block;color:#777e8b;font-size:10px;text-transform:uppercase;font-weight:700}.stats[_ngcontent-%COMP%] strong[_ngcontent-%COMP%]{display:block;margin-top:5px;font-size:14px}.file-strip[_ngcontent-%COMP%]{display:flex;align-items:center;gap:14px;padding:10px 14px;border:1px solid #2d3038;border-top:0;background:#131419}.file-strip[_ngcontent-%COMP%] code[_ngcontent-%COMP%]{color:#aab0bb;font-size:11px}.tabs[_ngcontent-%COMP%]{display:flex;border-bottom:1px solid #2d3038;margin-top:24px}.tabs[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{border:0;background:transparent;color:#858c98;padding:10px 14px;font-weight:700;cursor:pointer}.tabs[_ngcontent-%COMP%] button.active[_ngcontent-%COMP%]{color:#fff;box-shadow:inset 0 -2px #6366f1}.tabs[_ngcontent-%COMP%] button[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{background:#292c34;padding:1px 5px;border-radius:8px;font-size:10px}.tab-content[_ngcontent-%COMP%]{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:16px;margin-top:18px}.section-heading[_ngcontent-%COMP%] h2[_ngcontent-%COMP%], .dag-toolbar[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{font-size:15px;margin:0}.section-heading[_ngcontent-%COMP%] p[_ngcontent-%COMP%], .dag-toolbar[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{font-size:12px;color:#7f8692;margin:4px 0 12px}.node-row[_ngcontent-%COMP%]{display:grid;grid-template-columns:28px 38px minmax(180px,1fr) minmax(120px,.5fr);align-items:center;gap:11px;width:100%;border:1px solid #292c34;border-bottom:0;background:#16171c;color:#e5e7eb;padding:11px;text-align:left;cursor:pointer}.node-row[_ngcontent-%COMP%]:first-of-type{border-radius:6px 6px 0 0}.node-row[_ngcontent-%COMP%]:last-child{border-bottom:1px solid #292c34;border-radius:0 0 6px 6px}.node-row[_ngcontent-%COMP%]:hover, .node-row.selected[_ngcontent-%COMP%]{background:#1e2027;border-color:#494d5a}.step-index[_ngcontent-%COMP%]{color:#676e7a;font-size:11px;text-align:center}.type-icon[_ngcontent-%COMP%]{display:grid;place-items:center;width:34px;height:28px;border-radius:4px;background:#242630;color:#c4b5fd;font-size:9px;font-weight:900;text-transform:uppercase}.type-icon[data-type=bash][_ngcontent-%COMP%]{color:#fbbf24}.type-icon[data-type=command][_ngcontent-%COMP%]{color:#67e8f9}.node-main[_ngcontent-%COMP%]{min-width:0}.node-main[_ngcontent-%COMP%] strong[_ngcontent-%COMP%], .node-main[_ngcontent-%COMP%] small[_ngcontent-%COMP%]{display:block}.node-main[_ngcontent-%COMP%] small[_ngcontent-%COMP%]{color:#777e8b;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-top:4px}.dependency[_ngcontent-%COMP%]{color:#858c98;font-size:11px;overflow-wrap:anywhere}.inspector[_ngcontent-%COMP%]{border:1px solid #2d3038;background:#16171c;border-radius:6px;padding:15px}.inspector-title[_ngcontent-%COMP%]{color:#777e8b;text-transform:uppercase;font-size:10px;font-weight:800}.inspector[_ngcontent-%COMP%] h3[_ngcontent-%COMP%]{margin:8px 0;font-size:16px}.badge[_ngcontent-%COMP%]{display:inline-block;border:1px solid #4b4f5c;padding:2px 6px;border-radius:4px;font-size:10px;color:#a5b4fc}.inspector[_ngcontent-%COMP%] dl[_ngcontent-%COMP%]{margin:14px 0}.inspector[_ngcontent-%COMP%] dl[_ngcontent-%COMP%] div[_ngcontent-%COMP%]{display:flex;justify-content:space-between;gap:12px;padding:7px 0;border-bottom:1px solid #282a31;font-size:11px}.inspector[_ngcontent-%COMP%] dt[_ngcontent-%COMP%]{color:#777e8b}.inspector[_ngcontent-%COMP%] dd[_ngcontent-%COMP%]{margin:0;text-align:right;overflow-wrap:anywhere}.inspector[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{font-size:10px;color:#777e8b;text-transform:uppercase}.inspector[_ngcontent-%COMP%] pre[_ngcontent-%COMP%]{white-space:pre-wrap;overflow-wrap:anywhere;background:#0d0e11;padding:10px;border-radius:5px;font-size:11px;max-height:240px;overflow:auto}.dag-panel[_ngcontent-%COMP%], .yaml-panel[_ngcontent-%COMP%], .runs-panel[_ngcontent-%COMP%]{margin-top:18px;border:1px solid #2d3038;border-radius:7px;overflow:hidden}.dag-toolbar[_ngcontent-%COMP%], .yaml-toolbar[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;padding:12px 14px;border-bottom:1px solid #2d3038;background:#16171c}.dag-toolbar[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{margin-bottom:0}.dag-toolbar[_ngcontent-%COMP%] > span[_ngcontent-%COMP%], .yaml-toolbar[_ngcontent-%COMP%]{font-size:11px;color:#858c98}.dag-canvas[_ngcontent-%COMP%]{display:flex;align-items:stretch;gap:42px;min-height:380px;overflow:auto;padding:32px;background-color:#101114;background-image:radial-gradient(#30333b 1px,transparent 1px);background-size:16px 16px}.dag-layer[_ngcontent-%COMP%]{display:flex;flex:0 0 220px;flex-direction:column;gap:10px;position:relative}.layer-label[_ngcontent-%COMP%]{font-size:10px;color:#6f7684;text-transform:uppercase}.dag-layer[_ngcontent-%COMP%] article[_ngcontent-%COMP%]{border:1px solid #3a3d47;background:#191b20;border-radius:6px;padding:10px}.dag-layer[_ngcontent-%COMP%] article[_ngcontent-%COMP%] div[_ngcontent-%COMP%]{display:flex;align-items:center;gap:9px}.dag-layer[_ngcontent-%COMP%] article[_ngcontent-%COMP%] small[_ngcontent-%COMP%]{display:block;color:#777e8b;margin-top:8px;overflow-wrap:anywhere}.yaml-toolbar[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{border:1px solid #3a3d47;background:#22242b;color:#ddd;border-radius:4px;padding:5px 9px}.yaml-panel[_ngcontent-%COMP%] > pre[_ngcontent-%COMP%]{margin:0;padding:18px;min-height:420px;max-height:65vh;overflow:auto;background:#0d0e11;color:#cdd6f4;font:12px/1.6 ui-monospace,monospace;white-space:pre-wrap}.runs-panel[_ngcontent-%COMP%] table[_ngcontent-%COMP%]{width:100%;border-collapse:collapse;background:#16171c;font-size:12px}.runs-panel[_ngcontent-%COMP%] th[_ngcontent-%COMP%], .runs-panel[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{padding:12px;text-align:left;border-bottom:1px solid #292c34}.runs-panel[_ngcontent-%COMP%] th[_ngcontent-%COMP%]{color:#777e8b;text-transform:uppercase;font-size:10px}.runs-panel[_ngcontent-%COMP%] a[_ngcontent-%COMP%]{color:#a5b4fc}.status[_ngcontent-%COMP%]{font-size:10px;text-transform:uppercase}.status[data-status=completed][_ngcontent-%COMP%]{color:#34d399}.status[data-status=failed][_ngcontent-%COMP%], .status[data-status=cancelled][_ngcontent-%COMP%]{color:#f87171}.status[data-status=running][_ngcontent-%COMP%]{color:#60a5fa}.empty[_ngcontent-%COMP%], .state[_ngcontent-%COMP%]{padding:24px;text-align:center;color:#858c98}.state.error[_ngcontent-%COMP%]{color:#fca5a5}@media(max-width:900px){.detail-page[_ngcontent-%COMP%]{padding:18px 14px}.hero[_ngcontent-%COMP%]{flex-wrap:wrap}.hero-actions[_ngcontent-%COMP%]{width:100%;margin-left:61px}.stats[_ngcontent-%COMP%]{grid-template-columns:repeat(2,1fr)}.stats[_ngcontent-%COMP%] div[_ngcontent-%COMP%]{border-bottom:1px solid #2d3038}.tab-content[_ngcontent-%COMP%]{grid-template-columns:1fr}.node-row[_ngcontent-%COMP%]{grid-template-columns:28px 38px 1fr}.dependency[_ngcontent-%COMP%]{grid-column:3}.inspector[_ngcontent-%COMP%]{position:static}}@media(max-width:600px){.stats[_ngcontent-%COMP%]{grid-template-columns:1fr}.hero-actions[_ngcontent-%COMP%]{margin-left:0}.tabs[_ngcontent-%COMP%]{overflow:auto}.node-row[_ngcontent-%COMP%]{grid-template-columns:28px 1fr}.type-icon[_ngcontent-%COMP%]{display:none}.node-main[_ngcontent-%COMP%], .dependency[_ngcontent-%COMP%]{grid-column:2}.dag-canvas[_ngcontent-%COMP%]{padding:18px}}"]})};export{U as WorkflowDetailComponent};
@@ -6,8 +6,8 @@
6
6
  <base href="/">
7
7
  <meta name="viewport" content="width=device-width, initial-scale=1">
8
8
  <link rel="icon" type="image/x-icon" href="favicon.ico">
9
- <style>@layer theme,base,components,utilities;@layer theme{@theme default}@theme default inline reference{--blur:8px;--shadow:0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--shadow-inner:inset 0 2px 4px 0 rgb(0 0 0 / .05);--drop-shadow:0 1px 2px rgb(0 0 0 / .1), 0 1px 1px rgb(0 0 0 / .06);--radius:.25rem;--max-width-prose:65ch}}@layer base{*,:after,:before{box-sizing:border-box;margin:0;padding:0;border:0 solid}html{line-height:1.5;-webkit-text-size-adjust:100%;tab-size:4;font-family:--theme(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:--theme(--default-font-feature-settings,normal);font-variation-settings:--theme(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}@layer utilities{}</style><link rel="stylesheet" href="styles-JBPZVY54.css" media="print" onload="this.media='all'"><noscript><link rel="stylesheet" href="styles-JBPZVY54.css"></noscript></head>
9
+ <style>@layer theme,base,components,utilities;@layer theme{@theme default}@theme default inline reference{--blur:8px;--shadow:0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--shadow-inner:inset 0 2px 4px 0 rgb(0 0 0 / .05);--drop-shadow:0 1px 2px rgb(0 0 0 / .1), 0 1px 1px rgb(0 0 0 / .06);--radius:.25rem;--max-width-prose:65ch}}@layer base{*,:after,:before{box-sizing:border-box;margin:0;padding:0;border:0 solid}html{line-height:1.5;-webkit-text-size-adjust:100%;tab-size:4;font-family:--theme(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:--theme(--default-font-feature-settings,normal);font-variation-settings:--theme(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}@layer utilities{}:root{--background:oklch(.14 .005 260);--surface:oklch(.18 .008 260);--surface-elevated:oklch(.22 .01 260);--border:oklch(.28 .01 260);--border-bright:oklch(.35 .015 260);--text-primary:oklch(.93 .005 260);--text-secondary:oklch(.65 .01 260);--text-tertiary:oklch(.45 .01 260);--primary:oklch(.65 .18 250);--primary-foreground:oklch(.98 .005 260);--success:oklch(.65 .17 155);--warning:oklch(.75 .15 75);--error:oklch(.6 .2 25)}@theme inline{--color-background:var(--background);--color-surface:var(--surface);--color-surface-elevated:var(--surface-elevated);--color-border:var(--border);--color-border-bright:var(--border-bright);--color-text-primary:var(--text-primary);--color-text-secondary:var(--text-secondary);--color-text-tertiary:var(--text-tertiary);--color-primary:var(--primary);--color-primary-foreground:var(--primary-foreground);--color-success:var(--success);--color-warning:var(--warning);--color-error:var(--error);--font-sans:Inter, ui-sans-serif, system-ui, sans-serif;--font-mono:"JetBrains Mono", ui-monospace, monospace}html,body{min-height:100%;background:var(--background);color:var(--text-primary);font-family:Inter,ui-sans-serif,system-ui,sans-serif}</style><link rel="stylesheet" href="styles-PWTTI45T.css" media="print" onload="this.media='all'"><noscript><link rel="stylesheet" href="styles-PWTTI45T.css"></noscript></head>
10
10
  <body>
11
11
  <app-root></app-root>
12
- <link rel="modulepreload" href="chunk-RKWDHBN3.js"><script src="polyfills-YMBILSHJ.js" type="module"></script><script src="main-IIUZVPMI.js" type="module"></script></body>
12
+ <link rel="modulepreload" href="chunk-U2H3QYAG.js"><script src="polyfills-YMBILSHJ.js" type="module"></script><script src="main-THGFWXYL.js" type="module"></script></body>
13
13
  </html>
@@ -0,0 +1 @@
1
+ import{Aa as s,Ca as f,D as a,Ea as g,Ga as x,Ha as u,Ia as b,P as l,Q as n,R as t,S as m,ba as o,ja as c,qa as d,z as p}from"./chunk-U2H3QYAG.js";var h=[{path:"",loadComponent:()=>import("./chunk-JFBK3MNW.js").then(e=>e.DashboardComponent)},{path:"workflows",loadComponent:()=>import("./chunk-VA7KFQOR.js").then(e=>e.WorkflowsComponent)},{path:"workflows/builder",loadComponent:()=>import("./chunk-4YPNNQ2T.js").then(e=>e.WorkflowBuilderComponent)},{path:"workflows/detail",loadComponent:()=>import("./chunk-WV3C6DNH.js").then(e=>e.WorkflowDetailComponent)},{path:"runs/:runId",loadComponent:()=>import("./chunk-E227ZHPJ.js").then(e=>e.RunExecutionComponent)}];var C={providers:[d({eventCoalescing:!0}),b(h),f()]};var k=()=>({exact:!0}),i=class e{static \u0275fac=function(r){return new(r||e)};static \u0275cmp=a({type:e,selectors:[["app-root"]],decls:16,vars:2,consts:[[1,"app-shell"],[1,"app-nav"],["routerLink","/",1,"brand-link"],[1,"brand-icon"],[1,"brand-name"],["routerLink","/","routerLinkActive","border-primary text-primary",1,"nav-link",3,"routerLinkActiveOptions"],["routerLink","/workflows","routerLinkActive","border-primary text-primary",1,"nav-link"],[1,"nav-spacer"],[1,"version-pill"],[1,"app-main"]],template:function(r,y){r&1&&(n(0,"div",0)(1,"nav",1)(2,"a",2)(3,"span",3),o(4,"V"),t(),n(5,"span",4),o(6,"VSAF"),t()(),n(7,"a",5),o(8," Dashboard "),t(),n(9,"a",6),o(10," Workflows "),t(),n(11,"div",7)(12,"span",8),o(13,"v0.2.0"),t()()(),n(14,"main",9),m(15,"router-outlet"),t()()),r&2&&(p(7),l("routerLinkActiveOptions",c(1,k)))},dependencies:[g,x,u],styles:["[_nghost-%COMP%]{display:block;min-height:100vh;background:#101114;color:#e7e7ea}.app-shell[_ngcontent-%COMP%]{min-height:100vh;background:#101114;color:#e7e7ea}.app-nav[_ngcontent-%COMP%]{display:flex;align-items:center;gap:4px;height:56px;border-bottom:1px solid #2b2d33;background:#17181d;padding:0 16px;box-sizing:border-box}.brand-link[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:9px;margin-right:18px;color:#f4f4f5;text-decoration:none}.brand-link[_ngcontent-%COMP%]:hover{opacity:.82}.brand-icon[_ngcontent-%COMP%]{display:grid;place-items:center;width:30px;height:30px;border-radius:7px;background:#6366f1;color:#fff;font-size:14px;font-weight:800}.brand-name[_ngcontent-%COMP%]{font-size:14px;font-weight:800}.nav-link[_ngcontent-%COMP%]{display:inline-flex;align-items:center;height:56px;border-bottom:2px solid transparent;padding:0 13px;color:#a1a1aa;font-size:14px;font-weight:650;text-decoration:none;box-sizing:border-box}.nav-link[_ngcontent-%COMP%]:hover{color:#f4f4f5}.nav-link.border-primary[_ngcontent-%COMP%], .nav-link.text-primary[_ngcontent-%COMP%]{border-bottom-color:#6366f1;color:#a5b4fc}.nav-spacer[_ngcontent-%COMP%]{margin-left:auto;display:flex;align-items:center;gap:12px}.version-pill[_ngcontent-%COMP%]{border:1px solid #2b2d33;border-radius:7px;background:#20222a;color:#a1a1aa;padding:5px 8px;font-size:12px}.app-main[_ngcontent-%COMP%]{min-height:calc(100vh - 56px);overflow:auto;background:#101114}"]})};s(i,C).catch(e=>console.error(e));
@@ -1 +1 @@
1
- @layer theme,base,components,utilities;@layer theme{@theme default{ --font-sans: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; --font-serif: ui-serif, Georgia, Cambria, "Times New Roman", Times, serif; --font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; --color-red-50: oklch(97.1% .013 17.38); --color-red-100: oklch(93.6% .032 17.717); --color-red-200: oklch(88.5% .062 18.334); --color-red-300: oklch(80.8% .114 19.571); --color-red-400: oklch(70.4% .191 22.216); --color-red-500: oklch(63.7% .237 25.331); --color-red-600: oklch(57.7% .245 27.325); --color-red-700: oklch(50.5% .213 27.518); --color-red-800: oklch(44.4% .177 26.899); --color-red-900: oklch(39.6% .141 25.723); --color-red-950: oklch(25.8% .092 26.042); --color-orange-50: oklch(98% .016 73.684); --color-orange-100: oklch(95.4% .038 75.164); --color-orange-200: oklch(90.1% .076 70.697); --color-orange-300: oklch(83.7% .128 66.29); --color-orange-400: oklch(75% .183 55.934); --color-orange-500: oklch(70.5% .213 47.604); --color-orange-600: oklch(64.6% .222 41.116); --color-orange-700: oklch(55.3% .195 38.402); --color-orange-800: oklch(47% .157 37.304); --color-orange-900: oklch(40.8% .123 38.172); --color-orange-950: oklch(26.6% .079 36.259); --color-amber-50: oklch(98.7% .022 95.277); --color-amber-100: oklch(96.2% .059 95.617); --color-amber-200: oklch(92.4% .12 95.746); --color-amber-300: oklch(87.9% .169 91.605); --color-amber-400: oklch(82.8% .189 84.429); --color-amber-500: oklch(76.9% .188 70.08); --color-amber-600: oklch(66.6% .179 58.318); --color-amber-700: oklch(55.5% .163 48.998); --color-amber-800: oklch(47.3% .137 46.201); --color-amber-900: oklch(41.4% .112 45.904); --color-amber-950: oklch(27.9% .077 45.635); --color-yellow-50: oklch(98.7% .026 102.212); --color-yellow-100: oklch(97.3% .071 103.193); --color-yellow-200: oklch(94.5% .129 101.54); --color-yellow-300: oklch(90.5% .182 98.111); --color-yellow-400: oklch(85.2% .199 91.936); --color-yellow-500: oklch(79.5% .184 86.047); --color-yellow-600: oklch(68.1% .162 75.834); --color-yellow-700: oklch(55.4% .135 66.442); --color-yellow-800: oklch(47.6% .114 61.907); --color-yellow-900: oklch(42.1% .095 57.708); --color-yellow-950: oklch(28.6% .066 53.813); --color-lime-50: oklch(98.6% .031 120.757); --color-lime-100: oklch(96.7% .067 122.328); --color-lime-200: oklch(93.8% .127 124.321); --color-lime-300: oklch(89.7% .196 126.665); --color-lime-400: oklch(84.1% .238 128.85); --color-lime-500: oklch(76.8% .233 130.85); --color-lime-600: oklch(64.8% .2 131.684); --color-lime-700: oklch(53.2% .157 131.589); --color-lime-800: oklch(45.3% .124 130.933); --color-lime-900: oklch(40.5% .101 131.063); --color-lime-950: oklch(27.4% .072 132.109); --color-green-50: oklch(98.2% .018 155.826); --color-green-100: oklch(96.2% .044 156.743); --color-green-200: oklch(92.5% .084 155.995); --color-green-300: oklch(87.1% .15 154.449); --color-green-400: oklch(79.2% .209 151.711); --color-green-500: oklch(72.3% .219 149.579); --color-green-600: oklch(62.7% .194 149.214); --color-green-700: oklch(52.7% .154 150.069); --color-green-800: oklch(44.8% .119 151.328); --color-green-900: oklch(39.3% .095 152.535); --color-green-950: oklch(26.6% .065 152.934); --color-emerald-50: oklch(97.9% .021 166.113); --color-emerald-100: oklch(95% .052 163.051); --color-emerald-200: oklch(90.5% .093 164.15); --color-emerald-300: oklch(84.5% .143 164.978); --color-emerald-400: oklch(76.5% .177 163.223); --color-emerald-500: oklch(69.6% .17 162.48); --color-emerald-600: oklch(59.6% .145 163.225); --color-emerald-700: oklch(50.8% .118 165.612); --color-emerald-800: oklch(43.2% .095 166.913); --color-emerald-900: oklch(37.8% .077 168.94); --color-emerald-950: oklch(26.2% .051 172.552); --color-teal-50: oklch(98.4% .014 180.72); --color-teal-100: oklch(95.3% .051 180.801); --color-teal-200: oklch(91% .096 180.426); --color-teal-300: oklch(85.5% .138 181.071); --color-teal-400: oklch(77.7% .152 181.912); --color-teal-500: oklch(70.4% .14 182.503); --color-teal-600: oklch(60% .118 184.704); --color-teal-700: oklch(51.1% .096 186.391); --color-teal-800: oklch(43.7% .078 188.216); --color-teal-900: oklch(38.6% .063 188.416); --color-teal-950: oklch(27.7% .046 192.524); --color-cyan-50: oklch(98.4% .019 200.873); --color-cyan-100: oklch(95.6% .045 203.388); --color-cyan-200: oklch(91.7% .08 205.041); --color-cyan-300: oklch(86.5% .127 207.078); --color-cyan-400: oklch(78.9% .154 211.53); --color-cyan-500: oklch(71.5% .143 215.221); --color-cyan-600: oklch(60.9% .126 221.723); --color-cyan-700: oklch(52% .105 223.128); --color-cyan-800: oklch(45% .085 224.283); --color-cyan-900: oklch(39.8% .07 227.392); --color-cyan-950: oklch(30.2% .056 229.695); --color-sky-50: oklch(97.7% .013 236.62); --color-sky-100: oklch(95.1% .026 236.824); --color-sky-200: oklch(90.1% .058 230.902); --color-sky-300: oklch(82.8% .111 230.318); --color-sky-400: oklch(74.6% .16 232.661); --color-sky-500: oklch(68.5% .169 237.323); --color-sky-600: oklch(58.8% .158 241.966); --color-sky-700: oklch(50% .134 242.749); --color-sky-800: oklch(44.3% .11 240.79); --color-sky-900: oklch(39.1% .09 240.876); --color-sky-950: oklch(29.3% .066 243.157); --color-blue-50: oklch(97% .014 254.604); --color-blue-100: oklch(93.2% .032 255.585); --color-blue-200: oklch(88.2% .059 254.128); --color-blue-300: oklch(80.9% .105 251.813); --color-blue-400: oklch(70.7% .165 254.624); --color-blue-500: oklch(62.3% .214 259.815); --color-blue-600: oklch(54.6% .245 262.881); --color-blue-700: oklch(48.8% .243 264.376); --color-blue-800: oklch(42.4% .199 265.638); --color-blue-900: oklch(37.9% .146 265.522); --color-blue-950: oklch(28.2% .091 267.935); --color-indigo-50: oklch(96.2% .018 272.314); --color-indigo-100: oklch(93% .034 272.788); --color-indigo-200: oklch(87% .065 274.039); --color-indigo-300: oklch(78.5% .115 274.713); --color-indigo-400: oklch(67.3% .182 276.935); --color-indigo-500: oklch(58.5% .233 277.117); --color-indigo-600: oklch(51.1% .262 276.966); --color-indigo-700: oklch(45.7% .24 277.023); --color-indigo-800: oklch(39.8% .195 277.366); --color-indigo-900: oklch(35.9% .144 278.697); --color-indigo-950: oklch(25.7% .09 281.288); --color-violet-50: oklch(96.9% .016 293.756); --color-violet-100: oklch(94.3% .029 294.588); --color-violet-200: oklch(89.4% .057 293.283); --color-violet-300: oklch(81.1% .111 293.571); --color-violet-400: oklch(70.2% .183 293.541); --color-violet-500: oklch(60.6% .25 292.717); --color-violet-600: oklch(54.1% .281 293.009); --color-violet-700: oklch(49.1% .27 292.581); --color-violet-800: oklch(43.2% .232 292.759); --color-violet-900: oklch(38% .189 293.745); --color-violet-950: oklch(28.3% .141 291.089); --color-purple-50: oklch(97.7% .014 308.299); --color-purple-100: oklch(94.6% .033 307.174); --color-purple-200: oklch(90.2% .063 306.703); --color-purple-300: oklch(82.7% .119 306.383); --color-purple-400: oklch(71.4% .203 305.504); --color-purple-500: oklch(62.7% .265 303.9); --color-purple-600: oklch(55.8% .288 302.321); --color-purple-700: oklch(49.6% .265 301.924); --color-purple-800: oklch(43.8% .218 303.724); --color-purple-900: oklch(38.1% .176 304.987); --color-purple-950: oklch(29.1% .149 302.717); --color-fuchsia-50: oklch(97.7% .017 320.058); --color-fuchsia-100: oklch(95.2% .037 318.852); --color-fuchsia-200: oklch(90.3% .076 319.62); --color-fuchsia-300: oklch(83.3% .145 321.434); --color-fuchsia-400: oklch(74% .238 322.16); --color-fuchsia-500: oklch(66.7% .295 322.15); --color-fuchsia-600: oklch(59.1% .293 322.896); --color-fuchsia-700: oklch(51.8% .253 323.949); --color-fuchsia-800: oklch(45.2% .211 324.591); --color-fuchsia-900: oklch(40.1% .17 325.612); --color-fuchsia-950: oklch(29.3% .136 325.661); --color-pink-50: oklch(97.1% .014 343.198); --color-pink-100: oklch(94.8% .028 342.258); --color-pink-200: oklch(89.9% .061 343.231); --color-pink-300: oklch(82.3% .12 346.018); --color-pink-400: oklch(71.8% .202 349.761); --color-pink-500: oklch(65.6% .241 354.308); --color-pink-600: oklch(59.2% .249 .584); --color-pink-700: oklch(52.5% .223 3.958); --color-pink-800: oklch(45.9% .187 3.815); --color-pink-900: oklch(40.8% .153 2.432); --color-pink-950: oklch(28.4% .109 3.907); --color-rose-50: oklch(96.9% .015 12.422); --color-rose-100: oklch(94.1% .03 12.58); --color-rose-200: oklch(89.2% .058 10.001); --color-rose-300: oklch(81% .117 11.638); --color-rose-400: oklch(71.2% .194 13.428); --color-rose-500: oklch(64.5% .246 16.439); --color-rose-600: oklch(58.6% .253 17.585); --color-rose-700: oklch(51.4% .222 16.935); --color-rose-800: oklch(45.5% .188 13.697); --color-rose-900: oklch(41% .159 10.272); --color-rose-950: oklch(27.1% .105 12.094); --color-slate-50: oklch(98.4% .003 247.858); --color-slate-100: oklch(96.8% .007 247.896); --color-slate-200: oklch(92.9% .013 255.508); --color-slate-300: oklch(86.9% .022 252.894); --color-slate-400: oklch(70.4% .04 256.788); --color-slate-500: oklch(55.4% .046 257.417); --color-slate-600: oklch(44.6% .043 257.281); --color-slate-700: oklch(37.2% .044 257.287); --color-slate-800: oklch(27.9% .041 260.031); --color-slate-900: oklch(20.8% .042 265.755); --color-slate-950: oklch(12.9% .042 264.695); --color-gray-50: oklch(98.5% .002 247.839); --color-gray-100: oklch(96.7% .003 264.542); --color-gray-200: oklch(92.8% .006 264.531); --color-gray-300: oklch(87.2% .01 258.338); --color-gray-400: oklch(70.7% .022 261.325); --color-gray-500: oklch(55.1% .027 264.364); --color-gray-600: oklch(44.6% .03 256.802); --color-gray-700: oklch(37.3% .034 259.733); --color-gray-800: oklch(27.8% .033 256.848); --color-gray-900: oklch(21% .034 264.665); --color-gray-950: oklch(13% .028 261.692); --color-zinc-50: oklch(98.5% 0 0); --color-zinc-100: oklch(96.7% .001 286.375); --color-zinc-200: oklch(92% .004 286.32); --color-zinc-300: oklch(87.1% .006 286.286); --color-zinc-400: oklch(70.5% .015 286.067); --color-zinc-500: oklch(55.2% .016 285.938); --color-zinc-600: oklch(44.2% .017 285.786); --color-zinc-700: oklch(37% .013 285.805); --color-zinc-800: oklch(27.4% .006 286.033); --color-zinc-900: oklch(21% .006 285.885); --color-zinc-950: oklch(14.1% .005 285.823); --color-neutral-50: oklch(98.5% 0 0); --color-neutral-100: oklch(97% 0 0); --color-neutral-200: oklch(92.2% 0 0); --color-neutral-300: oklch(87% 0 0); --color-neutral-400: oklch(70.8% 0 0); --color-neutral-500: oklch(55.6% 0 0); --color-neutral-600: oklch(43.9% 0 0); --color-neutral-700: oklch(37.1% 0 0); --color-neutral-800: oklch(26.9% 0 0); --color-neutral-900: oklch(20.5% 0 0); --color-neutral-950: oklch(14.5% 0 0); --color-stone-50: oklch(98.5% .001 106.423); --color-stone-100: oklch(97% .001 106.424); --color-stone-200: oklch(92.3% .003 48.717); --color-stone-300: oklch(86.9% .005 56.366); --color-stone-400: oklch(70.9% .01 56.259); --color-stone-500: oklch(55.3% .013 58.071); --color-stone-600: oklch(44.4% .011 73.639); --color-stone-700: oklch(37.4% .01 67.558); --color-stone-800: oklch(26.8% .007 34.298); --color-stone-900: oklch(21.6% .006 56.043); --color-stone-950: oklch(14.7% .004 49.25); --color-mauve-50: oklch(98.5% 0 0); --color-mauve-100: oklch(96% .003 325.6); --color-mauve-200: oklch(92.2% .005 325.62); --color-mauve-300: oklch(86.5% .012 325.68); --color-mauve-400: oklch(71.1% .019 323.02); --color-mauve-500: oklch(54.2% .034 322.5); --color-mauve-600: oklch(43.5% .029 321.78); --color-mauve-700: oklch(36.4% .029 323.89); --color-mauve-800: oklch(26.3% .024 320.12); --color-mauve-900: oklch(21.2% .019 322.12); --color-mauve-950: oklch(14.5% .008 326); --color-olive-50: oklch(98.8% .003 106.5); --color-olive-100: oklch(96.6% .005 106.5); --color-olive-200: oklch(93% .007 106.5); --color-olive-300: oklch(88% .011 106.6); --color-olive-400: oklch(73.7% .021 106.9); --color-olive-500: oklch(58% .031 107.3); --color-olive-600: oklch(46.6% .025 107.3); --color-olive-700: oklch(39.4% .023 107.4); --color-olive-800: oklch(28.6% .016 107.4); --color-olive-900: oklch(22.8% .013 107.4); --color-olive-950: oklch(15.3% .006 107.1); --color-mist-50: oklch(98.7% .002 197.1); --color-mist-100: oklch(96.3% .002 197.1); --color-mist-200: oklch(92.5% .005 214.3); --color-mist-300: oklch(87.2% .007 219.6); --color-mist-400: oklch(72.3% .014 214.4); --color-mist-500: oklch(56% .021 213.5); --color-mist-600: oklch(45% .017 213.2); --color-mist-700: oklch(37.8% .015 216); --color-mist-800: oklch(27.5% .011 216.9); --color-mist-900: oklch(21.8% .008 223.9); --color-mist-950: oklch(14.8% .004 228.8); --color-taupe-50: oklch(98.6% .002 67.8); --color-taupe-100: oklch(96% .002 17.2); --color-taupe-200: oklch(92.2% .005 34.3); --color-taupe-300: oklch(86.8% .007 39.5); --color-taupe-400: oklch(71.4% .014 41.2); --color-taupe-500: oklch(54.7% .021 43.1); --color-taupe-600: oklch(43.8% .017 39.3); --color-taupe-700: oklch(36.7% .016 35.7); --color-taupe-800: oklch(26.8% .011 36.5); --color-taupe-900: oklch(21.4% .009 43.1); --color-taupe-950: oklch(14.7% .004 49.3); --color-black: #000; --color-white: #fff; --spacing: .25rem; --breakpoint-sm: 40rem; --breakpoint-md: 48rem; --breakpoint-lg: 64rem; --breakpoint-xl: 80rem; --breakpoint-2xl: 96rem; --container-3xs: 16rem; --container-2xs: 18rem; --container-xs: 20rem; --container-sm: 24rem; --container-md: 28rem; --container-lg: 32rem; --container-xl: 36rem; --container-2xl: 42rem; --container-3xl: 48rem; --container-4xl: 56rem; --container-5xl: 64rem; --container-6xl: 72rem; --container-7xl: 80rem; --text-xs: .75rem; --text-xs--line-height: calc(1 / .75); --text-sm: .875rem; --text-sm--line-height: calc(1.25 / .875); --text-base: 1rem; --text-base--line-height: 1.5 ; --text-lg: 1.125rem; --text-lg--line-height: calc(1.75 / 1.125); --text-xl: 1.25rem; --text-xl--line-height: calc(1.75 / 1.25); --text-2xl: 1.5rem; --text-2xl--line-height: calc(2 / 1.5); --text-3xl: 1.875rem; --text-3xl--line-height: 1.2 ; --text-4xl: 2.25rem; --text-4xl--line-height: calc(2.5 / 2.25); --text-5xl: 3rem; --text-5xl--line-height: 1; --text-6xl: 3.75rem; --text-6xl--line-height: 1; --text-7xl: 4.5rem; --text-7xl--line-height: 1; --text-8xl: 6rem; --text-8xl--line-height: 1; --text-9xl: 8rem; --text-9xl--line-height: 1; --font-weight-thin: 100; --font-weight-extralight: 200; --font-weight-light: 300; --font-weight-normal: 400; --font-weight-medium: 500; --font-weight-semibold: 600; --font-weight-bold: 700; --font-weight-extrabold: 800; --font-weight-black: 900; --tracking-tighter: -.05em; --tracking-tight: -.025em; --tracking-normal: 0em; --tracking-wide: .025em; --tracking-wider: .05em; --tracking-widest: .1em; --leading-tight: 1.25; --leading-snug: 1.375; --leading-normal: 1.5; --leading-relaxed: 1.625; --leading-loose: 2; --radius-xs: .125rem; --radius-sm: .25rem; --radius-md: .375rem; --radius-lg: .5rem; --radius-xl: .75rem; --radius-2xl: 1rem; --radius-3xl: 1.5rem; --radius-4xl: 2rem; --shadow-2xs: 0 1px rgb(0 0 0 / .05); --shadow-xs: 0 1px 2px 0 rgb(0 0 0 / .05); --shadow-sm: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1); --shadow-md: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1); --shadow-lg: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1); --shadow-xl: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1); --shadow-2xl: 0 25px 50px -12px rgb(0 0 0 / .25); --inset-shadow-2xs: inset 0 1px rgb(0 0 0 / .05); --inset-shadow-xs: inset 0 1px 1px rgb(0 0 0 / .05); --inset-shadow-sm: inset 0 2px 4px rgb(0 0 0 / .05); --drop-shadow-xs: 0 1px 1px rgb(0 0 0 / .05); --drop-shadow-sm: 0 1px 2px rgb(0 0 0 / .15); --drop-shadow-md: 0 3px 3px rgb(0 0 0 / .12); --drop-shadow-lg: 0 4px 4px rgb(0 0 0 / .15); --drop-shadow-xl: 0 9px 7px rgb(0 0 0 / .1); --drop-shadow-2xl: 0 25px 25px rgb(0 0 0 / .15); --text-shadow-2xs: 0px 1px 0px rgb(0 0 0 / .15); --text-shadow-xs: 0px 1px 1px rgb(0 0 0 / .2); --text-shadow-sm: 0px 1px 0px rgb(0 0 0 / .075), 0px 1px 1px rgb(0 0 0 / .075), 0px 2px 2px rgb(0 0 0 / .075); --text-shadow-md: 0px 1px 1px rgb(0 0 0 / .1), 0px 1px 2px rgb(0 0 0 / .1), 0px 2px 4px rgb(0 0 0 / .1); --text-shadow-lg: 0px 1px 2px rgb(0 0 0 / .1), 0px 3px 2px rgb(0 0 0 / .1), 0px 4px 8px rgb(0 0 0 / .1); --ease-in: cubic-bezier(.4, 0, 1, 1); --ease-out: cubic-bezier(0, 0, .2, 1); --ease-in-out: cubic-bezier(.4, 0, .2, 1); --animate-spin: spin 1s linear infinite; --animate-ping: ping 1s cubic-bezier(0, 0, .2, 1) infinite; --animate-pulse: pulse 2s cubic-bezier(.4, 0, .6, 1) infinite; --animate-bounce: bounce 1s infinite; @keyframes spin { to { transform: rotate(360deg); } } @keyframes ping { 75%, 100% { transform: scale(2); opacity: 0; } } @keyframes pulse { 50% { opacity: .5; } } @keyframes bounce { 0%, 100% { transform: translateY(-25%); animation-timing-function: cubic-bezier(.8, 0, 1, 1); } 50% { transform: none; animation-timing-function: cubic-bezier(0, 0, .2, 1); } } --blur-xs: 4px; --blur-sm: 8px; --blur-md: 12px; --blur-lg: 16px; --blur-xl: 24px; --blur-2xl: 40px; --blur-3xl: 64px; --perspective-dramatic: 100px; --perspective-near: 300px; --perspective-normal: 500px; --perspective-midrange: 800px; --perspective-distant: 1200px; --aspect-video: 16 / 9; --default-transition-duration: .15s; --default-transition-timing-function: cubic-bezier(.4, 0, .2, 1); --default-font-family: --theme(--font-sans, initial); --default-font-feature-settings: --theme( --font-sans--font-feature-settings, initial ); --default-font-variation-settings: --theme( --font-sans--font-variation-settings, initial ); --default-mono-font-family: --theme(--font-mono, initial); --default-mono-font-feature-settings: --theme( --font-mono--font-feature-settings, initial ); --default-mono-font-variation-settings: --theme( --font-mono--font-variation-settings, initial ); }@theme default inline reference{ --blur: 8px; --shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1); --shadow-inner: inset 0 2px 4px 0 rgb(0 0 0 / .05); --drop-shadow: 0 1px 2px rgb(0 0 0 / .1), 0 1px 1px rgb(0 0 0 / .06); --radius: .25rem; --max-width-prose: 65ch; }}@layer base{*,:after,:before,::backdrop,::file-selector-button{box-sizing:border-box;margin:0;padding:0;border:0 solid}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;tab-size:4;font-family:--theme(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:--theme(--default-font-feature-settings,normal);font-variation-settings:--theme(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:--theme(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:--theme(--default-mono-font-feature-settings,normal);font-variation-settings:--theme(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea,::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;border-radius:0;background-color:transparent;opacity:1}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not (-webkit-appearance: -apple-pay-button)) or (contain-intrinsic-size: 1px){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit,::-webkit-datetime-edit-year-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-second-field,::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]),::file-selector-button{appearance:button}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer utilities{@tailwind utilities;}
1
+ @layer theme,base,components,utilities;@layer theme{@theme default{ --font-sans: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; --font-serif: ui-serif, Georgia, Cambria, "Times New Roman", Times, serif; --font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; --color-red-50: oklch(97.1% .013 17.38); --color-red-100: oklch(93.6% .032 17.717); --color-red-200: oklch(88.5% .062 18.334); --color-red-300: oklch(80.8% .114 19.571); --color-red-400: oklch(70.4% .191 22.216); --color-red-500: oklch(63.7% .237 25.331); --color-red-600: oklch(57.7% .245 27.325); --color-red-700: oklch(50.5% .213 27.518); --color-red-800: oklch(44.4% .177 26.899); --color-red-900: oklch(39.6% .141 25.723); --color-red-950: oklch(25.8% .092 26.042); --color-orange-50: oklch(98% .016 73.684); --color-orange-100: oklch(95.4% .038 75.164); --color-orange-200: oklch(90.1% .076 70.697); --color-orange-300: oklch(83.7% .128 66.29); --color-orange-400: oklch(75% .183 55.934); --color-orange-500: oklch(70.5% .213 47.604); --color-orange-600: oklch(64.6% .222 41.116); --color-orange-700: oklch(55.3% .195 38.402); --color-orange-800: oklch(47% .157 37.304); --color-orange-900: oklch(40.8% .123 38.172); --color-orange-950: oklch(26.6% .079 36.259); --color-amber-50: oklch(98.7% .022 95.277); --color-amber-100: oklch(96.2% .059 95.617); --color-amber-200: oklch(92.4% .12 95.746); --color-amber-300: oklch(87.9% .169 91.605); --color-amber-400: oklch(82.8% .189 84.429); --color-amber-500: oklch(76.9% .188 70.08); --color-amber-600: oklch(66.6% .179 58.318); --color-amber-700: oklch(55.5% .163 48.998); --color-amber-800: oklch(47.3% .137 46.201); --color-amber-900: oklch(41.4% .112 45.904); --color-amber-950: oklch(27.9% .077 45.635); --color-yellow-50: oklch(98.7% .026 102.212); --color-yellow-100: oklch(97.3% .071 103.193); --color-yellow-200: oklch(94.5% .129 101.54); --color-yellow-300: oklch(90.5% .182 98.111); --color-yellow-400: oklch(85.2% .199 91.936); --color-yellow-500: oklch(79.5% .184 86.047); --color-yellow-600: oklch(68.1% .162 75.834); --color-yellow-700: oklch(55.4% .135 66.442); --color-yellow-800: oklch(47.6% .114 61.907); --color-yellow-900: oklch(42.1% .095 57.708); --color-yellow-950: oklch(28.6% .066 53.813); --color-lime-50: oklch(98.6% .031 120.757); --color-lime-100: oklch(96.7% .067 122.328); --color-lime-200: oklch(93.8% .127 124.321); --color-lime-300: oklch(89.7% .196 126.665); --color-lime-400: oklch(84.1% .238 128.85); --color-lime-500: oklch(76.8% .233 130.85); --color-lime-600: oklch(64.8% .2 131.684); --color-lime-700: oklch(53.2% .157 131.589); --color-lime-800: oklch(45.3% .124 130.933); --color-lime-900: oklch(40.5% .101 131.063); --color-lime-950: oklch(27.4% .072 132.109); --color-green-50: oklch(98.2% .018 155.826); --color-green-100: oklch(96.2% .044 156.743); --color-green-200: oklch(92.5% .084 155.995); --color-green-300: oklch(87.1% .15 154.449); --color-green-400: oklch(79.2% .209 151.711); --color-green-500: oklch(72.3% .219 149.579); --color-green-600: oklch(62.7% .194 149.214); --color-green-700: oklch(52.7% .154 150.069); --color-green-800: oklch(44.8% .119 151.328); --color-green-900: oklch(39.3% .095 152.535); --color-green-950: oklch(26.6% .065 152.934); --color-emerald-50: oklch(97.9% .021 166.113); --color-emerald-100: oklch(95% .052 163.051); --color-emerald-200: oklch(90.5% .093 164.15); --color-emerald-300: oklch(84.5% .143 164.978); --color-emerald-400: oklch(76.5% .177 163.223); --color-emerald-500: oklch(69.6% .17 162.48); --color-emerald-600: oklch(59.6% .145 163.225); --color-emerald-700: oklch(50.8% .118 165.612); --color-emerald-800: oklch(43.2% .095 166.913); --color-emerald-900: oklch(37.8% .077 168.94); --color-emerald-950: oklch(26.2% .051 172.552); --color-teal-50: oklch(98.4% .014 180.72); --color-teal-100: oklch(95.3% .051 180.801); --color-teal-200: oklch(91% .096 180.426); --color-teal-300: oklch(85.5% .138 181.071); --color-teal-400: oklch(77.7% .152 181.912); --color-teal-500: oklch(70.4% .14 182.503); --color-teal-600: oklch(60% .118 184.704); --color-teal-700: oklch(51.1% .096 186.391); --color-teal-800: oklch(43.7% .078 188.216); --color-teal-900: oklch(38.6% .063 188.416); --color-teal-950: oklch(27.7% .046 192.524); --color-cyan-50: oklch(98.4% .019 200.873); --color-cyan-100: oklch(95.6% .045 203.388); --color-cyan-200: oklch(91.7% .08 205.041); --color-cyan-300: oklch(86.5% .127 207.078); --color-cyan-400: oklch(78.9% .154 211.53); --color-cyan-500: oklch(71.5% .143 215.221); --color-cyan-600: oklch(60.9% .126 221.723); --color-cyan-700: oklch(52% .105 223.128); --color-cyan-800: oklch(45% .085 224.283); --color-cyan-900: oklch(39.8% .07 227.392); --color-cyan-950: oklch(30.2% .056 229.695); --color-sky-50: oklch(97.7% .013 236.62); --color-sky-100: oklch(95.1% .026 236.824); --color-sky-200: oklch(90.1% .058 230.902); --color-sky-300: oklch(82.8% .111 230.318); --color-sky-400: oklch(74.6% .16 232.661); --color-sky-500: oklch(68.5% .169 237.323); --color-sky-600: oklch(58.8% .158 241.966); --color-sky-700: oklch(50% .134 242.749); --color-sky-800: oklch(44.3% .11 240.79); --color-sky-900: oklch(39.1% .09 240.876); --color-sky-950: oklch(29.3% .066 243.157); --color-blue-50: oklch(97% .014 254.604); --color-blue-100: oklch(93.2% .032 255.585); --color-blue-200: oklch(88.2% .059 254.128); --color-blue-300: oklch(80.9% .105 251.813); --color-blue-400: oklch(70.7% .165 254.624); --color-blue-500: oklch(62.3% .214 259.815); --color-blue-600: oklch(54.6% .245 262.881); --color-blue-700: oklch(48.8% .243 264.376); --color-blue-800: oklch(42.4% .199 265.638); --color-blue-900: oklch(37.9% .146 265.522); --color-blue-950: oklch(28.2% .091 267.935); --color-indigo-50: oklch(96.2% .018 272.314); --color-indigo-100: oklch(93% .034 272.788); --color-indigo-200: oklch(87% .065 274.039); --color-indigo-300: oklch(78.5% .115 274.713); --color-indigo-400: oklch(67.3% .182 276.935); --color-indigo-500: oklch(58.5% .233 277.117); --color-indigo-600: oklch(51.1% .262 276.966); --color-indigo-700: oklch(45.7% .24 277.023); --color-indigo-800: oklch(39.8% .195 277.366); --color-indigo-900: oklch(35.9% .144 278.697); --color-indigo-950: oklch(25.7% .09 281.288); --color-violet-50: oklch(96.9% .016 293.756); --color-violet-100: oklch(94.3% .029 294.588); --color-violet-200: oklch(89.4% .057 293.283); --color-violet-300: oklch(81.1% .111 293.571); --color-violet-400: oklch(70.2% .183 293.541); --color-violet-500: oklch(60.6% .25 292.717); --color-violet-600: oklch(54.1% .281 293.009); --color-violet-700: oklch(49.1% .27 292.581); --color-violet-800: oklch(43.2% .232 292.759); --color-violet-900: oklch(38% .189 293.745); --color-violet-950: oklch(28.3% .141 291.089); --color-purple-50: oklch(97.7% .014 308.299); --color-purple-100: oklch(94.6% .033 307.174); --color-purple-200: oklch(90.2% .063 306.703); --color-purple-300: oklch(82.7% .119 306.383); --color-purple-400: oklch(71.4% .203 305.504); --color-purple-500: oklch(62.7% .265 303.9); --color-purple-600: oklch(55.8% .288 302.321); --color-purple-700: oklch(49.6% .265 301.924); --color-purple-800: oklch(43.8% .218 303.724); --color-purple-900: oklch(38.1% .176 304.987); --color-purple-950: oklch(29.1% .149 302.717); --color-fuchsia-50: oklch(97.7% .017 320.058); --color-fuchsia-100: oklch(95.2% .037 318.852); --color-fuchsia-200: oklch(90.3% .076 319.62); --color-fuchsia-300: oklch(83.3% .145 321.434); --color-fuchsia-400: oklch(74% .238 322.16); --color-fuchsia-500: oklch(66.7% .295 322.15); --color-fuchsia-600: oklch(59.1% .293 322.896); --color-fuchsia-700: oklch(51.8% .253 323.949); --color-fuchsia-800: oklch(45.2% .211 324.591); --color-fuchsia-900: oklch(40.1% .17 325.612); --color-fuchsia-950: oklch(29.3% .136 325.661); --color-pink-50: oklch(97.1% .014 343.198); --color-pink-100: oklch(94.8% .028 342.258); --color-pink-200: oklch(89.9% .061 343.231); --color-pink-300: oklch(82.3% .12 346.018); --color-pink-400: oklch(71.8% .202 349.761); --color-pink-500: oklch(65.6% .241 354.308); --color-pink-600: oklch(59.2% .249 .584); --color-pink-700: oklch(52.5% .223 3.958); --color-pink-800: oklch(45.9% .187 3.815); --color-pink-900: oklch(40.8% .153 2.432); --color-pink-950: oklch(28.4% .109 3.907); --color-rose-50: oklch(96.9% .015 12.422); --color-rose-100: oklch(94.1% .03 12.58); --color-rose-200: oklch(89.2% .058 10.001); --color-rose-300: oklch(81% .117 11.638); --color-rose-400: oklch(71.2% .194 13.428); --color-rose-500: oklch(64.5% .246 16.439); --color-rose-600: oklch(58.6% .253 17.585); --color-rose-700: oklch(51.4% .222 16.935); --color-rose-800: oklch(45.5% .188 13.697); --color-rose-900: oklch(41% .159 10.272); --color-rose-950: oklch(27.1% .105 12.094); --color-slate-50: oklch(98.4% .003 247.858); --color-slate-100: oklch(96.8% .007 247.896); --color-slate-200: oklch(92.9% .013 255.508); --color-slate-300: oklch(86.9% .022 252.894); --color-slate-400: oklch(70.4% .04 256.788); --color-slate-500: oklch(55.4% .046 257.417); --color-slate-600: oklch(44.6% .043 257.281); --color-slate-700: oklch(37.2% .044 257.287); --color-slate-800: oklch(27.9% .041 260.031); --color-slate-900: oklch(20.8% .042 265.755); --color-slate-950: oklch(12.9% .042 264.695); --color-gray-50: oklch(98.5% .002 247.839); --color-gray-100: oklch(96.7% .003 264.542); --color-gray-200: oklch(92.8% .006 264.531); --color-gray-300: oklch(87.2% .01 258.338); --color-gray-400: oklch(70.7% .022 261.325); --color-gray-500: oklch(55.1% .027 264.364); --color-gray-600: oklch(44.6% .03 256.802); --color-gray-700: oklch(37.3% .034 259.733); --color-gray-800: oklch(27.8% .033 256.848); --color-gray-900: oklch(21% .034 264.665); --color-gray-950: oklch(13% .028 261.692); --color-zinc-50: oklch(98.5% 0 0); --color-zinc-100: oklch(96.7% .001 286.375); --color-zinc-200: oklch(92% .004 286.32); --color-zinc-300: oklch(87.1% .006 286.286); --color-zinc-400: oklch(70.5% .015 286.067); --color-zinc-500: oklch(55.2% .016 285.938); --color-zinc-600: oklch(44.2% .017 285.786); --color-zinc-700: oklch(37% .013 285.805); --color-zinc-800: oklch(27.4% .006 286.033); --color-zinc-900: oklch(21% .006 285.885); --color-zinc-950: oklch(14.1% .005 285.823); --color-neutral-50: oklch(98.5% 0 0); --color-neutral-100: oklch(97% 0 0); --color-neutral-200: oklch(92.2% 0 0); --color-neutral-300: oklch(87% 0 0); --color-neutral-400: oklch(70.8% 0 0); --color-neutral-500: oklch(55.6% 0 0); --color-neutral-600: oklch(43.9% 0 0); --color-neutral-700: oklch(37.1% 0 0); --color-neutral-800: oklch(26.9% 0 0); --color-neutral-900: oklch(20.5% 0 0); --color-neutral-950: oklch(14.5% 0 0); --color-stone-50: oklch(98.5% .001 106.423); --color-stone-100: oklch(97% .001 106.424); --color-stone-200: oklch(92.3% .003 48.717); --color-stone-300: oklch(86.9% .005 56.366); --color-stone-400: oklch(70.9% .01 56.259); --color-stone-500: oklch(55.3% .013 58.071); --color-stone-600: oklch(44.4% .011 73.639); --color-stone-700: oklch(37.4% .01 67.558); --color-stone-800: oklch(26.8% .007 34.298); --color-stone-900: oklch(21.6% .006 56.043); --color-stone-950: oklch(14.7% .004 49.25); --color-mauve-50: oklch(98.5% 0 0); --color-mauve-100: oklch(96% .003 325.6); --color-mauve-200: oklch(92.2% .005 325.62); --color-mauve-300: oklch(86.5% .012 325.68); --color-mauve-400: oklch(71.1% .019 323.02); --color-mauve-500: oklch(54.2% .034 322.5); --color-mauve-600: oklch(43.5% .029 321.78); --color-mauve-700: oklch(36.4% .029 323.89); --color-mauve-800: oklch(26.3% .024 320.12); --color-mauve-900: oklch(21.2% .019 322.12); --color-mauve-950: oklch(14.5% .008 326); --color-olive-50: oklch(98.8% .003 106.5); --color-olive-100: oklch(96.6% .005 106.5); --color-olive-200: oklch(93% .007 106.5); --color-olive-300: oklch(88% .011 106.6); --color-olive-400: oklch(73.7% .021 106.9); --color-olive-500: oklch(58% .031 107.3); --color-olive-600: oklch(46.6% .025 107.3); --color-olive-700: oklch(39.4% .023 107.4); --color-olive-800: oklch(28.6% .016 107.4); --color-olive-900: oklch(22.8% .013 107.4); --color-olive-950: oklch(15.3% .006 107.1); --color-mist-50: oklch(98.7% .002 197.1); --color-mist-100: oklch(96.3% .002 197.1); --color-mist-200: oklch(92.5% .005 214.3); --color-mist-300: oklch(87.2% .007 219.6); --color-mist-400: oklch(72.3% .014 214.4); --color-mist-500: oklch(56% .021 213.5); --color-mist-600: oklch(45% .017 213.2); --color-mist-700: oklch(37.8% .015 216); --color-mist-800: oklch(27.5% .011 216.9); --color-mist-900: oklch(21.8% .008 223.9); --color-mist-950: oklch(14.8% .004 228.8); --color-taupe-50: oklch(98.6% .002 67.8); --color-taupe-100: oklch(96% .002 17.2); --color-taupe-200: oklch(92.2% .005 34.3); --color-taupe-300: oklch(86.8% .007 39.5); --color-taupe-400: oklch(71.4% .014 41.2); --color-taupe-500: oklch(54.7% .021 43.1); --color-taupe-600: oklch(43.8% .017 39.3); --color-taupe-700: oklch(36.7% .016 35.7); --color-taupe-800: oklch(26.8% .011 36.5); --color-taupe-900: oklch(21.4% .009 43.1); --color-taupe-950: oklch(14.7% .004 49.3); --color-black: #000; --color-white: #fff; --spacing: .25rem; --breakpoint-sm: 40rem; --breakpoint-md: 48rem; --breakpoint-lg: 64rem; --breakpoint-xl: 80rem; --breakpoint-2xl: 96rem; --container-3xs: 16rem; --container-2xs: 18rem; --container-xs: 20rem; --container-sm: 24rem; --container-md: 28rem; --container-lg: 32rem; --container-xl: 36rem; --container-2xl: 42rem; --container-3xl: 48rem; --container-4xl: 56rem; --container-5xl: 64rem; --container-6xl: 72rem; --container-7xl: 80rem; --text-xs: .75rem; --text-xs--line-height: calc(1 / .75); --text-sm: .875rem; --text-sm--line-height: calc(1.25 / .875); --text-base: 1rem; --text-base--line-height: 1.5 ; --text-lg: 1.125rem; --text-lg--line-height: calc(1.75 / 1.125); --text-xl: 1.25rem; --text-xl--line-height: calc(1.75 / 1.25); --text-2xl: 1.5rem; --text-2xl--line-height: calc(2 / 1.5); --text-3xl: 1.875rem; --text-3xl--line-height: 1.2 ; --text-4xl: 2.25rem; --text-4xl--line-height: calc(2.5 / 2.25); --text-5xl: 3rem; --text-5xl--line-height: 1; --text-6xl: 3.75rem; --text-6xl--line-height: 1; --text-7xl: 4.5rem; --text-7xl--line-height: 1; --text-8xl: 6rem; --text-8xl--line-height: 1; --text-9xl: 8rem; --text-9xl--line-height: 1; --font-weight-thin: 100; --font-weight-extralight: 200; --font-weight-light: 300; --font-weight-normal: 400; --font-weight-medium: 500; --font-weight-semibold: 600; --font-weight-bold: 700; --font-weight-extrabold: 800; --font-weight-black: 900; --tracking-tighter: -.05em; --tracking-tight: -.025em; --tracking-normal: 0em; --tracking-wide: .025em; --tracking-wider: .05em; --tracking-widest: .1em; --leading-tight: 1.25; --leading-snug: 1.375; --leading-normal: 1.5; --leading-relaxed: 1.625; --leading-loose: 2; --radius-xs: .125rem; --radius-sm: .25rem; --radius-md: .375rem; --radius-lg: .5rem; --radius-xl: .75rem; --radius-2xl: 1rem; --radius-3xl: 1.5rem; --radius-4xl: 2rem; --shadow-2xs: 0 1px rgb(0 0 0 / .05); --shadow-xs: 0 1px 2px 0 rgb(0 0 0 / .05); --shadow-sm: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1); --shadow-md: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1); --shadow-lg: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1); --shadow-xl: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1); --shadow-2xl: 0 25px 50px -12px rgb(0 0 0 / .25); --inset-shadow-2xs: inset 0 1px rgb(0 0 0 / .05); --inset-shadow-xs: inset 0 1px 1px rgb(0 0 0 / .05); --inset-shadow-sm: inset 0 2px 4px rgb(0 0 0 / .05); --drop-shadow-xs: 0 1px 1px rgb(0 0 0 / .05); --drop-shadow-sm: 0 1px 2px rgb(0 0 0 / .15); --drop-shadow-md: 0 3px 3px rgb(0 0 0 / .12); --drop-shadow-lg: 0 4px 4px rgb(0 0 0 / .15); --drop-shadow-xl: 0 9px 7px rgb(0 0 0 / .1); --drop-shadow-2xl: 0 25px 25px rgb(0 0 0 / .15); --text-shadow-2xs: 0px 1px 0px rgb(0 0 0 / .15); --text-shadow-xs: 0px 1px 1px rgb(0 0 0 / .2); --text-shadow-sm: 0px 1px 0px rgb(0 0 0 / .075), 0px 1px 1px rgb(0 0 0 / .075), 0px 2px 2px rgb(0 0 0 / .075); --text-shadow-md: 0px 1px 1px rgb(0 0 0 / .1), 0px 1px 2px rgb(0 0 0 / .1), 0px 2px 4px rgb(0 0 0 / .1); --text-shadow-lg: 0px 1px 2px rgb(0 0 0 / .1), 0px 3px 2px rgb(0 0 0 / .1), 0px 4px 8px rgb(0 0 0 / .1); --ease-in: cubic-bezier(.4, 0, 1, 1); --ease-out: cubic-bezier(0, 0, .2, 1); --ease-in-out: cubic-bezier(.4, 0, .2, 1); --animate-spin: spin 1s linear infinite; --animate-ping: ping 1s cubic-bezier(0, 0, .2, 1) infinite; --animate-pulse: pulse 2s cubic-bezier(.4, 0, .6, 1) infinite; --animate-bounce: bounce 1s infinite; @keyframes spin { to { transform: rotate(360deg); } } @keyframes ping { 75%, 100% { transform: scale(2); opacity: 0; } } @keyframes pulse { 50% { opacity: .5; } } @keyframes bounce { 0%, 100% { transform: translateY(-25%); animation-timing-function: cubic-bezier(.8, 0, 1, 1); } 50% { transform: none; animation-timing-function: cubic-bezier(0, 0, .2, 1); } } --blur-xs: 4px; --blur-sm: 8px; --blur-md: 12px; --blur-lg: 16px; --blur-xl: 24px; --blur-2xl: 40px; --blur-3xl: 64px; --perspective-dramatic: 100px; --perspective-near: 300px; --perspective-normal: 500px; --perspective-midrange: 800px; --perspective-distant: 1200px; --aspect-video: 16 / 9; --default-transition-duration: .15s; --default-transition-timing-function: cubic-bezier(.4, 0, .2, 1); --default-font-family: --theme(--font-sans, initial); --default-font-feature-settings: --theme( --font-sans--font-feature-settings, initial ); --default-font-variation-settings: --theme( --font-sans--font-variation-settings, initial ); --default-mono-font-family: --theme(--font-mono, initial); --default-mono-font-feature-settings: --theme( --font-mono--font-feature-settings, initial ); --default-mono-font-variation-settings: --theme( --font-mono--font-variation-settings, initial ); }@theme default inline reference{ --blur: 8px; --shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1); --shadow-inner: inset 0 2px 4px 0 rgb(0 0 0 / .05); --drop-shadow: 0 1px 2px rgb(0 0 0 / .1), 0 1px 1px rgb(0 0 0 / .06); --radius: .25rem; --max-width-prose: 65ch; }}@layer base{*,:after,:before,::backdrop,::file-selector-button{box-sizing:border-box;margin:0;padding:0;border:0 solid}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;tab-size:4;font-family:--theme(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:--theme(--default-font-feature-settings,normal);font-variation-settings:--theme(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:--theme(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:--theme(--default-mono-font-feature-settings,normal);font-variation-settings:--theme(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea,::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;border-radius:0;background-color:transparent;opacity:1}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not (-webkit-appearance: -apple-pay-button)) or (contain-intrinsic-size: 1px){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit,::-webkit-datetime-edit-year-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-second-field,::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]),::file-selector-button{appearance:button}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer utilities{@tailwind utilities;}:root{--background: oklch(.14 .005 260);--surface: oklch(.18 .008 260);--surface-elevated: oklch(.22 .01 260);--border: oklch(.28 .01 260);--border-bright: oklch(.35 .015 260);--text-primary: oklch(.93 .005 260);--text-secondary: oklch(.65 .01 260);--text-tertiary: oklch(.45 .01 260);--primary: oklch(.65 .18 250);--primary-foreground: oklch(.98 .005 260);--success: oklch(.65 .17 155);--warning: oklch(.75 .15 75);--error: oklch(.6 .2 25)}@theme inline{ --color-background: var(--background); --color-surface: var(--surface); --color-surface-elevated: var(--surface-elevated); --color-border: var(--border); --color-border-bright: var(--border-bright); --color-text-primary: var(--text-primary); --color-text-secondary: var(--text-secondary); --color-text-tertiary: var(--text-tertiary); --color-primary: var(--primary); --color-primary-foreground: var(--primary-foreground); --color-success: var(--success); --color-warning: var(--warning); --color-error: var(--error); --font-sans: Inter, ui-sans-serif, system-ui, sans-serif; --font-mono: "JetBrains Mono", ui-monospace, monospace; }html,body{min-height:100%;background:var(--background);color:var(--text-primary);font-family:Inter,ui-sans-serif,system-ui,sans-serif}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--background)}::-webkit-scrollbar-thumb{background:var(--border);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--border-bright)}
@@ -1 +0,0 @@
1
- import{a as I}from"./chunk-XGYEZIV4.js";import{a as E}from"./chunk-RGFLNLPM.js";import{C as _,D as g,E as b,F as k,G as x,H as n,I as t,K as v,L as f,M as d,O as i,P as l,S as C,ea as h,ga as y,ka as D,l as p,m as c,ma as S,n as u,u as r,x as w}from"./chunk-RKWDHBN3.js";var T=(a,o)=>o.id;function N(a,o){if(a&1&&(n(0,"div",9)(1,"span",11),i(2),t(),n(3,"span")(4,"span",12),i(5),t()(),n(6,"span",13),i(7),t(),n(8,"span",14),i(9),t()()),a&2){let e=o.$implicit,s=d(2);r(2),l(e.id),r(2),x("ngClass",s.typeBadge(e.type)),r(),l(e.type),r(2),l(e.dependsOn.length?e.dependsOn.join(", "):"\u2014"),r(2),l(e.when||"\u2014")}}function V(a,o){if(a&1){let e=v();n(0,"div",0)(1,"div",1)(2,"div")(3,"h1",2),i(4),t(),n(5,"p",3),i(6),t(),n(7,"p",4),i(8),t()(),n(9,"button",5),f("click",function(){c(e);let m=d();return u(m.showRunDialog=!0)}),i(10,"Run Workflow \u25B6"),t()(),n(11,"div",6)(12,"h3",7),i(13,"DAG Nodes"),t(),n(14,"div",8)(15,"span"),i(16,"Node"),t(),n(17,"span"),i(18,"Type"),t(),n(19,"span"),i(20,"Depends On"),t(),n(21,"span"),i(22,"Condition"),t()(),b(23,N,10,5,"div",9,T),t()(),n(25,"app-run-dialog",10),f("run",function(m){c(e);let W=d();return u(W.onStartRun(m))})("closed",function(){c(e);let m=d();return u(m.showRunDialog=!1)}),t()}if(a&2){let e=d();r(4),l(e.workflow.name),r(2),C(" ",e.workflow.nodeCount," nodes \u2022 provider: ",e.workflow.defaultProvider," \u2022 model: ",e.workflow.defaultModel," "),r(2),l(e.workflow.description),r(15),k(e.workflow.nodes),r(2),x("visible",e.showRunDialog)("workflowName",e.workflow.name)}}var R=class a{route=p(D);api=p(E);router=p(S);workflow;showRunDialog=!1;ngOnInit(){let o=this.route.snapshot.paramMap.get("name");this.api.getWorkflow(o).subscribe(e=>this.workflow=e)}onStartRun(o){this.showRunDialog=!1,this.api.startRun(this.workflow.name,o).subscribe(e=>{this.router.navigate(["/runs",e.runId])})}typeBadge(o){switch(o){case"prompt":return"bg-purple-500/10 text-purple-400";case"bash":return"bg-amber-500/10 text-amber-400";case"command":return"bg-cyan-500/10 text-cyan-400";default:return"bg-slate-700 text-slate-400"}}static \u0275fac=function(e){return new(e||a)};static \u0275cmp=w({type:a,selectors:[["app-workflow-detail"]],decls:1,vars:1,consts:[[1,"max-w-4xl","mx-auto"],[1,"flex","items-start","mb-6"],[1,"text-2xl","font-bold","text-slate-100"],[1,"text-sm","text-slate-500","mt-1"],[1,"text-sm","text-slate-400","mt-2"],[1,"ml-auto","bg-blue-600","text-white","px-5","py-2","rounded-lg","hover:bg-blue-500","text-sm",3,"click"],[1,"bg-slate-800","rounded-lg","border","border-slate-700","p-4"],[1,"text-xs","font-semibold","text-slate-500","uppercase","tracking-wider","mb-3"],[1,"grid","grid-cols-[1.5fr_0.8fr_2fr_1.5fr]","text-xs","text-slate-500","pb-2","border-b","border-slate-700"],[1,"grid","grid-cols-[1.5fr_0.8fr_2fr_1.5fr]","py-2","text-sm","border-b","border-slate-800/50","items-center"],[3,"run","closed","visible","workflowName"],[1,"text-slate-100"],[1,"text-xs","px-1.5","py-0.5","rounded",3,"ngClass"],[1,"font-mono","text-xs","text-slate-400"],[1,"font-mono","text-xs","text-amber-400"]],template:function(e,s){e&1&&_(0,V,26,7),e&2&&g(s.workflow?0:-1)},dependencies:[y,h,I],encapsulation:2})};export{R as WorkflowDetailComponent};
@@ -1 +0,0 @@
1
- import{a as M}from"./chunk-RGFLNLPM.js";import{C as u,D as l,E,F as w,G as p,H as r,I as i,J as N,M as m,O as o,P as d,Q as _,R,c as y,ea as v,ga as b,i as S,ka as D,l as c,na as k,p as I,u as s,x as g}from"./chunk-RKWDHBN3.js";var C=class a{zone=c(I);connect(t){return new y(e=>{let n=new EventSource(`/api/runs/${t}/events`),x=["node:start","node:complete","node:skip","node:fail","run:complete","run:state"];for(let f of x)n.addEventListener(f,A=>{this.zone.run(()=>{e.next({type:f,data:JSON.parse(A.data)})})});return n.onerror=()=>{this.zone.run(()=>{e.complete()}),n.close()},()=>{n.close()}})}static \u0275fac=function(e){return new(e||a)};static \u0275prov=S({token:a,factory:a.\u0275fac,providedIn:"root"})};function $(a,t){if(a&1&&(r(0,"span",3),o(1),i()),a&2){let e=m();p("ngClass",e.typeBadgeClass),s(),d(e.type)}}function j(a,t){if(a&1&&(r(0,"span",4),o(1),i()),a&2){let e=m();s(),_("",(e.durationMs/1e3).toFixed(1),"s")}}function z(a,t){a&1&&(r(0,"span",5),o(1,"running..."),i())}function B(a,t){a&1&&(r(0,"span",6),o(1,"skipped"),i())}function P(a,t){a&1&&(r(0,"span",7),o(1,"FAILED"),i())}var h=class a{nodeId="";status="pending";type;durationMs;get statusIcon(){switch(this.status){case"completed":return"\u2713";case"running":return"\u25CF";case"failed":return"\u2717";case"skipped":return"\u2298";default:return"\u25CB"}}get statusIconClass(){switch(this.status){case"completed":return"text-green-400";case"running":return"text-blue-400 animate-pulse";case"failed":return"text-red-400";case"skipped":return"text-slate-500";default:return"text-slate-600"}}get statusTextClass(){switch(this.status){case"pending":return"text-slate-500";case"skipped":return"text-slate-500";default:return"text-slate-100"}}get typeBadgeClass(){switch(this.type){case"prompt":return"bg-purple-500/10 text-purple-400";case"bash":return"bg-amber-500/10 text-amber-400";case"command":return"bg-cyan-500/10 text-cyan-400";default:return"bg-slate-700 text-slate-400"}}static \u0275fac=function(e){return new(e||a)};static \u0275cmp=g({type:a,selectors:[["app-node-status-row"]],inputs:{nodeId:"nodeId",status:"status",type:"type",durationMs:"durationMs"},decls:10,vars:9,consts:[[1,"flex","items-center","py-2.5","border-b","border-slate-800"],[1,"mr-3","text-sm",3,"ngClass"],[1,"flex-1",3,"ngClass"],[1,"text-xs","px-1.5","py-0.5","rounded","mr-2",3,"ngClass"],[1,"font-mono","text-xs","text-slate-400"],[1,"font-mono","text-xs","text-blue-400","animate-pulse"],[1,"text-xs","text-slate-500"],[1,"text-xs","text-red-400"]],template:function(e,n){e&1&&(r(0,"div",0)(1,"span",1),o(2),i(),r(3,"span",2),o(4),i(),u(5,$,2,2,"span",3),u(6,j,2,1,"span",4),u(7,z,2,0,"span",5),u(8,B,2,0,"span",6),u(9,P,2,0,"span",7),i()),e&2&&(s(),p("ngClass",n.statusIconClass),s(),d(n.statusIcon),s(),p("ngClass",n.statusTextClass),s(),d(n.nodeId),s(),l(n.type?5:-1),s(),l(n.status==="completed"&&n.durationMs!==void 0?6:-1),s(),l(n.status==="running"?7:-1),s(),l(n.status==="skipped"?8:-1),s(),l(n.status==="failed"?9:-1))},dependencies:[b,v],encapsulation:2})};var J=(a,t)=>t.id;function Z(a,t){if(a&1&&(r(0,"span",6),o(1),i()),a&2){let e=m();p("ngClass",e.statusClass(e.run.status)),s(),R(" ",e.statusIcon(e.run.status)," ",e.run.status," ")}}function q(a,t){if(a&1&&N(0,"app-node-status-row",8),a&2){let e=t.$implicit;p("nodeId",e.id)("status",e.status)("durationMs",e.durationMs)}}function G(a,t){if(a&1&&(r(0,"div",9)(1,"span",10),o(2,"Elapsed: "),r(3,"span",11),o(4),i()(),r(5,"span",12),o(6,"Nodes: "),r(7,"span",13),o(8),i(),o(9,"/"),r(10,"span",14),o(11),i(),o(12," completed "),i()()),a&2){let e=m();s(4),d(e.elapsedDisplay),s(4),d(e.completedCount),s(3),d(e.nodes.length)}}var O=class a{route=c(D);api=c(M);sse=c(C);run;nodes=[];sseSub;timerInterval;startTime=Date.now();ngOnInit(){let t=this.route.snapshot.paramMap.get("runId");this.api.getRun(t).subscribe(e=>{this.run=e,this.startTime=new Date(e.startedAt).getTime(),this.rebuildNodeList()}),this.sseSub=this.sse.connect(t).subscribe(e=>{this.handleSseEvent(e)}),this.timerInterval=setInterval(()=>{},1e3)}ngOnDestroy(){this.sseSub?.unsubscribe(),this.timerInterval&&clearInterval(this.timerInterval)}handleSseEvent(t){let e=t.data,n=e.nodeId;switch(t.type){case"run:state":this.run=e,this.startTime=new Date(this.run.startedAt).getTime(),this.rebuildNodeList();break;case"node:start":this.updateNodeStatus(n,"running");break;case"node:complete":this.updateNodeStatus(n,"completed",e.durationMs);break;case"node:skip":this.updateNodeStatus(n,"skipped");break;case"node:fail":this.updateNodeStatus(n,"failed");break;case"run:complete":this.run&&(this.run.status=e.success?"completed":"failed");break}}rebuildNodeList(){this.run&&(this.nodes=Object.entries(this.run.nodes).map(([t,e])=>({id:t,status:e.status,durationMs:e.durationMs})))}updateNodeStatus(t,e,n){let x=this.nodes.find(f=>f.id===t);x?(x.status=e,n!==void 0&&(x.durationMs=n)):this.nodes.push({id:t,status:e,durationMs:n})}get completedCount(){return this.nodes.filter(t=>t.status==="completed").length}get elapsedDisplay(){let t=Math.floor((Date.now()-this.startTime)/1e3),e=Math.floor(t/60),n=t%60;return e>0?`${e}m ${n}s`:`${n}s`}statusClass(t){switch(t){case"completed":return"bg-green-500/10 text-green-400";case"failed":return"bg-red-500/10 text-red-400";case"running":return"bg-blue-500/10 text-blue-400";default:return"bg-slate-700 text-slate-400"}}statusIcon(t){switch(t){case"completed":return"\u2713";case"failed":return"\u2717";case"running":return"\u25CF";default:return"\u25CB"}}static \u0275fac=function(e){return new(e||a)};static \u0275cmp=g({type:a,selectors:[["app-run-execution"]],decls:17,vars:4,consts:[[1,"max-w-3xl","mx-auto"],[1,"flex","items-center","mb-6","gap-2","text-sm"],["routerLink","/",1,"text-slate-500","hover:text-slate-300"],[1,"text-slate-600"],[1,"text-slate-300"],[1,"font-mono","text-slate-100"],[1,"text-xs","px-2","py-0.5","rounded","ml-2",3,"ngClass"],[1,"mb-6"],[3,"nodeId","status","durationMs"],[1,"bg-slate-800","rounded-lg","px-4","py-3","flex","items-center","text-sm"],[1,"text-slate-400"],[1,"text-slate-100","font-mono"],[1,"ml-6","text-slate-400"],[1,"text-green-400"],[1,"text-slate-100"]],template:function(e,n){e&1&&(r(0,"div",0)(1,"div",1)(2,"a",2),o(3,"Dashboard"),i(),r(4,"span",3),o(5,"\u203A"),i(),r(6,"span",4),o(7),i(),r(8,"span",3),o(9,"\u203A"),i(),r(10,"span",5),o(11),i(),u(12,Z,2,3,"span",6),i(),r(13,"div",7),E(14,q,1,3,"app-node-status-row",8,J),i(),u(16,G,13,3,"div",9),i()),e&2&&(s(7),d(n.run==null?null:n.run.workflow),s(4),d(n.run==null?null:n.run.runId),s(),l(n.run?12:-1),s(2),w(n.nodes),s(2),l(n.run?16:-1))},dependencies:[b,v,k,h],encapsulation:2})};export{O as RunExecutionComponent};
@@ -1 +0,0 @@
1
- import{a as N}from"./chunk-XGYEZIV4.js";import{a as F}from"./chunk-RGFLNLPM.js";import{E as c,F as x,G as d,H as r,I as n,J as h,K as k,L as f,M as b,O as i,P as l,Q as y,R as S,X as g,Y as C,Z as D,ea as E,fa as R,ga as I,l as p,m as _,ma as T,n as v,na as W,u as o,x as w}from"./chunk-RKWDHBN3.js";var $=a=>["/workflows",a],V=a=>["/runs",a],B=(a,e)=>e.name,M=(a,e)=>e.runId;function O(a,e){if(a&1){let t=k();r(0,"div",3)(1,"a",9)(2,"div",10),i(3),n(),r(4,"div",11),i(5),n()(),r(6,"div",12)(7,"span",13),i(8),n(),r(9,"button",14),f("click",function(){let m=_(t).$implicit,u=b();return v(u.openRunDialog(m.name))}),i(10,"Run \u25B6"),n()()()}if(a&2){let t=e.$implicit;o(),d("routerLink",g(4,$,t.name)),o(2),l(t.name),o(2),l(t.description),o(3),y("",t.nodeCount," nodes")}}function A(a,e){if(a&1&&(r(0,"div",6)(1,"span",15),i(2),n(),r(3,"span",16),i(4),n(),r(5,"span")(6,"span",17),i(7),n()(),r(8,"span",13),i(9),C(10,"date"),n(),r(11,"a",18),i(12,"View \u2192"),n()()),a&2){let t=e.$implicit,s=b();o(2),l(t.runId),o(2),l(t.workflow),o(2),d("ngClass",s.statusClass(t.status)),o(),S(" ",s.statusIcon(t.status)," ",t.status," "),o(2),l(D(10,7,t.startedAt,"short")),o(2),d("routerLink",g(10,V,t.runId))}}function P(a,e){a&1&&(r(0,"div",7),i(1,'No runs yet. Click "Run \u25B6" on a workflow to start.'),n())}var L=class a{api=p(F);router=p(T);workflows=[];runs=[];showRunDialog=!1;selectedWorkflow="";ngOnInit(){this.api.getWorkflows().subscribe(e=>this.workflows=e),this.api.getRuns().subscribe(e=>this.runs=e.reverse())}openRunDialog(e){this.selectedWorkflow=e,this.showRunDialog=!0}onStartRun(e){this.showRunDialog=!1,this.api.startRun(this.selectedWorkflow,e).subscribe(t=>{this.router.navigate(["/runs",t.runId])})}statusClass(e){switch(e){case"completed":return"bg-green-500/10 text-green-400";case"failed":return"bg-red-500/10 text-red-400";case"running":return"bg-blue-500/10 text-blue-400";default:return"bg-slate-700 text-slate-400"}}statusIcon(e){switch(e){case"completed":return"\u2713";case"failed":return"\u2717";case"running":return"\u25CF";default:return"\u25CB"}}static \u0275fac=function(t){return new(t||a)};static \u0275cmp=w({type:a,selectors:[["app-dashboard"]],decls:23,vars:3,consts:[[1,"max-w-6xl","mx-auto"],[1,"text-xs","font-semibold","text-slate-400","uppercase","tracking-wider","mb-3"],[1,"grid","grid-cols-1","md:grid-cols-2","lg:grid-cols-3","gap-3","mb-8"],[1,"bg-slate-800","rounded-lg","p-4","border","border-slate-700","hover:border-slate-600","transition-colors"],[1,"bg-slate-800","rounded-lg","border","border-slate-700","overflow-hidden"],[1,"grid","grid-cols-[1fr_1.5fr_1fr_1fr_0.5fr]","px-4","py-2","text-xs","text-slate-500","uppercase","border-b","border-slate-700"],[1,"grid","grid-cols-[1fr_1.5fr_1fr_1fr_0.5fr]","px-4","py-2.5","text-sm","border-b","border-slate-800","items-center"],[1,"px-4","py-6","text-center","text-sm","text-slate-500"],[3,"run","closed","visible","workflowName"],[1,"block",3,"routerLink"],[1,"font-semibold","text-slate-100","mb-1"],[1,"text-xs","text-slate-500","mb-3","line-clamp-2"],[1,"flex","items-center"],[1,"text-xs","text-slate-400"],[1,"ml-auto","bg-blue-600","text-white","text-xs","px-3","py-1","rounded","hover:bg-blue-500",3,"click"],[1,"font-mono","text-slate-400","text-xs"],[1,"text-slate-100"],[1,"text-xs","px-2","py-0.5","rounded",3,"ngClass"],[1,"text-xs","text-blue-400","hover:text-blue-300",3,"routerLink"]],template:function(t,s){t&1&&(r(0,"div",0)(1,"h2",1),i(2,"Workflows"),n(),r(3,"div",2),c(4,O,11,6,"div",3,B),n(),r(6,"h2",1),i(7,"Recent Runs"),n(),r(8,"div",4)(9,"div",5)(10,"span"),i(11,"Run ID"),n(),r(12,"span"),i(13,"Workflow"),n(),r(14,"span"),i(15,"Status"),n(),r(16,"span"),i(17,"Started"),n(),h(18,"span"),n(),c(19,A,13,12,"div",6,M,!1,P,2,0,"div",7),n()(),r(22,"app-run-dialog",8),f("run",function(u){return s.onStartRun(u)})("closed",function(){return s.showRunDialog=!1}),n()),t&2&&(o(4),x(s.workflows),o(15),x(s.runs),o(3),d("visible",s.showRunDialog)("workflowName",s.selectedWorkflow))},dependencies:[I,E,W,N,R],encapsulation:2})};export{L as DashboardComponent};
@@ -1 +0,0 @@
1
- import{i as n,ia as i,l as s}from"./chunk-RKWDHBN3.js";var o=class r{http=s(i);getWorkflows(){return this.http.get("/api/workflows")}getWorkflow(t){return this.http.get(`/api/workflows/${t}`)}getRuns(){return this.http.get("/api/runs")}getRun(t){return this.http.get(`/api/runs/${t}`)}startRun(t,e){return this.http.post("/api/runs",{workflow:t,args:e})}static \u0275fac=function(e){return new(e||r)};static \u0275prov=n({token:r,factory:r.\u0275fac,providedIn:"root"})};export{o as a};