station-kit 1.1.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (177) hide show
  1. package/.next/standalone/packages/station-kit/.next/BUILD_ID +1 -1
  2. package/.next/standalone/packages/station-kit/.next/app-build-manifest.json +55 -34
  3. package/.next/standalone/packages/station-kit/.next/app-path-routes-manifest.json +11 -8
  4. package/.next/standalone/packages/station-kit/.next/build-manifest.json +2 -2
  5. package/.next/standalone/packages/station-kit/.next/prerender-manifest.json +73 -25
  6. package/.next/standalone/packages/station-kit/.next/routes-manifest.json +20 -0
  7. package/.next/standalone/packages/station-kit/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  8. package/.next/standalone/packages/station-kit/.next/server/app/_not-found.html +1 -1
  9. package/.next/standalone/packages/station-kit/.next/server/app/_not-found.rsc +8 -8
  10. package/.next/standalone/packages/station-kit/.next/server/app/beacons/[name]/page.js +2 -0
  11. package/.next/standalone/packages/station-kit/.next/server/app/beacons/[name]/page.js.nft.json +1 -0
  12. package/.next/standalone/packages/station-kit/.next/server/app/beacons/[name]/page_client-reference-manifest.js +1 -0
  13. package/.next/standalone/packages/station-kit/.next/server/app/beacons/page.js +2 -0
  14. package/.next/standalone/packages/station-kit/.next/server/app/beacons/page.js.nft.json +1 -0
  15. package/.next/standalone/packages/station-kit/.next/server/app/beacons/page_client-reference-manifest.js +1 -0
  16. package/.next/standalone/packages/station-kit/.next/server/app/beacons.html +1 -0
  17. package/.next/standalone/packages/station-kit/.next/server/app/beacons.meta +7 -0
  18. package/.next/standalone/packages/station-kit/.next/server/app/beacons.rsc +25 -0
  19. package/.next/standalone/packages/station-kit/.next/server/app/broadcasts/[id]/page_client-reference-manifest.js +1 -1
  20. package/.next/standalone/packages/station-kit/.next/server/app/broadcasts/dyn/[name]/page_client-reference-manifest.js +1 -1
  21. package/.next/standalone/packages/station-kit/.next/server/app/broadcasts/dyn/[name]/v/[n]/page_client-reference-manifest.js +1 -1
  22. package/.next/standalone/packages/station-kit/.next/server/app/broadcasts/new/page_client-reference-manifest.js +1 -1
  23. package/.next/standalone/packages/station-kit/.next/server/app/broadcasts/new.html +1 -1
  24. package/.next/standalone/packages/station-kit/.next/server/app/broadcasts/new.rsc +9 -9
  25. package/.next/standalone/packages/station-kit/.next/server/app/broadcasts/page_client-reference-manifest.js +1 -1
  26. package/.next/standalone/packages/station-kit/.next/server/app/broadcasts.html +1 -1
  27. package/.next/standalone/packages/station-kit/.next/server/app/broadcasts.rsc +9 -9
  28. package/.next/standalone/packages/station-kit/.next/server/app/environment/page.js +2 -0
  29. package/.next/standalone/packages/station-kit/.next/server/app/environment/page.js.nft.json +1 -0
  30. package/.next/standalone/packages/station-kit/.next/server/app/environment/page_client-reference-manifest.js +1 -0
  31. package/.next/standalone/packages/station-kit/.next/server/app/environment.html +1 -0
  32. package/.next/standalone/packages/station-kit/.next/server/app/environment.meta +7 -0
  33. package/.next/standalone/packages/station-kit/.next/server/app/environment.rsc +25 -0
  34. package/.next/standalone/packages/station-kit/.next/server/app/index.html +1 -1
  35. package/.next/standalone/packages/station-kit/.next/server/app/index.rsc +9 -9
  36. package/.next/standalone/packages/station-kit/.next/server/app/page_client-reference-manifest.js +1 -1
  37. package/.next/standalone/packages/station-kit/.next/server/app/playground/expression/page_client-reference-manifest.js +1 -1
  38. package/.next/standalone/packages/station-kit/.next/server/app/playground/expression.html +1 -1
  39. package/.next/standalone/packages/station-kit/.next/server/app/playground/expression.rsc +9 -9
  40. package/.next/standalone/packages/station-kit/.next/server/app/runs/[id]/page_client-reference-manifest.js +1 -1
  41. package/.next/standalone/packages/station-kit/.next/server/app/schedules/[id]/page_client-reference-manifest.js +1 -1
  42. package/.next/standalone/packages/station-kit/.next/server/app/schedules/new/page_client-reference-manifest.js +1 -1
  43. package/.next/standalone/packages/station-kit/.next/server/app/schedules/new.html +1 -1
  44. package/.next/standalone/packages/station-kit/.next/server/app/schedules/new.rsc +9 -9
  45. package/.next/standalone/packages/station-kit/.next/server/app/schedules/page_client-reference-manifest.js +1 -1
  46. package/.next/standalone/packages/station-kit/.next/server/app/schedules.html +1 -1
  47. package/.next/standalone/packages/station-kit/.next/server/app/schedules.rsc +9 -9
  48. package/.next/standalone/packages/station-kit/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  49. package/.next/standalone/packages/station-kit/.next/server/app/settings.html +1 -1
  50. package/.next/standalone/packages/station-kit/.next/server/app/settings.rsc +9 -9
  51. package/.next/standalone/packages/station-kit/.next/server/app/signals/[name]/page_client-reference-manifest.js +1 -1
  52. package/.next/standalone/packages/station-kit/.next/server/app/signals/page_client-reference-manifest.js +1 -1
  53. package/.next/standalone/packages/station-kit/.next/server/app/signals.html +1 -1
  54. package/.next/standalone/packages/station-kit/.next/server/app/signals.rsc +9 -9
  55. package/.next/standalone/packages/station-kit/.next/server/app-paths-manifest.json +11 -8
  56. package/.next/standalone/packages/station-kit/.next/server/chunks/102.js +1 -1
  57. package/.next/standalone/packages/station-kit/.next/server/pages/404.html +1 -1
  58. package/.next/standalone/packages/station-kit/.next/server/pages/500.html +1 -1
  59. package/.next/standalone/packages/station-kit/.next/server/pages-manifest.json +1 -1
  60. package/.next/standalone/packages/station-kit/.next/server/server-reference-manifest.json +1 -1
  61. package/.next/standalone/packages/station-kit/.next/static/chunks/285-583f23ee7827983f.js +1 -0
  62. package/.next/standalone/packages/station-kit/.next/static/chunks/561-05a7ef9669e3921a.js +1 -0
  63. package/.next/standalone/packages/station-kit/.next/static/chunks/app/beacons/[name]/page-eb1f82847734e145.js +1 -0
  64. package/.next/standalone/packages/station-kit/.next/static/chunks/app/beacons/page-64e296346197e44b.js +1 -0
  65. package/.next/standalone/packages/station-kit/.next/static/chunks/app/broadcasts/dyn/[name]/v/[n]/page-15edf07ab26241c9.js +1 -0
  66. package/.next/standalone/packages/station-kit/.next/static/chunks/app/broadcasts/page-b23a03097c8f75c4.js +1 -0
  67. package/.next/standalone/packages/station-kit/.next/static/chunks/app/environment/page-111242bec067fdee.js +1 -0
  68. package/.next/standalone/packages/station-kit/.next/static/chunks/app/layout-e9ac56fcaf7a5ea7.js +1 -0
  69. package/.next/standalone/packages/station-kit/.next/static/chunks/app/page-ef78692958c2fc01.js +1 -0
  70. package/.next/standalone/packages/station-kit/.next/static/chunks/app/playground/expression/page-29294a705dd8f471.js +1 -0
  71. package/.next/standalone/packages/station-kit/.next/static/chunks/app/runs/[id]/page-287bbb8f6dec2e23.js +1 -0
  72. package/.next/standalone/packages/station-kit/.next/static/chunks/app/schedules/page-c869218da203e3b4.js +1 -0
  73. package/.next/standalone/packages/station-kit/.next/static/chunks/app/settings/page-05cf43b6ae6b3187.js +1 -0
  74. package/.next/standalone/packages/station-kit/.next/static/chunks/app/signals/[name]/page-4027803be00c695a.js +1 -0
  75. package/.next/standalone/packages/station-kit/.next/static/chunks/app/signals/page-8e076fc5d0188d72.js +1 -0
  76. package/.next/standalone/packages/station-kit/.next/static/css/ddb1646dc25ed100.css +1 -0
  77. package/.next/standalone/packages/station-kit/.next/static/vTGEzSqxhR_E57YAFn9DC/_buildManifest.js +1 -0
  78. package/.next/standalone/packages/station-kit/package.json +4 -1
  79. package/dist/config/schema.d.ts +18 -0
  80. package/dist/config/schema.d.ts.map +1 -1
  81. package/dist/config/schema.js +3 -0
  82. package/dist/config/schema.js.map +1 -1
  83. package/dist/index.d.ts +1 -0
  84. package/dist/index.d.ts.map +1 -1
  85. package/dist/index.js +3 -0
  86. package/dist/index.js.map +1 -1
  87. package/dist/server/auth/keys.d.ts +18 -1
  88. package/dist/server/auth/keys.d.ts.map +1 -1
  89. package/dist/server/auth/keys.js +38 -6
  90. package/dist/server/auth/keys.js.map +1 -1
  91. package/dist/server/auth/session.d.ts.map +1 -1
  92. package/dist/server/auth/session.js +34 -11
  93. package/dist/server/auth/session.js.map +1 -1
  94. package/dist/server/index.d.ts.map +1 -1
  95. package/dist/server/index.js +135 -18
  96. package/dist/server/index.js.map +1 -1
  97. package/dist/server/metadata.d.ts +2 -0
  98. package/dist/server/metadata.d.ts.map +1 -1
  99. package/dist/server/metadata.js.map +1 -1
  100. package/dist/server/middleware/rate-limit.d.ts.map +1 -1
  101. package/dist/server/middleware/rate-limit.js +22 -1
  102. package/dist/server/middleware/rate-limit.js.map +1 -1
  103. package/dist/server/routes/beacons.d.ts +10 -0
  104. package/dist/server/routes/beacons.d.ts.map +1 -0
  105. package/dist/server/routes/beacons.js +98 -0
  106. package/dist/server/routes/beacons.js.map +1 -0
  107. package/dist/server/routes/broadcasts.d.ts.map +1 -1
  108. package/dist/server/routes/broadcasts.js +6 -2
  109. package/dist/server/routes/broadcasts.js.map +1 -1
  110. package/dist/server/routes/runs.d.ts.map +1 -1
  111. package/dist/server/routes/runs.js +19 -59
  112. package/dist/server/routes/runs.js.map +1 -1
  113. package/dist/server/routes/signals.d.ts.map +1 -1
  114. package/dist/server/routes/signals.js +17 -13
  115. package/dist/server/routes/signals.js.map +1 -1
  116. package/dist/server/routes/v1/env.d.ts +10 -0
  117. package/dist/server/routes/v1/env.d.ts.map +1 -0
  118. package/dist/server/routes/v1/env.js +132 -0
  119. package/dist/server/routes/v1/env.js.map +1 -0
  120. package/dist/server/routes/v1/events.js +2 -2
  121. package/dist/server/routes/v1/events.js.map +1 -1
  122. package/dist/server/routes/v1/runs.d.ts.map +1 -1
  123. package/dist/server/routes/v1/runs.js +10 -31
  124. package/dist/server/routes/v1/runs.js.map +1 -1
  125. package/dist/server/sse.d.ts +2 -1
  126. package/dist/server/sse.d.ts.map +1 -1
  127. package/dist/server/sse.js +5 -1
  128. package/dist/server/sse.js.map +1 -1
  129. package/dist/server/subscriber.d.ts +56 -0
  130. package/dist/server/subscriber.d.ts.map +1 -1
  131. package/dist/server/subscriber.js +94 -0
  132. package/dist/server/subscriber.js.map +1 -1
  133. package/dist/server/ws.d.ts +8 -2
  134. package/dist/server/ws.d.ts.map +1 -1
  135. package/dist/server/ws.js +28 -3
  136. package/dist/server/ws.js.map +1 -1
  137. package/package.json +11 -8
  138. package/src/app/beacons/[name]/beacon-detail.tsx +253 -0
  139. package/src/app/beacons/[name]/page.tsx +6 -0
  140. package/src/app/beacons/page.tsx +98 -0
  141. package/src/app/components/shell.tsx +24 -0
  142. package/src/app/components/status-badge.tsx +13 -1
  143. package/src/app/environment/page.tsx +415 -0
  144. package/src/app/globals.css +48 -0
  145. package/src/app/hooks/use-api.ts +80 -0
  146. package/src/config/schema.ts +21 -0
  147. package/src/index.ts +12 -0
  148. package/src/server/auth/keys.ts +50 -5
  149. package/src/server/auth/session.ts +38 -11
  150. package/src/server/index.ts +144 -18
  151. package/src/server/metadata.ts +2 -0
  152. package/src/server/middleware/rate-limit.ts +20 -1
  153. package/src/server/routes/beacons.ts +112 -0
  154. package/src/server/routes/broadcasts.ts +6 -2
  155. package/src/server/routes/runs.ts +20 -67
  156. package/src/server/routes/signals.ts +17 -13
  157. package/src/server/routes/v1/env.ts +144 -0
  158. package/src/server/routes/v1/events.ts +2 -2
  159. package/src/server/routes/v1/runs.ts +11 -35
  160. package/src/server/sse.ts +7 -2
  161. package/src/server/subscriber.ts +111 -0
  162. package/src/server/ws.ts +38 -4
  163. package/.next/standalone/packages/station-kit/.next/static/THKSkCipW_pj0F6DRXYEG/_buildManifest.js +0 -1
  164. package/.next/standalone/packages/station-kit/.next/static/chunks/285-ff198f0a909c4fdd.js +0 -1
  165. package/.next/standalone/packages/station-kit/.next/static/chunks/561-33d912169940283e.js +0 -1
  166. package/.next/standalone/packages/station-kit/.next/static/chunks/app/broadcasts/dyn/[name]/v/[n]/page-5eac0507f49a00ec.js +0 -1
  167. package/.next/standalone/packages/station-kit/.next/static/chunks/app/broadcasts/page-dee500ccc01f0821.js +0 -1
  168. package/.next/standalone/packages/station-kit/.next/static/chunks/app/layout-e14e14f3e5b0b8a9.js +0 -1
  169. package/.next/standalone/packages/station-kit/.next/static/chunks/app/page-aac41ef7a470daab.js +0 -1
  170. package/.next/standalone/packages/station-kit/.next/static/chunks/app/playground/expression/page-dc9d91f3f50f4716.js +0 -1
  171. package/.next/standalone/packages/station-kit/.next/static/chunks/app/runs/[id]/page-9e4c4f751a4bea72.js +0 -1
  172. package/.next/standalone/packages/station-kit/.next/static/chunks/app/schedules/page-738d98dc0b63166e.js +0 -1
  173. package/.next/standalone/packages/station-kit/.next/static/chunks/app/settings/page-fc5654b31f57ac21.js +0 -1
  174. package/.next/standalone/packages/station-kit/.next/static/chunks/app/signals/[name]/page-4b1c09a539a1ebcd.js +0 -1
  175. package/.next/standalone/packages/station-kit/.next/static/chunks/app/signals/page-d2f2403dfede87cc.js +0 -1
  176. package/.next/standalone/packages/station-kit/.next/static/css/0be0e65a5f561f37.css +0 -1
  177. /package/.next/standalone/packages/station-kit/.next/static/{THKSkCipW_pj0F6DRXYEG → vTGEzSqxhR_E57YAFn9DC}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- <!DOCTYPE html><!--THKSkCipW_pj0F6DRXYEG--><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/css/0be0e65a5f561f37.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-e40b05d6bdcb3589.js"/><script src="/_next/static/chunks/8e6518bb-c26e82767f1faf66.js" async=""></script><script src="/_next/static/chunks/743-33720d133c383396.js" async=""></script><script src="/_next/static/chunks/main-app-a9f19d5831b41b19.js" async=""></script><script src="/_next/static/chunks/935-dff12960528de017.js" async=""></script><script src="/_next/static/chunks/app/layout-e14e14f3e5b0b8a9.js" async=""></script><script src="/_next/static/chunks/app/signals/page-d2f2403dfede87cc.js" async=""></script><title>Station</title><meta name="description" content="Dashboard for station-signal"/><script>(function(){try{var t=localStorage.getItem("station-theme");if(t==="dark"||t==="light"){document.documentElement.setAttribute("data-theme",t)}else if(window.matchMedia("(prefers-color-scheme:dark)").matches){document.documentElement.setAttribute("data-theme","dark")}else{document.documentElement.setAttribute("data-theme","light")}}catch(e){document.documentElement.setAttribute("data-theme","light")}})()</script><link href="https://fonts.googleapis.com/css2?family=Instrument+Serif:ital@0;1&amp;family=IBM+Plex+Mono:wght@400;500&amp;family=Space+Grotesk:wght@300;400;500&amp;display=swap" rel="stylesheet"/><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><script src="/_next/static/chunks/webpack-e40b05d6bdcb3589.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[9129,[\"935\",\"static/chunks/935-dff12960528de017.js\",\"177\",\"static/chunks/app/layout-e14e14f3e5b0b8a9.js\"],\"ThemeProvider\"]\n3:I[783,[\"935\",\"static/chunks/935-dff12960528de017.js\",\"177\",\"static/chunks/app/layout-e14e14f3e5b0b8a9.js\"],\"AuthProvider\"]\n4:I[1308,[\"935\",\"static/chunks/935-dff12960528de017.js\",\"177\",\"static/chunks/app/layout-e14e14f3e5b0b8a9.js\"],\"LoginPage\"]\n5:I[9275,[\"935\",\"static/chunks/935-dff12960528de017.js\",\"177\",\"static/chunks/app/layout-e14e14f3e5b0b8a9.js\"],\"StationProvider\"]\n6:I[5152,[\"935\",\"static/chunks/935-dff12960528de017.js\",\"177\",\"static/chunks/app/layout-e14e14f3e5b0b8a9.js\"],\"BreadcrumbProvider\"]\n7:I[1961,[\"935\",\"static/chunks/935-dff12960528de017.js\",\"177\",\"static/chunks/app/layout-e14e14f3e5b0b8a9.js\"],\"Shell\"]\n8:I[8954,[],\"\"]\n9:I[5640,[],\"\"]\na:I[3339,[],\"ClientPageRoot\"]\nb:I[4913,[\"764\",\"static/chunks/app/signals/page-d2f2403dfede87cc.js\"],\"default\"]\ne:I[2051,[],\"OutletBoundary\"]\n10:I[6658,[],\"AsyncMetadataOutlet\"]\n12:I[2051,[],\"ViewportBoundary\"]\n14:I[2051,[],\"MetadataBoundary\"]\n15:\"$Sreact.suspense\"\n17:I[7698,[],\"\"]\n:HL[\"/_next/static/css/0be0e65a5f561f37.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"THKSkCipW_pj0F6DRXYEG\",\"p\":\"\",\"c\":[\"\",\"signals\"],\"i\":false,\"f\":[[[\"\",{\"children\":[\"signals\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],[\"\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/0be0e65a5f561f37.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"suppressHydrationWarning\":true,\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"script\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"(function(){try{var t=localStorage.getItem(\\\"station-theme\\\");if(t===\\\"dark\\\"||t===\\\"light\\\"){document.documentElement.setAttribute(\\\"data-theme\\\",t)}else if(window.matchMedia(\\\"(prefers-color-scheme:dark)\\\").matches){document.documentElement.setAttribute(\\\"data-theme\\\",\\\"dark\\\")}else{document.documentElement.setAttribute(\\\"data-theme\\\",\\\"light\\\")}}catch(e){document.documentElement.setAttribute(\\\"data-theme\\\",\\\"light\\\")}})()\"}}],[\"$\",\"link\",null,{\"href\":\"https://fonts.googleapis.com/css2?family=Instrument+Serif:ital@0;1\u0026family=IBM+Plex+Mono:wght@400;500\u0026family=Space+Grotesk:wght@300;400;500\u0026display=swap\",\"rel\":\"stylesheet\"}]]}],[\"$\",\"body\",null,{\"children\":[\"$\",\"$L2\",null,{\"children\":[\"$\",\"$L3\",null,{\"loginPage\":[\"$\",\"$L4\",null,{}],\"children\":[\"$\",\"$L5\",null,{\"children\":[\"$\",\"$L6\",null,{\"children\":[\"$\",\"$L7\",null,{\"children\":[\"$\",\"$L8\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L9\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"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\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"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)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]}]}]}]}]}]]}]]}],{\"children\":[\"signals\",[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L8\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L9\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[\"__PAGE__\",[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"$La\",null,{\"Component\":\"$b\",\"searchParams\":{},\"params\":{},\"promises\":[\"$@c\",\"$@d\"]}],null,[\"$\",\"$Le\",null,{\"children\":[\"$Lf\",[\"$\",\"$L10\",null,{\"promise\":\"$@11\"}]]}]]}],{},null,false]},null,false]},null,false],[\"$\",\"$1\",\"h\",{\"children\":[null,[[\"$\",\"$L12\",null,{\"children\":\"$L13\"}],null],[\"$\",\"$L14\",null,{\"children\":[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$15\",null,{\"fallback\":null,\"children\":\"$L16\"}]}]}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$17\",[]],\"s\":false,\"S\":true}\n"])</script><script>self.__next_f.push([1,"c:{}\nd:\"$0:f:0:1:2:children:2:children:1:props:children:0:props:params\"\n"])</script><script>self.__next_f.push([1,"13:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\nf:null\n"])</script><script>self.__next_f.push([1,"11:{\"metadata\":[[\"$\",\"title\",\"0\",{\"children\":\"Station\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Dashboard for station-signal\"}]],\"error\":null,\"digest\":\"$undefined\"}\n"])</script><script>self.__next_f.push([1,"16:\"$11:metadata\"\n"])</script></body></html>
