@almadar/std 3.1.0 → 3.1.2

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 (256) hide show
  1. package/behaviors/exports/atoms/std-async.orb +2 -1
  2. package/behaviors/exports/atoms/std-browse.orb +2 -1
  3. package/behaviors/exports/atoms/std-cache-aside.orb +2 -1
  4. package/behaviors/exports/atoms/std-circuit-breaker.orb +2 -1
  5. package/behaviors/exports/atoms/std-collision.orb +2 -1
  6. package/behaviors/exports/atoms/std-combat-log.orb +2 -1
  7. package/behaviors/exports/atoms/std-combat.orb +2 -1
  8. package/behaviors/exports/atoms/std-confirmation.orb +2 -1
  9. package/behaviors/exports/atoms/std-dialogue-box.orb +2 -1
  10. package/behaviors/exports/atoms/std-display.orb +2 -1
  11. package/behaviors/exports/atoms/std-drawer.orb +2 -1
  12. package/behaviors/exports/atoms/std-filter.orb +2 -1
  13. package/behaviors/exports/atoms/std-game-audio.orb +2 -1
  14. package/behaviors/exports/atoms/std-game-hud.orb +2 -1
  15. package/behaviors/exports/atoms/std-game-menu.orb +2 -1
  16. package/behaviors/exports/atoms/std-game-over-screen.orb +2 -1
  17. package/behaviors/exports/atoms/std-gameflow.orb +2 -1
  18. package/behaviors/exports/atoms/std-input.orb +2 -1
  19. package/behaviors/exports/atoms/std-inventory-panel.orb +2 -1
  20. package/behaviors/exports/atoms/std-isometric-canvas.orb +2 -1
  21. package/behaviors/exports/atoms/std-loading.orb +2 -1
  22. package/behaviors/exports/atoms/std-modal.orb +2 -1
  23. package/behaviors/exports/atoms/std-movement.orb +2 -1
  24. package/behaviors/exports/atoms/std-notification.orb +2 -1
  25. package/behaviors/exports/atoms/std-overworld.orb +2 -1
  26. package/behaviors/exports/atoms/std-pagination.orb +2 -1
  27. package/behaviors/exports/atoms/std-physics2d.orb +2 -1
  28. package/behaviors/exports/atoms/std-platformer-canvas.orb +2 -1
  29. package/behaviors/exports/atoms/std-quest.orb +2 -1
  30. package/behaviors/exports/atoms/std-rate-limiter.orb +2 -1
  31. package/behaviors/exports/atoms/std-score-board.orb +2 -1
  32. package/behaviors/exports/atoms/std-score.orb +2 -1
  33. package/behaviors/exports/atoms/std-search.orb +2 -1
  34. package/behaviors/exports/atoms/std-selection.orb +2 -1
  35. package/behaviors/exports/atoms/std-simulation-canvas.orb +2 -1
  36. package/behaviors/exports/atoms/std-sort.orb +2 -1
  37. package/behaviors/exports/atoms/std-sprite.orb +2 -1
  38. package/behaviors/exports/atoms/std-tabs.orb +2 -1
  39. package/behaviors/exports/atoms/std-timer.orb +2 -1
  40. package/behaviors/exports/atoms/std-undo.orb +2 -1
  41. package/behaviors/exports/atoms/std-wizard.orb +2 -1
  42. package/behaviors/exports/molecules/std-builder-game.orb +2 -1
  43. package/behaviors/exports/molecules/std-cart.orb +2 -1
  44. package/behaviors/exports/molecules/std-classifier-game.orb +2 -1
  45. package/behaviors/exports/molecules/std-debugger-game.orb +2 -1
  46. package/behaviors/exports/molecules/std-detail.orb +2 -1
  47. package/behaviors/exports/molecules/std-event-handler-game.orb +2 -1
  48. package/behaviors/exports/molecules/std-geospatial.orb +2 -1
  49. package/behaviors/exports/molecules/std-inventory.orb +2 -1
  50. package/behaviors/exports/molecules/std-list.orb +2 -1
  51. package/behaviors/exports/molecules/std-messaging.orb +2 -1
  52. package/behaviors/exports/molecules/std-negotiator-game.orb +2 -1
  53. package/behaviors/exports/molecules/std-platformer-game.orb +2 -1
  54. package/behaviors/exports/molecules/std-puzzle-game.orb +2 -1
  55. package/behaviors/exports/molecules/std-sequencer-game.orb +2 -1
  56. package/behaviors/exports/molecules/std-simulator-game.orb +2 -1
  57. package/behaviors/exports/molecules/std-turn-based-battle.orb +2 -1
  58. package/behaviors/exports/organisms/std-api-gateway.orb +2 -1
  59. package/behaviors/exports/organisms/std-arcade-game.orb +2 -1
  60. package/behaviors/exports/organisms/std-booking-system.orb +2 -1
  61. package/behaviors/exports/organisms/std-cicd-pipeline.orb +2 -1
  62. package/behaviors/exports/organisms/std-cms.orb +2 -1
  63. package/behaviors/exports/organisms/std-coding-academy.orb +2 -1
  64. package/behaviors/exports/organisms/std-crm.orb +2 -1
  65. package/behaviors/exports/organisms/std-devops-dashboard.orb +2 -1
  66. package/behaviors/exports/organisms/std-ecommerce.orb +2 -1
  67. package/behaviors/exports/organisms/std-finance-tracker.orb +2 -1
  68. package/behaviors/exports/organisms/std-healthcare.orb +2 -1
  69. package/behaviors/exports/organisms/std-helpdesk.orb +2 -1
  70. package/behaviors/exports/organisms/std-hr-portal.orb +2 -1
  71. package/behaviors/exports/organisms/std-iot-dashboard.orb +2 -1
  72. package/behaviors/exports/organisms/std-lms.orb +2 -1
  73. package/behaviors/exports/organisms/std-logic-training.orb +2 -1
  74. package/behaviors/exports/organisms/std-platformer-app.orb +2 -1
  75. package/behaviors/exports/organisms/std-project-manager.orb +2 -1
  76. package/behaviors/exports/organisms/std-puzzle-app.orb +2 -1
  77. package/behaviors/exports/organisms/std-realtime-chat.orb +2 -1
  78. package/behaviors/exports/organisms/std-rpg-game.orb +2 -1
  79. package/behaviors/exports/organisms/std-social-feed.orb +2 -1
  80. package/behaviors/exports/organisms/std-stem-lab.orb +2 -1
  81. package/behaviors/exports/organisms/std-strategy-game.orb +2 -1
  82. package/behaviors/exports/organisms/std-trading-dashboard.orb +2 -1
  83. package/dist/behaviors/exports/atoms/std-async.orb +421 -0
  84. package/dist/behaviors/exports/atoms/std-browse.orb +174 -0
  85. package/dist/behaviors/exports/atoms/std-cache-aside.orb +882 -0
  86. package/dist/behaviors/exports/atoms/std-circuit-breaker.orb +502 -0
  87. package/dist/behaviors/exports/atoms/std-collision.orb +617 -0
  88. package/dist/behaviors/exports/atoms/std-combat-log.orb +146 -0
  89. package/dist/behaviors/exports/atoms/std-combat.orb +411 -0
  90. package/dist/behaviors/exports/atoms/std-confirmation.orb +283 -0
  91. package/dist/behaviors/exports/atoms/std-dialogue-box.orb +239 -0
  92. package/dist/behaviors/exports/atoms/std-display.orb +843 -0
  93. package/dist/behaviors/exports/atoms/std-drawer.orb +317 -0
  94. package/dist/behaviors/exports/atoms/std-filter.orb +443 -0
  95. package/dist/behaviors/exports/atoms/std-game-audio.orb +114 -0
  96. package/dist/behaviors/exports/atoms/std-game-hud.orb +152 -0
  97. package/dist/behaviors/exports/atoms/std-game-menu.orb +212 -0
  98. package/dist/behaviors/exports/atoms/std-game-over-screen.orb +196 -0
  99. package/dist/behaviors/exports/atoms/std-gameflow.orb +319 -0
  100. package/dist/behaviors/exports/atoms/std-input.orb +630 -0
  101. package/dist/behaviors/exports/atoms/std-inventory-panel.orb +256 -0
  102. package/dist/behaviors/exports/atoms/std-isometric-canvas.orb +632 -0
  103. package/dist/behaviors/exports/atoms/std-loading.orb +512 -0
  104. package/dist/behaviors/exports/atoms/std-modal.orb +271 -0
  105. package/dist/behaviors/exports/atoms/std-movement.orb +1038 -0
  106. package/dist/behaviors/exports/atoms/std-notification.orb +419 -0
  107. package/dist/behaviors/exports/atoms/std-overworld.orb +484 -0
  108. package/dist/behaviors/exports/atoms/std-pagination.orb +332 -0
  109. package/dist/behaviors/exports/atoms/std-physics2d.orb +420 -0
  110. package/dist/behaviors/exports/atoms/std-platformer-canvas.orb +258 -0
  111. package/dist/behaviors/exports/atoms/std-quest.orb +981 -0
  112. package/dist/behaviors/exports/atoms/std-rate-limiter.orb +639 -0
  113. package/dist/behaviors/exports/atoms/std-score-board.orb +239 -0
  114. package/dist/behaviors/exports/atoms/std-score.orb +467 -0
  115. package/dist/behaviors/exports/atoms/std-search.orb +374 -0
  116. package/dist/behaviors/exports/atoms/std-selection.orb +760 -0
  117. package/dist/behaviors/exports/atoms/std-simulation-canvas.orb +184 -0
  118. package/dist/behaviors/exports/atoms/std-sort.orb +579 -0
  119. package/dist/behaviors/exports/atoms/std-sprite.orb +157 -0
  120. package/dist/behaviors/exports/atoms/std-tabs.orb +275 -0
  121. package/dist/behaviors/exports/atoms/std-timer.orb +1031 -0
  122. package/dist/behaviors/exports/atoms/std-undo.orb +695 -0
  123. package/dist/behaviors/exports/atoms/std-wizard.orb +667 -0
  124. package/dist/behaviors/exports/molecules/std-builder-game.orb +184 -0
  125. package/dist/behaviors/exports/molecules/std-cart.orb +592 -0
  126. package/dist/behaviors/exports/molecules/std-classifier-game.orb +184 -0
  127. package/dist/behaviors/exports/molecules/std-debugger-game.orb +184 -0
  128. package/dist/behaviors/exports/molecules/std-detail.orb +590 -0
  129. package/dist/behaviors/exports/molecules/std-event-handler-game.orb +184 -0
  130. package/dist/behaviors/exports/molecules/std-geospatial.orb +650 -0
  131. package/dist/behaviors/exports/molecules/std-inventory.orb +854 -0
  132. package/dist/behaviors/exports/molecules/std-list.orb +955 -0
  133. package/dist/behaviors/exports/molecules/std-messaging.orb +586 -0
  134. package/dist/behaviors/exports/molecules/std-negotiator-game.orb +184 -0
  135. package/dist/behaviors/exports/molecules/std-platformer-game.orb +497 -0
  136. package/dist/behaviors/exports/molecules/std-puzzle-game.orb +528 -0
  137. package/dist/behaviors/exports/molecules/std-sequencer-game.orb +184 -0
  138. package/dist/behaviors/exports/molecules/std-simulator-game.orb +184 -0
  139. package/dist/behaviors/exports/molecules/std-turn-based-battle.orb +444 -0
  140. package/dist/behaviors/exports/organisms/std-api-gateway.orb +2297 -0
  141. package/dist/behaviors/exports/organisms/std-arcade-game.orb +834 -0
  142. package/dist/behaviors/exports/organisms/std-booking-system.orb +3978 -0
  143. package/dist/behaviors/exports/organisms/std-cicd-pipeline.orb +2215 -0
  144. package/dist/behaviors/exports/organisms/std-cms.orb +2645 -0
  145. package/dist/behaviors/exports/organisms/std-coding-academy.orb +1395 -0
  146. package/dist/behaviors/exports/organisms/std-crm.orb +3542 -0
  147. package/dist/behaviors/exports/organisms/std-devops-dashboard.orb +3135 -0
  148. package/dist/behaviors/exports/organisms/std-ecommerce.orb +3744 -0
  149. package/dist/behaviors/exports/organisms/std-finance-tracker.orb +2386 -0
  150. package/dist/behaviors/exports/organisms/std-healthcare.orb +4680 -0
  151. package/dist/behaviors/exports/organisms/std-helpdesk.orb +2565 -0
  152. package/dist/behaviors/exports/organisms/std-hr-portal.orb +4030 -0
  153. package/dist/behaviors/exports/organisms/std-iot-dashboard.orb +2298 -0
  154. package/dist/behaviors/exports/organisms/std-lms.orb +2855 -0
  155. package/dist/behaviors/exports/organisms/std-logic-training.orb +599 -0
  156. package/dist/behaviors/exports/organisms/std-platformer-app.orb +1570 -0
  157. package/dist/behaviors/exports/organisms/std-project-manager.orb +3022 -0
  158. package/dist/behaviors/exports/organisms/std-puzzle-app.orb +744 -0
  159. package/dist/behaviors/exports/organisms/std-realtime-chat.orb +2381 -0
  160. package/dist/behaviors/exports/organisms/std-rpg-game.orb +2805 -0
  161. package/dist/behaviors/exports/organisms/std-social-feed.orb +1222 -0
  162. package/dist/behaviors/exports/organisms/std-stem-lab.orb +1211 -0
  163. package/dist/behaviors/exports/organisms/std-strategy-game.orb +1762 -0
  164. package/dist/behaviors/exports/organisms/std-trading-dashboard.orb +2218 -0
  165. package/dist/behaviors/exports-reader.d.ts +2 -0
  166. package/dist/behaviors/exports-reader.js +5 -3
  167. package/dist/behaviors/exports-reader.js.map +1 -1
  168. package/dist/behaviors/index.js +5 -3
  169. package/dist/behaviors/index.js.map +1 -1
  170. package/dist/exports/atoms/std-async.orb +421 -0
  171. package/dist/exports/atoms/std-browse.orb +174 -0
  172. package/dist/exports/atoms/std-cache-aside.orb +882 -0
  173. package/dist/exports/atoms/std-circuit-breaker.orb +502 -0
  174. package/dist/exports/atoms/std-collision.orb +617 -0
  175. package/dist/exports/atoms/std-combat-log.orb +146 -0
  176. package/dist/exports/atoms/std-combat.orb +411 -0
  177. package/dist/exports/atoms/std-confirmation.orb +283 -0
  178. package/dist/exports/atoms/std-dialogue-box.orb +239 -0
  179. package/dist/exports/atoms/std-display.orb +843 -0
  180. package/dist/exports/atoms/std-drawer.orb +317 -0
  181. package/dist/exports/atoms/std-filter.orb +443 -0
  182. package/dist/exports/atoms/std-game-audio.orb +114 -0
  183. package/dist/exports/atoms/std-game-hud.orb +152 -0
  184. package/dist/exports/atoms/std-game-menu.orb +212 -0
  185. package/dist/exports/atoms/std-game-over-screen.orb +196 -0
  186. package/dist/exports/atoms/std-gameflow.orb +319 -0
  187. package/dist/exports/atoms/std-input.orb +630 -0
  188. package/dist/exports/atoms/std-inventory-panel.orb +256 -0
  189. package/dist/exports/atoms/std-isometric-canvas.orb +632 -0
  190. package/dist/exports/atoms/std-loading.orb +512 -0
  191. package/dist/exports/atoms/std-modal.orb +271 -0
  192. package/dist/exports/atoms/std-movement.orb +1038 -0
  193. package/dist/exports/atoms/std-notification.orb +419 -0
  194. package/dist/exports/atoms/std-overworld.orb +484 -0
  195. package/dist/exports/atoms/std-pagination.orb +332 -0
  196. package/dist/exports/atoms/std-physics2d.orb +420 -0
  197. package/dist/exports/atoms/std-platformer-canvas.orb +258 -0
  198. package/dist/exports/atoms/std-quest.orb +981 -0
  199. package/dist/exports/atoms/std-rate-limiter.orb +639 -0
  200. package/dist/exports/atoms/std-score-board.orb +239 -0
  201. package/dist/exports/atoms/std-score.orb +467 -0
  202. package/dist/exports/atoms/std-search.orb +374 -0
  203. package/dist/exports/atoms/std-selection.orb +760 -0
  204. package/dist/exports/atoms/std-simulation-canvas.orb +184 -0
  205. package/dist/exports/atoms/std-sort.orb +579 -0
  206. package/dist/exports/atoms/std-sprite.orb +157 -0
  207. package/dist/exports/atoms/std-tabs.orb +275 -0
  208. package/dist/exports/atoms/std-timer.orb +1031 -0
  209. package/dist/exports/atoms/std-undo.orb +695 -0
  210. package/dist/exports/atoms/std-wizard.orb +667 -0
  211. package/dist/exports/molecules/std-builder-game.orb +184 -0
  212. package/dist/exports/molecules/std-cart.orb +592 -0
  213. package/dist/exports/molecules/std-classifier-game.orb +184 -0
  214. package/dist/exports/molecules/std-debugger-game.orb +184 -0
  215. package/dist/exports/molecules/std-detail.orb +590 -0
  216. package/dist/exports/molecules/std-event-handler-game.orb +184 -0
  217. package/dist/exports/molecules/std-geospatial.orb +650 -0
  218. package/dist/exports/molecules/std-inventory.orb +854 -0
  219. package/dist/exports/molecules/std-list.orb +955 -0
  220. package/dist/exports/molecules/std-messaging.orb +586 -0
  221. package/dist/exports/molecules/std-negotiator-game.orb +184 -0
  222. package/dist/exports/molecules/std-platformer-game.orb +497 -0
  223. package/dist/exports/molecules/std-puzzle-game.orb +528 -0
  224. package/dist/exports/molecules/std-sequencer-game.orb +184 -0
  225. package/dist/exports/molecules/std-simulator-game.orb +184 -0
  226. package/dist/exports/molecules/std-turn-based-battle.orb +444 -0
  227. package/dist/exports/organisms/std-api-gateway.orb +2297 -0
  228. package/dist/exports/organisms/std-arcade-game.orb +834 -0
  229. package/dist/exports/organisms/std-booking-system.orb +3978 -0
  230. package/dist/exports/organisms/std-cicd-pipeline.orb +2215 -0
  231. package/dist/exports/organisms/std-cms.orb +2645 -0
  232. package/dist/exports/organisms/std-coding-academy.orb +1395 -0
  233. package/dist/exports/organisms/std-crm.orb +3542 -0
  234. package/dist/exports/organisms/std-devops-dashboard.orb +3135 -0
  235. package/dist/exports/organisms/std-ecommerce.orb +3744 -0
  236. package/dist/exports/organisms/std-finance-tracker.orb +2386 -0
  237. package/dist/exports/organisms/std-healthcare.orb +4680 -0
  238. package/dist/exports/organisms/std-helpdesk.orb +2565 -0
  239. package/dist/exports/organisms/std-hr-portal.orb +4030 -0
  240. package/dist/exports/organisms/std-iot-dashboard.orb +2298 -0
  241. package/dist/exports/organisms/std-lms.orb +2855 -0
  242. package/dist/exports/organisms/std-logic-training.orb +599 -0
  243. package/dist/exports/organisms/std-platformer-app.orb +1570 -0
  244. package/dist/exports/organisms/std-project-manager.orb +3022 -0
  245. package/dist/exports/organisms/std-puzzle-app.orb +744 -0
  246. package/dist/exports/organisms/std-realtime-chat.orb +2381 -0
  247. package/dist/exports/organisms/std-rpg-game.orb +2805 -0
  248. package/dist/exports/organisms/std-social-feed.orb +1222 -0
  249. package/dist/exports/organisms/std-stem-lab.orb +1211 -0
  250. package/dist/exports/organisms/std-strategy-game.orb +1762 -0
  251. package/dist/exports/organisms/std-trading-dashboard.orb +2218 -0
  252. package/dist/index.js +5 -3
  253. package/dist/index.js.map +1 -1
  254. package/package.json +1 -1
  255. package/behaviors/exports/atoms/std-game-canvas-2d.orb +0 -135
  256. package/behaviors/exports/atoms/std-game-canvas-3d.orb +0 -224
