@stacksjs/ts-cloud 0.12.1 → 0.12.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (234) hide show
  1. package/dist/aws/index.js +1 -1
  2. package/dist/bin/chunk-0zwknfwp.js +1 -0
  3. package/dist/bin/chunk-3aph4c1w.js +2 -0
  4. package/dist/bin/{chunk-5bhx3bsa.js → chunk-4q6tad44.js} +121 -121
  5. package/dist/bin/chunk-5nkqza92.js +1 -0
  6. package/dist/bin/chunk-64vczwwt.js +1 -0
  7. package/dist/bin/chunk-6tfwm33r.js +6 -0
  8. package/dist/bin/chunk-71t1gmsq.js +1 -0
  9. package/dist/bin/chunk-7g2ahkse.js +1 -0
  10. package/dist/bin/chunk-7zhgmp1s.js +3 -0
  11. package/dist/bin/chunk-82mj52xr.js +141 -0
  12. package/dist/bin/chunk-8ewncfce.js +37 -0
  13. package/dist/bin/chunk-9a88fp00.js +2 -0
  14. package/dist/bin/chunk-9kf0np8j.js +44 -0
  15. package/dist/bin/chunk-9rb23kz9.js +1 -0
  16. package/dist/bin/chunk-a7w13qfm.js +2 -0
  17. package/dist/bin/chunk-b4wt9jcg.js +60 -0
  18. package/dist/bin/chunk-btsyjhk7.js +92 -0
  19. package/dist/bin/chunk-c0bdafbx.js +2 -0
  20. package/dist/bin/chunk-cd0ps58j.js +1 -0
  21. package/dist/bin/chunk-cxt74wsj.js +1 -0
  22. package/dist/bin/chunk-d7ke90zt.js +2 -0
  23. package/dist/bin/chunk-djg4zyqk.js +1 -0
  24. package/dist/bin/chunk-dkaz333b.js +1 -0
  25. package/dist/bin/chunk-dkf4qsp2.js +1 -0
  26. package/dist/bin/{chunk-scqmd4qv.js → chunk-dz1ec589.js} +30 -30
  27. package/dist/bin/chunk-e2bybahr.js +3 -0
  28. package/dist/bin/chunk-e5ab5twy.js +50 -0
  29. package/dist/bin/chunk-edvvx3hg.js +1 -0
  30. package/dist/bin/chunk-ehc63fvs.js +2 -0
  31. package/dist/bin/chunk-f06c5np9.js +1 -0
  32. package/dist/bin/chunk-gq8794k6.js +1 -0
  33. package/dist/bin/chunk-hq9x489e.js +70 -0
  34. package/dist/bin/chunk-ja1vjdn1.js +6 -0
  35. package/dist/bin/chunk-k3120rx6.js +1 -0
  36. package/dist/bin/chunk-kg61p5hw.js +3 -0
  37. package/dist/bin/chunk-mcr0r4at.js +2 -0
  38. package/dist/bin/chunk-mfrf9q4b.js +2 -0
  39. package/dist/bin/chunk-my3ewh3a.js +34 -0
  40. package/dist/bin/chunk-nw3d4k52.js +1 -0
  41. package/dist/bin/chunk-p70bc9yr.js +1 -0
  42. package/dist/bin/chunk-pp2m8q55.js +512 -0
  43. package/dist/bin/chunk-q5cmfpzt.js +1 -0
  44. package/dist/bin/chunk-rtecnmts.js +4 -0
  45. package/dist/bin/chunk-s2grgcpy.js +590 -0
  46. package/dist/bin/chunk-s4yzes15.js +2 -0
  47. package/dist/bin/chunk-sj5csg49.js +2 -0
  48. package/dist/bin/chunk-tfbs8k8v.js +111 -0
  49. package/dist/bin/chunk-tvz9c388.js +1 -0
  50. package/dist/bin/{chunk-9vdc7adf.js → chunk-w32xv8n4.js} +6 -6
  51. package/dist/bin/chunk-x6f61g36.js +9 -0
  52. package/dist/bin/chunk-xhwqpgwq.js +2 -0
  53. package/dist/bin/chunk-xk08030d.js +6 -0
  54. package/dist/bin/chunk-xkfrqqcs.js +1 -0
  55. package/dist/bin/chunk-y1h63vpm.js +1 -0
  56. package/dist/bin/chunk-zdt2rjk6.js +1 -0
  57. package/dist/bin/chunk-zh2d4704.js +1 -0
  58. package/dist/bin/chunk-zpe64t4r.js +1 -0
  59. package/dist/bin/cli.js +435 -444
  60. package/dist/bin/dashboard-server.js +1 -1
  61. package/dist/{chunk-rr1yaj55.js → chunk-13qjvbqh.js} +1 -1
  62. package/dist/chunk-152he7m3.js +92 -0
  63. package/dist/chunk-1qdne0bf.js +1 -0
  64. package/dist/chunk-3mgj3hrh.js +5 -0
  65. package/dist/chunk-3nmm7cap.js +704 -0
  66. package/dist/chunk-6kpbveb8.js +5 -0
  67. package/dist/chunk-73ztr55z.js +2 -0
  68. package/dist/{chunk-y1dh3znq.js → chunk-86ss83s2.js} +52 -52
  69. package/dist/chunk-a84gmpyh.js +1 -0
  70. package/dist/chunk-aj025v2s.js +4 -0
  71. package/dist/chunk-by2bwzk6.js +141 -0
  72. package/dist/chunk-h42zck7h.js +60 -0
  73. package/dist/chunk-hn40z11p.js +37 -0
  74. package/dist/{chunk-6xcbfs2r.js → chunk-jm5mg890.js} +111 -111
  75. package/dist/chunk-m8fs0233.js +34 -0
  76. package/dist/chunk-mz0dk78z.js +6 -0
  77. package/dist/chunk-n514hj0z.js +450 -0
  78. package/dist/chunk-nms5q44e.js +1 -0
  79. package/dist/chunk-qm32ytbr.js +1 -0
  80. package/dist/chunk-t0xgmhd6.js +114 -0
  81. package/dist/chunk-t3t9ymec.js +1 -0
  82. package/dist/chunk-tz9myq9a.js +2 -0
  83. package/dist/chunk-wavjkdb8.js +2 -0
  84. package/dist/chunk-x3hay61c.js +44 -0
  85. package/dist/chunk-xcj8zfmg.js +2 -0
  86. package/dist/chunk-y2v22hkv.js +1 -0
  87. package/dist/chunk-y4xkj2f1.js +50 -0
  88. package/dist/deploy/index.js +1 -1
  89. package/dist/dns/index.js +1 -1
  90. package/dist/drivers/index.js +1 -1
  91. package/dist/drivers/shared/deploy-script.d.ts +85 -0
  92. package/dist/index.js +90 -90
  93. package/dist/protection/index.js +1 -1
  94. package/dist/push/index.js +1 -1
  95. package/dist/spend/index.js +1 -1
  96. package/dist/ui/404.html +2 -2
  97. package/dist/ui/_stx/{router.fa5bc4dc.js → router.229f89ab.js} +1 -1
  98. package/dist/ui/_stx/runtime.dbee66d1.js +1 -0
  99. package/dist/ui/accept-invitation.html +2 -2
  100. package/dist/ui/access-denied.html +1 -1
  101. package/dist/ui/account/automation.html +6 -6
  102. package/dist/ui/account/security.html +2 -2
  103. package/dist/ui/applications/compose.html +6 -6
  104. package/dist/ui/applications/new.html +2 -2
  105. package/dist/ui/data/backups.html +80 -80
  106. package/dist/ui/data/services.html +78 -78
  107. package/dist/ui/data/volumes.html +50 -50
  108. package/dist/ui/index.html +50 -50
  109. package/dist/ui/infrastructure/topology.html +118 -118
  110. package/dist/ui/integrations.html +1 -1
  111. package/dist/ui/operations/alerts.html +48 -48
  112. package/dist/ui/operations/configuration.html +5 -5
  113. package/dist/ui/operations/jobs.html +75 -75
  114. package/dist/ui/operations/maintenance.html +6 -6
  115. package/dist/ui/operations/observability.html +82 -82
  116. package/dist/ui/operations/previews.html +6 -6
  117. package/dist/ui/operations/queue.html +6 -6
  118. package/dist/ui/operations/regions.html +6 -6
  119. package/dist/ui/operations/releases.html +6 -6
  120. package/dist/ui/operations/spend.html +54 -54
  121. package/dist/ui/operations/workloads.html +104 -104
  122. package/dist/ui/security.html +1 -1
  123. package/dist/ui/server/actions.html +56 -56
  124. package/dist/ui/server/activity.html +2 -2
  125. package/dist/ui/server/capacity.html +6 -6
  126. package/dist/ui/server/database.html +105 -105
  127. package/dist/ui/server/deployments.html +50 -50
  128. package/dist/ui/server/diagnostics.html +2 -2
  129. package/dist/ui/server/firewall.html +76 -76
  130. package/dist/ui/server/fleet.html +34 -34
  131. package/dist/ui/server/logs.html +24 -24
  132. package/dist/ui/server/metrics.html +112 -112
  133. package/dist/ui/server/security.html +2 -2
  134. package/dist/ui/server/services.html +27 -27
  135. package/dist/ui/server/sites.html +120 -120
  136. package/dist/ui/server/ssh-keys.html +52 -52
  137. package/dist/ui/server/team.html +144 -144
  138. package/dist/ui/server/terminal.html +15 -15
  139. package/dist/ui/serverless/alarms.html +52 -52
  140. package/dist/ui/serverless/assets.html +28 -28
  141. package/dist/ui/serverless/cost.html +2 -2
  142. package/dist/ui/serverless/data.html +36 -36
  143. package/dist/ui/serverless/deployments.html +28 -28
  144. package/dist/ui/serverless/firewall.html +2 -2
  145. package/dist/ui/serverless/functions.html +40 -40
  146. package/dist/ui/serverless/logs.html +23 -23
  147. package/dist/ui/serverless/metrics.html +2 -2
  148. package/dist/ui/serverless/queues.html +48 -48
  149. package/dist/ui/serverless/secrets.html +52 -52
  150. package/dist/ui/serverless/traces.html +6 -6
  151. package/dist/ui/serverless.html +53 -53
  152. package/dist/ui-src/src/charts.ts +4644 -16118
  153. package/dist/ui-src/src/topology.ts +2 -2
  154. package/package.json +6 -6
  155. package/dist/bin/chunk-0rtn6q5x.js +0 -3
  156. package/dist/bin/chunk-258ehp9s.js +0 -1
  157. package/dist/bin/chunk-2yctv06c.js +0 -1
  158. package/dist/bin/chunk-3276rveh.js +0 -37
  159. package/dist/bin/chunk-3m665jwp.js +0 -70
  160. package/dist/bin/chunk-3s2p9vxj.js +0 -1
  161. package/dist/bin/chunk-4esma5m9.js +0 -1
  162. package/dist/bin/chunk-4n0j3n3b.js +0 -2
  163. package/dist/bin/chunk-54bqchag.js +0 -92
  164. package/dist/bin/chunk-5zagqd20.js +0 -1
  165. package/dist/bin/chunk-7hw2js5h.js +0 -512
  166. package/dist/bin/chunk-8h1qr6x4.js +0 -50
  167. package/dist/bin/chunk-a1dd6sby.js +0 -1
  168. package/dist/bin/chunk-a4dw35gs.js +0 -1
  169. package/dist/bin/chunk-a9d55ker.js +0 -1
  170. package/dist/bin/chunk-awa1qade.js +0 -9
  171. package/dist/bin/chunk-b6by94pk.js +0 -2
  172. package/dist/bin/chunk-c8sypnbe.js +0 -2
  173. package/dist/bin/chunk-cx4e3d4w.js +0 -1
  174. package/dist/bin/chunk-d5a3vheh.js +0 -2
  175. package/dist/bin/chunk-e1fym2bd.js +0 -1
  176. package/dist/bin/chunk-ej4h0q2y.js +0 -1
  177. package/dist/bin/chunk-ett305ym.js +0 -4
  178. package/dist/bin/chunk-f11xf3n6.js +0 -2
  179. package/dist/bin/chunk-fq7ktvgy.js +0 -3
  180. package/dist/bin/chunk-fyq4th2m.js +0 -1
  181. package/dist/bin/chunk-g67qr8yf.js +0 -1
  182. package/dist/bin/chunk-gc82cx4h.js +0 -1
  183. package/dist/bin/chunk-hchtvpr9.js +0 -1
  184. package/dist/bin/chunk-hpe4jjce.js +0 -1
  185. package/dist/bin/chunk-k5vprsef.js +0 -6
  186. package/dist/bin/chunk-m22krd4z.js +0 -3
  187. package/dist/bin/chunk-mkppcwz8.js +0 -1
  188. package/dist/bin/chunk-mpjg0kc7.js +0 -2
  189. package/dist/bin/chunk-mrm4m4dk.js +0 -2
  190. package/dist/bin/chunk-nff46rxd.js +0 -1
  191. package/dist/bin/chunk-np1z3bgt.js +0 -1
  192. package/dist/bin/chunk-nskxkk6r.js +0 -1
  193. package/dist/bin/chunk-pez932b1.js +0 -111
  194. package/dist/bin/chunk-qsdf5kzk.js +0 -2
  195. package/dist/bin/chunk-r61qmhv1.js +0 -2
  196. package/dist/bin/chunk-r6gdcz5c.js +0 -1
  197. package/dist/bin/chunk-satwnr42.js +0 -2
  198. package/dist/bin/chunk-smbycpt5.js +0 -44
  199. package/dist/bin/chunk-sn7e0sn7.js +0 -2
  200. package/dist/bin/chunk-ss574pka.js +0 -1
  201. package/dist/bin/chunk-tj0xb2d8.js +0 -585
  202. package/dist/bin/chunk-v3rzf9d0.js +0 -141
  203. package/dist/bin/chunk-wnpma6t3.js +0 -34
  204. package/dist/bin/chunk-xan0e052.js +0 -5
  205. package/dist/bin/chunk-xbk2y43r.js +0 -60
  206. package/dist/bin/chunk-xjp3v95e.js +0 -6
  207. package/dist/bin/chunk-xyt490vp.js +0 -6
  208. package/dist/bin/chunk-yn9r02gy.js +0 -1
  209. package/dist/bin/chunk-zhkhn9cc.js +0 -1
  210. package/dist/chunk-0zf72ngj.js +0 -1
  211. package/dist/chunk-2hpjte1d.js +0 -704
  212. package/dist/chunk-4m6gwhwr.js +0 -5
  213. package/dist/chunk-5m29dhke.js +0 -34
  214. package/dist/chunk-6fzeemcs.js +0 -114
  215. package/dist/chunk-bpnhqb70.js +0 -6
  216. package/dist/chunk-ead1nkbr.js +0 -60
  217. package/dist/chunk-fea461tj.js +0 -141
  218. package/dist/chunk-fvjczc73.js +0 -1
  219. package/dist/chunk-gearw6rk.js +0 -4
  220. package/dist/chunk-j60hesb3.js +0 -2
  221. package/dist/chunk-pmgtmt3d.js +0 -1
  222. package/dist/chunk-prf2pkvq.js +0 -5
  223. package/dist/chunk-q0wffgw5.js +0 -37
  224. package/dist/chunk-qcemnt35.js +0 -50
  225. package/dist/chunk-qvbwsaay.js +0 -1
  226. package/dist/chunk-r2pbqcnz.js +0 -2
  227. package/dist/chunk-r6110zv2.js +0 -1
  228. package/dist/chunk-wcrj06cg.js +0 -44
  229. package/dist/chunk-wte9mh18.js +0 -92
  230. package/dist/chunk-y6e86wjs.js +0 -445
  231. package/dist/chunk-y8b7ht4v.js +0 -1
  232. package/dist/chunk-yf487g6e.js +0 -2
  233. package/dist/chunk-zmmc9j5f.js +0 -2
  234. package/dist/ui/_stx/runtime.c696d17a.js +0 -1