1
+ <!DOCTYPE html><!--vTGEzSqxhR_E57YAFn9DC--><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/css/ddb1646dc25ed100.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-e40b05d6bdcb3589.js"/><script src="/_next/static/chunks/8e6518bb-c26e82767f1faf66.js" async=""></script><script src="/_next/static/chunks/743-33720d133c383396.js" async=""></script><script src="/_next/static/chunks/main-app-a9f19d5831b41b19.js" async=""></script><script src="/_next/static/chunks/935-dff12960528de017.js" async=""></script><script src="/_next/static/chunks/app/layout-e9ac56fcaf7a5ea7.js" async=""></script><script src="/_next/static/chunks/app/signals/page-8e076fc5d0188d72.js" async=""></script><title>Station</title><meta name="description" content="Dashboard for station-signal"/><script>(function(){try{var t=localStorage.getItem("station-theme");if(t==="dark"||t==="light"){document.documentElement.setAttribute("data-theme",t)}else if(window.matchMedia("(prefers-color-scheme:dark)").matches){document.documentElement.setAttribute("data-theme","dark")}else{document.documentElement.setAttribute("data-theme","light")}}catch(e){document.documentElement.setAttribute("data-theme","light")}})()</script><link href="https://fonts.googleapis.com/css2?family=Instrument+Serif:ital@0;1&amp;family=IBM+Plex+Mono:wght@400;500&amp;family=Space+Grotesk:wght@300;400;500&amp;display=swap" rel="stylesheet"/><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><script src="/_next/static/chunks/webpack-e40b05d6bdcb3589.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[9129,[\"935\",\"static/chunks/935-dff12960528de017.js\",\"177\",\"static/chunks/app/layout-e9ac56fcaf7a5ea7.js\"],\"ThemeProvider\"]\n3:I[783,[\"935\",\"static/chunks/935-dff12960528de017.js\",\"177\",\"static/chunks/app/layout-e9ac56fcaf7a5ea7.js\"],\"AuthProvider\"]\n4:I[1308,[\"935\",\"static/chunks/935-dff12960528de017.js\",\"177\",\"static/chunks/app/layout-e9ac56fcaf7a5ea7.js\"],\"LoginPage\"]\n5:I[9275,[\"935\",\"static/chunks/935-dff12960528de017.js\",\"177\",\"static/chunks/app/layout-e9ac56fcaf7a5ea7.js\"],\"StationProvider\"]\n6:I[5152,[\"935\",\"static/chunks/935-dff12960528de017.js\",\"177\",\"static/chunks/app/layout-e9ac56fcaf7a5ea7.js\"],\"BreadcrumbProvider\"]\n7:I[1961,[\"935\",\"static/chunks/935-dff12960528de017.js\",\"177\",\"static/chunks/app/layout-e9ac56fcaf7a5ea7.js\"],\"Shell\"]\n8:I[8954,[],\"\"]\n9:I[5640,[],\"\"]\na:I[3339,[],\"ClientPageRoot\"]\nb:I[4913,[\"764\",\"static/chunks/app/signals/page-8e076fc5d0188d72.js\"],\"default\"]\ne:I[2051,[],\"OutletBoundary\"]\n10:I[6658,[],\"AsyncMetadataOutlet\"]\n12:I[2051,[],\"ViewportBoundary\"]\n14:I[2051,[],\"MetadataBoundary\"]\n15:\"$Sreact.suspense\"\n17:I[7698,[],\"\"]\n:HL[\"/_next/static/css/ddb1646dc25ed100.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"vTGEzSqxhR_E57YAFn9DC\",\"p\":\"\",\"c\":[\"\",\"signals\"],\"i\":false,\"f\":[[[\"\",{\"children\":[\"signals\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],[\"\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/ddb1646dc25ed100.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"suppressHydrationWarning\":true,\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"script\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"(function(){try{var t=localStorage.getItem(\\\"station-theme\\\");if(t===\\\"dark\\\"||t===\\\"light\\\"){document.documentElement.setAttribute(\\\"data-theme\\\",t)}else if(window.matchMedia(\\\"(prefers-color-scheme:dark)\\\").matches){document.documentElement.setAttribute(\\\"data-theme\\\",\\\"dark\\\")}else{document.documentElement.setAttribute(\\\"data-theme\\\",\\\"light\\\")}}catch(e){document.documentElement.setAttribute(\\\"data-theme\\\",\\\"light\\\")}})()\"}}],[\"$\",\"link\",null,{\"href\":\"https://fonts.googleapis.com/css2?family=Instrument+Serif:ital@0;1\u0026family=IBM+Plex+Mono:wght@400;500\u0026family=Space+Grotesk:wght@300;400;500\u0026display=swap\",\"rel\":\"stylesheet\"}]]}],[\"$\",\"body\",null,{\"children\":[\"$\",\"$L2\",null,{\"children\":[\"$\",\"$L3\",null,{\"loginPage\":[\"$\",\"$L4\",null,{}],\"children\":[\"$\",\"$L5\",null,{\"children\":[\"$\",\"$L6\",null,{\"children\":[\"$\",\"$L7\",null,{\"children\":[\"$\",\"$L8\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L9\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"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\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"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)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]}]}]}]}]}]]}]]}],{\"children\":[\"signals\",[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L8\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L9\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[\"__PAGE__\",[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"$La\",null,{\"Component\":\"$b\",\"searchParams\":{},\"params\":{},\"promises\":[\"$@c\",\"$@d\"]}],null,[\"$\",\"$Le\",null,{\"children\":[\"$Lf\",[\"$\",\"$L10\",null,{\"promise\":\"$@11\"}]]}]]}],{},null,false]},null,false]},null,false],[\"$\",\"$1\",\"h\",{\"children\":[null,[[\"$\",\"$L12\",null,{\"children\":\"$L13\"}],null],[\"$\",\"$L14\",null,{\"children\":[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$15\",null,{\"fallback\":null,\"children\":\"$L16\"}]}]}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$17\",[]],\"s\":false,\"S\":true}\n"])</script><script>self.__next_f.push([1,"c:{}\nd:\"$0:f:0:1:2:children:2:children:1:props:children:0:props:params\"\n"])</script><script>self.__next_f.push([1,"13:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\nf:null\n"])</script><script>self.__next_f.push([1,"11:{\"metadata\":[[\"$\",\"title\",\"0\",{\"children\":\"Station\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Dashboard for station-signal\"}]],\"error\":null,\"digest\":\"$undefined\"}\n"])</script><script>self.__next_f.push([1,"16:\"$11:metadata\"\n"])</script></body></html>
@@ -1,22 +1,22 @@
1
1
  1:"$Sreact.fragment"
2
- 2:I[9129,["935","static/chunks/935-dff12960528de017.js","177","static/chunks/app/layout-e14e14f3e5b0b8a9.js"],"ThemeProvider"]
3
- 3:I[783,["935","static/chunks/935-dff12960528de017.js","177","static/chunks/app/layout-e14e14f3e5b0b8a9.js"],"AuthProvider"]
4
- 4:I[1308,["935","static/chunks/935-dff12960528de017.js","177","static/chunks/app/layout-e14e14f3e5b0b8a9.js"],"LoginPage"]
5
- 5:I[9275,["935","static/chunks/935-dff12960528de017.js","177","static/chunks/app/layout-e14e14f3e5b0b8a9.js"],"StationProvider"]
6
- 6:I[5152,["935","static/chunks/935-dff12960528de017.js","177","static/chunks/app/layout-e14e14f3e5b0b8a9.js"],"BreadcrumbProvider"]
7
- 7:I[1961,["935","static/chunks/935-dff12960528de017.js","177","static/chunks/app/layout-e14e14f3e5b0b8a9.js"],"Shell"]
2
+ 2:I[9129,["935","static/chunks/935-dff12960528de017.js","177","static/chunks/app/layout-e9ac56fcaf7a5ea7.js"],"ThemeProvider"]
3
+ 3:I[783,["935","static/chunks/935-dff12960528de017.js","177","static/chunks/app/layout-e9ac56fcaf7a5ea7.js"],"AuthProvider"]
4
+ 4:I[1308,["935","static/chunks/935-dff12960528de017.js","177","static/chunks/app/layout-e9ac56fcaf7a5ea7.js"],"LoginPage"]
5
+ 5:I[9275,["935","static/chunks/935-dff12960528de017.js","177","static/chunks/app/layout-e9ac56fcaf7a5ea7.js"],"StationProvider"]
6
+ 6:I[5152,["935","static/chunks/935-dff12960528de017.js","177","static/chunks/app/layout-e9ac56fcaf7a5ea7.js"],"BreadcrumbProvider"]
7
+ 7:I[1961,["935","static/chunks/935-dff12960528de017.js","177","static/chunks/app/layout-e9ac56fcaf7a5ea7.js"],"Shell"]
8
8
  8:I[8954,[],""]
9
9
  9:I[5640,[],""]
10
10
  a:I[3339,[],"ClientPageRoot"]
11
- b:I[4913,["764","static/chunks/app/signals/page-d2f2403dfede87cc.js"],"default"]
11
+ b:I[4913,["764","static/chunks/app/signals/page-8e076fc5d0188d72.js"],"default"]
12
12
  e:I[2051,[],"OutletBoundary"]
13
13
  10:I[6658,[],"AsyncMetadataOutlet"]
14
14
  12:I[2051,[],"ViewportBoundary"]
15
15
  14:I[2051,[],"MetadataBoundary"]
16
16
  15:"$Sreact.suspense"
17
17
  17:I[7698,[],""]
18
- :HL["/_next/static/css/0be0e65a5f561f37.css","style"]
19
- 0:{"P":null,"b":"THKSkCipW_pj0F6DRXYEG","p":"","c":["","signals"],"i":false,"f":[[["",{"children":["signals",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/0be0e65a5f561f37.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":[["$","head",null,{"children":[["$","script",null,{"dangerouslySetInnerHTML":{"__html":"(function(){try{var t=localStorage.getItem(\"station-theme\");if(t===\"dark\"||t===\"light\"){document.documentElement.setAttribute(\"data-theme\",t)}else if(window.matchMedia(\"(prefers-color-scheme:dark)\").matches){document.documentElement.setAttribute(\"data-theme\",\"dark\")}else{document.documentElement.setAttribute(\"data-theme\",\"light\")}}catch(e){document.documentElement.setAttribute(\"data-theme\",\"light\")}})()"}}],["$","link",null,{"href":"https://fonts.googleapis.com/css2?family=Instrument+Serif:ital@0;1&family=IBM+Plex+Mono:wght@400;500&family=Space+Grotesk:wght@300;400;500&display=swap","rel":"stylesheet"}]]}],["$","body",null,{"children":["$","$L2",null,{"children":["$","$L3",null,{"loginPage":["$","$L4",null,{}],"children":["$","$L5",null,{"children":["$","$L6",null,{"children":["$","$L7",null,{"children":["$","$L8",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L9",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"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"},"children":["$","div",null,{"children":[["$","style",null,{"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)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]}]}]}]]}]]}],{"children":["signals",["$","$1","c",{"children":[null,["$","$L8",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L9",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$La",null,{"Component":"$b","searchParams":{},"params":{},"promises":["$@c","$@d"]}],null,["$","$Le",null,{"children":["$Lf",["$","$L10",null,{"promise":"$@11"}]]}]]}],{},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,[["$","$L12",null,{"children":"$L13"}],null],["$","$L14",null,{"children":["$","div",null,{"hidden":true,"children":["$","$15",null,{"fallback":null,"children":"$L16"}]}]}]]}],false]],"m":"$undefined","G":["$17",[]],"s":false,"S":true}
18
+ :HL["/_next/static/css/ddb1646dc25ed100.css","style"]
19
+ 0:{"P":null,"b":"vTGEzSqxhR_E57YAFn9DC","p":"","c":["","signals"],"i":false,"f":[[["",{"children":["signals",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/ddb1646dc25ed100.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":[["$","head",null,{"children":[["$","script",null,{"dangerouslySetInnerHTML":{"__html":"(function(){try{var t=localStorage.getItem(\"station-theme\");if(t===\"dark\"||t===\"light\"){document.documentElement.setAttribute(\"data-theme\",t)}else if(window.matchMedia(\"(prefers-color-scheme:dark)\").matches){document.documentElement.setAttribute(\"data-theme\",\"dark\")}else{document.documentElement.setAttribute(\"data-theme\",\"light\")}}catch(e){document.documentElement.setAttribute(\"data-theme\",\"light\")}})()"}}],["$","link",null,{"href":"https://fonts.googleapis.com/css2?family=Instrument+Serif:ital@0;1&family=IBM+Plex+Mono:wght@400;500&family=Space+Grotesk:wght@300;400;500&display=swap","rel":"stylesheet"}]]}],["$","body",null,{"children":["$","$L2",null,{"children":["$","$L3",null,{"loginPage":["$","$L4",null,{}],"children":["$","$L5",null,{"children":["$","$L6",null,{"children":["$","$L7",null,{"children":["$","$L8",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L9",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"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"},"children":["$","div",null,{"children":[["$","style",null,{"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)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]}]}]}]]}]]}],{"children":["signals",["$","$1","c",{"children":[null,["$","$L8",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L9",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$La",null,{"Component":"$b","searchParams":{},"params":{},"promises":["$@c","$@d"]}],null,["$","$Le",null,{"children":["$Lf",["$","$L10",null,{"promise":"$@11"}]]}]]}],{},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,[["$","$L12",null,{"children":"$L13"}],null],["$","$L14",null,{"children":["$","div",null,{"hidden":true,"children":["$","$15",null,{"fallback":null,"children":"$L16"}]}]}]]}],false]],"m":"$undefined","G":["$17",[]],"s":false,"S":true}
20
20
  c:{}
21
21
  d:"$0:f:0:1:2:children:2:children:1:props:children:0:props:params"
22
22
  13:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]
@@ -1,17 +1,20 @@
1
1
  {
2
2
  "/_not-found/page": "app/_not-found/page.js",
3
+ "/beacons/page": "app/beacons/page.js",
3
4
  "/broadcasts/dyn/[name]/page": "app/broadcasts/dyn/[name]/page.js",
4
- "/broadcasts/page": "app/broadcasts/page.js",
5
5
  "/broadcasts/dyn/[name]/v/[n]/page": "app/broadcasts/dyn/[name]/v/[n]/page.js",
6
- "/broadcasts/[id]/page": "app/broadcasts/[id]/page.js",
7
- "/playground/expression/page": "app/playground/expression/page.js",
8
- "/runs/[id]/page": "app/runs/[id]/page.js",
9
- "/page": "app/page.js",
10
6
  "/broadcasts/new/page": "app/broadcasts/new/page.js",
7
+ "/broadcasts/page": "app/broadcasts/page.js",
8
+ "/beacons/[name]/page": "app/beacons/[name]/page.js",
9
+ "/environment/page": "app/environment/page.js",
11
10
  "/schedules/[id]/page": "app/schedules/[id]/page.js",
12
- "/schedules/page": "app/schedules/page.js",
13
- "/signals/[name]/page": "app/signals/[name]/page.js",
11
+ "/broadcasts/[id]/page": "app/broadcasts/[id]/page.js",
14
12
  "/schedules/new/page": "app/schedules/new/page.js",
13
+ "/page": "app/page.js",
14
+ "/schedules/page": "app/schedules/page.js",
15
+ "/runs/[id]/page": "app/runs/[id]/page.js",
16
+ "/signals/page": "app/signals/page.js",
17
+ "/playground/expression/page": "app/playground/expression/page.js",
15
18
  "/settings/page": "app/settings/page.js",
16
- "/signals/page": "app/signals/page.js"
19
+ "/signals/[name]/page": "app/signals/[name]/page.js"
17
20
  }
