station-kit 1.0.1 → 1.0.3
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.
- package/dist/cli-main.js +3 -29
- package/dist/cli-main.js.map +1 -1
- package/dist/cli.js +15 -4
- package/dist/cli.js.map +1 -1
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +89 -9
- package/dist/server/index.js.map +1 -1
- package/next.config.ts +1 -1
- package/out/404.html +1 -0
- package/out/_next/static/7q5_eGqbkbdP_jAqzl6RE/_buildManifest.js +1 -0
- package/out/_next/static/7q5_eGqbkbdP_jAqzl6RE/_ssgManifest.js +1 -0
- package/out/_next/static/chunks/580-f007f4d4c050db4e.js +1 -0
- package/out/_next/static/chunks/743-5bb03adbb0e4ddec.js +1 -0
- package/out/_next/static/chunks/8e6518bb-c26e82767f1faf66.js +1 -0
- package/out/_next/static/chunks/app/_not-found/page-ce21b4ba9038a5a7.js +1 -0
- package/out/_next/static/chunks/app/broadcasts/[id]/page-057eeaa51d28cbfd.js +1 -0
- package/out/_next/static/chunks/app/broadcasts/page-ac768ee4bcf3086f.js +1 -0
- package/out/_next/static/chunks/app/layout-a5f4d2f2e87939b2.js +1 -0
- package/out/_next/static/chunks/app/page-62d1dbcfdc93b566.js +1 -0
- package/out/_next/static/chunks/app/runs/[id]/page-7f726f2f4ea8f616.js +1 -0
- package/out/_next/static/chunks/app/signals/[name]/page-8f9f032eb0171ded.js +1 -0
- package/out/_next/static/chunks/app/signals/page-fb42d9c0368bbc58.js +1 -0
- package/out/_next/static/chunks/framework-077b27ad7787463c.js +1 -0
- package/out/_next/static/chunks/main-app-a9f19d5831b41b19.js +1 -0
- package/out/_next/static/chunks/main-f1c74cefd4965abf.js +1 -0
- package/out/_next/static/chunks/pages/_app-0a7b2e66ecbe3f0a.js +1 -0
- package/out/_next/static/chunks/pages/_error-273a093c18b5ed0f.js +1 -0
- package/out/_next/static/chunks/polyfills-42372ed130431b0a.js +1 -0
- package/out/_next/static/chunks/webpack-e40b05d6bdcb3589.js +1 -0
- package/out/_next/static/css/0be0e65a5f561f37.css +1 -0
- package/out/broadcasts/_.html +1 -0
- package/out/broadcasts/_.txt +22 -0
- package/out/broadcasts.html +1 -0
- package/out/broadcasts.txt +25 -0
- package/out/index.html +1 -0
- package/out/index.txt +25 -0
- package/out/runs/_.html +1 -0
- package/out/runs/_.txt +22 -0
- package/out/signals/_.html +1 -0
- package/out/signals/_.txt +22 -0
- package/out/signals.html +1 -0
- package/out/signals.txt +25 -0
- package/package.json +18 -10
- package/src/app/broadcasts/[id]/broadcast-detail.tsx +511 -0
- package/src/app/broadcasts/[id]/page.tsx +4 -506
- package/src/app/hooks/use-api.ts +1 -1
- package/src/app/hooks/use-realtime.ts +2 -3
- package/src/app/runs/[id]/page.tsx +4 -272
- package/src/app/runs/[id]/run-detail.tsx +277 -0
- package/src/app/signals/[name]/page.tsx +4 -245
- package/src/app/signals/[name]/signal-detail.tsx +250 -0
- package/src/cli-main.ts +3 -36
- package/src/cli.ts +15 -4
- package/src/server/index.ts +94 -10
- package/tsconfig.next.json +18 -3
- package/next-env.d.ts +0 -6
- package/station.config.example.ts +0 -16
- package/tsconfig.json +0 -12
- package/tsconfig.tsbuildinfo +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[177],{593:(e,t,n)=>{"use strict";async function s(e,t){let n=await fetch("".concat("","/api").concat(e),{...t,credentials:"include",headers:{"Content-Type":"application/json",...null==t?void 0:t.headers}});if(!n.ok)throw Error((await n.json().catch(()=>({error:"unknown",message:"Request failed."}))).message);return n.json()}async function r(){let e=await fetch("".concat("","/api/auth/check"),{credentials:"include"});return(await e.json()).data}async function a(e,t){return(await fetch("".concat("","/api/auth/login"),{method:"POST",credentials:"include",headers:{"Content-Type":"application/json"},body:JSON.stringify({username:e,password:t})})).ok}async function i(){await fetch("".concat("","/api/auth/logout"),{method:"POST",credentials:"include"})}function o(){return{getHealth:()=>s("/health"),getSignals:()=>s("/signals"),getScheduledSignals:()=>s("/signals/scheduled"),getSignal:e=>s("/signals/".concat(encodeURIComponent(e))),getSignalRuns:e=>s("/signals/".concat(encodeURIComponent(e),"/runs")),triggerSignal:(e,t)=>s("/signals/".concat(encodeURIComponent(e),"/trigger"),{method:"POST",body:JSON.stringify({input:null!=t?t:{}})}),getRuns:e=>{let t=new URLSearchParams;(null==e?void 0:e.status)&&t.set("status",e.status),(null==e?void 0:e.signalName)&&t.set("signalName",e.signalName);let n=t.toString();return s("/runs".concat(n?"?".concat(n):""))},getRunStats:()=>s("/runs/stats"),getRun:e=>s("/runs/".concat(e)),getRunSteps:e=>s("/runs/".concat(e,"/steps")),getRunLogs:e=>s("/runs/".concat(e,"/logs")),cancelRun:e=>s("/runs/".concat(e,"/cancel"),{method:"POST"}),getBroadcasts:()=>s("/broadcasts"),getBroadcast:e=>s("/broadcasts/".concat(encodeURIComponent(e))),triggerBroadcast:(e,t)=>s("/broadcasts/".concat(encodeURIComponent(e),"/trigger"),{method:"POST",body:JSON.stringify({input:null!=t?t:{}})}),getBroadcastRuns:e=>s("/broadcasts/".concat(encodeURIComponent(e),"/runs")),getBroadcastRun:e=>s("/broadcast-runs/".concat(e)),getBroadcastRunNodes:e=>s("/broadcast-runs/".concat(e,"/nodes")),getBroadcastRunLogs:e=>s("/broadcast-runs/".concat(e,"/logs")),cancelBroadcastRun:e=>s("/broadcast-runs/".concat(e,"/cancel"),{method:"POST"})}}n.d(t,{T5:()=>r,gf:()=>o,iD:()=>a,ri:()=>i})},783:(e,t,n)=>{"use strict";n.d(t,{A:()=>o,AuthProvider:()=>c,S:()=>d});var s=n(8111),r=n(5271),a=n(593);let i=(0,r.createContext)({authenticated:!0,logout:async()=>{}});function o(){return(0,r.useContext)(i)}function c(e){let{children:t,loginPage:n}=e,[o,c]=(0,r.useState)("loading");(0,r.useEffect)(()=>{(0,a.T5)().then(e=>{let{authenticated:t,authRequired:n}=e;!n||t?c("authenticated"):c("unauthenticated")}).catch(()=>{c("authenticated")})},[]);let l=(0,r.useCallback)(async()=>{await (0,a.ri)(),c("unauthenticated")},[]),d=(0,r.useCallback)(()=>{c("authenticated")},[]);return"loading"===o?null:"unauthenticated"===o?(0,s.jsx)(u,{onSuccess:d,children:n}):(0,s.jsx)(i.Provider,{value:{authenticated:!0,logout:l},children:t})}let l=(0,r.createContext)(()=>{});function d(){return(0,r.useContext)(l)}function u(e){let{children:t,onSuccess:n}=e;return(0,s.jsx)(l.Provider,{value:n,children:t})}},1308:(e,t,n)=>{"use strict";n.d(t,{LoginPage:()=>o});var s=n(8111),r=n(5271),a=n(593),i=n(783);function o(){let e=(0,i.S)(),[t,n]=(0,r.useState)(""),[o,c]=(0,r.useState)(""),[l,d]=(0,r.useState)(""),[u,h]=(0,r.useState)(!1);async function x(n){n.preventDefault(),d(""),h(!0);try{await (0,a.iD)(t,o)?e():d("Invalid credentials.")}catch(e){d("Connection failed.")}h(!1)}return(0,s.jsx)("div",{className:"login-page",children:(0,s.jsxs)("div",{className:"login-card",children:[(0,s.jsxs)("div",{className:"login-header",children:[(0,s.jsxs)("svg",{width:"28",height:"28",viewBox:"0 0 100 100",fill:"none","aria-hidden":"true",children:[(0,s.jsx)("path",{d:"M50 2 L39 25 L27 50 L18 70 L10 88 L90 88 L82 70 L73 50 L61 25 Z",stroke:"currentColor",strokeWidth:"1.5"}),(0,s.jsx)("line",{x1:"50",y1:"2",x2:"50",y2:"88",stroke:"currentColor",strokeWidth:"1"}),(0,s.jsx)("line",{x1:"16",y1:"70",x2:"84",y2:"70",stroke:"currentColor",strokeWidth:"1.2"}),(0,s.jsx)("line",{x1:"39",y1:"25",x2:"61",y2:"25",stroke:"currentColor",strokeWidth:"0.8"}),(0,s.jsx)("line",{x1:"27",y1:"50",x2:"73",y2:"50",stroke:"currentColor",strokeWidth:"0.8"}),(0,s.jsx)("rect",{x:"43",y:"88",width:"14",height:"5",fill:"currentColor",opacity:"0.5"}),(0,s.jsx)("circle",{cx:"50",cy:"2",r:"1.5",fill:"currentColor"})]}),(0,s.jsx)("h1",{children:"Station"})]}),(0,s.jsxs)("form",{onSubmit:x,children:[(0,s.jsxs)("div",{className:"login-field",children:[(0,s.jsx)("label",{htmlFor:"username",children:"Username"}),(0,s.jsx)("input",{id:"username",type:"text",value:t,onChange:e=>n(e.target.value),autoComplete:"username",autoFocus:!0,required:!0})]}),(0,s.jsxs)("div",{className:"login-field",children:[(0,s.jsx)("label",{htmlFor:"password",children:"Password"}),(0,s.jsx)("input",{id:"password",type:"password",value:o,onChange:e=>c(e.target.value),autoComplete:"current-password",required:!0})]}),l&&(0,s.jsx)("div",{className:"login-error",children:l}),(0,s.jsx)("button",{type:"submit",className:"btn btn--primary login-btn",disabled:u,children:u?"Signing in...":"Sign in"})]})]})})}},1510:(e,t,n)=>{"use strict";n.d(t,{D:()=>i,ThemeProvider:()=>c});var s=n(8111),r=n(5271);let a=(0,r.createContext)({theme:"light",toggle:()=>{}});function i(){return(0,r.useContext)(a)}function o(){let e=localStorage.getItem("station-theme");return"light"===e||"dark"===e?e:window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}function c(e){let{children:t}=e,[n,i]=(0,r.useState)(o);(0,r.useEffect)(()=>{document.documentElement.setAttribute("data-theme",n),localStorage.setItem("station-theme",n)},[n]);let c=(0,r.useCallback)(()=>{i(e=>"light"===e?"dark":"light")},[]);return(0,s.jsx)(a.Provider,{value:{theme:n,toggle:c},children:t})}},1786:(e,t,n)=>{Promise.resolve().then(n.bind(n,783)),Promise.resolve().then(n.bind(n,5152)),Promise.resolve().then(n.bind(n,1308)),Promise.resolve().then(n.bind(n,1961)),Promise.resolve().then(n.bind(n,1510)),Promise.resolve().then(n.t.bind(n,9469,23)),Promise.resolve().then(n.bind(n,9275))},1961:(e,t,n)=>{"use strict";n.d(t,{Shell:()=>b});var s=n(8111),r=n(5271),a=n(5935),i=n.n(a),o=n(4736),c=n(9275),l=n(7646),d=n(1510),u=n(783);function h(){return"collapsed"===localStorage.getItem("station-sidebar")}function x(e){let{size:t=20}=e;return(0,s.jsxs)("svg",{width:t,height:t,viewBox:"0 0 100 100",fill:"none","aria-hidden":"true",children:[(0,s.jsx)("path",{d:"M50 2 L39 25 L27 50 L18 70 L10 88 L90 88 L82 70 L73 50 L61 25 Z",stroke:"currentColor",strokeWidth:"1.5"}),(0,s.jsx)("line",{x1:"50",y1:"2",x2:"50",y2:"88",stroke:"currentColor",strokeWidth:"1"}),(0,s.jsx)("line",{x1:"16",y1:"70",x2:"84",y2:"70",stroke:"currentColor",strokeWidth:"1.2"}),(0,s.jsx)("line",{x1:"39",y1:"25",x2:"61",y2:"25",stroke:"currentColor",strokeWidth:"0.8"}),(0,s.jsx)("line",{x1:"27",y1:"50",x2:"73",y2:"50",stroke:"currentColor",strokeWidth:"0.8"}),(0,s.jsx)("rect",{x:"43",y:"88",width:"14",height:"5",fill:"currentColor",opacity:"0.5"}),(0,s.jsx)("circle",{cx:"50",cy:"2",r:"1.5",fill:"currentColor"})]})}function g(){return(0,s.jsxs)("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",stroke:"currentColor",strokeWidth:"1.2","aria-hidden":"true",children:[(0,s.jsx)("rect",{x:"1",y:"1",width:"5",height:"5",rx:"1"}),(0,s.jsx)("rect",{x:"8",y:"1",width:"5",height:"5",rx:"1"}),(0,s.jsx)("rect",{x:"1",y:"8",width:"5",height:"5",rx:"1"}),(0,s.jsx)("rect",{x:"8",y:"8",width:"5",height:"5",rx:"1"})]})}function m(){return(0,s.jsxs)("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",stroke:"currentColor",strokeWidth:"1.2",strokeLinecap:"round","aria-hidden":"true",children:[(0,s.jsx)("circle",{cx:"7",cy:"12",r:"1",fill:"currentColor",stroke:"none"}),(0,s.jsx)("path",{d:"M4.5 10a3.5 3.5 0 0 1 5 0"}),(0,s.jsx)("path",{d:"M2.5 8a6 6 0 0 1 9 0"}),(0,s.jsx)("path",{d:"M0.5 6a8.5 8.5 0 0 1 13 0"})]})}function j(){return(0,s.jsxs)("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",stroke:"currentColor",strokeWidth:"1.2","aria-hidden":"true",children:[(0,s.jsx)("circle",{cx:"7",cy:"2.5",r:"1.5"}),(0,s.jsx)("circle",{cx:"3",cy:"11.5",r:"1.5"}),(0,s.jsx)("circle",{cx:"11",cy:"11.5",r:"1.5"}),(0,s.jsx)("line",{x1:"6.2",y1:"3.8",x2:"3.8",y2:"10"}),(0,s.jsx)("line",{x1:"7.8",y1:"3.8",x2:"10.2",y2:"10"})]})}function v(e){let{href:t,label:n,section:r,icon:a}=e,c=(0,o.usePathname)(),{activeSection:d}=(0,l.iQ)(),u=d?d===r:"/"===t?"/"===c:c.startsWith(t);return(0,s.jsxs)(i(),{href:t,className:u?"active":"",children:[a,(0,s.jsx)("span",{className:"nav-label",children:n})]})}function b(e){let{children:t}=e,{connected:n}=(0,c.q)(),{segments:a}=(0,l.iQ)(),{theme:o,toggle:b}=(0,d.D)(),{logout:p}=(0,u.A)(),[f,k]=(0,r.useState)(h),y=(0,r.useCallback)(()=>{k(e=>{let t=!e;return localStorage.setItem("station-sidebar",t?"collapsed":"expanded"),t})},[]);return(0,s.jsxs)("div",{className:"station-layout","data-collapsed":f,children:[(0,s.jsxs)("aside",{className:"station-sidebar",children:[(0,s.jsxs)("div",{className:"station-sidebar-logo",children:[(0,s.jsxs)("div",{className:"station-sidebar-mark",children:[(0,s.jsx)(x,{size:20}),(0,s.jsx)("h1",{children:"Station"})]}),(0,s.jsx)("span",{children:"station-signal"})]}),(0,s.jsxs)("nav",{className:"station-sidebar-nav",children:[(0,s.jsx)("div",{className:"station-sidebar-nav-label",children:"Nav"}),(0,s.jsx)(v,{href:"/",label:"Overview",section:"overview",icon:(0,s.jsx)(g,{})}),(0,s.jsx)(v,{href:"/signals",label:"Signals",section:"signals",icon:(0,s.jsx)(m,{})}),(0,s.jsx)(v,{href:"/broadcasts",label:"Broadcasts",section:"broadcasts",icon:(0,s.jsx)(j,{})})]}),(0,s.jsx)("button",{className:"sidebar-collapse-btn",onClick:y,title:f?"Expand sidebar":"Collapse sidebar","aria-label":f?"Expand sidebar":"Collapse sidebar",children:(0,s.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round","aria-hidden":"true",children:f?(0,s.jsx)("polyline",{points:"5 3 9 7 5 11"}):(0,s.jsx)("polyline",{points:"9 3 5 7 9 11"})})})]}),(0,s.jsxs)("div",{className:"station-main",children:[(0,s.jsxs)("header",{className:"station-header",children:[(0,s.jsx)("nav",{className:"breadcrumb","aria-label":"Breadcrumb",children:0===a.length?(0,s.jsx)("span",{className:"breadcrumb-segment",children:"overview"}):a.map((e,t)=>(0,s.jsxs)("span",{className:"breadcrumb-item",children:[t>0&&(0,s.jsx)("span",{className:"breadcrumb-sep","aria-hidden":"true",children:"/"}),e.href?(0,s.jsx)(i(),{href:e.href,className:"breadcrumb-link",children:e.label}):(0,s.jsx)("span",{className:"breadcrumb-segment breadcrumb-segment--current","aria-current":"page",children:e.label})]},t))}),(0,s.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"0.75rem"},children:[(0,s.jsx)("button",{onClick:b,className:"theme-toggle",title:"light"===o?"Switch to dark mode":"Switch to light mode","aria-label":"light"===o?"Switch to dark mode":"Switch to light mode",children:"light"===o?(0,s.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:"1.5",children:(0,s.jsx)("path",{d:"M13.5 8.5a5.5 5.5 0 0 1-7-7A5.5 5.5 0 1 0 13.5 8.5Z"})}):(0,s.jsxs)("svg",{width:"14",height:"14",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:"1.5",children:[(0,s.jsx)("circle",{cx:"8",cy:"8",r:"3"}),(0,s.jsx)("path",{d:"M8 1v2M8 13v2M1 8h2M13 8h2M3.05 3.05l1.41 1.41M11.54 11.54l1.41 1.41M3.05 12.95l1.41-1.41M11.54 4.46l1.41-1.41"})]})}),(0,s.jsx)("button",{onClick:p,className:"logout-btn",title:"Sign out","aria-label":"Sign out",children:(0,s.jsxs)("svg",{width:"14",height:"14",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",children:[(0,s.jsx)("path",{d:"M6 2H3a1 1 0 0 0-1 1v10a1 1 0 0 0 1 1h3"}),(0,s.jsx)("path",{d:"M10 12l4-4-4-4"}),(0,s.jsx)("line",{x1:"14",y1:"8",x2:"6",y2:"8"})]})}),(0,s.jsx)("div",{className:"pulse-dot ".concat(n?"":"pulse-dot--disconnected"),title:n?"Connected":"Disconnected"})]})]}),(0,s.jsx)("main",{className:"station-content",children:t})]})]})}},5152:(e,t,n)=>{"use strict";n.d(t,{BreadcrumbProvider:()=>i});var s=n(8111),r=n(5271),a=n(7646);function i(e){let{children:t}=e,[n,i]=(0,r.useState)([]),[o,c]=(0,r.useState)(null),l=(0,r.useCallback)(e=>i(e),[]),d=(0,r.useCallback)(e=>c(e),[]);return(0,s.jsx)(a.Hc.Provider,{value:{segments:n,activeSection:o,setSegments:l,setActiveSection:d},children:t})}},7646:(e,t,n)=>{"use strict";n.d(t,{Hc:()=>r,iQ:()=>i,rT:()=>a});var s=n(5271);let r=(0,s.createContext)({segments:[],activeSection:null,setSegments:()=>{},setActiveSection:()=>{}});function a(e,t){let n=(0,s.useContext)(r);(0,s.useEffect)(()=>{n.setSegments(e),n.setActiveSection(t)},[JSON.stringify(e),t])}function i(){return(0,s.useContext)(r)}},9275:(e,t,n)=>{"use strict";n.d(t,{StationProvider:()=>o,q:()=>i});var s=n(8111),r=n(5271);let a=(0,r.createContext)({connected:!1,events:[]});function i(){return(0,r.useContext)(a)}function o(e){let{children:t}=e,[n,i]=(0,r.useState)([]),{connected:o}=function(e){let[t,n]=(0,r.useState)(!1),s=(0,r.useRef)(e);return s.current=e,(0,r.useEffect)(()=>{let e=null,t=null,r=0,a=!1;return!function i(){if(a)return;let o="https:"===window.location.protocol?"wss:":"ws:";(e=new WebSocket("".concat(o,"//").concat(window.location.host,"/api/events"))).onopen=()=>{n(!0),r=0},e.onmessage=e=>{try{let t=JSON.parse(e.data);s.current(t)}catch(e){console.error("Failed to parse WebSocket message:",e)}},e.onclose=()=>{if(n(!1),!a){let e=Math.min(1e3*Math.pow(2,r),1e4);r++,t=setTimeout(i,e)}},e.onerror=()=>{null==e||e.close()}}(),()=>{a=!0,t&&clearTimeout(t),null==e||e.close()}},[]),{connected:t}}((0,r.useCallback)(e=>{i(t=>[e,...t].slice(0,100))},[]));return(0,s.jsx)(a.Provider,{value:{connected:o,events:n},children:t})}},9469:()=>{}},e=>{e.O(0,[506,580,814,743,358],()=>e(e.s=1786)),_N_E=e.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[974],{414:(e,t,a)=>{Promise.resolve().then(a.bind(a,8419))},593:(e,t,a)=>{"use strict";async function s(e,t){let a=await fetch("".concat("","/api").concat(e),{...t,credentials:"include",headers:{"Content-Type":"application/json",...null==t?void 0:t.headers}});if(!a.ok)throw Error((await a.json().catch(()=>({error:"unknown",message:"Request failed."}))).message);return a.json()}async function n(){let e=await fetch("".concat("","/api/auth/check"),{credentials:"include"});return(await e.json()).data}async function l(e,t){return(await fetch("".concat("","/api/auth/login"),{method:"POST",credentials:"include",headers:{"Content-Type":"application/json"},body:JSON.stringify({username:e,password:t})})).ok}async function c(){await fetch("".concat("","/api/auth/logout"),{method:"POST",credentials:"include"})}function r(){return{getHealth:()=>s("/health"),getSignals:()=>s("/signals"),getScheduledSignals:()=>s("/signals/scheduled"),getSignal:e=>s("/signals/".concat(encodeURIComponent(e))),getSignalRuns:e=>s("/signals/".concat(encodeURIComponent(e),"/runs")),triggerSignal:(e,t)=>s("/signals/".concat(encodeURIComponent(e),"/trigger"),{method:"POST",body:JSON.stringify({input:null!=t?t:{}})}),getRuns:e=>{let t=new URLSearchParams;(null==e?void 0:e.status)&&t.set("status",e.status),(null==e?void 0:e.signalName)&&t.set("signalName",e.signalName);let a=t.toString();return s("/runs".concat(a?"?".concat(a):""))},getRunStats:()=>s("/runs/stats"),getRun:e=>s("/runs/".concat(e)),getRunSteps:e=>s("/runs/".concat(e,"/steps")),getRunLogs:e=>s("/runs/".concat(e,"/logs")),cancelRun:e=>s("/runs/".concat(e,"/cancel"),{method:"POST"}),getBroadcasts:()=>s("/broadcasts"),getBroadcast:e=>s("/broadcasts/".concat(encodeURIComponent(e))),triggerBroadcast:(e,t)=>s("/broadcasts/".concat(encodeURIComponent(e),"/trigger"),{method:"POST",body:JSON.stringify({input:null!=t?t:{}})}),getBroadcastRuns:e=>s("/broadcasts/".concat(encodeURIComponent(e),"/runs")),getBroadcastRun:e=>s("/broadcast-runs/".concat(e)),getBroadcastRunNodes:e=>s("/broadcast-runs/".concat(e,"/nodes")),getBroadcastRunLogs:e=>s("/broadcast-runs/".concat(e,"/logs")),cancelBroadcastRun:e=>s("/broadcast-runs/".concat(e,"/cancel"),{method:"POST"})}}a.d(t,{T5:()=>n,gf:()=>r,iD:()=>l,ri:()=>c})},1253:(e,t,a)=>{"use strict";a.d(t,{W:()=>n});var s=a(8111);function n(e){let{status:t}=e;return(0,s.jsxs)("span",{className:"status-badge status-badge--".concat(t),children:[(0,s.jsx)("span",{className:"status-badge-dot"}),t]})}},1489:(e,t,a)=>{"use strict";a.d(t,{s:()=>c});var s=a(8111),n=a(5271);function l(e){let t=Date.now()-new Date(e).getTime();if(t<0)return"just now";let a=Math.floor(t/1e3);if(a<5)return"just now";if(a<60)return"".concat(a,"s ago");let s=Math.floor(a/60);if(s<60)return"".concat(s,"m ago");let n=Math.floor(s/60);if(n<24)return"".concat(n,"h ago");let l=Math.floor(n/24);return"".concat(l,"d ago")}function c(e){let{date:t}=e,[a,c]=(0,n.useState)(()=>l(t));return(0,n.useEffect)(()=>{let e=setInterval(()=>{c(l(t))},5e3);return()=>clearInterval(e)},[t]),(0,s.jsx)("span",{className:"mono",title:new Date(t).toLocaleString(),style:{fontSize:"0.8125rem",color:"var(--muted)"},children:a})}},7646:(e,t,a)=>{"use strict";a.d(t,{Hc:()=>n,iQ:()=>c,rT:()=>l});var s=a(5271);let n=(0,s.createContext)({segments:[],activeSection:null,setSegments:()=>{},setActiveSection:()=>{}});function l(e,t){let a=(0,s.useContext)(n);(0,s.useEffect)(()=>{a.setSegments(e),a.setActiveSection(t)},[JSON.stringify(e),t])}function c(){return(0,s.useContext)(n)}},8419:(e,t,a)=>{"use strict";a.r(t),a.d(t,{default:()=>m});var s=a(8111),n=a(5271),l=a(5935),c=a.n(l),r=a(4736),i=a(593),o=a(9275),d=a(7646),u=a(1253),h=a(1489);function m(){let e=(0,i.gf)(),t=(0,r.useRouter)(),{events:a}=(0,o.q)(),[l,m]=(0,n.useState)(null),[g,v]=(0,n.useState)([]),[x,f]=(0,n.useState)([]),[j,p]=(0,n.useState)(!0);return((0,d.rT)([{label:"Overview"}],"overview"),(0,n.useEffect)(()=>{!async function(){try{let[t,a,s]=await Promise.all([e.getRunStats(),e.getRuns({status:"failed"}),e.getScheduledSignals()]);m(t.data),v(a.data.slice(0,10)),f(s.data)}catch(e){e instanceof Error&&console.error("Failed to load overview data:",e.message)}p(!1)}()},[]),(0,n.useEffect)(()=>{0!==a.length&&a[0].type.startsWith("run:")&&(e.getRunStats().then(e=>m(e.data)).catch(e=>console.error("Failed to refresh stats:",e)),e.getRuns({status:"failed"}).then(e=>v(e.data.slice(0,10))).catch(e=>console.error("Failed to refresh failed runs:",e)),e.getScheduledSignals().then(e=>f(e.data)).catch(e=>console.error("Failed to refresh scheduled:",e)))},[a.length]),j)?(0,s.jsxs)("div",{children:[(0,s.jsx)("h1",{className:"page-title",children:"Overview"}),(0,s.jsx)("div",{className:"loading-bar",children:(0,s.jsx)("div",{className:"loading-bar-fill"})})]}):(0,s.jsxs)("div",{children:[(0,s.jsx)("h1",{className:"page-title",children:"Overview"}),l&&(0,s.jsxs)("div",{className:"stat-grid",children:[(0,s.jsxs)("div",{className:"stat-card",children:[(0,s.jsx)("div",{className:"stat-card-label",children:"Pending"}),(0,s.jsx)("div",{className:"stat-card-value",children:l.pending})]}),(0,s.jsxs)("div",{className:"stat-card",children:[(0,s.jsx)("div",{className:"stat-card-label",children:"Running"}),(0,s.jsx)("div",{className:"stat-card-value",style:{color:"var(--patina)"},children:l.running})]}),(0,s.jsxs)("div",{className:"stat-card",children:[(0,s.jsx)("div",{className:"stat-card-label",children:"Completed"}),(0,s.jsx)("div",{className:"stat-card-value",style:{color:"var(--patina)"},children:l.completed})]}),(0,s.jsxs)("div",{className:"stat-card",children:[(0,s.jsx)("div",{className:"stat-card-label",children:"Failed"}),(0,s.jsx)("div",{className:"stat-card-value",style:{color:"var(--rust)"},children:l.failed})]}),(0,s.jsxs)("div",{className:"stat-card",children:[(0,s.jsx)("div",{className:"stat-card-label",children:"Cancelled"}),(0,s.jsx)("div",{className:"stat-card-value",children:l.cancelled})]})]}),x.length>0&&(0,s.jsxs)("div",{className:"detail-section",children:[(0,s.jsx)("div",{className:"detail-section-label",children:"Scheduled"}),(0,s.jsxs)("table",{className:"station-table",children:[(0,s.jsx)("thead",{children:(0,s.jsxs)("tr",{children:[(0,s.jsx)("th",{children:"Signal"}),(0,s.jsx)("th",{children:"Interval"}),(0,s.jsx)("th",{children:"Next Run"}),(0,s.jsx)("th",{children:"Last Run"}),(0,s.jsx)("th",{children:"Last Status"})]})}),(0,s.jsx)("tbody",{children:x.map((e,a)=>(0,s.jsxs)("tr",{className:"reveal-item clickable-row",style:{animationDelay:"".concat(40*a,"ms")},onClick:()=>t.push("/signals/".concat(encodeURIComponent(e.name))),children:[(0,s.jsx)("td",{className:"mono",children:e.name}),(0,s.jsx)("td",{className:"mono",style:{color:"var(--muted)",fontSize:"0.8125rem"},children:e.interval}),(0,s.jsx)("td",{className:"mono",style:{fontSize:"0.8125rem",color:e.nextRunAt?"var(--patina)":"var(--muted)"},children:e.nextRunAt?function(e){let t=new Date(e).getTime()-Date.now();if(t<=0)return"due now";let a=Math.floor(t/1e3);if(a<60)return"in ".concat(a,"s");let s=Math.floor(a/60);if(s<60)return"in ".concat(s,"m");let n=Math.floor(s/60);return n<24?"in ".concat(n,"h"):"in ".concat(Math.floor(n/24),"d")}(e.nextRunAt):"—"}),(0,s.jsx)("td",{children:e.lastRunAt?(0,s.jsx)(h.s,{date:e.lastRunAt}):(0,s.jsx)("span",{className:"mono",style:{fontSize:"0.8125rem",color:"var(--muted)"},children:"—"})}),(0,s.jsx)("td",{children:e.lastStatus?(0,s.jsx)(u.W,{status:e.lastStatus}):(0,s.jsx)("span",{className:"mono",style:{fontSize:"0.8125rem",color:"var(--muted)"},children:"—"})})]},e.name))})]})]}),g.length>0&&(0,s.jsxs)("div",{className:"detail-section",children:[(0,s.jsx)("div",{className:"detail-section-label",children:"Recent Failures"}),(0,s.jsxs)("table",{className:"station-table",children:[(0,s.jsx)("thead",{children:(0,s.jsxs)("tr",{children:[(0,s.jsx)("th",{children:"Status"}),(0,s.jsx)("th",{children:"Signal"}),(0,s.jsx)("th",{children:"Error"}),(0,s.jsx)("th",{children:"Time"})]})}),(0,s.jsx)("tbody",{children:g.map((e,a)=>{var n;return(0,s.jsxs)("tr",{className:"reveal-item clickable-row",style:{animationDelay:"".concat(40*a,"ms")},onClick:()=>t.push("/runs/".concat(e.id)),children:[(0,s.jsx)("td",{children:(0,s.jsx)(u.W,{status:e.status})}),(0,s.jsx)("td",{children:(0,s.jsx)(c(),{href:"/signals/".concat(e.signalName),className:"mono",onClick:e=>e.stopPropagation(),children:e.signalName})}),(0,s.jsx)("td",{style:{color:"var(--rust)",fontSize:"0.8125rem",fontFamily:"var(--font-mono)",maxWidth:"300px",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},title:null!=(n=e.error)?n:"",children:e.error?e.error.length>60?e.error.slice(0,60)+"...":e.error:"-"}),(0,s.jsx)("td",{children:(0,s.jsx)(h.s,{date:e.createdAt})})]},e.id)})})]})]}),a.length>0&&(0,s.jsxs)("div",{className:"detail-section",children:[(0,s.jsx)("div",{className:"detail-section-label",children:"Live Activity"}),(0,s.jsx)("div",{style:{marginTop:"0.75rem"},children:a.slice(0,20).map((e,a)=>{var n,l,c,r,i,o,d;let u=null!=(r=null!=(c=null==(n=e.data.run)?void 0:n.signalName)?c:e.data.signalName)?r:null,h=null!=(o=null!=(i=null==(l=e.data.run)?void 0:l.id)?i:e.data.runId)?o:null,m=null!=(d=e.data.broadcastRunId)?d:null,g=m?"/broadcasts/".concat(m):h?"/runs/".concat(h):null;return(0,s.jsxs)("div",{className:"reveal-item".concat(g?" activity-row":""),style:{animationDelay:"".concat(40*a,"ms"),fontFamily:"var(--font-mono)",fontSize:"0.75rem",color:"var(--muted)",padding:"0.375rem 0.5rem",borderBottom:"1px solid var(--concrete-dark)",display:"flex",gap:"0.75rem",alignItems:"baseline"},onClick:g?()=>t.push(g):void 0,children:[(0,s.jsx)("span",{style:{color:"var(--rust)",minWidth:"120px"},children:e.type}),u&&(0,s.jsx)("span",{style:{color:"var(--charcoal)"},children:String(u)}),(0,s.jsx)("span",{style:{marginLeft:"auto"},children:new Date(e.timestamp).toLocaleTimeString()})]},"".concat(e.timestamp,"-").concat(a))})})]})]})}},9275:(e,t,a)=>{"use strict";a.d(t,{StationProvider:()=>r,q:()=>c});var s=a(8111),n=a(5271);let l=(0,n.createContext)({connected:!1,events:[]});function c(){return(0,n.useContext)(l)}function r(e){let{children:t}=e,[a,c]=(0,n.useState)([]),{connected:r}=function(e){let[t,a]=(0,n.useState)(!1),s=(0,n.useRef)(e);return s.current=e,(0,n.useEffect)(()=>{let e=null,t=null,n=0,l=!1;return!function c(){if(l)return;let r="https:"===window.location.protocol?"wss:":"ws:";(e=new WebSocket("".concat(r,"//").concat(window.location.host,"/api/events"))).onopen=()=>{a(!0),n=0},e.onmessage=e=>{try{let t=JSON.parse(e.data);s.current(t)}catch(e){console.error("Failed to parse WebSocket message:",e)}},e.onclose=()=>{if(a(!1),!l){let e=Math.min(1e3*Math.pow(2,n),1e4);n++,t=setTimeout(c,e)}},e.onerror=()=>{null==e||e.close()}}(),()=>{l=!0,t&&clearTimeout(t),null==e||e.close()}},[]),{connected:t}}((0,n.useCallback)(e=>{c(t=>[e,...t].slice(0,100))},[]));return(0,s.jsx)(l.Provider,{value:{connected:r,events:a},children:t})}}},e=>{e.O(0,[580,814,743,358],()=>e(e.s=414)),_N_E=e.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[293],{593:(e,t,a)=>{"use strict";async function n(e,t){let a=await fetch("".concat("","/api").concat(e),{...t,credentials:"include",headers:{"Content-Type":"application/json",...null==t?void 0:t.headers}});if(!a.ok)throw Error((await a.json().catch(()=>({error:"unknown",message:"Request failed."}))).message);return a.json()}async function s(){let e=await fetch("".concat("","/api/auth/check"),{credentials:"include"});return(await e.json()).data}async function l(e,t){return(await fetch("".concat("","/api/auth/login"),{method:"POST",credentials:"include",headers:{"Content-Type":"application/json"},body:JSON.stringify({username:e,password:t})})).ok}async function r(){await fetch("".concat("","/api/auth/logout"),{method:"POST",credentials:"include"})}function i(){return{getHealth:()=>n("/health"),getSignals:()=>n("/signals"),getScheduledSignals:()=>n("/signals/scheduled"),getSignal:e=>n("/signals/".concat(encodeURIComponent(e))),getSignalRuns:e=>n("/signals/".concat(encodeURIComponent(e),"/runs")),triggerSignal:(e,t)=>n("/signals/".concat(encodeURIComponent(e),"/trigger"),{method:"POST",body:JSON.stringify({input:null!=t?t:{}})}),getRuns:e=>{let t=new URLSearchParams;(null==e?void 0:e.status)&&t.set("status",e.status),(null==e?void 0:e.signalName)&&t.set("signalName",e.signalName);let a=t.toString();return n("/runs".concat(a?"?".concat(a):""))},getRunStats:()=>n("/runs/stats"),getRun:e=>n("/runs/".concat(e)),getRunSteps:e=>n("/runs/".concat(e,"/steps")),getRunLogs:e=>n("/runs/".concat(e,"/logs")),cancelRun:e=>n("/runs/".concat(e,"/cancel"),{method:"POST"}),getBroadcasts:()=>n("/broadcasts"),getBroadcast:e=>n("/broadcasts/".concat(encodeURIComponent(e))),triggerBroadcast:(e,t)=>n("/broadcasts/".concat(encodeURIComponent(e),"/trigger"),{method:"POST",body:JSON.stringify({input:null!=t?t:{}})}),getBroadcastRuns:e=>n("/broadcasts/".concat(encodeURIComponent(e),"/runs")),getBroadcastRun:e=>n("/broadcast-runs/".concat(e)),getBroadcastRunNodes:e=>n("/broadcast-runs/".concat(e,"/nodes")),getBroadcastRunLogs:e=>n("/broadcast-runs/".concat(e,"/logs")),cancelBroadcastRun:e=>n("/broadcast-runs/".concat(e,"/cancel"),{method:"POST"})}}a.d(t,{T5:()=>s,gf:()=>i,iD:()=>l,ri:()=>r})},1253:(e,t,a)=>{"use strict";a.d(t,{W:()=>s});var n=a(8111);function s(e){let{status:t}=e;return(0,n.jsxs)("span",{className:"status-badge status-badge--".concat(t),children:[(0,n.jsx)("span",{className:"status-badge-dot"}),t]})}},1794:(e,t,a)=>{"use strict";a.d(t,{p:()=>l});var n=a(8111),s=a(5271);function l(e){let t,{data:a,label:l}=e,[r,i]=(0,s.useState)(!0),[c,o]=(0,s.useState)(!0),[d,u]=(0,s.useState)("copy"),m=(0,s.useCallback)(()=>{if(!a)return;let e=function(e){try{let t=JSON.parse(e);return JSON.stringify(t,null,2)}catch(t){return e}}(a);navigator.clipboard.writeText(e).then(()=>{u("copied"),setTimeout(()=>u("copy"),1500)}).catch(()=>{u("failed"),setTimeout(()=>u("copy"),1500)})},[a]);if(!a)return null;try{t=JSON.parse(a)}catch(e){t=a}let p="object"==typeof t&&null!==t&&JSON.stringify(t).length>200;return(0,n.jsxs)("div",{children:[l&&(0,n.jsxs)("button",{onClick:()=>i(!r),style:{background:"none",border:"none",cursor:"pointer",fontFamily:"var(--font-mono)",fontSize:"0.75rem",color:"var(--muted)",padding:"0.25rem 0",textTransform:"uppercase",letterSpacing:"0.1em"},children:[r?"- ":"+ ",l]}),r&&(0,n.jsxs)("pre",{className:"json-viewer",style:{position:"relative"},children:[(0,n.jsx)("button",{className:"copy-btn",onClick:m,type:"button",children:d}),p&&(0,n.jsx)("button",{onClick:()=>o(!c),style:{position:"absolute",top:"0.5rem",right:"4rem",background:"var(--wire)",border:"none",borderRadius:"3px",padding:"0.25rem 0.5rem",fontFamily:"var(--font-mono)",fontSize:"0.625rem",color:"var(--muted-light)",cursor:"pointer",textTransform:"uppercase",letterSpacing:"0.1em"},type:"button",children:c?"collapse":"expand"}),function e(t,a,s){if(null===t)return(0,n.jsx)("span",{className:"json-null",children:"null"});if("boolean"==typeof t)return(0,n.jsx)("span",{className:"json-boolean",children:String(t)});if("number"==typeof t)return(0,n.jsx)("span",{className:"json-number",children:t});if("string"==typeof t)return(0,n.jsxs)("span",{className:"json-string",children:['"',t,'"']});if(Array.isArray(t))return 0===t.length?(0,n.jsx)("span",{children:"[]"}):!s&&a>3?(0,n.jsxs)("span",{children:["[",t.length," items]"]}):(0,n.jsxs)("span",{children:["[\n",t.map((l,r)=>(0,n.jsxs)("span",{children:[" ".repeat(a+1),e(l,a+1,s),r<t.length-1?",":"","\n"]},r))," ".repeat(a),"]"]});if("object"==typeof t){let l=Object.entries(t);return 0===l.length?(0,n.jsx)("span",{children:"{}"}):!s&&a>3?(0,n.jsx)("span",{children:"{".concat(l.length," keys}")}):(0,n.jsxs)("span",{children:["{\n",l.map((t,r)=>{let[i,c]=t;return(0,n.jsxs)("span",{children:[" ".repeat(a+1),(0,n.jsxs)("span",{className:"json-key",children:['"',i,'"']}),": ",e(c,a+1,s),r<l.length-1?",":"","\n"]},i)})," ".repeat(a),"}"]})}return(0,n.jsx)("span",{children:String(t)})}(t,0,c)]})]})}},3611:(e,t,a)=>{Promise.resolve().then(a.bind(a,9103))},7646:(e,t,a)=>{"use strict";a.d(t,{Hc:()=>s,iQ:()=>r,rT:()=>l});var n=a(5271);let s=(0,n.createContext)({segments:[],activeSection:null,setSegments:()=>{},setActiveSection:()=>{}});function l(e,t){let a=(0,n.useContext)(s);(0,n.useEffect)(()=>{a.setSegments(e),a.setActiveSection(t)},[JSON.stringify(e),t])}function r(){return(0,n.useContext)(s)}},9103:(e,t,a)=>{"use strict";a.d(t,{RunDetail:()=>x});var n=a(8111),s=a(5271),l=a(4736),r=a(5935),i=a.n(r),c=a(593),o=a(9275),d=a(7646),u=a(1253),m=a(1794);function p(e){let{step:t}=e,[a,l]=(0,s.useState)(!1),[r,i]=(0,s.useState)(!1),c=!!t.input,o=!!t.output,d=!!t.error;return c||o||d?(0,n.jsxs)("div",{style:{marginTop:"0.5rem"},children:[d&&(0,n.jsx)("div",{className:"error-block",style:{marginBottom:c||o?"0.5rem":0},children:t.error}),c&&(0,n.jsxs)("div",{style:{marginBottom:o?"0.375rem":0},children:[(0,n.jsxs)("button",{onClick:()=>l(!a),style:{background:"none",border:"none",cursor:"pointer",fontFamily:"var(--font-mono)",fontSize:"0.6875rem",color:"var(--muted)",padding:"0.125rem 0",textTransform:"uppercase",letterSpacing:"0.1em"},children:[a?"- ":"+ ","input"]}),a&&(0,n.jsx)(m.p,{data:t.input})]}),o&&(0,n.jsxs)("div",{children:[(0,n.jsxs)("button",{onClick:()=>i(!r),style:{background:"none",border:"none",cursor:"pointer",fontFamily:"var(--font-mono)",fontSize:"0.6875rem",color:"var(--muted)",padding:"0.125rem 0",textTransform:"uppercase",letterSpacing:"0.1em"},children:[r?"- ":"+ ","output"]}),r&&(0,n.jsx)(m.p,{data:t.output})]})]}):null}function g(e){let{steps:t}=e;return 0===t.length?null:(0,n.jsx)("div",{className:"step-timeline",children:t.map((e,t)=>{let a=function(e,t){if(!e)return"";let a=new Date(e).getTime(),n=(t?new Date(t).getTime():Date.now())-a;return n<1e3?"".concat(n,"ms"):n<6e4?"".concat((n/1e3).toFixed(1),"s"):"".concat((n/6e4).toFixed(1),"m")}(e.startedAt,e.completedAt);return(0,n.jsxs)("div",{className:"step-timeline-item reveal-item",style:{animationDelay:"".concat(80*t,"ms")},children:[(0,n.jsx)("div",{className:"step-timeline-dot step-timeline-dot--".concat(e.status)}),(0,n.jsxs)("div",{className:"step-timeline-name",children:[e.name,a&&(0,n.jsx)("span",{style:{marginLeft:"0.5rem",fontFamily:"var(--font-mono)",fontSize:"0.6875rem",color:"var(--muted)"},children:a})]}),(0,n.jsxs)("div",{className:"step-timeline-meta",children:[e.status,e.startedAt&&(0,n.jsx)("span",{style:{marginLeft:"0.375rem",color:"var(--muted-light)"},children:new Date(e.startedAt).toLocaleTimeString()})]}),(0,n.jsx)(p,{step:e})]},e.id)})})}function h(e){return e<1e3?"".concat(e,"ms"):e<6e4?"".concat((e/1e3).toFixed(1),"s"):e<36e5?"".concat((e/6e4).toFixed(1),"m"):"".concat((e/36e5).toFixed(1),"h")}function x(){var e,t;let a=(0,l.useParams)().id,r=(0,c.gf)(),{events:p}=(0,o.q)(),[x,f]=(0,s.useState)(null),[j,v]=(0,s.useState)([]),[N,b]=(0,s.useState)([]),[S,y]=(0,s.useState)(!0),[R,w]=(0,s.useState)(!1),[T,C]=(0,s.useState)(!1),k=(0,s.useRef)(null);async function O(){w(!0);try{await r.cancelRun(a);let e=await r.getRun(a);f(e.data)}catch(e){e instanceof Error&&console.error("Cancel failed:",e.message)}w(!1)}if((0,d.rT)(x?[{label:"Signals",href:"/signals"},{label:x.signalName,href:"/signals/".concat(encodeURIComponent(x.signalName))},{label:"Run ".concat(a.slice(0,8))}]:[{label:"Signals",href:"/signals"},{label:"Run ".concat(a.slice(0,8))}],"signals"),(0,s.useEffect)(()=>{!async function(){try{let[e,t,n]=await Promise.all([r.getRun(a),r.getRunSteps(a),r.getRunLogs(a)]);f(e.data),v(t.data),b(n.data)}catch(e){e instanceof Error&&console.error("Failed to load run:",e.message)}y(!1)}()},[a]),(0,s.useEffect)(()=>{var e,t,n;if(0===p.length)return;let s=p[0];(null!=(n=null==(e=s.data.run)?void 0:e.id)?n:null==(t=s.data)?void 0:t.runId)===a&&("log:output"===s.type?b(e=>{var t;return[...e,{runId:s.data.runId,signalName:s.data.signalName,level:s.data.level,message:s.data.message,timestamp:null!=(t=s.data.timestamp)?t:s.timestamp}]}):(r.getRun(a).then(e=>f(e.data)).catch(e=>console.error("Failed to refresh run:",e)),r.getRunSteps(a).then(e=>v(e.data)).catch(e=>console.error("Failed to refresh steps:",e))))},[p.length,a]),(0,s.useEffect)(()=>{var e;null==(e=k.current)||e.scrollIntoView({behavior:"smooth"})},[N.length]),S)return(0,n.jsxs)("div",{children:[(0,n.jsx)("h1",{className:"page-title",children:"Run"}),(0,n.jsx)("div",{className:"loading-bar",children:(0,n.jsx)("div",{className:"loading-bar-fill"})})]});if(!x)return(0,n.jsxs)("div",{children:[(0,n.jsx)("h1",{className:"page-title",children:"Run"}),(0,n.jsx)("div",{className:"empty-state",children:(0,n.jsx)("p",{className:"empty-state-text",children:"Run not found."})})]});let A="pending"===x.status||"running"===x.status;return(0,n.jsxs)("div",{children:[(0,n.jsxs)("div",{className:"page-header",children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"0.75rem"},children:[(0,n.jsx)(u.W,{status:x.status}),(0,n.jsx)(i(),{href:"/signals/".concat(x.signalName),className:"page-title",style:{marginBottom:0,textDecoration:"none"},children:x.signalName})]}),(0,n.jsx)("div",{className:"page-header-actions",children:A&&(0,n.jsx)("button",{className:"btn btn--danger",onClick:O,disabled:R,children:R?"Cancelling...":"Cancel"})})]}),(0,n.jsxs)("div",{className:"detail-section",children:[(0,n.jsx)("div",{className:"detail-section-label",children:"Metadata"}),(0,n.jsxs)("div",{className:"detail-grid",children:[(0,n.jsx)("span",{className:"detail-label",children:"ID"}),(0,n.jsxs)("span",{className:"detail-value mono",style:{display:"flex",alignItems:"center",gap:"0.5rem"},children:[x.id,(0,n.jsx)("button",{onClick:function(){navigator.clipboard.writeText(x.id).then(()=>{C(!0),setTimeout(()=>C(!1),1500)}).catch(()=>{})},className:"btn btn--sm",style:{fontSize:"0.625rem",padding:"0.125rem 0.375rem",lineHeight:1.2},children:T?"copied":"copy"})]}),(0,n.jsx)("span",{className:"detail-label",children:"Signal"}),(0,n.jsx)("span",{className:"detail-value",children:(0,n.jsx)(i(),{href:"/signals/".concat(x.signalName),className:"mono meta-value--link",children:x.signalName})}),(0,n.jsx)("span",{className:"detail-label",children:"Kind"}),(0,n.jsx)("span",{className:"detail-value",children:x.kind}),(0,n.jsx)("span",{className:"detail-label",children:"Attempts"}),(0,n.jsxs)("span",{className:"detail-value",children:[x.attempts," of ",x.maxAttempts]}),(0,n.jsx)("span",{className:"detail-label",children:"Timeout"}),(0,n.jsx)("span",{className:"detail-value mono",children:x.timeout?h(x.timeout):"—"}),(0,n.jsx)("span",{className:"detail-label",children:"Duration"}),(0,n.jsx)("span",{className:"detail-value mono",children:function(e,t){if(!e)return"—";let a=new Date(e).getTime();return h((t?new Date(t).getTime():Date.now())-a)}(x.startedAt,x.completedAt)}),(0,n.jsx)("span",{className:"detail-label",children:"Created"}),(0,n.jsx)("span",{className:"detail-value mono",children:x.createdAt}),(0,n.jsx)("span",{className:"detail-label",children:"Started"}),(0,n.jsx)("span",{className:"detail-value mono",children:null!=(e=x.startedAt)?e:"—"}),(0,n.jsx)("span",{className:"detail-label",children:"Completed"}),(0,n.jsx)("span",{className:"detail-value mono",children:null!=(t=x.completedAt)?t:"—"})]})]}),x.error&&(0,n.jsxs)("div",{className:"detail-section",children:[(0,n.jsx)("div",{className:"detail-section-label",children:"Error"}),(0,n.jsx)("div",{className:"error-block",children:x.error})]}),(0,n.jsxs)("div",{className:"detail-section",children:[(0,n.jsx)("div",{className:"detail-section-label",children:"Input"}),(0,n.jsx)(m.p,{data:x.input})]}),x.output&&(0,n.jsxs)("div",{className:"detail-section",children:[(0,n.jsx)("div",{className:"detail-section-label",children:"Output"}),(0,n.jsx)(m.p,{data:x.output})]}),j.length>0&&(0,n.jsxs)("div",{className:"detail-section",children:[(0,n.jsx)("div",{className:"detail-section-label",children:"Steps"}),(0,n.jsx)(g,{steps:j})]}),(0,n.jsxs)("div",{className:"detail-section",children:[(0,n.jsx)("div",{className:"detail-section-label",children:"Logs"}),(0,n.jsxs)("div",{className:"log-container",children:[0===N.length?(0,n.jsx)("div",{style:{padding:"1rem",color:"var(--muted)",fontFamily:"var(--font-mono)",fontSize:"0.75rem"},children:"pending"===x.status?"Waiting for execution...":"No log output captured."}):N.map((e,t)=>(0,n.jsxs)("div",{className:"log-line",style:{color:"stderr"===e.level?"var(--rust)":"var(--charcoal)"},children:[(0,n.jsx)("span",{className:"log-timestamp",children:new Date(e.timestamp).toLocaleTimeString()}),(0,n.jsx)("span",{className:"log-level","data-level":e.level,children:"stderr"===e.level?"ERR":"OUT"}),(0,n.jsx)("span",{className:"log-message",children:e.message})]},t)),(0,n.jsx)("div",{ref:k})]})]})]})}},9275:(e,t,a)=>{"use strict";a.d(t,{StationProvider:()=>i,q:()=>r});var n=a(8111),s=a(5271);let l=(0,s.createContext)({connected:!1,events:[]});function r(){return(0,s.useContext)(l)}function i(e){let{children:t}=e,[a,r]=(0,s.useState)([]),{connected:i}=function(e){let[t,a]=(0,s.useState)(!1),n=(0,s.useRef)(e);return n.current=e,(0,s.useEffect)(()=>{let e=null,t=null,s=0,l=!1;return!function r(){if(l)return;let i="https:"===window.location.protocol?"wss:":"ws:";(e=new WebSocket("".concat(i,"//").concat(window.location.host,"/api/events"))).onopen=()=>{a(!0),s=0},e.onmessage=e=>{try{let t=JSON.parse(e.data);n.current(t)}catch(e){console.error("Failed to parse WebSocket message:",e)}},e.onclose=()=>{if(a(!1),!l){let e=Math.min(1e3*Math.pow(2,s),1e4);s++,t=setTimeout(r,e)}},e.onerror=()=>{null==e||e.close()}}(),()=>{l=!0,t&&clearTimeout(t),null==e||e.close()}},[]),{connected:t}}((0,s.useCallback)(e=>{r(t=>[e,...t].slice(0,100))},[]));return(0,n.jsx)(l.Provider,{value:{connected:i,events:a},children:t})}}},e=>{e.O(0,[580,814,743,358],()=>e(e.s=3611)),_N_E=e.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[80],{593:(e,t,a)=>{"use strict";async function n(e,t){let a=await fetch("".concat("","/api").concat(e),{...t,credentials:"include",headers:{"Content-Type":"application/json",...null==t?void 0:t.headers}});if(!a.ok)throw Error((await a.json().catch(()=>({error:"unknown",message:"Request failed."}))).message);return a.json()}async function s(){let e=await fetch("".concat("","/api/auth/check"),{credentials:"include"});return(await e.json()).data}async function r(e,t){return(await fetch("".concat("","/api/auth/login"),{method:"POST",credentials:"include",headers:{"Content-Type":"application/json"},body:JSON.stringify({username:e,password:t})})).ok}async function c(){await fetch("".concat("","/api/auth/logout"),{method:"POST",credentials:"include"})}function i(){return{getHealth:()=>n("/health"),getSignals:()=>n("/signals"),getScheduledSignals:()=>n("/signals/scheduled"),getSignal:e=>n("/signals/".concat(encodeURIComponent(e))),getSignalRuns:e=>n("/signals/".concat(encodeURIComponent(e),"/runs")),triggerSignal:(e,t)=>n("/signals/".concat(encodeURIComponent(e),"/trigger"),{method:"POST",body:JSON.stringify({input:null!=t?t:{}})}),getRuns:e=>{let t=new URLSearchParams;(null==e?void 0:e.status)&&t.set("status",e.status),(null==e?void 0:e.signalName)&&t.set("signalName",e.signalName);let a=t.toString();return n("/runs".concat(a?"?".concat(a):""))},getRunStats:()=>n("/runs/stats"),getRun:e=>n("/runs/".concat(e)),getRunSteps:e=>n("/runs/".concat(e,"/steps")),getRunLogs:e=>n("/runs/".concat(e,"/logs")),cancelRun:e=>n("/runs/".concat(e,"/cancel"),{method:"POST"}),getBroadcasts:()=>n("/broadcasts"),getBroadcast:e=>n("/broadcasts/".concat(encodeURIComponent(e))),triggerBroadcast:(e,t)=>n("/broadcasts/".concat(encodeURIComponent(e),"/trigger"),{method:"POST",body:JSON.stringify({input:null!=t?t:{}})}),getBroadcastRuns:e=>n("/broadcasts/".concat(encodeURIComponent(e),"/runs")),getBroadcastRun:e=>n("/broadcast-runs/".concat(e)),getBroadcastRunNodes:e=>n("/broadcast-runs/".concat(e,"/nodes")),getBroadcastRunLogs:e=>n("/broadcast-runs/".concat(e,"/logs")),cancelBroadcastRun:e=>n("/broadcast-runs/".concat(e,"/cancel"),{method:"POST"})}}a.d(t,{T5:()=>s,gf:()=>i,iD:()=>r,ri:()=>c})},1253:(e,t,a)=>{"use strict";a.d(t,{W:()=>s});var n=a(8111);function s(e){let{status:t}=e;return(0,n.jsxs)("span",{className:"status-badge status-badge--".concat(t),children:[(0,n.jsx)("span",{className:"status-badge-dot"}),t]})}},1489:(e,t,a)=>{"use strict";a.d(t,{s:()=>c});var n=a(8111),s=a(5271);function r(e){let t=Date.now()-new Date(e).getTime();if(t<0)return"just now";let a=Math.floor(t/1e3);if(a<5)return"just now";if(a<60)return"".concat(a,"s ago");let n=Math.floor(a/60);if(n<60)return"".concat(n,"m ago");let s=Math.floor(n/60);if(s<24)return"".concat(s,"h ago");let r=Math.floor(s/24);return"".concat(r,"d ago")}function c(e){let{date:t}=e,[a,c]=(0,s.useState)(()=>r(t));return(0,s.useEffect)(()=>{let e=setInterval(()=>{c(r(t))},5e3);return()=>clearInterval(e)},[t]),(0,n.jsx)("span",{className:"mono",title:new Date(t).toLocaleString(),style:{fontSize:"0.8125rem",color:"var(--muted)"},children:a})}},2638:(e,t,a)=>{"use strict";a.d(t,{SignalDetail:()=>p});var n=a(8111),s=a(5271),r=a(4736),c=a(593),i=a(9275),l=a(7646),o=a(1253),u=a(1489);function d(e){let{runs:t}=e,a=(0,r.useRouter)();return 0===t.length?(0,n.jsx)("div",{className:"empty-state",children:(0,n.jsx)("p",{className:"empty-state-text",children:"No runs recorded."})}):(0,n.jsxs)("table",{className:"station-table",children:[(0,n.jsx)("thead",{children:(0,n.jsxs)("tr",{children:[(0,n.jsx)("th",{children:"Status"}),(0,n.jsx)("th",{children:"Signal"}),(0,n.jsx)("th",{children:"Run ID"}),(0,n.jsx)("th",{children:"Duration"}),(0,n.jsx)("th",{children:"Created"}),(0,n.jsx)("th",{children:"Error"})]})}),(0,n.jsx)("tbody",{children:t.map((e,t)=>{var s,r;return(0,n.jsxs)("tr",{className:"reveal-item clickable-row",style:{animationDelay:"".concat(40*t,"ms")},onClick:()=>a.push("/runs/".concat(e.id)),children:[(0,n.jsx)("td",{children:(0,n.jsx)(o.W,{status:e.status})}),(0,n.jsx)("td",{className:"mono",children:e.signalName}),(0,n.jsx)("td",{className:"mono truncate",title:e.id,children:e.id.slice(0,8)}),(0,n.jsx)("td",{className:"mono",children:function(e,t){if(!e)return"-";let a=new Date(e).getTime(),n=(t?new Date(t).getTime():Date.now())-a;return n<1e3?"".concat(n,"ms"):n<6e4?"".concat((n/1e3).toFixed(1),"s"):"".concat((n/6e4).toFixed(1),"m")}(e.startedAt,e.completedAt)}),(0,n.jsx)("td",{children:(0,n.jsx)(u.s,{date:e.createdAt})}),(0,n.jsx)("td",{style:{color:e.error?"var(--rust)":"var(--muted)",fontFamily:"var(--font-mono)",fontSize:"0.75rem",maxWidth:"200px",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},title:null!=(s=e.error)?s:void 0,children:(r=e.error,r?r.length<=60?r:r.slice(0,60)+"…":"-")})]},e.id)})})]})}var m=a(3055);function h(e){if("object"===e.type&&e.properties){let t=Object.entries(e.properties).map(e=>{let[t,a]=e;return"".concat(t,": ").concat(a.type).concat(a.required?"":"?")}).join(", ");return"{ ".concat(t," }")}return"array"===e.type&&e.items?"".concat(h(e.items),"[]"):"enum"===e.type&&e.values?e.values.map(e=>'"'.concat(e,'"')).join(" | "):e.type}let g=["all","completed","failed","running","pending"];function p(){var e,t,a;let o=(0,r.useParams)().name,u=decodeURIComponent(o),p=(0,c.gf)(),{events:f}=(0,i.q)(),[x,j]=(0,s.useState)(null),[v,N]=(0,s.useState)([]),[S,y]=(0,s.useState)(!0),[b,w]=(0,s.useState)(!1),[C,R]=(0,s.useState)("{}"),[T,O]=(0,s.useState)("all");(0,l.rT)([{label:"Signals",href:"/signals"},{label:u}],"signals");let k=(0,s.useCallback)(()=>{p.getSignalRuns(o).then(e=>N(e.data)).catch(e=>console.error("Failed to refresh runs:",e))},[o]);async function P(){w(!0);try{let e=JSON.parse(C);await p.triggerSignal(o,e),R("{}"),setTimeout(k,300)}catch(e){e instanceof Error&&console.error("Trigger failed:",e.message)}w(!1)}if((0,s.useEffect)(()=>{!async function(){try{let[e,t]=await Promise.all([p.getSignal(o),p.getSignalRuns(o)]);j(e.data),N(t.data)}catch(e){e instanceof Error&&console.error("Failed to load signal:",e.message)}y(!1)}()},[o]),(0,s.useEffect)(()=>{if(0===f.length)return;let e=f[0];if(e.type.startsWith("run:")){var t,a;(null!=(a=null==(t=e.data.run)?void 0:t.signalName)?a:e.data.signalName)===u&&k()}},[f.length,u,k]),S)return(0,n.jsxs)("div",{children:[(0,n.jsx)("h1",{className:"page-title",children:u}),(0,n.jsx)("div",{className:"loading-bar",children:(0,n.jsx)("div",{className:"loading-bar-fill"})})]});if(!x)return(0,n.jsxs)("div",{children:[(0,n.jsx)("h1",{className:"page-title",children:u}),(0,n.jsx)("div",{className:"empty-state",children:(0,n.jsx)("p",{className:"empty-state-text",children:"Signal not found."})})]});let E=null!==x.inputSchema||null!==x.outputSchema,D="all"===T?v:v.filter(e=>e.status===T);return(0,n.jsxs)("div",{children:[(0,n.jsxs)("div",{className:"page-header",children:[(0,n.jsx)("h1",{className:"page-title",style:{marginBottom:0},children:u}),(0,n.jsx)("div",{className:"page-header-actions",children:(0,n.jsx)("button",{className:"btn btn--primary",onClick:P,disabled:b,children:b?"Dispatching...":"Trigger"})})]}),(0,n.jsxs)("div",{className:"detail-section",children:[(0,n.jsx)("div",{className:"detail-section-label",children:"Configuration"}),(0,n.jsxs)("div",{className:"config-grid",children:[(0,n.jsxs)("div",{className:"config-item",children:[(0,n.jsx)("span",{className:"config-item-label",children:"Schedule"}),(0,n.jsx)("span",{className:"config-item-value",children:null!=(e=x.interval)?e:"Manual trigger"})]}),(0,n.jsxs)("div",{className:"config-item",children:[(0,n.jsx)("span",{className:"config-item-label",children:"Timeout"}),(0,n.jsx)("span",{className:"config-item-value",children:(a=x.timeout)<1e3?"".concat(a,"ms"):a<6e4?"".concat((a/1e3).toFixed(0),"s"):a<36e5?"".concat((a/6e4).toFixed(0),"m"):"".concat((a/36e5).toFixed(0),"h")})]}),(0,n.jsxs)("div",{className:"config-item",children:[(0,n.jsx)("span",{className:"config-item-label",children:"Max Attempts"}),(0,n.jsx)("span",{className:"config-item-value",children:x.maxAttempts})]}),(0,n.jsxs)("div",{className:"config-item",children:[(0,n.jsx)("span",{className:"config-item-label",children:"Max Concurrency"}),(0,n.jsx)("span",{className:"config-item-value",children:null!=(t=x.maxConcurrency)?t:"—"})]}),(0,n.jsxs)("div",{className:"config-item",children:[(0,n.jsx)("span",{className:"config-item-label",children:"Steps"}),(0,n.jsx)("span",{className:"config-item-value",children:x.hasSteps?x.stepNames.join(", "):"Single handler"})]})]})]}),E&&(0,n.jsxs)("div",{className:"detail-section",children:[(0,n.jsx)("div",{className:"detail-section-label",children:"Schema"}),(0,n.jsxs)("div",{className:"schema-pair",children:[(0,n.jsxs)("div",{children:[(0,n.jsx)("div",{style:{fontFamily:"var(--font-mono)",fontSize:"0.6875rem",textTransform:"uppercase",letterSpacing:"0.08em",color:"var(--muted)",marginBottom:"0.5rem"},children:"Input"}),x.inputSchema?(0,n.jsx)("pre",{className:"json-viewer",style:{fontSize:"0.75rem"},children:h(x.inputSchema)}):(0,n.jsx)("span",{style:{color:"var(--muted)",fontSize:"0.8125rem"},children:"None"})]}),(0,n.jsxs)("div",{children:[(0,n.jsx)("div",{style:{fontFamily:"var(--font-mono)",fontSize:"0.6875rem",textTransform:"uppercase",letterSpacing:"0.08em",color:"var(--muted)",marginBottom:"0.5rem"},children:"Output"}),x.outputSchema?(0,n.jsx)("pre",{className:"json-viewer",style:{fontSize:"0.75rem"},children:h(x.outputSchema)}):(0,n.jsx)("span",{style:{color:"var(--muted)",fontSize:"0.8125rem"},children:"None"})]})]})]}),(0,n.jsxs)("div",{className:"detail-section",children:[(0,n.jsx)("div",{className:"detail-section-label",children:"Trigger"}),(0,n.jsx)(m.q,{schema:x.inputSchema,value:C,onChange:R}),(0,n.jsx)("div",{style:{marginTop:"0.5rem"},children:(0,n.jsx)("button",{className:"btn btn--primary",onClick:P,disabled:b,children:b?"Dispatching...":"Dispatch"})})]}),(0,n.jsxs)("div",{className:"detail-section",children:[(0,n.jsx)("div",{className:"detail-section-label",children:"Run History"}),(0,n.jsx)("div",{className:"filter-bar",children:g.map(e=>(0,n.jsx)("button",{className:"filter-btn".concat(T===e?" filter-btn--active":""),onClick:()=>O(e),children:e.charAt(0).toUpperCase()+e.slice(1)},e))}),(0,n.jsx)(d,{runs:D})]})]})}},3055:(e,t,a)=>{"use strict";a.d(t,{q:()=>c});var n=a(8111),s=a(5271);function r(e){let{schema:t}=e;if("object"!==t.type||!t.properties)return null;let a=Object.entries(t.properties);return 0===a.length?null:(0,n.jsxs)("div",{className:"schema-ref",children:[(0,n.jsx)("div",{className:"schema-ref-title",children:"Expected Input"}),a.map(e=>{let[t,a]=e;return(0,n.jsxs)("div",{className:"schema-field",children:[(0,n.jsx)("span",{className:"schema-field-name",children:t}),(0,n.jsx)("span",{className:"schema-field-type".concat(a.required?"":" schema-field-type--optional"),children:a.type})]},t)})]})}function c(e){let{schema:t,value:a,onChange:c}=e,[i,l]=(0,s.useState)(null),[o,u]=(0,s.useState)(!1);return(0,s.useEffect)(()=>{if(!o){if(t&&"{}"===a){let e=JSON.stringify(function e(t){switch(t.type){case"string":return"";case"number":case"integer":return 0;case"boolean":return!1;case"array":return[];case"enum":if(t.values&&t.values.length>0)return t.values[0];return"";case"object":{if(!t.properties)return{};let a={};for(let[n,s]of Object.entries(t.properties))a[n]=e(s);return a}default:return null}}(t),null,2);"{}"!==e&&c(e)}u(!0)}},[t,a,c,o]),(0,n.jsxs)("div",{children:[t&&"object"===t.type&&t.properties&&(0,n.jsx)(r,{schema:t}),(0,n.jsx)("textarea",{className:"input-textarea",value:a,onChange:e=>(function(e){if(c(e),""===e.trim())return void l(null);try{JSON.parse(e),l(null)}catch(e){e instanceof SyntaxError?l(e.message):l("Invalid JSON")}})(e.target.value),rows:6,spellCheck:!1,placeholder:"{}"}),i&&(0,n.jsx)("div",{className:"json-parse-error",children:i})]})}},4736:(e,t,a)=>{"use strict";var n=a(1504);a.o(n,"useParams")&&a.d(t,{useParams:function(){return n.useParams}}),a.o(n,"usePathname")&&a.d(t,{usePathname:function(){return n.usePathname}}),a.o(n,"useRouter")&&a.d(t,{useRouter:function(){return n.useRouter}})},7646:(e,t,a)=>{"use strict";a.d(t,{Hc:()=>s,iQ:()=>c,rT:()=>r});var n=a(5271);let s=(0,n.createContext)({segments:[],activeSection:null,setSegments:()=>{},setActiveSection:()=>{}});function r(e,t){let a=(0,n.useContext)(s);(0,n.useEffect)(()=>{a.setSegments(e),a.setActiveSection(t)},[JSON.stringify(e),t])}function c(){return(0,n.useContext)(s)}},9275:(e,t,a)=>{"use strict";a.d(t,{StationProvider:()=>i,q:()=>c});var n=a(8111),s=a(5271);let r=(0,s.createContext)({connected:!1,events:[]});function c(){return(0,s.useContext)(r)}function i(e){let{children:t}=e,[a,c]=(0,s.useState)([]),{connected:i}=function(e){let[t,a]=(0,s.useState)(!1),n=(0,s.useRef)(e);return n.current=e,(0,s.useEffect)(()=>{let e=null,t=null,s=0,r=!1;return!function c(){if(r)return;let i="https:"===window.location.protocol?"wss:":"ws:";(e=new WebSocket("".concat(i,"//").concat(window.location.host,"/api/events"))).onopen=()=>{a(!0),s=0},e.onmessage=e=>{try{let t=JSON.parse(e.data);n.current(t)}catch(e){console.error("Failed to parse WebSocket message:",e)}},e.onclose=()=>{if(a(!1),!r){let e=Math.min(1e3*Math.pow(2,s),1e4);s++,t=setTimeout(c,e)}},e.onerror=()=>{null==e||e.close()}}(),()=>{r=!0,t&&clearTimeout(t),null==e||e.close()}},[]),{connected:t}}((0,s.useCallback)(e=>{c(t=>[e,...t].slice(0,100))},[]));return(0,n.jsx)(r.Provider,{value:{connected:i,events:a},children:t})}},9486:(e,t,a)=>{Promise.resolve().then(a.bind(a,2638))}},e=>{e.O(0,[814,743,358],()=>e(e.s=9486)),_N_E=e.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[764],{593:(e,t,n)=>{"use strict";async function s(e,t){let n=await fetch("".concat("","/api").concat(e),{...t,credentials:"include",headers:{"Content-Type":"application/json",...null==t?void 0:t.headers}});if(!n.ok)throw Error((await n.json().catch(()=>({error:"unknown",message:"Request failed."}))).message);return n.json()}async function a(){let e=await fetch("".concat("","/api/auth/check"),{credentials:"include"});return(await e.json()).data}async function c(e,t){return(await fetch("".concat("","/api/auth/login"),{method:"POST",credentials:"include",headers:{"Content-Type":"application/json"},body:JSON.stringify({username:e,password:t})})).ok}async function o(){await fetch("".concat("","/api/auth/logout"),{method:"POST",credentials:"include"})}function r(){return{getHealth:()=>s("/health"),getSignals:()=>s("/signals"),getScheduledSignals:()=>s("/signals/scheduled"),getSignal:e=>s("/signals/".concat(encodeURIComponent(e))),getSignalRuns:e=>s("/signals/".concat(encodeURIComponent(e),"/runs")),triggerSignal:(e,t)=>s("/signals/".concat(encodeURIComponent(e),"/trigger"),{method:"POST",body:JSON.stringify({input:null!=t?t:{}})}),getRuns:e=>{let t=new URLSearchParams;(null==e?void 0:e.status)&&t.set("status",e.status),(null==e?void 0:e.signalName)&&t.set("signalName",e.signalName);let n=t.toString();return s("/runs".concat(n?"?".concat(n):""))},getRunStats:()=>s("/runs/stats"),getRun:e=>s("/runs/".concat(e)),getRunSteps:e=>s("/runs/".concat(e,"/steps")),getRunLogs:e=>s("/runs/".concat(e,"/logs")),cancelRun:e=>s("/runs/".concat(e,"/cancel"),{method:"POST"}),getBroadcasts:()=>s("/broadcasts"),getBroadcast:e=>s("/broadcasts/".concat(encodeURIComponent(e))),triggerBroadcast:(e,t)=>s("/broadcasts/".concat(encodeURIComponent(e),"/trigger"),{method:"POST",body:JSON.stringify({input:null!=t?t:{}})}),getBroadcastRuns:e=>s("/broadcasts/".concat(encodeURIComponent(e),"/runs")),getBroadcastRun:e=>s("/broadcast-runs/".concat(e)),getBroadcastRunNodes:e=>s("/broadcast-runs/".concat(e,"/nodes")),getBroadcastRunLogs:e=>s("/broadcast-runs/".concat(e,"/logs")),cancelBroadcastRun:e=>s("/broadcast-runs/".concat(e,"/cancel"),{method:"POST"})}}n.d(t,{T5:()=>a,gf:()=>r,iD:()=>c,ri:()=>o})},4736:(e,t,n)=>{"use strict";var s=n(1504);n.o(s,"useParams")&&n.d(t,{useParams:function(){return s.useParams}}),n.o(s,"usePathname")&&n.d(t,{usePathname:function(){return s.usePathname}}),n.o(s,"useRouter")&&n.d(t,{useRouter:function(){return s.useRouter}})},4913:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>i});var s=n(8111),a=n(5271),c=n(4736),o=n(593),r=n(7646);function i(){let e=(0,o.gf)(),t=(0,c.useRouter)(),[n,i]=(0,a.useState)([]),[l,d]=(0,a.useState)(!0);return((0,r.rT)([{label:"Signals"}],"signals"),(0,a.useEffect)(()=>{e.getSignals().then(e=>i(e.data)).catch(e=>{e instanceof Error&&console.error("Failed to load signals:",e.message)}).finally(()=>d(!1))},[]),l)?(0,s.jsxs)("div",{children:[(0,s.jsx)("h1",{className:"page-title",children:"Signals"}),(0,s.jsx)("div",{className:"loading-bar",children:(0,s.jsx)("div",{className:"loading-bar-fill"})})]}):0===n.length?(0,s.jsxs)("div",{children:[(0,s.jsx)("h1",{className:"page-title",children:"Signals"}),(0,s.jsx)("div",{className:"empty-state",children:(0,s.jsx)("p",{className:"empty-state-text",children:"No signals discovered."})})]}):(0,s.jsxs)("div",{children:[(0,s.jsx)("h1",{className:"page-title",children:"Signals"}),(0,s.jsxs)("table",{className:"station-table",children:[(0,s.jsx)("thead",{children:(0,s.jsxs)("tr",{children:[(0,s.jsx)("th",{children:"Name"}),(0,s.jsx)("th",{children:"Kind"}),(0,s.jsx)("th",{children:"Schedule"}),(0,s.jsx)("th",{children:"Timeout"}),(0,s.jsx)("th",{children:"Retries"}),(0,s.jsx)("th",{children:"Steps"})]})}),(0,s.jsx)("tbody",{children:n.map((e,n)=>{var a,c;return(0,s.jsxs)("tr",{className:"reveal-item clickable-row",style:{animationDelay:"".concat(40*n,"ms")},onClick:()=>t.push("/signals/".concat(encodeURIComponent(e.name))),children:[(0,s.jsx)("td",{className:"mono",children:e.name}),(0,s.jsx)("td",{style:{color:"var(--muted)",fontSize:"0.8125rem"},children:e.interval?"recurring":"trigger"}),(0,s.jsx)("td",{className:"mono",style:{color:"var(--muted)",fontSize:"0.8125rem"},children:null!=(a=e.interval)?a:"—"}),(0,s.jsx)("td",{className:"mono",style:{fontSize:"0.8125rem"},children:(c=e.timeout)<1e3?"".concat(c,"ms"):c<6e4?"".concat((c/1e3).toFixed(0),"s"):c<36e5?"".concat((c/6e4).toFixed(0),"m"):"".concat((c/36e5).toFixed(0),"h")}),(0,s.jsx)("td",{className:"mono",style:{fontSize:"0.8125rem"},children:e.maxAttempts>1?e.maxAttempts-1:"0"}),(0,s.jsx)("td",{className:"mono",style:{fontSize:"0.8125rem"},children:e.hasSteps?e.stepNames.length:"—"})]},e.name)})})]})]})}},7646:(e,t,n)=>{"use strict";n.d(t,{Hc:()=>a,iQ:()=>o,rT:()=>c});var s=n(5271);let a=(0,s.createContext)({segments:[],activeSection:null,setSegments:()=>{},setActiveSection:()=>{}});function c(e,t){let n=(0,s.useContext)(a);(0,s.useEffect)(()=>{n.setSegments(e),n.setActiveSection(t)},[JSON.stringify(e),t])}function o(){return(0,s.useContext)(a)}},9129:(e,t,n)=>{Promise.resolve().then(n.bind(n,4913))}},e=>{e.O(0,[814,743,358],()=>e(e.s=9129)),_N_E=e.O()}]);
|