@@ -1,28 +1,28 @@
1
- <!DOCTYPE html><html lang="en" data-theme="dark"><head><meta charset="UTF-8"><meta name="stx-build" content="mt7lgvq3gjbx1h"><meta name="title" content="stx Project"><meta name="description" content="A website built with stx templating engine"><meta property="og:title" content="stx Project"><meta property="og:description" content="A website built with stx templating engine"><meta property="og:type" content="website"><meta name="twitter:card" content="summary_large_image"><meta name="twitter:title" content="stx Project"><meta name="twitter:description" content="A website built with stx templating engine"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>ts-cloud · Alerts &amp; health</title><link rel="icon" type="image/svg+xml" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Crect x='3' y='3' width='26' height='26' rx='8' fill='%235a8be0'/%3E%3C/svg%3E"><link rel="preconnect" href="https://fonts.googleapis.com"><link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap" rel="stylesheet"><link rel="stylesheet" href="/_stx/style.448ab192.css"> <script data-stx-runtime src="/_stx/runtime.c696d17a.js"></script> <script data-stx-composables src="/_stx/chunk.5ddb5087.js"></script> <script data-stx-scoped>
2
- function __stx_setup_1787597620483_2() {
1
+ <!DOCTYPE html><html lang="en" data-theme="dark"><head><meta charset="UTF-8"><meta name="stx-build" content="mt9ag411j9wvnd"><meta name="title" content="stx Project"><meta name="description" content="A website built with stx templating engine"><meta property="og:title" content="stx Project"><meta property="og:description" content="A website built with stx templating engine"><meta property="og:type" content="website"><meta name="twitter:card" content="summary_large_image"><meta name="twitter:title" content="stx Project"><meta name="twitter:description" content="A website built with stx templating engine"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>ts-cloud · Alerts &amp; health</title><link rel="icon" type="image/svg+xml" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Crect x='3' y='3' width='26' height='26' rx='8' fill='%235a8be0'/%3E%3C/svg%3E"><link rel="preconnect" href="https://fonts.googleapis.com"><link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap" rel="stylesheet"><link rel="stylesheet" href="/_stx/style.448ab192.css"> <script data-stx-runtime src="/_stx/runtime.dbee66d1.js"></script> <script data-stx-composables src="/_stx/chunk.5ddb5087.js"></script> <script data-stx-scoped>
2
+ function __stx_setup_1787700041227_0() {
3
3
  const { batch, computed, configureFetch, defineEmits, defineExpose, definePageMeta, defineProps, defineSlots, defineStore, derived, effect, goBack, goForward, inject, invalidateRoute, isDerived, isSignal, navigate, nextTick, onBeforeMount, onBeforeUnmount, onDestroy, onMount, onMounted, onUnmounted, peek, provide, reactive, ref, registerStoresClient, setRouteParams, state, untrack, useAsync, useClickOutside, useColorMode, useCookie, useCounter, useDark, useDebounce, useDebouncedValue, useEventListener, useFetch, useFocus, useHead, useId, useInterval, useLocalStorage, useMediaQuery, useMutation, useOptimistic, usePreferredContrast, usePreferredDark, usePreferredLight, usePreferredReducedMotion, useQuery, useReactiveProp, useRef, useRoute, useRouteParam, useRouteParams, useScrollLock, useSearchParams, useSeoMeta, useSessionStorage, useSlots, useStore, useThrottle, useTimeout, useToggle, useWebSocket, watch, watchEffect, watchMultiple, withDefaults } = window.stx;
4
4
 
5
- var tone = undefined;
6
- var toggleChannel = undefined;
7
- var toggle = undefined;
8
- var testChannel = undefined;
9
- var submitRule = undefined;
10
- var submitRoute = undefined;
11
- var submitHealth = undefined;
12
- var submitChannel = undefined;
13
- var runCheck = undefined;
14
- var retry = undefined;
15
- var refresh = undefined;
16
- var pollingState = undefined;
17
- var pollingError = undefined;
18
- var optional = undefined;
19
- var load = undefined;
20
- var lastUpdatedAt = undefined;
21
- var duration = undefined;
22
- var body = undefined;
23
- var api = undefined;
24
- var alerts = undefined;
25
5
  var alertAction = undefined;
6
+ var alerts = undefined;
7
+ var api = undefined;
8
+ var body = undefined;
9
+ var duration = undefined;
10
+ var lastUpdatedAt = undefined;
11
+ var load = undefined;
12
+ var optional = undefined;
13
+ var pollingError = undefined;
14
+ var pollingState = undefined;
15
+ var refresh = undefined;
16
+ var retry = undefined;
17
+ var runCheck = undefined;
18
+ var submitChannel = undefined;
19
+ var submitHealth = undefined;
20
+ var submitRoute = undefined;
21
+ var submitRule = undefined;
22
+ var testChannel = undefined;
23
+ var toggle = undefined;
24
+ var toggleChannel = undefined;
25
+ var tone = undefined;
26
26
  var __stxBundle_08b6fac34151 = (function() {
27
27
 
28
28
  function servedWithoutApi(error) {
@@ -163,34 +163,34 @@ function duration(alert) {
163
163
  function tone(state2) {
164
164
  return state2 === "firing" || state2 === "dead" || state2 === "failed" ? "bad" : state2 === "pending" || state2 === "retrying" || state2 === "silenced" ? "warn" : "ok";
165
165
  }
166
- return { "tone": tone, "toggleChannel": toggleChannel, "toggle": toggle, "testChannel": testChannel, "submitRule": submitRule, "submitRoute": submitRoute, "submitHealth": submitHealth, "submitChannel": submitChannel, "runCheck": runCheck, "retry": retry, "refresh": refresh, "pollingState": pollingState, "pollingError": pollingError, "optional": optional, "load": load, "lastUpdatedAt": lastUpdatedAt, "duration": duration, "body": body, "api": api, "alerts": alerts, "alertAction": alertAction };
166
+ return { "alertAction": alertAction, "alerts": alerts, "api": api, "body": body, "duration": duration, "lastUpdatedAt": lastUpdatedAt, "load": load, "optional": optional, "pollingError": pollingError, "pollingState": pollingState, "refresh": refresh, "retry": retry, "runCheck": runCheck, "submitChannel": submitChannel, "submitHealth": submitHealth, "submitRoute": submitRoute, "submitRule": submitRule, "testChannel": testChannel, "toggle": toggle, "toggleChannel": toggleChannel, "tone": tone };
167
167
  })();
168
- tone = __stxBundle_08b6fac34151["tone"];
169
- toggleChannel = __stxBundle_08b6fac34151["toggleChannel"];
170
- toggle = __stxBundle_08b6fac34151["toggle"];
171
- testChannel = __stxBundle_08b6fac34151["testChannel"];
172
- submitRule = __stxBundle_08b6fac34151["submitRule"];
173
- submitRoute = __stxBundle_08b6fac34151["submitRoute"];
174
- submitHealth = __stxBundle_08b6fac34151["submitHealth"];
175
- submitChannel = __stxBundle_08b6fac34151["submitChannel"];
176
- runCheck = __stxBundle_08b6fac34151["runCheck"];
177
- retry = __stxBundle_08b6fac34151["retry"];
178
- refresh = __stxBundle_08b6fac34151["refresh"];
179
- pollingState = __stxBundle_08b6fac34151["pollingState"];
180
- pollingError = __stxBundle_08b6fac34151["pollingError"];
181
- optional = __stxBundle_08b6fac34151["optional"];
182
- load = __stxBundle_08b6fac34151["load"];
183
- lastUpdatedAt = __stxBundle_08b6fac34151["lastUpdatedAt"];
184
- duration = __stxBundle_08b6fac34151["duration"];
185
- body = __stxBundle_08b6fac34151["body"];
186
- api = __stxBundle_08b6fac34151["api"];
187
- alerts = __stxBundle_08b6fac34151["alerts"];
188
168
  alertAction = __stxBundle_08b6fac34151["alertAction"];
189
- return { tone, toggleChannel, toggle, testChannel, submitRule, submitRoute, submitHealth, submitChannel, runCheck, retry, refresh, pollingState, pollingError, optional, load, lastUpdatedAt, duration, body, api, alerts, alertAction, __stxBundle_08b6fac34151 };
169
+ alerts = __stxBundle_08b6fac34151["alerts"];
170
+ api = __stxBundle_08b6fac34151["api"];
171
+ body = __stxBundle_08b6fac34151["body"];
172
+ duration = __stxBundle_08b6fac34151["duration"];
173
+ lastUpdatedAt = __stxBundle_08b6fac34151["lastUpdatedAt"];
174
+ load = __stxBundle_08b6fac34151["load"];
175
+ optional = __stxBundle_08b6fac34151["optional"];
176
+ pollingError = __stxBundle_08b6fac34151["pollingError"];
177
+ pollingState = __stxBundle_08b6fac34151["pollingState"];
178
+ refresh = __stxBundle_08b6fac34151["refresh"];
179
+ retry = __stxBundle_08b6fac34151["retry"];
180
+ runCheck = __stxBundle_08b6fac34151["runCheck"];
181
+ submitChannel = __stxBundle_08b6fac34151["submitChannel"];
182
+ submitHealth = __stxBundle_08b6fac34151["submitHealth"];
183
+ submitRoute = __stxBundle_08b6fac34151["submitRoute"];
184
+ submitRule = __stxBundle_08b6fac34151["submitRule"];
185
+ testChannel = __stxBundle_08b6fac34151["testChannel"];
186
+ toggle = __stxBundle_08b6fac34151["toggle"];
187
+ toggleChannel = __stxBundle_08b6fac34151["toggleChannel"];
188
+ tone = __stxBundle_08b6fac34151["tone"];
189
+ return { alertAction, alerts, api, body, duration, lastUpdatedAt, load, optional, pollingError, pollingState, refresh, retry, runCheck, submitChannel, submitHealth, submitRoute, submitRule, testChannel, toggle, toggleChannel, tone, __stxBundle_08b6fac34151 };
190
190
  }
191
- window.__stx_latestSetup=__stx_setup_1787597620483_2;
192
- if(window.stx)window.stx._latestSetup=__stx_setup_1787597620483_2;
193
- </script> <style data-stx-cloak>[x-cloak]{display:none !important}</style><link data-crosswind="generated" rel="stylesheet" href="/_stx/crosswind.906ee17c.css"></head><body data-stx="__stx_setup_1787597620483_2"><a data-stx-scope="stx_scope_nav_3" class="skip-link" href="#main-content">Skip to content</a><button class="nav-toggle-button" type="button" aria-label="Open navigation" aria-controls="primary-navigation" aria-expanded="false"><span></span><span></span><span></span></button><button class="nav-scrim" type="button" aria-label="Close navigation"></button><aside class="app-sidebar" id="primary-navigation" aria-label="Primary navigation"><a class="brand" href="/?env=production"><span class="dot"></span><span>ts-cloud</span></a><div class="sidebar-context"><span class="context-label">Project</span><strong>Project</strong></div><div class="environment-picker" aria-label="Environment"><span class="context-label">Environment</span><details><summary class="environment-current production"><span>PROD</span><strong>production</strong></summary></details></div><button class="command-trigger" type="button" aria-keyshortcuts="Meta+K Control+K"><span>Search resources</span><kbd>⌘ K</kbd></button><div class="nav-groups"><section class="nav-group"><h2>Overview</h2><a class="" href="/?env=production">Dashboard</a><a href="/server/activity?env=production">Activity</a></section><section class="nav-group"><h2>Applications</h2><a class="" href="/server/sites?env=production">Services</a><a class="" href="/server/deployments?env=production">Deployments</a><a class="" href="/server/logs?env=production">Logs</a><a class="" href="/integrations?env=production">Git integrations</a><a class="" href="/applications/new?env=production">Create application</a><a class="" href="/applications/compose?env=production">Compose applications</a></section><section class="nav-group"><h2>Operations</h2><a class="" href="/operations/queue?env=production">Deployment queue</a><a class="" href="/operations/previews?env=production">Preview environments</a><a class="" href="/operations/releases?env=production">Releases & promotion</a><a class="" href="/operations/regions?env=production">Regions & failover</a><a class="" href="/operations/maintenance?env=production">Maintenance & DR</a><a class="" href="/operations/workloads?env=production">Workloads</a><a class="" href="/operations/observability?env=production">Observability</a><a class="active" href="/operations/alerts?env=production">Alerts & health</a><a class="" href="/operations/spend?env=production">Spend & budgets</a><a href="/server/metrics?env=production">Metrics</a><a href="/server/services?env=production">Runtime services</a><a class="" href="/operations/jobs?env=production">Workers & schedules</a><a class="" href="/operations/configuration?env=production">Environment &amp; secrets</a><a class="" href="/data/backups?env=production">Backups &amp; recovery</a><a class="" href="/data/volumes?env=production">Persistent volumes</a><a href="/server/actions?env=production">Run operations</a></section><section class="nav-group"><h2>Infrastructure</h2><a class="" href="/infrastructure/topology?env=production">Infrastructure map</a><a class="" href="/data/services?env=production">Data services</a><a class="" href="/data/volumes?env=production">Persistent volumes</a><a href="/server/firewall?env=production">Network & firewall</a><a href="/server/ssh-keys?env=production">SSH keys</a><a class="" href="/server/fleet?env=production">Fleet inventory</a><a class="" href="/server/capacity?env=production">Capacity & placement</a><a href="/security?env=production">Security posture</a><a href="/server/terminal?env=production">Terminal</a></section><section class="nav-group"><h2>Organization</h2><a class="" href="/server/team?env=production">People & access</a><a class="" href="/account/automation?env=production">API & automation</a></section><section class="nav-group"><h2>Account</h2><a class="" href="/account/security?env=production">Sign-in & security</a></section></div><form method="post" action="/api/logout" class="signout"><button type="submit">Sign out</button></form></aside><dialog class="command-palette" aria-labelledby="command-title"><div class="command-search"><span aria-hidden="true">⌕</span><input type="search" placeholder="Search services, domains, deployments…" aria-label="Search resources" autocomplete="off"><button type="button" class="command-close" aria-label="Close search">Esc</button></div><h2 id="command-title" class="sr-only">Search resources and navigation</h2><div class="command-status" role="status">Start typing to search this project.</div><section class="saved-views" aria-labelledby="saved-views-title"><div class="saved-views-heading"><h3 id="saved-views-title">Saved views</h3><form class="save-view-form"><label class="sr-only" for="save-view-name">Saved view name</label><input id="save-view-name" maxlength="64" placeholder="Name this view" autocomplete="off"><button type="submit">Save current filters</button></form></div><div class="saved-view-list"></div></section><form class="tag-result-form"><label for="tag-result-name">Tag selected resource</label><input id="tag-result-name" maxlength="32" placeholder="customer-facing" pattern="[A-Za-z0-9][A-Za-z0-9 -]{0,31}" autocomplete="off"><input class="tag-color" type="color" value="#5a8be0" aria-label="Tag color"><button type="submit">Add tag</button></form><div class="command-results" role="listbox" aria-label="Search results"></div><footer><span>↑ ↓ navigate</span><span>Enter open</span><span>Esc close</span></footer></dialog><div class="context-bar" aria-label="Current scope"><div class="context-path"><div class="context-breadcrumb"><span>Project</span><i>/</i><strong>production</strong></div><div class="context-filters" aria-label="Active filters"></div></div><span class="scope-safety production">Production scope</span></div> <script data-stx-scoped data-stx-run="always">
191
+ window.__stx_latestSetup=__stx_setup_1787700041227_0;
192
+ if(window.stx)window.stx._latestSetup=__stx_setup_1787700041227_0;
193
+ </script> <style data-stx-cloak>[x-cloak]{display:none !important}</style><link data-crosswind="generated" rel="stylesheet" href="/_stx/crosswind.906ee17c.css"></head><body data-stx="__stx_setup_1787700041227_0"><a data-stx-scope="stx_scope_nav_1" class="skip-link" href="#main-content">Skip to content</a><button class="nav-toggle-button" type="button" aria-label="Open navigation" aria-controls="primary-navigation" aria-expanded="false"><span></span><span></span><span></span></button><button class="nav-scrim" type="button" aria-label="Close navigation"></button><aside class="app-sidebar" id="primary-navigation" aria-label="Primary navigation"><a class="brand" href="/?env=production"><span class="dot"></span><span>ts-cloud</span></a><div class="sidebar-context"><span class="context-label">Project</span><strong>Project</strong></div><div class="environment-picker" aria-label="Environment"><span class="context-label">Environment</span><details><summary class="environment-current production"><span>PROD</span><strong>production</strong></summary></details></div><button class="command-trigger" type="button" aria-keyshortcuts="Meta+K Control+K"><span>Search resources</span><kbd>⌘ K</kbd></button><div class="nav-groups"><section class="nav-group"><h2>Overview</h2><a class="" href="/?env=production">Dashboard</a><a href="/server/activity?env=production">Activity</a></section><section class="nav-group"><h2>Applications</h2><a class="" href="/server/sites?env=production">Services</a><a class="" href="/server/deployments?env=production">Deployments</a><a class="" href="/server/logs?env=production">Logs</a><a class="" href="/integrations?env=production">Git integrations</a><a class="" href="/applications/new?env=production">Create application</a><a class="" href="/applications/compose?env=production">Compose applications</a></section><section class="nav-group"><h2>Operations</h2><a class="" href="/operations/queue?env=production">Deployment queue</a><a class="" href="/operations/previews?env=production">Preview environments</a><a class="" href="/operations/releases?env=production">Releases & promotion</a><a class="" href="/operations/regions?env=production">Regions & failover</a><a class="" href="/operations/maintenance?env=production">Maintenance & DR</a><a class="" href="/operations/workloads?env=production">Workloads</a><a class="" href="/operations/observability?env=production">Observability</a><a class="active" href="/operations/alerts?env=production">Alerts & health</a><a class="" href="/operations/spend?env=production">Spend & budgets</a><a href="/server/metrics?env=production">Metrics</a><a href="/server/services?env=production">Runtime services</a><a class="" href="/operations/jobs?env=production">Workers & schedules</a><a class="" href="/operations/configuration?env=production">Environment &amp; secrets</a><a class="" href="/data/backups?env=production">Backups &amp; recovery</a><a class="" href="/data/volumes?env=production">Persistent volumes</a><a href="/server/actions?env=production">Run operations</a></section><section class="nav-group"><h2>Infrastructure</h2><a class="" href="/infrastructure/topology?env=production">Infrastructure map</a><a class="" href="/data/services?env=production">Data services</a><a class="" href="/data/volumes?env=production">Persistent volumes</a><a href="/server/firewall?env=production">Network & firewall</a><a href="/server/ssh-keys?env=production">SSH keys</a><a class="" href="/server/fleet?env=production">Fleet inventory</a><a class="" href="/server/capacity?env=production">Capacity & placement</a><a href="/security?env=production">Security posture</a><a href="/server/terminal?env=production">Terminal</a></section><section class="nav-group"><h2>Organization</h2><a class="" href="/server/team?env=production">People & access</a><a class="" href="/account/automation?env=production">API & automation</a></section><section class="nav-group"><h2>Account</h2><a class="" href="/account/security?env=production">Sign-in & security</a></section></div><form method="post" action="/api/logout" class="signout"><button type="submit">Sign out</button></form></aside><dialog class="command-palette" aria-labelledby="command-title"><div class="command-search"><span aria-hidden="true">⌕</span><input type="search" placeholder="Search services, domains, deployments…" aria-label="Search resources" autocomplete="off"><button type="button" class="command-close" aria-label="Close search">Esc</button></div><h2 id="command-title" class="sr-only">Search resources and navigation</h2><div class="command-status" role="status">Start typing to search this project.</div><section class="saved-views" aria-labelledby="saved-views-title"><div class="saved-views-heading"><h3 id="saved-views-title">Saved views</h3><form class="save-view-form"><label class="sr-only" for="save-view-name">Saved view name</label><input id="save-view-name" maxlength="64" placeholder="Name this view" autocomplete="off"><button type="submit">Save current filters</button></form></div><div class="saved-view-list"></div></section><form class="tag-result-form"><label for="tag-result-name">Tag selected resource</label><input id="tag-result-name" maxlength="32" placeholder="customer-facing" pattern="[A-Za-z0-9][A-Za-z0-9 -]{0,31}" autocomplete="off"><input class="tag-color" type="color" value="#5a8be0" aria-label="Tag color"><button type="submit">Add tag</button></form><div class="command-results" role="listbox" aria-label="Search results"></div><footer><span>↑ ↓ navigate</span><span>Enter open</span><span>Esc close</span></footer></dialog><div class="context-bar" aria-label="Current scope"><div class="context-path"><div class="context-breadcrumb"><span>Project</span><i>/</i><strong>production</strong></div><div class="context-filters" aria-label="Active filters"></div></div><span class="scope-safety production">Production scope</span></div> <script data-stx-scoped data-stx-run="always">
194
194
  (function() {
195
195
  var { batch, computed, configureFetch, defineEmits, defineExpose, definePageMeta, defineProps, defineSlots, defineStore, derived, effect, goBack, goForward, inject, invalidateRoute, isDerived, isSignal, navigate, nextTick, onBeforeMount, onBeforeUnmount, onDestroy, onMount, onMounted, onUnmounted, peek, provide, reactive, ref, refresh, registerStoresClient, setRouteParams, state, untrack, useAsync, useClickOutside, useColorMode, useCookie, useCounter, useDark, useDebounce, useDebouncedValue, useEventListener, useFetch, useFocus, useHead, useId, useInterval, useLocalStorage, useMediaQuery, useMutation, useOptimistic, usePreferredContrast, usePreferredDark, usePreferredLight, usePreferredReducedMotion, useQuery, useReactiveProp, useRef, useRoute, useRouteParam, useRouteParams, useScrollLock, useSearchParams, useSeoMeta, useSessionStorage, useSlots, useStore, useThrottle, useTimeout, useToggle, useWebSocket, watch, watchEffect, watchMultiple, withDefaults } = window.stx;
196
196
  var __destroyHooks = [];
@@ -541,6 +541,6 @@ if(window.stx)window.stx._latestSetup=__stx_setup_1787597620483_2;
541
541
 
542
542
 
543
543
  try { if (typeof __stxScopeRenames !== 'undefined' && __stxScopeRenames) { for (var __stxRK in __stxScopeRenames) __scopeRegistration[__stxRK] = __stxScopeRenames[__stxRK]; } } catch (e) { /* no renames */ }
544
- window.stx._scopes['stx_scope_nav_3'] = __scopeRegistration;
544
+ window.stx._scopes['stx_scope_nav_1'] = __scopeRegistration;
545
545
  })();
546
546
  </script> <main class="alert-wrap wrap" id="main-content"><div class="crumbs">Operations <span class="sep">/</span> Alerts & health</div><header class="page"><div><h1>Alerts & health</h1><p>Health checks, stateful alert evaluation, ownership, silences, routing, and delivery diagnostics.</p></div><div class="header-actions" x-cloak><span class="pill" :class="pollingState()==='live'?'ok':'warn'" x-cloak>{{ pollingState() }}</span><small x-cloak>{{ lastUpdatedAt()?.toLocaleTimeString()||'connecting' }}</small><button class="btn ghost sm" @click="refresh()">Refresh</button></div></header><p class="notice" role="status" @show="!!notice()" x-cloak>{{ notice() }}</p><p class="bad notice" role="alert" @show="!!pollingError()" x-cloak>{{ pollingError() }}</p><nav class="tabs" aria-label="Alert workspace"><button :class="{active:tab()==='alerts'}" @click="tab.set('alerts')">Alerts</button><button :class="{active:tab()==='health'}" @click="tab.set('health')">Health checks</button><button :class="{active:tab()==='rules'}" @click="tab.set('rules')">Rules</button><button :class="{active:tab()==='routing'}" @click="tab.set('routing')">Channels & routing</button><button :class="{active:tab()==='delivery'}" @click="tab.set('delivery')">Delivery</button></nav><section @show="tab()==='alerts'" x-cloak><div class="summary"><article class="panel"><b>Firing</b><strong x-cloak>{{ alerts().filter(x=>x.state==='firing').length }}</strong></article><article class="panel"><b>Pending</b><strong x-cloak>{{ alerts().filter(x=>x.state==='pending').length }}</strong></article><article class="panel"><b>Silenced</b><strong x-cloak>{{ alerts().filter(x=>x.state==='silenced').length }}</strong></article><article class="panel"><b>Resolved</b><strong x-cloak>{{ alerts().filter(x=>x.state==='resolved').length }}</strong></article></div><div class="cards-list" x-cloak><template :for="item in alerts()"><article class="alert-card panel" x-cloak><div x-cloak><span class="pill" :class="tone(item.state)" x-cloak>{{ item.state }}</span><span class="pill" x-cloak>{{ item.severity }}</span><h2 x-cloak>{{ item.title }}</h2></div><p class="note" x-cloak>First {{ new Date(item.firstSeenAt).toLocaleString() }} · last {{ new Date(item.lastSeenAt).toLocaleString() }} · duration {{ duration(item) }} · occurrences {{ item.occurrenceCount }}</p><pre x-cloak>{{ JSON.stringify(item.evidence,null,2) }}</pre><div class="meta" x-cloak><span x-cloak>Owner {{ item.ownerActorId||'unassigned' }}</span><span x-cloak>{{ item.acknowledgedAt?'Acknowledged '+new Date(item.acknowledgedAt).toLocaleString():'Unacknowledged' }}</span></div><div class="actions"><button class="btn ghost sm" @show="!item.acknowledgedAt" @click="alertAction(item.id,'acknowledge')" x-cloak>Acknowledge</button><button class="btn ghost sm" @click="alertAction(item.id,'assign',{ownerActorId:'me'})">Assign to me</button><button class="btn ghost sm" @show="item.state==='firing'" @click="alertAction(item.id,'silence',{until:new Date(Date.now()+3600000).toISOString()})" x-cloak>Silence 1h</button><a class="btn ghost sm" :href="'/operations/observability?releaseId='+encodeURIComponent(item.evidence?.releaseId||'')">Correlate</a></div></article></template><div class="empty panel" @show="!alerts().length" x-cloak><strong>No alerts</strong><span>Healthy and empty are distinct. Add a check or metric rule to begin evaluation.</span></div></div></section><section @show="tab()==='health'" class="split" x-cloak><div x-cloak><template :for="item in checks()"><article class="row-card panel" x-cloak><div x-cloak><span class="pill" :class="tone(item.results?.[0]?.status==='unhealthy'?'firing':item.results?.[0]?.status||'pending')" x-cloak>{{ item.results?.[0]?.status||'no data' }}</span><b x-cloak>{{ item.name }}</b><code x-cloak>{{ item.kind }} · {{ item.target }}</code></div><p class="note" x-cloak>every {{ item.intervalSeconds }}s · timeout {{ item.timeoutSeconds }}s · fail {{ item.failureThreshold }} / recover {{ item.recoveryThreshold }} · agents {{ item.regions.join(', ')||'local' }}</p><div class="actions"><button class="btn ghost sm" @click="runCheck(item.id,true)">Preview/test</button><button class="btn ghost sm" @click="runCheck(item.id,false)">Run & evaluate</button><button class="btn ghost sm" @click="toggle('/api/health/checks',item.id,!item.enabled)" x-cloak>{{ item.enabled?'Disable':'Enable' }}</button></div></article></template></div><form class="editor panel" @submit="submitHealth($event)"><h2>New health check</h2><label>Name<input name="name" required></label><label>Kind<select name="kind"><option>http</option><option>tcp</option><option>command</option></select></label><label>Target<input name="target" required placeholder="https://app.example/health or host"></label><label>HTTP method<input name="method" value="GET"></label><label>Expected statuses<input name="expectedStatuses" value="200"></label><label>Expected body (optional)<input name="expectedBody"></label><label>TCP port<input name="port" type="number"></label><label>Command argv (admin only)<input name="command" placeholder="/usr/bin/systemctl is-active app"></label><label>Interval seconds<input name="intervalSeconds" type="number" min="10" value="60"></label><label>Timeout seconds<input name="timeoutSeconds" type="number" min="1" value="10"></label><label>Failure threshold<input name="failureThreshold" type="number" min="1" value="3"></label><label>Recovery threshold<input name="recoveryThreshold" type="number" min="1" value="2"></label><label>Agents / regions<input name="regions" value="local"></label><button class="btn" type="submit">Create check</button><p class="note">Preview/test records no production incident. Commands are argv-only and never run through a shell.</p></form></section><section @show="tab()==='rules'" class="split" x-cloak><div x-cloak><template :for="item in rules()"><article class="row-card panel" x-cloak><div x-cloak><span class="pill" x-cloak>{{ item.severity }}</span><b x-cloak>{{ item.name }}</b><code x-cloak>{{ item.signal }} {{ item.operator }} {{ item.threshold??'unhealthy' }}</code></div><p class="note" x-cloak>{{ item.consecutive }} failures · {{ item.recoveryConsecutive }} recoveries · no-data {{ item.noDataPolicy }} · v{{ item.version }}</p><button class="btn ghost sm" @click="toggle('/api/alerts/rules',item.id,!item.enabled)" x-cloak>{{ item.enabled?'Disable':'Enable' }}</button></article></template></div><form class="editor panel" @submit="submitRule($event)"><h2>New alert rule</h2><label>Name<input name="name" required></label><label>Health check<select name="healthCheckId"><option value="">Metric query</option><template :for="check in checks()"><option :value="check.id">{{ check.name }}</option></template></select></label><label>Metric signal<input name="signal" placeholder="errors.count"></label><label>Operator<select name="operator"><option value="unhealthy">unhealthy</option><option value="gt">greater than</option><option value="gte">greater/equal</option><option value="lt">less than</option><option value="lte">less/equal</option></select></label><label>Threshold<input name="threshold" type="number" step="any"></label><label>Recovery threshold<input name="recoveryThreshold" type="number" step="any"></label><label>Window minutes<input name="windowMinutes" type="number" value="5"></label><label>Consecutive failures<input name="consecutive" type="number" min="1" value="3"></label><label>Consecutive recoveries<input name="recoveryConsecutive" type="number" min="1" value="2"></label><label>No data<select name="noDataPolicy"><option>pending</option><option>ignore</option><option>firing</option></select></label><label>Severity<select name="severity"><option>warning</option><option>critical</option><option>info</option></select></label><label>Group by<input name="groupBy" placeholder="resourceId,region"></label><button class="btn" type="submit">Create rule</button></form></section><section @show="tab()==='routing'" class="routing-grid" x-cloak><div><h2>Channels</h2><template :for="item in channels()"><article class="row-card panel" x-cloak><div x-cloak><span class="pill" :class="tone(item.status)" x-cloak>{{ item.status }}</span><b x-cloak>{{ item.name }}</b><code x-cloak>{{ item.kind }} · credential {{ item.credentialFingerprint||'none' }}</code></div><div class="actions"><button class="btn ghost sm" @click="testChannel(item.id)">Test</button><button class="btn ghost sm" @click="toggleChannel(item.id,item.status==='active'?'paused':'active')" x-cloak>{{ item.status==='active'?'Pause':'Resume' }}</button></div><p class="bad note" @show="!!item.lastError" x-cloak>{{ item.lastError }}</p></article></template><form class="editor panel" @submit="submitChannel($event)"><h3>New channel</h3><label>Name<input name="name" required></label><label>Type<select name="kind"><option>slack</option><option>discord</option><option>teams</option><option>telegram</option><option>email</option><option>webhook</option></select></label><label>Destination (email recipients or Telegram chat ID)<input name="destination"></label><label>From (email)<input name="from"></label><label>Encrypted credential<input name="credential" type="password" autocomplete="new-password" placeholder="Webhook URL, bot token, or {url,signingSecret}"></label><button class="btn" type="submit">Create channel</button></form></div><div><h2>Routing rules</h2><template :for="item in routes()"><article class="row-card panel" x-cloak><div x-cloak><span class="pill" x-cloak>priority {{ item.priority }}</span><b x-cloak>{{ item.name }}</b></div><p class="note" x-cloak>{{ item.channelIds.length }} channels · quiet {{ item.quietHours?item.quietHours.start+'–'+item.quietHours.end+' '+item.quietHours.timezone:'off' }} · reminder {{ item.reminderSeconds?item.reminderSeconds+'s':'off' }} · limit {{ item.rateLimitPerMinute }}/min</p><button class="btn ghost sm" @click="toggle('/api/notifications/routes',item.id,!item.enabled)" x-cloak>{{ item.enabled?'Disable':'Enable' }}</button></article></template><form class="editor panel" @submit="submitRoute($event)"><h3>New route</h3><label>Name<input name="name" required></label><label>Priority<input name="priority" type="number" value="0"></label><label>Severity<select name="severity"><option value="">Any</option><option>critical</option><option>warning</option><option>info</option></select></label><label>Event<select name="eventType"><option value="">Any</option><option>firing</option><option>resolved</option><option>reminder</option><option>escalation</option></select></label><label x-cloak>Channel<select name="channelId" required><template :for="channel in channels()"><option :value="channel.id">{{ channel.name }}</option></template></select></label><label>Quiet start<input name="quietStart" type="time"></label><label>Quiet end<input name="quietEnd" type="time"></label><label>Timezone<input name="timezone" value="UTC"></label><label>Group wait seconds<input name="groupWaitSeconds" type="number" value="30"></label><label>Reminder minutes<input name="reminderMinutes" type="number"></label><label>Rate limit / minute<input name="rateLimitPerMinute" type="number" min="1" value="60"></label><label x-cloak>Message template<input name="template" placeholder="[{{severity}}] {{title}} · {{state}}"></label><button class="btn" type="submit">Create route</button></form></div></section><section @show="tab()==='delivery'" x-cloak><div class="panel table-wrap"><table><thead><tr><th scope="col">Updated</th><th scope="col">Event</th><th scope="col">Channel</th><th scope="col">State</th><th scope="col">Attempts</th><th scope="col">Diagnostic</th><th scope="col">Actions</th></tr></thead><tbody><template :for="item in deliveries()"><tr><td x-cloak>{{ new Date(item.updatedAt).toLocaleString() }}</td><td x-cloak>{{ item.eventType }}</td><td class="mono" x-cloak>{{ item.channelId }}</td><td x-cloak><span class="pill" :class="tone(item.state)" x-cloak>{{ item.state }}</span></td><td x-cloak>{{ item.attempt }}/{{ item.maxAttempts }}</td><td x-cloak>{{ item.error||item.responseStatus||'—' }}</td><td><button class="btn ghost sm" @show="item.state!=='delivered'" @click="retry(item.id)" x-cloak>Retry</button></td></tr></template></tbody></table><div class="empty" @show="!deliveries().length" x-cloak><strong>No notification deliveries</strong><span>Channel tests are tracked on the channel and do not create fake incidents.</span></div></div></section></main><style> .alert-wrap{max-width:1450px}.tabs{display:flex;gap:5px;overflow:auto;border-bottom:1px solid var(--line);margin-bottom:18px}.tabs button{border:0;background:transparent;color:var(--txt3);padding:10px 14px;white-space:nowrap}.tabs button.active{color:var(--txt);border-bottom:2px solid var(--accent)}.summary{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.summary article{display:grid;gap:8px}.summary strong{font-size:28px}.cards-list{display:grid;gap:10px;margin-top:12px}.alert-card h2{display:inline;font-size:17px;margin-left:8px}.alert-card pre{max-height:150px;overflow:auto;background:var(--bg2);padding:10px;border-radius:8px}.meta,.actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.meta{justify-content:space-between;color:var(--txt3);font-size:11px}.split,.routing-grid{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(300px,1fr);gap:14px}.row-card{margin-bottom:9px}.row-card>div:first-child{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.row-card code{color:var(--txt3)}.editor{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;align-content:start;position:sticky;top:10px}.editor h2,.editor h3,.editor .note,.editor button{grid-column:1/-1}.editor label{display:grid;gap:5px;color:var(--txt3);font-size:11px}.editor input,.editor select{width:100%;background:var(--bg2);border:1px solid var(--line);border-radius:8px;color:var(--txt);padding:8px}.routing-grid>div>h2{margin-top:0}.table-wrap{overflow:auto}.mono{font-family:var(--mono);font-size:11px}@media(max-width:850px){.summary{grid-template-columns:repeat(2,1fr)}.split,.routing-grid{grid-template-columns:1fr}.editor{position:static}}@media(max-width:520px){.summary{grid-template-columns:1fr}.editor{grid-template-columns:1fr}.editor>*{grid-column:1!important}} </style></body></html>
@@ -1,5 +1,5 @@
1
- <!DOCTYPE html><html lang="en" data-theme="dark"><head><meta charset="UTF-8"><meta name="stx-build" content="mt7lgvq3gjbx1h"><meta name="title" content="stx Project"><meta name="description" content="A website built with stx templating engine"><meta property="og:title" content="stx Project"><meta property="og:description" content="A website built with stx templating engine"><meta property="og:type" content="website"><meta name="twitter:card" content="summary_large_image"><meta name="twitter:title" content="stx Project"><meta name="twitter:description" content="A website built with stx templating engine"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>ts-cloud · Environment &amp; secrets</title><link rel="icon" type="image/svg+xml" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Crect x='3' y='3' width='26' height='26' rx='8' fill='%235a8be0'/%3E%3C/svg%3E"><link rel="preconnect" href="https://fonts.googleapis.com"><link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap" rel="stylesheet"><link rel="stylesheet" href="/_stx/style.448ab192.css"> <script data-stx-runtime src="/_stx/runtime.c696d17a.js"></script> <script data-stx-scoped>
2
- function __stx_setup_1787597620482_1() {
1
+ <!DOCTYPE html><html lang="en" data-theme="dark"><head><meta charset="UTF-8"><meta name="stx-build" content="mt9ag411j9wvnd"><meta name="title" content="stx Project"><meta name="description" content="A website built with stx templating engine"><meta property="og:title" content="stx Project"><meta property="og:description" content="A website built with stx templating engine"><meta property="og:type" content="website"><meta name="twitter:card" content="summary_large_image"><meta name="twitter:title" content="stx Project"><meta name="twitter:description" content="A website built with stx templating engine"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>ts-cloud · Environment &amp; secrets</title><link rel="icon" type="image/svg+xml" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Crect x='3' y='3' width='26' height='26' rx='8' fill='%235a8be0'/%3E%3C/svg%3E"><link rel="preconnect" href="https://fonts.googleapis.com"><link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap" rel="stylesheet"><link rel="stylesheet" href="/_stx/style.448ab192.css"> <script data-stx-runtime src="/_stx/runtime.dbee66d1.js"></script> <script data-stx-scoped>
2
+ function __stx_setup_1787700041228_1() {
3
3
  const { batch, computed, configureFetch, defineEmits, defineExpose, definePageMeta, defineProps, defineSlots, defineStore, derived, effect, goBack, goForward, inject, invalidateRoute, isDerived, isSignal, navigate, nextTick, onBeforeMount, onBeforeUnmount, onDestroy, onMount, onMounted, onUnmounted, peek, provide, reactive, ref, refresh, registerStoresClient, setRouteParams, state, untrack, useAsync, useClickOutside, useColorMode, useCookie, useCounter, useDark, useDebounce, useDebouncedValue, useEventListener, useFetch, useFocus, useHead, useId, useInterval, useLocalStorage, useMediaQuery, useMutation, useOptimistic, usePreferredContrast, usePreferredDark, usePreferredLight, usePreferredReducedMotion, useQuery, useReactiveProp, useRef, useRoute, useRouteParam, useRouteParams, useScrollLock, useSearchParams, useSeoMeta, useSessionStorage, useSlots, useStore, useThrottle, useTimeout, useToggle, useWebSocket, watch, watchEffect, watchMultiple, withDefaults } = window.stx;
4
4
 
5
5
  const entries = state([]);
@@ -266,9 +266,9 @@ onMount(() => {
266
266
 
267
267
  return { entries, effectiveEntries, scopeProject, environments, resources, functions, previews, warnings, configurationHash, tab, scopeType, scopeId, search, effective, selected, notice, error, busy, plan, editorOpen, importOpen, dotenvSource, secretKeys, currentEnv, endpoint, api, scopeContext, chooseDefault, changeScope, load, shown, selectTab, toggle, allSelected, when, scopeLabel, formData, previewChange, save, reveal, removeEntry, bulkDelete, transfer, importDotenv, exportVariables, searchTimer, searchChanged };
268
268
  }
269
- window.__stx_latestSetup=__stx_setup_1787597620482_1;
270
- if(window.stx)window.stx._latestSetup=__stx_setup_1787597620482_1;
271
- </script> <style data-stx-cloak>[x-cloak]{display:none !important}</style><link data-crosswind="generated" rel="stylesheet" href="/_stx/crosswind.906ee17c.css"></head><body data-stx="__stx_setup_1787597620482_1"><a data-stx-scope="stx_scope_nav_2" class="skip-link" href="#main-content">Skip to content</a><button class="nav-toggle-button" type="button" aria-label="Open navigation" aria-controls="primary-navigation" aria-expanded="false"><span></span><span></span><span></span></button><button class="nav-scrim" type="button" aria-label="Close navigation"></button><aside class="app-sidebar" id="primary-navigation" aria-label="Primary navigation"><a class="brand" href="/?env=production"><span class="dot"></span><span>ts-cloud</span></a><div class="sidebar-context"><span class="context-label">Project</span><strong>Project</strong></div><div class="environment-picker" aria-label="Environment"><span class="context-label">Environment</span><details><summary class="environment-current production"><span>PROD</span><strong>production</strong></summary></details></div><button class="command-trigger" type="button" aria-keyshortcuts="Meta+K Control+K"><span>Search resources</span><kbd>⌘ K</kbd></button><div class="nav-groups"><section class="nav-group"><h2>Overview</h2><a class="" href="/?env=production">Dashboard</a><a href="/server/activity?env=production">Activity</a></section><section class="nav-group"><h2>Applications</h2><a class="" href="/server/sites?env=production">Services</a><a class="" href="/server/deployments?env=production">Deployments</a><a class="" href="/server/logs?env=production">Logs</a><a class="" href="/integrations?env=production">Git integrations</a><a class="" href="/applications/new?env=production">Create application</a><a class="" href="/applications/compose?env=production">Compose applications</a></section><section class="nav-group"><h2>Operations</h2><a class="" href="/operations/queue?env=production">Deployment queue</a><a class="" href="/operations/previews?env=production">Preview environments</a><a class="" href="/operations/releases?env=production">Releases & promotion</a><a class="" href="/operations/regions?env=production">Regions & failover</a><a class="" href="/operations/maintenance?env=production">Maintenance & DR</a><a class="" href="/operations/workloads?env=production">Workloads</a><a class="" href="/operations/observability?env=production">Observability</a><a class="" href="/operations/alerts?env=production">Alerts & health</a><a class="" href="/operations/spend?env=production">Spend & budgets</a><a href="/server/metrics?env=production">Metrics</a><a href="/server/services?env=production">Runtime services</a><a class="" href="/operations/jobs?env=production">Workers & schedules</a><a class="active" href="/operations/configuration?env=production">Environment &amp; secrets</a><a class="" href="/data/backups?env=production">Backups &amp; recovery</a><a class="" href="/data/volumes?env=production">Persistent volumes</a><a href="/server/actions?env=production">Run operations</a></section><section class="nav-group"><h2>Infrastructure</h2><a class="" href="/infrastructure/topology?env=production">Infrastructure map</a><a class="" href="/data/services?env=production">Data services</a><a class="" href="/data/volumes?env=production">Persistent volumes</a><a href="/server/firewall?env=production">Network & firewall</a><a href="/server/ssh-keys?env=production">SSH keys</a><a class="" href="/server/fleet?env=production">Fleet inventory</a><a class="" href="/server/capacity?env=production">Capacity & placement</a><a href="/security?env=production">Security posture</a><a href="/server/terminal?env=production">Terminal</a></section><section class="nav-group"><h2>Organization</h2><a class="" href="/server/team?env=production">People & access</a><a class="" href="/account/automation?env=production">API & automation</a></section><section class="nav-group"><h2>Account</h2><a class="" href="/account/security?env=production">Sign-in & security</a></section></div><form method="post" action="/api/logout" class="signout"><button type="submit">Sign out</button></form></aside><dialog class="command-palette" aria-labelledby="command-title"><div class="command-search"><span aria-hidden="true">⌕</span><input type="search" placeholder="Search services, domains, deployments…" aria-label="Search resources" autocomplete="off"><button type="button" class="command-close" aria-label="Close search">Esc</button></div><h2 id="command-title" class="sr-only">Search resources and navigation</h2><div class="command-status" role="status">Start typing to search this project.</div><section class="saved-views" aria-labelledby="saved-views-title"><div class="saved-views-heading"><h3 id="saved-views-title">Saved views</h3><form class="save-view-form"><label class="sr-only" for="save-view-name">Saved view name</label><input id="save-view-name" maxlength="64" placeholder="Name this view" autocomplete="off"><button type="submit">Save current filters</button></form></div><div class="saved-view-list"></div></section><form class="tag-result-form"><label for="tag-result-name">Tag selected resource</label><input id="tag-result-name" maxlength="32" placeholder="customer-facing" pattern="[A-Za-z0-9][A-Za-z0-9 -]{0,31}" autocomplete="off"><input class="tag-color" type="color" value="#5a8be0" aria-label="Tag color"><button type="submit">Add tag</button></form><div class="command-results" role="listbox" aria-label="Search results"></div><footer><span>↑ ↓ navigate</span><span>Enter open</span><span>Esc close</span></footer></dialog><div class="context-bar" aria-label="Current scope"><div class="context-path"><div class="context-breadcrumb"><span>Project</span><i>/</i><strong>production</strong></div><div class="context-filters" aria-label="Active filters"></div></div><span class="scope-safety production">Production scope</span></div> <script data-stx-scoped data-stx-run="always">
269
+ window.__stx_latestSetup=__stx_setup_1787700041228_1;
270
+ if(window.stx)window.stx._latestSetup=__stx_setup_1787700041228_1;
271
+ </script> <style data-stx-cloak>[x-cloak]{display:none !important}</style><link data-crosswind="generated" rel="stylesheet" href="/_stx/crosswind.906ee17c.css"></head><body data-stx="__stx_setup_1787700041228_1"><a data-stx-scope="stx_scope_nav_2" class="skip-link" href="#main-content">Skip to content</a><button class="nav-toggle-button" type="button" aria-label="Open navigation" aria-controls="primary-navigation" aria-expanded="false"><span></span><span></span><span></span></button><button class="nav-scrim" type="button" aria-label="Close navigation"></button><aside class="app-sidebar" id="primary-navigation" aria-label="Primary navigation"><a class="brand" href="/?env=production"><span class="dot"></span><span>ts-cloud</span></a><div class="sidebar-context"><span class="context-label">Project</span><strong>Project</strong></div><div class="environment-picker" aria-label="Environment"><span class="context-label">Environment</span><details><summary class="environment-current production"><span>PROD</span><strong>production</strong></summary></details></div><button class="command-trigger" type="button" aria-keyshortcuts="Meta+K Control+K"><span>Search resources</span><kbd>⌘ K</kbd></button><div class="nav-groups"><section class="nav-group"><h2>Overview</h2><a class="" href="/?env=production">Dashboard</a><a href="/server/activity?env=production">Activity</a></section><section class="nav-group"><h2>Applications</h2><a class="" href="/server/sites?env=production">Services</a><a class="" href="/server/deployments?env=production">Deployments</a><a class="" href="/server/logs?env=production">Logs</a><a class="" href="/integrations?env=production">Git integrations</a><a class="" href="/applications/new?env=production">Create application</a><a class="" href="/applications/compose?env=production">Compose applications</a></section><section class="nav-group"><h2>Operations</h2><a class="" href="/operations/queue?env=production">Deployment queue</a><a class="" href="/operations/previews?env=production">Preview environments</a><a class="" href="/operations/releases?env=production">Releases & promotion</a><a class="" href="/operations/regions?env=production">Regions & failover</a><a class="" href="/operations/maintenance?env=production">Maintenance & DR</a><a class="" href="/operations/workloads?env=production">Workloads</a><a class="" href="/operations/observability?env=production">Observability</a><a class="" href="/operations/alerts?env=production">Alerts & health</a><a class="" href="/operations/spend?env=production">Spend & budgets</a><a href="/server/metrics?env=production">Metrics</a><a href="/server/services?env=production">Runtime services</a><a class="" href="/operations/jobs?env=production">Workers & schedules</a><a class="active" href="/operations/configuration?env=production">Environment &amp; secrets</a><a class="" href="/data/backups?env=production">Backups &amp; recovery</a><a class="" href="/data/volumes?env=production">Persistent volumes</a><a href="/server/actions?env=production">Run operations</a></section><section class="nav-group"><h2>Infrastructure</h2><a class="" href="/infrastructure/topology?env=production">Infrastructure map</a><a class="" href="/data/services?env=production">Data services</a><a class="" href="/data/volumes?env=production">Persistent volumes</a><a href="/server/firewall?env=production">Network & firewall</a><a href="/server/ssh-keys?env=production">SSH keys</a><a class="" href="/server/fleet?env=production">Fleet inventory</a><a class="" href="/server/capacity?env=production">Capacity & placement</a><a href="/security?env=production">Security posture</a><a href="/server/terminal?env=production">Terminal</a></section><section class="nav-group"><h2>Organization</h2><a class="" href="/server/team?env=production">People & access</a><a class="" href="/account/automation?env=production">API & automation</a></section><section class="nav-group"><h2>Account</h2><a class="" href="/account/security?env=production">Sign-in & security</a></section></div><form method="post" action="/api/logout" class="signout"><button type="submit">Sign out</button></form></aside><dialog class="command-palette" aria-labelledby="command-title"><div class="command-search"><span aria-hidden="true">⌕</span><input type="search" placeholder="Search services, domains, deployments…" aria-label="Search resources" autocomplete="off"><button type="button" class="command-close" aria-label="Close search">Esc</button></div><h2 id="command-title" class="sr-only">Search resources and navigation</h2><div class="command-status" role="status">Start typing to search this project.</div><section class="saved-views" aria-labelledby="saved-views-title"><div class="saved-views-heading"><h3 id="saved-views-title">Saved views</h3><form class="save-view-form"><label class="sr-only" for="save-view-name">Saved view name</label><input id="save-view-name" maxlength="64" placeholder="Name this view" autocomplete="off"><button type="submit">Save current filters</button></form></div><div class="saved-view-list"></div></section><form class="tag-result-form"><label for="tag-result-name">Tag selected resource</label><input id="tag-result-name" maxlength="32" placeholder="customer-facing" pattern="[A-Za-z0-9][A-Za-z0-9 -]{0,31}" autocomplete="off"><input class="tag-color" type="color" value="#5a8be0" aria-label="Tag color"><button type="submit">Add tag</button></form><div class="command-results" role="listbox" aria-label="Search results"></div><footer><span>↑ ↓ navigate</span><span>Enter open</span><span>Esc close</span></footer></dialog><div class="context-bar" aria-label="Current scope"><div class="context-path"><div class="context-breadcrumb"><span>Project</span><i>/</i><strong>production</strong></div><div class="context-filters" aria-label="Active filters"></div></div><span class="scope-safety production">Production scope</span></div> <script data-stx-scoped data-stx-run="always">
272
272
  (function() {
273
273
  var { batch, computed, configureFetch, defineEmits, defineExpose, definePageMeta, defineProps, defineSlots, defineStore, derived, effect, goBack, goForward, inject, invalidateRoute, isDerived, isSignal, navigate, nextTick, onBeforeMount, onBeforeUnmount, onDestroy, onMount, onMounted, onUnmounted, peek, provide, reactive, ref, refresh, registerStoresClient, setRouteParams, state, untrack, useAsync, useClickOutside, useColorMode, useCookie, useCounter, useDark, useDebounce, useDebouncedValue, useEventListener, useFetch, useFocus, useHead, useId, useInterval, useLocalStorage, useMediaQuery, useMutation, useOptimistic, usePreferredContrast, usePreferredDark, usePreferredLight, usePreferredReducedMotion, useQuery, useReactiveProp, useRef, useRoute, useRouteParam, useRouteParams, useScrollLock, useSearchParams, useSeoMeta, useSessionStorage, useSlots, useStore, useThrottle, useTimeout, useToggle, useWebSocket, watch, watchEffect, watchMultiple, withDefaults } = window.stx;
274
274
  var __destroyHooks = [];
@@ -1,42 +1,42 @@
1
- <!DOCTYPE html><html lang="en" data-theme="dark"><head><meta charset="UTF-8"><meta name="stx-build" content="mt7lgvq3gjbx1h"><meta name="title" content="stx Project"><meta name="description" content="A website built with stx templating engine"><meta property="og:title" content="stx Project"><meta property="og:description" content="A website built with stx templating engine"><meta property="og:type" content="website"><meta name="twitter:card" content="summary_large_image"><meta name="twitter:title" content="stx Project"><meta name="twitter:description" content="A website built with stx templating engine"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>ts-cloud · Workers &amp; schedules</title><link rel="icon" type="image/svg+xml" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Crect x='3' y='3' width='26' height='26' rx='8' fill='%235a8be0'/%3E%3C/svg%3E"><link rel="preconnect" href="https://fonts.googleapis.com"><link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap" rel="stylesheet"><link rel="stylesheet" href="/_stx/style.448ab192.css"> <script data-stx-runtime src="/_stx/runtime.c696d17a.js"></script> <script data-stx-composables src="/_stx/chunk.5ddb5087.js"></script> <script data-stx-scoped>
2
- function __stx_setup_1787597622097_8() {
1
+ <!DOCTYPE html><html lang="en" data-theme="dark"><head><meta charset="UTF-8"><meta name="stx-build" content="mt9ag411j9wvnd"><meta name="title" content="stx Project"><meta name="description" content="A website built with stx templating engine"><meta property="og:title" content="stx Project"><meta property="og:description" content="A website built with stx templating engine"><meta property="og:type" content="website"><meta name="twitter:card" content="summary_large_image"><meta name="twitter:title" content="stx Project"><meta name="twitter:description" content="A website built with stx templating engine"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>ts-cloud · Workers &amp; schedules</title><link rel="icon" type="image/svg+xml" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Crect x='3' y='3' width='26' height='26' rx='8' fill='%235a8be0'/%3E%3C/svg%3E"><link rel="preconnect" href="https://fonts.googleapis.com"><link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap" rel="stylesheet"><link rel="stylesheet" href="/_stx/style.448ab192.css"> <script data-stx-runtime src="/_stx/runtime.dbee66d1.js"></script> <script data-stx-composables src="/_stx/chunk.5ddb5087.js"></script> <script data-stx-scoped>
2
+ function __stx_setup_1787700042144_8() {
3
3
  const { batch, computed, configureFetch, defineEmits, defineExpose, definePageMeta, defineProps, defineSlots, defineStore, derived, effect, goBack, goForward, inject, invalidateRoute, isDerived, isSignal, navigate, nextTick, onBeforeMount, onBeforeUnmount, onDestroy, onMount, onMounted, onUnmounted, peek, provide, reactive, ref, registerStoresClient, setRouteParams, state, untrack, useAsync, useClickOutside, useColorMode, useCookie, useCounter, useDark, useDebounce, useDebouncedValue, useEventListener, useFetch, useFocus, useHead, useId, useInterval, useLocalStorage, useMediaQuery, useMutation, useOptimistic, usePreferredContrast, usePreferredDark, usePreferredLight, usePreferredReducedMotion, useQuery, useReactiveProp, useRef, useRoute, useRouteParam, useRouteParams, useScrollLock, useSearchParams, useSeoMeta, useSessionStorage, useSlots, useStore, useThrottle, useTimeout, useToggle, useWebSocket, watch, watchEffect, watchMultiple, withDefaults } = window.stx;
4
4
 
5
- var workers = undefined;
6
- var when = undefined;
7
- var tone = undefined;
8
- var tab = undefined;
9
- var statusFilter = undefined;
10
- var showHistory = undefined;
11
- var setPreset = undefined;
12
- var selectedJob = undefined;
13
- var search = undefined;
14
- var restartWorker = undefined;
15
- var refresh = undefined;
16
- var reconcile = undefined;
17
- var queuePreview = undefined;
18
- var providerFilter = undefined;
19
- var previewTimer = undefined;
20
- var previewForm = undefined;
21
- var preview = undefined;
22
- var pollingState = undefined;
23
- var pollingError = undefined;
24
- var operations = undefined;
25
- var notice = undefined;
26
- var mode = undefined;
27
- var load = undefined;
28
- var lastUpdatedAt = undefined;
29
- var jobs = undefined;
30
- var jobAction = undefined;
31
- var history = undefined;
32
- var formBody = undefined;
33
- var filteredJobs = undefined;
34
- var editJob = undefined;
35
- var duration = undefined;
36
- var createJob = undefined;
37
- var busy = undefined;
38
- var api = undefined;
39
5
  var actionError = undefined;
6
+ var api = undefined;
7
+ var busy = undefined;
8
+ var createJob = undefined;
9
+ var duration = undefined;
10
+ var editJob = undefined;
11
+ var filteredJobs = undefined;
12
+ var formBody = undefined;
13
+ var history = undefined;
14
+ var jobAction = undefined;
15
+ var jobs = undefined;
16
+ var lastUpdatedAt = undefined;
17
+ var load = undefined;
18
+ var mode = undefined;
19
+ var notice = undefined;
20
+ var operations = undefined;
21
+ var pollingError = undefined;
22
+ var pollingState = undefined;
23
+ var preview = undefined;
24
+ var previewForm = undefined;
25
+ var previewTimer = undefined;
26
+ var providerFilter = undefined;
27
+ var queuePreview = undefined;
28
+ var reconcile = undefined;
29
+ var refresh = undefined;
30
+ var restartWorker = undefined;
31
+ var search = undefined;
32
+ var selectedJob = undefined;
33
+ var setPreset = undefined;
34
+ var showHistory = undefined;
35
+ var statusFilter = undefined;
36
+ var tab = undefined;
37
+ var tone = undefined;
38
+ var when = undefined;
39
+ var workers = undefined;
40
40
  var __stxBundle_da87383c4b96 = (function() {
41
41
 
42
42
  function servedWithoutApi(error) {
@@ -276,48 +276,48 @@ async function restartWorker(item) {
276
276
  actionError.set(error.message);
277
277
  }
278
278
  }
279
- return { "workers": workers, "when": when, "tone": tone, "tab": tab, "statusFilter": statusFilter, "showHistory": showHistory, "setPreset": setPreset, "selectedJob": selectedJob, "search": search, "restartWorker": restartWorker, "refresh": refresh, "reconcile": reconcile, "queuePreview": queuePreview, "providerFilter": providerFilter, "previewTimer": previewTimer, "previewForm": previewForm, "preview": preview, "pollingState": pollingState, "pollingError": pollingError, "operations": operations, "notice": notice, "mode": mode, "load": load, "lastUpdatedAt": lastUpdatedAt, "jobs": jobs, "jobAction": jobAction, "history": history, "formBody": formBody, "filteredJobs": filteredJobs, "editJob": editJob, "duration": duration, "createJob": createJob, "busy": busy, "api": api, "actionError": actionError };
279
+ return { "actionError": actionError, "api": api, "busy": busy, "createJob": createJob, "duration": duration, "editJob": editJob, "filteredJobs": filteredJobs, "formBody": formBody, "history": history, "jobAction": jobAction, "jobs": jobs, "lastUpdatedAt": lastUpdatedAt, "load": load, "mode": mode, "notice": notice, "operations": operations, "pollingError": pollingError, "pollingState": pollingState, "preview": preview, "previewForm": previewForm, "previewTimer": previewTimer, "providerFilter": providerFilter, "queuePreview": queuePreview, "reconcile": reconcile, "refresh": refresh, "restartWorker": restartWorker, "search": search, "selectedJob": selectedJob, "setPreset": setPreset, "showHistory": showHistory, "statusFilter": statusFilter, "tab": tab, "tone": tone, "when": when, "workers": workers };
280
280
  })();
281
- workers = __stxBundle_da87383c4b96["workers"];
282
- when = __stxBundle_da87383c4b96["when"];
283
- tone = __stxBundle_da87383c4b96["tone"];
284
- tab = __stxBundle_da87383c4b96["tab"];
285
- statusFilter = __stxBundle_da87383c4b96["statusFilter"];
286
- showHistory = __stxBundle_da87383c4b96["showHistory"];
287
- setPreset = __stxBundle_da87383c4b96["setPreset"];
288
- selectedJob = __stxBundle_da87383c4b96["selectedJob"];
289
- search = __stxBundle_da87383c4b96["search"];
290
- restartWorker = __stxBundle_da87383c4b96["restartWorker"];
291
- refresh = __stxBundle_da87383c4b96["refresh"];
292
- reconcile = __stxBundle_da87383c4b96["reconcile"];
293
- queuePreview = __stxBundle_da87383c4b96["queuePreview"];
294
- providerFilter = __stxBundle_da87383c4b96["providerFilter"];
295
- previewTimer = __stxBundle_da87383c4b96["previewTimer"];
296
- previewForm = __stxBundle_da87383c4b96["previewForm"];
297
- preview = __stxBundle_da87383c4b96["preview"];
298
- pollingState = __stxBundle_da87383c4b96["pollingState"];
299
- pollingError = __stxBundle_da87383c4b96["pollingError"];
300
- operations = __stxBundle_da87383c4b96["operations"];
301
- notice = __stxBundle_da87383c4b96["notice"];
302
- mode = __stxBundle_da87383c4b96["mode"];
303
- load = __stxBundle_da87383c4b96["load"];
304
- lastUpdatedAt = __stxBundle_da87383c4b96["lastUpdatedAt"];
305
- jobs = __stxBundle_da87383c4b96["jobs"];
306
- jobAction = __stxBundle_da87383c4b96["jobAction"];
307
- history = __stxBundle_da87383c4b96["history"];
308
- formBody = __stxBundle_da87383c4b96["formBody"];
309
- filteredJobs = __stxBundle_da87383c4b96["filteredJobs"];
310
- editJob = __stxBundle_da87383c4b96["editJob"];
311
- duration = __stxBundle_da87383c4b96["duration"];
312
- createJob = __stxBundle_da87383c4b96["createJob"];
313
- busy = __stxBundle_da87383c4b96["busy"];
314
- api = __stxBundle_da87383c4b96["api"];
315
281
  actionError = __stxBundle_da87383c4b96["actionError"];
316
- return { workers, when, tone, tab, statusFilter, showHistory, setPreset, selectedJob, search, restartWorker, refresh, reconcile, queuePreview, providerFilter, previewTimer, previewForm, preview, pollingState, pollingError, operations, notice, mode, load, lastUpdatedAt, jobs, jobAction, history, formBody, filteredJobs, editJob, duration, createJob, busy, api, actionError, __stxBundle_da87383c4b96 };
282
+ api = __stxBundle_da87383c4b96["api"];
283
+ busy = __stxBundle_da87383c4b96["busy"];
284
+ createJob = __stxBundle_da87383c4b96["createJob"];
285
+ duration = __stxBundle_da87383c4b96["duration"];
286
+ editJob = __stxBundle_da87383c4b96["editJob"];
287
+ filteredJobs = __stxBundle_da87383c4b96["filteredJobs"];
288
+ formBody = __stxBundle_da87383c4b96["formBody"];
289
+ history = __stxBundle_da87383c4b96["history"];
290
+ jobAction = __stxBundle_da87383c4b96["jobAction"];
291
+ jobs = __stxBundle_da87383c4b96["jobs"];
292
+ lastUpdatedAt = __stxBundle_da87383c4b96["lastUpdatedAt"];
293
+ load = __stxBundle_da87383c4b96["load"];
294
+ mode = __stxBundle_da87383c4b96["mode"];
295
+ notice = __stxBundle_da87383c4b96["notice"];
296
+ operations = __stxBundle_da87383c4b96["operations"];
297
+ pollingError = __stxBundle_da87383c4b96["pollingError"];
298
+ pollingState = __stxBundle_da87383c4b96["pollingState"];
299
+ preview = __stxBundle_da87383c4b96["preview"];
300
+ previewForm = __stxBundle_da87383c4b96["previewForm"];
301
+ previewTimer = __stxBundle_da87383c4b96["previewTimer"];
302
+ providerFilter = __stxBundle_da87383c4b96["providerFilter"];
303
+ queuePreview = __stxBundle_da87383c4b96["queuePreview"];
304
+ reconcile = __stxBundle_da87383c4b96["reconcile"];
305
+ refresh = __stxBundle_da87383c4b96["refresh"];
306
+ restartWorker = __stxBundle_da87383c4b96["restartWorker"];
307
+ search = __stxBundle_da87383c4b96["search"];
308
+ selectedJob = __stxBundle_da87383c4b96["selectedJob"];
309
+ setPreset = __stxBundle_da87383c4b96["setPreset"];
310
+ showHistory = __stxBundle_da87383c4b96["showHistory"];
311
+ statusFilter = __stxBundle_da87383c4b96["statusFilter"];
312
+ tab = __stxBundle_da87383c4b96["tab"];
313
+ tone = __stxBundle_da87383c4b96["tone"];
314
+ when = __stxBundle_da87383c4b96["when"];
315
+ workers = __stxBundle_da87383c4b96["workers"];
316
+ return { actionError, api, busy, createJob, duration, editJob, filteredJobs, formBody, history, jobAction, jobs, lastUpdatedAt, load, mode, notice, operations, pollingError, pollingState, preview, previewForm, previewTimer, providerFilter, queuePreview, reconcile, refresh, restartWorker, search, selectedJob, setPreset, showHistory, statusFilter, tab, tone, when, workers, __stxBundle_da87383c4b96 };
317
317
  }
318
- window.__stx_latestSetup=__stx_setup_1787597622097_8;
319
- if(window.stx)window.stx._latestSetup=__stx_setup_1787597622097_8;
320
- </script> <style data-stx-cloak>[x-cloak]{display:none !important}</style><link data-crosswind="generated" rel="stylesheet" href="/_stx/crosswind.906ee17c.css"></head><body data-stx="__stx_setup_1787597622097_8"><a data-stx-scope="stx_scope_nav_11" class="skip-link" href="#main-content">Skip to content</a><button class="nav-toggle-button" type="button" aria-label="Open navigation" aria-controls="primary-navigation" aria-expanded="false"><span></span><span></span><span></span></button><button class="nav-scrim" type="button" aria-label="Close navigation"></button><aside class="app-sidebar" id="primary-navigation" aria-label="Primary navigation"><a class="brand" href="/?env=production"><span class="dot"></span><span>ts-cloud</span></a><div class="sidebar-context"><span class="context-label">Project</span><strong>Project</strong></div><div class="environment-picker" aria-label="Environment"><span class="context-label">Environment</span><details><summary class="environment-current production"><span>PROD</span><strong>production</strong></summary></details></div><button class="command-trigger" type="button" aria-keyshortcuts="Meta+K Control+K"><span>Search resources</span><kbd>⌘ K</kbd></button><div class="nav-groups"><section class="nav-group"><h2>Overview</h2><a class="" href="/?env=production">Dashboard</a><a href="/server/activity?env=production">Activity</a></section><section class="nav-group"><h2>Applications</h2><a class="" href="/server/sites?env=production">Services</a><a class="" href="/server/deployments?env=production">Deployments</a><a class="" href="/server/logs?env=production">Logs</a><a class="" href="/integrations?env=production">Git integrations</a><a class="" href="/applications/new?env=production">Create application</a><a class="" href="/applications/compose?env=production">Compose applications</a></section><section class="nav-group"><h2>Operations</h2><a class="" href="/operations/queue?env=production">Deployment queue</a><a class="" href="/operations/previews?env=production">Preview environments</a><a class="" href="/operations/releases?env=production">Releases & promotion</a><a class="" href="/operations/regions?env=production">Regions & failover</a><a class="" href="/operations/maintenance?env=production">Maintenance & DR</a><a class="" href="/operations/workloads?env=production">Workloads</a><a class="" href="/operations/observability?env=production">Observability</a><a class="" href="/operations/alerts?env=production">Alerts & health</a><a class="" href="/operations/spend?env=production">Spend & budgets</a><a href="/server/metrics?env=production">Metrics</a><a href="/server/services?env=production">Runtime services</a><a class="active" href="/operations/jobs?env=production">Workers & schedules</a><a class="" href="/operations/configuration?env=production">Environment &amp; secrets</a><a class="" href="/data/backups?env=production">Backups &amp; recovery</a><a class="" href="/data/volumes?env=production">Persistent volumes</a><a href="/server/actions?env=production">Run operations</a></section><section class="nav-group"><h2>Infrastructure</h2><a class="" href="/infrastructure/topology?env=production">Infrastructure map</a><a class="" href="/data/services?env=production">Data services</a><a class="" href="/data/volumes?env=production">Persistent volumes</a><a href="/server/firewall?env=production">Network & firewall</a><a href="/server/ssh-keys?env=production">SSH keys</a><a class="" href="/server/fleet?env=production">Fleet inventory</a><a class="" href="/server/capacity?env=production">Capacity & placement</a><a href="/security?env=production">Security posture</a><a href="/server/terminal?env=production">Terminal</a></section><section class="nav-group"><h2>Organization</h2><a class="" href="/server/team?env=production">People & access</a><a class="" href="/account/automation?env=production">API & automation</a></section><section class="nav-group"><h2>Account</h2><a class="" href="/account/security?env=production">Sign-in & security</a></section></div><form method="post" action="/api/logout" class="signout"><button type="submit">Sign out</button></form></aside><dialog class="command-palette" aria-labelledby="command-title"><div class="command-search"><span aria-hidden="true">⌕</span><input type="search" placeholder="Search services, domains, deployments…" aria-label="Search resources" autocomplete="off"><button type="button" class="command-close" aria-label="Close search">Esc</button></div><h2 id="command-title" class="sr-only">Search resources and navigation</h2><div class="command-status" role="status">Start typing to search this project.</div><section class="saved-views" aria-labelledby="saved-views-title"><div class="saved-views-heading"><h3 id="saved-views-title">Saved views</h3><form class="save-view-form"><label class="sr-only" for="save-view-name">Saved view name</label><input id="save-view-name" maxlength="64" placeholder="Name this view" autocomplete="off"><button type="submit">Save current filters</button></form></div><div class="saved-view-list"></div></section><form class="tag-result-form"><label for="tag-result-name">Tag selected resource</label><input id="tag-result-name" maxlength="32" placeholder="customer-facing" pattern="[A-Za-z0-9][A-Za-z0-9 -]{0,31}" autocomplete="off"><input class="tag-color" type="color" value="#5a8be0" aria-label="Tag color"><button type="submit">Add tag</button></form><div class="command-results" role="listbox" aria-label="Search results"></div><footer><span>↑ ↓ navigate</span><span>Enter open</span><span>Esc close</span></footer></dialog><div class="context-bar" aria-label="Current scope"><div class="context-path"><div class="context-breadcrumb"><span>Project</span><i>/</i><strong>production</strong></div><div class="context-filters" aria-label="Active filters"></div></div><span class="scope-safety production">Production scope</span></div> <script data-stx-scoped data-stx-run="always">
318
+ window.__stx_latestSetup=__stx_setup_1787700042144_8;
319
+ if(window.stx)window.stx._latestSetup=__stx_setup_1787700042144_8;
320
+ </script> <style data-stx-cloak>[x-cloak]{display:none !important}</style><link data-crosswind="generated" rel="stylesheet" href="/_stx/crosswind.906ee17c.css"></head><body data-stx="__stx_setup_1787700042144_8"><a data-stx-scope="stx_scope_nav_11" class="skip-link" href="#main-content">Skip to content</a><button class="nav-toggle-button" type="button" aria-label="Open navigation" aria-controls="primary-navigation" aria-expanded="false"><span></span><span></span><span></span></button><button class="nav-scrim" type="button" aria-label="Close navigation"></button><aside class="app-sidebar" id="primary-navigation" aria-label="Primary navigation"><a class="brand" href="/?env=production"><span class="dot"></span><span>ts-cloud</span></a><div class="sidebar-context"><span class="context-label">Project</span><strong>Project</strong></div><div class="environment-picker" aria-label="Environment"><span class="context-label">Environment</span><details><summary class="environment-current production"><span>PROD</span><strong>production</strong></summary></details></div><button class="command-trigger" type="button" aria-keyshortcuts="Meta+K Control+K"><span>Search resources</span><kbd>⌘ K</kbd></button><div class="nav-groups"><section class="nav-group"><h2>Overview</h2><a class="" href="/?env=production">Dashboard</a><a href="/server/activity?env=production">Activity</a></section><section class="nav-group"><h2>Applications</h2><a class="" href="/server/sites?env=production">Services</a><a class="" href="/server/deployments?env=production">Deployments</a><a class="" href="/server/logs?env=production">Logs</a><a class="" href="/integrations?env=production">Git integrations</a><a class="" href="/applications/new?env=production">Create application</a><a class="" href="/applications/compose?env=production">Compose applications</a></section><section class="nav-group"><h2>Operations</h2><a class="" href="/operations/queue?env=production">Deployment queue</a><a class="" href="/operations/previews?env=production">Preview environments</a><a class="" href="/operations/releases?env=production">Releases & promotion</a><a class="" href="/operations/regions?env=production">Regions & failover</a><a class="" href="/operations/maintenance?env=production">Maintenance & DR</a><a class="" href="/operations/workloads?env=production">Workloads</a><a class="" href="/operations/observability?env=production">Observability</a><a class="" href="/operations/alerts?env=production">Alerts & health</a><a class="" href="/operations/spend?env=production">Spend & budgets</a><a href="/server/metrics?env=production">Metrics</a><a href="/server/services?env=production">Runtime services</a><a class="active" href="/operations/jobs?env=production">Workers & schedules</a><a class="" href="/operations/configuration?env=production">Environment &amp; secrets</a><a class="" href="/data/backups?env=production">Backups &amp; recovery</a><a class="" href="/data/volumes?env=production">Persistent volumes</a><a href="/server/actions?env=production">Run operations</a></section><section class="nav-group"><h2>Infrastructure</h2><a class="" href="/infrastructure/topology?env=production">Infrastructure map</a><a class="" href="/data/services?env=production">Data services</a><a class="" href="/data/volumes?env=production">Persistent volumes</a><a href="/server/firewall?env=production">Network & firewall</a><a href="/server/ssh-keys?env=production">SSH keys</a><a class="" href="/server/fleet?env=production">Fleet inventory</a><a class="" href="/server/capacity?env=production">Capacity & placement</a><a href="/security?env=production">Security posture</a><a href="/server/terminal?env=production">Terminal</a></section><section class="nav-group"><h2>Organization</h2><a class="" href="/server/team?env=production">People & access</a><a class="" href="/account/automation?env=production">API & automation</a></section><section class="nav-group"><h2>Account</h2><a class="" href="/account/security?env=production">Sign-in & security</a></section></div><form method="post" action="/api/logout" class="signout"><button type="submit">Sign out</button></form></aside><dialog class="command-palette" aria-labelledby="command-title"><div class="command-search"><span aria-hidden="true">⌕</span><input type="search" placeholder="Search services, domains, deployments…" aria-label="Search resources" autocomplete="off"><button type="button" class="command-close" aria-label="Close search">Esc</button></div><h2 id="command-title" class="sr-only">Search resources and navigation</h2><div class="command-status" role="status">Start typing to search this project.</div><section class="saved-views" aria-labelledby="saved-views-title"><div class="saved-views-heading"><h3 id="saved-views-title">Saved views</h3><form class="save-view-form"><label class="sr-only" for="save-view-name">Saved view name</label><input id="save-view-name" maxlength="64" placeholder="Name this view" autocomplete="off"><button type="submit">Save current filters</button></form></div><div class="saved-view-list"></div></section><form class="tag-result-form"><label for="tag-result-name">Tag selected resource</label><input id="tag-result-name" maxlength="32" placeholder="customer-facing" pattern="[A-Za-z0-9][A-Za-z0-9 -]{0,31}" autocomplete="off"><input class="tag-color" type="color" value="#5a8be0" aria-label="Tag color"><button type="submit">Add tag</button></form><div class="command-results" role="listbox" aria-label="Search results"></div><footer><span>↑ ↓ navigate</span><span>Enter open</span><span>Esc close</span></footer></dialog><div class="context-bar" aria-label="Current scope"><div class="context-path"><div class="context-breadcrumb"><span>Project</span><i>/</i><strong>production</strong></div><div class="context-filters" aria-label="Active filters"></div></div><span class="scope-safety production">Production scope</span></div> <script data-stx-scoped data-stx-run="always">
321
321
  (function() {
322
322
  var { batch, computed, configureFetch, defineEmits, defineExpose, definePageMeta, defineProps, defineSlots, defineStore, derived, effect, goBack, goForward, inject, invalidateRoute, isDerived, isSignal, navigate, nextTick, onBeforeMount, onBeforeUnmount, onDestroy, onMount, onMounted, onUnmounted, peek, provide, reactive, ref, refresh, registerStoresClient, setRouteParams, state, untrack, useAsync, useClickOutside, useColorMode, useCookie, useCounter, useDark, useDebounce, useDebouncedValue, useEventListener, useFetch, useFocus, useHead, useId, useInterval, useLocalStorage, useMediaQuery, useMutation, useOptimistic, usePreferredContrast, usePreferredDark, usePreferredLight, usePreferredReducedMotion, useQuery, useReactiveProp, useRef, useRoute, useRouteParam, useRouteParams, useScrollLock, useSearchParams, useSeoMeta, useSessionStorage, useSlots, useStore, useThrottle, useTimeout, useToggle, useWebSocket, watch, watchEffect, watchMultiple, withDefaults } = window.stx;
323
323
  var __destroyHooks = [];