@stacksjs/ts-cloud 0.11.7 → 0.12.1

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 (236) hide show
  1. package/dist/aws/index.js +1 -1
  2. package/dist/bin/chunk-0rtn6q5x.js +3 -0
  3. package/dist/bin/chunk-258ehp9s.js +1 -0
  4. package/dist/bin/chunk-2yctv06c.js +1 -0
  5. package/dist/bin/chunk-3276rveh.js +37 -0
  6. package/dist/bin/chunk-3m665jwp.js +70 -0
  7. package/dist/bin/chunk-3s2p9vxj.js +1 -0
  8. package/dist/bin/chunk-4esma5m9.js +1 -0
  9. package/dist/bin/chunk-4n0j3n3b.js +2 -0
  10. package/dist/bin/chunk-54bqchag.js +92 -0
  11. package/dist/bin/{chunk-4q6tad44.js → chunk-5bhx3bsa.js} +121 -121
  12. package/dist/bin/chunk-5zagqd20.js +1 -0
  13. package/dist/bin/chunk-7hw2js5h.js +512 -0
  14. package/dist/bin/chunk-8h1qr6x4.js +50 -0
  15. package/dist/bin/{chunk-w32xv8n4.js → chunk-9vdc7adf.js} +6 -6
  16. package/dist/bin/chunk-a1dd6sby.js +1 -0
  17. package/dist/bin/chunk-a4dw35gs.js +1 -0
  18. package/dist/bin/chunk-a9d55ker.js +1 -0
  19. package/dist/bin/chunk-awa1qade.js +9 -0
  20. package/dist/bin/chunk-b6by94pk.js +2 -0
  21. package/dist/bin/chunk-c8sypnbe.js +2 -0
  22. package/dist/bin/chunk-cx4e3d4w.js +1 -0
  23. package/dist/bin/chunk-d5a3vheh.js +2 -0
  24. package/dist/bin/chunk-e1fym2bd.js +1 -0
  25. package/dist/bin/chunk-ej4h0q2y.js +1 -0
  26. package/dist/bin/chunk-ett305ym.js +4 -0
  27. package/dist/bin/chunk-f11xf3n6.js +2 -0
  28. package/dist/bin/chunk-fq7ktvgy.js +3 -0
  29. package/dist/bin/chunk-fyq4th2m.js +1 -0
  30. package/dist/bin/chunk-g67qr8yf.js +1 -0
  31. package/dist/bin/chunk-gc82cx4h.js +1 -0
  32. package/dist/bin/chunk-hchtvpr9.js +1 -0
  33. package/dist/bin/chunk-hpe4jjce.js +1 -0
  34. package/dist/bin/chunk-k5vprsef.js +6 -0
  35. package/dist/bin/chunk-m22krd4z.js +3 -0
  36. package/dist/bin/chunk-mkppcwz8.js +1 -0
  37. package/dist/bin/chunk-mpjg0kc7.js +2 -0
  38. package/dist/bin/chunk-mrm4m4dk.js +2 -0
  39. package/dist/bin/chunk-nff46rxd.js +1 -0
  40. package/dist/bin/chunk-np1z3bgt.js +1 -0
  41. package/dist/bin/chunk-nskxkk6r.js +1 -0
  42. package/dist/bin/chunk-pez932b1.js +111 -0
  43. package/dist/bin/chunk-qsdf5kzk.js +2 -0
  44. package/dist/bin/chunk-r61qmhv1.js +2 -0
  45. package/dist/bin/chunk-r6gdcz5c.js +1 -0
  46. package/dist/bin/chunk-satwnr42.js +2 -0
  47. package/dist/bin/{chunk-dz1ec589.js → chunk-scqmd4qv.js} +30 -30
  48. package/dist/bin/chunk-smbycpt5.js +44 -0
  49. package/dist/bin/chunk-sn7e0sn7.js +2 -0
  50. package/dist/bin/chunk-ss574pka.js +1 -0
  51. package/dist/bin/chunk-tj0xb2d8.js +585 -0
  52. package/dist/bin/chunk-v3rzf9d0.js +141 -0
  53. package/dist/bin/chunk-wnpma6t3.js +34 -0
  54. package/dist/bin/chunk-xan0e052.js +5 -0
  55. package/dist/bin/chunk-xbk2y43r.js +60 -0
  56. package/dist/bin/chunk-xjp3v95e.js +6 -0
  57. package/dist/bin/chunk-xyt490vp.js +6 -0
  58. package/dist/bin/chunk-yn9r02gy.js +1 -0
  59. package/dist/bin/chunk-zhkhn9cc.js +1 -0
  60. package/dist/bin/cli.js +445 -430
  61. package/dist/bin/dashboard-server.js +1 -1
  62. package/dist/chunk-0zf72ngj.js +1 -0
  63. package/dist/chunk-2hpjte1d.js +704 -0
  64. package/dist/chunk-4m6gwhwr.js +5 -0
  65. package/dist/chunk-5m29dhke.js +34 -0
  66. package/dist/chunk-6fzeemcs.js +114 -0
  67. package/dist/{chunk-zz52xje8.js → chunk-6xcbfs2r.js} +111 -111
  68. package/dist/chunk-bpnhqb70.js +6 -0
  69. package/dist/chunk-ead1nkbr.js +60 -0
  70. package/dist/chunk-fea461tj.js +141 -0
  71. package/dist/chunk-fvjczc73.js +1 -0
  72. package/dist/chunk-gearw6rk.js +4 -0
  73. package/dist/chunk-j60hesb3.js +2 -0
  74. package/dist/chunk-pmgtmt3d.js +1 -0
  75. package/dist/chunk-prf2pkvq.js +5 -0
  76. package/dist/chunk-q0wffgw5.js +37 -0
  77. package/dist/chunk-qcemnt35.js +50 -0
  78. package/dist/chunk-qvbwsaay.js +1 -0
  79. package/dist/chunk-r2pbqcnz.js +2 -0
  80. package/dist/chunk-r6110zv2.js +1 -0
  81. package/dist/chunk-rr1yaj55.js +2 -0
  82. package/dist/chunk-wcrj06cg.js +44 -0
  83. package/dist/chunk-wte9mh18.js +92 -0
  84. package/dist/{chunk-aw0cgv5w.js → chunk-y1dh3znq.js} +52 -52
  85. package/dist/chunk-y6e86wjs.js +445 -0
  86. package/dist/chunk-y8b7ht4v.js +1 -0
  87. package/dist/chunk-yf487g6e.js +2 -0
  88. package/dist/chunk-zmmc9j5f.js +2 -0
  89. package/dist/deploy/index.js +1 -1
  90. package/dist/dns/index.js +1 -1
  91. package/dist/drivers/index.js +1 -1
  92. package/dist/index.d.ts +1 -0
  93. package/dist/index.js +91 -91
  94. package/dist/operations/drained-sites.d.ts +56 -0
  95. package/dist/operations/drained-sites.test.d.ts +1 -0
  96. package/dist/pages/cloudflare-pages.d.ts +240 -0
  97. package/dist/pages/cloudflare-pages.test.d.ts +1 -0
  98. package/dist/pages/index.d.ts +2 -0
  99. package/dist/protection/index.js +1 -1
  100. package/dist/push/index.js +1 -1
  101. package/dist/spend/index.js +1 -1
  102. package/dist/ui/404.html +1 -1
  103. package/dist/ui/accept-invitation.html +1 -1
  104. package/dist/ui/access-denied.html +1 -1
  105. package/dist/ui/account/automation.html +6 -6
  106. package/dist/ui/account/security.html +2 -2
  107. package/dist/ui/applications/compose.html +6 -6
  108. package/dist/ui/applications/new.html +2 -2
  109. package/dist/ui/data/backups.html +80 -80
  110. package/dist/ui/data/services.html +78 -78
  111. package/dist/ui/data/volumes.html +50 -50
  112. package/dist/ui/index.html +50 -50
  113. package/dist/ui/infrastructure/topology.html +118 -118
  114. package/dist/ui/integrations.html +2 -2
  115. package/dist/ui/operations/alerts.html +48 -48
  116. package/dist/ui/operations/configuration.html +6 -6
  117. package/dist/ui/operations/jobs.html +75 -75
  118. package/dist/ui/operations/maintenance.html +6 -6
  119. package/dist/ui/operations/observability.html +82 -82
  120. package/dist/ui/operations/previews.html +6 -6
  121. package/dist/ui/operations/queue.html +6 -6
  122. package/dist/ui/operations/regions.html +6 -6
  123. package/dist/ui/operations/releases.html +6 -6
  124. package/dist/ui/operations/spend.html +54 -54
  125. package/dist/ui/operations/workloads.html +104 -104
  126. package/dist/ui/security.html +2 -2
  127. package/dist/ui/server/actions.html +56 -56
  128. package/dist/ui/server/activity.html +2 -2
  129. package/dist/ui/server/capacity.html +6 -6
  130. package/dist/ui/server/database.html +105 -105
  131. package/dist/ui/server/deployments.html +50 -50
  132. package/dist/ui/server/diagnostics.html +2 -2
  133. package/dist/ui/server/firewall.html +76 -76
  134. package/dist/ui/server/fleet.html +34 -34
  135. package/dist/ui/server/logs.html +24 -24
  136. package/dist/ui/server/metrics.html +112 -112
  137. package/dist/ui/server/security.html +1 -1
  138. package/dist/ui/server/services.html +26 -26
  139. package/dist/ui/server/sites.html +120 -120
  140. package/dist/ui/server/ssh-keys.html +52 -52
  141. package/dist/ui/server/team.html +144 -144
  142. package/dist/ui/server/terminal.html +15 -15
  143. package/dist/ui/serverless/alarms.html +52 -52
  144. package/dist/ui/serverless/assets.html +27 -27
  145. package/dist/ui/serverless/cost.html +2 -2
  146. package/dist/ui/serverless/data.html +35 -35
  147. package/dist/ui/serverless/deployments.html +27 -27
  148. package/dist/ui/serverless/firewall.html +2 -2
  149. package/dist/ui/serverless/functions.html +40 -40
  150. package/dist/ui/serverless/logs.html +24 -24
  151. package/dist/ui/serverless/metrics.html +2 -2
  152. package/dist/ui/serverless/queues.html +48 -48
  153. package/dist/ui/serverless/secrets.html +52 -52
  154. package/dist/ui/serverless/traces.html +6 -6
  155. package/dist/ui/serverless.html +53 -53
  156. package/dist/ui-src/src/charts.ts +8721 -13558
  157. package/dist/ui-src/src/topology.ts +2 -2
  158. package/package.json +4 -3
  159. package/dist/bin/chunk-0zwknfwp.js +0 -1
  160. package/dist/bin/chunk-3aph4c1w.js +0 -2
  161. package/dist/bin/chunk-4xhj37nj.js +0 -37
  162. package/dist/bin/chunk-5nkqza92.js +0 -1
  163. package/dist/bin/chunk-5nsqz5n3.js +0 -585
  164. package/dist/bin/chunk-64vczwwt.js +0 -1
  165. package/dist/bin/chunk-6tfwm33r.js +0 -6
  166. package/dist/bin/chunk-7g2ahkse.js +0 -1
  167. package/dist/bin/chunk-7zhgmp1s.js +0 -3
  168. package/dist/bin/chunk-82mj52xr.js +0 -141
  169. package/dist/bin/chunk-8khgprf6.js +0 -44
  170. package/dist/bin/chunk-9a88fp00.js +0 -2
  171. package/dist/bin/chunk-a7w13qfm.js +0 -2
  172. package/dist/bin/chunk-b4wt9jcg.js +0 -60
  173. package/dist/bin/chunk-btsyjhk7.js +0 -92
  174. package/dist/bin/chunk-c0bdafbx.js +0 -2
  175. package/dist/bin/chunk-cbsys5v8.js +0 -111
  176. package/dist/bin/chunk-cd0ps58j.js +0 -1
  177. package/dist/bin/chunk-d7ke90zt.js +0 -2
  178. package/dist/bin/chunk-djg4zyqk.js +0 -1
  179. package/dist/bin/chunk-dkaz333b.js +0 -1
  180. package/dist/bin/chunk-dkf4qsp2.js +0 -1
  181. package/dist/bin/chunk-e2bybahr.js +0 -3
  182. package/dist/bin/chunk-e5ab5twy.js +0 -50
  183. package/dist/bin/chunk-edvvx3hg.js +0 -1
  184. package/dist/bin/chunk-ehc63fvs.js +0 -2
  185. package/dist/bin/chunk-f06c5np9.js +0 -1
  186. package/dist/bin/chunk-g0fm1xcs.js +0 -1
  187. package/dist/bin/chunk-gq8794k6.js +0 -1
  188. package/dist/bin/chunk-hq9x489e.js +0 -70
  189. package/dist/bin/chunk-j447p8t4.js +0 -512
  190. package/dist/bin/chunk-ja1vjdn1.js +0 -6
  191. package/dist/bin/chunk-k3120rx6.js +0 -1
  192. package/dist/bin/chunk-kg61p5hw.js +0 -3
  193. package/dist/bin/chunk-mcr0r4at.js +0 -2
  194. package/dist/bin/chunk-mfrf9q4b.js +0 -2
  195. package/dist/bin/chunk-my3ewh3a.js +0 -34
  196. package/dist/bin/chunk-nw3d4k52.js +0 -1
  197. package/dist/bin/chunk-p70bc9yr.js +0 -1
  198. package/dist/bin/chunk-r6b3pq31.js +0 -4
  199. package/dist/bin/chunk-s4yzes15.js +0 -2
  200. package/dist/bin/chunk-sj5csg49.js +0 -2
  201. package/dist/bin/chunk-tvz9c388.js +0 -1
  202. package/dist/bin/chunk-wkx799z2.js +0 -1
  203. package/dist/bin/chunk-x6f61g36.js +0 -9
  204. package/dist/bin/chunk-xhwqpgwq.js +0 -2
  205. package/dist/bin/chunk-xk08030d.js +0 -6
  206. package/dist/bin/chunk-y1h63vpm.js +0 -1
  207. package/dist/bin/chunk-yw6f160x.js +0 -1
  208. package/dist/bin/chunk-zdt2rjk6.js +0 -1
  209. package/dist/bin/chunk-zh2d4704.js +0 -1
  210. package/dist/bin/chunk-znnawt0k.js +0 -1
  211. package/dist/bin/chunk-zpe64t4r.js +0 -1
  212. package/dist/bin/chunk-zsf6pccz.js +0 -1
  213. package/dist/chunk-1qdne0bf.js +0 -1
  214. package/dist/chunk-5vt93kxx.js +0 -1
  215. package/dist/chunk-73ztr55z.js +0 -2
  216. package/dist/chunk-95e6aeqz.js +0 -1
  217. package/dist/chunk-aj025v2s.js +0 -4
  218. package/dist/chunk-aw0spg20.js +0 -445
  219. package/dist/chunk-by2bwzk6.js +0 -141
  220. package/dist/chunk-dr4pj8hp.js +0 -5
  221. package/dist/chunk-hn40z11p.js +0 -37
  222. package/dist/chunk-kasdm9tx.js +0 -34
  223. package/dist/chunk-mz0dk78z.js +0 -6
  224. package/dist/chunk-nk7sav4r.js +0 -92
  225. package/dist/chunk-p10xt3jb.js +0 -1
  226. package/dist/chunk-q0rc1ax9.js +0 -114
  227. package/dist/chunk-q9q6cmt0.js +0 -1
  228. package/dist/chunk-rd38qdnf.js +0 -1
  229. package/dist/chunk-tz9myq9a.js +0 -2
  230. package/dist/chunk-wavjkdb8.js +0 -2
  231. package/dist/chunk-x3hay61c.js +0 -44
  232. package/dist/chunk-xcj8zfmg.js +0 -2
  233. package/dist/chunk-y4xkj2f1.js +0 -50
  234. package/dist/chunk-ywjkyg8p.js +0 -704
  235. package/dist/chunk-z2qqwy7e.js +0 -2
  236. package/dist/chunk-zam6ecam.js +0 -60
