station-kit 1.0.8 → 1.0.9
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/.next/standalone/package.json +3 -1
- package/.next/standalone/packages/station-kit/.next/BUILD_ID +1 -1
- package/.next/standalone/packages/station-kit/.next/app-build-manifest.json +76 -17
- package/.next/standalone/packages/station-kit/.next/app-path-routes-manifest.json +11 -4
- package/.next/standalone/packages/station-kit/.next/build-manifest.json +3 -3
- package/.next/standalone/packages/station-kit/.next/prerender-manifest.json +105 -9
- package/.next/standalone/packages/station-kit/.next/routes-manifest.json +49 -0
- package/.next/standalone/packages/station-kit/.next/server/app/_not-found/page.js +2 -2
- package/.next/standalone/packages/station-kit/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/standalone/packages/station-kit/.next/server/app/_not-found.html +1 -1
- package/.next/standalone/packages/station-kit/.next/server/app/_not-found.rsc +7 -7
- package/.next/standalone/packages/station-kit/.next/server/app/broadcasts/[id]/page.js +2 -2
- package/.next/standalone/packages/station-kit/.next/server/app/broadcasts/[id]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/packages/station-kit/.next/server/app/broadcasts/dyn/[name]/page.js +2 -0
- package/.next/standalone/packages/station-kit/.next/server/app/broadcasts/dyn/[name]/page.js.nft.json +1 -0
- package/.next/standalone/packages/station-kit/.next/server/app/broadcasts/dyn/[name]/page_client-reference-manifest.js +1 -0
- package/.next/standalone/packages/station-kit/.next/server/app/broadcasts/dyn/[name]/v/[n]/page.js +2 -0
- package/.next/standalone/packages/station-kit/.next/server/app/broadcasts/dyn/[name]/v/[n]/page.js.nft.json +1 -0
- package/.next/standalone/packages/station-kit/.next/server/app/broadcasts/dyn/[name]/v/[n]/page_client-reference-manifest.js +1 -0
- package/.next/standalone/packages/station-kit/.next/server/app/broadcasts/new/page.js +2 -0
- package/.next/standalone/packages/station-kit/.next/server/app/broadcasts/new/page.js.nft.json +1 -0
- package/.next/standalone/packages/station-kit/.next/server/app/broadcasts/new/page_client-reference-manifest.js +1 -0
- package/.next/standalone/packages/station-kit/.next/server/app/broadcasts/new.html +1 -0
- package/.next/standalone/packages/station-kit/.next/server/app/broadcasts/new.meta +7 -0
- package/.next/standalone/packages/station-kit/.next/server/app/broadcasts/new.rsc +25 -0
- package/.next/standalone/packages/station-kit/.next/server/app/broadcasts/page.js +2 -2
- package/.next/standalone/packages/station-kit/.next/server/app/broadcasts/page_client-reference-manifest.js +1 -1
- package/.next/standalone/packages/station-kit/.next/server/app/broadcasts.html +1 -1
- package/.next/standalone/packages/station-kit/.next/server/app/broadcasts.rsc +8 -8
- package/.next/standalone/packages/station-kit/.next/server/app/index.html +1 -1
- package/.next/standalone/packages/station-kit/.next/server/app/index.rsc +8 -8
- package/.next/standalone/packages/station-kit/.next/server/app/page.js +2 -2
- package/.next/standalone/packages/station-kit/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/standalone/packages/station-kit/.next/server/app/playground/expression/page.js +2 -0
- package/.next/standalone/packages/station-kit/.next/server/app/playground/expression/page.js.nft.json +1 -0
- package/.next/standalone/packages/station-kit/.next/server/app/playground/expression/page_client-reference-manifest.js +1 -0
- package/.next/standalone/packages/station-kit/.next/server/app/playground/expression.html +1 -0
- package/.next/standalone/packages/station-kit/.next/server/app/playground/expression.meta +7 -0
- package/.next/standalone/packages/station-kit/.next/server/app/playground/expression.rsc +25 -0
- package/.next/standalone/packages/station-kit/.next/server/app/runs/[id]/page.js +2 -2
- package/.next/standalone/packages/station-kit/.next/server/app/runs/[id]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/packages/station-kit/.next/server/app/schedules/[id]/page.js +2 -0
- package/.next/standalone/packages/station-kit/.next/server/app/schedules/[id]/page.js.nft.json +1 -0
- package/.next/standalone/packages/station-kit/.next/server/app/schedules/[id]/page_client-reference-manifest.js +1 -0
- package/.next/standalone/packages/station-kit/.next/server/app/schedules/new/page.js +2 -0
- package/.next/standalone/packages/station-kit/.next/server/app/schedules/new/page.js.nft.json +1 -0
- package/.next/standalone/packages/station-kit/.next/server/app/schedules/new/page_client-reference-manifest.js +1 -0
- package/.next/standalone/packages/station-kit/.next/server/app/schedules/new.html +1 -0
- package/.next/standalone/packages/station-kit/.next/server/app/schedules/new.meta +7 -0
- package/.next/standalone/packages/station-kit/.next/server/app/schedules/new.rsc +25 -0
- package/.next/standalone/packages/station-kit/.next/server/app/schedules/page.js +2 -0
- package/.next/standalone/packages/station-kit/.next/server/app/schedules/page.js.nft.json +1 -0
- package/.next/standalone/packages/station-kit/.next/server/app/schedules/page_client-reference-manifest.js +1 -0
- package/.next/standalone/packages/station-kit/.next/server/app/schedules.html +1 -0
- package/.next/standalone/packages/station-kit/.next/server/app/schedules.meta +7 -0
- package/.next/standalone/packages/station-kit/.next/server/app/schedules.rsc +25 -0
- package/.next/standalone/packages/station-kit/.next/server/app/settings/page.js +2 -2
- package/.next/standalone/packages/station-kit/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/.next/standalone/packages/station-kit/.next/server/app/settings.html +1 -1
- package/.next/standalone/packages/station-kit/.next/server/app/settings.rsc +8 -8
- package/.next/standalone/packages/station-kit/.next/server/app/signals/[name]/page.js +2 -2
- package/.next/standalone/packages/station-kit/.next/server/app/signals/[name]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/packages/station-kit/.next/server/app/signals/page.js +2 -2
- package/.next/standalone/packages/station-kit/.next/server/app/signals/page_client-reference-manifest.js +1 -1
- package/.next/standalone/packages/station-kit/.next/server/app/signals.html +1 -1
- package/.next/standalone/packages/station-kit/.next/server/app/signals.rsc +8 -8
- package/.next/standalone/packages/station-kit/.next/server/app-paths-manifest.json +11 -4
- package/.next/standalone/packages/station-kit/.next/server/chunks/102.js +1 -1
- package/.next/standalone/packages/station-kit/.next/server/chunks/535.js +2 -0
- package/.next/standalone/packages/station-kit/.next/server/chunks/606.js +14 -14
- package/.next/standalone/packages/station-kit/.next/server/chunks/783.js +3 -3
- package/.next/standalone/packages/station-kit/.next/server/middleware-build-manifest.js +1 -1
- package/.next/standalone/packages/station-kit/.next/server/pages/404.html +1 -1
- package/.next/standalone/packages/station-kit/.next/server/pages/500.html +1 -1
- package/.next/standalone/packages/station-kit/.next/server/pages/_app.js +1 -1
- package/.next/standalone/packages/station-kit/.next/server/pages/_document.js +1 -1
- package/.next/standalone/packages/station-kit/.next/server/pages/_error.js +9 -9
- package/.next/standalone/packages/station-kit/.next/server/pages-manifest.json +1 -1
- package/.next/standalone/packages/station-kit/.next/server/server-reference-manifest.json +1 -1
- package/.next/standalone/packages/station-kit/.next/static/chunks/145-9e370afd2e5aba39.js +1 -0
- package/.next/standalone/packages/station-kit/.next/static/chunks/285-ff198f0a909c4fdd.js +1 -0
- package/.next/standalone/packages/station-kit/.next/static/chunks/561-33d912169940283e.js +1 -0
- package/.next/standalone/packages/station-kit/.next/static/chunks/935-dff12960528de017.js +1 -0
- package/.next/standalone/packages/station-kit/.next/static/chunks/app/_not-found/{page-ce21b4ba9038a5a7.js → page-67ef312aee40cfeb.js} +1 -1
- package/.next/standalone/packages/station-kit/.next/static/chunks/app/broadcasts/[id]/page-fe2f5467a0c68fef.js +1 -0
- package/.next/standalone/packages/station-kit/.next/static/chunks/app/broadcasts/dyn/[name]/page-0d2505242014f51e.js +1 -0
- package/.next/standalone/packages/station-kit/.next/static/chunks/app/broadcasts/dyn/[name]/v/[n]/page-5eac0507f49a00ec.js +1 -0
- package/.next/standalone/packages/station-kit/.next/static/chunks/app/broadcasts/new/page-3d02707043d24dc7.js +1 -0
- package/.next/standalone/packages/station-kit/.next/static/chunks/app/broadcasts/page-dee500ccc01f0821.js +1 -0
- package/.next/standalone/packages/station-kit/.next/static/chunks/app/layout-e14e14f3e5b0b8a9.js +1 -0
- package/.next/standalone/packages/station-kit/.next/static/chunks/app/page-aac41ef7a470daab.js +1 -0
- package/.next/standalone/packages/station-kit/.next/static/chunks/app/playground/expression/page-dc9d91f3f50f4716.js +1 -0
- package/.next/standalone/packages/station-kit/.next/static/chunks/app/runs/[id]/page-9e4c4f751a4bea72.js +1 -0
- package/.next/standalone/packages/station-kit/.next/static/chunks/app/schedules/[id]/page-435f67be180b8e4f.js +1 -0
- package/.next/standalone/packages/station-kit/.next/static/chunks/app/schedules/new/page-f697c289c813496a.js +1 -0
- package/.next/standalone/packages/station-kit/.next/static/chunks/app/schedules/page-738d98dc0b63166e.js +1 -0
- package/.next/standalone/packages/station-kit/.next/static/chunks/app/settings/page-fc5654b31f57ac21.js +1 -0
- package/.next/standalone/packages/station-kit/.next/static/chunks/app/signals/[name]/page-4b1c09a539a1ebcd.js +1 -0
- package/.next/standalone/packages/station-kit/.next/static/chunks/app/signals/page-d2f2403dfede87cc.js +1 -0
- package/.next/standalone/packages/station-kit/.next/static/chunks/pages/_app-a3774a320f58a018.js +1 -0
- package/.next/standalone/packages/station-kit/.next/static/demLiQWDy62JuUkBw-ILG/_buildManifest.js +1 -0
- package/.next/standalone/packages/station-kit/package.json +5 -1
- package/dist/config/schema.d.ts +13 -0
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config/schema.js +1 -0
- package/dist/config/schema.js.map +1 -1
- package/dist/server/auth/keys.d.ts +56 -8
- package/dist/server/auth/keys.d.ts.map +1 -1
- package/dist/server/auth/keys.js +155 -53
- package/dist/server/auth/keys.js.map +1 -1
- package/dist/server/index.d.ts +2 -2
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +53 -6
- package/dist/server/index.js.map +1 -1
- package/dist/server/middleware/auth.js +1 -1
- package/dist/server/middleware/auth.js.map +1 -1
- package/dist/server/routes/v1/definitions.d.ts +21 -0
- package/dist/server/routes/v1/definitions.d.ts.map +1 -0
- package/dist/server/routes/v1/definitions.js +139 -0
- package/dist/server/routes/v1/definitions.js.map +1 -0
- package/dist/server/routes/v1/expressions.d.ts +3 -0
- package/dist/server/routes/v1/expressions.d.ts.map +1 -0
- package/dist/server/routes/v1/expressions.js +56 -0
- package/dist/server/routes/v1/expressions.js.map +1 -0
- package/dist/server/routes/v1/keys.js +3 -3
- package/dist/server/routes/v1/keys.js.map +1 -1
- package/dist/server/routes/v1/schedules.d.ts +10 -0
- package/dist/server/routes/v1/schedules.d.ts.map +1 -0
- package/dist/server/routes/v1/schedules.js +169 -0
- package/dist/server/routes/v1/schedules.js.map +1 -0
- package/dist/server/routes/v1/trigger.d.ts.map +1 -1
- package/dist/server/routes/v1/trigger.js +21 -0
- package/dist/server/routes/v1/trigger.js.map +1 -1
- package/package.json +11 -7
- package/src/app/broadcasts/components/broadcast-builder.tsx +535 -0
- package/src/app/broadcasts/components/dag-editor.tsx +510 -0
- package/src/app/broadcasts/dyn/[name]/dynamic-detail.tsx +243 -0
- package/src/app/broadcasts/dyn/[name]/page.tsx +10 -0
- package/src/app/broadcasts/dyn/[name]/v/[n]/page.tsx +10 -0
- package/src/app/broadcasts/dyn/[name]/v/[n]/version-view.tsx +285 -0
- package/src/app/broadcasts/new/page.tsx +102 -0
- package/src/app/broadcasts/page.tsx +176 -91
- package/src/app/components/api-panel.tsx +151 -0
- package/src/app/components/shell.tsx +23 -0
- package/src/app/hooks/use-api.ts +117 -0
- package/src/app/playground/expression/page.tsx +245 -0
- package/src/app/schedules/[id]/page.tsx +10 -0
- package/src/app/schedules/[id]/schedule-editor.tsx +195 -0
- package/src/app/schedules/components/schedule-form.tsx +140 -0
- package/src/app/schedules/new/page.tsx +166 -0
- package/src/app/schedules/page.tsx +126 -0
- package/src/config/schema.ts +14 -0
- package/src/server/auth/keys.ts +191 -56
- package/src/server/index.ts +72 -8
- package/src/server/middleware/auth.ts +1 -1
- package/src/server/routes/v1/definitions.ts +164 -0
- package/src/server/routes/v1/expressions.ts +76 -0
- package/src/server/routes/v1/keys.ts +3 -3
- package/src/server/routes/v1/schedules.ts +176 -0
- package/src/server/routes/v1/trigger.ts +27 -0
- package/.next/standalone/packages/station-kit/.next/static/chunks/580-f007f4d4c050db4e.js +0 -1
- package/.next/standalone/packages/station-kit/.next/static/chunks/app/broadcasts/[id]/page-a0a20cccda13a0e9.js +0 -1
- package/.next/standalone/packages/station-kit/.next/static/chunks/app/broadcasts/page-937eb876f9087bc9.js +0 -1
- package/.next/standalone/packages/station-kit/.next/static/chunks/app/layout-68cd71116ba65cd8.js +0 -1
- package/.next/standalone/packages/station-kit/.next/static/chunks/app/page-70b0c0958c03459a.js +0 -1
- package/.next/standalone/packages/station-kit/.next/static/chunks/app/runs/[id]/page-01f8040619fe56c5.js +0 -1
- package/.next/standalone/packages/station-kit/.next/static/chunks/app/settings/page-beac11049f90da31.js +0 -1
- package/.next/standalone/packages/station-kit/.next/static/chunks/app/signals/[name]/page-931e6a38a4a53d25.js +0 -1
- package/.next/standalone/packages/station-kit/.next/static/chunks/app/signals/page-6a123a355d93fec5.js +0 -1
- package/.next/standalone/packages/station-kit/.next/static/chunks/pages/_app-0a7b2e66ecbe3f0a.js +0 -1
- package/.next/standalone/packages/station-kit/.next/static/xYd6dn0Ox68DaamIrH_pB/_buildManifest.js +0 -1
- /package/.next/standalone/packages/station-kit/.next/static/{xYd6dn0Ox68DaamIrH_pB → demLiQWDy62JuUkBw-ILG}/_ssgManifest.js +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[935],{706:(e,t)=>{function r(e){let t={};for(let[r,n]of e.entries()){let e=t[r];void 0===e?t[r]=n:Array.isArray(e)?e.push(n):t[r]=[e,n]}return t}function n(e){return"string"==typeof e?e:("number"!=typeof e||isNaN(e))&&"boolean"!=typeof e?"":String(e)}function o(e){let t=new URLSearchParams;for(let[r,o]of Object.entries(e))if(Array.isArray(o))for(let e of o)t.append(r,n(e));else t.set(r,n(o));return t}function u(e){for(var t=arguments.length,r=Array(t>1?t-1:0),n=1;n<t;n++)r[n-1]=arguments[n];for(let t of r){for(let r of t.keys())e.delete(r);for(let[r,n]of t.entries())e.append(r,n)}return e}Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{assign:function(){return u},searchParamsToUrlQuery:function(){return r},urlQueryToSearchParams:function(){return o}})},2823:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"useMergedRef",{enumerable:!0,get:function(){return o}});let n=r(5271);function o(e,t){let r=(0,n.useRef)(null),o=(0,n.useRef)(null);return(0,n.useCallback)(n=>{if(null===n){let e=r.current;e&&(r.current=null,e());let t=o.current;t&&(o.current=null,t())}else e&&(r.current=u(e,n)),t&&(o.current=u(t,n))},[e,t])}function u(e,t){if("function"!=typeof e)return e.current=t,()=>{e.current=null};{let r=e(t);return"function"==typeof r?r:()=>e(null)}}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},5073:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"errorOnce",{enumerable:!0,get:function(){return r}});let r=e=>{}},5935:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{default:function(){return g},useLinkStatus:function(){return b}});let n=r(4284),o=r(8111),u=n._(r(5271)),a=r(9642),i=r(5911),l=r(2823),f=r(7076),c=r(3790);r(4209);let s=r(7335),p=r(7843),d=r(587);r(5073);let h=r(5564);function y(e){return"string"==typeof e?e:(0,a.formatUrl)(e)}function g(e){var t;let r,n,a,[g,b]=(0,u.useOptimistic)(s.IDLE_LINK_STATUS),P=(0,u.useRef)(null),{href:_,as:v,children:E,prefetch:O=null,passHref:j,replace:S,shallow:C,scroll:N,onClick:T,onMouseEnter:x,onTouchStart:A,legacyBehavior:M=!1,onNavigate:R,ref:L,unstable_dynamicOnHover:k,...I}=e;r=E,M&&("string"==typeof r||"number"==typeof r)&&(r=(0,o.jsx)("a",{children:r}));let U=u.default.useContext(i.AppRouterContext),w=!1!==O,F=!1!==O?null===(t=O)||"auto"===t?h.FetchStrategy.PPR:h.FetchStrategy.Full:h.FetchStrategy.PPR,{href:D,as:K}=u.default.useMemo(()=>{let e=y(_);return{href:e,as:v?y(v):e}},[_,v]);M&&(n=u.default.Children.only(r));let B=M?n&&"object"==typeof n&&n.ref:L,z=u.default.useCallback(e=>(null!==U&&(P.current=(0,s.mountLinkInstance)(e,D,U,F,w,b)),()=>{P.current&&((0,s.unmountLinkForCurrentNavigation)(P.current),P.current=null),(0,s.unmountPrefetchableInstance)(e)}),[w,D,U,F,b]),Q={ref:(0,l.useMergedRef)(z,B),onClick(e){M||"function"!=typeof T||T(e),M&&n.props&&"function"==typeof n.props.onClick&&n.props.onClick(e),U&&(e.defaultPrevented||function(e,t,r,n,o,a,i){let{nodeName:l}=e.currentTarget;if(!("A"===l.toUpperCase()&&function(e){let t=e.currentTarget.getAttribute("target");return t&&"_self"!==t||e.metaKey||e.ctrlKey||e.shiftKey||e.altKey||e.nativeEvent&&2===e.nativeEvent.which}(e)||e.currentTarget.hasAttribute("download"))){if(!(0,p.isLocalURL)(t)){o&&(e.preventDefault(),location.replace(t));return}if(e.preventDefault(),i){let e=!1;if(i({preventDefault:()=>{e=!0}}),e)return}u.default.startTransition(()=>{(0,d.dispatchNavigateAction)(r||t,o?"replace":"push",null==a||a,n.current)})}}(e,D,K,P,S,N,R))},onMouseEnter(e){M||"function"!=typeof x||x(e),M&&n.props&&"function"==typeof n.props.onMouseEnter&&n.props.onMouseEnter(e),U&&w&&(0,s.onNavigationIntent)(e.currentTarget,!0===k)},onTouchStart:function(e){M||"function"!=typeof A||A(e),M&&n.props&&"function"==typeof n.props.onTouchStart&&n.props.onTouchStart(e),U&&w&&(0,s.onNavigationIntent)(e.currentTarget,!0===k)}};return(0,f.isAbsoluteUrl)(K)?Q.href=K:M&&!j&&("a"!==n.type||"href"in n.props)||(Q.href=(0,c.addBasePath)(K)),a=M?u.default.cloneElement(n,Q):(0,o.jsx)("a",{...I,...Q,children:r}),(0,o.jsx)(m.Provider,{value:g,children:a})}let m=(0,u.createContext)(s.IDLE_LINK_STATUS),b=()=>(0,u.useContext)(m);("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},7076:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{DecodeError:function(){return h},MiddlewareNotFoundError:function(){return b},MissingStaticPage:function(){return m},NormalizeError:function(){return y},PageNotFoundError:function(){return g},SP:function(){return p},ST:function(){return d},WEB_VITALS:function(){return r},execOnce:function(){return n},getDisplayName:function(){return l},getLocationOrigin:function(){return a},getURL:function(){return i},isAbsoluteUrl:function(){return u},isResSent:function(){return f},loadGetInitialProps:function(){return s},normalizeRepeatedSlashes:function(){return c},stringifyError:function(){return P}});let r=["CLS","FCP","FID","INP","LCP","TTFB"];function n(e){let t,r=!1;return function(){for(var n=arguments.length,o=Array(n),u=0;u<n;u++)o[u]=arguments[u];return r||(r=!0,t=e(...o)),t}}let o=/^[a-zA-Z][a-zA-Z\d+\-.]*?:/,u=e=>o.test(e);function a(){let{protocol:e,hostname:t,port:r}=window.location;return e+"//"+t+(r?":"+r:"")}function i(){let{href:e}=window.location,t=a();return e.substring(t.length)}function l(e){return"string"==typeof e?e:e.displayName||e.name||"Unknown"}function f(e){return e.finished||e.headersSent}function c(e){let t=e.split("?");return t[0].replace(/\\/g,"/").replace(/\/\/+/g,"/")+(t[1]?"?"+t.slice(1).join("?"):"")}async function s(e,t){let r=t.res||t.ctx&&t.ctx.res;if(!e.getInitialProps)return t.ctx&&t.Component?{pageProps:await s(t.Component,t.ctx)}:{};let n=await e.getInitialProps(t);if(r&&f(r))return n;if(!n)throw Object.defineProperty(Error('"'+l(e)+'.getInitialProps()" should resolve to an object. But found "'+n+'" instead.'),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});return n}let p="undefined"!=typeof performance,d=p&&["mark","measure","getEntriesByName"].every(e=>"function"==typeof performance[e]);class h extends Error{}class y extends Error{}class g extends Error{constructor(e){super(),this.code="ENOENT",this.name="PageNotFoundError",this.message="Cannot find module for page: "+e}}class m extends Error{constructor(e,t){super(),this.message="Failed to load static file for page: "+e+" "+t}}class b extends Error{constructor(){super(),this.code="ENOENT",this.message="Cannot find the middleware module"}}function P(e){return JSON.stringify({message:e.message,stack:e.stack})}},7843:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"isLocalURL",{enumerable:!0,get:function(){return u}});let n=r(7076),o=r(3506);function u(e){if(!(0,n.isAbsoluteUrl)(e))return!0;try{let t=(0,n.getLocationOrigin)(),r=new URL(e,t);return r.origin===t&&(0,o.hasBasePath)(r.pathname)}catch(e){return!1}}},9642:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{formatUrl:function(){return u},formatWithValidation:function(){return i},urlObjectKeys:function(){return a}});let n=r(4284)._(r(706)),o=/https?|ftp|gopher|file/;function u(e){let{auth:t,hostname:r}=e,u=e.protocol||"",a=e.pathname||"",i=e.hash||"",l=e.query||"",f=!1;t=t?encodeURIComponent(t).replace(/%3A/i,":")+"@":"",e.host?f=t+e.host:r&&(f=t+(~r.indexOf(":")?"["+r+"]":r),e.port&&(f+=":"+e.port)),l&&"object"==typeof l&&(l=String(n.urlQueryToSearchParams(l)));let c=e.search||l&&"?"+l||"";return u&&!u.endsWith(":")&&(u+=":"),e.slashes||(!u||o.test(u))&&!1!==f?(f="//"+(f||""),a&&"/"!==a[0]&&(a="/"+a)):f||(f=""),i&&"#"!==i[0]&&(i="#"+i),c&&"?"!==c[0]&&(c="?"+c),""+u+f+(a=a.replace(/[?#]/g,encodeURIComponent))+(c=c.replace("#","%23"))+i}let a=["auth","hash","host","hostname","href","path","pathname","port","protocol","query","search","slashes"];function i(e){return u(e)}}}]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[492],{1898:(e,t,l)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"HTTPAccessErrorFallback",{enumerable:!0,get:function(){return o}});let r=l(8111),n=l(4733);function o(e){let{status:t,message:l}=e;return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("title",{children:t+": "+l}),(0,r.jsx)("div",{style:n.styles.error,children:(0,r.jsxs)("div",{children:[(0,r.jsx)("style",{dangerouslySetInnerHTML:{__html:"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}),(0,r.jsx)("h1",{className:"next-error-h1",style:n.styles.h1,children:t}),(0,r.jsx)("div",{style:n.styles.desc,children:(0,r.jsx)("h2",{style:n.styles.h2,children:l})})]})})]})}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},4733:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"styles",{enumerable:!0,get:function(){return l}});let l={error:{fontFamily:'system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji"',height:"100vh",textAlign:"center",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center"},desc:{display:"inline-block"},h1:{display:"inline-block",margin:"0 20px 0 0",padding:"0 23px 0 0",fontSize:24,fontWeight:500,verticalAlign:"top",lineHeight:"49px"},h2:{fontSize:14,fontWeight:400,lineHeight:"49px",margin:0}};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[492],{1898:(e,t,l)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"HTTPAccessErrorFallback",{enumerable:!0,get:function(){return o}});let r=l(8111),n=l(4733);function o(e){let{status:t,message:l}=e;return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("title",{children:t+": "+l}),(0,r.jsx)("div",{style:n.styles.error,children:(0,r.jsxs)("div",{children:[(0,r.jsx)("style",{dangerouslySetInnerHTML:{__html:"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}),(0,r.jsx)("h1",{className:"next-error-h1",style:n.styles.h1,children:t}),(0,r.jsx)("div",{style:n.styles.desc,children:(0,r.jsx)("h2",{style:n.styles.h2,children:l})})]})})]})}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},4733:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"styles",{enumerable:!0,get:function(){return l}});let l={error:{fontFamily:'system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji"',height:"100vh",textAlign:"center",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center"},desc:{display:"inline-block"},h1:{display:"inline-block",margin:"0 20px 0 0",padding:"0 23px 0 0",fontSize:24,fontWeight:500,verticalAlign:"top",lineHeight:"49px"},h2:{fontSize:14,fontWeight:400,lineHeight:"49px",margin:0}};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},5455:(e,t,l)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return o}});let r=l(8111),n=l(1898),o=function(){return(0,r.jsx)("html",{children:(0,r.jsx)("body",{children:(0,r.jsx)(n.HTTPAccessErrorFallback,{status:404,message:"This page could not be found."})})})};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},6449:(e,t,l)=>{(window.__NEXT_P=window.__NEXT_P||[]).push(["/_not-found/page",function(){return l(5455)}])}},e=>{e.O(0,[814,743,358],()=>e(e.s=6449)),_N_E=e.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[115],{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]})}},1321:(e,t,a)=>{"use strict";a.d(t,{BroadcastDetail:()=>y});var s=a(8111),n=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(9711),h=a(1794);function p(e){let{label:t,children:a}=e,[l,r]=(0,n.useState)(!1);return(0,s.jsxs)("div",{className:"detail-section",children:[(0,s.jsxs)("button",{className:"collapsible-header",onClick:()=>r(!l),children:[(0,s.jsx)("span",{className:"collapsible-chevron",children:l?"▾":"▸"}),t]}),l&&(0,s.jsx)("div",{className:"collapsible-content",children:a})]})}function f(e){let{node:t,logs:a}=e,l=(0,n.useRef)(null);return(0,n.useEffect)(()=>{var e;null==(e=l.current)||e.scrollIntoView({behavior:"smooth"})},[null==a?void 0:a.length]),(0,s.jsxs)("div",{className:"workflow-panel",children:[(0,s.jsxs)("div",{className:"node-detail-header",children:[(0,s.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"0.75rem"},children:[(0,s.jsx)("span",{className:"node-detail-title",children:t.nodeName}),(0,s.jsx)(u.W,{status:t.status})]}),(0,s.jsxs)("span",{className:"node-detail-meta",children:[t.signalName," ","\xb7"," ",function(e,t){if(!e)return"-";let a=new Date(e).getTime(),s=(t?new Date(t).getTime():Date.now())-a;return s<1e3?"".concat(s,"ms"):s<6e4?"".concat((s/1e3).toFixed(1),"s"):"".concat((s/6e4).toFixed(1),"m")}(t.startedAt,t.completedAt)]})]}),"skipped"===t.status&&t.skipReason&&(0,s.jsx)("div",{className:"detail-section",children:(0,s.jsxs)("div",{style:{fontFamily:"var(--font-mono)",fontSize:"0.8125rem",color:"var(--muted)",padding:"0.5rem 0"},children:["Skipped: ",t.skipReason]})}),t.error&&(0,s.jsx)("div",{className:"detail-section",children:(0,s.jsx)("div",{className:"error-block",children:t.error})}),(0,s.jsxs)("div",{className:"detail-section",children:[(0,s.jsx)("div",{className:"detail-section-label",children:"Logs"}),(0,s.jsxs)("div",{className:"log-container",style:{maxHeight:"none",minHeight:"120px"},children:[a&&0!==a.length?a.map((e,t)=>(0,s.jsxs)("div",{className:"log-line",style:{color:"stderr"===e.level?"var(--rust)":"var(--charcoal)"},children:[(0,s.jsx)("span",{className:"log-timestamp",children:new Date(e.timestamp).toLocaleTimeString()}),(0,s.jsx)("span",{className:"log-level","data-level":e.level,children:"stderr"===e.level?"ERR":"OUT"}),(0,s.jsx)("span",{className:"log-message",children:e.message})]},t)):(0,s.jsx)("div",{style:{padding:"1rem",color:"var(--muted)",fontFamily:"var(--font-mono)",fontSize:"0.75rem"},children:"pending"===t.status?"Waiting for execution...":"skipped"===t.status?"Node was skipped.":"No log output captured."}),(0,s.jsx)("div",{ref:l})]})]}),t.input&&(0,s.jsx)(p,{label:"Input",children:(0,s.jsx)(h.p,{data:t.input})}),t.output&&(0,s.jsx)(p,{label:"Output",children:(0,s.jsx)(h.p,{data:t.output})}),t.signalRunId&&(0,s.jsx)("div",{className:"detail-section",style:{paddingTop:"0.25rem"},children:(0,s.jsx)(i(),{href:"/runs/".concat(t.signalRunId),className:"meta-value--link",style:{fontSize:"0.8125rem"},children:"View signal run →"})})]})}var g=a(9129);function x(e){let{nodes:t,selectedNode:a,onSelectNode:n}=e,l=(0,m.WZ)(),{theme:r}=(0,g.D)(),i="dark"===r?"#4A4A4C":"#D4CEBF";return(0,s.jsxs)("div",{className:"workflow-sidebar",children:[(0,s.jsx)("div",{className:"workflow-sidebar-label",children:"Nodes"}),t.map(e=>{var t;let r=a===e.nodeName,c=l[e.status],o=null!=(t=null==c?void 0:c.bar)?t:i,d=function(e,t){if(!e)return null;let a=new Date(e).getTime(),s=(t?new Date(t).getTime():Date.now())-a;return s<1e3?"".concat(s,"ms"):s<6e4?"".concat((s/1e3).toFixed(1),"s"):"".concat((s/6e4).toFixed(1),"m")}(e.startedAt,e.completedAt),u="running"===e.status,m="failed"===e.status;return(0,s.jsxs)("button",{className:"workflow-node-item".concat(r?" workflow-node-item--active":"").concat(m?" workflow-node-item--failed":""),onClick:()=>n(e.nodeName),style:{paddingLeft:"".concat(.75+.75*e.tier,"rem")},children:[(0,s.jsx)("span",{className:"workflow-node-dot".concat(u?" workflow-node-dot--running":""),style:{backgroundColor:o}}),(0,s.jsx)("span",{className:"workflow-node-name",children:e.nodeName}),d&&(0,s.jsx)("span",{className:"workflow-node-duration",children:d})]},e.nodeName)})]})}var j=a(3055),N=a(1489);function v(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 b(e,t){if(!e)return"—";let a=new Date(e).getTime();return v((t?new Date(t).getTime():Date.now())-a)}function y(){let e=(0,l.useParams)().id;return/^[0-9a-f]{8}-/.test(e)?(0,s.jsx)(S,{id:e}):(0,s.jsx)(w,{name:e})}function w(e){var t;let{name:a}=e,l=decodeURIComponent(a),r=(0,c.gf)(),{events:i}=(0,o.q)(),[h,p]=(0,n.useState)(null),[f,g]=(0,n.useState)([]),[x,y]=(0,n.useState)(!0),[w,S]=(0,n.useState)("{}"),[k,R]=(0,n.useState)(!1),[C,T]=(0,n.useState)(null),[B,E]=(0,n.useState)(!1);(0,d.rT)([{label:"Broadcasts",href:"/broadcasts"},{label:l}],"broadcasts");let A=(0,n.useCallback)(()=>{r.getBroadcastRuns(a).then(e=>g(e.data)).catch(e=>console.error("Failed to refresh broadcast runs:",e))},[a]);async function D(){R(!0);try{let e=JSON.parse(w);await r.triggerBroadcast(a,e),S("{}"),E(!1),setTimeout(A,300)}catch(e){e instanceof Error&&console.error("Trigger failed:",e.message)}R(!1)}if((0,n.useEffect)(()=>{!async function(){try{let[e,t]=await Promise.all([r.getBroadcast(a),r.getBroadcastRuns(a)]);p(e.data),g(t.data)}catch(e){e instanceof Error&&console.error("Failed to load broadcast:",e.message)}y(!1)}()},[a]),(0,n.useEffect)(()=>{if(!h)return;let e=h.nodes.filter(e=>0===e.dependsOn.length);1===e.length&&r.getSignal(e[0].signalName).then(e=>T(e.data.inputSchema)).catch(e=>console.error("Failed to load root input schema:",e))},[h]),(0,n.useEffect)(()=>{if(0===i.length)return;let e=i[0];(e.type.startsWith("broadcast:")||e.type.startsWith("node:"))&&A()},[i.length,A]),x)return(0,s.jsxs)("div",{children:[(0,s.jsx)("h1",{className:"page-title",children:l}),(0,s.jsx)("div",{className:"loading-bar",children:(0,s.jsx)("div",{className:"loading-bar-fill"})})]});if(!h)return(0,s.jsxs)("div",{children:[(0,s.jsx)("h1",{className:"page-title",children:l}),(0,s.jsx)("div",{className:"empty-state",children:(0,s.jsx)("p",{className:"empty-state-text",children:"Broadcast not found."})})]});let F=h.nodes.map(e=>({name:e.name,signalName:e.signalName,dependsOn:e.dependsOn}));return(0,s.jsxs)("div",{children:[(0,s.jsxs)("div",{className:"page-header",children:[(0,s.jsx)("h1",{className:"page-title",style:{marginBottom:0},children:l}),(0,s.jsx)("div",{className:"page-header-actions",children:(0,s.jsx)("button",{className:"btn btn--primary",onClick:()=>E(!B),children:B?"Close":"Trigger"})})]}),B&&(0,s.jsxs)("div",{className:"detail-section",children:[(0,s.jsx)(j.q,{schema:C,value:w,onChange:S}),(0,s.jsx)("div",{style:{marginTop:"0.5rem"},children:(0,s.jsx)("button",{className:"btn btn--primary",onClick:D,disabled:k,children:k?"Dispatching...":"Dispatch"})})]}),(0,s.jsxs)("div",{className:"detail-section",children:[(0,s.jsx)("div",{className:"detail-section-label",children:"Runs"}),0===f.length?(0,s.jsx)("div",{className:"empty-state",children:(0,s.jsx)("p",{className:"empty-state-text",children:"No runs yet. Trigger a broadcast to get started."})}):(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:"Run"}),(0,s.jsx)("th",{children:"Duration"}),(0,s.jsx)("th",{children:"Created"})]})}),(0,s.jsx)("tbody",{children:f.map((e,t)=>(0,s.jsxs)("tr",{className:"reveal-item clickable-row",style:{animationDelay:"".concat(40*t,"ms")},onClick:()=>window.location.assign("/broadcasts/".concat(e.id)),children:[(0,s.jsx)("td",{children:(0,s.jsx)(u.W,{status:e.status})}),(0,s.jsx)("td",{className:"mono",children:e.id.slice(0,8)}),(0,s.jsx)("td",{className:"mono",children:b(e.startedAt,e.completedAt)}),(0,s.jsx)("td",{children:(0,s.jsx)(N.s,{date:e.createdAt})})]},e.id))})]})]}),(0,s.jsxs)("div",{className:"detail-section",children:[(0,s.jsx)("div",{className:"detail-section-label",children:"Configuration"}),(0,s.jsxs)("div",{className:"config-grid",children:[(0,s.jsxs)("div",{className:"config-item",children:[(0,s.jsx)("span",{className:"config-item-label",children:"Failure Policy"}),(0,s.jsx)("span",{className:"config-item-value",children:h.failurePolicy})]}),(0,s.jsxs)("div",{className:"config-item",children:[(0,s.jsx)("span",{className:"config-item-label",children:"Timeout"}),(0,s.jsx)("span",{className:"config-item-value",children:null!==h.timeout?v(h.timeout):"—"})]}),(0,s.jsxs)("div",{className:"config-item",children:[(0,s.jsx)("span",{className:"config-item-label",children:"Schedule"}),(0,s.jsx)("span",{className:"config-item-value",children:null!=(t=h.interval)?t:"Manual trigger"})]})]})]}),(0,s.jsxs)("div",{className:"detail-section",children:[(0,s.jsx)("div",{className:"detail-section-label",children:"Workflow"}),(0,s.jsx)(m.QK,{nodes:F})]})]})}function S(e){let{id:t}=e,a=(0,c.gf)(),r=(0,l.useRouter)(),{events:h}=(0,o.q)(),[p,g]=(0,n.useState)(null),[j,N]=(0,n.useState)([]),[v,y]=(0,n.useState)(null),[w,S]=(0,n.useState)([]),[k,R]=(0,n.useState)(!0),[C,T]=(0,n.useState)(!1),[B,E]=(0,n.useState)(!1),[A,D]=(0,n.useState)(null),F=(0,n.useRef)(new Set),O=(0,n.useRef)(!1);async function I(){T(!0);try{await a.cancelBroadcastRun(t);let e=await a.getBroadcastRun(t);g(e.data)}catch(e){e instanceof Error&&console.error("Cancel failed:",e.message)}T(!1)}async function M(){E(!0);try{let e=await a.rerunBroadcastRun(t);r.push("/broadcasts/".concat(e.data.id))}catch(e){e instanceof Error&&console.error("Rerun failed:",e.message)}E(!1)}(0,d.rT)(p?[{label:"Broadcasts",href:"/broadcasts"},{label:p.broadcastName,href:"/broadcasts/".concat(encodeURIComponent(p.broadcastName))},{label:"Run ".concat(t.slice(0,8))}]:[{label:"Broadcasts",href:"/broadcasts"},{label:"Run ".concat(t.slice(0,8))}],"broadcasts"),(0,n.useEffect)(()=>{!async function(){try{let[s,n,l]=await Promise.all([a.getBroadcastRun(t),a.getBroadcastRunNodes(t),a.getBroadcastRunLogs(t)]);g(s.data),N(n.data),S(l.data);let r=new Set;for(let e of n.data)e.signalRunId&&r.add(e.signalRunId);if(F.current=r,!O.current&&n.data.length>0){var e;O.current=!0;let t=n.data.find(e=>"failed"===e.status),a=n.data.find(e=>"running"===e.status);D((null!=(e=null!=t?t:a)?e:n.data[0]).nodeName)}s.data.broadcastName&&a.getBroadcast(s.data.broadcastName).then(e=>y(e.data)).catch(e=>console.error("Failed to load broadcast meta:",e))}catch(e){e instanceof Error&&console.error("Failed to load broadcast run:",e.message)}R(!1)}()},[t]),(0,n.useEffect)(()=>{if(0===h.length)return;let e=h[0];if("log:output"===e.type){let t=e.data.runId;if(F.current.has(t)){let a=j.find(e=>e.signalRunId===t);S(s=>{var n,l;return[...s,{runId:t,signalName:e.data.signalName,level:e.data.level,message:e.data.message,timestamp:null!=(n=e.data.timestamp)?n:e.timestamp,nodeName:null!=(l=null==a?void 0:a.nodeName)?l:""}]})}}(e.type.startsWith("broadcast:")||e.type.startsWith("node:"))&&(a.getBroadcastRun(t).then(e=>g(e.data)).catch(e=>console.error("Failed to refresh broadcast run:",e)),a.getBroadcastRunNodes(t).then(e=>{N(e.data);let t=new Set;for(let a of e.data)a.signalRunId&&t.add(a.signalRunId);F.current=t}).catch(e=>console.error("Failed to refresh node runs:",e)))},[h.length,t,j]);let W=(0,n.useMemo)(()=>{let e=new Map;if(v)for(let t of v.nodes)e.set(t.name,t.dependsOn);return e},[v]),J=(0,n.useMemo)(()=>j.map(e=>{var t;return{name:e.nodeName,signalName:e.signalName,dependsOn:null!=(t=W.get(e.nodeName))?t:[],status:e.status,startedAt:e.startedAt,completedAt:e.completedAt}}),[j,W]),P=(0,n.useMemo)(()=>{if(0===J.length)return[];let e=(0,m.C0)(J),t=new Map;return e.forEach((e,a)=>{for(let s of e)t.set(s.name,a)}),e.flat().map(e=>{var a,s;let n=j.find(t=>t.nodeName===e.name);return{nodeName:e.name,signalName:e.signalName,status:null!=(a=null==n?void 0:n.status)?a:"pending",startedAt:null==n?void 0:n.startedAt,completedAt:null==n?void 0:n.completedAt,tier:null!=(s=t.get(e.name))?s:0}})},[J,j]),z=(0,n.useMemo)(()=>A?w.filter(e=>e.nodeName===A).map(e=>{let{level:t,message:a,timestamp:s}=e;return{level:t,message:a,timestamp:s}}):[],[w,A]),q=A?j.find(e=>e.nodeName===A):null;if(k)return(0,s.jsxs)("div",{children:[(0,s.jsx)("h1",{className:"page-title",children:"Broadcast Run"}),(0,s.jsx)("div",{className:"loading-bar",children:(0,s.jsx)("div",{className:"loading-bar-fill"})})]});if(!p)return(0,s.jsxs)("div",{children:[(0,s.jsx)("h1",{className:"page-title",children:"Broadcast Run"}),(0,s.jsx)("div",{className:"empty-state",children:(0,s.jsx)("p",{className:"empty-state-text",children:"Broadcast run not found."})})]});let _="pending"===p.status||"running"===p.status,L="failed"===p.status||"completed"===p.status||"cancelled"===p.status;return(0,s.jsxs)("div",{children:[(0,s.jsxs)("div",{className:"page-header",children:[(0,s.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"0.75rem"},children:[(0,s.jsx)(u.W,{status:p.status}),(0,s.jsx)(i(),{href:"/broadcasts/".concat(encodeURIComponent(p.broadcastName)),className:"page-title",style:{marginBottom:0,textDecoration:"none"},children:p.broadcastName}),(0,s.jsx)("span",{className:"mono",style:{color:"var(--muted)",fontSize:"0.75rem"},children:b(p.startedAt,p.completedAt)})]}),(0,s.jsxs)("div",{className:"page-header-actions",children:[L&&(0,s.jsx)("button",{className:"btn btn--primary",onClick:M,disabled:B,children:B?"Rerunning...":"Rerun"}),_&&(0,s.jsx)("button",{className:"btn btn--danger",onClick:I,disabled:C,children:C?"Cancelling...":"Cancel"})]})]}),p.error&&(0,s.jsx)("div",{className:"detail-section",children:(0,s.jsx)("div",{className:"error-block",children:p.error})}),J.length>0&&(0,s.jsx)("div",{className:"detail-section",children:(0,s.jsx)(m.QK,{nodes:J,onNodeClick:e=>D(e),selectedNode:null!=A?A:void 0,compact:!0})}),P.length>0&&(0,s.jsxs)("div",{className:"workflow-layout",children:[(0,s.jsx)(x,{nodes:P,selectedNode:A,onSelectNode:D}),q?(0,s.jsx)(f,{node:q,logs:z}):(0,s.jsx)("div",{className:"workflow-panel",children:(0,s.jsx)("div",{className:"empty-state",children:(0,s.jsx)("p",{className:"empty-state-text",children:"Select a node to view details."})})})]})]})}},1489:(e,t,a)=>{"use strict";a.d(t,{s:()=>r});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 r(e){let{date:t}=e,[a,r]=(0,n.useState)(()=>l(t));return(0,n.useEffect)(()=>{let e=setInterval(()=>{r(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})}},1794:(e,t,a)=>{"use strict";a.d(t,{p:()=>l});var s=a(8111),n=a(5271);function l(e){let t,{data:a,label:l}=e,[r,i]=(0,n.useState)(!0),[c,o]=(0,n.useState)(!0),[d,u]=(0,n.useState)("copy"),m=(0,n.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 h="object"==typeof t&&null!==t&&JSON.stringify(t).length>200;return(0,s.jsxs)("div",{children:[l&&(0,s.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,s.jsxs)("pre",{className:"json-viewer",style:{position:"relative"},children:[(0,s.jsx)("button",{className:"copy-btn",onClick:m,type:"button",children:d}),h&&(0,s.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,n){if(null===t)return(0,s.jsx)("span",{className:"json-null",children:"null"});if("boolean"==typeof t)return(0,s.jsx)("span",{className:"json-boolean",children:String(t)});if("number"==typeof t)return(0,s.jsx)("span",{className:"json-number",children:t});if("string"==typeof t)return(0,s.jsxs)("span",{className:"json-string",children:['"',t,'"']});if(Array.isArray(t))return 0===t.length?(0,s.jsx)("span",{children:"[]"}):!n&&a>3?(0,s.jsxs)("span",{children:["[",t.length," items]"]}):(0,s.jsxs)("span",{children:["[\n",t.map((l,r)=>(0,s.jsxs)("span",{children:[" ".repeat(a+1),e(l,a+1,n),r<t.length-1?",":"","\n"]},r))," ".repeat(a),"]"]});if("object"==typeof t){let l=Object.entries(t);return 0===l.length?(0,s.jsx)("span",{children:"{}"}):!n&&a>3?(0,s.jsx)("span",{children:"{".concat(l.length," keys}")}):(0,s.jsxs)("span",{children:["{\n",l.map((t,r)=>{let[i,c]=t;return(0,s.jsxs)("span",{children:[" ".repeat(a+1),(0,s.jsxs)("span",{className:"json-key",children:['"',i,'"']}),": ",e(c,a+1,n),r<l.length-1?",":"","\n"]},i)})," ".repeat(a),"}"]})}return(0,s.jsx)("span",{children:String(t)})}(t,0,c)]})]})}},3055:(e,t,a)=>{"use strict";a.d(t,{q:()=>r});var s=a(8111),n=a(5271);function l(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,s.jsxs)("div",{className:"schema-ref",children:[(0,s.jsx)("div",{className:"schema-ref-title",children:"Expected Input"}),a.map(e=>{let[t,a]=e;return(0,s.jsxs)("div",{className:"schema-field",children:[(0,s.jsx)("span",{className:"schema-field-name",children:t}),(0,s.jsx)("span",{className:"schema-field-type".concat(a.required?"":" schema-field-type--optional"),children:a.type})]},t)})]})}function r(e){let{schema:t,value:a,onChange:r}=e,[i,c]=(0,n.useState)(null),[o,d]=(0,n.useState)(!1);return(0,n.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[s,n]of Object.entries(t.properties))a[s]=e(n);return a}default:return null}}(t),null,2);"{}"!==e&&r(e)}d(!0)}},[t,a,r,o]),(0,s.jsxs)("div",{children:[t&&"object"===t.type&&t.properties&&(0,s.jsx)(l,{schema:t}),(0,s.jsx)("textarea",{className:"input-textarea",value:a,onChange:e=>(function(e){if(r(e),""===e.trim())return void c(null);try{JSON.parse(e),c(null)}catch(e){e instanceof SyntaxError?c(e.message):c("Invalid JSON")}})(e.target.value),rows:6,spellCheck:!1,placeholder:"{}"}),i&&(0,s.jsx)("div",{className:"json-parse-error",children:i})]})}},3957:(e,t,a)=>{Promise.resolve().then(a.bind(a,1321))},9275:(e,t,a)=>{"use strict";a.d(t,{StationProvider:()=>i,q:()=>r});var s=a(8111),n=a(5271);let l=(0,n.createContext)({connected:!1,events:[]});function r(){return(0,n.useContext)(l)}function i(e){let{children:t}=e,[a,r]=(0,n.useState)([]),{connected:i}=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 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),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(r,e)}},e.onerror=()=>{null==e||e.close()}}(),()=>{l=!0,t&&clearTimeout(t),null==e||e.close()}},[]),{connected:t}}((0,n.useCallback)(e=>{r(t=>[e,...t].slice(0,100))},[]));return(0,s.jsx)(l.Provider,{value:{connected:i,events:a},children:t})}}},e=>{e.O(0,[935,285,814,743,358],()=>e(e.s=3957)),_N_E=e.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[861],{2142:(e,t,r)=>{Promise.resolve().then(r.bind(r,8690))},3055:(e,t,r)=>{"use strict";r.d(t,{q:()=>i});var a=r(8111),s=r(5271);function n(e){let{schema:t}=e;if("object"!==t.type||!t.properties)return null;let r=Object.entries(t.properties);return 0===r.length?null:(0,a.jsxs)("div",{className:"schema-ref",children:[(0,a.jsx)("div",{className:"schema-ref-title",children:"Expected Input"}),r.map(e=>{let[t,r]=e;return(0,a.jsxs)("div",{className:"schema-field",children:[(0,a.jsx)("span",{className:"schema-field-name",children:t}),(0,a.jsx)("span",{className:"schema-field-type".concat(r.required?"":" schema-field-type--optional"),children:r.type})]},t)})]})}function i(e){let{schema:t,value:r,onChange:i}=e,[l,c]=(0,s.useState)(null),[o,d]=(0,s.useState)(!1);return(0,s.useEffect)(()=>{if(!o){if(t&&"{}"===r){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 r={};for(let[a,s]of Object.entries(t.properties))r[a]=e(s);return r}default:return null}}(t),null,2);"{}"!==e&&i(e)}d(!0)}},[t,r,i,o]),(0,a.jsxs)("div",{children:[t&&"object"===t.type&&t.properties&&(0,a.jsx)(n,{schema:t}),(0,a.jsx)("textarea",{className:"input-textarea",value:r,onChange:e=>(function(e){if(i(e),""===e.trim())return void c(null);try{JSON.parse(e),c(null)}catch(e){e instanceof SyntaxError?c(e.message):c("Invalid JSON")}})(e.target.value),rows:6,spellCheck:!1,placeholder:"{}"}),l&&(0,a.jsx)("div",{className:"json-parse-error",children:l})]})}},8690:(e,t,r)=>{"use strict";r.d(t,{DynamicBroadcastDetail:()=>d});var a=r(8111),s=r(5271),n=r(4736),i=r(593),l=r(7646),c=r(8145),o=r(3055);function d(e){let{name:t}=e,r=(0,i.gf)(),d=(0,n.useRouter)(),[u,m]=(0,s.useState)(null),[h,p]=(0,s.useState)([]),[f,g]=(0,s.useState)(""),[x,v]=(0,s.useState)(null),[j,y]=(0,s.useState)([]),[S,b]=(0,s.useState)(!0),[N,B]=(0,s.useState)(!1),[E,O]=(0,s.useState)(null),[C,D]=(0,s.useState)(!1),[k,w]=(0,s.useState)("{}"),[J,z]=(0,s.useState)(null);async function T(){let e;O(null);try{e=JSON.parse(f)}catch(e){O("JSON parse error: ".concat(e instanceof Error?e.message:String(e)));return}try{let t=await r.validateBroadcastDefinition(e);v(t.data)}catch(e){O(e instanceof Error?e.message:String(e))}}async function A(){let e;O(null),B(!0);try{e=JSON.parse(f)}catch(e){O("JSON parse error: ".concat(e instanceof Error?e.message:String(e))),B(!1);return}try{let a=await r.saveBroadcastDefinition(e);m(a.data);let s=await r.getBroadcastDefinitionVersions(t);p(s.data),v({ok:!0,errors:[]})}catch(e){O(e instanceof Error?e.message:String(e))}finally{B(!1)}}async function V(){if(confirm('Delete dynamic broadcast "'.concat(t,'"? Run history is retained.')))try{await r.deleteBroadcastDefinition(t),d.push("/broadcasts")}catch(e){O(e instanceof Error?e.message:String(e))}}async function _(){let e;O(null);try{e=JSON.parse(k)}catch(e){O("JSON parse error: ".concat(e instanceof Error?e.message:String(e)));return}try{let a=await r.triggerDynamicBroadcast(t,e);z(a.data.id),D(!1)}catch(e){O(e instanceof Error?e.message:String(e))}}return((0,l.rT)([{label:"Broadcasts",href:"/broadcasts"},{label:t}],"broadcasts"),(0,s.useEffect)(()=>{Promise.all([r.getBroadcastDefinition(t),r.getBroadcastDefinitionVersions(t).catch(()=>({data:[]})),r.getSignals().catch(()=>({data:[]}))]).then(e=>{let[t,r,a]=e;m(t.data),g(JSON.stringify(function(e){let{version:t,createdAt:r,updatedAt:a,deletedAt:s,createdBy:n,...i}=e;return i}(t.data),null,2)),p(r.data),y(a.data)}).catch(e=>O(e instanceof Error?e.message:String(e))).finally(()=>b(!1))},[t]),S)?(0,a.jsxs)("div",{children:[(0,a.jsx)("h1",{className:"page-title",children:t}),(0,a.jsx)("div",{className:"loading-bar",children:(0,a.jsx)("div",{className:"loading-bar-fill"})})]}):u?(0,a.jsxs)("div",{children:[(0,a.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",marginBottom:"0.5rem"},children:[(0,a.jsxs)("h1",{className:"page-title",style:{margin:0},children:[(0,a.jsx)("span",{className:"mono",children:t}),(0,a.jsxs)("span",{style:{marginLeft:"0.5rem",color:"var(--muted)",fontSize:"0.875rem"},children:["v",u.version]})]}),(0,a.jsxs)("div",{style:{display:"flex",gap:"0.5rem"},children:[(0,a.jsx)("button",{className:"btn",onClick:()=>D(!C),children:C?"Cancel":"Trigger"}),(0,a.jsx)("button",{className:"btn btn--danger",onClick:V,children:"Delete"})]})]}),J&&(0,a.jsxs)("div",{style:{marginBottom:"0.75rem",padding:"0.5rem 0.75rem",background:"var(--success-bg, #efe)",color:"var(--success, #060)",borderRadius:"4px",fontSize:"0.8125rem"},children:["Triggered run ",(0,a.jsx)("span",{className:"mono",children:J})]}),C&&(0,a.jsxs)("div",{style:{marginBottom:"1rem",padding:"0.75rem",border:"1px solid var(--border)",borderRadius:"4px"},children:[(0,a.jsx)("div",{className:"mono",style:{fontSize:"0.75rem",color:"var(--muted)",marginBottom:"0.5rem"},children:"Trigger input"}),(0,a.jsx)(o.q,{schema:null,value:k,onChange:w}),(0,a.jsx)("div",{style:{marginTop:"0.5rem"},children:(0,a.jsx)("button",{className:"btn btn--primary",onClick:_,children:"Dispatch"})})]}),(0,a.jsx)(c.J,{json:f,onChange:g,validation:x,onValidationStale:()=>v(null),signals:j,onValidate:T,onSave:A,saveLabel:N?"Saving...":"Save (creates v".concat(u.version+1,")"),saving:N,error:E}),h.length>0&&(0,a.jsxs)("section",{style:{marginTop:"2rem"},children:[(0,a.jsx)("h2",{style:{fontSize:"0.875rem",textTransform:"uppercase",letterSpacing:"0.05em",color:"var(--muted)",marginBottom:"0.5rem"},children:"Version history"}),(0,a.jsxs)("table",{className:"station-table",children:[(0,a.jsx)("thead",{children:(0,a.jsxs)("tr",{children:[(0,a.jsx)("th",{children:"Version"}),(0,a.jsx)("th",{children:"Updated"}),(0,a.jsx)("th",{children:"Author"}),(0,a.jsx)("th",{children:"Status"})]})}),(0,a.jsx)("tbody",{children:h.map(e=>{var r;return(0,a.jsxs)("tr",{className:"clickable-row",onClick:()=>d.push("/broadcasts/dyn/".concat(encodeURIComponent(t),"/v/").concat(e.version)),children:[(0,a.jsxs)("td",{className:"mono",children:["v",e.version]}),(0,a.jsx)("td",{className:"mono",style:{fontSize:"0.75rem",color:"var(--muted)"},children:new Date(e.updatedAt).toLocaleString()}),(0,a.jsx)("td",{className:"mono",style:{fontSize:"0.75rem",color:"var(--muted)"},children:null!=(r=e.createdBy)?r:"—"}),(0,a.jsx)("td",{className:"mono",style:{fontSize:"0.75rem"},children:e.deletedAt?(0,a.jsx)("span",{style:{color:"var(--error, #b00)"},children:"deleted"}):e.version===u.version?"current":"archived"})]},e.version)})})]})]})]}):(0,a.jsxs)("div",{children:[(0,a.jsx)("h1",{className:"page-title",children:t}),(0,a.jsx)("div",{className:"empty-state",children:(0,a.jsx)("p",{className:"empty-state-text",children:null!=E?E:"Not found."})})]})}}},e=>{e.O(0,[285,145,814,743,358],()=>e(e.s=2142)),_N_E=e.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[719],{593:(e,t,n)=>{"use strict";async function o(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 s(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:()=>o("/health"),getSignals:()=>o("/signals"),getScheduledSignals:()=>o("/signals/scheduled"),getSignal:e=>o("/signals/".concat(encodeURIComponent(e))),getSignalRuns:e=>o("/signals/".concat(encodeURIComponent(e),"/runs")),triggerSignal:(e,t)=>o("/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 o("/runs".concat(n?"?".concat(n):""))},getRunStats:()=>o("/runs/stats"),getRun:e=>o("/runs/".concat(e)),getRunSteps:e=>o("/runs/".concat(e,"/steps")),getRunLogs:e=>o("/runs/".concat(e,"/logs")),cancelRun:e=>o("/runs/".concat(e,"/cancel"),{method:"POST"}),rerunRun:e=>o("/runs/".concat(e,"/rerun"),{method:"POST"}),retryRun:e=>o("/runs/".concat(e,"/retry"),{method:"POST"}),getBroadcasts:()=>o("/broadcasts"),getBroadcast:e=>o("/broadcasts/".concat(encodeURIComponent(e))),triggerBroadcast:(e,t)=>o("/broadcasts/".concat(encodeURIComponent(e),"/trigger"),{method:"POST",body:JSON.stringify({input:null!=t?t:{}})}),getBroadcastRuns:e=>o("/broadcasts/".concat(encodeURIComponent(e),"/runs")),getBroadcastRun:e=>o("/broadcast-runs/".concat(e)),getBroadcastRunNodes:e=>o("/broadcast-runs/".concat(e,"/nodes")),getBroadcastRunLogs:e=>o("/broadcast-runs/".concat(e,"/logs")),cancelBroadcastRun:e=>o("/broadcast-runs/".concat(e,"/cancel"),{method:"POST"}),rerunBroadcastRun:e=>o("/broadcast-runs/".concat(e,"/rerun"),{method:"POST"}),getBroadcastDefinitions:()=>o("/v1/broadcast-definitions"),getBroadcastDefinition:e=>o("/v1/broadcast-definitions/".concat(encodeURIComponent(e))),getBroadcastDefinitionVersions:e=>o("/v1/broadcast-definitions/".concat(encodeURIComponent(e),"/versions")),saveBroadcastDefinition:e=>o("/v1/broadcast-definitions",{method:"POST",body:JSON.stringify(e)}),validateBroadcastDefinition:e=>o("/v1/broadcast-definitions/validate",{method:"POST",body:JSON.stringify(e)}),deleteBroadcastDefinition:e=>o("/v1/broadcast-definitions/".concat(encodeURIComponent(e)),{method:"DELETE"}),triggerDynamicBroadcast:(e,t)=>o("/v1/trigger-dynamic-broadcast",{method:"POST",body:JSON.stringify({broadcastName:e,input:null!=t?t:{}})}),getSchedules:e=>{let t=new URLSearchParams;(null==e?void 0:e.kind)&&t.set("kind",e.kind),(null==e?void 0:e.enabled)!==void 0&&t.set("enabled",String(e.enabled));let n=t.toString();return o("/v1/schedules".concat(n?"?".concat(n):""))},getSchedule:e=>o("/v1/schedules/".concat(e)),createSchedule:e=>o("/v1/schedules",{method:"POST",body:JSON.stringify(e)}),updateSchedule:(e,t)=>o("/v1/schedules/".concat(e),{method:"PATCH",body:JSON.stringify(t)}),deleteSchedule:e=>o("/v1/schedules/".concat(e),{method:"DELETE"}),previewSchedule:function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:5;return o("/v1/schedules/".concat(e,"/preview"),{method:"POST",body:JSON.stringify({count:t})})},evaluateExpression:(e,t)=>o("/v1/expressions/evaluate",{method:"POST",body:JSON.stringify({node:e,context:t})}),validateExpression:(e,t)=>o("/v1/expressions/validate",{method:"POST",body:JSON.stringify({node:e,schemaContext:t})}),parseExpression:e=>o("/v1/expressions/parse",{method:"POST",body:JSON.stringify({source:e})}),getApiKeys:()=>o("/v1/keys"),createApiKey:(e,t)=>o("/v1/keys",{method:"POST",body:JSON.stringify({name:e,scopes:t})}),revokeApiKey:e=>o("/v1/keys/".concat(e),{method:"DELETE"})}}n.d(t,{T5:()=>a,gf:()=>i,iD:()=>s,ri:()=>r})},2311:(e,t,n)=>{Promise.resolve().then(n.bind(n,5617))},5617:(e,t,n)=>{"use strict";n.d(t,{VersionView:()=>d});var o=n(8111),a=n(5271),s=n(5935),r=n.n(s),i=n(593),l=n(7646),c=n(6990);function d(e){var t,n;let{name:s,version:d}=e,p=(0,i.gf)(),[h,f]=(0,a.useState)([]),[v,y]=(0,a.useState)(null),[b,S]=(0,a.useState)(null),[x,j]=(0,a.useState)(!0),[N,O]=(0,a.useState)(null);(0,l.rT)([{label:"Broadcasts",href:"/broadcasts"},{label:s,href:"/broadcasts/dyn/".concat(encodeURIComponent(s))},{label:"v".concat(d)}],"broadcasts"),(0,a.useEffect)(()=>{Promise.all([p.getBroadcastDefinitionVersions(s),p.getBroadcastDefinition(s).then(e=>e.data,()=>null)]).then(e=>{var t;let[n]=e;f(n.data);let o=n.data.find(e=>e.version===d);y(null!=o?o:null);let a=n.data.find(e=>e.version===d-1);S(null!=(t=null==a?void 0:a.version)?t:null)}).catch(e=>O(e instanceof Error?e.message:String(e))).finally(()=>j(!1))},[s,d]);let T=(0,a.useMemo)(()=>{var e;return null!=(e=h.find(e=>e.version===b))?e:null},[h,b]),w=(0,a.useMemo)(()=>v&&T?function(e,t){let n=JSON.stringify(e,null,2).split("\n"),o=JSON.stringify(t,null,2).split("\n"),a=new Map;for(let e=0;e<n.length;e++){let t=a.get(n[e]);t?t.push(e):a.set(n[e],[e])}let s=new Map;for(let e=0;e<o.length;e++){let t=s.get(o[e]);t?t.push(e):s.set(o[e],[e])}let r=new Set,i=new Set;for(let e=0;e<o.length;e++){let t=a.get(o[e]);t&&0!==t.length?t.shift():r.add(e)}for(let e=0;e<n.length;e++){let t=s.get(n[e]);t&&0!==t.length?t.shift():i.add(e)}return{addedLines:r,removedLines:i}}(m(T),m(v)):null,[v,T]);return x?(0,o.jsxs)("div",{children:[(0,o.jsxs)("h1",{className:"page-title",children:[s," v",d]}),(0,o.jsx)("div",{className:"loading-bar",children:(0,o.jsx)("div",{className:"loading-bar-fill"})})]}):v?(0,o.jsxs)("div",{children:[(0,o.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",marginBottom:"1rem"},children:[(0,o.jsxs)("h1",{className:"page-title",style:{margin:0},children:[(0,o.jsx)("span",{className:"mono",children:s}),(0,o.jsxs)("span",{style:{marginLeft:"0.5rem",color:"var(--muted)",fontSize:"0.875rem"},children:["v",d]}),v.deletedAt&&(0,o.jsx)("span",{style:{marginLeft:"0.75rem",fontSize:"0.6875rem",padding:"0.125rem 0.375rem",borderRadius:"3px",background:"var(--error-bg, #fee)",color:"var(--error, #b00)"},children:"deleted"})]}),(0,o.jsx)(r(),{href:"/broadcasts/dyn/".concat(encodeURIComponent(s)),className:"btn",children:"Back to current"})]}),(0,o.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"minmax(0, 1fr) minmax(0, 1fr)",gap:"1rem",marginBottom:"1rem"},children:[(0,o.jsxs)("div",{children:[(0,o.jsx)("div",{className:"mono",style:g,children:"Compare to"}),(0,o.jsxs)("select",{className:"mono",value:null!=b?b:"",onChange:e=>S(e.target.value?Number(e.target.value):null),style:{width:"100%",padding:"0.5rem 0.625rem",border:"1px solid var(--border)",borderRadius:"4px",background:"var(--surface)",color:"var(--text)",fontSize:"0.875rem"},children:[(0,o.jsx)("option",{value:"",children:"— No comparison —"}),h.filter(e=>e.version!==d).map(e=>(0,o.jsxs)("option",{value:e.version,children:["v",e.version,e.deletedAt?" (deleted)":""," — ",new Date(e.updatedAt).toLocaleString()]},e.version))]})]}),(0,o.jsx)("div",{className:"mono",style:{fontSize:"0.75rem",color:"var(--muted)",alignSelf:"end"},children:T?"Diffing v".concat(T.version," → v").concat(v.version):"Showing the spec as-saved (no diff)."})]}),(0,o.jsxs)("div",{style:{display:"grid",gridTemplateColumns:T?"minmax(0, 1fr) minmax(0, 1fr)":"1fr",gap:"1rem"},children:[T&&(0,o.jsx)(u,{title:"v".concat(T.version),spec:T,highlight:null!=(t=null==w?void 0:w.removedLines)?t:new Set,side:"left"}),(0,o.jsx)(u,{title:"v".concat(v.version),spec:v,highlight:null!=(n=null==w?void 0:w.addedLines)?n:new Set,side:"right"})]}),(0,o.jsx)(c.F,{title:"Inspect this version",snippets:[{label:"Get this version",method:"GET",path:"/api/v1/broadcast-definitions/".concat(encodeURIComponent(s),"/versions/").concat(d)},{label:"List all versions",method:"GET",path:"/api/v1/broadcast-definitions/".concat(encodeURIComponent(s),"/versions")}]})]}):(0,o.jsxs)("div",{children:[(0,o.jsxs)("h1",{className:"page-title",children:[s," v",d]}),(0,o.jsx)("div",{className:"empty-state",children:(0,o.jsx)("p",{className:"empty-state-text",children:null!=N?N:"Version not found."})})]})}function u(e){let{title:t,spec:n,highlight:a,side:s}=e,r=JSON.stringify(m(n),null,2).split("\n");return(0,o.jsxs)("div",{children:[(0,o.jsx)("div",{className:"mono",style:g,children:t}),(0,o.jsx)("pre",{className:"mono",style:{margin:0,padding:"0.5rem",background:"var(--surface)",border:"1px solid var(--border)",borderRadius:"4px",fontSize:"0.75rem",lineHeight:1.5,overflowX:"auto",maxHeight:"640px",overflowY:"auto"},children:r.map((e,t)=>(0,o.jsx)("div",{style:{padding:"0 0.25rem",background:a.has(t)?"left"===s?"rgba(196, 131, 74, 0.18)":"rgba(107, 153, 98, 0.18)":"transparent",whiteSpace:"pre"},children:e||" "},t))})]})}function m(e){let{createdAt:t,updatedAt:n,deletedAt:o,createdBy:a,...s}=e;return function e(t){if(Array.isArray(t))return t.map(t=>e(t));if(t&&"object"==typeof t){let n={};for(let o of Object.keys(t).sort())n[o]=e(t[o]);return n}return t}(s)}let g={display:"block",fontSize:"0.75rem",color:"var(--muted)",textTransform:"uppercase",letterSpacing:"0.05em",marginBottom:"0.375rem"}},6990:(e,t,n)=>{"use strict";n.d(t,{F:()=>s});var o=n(8111),a=n(5271);function s(e){let{title:t="API equivalent",snippets:n}=e,[s,r]=(0,a.useState)(!1),[i,l]=(0,a.useState)(null),[c,d]=(0,a.useState)(null);if(0===n.length)return null;async function u(e,t){try{var n;if(null==(n=navigator.clipboard)?void 0:n.writeText){await navigator.clipboard.writeText(e),l(t),setTimeout(()=>l(e=>e===t?null:e),1500);return}throw Error("clipboard API unavailable")}catch(n){try{let n=document.createElement("textarea");n.value=e,n.style.position="fixed",n.style.left="-9999px",document.body.appendChild(n),n.select();let o=document.execCommand("copy");if(document.body.removeChild(n),o)l(t),setTimeout(()=>l(e=>e===t?null:e),1500);else throw Error("execCommand copy returned false")}catch(e){d(t),setTimeout(()=>d(e=>e===t?null:e),2e3)}}}return(0,o.jsxs)("details",{open:s,onToggle:e=>r(e.target.open),style:{marginTop:"1.5rem",border:"1px solid var(--border)",borderRadius:"4px",background:"var(--surface)"},children:[(0,o.jsxs)("summary",{style:{padding:"0.5rem 0.75rem",fontSize:"0.75rem",fontFamily:"var(--mono-font, monospace)",color:"var(--muted)",textTransform:"uppercase",letterSpacing:"0.05em",cursor:"pointer",listStyle:"none"},children:["▸ ",t]}),(0,o.jsx)("div",{style:{padding:"0.5rem 0.75rem 0.75rem"},children:n.map((e,t)=>{let a=function(e){var t;let n=[];if(e.query)for(let[t,o]of Object.entries(e.query))void 0!==o&&n.push("".concat(encodeURIComponent(t),"=").concat(encodeURIComponent(String(o))));let o="".concat(e.path).concat(n.length?"?".concat(n.join("&")):""),a=(null==(t=window.location)?void 0:t.origin)?window.location.origin:"https://your-station.example.com",s=[];if(s.push("curl -X ".concat(e.method," \\")),s.push(" ".concat(a).concat(o," \\")),s.push(" -H 'Authorization: Bearer sk_live_…' \\"),void 0!==e.body){s.push(" -H 'Content-Type: application/json' \\");let t="string"==typeof e.body?e.body:JSON.stringify(e.body,null,2);s.push(" -d ".concat(JSON.stringify(t)))}else s[s.length-1]=s[s.length-1].replace(/ \\$/,"");return s.join("\n")}(e);return(0,o.jsxs)("div",{style:{marginBottom:t===n.length-1?0:"0.75rem"},children:[(0,o.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",marginBottom:"0.25rem"},children:[(0,o.jsx)("div",{className:"mono",style:{fontSize:"0.75rem",color:"var(--muted)"},children:e.label}),(0,o.jsx)("button",{type:"button",className:"btn btn--sm",onClick:()=>u(a,t),title:c===t?"Copy failed — select the text manually":"",children:i===t?"Copied":c===t?"Copy failed":"Copy"})]}),(0,o.jsx)("pre",{className:"mono",style:{margin:0,padding:"0.5rem 0.75rem",background:"var(--bg, #fff)",border:"1px solid var(--border)",borderRadius:"4px",fontSize:"0.75rem",overflowX:"auto",whiteSpace:"pre"},children:a})]},t)})})]})}},7646:(e,t,n)=>{"use strict";n.d(t,{Hc:()=>a,iQ:()=>r,rT:()=>s});var o=n(5271);let a=(0,o.createContext)({segments:[],activeSection:null,setSegments:()=>{},setActiveSection:()=>{}});function s(e,t){let n=(0,o.useContext)(a);(0,o.useEffect)(()=>{n.setSegments(e),n.setActiveSection(t)},[JSON.stringify(e),t])}function r(){return(0,o.useContext)(a)}}},e=>{e.O(0,[935,814,743,358],()=>e(e.s=2311)),_N_E=e.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[310],{3861:(e,a,t)=>{"use strict";t.r(a),t.d(a,{default:()=>d});var n=t(8111),r=t(5271),s=t(4736),i=t(593),c=t(7646),l=t(8145);let o=JSON.stringify({name:"myBroadcast",failurePolicy:"fail-fast",timeout:3e5,nodes:[{name:"first",signalName:"<existing-signal-name>",dependsOn:[]}]},null,2);function d(){let e=(0,i.gf)(),a=(0,s.useRouter)(),[t,d]=(0,r.useState)(o),[u,f]=(0,r.useState)(null),[g,S]=(0,r.useState)([]),[h,m]=(0,r.useState)(!1),[y,v]=(0,r.useState)(null);async function N(){let a;v(null);try{a=JSON.parse(t)}catch(e){v("JSON parse error: ".concat(e instanceof Error?e.message:String(e)));return}try{let t=await e.validateBroadcastDefinition(a);f(t.data)}catch(e){v(e instanceof Error?e.message:String(e))}}async function p(){let n;v(null),m(!0);try{n=JSON.parse(t)}catch(e){v("JSON parse error: ".concat(e instanceof Error?e.message:String(e))),m(!1);return}try{let t=await e.saveBroadcastDefinition(n);a.push("/broadcasts/dyn/".concat(encodeURIComponent(t.data.name)))}catch(e){v(e instanceof Error?e.message:String(e))}finally{m(!1)}}return(0,c.rT)([{label:"Broadcasts",href:"/broadcasts"},{label:"New dynamic"}],"broadcasts"),(0,r.useEffect)(()=>{e.getSignals().then(e=>S(e.data)).catch(()=>{})},[]),(0,n.jsxs)("div",{children:[(0,n.jsx)("h1",{className:"page-title",children:"New dynamic broadcast"}),(0,n.jsx)(l.J,{json:t,onChange:d,validation:u,onValidationStale:()=>f(null),signals:g,onValidate:N,onSave:p,saveLabel:h?"Saving...":"Save (creates v1)",saving:h,error:y})]})}},4134:(e,a,t)=>{Promise.resolve().then(t.bind(t,3861))}},e=>{e.O(0,[285,145,814,743,358],()=>e(e.s=4134)),_N_E=e.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[131],{593:(e,t,n)=>{"use strict";async function a(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 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 o(){await fetch("".concat("","/api/auth/logout"),{method:"POST",credentials:"include"})}function i(){return{getHealth:()=>a("/health"),getSignals:()=>a("/signals"),getScheduledSignals:()=>a("/signals/scheduled"),getSignal:e=>a("/signals/".concat(encodeURIComponent(e))),getSignalRuns:e=>a("/signals/".concat(encodeURIComponent(e),"/runs")),triggerSignal:(e,t)=>a("/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 a("/runs".concat(n?"?".concat(n):""))},getRunStats:()=>a("/runs/stats"),getRun:e=>a("/runs/".concat(e)),getRunSteps:e=>a("/runs/".concat(e,"/steps")),getRunLogs:e=>a("/runs/".concat(e,"/logs")),cancelRun:e=>a("/runs/".concat(e,"/cancel"),{method:"POST"}),rerunRun:e=>a("/runs/".concat(e,"/rerun"),{method:"POST"}),retryRun:e=>a("/runs/".concat(e,"/retry"),{method:"POST"}),getBroadcasts:()=>a("/broadcasts"),getBroadcast:e=>a("/broadcasts/".concat(encodeURIComponent(e))),triggerBroadcast:(e,t)=>a("/broadcasts/".concat(encodeURIComponent(e),"/trigger"),{method:"POST",body:JSON.stringify({input:null!=t?t:{}})}),getBroadcastRuns:e=>a("/broadcasts/".concat(encodeURIComponent(e),"/runs")),getBroadcastRun:e=>a("/broadcast-runs/".concat(e)),getBroadcastRunNodes:e=>a("/broadcast-runs/".concat(e,"/nodes")),getBroadcastRunLogs:e=>a("/broadcast-runs/".concat(e,"/logs")),cancelBroadcastRun:e=>a("/broadcast-runs/".concat(e,"/cancel"),{method:"POST"}),rerunBroadcastRun:e=>a("/broadcast-runs/".concat(e,"/rerun"),{method:"POST"}),getBroadcastDefinitions:()=>a("/v1/broadcast-definitions"),getBroadcastDefinition:e=>a("/v1/broadcast-definitions/".concat(encodeURIComponent(e))),getBroadcastDefinitionVersions:e=>a("/v1/broadcast-definitions/".concat(encodeURIComponent(e),"/versions")),saveBroadcastDefinition:e=>a("/v1/broadcast-definitions",{method:"POST",body:JSON.stringify(e)}),validateBroadcastDefinition:e=>a("/v1/broadcast-definitions/validate",{method:"POST",body:JSON.stringify(e)}),deleteBroadcastDefinition:e=>a("/v1/broadcast-definitions/".concat(encodeURIComponent(e)),{method:"DELETE"}),triggerDynamicBroadcast:(e,t)=>a("/v1/trigger-dynamic-broadcast",{method:"POST",body:JSON.stringify({broadcastName:e,input:null!=t?t:{}})}),getSchedules:e=>{let t=new URLSearchParams;(null==e?void 0:e.kind)&&t.set("kind",e.kind),(null==e?void 0:e.enabled)!==void 0&&t.set("enabled",String(e.enabled));let n=t.toString();return a("/v1/schedules".concat(n?"?".concat(n):""))},getSchedule:e=>a("/v1/schedules/".concat(e)),createSchedule:e=>a("/v1/schedules",{method:"POST",body:JSON.stringify(e)}),updateSchedule:(e,t)=>a("/v1/schedules/".concat(e),{method:"PATCH",body:JSON.stringify(t)}),deleteSchedule:e=>a("/v1/schedules/".concat(e),{method:"DELETE"}),previewSchedule:function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:5;return a("/v1/schedules/".concat(e,"/preview"),{method:"POST",body:JSON.stringify({count:t})})},evaluateExpression:(e,t)=>a("/v1/expressions/evaluate",{method:"POST",body:JSON.stringify({node:e,context:t})}),validateExpression:(e,t)=>a("/v1/expressions/validate",{method:"POST",body:JSON.stringify({node:e,schemaContext:t})}),parseExpression:e=>a("/v1/expressions/parse",{method:"POST",body:JSON.stringify({source:e})}),getApiKeys:()=>a("/v1/keys"),createApiKey:(e,t)=>a("/v1/keys",{method:"POST",body:JSON.stringify({name:e,scopes:t})}),revokeApiKey:e=>a("/v1/keys/".concat(e),{method:"DELETE"})}}n.d(t,{T5:()=>s,gf:()=>i,iD:()=>r,ri:()=>o})},2679:(e,t,n)=>{Promise.resolve().then(n.bind(n,9976))},3055:(e,t,n)=>{"use strict";n.d(t,{q:()=>o});var a=n(8111),s=n(5271);function r(e){let{schema:t}=e;if("object"!==t.type||!t.properties)return null;let n=Object.entries(t.properties);return 0===n.length?null:(0,a.jsxs)("div",{className:"schema-ref",children:[(0,a.jsx)("div",{className:"schema-ref-title",children:"Expected Input"}),n.map(e=>{let[t,n]=e;return(0,a.jsxs)("div",{className:"schema-field",children:[(0,a.jsx)("span",{className:"schema-field-name",children:t}),(0,a.jsx)("span",{className:"schema-field-type".concat(n.required?"":" schema-field-type--optional"),children:n.type})]},t)})]})}function o(e){let{schema:t,value:n,onChange:o}=e,[i,c]=(0,s.useState)(null),[l,d]=(0,s.useState)(!1);return(0,s.useEffect)(()=>{if(!l){if(t&&"{}"===n){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 n={};for(let[a,s]of Object.entries(t.properties))n[a]=e(s);return n}default:return null}}(t),null,2);"{}"!==e&&o(e)}d(!0)}},[t,n,o,l]),(0,a.jsxs)("div",{children:[t&&"object"===t.type&&t.properties&&(0,a.jsx)(r,{schema:t}),(0,a.jsx)("textarea",{className:"input-textarea",value:n,onChange:e=>(function(e){if(o(e),""===e.trim())return void c(null);try{JSON.parse(e),c(null)}catch(e){e instanceof SyntaxError?c(e.message):c("Invalid JSON")}})(e.target.value),rows:6,spellCheck:!1,placeholder:"{}"}),i&&(0,a.jsx)("div",{className:"json-parse-error",children:i})]})}},4736:(e,t,n)=>{"use strict";var a=n(1504);n.o(a,"useParams")&&n.d(t,{useParams:function(){return a.useParams}}),n.o(a,"usePathname")&&n.d(t,{usePathname:function(){return a.usePathname}}),n.o(a,"useRouter")&&n.d(t,{useRouter:function(){return a.useRouter}})},6990:(e,t,n)=>{"use strict";n.d(t,{F:()=>r});var a=n(8111),s=n(5271);function r(e){let{title:t="API equivalent",snippets:n}=e,[r,o]=(0,s.useState)(!1),[i,c]=(0,s.useState)(null),[l,d]=(0,s.useState)(null);if(0===n.length)return null;async function m(e,t){try{var n;if(null==(n=navigator.clipboard)?void 0:n.writeText){await navigator.clipboard.writeText(e),c(t),setTimeout(()=>c(e=>e===t?null:e),1500);return}throw Error("clipboard API unavailable")}catch(n){try{let n=document.createElement("textarea");n.value=e,n.style.position="fixed",n.style.left="-9999px",document.body.appendChild(n),n.select();let a=document.execCommand("copy");if(document.body.removeChild(n),a)c(t),setTimeout(()=>c(e=>e===t?null:e),1500);else throw Error("execCommand copy returned false")}catch(e){d(t),setTimeout(()=>d(e=>e===t?null:e),2e3)}}}return(0,a.jsxs)("details",{open:r,onToggle:e=>o(e.target.open),style:{marginTop:"1.5rem",border:"1px solid var(--border)",borderRadius:"4px",background:"var(--surface)"},children:[(0,a.jsxs)("summary",{style:{padding:"0.5rem 0.75rem",fontSize:"0.75rem",fontFamily:"var(--mono-font, monospace)",color:"var(--muted)",textTransform:"uppercase",letterSpacing:"0.05em",cursor:"pointer",listStyle:"none"},children:["▸ ",t]}),(0,a.jsx)("div",{style:{padding:"0.5rem 0.75rem 0.75rem"},children:n.map((e,t)=>{let s=function(e){var t;let n=[];if(e.query)for(let[t,a]of Object.entries(e.query))void 0!==a&&n.push("".concat(encodeURIComponent(t),"=").concat(encodeURIComponent(String(a))));let a="".concat(e.path).concat(n.length?"?".concat(n.join("&")):""),s=(null==(t=window.location)?void 0:t.origin)?window.location.origin:"https://your-station.example.com",r=[];if(r.push("curl -X ".concat(e.method," \\")),r.push(" ".concat(s).concat(a," \\")),r.push(" -H 'Authorization: Bearer sk_live_…' \\"),void 0!==e.body){r.push(" -H 'Content-Type: application/json' \\");let t="string"==typeof e.body?e.body:JSON.stringify(e.body,null,2);r.push(" -d ".concat(JSON.stringify(t)))}else r[r.length-1]=r[r.length-1].replace(/ \\$/,"");return r.join("\n")}(e);return(0,a.jsxs)("div",{style:{marginBottom:t===n.length-1?0:"0.75rem"},children:[(0,a.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",marginBottom:"0.25rem"},children:[(0,a.jsx)("div",{className:"mono",style:{fontSize:"0.75rem",color:"var(--muted)"},children:e.label}),(0,a.jsx)("button",{type:"button",className:"btn btn--sm",onClick:()=>m(s,t),title:l===t?"Copy failed — select the text manually":"",children:i===t?"Copied":l===t?"Copy failed":"Copy"})]}),(0,a.jsx)("pre",{className:"mono",style:{margin:0,padding:"0.5rem 0.75rem",background:"var(--bg, #fff)",border:"1px solid var(--border)",borderRadius:"4px",fontSize:"0.75rem",overflowX:"auto",whiteSpace:"pre"},children:s})]},t)})})]})}},7646:(e,t,n)=>{"use strict";n.d(t,{Hc:()=>s,iQ:()=>o,rT:()=>r});var a=n(5271);let s=(0,a.createContext)({segments:[],activeSection:null,setSegments:()=>{},setActiveSection:()=>{}});function r(e,t){let n=(0,a.useContext)(s);(0,a.useEffect)(()=>{n.setSegments(e),n.setActiveSection(t)},[JSON.stringify(e),t])}function o(){return(0,a.useContext)(s)}},9976:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>h});var a=n(8111),s=n(5271),r=n(5935),o=n.n(r),i=n(4736),c=n(593),l=n(7646),d=n(3055),m=n(6990);function u(e){return e<1e3?"".concat(e,"ms"):e<6e4?"".concat((e/1e3).toFixed(0),"s"):e<36e5?"".concat((e/6e4).toFixed(0),"m"):"".concat((e/36e5).toFixed(0),"h")}function h(){let e=(0,c.gf)(),t=(0,i.useRouter)(),[n,r]=(0,s.useState)([]),[h,p]=(0,s.useState)([]),[g,y]=(0,s.useState)(!0),[f,b]=(0,s.useState)(null),[x,v]=(0,s.useState)("{}"),[j,S]=(0,s.useState)(!1);async function N(t,n){S(!0);try{let a=JSON.parse(x);n?await e.triggerDynamicBroadcast(t,a):await e.triggerBroadcast(t,a),b(null),v("{}")}catch(e){e instanceof Error&&console.error("Trigger failed:",e.message)}S(!1)}function T(e){f===e?b(null):b(e),v("{}")}return((0,l.rT)([{label:"Broadcasts"}],"broadcasts"),(0,s.useEffect)(()=>{Promise.all([e.getBroadcasts().catch(()=>({data:[]})),e.getBroadcastDefinitions().catch(()=>({data:[]}))]).then(e=>{let[t,n]=e;r(t.data),p(n.data)}).finally(()=>y(!1))},[]),g)?(0,a.jsxs)("div",{children:[(0,a.jsx)("h1",{className:"page-title",children:"Broadcasts"}),(0,a.jsx)("div",{className:"loading-bar",children:(0,a.jsx)("div",{className:"loading-bar-fill"})})]}):(0,a.jsxs)("div",{children:[(0,a.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",marginBottom:"1rem"},children:[(0,a.jsx)("h1",{className:"page-title",style:{margin:0},children:"Broadcasts"}),(0,a.jsx)(o(),{href:"/broadcasts/new",className:"btn btn--primary",children:"+ New dynamic broadcast"})]}),(0,a.jsxs)("h2",{style:{fontSize:"0.875rem",textTransform:"uppercase",letterSpacing:"0.05em",color:"var(--muted)",marginTop:"1.5rem",marginBottom:"0.5rem"},children:["File-defined (",n.length,")"]}),0===n.length?(0,a.jsx)("div",{className:"empty-state",children:(0,a.jsx)("p",{className:"empty-state-text",children:"No file-defined broadcasts discovered."})}):(0,a.jsxs)("table",{className:"station-table",children:[(0,a.jsx)("thead",{children:(0,a.jsxs)("tr",{children:[(0,a.jsx)("th",{children:"Name"}),(0,a.jsx)("th",{children:"Nodes"}),(0,a.jsx)("th",{children:"Failure Policy"}),(0,a.jsx)("th",{children:"Timeout"}),(0,a.jsx)("th",{})]})}),(0,a.jsx)("tbody",{children:n.map((e,n)=>f===e.name?(0,a.jsx)("tr",{className:"reveal-item",style:{animationDelay:"".concat(40*n,"ms")},children:(0,a.jsx)("td",{colSpan:5,style:{padding:0},children:(0,a.jsxs)("div",{style:{padding:"0.75rem"},children:[(0,a.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",marginBottom:"0.75rem"},children:[(0,a.jsx)("span",{className:"mono",style:{fontWeight:600},children:e.name}),(0,a.jsxs)("span",{style:{color:"var(--muted)",fontSize:"0.8125rem"},children:[e.nodes.length," nodes / ",e.failurePolicy," / ",null!==e.timeout?u(e.timeout):"—"]})]}),(0,a.jsx)(d.q,{schema:null,value:x,onChange:v}),(0,a.jsxs)("div",{style:{marginTop:"0.5rem",display:"flex",gap:"0.5rem"},children:[(0,a.jsx)("button",{className:"btn btn--primary",onClick:()=>N(e.name,!1),disabled:j,children:j?"Dispatching...":"Dispatch"}),(0,a.jsx)("button",{className:"btn",onClick:()=>T(e.name),children:"Cancel"})]})]})})},e.name):(0,a.jsxs)("tr",{className:"reveal-item clickable-row",style:{animationDelay:"".concat(40*n,"ms")},onClick:()=>t.push("/broadcasts/".concat(encodeURIComponent(e.name))),children:[(0,a.jsx)("td",{className:"mono",children:e.name}),(0,a.jsx)("td",{className:"mono",children:e.nodes.length}),(0,a.jsx)("td",{className:"mono",style:{color:"var(--muted)"},children:e.failurePolicy}),(0,a.jsx)("td",{className:"mono",style:{fontSize:"0.8125rem"},children:null!==e.timeout?u(e.timeout):"—"}),(0,a.jsx)("td",{children:(0,a.jsx)("button",{className:"btn btn--sm btn--primary",onClick:t=>{t.stopPropagation(),T(e.name)},children:"Trigger"})})]},e.name))})]}),(0,a.jsxs)("h2",{style:{fontSize:"0.875rem",textTransform:"uppercase",letterSpacing:"0.05em",color:"var(--muted)",marginTop:"2rem",marginBottom:"0.5rem"},children:["Dynamic (",h.length,")"]}),0===h.length?(0,a.jsx)("div",{className:"empty-state",children:(0,a.jsxs)("p",{className:"empty-state-text",children:["No dynamic broadcasts. ",(0,a.jsx)(o(),{href:"/broadcasts/new",children:"Create one"}),"."]})}):(0,a.jsxs)("table",{className:"station-table",children:[(0,a.jsx)("thead",{children:(0,a.jsxs)("tr",{children:[(0,a.jsx)("th",{children:"Name"}),(0,a.jsx)("th",{children:"Version"}),(0,a.jsx)("th",{children:"Nodes"}),(0,a.jsx)("th",{children:"Failure Policy"}),(0,a.jsx)("th",{children:"Timeout"}),(0,a.jsx)("th",{})]})}),(0,a.jsx)("tbody",{children:h.map((e,n)=>{let s="dyn:".concat(e.name);return f===s?(0,a.jsx)("tr",{className:"reveal-item",style:{animationDelay:"".concat(40*n,"ms")},children:(0,a.jsx)("td",{colSpan:6,style:{padding:0},children:(0,a.jsxs)("div",{style:{padding:"0.75rem"},children:[(0,a.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",marginBottom:"0.75rem"},children:[(0,a.jsx)("span",{className:"mono",style:{fontWeight:600},children:e.name}),(0,a.jsxs)("span",{style:{color:"var(--muted)",fontSize:"0.8125rem"},children:["v",e.version," / ",e.nodes.length," nodes / ",e.failurePolicy]})]}),(0,a.jsx)(d.q,{schema:null,value:x,onChange:v}),(0,a.jsxs)("div",{style:{marginTop:"0.5rem",display:"flex",gap:"0.5rem"},children:[(0,a.jsx)("button",{className:"btn btn--primary",onClick:()=>N(e.name,!0),disabled:j,children:j?"Dispatching...":"Dispatch"}),(0,a.jsx)("button",{className:"btn",onClick:()=>T(s),children:"Cancel"})]})]})})},e.name):(0,a.jsxs)("tr",{className:"reveal-item clickable-row",style:{animationDelay:"".concat(40*n,"ms")},onClick:()=>t.push("/broadcasts/dyn/".concat(encodeURIComponent(e.name))),children:[(0,a.jsx)("td",{className:"mono",children:e.name}),(0,a.jsxs)("td",{className:"mono",children:["v",e.version]}),(0,a.jsx)("td",{className:"mono",children:e.nodes.length}),(0,a.jsx)("td",{className:"mono",style:{color:"var(--muted)"},children:e.failurePolicy}),(0,a.jsx)("td",{className:"mono",style:{fontSize:"0.8125rem"},children:e.timeout?u(e.timeout):"—"}),(0,a.jsx)("td",{children:(0,a.jsx)("button",{className:"btn btn--sm btn--primary",onClick:e=>{e.stopPropagation(),T(s)},children:"Trigger"})})]},e.name)})})]}),(0,a.jsx)(m.F,{title:"List & trigger broadcasts",snippets:[{label:"List file-defined broadcasts",method:"GET",path:"/api/v1/broadcasts"},{label:"List dynamic broadcasts",method:"GET",path:"/api/v1/broadcast-definitions"},{label:"Trigger a static broadcast",method:"POST",path:"/api/v1/trigger-broadcast",body:{broadcastName:"<name>",input:{}}},{label:"Trigger a dynamic broadcast",method:"POST",path:"/api/v1/trigger-dynamic-broadcast",body:{broadcastName:"<name>",input:{}}}]})]})}}},e=>{e.O(0,[935,814,743,358],()=>e(e.s=2679)),_N_E=e.O()}]);
|
package/.next/standalone/packages/station-kit/.next/static/chunks/app/layout-e14e14f3e5b0b8a9.js
ADDED
|
@@ -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 i(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 a(){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"}),rerunRun:e=>s("/runs/".concat(e,"/rerun"),{method:"POST"}),retryRun:e=>s("/runs/".concat(e,"/retry"),{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"}),rerunBroadcastRun:e=>s("/broadcast-runs/".concat(e,"/rerun"),{method:"POST"}),getBroadcastDefinitions:()=>s("/v1/broadcast-definitions"),getBroadcastDefinition:e=>s("/v1/broadcast-definitions/".concat(encodeURIComponent(e))),getBroadcastDefinitionVersions:e=>s("/v1/broadcast-definitions/".concat(encodeURIComponent(e),"/versions")),saveBroadcastDefinition:e=>s("/v1/broadcast-definitions",{method:"POST",body:JSON.stringify(e)}),validateBroadcastDefinition:e=>s("/v1/broadcast-definitions/validate",{method:"POST",body:JSON.stringify(e)}),deleteBroadcastDefinition:e=>s("/v1/broadcast-definitions/".concat(encodeURIComponent(e)),{method:"DELETE"}),triggerDynamicBroadcast:(e,t)=>s("/v1/trigger-dynamic-broadcast",{method:"POST",body:JSON.stringify({broadcastName:e,input:null!=t?t:{}})}),getSchedules:e=>{let t=new URLSearchParams;(null==e?void 0:e.kind)&&t.set("kind",e.kind),(null==e?void 0:e.enabled)!==void 0&&t.set("enabled",String(e.enabled));let n=t.toString();return s("/v1/schedules".concat(n?"?".concat(n):""))},getSchedule:e=>s("/v1/schedules/".concat(e)),createSchedule:e=>s("/v1/schedules",{method:"POST",body:JSON.stringify(e)}),updateSchedule:(e,t)=>s("/v1/schedules/".concat(e),{method:"PATCH",body:JSON.stringify(t)}),deleteSchedule:e=>s("/v1/schedules/".concat(e),{method:"DELETE"}),previewSchedule:function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:5;return s("/v1/schedules/".concat(e,"/preview"),{method:"POST",body:JSON.stringify({count:t})})},evaluateExpression:(e,t)=>s("/v1/expressions/evaluate",{method:"POST",body:JSON.stringify({node:e,context:t})}),validateExpression:(e,t)=>s("/v1/expressions/validate",{method:"POST",body:JSON.stringify({node:e,schemaContext:t})}),parseExpression:e=>s("/v1/expressions/parse",{method:"POST",body:JSON.stringify({source:e})}),getApiKeys:()=>s("/v1/keys"),createApiKey:(e,t)=>s("/v1/keys",{method:"POST",body:JSON.stringify({name:e,scopes:t})}),revokeApiKey:e=>s("/v1/keys/".concat(e),{method:"DELETE"})}}n.d(t,{T5:()=>r,gf:()=>o,iD:()=>i,ri:()=>a})},783:(e,t,n)=>{"use strict";n.d(t,{A:()=>o,AuthProvider:()=>c,S:()=>d});var s=n(8111),r=n(5271),i=n(593);let a=(0,r.createContext)({authenticated:!0,logout:async()=>{}});function o(){return(0,r.useContext)(a)}function c(e){let{children:t,loginPage:n}=e,[o,c]=(0,r.useState)("loading");(0,r.useEffect)(()=>{(0,i.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,i.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)(a.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),i=n(593),a=n(783);function o(){let e=(0,a.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,i.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"})]})]})})}},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,9129)),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:()=>y});var s=n(8111),r=n(5271),i=n(5935),a=n.n(i),o=n(4736),c=n(9275),l=n(7646),d=n(9129),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 v(){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 j(){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:"7",r:"2"}),(0,s.jsx)("path",{d:"M7 1v1.5M7 11.5V13M1 7h1.5M11.5 7H13M2.76 2.76l1.06 1.06M10.18 10.18l1.06 1.06M2.76 11.24l1.06-1.06M10.18 3.82l1.06-1.06"})]})}function p(){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:"7",r:"5.5"}),(0,s.jsx)("path",{d:"M7 4v3l2 1.5"})]})}function f(){return(0,s.jsxs)("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",stroke:"currentColor",strokeWidth:"1.2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:[(0,s.jsx)("path",{d:"M5 1h4M5.5 1v4L2 11.5a1.5 1.5 0 0 0 1.3 2.3h7.4a1.5 1.5 0 0 0 1.3-2.3L8.5 5V1"}),(0,s.jsx)("path",{d:"M3.5 8.5h7"})]})}function b(e){let{href:t,label:n,section:r,icon:i}=e,c=(0,o.usePathname)(),{activeSection:d}=(0,l.iQ)(),u=d?d===r:"/"===t?"/"===c:c.startsWith(t);return(0,s.jsxs)(a(),{href:t,className:u?"active":"",children:[i,(0,s.jsx)("span",{className:"nav-label",children:n})]})}function y(e){let{children:t}=e,{connected:n}=(0,c.q)(),{segments:i}=(0,l.iQ)(),{theme:o,toggle:y}=(0,d.D)(),{logout:S}=(0,u.A)(),[k,w]=(0,r.useState)(h),C=(0,r.useCallback)(()=>{w(e=>{let t=!e;return localStorage.setItem("station-sidebar",t?"collapsed":"expanded"),t})},[]);return(0,s.jsxs)("div",{className:"station-layout","data-collapsed":k,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)(b,{href:"/",label:"Overview",section:"overview",icon:(0,s.jsx)(g,{})}),(0,s.jsx)(b,{href:"/signals",label:"Signals",section:"signals",icon:(0,s.jsx)(m,{})}),(0,s.jsx)(b,{href:"/broadcasts",label:"Broadcasts",section:"broadcasts",icon:(0,s.jsx)(v,{})}),(0,s.jsx)(b,{href:"/schedules",label:"Schedules",section:"schedules",icon:(0,s.jsx)(p,{})}),(0,s.jsx)("div",{className:"station-sidebar-nav-label",style:{marginTop:"1rem"},children:"Tools"}),(0,s.jsx)(b,{href:"/playground/expression",label:"Expressions",section:"playground",icon:(0,s.jsx)(f,{})}),(0,s.jsx)("div",{className:"station-sidebar-nav-label",style:{marginTop:"1rem"},children:"Admin"}),(0,s.jsx)(b,{href:"/settings",label:"Settings",section:"settings",icon:(0,s.jsx)(j,{})})]}),(0,s.jsx)("button",{className:"sidebar-collapse-btn",onClick:C,title:k?"Expand sidebar":"Collapse sidebar","aria-label":k?"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:k?(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===i.length?(0,s.jsx)("span",{className:"breadcrumb-segment",children:"overview"}):i.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)(a(),{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:y,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:S,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})]})]})}},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}})},5152:(e,t,n)=>{"use strict";n.d(t,{BreadcrumbProvider:()=>a});var s=n(8111),r=n(5271),i=n(7646);function a(e){let{children:t}=e,[n,a]=(0,r.useState)([]),[o,c]=(0,r.useState)(null),l=(0,r.useCallback)(e=>a(e),[]),d=(0,r.useCallback)(e=>c(e),[]);return(0,s.jsx)(i.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:()=>a,rT:()=>i});var s=n(5271);let r=(0,s.createContext)({segments:[],activeSection:null,setSegments:()=>{},setActiveSection:()=>{}});function i(e,t){let n=(0,s.useContext)(r);(0,s.useEffect)(()=>{n.setSegments(e),n.setActiveSection(t)},[JSON.stringify(e),t])}function a(){return(0,s.useContext)(r)}},9129:(e,t,n)=>{"use strict";n.d(t,{D:()=>a,ThemeProvider:()=>c});var s=n(8111),r=n(5271);let i=(0,r.createContext)({theme:"light",toggle:()=>{}});function a(){return(0,r.useContext)(i)}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,a]=(0,r.useState)(o);(0,r.useEffect)(()=>{document.documentElement.setAttribute("data-theme",n),localStorage.setItem("station-theme",n)},[n]);let c=(0,r.useCallback)(()=>{a(e=>"light"===e?"dark":"light")},[]);return(0,s.jsx)(i.Provider,{value:{theme:n,toggle:c},children:t})}},9275:(e,t,n)=>{"use strict";n.d(t,{StationProvider:()=>o,q:()=>a});var s=n(8111),r=n(5271);let i=(0,r.createContext)({connected:!1,events:[]});function a(){return(0,r.useContext)(i)}function o(e){let{children:t}=e,[n,a]=(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,i=!1;return!function a(){if(i)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),!i){let e=Math.min(1e3*Math.pow(2,r),1e4);r++,t=setTimeout(a,e)}},e.onerror=()=>{null==e||e.close()}}(),()=>{i=!0,t&&clearTimeout(t),null==e||e.close()}},[]),{connected:t}}((0,r.useCallback)(e=>{a(t=>[e,...t].slice(0,100))},[]));return(0,s.jsx)(i.Provider,{value:{connected:o,events:n},children:t})}},9469:()=>{}},e=>{e.O(0,[506,935,814,743,358],()=>e(e.s=1786)),_N_E=e.O()}]);
|
package/.next/standalone/packages/station-kit/.next/static/chunks/app/page-aac41ef7a470daab.js
ADDED
|
@@ -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 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 o(){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"}),rerunRun:e=>n("/runs/".concat(e,"/rerun"),{method:"POST"}),retryRun:e=>n("/runs/".concat(e,"/retry"),{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"}),rerunBroadcastRun:e=>n("/broadcast-runs/".concat(e,"/rerun"),{method:"POST"}),getBroadcastDefinitions:()=>n("/v1/broadcast-definitions"),getBroadcastDefinition:e=>n("/v1/broadcast-definitions/".concat(encodeURIComponent(e))),getBroadcastDefinitionVersions:e=>n("/v1/broadcast-definitions/".concat(encodeURIComponent(e),"/versions")),saveBroadcastDefinition:e=>n("/v1/broadcast-definitions",{method:"POST",body:JSON.stringify(e)}),validateBroadcastDefinition:e=>n("/v1/broadcast-definitions/validate",{method:"POST",body:JSON.stringify(e)}),deleteBroadcastDefinition:e=>n("/v1/broadcast-definitions/".concat(encodeURIComponent(e)),{method:"DELETE"}),triggerDynamicBroadcast:(e,t)=>n("/v1/trigger-dynamic-broadcast",{method:"POST",body:JSON.stringify({broadcastName:e,input:null!=t?t:{}})}),getSchedules:e=>{let t=new URLSearchParams;(null==e?void 0:e.kind)&&t.set("kind",e.kind),(null==e?void 0:e.enabled)!==void 0&&t.set("enabled",String(e.enabled));let a=t.toString();return n("/v1/schedules".concat(a?"?".concat(a):""))},getSchedule:e=>n("/v1/schedules/".concat(e)),createSchedule:e=>n("/v1/schedules",{method:"POST",body:JSON.stringify(e)}),updateSchedule:(e,t)=>n("/v1/schedules/".concat(e),{method:"PATCH",body:JSON.stringify(t)}),deleteSchedule:e=>n("/v1/schedules/".concat(e),{method:"DELETE"}),previewSchedule:function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:5;return n("/v1/schedules/".concat(e,"/preview"),{method:"POST",body:JSON.stringify({count:t})})},evaluateExpression:(e,t)=>n("/v1/expressions/evaluate",{method:"POST",body:JSON.stringify({node:e,context:t})}),validateExpression:(e,t)=>n("/v1/expressions/validate",{method:"POST",body:JSON.stringify({node:e,schemaContext:t})}),parseExpression:e=>n("/v1/expressions/parse",{method:"POST",body:JSON.stringify({source:e})}),getApiKeys:()=>n("/v1/keys"),createApiKey:(e,t)=>n("/v1/keys",{method:"POST",body:JSON.stringify({name:e,scopes:t})}),revokeApiKey:e=>n("/v1/keys/".concat(e),{method:"DELETE"})}}a.d(t,{T5:()=>s,gf:()=>o,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})}},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)}},8419:(e,t,a)=>{"use strict";a.r(t),a.d(t,{default:()=>m});var n=a(8111),s=a(5271),r=a(4736),c=a(5935),o=a.n(c),l=a(593),i=a(9275),d=a(7646),u=a(1253),h=a(1489);function m(){let e=(0,l.gf)(),t=(0,r.useRouter)(),{events:a}=(0,i.q)(),[c,m]=(0,s.useState)(null),[g,v]=(0,s.useState)([]),[f,x]=(0,s.useState)([]),[S,p]=(0,s.useState)(!0);return((0,d.rT)([{label:"Overview"}],"overview"),(0,s.useEffect)(()=>{!async function(){try{let[t,a,n]=await Promise.all([e.getRunStats(),e.getRuns({status:"failed"}),e.getScheduledSignals()]);m(t.data),v(a.data.slice(0,10)),x(n.data)}catch(e){e instanceof Error&&console.error("Failed to load overview data:",e.message)}p(!1)}()},[]),(0,s.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=>x(e.data)).catch(e=>console.error("Failed to refresh scheduled:",e)))},[a.length]),S)?(0,n.jsxs)("div",{children:[(0,n.jsx)("h1",{className:"page-title",children:"Overview"}),(0,n.jsx)("div",{className:"loading-bar",children:(0,n.jsx)("div",{className:"loading-bar-fill"})})]}):(0,n.jsxs)("div",{children:[(0,n.jsx)("h1",{className:"page-title",children:"Overview"}),c&&(0,n.jsxs)("div",{className:"stat-grid",children:[(0,n.jsxs)("div",{className:"stat-card",children:[(0,n.jsx)("div",{className:"stat-card-label",children:"Pending"}),(0,n.jsx)("div",{className:"stat-card-value",children:c.pending})]}),(0,n.jsxs)("div",{className:"stat-card",children:[(0,n.jsx)("div",{className:"stat-card-label",children:"Running"}),(0,n.jsx)("div",{className:"stat-card-value",style:{color:"var(--patina)"},children:c.running})]}),(0,n.jsxs)("div",{className:"stat-card",children:[(0,n.jsx)("div",{className:"stat-card-label",children:"Completed"}),(0,n.jsx)("div",{className:"stat-card-value",style:{color:"var(--patina)"},children:c.completed})]}),(0,n.jsxs)("div",{className:"stat-card",children:[(0,n.jsx)("div",{className:"stat-card-label",children:"Failed"}),(0,n.jsx)("div",{className:"stat-card-value",style:{color:"var(--rust)"},children:c.failed})]}),(0,n.jsxs)("div",{className:"stat-card",children:[(0,n.jsx)("div",{className:"stat-card-label",children:"Cancelled"}),(0,n.jsx)("div",{className:"stat-card-value",children:c.cancelled})]})]}),f.length>0&&(0,n.jsxs)("div",{className:"detail-section",children:[(0,n.jsx)("div",{className:"detail-section-label",children:"Scheduled"}),(0,n.jsxs)("table",{className:"station-table",children:[(0,n.jsx)("thead",{children:(0,n.jsxs)("tr",{children:[(0,n.jsx)("th",{children:"Signal"}),(0,n.jsx)("th",{children:"Interval"}),(0,n.jsx)("th",{children:"Next Run"}),(0,n.jsx)("th",{children:"Last Run"}),(0,n.jsx)("th",{children:"Last Status"})]})}),(0,n.jsx)("tbody",{children:f.map((e,a)=>(0,n.jsxs)("tr",{className:"reveal-item clickable-row",style:{animationDelay:"".concat(40*a,"ms")},onClick:()=>t.push("/signals/".concat(encodeURIComponent(e.name))),children:[(0,n.jsx)("td",{className:"mono",children:e.name}),(0,n.jsx)("td",{className:"mono",style:{color:"var(--muted)",fontSize:"0.8125rem"},children:e.interval}),(0,n.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 n=Math.floor(a/60);if(n<60)return"in ".concat(n,"m");let s=Math.floor(n/60);return s<24?"in ".concat(s,"h"):"in ".concat(Math.floor(s/24),"d")}(e.nextRunAt):"—"}),(0,n.jsx)("td",{children:e.lastRunAt?(0,n.jsx)(h.s,{date:e.lastRunAt}):(0,n.jsx)("span",{className:"mono",style:{fontSize:"0.8125rem",color:"var(--muted)"},children:"—"})}),(0,n.jsx)("td",{children:e.lastStatus?(0,n.jsx)(u.W,{status:e.lastStatus}):(0,n.jsx)("span",{className:"mono",style:{fontSize:"0.8125rem",color:"var(--muted)"},children:"—"})})]},e.name))})]})]}),g.length>0&&(0,n.jsxs)("div",{className:"detail-section",children:[(0,n.jsx)("div",{className:"detail-section-label",children:"Recent Failures"}),(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:"Error"}),(0,n.jsx)("th",{children:"Time"})]})}),(0,n.jsx)("tbody",{children:g.map((e,a)=>{var s;return(0,n.jsxs)("tr",{className:"reveal-item clickable-row",style:{animationDelay:"".concat(40*a,"ms")},onClick:()=>t.push("/runs/".concat(e.id)),children:[(0,n.jsx)("td",{children:(0,n.jsx)(u.W,{status:e.status})}),(0,n.jsx)("td",{children:(0,n.jsx)(o(),{href:"/signals/".concat(e.signalName),className:"mono",onClick:e=>e.stopPropagation(),children:e.signalName})}),(0,n.jsx)("td",{style:{color:"var(--rust)",fontSize:"0.8125rem",fontFamily:"var(--font-mono)",maxWidth:"300px",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},title:null!=(s=e.error)?s:"",children:e.error?e.error.length>60?e.error.slice(0,60)+"...":e.error:"-"}),(0,n.jsx)("td",{children:(0,n.jsx)(h.s,{date:e.createdAt})})]},e.id)})})]})]}),a.length>0&&(0,n.jsxs)("div",{className:"detail-section",children:[(0,n.jsx)("div",{className:"detail-section-label",children:"Live Activity"}),(0,n.jsx)("div",{style:{marginTop:"0.75rem"},children:a.slice(0,20).map((e,a)=>{var s,r,c,o,l,i,d;let u=null!=(o=null!=(c=null==(s=e.data.run)?void 0:s.signalName)?c:e.data.signalName)?o:null,h=null!=(i=null!=(l=null==(r=e.data.run)?void 0:r.id)?l:e.data.runId)?i:null,m=null!=(d=e.data.broadcastRunId)?d:null,g=m?"/broadcasts/".concat(m):h?"/runs/".concat(h):null;return(0,n.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,n.jsx)("span",{style:{color:"var(--rust)",minWidth:"120px"},children:e.type}),u&&(0,n.jsx)("span",{style:{color:"var(--charcoal)"},children:String(u)}),(0,n.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:()=>o,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 o(e){let{children:t}=e,[a,c]=(0,s.useState)([]),{connected:o}=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 o="https:"===window.location.protocol?"wss:":"ws:";(e=new WebSocket("".concat(o,"//").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:o,events:a},children:t})}}},e=>{e.O(0,[935,814,743,358],()=>e(e.s=414)),_N_E=e.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[701],{593:(e,n,t)=>{"use strict";async function s(e,n){let t=await fetch("".concat("","/api").concat(e),{...n,credentials:"include",headers:{"Content-Type":"application/json",...null==n?void 0:n.headers}});if(!t.ok)throw Error((await t.json().catch(()=>({error:"unknown",message:"Request failed."}))).message);return t.json()}async function a(){let e=await fetch("".concat("","/api/auth/check"),{credentials:"include"});return(await e.json()).data}async function r(e,n){return(await fetch("".concat("","/api/auth/login"),{method:"POST",credentials:"include",headers:{"Content-Type":"application/json"},body:JSON.stringify({username:e,password:n})})).ok}async function o(){await fetch("".concat("","/api/auth/logout"),{method:"POST",credentials:"include"})}function i(){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,n)=>s("/signals/".concat(encodeURIComponent(e),"/trigger"),{method:"POST",body:JSON.stringify({input:null!=n?n:{}})}),getRuns:e=>{let n=new URLSearchParams;(null==e?void 0:e.status)&&n.set("status",e.status),(null==e?void 0:e.signalName)&&n.set("signalName",e.signalName);let t=n.toString();return s("/runs".concat(t?"?".concat(t):""))},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"}),rerunRun:e=>s("/runs/".concat(e,"/rerun"),{method:"POST"}),retryRun:e=>s("/runs/".concat(e,"/retry"),{method:"POST"}),getBroadcasts:()=>s("/broadcasts"),getBroadcast:e=>s("/broadcasts/".concat(encodeURIComponent(e))),triggerBroadcast:(e,n)=>s("/broadcasts/".concat(encodeURIComponent(e),"/trigger"),{method:"POST",body:JSON.stringify({input:null!=n?n:{}})}),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"}),rerunBroadcastRun:e=>s("/broadcast-runs/".concat(e,"/rerun"),{method:"POST"}),getBroadcastDefinitions:()=>s("/v1/broadcast-definitions"),getBroadcastDefinition:e=>s("/v1/broadcast-definitions/".concat(encodeURIComponent(e))),getBroadcastDefinitionVersions:e=>s("/v1/broadcast-definitions/".concat(encodeURIComponent(e),"/versions")),saveBroadcastDefinition:e=>s("/v1/broadcast-definitions",{method:"POST",body:JSON.stringify(e)}),validateBroadcastDefinition:e=>s("/v1/broadcast-definitions/validate",{method:"POST",body:JSON.stringify(e)}),deleteBroadcastDefinition:e=>s("/v1/broadcast-definitions/".concat(encodeURIComponent(e)),{method:"DELETE"}),triggerDynamicBroadcast:(e,n)=>s("/v1/trigger-dynamic-broadcast",{method:"POST",body:JSON.stringify({broadcastName:e,input:null!=n?n:{}})}),getSchedules:e=>{let n=new URLSearchParams;(null==e?void 0:e.kind)&&n.set("kind",e.kind),(null==e?void 0:e.enabled)!==void 0&&n.set("enabled",String(e.enabled));let t=n.toString();return s("/v1/schedules".concat(t?"?".concat(t):""))},getSchedule:e=>s("/v1/schedules/".concat(e)),createSchedule:e=>s("/v1/schedules",{method:"POST",body:JSON.stringify(e)}),updateSchedule:(e,n)=>s("/v1/schedules/".concat(e),{method:"PATCH",body:JSON.stringify(n)}),deleteSchedule:e=>s("/v1/schedules/".concat(e),{method:"DELETE"}),previewSchedule:function(e){let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:5;return s("/v1/schedules/".concat(e,"/preview"),{method:"POST",body:JSON.stringify({count:n})})},evaluateExpression:(e,n)=>s("/v1/expressions/evaluate",{method:"POST",body:JSON.stringify({node:e,context:n})}),validateExpression:(e,n)=>s("/v1/expressions/validate",{method:"POST",body:JSON.stringify({node:e,schemaContext:n})}),parseExpression:e=>s("/v1/expressions/parse",{method:"POST",body:JSON.stringify({source:e})}),getApiKeys:()=>s("/v1/keys"),createApiKey:(e,n)=>s("/v1/keys",{method:"POST",body:JSON.stringify({name:e,scopes:n})}),revokeApiKey:e=>s("/v1/keys/".concat(e),{method:"DELETE"})}}t.d(n,{T5:()=>a,gf:()=>i,iD:()=>r,ri:()=>o})},1731:(e,n,t)=>{Promise.resolve().then(t.bind(t,7836))},6990:(e,n,t)=>{"use strict";t.d(n,{F:()=>r});var s=t(8111),a=t(5271);function r(e){let{title:n="API equivalent",snippets:t}=e,[r,o]=(0,a.useState)(!1),[i,c]=(0,a.useState)(null),[l,d]=(0,a.useState)(null);if(0===t.length)return null;async function u(e,n){try{var t;if(null==(t=navigator.clipboard)?void 0:t.writeText){await navigator.clipboard.writeText(e),c(n),setTimeout(()=>c(e=>e===n?null:e),1500);return}throw Error("clipboard API unavailable")}catch(t){try{let t=document.createElement("textarea");t.value=e,t.style.position="fixed",t.style.left="-9999px",document.body.appendChild(t),t.select();let s=document.execCommand("copy");if(document.body.removeChild(t),s)c(n),setTimeout(()=>c(e=>e===n?null:e),1500);else throw Error("execCommand copy returned false")}catch(e){d(n),setTimeout(()=>d(e=>e===n?null:e),2e3)}}}return(0,s.jsxs)("details",{open:r,onToggle:e=>o(e.target.open),style:{marginTop:"1.5rem",border:"1px solid var(--border)",borderRadius:"4px",background:"var(--surface)"},children:[(0,s.jsxs)("summary",{style:{padding:"0.5rem 0.75rem",fontSize:"0.75rem",fontFamily:"var(--mono-font, monospace)",color:"var(--muted)",textTransform:"uppercase",letterSpacing:"0.05em",cursor:"pointer",listStyle:"none"},children:["▸ ",n]}),(0,s.jsx)("div",{style:{padding:"0.5rem 0.75rem 0.75rem"},children:t.map((e,n)=>{let a=function(e){var n;let t=[];if(e.query)for(let[n,s]of Object.entries(e.query))void 0!==s&&t.push("".concat(encodeURIComponent(n),"=").concat(encodeURIComponent(String(s))));let s="".concat(e.path).concat(t.length?"?".concat(t.join("&")):""),a=(null==(n=window.location)?void 0:n.origin)?window.location.origin:"https://your-station.example.com",r=[];if(r.push("curl -X ".concat(e.method," \\")),r.push(" ".concat(a).concat(s," \\")),r.push(" -H 'Authorization: Bearer sk_live_…' \\"),void 0!==e.body){r.push(" -H 'Content-Type: application/json' \\");let n="string"==typeof e.body?e.body:JSON.stringify(e.body,null,2);r.push(" -d ".concat(JSON.stringify(n)))}else r[r.length-1]=r[r.length-1].replace(/ \\$/,"");return r.join("\n")}(e);return(0,s.jsxs)("div",{style:{marginBottom:n===t.length-1?0:"0.75rem"},children:[(0,s.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",marginBottom:"0.25rem"},children:[(0,s.jsx)("div",{className:"mono",style:{fontSize:"0.75rem",color:"var(--muted)"},children:e.label}),(0,s.jsx)("button",{type:"button",className:"btn btn--sm",onClick:()=>u(a,n),title:l===n?"Copy failed — select the text manually":"",children:i===n?"Copied":l===n?"Copy failed":"Copy"})]}),(0,s.jsx)("pre",{className:"mono",style:{margin:0,padding:"0.5rem 0.75rem",background:"var(--bg, #fff)",border:"1px solid var(--border)",borderRadius:"4px",fontSize:"0.75rem",overflowX:"auto",whiteSpace:"pre"},children:a})]},n)})})]})}},7646:(e,n,t)=>{"use strict";t.d(n,{Hc:()=>a,iQ:()=>o,rT:()=>r});var s=t(5271);let a=(0,s.createContext)({segments:[],activeSection:null,setSegments:()=>{},setActiveSection:()=>{}});function r(e,n){let t=(0,s.useContext)(a);(0,s.useEffect)(()=>{t.setSegments(e),t.setActiveSection(n)},[JSON.stringify(e),n])}function o(){return(0,s.useContext)(a)}},7836:(e,n,t)=>{"use strict";t.r(n),t.d(n,{default:()=>l});var s=t(8111),a=t(5271),r=t(593),o=t(7646),i=t(6990);let c=JSON.stringify({input:{amount:250,user:{tier:"premium"}},upstream:{}},null,2);function l(){let e=(0,r.gf)(),[n,t]=(0,a.useState)('input.amount > 100 && input.user.tier == "premium"'),[l,h]=(0,a.useState)(c),[g,y]=(0,a.useState)(""),[x,f]=(0,a.useState)(null),[v,S]=(0,a.useState)(void 0),[b,j]=(0,a.useState)(null),[N,T]=(0,a.useState)(!1),[O,C]=(0,a.useState)(!1);async function R(){f(null),T(!0);try{let t=await e.parseExpression(n);y(JSON.stringify(t.data.node,null,2))}catch(e){f(e instanceof Error?e.message:String(e)),y("")}finally{T(!1)}}async function w(){j(null),S(void 0),C(!0);try{let t;g.trim()?t=JSON.parse(g):(t=(await e.parseExpression(n)).data.node,y(JSON.stringify(t,null,2)));let s=JSON.parse(l),a=await e.evaluateExpression(t,s);S(a.data.value)}catch(e){j(e instanceof Error?e.message:String(e))}finally{C(!1)}}return(0,o.rT)([{label:"Tools"},{label:"Expression playground"}],"playground"),(0,s.jsxs)("div",{children:[(0,s.jsx)("h1",{className:"page-title",children:"Expression playground"}),(0,s.jsx)("p",{style:{color:"var(--muted)",marginBottom:"1.5rem",fontSize:"0.875rem"},children:"Pure, deterministic expressions used in dynamic broadcast `input` mappings and `when` guards. References resolve against `input.*` (broadcast trigger input) and `upstream.nodeName.*` (upstream outputs)."}),(0,s.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:"1rem"},children:[(0,s.jsxs)("section",{children:[(0,s.jsx)(d,{children:"Expression source"}),(0,s.jsx)("textarea",{className:"mono",value:n,onChange:e=>t(e.target.value),spellCheck:!1,rows:4,style:u}),(0,s.jsxs)("div",{style:{marginTop:"0.5rem",display:"flex",gap:"0.5rem"},children:[(0,s.jsx)("button",{className:"btn",onClick:R,disabled:N,children:N?"Parsing...":"Parse → AST"}),(0,s.jsx)("button",{className:"btn btn--primary",onClick:w,disabled:O,children:O?"Evaluating...":"Evaluate"})]}),x&&(0,s.jsx)("div",{style:m,children:x})]}),(0,s.jsxs)("section",{children:[(0,s.jsx)(d,{children:"Context (input + upstream)"}),(0,s.jsx)("textarea",{className:"mono",value:l,onChange:e=>h(e.target.value),spellCheck:!1,rows:10,style:{...u,minHeight:"180px"}})]})]}),(0,s.jsxs)("section",{style:{marginTop:"1.5rem"},children:[(0,s.jsx)(d,{children:"Parsed AST"}),(0,s.jsx)("textarea",{className:"mono",value:g,onChange:e=>y(e.target.value),spellCheck:!1,rows:10,placeholder:"// Click 'Parse' or paste an ExprNode JSON manually.",style:{...u,minHeight:"180px"}})]}),(0,s.jsxs)("section",{style:{marginTop:"1.5rem"},children:[(0,s.jsx)(d,{children:"Result"}),b?(0,s.jsx)("div",{style:m,children:b}):void 0===v?(0,s.jsx)("div",{style:{...p,color:"var(--muted)"},children:"—"}):(0,s.jsx)("pre",{className:"mono",style:p,children:JSON.stringify(v,null,2)})]}),(0,s.jsxs)("section",{style:{marginTop:"1.5rem"},children:[(0,s.jsx)(d,{children:"Reference"}),(0,s.jsxs)("div",{style:{...p,color:"var(--muted)"},children:[(0,s.jsxs)("p",{style:{margin:"0 0 0.5rem 0",fontSize:"0.8125rem",lineHeight:1.6},children:[(0,s.jsx)("strong",{children:"Operators:"})," ",(0,s.jsx)("span",{className:"mono",children:"=="}),", ",(0,s.jsx)("span",{className:"mono",children:"!="}),", ",(0,s.jsx)("span",{className:"mono",children:"<"}),", ",(0,s.jsx)("span",{className:"mono",children:">"}),", ",(0,s.jsx)("span",{className:"mono",children:"<="}),", ",(0,s.jsx)("span",{className:"mono",children:">="}),", ",(0,s.jsx)("span",{className:"mono",children:"&&"}),", ",(0,s.jsx)("span",{className:"mono",children:"||"}),", ",(0,s.jsx)("span",{className:"mono",children:"!"}),", ",(0,s.jsx)("span",{className:"mono",children:"+"}),", ",(0,s.jsx)("span",{className:"mono",children:"-"}),", ",(0,s.jsx)("span",{className:"mono",children:"*"}),", ",(0,s.jsx)("span",{className:"mono",children:"/"})]}),(0,s.jsxs)("p",{style:{margin:"0 0 0.5rem 0",fontSize:"0.8125rem",lineHeight:1.6},children:[(0,s.jsx)("strong",{children:"Refs:"})," ",(0,s.jsx)("span",{className:"mono",children:"input.x"}),", ",(0,s.jsx)("span",{className:"mono",children:"upstream.nodeName.x"}),", ",(0,s.jsx)("span",{className:"mono",children:"nodeName.x"})," (shorthand)"]}),(0,s.jsxs)("p",{style:{margin:"0 0 0.5rem 0",fontSize:"0.8125rem",lineHeight:1.6},children:[(0,s.jsx)("strong",{children:"Literals:"})," numbers, ",(0,s.jsx)("span",{className:"mono",children:'"strings"'}),", ",(0,s.jsx)("span",{className:"mono",children:"true"})," / ",(0,s.jsx)("span",{className:"mono",children:"false"})," / ",(0,s.jsx)("span",{className:"mono",children:"null"})]}),(0,s.jsxs)("p",{style:{margin:"0.75rem 0 0 0",fontSize:"0.8125rem",lineHeight:1.6,paddingTop:"0.5rem",borderTop:"1px dashed var(--border)"},children:[(0,s.jsx)("strong",{children:"Escape hatch:"})," the language is intentionally minimal — no loops, no user-defined functions, no I/O. If you can't express something here, write a code-defined signal that does the logic in TypeScript and reference it from the broadcast graph. The signal is the unit of arbitrary code; the expression layer is for connecting them."]})]})]}),(0,s.jsx)(i.F,{title:"Use these endpoints from your code",snippets:[{label:"Parse string → AST",method:"POST",path:"/api/v1/expressions/parse",body:{source:"input.amount > 100"}},{label:"Evaluate AST against context",method:"POST",path:"/api/v1/expressions/evaluate",body:{node:{kind:"ref",path:["input","x"]},context:{input:{x:42}}}},{label:"Validate AST against schemas",method:"POST",path:"/api/v1/expressions/validate",body:{node:{kind:"ref",path:["input","x"]},schemaContext:{inputSchema:{type:"object",properties:{x:{type:"number"}}},upstreamSchemas:{},expectedSchema:{type:"number"}}}}]})]})}function d(e){let{children:n}=e;return(0,s.jsx)("label",{className:"mono",style:{display:"block",fontSize:"0.75rem",color:"var(--muted)",textTransform:"uppercase",letterSpacing:"0.05em",marginBottom:"0.25rem"},children:n})}let u={width:"100%",padding:"0.625rem 0.75rem",border:"1px solid var(--border)",borderRadius:"4px",background:"var(--surface)",color:"var(--text)",fontSize:"0.8125rem",lineHeight:1.5,fontFamily:"var(--mono-font, monospace)",resize:"vertical"},m={marginTop:"0.75rem",padding:"0.625rem 0.75rem",background:"var(--error-bg, #fee)",color:"var(--error, #b00)",border:"1px solid var(--error, #b00)",borderRadius:"4px",fontSize:"0.8125rem"},p={padding:"0.625rem 0.75rem",background:"var(--surface)",border:"1px solid var(--border)",borderRadius:"4px",fontSize:"0.8125rem",margin:0,whiteSpace:"pre-wrap"}}},e=>{e.O(0,[814,743,358],()=>e(e.s=1731)),_N_E=e.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[293],{593:(e,t,n)=>{"use strict";async function a(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 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 i(){await fetch("".concat("","/api/auth/logout"),{method:"POST",credentials:"include"})}function l(){return{getHealth:()=>a("/health"),getSignals:()=>a("/signals"),getScheduledSignals:()=>a("/signals/scheduled"),getSignal:e=>a("/signals/".concat(encodeURIComponent(e))),getSignalRuns:e=>a("/signals/".concat(encodeURIComponent(e),"/runs")),triggerSignal:(e,t)=>a("/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 a("/runs".concat(n?"?".concat(n):""))},getRunStats:()=>a("/runs/stats"),getRun:e=>a("/runs/".concat(e)),getRunSteps:e=>a("/runs/".concat(e,"/steps")),getRunLogs:e=>a("/runs/".concat(e,"/logs")),cancelRun:e=>a("/runs/".concat(e,"/cancel"),{method:"POST"}),rerunRun:e=>a("/runs/".concat(e,"/rerun"),{method:"POST"}),retryRun:e=>a("/runs/".concat(e,"/retry"),{method:"POST"}),getBroadcasts:()=>a("/broadcasts"),getBroadcast:e=>a("/broadcasts/".concat(encodeURIComponent(e))),triggerBroadcast:(e,t)=>a("/broadcasts/".concat(encodeURIComponent(e),"/trigger"),{method:"POST",body:JSON.stringify({input:null!=t?t:{}})}),getBroadcastRuns:e=>a("/broadcasts/".concat(encodeURIComponent(e),"/runs")),getBroadcastRun:e=>a("/broadcast-runs/".concat(e)),getBroadcastRunNodes:e=>a("/broadcast-runs/".concat(e,"/nodes")),getBroadcastRunLogs:e=>a("/broadcast-runs/".concat(e,"/logs")),cancelBroadcastRun:e=>a("/broadcast-runs/".concat(e,"/cancel"),{method:"POST"}),rerunBroadcastRun:e=>a("/broadcast-runs/".concat(e,"/rerun"),{method:"POST"}),getBroadcastDefinitions:()=>a("/v1/broadcast-definitions"),getBroadcastDefinition:e=>a("/v1/broadcast-definitions/".concat(encodeURIComponent(e))),getBroadcastDefinitionVersions:e=>a("/v1/broadcast-definitions/".concat(encodeURIComponent(e),"/versions")),saveBroadcastDefinition:e=>a("/v1/broadcast-definitions",{method:"POST",body:JSON.stringify(e)}),validateBroadcastDefinition:e=>a("/v1/broadcast-definitions/validate",{method:"POST",body:JSON.stringify(e)}),deleteBroadcastDefinition:e=>a("/v1/broadcast-definitions/".concat(encodeURIComponent(e)),{method:"DELETE"}),triggerDynamicBroadcast:(e,t)=>a("/v1/trigger-dynamic-broadcast",{method:"POST",body:JSON.stringify({broadcastName:e,input:null!=t?t:{}})}),getSchedules:e=>{let t=new URLSearchParams;(null==e?void 0:e.kind)&&t.set("kind",e.kind),(null==e?void 0:e.enabled)!==void 0&&t.set("enabled",String(e.enabled));let n=t.toString();return a("/v1/schedules".concat(n?"?".concat(n):""))},getSchedule:e=>a("/v1/schedules/".concat(e)),createSchedule:e=>a("/v1/schedules",{method:"POST",body:JSON.stringify(e)}),updateSchedule:(e,t)=>a("/v1/schedules/".concat(e),{method:"PATCH",body:JSON.stringify(t)}),deleteSchedule:e=>a("/v1/schedules/".concat(e),{method:"DELETE"}),previewSchedule:function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:5;return a("/v1/schedules/".concat(e,"/preview"),{method:"POST",body:JSON.stringify({count:t})})},evaluateExpression:(e,t)=>a("/v1/expressions/evaluate",{method:"POST",body:JSON.stringify({node:e,context:t})}),validateExpression:(e,t)=>a("/v1/expressions/validate",{method:"POST",body:JSON.stringify({node:e,schemaContext:t})}),parseExpression:e=>a("/v1/expressions/parse",{method:"POST",body:JSON.stringify({source:e})}),getApiKeys:()=>a("/v1/keys"),createApiKey:(e,t)=>a("/v1/keys",{method:"POST",body:JSON.stringify({name:e,scopes:t})}),revokeApiKey:e=>a("/v1/keys/".concat(e),{method:"DELETE"})}}n.d(t,{T5:()=>s,gf:()=>l,iD:()=>r,ri:()=>i})},1253:(e,t,n)=>{"use strict";n.d(t,{W:()=>s});var a=n(8111);function s(e){let{status:t}=e;return(0,a.jsxs)("span",{className:"status-badge status-badge--".concat(t),children:[(0,a.jsx)("span",{className:"status-badge-dot"}),t]})}},1794:(e,t,n)=>{"use strict";n.d(t,{p:()=>r});var a=n(8111),s=n(5271);function r(e){let t,{data:n,label:r}=e,[i,l]=(0,s.useState)(!0),[o,c]=(0,s.useState)(!0),[d,u]=(0,s.useState)("copy"),m=(0,s.useCallback)(()=>{if(!n)return;let e=function(e){try{let t=JSON.parse(e);return JSON.stringify(t,null,2)}catch(t){return e}}(n);navigator.clipboard.writeText(e).then(()=>{u("copied"),setTimeout(()=>u("copy"),1500)}).catch(()=>{u("failed"),setTimeout(()=>u("copy"),1500)})},[n]);if(!n)return null;try{t=JSON.parse(n)}catch(e){t=n}let p="object"==typeof t&&null!==t&&JSON.stringify(t).length>200;return(0,a.jsxs)("div",{children:[r&&(0,a.jsxs)("button",{onClick:()=>l(!i),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:[i?"- ":"+ ",r]}),i&&(0,a.jsxs)("pre",{className:"json-viewer",style:{position:"relative"},children:[(0,a.jsx)("button",{className:"copy-btn",onClick:m,type:"button",children:d}),p&&(0,a.jsx)("button",{onClick:()=>c(!o),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:o?"collapse":"expand"}),function e(t,n,s){if(null===t)return(0,a.jsx)("span",{className:"json-null",children:"null"});if("boolean"==typeof t)return(0,a.jsx)("span",{className:"json-boolean",children:String(t)});if("number"==typeof t)return(0,a.jsx)("span",{className:"json-number",children:t});if("string"==typeof t)return(0,a.jsxs)("span",{className:"json-string",children:['"',t,'"']});if(Array.isArray(t))return 0===t.length?(0,a.jsx)("span",{children:"[]"}):!s&&n>3?(0,a.jsxs)("span",{children:["[",t.length," items]"]}):(0,a.jsxs)("span",{children:["[\n",t.map((r,i)=>(0,a.jsxs)("span",{children:[" ".repeat(n+1),e(r,n+1,s),i<t.length-1?",":"","\n"]},i))," ".repeat(n),"]"]});if("object"==typeof t){let r=Object.entries(t);return 0===r.length?(0,a.jsx)("span",{children:"{}"}):!s&&n>3?(0,a.jsx)("span",{children:"{".concat(r.length," keys}")}):(0,a.jsxs)("span",{children:["{\n",r.map((t,i)=>{let[l,o]=t;return(0,a.jsxs)("span",{children:[" ".repeat(n+1),(0,a.jsxs)("span",{className:"json-key",children:['"',l,'"']}),": ",e(o,n+1,s),i<r.length-1?",":"","\n"]},l)})," ".repeat(n),"}"]})}return(0,a.jsx)("span",{children:String(t)})}(t,0,o)]})]})}},3611:(e,t,n)=>{Promise.resolve().then(n.bind(n,9103))},4736:(e,t,n)=>{"use strict";var a=n(1504);n.o(a,"useParams")&&n.d(t,{useParams:function(){return a.useParams}}),n.o(a,"usePathname")&&n.d(t,{usePathname:function(){return a.usePathname}}),n.o(a,"useRouter")&&n.d(t,{useRouter:function(){return a.useRouter}})},7646:(e,t,n)=>{"use strict";n.d(t,{Hc:()=>s,iQ:()=>i,rT:()=>r});var a=n(5271);let s=(0,a.createContext)({segments:[],activeSection:null,setSegments:()=>{},setActiveSection:()=>{}});function r(e,t){let n=(0,a.useContext)(s);(0,a.useEffect)(()=>{n.setSegments(e),n.setActiveSection(t)},[JSON.stringify(e),t])}function i(){return(0,a.useContext)(s)}},9103:(e,t,n)=>{"use strict";n.d(t,{RunDetail:()=>f});var a=n(8111),s=n(5271),r=n(4736),i=n(5935),l=n.n(i),o=n(593),c=n(9275),d=n(7646),u=n(1253),m=n(1794);function p(e){let{step:t}=e,[n,r]=(0,s.useState)(!1),[i,l]=(0,s.useState)(!1),o=!!t.input,c=!!t.output,d=!!t.error;return o||c||d?(0,a.jsxs)("div",{style:{marginTop:"0.5rem"},children:[d&&(0,a.jsx)("div",{className:"error-block",style:{marginBottom:o||c?"0.5rem":0},children:t.error}),o&&(0,a.jsxs)("div",{style:{marginBottom:c?"0.375rem":0},children:[(0,a.jsxs)("button",{onClick:()=>r(!n),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:[n?"- ":"+ ","input"]}),n&&(0,a.jsx)(m.p,{data:t.input})]}),c&&(0,a.jsxs)("div",{children:[(0,a.jsxs)("button",{onClick:()=>l(!i),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:[i?"- ":"+ ","output"]}),i&&(0,a.jsx)(m.p,{data:t.output})]})]}):null}function h(e){let{steps:t}=e;return 0===t.length?null:(0,a.jsx)("div",{className:"step-timeline",children:t.map((e,t)=>{let n=function(e,t){if(!e)return"";let n=new Date(e).getTime(),a=(t?new Date(t).getTime():Date.now())-n;return a<1e3?"".concat(a,"ms"):a<6e4?"".concat((a/1e3).toFixed(1),"s"):"".concat((a/6e4).toFixed(1),"m")}(e.startedAt,e.completedAt);return(0,a.jsxs)("div",{className:"step-timeline-item reveal-item",style:{animationDelay:"".concat(80*t,"ms")},children:[(0,a.jsx)("div",{className:"step-timeline-dot step-timeline-dot--".concat(e.status)}),(0,a.jsxs)("div",{className:"step-timeline-name",children:[e.name,n&&(0,a.jsx)("span",{style:{marginLeft:"0.5rem",fontFamily:"var(--font-mono)",fontSize:"0.6875rem",color:"var(--muted)"},children:n})]}),(0,a.jsxs)("div",{className:"step-timeline-meta",children:[e.status,e.startedAt&&(0,a.jsx)("span",{style:{marginLeft:"0.375rem",color:"var(--muted-light)"},children:new Date(e.startedAt).toLocaleTimeString()})]}),(0,a.jsx)(p,{step:e})]},e.id)})})}function g(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 f(){var e,t;let n=(0,r.useParams)().id,i=(0,r.useRouter)(),p=(0,o.gf)(),{events:f}=(0,c.q)(),[v,x]=(0,s.useState)(null),[j,b]=(0,s.useState)([]),[y,S]=(0,s.useState)([]),[N,R]=(0,s.useState)(!0),[T,w]=(0,s.useState)(!1),[O,k]=(0,s.useState)(!1),[C,P]=(0,s.useState)(!1),[E,D]=(0,s.useState)(!1),A=(0,s.useRef)(null);async function B(){w(!0);try{await p.cancelRun(n);let e=await p.getRun(n);x(e.data)}catch(e){e instanceof Error&&console.error("Cancel failed:",e.message)}w(!1)}async function J(){k(!0);try{let e=await p.rerunRun(n);i.push("/runs/".concat(e.data.id))}catch(e){e instanceof Error&&console.error("Rerun failed:",e.message)}k(!1)}async function I(){P(!0);try{await p.retryRun(n);let e=await p.getRun(n);x(e.data);let t=await p.getRunSteps(n);b(t.data)}catch(e){e instanceof Error&&console.error("Retry failed:",e.message)}P(!1)}if((0,d.rT)(v?[{label:"Signals",href:"/signals"},{label:v.signalName,href:"/signals/".concat(encodeURIComponent(v.signalName))},{label:"Run ".concat(n.slice(0,8))}]:[{label:"Signals",href:"/signals"},{label:"Run ".concat(n.slice(0,8))}],"signals"),(0,s.useEffect)(()=>{!async function(){try{let[e,t,a]=await Promise.all([p.getRun(n),p.getRunSteps(n),p.getRunLogs(n)]);x(e.data),b(t.data),S(a.data)}catch(e){e instanceof Error&&console.error("Failed to load run:",e.message)}R(!1)}()},[n]),(0,s.useEffect)(()=>{var e,t,a;if(0===f.length)return;let s=f[0];(null!=(a=null==(e=s.data.run)?void 0:e.id)?a:null==(t=s.data)?void 0:t.runId)===n&&("log:output"===s.type?S(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}]}):(p.getRun(n).then(e=>x(e.data)).catch(e=>console.error("Failed to refresh run:",e)),p.getRunSteps(n).then(e=>b(e.data)).catch(e=>console.error("Failed to refresh steps:",e))))},[f.length,n]),(0,s.useEffect)(()=>{var e;null==(e=A.current)||e.scrollIntoView({behavior:"smooth"})},[y.length]),N)return(0,a.jsxs)("div",{children:[(0,a.jsx)("h1",{className:"page-title",children:"Run"}),(0,a.jsx)("div",{className:"loading-bar",children:(0,a.jsx)("div",{className:"loading-bar-fill"})})]});if(!v)return(0,a.jsxs)("div",{children:[(0,a.jsx)("h1",{className:"page-title",children:"Run"}),(0,a.jsx)("div",{className:"empty-state",children:(0,a.jsx)("p",{className:"empty-state-text",children:"Run not found."})})]});let F="pending"===v.status||"running"===v.status,L="failed"===v.status||"completed"===v.status||"cancelled"===v.status,U="failed"===v.status;return(0,a.jsxs)("div",{children:[(0,a.jsxs)("div",{className:"page-header",children:[(0,a.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"0.75rem"},children:[(0,a.jsx)(u.W,{status:v.status}),(0,a.jsx)(l(),{href:"/signals/".concat(v.signalName),className:"page-title",style:{marginBottom:0,textDecoration:"none"},children:v.signalName})]}),(0,a.jsxs)("div",{className:"page-header-actions",children:[U&&(0,a.jsx)("button",{className:"btn",onClick:I,disabled:C,children:C?"Retrying...":"Retry"}),L&&(0,a.jsx)("button",{className:"btn btn--primary",onClick:J,disabled:O,children:O?"Rerunning...":"Rerun"}),F&&(0,a.jsx)("button",{className:"btn btn--danger",onClick:B,disabled:T,children:T?"Cancelling...":"Cancel"})]})]}),(0,a.jsxs)("div",{className:"detail-section",children:[(0,a.jsx)("div",{className:"detail-section-label",children:"Metadata"}),(0,a.jsxs)("div",{className:"detail-grid",children:[(0,a.jsx)("span",{className:"detail-label",children:"ID"}),(0,a.jsxs)("span",{className:"detail-value mono",style:{display:"flex",alignItems:"center",gap:"0.5rem"},children:[v.id,(0,a.jsx)("button",{onClick:function(){navigator.clipboard.writeText(v.id).then(()=>{D(!0),setTimeout(()=>D(!1),1500)}).catch(()=>{})},className:"btn btn--sm",style:{fontSize:"0.625rem",padding:"0.125rem 0.375rem",lineHeight:1.2},children:E?"copied":"copy"})]}),(0,a.jsx)("span",{className:"detail-label",children:"Signal"}),(0,a.jsx)("span",{className:"detail-value",children:(0,a.jsx)(l(),{href:"/signals/".concat(v.signalName),className:"mono meta-value--link",children:v.signalName})}),(0,a.jsx)("span",{className:"detail-label",children:"Kind"}),(0,a.jsx)("span",{className:"detail-value",children:v.kind}),(0,a.jsx)("span",{className:"detail-label",children:"Attempts"}),(0,a.jsxs)("span",{className:"detail-value",children:[v.attempts," of ",v.maxAttempts]}),(0,a.jsx)("span",{className:"detail-label",children:"Timeout"}),(0,a.jsx)("span",{className:"detail-value mono",children:v.timeout?g(v.timeout):"—"}),(0,a.jsx)("span",{className:"detail-label",children:"Duration"}),(0,a.jsx)("span",{className:"detail-value mono",children:function(e,t){if(!e)return"—";let n=new Date(e).getTime();return g((t?new Date(t).getTime():Date.now())-n)}(v.startedAt,v.completedAt)}),(0,a.jsx)("span",{className:"detail-label",children:"Created"}),(0,a.jsx)("span",{className:"detail-value mono",children:v.createdAt}),(0,a.jsx)("span",{className:"detail-label",children:"Started"}),(0,a.jsx)("span",{className:"detail-value mono",children:null!=(e=v.startedAt)?e:"—"}),(0,a.jsx)("span",{className:"detail-label",children:"Completed"}),(0,a.jsx)("span",{className:"detail-value mono",children:null!=(t=v.completedAt)?t:"—"})]})]}),v.error&&(0,a.jsxs)("div",{className:"detail-section",children:[(0,a.jsx)("div",{className:"detail-section-label",children:"Error"}),(0,a.jsx)("div",{className:"error-block",children:v.error})]}),(0,a.jsxs)("div",{className:"detail-section",children:[(0,a.jsx)("div",{className:"detail-section-label",children:"Input"}),(0,a.jsx)(m.p,{data:v.input})]}),v.output&&(0,a.jsxs)("div",{className:"detail-section",children:[(0,a.jsx)("div",{className:"detail-section-label",children:"Output"}),(0,a.jsx)(m.p,{data:v.output})]}),j.length>0&&(0,a.jsxs)("div",{className:"detail-section",children:[(0,a.jsx)("div",{className:"detail-section-label",children:"Steps"}),(0,a.jsx)(h,{steps:j})]}),(0,a.jsxs)("div",{className:"detail-section",children:[(0,a.jsx)("div",{className:"detail-section-label",children:"Logs"}),(0,a.jsxs)("div",{className:"log-container",children:[0===y.length?(0,a.jsx)("div",{style:{padding:"1rem",color:"var(--muted)",fontFamily:"var(--font-mono)",fontSize:"0.75rem"},children:"pending"===v.status?"Waiting for execution...":"No log output captured."}):y.map((e,t)=>(0,a.jsxs)("div",{className:"log-line",style:{color:"stderr"===e.level?"var(--rust)":"var(--charcoal)"},children:[(0,a.jsx)("span",{className:"log-timestamp",children:new Date(e.timestamp).toLocaleTimeString()}),(0,a.jsx)("span",{className:"log-level","data-level":e.level,children:"stderr"===e.level?"ERR":"OUT"}),(0,a.jsx)("span",{className:"log-message",children:e.message})]},t)),(0,a.jsx)("div",{ref:A})]})]})]})}},9275:(e,t,n)=>{"use strict";n.d(t,{StationProvider:()=>l,q:()=>i});var a=n(8111),s=n(5271);let r=(0,s.createContext)({connected:!1,events:[]});function i(){return(0,s.useContext)(r)}function l(e){let{children:t}=e,[n,i]=(0,s.useState)([]),{connected:l}=function(e){let[t,n]=(0,s.useState)(!1),a=(0,s.useRef)(e);return a.current=e,(0,s.useEffect)(()=>{let e=null,t=null,s=0,r=!1;return!function i(){if(r)return;let l="https:"===window.location.protocol?"wss:":"ws:";(e=new WebSocket("".concat(l,"//").concat(window.location.host,"/api/events"))).onopen=()=>{n(!0),s=0},e.onmessage=e=>{try{let t=JSON.parse(e.data);a.current(t)}catch(e){console.error("Failed to parse WebSocket message:",e)}},e.onclose=()=>{if(n(!1),!r){let e=Math.min(1e3*Math.pow(2,s),1e4);s++,t=setTimeout(i,e)}},e.onerror=()=>{null==e||e.close()}}(),()=>{r=!0,t&&clearTimeout(t),null==e||e.close()}},[]),{connected:t}}((0,s.useCallback)(e=>{i(t=>[e,...t].slice(0,100))},[]));return(0,a.jsx)(r.Provider,{value:{connected:l,events:n},children:t})}}},e=>{e.O(0,[935,814,743,358],()=>e(e.s=3611)),_N_E=e.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[323],{583:(e,t,a)=>{Promise.resolve().then(a.bind(a,1028))},1028:(e,t,a)=>{"use strict";a.d(t,{ScheduleEditor:()=>o});var r=a(8111),s=a(5271),n=a(4736),l=a(593),i=a(7646),d=a(7388),c=a(6990);function o(e){var t;let{id:a}=e,o=(0,l.gf)(),u=(0,n.useRouter)(),[m,h]=(0,s.useState)(null),[p,v]=(0,s.useState)(null),[g,x]=(0,s.useState)([]),[f,S]=(0,s.useState)(!0),[b,j]=(0,s.useState)(!1),[y,N]=(0,s.useState)(null),[w,E]=(0,s.useState)(null);async function T(){let e;if(p){if(N(null),p.input.trim())try{e=JSON.parse(p.input)}catch(e){N("Input JSON parse error: ".concat(e instanceof Error?e.message:String(e)));return}j(!0);try{let t=await o.updateSchedule(a,{interval:p.interval,input:e,enabled:p.enabled});h(t.data),E(Date.now());let r=await o.previewSchedule(a,5);x(r.data.fires)}catch(e){N(e instanceof Error?e.message:String(e))}finally{j(!1)}}}async function k(){if(confirm("Delete this schedule?"))try{await o.deleteSchedule(a),u.push("/schedules")}catch(e){N(e instanceof Error?e.message:String(e))}}return((0,i.rT)([{label:"Schedules",href:"/schedules"},{label:null!=(t=null==m?void 0:m.target)?t:a}],"schedules"),(0,s.useEffect)(()=>{o.getSchedule(a).then(e=>{h(e.data),v({kind:e.data.kind,target:e.data.target,interval:e.data.interval,input:void 0!==e.data.input?JSON.stringify(e.data.input,null,2):"{}",enabled:e.data.enabled})}).catch(e=>N(e instanceof Error?e.message:String(e))).finally(()=>S(!1)),o.previewSchedule(a,5).then(e=>x(e.data.fires)).catch(()=>{})},[a]),f)?(0,r.jsxs)("div",{children:[(0,r.jsx)("h1",{className:"page-title",children:"Schedule"}),(0,r.jsx)("div",{className:"loading-bar",children:(0,r.jsx)("div",{className:"loading-bar-fill"})})]}):m&&p?(0,r.jsxs)("div",{children:[(0,r.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",marginBottom:"1rem"},children:[(0,r.jsx)("h1",{className:"page-title",style:{margin:0},children:(0,r.jsx)("span",{className:"mono",children:m.target})}),(0,r.jsx)("button",{className:"btn btn--danger",onClick:k,children:"Delete"})]}),(0,r.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"minmax(0, 2fr) minmax(0, 1fr)",gap:"2rem"},children:[(0,r.jsxs)("div",{children:[(0,r.jsx)(d.Q,{value:p,onChange:v,locked:!0}),y&&(0,r.jsx)("div",{style:{marginTop:"1rem",padding:"0.625rem 0.75rem",background:"var(--error-bg, #fee)",color:"var(--error, #b00)",border:"1px solid var(--error, #b00)",borderRadius:"4px",fontSize:"0.8125rem",maxWidth:"640px"},children:y}),(0,r.jsxs)("div",{style:{marginTop:"1.5rem",display:"flex",gap:"0.5rem",alignItems:"center"},children:[(0,r.jsx)("button",{className:"btn btn--primary",onClick:T,disabled:b,children:b?"Saving...":"Save"}),w&&Date.now()-w<3e3&&(0,r.jsx)("span",{className:"mono",style:{fontSize:"0.75rem",color:"var(--success, #060)"},children:"Saved"})]})]}),(0,r.jsxs)("aside",{children:[(0,r.jsx)("h3",{className:"mono",style:{fontSize:"0.75rem",color:"var(--muted)",textTransform:"uppercase",letterSpacing:"0.05em",marginBottom:"0.5rem"},children:"Next fire times"}),(0,r.jsx)("ul",{style:{listStyle:"none",padding:0,margin:0},children:g.map((e,t)=>(0,r.jsx)("li",{className:"mono",style:{fontSize:"0.8125rem",padding:"0.375rem 0",borderBottom:"1px dashed var(--border)",color:0===t?"var(--text)":"var(--muted)"},children:new Date(e).toLocaleString()},t))}),(0,r.jsx)("h3",{className:"mono",style:{fontSize:"0.75rem",color:"var(--muted)",textTransform:"uppercase",letterSpacing:"0.05em",marginTop:"1.5rem",marginBottom:"0.5rem"},children:"Last run"}),(0,r.jsx)("div",{className:"mono",style:{fontSize:"0.8125rem",color:"var(--muted)"},children:m.lastRunAt?(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("div",{children:new Date(m.lastRunAt).toLocaleString()}),m.lastRunStatus&&(0,r.jsxs)("div",{children:["status: ",m.lastRunStatus]}),m.lastRunId&&(0,r.jsxs)("div",{children:["id: ",m.lastRunId]})]}):"Never run."})]})]}),(0,r.jsx)(c.F,{title:"Manage this schedule",snippets:[{label:"Get",method:"GET",path:"/api/v1/schedules/".concat(a)},{label:"Update",method:"PATCH",path:"/api/v1/schedules/".concat(a),body:{interval:p.interval,enabled:p.enabled,input:function(e){try{return JSON.parse(e)}catch(t){return e}}(p.input)}},{label:"Preview next 5 fires",method:"POST",path:"/api/v1/schedules/".concat(a,"/preview"),body:{count:5}},{label:"Delete",method:"DELETE",path:"/api/v1/schedules/".concat(a)}]})]}):(0,r.jsxs)("div",{children:[(0,r.jsx)("h1",{className:"page-title",children:"Schedule"}),(0,r.jsx)("div",{className:"empty-state",children:(0,r.jsx)("p",{className:"empty-state-text",children:null!=y?y:"Not found."})})]})}}},e=>{e.O(0,[561,814,743,358],()=>e(e.s=583)),_N_E=e.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[646],{3027:(e,r,t)=>{"use strict";t.r(r),t.d(r,{default:()=>h});var n=t(8111),a=t(5271),l=t(4736),s=t(593),i=t(7646),d=t(7388),o=t(6990);let c={kind:"signal",target:"",interval:"5m",input:"{}",enabled:!0},u=/^(\d+)(ms|s|m|h|d|w)$/i,m={ms:1,s:1e3,m:6e4,h:36e5,d:864e5,w:6048e5};function h(){let e=(0,s.gf)(),r=(0,l.useRouter)(),[t,h]=(0,a.useState)(c),[p,g]=(0,a.useState)(!1),[v,b]=(0,a.useState)(null);(0,i.rT)([{label:"Schedules",href:"/schedules"},{label:"New"}],"schedules");let f=(0,a.useMemo)(()=>{let e=function(e){let r=u.exec(e.trim());return r?Number(r[1])*m[r[2].toLowerCase()]:null}(t.interval);if(null===e||e<=0)return[];let r=Date.now(),n=[];for(let t=1;t<=5;t++)n.push(new Date(r+e*t).toISOString());return n},[t.interval]);async function x(){let n;if(b(null),!t.target)return void b("Target is required.");if(t.input.trim())try{n=JSON.parse(t.input)}catch(e){b("Input JSON parse error: ".concat(e instanceof Error?e.message:String(e)));return}g(!0);try{let a=await e.createSchedule({kind:t.kind,target:t.target,interval:t.interval,input:n,enabled:t.enabled});r.push("/schedules/".concat(a.data.id))}catch(e){b(e instanceof Error?e.message:String(e))}finally{g(!1)}}return(0,n.jsxs)("div",{children:[(0,n.jsx)("h1",{className:"page-title",children:"New schedule"}),(0,n.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"minmax(0, 2fr) minmax(0, 1fr)",gap:"2rem"},children:[(0,n.jsxs)("div",{children:[(0,n.jsx)(d.Q,{value:t,onChange:h}),v&&(0,n.jsx)("div",{style:{marginTop:"1rem",padding:"0.625rem 0.75rem",background:"var(--error-bg, #fee)",color:"var(--error, #b00)",border:"1px solid var(--error, #b00)",borderRadius:"4px",fontSize:"0.8125rem",maxWidth:"640px"},children:v}),(0,n.jsxs)("div",{style:{marginTop:"1.5rem",display:"flex",gap:"0.5rem"},children:[(0,n.jsx)("button",{className:"btn btn--primary",onClick:x,disabled:p,children:p?"Creating...":"Create schedule"}),(0,n.jsx)("button",{className:"btn",onClick:()=>r.push("/schedules"),children:"Cancel"})]})]}),(0,n.jsxs)("aside",{children:[(0,n.jsx)("h3",{className:"mono",style:{fontSize:"0.75rem",color:"var(--muted)",textTransform:"uppercase",letterSpacing:"0.05em",marginBottom:"0.5rem"},children:"Next fire times (preview)"}),0===f.length?(0,n.jsx)("div",{className:"mono",style:{fontSize:"0.75rem",color:"var(--error, #b00)"},children:'Invalid interval. Use formats like "30s", "5m", "1h", "1d", "1w".'}):(0,n.jsx)("ul",{style:{listStyle:"none",padding:0,margin:0},children:f.map((e,r)=>(0,n.jsx)("li",{className:"mono",style:{fontSize:"0.8125rem",padding:"0.375rem 0",borderBottom:"1px dashed var(--border)",color:0===r?"var(--text)":"var(--muted)"},children:new Date(e).toLocaleString()},r))})]})]}),(0,n.jsx)(o.F,{title:"Create this schedule",snippets:[{label:"POST /api/v1/schedules",method:"POST",path:"/api/v1/schedules",body:{kind:t.kind,target:t.target,interval:t.interval,enabled:t.enabled,input:function(e){try{return JSON.parse(e)}catch(r){return e}}(t.input)}}]})]})}},8174:(e,r,t)=>{Promise.resolve().then(t.bind(t,3027))}},e=>{e.O(0,[561,814,743,358],()=>e(e.s=8174)),_N_E=e.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[547],{593:(e,t,n)=>{"use strict";async function a(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 s(){let e=await fetch("".concat("","/api/auth/check"),{credentials:"include"});return(await e.json()).data}async function o(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:()=>a("/health"),getSignals:()=>a("/signals"),getScheduledSignals:()=>a("/signals/scheduled"),getSignal:e=>a("/signals/".concat(encodeURIComponent(e))),getSignalRuns:e=>a("/signals/".concat(encodeURIComponent(e),"/runs")),triggerSignal:(e,t)=>a("/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 a("/runs".concat(n?"?".concat(n):""))},getRunStats:()=>a("/runs/stats"),getRun:e=>a("/runs/".concat(e)),getRunSteps:e=>a("/runs/".concat(e,"/steps")),getRunLogs:e=>a("/runs/".concat(e,"/logs")),cancelRun:e=>a("/runs/".concat(e,"/cancel"),{method:"POST"}),rerunRun:e=>a("/runs/".concat(e,"/rerun"),{method:"POST"}),retryRun:e=>a("/runs/".concat(e,"/retry"),{method:"POST"}),getBroadcasts:()=>a("/broadcasts"),getBroadcast:e=>a("/broadcasts/".concat(encodeURIComponent(e))),triggerBroadcast:(e,t)=>a("/broadcasts/".concat(encodeURIComponent(e),"/trigger"),{method:"POST",body:JSON.stringify({input:null!=t?t:{}})}),getBroadcastRuns:e=>a("/broadcasts/".concat(encodeURIComponent(e),"/runs")),getBroadcastRun:e=>a("/broadcast-runs/".concat(e)),getBroadcastRunNodes:e=>a("/broadcast-runs/".concat(e,"/nodes")),getBroadcastRunLogs:e=>a("/broadcast-runs/".concat(e,"/logs")),cancelBroadcastRun:e=>a("/broadcast-runs/".concat(e,"/cancel"),{method:"POST"}),rerunBroadcastRun:e=>a("/broadcast-runs/".concat(e,"/rerun"),{method:"POST"}),getBroadcastDefinitions:()=>a("/v1/broadcast-definitions"),getBroadcastDefinition:e=>a("/v1/broadcast-definitions/".concat(encodeURIComponent(e))),getBroadcastDefinitionVersions:e=>a("/v1/broadcast-definitions/".concat(encodeURIComponent(e),"/versions")),saveBroadcastDefinition:e=>a("/v1/broadcast-definitions",{method:"POST",body:JSON.stringify(e)}),validateBroadcastDefinition:e=>a("/v1/broadcast-definitions/validate",{method:"POST",body:JSON.stringify(e)}),deleteBroadcastDefinition:e=>a("/v1/broadcast-definitions/".concat(encodeURIComponent(e)),{method:"DELETE"}),triggerDynamicBroadcast:(e,t)=>a("/v1/trigger-dynamic-broadcast",{method:"POST",body:JSON.stringify({broadcastName:e,input:null!=t?t:{}})}),getSchedules:e=>{let t=new URLSearchParams;(null==e?void 0:e.kind)&&t.set("kind",e.kind),(null==e?void 0:e.enabled)!==void 0&&t.set("enabled",String(e.enabled));let n=t.toString();return a("/v1/schedules".concat(n?"?".concat(n):""))},getSchedule:e=>a("/v1/schedules/".concat(e)),createSchedule:e=>a("/v1/schedules",{method:"POST",body:JSON.stringify(e)}),updateSchedule:(e,t)=>a("/v1/schedules/".concat(e),{method:"PATCH",body:JSON.stringify(t)}),deleteSchedule:e=>a("/v1/schedules/".concat(e),{method:"DELETE"}),previewSchedule:function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:5;return a("/v1/schedules/".concat(e,"/preview"),{method:"POST",body:JSON.stringify({count:t})})},evaluateExpression:(e,t)=>a("/v1/expressions/evaluate",{method:"POST",body:JSON.stringify({node:e,context:t})}),validateExpression:(e,t)=>a("/v1/expressions/validate",{method:"POST",body:JSON.stringify({node:e,schemaContext:t})}),parseExpression:e=>a("/v1/expressions/parse",{method:"POST",body:JSON.stringify({source:e})}),getApiKeys:()=>a("/v1/keys"),createApiKey:(e,t)=>a("/v1/keys",{method:"POST",body:JSON.stringify({name:e,scopes:t})}),revokeApiKey:e=>a("/v1/keys/".concat(e),{method:"DELETE"})}}n.d(t,{T5:()=>s,gf:()=>i,iD:()=>o,ri:()=>r})},3562:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>m});var a=n(8111),s=n(5271),o=n(5935),r=n.n(o),i=n(4736),c=n(593),d=n(7646),l=n(6990);let u={signal:"Signal","broadcast-static":"Broadcast (file)","broadcast-dynamic":"Broadcast (dynamic)"};function m(){let e=(0,c.gf)(),t=(0,i.useRouter)(),[n,o]=(0,s.useState)([]),[m,h]=(0,s.useState)(!0),[g,p]=(0,s.useState)(null);return((0,d.rT)([{label:"Schedules"}],"schedules"),(0,s.useEffect)(()=>{e.getSchedules().then(e=>o(e.data)).catch(e=>p(e instanceof Error?e.message:String(e))).finally(()=>h(!1))},[]),m)?(0,a.jsxs)("div",{children:[(0,a.jsx)("h1",{className:"page-title",children:"Schedules"}),(0,a.jsx)("div",{className:"loading-bar",children:(0,a.jsx)("div",{className:"loading-bar-fill"})})]}):(0,a.jsxs)("div",{children:[(0,a.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",marginBottom:"1rem"},children:[(0,a.jsx)("h1",{className:"page-title",style:{margin:0},children:"Schedules"}),(0,a.jsx)(r(),{href:"/schedules/new",className:"btn btn--primary",children:"+ New schedule"})]}),g&&(0,a.jsx)("div",{style:{marginBottom:"1rem",padding:"0.625rem 0.75rem",background:"var(--error-bg, #fee)",color:"var(--error, #b00)",borderRadius:"4px",fontSize:"0.8125rem"},children:g}),0===n.length?(0,a.jsx)("div",{className:"empty-state",children:(0,a.jsxs)("p",{className:"empty-state-text",children:["No schedules yet. ",(0,a.jsx)(r(),{href:"/schedules/new",children:"Create one"})," to fire signals or broadcasts on intervals."]})}):(0,a.jsxs)("table",{className:"station-table",children:[(0,a.jsx)("thead",{children:(0,a.jsxs)("tr",{children:[(0,a.jsx)("th",{children:"Target"}),(0,a.jsx)("th",{children:"Kind"}),(0,a.jsx)("th",{children:"Interval"}),(0,a.jsx)("th",{children:"Next run"}),(0,a.jsx)("th",{children:"Last run"}),(0,a.jsx)("th",{children:"Status"}),(0,a.jsx)("th",{})]})}),(0,a.jsx)("tbody",{children:n.map(e=>(0,a.jsxs)("tr",{className:"clickable-row",onClick:()=>t.push("/schedules/".concat(e.id)),children:[(0,a.jsx)("td",{className:"mono",children:e.target}),(0,a.jsx)("td",{className:"mono",style:{fontSize:"0.75rem",color:"var(--muted)"},children:u[e.kind]}),(0,a.jsx)("td",{className:"mono",children:e.interval}),(0,a.jsx)("td",{className:"mono",style:{fontSize:"0.75rem",color:"var(--muted)"},children:new Date(e.nextRunAt).toLocaleString()}),(0,a.jsx)("td",{className:"mono",style:{fontSize:"0.75rem",color:"var(--muted)"},children:e.lastRunAt?new Date(e.lastRunAt).toLocaleString():"—"}),(0,a.jsx)("td",{className:"mono",style:{fontSize:"0.75rem"},children:(0,a.jsx)("span",{style:{padding:"0.125rem 0.375rem",borderRadius:"3px",background:e.enabled?"var(--success-bg, #efe)":"var(--surface)",color:e.enabled?"var(--success, #060)":"var(--muted)"},children:e.enabled?"enabled":"disabled"})}),(0,a.jsx)("td",{})]},e.id))})]}),(0,a.jsx)(l.F,{title:"List & manage schedules",snippets:[{label:"List all",method:"GET",path:"/api/v1/schedules"},{label:"List by kind",method:"GET",path:"/api/v1/schedules",query:{kind:"signal"}},{label:"Create",method:"POST",path:"/api/v1/schedules",body:{kind:"signal",target:"<signalName>",interval:"5m",enabled:!0,input:{}}}]})]})}},4736:(e,t,n)=>{"use strict";var a=n(1504);n.o(a,"useParams")&&n.d(t,{useParams:function(){return a.useParams}}),n.o(a,"usePathname")&&n.d(t,{usePathname:function(){return a.usePathname}}),n.o(a,"useRouter")&&n.d(t,{useRouter:function(){return a.useRouter}})},6990:(e,t,n)=>{"use strict";n.d(t,{F:()=>o});var a=n(8111),s=n(5271);function o(e){let{title:t="API equivalent",snippets:n}=e,[o,r]=(0,s.useState)(!1),[i,c]=(0,s.useState)(null),[d,l]=(0,s.useState)(null);if(0===n.length)return null;async function u(e,t){try{var n;if(null==(n=navigator.clipboard)?void 0:n.writeText){await navigator.clipboard.writeText(e),c(t),setTimeout(()=>c(e=>e===t?null:e),1500);return}throw Error("clipboard API unavailable")}catch(n){try{let n=document.createElement("textarea");n.value=e,n.style.position="fixed",n.style.left="-9999px",document.body.appendChild(n),n.select();let a=document.execCommand("copy");if(document.body.removeChild(n),a)c(t),setTimeout(()=>c(e=>e===t?null:e),1500);else throw Error("execCommand copy returned false")}catch(e){l(t),setTimeout(()=>l(e=>e===t?null:e),2e3)}}}return(0,a.jsxs)("details",{open:o,onToggle:e=>r(e.target.open),style:{marginTop:"1.5rem",border:"1px solid var(--border)",borderRadius:"4px",background:"var(--surface)"},children:[(0,a.jsxs)("summary",{style:{padding:"0.5rem 0.75rem",fontSize:"0.75rem",fontFamily:"var(--mono-font, monospace)",color:"var(--muted)",textTransform:"uppercase",letterSpacing:"0.05em",cursor:"pointer",listStyle:"none"},children:["▸ ",t]}),(0,a.jsx)("div",{style:{padding:"0.5rem 0.75rem 0.75rem"},children:n.map((e,t)=>{let s=function(e){var t;let n=[];if(e.query)for(let[t,a]of Object.entries(e.query))void 0!==a&&n.push("".concat(encodeURIComponent(t),"=").concat(encodeURIComponent(String(a))));let a="".concat(e.path).concat(n.length?"?".concat(n.join("&")):""),s=(null==(t=window.location)?void 0:t.origin)?window.location.origin:"https://your-station.example.com",o=[];if(o.push("curl -X ".concat(e.method," \\")),o.push(" ".concat(s).concat(a," \\")),o.push(" -H 'Authorization: Bearer sk_live_…' \\"),void 0!==e.body){o.push(" -H 'Content-Type: application/json' \\");let t="string"==typeof e.body?e.body:JSON.stringify(e.body,null,2);o.push(" -d ".concat(JSON.stringify(t)))}else o[o.length-1]=o[o.length-1].replace(/ \\$/,"");return o.join("\n")}(e);return(0,a.jsxs)("div",{style:{marginBottom:t===n.length-1?0:"0.75rem"},children:[(0,a.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",marginBottom:"0.25rem"},children:[(0,a.jsx)("div",{className:"mono",style:{fontSize:"0.75rem",color:"var(--muted)"},children:e.label}),(0,a.jsx)("button",{type:"button",className:"btn btn--sm",onClick:()=>u(s,t),title:d===t?"Copy failed — select the text manually":"",children:i===t?"Copied":d===t?"Copy failed":"Copy"})]}),(0,a.jsx)("pre",{className:"mono",style:{margin:0,padding:"0.5rem 0.75rem",background:"var(--bg, #fff)",border:"1px solid var(--border)",borderRadius:"4px",fontSize:"0.75rem",overflowX:"auto",whiteSpace:"pre"},children:s})]},t)})})]})}},7646:(e,t,n)=>{"use strict";n.d(t,{Hc:()=>s,iQ:()=>r,rT:()=>o});var a=n(5271);let s=(0,a.createContext)({segments:[],activeSection:null,setSegments:()=>{},setActiveSection:()=>{}});function o(e,t){let n=(0,a.useContext)(s);(0,a.useEffect)(()=>{n.setSegments(e),n.setActiveSection(t)},[JSON.stringify(e),t])}function r(){return(0,a.useContext)(s)}},9503:(e,t,n)=>{Promise.resolve().then(n.bind(n,3562))}},e=>{e.O(0,[935,814,743,358],()=>e(e.s=9503)),_N_E=e.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[662],{593:(e,t,n)=>{"use strict";async function a(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 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 o(){await fetch("".concat("","/api/auth/logout"),{method:"POST",credentials:"include"})}function i(){return{getHealth:()=>a("/health"),getSignals:()=>a("/signals"),getScheduledSignals:()=>a("/signals/scheduled"),getSignal:e=>a("/signals/".concat(encodeURIComponent(e))),getSignalRuns:e=>a("/signals/".concat(encodeURIComponent(e),"/runs")),triggerSignal:(e,t)=>a("/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 a("/runs".concat(n?"?".concat(n):""))},getRunStats:()=>a("/runs/stats"),getRun:e=>a("/runs/".concat(e)),getRunSteps:e=>a("/runs/".concat(e,"/steps")),getRunLogs:e=>a("/runs/".concat(e,"/logs")),cancelRun:e=>a("/runs/".concat(e,"/cancel"),{method:"POST"}),rerunRun:e=>a("/runs/".concat(e,"/rerun"),{method:"POST"}),retryRun:e=>a("/runs/".concat(e,"/retry"),{method:"POST"}),getBroadcasts:()=>a("/broadcasts"),getBroadcast:e=>a("/broadcasts/".concat(encodeURIComponent(e))),triggerBroadcast:(e,t)=>a("/broadcasts/".concat(encodeURIComponent(e),"/trigger"),{method:"POST",body:JSON.stringify({input:null!=t?t:{}})}),getBroadcastRuns:e=>a("/broadcasts/".concat(encodeURIComponent(e),"/runs")),getBroadcastRun:e=>a("/broadcast-runs/".concat(e)),getBroadcastRunNodes:e=>a("/broadcast-runs/".concat(e,"/nodes")),getBroadcastRunLogs:e=>a("/broadcast-runs/".concat(e,"/logs")),cancelBroadcastRun:e=>a("/broadcast-runs/".concat(e,"/cancel"),{method:"POST"}),rerunBroadcastRun:e=>a("/broadcast-runs/".concat(e,"/rerun"),{method:"POST"}),getBroadcastDefinitions:()=>a("/v1/broadcast-definitions"),getBroadcastDefinition:e=>a("/v1/broadcast-definitions/".concat(encodeURIComponent(e))),getBroadcastDefinitionVersions:e=>a("/v1/broadcast-definitions/".concat(encodeURIComponent(e),"/versions")),saveBroadcastDefinition:e=>a("/v1/broadcast-definitions",{method:"POST",body:JSON.stringify(e)}),validateBroadcastDefinition:e=>a("/v1/broadcast-definitions/validate",{method:"POST",body:JSON.stringify(e)}),deleteBroadcastDefinition:e=>a("/v1/broadcast-definitions/".concat(encodeURIComponent(e)),{method:"DELETE"}),triggerDynamicBroadcast:(e,t)=>a("/v1/trigger-dynamic-broadcast",{method:"POST",body:JSON.stringify({broadcastName:e,input:null!=t?t:{}})}),getSchedules:e=>{let t=new URLSearchParams;(null==e?void 0:e.kind)&&t.set("kind",e.kind),(null==e?void 0:e.enabled)!==void 0&&t.set("enabled",String(e.enabled));let n=t.toString();return a("/v1/schedules".concat(n?"?".concat(n):""))},getSchedule:e=>a("/v1/schedules/".concat(e)),createSchedule:e=>a("/v1/schedules",{method:"POST",body:JSON.stringify(e)}),updateSchedule:(e,t)=>a("/v1/schedules/".concat(e),{method:"PATCH",body:JSON.stringify(t)}),deleteSchedule:e=>a("/v1/schedules/".concat(e),{method:"DELETE"}),previewSchedule:function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:5;return a("/v1/schedules/".concat(e,"/preview"),{method:"POST",body:JSON.stringify({count:t})})},evaluateExpression:(e,t)=>a("/v1/expressions/evaluate",{method:"POST",body:JSON.stringify({node:e,context:t})}),validateExpression:(e,t)=>a("/v1/expressions/validate",{method:"POST",body:JSON.stringify({node:e,schemaContext:t})}),parseExpression:e=>a("/v1/expressions/parse",{method:"POST",body:JSON.stringify({source:e})}),getApiKeys:()=>a("/v1/keys"),createApiKey:(e,t)=>a("/v1/keys",{method:"POST",body:JSON.stringify({name:e,scopes:t})}),revokeApiKey:e=>a("/v1/keys/".concat(e),{method:"DELETE"})}}n.d(t,{T5:()=>s,gf:()=>i,iD:()=>r,ri:()=>o})},4521:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>l});var a=n(8111),s=n(5271),r=n(593),o=n(7646);let i=["trigger","read","cancel","admin"];function c(e){return new Date(e).toLocaleDateString(void 0,{month:"short",day:"numeric",year:"numeric"})}function l(){let e=(0,r.gf)(),[t,n]=(0,s.useState)([]),[l,d]=(0,s.useState)(!0),[m,u]=(0,s.useState)(null),[h,g]=(0,s.useState)(!1),[f,y]=(0,s.useState)(""),[p,v]=(0,s.useState)(["trigger","read"]),[x,S]=(0,s.useState)(!1),[b,j]=(0,s.useState)(null),[N,k]=(0,s.useState)(!1),[C,O]=(0,s.useState)(null);(0,o.rT)([{label:"Settings"}],"settings");let R=(0,s.useCallback)(()=>{e.getApiKeys().then(e=>{n(e.data),u(null)}).catch(e=>{e instanceof Error&&u(e.message)}).finally(()=>d(!1))},[]);async function w(){if(f.trim()){S(!0);try{let t=await e.createApiKey(f.trim(),p);j(t.data.key),y(""),v(["trigger","read"]),g(!1),k(!1),R()}catch(e){e instanceof Error&&u(e.message)}S(!1)}}async function T(t){try{await e.revokeApiKey(t),O(null),R()}catch(e){e instanceof Error&&u(e.message)}}async function P(){b&&(await navigator.clipboard.writeText(b),k(!0),setTimeout(()=>k(!1),2e3))}if((0,s.useEffect)(()=>{R()},[R]),l)return(0,a.jsxs)("div",{children:[(0,a.jsx)("h1",{className:"page-title",children:"Settings"}),(0,a.jsx)("div",{className:"loading-bar",children:(0,a.jsx)("div",{className:"loading-bar-fill"})})]});let B=t.filter(e=>!e.revoked),E=t.filter(e=>e.revoked);return(0,a.jsxs)("div",{children:[(0,a.jsx)("div",{className:"page-header",children:(0,a.jsx)("h1",{className:"page-title",style:{marginBottom:0},children:"Settings"})}),m&&(0,a.jsx)("div",{className:"detail-section",style:{color:"var(--rust)",fontSize:"0.8125rem"},children:m}),b&&(0,a.jsxs)("div",{className:"detail-section",style:{background:"var(--patina)",color:"#fff",borderRadius:"6px",padding:"1rem 1.25rem",marginBottom:"1.5rem"},children:[(0,a.jsx)("div",{style:{fontSize:"0.8125rem",fontWeight:500,marginBottom:"0.5rem"},children:"Key created. Copy it now — it won't be shown again."}),(0,a.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"0.75rem"},children:[(0,a.jsx)("code",{style:{fontFamily:"var(--font-mono)",fontSize:"0.8125rem",background:"rgba(0,0,0,0.2)",padding:"0.375rem 0.625rem",borderRadius:"4px",flex:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:b}),(0,a.jsx)("button",{className:"btn btn--primary",onClick:P,style:{flexShrink:0,minWidth:"5rem"},children:N?"Copied":"Copy"}),(0,a.jsx)("button",{className:"btn",onClick:()=>j(null),style:{flexShrink:0,color:"#fff",borderColor:"rgba(255,255,255,0.4)"},children:"Dismiss"})]})]}),(0,a.jsxs)("div",{className:"detail-section",children:[(0,a.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:"1rem"},children:[(0,a.jsx)("div",{className:"detail-section-label",style:{marginBottom:0},children:"API Keys"}),(0,a.jsx)("button",{className:"btn btn--primary",onClick:()=>g(!h),children:h?"Cancel":"Create key"})]}),h&&(0,a.jsxs)("div",{style:{border:"1px solid var(--concrete-dark)",borderRadius:"6px",padding:"1rem",marginBottom:"1rem"},children:[(0,a.jsxs)("div",{style:{marginBottom:"0.75rem"},children:[(0,a.jsx)("label",{style:{display:"block",fontSize:"0.75rem",color:"var(--muted)",marginBottom:"0.25rem",fontFamily:"var(--font-mono)",textTransform:"uppercase",letterSpacing:"0.08em"},children:"Name"}),(0,a.jsx)("input",{type:"text",value:f,onChange:e=>y(e.target.value),placeholder:"e.g. Production App",style:{width:"100%",padding:"0.5rem 0.625rem",fontFamily:"var(--font-body)",fontSize:"0.875rem",border:"1px solid var(--concrete-dark)",borderRadius:"4px",background:"var(--surface)",color:"var(--charcoal)"}})]}),(0,a.jsxs)("div",{style:{marginBottom:"0.75rem"},children:[(0,a.jsx)("label",{style:{display:"block",fontSize:"0.75rem",color:"var(--muted)",marginBottom:"0.5rem",fontFamily:"var(--font-mono)",textTransform:"uppercase",letterSpacing:"0.08em"},children:"Scopes"}),(0,a.jsx)("div",{style:{display:"flex",gap:"0.5rem",flexWrap:"wrap"},children:i.map(e=>(0,a.jsx)("button",{onClick:()=>{v(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e])},className:"filter-btn".concat(p.includes(e)?" filter-btn--active":""),children:e},e))})]}),(0,a.jsx)("button",{className:"btn btn--primary",onClick:w,disabled:x||!f.trim()||0===p.length,children:x?"Creating...":"Create"})]}),0!==B.length||h?B.length>0?(0,a.jsxs)("table",{className:"station-table",children:[(0,a.jsx)("thead",{children:(0,a.jsxs)("tr",{children:[(0,a.jsx)("th",{children:"Name"}),(0,a.jsx)("th",{children:"Key"}),(0,a.jsx)("th",{children:"Scopes"}),(0,a.jsx)("th",{children:"Created"}),(0,a.jsx)("th",{children:"Last used"}),(0,a.jsx)("th",{})]})}),(0,a.jsx)("tbody",{children:B.map((e,t)=>(0,a.jsxs)("tr",{className:"reveal-item",style:{animationDelay:"".concat(40*t,"ms")},children:[(0,a.jsx)("td",{style:{fontWeight:500},children:e.name}),(0,a.jsxs)("td",{className:"mono",style:{color:"var(--muted)",fontSize:"0.8125rem"},children:[e.keyPrefix,"..."]}),(0,a.jsx)("td",{children:(0,a.jsx)("div",{style:{display:"flex",gap:"0.25rem",flexWrap:"wrap"},children:e.scopes.map(e=>(0,a.jsx)("span",{style:{fontSize:"0.6875rem",fontFamily:"var(--font-mono)",padding:"0.125rem 0.375rem",borderRadius:"3px",background:"var(--concrete-dark)",color:"var(--muted)"},children:e},e))})}),(0,a.jsx)("td",{style:{fontSize:"0.8125rem",color:"var(--muted)"},children:c(e.createdAt)}),(0,a.jsx)("td",{style:{fontSize:"0.8125rem",color:"var(--muted)"},children:e.lastUsed?function(e){let t=Date.now()-new Date(e).getTime();return t<6e4?"just now":t<36e5?"".concat(Math.floor(t/6e4),"m ago"):t<864e5?"".concat(Math.floor(t/36e5),"h ago"):"".concat(Math.floor(t/864e5),"d ago")}(e.lastUsed):"Never"}),(0,a.jsx)("td",{children:C===e.id?(0,a.jsxs)("div",{style:{display:"flex",gap:"0.5rem",alignItems:"center"},children:[(0,a.jsx)("button",{className:"btn",onClick:()=>T(e.id),style:{color:"var(--rust)",borderColor:"var(--rust)",fontSize:"0.75rem"},children:"Confirm"}),(0,a.jsx)("button",{className:"btn",onClick:()=>O(null),style:{fontSize:"0.75rem"},children:"Cancel"})]}):(0,a.jsx)("button",{className:"btn",onClick:()=>O(e.id),style:{fontSize:"0.75rem",color:"var(--muted)"},children:"Revoke"})})]},e.id))})]}):null:(0,a.jsx)("div",{className:"empty-state",children:(0,a.jsx)("p",{className:"empty-state-text",children:"No API keys. Create one to enable remote triggers."})}),E.length>0&&(0,a.jsxs)("div",{style:{marginTop:"1.5rem"},children:[(0,a.jsx)("div",{className:"detail-section-label",style:{color:"var(--muted)",fontSize:"0.6875rem"},children:"Revoked"}),(0,a.jsx)("table",{className:"station-table",style:{opacity:.5},children:(0,a.jsx)("tbody",{children:E.map(e=>(0,a.jsxs)("tr",{children:[(0,a.jsx)("td",{style:{textDecoration:"line-through"},children:e.name}),(0,a.jsxs)("td",{className:"mono",style:{color:"var(--muted)",fontSize:"0.8125rem"},children:[e.keyPrefix,"..."]}),(0,a.jsx)("td",{style:{fontSize:"0.8125rem",color:"var(--muted)"},children:c(e.createdAt)})]},e.id))})})]})]})]})}},7646:(e,t,n)=>{"use strict";n.d(t,{Hc:()=>s,iQ:()=>o,rT:()=>r});var a=n(5271);let s=(0,a.createContext)({segments:[],activeSection:null,setSegments:()=>{},setActiveSection:()=>{}});function r(e,t){let n=(0,a.useContext)(s);(0,a.useEffect)(()=>{n.setSegments(e),n.setActiveSection(t)},[JSON.stringify(e),t])}function o(){return(0,a.useContext)(s)}},9612:(e,t,n)=>{Promise.resolve().then(n.bind(n,4521))}},e=>{e.O(0,[814,743,358],()=>e(e.s=9612)),_N_E=e.O()}]);
|