@@ -0,0 +1,3135 @@
1
+ {
2
+ "name": "DevOps Dashboard",
3
+ "version": "1.0.0",
4
+ "orbitals": [
5
+ {
6
+ "name": "ServiceNodeOrbital",
7
+ "entity": {
8
+ "name": "ServiceNode",
9
+ "persistence": "runtime",
10
+ "fields": [
11
+ {
12
+ "name": "id",
13
+ "type": "string",
14
+ "required": true
15
+ },
16
+ {
17
+ "name": "name",
18
+ "type": "string",
19
+ "required": true
20
+ },
21
+ {
22
+ "name": "status",
23
+ "type": "string",
24
+ "required": true
25
+ },
26
+ {
27
+ "name": "url",
28
+ "type": "string"
29
+ },
30
+ {
31
+ "name": "lastChecked",
32
+ "type": "string"
33
+ }
34
+ ]
35
+ },
36
+ "traits": [
37
+ {
38
+ "name": "ServiceNodeCircuitBreaker",
39
+ "linkedEntity": "ServiceNode",
40
+ "category": "interaction",
41
+ "stateMachine": {
42
+ "states": [
43
+ {
44
+ "name": "closed",
45
+ "isInitial": true
46
+ },
47
+ {
48
+ "name": "open"
49
+ },
50
+ {
51
+ "name": "halfOpen"
52
+ }
53
+ ],
54
+ "events": [
55
+ {
56
+ "key": "INIT",
57
+ "name": "Initialize"
58
+ },
59
+ {
60
+ "key": "FAILURE",
61
+ "name": "Failure"
62
+ },
63
+ {
64
+ "key": "SUCCESS",
65
+ "name": "Success"
66
+ },
67
+ {
68
+ "key": "TIMEOUT",
69
+ "name": "Timeout"
70
+ },
71
+ {
72
+ "key": "RESET",
73
+ "name": "Reset"
74
+ }
75
+ ],
76
+ "transitions": [
77
+ {
78
+ "from": "closed",
79
+ "to": "closed",
80
+ "event": "INIT",
81
+ "effects": [
82
+ [
83
+ "fetch",
84
+ "ServiceNode"
85
+ ],
86
+ [
87
+ "render-ui",
88
+ "main",
89
+ {
90
+ "type": "stack",
91
+ "direction": "vertical",
92
+ "gap": "lg",
93
+ "align": "center",
94
+ "children": [
95
+ {
96
+ "type": "stack",
97
+ "direction": "horizontal",
98
+ "gap": "md",
99
+ "align": "center",
100
+ "children": [
101
+ {
102
+ "type": "icon",
103
+ "name": "server",
104
+ "size": "lg"
105
+ },
106
+ {
107
+ "type": "typography",
108
+ "content": "ServiceNode",
109
+ "variant": "h2"
110
+ }
111
+ ]
112
+ },
113
+ {
114
+ "type": "divider"
115
+ },
116
+ {
117
+ "type": "badge",
118
+ "label": "Circuit Closed"
119
+ },
120
+ {
121
+ "type": "typography",
122
+ "content": "Service is healthy. All requests are being processed.",
123
+ "variant": "body"
124
+ }
125
+ ]
126
+ }
127
+ ]
128
+ ]
129
+ },
130
+ {
131
+ "from": "closed",
132
+ "to": "open",
133
+ "event": "FAILURE",
134
+ "effects": [
135
+ [
136
+ "render-ui",
137
+ "main",
138
+ {
139
+ "type": "stack",
140
+ "direction": "vertical",
141
+ "gap": "lg",
142
+ "align": "center",
143
+ "children": [
144
+ {
145
+ "type": "stack",
146
+ "direction": "horizontal",
147
+ "gap": "md",
148
+ "align": "center",
149
+ "children": [
150
+ {
151
+ "type": "icon",
152
+ "name": "alert-triangle",
153
+ "size": "lg"
154
+ },
155
+ {
156
+ "type": "typography",
157
+ "content": "ServiceNode",
158
+ "variant": "h2"
159
+ }
160
+ ]
161
+ },
162
+ {
163
+ "type": "divider"
164
+ },
165
+ {
166
+ "type": "badge",
167
+ "label": "Circuit Open"
168
+ },
169
+ {
170
+ "type": "typography",
171
+ "content": "Circuit is open. Requests are being rejected to prevent cascading failures.",
172
+ "variant": "body"
173
+ },
174
+ {
175
+ "type": "button",
176
+ "label": "Reset",
177
+ "event": "RESET",
178
+ "variant": "ghost",
179
+ "icon": "rotate-ccw"
180
+ }
181
+ ]
182
+ }
183
+ ]
184
+ ]
185
+ },
186
+ {
187
+ "from": "closed",
188
+ "to": "closed",
189
+ "event": "SUCCESS",
190
+ "effects": [
191
+ [
192
+ "render-ui",
193
+ "main",
194
+ {
195
+ "type": "stack",
196
+ "direction": "vertical",
197
+ "gap": "lg",
198
+ "align": "center",
199
+ "children": [
200
+ {
201
+ "type": "stack",
202
+ "direction": "horizontal",
203
+ "gap": "md",
204
+ "align": "center",
205
+ "children": [
206
+ {
207
+ "type": "icon",
208
+ "name": "server",
209
+ "size": "lg"
210
+ },
211
+ {
212
+ "type": "typography",
213
+ "content": "ServiceNode",
214
+ "variant": "h2"
215
+ }
216
+ ]
217
+ },
218
+ {
219
+ "type": "divider"
220
+ },
221
+ {
222
+ "type": "badge",
223
+ "label": "Circuit Closed"
224
+ },
225
+ {
226
+ "type": "typography",
227
+ "content": "Service is healthy. All requests are being processed.",
228
+ "variant": "body"
229
+ }
230
+ ]
231
+ }
232
+ ]
233
+ ]
234
+ },
235
+ {
236
+ "from": "open",
237
+ "to": "halfOpen",
238
+ "event": "TIMEOUT",
239
+ "effects": [
240
+ [
241
+ "render-ui",
242
+ "main",
243
+ {
244
+ "type": "stack",
245
+ "direction": "vertical",
246
+ "gap": "lg",
247
+ "align": "center",
248
+ "children": [
249
+ {
250
+ "type": "stack",
251
+ "direction": "horizontal",
252
+ "gap": "md",
253
+ "align": "center",
254
+ "children": [
255
+ {
256
+ "type": "icon",
257
+ "name": "activity",
258
+ "size": "lg"
259
+ },
260
+ {
261
+ "type": "typography",
262
+ "content": "ServiceNode",
263
+ "variant": "h2"
264
+ }
265
+ ]
266
+ },
267
+ {
268
+ "type": "divider"
269
+ },
270
+ {
271
+ "type": "badge",
272
+ "label": "Circuit Half-Open"
273
+ },
274
+ {
275
+ "type": "typography",
276
+ "content": "Testing recovery. Limited requests are being allowed through.",
277
+ "variant": "body"
278
+ }
279
+ ]
280
+ }
281
+ ]
282
+ ]
283
+ },
284
+ {
285
+ "from": "open",
286
+ "to": "closed",
287
+ "event": "RESET",
288
+ "effects": [
289
+ [
290
+ "render-ui",
291
+ "main",
292
+ {
293
+ "type": "stack",
294
+ "direction": "vertical",
295
+ "gap": "lg",
296
+ "align": "center",
297
+ "children": [
298
+ {
299
+ "type": "stack",
300
+ "direction": "horizontal",
301
+ "gap": "md",
302
+ "align": "center",
303
+ "children": [
304
+ {
305
+ "type": "icon",
306
+ "name": "server",
307
+ "size": "lg"
308
+ },
309
+ {
310
+ "type": "typography",
311
+ "content": "ServiceNode",
312
+ "variant": "h2"
313
+ }
314
+ ]
315
+ },
316
+ {
317
+ "type": "divider"
318
+ },
319
+ {
320
+ "type": "badge",
321
+ "label": "Circuit Closed"
322
+ },
323
+ {
324
+ "type": "typography",
325
+ "content": "Service is healthy. All requests are being processed.",
326
+ "variant": "body"
327
+ }
328
+ ]
329
+ }
330
+ ]
331
+ ]
332
+ },
333
+ {
334
+ "from": "halfOpen",
335
+ "to": "closed",
336
+ "event": "SUCCESS",
337
+ "effects": [
338
+ [
339
+ "render-ui",
340
+ "main",
341
+ {
342
+ "type": "stack",
343
+ "direction": "vertical",
344
+ "gap": "lg",
345
+ "align": "center",
346
+ "children": [
347
+ {
348
+ "type": "stack",
349
+ "direction": "horizontal",
350
+ "gap": "md",
351
+ "align": "center",
352
+ "children": [
353
+ {
354
+ "type": "icon",
355
+ "name": "server",
356
+ "size": "lg"
357
+ },
358
+ {
359
+ "type": "typography",
360
+ "content": "ServiceNode",
361
+ "variant": "h2"
362
+ }
363
+ ]
364
+ },
365
+ {
366
+ "type": "divider"
367
+ },
368
+ {
369
+ "type": "badge",
370
+ "label": "Circuit Closed"
371
+ },
372
+ {
373
+ "type": "typography",
374
+ "content": "Service is healthy. All requests are being processed.",
375
+ "variant": "body"
376
+ }
377
+ ]
378
+ }
379
+ ]
380
+ ]
381
+ },
382
+ {
383
+ "from": "halfOpen",
384
+ "to": "open",
385
+ "event": "FAILURE",
386
+ "effects": [
387
+ [
388
+ "render-ui",
389
+ "main",
390
+ {
391
+ "type": "stack",
392
+ "direction": "vertical",
393
+ "gap": "lg",
394
+ "align": "center",
395
+ "children": [
396
+ {
397
+ "type": "stack",
398
+ "direction": "horizontal",
399
+ "gap": "md",
400
+ "align": "center",
401
+ "children": [
402
+ {
403
+ "type": "icon",
404
+ "name": "alert-triangle",
405
+ "size": "lg"
406
+ },
407
+ {
408
+ "type": "typography",
409
+ "content": "ServiceNode",
410
+ "variant": "h2"
411
+ }
412
+ ]
413
+ },
414
+ {
415
+ "type": "divider"
416
+ },
417
+ {
418
+ "type": "badge",
419
+ "label": "Circuit Open"
420
+ },
421
+ {
422
+ "type": "typography",
423
+ "content": "Circuit is open. Requests are being rejected to prevent cascading failures.",
424
+ "variant": "body"
425
+ },
426
+ {
427
+ "type": "button",
428
+ "label": "Reset",
429
+ "event": "RESET",
430
+ "variant": "ghost",
431
+ "icon": "rotate-ccw"
432
+ }
433
+ ]
434
+ }
435
+ ]
436
+ ]
437
+ },
438
+ {
439
+ "from": "halfOpen",
440
+ "to": "closed",
441
+ "event": "RESET",
442
+ "effects": [
443
+ [
444
+ "render-ui",
445
+ "main",
446
+ {
447
+ "type": "stack",
448
+ "direction": "vertical",
449
+ "gap": "lg",
450
+ "align": "center",
451
+ "children": [
452
+ {
453
+ "type": "stack",
454
+ "direction": "horizontal",
455
+ "gap": "md",
456
+ "align": "center",
457
+ "children": [
458
+ {
459
+ "type": "icon",
460
+ "name": "server",
461
+ "size": "lg"
462
+ },
463
+ {
464
+ "type": "typography",
465
+ "content": "ServiceNode",
466
+ "variant": "h2"
467
+ }
468
+ ]
469
+ },
470
+ {
471
+ "type": "divider"
472
+ },
473
+ {
474
+ "type": "badge",
475
+ "label": "Circuit Closed"
476
+ },
477
+ {
478
+ "type": "typography",
479
+ "content": "Service is healthy. All requests are being processed.",
480
+ "variant": "body"
481
+ }
482
+ ]
483
+ }
484
+ ]
485
+ ]
486
+ }
487
+ ]
488
+ }
489
+ }
490
+ ],
491
+ "pages": [
492
+ {
493
+ "name": "ServicesPage",
494
+ "path": "/services",
495
+ "isInitial": true,
496
+ "traits": [
497
+ {
498
+ "ref": "ServiceNodeCircuitBreaker"
499
+ }
500
+ ]
501
+ }
502
+ ]
503
+ },
504
+ {
505
+ "name": "AlertMetricOrbital",
506
+ "entity": {
507
+ "name": "AlertMetric",
508
+ "persistence": "runtime",
509
+ "fields": [
510
+ {
511
+ "name": "id",
512
+ "type": "string",
513
+ "required": true
514
+ },
515
+ {
516
+ "name": "severity",
517
+ "type": "string",
518
+ "required": true
519
+ },
520
+ {
521
+ "name": "message",
522
+ "type": "string",
523
+ "required": true
524
+ },
525
+ {
526
+ "name": "timestamp",
527
+ "type": "string"
528
+ },
529
+ {
530
+ "name": "source",
531
+ "type": "string"
532
+ }
533
+ ]
534
+ },
535
+ "traits": [
536
+ {
537
+ "name": "AlertMetricDisplay",
538
+ "linkedEntity": "AlertMetric",
539
+ "category": "interaction",
540
+ "stateMachine": {
541
+ "states": [
542
+ {
543
+ "name": "loading",
544
+ "isInitial": true
545
+ },
546
+ {
547
+ "name": "displaying"
548
+ },
549
+ {
550
+ "name": "refreshing"
551
+ }
552
+ ],
553
+ "events": [
554
+ {
555
+ "key": "INIT",
556
+ "name": "Initialize"
557
+ },
558
+ {
559
+ "key": "LOADED",
560
+ "name": "Loaded"
561
+ },
562
+ {
563
+ "key": "REFRESH",
564
+ "name": "Refresh"
565
+ },
566
+ {
567
+ "key": "REFRESHED",
568
+ "name": "Refreshed"
569
+ }
570
+ ],
571
+ "transitions": [
572
+ {
573
+ "from": "loading",
574
+ "to": "displaying",
575
+ "event": "INIT",
576
+ "effects": [
577
+ [
578
+ "fetch",
579
+ "AlertMetric"
580
+ ],
581
+ [
582
+ "render-ui",
583
+ "main",
584
+ {
585
+ "type": "stack",
586
+ "direction": "vertical",
587
+ "gap": "lg",
588
+ "children": [
589
+ {
590
+ "type": "stack",
591
+ "direction": "horizontal",
592
+ "gap": "md",
593
+ "justify": "space-between",
594
+ "children": [
595
+ {
596
+ "type": "stack",
597
+ "direction": "horizontal",
598
+ "gap": "md",
599
+ "children": [
600
+ {
601
+ "type": "icon",
602
+ "name": "alert-triangle",
603
+ "size": "lg"
604
+ },
605
+ {
606
+ "type": "typography",
607
+ "content": "Alerts",
608
+ "variant": "h2"
609
+ }
610
+ ]
611
+ },
612
+ {
613
+ "type": "button",
614
+ "label": "Refresh",
615
+ "event": "REFRESH",
616
+ "variant": "secondary",
617
+ "icon": "refresh-cw"
618
+ }
619
+ ]
620
+ },
621
+ {
622
+ "type": "divider"
623
+ },
624
+ {
625
+ "type": "simple-grid",
626
+ "columns": 3,
627
+ "children": [
628
+ {
629
+ "type": "card",
630
+ "children": [
631
+ {
632
+ "type": "stack",
633
+ "direction": "vertical",
634
+ "gap": "sm",
635
+ "children": [
636
+ {
637
+ "type": "typography",
638
+ "variant": "caption",
639
+ "content": "Severity"
640
+ },
641
+ {
642
+ "type": "typography",
643
+ "variant": "h3",
644
+ "content": "@entity.severity"
645
+ }
646
+ ]
647
+ }
648
+ ]
649
+ },
650
+ {
651
+ "type": "card",
652
+ "children": [
653
+ {
654
+ "type": "stack",
655
+ "direction": "vertical",
656
+ "gap": "sm",
657
+ "children": [
658
+ {
659
+ "type": "typography",
660
+ "variant": "caption",
661
+ "content": "Message"
662
+ },
663
+ {
664
+ "type": "typography",
665
+ "variant": "h3",
666
+ "content": "@entity.message"
667
+ }
668
+ ]
669
+ }
670
+ ]
671
+ },
672
+ {
673
+ "type": "card",
674
+ "children": [
675
+ {
676
+ "type": "stack",
677
+ "direction": "vertical",
678
+ "gap": "sm",
679
+ "children": [
680
+ {
681
+ "type": "typography",
682
+ "variant": "caption",
683
+ "content": "Timestamp"
684
+ },
685
+ {
686
+ "type": "typography",
687
+ "variant": "h3",
688
+ "content": "@entity.timestamp"
689
+ }
690
+ ]
691
+ }
692
+ ]
693
+ },
694
+ {
695
+ "type": "card",
696
+ "children": [
697
+ {
698
+ "type": "stack",
699
+ "direction": "vertical",
700
+ "gap": "sm",
701
+ "children": [
702
+ {
703
+ "type": "typography",
704
+ "variant": "caption",
705
+ "content": "Source"
706
+ },
707
+ {
708
+ "type": "typography",
709
+ "variant": "h3",
710
+ "content": "@entity.source"
711
+ }
712
+ ]
713
+ }
714
+ ]
715
+ }
716
+ ]
717
+ }
718
+ ]
719
+ }
720
+ ]
721
+ ]
722
+ },
723
+ {
724
+ "from": "loading",
725
+ "to": "displaying",
726
+ "event": "LOADED",
727
+ "effects": [
728
+ [
729
+ "fetch",
730
+ "AlertMetric"
731
+ ],
732
+ [
733
+ "render-ui",
734
+ "main",
735
+ {
736
+ "type": "stack",
737
+ "direction": "vertical",
738
+ "gap": "lg",
739
+ "children": [
740
+ {
741
+ "type": "stack",
742
+ "direction": "horizontal",
743
+ "gap": "md",
744
+ "justify": "space-between",
745
+ "children": [
746
+ {
747
+ "type": "stack",
748
+ "direction": "horizontal",
749
+ "gap": "md",
750
+ "children": [
751
+ {
752
+ "type": "icon",
753
+ "name": "alert-triangle",
754
+ "size": "lg"
755
+ },
756
+ {
757
+ "type": "typography",
758
+ "content": "Alerts",
759
+ "variant": "h2"
760
+ }
761
+ ]
762
+ },
763
+ {
764
+ "type": "button",
765
+ "label": "Refresh",
766
+ "event": "REFRESH",
767
+ "variant": "secondary",
768
+ "icon": "refresh-cw"
769
+ }
770
+ ]
771
+ },
772
+ {
773
+ "type": "divider"
774
+ },
775
+ {
776
+ "type": "simple-grid",
777
+ "columns": 3,
778
+ "children": [
779
+ {
780
+ "type": "card",
781
+ "children": [
782
+ {
783
+ "type": "stack",
784
+ "direction": "vertical",
785
+ "gap": "sm",
786
+ "children": [
787
+ {
788
+ "type": "typography",
789
+ "variant": "caption",
790
+ "content": "Severity"
791
+ },
792
+ {
793
+ "type": "typography",
794
+ "variant": "h3",
795
+ "content": "@entity.severity"
796
+ }
797
+ ]
798
+ }
799
+ ]
800
+ },
801
+ {
802
+ "type": "card",
803
+ "children": [
804
+ {
805
+ "type": "stack",
806
+ "direction": "vertical",
807
+ "gap": "sm",
808
+ "children": [
809
+ {
810
+ "type": "typography",
811
+ "variant": "caption",
812
+ "content": "Message"
813
+ },
814
+ {
815
+ "type": "typography",
816
+ "variant": "h3",
817
+ "content": "@entity.message"
818
+ }
819
+ ]
820
+ }
821
+ ]
822
+ },
823
+ {
824
+ "type": "card",
825
+ "children": [
826
+ {
827
+ "type": "stack",
828
+ "direction": "vertical",
829
+ "gap": "sm",
830
+ "children": [
831
+ {
832
+ "type": "typography",
833
+ "variant": "caption",
834
+ "content": "Timestamp"
835
+ },
836
+ {
837
+ "type": "typography",
838
+ "variant": "h3",
839
+ "content": "@entity.timestamp"
840
+ }
841
+ ]
842
+ }
843
+ ]
844
+ },
845
+ {
846
+ "type": "card",
847
+ "children": [
848
+ {
849
+ "type": "stack",
850
+ "direction": "vertical",
851
+ "gap": "sm",
852
+ "children": [
853
+ {
854
+ "type": "typography",
855
+ "variant": "caption",
856
+ "content": "Source"
857
+ },
858
+ {
859
+ "type": "typography",
860
+ "variant": "h3",
861
+ "content": "@entity.source"
862
+ }
863
+ ]
864
+ }
865
+ ]
866
+ }
867
+ ]
868
+ }
869
+ ]
870
+ }
871
+ ]
872
+ ]
873
+ },
874
+ {
875
+ "from": "displaying",
876
+ "to": "displaying",
877
+ "event": "INIT",
878
+ "effects": [
879
+ [
880
+ "fetch",
881
+ "AlertMetric"
882
+ ],
883
+ [
884
+ "render-ui",
885
+ "main",
886
+ {
887
+ "type": "stack",
888
+ "direction": "vertical",
889
+ "gap": "lg",
890
+ "children": [
891
+ {
892
+ "type": "stack",
893
+ "direction": "horizontal",
894
+ "gap": "md",
895
+ "justify": "space-between",
896
+ "children": [
897
+ {
898
+ "type": "stack",
899
+ "direction": "horizontal",
900
+ "gap": "md",
901
+ "children": [
902
+ {
903
+ "type": "icon",
904
+ "name": "alert-triangle",
905
+ "size": "lg"
906
+ },
907
+ {
908
+ "type": "typography",
909
+ "content": "Alerts",
910
+ "variant": "h2"
911
+ }
912
+ ]
913
+ },
914
+ {
915
+ "type": "button",
916
+ "label": "Refresh",
917
+ "event": "REFRESH",
918
+ "variant": "secondary",
919
+ "icon": "refresh-cw"
920
+ }
921
+ ]
922
+ },
923
+ {
924
+ "type": "divider"
925
+ },
926
+ {
927
+ "type": "simple-grid",
928
+ "columns": 3,
929
+ "children": [
930
+ {
931
+ "type": "card",
932
+ "children": [
933
+ {
934
+ "type": "stack",
935
+ "direction": "vertical",
936
+ "gap": "sm",
937
+ "children": [
938
+ {
939
+ "type": "typography",
940
+ "variant": "caption",
941
+ "content": "Severity"
942
+ },
943
+ {
944
+ "type": "typography",
945
+ "variant": "h3",
946
+ "content": "@entity.severity"
947
+ }
948
+ ]
949
+ }
950
+ ]
951
+ },
952
+ {
953
+ "type": "card",
954
+ "children": [
955
+ {
956
+ "type": "stack",
957
+ "direction": "vertical",
958
+ "gap": "sm",
959
+ "children": [
960
+ {
961
+ "type": "typography",
962
+ "variant": "caption",
963
+ "content": "Message"
964
+ },
965
+ {
966
+ "type": "typography",
967
+ "variant": "h3",
968
+ "content": "@entity.message"
969
+ }
970
+ ]
971
+ }
972
+ ]
973
+ },
974
+ {
975
+ "type": "card",
976
+ "children": [
977
+ {
978
+ "type": "stack",
979
+ "direction": "vertical",
980
+ "gap": "sm",
981
+ "children": [
982
+ {
983
+ "type": "typography",
984
+ "variant": "caption",
985
+ "content": "Timestamp"
986
+ },
987
+ {
988
+ "type": "typography",
989
+ "variant": "h3",
990
+ "content": "@entity.timestamp"
991
+ }
992
+ ]
993
+ }
994
+ ]
995
+ },
996
+ {
997
+ "type": "card",
998
+ "children": [
999
+ {
1000
+ "type": "stack",
1001
+ "direction": "vertical",
1002
+ "gap": "sm",
1003
+ "children": [
1004
+ {
1005
+ "type": "typography",
1006
+ "variant": "caption",
1007
+ "content": "Source"
1008
+ },
1009
+ {
1010
+ "type": "typography",
1011
+ "variant": "h3",
1012
+ "content": "@entity.source"
1013
+ }
1014
+ ]
1015
+ }
1016
+ ]
1017
+ }
1018
+ ]
1019
+ }
1020
+ ]
1021
+ }
1022
+ ]
1023
+ ]
1024
+ },
1025
+ {
1026
+ "from": "displaying",
1027
+ "to": "refreshing",
1028
+ "event": "REFRESH",
1029
+ "effects": [
1030
+ [
1031
+ "fetch",
1032
+ "AlertMetric"
1033
+ ],
1034
+ [
1035
+ "render-ui",
1036
+ "main",
1037
+ {
1038
+ "type": "stack",
1039
+ "direction": "vertical",
1040
+ "gap": "lg",
1041
+ "children": [
1042
+ {
1043
+ "type": "stack",
1044
+ "direction": "horizontal",
1045
+ "gap": "md",
1046
+ "justify": "space-between",
1047
+ "children": [
1048
+ {
1049
+ "type": "stack",
1050
+ "direction": "horizontal",
1051
+ "gap": "md",
1052
+ "children": [
1053
+ {
1054
+ "type": "icon",
1055
+ "name": "alert-triangle",
1056
+ "size": "lg"
1057
+ },
1058
+ {
1059
+ "type": "typography",
1060
+ "content": "Alerts",
1061
+ "variant": "h2"
1062
+ }
1063
+ ]
1064
+ },
1065
+ {
1066
+ "type": "button",
1067
+ "label": "Refresh",
1068
+ "event": "REFRESH",
1069
+ "variant": "secondary",
1070
+ "icon": "refresh-cw"
1071
+ }
1072
+ ]
1073
+ },
1074
+ {
1075
+ "type": "divider"
1076
+ },
1077
+ {
1078
+ "type": "simple-grid",
1079
+ "columns": 3,
1080
+ "children": [
1081
+ {
1082
+ "type": "card",
1083
+ "children": [
1084
+ {
1085
+ "type": "stack",
1086
+ "direction": "vertical",
1087
+ "gap": "sm",
1088
+ "children": [
1089
+ {
1090
+ "type": "typography",
1091
+ "variant": "caption",
1092
+ "content": "Severity"
1093
+ },
1094
+ {
1095
+ "type": "typography",
1096
+ "variant": "h3",
1097
+ "content": "@entity.severity"
1098
+ }
1099
+ ]
1100
+ }
1101
+ ]
1102
+ },
1103
+ {
1104
+ "type": "card",
1105
+ "children": [
1106
+ {
1107
+ "type": "stack",
1108
+ "direction": "vertical",
1109
+ "gap": "sm",
1110
+ "children": [
1111
+ {
1112
+ "type": "typography",
1113
+ "variant": "caption",
1114
+ "content": "Message"
1115
+ },
1116
+ {
1117
+ "type": "typography",
1118
+ "variant": "h3",
1119
+ "content": "@entity.message"
1120
+ }
1121
+ ]
1122
+ }
1123
+ ]
1124
+ },
1125
+ {
1126
+ "type": "card",
1127
+ "children": [
1128
+ {
1129
+ "type": "stack",
1130
+ "direction": "vertical",
1131
+ "gap": "sm",
1132
+ "children": [
1133
+ {
1134
+ "type": "typography",
1135
+ "variant": "caption",
1136
+ "content": "Timestamp"
1137
+ },
1138
+ {
1139
+ "type": "typography",
1140
+ "variant": "h3",
1141
+ "content": "@entity.timestamp"
1142
+ }
1143
+ ]
1144
+ }
1145
+ ]
1146
+ },
1147
+ {
1148
+ "type": "card",
1149
+ "children": [
1150
+ {
1151
+ "type": "stack",
1152
+ "direction": "vertical",
1153
+ "gap": "sm",
1154
+ "children": [
1155
+ {
1156
+ "type": "typography",
1157
+ "variant": "caption",
1158
+ "content": "Source"
1159
+ },
1160
+ {
1161
+ "type": "typography",
1162
+ "variant": "h3",
1163
+ "content": "@entity.source"
1164
+ }
1165
+ ]
1166
+ }
1167
+ ]
1168
+ }
1169
+ ]
1170
+ }
1171
+ ]
1172
+ }
1173
+ ]
1174
+ ]
1175
+ },
1176
+ {
1177
+ "from": "refreshing",
1178
+ "to": "displaying",
1179
+ "event": "REFRESHED",
1180
+ "effects": [
1181
+ [
1182
+ "fetch",
1183
+ "AlertMetric"
1184
+ ],
1185
+ [
1186
+ "render-ui",
1187
+ "main",
1188
+ {
1189
+ "type": "stack",
1190
+ "direction": "vertical",
1191
+ "gap": "lg",
1192
+ "children": [
1193
+ {
1194
+ "type": "stack",
1195
+ "direction": "horizontal",
1196
+ "gap": "md",
1197
+ "justify": "space-between",
1198
+ "children": [
1199
+ {
1200
+ "type": "stack",
1201
+ "direction": "horizontal",
1202
+ "gap": "md",
1203
+ "children": [
1204
+ {
1205
+ "type": "icon",
1206
+ "name": "alert-triangle",
1207
+ "size": "lg"
1208
+ },
1209
+ {
1210
+ "type": "typography",
1211
+ "content": "Alerts",
1212
+ "variant": "h2"
1213
+ }
1214
+ ]
1215
+ },
1216
+ {
1217
+ "type": "button",
1218
+ "label": "Refresh",
1219
+ "event": "REFRESH",
1220
+ "variant": "secondary",
1221
+ "icon": "refresh-cw"
1222
+ }
1223
+ ]
1224
+ },
1225
+ {
1226
+ "type": "divider"
1227
+ },
1228
+ {
1229
+ "type": "simple-grid",
1230
+ "columns": 3,
1231
+ "children": [
1232
+ {
1233
+ "type": "card",
1234
+ "children": [
1235
+ {
1236
+ "type": "stack",
1237
+ "direction": "vertical",
1238
+ "gap": "sm",
1239
+ "children": [
1240
+ {
1241
+ "type": "typography",
1242
+ "variant": "caption",
1243
+ "content": "Severity"
1244
+ },
1245
+ {
1246
+ "type": "typography",
1247
+ "variant": "h3",
1248
+ "content": "@entity.severity"
1249
+ }
1250
+ ]
1251
+ }
1252
+ ]
1253
+ },
1254
+ {
1255
+ "type": "card",
1256
+ "children": [
1257
+ {
1258
+ "type": "stack",
1259
+ "direction": "vertical",
1260
+ "gap": "sm",
1261
+ "children": [
1262
+ {
1263
+ "type": "typography",
1264
+ "variant": "caption",
1265
+ "content": "Message"
1266
+ },
1267
+ {
1268
+ "type": "typography",
1269
+ "variant": "h3",
1270
+ "content": "@entity.message"
1271
+ }
1272
+ ]
1273
+ }
1274
+ ]
1275
+ },
1276
+ {
1277
+ "type": "card",
1278
+ "children": [
1279
+ {
1280
+ "type": "stack",
1281
+ "direction": "vertical",
1282
+ "gap": "sm",
1283
+ "children": [
1284
+ {
1285
+ "type": "typography",
1286
+ "variant": "caption",
1287
+ "content": "Timestamp"
1288
+ },
1289
+ {
1290
+ "type": "typography",
1291
+ "variant": "h3",
1292
+ "content": "@entity.timestamp"
1293
+ }
1294
+ ]
1295
+ }
1296
+ ]
1297
+ },
1298
+ {
1299
+ "type": "card",
1300
+ "children": [
1301
+ {
1302
+ "type": "stack",
1303
+ "direction": "vertical",
1304
+ "gap": "sm",
1305
+ "children": [
1306
+ {
1307
+ "type": "typography",
1308
+ "variant": "caption",
1309
+ "content": "Source"
1310
+ },
1311
+ {
1312
+ "type": "typography",
1313
+ "variant": "h3",
1314
+ "content": "@entity.source"
1315
+ }
1316
+ ]
1317
+ }
1318
+ ]
1319
+ }
1320
+ ]
1321
+ }
1322
+ ]
1323
+ }
1324
+ ]
1325
+ ]
1326
+ }
1327
+ ]
1328
+ }
1329
+ }
1330
+ ],
1331
+ "pages": [
1332
+ {
1333
+ "name": "AlertsPage",
1334
+ "path": "/alerts",
1335
+ "traits": [
1336
+ {
1337
+ "ref": "AlertMetricDisplay"
1338
+ }
1339
+ ]
1340
+ }
1341
+ ]
1342
+ },
1343
+ {
1344
+ "name": "LogEntryOrbital",
1345
+ "entity": {
1346
+ "name": "LogEntry",
1347
+ "persistence": "runtime",
1348
+ "fields": [
1349
+ {
1350
+ "name": "id",
1351
+ "type": "string",
1352
+ "required": true
1353
+ },
1354
+ {
1355
+ "name": "level",
1356
+ "type": "string",
1357
+ "required": true
1358
+ },
1359
+ {
1360
+ "name": "message",
1361
+ "type": "string",
1362
+ "required": true
1363
+ },
1364
+ {
1365
+ "name": "timestamp",
1366
+ "type": "string"
1367
+ },
1368
+ {
1369
+ "name": "service",
1370
+ "type": "string"
1371
+ }
1372
+ ]
1373
+ },
1374
+ "traits": [
1375
+ {
1376
+ "name": "LogEntryBrowse",
1377
+ "linkedEntity": "LogEntry",
1378
+ "category": "interaction",
1379
+ "listens": [
1380
+ {
1381
+ "event": "LOG_ENTRY_CREATED",
1382
+ "triggers": "LOG_ENTRY_CREATED"
1383
+ },
1384
+ {
1385
+ "event": "LOG_ENTRY_UPDATED",
1386
+ "triggers": "LOG_ENTRY_UPDATED"
1387
+ }
1388
+ ],
1389
+ "stateMachine": {
1390
+ "states": [
1391
+ {
1392
+ "name": "browsing",
1393
+ "isInitial": true
1394
+ },
1395
+ {
1396
+ "name": "deleting"
1397
+ }
1398
+ ],
1399
+ "events": [
1400
+ {
1401
+ "key": "INIT",
1402
+ "name": "Initialize"
1403
+ },
1404
+ {
1405
+ "key": "CREATE",
1406
+ "name": "CREATE"
1407
+ },
1408
+ {
1409
+ "key": "VIEW",
1410
+ "name": "VIEW",
1411
+ "payload": [
1412
+ {
1413
+ "name": "id",
1414
+ "type": "string",
1415
+ "required": true
1416
+ }
1417
+ ]
1418
+ },
1419
+ {
1420
+ "key": "EDIT",
1421
+ "name": "EDIT",
1422
+ "payload": [
1423
+ {
1424
+ "name": "id",
1425
+ "type": "string",
1426
+ "required": true
1427
+ }
1428
+ ]
1429
+ },
1430
+ {
1431
+ "key": "DELETE",
1432
+ "name": "DELETE",
1433
+ "payload": [
1434
+ {
1435
+ "name": "id",
1436
+ "type": "string",
1437
+ "required": true
1438
+ }
1439
+ ]
1440
+ },
1441
+ {
1442
+ "key": "LOG_ENTRY_CREATED",
1443
+ "name": "LOG_ENTRY_CREATED",
1444
+ "payload": [
1445
+ {
1446
+ "name": "data",
1447
+ "type": "object",
1448
+ "required": true
1449
+ }
1450
+ ]
1451
+ },
1452
+ {
1453
+ "key": "LOG_ENTRY_UPDATED",
1454
+ "name": "LOG_ENTRY_UPDATED",
1455
+ "payload": [
1456
+ {
1457
+ "name": "data",
1458
+ "type": "object",
1459
+ "required": true
1460
+ }
1461
+ ]
1462
+ },
1463
+ {
1464
+ "key": "CONFIRM_DELETE",
1465
+ "name": "Confirm Delete"
1466
+ },
1467
+ {
1468
+ "key": "CANCEL",
1469
+ "name": "Cancel"
1470
+ },
1471
+ {
1472
+ "key": "CLOSE",
1473
+ "name": "Close"
1474
+ }
1475
+ ],
1476
+ "transitions": [
1477
+ {
1478
+ "from": "browsing",
1479
+ "to": "browsing",
1480
+ "event": "INIT",
1481
+ "effects": [
1482
+ [
1483
+ "fetch",
1484
+ "LogEntry"
1485
+ ],
1486
+ [
1487
+ "render-ui",
1488
+ "main",
1489
+ {
1490
+ "type": "stack",
1491
+ "direction": "vertical",
1492
+ "gap": "lg",
1493
+ "children": [
1494
+ {
1495
+ "type": "stack",
1496
+ "direction": "horizontal",
1497
+ "gap": "md",
1498
+ "justify": "space-between",
1499
+ "children": [
1500
+ {
1501
+ "type": "stack",
1502
+ "direction": "horizontal",
1503
+ "gap": "sm",
1504
+ "align": "center",
1505
+ "children": [
1506
+ {
1507
+ "type": "icon",
1508
+ "name": "file-text",
1509
+ "size": "lg"
1510
+ },
1511
+ {
1512
+ "type": "typography",
1513
+ "content": "Logs",
1514
+ "variant": "h2"
1515
+ }
1516
+ ]
1517
+ },
1518
+ {
1519
+ "type": "stack",
1520
+ "direction": "horizontal",
1521
+ "gap": "sm",
1522
+ "children": [
1523
+ {
1524
+ "type": "button",
1525
+ "label": "Create LogEntry",
1526
+ "event": "CREATE",
1527
+ "variant": "primary",
1528
+ "icon": "plus"
1529
+ }
1530
+ ]
1531
+ }
1532
+ ]
1533
+ },
1534
+ {
1535
+ "type": "divider"
1536
+ },
1537
+ {
1538
+ "type": "data-grid",
1539
+ "entity": "LogEntry",
1540
+ "emptyIcon": "inbox",
1541
+ "emptyTitle": "No logentrys yet",
1542
+ "emptyDescription": "Create your first logentry to get started.",
1543
+ "itemActions": [
1544
+ {
1545
+ "label": "View",
1546
+ "event": "VIEW"
1547
+ },
1548
+ {
1549
+ "label": "Edit",
1550
+ "event": "EDIT"
1551
+ },
1552
+ {
1553
+ "label": "Delete",
1554
+ "event": "DELETE",
1555
+ "variant": "danger"
1556
+ }
1557
+ ],
1558
+ "className": "transition-shadow hover:shadow-md cursor-pointer",
1559
+ "children": [
1560
+ {
1561
+ "type": "stack",
1562
+ "direction": "vertical",
1563
+ "gap": "sm",
1564
+ "children": [
1565
+ {
1566
+ "type": "stack",
1567
+ "direction": "horizontal",
1568
+ "justify": "space-between",
1569
+ "align": "center",
1570
+ "children": [
1571
+ {
1572
+ "type": "stack",
1573
+ "direction": "horizontal",
1574
+ "gap": "sm",
1575
+ "align": "center",
1576
+ "children": [
1577
+ {
1578
+ "type": "icon",
1579
+ "name": "file-text",
1580
+ "size": "sm"
1581
+ },
1582
+ {
1583
+ "type": "typography",
1584
+ "variant": "h4",
1585
+ "content": "@entity.level"
1586
+ }
1587
+ ]
1588
+ },
1589
+ {
1590
+ "type": "badge",
1591
+ "label": "@entity.message"
1592
+ }
1593
+ ]
1594
+ },
1595
+ {
1596
+ "type": "typography",
1597
+ "variant": "caption",
1598
+ "color": "muted",
1599
+ "content": "@entity.timestamp"
1600
+ }
1601
+ ]
1602
+ }
1603
+ ]
1604
+ }
1605
+ ]
1606
+ }
1607
+ ]
1608
+ ]
1609
+ },
1610
+ {
1611
+ "from": "browsing",
1612
+ "to": "browsing",
1613
+ "event": "LOG_ENTRY_CREATED",
1614
+ "effects": [
1615
+ [
1616
+ "fetch",
1617
+ "LogEntry"
1618
+ ]
1619
+ ]
1620
+ },
1621
+ {
1622
+ "from": "browsing",
1623
+ "to": "browsing",
1624
+ "event": "LOG_ENTRY_UPDATED",
1625
+ "effects": [
1626
+ [
1627
+ "fetch",
1628
+ "LogEntry"
1629
+ ]
1630
+ ]
1631
+ },
1632
+ {
1633
+ "from": "browsing",
1634
+ "to": "deleting",
1635
+ "event": "DELETE",
1636
+ "effects": [
1637
+ [
1638
+ "fetch",
1639
+ "LogEntry",
1640
+ "@payload.id"
1641
+ ],
1642
+ [
1643
+ "render-ui",
1644
+ "modal",
1645
+ {
1646
+ "type": "stack",
1647
+ "direction": "vertical",
1648
+ "gap": "md",
1649
+ "children": [
1650
+ {
1651
+ "type": "stack",
1652
+ "direction": "horizontal",
1653
+ "gap": "sm",
1654
+ "children": [
1655
+ {
1656
+ "type": "icon",
1657
+ "name": "trash-2",
1658
+ "size": "md"
1659
+ },
1660
+ {
1661
+ "type": "typography",
1662
+ "content": "Delete LogEntry",
1663
+ "variant": "h3"
1664
+ }
1665
+ ]
1666
+ },
1667
+ {
1668
+ "type": "divider"
1669
+ },
1670
+ {
1671
+ "type": "typography",
1672
+ "content": "Are you sure you want to delete this logentry?",
1673
+ "variant": "body"
1674
+ },
1675
+ {
1676
+ "type": "stack",
1677
+ "direction": "horizontal",
1678
+ "gap": "sm",
1679
+ "justify": "end",
1680
+ "children": [
1681
+ {
1682
+ "type": "button",
1683
+ "label": "Cancel",
1684
+ "event": "CANCEL",
1685
+ "variant": "ghost"
1686
+ },
1687
+ {
1688
+ "type": "button",
1689
+ "label": "Delete",
1690
+ "event": "CONFIRM_DELETE",
1691
+ "variant": "danger",
1692
+ "icon": "trash"
1693
+ }
1694
+ ]
1695
+ }
1696
+ ]
1697
+ }
1698
+ ]
1699
+ ]
1700
+ },
1701
+ {
1702
+ "from": "deleting",
1703
+ "to": "browsing",
1704
+ "event": "CONFIRM_DELETE",
1705
+ "effects": [
1706
+ [
1707
+ "persist",
1708
+ "delete",
1709
+ "LogEntry",
1710
+ "@entity.id"
1711
+ ],
1712
+ [
1713
+ "render-ui",
1714
+ "modal",
1715
+ null
1716
+ ],
1717
+ [
1718
+ "fetch",
1719
+ "LogEntry"
1720
+ ],
1721
+ [
1722
+ "notify",
1723
+ "LogEntry deleted successfully"
1724
+ ]
1725
+ ]
1726
+ },
1727
+ {
1728
+ "from": "deleting",
1729
+ "to": "browsing",
1730
+ "event": "CANCEL",
1731
+ "effects": [
1732
+ [
1733
+ "render-ui",
1734
+ "modal",
1735
+ null
1736
+ ]
1737
+ ]
1738
+ },
1739
+ {
1740
+ "from": "deleting",
1741
+ "to": "browsing",
1742
+ "event": "CLOSE",
1743
+ "effects": [
1744
+ [
1745
+ "render-ui",
1746
+ "modal",
1747
+ null
1748
+ ]
1749
+ ]
1750
+ }
1751
+ ]
1752
+ }
1753
+ },
1754
+ {
1755
+ "name": "LogEntryCreate",
1756
+ "linkedEntity": "LogEntry",
1757
+ "category": "interaction",
1758
+ "emits": [
1759
+ {
1760
+ "event": "LOG_ENTRY_CREATED"
1761
+ }
1762
+ ],
1763
+ "stateMachine": {
1764
+ "states": [
1765
+ {
1766
+ "name": "closed",
1767
+ "isInitial": true
1768
+ },
1769
+ {
1770
+ "name": "open"
1771
+ }
1772
+ ],
1773
+ "events": [
1774
+ {
1775
+ "key": "INIT",
1776
+ "name": "Initialize"
1777
+ },
1778
+ {
1779
+ "key": "CREATE",
1780
+ "name": "Open"
1781
+ },
1782
+ {
1783
+ "key": "CLOSE",
1784
+ "name": "Close"
1785
+ },
1786
+ {
1787
+ "key": "SAVE",
1788
+ "name": "Save",
1789
+ "payload": [
1790
+ {
1791
+ "name": "data",
1792
+ "type": "object",
1793
+ "required": true
1794
+ }
1795
+ ]
1796
+ }
1797
+ ],
1798
+ "transitions": [
1799
+ {
1800
+ "from": "closed",
1801
+ "to": "closed",
1802
+ "event": "INIT",
1803
+ "effects": [
1804
+ [
1805
+ "fetch",
1806
+ "LogEntry"
1807
+ ]
1808
+ ]
1809
+ },
1810
+ {
1811
+ "from": "closed",
1812
+ "to": "open",
1813
+ "event": "CREATE",
1814
+ "effects": [
1815
+ [
1816
+ "fetch",
1817
+ "LogEntry"
1818
+ ],
1819
+ [
1820
+ "render-ui",
1821
+ "modal",
1822
+ {
1823
+ "type": "stack",
1824
+ "direction": "vertical",
1825
+ "gap": "md",
1826
+ "children": [
1827
+ {
1828
+ "type": "stack",
1829
+ "direction": "horizontal",
1830
+ "gap": "sm",
1831
+ "children": [
1832
+ {
1833
+ "type": "icon",
1834
+ "name": "plus-circle",
1835
+ "size": "md"
1836
+ },
1837
+ {
1838
+ "type": "typography",
1839
+ "content": "Create LogEntry",
1840
+ "variant": "h3"
1841
+ }
1842
+ ]
1843
+ },
1844
+ {
1845
+ "type": "divider"
1846
+ },
1847
+ {
1848
+ "type": "form-section",
1849
+ "entity": "LogEntry",
1850
+ "mode": "create",
1851
+ "submitEvent": "SAVE",
1852
+ "cancelEvent": "CLOSE",
1853
+ "fields": [
1854
+ "level",
1855
+ "message",
1856
+ "timestamp",
1857
+ "service"
1858
+ ]
1859
+ }
1860
+ ]
1861
+ }
1862
+ ]
1863
+ ]
1864
+ },
1865
+ {
1866
+ "from": "open",
1867
+ "to": "closed",
1868
+ "event": "CLOSE",
1869
+ "effects": [
1870
+ [
1871
+ "render-ui",
1872
+ "modal",
1873
+ null
1874
+ ]
1875
+ ]
1876
+ },
1877
+ {
1878
+ "from": "open",
1879
+ "to": "closed",
1880
+ "event": "SAVE",
1881
+ "effects": [
1882
+ [
1883
+ "persist",
1884
+ "create",
1885
+ "LogEntry",
1886
+ "@payload.data"
1887
+ ],
1888
+ [
1889
+ "fetch",
1890
+ "LogEntry"
1891
+ ],
1892
+ [
1893
+ "render-ui",
1894
+ "modal",
1895
+ null
1896
+ ],
1897
+ [
1898
+ "emit",
1899
+ "LOG_ENTRY_CREATED"
1900
+ ],
1901
+ [
1902
+ "notify",
1903
+ "LogEntry created successfully"
1904
+ ]
1905
+ ]
1906
+ }
1907
+ ]
1908
+ }
1909
+ },
1910
+ {
1911
+ "name": "LogEntryEdit",
1912
+ "linkedEntity": "LogEntry",
1913
+ "category": "interaction",
1914
+ "emits": [
1915
+ {
1916
+ "event": "LOG_ENTRY_UPDATED"
1917
+ }
1918
+ ],
1919
+ "stateMachine": {
1920
+ "states": [
1921
+ {
1922
+ "name": "closed",
1923
+ "isInitial": true
1924
+ },
1925
+ {
1926
+ "name": "open"
1927
+ }
1928
+ ],
1929
+ "events": [
1930
+ {
1931
+ "key": "INIT",
1932
+ "name": "Initialize"
1933
+ },
1934
+ {
1935
+ "key": "EDIT",
1936
+ "name": "Open",
1937
+ "payload": [
1938
+ {
1939
+ "name": "id",
1940
+ "type": "string",
1941
+ "required": true
1942
+ }
1943
+ ]
1944
+ },
1945
+ {
1946
+ "key": "CLOSE",
1947
+ "name": "Close"
1948
+ },
1949
+ {
1950
+ "key": "SAVE",
1951
+ "name": "Save",
1952
+ "payload": [
1953
+ {
1954
+ "name": "data",
1955
+ "type": "object",
1956
+ "required": true
1957
+ }
1958
+ ]
1959
+ }
1960
+ ],
1961
+ "transitions": [
1962
+ {
1963
+ "from": "closed",
1964
+ "to": "closed",
1965
+ "event": "INIT",
1966
+ "effects": [
1967
+ [
1968
+ "fetch",
1969
+ "LogEntry"
1970
+ ]
1971
+ ]
1972
+ },
1973
+ {
1974
+ "from": "closed",
1975
+ "to": "open",
1976
+ "event": "EDIT",
1977
+ "effects": [
1978
+ [
1979
+ "fetch",
1980
+ "LogEntry",
1981
+ "@payload.id"
1982
+ ],
1983
+ [
1984
+ "render-ui",
1985
+ "modal",
1986
+ {
1987
+ "type": "stack",
1988
+ "direction": "vertical",
1989
+ "gap": "md",
1990
+ "children": [
1991
+ {
1992
+ "type": "stack",
1993
+ "direction": "horizontal",
1994
+ "gap": "sm",
1995
+ "children": [
1996
+ {
1997
+ "type": "icon",
1998
+ "name": "edit",
1999
+ "size": "md"
2000
+ },
2001
+ {
2002
+ "type": "typography",
2003
+ "content": "Edit LogEntry",
2004
+ "variant": "h3"
2005
+ }
2006
+ ]
2007
+ },
2008
+ {
2009
+ "type": "divider"
2010
+ },
2011
+ {
2012
+ "type": "form-section",
2013
+ "entity": "LogEntry",
2014
+ "mode": "edit",
2015
+ "submitEvent": "SAVE",
2016
+ "cancelEvent": "CLOSE",
2017
+ "fields": [
2018
+ "level",
2019
+ "message",
2020
+ "timestamp",
2021
+ "service"
2022
+ ]
2023
+ }
2024
+ ]
2025
+ }
2026
+ ]
2027
+ ]
2028
+ },
2029
+ {
2030
+ "from": "open",
2031
+ "to": "closed",
2032
+ "event": "CLOSE",
2033
+ "effects": [
2034
+ [
2035
+ "render-ui",
2036
+ "modal",
2037
+ null
2038
+ ]
2039
+ ]
2040
+ },
2041
+ {
2042
+ "from": "open",
2043
+ "to": "closed",
2044
+ "event": "SAVE",
2045
+ "effects": [
2046
+ [
2047
+ "persist",
2048
+ "update",
2049
+ "LogEntry",
2050
+ "@payload.data"
2051
+ ],
2052
+ [
2053
+ "fetch",
2054
+ "LogEntry"
2055
+ ],
2056
+ [
2057
+ "render-ui",
2058
+ "modal",
2059
+ null
2060
+ ],
2061
+ [
2062
+ "emit",
2063
+ "LOG_ENTRY_UPDATED"
2064
+ ],
2065
+ [
2066
+ "notify",
2067
+ "LogEntry updated successfully"
2068
+ ]
2069
+ ]
2070
+ }
2071
+ ]
2072
+ }
2073
+ },
2074
+ {
2075
+ "name": "LogEntryView",
2076
+ "linkedEntity": "LogEntry",
2077
+ "category": "interaction",
2078
+ "stateMachine": {
2079
+ "states": [
2080
+ {
2081
+ "name": "closed",
2082
+ "isInitial": true
2083
+ },
2084
+ {
2085
+ "name": "open"
2086
+ }
2087
+ ],
2088
+ "events": [
2089
+ {
2090
+ "key": "INIT",
2091
+ "name": "Initialize"
2092
+ },
2093
+ {
2094
+ "key": "VIEW",
2095
+ "name": "Open",
2096
+ "payload": [
2097
+ {
2098
+ "name": "id",
2099
+ "type": "string",
2100
+ "required": true
2101
+ }
2102
+ ]
2103
+ },
2104
+ {
2105
+ "key": "CLOSE",
2106
+ "name": "Close"
2107
+ }
2108
+ ],
2109
+ "transitions": [
2110
+ {
2111
+ "from": "closed",
2112
+ "to": "closed",
2113
+ "event": "INIT",
2114
+ "effects": [
2115
+ [
2116
+ "fetch",
2117
+ "LogEntry"
2118
+ ]
2119
+ ]
2120
+ },
2121
+ {
2122
+ "from": "closed",
2123
+ "to": "open",
2124
+ "event": "VIEW",
2125
+ "effects": [
2126
+ [
2127
+ "fetch",
2128
+ "LogEntry",
2129
+ "@payload.id"
2130
+ ],
2131
+ [
2132
+ "render-ui",
2133
+ "modal",
2134
+ {
2135
+ "type": "stack",
2136
+ "direction": "vertical",
2137
+ "gap": "md",
2138
+ "children": [
2139
+ {
2140
+ "type": "stack",
2141
+ "direction": "horizontal",
2142
+ "gap": "sm",
2143
+ "align": "center",
2144
+ "children": [
2145
+ {
2146
+ "type": "icon",
2147
+ "name": "eye",
2148
+ "size": "md"
2149
+ },
2150
+ {
2151
+ "type": "typography",
2152
+ "variant": "h3",
2153
+ "content": "@entity.level"
2154
+ }
2155
+ ]
2156
+ },
2157
+ {
2158
+ "type": "divider"
2159
+ },
2160
+ {
2161
+ "type": "stack",
2162
+ "direction": "horizontal",
2163
+ "gap": "md",
2164
+ "children": [
2165
+ {
2166
+ "type": "typography",
2167
+ "variant": "caption",
2168
+ "content": "Level"
2169
+ },
2170
+ {
2171
+ "type": "typography",
2172
+ "variant": "body",
2173
+ "content": "@entity.level"
2174
+ }
2175
+ ]
2176
+ },
2177
+ {
2178
+ "type": "stack",
2179
+ "direction": "horizontal",
2180
+ "gap": "md",
2181
+ "children": [
2182
+ {
2183
+ "type": "typography",
2184
+ "variant": "caption",
2185
+ "content": "Message"
2186
+ },
2187
+ {
2188
+ "type": "typography",
2189
+ "variant": "body",
2190
+ "content": "@entity.message"
2191
+ }
2192
+ ]
2193
+ },
2194
+ {
2195
+ "type": "stack",
2196
+ "direction": "horizontal",
2197
+ "gap": "md",
2198
+ "children": [
2199
+ {
2200
+ "type": "typography",
2201
+ "variant": "caption",
2202
+ "content": "Timestamp"
2203
+ },
2204
+ {
2205
+ "type": "typography",
2206
+ "variant": "body",
2207
+ "content": "@entity.timestamp"
2208
+ }
2209
+ ]
2210
+ },
2211
+ {
2212
+ "type": "stack",
2213
+ "direction": "horizontal",
2214
+ "gap": "md",
2215
+ "children": [
2216
+ {
2217
+ "type": "typography",
2218
+ "variant": "caption",
2219
+ "content": "Service"
2220
+ },
2221
+ {
2222
+ "type": "typography",
2223
+ "variant": "body",
2224
+ "content": "@entity.service"
2225
+ }
2226
+ ]
2227
+ },
2228
+ {
2229
+ "type": "divider"
2230
+ },
2231
+ {
2232
+ "type": "stack",
2233
+ "direction": "horizontal",
2234
+ "gap": "sm",
2235
+ "justify": "end",
2236
+ "children": [
2237
+ {
2238
+ "type": "button",
2239
+ "label": "Edit",
2240
+ "event": "EDIT",
2241
+ "variant": "primary",
2242
+ "icon": "edit"
2243
+ },
2244
+ {
2245
+ "type": "button",
2246
+ "label": "Close",
2247
+ "event": "CLOSE",
2248
+ "variant": "ghost"
2249
+ }
2250
+ ]
2251
+ }
2252
+ ]
2253
+ }
2254
+ ]
2255
+ ]
2256
+ },
2257
+ {
2258
+ "from": "open",
2259
+ "to": "closed",
2260
+ "event": "CLOSE",
2261
+ "effects": [
2262
+ [
2263
+ "render-ui",
2264
+ "modal",
2265
+ null
2266
+ ]
2267
+ ]
2268
+ }
2269
+ ]
2270
+ }
2271
+ }
2272
+ ],
2273
+ "pages": [
2274
+ {
2275
+ "name": "LogsPage",
2276
+ "path": "/logs",
2277
+ "traits": [
2278
+ {
2279
+ "ref": "LogEntryBrowse"
2280
+ },
2281
+ {
2282
+ "ref": "LogEntryCreate"
2283
+ },
2284
+ {
2285
+ "ref": "LogEntryEdit"
2286
+ },
2287
+ {
2288
+ "ref": "LogEntryView"
2289
+ }
2290
+ ]
2291
+ }
2292
+ ]
2293
+ },
2294
+ {
2295
+ "name": "SystemMetricOrbital",
2296
+ "entity": {
2297
+ "name": "SystemMetric",
2298
+ "persistence": "runtime",
2299
+ "fields": [
2300
+ {
2301
+ "name": "id",
2302
+ "type": "string",
2303
+ "required": true
2304
+ },
2305
+ {
2306
+ "name": "name",
2307
+ "type": "string",
2308
+ "required": true
2309
+ },
2310
+ {
2311
+ "name": "value",
2312
+ "type": "number",
2313
+ "required": true
2314
+ },
2315
+ {
2316
+ "name": "unit",
2317
+ "type": "string"
2318
+ },
2319
+ {
2320
+ "name": "trend",
2321
+ "type": "string"
2322
+ }
2323
+ ]
2324
+ },
2325
+ "traits": [
2326
+ {
2327
+ "name": "SystemMetricDisplay",
2328
+ "linkedEntity": "SystemMetric",
2329
+ "category": "interaction",
2330
+ "stateMachine": {
2331
+ "states": [
2332
+ {
2333
+ "name": "loading",
2334
+ "isInitial": true
2335
+ },
2336
+ {
2337
+ "name": "displaying"
2338
+ },
2339
+ {
2340
+ "name": "refreshing"
2341
+ }
2342
+ ],
2343
+ "events": [
2344
+ {
2345
+ "key": "INIT",
2346
+ "name": "Initialize"
2347
+ },
2348
+ {
2349
+ "key": "LOADED",
2350
+ "name": "Loaded"
2351
+ },
2352
+ {
2353
+ "key": "REFRESH",
2354
+ "name": "Refresh"
2355
+ },
2356
+ {
2357
+ "key": "REFRESHED",
2358
+ "name": "Refreshed"
2359
+ }
2360
+ ],
2361
+ "transitions": [
2362
+ {
2363
+ "from": "loading",
2364
+ "to": "displaying",
2365
+ "event": "INIT",
2366
+ "effects": [
2367
+ [
2368
+ "fetch",
2369
+ "SystemMetric"
2370
+ ],
2371
+ [
2372
+ "render-ui",
2373
+ "main",
2374
+ {
2375
+ "type": "stack",
2376
+ "direction": "vertical",
2377
+ "gap": "lg",
2378
+ "children": [
2379
+ {
2380
+ "type": "stack",
2381
+ "direction": "horizontal",
2382
+ "gap": "md",
2383
+ "justify": "space-between",
2384
+ "children": [
2385
+ {
2386
+ "type": "stack",
2387
+ "direction": "horizontal",
2388
+ "gap": "md",
2389
+ "children": [
2390
+ {
2391
+ "type": "icon",
2392
+ "name": "activity",
2393
+ "size": "lg"
2394
+ },
2395
+ {
2396
+ "type": "typography",
2397
+ "content": "Metrics",
2398
+ "variant": "h2"
2399
+ }
2400
+ ]
2401
+ },
2402
+ {
2403
+ "type": "button",
2404
+ "label": "Refresh",
2405
+ "event": "REFRESH",
2406
+ "variant": "secondary",
2407
+ "icon": "refresh-cw"
2408
+ }
2409
+ ]
2410
+ },
2411
+ {
2412
+ "type": "divider"
2413
+ },
2414
+ {
2415
+ "type": "simple-grid",
2416
+ "columns": 3,
2417
+ "children": [
2418
+ {
2419
+ "type": "card",
2420
+ "children": [
2421
+ {
2422
+ "type": "stack",
2423
+ "direction": "vertical",
2424
+ "gap": "sm",
2425
+ "children": [
2426
+ {
2427
+ "type": "typography",
2428
+ "variant": "caption",
2429
+ "content": "Name"
2430
+ },
2431
+ {
2432
+ "type": "typography",
2433
+ "variant": "h3",
2434
+ "content": "@entity.name"
2435
+ }
2436
+ ]
2437
+ }
2438
+ ]
2439
+ },
2440
+ {
2441
+ "type": "card",
2442
+ "children": [
2443
+ {
2444
+ "type": "stack",
2445
+ "direction": "vertical",
2446
+ "gap": "sm",
2447
+ "children": [
2448
+ {
2449
+ "type": "typography",
2450
+ "variant": "caption",
2451
+ "content": "Value"
2452
+ },
2453
+ {
2454
+ "type": "typography",
2455
+ "variant": "h3",
2456
+ "content": "@entity.value"
2457
+ }
2458
+ ]
2459
+ }
2460
+ ]
2461
+ },
2462
+ {
2463
+ "type": "card",
2464
+ "children": [
2465
+ {
2466
+ "type": "stack",
2467
+ "direction": "vertical",
2468
+ "gap": "sm",
2469
+ "children": [
2470
+ {
2471
+ "type": "typography",
2472
+ "variant": "caption",
2473
+ "content": "Unit"
2474
+ },
2475
+ {
2476
+ "type": "typography",
2477
+ "variant": "h3",
2478
+ "content": "@entity.unit"
2479
+ }
2480
+ ]
2481
+ }
2482
+ ]
2483
+ },
2484
+ {
2485
+ "type": "card",
2486
+ "children": [
2487
+ {
2488
+ "type": "stack",
2489
+ "direction": "vertical",
2490
+ "gap": "sm",
2491
+ "children": [
2492
+ {
2493
+ "type": "typography",
2494
+ "variant": "caption",
2495
+ "content": "Trend"
2496
+ },
2497
+ {
2498
+ "type": "typography",
2499
+ "variant": "h3",
2500
+ "content": "@entity.trend"
2501
+ }
2502
+ ]
2503
+ }
2504
+ ]
2505
+ }
2506
+ ]
2507
+ }
2508
+ ]
2509
+ }
2510
+ ]
2511
+ ]
2512
+ },
2513
+ {
2514
+ "from": "loading",
2515
+ "to": "displaying",
2516
+ "event": "LOADED",
2517
+ "effects": [
2518
+ [
2519
+ "fetch",
2520
+ "SystemMetric"
2521
+ ],
2522
+ [
2523
+ "render-ui",
2524
+ "main",
2525
+ {
2526
+ "type": "stack",
2527
+ "direction": "vertical",
2528
+ "gap": "lg",
2529
+ "children": [
2530
+ {
2531
+ "type": "stack",
2532
+ "direction": "horizontal",
2533
+ "gap": "md",
2534
+ "justify": "space-between",
2535
+ "children": [
2536
+ {
2537
+ "type": "stack",
2538
+ "direction": "horizontal",
2539
+ "gap": "md",
2540
+ "children": [
2541
+ {
2542
+ "type": "icon",
2543
+ "name": "activity",
2544
+ "size": "lg"
2545
+ },
2546
+ {
2547
+ "type": "typography",
2548
+ "content": "Metrics",
2549
+ "variant": "h2"
2550
+ }
2551
+ ]
2552
+ },
2553
+ {
2554
+ "type": "button",
2555
+ "label": "Refresh",
2556
+ "event": "REFRESH",
2557
+ "variant": "secondary",
2558
+ "icon": "refresh-cw"
2559
+ }
2560
+ ]
2561
+ },
2562
+ {
2563
+ "type": "divider"
2564
+ },
2565
+ {
2566
+ "type": "simple-grid",
2567
+ "columns": 3,
2568
+ "children": [
2569
+ {
2570
+ "type": "card",
2571
+ "children": [
2572
+ {
2573
+ "type": "stack",
2574
+ "direction": "vertical",
2575
+ "gap": "sm",
2576
+ "children": [
2577
+ {
2578
+ "type": "typography",
2579
+ "variant": "caption",
2580
+ "content": "Name"
2581
+ },
2582
+ {
2583
+ "type": "typography",
2584
+ "variant": "h3",
2585
+ "content": "@entity.name"
2586
+ }
2587
+ ]
2588
+ }
2589
+ ]
2590
+ },
2591
+ {
2592
+ "type": "card",
2593
+ "children": [
2594
+ {
2595
+ "type": "stack",
2596
+ "direction": "vertical",
2597
+ "gap": "sm",
2598
+ "children": [
2599
+ {
2600
+ "type": "typography",
2601
+ "variant": "caption",
2602
+ "content": "Value"
2603
+ },
2604
+ {
2605
+ "type": "typography",
2606
+ "variant": "h3",
2607
+ "content": "@entity.value"
2608
+ }
2609
+ ]
2610
+ }
2611
+ ]
2612
+ },
2613
+ {
2614
+ "type": "card",
2615
+ "children": [
2616
+ {
2617
+ "type": "stack",
2618
+ "direction": "vertical",
2619
+ "gap": "sm",
2620
+ "children": [
2621
+ {
2622
+ "type": "typography",
2623
+ "variant": "caption",
2624
+ "content": "Unit"
2625
+ },
2626
+ {
2627
+ "type": "typography",
2628
+ "variant": "h3",
2629
+ "content": "@entity.unit"
2630
+ }
2631
+ ]
2632
+ }
2633
+ ]
2634
+ },
2635
+ {
2636
+ "type": "card",
2637
+ "children": [
2638
+ {
2639
+ "type": "stack",
2640
+ "direction": "vertical",
2641
+ "gap": "sm",
2642
+ "children": [
2643
+ {
2644
+ "type": "typography",
2645
+ "variant": "caption",
2646
+ "content": "Trend"
2647
+ },
2648
+ {
2649
+ "type": "typography",
2650
+ "variant": "h3",
2651
+ "content": "@entity.trend"
2652
+ }
2653
+ ]
2654
+ }
2655
+ ]
2656
+ }
2657
+ ]
2658
+ }
2659
+ ]
2660
+ }
2661
+ ]
2662
+ ]
2663
+ },
2664
+ {
2665
+ "from": "displaying",
2666
+ "to": "displaying",
2667
+ "event": "INIT",
2668
+ "effects": [
2669
+ [
2670
+ "fetch",
2671
+ "SystemMetric"
2672
+ ],
2673
+ [
2674
+ "render-ui",
2675
+ "main",
2676
+ {
2677
+ "type": "stack",
2678
+ "direction": "vertical",
2679
+ "gap": "lg",
2680
+ "children": [
2681
+ {
2682
+ "type": "stack",
2683
+ "direction": "horizontal",
2684
+ "gap": "md",
2685
+ "justify": "space-between",
2686
+ "children": [
2687
+ {
2688
+ "type": "stack",
2689
+ "direction": "horizontal",
2690
+ "gap": "md",
2691
+ "children": [
2692
+ {
2693
+ "type": "icon",
2694
+ "name": "activity",
2695
+ "size": "lg"
2696
+ },
2697
+ {
2698
+ "type": "typography",
2699
+ "content": "Metrics",
2700
+ "variant": "h2"
2701
+ }
2702
+ ]
2703
+ },
2704
+ {
2705
+ "type": "button",
2706
+ "label": "Refresh",
2707
+ "event": "REFRESH",
2708
+ "variant": "secondary",
2709
+ "icon": "refresh-cw"
2710
+ }
2711
+ ]
2712
+ },
2713
+ {
2714
+ "type": "divider"
2715
+ },
2716
+ {
2717
+ "type": "simple-grid",
2718
+ "columns": 3,
2719
+ "children": [
2720
+ {
2721
+ "type": "card",
2722
+ "children": [
2723
+ {
2724
+ "type": "stack",
2725
+ "direction": "vertical",
2726
+ "gap": "sm",
2727
+ "children": [
2728
+ {
2729
+ "type": "typography",
2730
+ "variant": "caption",
2731
+ "content": "Name"
2732
+ },
2733
+ {
2734
+ "type": "typography",
2735
+ "variant": "h3",
2736
+ "content": "@entity.name"
2737
+ }
2738
+ ]
2739
+ }
2740
+ ]
2741
+ },
2742
+ {
2743
+ "type": "card",
2744
+ "children": [
2745
+ {
2746
+ "type": "stack",
2747
+ "direction": "vertical",
2748
+ "gap": "sm",
2749
+ "children": [
2750
+ {
2751
+ "type": "typography",
2752
+ "variant": "caption",
2753
+ "content": "Value"
2754
+ },
2755
+ {
2756
+ "type": "typography",
2757
+ "variant": "h3",
2758
+ "content": "@entity.value"
2759
+ }
2760
+ ]
2761
+ }
2762
+ ]
2763
+ },
2764
+ {
2765
+ "type": "card",
2766
+ "children": [
2767
+ {
2768
+ "type": "stack",
2769
+ "direction": "vertical",
2770
+ "gap": "sm",
2771
+ "children": [
2772
+ {
2773
+ "type": "typography",
2774
+ "variant": "caption",
2775
+ "content": "Unit"
2776
+ },
2777
+ {
2778
+ "type": "typography",
2779
+ "variant": "h3",
2780
+ "content": "@entity.unit"
2781
+ }
2782
+ ]
2783
+ }
2784
+ ]
2785
+ },
2786
+ {
2787
+ "type": "card",
2788
+ "children": [
2789
+ {
2790
+ "type": "stack",
2791
+ "direction": "vertical",
2792
+ "gap": "sm",
2793
+ "children": [
2794
+ {
2795
+ "type": "typography",
2796
+ "variant": "caption",
2797
+ "content": "Trend"
2798
+ },
2799
+ {
2800
+ "type": "typography",
2801
+ "variant": "h3",
2802
+ "content": "@entity.trend"
2803
+ }
2804
+ ]
2805
+ }
2806
+ ]
2807
+ }
2808
+ ]
2809
+ }
2810
+ ]
2811
+ }
2812
+ ]
2813
+ ]
2814
+ },
2815
+ {
2816
+ "from": "displaying",
2817
+ "to": "refreshing",
2818
+ "event": "REFRESH",
2819
+ "effects": [
2820
+ [
2821
+ "fetch",
2822
+ "SystemMetric"
2823
+ ],
2824
+ [
2825
+ "render-ui",
2826
+ "main",
2827
+ {
2828
+ "type": "stack",
2829
+ "direction": "vertical",
2830
+ "gap": "lg",
2831
+ "children": [
2832
+ {
2833
+ "type": "stack",
2834
+ "direction": "horizontal",
2835
+ "gap": "md",
2836
+ "justify": "space-between",
2837
+ "children": [
2838
+ {
2839
+ "type": "stack",
2840
+ "direction": "horizontal",
2841
+ "gap": "md",
2842
+ "children": [
2843
+ {
2844
+ "type": "icon",
2845
+ "name": "activity",
2846
+ "size": "lg"
2847
+ },
2848
+ {
2849
+ "type": "typography",
2850
+ "content": "Metrics",
2851
+ "variant": "h2"
2852
+ }
2853
+ ]
2854
+ },
2855
+ {
2856
+ "type": "button",
2857
+ "label": "Refresh",
2858
+ "event": "REFRESH",
2859
+ "variant": "secondary",
2860
+ "icon": "refresh-cw"
2861
+ }
2862
+ ]
2863
+ },
2864
+ {
2865
+ "type": "divider"
2866
+ },
2867
+ {
2868
+ "type": "simple-grid",
2869
+ "columns": 3,
2870
+ "children": [
2871
+ {
2872
+ "type": "card",
2873
+ "children": [
2874
+ {
2875
+ "type": "stack",
2876
+ "direction": "vertical",
2877
+ "gap": "sm",
2878
+ "children": [
2879
+ {
2880
+ "type": "typography",
2881
+ "variant": "caption",
2882
+ "content": "Name"
2883
+ },
2884
+ {
2885
+ "type": "typography",
2886
+ "variant": "h3",
2887
+ "content": "@entity.name"
2888
+ }
2889
+ ]
2890
+ }
2891
+ ]
2892
+ },
2893
+ {
2894
+ "type": "card",
2895
+ "children": [
2896
+ {
2897
+ "type": "stack",
2898
+ "direction": "vertical",
2899
+ "gap": "sm",
2900
+ "children": [
2901
+ {
2902
+ "type": "typography",
2903
+ "variant": "caption",
2904
+ "content": "Value"
2905
+ },
2906
+ {
2907
+ "type": "typography",
2908
+ "variant": "h3",
2909
+ "content": "@entity.value"
2910
+ }
2911
+ ]
2912
+ }
2913
+ ]
2914
+ },
2915
+ {
2916
+ "type": "card",
2917
+ "children": [
2918
+ {
2919
+ "type": "stack",
2920
+ "direction": "vertical",
2921
+ "gap": "sm",
2922
+ "children": [
2923
+ {
2924
+ "type": "typography",
2925
+ "variant": "caption",
2926
+ "content": "Unit"
2927
+ },
2928
+ {
2929
+ "type": "typography",
2930
+ "variant": "h3",
2931
+ "content": "@entity.unit"
2932
+ }
2933
+ ]
2934
+ }
2935
+ ]
2936
+ },
2937
+ {
2938
+ "type": "card",
2939
+ "children": [
2940
+ {
2941
+ "type": "stack",
2942
+ "direction": "vertical",
2943
+ "gap": "sm",
2944
+ "children": [
2945
+ {
2946
+ "type": "typography",
2947
+ "variant": "caption",
2948
+ "content": "Trend"
2949
+ },
2950
+ {
2951
+ "type": "typography",
2952
+ "variant": "h3",
2953
+ "content": "@entity.trend"
2954
+ }
2955
+ ]
2956
+ }
2957
+ ]
2958
+ }
2959
+ ]
2960
+ }
2961
+ ]
2962
+ }
2963
+ ]
2964
+ ]
2965
+ },
2966
+ {
2967
+ "from": "refreshing",
2968
+ "to": "displaying",
2969
+ "event": "REFRESHED",
2970
+ "effects": [
2971
+ [
2972
+ "fetch",
2973
+ "SystemMetric"
2974
+ ],
2975
+ [
2976
+ "render-ui",
2977
+ "main",
2978
+ {
2979
+ "type": "stack",
2980
+ "direction": "vertical",
2981
+ "gap": "lg",
2982
+ "children": [
2983
+ {
2984
+ "type": "stack",
2985
+ "direction": "horizontal",
2986
+ "gap": "md",
2987
+ "justify": "space-between",
2988
+ "children": [
2989
+ {
2990
+ "type": "stack",
2991
+ "direction": "horizontal",
2992
+ "gap": "md",
2993
+ "children": [
2994
+ {
2995
+ "type": "icon",
2996
+ "name": "activity",
2997
+ "size": "lg"
2998
+ },
2999
+ {
3000
+ "type": "typography",
3001
+ "content": "Metrics",
3002
+ "variant": "h2"
3003
+ }
3004
+ ]
3005
+ },
3006
+ {
3007
+ "type": "button",
3008
+ "label": "Refresh",
3009
+ "event": "REFRESH",
3010
+ "variant": "secondary",
3011
+ "icon": "refresh-cw"
3012
+ }
3013
+ ]
3014
+ },
3015
+ {
3016
+ "type": "divider"
3017
+ },
3018
+ {
3019
+ "type": "simple-grid",
3020
+ "columns": 3,
3021
+ "children": [
3022
+ {
3023
+ "type": "card",
3024
+ "children": [
3025
+ {
3026
+ "type": "stack",
3027
+ "direction": "vertical",
3028
+ "gap": "sm",
3029
+ "children": [
3030
+ {
3031
+ "type": "typography",
3032
+ "variant": "caption",
3033
+ "content": "Name"
3034
+ },
3035
+ {
3036
+ "type": "typography",
3037
+ "variant": "h3",
3038
+ "content": "@entity.name"
3039
+ }
3040
+ ]
3041
+ }
3042
+ ]
3043
+ },
3044
+ {
3045
+ "type": "card",
3046
+ "children": [
3047
+ {
3048
+ "type": "stack",
3049
+ "direction": "vertical",
3050
+ "gap": "sm",
3051
+ "children": [
3052
+ {
3053
+ "type": "typography",
3054
+ "variant": "caption",
3055
+ "content": "Value"
3056
+ },
3057
+ {
3058
+ "type": "typography",
3059
+ "variant": "h3",
3060
+ "content": "@entity.value"
3061
+ }
3062
+ ]
3063
+ }
3064
+ ]
3065
+ },
3066
+ {
3067
+ "type": "card",
3068
+ "children": [
3069
+ {
3070
+ "type": "stack",
3071
+ "direction": "vertical",
3072
+ "gap": "sm",
3073
+ "children": [
3074
+ {
3075
+ "type": "typography",
3076
+ "variant": "caption",
3077
+ "content": "Unit"
3078
+ },
3079
+ {
3080
+ "type": "typography",
3081
+ "variant": "h3",
3082
+ "content": "@entity.unit"
3083
+ }
3084
+ ]
3085
+ }
3086
+ ]
3087
+ },
3088
+ {
3089
+ "type": "card",
3090
+ "children": [
3091
+ {
3092
+ "type": "stack",
3093
+ "direction": "vertical",
3094
+ "gap": "sm",
3095
+ "children": [
3096
+ {
3097
+ "type": "typography",
3098
+ "variant": "caption",
3099
+ "content": "Trend"
3100
+ },
3101
+ {
3102
+ "type": "typography",
3103
+ "variant": "h3",
3104
+ "content": "@entity.trend"
3105
+ }
3106
+ ]
3107
+ }
3108
+ ]
3109
+ }
3110
+ ]
3111
+ }
3112
+ ]
3113
+ }
3114
+ ]
3115
+ ]
3116
+ }
3117
+ ]
3118
+ }
3119
+ }
3120
+ ],
3121
+ "pages": [
3122
+ {
3123
+ "name": "MetricsPage",
3124
+ "path": "/metrics",
3125
+ "traits": [
3126
+ {
3127
+ "ref": "SystemMetricDisplay"
3128
+ }
3129
+ ]
3130
+ }
3131
+ ]
3132
+ }
3133
+ ],
3134
+ "description": "DevOps monitoring organism. Composes: stdCircuitBreaker(ServiceNode) + stdDisplay(AlertMetric) + stdList(LogEntry) + stdDisplay(SystemMetric) Pages: /services (initial), /alerts, /logs, /metrics"
3135
+ }