@@ -1,5 +1,5 @@
1
- <!DOCTYPE html><html lang="en" data-theme="dark"><head><meta charset="UTF-8"><meta name="stx-build" content="mt689snetu3vh5"><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"> <script data-stx-runtime src="/_stx/runtime.c696d17a.js"></script> <script data-stx-composables src="/_stx/chunk.5ddb5087.js"></script> <meta name="viewport" content="width=device-width, initial-scale=1.0"><title>ts-cloud - Infrastructure map</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-scoped>
2
- function __stx_setup_1787514988976_7() {
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"> <script data-stx-runtime src="/_stx/runtime.c696d17a.js"></script> <script data-stx-composables src="/_stx/chunk.5ddb5087.js"></script> <meta name="viewport" content="width=device-width, initial-scale=1.0"><title>ts-cloud - Infrastructure map</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-scoped>
2
+ function __stx_setup_1787597620484_3() {
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
5
  var initialTopology = {"mode":"server","project":"sample-project","environment":"production","provider":"hetzner","region":"fsn1","generatedAt":"","layers":[{"index":0,"id":"clients","label":"Clients"},{"index":1,"id":"dns","label":"DNS & TLS"},{"index":2,"id":"edge","label":"Edge"},{"index":3,"id":"routing","label":"Routing"},{"index":4,"id":"apps","label":"Applications"},{"index":5,"id":"runtime","label":"Background runtime"},{"index":6,"id":"data","label":"Data services"},{"index":7,"id":"durability","label":"Durability"}],"groups":[{"id":"box","label":"sample-production-app","sub":"hetzner · fsn1"}],"nodes":[{"id":"internet","label":"Internet","kind":"internet","layer":0,"status":"ok","sub":"Public traffic","facts":[],"external":true},{"id":"dns","label":"example.com","kind":"dns","layer":1,"status":"ok","sub":"DNS & certificates","facts":[],"external":true},{"id":"firewall","label":"Host firewall","kind":"firewall","layer":2,"status":"ok","sub":"Inbound filtering","facts":[],"group":"box"},{"id":"proxy","label":"rpx-gateway","kind":"proxy","layer":3,"status":"ok","sub":"TLS termination & routing","facts":[],"group":"box"},{"id":"site:main","label":"main","kind":"site","layer":4,"status":"ok","sub":"bun","facts":[],"group":"box"},{"id":"site:docs","label":"docs","kind":"site","layer":4,"status":"ok","sub":"static/bun","facts":[],"group":"box"},{"id":"worker:default","label":"default","kind":"worker","layer":5,"status":"ok","sub":"2 processes","facts":[],"group":"box"},{"id":"data:redis","label":"Redis","kind":"cache","layer":6,"status":"ok","sub":"redis","facts":[],"group":"box"},{"id":"data:mysql","label":"MySQL","kind":"database","layer":6,"status":"ok","sub":"mysql","facts":[],"group":"box"},{"id":"backup","label":"Backups","kind":"backup","layer":7,"status":"ok","sub":"off-box","facts":[]}],"links":[{"source":"internet","target":"dns","flow":"request","label":"https"},{"source":"dns","target":"firewall","flow":"request","label":"443/80"},{"source":"firewall","target":"proxy","flow":"request"},{"source":"proxy","target":"site:main","flow":"request"},{"source":"proxy","target":"site:docs","flow":"request"},{"source":"site:main","target":"worker:default","flow":"async","label":"queue"},{"source":"site:main","target":"data:redis","flow":"data","label":"localhost"},{"source":"site:main","target":"data:mysql","flow":"data","label":"localhost"},{"source":"worker:default","target":"data:mysql","flow":"data","label":"localhost"},{"source":"data:mysql","target":"backup","flow":"backup","label":"snapshot"}],"notes":[]};
@@ -8,62 +8,62 @@ function __stx_setup_1787514988976_7() {
8
8
  var stageWidth = 1600;
9
9
  var stageHeight = 1200;
10
10
 
11
- var STAGE_H = undefined;
12
- var STAGE_W = undefined;
13
- var animate = undefined;
14
- var atPointer = undefined;
15
- var builtAtLabel = undefined;
16
- var canvasScale = undefined;
17
- var canvasTransform = undefined;
18
- var clear = undefined;
19
- var counts = undefined;
20
- var dim = undefined;
21
- var dragging = undefined;
22
- var fit = undefined;
23
- var fitScale = undefined;
24
- var flows = undefined;
25
- var focus = undefined;
26
- var geo = undefined;
27
- var groups = undefined;
28
- var hoveredId = undefined;
29
- var isSample = undefined;
30
- var isSnapshot = undefined;
31
- var labelledLinks = undefined;
32
- var lanes = undefined;
33
- var lastUpdatedAt = undefined;
34
- var linkClasses = undefined;
35
- var linkOff = undefined;
36
- var linkOn = undefined;
37
- var links = undefined;
38
- var load = undefined;
39
- var manageHref = undefined;
40
- var model = undefined;
41
- var nodeClasses = undefined;
42
- var nodes = undefined;
43
- var notes = undefined;
44
- var onDown = undefined;
45
- var onMove = undefined;
46
- var onUp = undefined;
47
- var onWheel = undefined;
48
- var panX = undefined;
49
- var panY = undefined;
50
- var pollingError = undefined;
51
- var pollingState = undefined;
52
- var query = undefined;
53
- var refresh = undefined;
54
- var restatus = undefined;
55
- var select = undefined;
56
- var selected = undefined;
57
- var selectedFacts = undefined;
58
- var selectedId = undefined;
59
- var selectedLinks = undefined;
60
- var shapeOf = undefined;
61
- var stageCrop = undefined;
62
- var toggleFlow = undefined;
63
- var visible = undefined;
64
- var zoom = undefined;
65
- var zoomBy = undefined;
66
11
  var zoomTo = undefined;
12
+ var zoomBy = undefined;
13
+ var zoom = undefined;
14
+ var visible = undefined;
15
+ var toggleFlow = undefined;
16
+ var stageCrop = undefined;
17
+ var shapeOf = undefined;
18
+ var selectedLinks = undefined;
19
+ var selectedId = undefined;
20
+ var selectedFacts = undefined;
21
+ var selected = undefined;
22
+ var select = undefined;
23
+ var restatus = undefined;
24
+ var refresh = undefined;
25
+ var query = undefined;
26
+ var pollingState = undefined;
27
+ var pollingError = undefined;
28
+ var panY = undefined;
29
+ var panX = undefined;
30
+ var onWheel = undefined;
31
+ var onUp = undefined;
32
+ var onMove = undefined;
33
+ var onDown = undefined;
34
+ var notes = undefined;
35
+ var nodes = undefined;
36
+ var nodeClasses = undefined;
37
+ var model = undefined;
38
+ var manageHref = undefined;
39
+ var load = undefined;
40
+ var links = undefined;
41
+ var linkOn = undefined;
42
+ var linkOff = undefined;
43
+ var linkClasses = undefined;
44
+ var lastUpdatedAt = undefined;
45
+ var lanes = undefined;
46
+ var labelledLinks = undefined;
47
+ var isSnapshot = undefined;
48
+ var isSample = undefined;
49
+ var hoveredId = undefined;
50
+ var groups = undefined;
51
+ var geo = undefined;
52
+ var focus = undefined;
53
+ var flows = undefined;
54
+ var fitScale = undefined;
55
+ var fit = undefined;
56
+ var dragging = undefined;
57
+ var dim = undefined;
58
+ var counts = undefined;
59
+ var clear = undefined;
60
+ var canvasTransform = undefined;
61
+ var canvasScale = undefined;
62
+ var builtAtLabel = undefined;
63
+ var atPointer = undefined;
64
+ var animate = undefined;
65
+ var STAGE_W = undefined;
66
+ var STAGE_H = undefined;
67
67
  var __stxBundle_aadcc1d88d59 = (function() {
68
68
 
69
69
  class DashboardRequestError extends Error {
@@ -798,69 +798,69 @@ function clear() {
798
798
  hoveredId.set("");
799
799
  query.set("");
800
800
  }
801
- return { "STAGE_H": STAGE_H, "STAGE_W": STAGE_W, "animate": animate, "atPointer": atPointer, "builtAtLabel": builtAtLabel, "canvasScale": canvasScale, "canvasTransform": canvasTransform, "clear": clear, "counts": counts, "dim": dim, "dragging": dragging, "fit": fit, "fitScale": fitScale, "flows": flows, "focus": focus, "geo": geo, "groups": groups, "hoveredId": hoveredId, "isSample": isSample, "isSnapshot": isSnapshot, "labelledLinks": labelledLinks, "lanes": lanes, "lastUpdatedAt": lastUpdatedAt, "linkClasses": linkClasses, "linkOff": linkOff, "linkOn": linkOn, "links": links, "load": load, "manageHref": manageHref, "model": model, "nodeClasses": nodeClasses, "nodes": nodes, "notes": notes, "onDown": onDown, "onMove": onMove, "onUp": onUp, "onWheel": onWheel, "panX": panX, "panY": panY, "pollingError": pollingError, "pollingState": pollingState, "query": query, "refresh": refresh, "restatus": restatus, "select": select, "selected": selected, "selectedFacts": selectedFacts, "selectedId": selectedId, "selectedLinks": selectedLinks, "shapeOf": shapeOf, "stageCrop": stageCrop, "toggleFlow": toggleFlow, "visible": visible, "zoom": zoom, "zoomBy": zoomBy, "zoomTo": zoomTo };
801
+ return { "zoomTo": zoomTo, "zoomBy": zoomBy, "zoom": zoom, "visible": visible, "toggleFlow": toggleFlow, "stageCrop": stageCrop, "shapeOf": shapeOf, "selectedLinks": selectedLinks, "selectedId": selectedId, "selectedFacts": selectedFacts, "selected": selected, "select": select, "restatus": restatus, "refresh": refresh, "query": query, "pollingState": pollingState, "pollingError": pollingError, "panY": panY, "panX": panX, "onWheel": onWheel, "onUp": onUp, "onMove": onMove, "onDown": onDown, "notes": notes, "nodes": nodes, "nodeClasses": nodeClasses, "model": model, "manageHref": manageHref, "load": load, "links": links, "linkOn": linkOn, "linkOff": linkOff, "linkClasses": linkClasses, "lastUpdatedAt": lastUpdatedAt, "lanes": lanes, "labelledLinks": labelledLinks, "isSnapshot": isSnapshot, "isSample": isSample, "hoveredId": hoveredId, "groups": groups, "geo": geo, "focus": focus, "flows": flows, "fitScale": fitScale, "fit": fit, "dragging": dragging, "dim": dim, "counts": counts, "clear": clear, "canvasTransform": canvasTransform, "canvasScale": canvasScale, "builtAtLabel": builtAtLabel, "atPointer": atPointer, "animate": animate, "STAGE_W": STAGE_W, "STAGE_H": STAGE_H };
802
802
  })();
803
- STAGE_H = __stxBundle_aadcc1d88d59["STAGE_H"];
804
- STAGE_W = __stxBundle_aadcc1d88d59["STAGE_W"];
805
- animate = __stxBundle_aadcc1d88d59["animate"];
806
- atPointer = __stxBundle_aadcc1d88d59["atPointer"];
807
- builtAtLabel = __stxBundle_aadcc1d88d59["builtAtLabel"];
808
- canvasScale = __stxBundle_aadcc1d88d59["canvasScale"];
809
- canvasTransform = __stxBundle_aadcc1d88d59["canvasTransform"];
810
- clear = __stxBundle_aadcc1d88d59["clear"];
811
- counts = __stxBundle_aadcc1d88d59["counts"];
812
- dim = __stxBundle_aadcc1d88d59["dim"];
813
- dragging = __stxBundle_aadcc1d88d59["dragging"];
814
- fit = __stxBundle_aadcc1d88d59["fit"];
815
- fitScale = __stxBundle_aadcc1d88d59["fitScale"];
816
- flows = __stxBundle_aadcc1d88d59["flows"];
817
- focus = __stxBundle_aadcc1d88d59["focus"];
818
- geo = __stxBundle_aadcc1d88d59["geo"];
819
- groups = __stxBundle_aadcc1d88d59["groups"];
820
- hoveredId = __stxBundle_aadcc1d88d59["hoveredId"];
821
- isSample = __stxBundle_aadcc1d88d59["isSample"];
822
- isSnapshot = __stxBundle_aadcc1d88d59["isSnapshot"];
823
- labelledLinks = __stxBundle_aadcc1d88d59["labelledLinks"];
824
- lanes = __stxBundle_aadcc1d88d59["lanes"];
825
- lastUpdatedAt = __stxBundle_aadcc1d88d59["lastUpdatedAt"];
826
- linkClasses = __stxBundle_aadcc1d88d59["linkClasses"];
827
- linkOff = __stxBundle_aadcc1d88d59["linkOff"];
828
- linkOn = __stxBundle_aadcc1d88d59["linkOn"];
829
- links = __stxBundle_aadcc1d88d59["links"];
830
- load = __stxBundle_aadcc1d88d59["load"];
831
- manageHref = __stxBundle_aadcc1d88d59["manageHref"];
832
- model = __stxBundle_aadcc1d88d59["model"];
833
- nodeClasses = __stxBundle_aadcc1d88d59["nodeClasses"];
834
- nodes = __stxBundle_aadcc1d88d59["nodes"];
835
- notes = __stxBundle_aadcc1d88d59["notes"];
836
- onDown = __stxBundle_aadcc1d88d59["onDown"];
837
- onMove = __stxBundle_aadcc1d88d59["onMove"];
838
- onUp = __stxBundle_aadcc1d88d59["onUp"];
839
- onWheel = __stxBundle_aadcc1d88d59["onWheel"];
840
- panX = __stxBundle_aadcc1d88d59["panX"];
841
- panY = __stxBundle_aadcc1d88d59["panY"];
842
- pollingError = __stxBundle_aadcc1d88d59["pollingError"];
843
- pollingState = __stxBundle_aadcc1d88d59["pollingState"];
844
- query = __stxBundle_aadcc1d88d59["query"];
845
- refresh = __stxBundle_aadcc1d88d59["refresh"];
846
- restatus = __stxBundle_aadcc1d88d59["restatus"];
847
- select = __stxBundle_aadcc1d88d59["select"];
848
- selected = __stxBundle_aadcc1d88d59["selected"];
849
- selectedFacts = __stxBundle_aadcc1d88d59["selectedFacts"];
850
- selectedId = __stxBundle_aadcc1d88d59["selectedId"];
851
- selectedLinks = __stxBundle_aadcc1d88d59["selectedLinks"];
852
- shapeOf = __stxBundle_aadcc1d88d59["shapeOf"];
853
- stageCrop = __stxBundle_aadcc1d88d59["stageCrop"];
854
- toggleFlow = __stxBundle_aadcc1d88d59["toggleFlow"];
855
- visible = __stxBundle_aadcc1d88d59["visible"];
856
- zoom = __stxBundle_aadcc1d88d59["zoom"];
857
- zoomBy = __stxBundle_aadcc1d88d59["zoomBy"];
858
803
  zoomTo = __stxBundle_aadcc1d88d59["zoomTo"];
859
- return { STAGE_H, STAGE_W, animate, atPointer, builtAtLabel, canvasScale, canvasTransform, clear, counts, dim, dragging, fit, fitScale, flows, focus, geo, groups, hoveredId, isSample, isSnapshot, labelledLinks, lanes, lastUpdatedAt, linkClasses, linkOff, linkOn, links, load, manageHref, model, nodeClasses, nodes, notes, onDown, onMove, onUp, onWheel, panX, panY, pollingError, pollingState, query, refresh, restatus, select, selected, selectedFacts, selectedId, selectedLinks, shapeOf, stageCrop, toggleFlow, visible, zoom, zoomBy, zoomTo, __stxBundle_aadcc1d88d59 };
804
+ zoomBy = __stxBundle_aadcc1d88d59["zoomBy"];
805
+ zoom = __stxBundle_aadcc1d88d59["zoom"];
806
+ visible = __stxBundle_aadcc1d88d59["visible"];
807
+ toggleFlow = __stxBundle_aadcc1d88d59["toggleFlow"];
808
+ stageCrop = __stxBundle_aadcc1d88d59["stageCrop"];
809
+ shapeOf = __stxBundle_aadcc1d88d59["shapeOf"];
810
+ selectedLinks = __stxBundle_aadcc1d88d59["selectedLinks"];
811
+ selectedId = __stxBundle_aadcc1d88d59["selectedId"];
812
+ selectedFacts = __stxBundle_aadcc1d88d59["selectedFacts"];
813
+ selected = __stxBundle_aadcc1d88d59["selected"];
814
+ select = __stxBundle_aadcc1d88d59["select"];
815
+ restatus = __stxBundle_aadcc1d88d59["restatus"];
816
+ refresh = __stxBundle_aadcc1d88d59["refresh"];
817
+ query = __stxBundle_aadcc1d88d59["query"];
818
+ pollingState = __stxBundle_aadcc1d88d59["pollingState"];
819
+ pollingError = __stxBundle_aadcc1d88d59["pollingError"];
820
+ panY = __stxBundle_aadcc1d88d59["panY"];
821
+ panX = __stxBundle_aadcc1d88d59["panX"];
822
+ onWheel = __stxBundle_aadcc1d88d59["onWheel"];
823
+ onUp = __stxBundle_aadcc1d88d59["onUp"];
824
+ onMove = __stxBundle_aadcc1d88d59["onMove"];
825
+ onDown = __stxBundle_aadcc1d88d59["onDown"];
826
+ notes = __stxBundle_aadcc1d88d59["notes"];
827
+ nodes = __stxBundle_aadcc1d88d59["nodes"];
828
+ nodeClasses = __stxBundle_aadcc1d88d59["nodeClasses"];
829
+ model = __stxBundle_aadcc1d88d59["model"];
830
+ manageHref = __stxBundle_aadcc1d88d59["manageHref"];
831
+ load = __stxBundle_aadcc1d88d59["load"];
832
+ links = __stxBundle_aadcc1d88d59["links"];
833
+ linkOn = __stxBundle_aadcc1d88d59["linkOn"];
834
+ linkOff = __stxBundle_aadcc1d88d59["linkOff"];
835
+ linkClasses = __stxBundle_aadcc1d88d59["linkClasses"];
836
+ lastUpdatedAt = __stxBundle_aadcc1d88d59["lastUpdatedAt"];
837
+ lanes = __stxBundle_aadcc1d88d59["lanes"];
838
+ labelledLinks = __stxBundle_aadcc1d88d59["labelledLinks"];
839
+ isSnapshot = __stxBundle_aadcc1d88d59["isSnapshot"];
840
+ isSample = __stxBundle_aadcc1d88d59["isSample"];
841
+ hoveredId = __stxBundle_aadcc1d88d59["hoveredId"];
842
+ groups = __stxBundle_aadcc1d88d59["groups"];
843
+ geo = __stxBundle_aadcc1d88d59["geo"];
844
+ focus = __stxBundle_aadcc1d88d59["focus"];
845
+ flows = __stxBundle_aadcc1d88d59["flows"];
846
+ fitScale = __stxBundle_aadcc1d88d59["fitScale"];
847
+ fit = __stxBundle_aadcc1d88d59["fit"];
848
+ dragging = __stxBundle_aadcc1d88d59["dragging"];
849
+ dim = __stxBundle_aadcc1d88d59["dim"];
850
+ counts = __stxBundle_aadcc1d88d59["counts"];
851
+ clear = __stxBundle_aadcc1d88d59["clear"];
852
+ canvasTransform = __stxBundle_aadcc1d88d59["canvasTransform"];
853
+ canvasScale = __stxBundle_aadcc1d88d59["canvasScale"];
854
+ builtAtLabel = __stxBundle_aadcc1d88d59["builtAtLabel"];
855
+ atPointer = __stxBundle_aadcc1d88d59["atPointer"];
856
+ animate = __stxBundle_aadcc1d88d59["animate"];
857
+ STAGE_W = __stxBundle_aadcc1d88d59["STAGE_W"];
858
+ STAGE_H = __stxBundle_aadcc1d88d59["STAGE_H"];
859
+ return { zoomTo, zoomBy, zoom, visible, toggleFlow, stageCrop, shapeOf, selectedLinks, selectedId, selectedFacts, selected, select, restatus, refresh, query, pollingState, pollingError, panY, panX, onWheel, onUp, onMove, onDown, notes, nodes, nodeClasses, model, manageHref, load, links, linkOn, linkOff, linkClasses, lastUpdatedAt, lanes, labelledLinks, isSnapshot, isSample, hoveredId, groups, geo, focus, flows, fitScale, fit, dragging, dim, counts, clear, canvasTransform, canvasScale, builtAtLabel, atPointer, animate, STAGE_W, STAGE_H, __stxBundle_aadcc1d88d59 };
860
860
  }
861
- window.__stx_latestSetup=__stx_setup_1787514988976_7;
862
- if(window.stx)window.stx._latestSetup=__stx_setup_1787514988976_7;
863
- </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_1787514988976_7"><a data-stx-scope="stx_scope_nav_10" 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="" 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="active" 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">
861
+ window.__stx_latestSetup=__stx_setup_1787597620484_3;
862
+ if(window.stx)window.stx._latestSetup=__stx_setup_1787597620484_3;
863
+ </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_1787597620484_3"><a data-stx-scope="stx_scope_nav_4" 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="" 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="active" 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">
864
864
  (function() {
865
865
  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;
866
866
  var __destroyHooks = [];
@@ -1211,6 +1211,6 @@ if(window.stx)window.stx._latestSetup=__stx_setup_1787514988976_7;
1211
1211
 
1212
1212
 
1213
1213
  try { if (typeof __stxScopeRenames !== 'undefined' && __stxScopeRenames) { for (var __stxRK in __stxScopeRenames) __scopeRegistration[__stxRK] = __stxScopeRenames[__stxRK]; } } catch (e) { /* no renames */ }
1214
- window.stx._scopes['stx_scope_nav_10'] = __scopeRegistration;
1214
+ window.stx._scopes['stx_scope_nav_4'] = __scopeRegistration;
1215
1215
  })();
1216
1216
  </script> <main class="topo-wrap wrap" id="main-content"><div class="crumbs">Infrastructure <span class="sep">/</span> Map</div><header class="page"><div><h1>Infrastructure map</h1><p>Every resource this environment deploys, in the order a request meets them. Hover to trace a path, click to inspect.</p></div><div class="header-actions"><span class="pill warn" @show="isSample()" x-cloak>sample topology</span><span class="pill" :class="pollingState() === 'live' ? 'ok' : 'warn'" x-cloak>{{ pollingState() }}</span><small x-cloak>{{ isSnapshot() ? builtAtLabel() : lastUpdatedAt() ? lastUpdatedAt().toLocaleTimeString() : 'connecting' }}</small><button class="btn ghost sm" type="button" @show="!isSnapshot()" @click="refresh()" x-cloak>Refresh</button></div></header><p class="topo-notice bad" role="alert" @show="!!pollingError()" x-cloak>{{ pollingError() }}</p><p class="topo-notice" role="status" @show="isSample() && !pollingError()" x-cloak>Showing a representative topology until this deployment reports one.</p><p class="topo-notice" role="status" @show="isSnapshot() && !isSample()" x-cloak>This cockpit was exported without its control plane, so the map cannot refresh. It shows the infrastructure as it stood when the dashboard was built.</p><p class="topo-notice" :for="note in notes" x-cloak>{{ note }}</p><section class="topo-summary" aria-label="Topology summary" x-cloak><article class="panel" x-cloak><b x-cloak>{{ model().mode === 'serverless' ? 'Serverless' : 'Server' }}</b><small x-cloak>{{ model().provider }} · {{ model().region }}</small></article><article class="panel" x-cloak><b x-cloak>{{ geo().nodes.length }} resources</b><small x-cloak>{{ geo().lanes.length }} layers · {{ geo().links.length }} connections</small></article><article class="panel" x-cloak><b x-cloak>{{ counts().ok }} healthy</b><small x-cloak>{{ counts().warn }} attention · {{ counts().bad }} failing · {{ counts().idle }} idle</small></article><article class="panel" x-cloak><b x-cloak>{{ model().environment }}</b><small x-cloak>{{ model().project }}</small></article></section><section class="topo-controls panel" aria-label="Diagram controls"><label class="topo-search"><span class="sr-only">Filter resources</span><input type="search" placeholder="Filter resources (name, kind, value)" :value="query()" @input="query.set($event.target.value)"></label><div class="topo-flows" role="group" aria-label="Connection types"><button type="button" class="chip request" :class="flows().request ? '' : 'off'" @click="toggleFlow('request')">Requests</button><button type="button" class="async chip" :class="flows().async ? '' : 'off'" @click="toggleFlow('async')">Async</button><button type="button" class="chip data" :class="flows().data ? '' : 'off'" @click="toggleFlow('data')">Data</button><button type="button" class="backup chip" :class="flows().backup ? '' : 'off'" @click="toggleFlow('backup')">Backup</button></div><div class="topo-zoom" x-cloak><button class="btn ghost sm" type="button" @click="animate.set(!animate())" x-cloak>{{ animate() ? 'Pause flow' : 'Animate flow' }}</button><button class="btn ghost sm" type="button" aria-label="Zoom out" @click="zoomBy(1 / 1.2)">−</button><span class="topo-level" x-cloak>{{ Math.round(zoom() * 100) }}%</span><button class="btn ghost sm" type="button" aria-label="Zoom in" @click="zoomBy(1.2)">+</button><button class="btn ghost sm" type="button" @click="fit()">Fit</button><button class="btn ghost sm" type="button" @click="clear()">Reset</button></div></section><div class="topo-stage"><section class="topo-panel panel"><div class="topo-viewport" :style="'aspect-ratio: 1600 / ' + stageCrop()"><svg class="topo-canvas" viewBox="0 0 1600 1200" preserveAspectRatio="xMidYMin meet" role="img" aria-label="Infrastructure topology diagram" @wheel="onWheel($event)" @pointerdown="onDown($event)" @pointermove="onMove($event)" @pointerup="onUp()" @pointerleave="onUp()"><defs><marker id="topo-arrow" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="6" markerHeight="6" orient="auto"><path d="M0,0 L10,5 L0,10 z" fill="currentColor"></path></marker></defs><g class="topo-canvas-inner" :transform="canvasTransform()"><g class="topo-lanes"><g :for="lane in lanes"><rect class="topo-lane" :x="lane.x" :y="lane.y" :width="lane.width" :height="lane.height" rx="18"></rect><text class="topo-lane-label" :x="lane.x + lane.width / 2" :y="lane.y - 24" text-anchor="middle" :text="lane.label"></text><text class="topo-lane-count" :x="lane.x + lane.width / 2" :y="lane.y - 8" text-anchor="middle" :text="lane.count + (lane.count === 1 ? ' resource' : ' resources')"></text></g></g><g class="topo-groups"><g :for="group in groups"><rect class="topo-group" :x="group.x" :y="group.y" :width="group.width" :height="group.height" rx="20"></rect><text class="topo-group-label" :x="group.x + 16" :y="group.y + 22" :text="group.sub ? group.label + ' · ' + group.sub : group.label"></text></g></g><g class="topo-edges"><path :for="link in links" class="topo-link" :class="linkClasses(link)" :d="link.d" marker-end="url(#topo-arrow)"></path></g><g class="topo-edge-labels"><text :for="link in labelledLinks" class="topo-edge-label" :class="{ dim: linkOff(link) }" :x="link.labelX" :y="link.labelY" text-anchor="middle" :text="link.label"></text></g><g class="topo-nodes"><g :for="node in nodes" class="topo-node" :class="nodeClasses(node)" :transform="'translate(' + node.x + ',' + node.y + ')'" tabindex="0" role="button" :aria-label="node.label + ', ' + node.kind + ', ' + node.status" @pointerenter="hoveredId.set(node.id)" @pointerleave="hoveredId.set('')" @focus="hoveredId.set(node.id)" @blur="hoveredId.set('')" @click="select(node)" @keydown.enter="select(node)"><rect class="topo-box" :width="node.width" :height="node.height" rx="14"></rect><g class="topo-icon" transform="translate(15,20) scale(0.83)"><path :d="node.icon"></path></g><text class="topo-label" x="48" y="27" :text="node.label"></text><text class="topo-sub" x="48" y="45" :text="node.sub || node.kind"></text><circle class="topo-dot" :cx="node.width - 17" cy="20" r="4.5"></circle></g></g></g></svg></div><p class="topo-hint">Drag to pan · scroll to zoom · Tab to walk the graph. Hovering a resource keeps its upstream path lit.</p></section><aside class="topo-detail panel" @show="!!selected()" aria-label="Resource detail" x-cloak><div class="topo-detail-head" x-cloak><div x-cloak><span class="pill" :class="selected()?.status === 'ok' ? 'ok' : selected()?.status === 'bad' ? 'bad' : 'warn'" x-cloak>{{ selected()?.status }}</span><h2 x-cloak>{{ selected()?.label }}</h2><p x-cloak>{{ selected()?.kind }} · {{ selected()?.sub }}</p></div><button class="btn ghost sm" type="button" @click="selectedId.set('')">Close</button></div><div class="kv" :for="fact in selectedFacts" x-cloak><span x-cloak>{{ fact.label }}</span><b x-cloak>{{ fact.value }}</b></div><p class="topo-empty-facts" @show="!selectedFacts().length" x-cloak>No further detail is reported for this resource.</p><h3>Connections</h3><div class="topo-conn" :for="link in selectedLinks" x-cloak><span class="chip" :class="link.flow" x-cloak>{{ link.flow }}</span><span x-cloak>{{ link.arrow }} {{ link.other }}</span><small x-cloak>{{ link.note }}</small></div><a class="btn sm" :href="manageHref(selected())" @show="!!selected()?.href" x-cloak>Manage this resource</a></aside></div><section class="topo-legend" aria-label="Legend"><span><i class="ok swatch"></i>healthy</span><span><i class="swatch warn"></i>needs attention</span><span><i class="bad swatch"></i>failing</span><span><i class="idle swatch"></i>idle</span><span><i class="swatch unknown"></i>not reported</span><span class="topo-legend-sep"></span><span><i class="stroke request"></i>request</span><span><i class="stroke async"></i>async</span><span><i class="stroke data"></i>data</span><span><i class="stroke backup"></i>backup</span></section></main><style> .topo-wrap { max-width: 1560px; } .topo-notice { margin: 10px 0; padding: 10px 14px; border-radius: 12px; background: rgba(255,255,255,0.04); border: 1px solid var(--panel-br); color: var(--txt2); font-size: 13px; } .topo-notice.bad { background: var(--badbg); border-color: rgba(240,115,110,0.3); color: var(--bad); } .topo-summary { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; margin: 16px 0 12px; } .topo-summary article { display: grid; gap: 5px; } .topo-summary b { font-size: 19px; } .topo-summary small { color: var(--txt3); } .topo-controls { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; padding: 12px 14px; } .topo-search { flex: 1 1 260px; } .topo-search input { width: 100%; background: var(--bg2); border: 1px solid var(--panel-br); border-radius: 10px; color: var(--txt); padding: 8px 12px; } .topo-flows, .topo-zoom { display: flex; align-items: center; gap: 7px; } .topo-level { min-width: 46px; text-align: center; color: var(--txt3); font: 600 12px var(--mono); } .chip { border: 1px solid var(--panel-br); background: rgba(255,255,255,0.04); color: var(--txt2); border-radius: 999px; padding: 5px 11px; font-size: 12px; font-weight: 600; cursor: pointer; } .chip::before { content: ''; display: inline-block; width: 8px; height: 8px; border-radius: 2px; margin-right: 7px; vertical-align: 0; background: currentColor; } .chip.request { color: var(--accent); } .chip.async { color: #c08ae8; } .chip.data { color: var(--ok); } .chip.backup { color: var(--txt3); } .chip.off { opacity: .38; } .topo-stage { position: relative; } .topo-panel { padding: 8px; min-width: 0; } /* The svg is a fixed, over-tall stage; the viewport crops it to the band the drawing occupies. That crop is bound to the live geometry, so the diagram fills the panel even when a re-layout is taller than the baked stage. */ .topo-viewport { position: relative; width: 100%; max-height: 78vh; overflow: hidden; } .topo-canvas { display: block; width: 100%; height: auto; touch-action: none; cursor: grab; color: var(--txt3); } .topo-canvas:active { cursor: grabbing; } .topo-hint { padding: 6px 12px 4px; color: var(--txt3); font-size: 11.5px; } .topo-lane { fill: rgba(255,255,255,0.016); stroke: rgba(255,255,255,0.05); } .topo-lane-label { fill: var(--txt3); font: 700 13px 'Inter', sans-serif; letter-spacing: .09em; text-transform: uppercase; } .topo-lane-count { fill: var(--txt3); font: 600 12px var(--mono); opacity: .6; } .topo-group { fill: none; stroke: rgba(90,139,224,0.34); stroke-dasharray: 6 6; } .topo-group-label { fill: var(--accent); font: 700 13px 'Inter', sans-serif; } .topo-group-sub { fill: var(--txt3); font-weight: 500; } .topo-link { fill: none; stroke: var(--accent); stroke-width: 1.7; opacity: .55; color: var(--accent); transition: opacity .18s ease; } .topo-link.async { stroke: #c08ae8; color: #c08ae8; stroke-dasharray: 7 5; } .topo-link.data { stroke: var(--ok); color: var(--ok); } .topo-link.backup { stroke: var(--txt3); color: var(--txt3); stroke-dasharray: 2 6; } .topo-link.animate { stroke-dasharray: 9 7; animation: topo-flow 1.5s linear infinite; } .topo-link.dim { opacity: .07; animation: none; } @keyframes topo-flow { to { stroke-dashoffset: -32; } } @media (prefers-reduced-motion: reduce) { .topo-link.animate { animation: none; } } .topo-edge-label { fill: var(--txt3); font: 600 11.5px var(--mono); paint-order: stroke; stroke: var(--bg); stroke-width: 4px; } .topo-edge-label.dim { opacity: .06; } .topo-node { cursor: pointer; } .topo-node .topo-box { fill: rgba(20,26,38,0.94); stroke: var(--panel-br); stroke-width: 1.2; transition: stroke .18s ease, fill .18s ease; } .topo-node .topo-icon { fill: none; stroke: var(--txt2); stroke-width: 1.7; stroke-linecap: round; stroke-linejoin: round; } .topo-node .topo-label { fill: var(--txt); font: 700 15px 'Inter', sans-serif; } .topo-node .topo-sub { fill: var(--txt3); font: 500 12px var(--mono); } .topo-node .topo-dot { fill: var(--txt3); } .topo-node.ok .topo-dot { fill: var(--ok); } .topo-node.warn .topo-dot { fill: var(--warn); } .topo-node.bad .topo-dot { fill: var(--bad); } .topo-node.idle .topo-dot { fill: var(--txt3); opacity: .5; } .topo-node.bad .topo-box { stroke: rgba(240,115,110,0.5); } .topo-node.warn .topo-box { stroke: rgba(237,185,73,0.42); } .topo-node.external .topo-box { fill: rgba(255,255,255,0.02); stroke-dasharray: 5 5; } .topo-node:hover .topo-box, .topo-node:focus-visible .topo-box { stroke: var(--accent); fill: rgba(28,38,58,0.98); } .topo-node:focus { outline: none; } .topo-node:focus-visible .topo-box { stroke-width: 2; } .topo-node.selected .topo-box { stroke: var(--accent); stroke-width: 2; } .topo-node.selected .topo-icon { stroke: var(--accent); } .topo-node.dim { opacity: .16; } /* Opaque: it floats over the diagram, and a translucent panel over moving edges is unreadable. */ .topo-detail { position: absolute; z-index: 5; top: 12px; right: 12px; width: 340px; display: grid; gap: 4px; max-height: calc(100% - 24px); overflow: auto; background: #0e131d; box-shadow: 0 22px 60px rgba(0,0,0,0.6); } .topo-detail-head { display: flex; justify-content: space-between; gap: 12px; align-items: start; margin-bottom: 8px; } .topo-detail-head h2 { font-size: 19px; margin-top: 6px; } .topo-detail-head p { color: var(--txt3); font-size: 12px; } .topo-detail h3 { margin: 16px 0 4px; font-size: 12px; letter-spacing: .09em; text-transform: uppercase; color: var(--txt3); } .topo-detail .kv b { font-family: var(--mono); font-size: 12.5px; text-align: right; word-break: break-all; } .topo-empty-facts { color: var(--txt3); font-size: 12px; padding: 8px 0; } .topo-conn { display: flex; align-items: center; gap: 9px; padding: 6px 0; color: var(--txt2); font-size: 12px; } .topo-conn .chip { cursor: default; padding: 2px 9px; font-size: 11px; } .topo-detail .btn { margin-top: 14px; text-align: center; text-decoration: none; } .topo-legend { display: flex; align-items: center; gap: 16px; flex-wrap: wrap; padding: 14px 4px 0; color: var(--txt3); font-size: 12px; } .topo-legend span { display: inline-flex; align-items: center; gap: 7px; } .topo-legend .swatch { width: 9px; height: 9px; border-radius: 50%; background: var(--txt3); } .topo-legend .swatch.ok { background: var(--ok); } .topo-legend .swatch.warn { background: var(--warn); } .topo-legend .swatch.bad { background: var(--bad); } .topo-legend .swatch.idle { background: var(--txt3); opacity: .5; } .topo-legend .stroke { width: 20px; height: 0; border-top: 2px solid var(--accent); } .topo-legend .stroke.async { border-top-style: dashed; border-color: #c08ae8; } .topo-legend .stroke.data { border-color: var(--ok); } .topo-legend .stroke.backup { border-top-style: dotted; border-color: var(--txt3); } .topo-legend-sep { width: 1px; height: 14px; background: var(--panel-br); } @media (max-width: 1100px) { .topo-detail { position: static; width: auto; max-height: none; margin-top: 12px; } .topo-summary { grid-template-columns: repeat(2, 1fr); } } @media (max-width: 640px) { .topo-summary { grid-template-columns: 1fr; } .topo-controls > * { width: 100%; } } </style></body></html>
@@ -1,4 +1,4 @@
1
- <!DOCTYPE html><html lang="en" data-theme="dark"><head><meta charset="UTF-8"><meta name="stx-build" content="mt689snetu3vh5"><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"> <script data-stx-runtime src="/_stx/runtime.c696d17a.js"></script> <meta name="viewport" content="width=device-width, initial-scale=1.0"><title>ts-cloud - Git integrations</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"><style> .source-hero { display:grid;grid-template-columns:minmax(0,1fr) auto;gap:24px;align-items:start } .source-actions,.row-actions { display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end } .source-stats { display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px } .source-stat strong { display:block;font-size:1.8rem;margin-top:10px } .source-layout { display:grid;grid-template-columns:minmax(0,1.5fr) minmax(320px,.8fr);gap:18px;align-items:start } .source-stack,.connection-list,.repository-list,.binding-list,.webhook-list,.delivery-list { display:grid;gap:12px } .source-sidebar { position:sticky;top:20px } .connection,.repository,.binding,.webhook { border:1px solid var(--line);border-radius:11px;background:var(--panel);padding:16px;display:grid;gap:12px } .connection-head,.repository-head,.binding-head,.webhook-head { display:flex;gap:12px;justify-content:space-between;align-items:flex-start } .connection-title { display:flex;gap:10px;align-items:center }.provider-mark { display:grid;place-items:center;width:34px;height:34px;border-radius:9px;background:rgba(90,139,224,.12);color:var(--accent);font-weight:800;text-transform:uppercase } .connection h3,.repository h3,.binding h3,.webhook h3 { margin:0;font-size:1rem }.connection p,.repository p,.binding p,.webhook p { margin:3px 0 0 } .source-meta { display:flex;gap:7px;flex-wrap:wrap;align-items:center;color:var(--muted);font-size:.78rem } .source-filters { display:grid;grid-template-columns:minmax(180px,1fr) minmax(150px,.35fr);gap:8px;margin-bottom:12px } .source-filters input,.source-filters select,.source-dialog input,.source-dialog select,.source-dialog textarea { width:100%;min-width:0;background:rgba(255,255,255,.045);border:1px solid var(--panel-br);border-radius:8px;padding:9px 10px;color:var(--txt);font:inherit } .source-filters input:focus,.source-filters select:focus,.source-dialog input:focus,.source-dialog select:focus,.source-dialog textarea:focus { outline:none;border-color:var(--accent);box-shadow:0 0 0 3px rgba(90,139,224,.12) } .source-dialog { position:fixed;inset:50% auto auto 50%;transform:translate(-50%,-50%);margin:0;width:min(620px,calc(100vw - 32px));max-height:calc(100vh - 32px);overflow:auto;box-sizing:border-box;border:1px solid var(--line);border-radius:12px;background:#111722;color:inherit;padding:22px;box-shadow:0 24px 80px rgba(0,0,0,.55) } .source-dialog::backdrop { background:rgba(0,0,0,.68) }.source-dialog form { display:grid;gap:12px } .source-dialog label { display:grid;gap:6px;color:var(--txt3);font-size:.72rem;font-weight:750;letter-spacing:.04em }.source-dialog label :is(input,select,textarea) { color:var(--txt);font-weight:450;letter-spacing:0 } .form-grid { display:grid;grid-template-columns:1fr 1fr;gap:10px }.check-grid { display:grid;grid-template-columns:1fr 1fr;gap:9px }.check-grid label { display:flex;align-items:center;gap:8px;font-size:.82rem }.check-grid input { width:auto } .dialog-actions { display:flex;gap:8px;justify-content:flex-end }.status-line { min-height:1.3em;color:var(--muted) } .empty-source { padding:26px;text-align:center;border:1px dashed var(--line);border-radius:10px;color:var(--muted) } .delivery { display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:8px;align-items:center;font-size:.78rem;border-top:1px solid var(--line);padding-top:8px } .impact-list { display:grid;gap:8px;max-height:240px;overflow:auto }.impact { padding:10px;border:1px solid var(--line);border-radius:8px } .secret-note { border-left:2px solid #e4c35e;padding-left:10px;color:var(--muted) } @media (max-width:900px) { .source-layout,.source-hero { grid-template-columns:1fr }.source-sidebar { position:static }.source-stats { grid-template-columns:1fr 1fr }.source-actions { justify-content:flex-start } } @media (max-width:560px) { .source-stats,.source-filters,.form-grid,.check-grid { grid-template-columns:1fr }.connection-head,.repository-head,.binding-head,.webhook-head { display:grid }.row-actions { justify-content:flex-start } } </style><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-auto><a data-stx-scope="stx_scope_nav_51" 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="active" 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="" 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">
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"> <script data-stx-runtime src="/_stx/runtime.c696d17a.js"></script> <meta name="viewport" content="width=device-width, initial-scale=1.0"><title>ts-cloud - Git integrations</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"><style> .source-hero { display:grid;grid-template-columns:minmax(0,1fr) auto;gap:24px;align-items:start } .source-actions,.row-actions { display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end } .source-stats { display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px } .source-stat strong { display:block;font-size:1.8rem;margin-top:10px } .source-layout { display:grid;grid-template-columns:minmax(0,1.5fr) minmax(320px,.8fr);gap:18px;align-items:start } .source-stack,.connection-list,.repository-list,.binding-list,.webhook-list,.delivery-list { display:grid;gap:12px } .source-sidebar { position:sticky;top:20px } .connection,.repository,.binding,.webhook { border:1px solid var(--line);border-radius:11px;background:var(--panel);padding:16px;display:grid;gap:12px } .connection-head,.repository-head,.binding-head,.webhook-head { display:flex;gap:12px;justify-content:space-between;align-items:flex-start } .connection-title { display:flex;gap:10px;align-items:center }.provider-mark { display:grid;place-items:center;width:34px;height:34px;border-radius:9px;background:rgba(90,139,224,.12);color:var(--accent);font-weight:800;text-transform:uppercase } .connection h3,.repository h3,.binding h3,.webhook h3 { margin:0;font-size:1rem }.connection p,.repository p,.binding p,.webhook p { margin:3px 0 0 } .source-meta { display:flex;gap:7px;flex-wrap:wrap;align-items:center;color:var(--muted);font-size:.78rem } .source-filters { display:grid;grid-template-columns:minmax(180px,1fr) minmax(150px,.35fr);gap:8px;margin-bottom:12px } .source-filters input,.source-filters select,.source-dialog input,.source-dialog select,.source-dialog textarea { width:100%;min-width:0;background:rgba(255,255,255,.045);border:1px solid var(--panel-br);border-radius:8px;padding:9px 10px;color:var(--txt);font:inherit } .source-filters input:focus,.source-filters select:focus,.source-dialog input:focus,.source-dialog select:focus,.source-dialog textarea:focus { outline:none;border-color:var(--accent);box-shadow:0 0 0 3px rgba(90,139,224,.12) } .source-dialog { position:fixed;inset:50% auto auto 50%;transform:translate(-50%,-50%);margin:0;width:min(620px,calc(100vw - 32px));max-height:calc(100vh - 32px);overflow:auto;box-sizing:border-box;border:1px solid var(--line);border-radius:12px;background:#111722;color:inherit;padding:22px;box-shadow:0 24px 80px rgba(0,0,0,.55) } .source-dialog::backdrop { background:rgba(0,0,0,.68) }.source-dialog form { display:grid;gap:12px } .source-dialog label { display:grid;gap:6px;color:var(--txt3);font-size:.72rem;font-weight:750;letter-spacing:.04em }.source-dialog label :is(input,select,textarea) { color:var(--txt);font-weight:450;letter-spacing:0 } .form-grid { display:grid;grid-template-columns:1fr 1fr;gap:10px }.check-grid { display:grid;grid-template-columns:1fr 1fr;gap:9px }.check-grid label { display:flex;align-items:center;gap:8px;font-size:.82rem }.check-grid input { width:auto } .dialog-actions { display:flex;gap:8px;justify-content:flex-end }.status-line { min-height:1.3em;color:var(--muted) } .empty-source { padding:26px;text-align:center;border:1px dashed var(--line);border-radius:10px;color:var(--muted) } .delivery { display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:8px;align-items:center;font-size:.78rem;border-top:1px solid var(--line);padding-top:8px } .impact-list { display:grid;gap:8px;max-height:240px;overflow:auto }.impact { padding:10px;border:1px solid var(--line);border-radius:8px } .secret-note { border-left:2px solid #e4c35e;padding-left:10px;color:var(--muted) } @media (max-width:900px) { .source-layout,.source-hero { grid-template-columns:1fr }.source-sidebar { position:static }.source-stats { grid-template-columns:1fr 1fr }.source-actions { justify-content:flex-start } } @media (max-width:560px) { .source-stats,.source-filters,.form-grid,.check-grid { grid-template-columns:1fr }.connection-head,.repository-head,.binding-head,.webhook-head { display:grid }.row-actions { justify-content:flex-start } } </style><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-auto><a data-stx-scope="stx_scope_nav_52" 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="active" 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="" 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">
2
2
  (function() {
3
3
  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;
4
4
  var __destroyHooks = [];
@@ -349,7 +349,7 @@
349
349
 
350
350
 
351
351
  try { if (typeof __stxScopeRenames !== 'undefined' && __stxScopeRenames) { for (var __stxRK in __stxScopeRenames) __scopeRegistration[__stxRK] = __stxScopeRenames[__stxRK]; } } catch (e) { /* no renames */ }
352
- window.stx._scopes['stx_scope_nav_51'] = __scopeRegistration;
352
+ window.stx._scopes['stx_scope_nav_52'] = __scopeRegistration;
353
353
  })();
354
354
  </script> <div class="wrap" id="main-content"><div class="crumbs"><a href="/">Project</a><span class="sep">/</span> Git integrations</div><header class="page source-hero"><div><h1>Git integrations</h1><p>Connect source once, bind repositories to applications, and deploy verified pushes or pull requests.</p></div><div class="source-actions"><button class="btn ghost" id="refresh-sources" type="button">Refresh</button><button class="btn" id="add-connection" type="button">Add connection</button></div></header><div class="section source-stats" aria-label="Git integration summary"><div class="panel source-stat"><span class="note">Connections</span><strong id="connection-count">—</strong><small>Provider credentials</small></div><div class="panel source-stat"><span class="note">Repositories</span><strong id="repository-count">—</strong><small>Authorized sources</small></div><div class="panel source-stat"><span class="note">Auto deploy</span><strong id="binding-count">—</strong><small>Active bindings</small></div><div class="panel source-stat"><span class="note">Needs attention</span><strong id="unhealthy-count">—</strong><small>Connections or hooks</small></div></div><div class="section source-layout"><main class="source-stack"><section><div class="section-heading"><div><h2>Connections</h2><p class="note">Credentials stay encrypted and are never returned to this page.</p></div></div><div class="connection-list" id="connection-list"><div class="empty-source">Loading connections…</div></div></section><section><div class="section-heading"><div><h2>Repositories</h2><p class="note">Browse only repositories granted to a connection.</p></div></div><div class="source-filters"><input id="repository-search" type="search" placeholder="Search repositories…" aria-label="Search repositories"><select id="repository-connection" aria-label="Connection"><option value="">All connections</option></select></div><div class="repository-list" id="repository-list"><div class="empty-source">No repositories synchronized yet.</div></div></section></main><aside class="source-sidebar source-stack"><section class="panel"><div class="section-heading"><div><h2>Application bindings</h2><p class="note">Branch, tag, root, and watched-path rules.</p></div></div><div class="binding-list" id="binding-list"><div class="note">No source bindings.</div></div></section><section class="panel"><div class="section-heading"><div><h2>Webhook delivery</h2><p class="note">Verified, replay-safe event history.</p></div></div><div class="webhook-list" id="webhook-list"><div class="note">No webhooks configured.</div></div></section></aside></div><p class="status-line" id="page-status" role="status"></p></div><dialog class="source-dialog" id="connection-dialog"><form id="connection-form"><div><h2>Add Git connection</h2><p class="note">Request read-only repository metadata/content and webhook scopes whenever the provider permits it.</p></div><div class="form-grid"><label>Provider<select name="provider"><option value="github">GitHub App</option><option value="gitlab">GitLab</option><option value="bitbucket">Bitbucket</option><option value="gitea">Gitea</option><option value="generic_https">Generic HTTPS</option><option value="generic_ssh">Generic SSH</option></select></label><label>Connection name<input name="name" maxlength="80" required placeholder="Production GitHub"></label></div><div class="form-grid"><label>Host<input name="host" type="url" required value="https://github.com"></label><label>Owner / workspace<input name="owner" placeholder="acme"></label></div><div data-app-fields><div class="form-grid"><label>GitHub App ID<input name="appId" autocomplete="off"></label><label>Installation ID<input name="installationId" autocomplete="off"></label></div><label>GitHub App private key<textarea name="privateKey" rows="4" autocomplete="off" spellcheck="false"></textarea></label></div><div data-token-fields hidden><div class="form-grid"><label>Access token<input name="token" type="password" autocomplete="new-password"></label><label>Token username (optional)<input name="username" autocomplete="off"></label></div></div><div data-generic-fields hidden><div class="form-grid"><label>Repository name<input name="repositoryFullName" placeholder="acme/web"></label><label>Default branch<input name="defaultBranch" value="main"></label></div><label>Credential-free clone URL<input name="repositoryUrl" placeholder="https://git.example/acme/web.git"></label></div><div data-ssh-fields hidden><label>Deploy key name<input name="deployKeyName" maxlength="80" placeholder="Readonly production"></label><label>Public key<textarea name="publicKey" rows="2" autocomplete="off" spellcheck="false" placeholder="ssh-ed25519 …"></textarea></label><label>Private key<textarea name="deployPrivateKey" rows="4" autocomplete="off" spellcheck="false" placeholder="-----BEGIN OPENSSH PRIVATE KEY-----"></textarea></label><div class="form-grid"><label>SSH host<input name="sshHost" placeholder="git.example"></label><label>Pinned host key<textarea name="hostKey" rows="2" autocomplete="off" spellcheck="false" placeholder="ssh-ed25519 …"></textarea></label></div></div><p class="secret-note">Tokens and private keys are encrypted at rest. Clone URLs containing credentials are rejected.</p><div class="dialog-actions"><button class="btn ghost" type="button" data-close>Cancel</button><button class="btn" type="submit">Connect</button></div><p class="status-line" id="connection-status" role="status"></p></form></dialog><dialog class="source-dialog" id="binding-dialog"><form id="binding-form"><div><h2>Bind repository</h2><p class="note" id="binding-repository"></p></div><input type="hidden" name="connectionId"><input type="hidden" name="repositoryId"><input type="hidden" name="repositoryFullName"><div class="form-grid"><label>Application<select name="resourceId" required></select></label><label>Deploy branch<select name="defaultBranch" required><option>main</option></select></label></div><div class="form-grid"><label>Branch rule<input name="branchRule" placeholder="main or release/**"></label><label>Tag rule<input name="tagRule" placeholder="v*"></label></div><div class="form-grid"><label>Monorepo root<input name="monorepoRoot" value="." placeholder="apps/web"></label><label>SSH deploy key<select name="deployKeyId"><option value="">Provider credential / none</option></select></label></div><div class="form-grid"><label>Include paths<textarea name="includePaths" rows="3" placeholder="apps/web/**&#10;packages/shared/**"></textarea></label><label>Exclude paths<textarea name="excludePaths" rows="3" placeholder="**/*.md&#10;docs/**"></textarea></label></div><div class="form-grid"><label>Clone history<select name="cloneDepth"><option value="20">Shallow · 20 commits</option><option value="1">Shallow · latest commit</option><option value="">Full history</option></select></label><label>Event types<select name="events"><option value="push,pr">Push + pull request</option><option value="push">Push only</option><option value="pr">Pull request only</option></select></label></div><div class="check-grid"><label><input type="checkbox" name="submodules"> Include submodules</label><label><input type="checkbox" name="autoDeploy" checked> Auto-deploy pushes</label></div><div class="dialog-actions"><button class="btn ghost" type="button" data-close>Cancel</button><button class="btn" type="submit">Create binding</button></div><p class="status-line" id="binding-status" role="status"></p></form></dialog><dialog class="source-dialog" id="rotate-dialog"><form id="rotate-form"><div><h2>Rotate credential</h2><p class="note" id="rotate-name"></p></div><input type="hidden" name="id"><label>Replacement access token<input name="token" type="password" autocomplete="new-password"></label><label>Credential expiry (optional)<input name="expiresAt" type="datetime-local"></label><p class="secret-note">The old encrypted credential is replaced immediately. Test the connection after rotation.</p><div class="dialog-actions"><button class="btn ghost" type="button" data-close>Cancel</button><button class="btn" type="submit">Rotate</button></div><p class="status-line" id="rotate-status"></p></form></dialog><dialog class="source-dialog" id="disconnect-dialog"><form id="disconnect-form"><div><h2>Disconnect source</h2><p class="note">Dependent automatic deploys will be disabled; they never fall back to another credential.</p></div><input type="hidden" name="id"><div class="impact-list" id="impact-list"></div><div class="dialog-actions"><button class="btn ghost" type="button" data-close>Cancel</button><button class="btn danger" type="submit">Disconnect and disable</button></div><p class="status-line" id="disconnect-status"></p></form></dialog> <script data-stx-scoped data-stx-run="always">
355
355
  ;(function() {