@@ -1 +1 @@
1
- exports.id=102,exports.ids=[102],exports.modules={4576:(a,b,c)=>{"use strict";c.d(b,{LoginPage:()=>h});var d=c(82164),e=c(54509),f=c(84995),g=c(81985);function h(){let a=(0,g.S)(),[b,c]=(0,e.useState)(""),[h,i]=(0,e.useState)(""),[j,k]=(0,e.useState)(""),[l,m]=(0,e.useState)(!1);async function n(c){c.preventDefault(),k(""),m(!0);try{await (0,f.iD)(b,h)?a():k("Invalid credentials.")}catch{k("Connection failed.")}m(!1)}return(0,d.jsx)("div",{className:"login-page",children:(0,d.jsxs)("div",{className:"login-card",children:[(0,d.jsxs)("div",{className:"login-header",children:[(0,d.jsxs)("svg",{width:"28",height:"28",viewBox:"0 0 100 100",fill:"none","aria-hidden":"true",children:[(0,d.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,d.jsx)("line",{x1:"50",y1:"2",x2:"50",y2:"88",stroke:"currentColor",strokeWidth:"1"}),(0,d.jsx)("line",{x1:"16",y1:"70",x2:"84",y2:"70",stroke:"currentColor",strokeWidth:"1.2"}),(0,d.jsx)("line",{x1:"39",y1:"25",x2:"61",y2:"25",stroke:"currentColor",strokeWidth:"0.8"}),(0,d.jsx)("line",{x1:"27",y1:"50",x2:"73",y2:"50",stroke:"currentColor",strokeWidth:"0.8"}),(0,d.jsx)("rect",{x:"43",y:"88",width:"14",height:"5",fill:"currentColor",opacity:"0.5"}),(0,d.jsx)("circle",{cx:"50",cy:"2",r:"1.5",fill:"currentColor"})]}),(0,d.jsx)("h1",{children:"Station"})]}),(0,d.jsxs)("form",{onSubmit:n,children:[(0,d.jsxs)("div",{className:"login-field",children:[(0,d.jsx)("label",{htmlFor:"username",children:"Username"}),(0,d.jsx)("input",{id:"username",type:"text",value:b,onChange:a=>c(a.target.value),autoComplete:"username",autoFocus:!0,required:!0})]}),(0,d.jsxs)("div",{className:"login-field",children:[(0,d.jsx)("label",{htmlFor:"password",children:"Password"}),(0,d.jsx)("input",{id:"password",type:"password",value:h,onChange:a=>i(a.target.value),autoComplete:"current-password",required:!0})]}),j&&(0,d.jsx)("div",{className:"login-error",children:j}),(0,d.jsx)("button",{type:"submit",className:"btn btn--primary login-btn",disabled:l,children:l?"Signing in...":"Sign in"})]})]})})}},15295:(a,b,c)=>{"use strict";c.d(b,{StationProvider:()=>e});var d=c(94026);(0,d.registerClientReference)(function(){throw Error("Attempted to call useStation() from the server but useStation is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/Users/don/Documents/dev/simple-signal/packages/station-kit/src/app/hooks/use-station.tsx","useStation");let e=(0,d.registerClientReference)(function(){throw Error("Attempted to call StationProvider() from the server but StationProvider is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/Users/don/Documents/dev/simple-signal/packages/station-kit/src/app/hooks/use-station.tsx","StationProvider")},16825:(a,b,c)=>{"use strict";c.d(b,{Shell:()=>d});let d=(0,c(94026).registerClientReference)(function(){throw Error("Attempted to call Shell() from the server but Shell is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/Users/don/Documents/dev/simple-signal/packages/station-kit/src/app/components/shell.tsx","Shell")},23726:(a,b,c)=>{"use strict";c.d(b,{BreadcrumbProvider:()=>g});var d=c(82164),e=c(54509),f=c(88770);function g({children:a}){let[b,c]=(0,e.useState)([]),[g,h]=(0,e.useState)(null),i=(0,e.useCallback)(a=>c(a),[]),j=(0,e.useCallback)(a=>h(a),[]);return(0,d.jsx)(f.Hc.Provider,{value:{segments:b,activeSection:g,setSegments:i,setActiveSection:j},children:a})}},24556:(a,b,c)=>{"use strict";c.d(b,{ThemeProvider:()=>e});var d=c(94026);(0,d.registerClientReference)(function(){throw Error("Attempted to call useTheme() from the server but useTheme is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/Users/don/Documents/dev/simple-signal/packages/station-kit/src/app/components/theme-provider.tsx","useTheme");let e=(0,d.registerClientReference)(function(){throw Error("Attempted to call ThemeProvider() from the server but ThemeProvider is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/Users/don/Documents/dev/simple-signal/packages/station-kit/src/app/components/theme-provider.tsx","ThemeProvider")},25627:(a,b,c)=>{Promise.resolve().then(c.t.bind(c,2714,23)),Promise.resolve().then(c.t.bind(c,65701,23)),Promise.resolve().then(c.t.bind(c,68709,23)),Promise.resolve().then(c.t.bind(c,60492,23)),Promise.resolve().then(c.t.bind(c,13012,23)),Promise.resolve().then(c.t.bind(c,65800,23)),Promise.resolve().then(c.t.bind(c,11968,23)),Promise.resolve().then(c.t.bind(c,55273,23)),Promise.resolve().then(c.t.bind(c,61824,23))},42167:(a,b,c)=>{"use strict";c.d(b,{Shell:()=>v});var d=c(82164),e=c(54509),f=c(5543),g=c.n(f),h=c(26170),i=c(96273),j=c(88770),k=c(75226),l=c(81985);function m(){return!1}function n({size:a=20}){return(0,d.jsxs)("svg",{width:a,height:a,viewBox:"0 0 100 100",fill:"none","aria-hidden":"true",children:[(0,d.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,d.jsx)("line",{x1:"50",y1:"2",x2:"50",y2:"88",stroke:"currentColor",strokeWidth:"1"}),(0,d.jsx)("line",{x1:"16",y1:"70",x2:"84",y2:"70",stroke:"currentColor",strokeWidth:"1.2"}),(0,d.jsx)("line",{x1:"39",y1:"25",x2:"61",y2:"25",stroke:"currentColor",strokeWidth:"0.8"}),(0,d.jsx)("line",{x1:"27",y1:"50",x2:"73",y2:"50",stroke:"currentColor",strokeWidth:"0.8"}),(0,d.jsx)("rect",{x:"43",y:"88",width:"14",height:"5",fill:"currentColor",opacity:"0.5"}),(0,d.jsx)("circle",{cx:"50",cy:"2",r:"1.5",fill:"currentColor"})]})}function o(){return(0,d.jsxs)("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",stroke:"currentColor",strokeWidth:"1.2","aria-hidden":"true",children:[(0,d.jsx)("rect",{x:"1",y:"1",width:"5",height:"5",rx:"1"}),(0,d.jsx)("rect",{x:"8",y:"1",width:"5",height:"5",rx:"1"}),(0,d.jsx)("rect",{x:"1",y:"8",width:"5",height:"5",rx:"1"}),(0,d.jsx)("rect",{x:"8",y:"8",width:"5",height:"5",rx:"1"})]})}function p(){return(0,d.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,d.jsx)("circle",{cx:"7",cy:"12",r:"1",fill:"currentColor",stroke:"none"}),(0,d.jsx)("path",{d:"M4.5 10a3.5 3.5 0 0 1 5 0"}),(0,d.jsx)("path",{d:"M2.5 8a6 6 0 0 1 9 0"}),(0,d.jsx)("path",{d:"M0.5 6a8.5 8.5 0 0 1 13 0"})]})}function q(){return(0,d.jsxs)("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",stroke:"currentColor",strokeWidth:"1.2","aria-hidden":"true",children:[(0,d.jsx)("circle",{cx:"7",cy:"2.5",r:"1.5"}),(0,d.jsx)("circle",{cx:"3",cy:"11.5",r:"1.5"}),(0,d.jsx)("circle",{cx:"11",cy:"11.5",r:"1.5"}),(0,d.jsx)("line",{x1:"6.2",y1:"3.8",x2:"3.8",y2:"10"}),(0,d.jsx)("line",{x1:"7.8",y1:"3.8",x2:"10.2",y2:"10"})]})}function r(){return(0,d.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,d.jsx)("circle",{cx:"7",cy:"7",r:"2"}),(0,d.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 s(){return(0,d.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,d.jsx)("circle",{cx:"7",cy:"7",r:"5.5"}),(0,d.jsx)("path",{d:"M7 4v3l2 1.5"})]})}function t(){return(0,d.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,d.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,d.jsx)("path",{d:"M3.5 8.5h7"})]})}function u({href:a,label:b,section:c,icon:e}){let f=(0,h.usePathname)(),{activeSection:i}=(0,j.iQ)(),k=i?i===c:"/"===a?"/"===f:f.startsWith(a);return(0,d.jsxs)(g(),{href:a,className:k?"active":"",children:[e,(0,d.jsx)("span",{className:"nav-label",children:b})]})}function v({children:a}){let{connected:b}=(0,i.q)(),{segments:c}=(0,j.iQ)(),{theme:f,toggle:h}=(0,k.D)(),{logout:v}=(0,l.A)(),[w,x]=(0,e.useState)(m),y=(0,e.useCallback)(()=>{x(a=>{let b=!a;return localStorage.setItem("station-sidebar",b?"collapsed":"expanded"),b})},[]);return(0,d.jsxs)("div",{className:"station-layout","data-collapsed":w,children:[(0,d.jsxs)("aside",{className:"station-sidebar",children:[(0,d.jsxs)("div",{className:"station-sidebar-logo",children:[(0,d.jsxs)("div",{className:"station-sidebar-mark",children:[(0,d.jsx)(n,{size:20}),(0,d.jsx)("h1",{children:"Station"})]}),(0,d.jsx)("span",{children:"station-signal"})]}),(0,d.jsxs)("nav",{className:"station-sidebar-nav",children:[(0,d.jsx)("div",{className:"station-sidebar-nav-label",children:"Nav"}),(0,d.jsx)(u,{href:"/",label:"Overview",section:"overview",icon:(0,d.jsx)(o,{})}),(0,d.jsx)(u,{href:"/signals",label:"Signals",section:"signals",icon:(0,d.jsx)(p,{})}),(0,d.jsx)(u,{href:"/broadcasts",label:"Broadcasts",section:"broadcasts",icon:(0,d.jsx)(q,{})}),(0,d.jsx)(u,{href:"/schedules",label:"Schedules",section:"schedules",icon:(0,d.jsx)(s,{})}),(0,d.jsx)("div",{className:"station-sidebar-nav-label",style:{marginTop:"1rem"},children:"Tools"}),(0,d.jsx)(u,{href:"/playground/expression",label:"Expressions",section:"playground",icon:(0,d.jsx)(t,{})}),(0,d.jsx)("div",{className:"station-sidebar-nav-label",style:{marginTop:"1rem"},children:"Admin"}),(0,d.jsx)(u,{href:"/settings",label:"Settings",section:"settings",icon:(0,d.jsx)(r,{})})]}),(0,d.jsx)("button",{className:"sidebar-collapse-btn",onClick:y,title:w?"Expand sidebar":"Collapse sidebar","aria-label":w?"Expand sidebar":"Collapse sidebar",children:(0,d.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round","aria-hidden":"true",children:w?(0,d.jsx)("polyline",{points:"5 3 9 7 5 11"}):(0,d.jsx)("polyline",{points:"9 3 5 7 9 11"})})})]}),(0,d.jsxs)("div",{className:"station-main",children:[(0,d.jsxs)("header",{className:"station-header",children:[(0,d.jsx)("nav",{className:"breadcrumb","aria-label":"Breadcrumb",children:0===c.length?(0,d.jsx)("span",{className:"breadcrumb-segment",children:"overview"}):c.map((a,b)=>(0,d.jsxs)("span",{className:"breadcrumb-item",children:[b>0&&(0,d.jsx)("span",{className:"breadcrumb-sep","aria-hidden":"true",children:"/"}),a.href?(0,d.jsx)(g(),{href:a.href,className:"breadcrumb-link",children:a.label}):(0,d.jsx)("span",{className:"breadcrumb-segment breadcrumb-segment--current","aria-current":"page",children:a.label})]},b))}),(0,d.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"0.75rem"},children:[(0,d.jsx)("button",{onClick:h,className:"theme-toggle",title:"light"===f?"Switch to dark mode":"Switch to light mode","aria-label":"light"===f?"Switch to dark mode":"Switch to light mode",children:"light"===f?(0,d.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:"1.5",children:(0,d.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,d.jsxs)("svg",{width:"14",height:"14",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:"1.5",children:[(0,d.jsx)("circle",{cx:"8",cy:"8",r:"3"}),(0,d.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,d.jsx)("button",{onClick:v,className:"logout-btn",title:"Sign out","aria-label":"Sign out",children:(0,d.jsxs)("svg",{width:"14",height:"14",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",children:[(0,d.jsx)("path",{d:"M6 2H3a1 1 0 0 0-1 1v10a1 1 0 0 0 1 1h3"}),(0,d.jsx)("path",{d:"M10 12l4-4-4-4"}),(0,d.jsx)("line",{x1:"14",y1:"8",x2:"6",y2:"8"})]})}),(0,d.jsx)("div",{className:`pulse-dot ${b?"":"pulse-dot--disconnected"}`,title:b?"Connected":"Disconnected"})]})]}),(0,d.jsx)("main",{className:"station-content",children:a})]})]})}},44267:()=>{},48654:(a,b,c)=>{Promise.resolve().then(c.bind(c,81985)),Promise.resolve().then(c.bind(c,23726)),Promise.resolve().then(c.bind(c,4576)),Promise.resolve().then(c.bind(c,42167)),Promise.resolve().then(c.bind(c,75226)),Promise.resolve().then(c.bind(c,96273))},68728:(a,b,c)=>{"use strict";c.d(b,{BreadcrumbProvider:()=>d});let d=(0,c(94026).registerClientReference)(function(){throw Error("Attempted to call BreadcrumbProvider() from the server but BreadcrumbProvider is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/Users/don/Documents/dev/simple-signal/packages/station-kit/src/app/components/breadcrumb-provider.tsx","BreadcrumbProvider")},74562:(a,b,c)=>{"use strict";c.d(b,{LoginPage:()=>d});let d=(0,c(94026).registerClientReference)(function(){throw Error("Attempted to call LoginPage() from the server but LoginPage is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/Users/don/Documents/dev/simple-signal/packages/station-kit/src/app/components/login-page.tsx","LoginPage")},75226:(a,b,c)=>{"use strict";c.d(b,{D:()=>g,ThemeProvider:()=>i});var d=c(82164),e=c(54509);let f=(0,e.createContext)({theme:"light",toggle:()=>{}});function g(){return(0,e.useContext)(f)}function h(){return"light"}function i({children:a}){let[b,c]=(0,e.useState)(h),g=(0,e.useCallback)(()=>{c(a=>"light"===a?"dark":"light")},[]);return(0,d.jsx)(f.Provider,{value:{theme:b,toggle:g},children:a})}},78771:(a,b,c)=>{Promise.resolve().then(c.t.bind(c,20576,23)),Promise.resolve().then(c.t.bind(c,60611,23)),Promise.resolve().then(c.t.bind(c,55519,23)),Promise.resolve().then(c.t.bind(c,54450,23)),Promise.resolve().then(c.t.bind(c,56358,23)),Promise.resolve().then(c.t.bind(c,67034,23)),Promise.resolve().then(c.t.bind(c,25506,23)),Promise.resolve().then(c.t.bind(c,2455,23)),Promise.resolve().then(c.bind(c,84978))},78918:(a,b,c)=>{Promise.resolve().then(c.bind(c,93087)),Promise.resolve().then(c.bind(c,68728)),Promise.resolve().then(c.bind(c,74562)),Promise.resolve().then(c.bind(c,16825)),Promise.resolve().then(c.bind(c,24556)),Promise.resolve().then(c.bind(c,15295))},81985:(a,b,c)=>{"use strict";c.d(b,{A:()=>h,AuthProvider:()=>i,S:()=>k});var d=c(82164),e=c(54509),f=c(84995);let g=(0,e.createContext)({authenticated:!0,logout:async()=>{}});function h(){return(0,e.useContext)(g)}function i({children:a,loginPage:b}){let[c,h]=(0,e.useState)("loading"),i=(0,e.useCallback)(async()=>{await (0,f.ri)(),h("unauthenticated")},[]),j=(0,e.useCallback)(()=>{h("authenticated")},[]);return"loading"===c?null:"unauthenticated"===c?(0,d.jsx)(l,{onSuccess:j,children:b}):(0,d.jsx)(g.Provider,{value:{authenticated:!0,logout:i},children:a})}let j=(0,e.createContext)(()=>{});function k(){return(0,e.useContext)(j)}function l({children:a,onSuccess:b}){return(0,d.jsx)(j.Provider,{value:b,children:a})}},82648:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>l,metadata:()=>k});var d=c(38098);c(44267);var e=c(16825),f=c(24556),g=c(15295),h=c(68728),i=c(93087),j=c(74562);let k={title:"Station",description:"Dashboard for station-signal"};function l({children:a}){return(0,d.jsxs)("html",{lang:"en",suppressHydrationWarning:!0,children:[(0,d.jsxs)("head",{children:[(0,d.jsx)("script",{dangerouslySetInnerHTML:{__html:'(function(){try{var t=localStorage.getItem("station-theme");if(t==="dark"||t==="light"){document.documentElement.setAttribute("data-theme",t)}else if(window.matchMedia("(prefers-color-scheme:dark)").matches){document.documentElement.setAttribute("data-theme","dark")}else{document.documentElement.setAttribute("data-theme","light")}}catch(e){document.documentElement.setAttribute("data-theme","light")}})()'}}),(0,d.jsx)("link",{href:"https://fonts.googleapis.com/css2?family=Instrument+Serif:ital@0;1&family=IBM+Plex+Mono:wght@400;500&family=Space+Grotesk:wght@300;400;500&display=swap",rel:"stylesheet"})]}),(0,d.jsx)("body",{children:(0,d.jsx)(f.ThemeProvider,{children:(0,d.jsx)(i.AuthProvider,{loginPage:(0,d.jsx)(j.LoginPage,{}),children:(0,d.jsx)(g.StationProvider,{children:(0,d.jsx)(h.BreadcrumbProvider,{children:(0,d.jsx)(e.Shell,{children:a})})})})})})]})}},84995:(a,b,c)=>{"use strict";async function d(a,b){let c=await fetch(`/api${a}`,{...b,credentials:"include",headers:{"Content-Type":"application/json",...b?.headers}});if(!c.ok)throw Error((await c.json().catch(()=>({error:"unknown",message:"Request failed."}))).message);return c.json()}async function e(){let a=await fetch("/api/auth/check",{credentials:"include"});return(await a.json()).data}async function f(a,b){return(await fetch("/api/auth/login",{method:"POST",credentials:"include",headers:{"Content-Type":"application/json"},body:JSON.stringify({username:a,password:b})})).ok}async function g(){await fetch("/api/auth/logout",{method:"POST",credentials:"include"})}function h(){return{getHealth:()=>d("/health"),getSignals:()=>d("/signals"),getScheduledSignals:()=>d("/signals/scheduled"),getSignal:a=>d(`/signals/${encodeURIComponent(a)}`),getSignalRuns:a=>d(`/signals/${encodeURIComponent(a)}/runs`),triggerSignal:(a,b)=>d(`/signals/${encodeURIComponent(a)}/trigger`,{method:"POST",body:JSON.stringify({input:b??{}})}),getRuns:a=>{let b=new URLSearchParams;a?.status&&b.set("status",a.status),a?.signalName&&b.set("signalName",a.signalName);let c=b.toString();return d(`/runs${c?`?${c}`:""}`)},getRunStats:()=>d("/runs/stats"),getRun:a=>d(`/runs/${a}`),getRunSteps:a=>d(`/runs/${a}/steps`),getRunLogs:a=>d(`/runs/${a}/logs`),cancelRun:a=>d(`/runs/${a}/cancel`,{method:"POST"}),rerunRun:a=>d(`/runs/${a}/rerun`,{method:"POST"}),retryRun:a=>d(`/runs/${a}/retry`,{method:"POST"}),getBroadcasts:()=>d("/broadcasts"),getBroadcast:a=>d(`/broadcasts/${encodeURIComponent(a)}`),triggerBroadcast:(a,b)=>d(`/broadcasts/${encodeURIComponent(a)}/trigger`,{method:"POST",body:JSON.stringify({input:b??{}})}),getBroadcastRuns:a=>d(`/broadcasts/${encodeURIComponent(a)}/runs`),getBroadcastRun:a=>d(`/broadcast-runs/${a}`),getBroadcastRunNodes:a=>d(`/broadcast-runs/${a}/nodes`),getBroadcastRunLogs:a=>d(`/broadcast-runs/${a}/logs`),cancelBroadcastRun:a=>d(`/broadcast-runs/${a}/cancel`,{method:"POST"}),rerunBroadcastRun:a=>d(`/broadcast-runs/${a}/rerun`,{method:"POST"}),getBroadcastDefinitions:()=>d("/v1/broadcast-definitions"),getBroadcastDefinition:a=>d(`/v1/broadcast-definitions/${encodeURIComponent(a)}`),getBroadcastDefinitionVersions:a=>d(`/v1/broadcast-definitions/${encodeURIComponent(a)}/versions`),saveBroadcastDefinition:a=>d("/v1/broadcast-definitions",{method:"POST",body:JSON.stringify(a)}),validateBroadcastDefinition:a=>d("/v1/broadcast-definitions/validate",{method:"POST",body:JSON.stringify(a)}),deleteBroadcastDefinition:a=>d(`/v1/broadcast-definitions/${encodeURIComponent(a)}`,{method:"DELETE"}),triggerDynamicBroadcast:(a,b)=>d("/v1/trigger-dynamic-broadcast",{method:"POST",body:JSON.stringify({broadcastName:a,input:b??{}})}),getSchedules:a=>{let b=new URLSearchParams;a?.kind&&b.set("kind",a.kind),a?.enabled!==void 0&&b.set("enabled",String(a.enabled));let c=b.toString();return d(`/v1/schedules${c?`?${c}`:""}`)},getSchedule:a=>d(`/v1/schedules/${a}`),createSchedule:a=>d("/v1/schedules",{method:"POST",body:JSON.stringify(a)}),updateSchedule:(a,b)=>d(`/v1/schedules/${a}`,{method:"PATCH",body:JSON.stringify(b)}),deleteSchedule:a=>d(`/v1/schedules/${a}`,{method:"DELETE"}),previewSchedule:(a,b=5)=>d(`/v1/schedules/${a}/preview`,{method:"POST",body:JSON.stringify({count:b})}),evaluateExpression:(a,b)=>d("/v1/expressions/evaluate",{method:"POST",body:JSON.stringify({node:a,context:b})}),validateExpression:(a,b)=>d("/v1/expressions/validate",{method:"POST",body:JSON.stringify({node:a,schemaContext:b})}),parseExpression:a=>d("/v1/expressions/parse",{method:"POST",body:JSON.stringify({source:a})}),getApiKeys:()=>d("/v1/keys"),createApiKey:(a,b)=>d("/v1/keys",{method:"POST",body:JSON.stringify({name:a,scopes:b})}),revokeApiKey:a=>d(`/v1/keys/${a}`,{method:"DELETE"})}}c.d(b,{T5:()=>e,gf:()=>h,iD:()=>f,ri:()=>g})},88770:(a,b,c)=>{"use strict";c.d(b,{Hc:()=>e,iQ:()=>g,rT:()=>f});var d=c(54509);let e=(0,d.createContext)({segments:[],activeSection:null,setSegments:()=>{},setActiveSection:()=>{}});function f(a,b){let c=(0,d.useContext)(e);(0,d.useEffect)(()=>{c.setSegments(a),c.setActiveSection(b)},[JSON.stringify(a),b])}function g(){return(0,d.useContext)(e)}},93087:(a,b,c)=>{"use strict";c.d(b,{AuthProvider:()=>e});var d=c(94026);(0,d.registerClientReference)(function(){throw Error("Attempted to call useAuth() from the server but useAuth is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/Users/don/Documents/dev/simple-signal/packages/station-kit/src/app/components/auth-provider.tsx","useAuth");let e=(0,d.registerClientReference)(function(){throw Error("Attempted to call AuthProvider() from the server but AuthProvider is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/Users/don/Documents/dev/simple-signal/packages/station-kit/src/app/components/auth-provider.tsx","AuthProvider");(0,d.registerClientReference)(function(){throw Error("Attempted to call useLoginCallback() from the server but useLoginCallback is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/Users/don/Documents/dev/simple-signal/packages/station-kit/src/app/components/auth-provider.tsx","useLoginCallback")},96273:(a,b,c)=>{"use strict";c.d(b,{StationProvider:()=>h,q:()=>g});var d=c(82164),e=c(54509);let f=(0,e.createContext)({connected:!1,events:[]});function g(){return(0,e.useContext)(f)}function h({children:a}){let[b,c]=(0,e.useState)([]),{connected:g}=function(a){let[b,c]=(0,e.useState)(!1);return(0,e.useRef)(a).current=a,{connected:b}}((0,e.useCallback)(a=>{c(b=>[a,...b].slice(0,100))},[]));return(0,d.jsx)(f.Provider,{value:{connected:g,events:b},children:a})}}};
1
+ exports.id=102,exports.ids=[102],exports.modules={4576:(a,b,c)=>{"use strict";c.d(b,{LoginPage:()=>h});var d=c(82164),e=c(54509),f=c(84995),g=c(81985);function h(){let a=(0,g.S)(),[b,c]=(0,e.useState)(""),[h,i]=(0,e.useState)(""),[j,k]=(0,e.useState)(""),[l,m]=(0,e.useState)(!1);async function n(c){c.preventDefault(),k(""),m(!0);try{await (0,f.iD)(b,h)?a():k("Invalid credentials.")}catch{k("Connection failed.")}m(!1)}return(0,d.jsx)("div",{className:"login-page",children:(0,d.jsxs)("div",{className:"login-card",children:[(0,d.jsxs)("div",{className:"login-header",children:[(0,d.jsxs)("svg",{width:"28",height:"28",viewBox:"0 0 100 100",fill:"none","aria-hidden":"true",children:[(0,d.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,d.jsx)("line",{x1:"50",y1:"2",x2:"50",y2:"88",stroke:"currentColor",strokeWidth:"1"}),(0,d.jsx)("line",{x1:"16",y1:"70",x2:"84",y2:"70",stroke:"currentColor",strokeWidth:"1.2"}),(0,d.jsx)("line",{x1:"39",y1:"25",x2:"61",y2:"25",stroke:"currentColor",strokeWidth:"0.8"}),(0,d.jsx)("line",{x1:"27",y1:"50",x2:"73",y2:"50",stroke:"currentColor",strokeWidth:"0.8"}),(0,d.jsx)("rect",{x:"43",y:"88",width:"14",height:"5",fill:"currentColor",opacity:"0.5"}),(0,d.jsx)("circle",{cx:"50",cy:"2",r:"1.5",fill:"currentColor"})]}),(0,d.jsx)("h1",{children:"Station"})]}),(0,d.jsxs)("form",{onSubmit:n,children:[(0,d.jsxs)("div",{className:"login-field",children:[(0,d.jsx)("label",{htmlFor:"username",children:"Username"}),(0,d.jsx)("input",{id:"username",type:"text",value:b,onChange:a=>c(a.target.value),autoComplete:"username",autoFocus:!0,required:!0})]}),(0,d.jsxs)("div",{className:"login-field",children:[(0,d.jsx)("label",{htmlFor:"password",children:"Password"}),(0,d.jsx)("input",{id:"password",type:"password",value:h,onChange:a=>i(a.target.value),autoComplete:"current-password",required:!0})]}),j&&(0,d.jsx)("div",{className:"login-error",children:j}),(0,d.jsx)("button",{type:"submit",className:"btn btn--primary login-btn",disabled:l,children:l?"Signing in...":"Sign in"})]})]})})}},15295:(a,b,c)=>{"use strict";c.d(b,{StationProvider:()=>e});var d=c(94026);(0,d.registerClientReference)(function(){throw Error("Attempted to call useStation() from the server but useStation is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/Users/don/Documents/dev/simple-signal/packages/station-kit/src/app/hooks/use-station.tsx","useStation");let e=(0,d.registerClientReference)(function(){throw Error("Attempted to call StationProvider() from the server but StationProvider is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/Users/don/Documents/dev/simple-signal/packages/station-kit/src/app/hooks/use-station.tsx","StationProvider")},16825:(a,b,c)=>{"use strict";c.d(b,{Shell:()=>d});let d=(0,c(94026).registerClientReference)(function(){throw Error("Attempted to call Shell() from the server but Shell is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/Users/don/Documents/dev/simple-signal/packages/station-kit/src/app/components/shell.tsx","Shell")},23726:(a,b,c)=>{"use strict";c.d(b,{BreadcrumbProvider:()=>g});var d=c(82164),e=c(54509),f=c(88770);function g({children:a}){let[b,c]=(0,e.useState)([]),[g,h]=(0,e.useState)(null),i=(0,e.useCallback)(a=>c(a),[]),j=(0,e.useCallback)(a=>h(a),[]);return(0,d.jsx)(f.Hc.Provider,{value:{segments:b,activeSection:g,setSegments:i,setActiveSection:j},children:a})}},24556:(a,b,c)=>{"use strict";c.d(b,{ThemeProvider:()=>e});var d=c(94026);(0,d.registerClientReference)(function(){throw Error("Attempted to call useTheme() from the server but useTheme is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/Users/don/Documents/dev/simple-signal/packages/station-kit/src/app/components/theme-provider.tsx","useTheme");let e=(0,d.registerClientReference)(function(){throw Error("Attempted to call ThemeProvider() from the server but ThemeProvider is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/Users/don/Documents/dev/simple-signal/packages/station-kit/src/app/components/theme-provider.tsx","ThemeProvider")},25627:(a,b,c)=>{Promise.resolve().then(c.t.bind(c,2714,23)),Promise.resolve().then(c.t.bind(c,65701,23)),Promise.resolve().then(c.t.bind(c,68709,23)),Promise.resolve().then(c.t.bind(c,60492,23)),Promise.resolve().then(c.t.bind(c,13012,23)),Promise.resolve().then(c.t.bind(c,65800,23)),Promise.resolve().then(c.t.bind(c,11968,23)),Promise.resolve().then(c.t.bind(c,55273,23)),Promise.resolve().then(c.t.bind(c,61824,23))},42167:(a,b,c)=>{"use strict";c.d(b,{Shell:()=>x});var d=c(82164),e=c(54509),f=c(5543),g=c.n(f),h=c(26170),i=c(96273),j=c(88770),k=c(75226),l=c(81985);function m(){return!1}function n({size:a=20}){return(0,d.jsxs)("svg",{width:a,height:a,viewBox:"0 0 100 100",fill:"none","aria-hidden":"true",children:[(0,d.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,d.jsx)("line",{x1:"50",y1:"2",x2:"50",y2:"88",stroke:"currentColor",strokeWidth:"1"}),(0,d.jsx)("line",{x1:"16",y1:"70",x2:"84",y2:"70",stroke:"currentColor",strokeWidth:"1.2"}),(0,d.jsx)("line",{x1:"39",y1:"25",x2:"61",y2:"25",stroke:"currentColor",strokeWidth:"0.8"}),(0,d.jsx)("line",{x1:"27",y1:"50",x2:"73",y2:"50",stroke:"currentColor",strokeWidth:"0.8"}),(0,d.jsx)("rect",{x:"43",y:"88",width:"14",height:"5",fill:"currentColor",opacity:"0.5"}),(0,d.jsx)("circle",{cx:"50",cy:"2",r:"1.5",fill:"currentColor"})]})}function o(){return(0,d.jsxs)("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",stroke:"currentColor",strokeWidth:"1.2","aria-hidden":"true",children:[(0,d.jsx)("rect",{x:"1",y:"1",width:"5",height:"5",rx:"1"}),(0,d.jsx)("rect",{x:"8",y:"1",width:"5",height:"5",rx:"1"}),(0,d.jsx)("rect",{x:"1",y:"8",width:"5",height:"5",rx:"1"}),(0,d.jsx)("rect",{x:"8",y:"8",width:"5",height:"5",rx:"1"})]})}function p(){return(0,d.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,d.jsx)("circle",{cx:"7",cy:"12",r:"1",fill:"currentColor",stroke:"none"}),(0,d.jsx)("path",{d:"M4.5 10a3.5 3.5 0 0 1 5 0"}),(0,d.jsx)("path",{d:"M2.5 8a6 6 0 0 1 9 0"}),(0,d.jsx)("path",{d:"M0.5 6a8.5 8.5 0 0 1 13 0"})]})}function q(){return(0,d.jsxs)("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",stroke:"currentColor",strokeWidth:"1.2","aria-hidden":"true",children:[(0,d.jsx)("circle",{cx:"7",cy:"2.5",r:"1.5"}),(0,d.jsx)("circle",{cx:"3",cy:"11.5",r:"1.5"}),(0,d.jsx)("circle",{cx:"11",cy:"11.5",r:"1.5"}),(0,d.jsx)("line",{x1:"6.2",y1:"3.8",x2:"3.8",y2:"10"}),(0,d.jsx)("line",{x1:"7.8",y1:"3.8",x2:"10.2",y2:"10"})]})}function r(){return(0,d.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,d.jsx)("circle",{cx:"7",cy:"2.5",r:"1.25",fill:"currentColor",stroke:"none"}),(0,d.jsx)("path",{d:"M7 3.75V11"}),(0,d.jsx)("path",{d:"M4.5 11 7 7.5 9.5 11"}),(0,d.jsx)("path",{d:"M3.6 2.6a3 3 0 0 0 0 3.2M10.4 2.6a3 3 0 0 1 0 3.2",opacity:"0.6"})]})}function s(){return(0,d.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,d.jsx)("circle",{cx:"7",cy:"7",r:"2"}),(0,d.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 t(){return(0,d.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,d.jsx)("circle",{cx:"7",cy:"7",r:"5.5"}),(0,d.jsx)("path",{d:"M7 4v3l2 1.5"})]})}function u(){return(0,d.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,d.jsx)("circle",{cx:"4.5",cy:"4.5",r:"2.5"}),(0,d.jsx)("path",{d:"M6.3 6.3 12 12M9.5 9.5l1.2-1.2M11 11l1.2-1.2"})]})}function v(){return(0,d.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,d.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,d.jsx)("path",{d:"M3.5 8.5h7"})]})}function w({href:a,label:b,section:c,icon:e}){let f=(0,h.usePathname)(),{activeSection:i}=(0,j.iQ)(),k=i?i===c:"/"===a?"/"===f:f.startsWith(a);return(0,d.jsxs)(g(),{href:a,className:k?"active":"",children:[e,(0,d.jsx)("span",{className:"nav-label",children:b})]})}function x({children:a}){let{connected:b}=(0,i.q)(),{segments:c}=(0,j.iQ)(),{theme:f,toggle:h}=(0,k.D)(),{logout:x}=(0,l.A)(),[y,z]=(0,e.useState)(m),A=(0,e.useCallback)(()=>{z(a=>{let b=!a;return localStorage.setItem("station-sidebar",b?"collapsed":"expanded"),b})},[]);return(0,d.jsxs)("div",{className:"station-layout","data-collapsed":y,children:[(0,d.jsxs)("aside",{className:"station-sidebar",children:[(0,d.jsxs)("div",{className:"station-sidebar-logo",children:[(0,d.jsxs)("div",{className:"station-sidebar-mark",children:[(0,d.jsx)(n,{size:20}),(0,d.jsx)("h1",{children:"Station"})]}),(0,d.jsx)("span",{children:"station-signal"})]}),(0,d.jsxs)("nav",{className:"station-sidebar-nav",children:[(0,d.jsx)("div",{className:"station-sidebar-nav-label",children:"Nav"}),(0,d.jsx)(w,{href:"/",label:"Overview",section:"overview",icon:(0,d.jsx)(o,{})}),(0,d.jsx)(w,{href:"/signals",label:"Signals",section:"signals",icon:(0,d.jsx)(p,{})}),(0,d.jsx)(w,{href:"/broadcasts",label:"Broadcasts",section:"broadcasts",icon:(0,d.jsx)(q,{})}),(0,d.jsx)(w,{href:"/beacons",label:"Beacons",section:"beacons",icon:(0,d.jsx)(r,{})}),(0,d.jsx)(w,{href:"/schedules",label:"Schedules",section:"schedules",icon:(0,d.jsx)(t,{})}),(0,d.jsx)(w,{href:"/environment",label:"Environment",section:"environment",icon:(0,d.jsx)(u,{})}),(0,d.jsx)("div",{className:"station-sidebar-nav-label",style:{marginTop:"1rem"},children:"Tools"}),(0,d.jsx)(w,{href:"/playground/expression",label:"Expressions",section:"playground",icon:(0,d.jsx)(v,{})}),(0,d.jsx)("div",{className:"station-sidebar-nav-label",style:{marginTop:"1rem"},children:"Admin"}),(0,d.jsx)(w,{href:"/settings",label:"Settings",section:"settings",icon:(0,d.jsx)(s,{})})]}),(0,d.jsx)("button",{className:"sidebar-collapse-btn",onClick:A,title:y?"Expand sidebar":"Collapse sidebar","aria-label":y?"Expand sidebar":"Collapse sidebar",children:(0,d.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round","aria-hidden":"true",children:y?(0,d.jsx)("polyline",{points:"5 3 9 7 5 11"}):(0,d.jsx)("polyline",{points:"9 3 5 7 9 11"})})})]}),(0,d.jsxs)("div",{className:"station-main",children:[(0,d.jsxs)("header",{className:"station-header",children:[(0,d.jsx)("nav",{className:"breadcrumb","aria-label":"Breadcrumb",children:0===c.length?(0,d.jsx)("span",{className:"breadcrumb-segment",children:"overview"}):c.map((a,b)=>(0,d.jsxs)("span",{className:"breadcrumb-item",children:[b>0&&(0,d.jsx)("span",{className:"breadcrumb-sep","aria-hidden":"true",children:"/"}),a.href?(0,d.jsx)(g(),{href:a.href,className:"breadcrumb-link",children:a.label}):(0,d.jsx)("span",{className:"breadcrumb-segment breadcrumb-segment--current","aria-current":"page",children:a.label})]},b))}),(0,d.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"0.75rem"},children:[(0,d.jsx)("button",{onClick:h,className:"theme-toggle",title:"light"===f?"Switch to dark mode":"Switch to light mode","aria-label":"light"===f?"Switch to dark mode":"Switch to light mode",children:"light"===f?(0,d.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:"1.5",children:(0,d.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,d.jsxs)("svg",{width:"14",height:"14",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:"1.5",children:[(0,d.jsx)("circle",{cx:"8",cy:"8",r:"3"}),(0,d.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,d.jsx)("button",{onClick:x,className:"logout-btn",title:"Sign out","aria-label":"Sign out",children:(0,d.jsxs)("svg",{width:"14",height:"14",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",children:[(0,d.jsx)("path",{d:"M6 2H3a1 1 0 0 0-1 1v10a1 1 0 0 0 1 1h3"}),(0,d.jsx)("path",{d:"M10 12l4-4-4-4"}),(0,d.jsx)("line",{x1:"14",y1:"8",x2:"6",y2:"8"})]})}),(0,d.jsx)("div",{className:`pulse-dot ${b?"":"pulse-dot--disconnected"}`,title:b?"Connected":"Disconnected"})]})]}),(0,d.jsx)("main",{className:"station-content",children:a})]})]})}},44267:()=>{},48654:(a,b,c)=>{Promise.resolve().then(c.bind(c,81985)),Promise.resolve().then(c.bind(c,23726)),Promise.resolve().then(c.bind(c,4576)),Promise.resolve().then(c.bind(c,42167)),Promise.resolve().then(c.bind(c,75226)),Promise.resolve().then(c.bind(c,96273))},68728:(a,b,c)=>{"use strict";c.d(b,{BreadcrumbProvider:()=>d});let d=(0,c(94026).registerClientReference)(function(){throw Error("Attempted to call BreadcrumbProvider() from the server but BreadcrumbProvider is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/Users/don/Documents/dev/simple-signal/packages/station-kit/src/app/components/breadcrumb-provider.tsx","BreadcrumbProvider")},74562:(a,b,c)=>{"use strict";c.d(b,{LoginPage:()=>d});let d=(0,c(94026).registerClientReference)(function(){throw Error("Attempted to call LoginPage() from the server but LoginPage is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/Users/don/Documents/dev/simple-signal/packages/station-kit/src/app/components/login-page.tsx","LoginPage")},75226:(a,b,c)=>{"use strict";c.d(b,{D:()=>g,ThemeProvider:()=>i});var d=c(82164),e=c(54509);let f=(0,e.createContext)({theme:"light",toggle:()=>{}});function g(){return(0,e.useContext)(f)}function h(){return"light"}function i({children:a}){let[b,c]=(0,e.useState)(h),g=(0,e.useCallback)(()=>{c(a=>"light"===a?"dark":"light")},[]);return(0,d.jsx)(f.Provider,{value:{theme:b,toggle:g},children:a})}},78771:(a,b,c)=>{Promise.resolve().then(c.t.bind(c,20576,23)),Promise.resolve().then(c.t.bind(c,60611,23)),Promise.resolve().then(c.t.bind(c,55519,23)),Promise.resolve().then(c.t.bind(c,54450,23)),Promise.resolve().then(c.t.bind(c,56358,23)),Promise.resolve().then(c.t.bind(c,67034,23)),Promise.resolve().then(c.t.bind(c,25506,23)),Promise.resolve().then(c.t.bind(c,2455,23)),Promise.resolve().then(c.bind(c,84978))},78918:(a,b,c)=>{Promise.resolve().then(c.bind(c,93087)),Promise.resolve().then(c.bind(c,68728)),Promise.resolve().then(c.bind(c,74562)),Promise.resolve().then(c.bind(c,16825)),Promise.resolve().then(c.bind(c,24556)),Promise.resolve().then(c.bind(c,15295))},81985:(a,b,c)=>{"use strict";c.d(b,{A:()=>h,AuthProvider:()=>i,S:()=>k});var d=c(82164),e=c(54509),f=c(84995);let g=(0,e.createContext)({authenticated:!0,logout:async()=>{}});function h(){return(0,e.useContext)(g)}function i({children:a,loginPage:b}){let[c,h]=(0,e.useState)("loading"),i=(0,e.useCallback)(async()=>{await (0,f.ri)(),h("unauthenticated")},[]),j=(0,e.useCallback)(()=>{h("authenticated")},[]);return"loading"===c?null:"unauthenticated"===c?(0,d.jsx)(l,{onSuccess:j,children:b}):(0,d.jsx)(g.Provider,{value:{authenticated:!0,logout:i},children:a})}let j=(0,e.createContext)(()=>{});function k(){return(0,e.useContext)(j)}function l({children:a,onSuccess:b}){return(0,d.jsx)(j.Provider,{value:b,children:a})}},82648:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>l,metadata:()=>k});var d=c(38098);c(44267);var e=c(16825),f=c(24556),g=c(15295),h=c(68728),i=c(93087),j=c(74562);let k={title:"Station",description:"Dashboard for station-signal"};function l({children:a}){return(0,d.jsxs)("html",{lang:"en",suppressHydrationWarning:!0,children:[(0,d.jsxs)("head",{children:[(0,d.jsx)("script",{dangerouslySetInnerHTML:{__html:'(function(){try{var t=localStorage.getItem("station-theme");if(t==="dark"||t==="light"){document.documentElement.setAttribute("data-theme",t)}else if(window.matchMedia("(prefers-color-scheme:dark)").matches){document.documentElement.setAttribute("data-theme","dark")}else{document.documentElement.setAttribute("data-theme","light")}}catch(e){document.documentElement.setAttribute("data-theme","light")}})()'}}),(0,d.jsx)("link",{href:"https://fonts.googleapis.com/css2?family=Instrument+Serif:ital@0;1&family=IBM+Plex+Mono:wght@400;500&family=Space+Grotesk:wght@300;400;500&display=swap",rel:"stylesheet"})]}),(0,d.jsx)("body",{children:(0,d.jsx)(f.ThemeProvider,{children:(0,d.jsx)(i.AuthProvider,{loginPage:(0,d.jsx)(j.LoginPage,{}),children:(0,d.jsx)(g.StationProvider,{children:(0,d.jsx)(h.BreadcrumbProvider,{children:(0,d.jsx)(e.Shell,{children:a})})})})})})]})}},84995:(a,b,c)=>{"use strict";async function d(a,b){let c=await fetch(`/api${a}`,{...b,credentials:"include",headers:{"Content-Type":"application/json",...b?.headers}});if(!c.ok)throw Error((await c.json().catch(()=>({error:"unknown",message:"Request failed."}))).message);return c.json()}async function e(){let a=await fetch("/api/auth/check",{credentials:"include"});return(await a.json()).data}async function f(a,b){return(await fetch("/api/auth/login",{method:"POST",credentials:"include",headers:{"Content-Type":"application/json"},body:JSON.stringify({username:a,password:b})})).ok}async function g(){await fetch("/api/auth/logout",{method:"POST",credentials:"include"})}function h(){return{getHealth:()=>d("/health"),getSignals:()=>d("/signals"),getScheduledSignals:()=>d("/signals/scheduled"),getSignal:a=>d(`/signals/${encodeURIComponent(a)}`),getSignalRuns:a=>d(`/signals/${encodeURIComponent(a)}/runs`),triggerSignal:(a,b)=>d(`/signals/${encodeURIComponent(a)}/trigger`,{method:"POST",body:JSON.stringify({input:b??{}})}),getRuns:a=>{let b=new URLSearchParams;a?.status&&b.set("status",a.status),a?.signalName&&b.set("signalName",a.signalName);let c=b.toString();return d(`/runs${c?`?${c}`:""}`)},getRunStats:()=>d("/runs/stats"),getRun:a=>d(`/runs/${a}`),getRunSteps:a=>d(`/runs/${a}/steps`),getRunLogs:a=>d(`/runs/${a}/logs`),cancelRun:a=>d(`/runs/${a}/cancel`,{method:"POST"}),rerunRun:a=>d(`/runs/${a}/rerun`,{method:"POST"}),retryRun:a=>d(`/runs/${a}/retry`,{method:"POST"}),getBroadcasts:()=>d("/broadcasts"),getBroadcast:a=>d(`/broadcasts/${encodeURIComponent(a)}`),triggerBroadcast:(a,b)=>d(`/broadcasts/${encodeURIComponent(a)}/trigger`,{method:"POST",body:JSON.stringify({input:b??{}})}),getBroadcastRuns:a=>d(`/broadcasts/${encodeURIComponent(a)}/runs`),getBroadcastRun:a=>d(`/broadcast-runs/${a}`),getBroadcastRunNodes:a=>d(`/broadcast-runs/${a}/nodes`),getBroadcastRunLogs:a=>d(`/broadcast-runs/${a}/logs`),cancelBroadcastRun:a=>d(`/broadcast-runs/${a}/cancel`,{method:"POST"}),rerunBroadcastRun:a=>d(`/broadcast-runs/${a}/rerun`,{method:"POST"}),getBeacons:()=>d("/beacons"),getBeacon:a=>d(`/beacons/${encodeURIComponent(a)}`),getBeaconEvents:a=>d(`/beacons/${encodeURIComponent(a)}/events`),getBeaconLogs:a=>d(`/beacons/${encodeURIComponent(a)}/logs`),startBeacon:a=>d(`/beacons/${encodeURIComponent(a)}/start`,{method:"POST"}),stopBeacon:a=>d(`/beacons/${encodeURIComponent(a)}/stop`,{method:"POST"}),restartBeacon:a=>d(`/beacons/${encodeURIComponent(a)}/restart`,{method:"POST"}),getBroadcastDefinitions:()=>d("/v1/broadcast-definitions"),getBroadcastDefinition:a=>d(`/v1/broadcast-definitions/${encodeURIComponent(a)}`),getBroadcastDefinitionVersions:a=>d(`/v1/broadcast-definitions/${encodeURIComponent(a)}/versions`),saveBroadcastDefinition:a=>d("/v1/broadcast-definitions",{method:"POST",body:JSON.stringify(a)}),validateBroadcastDefinition:a=>d("/v1/broadcast-definitions/validate",{method:"POST",body:JSON.stringify(a)}),deleteBroadcastDefinition:a=>d(`/v1/broadcast-definitions/${encodeURIComponent(a)}`,{method:"DELETE"}),triggerDynamicBroadcast:(a,b)=>d("/v1/trigger-dynamic-broadcast",{method:"POST",body:JSON.stringify({broadcastName:a,input:b??{}})}),getSchedules:a=>{let b=new URLSearchParams;a?.kind&&b.set("kind",a.kind),a?.enabled!==void 0&&b.set("enabled",String(a.enabled));let c=b.toString();return d(`/v1/schedules${c?`?${c}`:""}`)},getSchedule:a=>d(`/v1/schedules/${a}`),createSchedule:a=>d("/v1/schedules",{method:"POST",body:JSON.stringify(a)}),updateSchedule:(a,b)=>d(`/v1/schedules/${a}`,{method:"PATCH",body:JSON.stringify(b)}),deleteSchedule:a=>d(`/v1/schedules/${a}`,{method:"DELETE"}),previewSchedule:(a,b=5)=>d(`/v1/schedules/${a}/preview`,{method:"POST",body:JSON.stringify({count:b})}),evaluateExpression:(a,b)=>d("/v1/expressions/evaluate",{method:"POST",body:JSON.stringify({node:a,context:b})}),validateExpression:(a,b)=>d("/v1/expressions/validate",{method:"POST",body:JSON.stringify({node:a,schemaContext:b})}),parseExpression:a=>d("/v1/expressions/parse",{method:"POST",body:JSON.stringify({source:a})}),getEnvVars:()=>d("/v1/env"),createEnvVar:a=>d("/v1/env",{method:"POST",body:JSON.stringify(a)}),updateEnvVar:(a,b)=>d(`/v1/env/${a}`,{method:"PATCH",body:JSON.stringify(b)}),deleteEnvVar:a=>d(`/v1/env/${a}`,{method:"DELETE"}),getApiKeys:()=>d("/v1/keys"),createApiKey:(a,b)=>d("/v1/keys",{method:"POST",body:JSON.stringify({name:a,scopes:b})}),revokeApiKey:a=>d(`/v1/keys/${a}`,{method:"DELETE"})}}c.d(b,{T5:()=>e,gf:()=>h,iD:()=>f,ri:()=>g})},88770:(a,b,c)=>{"use strict";c.d(b,{Hc:()=>e,iQ:()=>g,rT:()=>f});var d=c(54509);let e=(0,d.createContext)({segments:[],activeSection:null,setSegments:()=>{},setActiveSection:()=>{}});function f(a,b){let c=(0,d.useContext)(e);(0,d.useEffect)(()=>{c.setSegments(a),c.setActiveSection(b)},[JSON.stringify(a),b])}function g(){return(0,d.useContext)(e)}},93087:(a,b,c)=>{"use strict";c.d(b,{AuthProvider:()=>e});var d=c(94026);(0,d.registerClientReference)(function(){throw Error("Attempted to call useAuth() from the server but useAuth is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/Users/don/Documents/dev/simple-signal/packages/station-kit/src/app/components/auth-provider.tsx","useAuth");let e=(0,d.registerClientReference)(function(){throw Error("Attempted to call AuthProvider() from the server but AuthProvider is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/Users/don/Documents/dev/simple-signal/packages/station-kit/src/app/components/auth-provider.tsx","AuthProvider");(0,d.registerClientReference)(function(){throw Error("Attempted to call useLoginCallback() from the server but useLoginCallback is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/Users/don/Documents/dev/simple-signal/packages/station-kit/src/app/components/auth-provider.tsx","useLoginCallback")},96273:(a,b,c)=>{"use strict";c.d(b,{StationProvider:()=>h,q:()=>g});var d=c(82164),e=c(54509);let f=(0,e.createContext)({connected:!1,events:[]});function g(){return(0,e.useContext)(f)}function h({children:a}){let[b,c]=(0,e.useState)([]),{connected:g}=function(a){let[b,c]=(0,e.useState)(!1);return(0,e.useRef)(a).current=a,{connected:b}}((0,e.useCallback)(a=>{c(b=>[a,...b].slice(0,100))},[]));return(0,d.jsx)(f.Provider,{value:{connected:g,events:b},children:a})}}};
@@ -1 +1 @@
1
- <!DOCTYPE html><!--THKSkCipW_pj0F6DRXYEG--><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/css/0be0e65a5f561f37.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-e40b05d6bdcb3589.js"/><script src="/_next/static/chunks/8e6518bb-c26e82767f1faf66.js" async=""></script><script src="/_next/static/chunks/743-33720d133c383396.js" async=""></script><script src="/_next/static/chunks/main-app-a9f19d5831b41b19.js" async=""></script><script src="/_next/static/chunks/935-dff12960528de017.js" async=""></script><script src="/_next/static/chunks/app/layout-e14e14f3e5b0b8a9.js" async=""></script><meta name="robots" content="noindex"/><title>Station</title><meta name="description" content="Dashboard for station-signal"/><script>(function(){try{var t=localStorage.getItem("station-theme");if(t==="dark"||t==="light"){document.documentElement.setAttribute("data-theme",t)}else if(window.matchMedia("(prefers-color-scheme:dark)").matches){document.documentElement.setAttribute("data-theme","dark")}else{document.documentElement.setAttribute("data-theme","light")}}catch(e){document.documentElement.setAttribute("data-theme","light")}})()</script><link href="https://fonts.googleapis.com/css2?family=Instrument+Serif:ital@0;1&amp;family=IBM+Plex+Mono:wght@400;500&amp;family=Space+Grotesk:wght@300;400;500&amp;display=swap" rel="stylesheet"/><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><script src="/_next/static/chunks/webpack-e40b05d6bdcb3589.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[9129,[\"935\",\"static/chunks/935-dff12960528de017.js\",\"177\",\"static/chunks/app/layout-e14e14f3e5b0b8a9.js\"],\"ThemeProvider\"]\n3:I[783,[\"935\",\"static/chunks/935-dff12960528de017.js\",\"177\",\"static/chunks/app/layout-e14e14f3e5b0b8a9.js\"],\"AuthProvider\"]\n4:I[1308,[\"935\",\"static/chunks/935-dff12960528de017.js\",\"177\",\"static/chunks/app/layout-e14e14f3e5b0b8a9.js\"],\"LoginPage\"]\n5:I[9275,[\"935\",\"static/chunks/935-dff12960528de017.js\",\"177\",\"static/chunks/app/layout-e14e14f3e5b0b8a9.js\"],\"StationProvider\"]\n6:I[5152,[\"935\",\"static/chunks/935-dff12960528de017.js\",\"177\",\"static/chunks/app/layout-e14e14f3e5b0b8a9.js\"],\"BreadcrumbProvider\"]\n7:I[1961,[\"935\",\"static/chunks/935-dff12960528de017.js\",\"177\",\"static/chunks/app/layout-e14e14f3e5b0b8a9.js\"],\"Shell\"]\n8:I[8954,[],\"\"]\n9:I[5640,[],\"\"]\na:I[2051,[],\"OutletBoundary\"]\nc:I[6658,[],\"AsyncMetadataOutlet\"]\ne:I[2051,[],\"ViewportBoundary\"]\n10:I[2051,[],\"MetadataBoundary\"]\n11:\"$Sreact.suspense\"\n13:I[7698,[],\"\"]\n:HL[\"/_next/static/css/0be0e65a5f561f37.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"THKSkCipW_pj0F6DRXYEG\",\"p\":\"\",\"c\":[\"\",\"_not-found\"],\"i\":false,\"f\":[[[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],[\"\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/0be0e65a5f561f37.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"suppressHydrationWarning\":true,\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"script\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"(function(){try{var t=localStorage.getItem(\\\"station-theme\\\");if(t===\\\"dark\\\"||t===\\\"light\\\"){document.documentElement.setAttribute(\\\"data-theme\\\",t)}else if(window.matchMedia(\\\"(prefers-color-scheme:dark)\\\").matches){document.documentElement.setAttribute(\\\"data-theme\\\",\\\"dark\\\")}else{document.documentElement.setAttribute(\\\"data-theme\\\",\\\"light\\\")}}catch(e){document.documentElement.setAttribute(\\\"data-theme\\\",\\\"light\\\")}})()\"}}],[\"$\",\"link\",null,{\"href\":\"https://fonts.googleapis.com/css2?family=Instrument+Serif:ital@0;1\u0026family=IBM+Plex+Mono:wght@400;500\u0026family=Space+Grotesk:wght@300;400;500\u0026display=swap\",\"rel\":\"stylesheet\"}]]}],[\"$\",\"body\",null,{\"children\":[\"$\",\"$L2\",null,{\"children\":[\"$\",\"$L3\",null,{\"loginPage\":[\"$\",\"$L4\",null,{}],\"children\":[\"$\",\"$L5\",null,{\"children\":[\"$\",\"$L6\",null,{\"children\":[\"$\",\"$L7\",null,{\"children\":[\"$\",\"$L8\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L9\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]}]}]}]}]}]]}]]}],{\"children\":[\"/_not-found\",[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L8\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L9\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[\"__PAGE__\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"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\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"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)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],null,[\"$\",\"$La\",null,{\"children\":[\"$Lb\",[\"$\",\"$Lc\",null,{\"promise\":\"$@d\"}]]}]]}],{},null,false]},null,false]},null,false],[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[[\"$\",\"$Le\",null,{\"children\":\"$Lf\"}],null],[\"$\",\"$L10\",null,{\"children\":[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$11\",null,{\"fallback\":null,\"children\":\"$L12\"}]}]}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$13\",[]],\"s\":false,\"S\":true}\n"])</script><script>self.__next_f.push([1,"f:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\nb:null\n"])</script><script>self.__next_f.push([1,"d:{\"metadata\":[[\"$\",\"title\",\"0\",{\"children\":\"Station\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Dashboard for station-signal\"}]],\"error\":null,\"digest\":\"$undefined\"}\n"])</script><script>self.__next_f.push([1,"12:\"$d:metadata\"\n"])</script></body></html>
1
+ <!DOCTYPE html><!--vTGEzSqxhR_E57YAFn9DC--><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/css/ddb1646dc25ed100.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-e40b05d6bdcb3589.js"/><script src="/_next/static/chunks/8e6518bb-c26e82767f1faf66.js" async=""></script><script src="/_next/static/chunks/743-33720d133c383396.js" async=""></script><script src="/_next/static/chunks/main-app-a9f19d5831b41b19.js" async=""></script><script src="/_next/static/chunks/935-dff12960528de017.js" async=""></script><script src="/_next/static/chunks/app/layout-e9ac56fcaf7a5ea7.js" async=""></script><meta name="robots" content="noindex"/><title>Station</title><meta name="description" content="Dashboard for station-signal"/><script>(function(){try{var t=localStorage.getItem("station-theme");if(t==="dark"||t==="light"){document.documentElement.setAttribute("data-theme",t)}else if(window.matchMedia("(prefers-color-scheme:dark)").matches){document.documentElement.setAttribute("data-theme","dark")}else{document.documentElement.setAttribute("data-theme","light")}}catch(e){document.documentElement.setAttribute("data-theme","light")}})()</script><link href="https://fonts.googleapis.com/css2?family=Instrument+Serif:ital@0;1&amp;family=IBM+Plex+Mono:wght@400;500&amp;family=Space+Grotesk:wght@300;400;500&amp;display=swap" rel="stylesheet"/><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><script src="/_next/static/chunks/webpack-e40b05d6bdcb3589.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[9129,[\"935\",\"static/chunks/935-dff12960528de017.js\",\"177\",\"static/chunks/app/layout-e9ac56fcaf7a5ea7.js\"],\"ThemeProvider\"]\n3:I[783,[\"935\",\"static/chunks/935-dff12960528de017.js\",\"177\",\"static/chunks/app/layout-e9ac56fcaf7a5ea7.js\"],\"AuthProvider\"]\n4:I[1308,[\"935\",\"static/chunks/935-dff12960528de017.js\",\"177\",\"static/chunks/app/layout-e9ac56fcaf7a5ea7.js\"],\"LoginPage\"]\n5:I[9275,[\"935\",\"static/chunks/935-dff12960528de017.js\",\"177\",\"static/chunks/app/layout-e9ac56fcaf7a5ea7.js\"],\"StationProvider\"]\n6:I[5152,[\"935\",\"static/chunks/935-dff12960528de017.js\",\"177\",\"static/chunks/app/layout-e9ac56fcaf7a5ea7.js\"],\"BreadcrumbProvider\"]\n7:I[1961,[\"935\",\"static/chunks/935-dff12960528de017.js\",\"177\",\"static/chunks/app/layout-e9ac56fcaf7a5ea7.js\"],\"Shell\"]\n8:I[8954,[],\"\"]\n9:I[5640,[],\"\"]\na:I[2051,[],\"OutletBoundary\"]\nc:I[6658,[],\"AsyncMetadataOutlet\"]\ne:I[2051,[],\"ViewportBoundary\"]\n10:I[2051,[],\"MetadataBoundary\"]\n11:\"$Sreact.suspense\"\n13:I[7698,[],\"\"]\n:HL[\"/_next/static/css/ddb1646dc25ed100.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"vTGEzSqxhR_E57YAFn9DC\",\"p\":\"\",\"c\":[\"\",\"_not-found\"],\"i\":false,\"f\":[[[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],[\"\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/ddb1646dc25ed100.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"suppressHydrationWarning\":true,\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"script\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"(function(){try{var t=localStorage.getItem(\\\"station-theme\\\");if(t===\\\"dark\\\"||t===\\\"light\\\"){document.documentElement.setAttribute(\\\"data-theme\\\",t)}else if(window.matchMedia(\\\"(prefers-color-scheme:dark)\\\").matches){document.documentElement.setAttribute(\\\"data-theme\\\",\\\"dark\\\")}else{document.documentElement.setAttribute(\\\"data-theme\\\",\\\"light\\\")}}catch(e){document.documentElement.setAttribute(\\\"data-theme\\\",\\\"light\\\")}})()\"}}],[\"$\",\"link\",null,{\"href\":\"https://fonts.googleapis.com/css2?family=Instrument+Serif:ital@0;1\u0026family=IBM+Plex+Mono:wght@400;500\u0026family=Space+Grotesk:wght@300;400;500\u0026display=swap\",\"rel\":\"stylesheet\"}]]}],[\"$\",\"body\",null,{\"children\":[\"$\",\"$L2\",null,{\"children\":[\"$\",\"$L3\",null,{\"loginPage\":[\"$\",\"$L4\",null,{}],\"children\":[\"$\",\"$L5\",null,{\"children\":[\"$\",\"$L6\",null,{\"children\":[\"$\",\"$L7\",null,{\"children\":[\"$\",\"$L8\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L9\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]}]}]}]}]}]]}]]}],{\"children\":[\"/_not-found\",[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L8\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L9\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[\"__PAGE__\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"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\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"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)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],null,[\"$\",\"$La\",null,{\"children\":[\"$Lb\",[\"$\",\"$Lc\",null,{\"promise\":\"$@d\"}]]}]]}],{},null,false]},null,false]},null,false],[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[[\"$\",\"$Le\",null,{\"children\":\"$Lf\"}],null],[\"$\",\"$L10\",null,{\"children\":[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$11\",null,{\"fallback\":null,\"children\":\"$L12\"}]}]}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$13\",[]],\"s\":false,\"S\":true}\n"])</script><script>self.__next_f.push([1,"f:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\nb:null\n"])</script><script>self.__next_f.push([1,"d:{\"metadata\":[[\"$\",\"title\",\"0\",{\"children\":\"Station\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Dashboard for station-signal\"}]],\"error\":null,\"digest\":\"$undefined\"}\n"])</script><script>self.__next_f.push([1,"12:\"$d:metadata\"\n"])</script></body></html>
@@ -1 +1 @@
1
- <!DOCTYPE html><html><head><meta charSet="utf-8" data-next-head=""/><meta name="viewport" content="width=device-width" data-next-head=""/><title data-next-head="">500: Internal Server Error</title><noscript data-n-css=""></noscript><script defer="" noModule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/_next/static/chunks/webpack-e40b05d6bdcb3589.js" defer=""></script><script src="/_next/static/chunks/framework-077b27ad7787463c.js" defer=""></script><script src="/_next/static/chunks/main-f1c74cefd4965abf.js" defer=""></script><script src="/_next/static/chunks/pages/_app-a3774a320f58a018.js" defer=""></script><script src="/_next/static/chunks/pages/_error-273a093c18b5ed0f.js" defer=""></script><script src="/_next/static/THKSkCipW_pj0F6DRXYEG/_buildManifest.js" defer=""></script><script src="/_next/static/THKSkCipW_pj0F6DRXYEG/_ssgManifest.js" defer=""></script></head><body><div id="__next"><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div style="line-height:48px"><style>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)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top">500</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">Internal Server Error<!-- -->.</h2></div></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"statusCode":500}},"page":"/_error","query":{},"buildId":"THKSkCipW_pj0F6DRXYEG","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>
1
+ <!DOCTYPE html><html><head><meta charSet="utf-8" data-next-head=""/><meta name="viewport" content="width=device-width" data-next-head=""/><title data-next-head="">500: Internal Server Error</title><noscript data-n-css=""></noscript><script defer="" noModule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/_next/static/chunks/webpack-e40b05d6bdcb3589.js" defer=""></script><script src="/_next/static/chunks/framework-077b27ad7787463c.js" defer=""></script><script src="/_next/static/chunks/main-f1c74cefd4965abf.js" defer=""></script><script src="/_next/static/chunks/pages/_app-a3774a320f58a018.js" defer=""></script><script src="/_next/static/chunks/pages/_error-273a093c18b5ed0f.js" defer=""></script><script src="/_next/static/vTGEzSqxhR_E57YAFn9DC/_buildManifest.js" defer=""></script><script src="/_next/static/vTGEzSqxhR_E57YAFn9DC/_ssgManifest.js" defer=""></script></head><body><div id="__next"><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div style="line-height:48px"><style>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)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top">500</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">Internal Server Error<!-- -->.</h2></div></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"statusCode":500}},"page":"/_error","query":{},"buildId":"vTGEzSqxhR_E57YAFn9DC","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>
@@ -1,6 +1,6 @@
1
1
  {
2
- "/_error": "pages/_error.js",
3
2
  "/_app": "pages/_app.js",
3
+ "/_error": "pages/_error.js",
4
4
  "/_document": "pages/_document.js",
5
5
  "/404": "pages/404.html"
6
6
  }
@@ -1 +1 @@
1
- {"node":{},"edge":{},"encryptionKey":"4RQEaAQyat5d20Z1/h+4L7Fgd/eF9WPA5eGDSyfCNG0="}
1
+ {"node":{},"edge":{},"encryptionKey":"83ylmA5aspSVuucv4dk03rE80toGbmVHbMSXYhdHFuM="}
@@ -0,0 +1 @@
1
+ "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[285],{593:(e,t,n)=>{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 o(){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 s(){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"}),getBeacons:()=>a("/beacons"),getBeacon:e=>a("/beacons/".concat(encodeURIComponent(e))),getBeaconEvents:e=>a("/beacons/".concat(encodeURIComponent(e),"/events")),getBeaconLogs:e=>a("/beacons/".concat(encodeURIComponent(e),"/logs")),startBeacon:e=>a("/beacons/".concat(encodeURIComponent(e),"/start"),{method:"POST"}),stopBeacon:e=>a("/beacons/".concat(encodeURIComponent(e),"/stop"),{method:"POST"}),restartBeacon:e=>a("/beacons/".concat(encodeURIComponent(e),"/restart"),{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})}),getEnvVars:()=>a("/v1/env"),createEnvVar:e=>a("/v1/env",{method:"POST",body:JSON.stringify(e)}),updateEnvVar:(e,t)=>a("/v1/env/".concat(e),{method:"PATCH",body:JSON.stringify(t)}),deleteEnvVar:e=>a("/v1/env/".concat(e),{method:"DELETE"}),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:()=>o,gf:()=>i,iD:()=>r,ri:()=>s})},4736:(e,t,n)=>{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)=>{n.d(t,{Hc:()=>o,iQ:()=>s,rT:()=>r});var a=n(5271);let o=(0,a.createContext)({segments:[],activeSection:null,setSegments:()=>{},setActiveSection:()=>{}});function r(e,t){let n=(0,a.useContext)(o);(0,a.useEffect)(()=>{n.setSegments(e),n.setActiveSection(t)},[JSON.stringify(e),t])}function s(){return(0,a.useContext)(o)}},9129:(e,t,n)=>{n.d(t,{D:()=>s,ThemeProvider:()=>c});var a=n(8111),o=n(5271);let r=(0,o.createContext)({theme:"light",toggle:()=>{}});function s(){return(0,o.useContext)(r)}function i(){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,s]=(0,o.useState)(i);(0,o.useEffect)(()=>{document.documentElement.setAttribute("data-theme",n),localStorage.setItem("station-theme",n)},[n]);let c=(0,o.useCallback)(()=>{s(e=>"light"===e?"dark":"light")},[]);return(0,a.jsx)(r.Provider,{value:{theme:n,toggle:c},children:t})}},9711:(e,t,n)=>{n.d(t,{C0:()=>d,QK:()=>u,WZ:()=>l});var a=n(8111),o=n(9129);let r={completed:{bar:"#4A6741",fill:"rgba(74, 103, 65, 0.06)",stroke:"#4A6741",text:"#4A6741"},running:{bar:"#6B9962",fill:"rgba(107, 153, 98, 0.08)",stroke:"#6B9962",text:"#4A6741"},failed:{bar:"#8B5A2B",fill:"rgba(139, 90, 43, 0.06)",stroke:"#8B5A2B",text:"#8B5A2B"},pending:{bar:"#D4CEBF",fill:"#F9F7F3",stroke:"#D4CEBF",text:"#8A8A8E"},cancelled:{bar:"#AEAEB2",fill:"rgba(139, 90, 43, 0.03)",stroke:"#AEAEB2",text:"#8A8A8E"},skipped:{bar:"#AEAEB2",fill:"transparent",stroke:"#AEAEB2",text:"#8A8A8E"}},s={completed:{bar:"#6B9962",fill:"rgba(107, 153, 98, 0.12)",stroke:"#6B9962",text:"#8BB882"},running:{bar:"#8BB882",fill:"rgba(139, 185, 130, 0.1)",stroke:"#8BB882",text:"#8BB882"},failed:{bar:"#C4834A",fill:"rgba(196, 131, 74, 0.1)",stroke:"#C4834A",text:"#D4975C"},pending:{bar:"#4A4A4C",fill:"#252527",stroke:"#4A4A4C",text:"#8A8A8E"},cancelled:{bar:"#6A6A6E",fill:"rgba(60, 60, 62, 0.3)",stroke:"#6A6A6E",text:"#8A8A8E"},skipped:{bar:"#6A6A6E",fill:"transparent",stroke:"#6A6A6E",text:"#8A8A8E"}},i={bar:"#4A6741",fill:"#FFFFFF",stroke:"#D4CEBF",text:"#1C1C1E"},c={bar:"#6B9962",fill:"#222224",stroke:"#4A4A4C",text:"#E8E4DC"};function l(){let{theme:e}=(0,o.D)();return"dark"===e?s:r}function d(e){var t,n;if(0===e.length)return[];let a=new Map;for(let t of e)a.set(t.name,t);let o=new Map;for(let t of e)!function e(t,n){if(o.has(t))return o.get(t);if(n.has(t))return 0;n.add(t);let r=a.get(t);if(!r||0===r.dependsOn.length)return o.set(t,0),0;let s=0;for(let t of r.dependsOn)a.has(t)&&(s=Math.max(s,e(t,n)+1));return o.set(t,s),s}(t.name,new Set);let r=new Map;for(let n of e){let e=null!=(t=o.get(n.name))?t:0;r.has(e)||r.set(e,[]),r.get(e).push(n)}let s=Math.max(...Array.from(r.keys()),0),i=[];for(let e=0;e<=s;e++)i.push(null!=(n=r.get(e))?n:[]);return i.filter(e=>e.length>0)}function u(e){let{nodes:t,onNodeClick:n,selectedNode:l,compact:u}=e,{theme:g}=(0,o.D)(),m="dark"===g,h=m?s:r,f=m?c:i;if(0===t.length)return(0,a.jsx)("div",{className:"empty-state",children:(0,a.jsx)("p",{className:"empty-state-text",children:"No nodes."})});let p=u?140:184,x=u?36:60,{positions:v,svgWidth:y,svgHeight:b}=function(e,t){let n=new Map;if(0===e.length)return{positions:n,svgWidth:0,svgHeight:0};let{nodeWidth:a,nodeHeight:o,gapX:r,gapY:s,paddingX:i,paddingY:c}=t,l=Math.max(1,...e.map(e=>e.length))*(a+r)-r+2*i,d=e.length*(o+s)-s+2*c;for(let t=0;t<e.length;t++){let i=e[t],d=(l-(i.length*(a+r)-r))/2,u=c+t*(o+s);for(let e=0;e<i.length;e++){let t=d+e*(a+r);n.set(i[e].name,{x:t,y:u,node:i[e]})}}return{positions:n,svgWidth:l,svgHeight:d}}(d(t),{nodeWidth:p,nodeHeight:x,gapX:u?32:48,gapY:u?28:40,paddingX:u?20:32,paddingY:u?16:24}),S=t.some(e=>void 0!==e.status),A=new Map;for(let e of t)e.status&&A.set(e.name,e.status);let B=[];for(let e of t)for(let t of e.dependsOn)v.has(t)&&B.push({from:t,to:e.name});return(0,a.jsx)("div",{className:"dag-container",children:(0,a.jsxs)("svg",{width:y,height:b,viewBox:"0 0 ".concat(y," ").concat(b),style:{display:"block",margin:"0 auto"},children:[(0,a.jsxs)("defs",{children:[(0,a.jsx)("marker",{id:"dag-arrow",viewBox:"0 0 6 6",refX:"6",refY:"3",markerWidth:"6",markerHeight:"6",orient:"auto-start-reverse",children:(0,a.jsx)("path",{d:"M 0 0 L 6 3 L 0 6 z",fill:m?"#4A4A4C":"#D4CEBF"})}),(0,a.jsx)("marker",{id:"dag-arrow-active",viewBox:"0 0 6 6",refX:"6",refY:"3",markerWidth:"6",markerHeight:"6",orient:"auto-start-reverse",children:(0,a.jsx)("path",{d:"M 0 0 L 6 3 L 0 6 z",fill:m?"#6B9962":"#4A6741"})})]}),B.map(e=>{let t=v.get(e.from),n=v.get(e.to);if(!t||!n)return null;let o="completed"===A.get(e.from),r="skipped"===A.get(e.to),s=t.x+p/2,i=t.y+x,c=n.x+p/2,l=n.y,d=(i+l)/2,u="M ".concat(s," ").concat(i," C ").concat(s," ").concat(d,", ").concat(c," ").concat(d,", ").concat(c," ").concat(l);return(0,a.jsx)("path",{d:u,className:"dag-edge".concat(o?" dag-edge--active":""),strokeDasharray:r?"4 3":void 0,markerEnd:"url(#".concat(o?"dag-arrow-active":"dag-arrow",")")},"".concat(e.from,"->").concat(e.to))}),Array.from(v.values()).map(e=>{var t;let{x:o,y:r,node:s}=e,i=void 0!==s.status&&null!==s.status,c=i&&null!=(t=h[s.status])?t:f,d="skipped"===s.status,g=l===s.name,v="running"===s.status,y=function(e,t){if(!e)return null;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")}(s.startedAt,s.completedAt),b=u?14:18,A=s.name.length>b?s.name.slice(0,b-1)+"…":s.name,B=s.signalName.length>22?s.signalName.slice(0,21)+"…":s.signalName;return(0,a.jsxs)("g",{className:"dag-node".concat(g?" dag-node--selected":""),onClick:()=>null==n?void 0:n(s.name),style:{cursor:n?"pointer":"default"},role:n?"button":void 0,tabIndex:n?0:void 0,"aria-label":"".concat(s.name).concat(i?", "+s.status:""),onKeyDown:e=>{n&&("Enter"===e.key||" "===e.key)&&(e.preventDefault(),n(s.name))},children:[v&&(0,a.jsx)("rect",{x:o-3,y:r-3,width:p+6,height:x+6,rx:7,fill:"none",stroke:m?"#8BB882":"#6B9962",strokeWidth:2,children:(0,a.jsx)("animate",{attributeName:"opacity",values:"0;0.5;0",dur:"2.4s",repeatCount:"indefinite"})}),(0,a.jsx)("rect",{x:o,y:r,width:p,height:x,rx:4,fill:c.fill,stroke:c.stroke,strokeWidth:g?2.5:1.5,strokeDasharray:d?"4 3":void 0}),(0,a.jsx)("rect",{x:o,y:r,width:p,height:4,rx:4,fill:c.bar}),(0,a.jsx)("rect",{x:o,y:r+2,width:p,height:2,fill:c.bar}),(0,a.jsx)("text",{x:o+8,y:u?r+x/2+2:r+4+16,fill:c.text,dominantBaseline:"middle",style:{fontSize:u?"10px":"11px",fontFamily:"var(--font-mono)",fontWeight:500},children:A}),u&&S&&i&&(0,a.jsx)("text",{x:o+p-8,y:r+x/2+2,fill:c.text,opacity:.5,dominantBaseline:"middle",textAnchor:"end",style:{fontSize:"8px",fontFamily:"var(--font-mono)",textTransform:"uppercase",letterSpacing:"0.05em"},children:null!=y?y:s.status}),!u&&(0,a.jsxs)(a.Fragment,{children:[S&&y&&(0,a.jsx)("text",{x:o+p-10,y:r+4+16,fill:c.text,opacity:.6,dominantBaseline:"middle",textAnchor:"end",style:{fontSize:"9px",fontFamily:"var(--font-mono)"},children:y}),(0,a.jsx)("text",{x:o+10,y:r+x-10,fill:c.text,opacity:.45,dominantBaseline:"middle",style:{fontSize:"9px",fontFamily:"var(--font-mono)"},children:B}),S&&i&&(0,a.jsx)("text",{x:o+p-10,y:r+x-10,fill:c.text,opacity:.5,dominantBaseline:"middle",textAnchor:"end",style:{fontSize:"8px",fontFamily:"var(--font-mono)",textTransform:"uppercase",letterSpacing:"0.05em"},children:s.status})]})]},s.name)})]})})}}}]);
@@ -0,0 +1 @@
1
+ "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[561],{593:(e,t,n)=>{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 o(){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 c(){await fetch("".concat("","/api/auth/logout"),{method:"POST",credentials:"include"})}function r(){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"}),getBeacons:()=>a("/beacons"),getBeacon:e=>a("/beacons/".concat(encodeURIComponent(e))),getBeaconEvents:e=>a("/beacons/".concat(encodeURIComponent(e),"/events")),getBeaconLogs:e=>a("/beacons/".concat(encodeURIComponent(e),"/logs")),startBeacon:e=>a("/beacons/".concat(encodeURIComponent(e),"/start"),{method:"POST"}),stopBeacon:e=>a("/beacons/".concat(encodeURIComponent(e),"/stop"),{method:"POST"}),restartBeacon:e=>a("/beacons/".concat(encodeURIComponent(e),"/restart"),{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})}),getEnvVars:()=>a("/v1/env"),createEnvVar:e=>a("/v1/env",{method:"POST",body:JSON.stringify(e)}),updateEnvVar:(e,t)=>a("/v1/env/".concat(e),{method:"PATCH",body:JSON.stringify(t)}),deleteEnvVar:e=>a("/v1/env/".concat(e),{method:"DELETE"}),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:()=>o,gf:()=>r,iD:()=>s,ri:()=>c})},4736:(e,t,n)=>{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)=>{n.d(t,{F:()=>s});var a=n(8111),o=n(5271);function s(e){let{title:t="API equivalent",snippets:n}=e,[s,c]=(0,o.useState)(!1),[r,i]=(0,o.useState)(null),[d,l]=(0,o.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),i(t),setTimeout(()=>i(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)i(t),setTimeout(()=>i(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:s,onToggle:e=>c(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 o=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("&")):""),o=(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(o).concat(a," \\")),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,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(o,t),title:d===t?"Copy failed — select the text manually":"",children:r===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:o})]},t)})})]})}},7388:(e,t,n)=>{n.d(t,{Q:()=>c});var a=n(8111),o=n(5271),s=n(593);function c(e){let{value:t,onChange:n,locked:c}=e,l=(0,s.gf)(),[u,m]=(0,o.useState)([]),[g,h]=(0,o.useState)([]),[p,v]=(0,o.useState)([]);(0,o.useEffect)(()=>{Promise.all([l.getSignals().catch(()=>({data:[]})),l.getBroadcasts().catch(()=>({data:[]})),l.getBroadcastDefinitions().catch(()=>({data:[]}))]).then(e=>{let[t,n,a]=e;m(t.data.map(e=>e.name)),h(n.data.map(e=>e.name)),v(a.data.map(e=>e.name))})},[]);let y="signal"===t.kind?u:"broadcast-static"===t.kind?g:p;return(0,a.jsxs)("div",{style:{display:"grid",gap:"1rem",maxWidth:"640px"},children:[(0,a.jsx)(r,{label:"Kind",children:(0,a.jsxs)("select",{value:t.kind,disabled:c,onChange:e=>n({...t,kind:e.target.value,target:""}),className:"mono",style:d,children:[(0,a.jsx)("option",{value:"signal",children:"signal"}),(0,a.jsx)("option",{value:"broadcast-static",children:"broadcast-static"}),(0,a.jsx)("option",{value:"broadcast-dynamic",children:"broadcast-dynamic"})]})}),(0,a.jsxs)(r,{label:"Target",hint:"".concat(y.length," available"),children:[c?(0,a.jsx)("input",{className:"mono",value:t.target,readOnly:!0,style:i}):(0,a.jsx)("input",{className:"mono",value:t.target,list:"schedule-targets-".concat(t.kind),onChange:e=>n({...t,target:e.target.value}),placeholder:"signal or broadcast name",style:i}),(0,a.jsx)("datalist",{id:"schedule-targets-".concat(t.kind),children:y.map(e=>(0,a.jsx)("option",{value:e},e))})]}),(0,a.jsx)(r,{label:"Interval",hint:'e.g. "30s", "5m", "1h", "1d"',children:(0,a.jsx)("input",{className:"mono",value:t.interval,onChange:e=>n({...t,interval:e.target.value}),placeholder:"5m",style:i})}),(0,a.jsx)(r,{label:"Input (JSON)",children:(0,a.jsx)("textarea",{className:"mono",value:t.input,onChange:e=>n({...t,input:e.target.value}),rows:6,spellCheck:!1,style:{...i,fontFamily:"var(--mono-font, monospace)",fontSize:"0.8125rem"}})}),(0,a.jsxs)("label",{style:{display:"flex",alignItems:"center",gap:"0.5rem"},children:[(0,a.jsx)("input",{type:"checkbox",checked:t.enabled,onChange:e=>n({...t,enabled:e.target.checked})}),(0,a.jsx)("span",{className:"mono",style:{fontSize:"0.875rem"},children:"Enabled"})]})]})}function r(e){let{label:t,hint:n,children:o}=e;return(0,a.jsxs)("div",{children:[(0,a.jsxs)("div",{style:{display:"flex",alignItems:"baseline",justifyContent:"space-between",marginBottom:"0.25rem"},children:[(0,a.jsx)("label",{className:"mono",style:{fontSize:"0.75rem",color:"var(--muted)"},children:t}),n&&(0,a.jsx)("span",{className:"mono",style:{fontSize:"0.6875rem",color:"var(--muted)"},children:n})]}),o]})}let i={width:"100%",padding:"0.5rem 0.625rem",border:"1px solid var(--border)",borderRadius:"4px",background:"var(--surface)",color:"var(--text)",fontSize:"0.875rem"},d={...i,appearance:"auto"}},7646:(e,t,n)=>{n.d(t,{Hc:()=>o,iQ:()=>c,rT:()=>s});var a=n(5271);let o=(0,a.createContext)({segments:[],activeSection:null,setSegments:()=>{},setActiveSection:()=>{}});function s(e,t){let n=(0,a.useContext)(o);(0,a.useEffect)(()=>{n.setSegments(e),n.setActiveSection(t)},[JSON.stringify(e),t])}function c(){return(0,a.useContext)(o)}}}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[456],{593:(e,t,a)=>{"use strict";async function n(e,t){let a=await fetch("".concat("","/api").concat(e),{...t,credentials:"include",headers:{"Content-Type":"application/json",...null==t?void 0:t.headers}});if(!a.ok)throw Error((await a.json().catch(()=>({error:"unknown",message:"Request failed."}))).message);return a.json()}async function s(){let e=await fetch("".concat("","/api/auth/check"),{credentials:"include"});return(await e.json()).data}async function l(e,t){return(await fetch("".concat("","/api/auth/login"),{method:"POST",credentials:"include",headers:{"Content-Type":"application/json"},body:JSON.stringify({username:e,password:t})})).ok}async function o(){await fetch("".concat("","/api/auth/logout"),{method:"POST",credentials:"include"})}function c(){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"}),getBeacons:()=>n("/beacons"),getBeacon:e=>n("/beacons/".concat(encodeURIComponent(e))),getBeaconEvents:e=>n("/beacons/".concat(encodeURIComponent(e),"/events")),getBeaconLogs:e=>n("/beacons/".concat(encodeURIComponent(e),"/logs")),startBeacon:e=>n("/beacons/".concat(encodeURIComponent(e),"/start"),{method:"POST"}),stopBeacon:e=>n("/beacons/".concat(encodeURIComponent(e),"/stop"),{method:"POST"}),restartBeacon:e=>n("/beacons/".concat(encodeURIComponent(e),"/restart"),{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})}),getEnvVars:()=>n("/v1/env"),createEnvVar:e=>n("/v1/env",{method:"POST",body:JSON.stringify(e)}),updateEnvVar:(e,t)=>n("/v1/env/".concat(e),{method:"PATCH",body:JSON.stringify(t)}),deleteEnvVar:e=>n("/v1/env/".concat(e),{method:"DELETE"}),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:()=>c,iD:()=>l,ri:()=>o})},1253:(e,t,a)=>{"use strict";a.d(t,{W:()=>s});var n=a(8111);function s(e){let{status:t}=e;return(0,n.jsxs)("span",{className:"status-badge status-badge--".concat(t),children:[(0,n.jsx)("span",{className:"status-badge-dot"}),t]})}},1794:(e,t,a)=>{"use strict";a.d(t,{p:()=>l});var n=a(8111),s=a(5271);function l(e){let t,{data:a,label:l}=e,[o,c]=(0,s.useState)(!0),[r,i]=(0,s.useState)(!0),[d,u]=(0,s.useState)("copy"),m=(0,s.useCallback)(()=>{if(!a)return;let e=function(e){try{let t=JSON.parse(e);return JSON.stringify(t,null,2)}catch(t){return e}}(a);navigator.clipboard.writeText(e).then(()=>{u("copied"),setTimeout(()=>u("copy"),1500)}).catch(()=>{u("failed"),setTimeout(()=>u("copy"),1500)})},[a]);if(!a)return null;try{t=JSON.parse(a)}catch(e){t=a}let h="object"==typeof t&&null!==t&&JSON.stringify(t).length>200;return(0,n.jsxs)("div",{children:[l&&(0,n.jsxs)("button",{onClick:()=>c(!o),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:[o?"- ":"+ ",l]}),o&&(0,n.jsxs)("pre",{className:"json-viewer",style:{position:"relative"},children:[(0,n.jsx)("button",{className:"copy-btn",onClick:m,type:"button",children:d}),h&&(0,n.jsx)("button",{onClick:()=>i(!r),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:r?"collapse":"expand"}),function e(t,a,s){if(null===t)return(0,n.jsx)("span",{className:"json-null",children:"null"});if("boolean"==typeof t)return(0,n.jsx)("span",{className:"json-boolean",children:String(t)});if("number"==typeof t)return(0,n.jsx)("span",{className:"json-number",children:t});if("string"==typeof t)return(0,n.jsxs)("span",{className:"json-string",children:['"',t,'"']});if(Array.isArray(t))return 0===t.length?(0,n.jsx)("span",{children:"[]"}):!s&&a>3?(0,n.jsxs)("span",{children:["[",t.length," items]"]}):(0,n.jsxs)("span",{children:["[\n",t.map((l,o)=>(0,n.jsxs)("span",{children:[" ".repeat(a+1),e(l,a+1,s),o<t.length-1?",":"","\n"]},o))," ".repeat(a),"]"]});if("object"==typeof t){let l=Object.entries(t);return 0===l.length?(0,n.jsx)("span",{children:"{}"}):!s&&a>3?(0,n.jsx)("span",{children:"{".concat(l.length," keys}")}):(0,n.jsxs)("span",{children:["{\n",l.map((t,o)=>{let[c,r]=t;return(0,n.jsxs)("span",{children:[" ".repeat(a+1),(0,n.jsxs)("span",{className:"json-key",children:['"',c,'"']}),": ",e(r,a+1,s),o<l.length-1?",":"","\n"]},c)})," ".repeat(a),"}"]})}return(0,n.jsx)("span",{children:String(t)})}(t,0,r)]})]})}},4488:(e,t,a)=>{"use strict";a.d(t,{BeaconDetail:()=>u});var n=a(8111),s=a(5271),l=a(593),o=a(9275),c=a(7646),r=a(1253),i=a(1794);function d(e){return e?new Date(e).toLocaleString():"—"}function u(e){var t,a,u,m,h;let{name:p}=e,g=(0,l.gf)(),{events:v}=(0,o.q)(),[x,f]=(0,s.useState)(null),[b,j]=(0,s.useState)([]),[N,S]=(0,s.useState)([]),[y,O]=(0,s.useState)(!0),[R,T]=(0,s.useState)(null),E=(0,s.useRef)(null);async function B(e){T(e);try{"start"===e?await g.startBeacon(p):"stop"===e?await g.stopBeacon(p):await g.restartBeacon(p);let[t,a]=await Promise.all([g.getBeacon(p),g.getBeaconEvents(p)]);f(t.data),j(a.data)}catch(t){t instanceof Error&&console.error("".concat(e," failed:"),t.message)}T(null)}if((0,c.rT)([{label:"Beacons",href:"/beacons"},{label:p}],"beacons"),(0,s.useEffect)(()=>{!async function(){try{let[e,t,a]=await Promise.all([g.getBeacon(p),g.getBeaconEvents(p),g.getBeaconLogs(p)]);f(e.data),j(t.data),S(a.data.map(e=>({level:e.level,message:e.message,timestamp:e.timestamp})))}catch(e){e instanceof Error&&console.error("Failed to load beacon:",e.message)}O(!1)}()},[p]),(0,s.useEffect)(()=>{if(0===v.length)return;let e=v[0];if(e.type.startsWith("beacon:"))if("beacon:log"===e.type){let t=e.data;if(t.beaconName!==p)return;S(a=>{var n,s,l;return[...a,{level:null!=(n=t.level)?n:"stdout",message:null!=(s=t.message)?s:"",timestamp:null!=(l=t.timestamp)?l:e.timestamp}]})}else{let t=e.data.instance;if(!t||t.beaconName!==p)return;f(e=>e?{...e,instance:t}:e),g.getBeaconEvents(p).then(e=>j(e.data)).catch(()=>{})}},[v.length,p]),(0,s.useEffect)(()=>{var e;null==(e=E.current)||e.scrollIntoView({behavior:"smooth"})},[N.length]),y)return(0,n.jsxs)("div",{children:[(0,n.jsx)("h1",{className:"page-title",children:"Beacon"}),(0,n.jsx)("div",{className:"loading-bar",children:(0,n.jsx)("div",{className:"loading-bar-fill"})})]});if(!x)return(0,n.jsxs)("div",{children:[(0,n.jsx)("h1",{className:"page-title",children:"Beacon"}),(0,n.jsx)("div",{className:"empty-state",children:(0,n.jsx)("p",{className:"empty-state-text",children:"Beacon not found."})})]});let C=x.instance,P=!C||"stopped"===C.desiredState||"errored"===C.status||"stopped"===C.status,w=!!C&&"running"===C.desiredState&&"stopped"!==C.status&&"errored"!==C.status,k=!!C&&("running"===C.status||"starting"===C.status);return(0,n.jsxs)("div",{children:[(0,n.jsxs)("div",{className:"page-header",children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"0.75rem"},children:[C&&(0,n.jsx)(r.W,{status:C.status}),(0,n.jsx)("h1",{className:"page-title",style:{marginBottom:0},children:p})]}),(0,n.jsxs)("div",{className:"page-header-actions",children:[(0,n.jsx)("button",{className:"btn btn--primary",onClick:()=>B("start"),disabled:!P||null!==R,children:"start"===R?"Starting...":"Start"}),(0,n.jsx)("button",{className:"btn",onClick:()=>B("restart"),disabled:!k||null!==R,children:"restart"===R?"Restarting...":"Restart"}),(0,n.jsx)("button",{className:"btn btn--danger",onClick:()=>B("stop"),disabled:!w||null!==R,children:"stop"===R?"Stopping...":"Stop"})]})]}),(0,n.jsxs)("div",{className:"detail-section",children:[(0,n.jsx)("div",{className:"detail-section-label",children:"Metadata"}),(0,n.jsxs)("div",{className:"detail-grid",children:[(0,n.jsx)("span",{className:"detail-label",children:"Status"}),(0,n.jsx)("span",{className:"detail-value",children:C?(0,n.jsx)(r.W,{status:C.status}):"—"}),(0,n.jsx)("span",{className:"detail-label",children:"Desired"}),(0,n.jsx)("span",{className:"detail-value mono",children:null!=(t=null==C?void 0:C.desiredState)?t:"—"}),(0,n.jsx)("span",{className:"detail-label",children:"Mode"}),(0,n.jsx)("span",{className:"detail-value",children:x.mode}),(0,n.jsx)("span",{className:"detail-label",children:"Restart policy"}),(0,n.jsx)("span",{className:"detail-value mono",children:x.restartPolicy}),(0,n.jsx)("span",{className:"detail-label",children:"Auto-start"}),(0,n.jsx)("span",{className:"detail-value mono",children:String(x.autoStart)}),(0,n.jsx)("span",{className:"detail-label",children:"Incarnation"}),(0,n.jsx)("span",{className:"detail-value mono",children:null!=(a=null==C?void 0:C.incarnation)?a:0}),(0,n.jsx)("span",{className:"detail-label",children:"Restart count"}),(0,n.jsx)("span",{className:"detail-value mono",children:null!=(u=null==C?void 0:C.restartCount)?u:0}),(0,n.jsx)("span",{className:"detail-label",children:"PID"}),(0,n.jsx)("span",{className:"detail-value mono",children:null!=(m=null==C?void 0:C.pid)?m:"—"}),(0,n.jsx)("span",{className:"detail-label",children:"Started"}),(0,n.jsx)("span",{className:"detail-value mono",children:d(null==C?void 0:C.startedAt)}),(0,n.jsx)("span",{className:"detail-label",children:"Ready"}),(0,n.jsx)("span",{className:"detail-value mono",children:d(null==C?void 0:C.readyAt)}),(0,n.jsx)("span",{className:"detail-label",children:"Last heartbeat"}),(0,n.jsx)("span",{className:"detail-value mono",children:d(null==C?void 0:C.lastHeartbeatAt)}),(0,n.jsx)("span",{className:"detail-label",children:"Last exit"}),(0,n.jsx)("span",{className:"detail-value mono",children:(null==C?void 0:C.lastExitReason)?"".concat(C.lastExitReason," @ ").concat(d(C.lastExitAt)):"—"}),(0,n.jsx)("span",{className:"detail-label",children:"Next restart"}),(0,n.jsx)("span",{className:"detail-value mono",children:d(null==C?void 0:C.nextRestartAt)}),(0,n.jsx)("span",{className:"detail-label",children:"File"}),(0,n.jsx)("span",{className:"detail-value mono",style:{fontSize:"0.75rem",color:"var(--muted)"},children:x.filePath})]})]}),(null==C?void 0:C.lastError)&&(0,n.jsxs)("div",{className:"detail-section",children:[(0,n.jsx)("div",{className:"detail-section-label",children:"Last error"}),(0,n.jsx)("div",{className:"error-block",children:C.lastError})]}),(0,n.jsxs)("div",{className:"detail-section",children:[(0,n.jsx)("div",{className:"detail-section-label",children:"Config"}),(0,n.jsx)(i.p,{data:null!=(h=null==C?void 0:C.config)?h:"{}"})]}),(0,n.jsxs)("div",{className:"detail-section",children:[(0,n.jsx)("div",{className:"detail-section-label",children:"Lifecycle events"}),0===b.length?(0,n.jsx)("div",{className:"empty-state",children:(0,n.jsx)("p",{className:"empty-state-text",children:"No events recorded."})}):(0,n.jsxs)("table",{className:"station-table",children:[(0,n.jsx)("thead",{children:(0,n.jsxs)("tr",{children:[(0,n.jsx)("th",{children:"Event"}),(0,n.jsx)("th",{children:"Incarnation"}),(0,n.jsx)("th",{children:"Detail"}),(0,n.jsx)("th",{children:"Time"})]})}),(0,n.jsx)("tbody",{children:b.map(e=>{var t;return(0,n.jsxs)("tr",{children:[(0,n.jsx)("td",{className:"mono",style:{fontSize:"0.8125rem"},children:e.type}),(0,n.jsx)("td",{className:"mono",style:{fontSize:"0.8125rem"},children:e.incarnation}),(0,n.jsx)("td",{style:{color:"var(--muted)",fontSize:"0.8125rem"},children:null!=(t=e.message)?t:"—"}),(0,n.jsx)("td",{className:"mono",style:{fontSize:"0.8125rem",color:"var(--muted)"},children:d(e.at)})]},e.id)})})]})]}),(0,n.jsxs)("div",{className:"detail-section",children:[(0,n.jsx)("div",{className:"detail-section-label",children:"Logs"}),(0,n.jsxs)("div",{className:"log-container",children:[0===N.length?(0,n.jsx)("div",{style:{padding:"1rem",color:"var(--muted)",fontFamily:"var(--font-mono)",fontSize:"0.75rem"},children:"No log output captured."}):N.map((e,t)=>(0,n.jsxs)("div",{className:"log-line",style:{color:"stderr"===e.level?"var(--rust)":"var(--charcoal)"},children:[(0,n.jsx)("span",{className:"log-timestamp",children:new Date(e.timestamp).toLocaleTimeString()}),(0,n.jsx)("span",{className:"log-level","data-level":e.level,children:"stderr"===e.level?"ERR":"OUT"}),(0,n.jsx)("span",{className:"log-message",children:e.message})]},t)),(0,n.jsx)("div",{ref:E})]})]})]})}},6058:(e,t,a)=>{Promise.resolve().then(a.bind(a,4488))},7646:(e,t,a)=>{"use strict";a.d(t,{Hc:()=>s,iQ:()=>o,rT:()=>l});var n=a(5271);let s=(0,n.createContext)({segments:[],activeSection:null,setSegments:()=>{},setActiveSection:()=>{}});function l(e,t){let a=(0,n.useContext)(s);(0,n.useEffect)(()=>{a.setSegments(e),a.setActiveSection(t)},[JSON.stringify(e),t])}function o(){return(0,n.useContext)(s)}},9275:(e,t,a)=>{"use strict";a.d(t,{StationProvider:()=>c,q:()=>o});var n=a(8111),s=a(5271);let l=(0,s.createContext)({connected:!1,events:[]});function o(){return(0,s.useContext)(l)}function c(e){let{children:t}=e,[a,o]=(0,s.useState)([]),{connected:c}=function(e){let[t,a]=(0,s.useState)(!1),n=(0,s.useRef)(e);return n.current=e,(0,s.useEffect)(()=>{let e=null,t=null,s=0,l=!1;return!function o(){if(l)return;let c="https:"===window.location.protocol?"wss:":"ws:";(e=new WebSocket("".concat(c,"//").concat(window.location.host,"/api/events"))).onopen=()=>{a(!0),s=0},e.onmessage=e=>{try{let t=JSON.parse(e.data);n.current(t)}catch(e){console.error("Failed to parse WebSocket message:",e)}},e.onclose=()=>{if(a(!1),!l){let e=Math.min(1e3*Math.pow(2,s),1e4);s++,t=setTimeout(o,e)}},e.onerror=()=>{null==e||e.close()}}(),()=>{l=!0,t&&clearTimeout(t),null==e||e.close()}},[]),{connected:t}}((0,s.useCallback)(e=>{o(t=>[e,...t].slice(0,100))},[]));return(0,n.jsx)(l.Provider,{value:{connected:c,events:a},children:t})}}},e=>{e.O(0,[814,743,358],()=>e(e.s=6058)),_N_E=e.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[316],{593:(e,t,n)=>{"use strict";async function s(e,t){let n=await fetch("".concat("","/api").concat(e),{...t,credentials:"include",headers:{"Content-Type":"application/json",...null==t?void 0:t.headers}});if(!n.ok)throw Error((await n.json().catch(()=>({error:"unknown",message:"Request failed."}))).message);return n.json()}async function a(){let e=await fetch("".concat("","/api/auth/check"),{credentials:"include"});return(await e.json()).data}async function 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 c(){await fetch("".concat("","/api/auth/logout"),{method:"POST",credentials:"include"})}function r(){return{getHealth:()=>s("/health"),getSignals:()=>s("/signals"),getScheduledSignals:()=>s("/signals/scheduled"),getSignal:e=>s("/signals/".concat(encodeURIComponent(e))),getSignalRuns:e=>s("/signals/".concat(encodeURIComponent(e),"/runs")),triggerSignal:(e,t)=>s("/signals/".concat(encodeURIComponent(e),"/trigger"),{method:"POST",body:JSON.stringify({input:null!=t?t:{}})}),getRuns:e=>{let t=new URLSearchParams;(null==e?void 0:e.status)&&t.set("status",e.status),(null==e?void 0:e.signalName)&&t.set("signalName",e.signalName);let 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"}),getBeacons:()=>s("/beacons"),getBeacon:e=>s("/beacons/".concat(encodeURIComponent(e))),getBeaconEvents:e=>s("/beacons/".concat(encodeURIComponent(e),"/events")),getBeaconLogs:e=>s("/beacons/".concat(encodeURIComponent(e),"/logs")),startBeacon:e=>s("/beacons/".concat(encodeURIComponent(e),"/start"),{method:"POST"}),stopBeacon:e=>s("/beacons/".concat(encodeURIComponent(e),"/stop"),{method:"POST"}),restartBeacon:e=>s("/beacons/".concat(encodeURIComponent(e),"/restart"),{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})}),getEnvVars:()=>s("/v1/env"),createEnvVar:e=>s("/v1/env",{method:"POST",body:JSON.stringify(e)}),updateEnvVar:(e,t)=>s("/v1/env/".concat(e),{method:"PATCH",body:JSON.stringify(t)}),deleteEnvVar:e=>s("/v1/env/".concat(e),{method:"DELETE"}),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:()=>a,gf:()=>r,iD:()=>o,ri:()=>c})},726:(e,t,n)=>{Promise.resolve().then(n.bind(n,5897))},1253:(e,t,n)=>{"use strict";n.d(t,{W:()=>a});var s=n(8111);function a(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]})}},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}})},5897:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>l});var s=n(8111),a=n(5271),o=n(4736),c=n(593),r=n(9275),i=n(7646),d=n(1253);function l(){let e=(0,c.gf)(),t=(0,o.useRouter)(),{events:n}=(0,r.q)(),[l,u]=(0,a.useState)([]),[h,m]=(0,a.useState)(!0);return((0,i.rT)([{label:"Beacons"}],"beacons"),(0,a.useEffect)(()=>{e.getBeacons().then(e=>u(e.data)).catch(e=>{e instanceof Error&&console.error("Failed to load beacons:",e.message)}).finally(()=>m(!1))},[]),(0,a.useEffect)(()=>{0!==n.length&&n[0].type.startsWith("beacon:")&&e.getBeacons().then(e=>u(e.data)).catch(()=>{})},[n.length]),h)?(0,s.jsxs)("div",{children:[(0,s.jsx)("h1",{className:"page-title",children:"Beacons"}),(0,s.jsx)("div",{className:"loading-bar",children:(0,s.jsx)("div",{className:"loading-bar-fill"})})]}):0===l.length?(0,s.jsxs)("div",{children:[(0,s.jsx)("h1",{className:"page-title",children:"Beacons"}),(0,s.jsx)("div",{className:"empty-state",children:(0,s.jsx)("p",{className:"empty-state-text",children:"No beacons discovered."})})]}):(0,s.jsxs)("div",{children:[(0,s.jsx)("h1",{className:"page-title",children:"Beacons"}),(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:"Name"}),(0,s.jsx)("th",{children:"Kind"}),(0,s.jsx)("th",{children:"Desired"}),(0,s.jsx)("th",{children:"Incarnation"}),(0,s.jsx)("th",{children:"Restarts"}),(0,s.jsx)("th",{children:"PID"})]})}),(0,s.jsx)("tbody",{children:l.map((e,n)=>{var a,o,c,r,i,l,u,h;return(0,s.jsxs)("tr",{className:"reveal-item clickable-row",style:{animationDelay:"".concat(40*n,"ms")},onClick:()=>t.push("/beacons/".concat(encodeURIComponent(e.name))),children:[(0,s.jsx)("td",{children:e.instance?(0,s.jsx)(d.W,{status:e.instance.status}):(0,s.jsx)("span",{style:{color:"var(--muted)"},children:"—"})}),(0,s.jsx)("td",{className:"mono",children:e.name}),(0,s.jsx)("td",{style:{color:"var(--muted)",fontSize:"0.8125rem"},children:e.mode}),(0,s.jsx)("td",{className:"mono",style:{color:"var(--muted)",fontSize:"0.8125rem"},children:null!=(i=null==(a=e.instance)?void 0:a.desiredState)?i:"—"}),(0,s.jsx)("td",{className:"mono",style:{fontSize:"0.8125rem"},children:null!=(l=null==(o=e.instance)?void 0:o.incarnation)?l:0}),(0,s.jsx)("td",{className:"mono",style:{fontSize:"0.8125rem"},children:null!=(u=null==(c=e.instance)?void 0:c.restartCount)?u:0}),(0,s.jsx)("td",{className:"mono",style:{fontSize:"0.8125rem",color:"var(--muted)"},children:null!=(h=null==(r=e.instance)?void 0:r.pid)?h:"—"})]},e.name)})})]})]})}},7646:(e,t,n)=>{"use strict";n.d(t,{Hc:()=>a,iQ:()=>c,rT:()=>o});var s=n(5271);let a=(0,s.createContext)({segments:[],activeSection:null,setSegments:()=>{},setActiveSection:()=>{}});function o(e,t){let n=(0,s.useContext)(a);(0,s.useEffect)(()=>{n.setSegments(e),n.setActiveSection(t)},[JSON.stringify(e),t])}function c(){return(0,s.useContext)(a)}},9275:(e,t,n)=>{"use strict";n.d(t,{StationProvider:()=>r,q:()=>c});var s=n(8111),a=n(5271);let o=(0,a.createContext)({connected:!1,events:[]});function c(){return(0,a.useContext)(o)}function r(e){let{children:t}=e,[n,c]=(0,a.useState)([]),{connected:r}=function(e){let[t,n]=(0,a.useState)(!1),s=(0,a.useRef)(e);return s.current=e,(0,a.useEffect)(()=>{let e=null,t=null,a=0,o=!1;return!function c(){if(o)return;let r="https:"===window.location.protocol?"wss:":"ws:";(e=new WebSocket("".concat(r,"//").concat(window.location.host,"/api/events"))).onopen=()=>{n(!0),a=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),!o){let e=Math.min(1e3*Math.pow(2,a),1e4);a++,t=setTimeout(c,e)}},e.onerror=()=>{null==e||e.close()}}(),()=>{o=!0,t&&clearTimeout(t),null==e||e.close()}},[]),{connected:t}}((0,a.useCallback)(e=>{c(t=>[e,...t].slice(0,100))},[]));return(0,s.jsx)(o.Provider,{value:{connected:r,events:n},children:t})}}},e=>{e.O(0,[814,743,358],()=>e(e.s=726)),_N_E=e.O()}]);