@almadar/std 9.0.0 → 11.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (187) hide show
  1. package/behaviors/registry/agent/atoms/std-agent-activity-log.orb +80 -80
  2. package/behaviors/registry/agent/atoms/std-agent-chat-thread.orb +103 -103
  3. package/behaviors/registry/agent/atoms/std-agent-classifier.orb +131 -113
  4. package/behaviors/registry/agent/atoms/std-agent-completion.orb +116 -98
  5. package/behaviors/registry/agent/atoms/std-agent-context-window.orb +384 -384
  6. package/behaviors/registry/agent/atoms/std-agent-conversation.orb +106 -106
  7. package/behaviors/registry/agent/atoms/std-agent-memory.orb +75 -75
  8. package/behaviors/registry/agent/atoms/std-agent-provider.orb +163 -139
  9. package/behaviors/registry/agent/atoms/std-agent-search.orb +64 -64
  10. package/behaviors/registry/agent/atoms/std-agent-session.orb +130 -130
  11. package/behaviors/registry/agent/atoms/std-agent-step-progress.orb +185 -185
  12. package/behaviors/registry/agent/atoms/std-agent-token-gauge.orb +344 -344
  13. package/behaviors/registry/agent/atoms/std-agent-tool-call.orb +81 -63
  14. package/behaviors/registry/agent/molecules/std-agent-fix-loop.orb +189 -189
  15. package/behaviors/registry/agent/molecules/std-agent-learner.orb +163 -163
  16. package/behaviors/registry/agent/molecules/std-agent-planner.orb +120 -120
  17. package/behaviors/registry/agent/molecules/std-agent-rag.orb +108 -108
  18. package/behaviors/registry/agent/molecules/std-agent-tool-loop.orb +188 -188
  19. package/behaviors/registry/agent/organisms/std-agent-assistant.orb +1097 -1072
  20. package/behaviors/registry/agent/organisms/std-agent-builder.orb +3183 -3043
  21. package/behaviors/registry/agent/organisms/std-agent-pipeline.orb +2309 -2217
  22. package/behaviors/registry/agent/organisms/std-agent-reviewer.orb +1083 -1029
  23. package/behaviors/registry/agent/organisms/std-agent-tutor.orb +793 -768
  24. package/behaviors/registry/app/organisms/std-api-gateway.orb +929 -887
  25. package/behaviors/registry/app/organisms/std-booking-system.orb +1247 -1163
  26. package/behaviors/registry/app/organisms/std-cicd-pipeline.orb +822 -780
  27. package/behaviors/registry/app/organisms/std-cms.orb +608 -512
  28. package/behaviors/registry/app/organisms/std-coding-academy.orb +393 -393
  29. package/behaviors/registry/app/organisms/std-crm.orb +887 -791
  30. package/behaviors/registry/app/organisms/std-devops-dashboard.orb +1408 -1366
  31. package/behaviors/registry/app/organisms/std-ecommerce.orb +1147 -1021
  32. package/behaviors/registry/app/organisms/std-finance-tracker.orb +670 -616
  33. package/behaviors/registry/app/organisms/std-healthcare.orb +1447 -1351
  34. package/behaviors/registry/app/organisms/std-helpdesk.orb +720 -666
  35. package/behaviors/registry/app/organisms/std-hr-portal.orb +1286 -1202
  36. package/behaviors/registry/app/organisms/std-iot-dashboard.orb +925 -883
  37. package/behaviors/registry/app/organisms/std-lms.orb +935 -893
  38. package/behaviors/registry/app/organisms/std-project-manager.orb +834 -750
  39. package/behaviors/registry/app/organisms/std-realtime-chat.orb +735 -681
  40. package/behaviors/registry/app/organisms/std-social-feed.orb +235 -211
  41. package/behaviors/registry/app/organisms/std-trading-dashboard.orb +730 -688
  42. package/behaviors/registry/core/atoms/std-browse.orb +56 -56
  43. package/behaviors/registry/core/atoms/std-cache-aside.orb +95 -95
  44. package/behaviors/registry/core/atoms/std-calendar.orb +54 -54
  45. package/behaviors/registry/core/atoms/std-circuit-breaker.orb +180 -180
  46. package/behaviors/registry/core/atoms/std-confirmation.orb +25 -25
  47. package/behaviors/registry/core/atoms/std-display.orb +388 -388
  48. package/behaviors/registry/core/atoms/std-drawer.orb +54 -54
  49. package/behaviors/registry/core/atoms/std-filter.orb +47 -47
  50. package/behaviors/registry/core/atoms/std-gallery.orb +51 -51
  51. package/behaviors/registry/core/atoms/std-modal.orb +12 -12
  52. package/behaviors/registry/core/atoms/std-pagination.orb +42 -42
  53. package/behaviors/registry/core/atoms/std-push.orb +43 -43
  54. package/behaviors/registry/core/atoms/std-rate-limiter.orb +194 -194
  55. package/behaviors/registry/core/atoms/std-related.orb +37 -37
  56. package/behaviors/registry/core/atoms/std-search.orb +68 -68
  57. package/behaviors/registry/core/atoms/std-selection.orb +90 -90
  58. package/behaviors/registry/core/atoms/std-tabs.orb +44 -44
  59. package/behaviors/registry/core/molecules/std-cart.orb +55 -59
  60. package/behaviors/registry/core/molecules/std-filtered-list.orb +6 -6
  61. package/behaviors/registry/core/molecules/std-form-advanced.orb +132 -132
  62. package/behaviors/registry/core/molecules/std-list.orb +79 -85
  63. package/behaviors/registry/core/molecules/std-wizard-form.orb +146 -146
  64. package/behaviors/registry/game/atoms/std-collision.orb +122 -122
  65. package/behaviors/registry/game/atoms/std-combat.orb +66 -66
  66. package/behaviors/registry/game/atoms/std-dialogue-box.orb +25 -25
  67. package/behaviors/registry/game/atoms/std-game-canvas2d.orb +43 -43
  68. package/behaviors/registry/game/atoms/std-gameflow.orb +37 -37
  69. package/behaviors/registry/game/atoms/std-movement.orb +291 -291
  70. package/behaviors/registry/game/atoms/std-overworld.orb +69 -69
  71. package/behaviors/registry/game/atoms/std-physics2d.orb +77 -77
  72. package/behaviors/registry/game/atoms/std-quest.orb +133 -133
  73. package/behaviors/registry/game/atoms/std-timer.orb +291 -291
  74. package/behaviors/registry/game/organisms/std-arcade-game.orb +139 -139
  75. package/behaviors/registry/game/organisms/std-logic-training.orb +81 -81
  76. package/behaviors/registry/game/organisms/std-platformer-app.orb +273 -237
  77. package/behaviors/registry/game/organisms/std-puzzle-app.orb +98 -98
  78. package/behaviors/registry/game/organisms/std-rpg-game.orb +407 -371
  79. package/behaviors/registry/game/organisms/std-stem-lab.orb +378 -378
  80. package/behaviors/registry/game/organisms/std-strategy-game.orb +557 -557
  81. package/behaviors/registry/probes/molecules/std-source-scope-probe.orb +282 -20
  82. package/behaviors/registry/service/atoms/std-service-custom-bearer.orb +84 -84
  83. package/behaviors/registry/service/atoms/std-service-email.orb +88 -88
  84. package/behaviors/registry/service/atoms/std-service-github.orb +88 -88
  85. package/behaviors/registry/service/atoms/std-service-llm.orb +119 -119
  86. package/behaviors/registry/service/atoms/std-service-oauth.orb +122 -122
  87. package/behaviors/registry/service/atoms/std-service-redis.orb +99 -99
  88. package/behaviors/registry/service/atoms/std-service-storage.orb +109 -109
  89. package/behaviors/registry/service/atoms/std-service-stripe.orb +105 -105
  90. package/behaviors/registry/service/atoms/std-service-twilio.orb +112 -112
  91. package/behaviors/registry/service/atoms/std-service-youtube.orb +111 -111
  92. package/behaviors/registry/service/organisms/std-service-marketplace.orb +1098 -1014
  93. package/behaviors/registry/service/organisms/std-service-research-assistant.orb +956 -956
  94. package/dist/behaviors/registry/agent/atoms/std-agent-activity-log.orb +80 -80
  95. package/dist/behaviors/registry/agent/atoms/std-agent-chat-thread.orb +103 -103
  96. package/dist/behaviors/registry/agent/atoms/std-agent-classifier.orb +131 -113
  97. package/dist/behaviors/registry/agent/atoms/std-agent-completion.orb +116 -98
  98. package/dist/behaviors/registry/agent/atoms/std-agent-context-window.orb +384 -384
  99. package/dist/behaviors/registry/agent/atoms/std-agent-conversation.orb +106 -106
  100. package/dist/behaviors/registry/agent/atoms/std-agent-memory.orb +75 -75
  101. package/dist/behaviors/registry/agent/atoms/std-agent-provider.orb +163 -139
  102. package/dist/behaviors/registry/agent/atoms/std-agent-search.orb +64 -64
  103. package/dist/behaviors/registry/agent/atoms/std-agent-session.orb +130 -130
  104. package/dist/behaviors/registry/agent/atoms/std-agent-step-progress.orb +185 -185
  105. package/dist/behaviors/registry/agent/atoms/std-agent-token-gauge.orb +344 -344
  106. package/dist/behaviors/registry/agent/atoms/std-agent-tool-call.orb +81 -63
  107. package/dist/behaviors/registry/agent/molecules/std-agent-fix-loop.orb +189 -189
  108. package/dist/behaviors/registry/agent/molecules/std-agent-learner.orb +163 -163
  109. package/dist/behaviors/registry/agent/molecules/std-agent-planner.orb +120 -120
  110. package/dist/behaviors/registry/agent/molecules/std-agent-rag.orb +108 -108
  111. package/dist/behaviors/registry/agent/molecules/std-agent-tool-loop.orb +188 -188
  112. package/dist/behaviors/registry/agent/organisms/std-agent-assistant.orb +1097 -1072
  113. package/dist/behaviors/registry/agent/organisms/std-agent-builder.orb +3183 -3043
  114. package/dist/behaviors/registry/agent/organisms/std-agent-pipeline.orb +2309 -2217
  115. package/dist/behaviors/registry/agent/organisms/std-agent-reviewer.orb +1083 -1029
  116. package/dist/behaviors/registry/agent/organisms/std-agent-tutor.orb +793 -768
  117. package/dist/behaviors/registry/app/organisms/std-api-gateway.orb +929 -887
  118. package/dist/behaviors/registry/app/organisms/std-booking-system.orb +1247 -1163
  119. package/dist/behaviors/registry/app/organisms/std-cicd-pipeline.orb +822 -780
  120. package/dist/behaviors/registry/app/organisms/std-cms.orb +608 -512
  121. package/dist/behaviors/registry/app/organisms/std-coding-academy.orb +393 -393
  122. package/dist/behaviors/registry/app/organisms/std-crm.orb +887 -791
  123. package/dist/behaviors/registry/app/organisms/std-devops-dashboard.orb +1408 -1366
  124. package/dist/behaviors/registry/app/organisms/std-ecommerce.orb +1147 -1021
  125. package/dist/behaviors/registry/app/organisms/std-finance-tracker.orb +670 -616
  126. package/dist/behaviors/registry/app/organisms/std-healthcare.orb +1447 -1351
  127. package/dist/behaviors/registry/app/organisms/std-helpdesk.orb +720 -666
  128. package/dist/behaviors/registry/app/organisms/std-hr-portal.orb +1286 -1202
  129. package/dist/behaviors/registry/app/organisms/std-iot-dashboard.orb +925 -883
  130. package/dist/behaviors/registry/app/organisms/std-lms.orb +935 -893
  131. package/dist/behaviors/registry/app/organisms/std-project-manager.orb +834 -750
  132. package/dist/behaviors/registry/app/organisms/std-realtime-chat.orb +735 -681
  133. package/dist/behaviors/registry/app/organisms/std-social-feed.orb +235 -211
  134. package/dist/behaviors/registry/app/organisms/std-trading-dashboard.orb +730 -688
  135. package/dist/behaviors/registry/core/atoms/std-browse.orb +56 -56
  136. package/dist/behaviors/registry/core/atoms/std-cache-aside.orb +95 -95
  137. package/dist/behaviors/registry/core/atoms/std-calendar.orb +54 -54
  138. package/dist/behaviors/registry/core/atoms/std-circuit-breaker.orb +180 -180
  139. package/dist/behaviors/registry/core/atoms/std-confirmation.orb +25 -25
  140. package/dist/behaviors/registry/core/atoms/std-display.orb +388 -388
  141. package/dist/behaviors/registry/core/atoms/std-drawer.orb +54 -54
  142. package/dist/behaviors/registry/core/atoms/std-filter.orb +47 -47
  143. package/dist/behaviors/registry/core/atoms/std-gallery.orb +51 -51
  144. package/dist/behaviors/registry/core/atoms/std-modal.orb +12 -12
  145. package/dist/behaviors/registry/core/atoms/std-pagination.orb +42 -42
  146. package/dist/behaviors/registry/core/atoms/std-push.orb +43 -43
  147. package/dist/behaviors/registry/core/atoms/std-rate-limiter.orb +194 -194
  148. package/dist/behaviors/registry/core/atoms/std-related.orb +37 -37
  149. package/dist/behaviors/registry/core/atoms/std-search.orb +68 -68
  150. package/dist/behaviors/registry/core/atoms/std-selection.orb +90 -90
  151. package/dist/behaviors/registry/core/atoms/std-tabs.orb +44 -44
  152. package/dist/behaviors/registry/core/molecules/std-cart.orb +55 -59
  153. package/dist/behaviors/registry/core/molecules/std-filtered-list.orb +6 -6
  154. package/dist/behaviors/registry/core/molecules/std-form-advanced.orb +132 -132
  155. package/dist/behaviors/registry/core/molecules/std-list.orb +79 -85
  156. package/dist/behaviors/registry/core/molecules/std-wizard-form.orb +146 -146
  157. package/dist/behaviors/registry/game/atoms/std-collision.orb +122 -122
  158. package/dist/behaviors/registry/game/atoms/std-combat.orb +66 -66
  159. package/dist/behaviors/registry/game/atoms/std-dialogue-box.orb +25 -25
  160. package/dist/behaviors/registry/game/atoms/std-game-canvas2d.orb +43 -43
  161. package/dist/behaviors/registry/game/atoms/std-gameflow.orb +37 -37
  162. package/dist/behaviors/registry/game/atoms/std-movement.orb +291 -291
  163. package/dist/behaviors/registry/game/atoms/std-overworld.orb +69 -69
  164. package/dist/behaviors/registry/game/atoms/std-physics2d.orb +77 -77
  165. package/dist/behaviors/registry/game/atoms/std-quest.orb +133 -133
  166. package/dist/behaviors/registry/game/atoms/std-timer.orb +291 -291
  167. package/dist/behaviors/registry/game/organisms/std-arcade-game.orb +139 -139
  168. package/dist/behaviors/registry/game/organisms/std-logic-training.orb +81 -81
  169. package/dist/behaviors/registry/game/organisms/std-platformer-app.orb +273 -237
  170. package/dist/behaviors/registry/game/organisms/std-puzzle-app.orb +98 -98
  171. package/dist/behaviors/registry/game/organisms/std-rpg-game.orb +407 -371
  172. package/dist/behaviors/registry/game/organisms/std-stem-lab.orb +378 -378
  173. package/dist/behaviors/registry/game/organisms/std-strategy-game.orb +557 -557
  174. package/dist/behaviors/registry/probes/molecules/std-source-scope-probe.orb +282 -20
  175. package/dist/behaviors/registry/service/atoms/std-service-custom-bearer.orb +84 -84
  176. package/dist/behaviors/registry/service/atoms/std-service-email.orb +88 -88
  177. package/dist/behaviors/registry/service/atoms/std-service-github.orb +88 -88
  178. package/dist/behaviors/registry/service/atoms/std-service-llm.orb +119 -119
  179. package/dist/behaviors/registry/service/atoms/std-service-oauth.orb +122 -122
  180. package/dist/behaviors/registry/service/atoms/std-service-redis.orb +99 -99
  181. package/dist/behaviors/registry/service/atoms/std-service-storage.orb +109 -109
  182. package/dist/behaviors/registry/service/atoms/std-service-stripe.orb +105 -105
  183. package/dist/behaviors/registry/service/atoms/std-service-twilio.orb +112 -112
  184. package/dist/behaviors/registry/service/atoms/std-service-youtube.orb +111 -111
  185. package/dist/behaviors/registry/service/organisms/std-service-marketplace.orb +1098 -1014
  186. package/dist/behaviors/registry/service/organisms/std-service-research-assistant.orb +956 -956
  187. package/package.json +1 -1
@@ -343,8 +343,8 @@
343
343
  "Route",
344
344
  {
345
345
  "emit": {
346
- "failure": "RouteLoadFailed",
347
- "success": "RouteLoaded"
346
+ "success": "RouteLoaded",
347
+ "failure": "RouteLoadFailed"
348
348
  }
349
349
  }
350
350
  ],
@@ -352,21 +352,21 @@
352
352
  "render-ui",
353
353
  "main",
354
354
  {
355
- "direction": "vertical",
355
+ "className": "py-12",
356
356
  "children": [
357
357
  {
358
358
  "type": "spinner"
359
359
  },
360
360
  {
361
361
  "content": "Loading routes…",
362
+ "type": "typography",
362
363
  "color": "muted",
363
- "variant": "caption",
364
- "type": "typography"
364
+ "variant": "caption"
365
365
  }
366
366
  ],
367
- "type": "stack",
368
367
  "gap": "md",
369
- "className": "py-12",
368
+ "type": "stack",
369
+ "direction": "vertical",
370
370
  "align": "center"
371
371
  }
372
372
  ]
@@ -381,123 +381,123 @@
381
381
  "render-ui",
382
382
  "main",
383
383
  {
384
- "type": "dashboard-layout",
385
384
  "appName": "API Gateway",
386
- "navItems": [
387
- {
388
- "icon": "git-branch",
389
- "href": "/routes",
390
- "label": "Routes"
391
- },
392
- {
393
- "label": "Backends",
394
- "href": "/backends",
395
- "icon": "server"
396
- },
397
- {
398
- "label": "Analytics",
399
- "href": "/analytics",
400
- "icon": "bar-chart-2"
401
- }
402
- ],
403
385
  "children": [
404
386
  {
387
+ "className": "max-w-5xl mx-auto w-full",
388
+ "type": "stack",
405
389
  "direction": "vertical",
390
+ "gap": "lg",
406
391
  "children": [
407
392
  {
393
+ "justify": "between",
394
+ "direction": "horizontal",
395
+ "type": "stack",
396
+ "align": "center",
408
397
  "children": [
409
398
  {
410
- "type": "stack",
411
399
  "children": [
412
400
  {
413
- "name": "git-branch",
414
- "type": "icon"
401
+ "type": "icon",
402
+ "name": "git-branch"
415
403
  },
416
404
  {
405
+ "type": "typography",
417
406
  "content": "Routes",
418
- "variant": "h2",
419
- "type": "typography"
407
+ "variant": "h2"
420
408
  }
421
409
  ],
422
- "align": "center",
410
+ "direction": "horizontal",
423
411
  "gap": "sm",
424
- "direction": "horizontal"
412
+ "type": "stack",
413
+ "align": "center"
425
414
  },
426
415
  {
416
+ "gap": "sm",
417
+ "direction": "horizontal",
427
418
  "children": [
428
419
  {
429
420
  "type": "button",
430
421
  "action": "CREATE",
431
- "label": "Create Route",
432
422
  "variant": "primary",
433
- "icon": "plus"
423
+ "icon": "plus",
424
+ "label": "Create Route"
434
425
  }
435
426
  ],
436
- "type": "stack",
437
- "direction": "horizontal",
438
- "gap": "sm"
427
+ "type": "stack"
439
428
  }
440
429
  ],
441
- "direction": "horizontal",
442
- "gap": "md",
443
- "justify": "between",
444
- "type": "stack",
445
- "align": "center"
430
+ "gap": "md"
446
431
  },
447
432
  {
448
433
  "type": "divider"
449
434
  },
450
435
  {
451
- "gap": "sm",
452
436
  "fields": [],
453
- "itemActions": [
437
+ "type": "data-list",
438
+ "columns": [
454
439
  {
455
- "event": "VIEW",
456
- "label": "View",
457
- "variant": "ghost"
440
+ "name": "method",
441
+ "variant": "badge"
458
442
  },
459
443
  {
460
- "variant": "ghost",
461
- "event": "EDIT",
462
- "label": "Edit"
444
+ "variant": "h3",
445
+ "icon": "git-branch",
446
+ "name": "path"
463
447
  },
464
448
  {
465
- "event": "DELETE",
466
- "variant": "danger",
467
- "label": "Delete"
449
+ "name": "backend",
450
+ "variant": "body"
451
+ },
452
+ {
453
+ "label": "Rate Limit",
454
+ "name": "rateLimit",
455
+ "format": "number",
456
+ "variant": "caption"
468
457
  }
469
458
  ],
470
- "entity": "@payload.data",
471
459
  "variant": "card",
472
- "columns": [
473
- {
474
- "variant": "badge",
475
- "name": "method"
476
- },
460
+ "gap": "sm",
461
+ "entity": "@payload.data",
462
+ "itemActions": [
477
463
  {
478
- "variant": "h3",
479
- "name": "path",
480
- "icon": "git-branch"
464
+ "label": "View",
465
+ "variant": "ghost",
466
+ "event": "VIEW"
481
467
  },
482
468
  {
483
- "variant": "body",
484
- "name": "backend"
469
+ "variant": "ghost",
470
+ "event": "EDIT",
471
+ "label": "Edit"
485
472
  },
486
473
  {
487
- "name": "rateLimit",
488
- "variant": "caption",
489
- "label": "Rate Limit",
490
- "format": "number"
474
+ "label": "Delete",
475
+ "event": "DELETE",
476
+ "variant": "danger"
491
477
  }
492
- ],
493
- "type": "data-list"
478
+ ]
494
479
  }
495
- ],
496
- "type": "stack",
497
- "className": "max-w-5xl mx-auto w-full",
498
- "gap": "lg"
480
+ ]
499
481
  }
500
- ]
482
+ ],
483
+ "navItems": [
484
+ {
485
+ "label": "Routes",
486
+ "icon": "git-branch",
487
+ "href": "/routes"
488
+ },
489
+ {
490
+ "label": "Backends",
491
+ "href": "/backends",
492
+ "icon": "server"
493
+ },
494
+ {
495
+ "href": "/analytics",
496
+ "label": "Analytics",
497
+ "icon": "bar-chart-2"
498
+ }
499
+ ],
500
+ "type": "dashboard-layout"
501
501
  }
502
502
  ]
503
503
  ]
@@ -511,16 +511,21 @@
511
511
  "render-ui",
512
512
  "main",
513
513
  {
514
+ "className": "py-12",
515
+ "direction": "vertical",
516
+ "type": "stack",
517
+ "gap": "md",
518
+ "align": "center",
514
519
  "children": [
515
520
  {
516
521
  "color": "destructive",
517
- "name": "alert-triangle",
518
- "type": "icon"
522
+ "type": "icon",
523
+ "name": "alert-triangle"
519
524
  },
520
525
  {
521
526
  "type": "typography",
522
- "variant": "h3",
523
- "content": "Failed to load routes"
527
+ "content": "Failed to load routes",
528
+ "variant": "h3"
524
529
  },
525
530
  {
526
531
  "color": "muted",
@@ -529,18 +534,13 @@
529
534
  "variant": "body"
530
535
  },
531
536
  {
532
- "type": "button",
533
- "variant": "primary",
534
- "icon": "rotate-ccw",
535
537
  "label": "Retry",
538
+ "icon": "rotate-ccw",
539
+ "variant": "primary",
540
+ "type": "button",
536
541
  "action": "INIT"
537
542
  }
538
- ],
539
- "type": "stack",
540
- "direction": "vertical",
541
- "align": "center",
542
- "className": "py-12",
543
- "gap": "md"
543
+ ]
544
544
  }
545
545
  ]
546
546
  ]
@@ -709,8 +709,14 @@
709
709
  "event": "INIT",
710
710
  "effects": [
711
711
  [
712
- "ref",
713
- "Route"
712
+ "fetch",
713
+ "Route",
714
+ {
715
+ "emit": {
716
+ "success": "RouteLoaded",
717
+ "failure": "RouteLoadFailed"
718
+ }
719
+ }
714
720
  ]
715
721
  ]
716
722
  },
@@ -724,8 +730,8 @@
724
730
  "Route",
725
731
  {
726
732
  "emit": {
727
- "failure": "RouteLoadFailed",
728
- "success": "RouteLoaded"
733
+ "success": "RouteLoaded",
734
+ "failure": "RouteLoadFailed"
729
735
  }
730
736
  }
731
737
  ],
@@ -733,31 +739,27 @@
733
739
  "render-ui",
734
740
  "modal",
735
741
  {
736
- "direction": "vertical",
737
- "gap": "md",
738
- "type": "stack",
739
742
  "children": [
740
743
  {
741
- "type": "stack",
742
- "direction": "horizontal",
743
- "gap": "sm",
744
744
  "children": [
745
745
  {
746
746
  "type": "icon",
747
747
  "name": "plus-circle"
748
748
  },
749
749
  {
750
- "variant": "h3",
750
+ "content": "Create Route",
751
751
  "type": "typography",
752
- "content": "Create Route"
752
+ "variant": "h3"
753
753
  }
754
- ]
754
+ ],
755
+ "direction": "horizontal",
756
+ "gap": "sm",
757
+ "type": "stack"
755
758
  },
756
759
  {
757
760
  "type": "divider"
758
761
  },
759
762
  {
760
- "type": "form-section",
761
763
  "fields": [
762
764
  "path",
763
765
  "method",
@@ -765,10 +767,14 @@
765
767
  "rateLimit"
766
768
  ],
767
769
  "mode": "create",
768
- "submitEvent": "SAVE",
769
- "cancelEvent": "CLOSE"
770
+ "type": "form-section",
771
+ "cancelEvent": "CLOSE",
772
+ "submitEvent": "SAVE"
770
773
  }
771
- ]
774
+ ],
775
+ "gap": "md",
776
+ "direction": "vertical",
777
+ "type": "stack"
772
778
  }
773
779
  ]
774
780
  ]
@@ -809,8 +815,8 @@
809
815
  "@payload.data",
810
816
  {
811
817
  "emit": {
812
- "failure": "RouteSaveFailed",
813
- "success": "RouteSaved"
818
+ "success": "RouteSaved",
819
+ "failure": "RouteSaveFailed"
814
820
  }
815
821
  }
816
822
  ],
@@ -1007,8 +1013,14 @@
1007
1013
  "event": "INIT",
1008
1014
  "effects": [
1009
1015
  [
1010
- "ref",
1011
- "Route"
1016
+ "fetch",
1017
+ "Route",
1018
+ {
1019
+ "emit": {
1020
+ "success": "RouteLoaded",
1021
+ "failure": "RouteLoadFailed"
1022
+ }
1023
+ }
1012
1024
  ]
1013
1025
  ]
1014
1026
  },
@@ -1023,8 +1035,8 @@
1023
1035
  {
1024
1036
  "id": "@payload.id",
1025
1037
  "emit": {
1026
- "failure": "RouteLoadFailed",
1027
- "success": "RouteLoaded"
1038
+ "success": "RouteLoaded",
1039
+ "failure": "RouteLoadFailed"
1028
1040
  }
1029
1041
  }
1030
1042
  ],
@@ -1032,9 +1044,10 @@
1032
1044
  "render-ui",
1033
1045
  "modal",
1034
1046
  {
1047
+ "direction": "vertical",
1048
+ "type": "stack",
1035
1049
  "children": [
1036
1050
  {
1037
- "direction": "horizontal",
1038
1051
  "type": "stack",
1039
1052
  "children": [
1040
1053
  {
@@ -1042,33 +1055,32 @@
1042
1055
  "name": "edit"
1043
1056
  },
1044
1057
  {
1045
- "variant": "h3",
1058
+ "content": "Edit Route",
1046
1059
  "type": "typography",
1047
- "content": "Edit Route"
1060
+ "variant": "h3"
1048
1061
  }
1049
1062
  ],
1050
- "gap": "sm"
1063
+ "gap": "sm",
1064
+ "direction": "horizontal"
1051
1065
  },
1052
1066
  {
1053
1067
  "type": "divider"
1054
1068
  },
1055
1069
  {
1056
- "type": "form-section",
1057
- "entity": "@payload.row",
1070
+ "cancelEvent": "CLOSE",
1058
1071
  "fields": [
1059
1072
  "path",
1060
1073
  "method",
1061
1074
  "backend",
1062
1075
  "rateLimit"
1063
1076
  ],
1077
+ "type": "form-section",
1078
+ "entity": "@payload.row",
1064
1079
  "mode": "edit",
1065
- "submitEvent": "SAVE",
1066
- "cancelEvent": "CLOSE"
1080
+ "submitEvent": "SAVE"
1067
1081
  }
1068
1082
  ],
1069
- "direction": "vertical",
1070
- "gap": "md",
1071
- "type": "stack"
1083
+ "gap": "md"
1072
1084
  }
1073
1085
  ]
1074
1086
  ]
@@ -1241,8 +1253,14 @@
1241
1253
  "event": "INIT",
1242
1254
  "effects": [
1243
1255
  [
1244
- "ref",
1245
- "Route"
1256
+ "fetch",
1257
+ "Route",
1258
+ {
1259
+ "emit": {
1260
+ "failure": "RouteLoadFailed",
1261
+ "success": "RouteLoaded"
1262
+ }
1263
+ }
1246
1264
  ]
1247
1265
  ]
1248
1266
  },
@@ -1266,23 +1284,21 @@
1266
1284
  "render-ui",
1267
1285
  "modal",
1268
1286
  {
1269
- "type": "stack",
1270
- "gap": "md",
1271
1287
  "children": [
1272
1288
  {
1273
1289
  "children": [
1274
1290
  {
1275
- "type": "icon",
1276
- "name": "eye"
1291
+ "name": "eye",
1292
+ "type": "icon"
1277
1293
  },
1278
1294
  {
1279
- "content": "@entity.path",
1295
+ "type": "typography",
1280
1296
  "variant": "h3",
1281
- "type": "typography"
1297
+ "content": "@entity.path"
1282
1298
  }
1283
1299
  ],
1284
- "type": "stack",
1285
1300
  "align": "center",
1301
+ "type": "stack",
1286
1302
  "direction": "horizontal",
1287
1303
  "gap": "sm"
1288
1304
  },
@@ -1290,98 +1306,100 @@
1290
1306
  "type": "divider"
1291
1307
  },
1292
1308
  {
1309
+ "direction": "horizontal",
1293
1310
  "gap": "md",
1311
+ "type": "stack",
1294
1312
  "children": [
1295
1313
  {
1296
- "variant": "caption",
1314
+ "type": "typography",
1297
1315
  "content": "Path",
1298
- "type": "typography"
1316
+ "variant": "caption"
1299
1317
  },
1300
1318
  {
1301
- "content": "@entity.path",
1302
1319
  "variant": "body",
1320
+ "content": "@entity.path",
1303
1321
  "type": "typography"
1304
1322
  }
1305
- ],
1306
- "direction": "horizontal",
1307
- "type": "stack"
1323
+ ]
1308
1324
  },
1309
1325
  {
1326
+ "direction": "horizontal",
1327
+ "type": "stack",
1328
+ "gap": "md",
1310
1329
  "children": [
1311
1330
  {
1312
1331
  "type": "typography",
1313
- "variant": "caption",
1314
- "content": "Method"
1332
+ "content": "Method",
1333
+ "variant": "caption"
1315
1334
  },
1316
1335
  {
1336
+ "content": "@entity.method",
1317
1337
  "type": "typography",
1318
- "variant": "body",
1319
- "content": "@entity.method"
1338
+ "variant": "body"
1320
1339
  }
1321
- ],
1322
- "gap": "md",
1323
- "direction": "horizontal",
1324
- "type": "stack"
1340
+ ]
1325
1341
  },
1326
1342
  {
1343
+ "gap": "md",
1344
+ "type": "stack",
1345
+ "direction": "horizontal",
1327
1346
  "children": [
1328
1347
  {
1348
+ "type": "typography",
1329
1349
  "variant": "caption",
1330
- "content": "Backend",
1331
- "type": "typography"
1350
+ "content": "Backend"
1332
1351
  },
1333
1352
  {
1334
- "type": "typography",
1335
1353
  "variant": "body",
1354
+ "type": "typography",
1336
1355
  "content": "@entity.backend"
1337
1356
  }
1338
- ],
1339
- "direction": "horizontal",
1340
- "gap": "md",
1341
- "type": "stack"
1357
+ ]
1342
1358
  },
1343
1359
  {
1344
- "type": "stack",
1345
- "gap": "md",
1346
- "direction": "horizontal",
1347
1360
  "children": [
1348
1361
  {
1349
- "content": "Rate Limit",
1362
+ "variant": "caption",
1350
1363
  "type": "typography",
1351
- "variant": "caption"
1364
+ "content": "Rate Limit"
1352
1365
  },
1353
1366
  {
1354
1367
  "type": "typography",
1355
- "content": "@entity.rateLimit",
1356
- "variant": "body"
1368
+ "variant": "body",
1369
+ "content": "@entity.rateLimit"
1357
1370
  }
1358
- ]
1371
+ ],
1372
+ "direction": "horizontal",
1373
+ "gap": "md",
1374
+ "type": "stack"
1359
1375
  },
1360
1376
  {
1361
1377
  "type": "divider"
1362
1378
  },
1363
1379
  {
1364
1380
  "type": "stack",
1365
- "direction": "horizontal",
1366
- "gap": "sm",
1367
- "justify": "end",
1368
1381
  "children": [
1369
1382
  {
1383
+ "icon": "edit",
1370
1384
  "type": "button",
1371
- "label": "Edit",
1372
- "variant": "primary",
1373
1385
  "action": "EDIT",
1374
- "icon": "edit"
1386
+ "label": "Edit",
1387
+ "variant": "primary"
1375
1388
  },
1376
1389
  {
1377
- "action": "CLOSE",
1378
1390
  "label": "Close",
1379
1391
  "variant": "ghost",
1380
- "type": "button"
1392
+ "type": "button",
1393
+ "action": "CLOSE"
1381
1394
  }
1382
- ]
1395
+ ],
1396
+ "justify": "end",
1397
+ "direction": "horizontal",
1398
+ "gap": "sm"
1383
1399
  }
1384
1400
  ],
1401
+ "gap": "md",
1402
+ "type": "stack",
1385
1403
  "direction": "vertical"
1386
1404
  }
1387
1405
  ]
@@ -1598,8 +1616,14 @@
1598
1616
  "event": "INIT",
1599
1617
  "effects": [
1600
1618
  [
1601
- "ref",
1602
- "Route"
1619
+ "fetch",
1620
+ "Route",
1621
+ {
1622
+ "emit": {
1623
+ "success": "RouteLoaded",
1624
+ "failure": "RouteLoadFailed"
1625
+ }
1626
+ }
1603
1627
  ]
1604
1628
  ]
1605
1629
  },
@@ -1617,26 +1641,24 @@
1617
1641
  "fetch",
1618
1642
  "Route",
1619
1643
  {
1620
- "id": "@payload.id",
1621
1644
  "emit": {
1622
1645
  "failure": "RouteLoadFailed",
1623
1646
  "success": "RouteLoaded"
1624
- }
1647
+ },
1648
+ "id": "@payload.id"
1625
1649
  }
1626
1650
  ],
1627
1651
  [
1628
1652
  "render-ui",
1629
1653
  "modal",
1630
1654
  {
1655
+ "type": "stack",
1631
1656
  "children": [
1632
1657
  {
1633
- "type": "stack",
1634
- "align": "center",
1635
- "direction": "horizontal",
1636
1658
  "children": [
1637
1659
  {
1638
- "name": "alert-triangle",
1639
- "type": "icon"
1660
+ "type": "icon",
1661
+ "name": "alert-triangle"
1640
1662
  },
1641
1663
  {
1642
1664
  "content": "Delete Route",
@@ -1644,40 +1666,42 @@
1644
1666
  "type": "typography"
1645
1667
  }
1646
1668
  ],
1647
- "gap": "sm"
1669
+ "direction": "horizontal",
1670
+ "gap": "sm",
1671
+ "align": "center",
1672
+ "type": "stack"
1648
1673
  },
1649
1674
  {
1650
1675
  "type": "divider"
1651
1676
  },
1652
1677
  {
1653
- "variant": "error",
1654
1678
  "type": "alert",
1679
+ "variant": "error",
1655
1680
  "message": "This action cannot be undone."
1656
1681
  },
1657
1682
  {
1658
1683
  "type": "stack",
1659
- "direction": "horizontal",
1660
- "gap": "sm",
1661
1684
  "justify": "end",
1685
+ "gap": "sm",
1662
1686
  "children": [
1663
1687
  {
1664
- "label": "Cancel",
1665
1688
  "action": "CANCEL",
1666
1689
  "type": "button",
1667
- "variant": "ghost"
1690
+ "variant": "ghost",
1691
+ "label": "Cancel"
1668
1692
  },
1669
1693
  {
1670
1694
  "type": "button",
1671
- "action": "CONFIRM_DELETE",
1695
+ "label": "Delete",
1672
1696
  "variant": "danger",
1673
1697
  "icon": "check",
1674
- "label": "Delete"
1698
+ "action": "CONFIRM_DELETE"
1675
1699
  }
1676
- ]
1700
+ ],
1701
+ "direction": "horizontal"
1677
1702
  }
1678
1703
  ],
1679
1704
  "direction": "vertical",
1680
- "type": "stack",
1681
1705
  "gap": "md"
1682
1706
  }
1683
1707
  ]
@@ -1713,8 +1737,14 @@
1713
1737
  }
1714
1738
  ],
1715
1739
  [
1716
- "ref",
1717
- "Route"
1740
+ "fetch",
1741
+ "Route",
1742
+ {
1743
+ "emit": {
1744
+ "failure": "RouteLoadFailed",
1745
+ "success": "RouteLoaded"
1746
+ }
1747
+ }
1718
1748
  ],
1719
1749
  [
1720
1750
  "emit",
@@ -1740,8 +1770,14 @@
1740
1770
  }
1741
1771
  ],
1742
1772
  [
1743
- "ref",
1744
- "Route"
1773
+ "fetch",
1774
+ "Route",
1775
+ {
1776
+ "emit": {
1777
+ "success": "RouteLoaded",
1778
+ "failure": "RouteLoadFailed"
1779
+ }
1780
+ }
1745
1781
  ]
1746
1782
  ]
1747
1783
  },
@@ -1763,8 +1799,14 @@
1763
1799
  }
1764
1800
  ],
1765
1801
  [
1766
- "ref",
1767
- "Route"
1802
+ "fetch",
1803
+ "Route",
1804
+ {
1805
+ "emit": {
1806
+ "failure": "RouteLoadFailed",
1807
+ "success": "RouteLoaded"
1808
+ }
1809
+ }
1768
1810
  ]
1769
1811
  ]
1770
1812
  }
@@ -1943,8 +1985,8 @@
1943
1985
  "Backend",
1944
1986
  {
1945
1987
  "emit": {
1946
- "success": "BackendLoaded",
1947
- "failure": "BackendLoadFailed"
1988
+ "failure": "BackendLoadFailed",
1989
+ "success": "BackendLoaded"
1948
1990
  }
1949
1991
  }
1950
1992
  ],
@@ -1952,96 +1994,96 @@
1952
1994
  "render-ui",
1953
1995
  "main",
1954
1996
  {
1997
+ "navItems": [
1998
+ {
1999
+ "label": "Routes",
2000
+ "href": "/routes",
2001
+ "icon": "git-branch"
2002
+ },
2003
+ {
2004
+ "icon": "server",
2005
+ "label": "Backends",
2006
+ "href": "/backends"
2007
+ },
2008
+ {
2009
+ "icon": "bar-chart-2",
2010
+ "label": "Analytics",
2011
+ "href": "/analytics"
2012
+ }
2013
+ ],
2014
+ "type": "dashboard-layout",
2015
+ "appName": "API Gateway",
1955
2016
  "children": [
1956
2017
  {
1957
- "direction": "vertical",
1958
- "type": "stack",
2018
+ "gap": "lg",
1959
2019
  "children": [
1960
2020
  {
1961
2021
  "type": "stack",
1962
2022
  "align": "center",
1963
- "direction": "horizontal",
2023
+ "gap": "md",
1964
2024
  "justify": "between",
1965
2025
  "children": [
1966
2026
  {
2027
+ "gap": "md",
2028
+ "align": "center",
2029
+ "direction": "horizontal",
1967
2030
  "children": [
1968
2031
  {
1969
- "type": "icon",
1970
- "name": "server"
2032
+ "name": "server",
2033
+ "type": "icon"
1971
2034
  },
1972
2035
  {
2036
+ "variant": "h2",
1973
2037
  "type": "typography",
1974
- "content": "Backend",
1975
- "variant": "h2"
2038
+ "content": "Backend"
1976
2039
  }
1977
2040
  ],
1978
- "direction": "horizontal",
1979
- "align": "center",
1980
- "gap": "md",
1981
2041
  "type": "stack"
1982
2042
  },
1983
2043
  {
1984
2044
  "pulse": false,
1985
- "label": "Circuit Closed",
1986
2045
  "type": "status-dot",
1987
- "status": "online"
2046
+ "status": "online",
2047
+ "label": "Circuit Closed"
1988
2048
  }
1989
2049
  ],
1990
- "gap": "md"
2050
+ "direction": "horizontal"
1991
2051
  },
1992
2052
  {
1993
2053
  "type": "divider"
1994
2054
  },
1995
2055
  {
1996
- "message": "Service is healthy. All requests are being processed.",
1997
2056
  "variant": "success",
1998
- "type": "alert"
2057
+ "type": "alert",
2058
+ "message": "Service is healthy. All requests are being processed."
1999
2059
  },
2000
2060
  {
2001
2061
  "type": "simple-grid",
2002
2062
  "cols": 2.0,
2003
2063
  "children": [
2004
2064
  {
2005
- "type": "stat-display",
2065
+ "value": "@entity.failureCount",
2006
2066
  "label": "Failures",
2007
- "value": "@entity.failureCount"
2067
+ "type": "stat-display"
2008
2068
  },
2009
2069
  {
2070
+ "type": "stat-display",
2010
2071
  "label": "Successes",
2011
- "value": "@entity.successCount",
2012
- "type": "stat-display"
2072
+ "value": "@entity.successCount"
2013
2073
  }
2014
2074
  ]
2015
2075
  },
2016
2076
  {
2017
- "type": "meter",
2018
2077
  "min": 0.0,
2019
2078
  "value": "@entity.failureCount",
2020
- "max": "@entity.threshold"
2079
+ "max": "@entity.threshold",
2080
+ "type": "meter"
2021
2081
  }
2022
2082
  ],
2023
- "gap": "lg"
2024
- }
2025
- ],
2026
- "navItems": [
2027
- {
2028
- "icon": "git-branch",
2029
- "label": "Routes",
2030
- "href": "/routes"
2031
- },
2032
- {
2033
- "href": "/backends",
2034
- "icon": "server",
2035
- "label": "Backends"
2036
- },
2037
- {
2038
- "href": "/analytics",
2039
- "icon": "bar-chart-2",
2040
- "label": "Analytics"
2083
+ "type": "stack",
2084
+ "direction": "vertical"
2041
2085
  }
2042
- ],
2043
- "type": "dashboard-layout",
2044
- "appName": "API Gateway"
2086
+ ]
2045
2087
  }
2046
2088
  ]
2047
2089
  ]
@@ -2055,90 +2097,122 @@
2055
2097
  "render-ui",
2056
2098
  "main",
2057
2099
  {
2100
+ "navItems": [
2101
+ {
2102
+ "icon": "git-branch",
2103
+ "label": "Routes",
2104
+ "href": "/routes"
2105
+ },
2106
+ {
2107
+ "href": "/backends",
2108
+ "label": "Backends",
2109
+ "icon": "server"
2110
+ },
2111
+ {
2112
+ "href": "/analytics",
2113
+ "label": "Analytics",
2114
+ "icon": "bar-chart-2"
2115
+ }
2116
+ ],
2058
2117
  "appName": "API Gateway",
2118
+ "type": "dashboard-layout",
2059
2119
  "children": [
2060
2120
  {
2061
- "gap": "lg",
2121
+ "type": "stack",
2062
2122
  "children": [
2063
2123
  {
2064
- "direction": "horizontal",
2065
- "type": "stack",
2066
- "align": "center",
2067
- "gap": "md",
2124
+ "justify": "between",
2068
2125
  "children": [
2069
2126
  {
2070
- "type": "stack",
2071
- "direction": "horizontal",
2127
+ "align": "center",
2072
2128
  "gap": "md",
2073
2129
  "children": [
2074
2130
  {
2075
- "name": "alert-triangle",
2076
- "type": "icon"
2131
+ "type": "icon",
2132
+ "name": "alert-triangle"
2077
2133
  },
2078
2134
  {
2079
- "type": "typography",
2080
2135
  "content": "Backend",
2081
- "variant": "h2"
2136
+ "variant": "h2",
2137
+ "type": "typography"
2082
2138
  }
2083
2139
  ],
2084
- "align": "center"
2140
+ "direction": "horizontal",
2141
+ "type": "stack"
2085
2142
  },
2086
2143
  {
2087
- "status": "critical",
2088
- "pulse": true,
2089
2144
  "label": "Circuit Open",
2145
+ "pulse": true,
2146
+ "status": "critical",
2090
2147
  "type": "status-dot"
2091
2148
  }
2092
2149
  ],
2093
- "justify": "between"
2150
+ "align": "center",
2151
+ "direction": "horizontal",
2152
+ "type": "stack",
2153
+ "gap": "md"
2094
2154
  },
2095
2155
  {
2096
2156
  "type": "divider"
2097
2157
  },
2098
2158
  {
2099
- "variant": "error",
2100
2159
  "type": "alert",
2101
- "message": "Circuit is open. Requests are being rejected to prevent cascading failures."
2160
+ "message": "Circuit is open. Requests are being rejected to prevent cascading failures.",
2161
+ "variant": "error"
2102
2162
  },
2103
2163
  {
2104
2164
  "cols": 2.0,
2105
2165
  "type": "simple-grid",
2106
2166
  "children": [
2107
2167
  {
2108
- "label": "Failures",
2168
+ "value": "@entity.failureCount",
2109
2169
  "type": "stat-display",
2110
- "value": "@entity.failureCount"
2170
+ "label": "Failures"
2111
2171
  },
2112
2172
  {
2173
+ "value": "@entity.successCount",
2113
2174
  "type": "stat-display",
2114
- "label": "Successes",
2115
- "value": "@entity.successCount"
2175
+ "label": "Successes"
2116
2176
  }
2117
2177
  ]
2118
2178
  },
2119
2179
  {
2120
- "max": "@entity.threshold",
2180
+ "min": 0.0,
2121
2181
  "value": "@entity.failureCount",
2122
2182
  "type": "meter",
2123
- "min": 0.0
2183
+ "max": "@entity.threshold"
2124
2184
  },
2125
2185
  {
2126
- "label": "Reset",
2127
- "variant": "ghost",
2128
2186
  "type": "button",
2129
2187
  "action": "RESET",
2188
+ "label": "Reset",
2189
+ "variant": "ghost",
2130
2190
  "icon": "rotate-ccw"
2131
2191
  }
2132
2192
  ],
2133
- "direction": "vertical",
2134
- "type": "stack"
2193
+ "gap": "lg",
2194
+ "direction": "vertical"
2135
2195
  }
2136
- ],
2196
+ ]
2197
+ }
2198
+ ]
2199
+ ]
2200
+ },
2201
+ {
2202
+ "from": "closed",
2203
+ "to": "closed",
2204
+ "event": "SUCCESS",
2205
+ "effects": [
2206
+ [
2207
+ "render-ui",
2208
+ "main",
2209
+ {
2210
+ "appName": "API Gateway",
2137
2211
  "navItems": [
2138
2212
  {
2139
- "href": "/routes",
2213
+ "icon": "git-branch",
2140
2214
  "label": "Routes",
2141
- "icon": "git-branch"
2215
+ "href": "/routes"
2142
2216
  },
2143
2217
  {
2144
2218
  "href": "/backends",
@@ -2151,108 +2225,76 @@
2151
2225
  "href": "/analytics"
2152
2226
  }
2153
2227
  ],
2154
- "type": "dashboard-layout"
2155
- }
2156
- ]
2157
- ]
2158
- },
2159
- {
2160
- "from": "closed",
2161
- "to": "closed",
2162
- "event": "SUCCESS",
2163
- "effects": [
2164
- [
2165
- "render-ui",
2166
- "main",
2167
- {
2228
+ "type": "dashboard-layout",
2168
2229
  "children": [
2169
2230
  {
2231
+ "type": "stack",
2170
2232
  "children": [
2171
2233
  {
2172
- "align": "center",
2234
+ "direction": "horizontal",
2173
2235
  "type": "stack",
2236
+ "gap": "md",
2237
+ "align": "center",
2174
2238
  "justify": "between",
2175
2239
  "children": [
2176
2240
  {
2177
- "type": "stack",
2178
- "align": "center",
2241
+ "direction": "horizontal",
2179
2242
  "children": [
2180
2243
  {
2181
2244
  "name": "server",
2182
2245
  "type": "icon"
2183
2246
  },
2184
2247
  {
2185
- "variant": "h2",
2248
+ "type": "typography",
2186
2249
  "content": "Backend",
2187
- "type": "typography"
2250
+ "variant": "h2"
2188
2251
  }
2189
2252
  ],
2190
2253
  "gap": "md",
2191
- "direction": "horizontal"
2254
+ "type": "stack",
2255
+ "align": "center"
2192
2256
  },
2193
2257
  {
2194
- "status": "online",
2195
2258
  "type": "status-dot",
2196
2259
  "pulse": false,
2197
- "label": "Circuit Closed"
2260
+ "label": "Circuit Closed",
2261
+ "status": "online"
2198
2262
  }
2199
- ],
2200
- "gap": "md",
2201
- "direction": "horizontal"
2263
+ ]
2202
2264
  },
2203
2265
  {
2204
2266
  "type": "divider"
2205
2267
  },
2206
2268
  {
2207
- "message": "Service is healthy. All requests are being processed.",
2208
2269
  "type": "alert",
2209
- "variant": "success"
2270
+ "variant": "success",
2271
+ "message": "Service is healthy. All requests are being processed."
2210
2272
  },
2211
2273
  {
2212
- "type": "simple-grid",
2213
- "cols": 2.0,
2214
2274
  "children": [
2215
2275
  {
2276
+ "type": "stat-display",
2216
2277
  "label": "Failures",
2217
- "value": "@entity.failureCount",
2218
- "type": "stat-display"
2278
+ "value": "@entity.failureCount"
2219
2279
  },
2220
2280
  {
2221
2281
  "type": "stat-display",
2222
2282
  "label": "Successes",
2223
2283
  "value": "@entity.successCount"
2224
2284
  }
2225
- ]
2285
+ ],
2286
+ "type": "simple-grid",
2287
+ "cols": 2.0
2226
2288
  },
2227
2289
  {
2228
- "max": "@entity.threshold",
2229
2290
  "type": "meter",
2230
- "value": "@entity.failureCount",
2231
- "min": 0.0
2291
+ "max": "@entity.threshold",
2292
+ "min": 0.0,
2293
+ "value": "@entity.failureCount"
2232
2294
  }
2233
2295
  ],
2234
2296
  "direction": "vertical",
2235
- "gap": "lg",
2236
- "type": "stack"
2237
- }
2238
- ],
2239
- "appName": "API Gateway",
2240
- "type": "dashboard-layout",
2241
- "navItems": [
2242
- {
2243
- "href": "/routes",
2244
- "label": "Routes",
2245
- "icon": "git-branch"
2246
- },
2247
- {
2248
- "label": "Backends",
2249
- "href": "/backends",
2250
- "icon": "server"
2251
- },
2252
- {
2253
- "href": "/analytics",
2254
- "label": "Analytics",
2255
- "icon": "bar-chart-2"
2297
+ "gap": "lg"
2256
2298
  }
2257
2299
  ]
2258
2300
  }
@@ -2268,90 +2310,90 @@
2268
2310
  "render-ui",
2269
2311
  "main",
2270
2312
  {
2271
- "navItems": [
2272
- {
2273
- "icon": "git-branch",
2274
- "href": "/routes",
2275
- "label": "Routes"
2276
- },
2277
- {
2278
- "icon": "server",
2279
- "label": "Backends",
2280
- "href": "/backends"
2281
- },
2282
- {
2283
- "href": "/analytics",
2284
- "icon": "bar-chart-2",
2285
- "label": "Analytics"
2286
- }
2287
- ],
2288
- "appName": "API Gateway",
2289
2313
  "children": [
2290
2314
  {
2291
- "type": "stack",
2292
2315
  "gap": "lg",
2293
2316
  "children": [
2294
2317
  {
2318
+ "gap": "md",
2319
+ "direction": "horizontal",
2320
+ "align": "center",
2321
+ "type": "stack",
2322
+ "justify": "between",
2295
2323
  "children": [
2296
2324
  {
2297
- "align": "center",
2298
- "gap": "md",
2299
- "direction": "horizontal",
2300
2325
  "type": "stack",
2326
+ "gap": "md",
2327
+ "align": "center",
2301
2328
  "children": [
2302
2329
  {
2303
- "type": "icon",
2304
- "name": "activity"
2330
+ "name": "activity",
2331
+ "type": "icon"
2305
2332
  },
2306
2333
  {
2307
- "content": "Backend",
2308
2334
  "variant": "h2",
2335
+ "content": "Backend",
2309
2336
  "type": "typography"
2310
2337
  }
2311
- ]
2338
+ ],
2339
+ "direction": "horizontal"
2312
2340
  },
2313
2341
  {
2314
- "label": "Circuit Half-Open",
2315
- "type": "status-dot",
2316
2342
  "status": "warning",
2343
+ "type": "status-dot",
2344
+ "label": "Circuit Half-Open",
2317
2345
  "pulse": true
2318
2346
  }
2319
- ],
2320
- "align": "center",
2321
- "direction": "horizontal",
2322
- "type": "stack",
2323
- "gap": "md",
2324
- "justify": "between"
2347
+ ]
2325
2348
  },
2326
2349
  {
2327
2350
  "type": "divider"
2328
2351
  },
2329
2352
  {
2330
2353
  "variant": "warning",
2331
- "message": "Testing recovery. Limited requests are being allowed through.",
2332
- "type": "alert"
2354
+ "type": "alert",
2355
+ "message": "Testing recovery. Limited requests are being allowed through."
2333
2356
  },
2334
2357
  {
2335
2358
  "type": "simple-grid",
2336
2359
  "children": [
2337
2360
  {
2338
- "value": "@entity.failureCount",
2339
2361
  "label": "Failures",
2340
- "type": "stat-display"
2362
+ "type": "stat-display",
2363
+ "value": "@entity.failureCount"
2341
2364
  },
2342
2365
  {
2343
- "value": "@entity.successCount",
2344
2366
  "label": "Successes",
2345
- "type": "stat-display"
2367
+ "type": "stat-display",
2368
+ "value": "@entity.successCount"
2346
2369
  }
2347
2370
  ],
2348
2371
  "cols": 2.0
2349
2372
  }
2350
2373
  ],
2351
- "direction": "vertical"
2374
+ "direction": "vertical",
2375
+ "type": "stack"
2352
2376
  }
2353
2377
  ],
2354
- "type": "dashboard-layout"
2378
+ "navItems": [
2379
+ {
2380
+ "label": "Routes",
2381
+ "href": "/routes",
2382
+ "icon": "git-branch"
2383
+ },
2384
+ {
2385
+ "href": "/backends",
2386
+ "icon": "server",
2387
+ "label": "Backends"
2388
+ },
2389
+ {
2390
+ "icon": "bar-chart-2",
2391
+ "label": "Analytics",
2392
+ "href": "/analytics"
2393
+ }
2394
+ ],
2395
+ "type": "dashboard-layout",
2396
+ "appName": "API Gateway"
2355
2397
  }
2356
2398
  ]
2357
2399
  ]
@@ -2365,13 +2407,14 @@
2365
2407
  "render-ui",
2366
2408
  "main",
2367
2409
  {
2368
- "appName": "API Gateway",
2369
- "type": "dashboard-layout",
2370
2410
  "children": [
2371
2411
  {
2412
+ "type": "stack",
2413
+ "direction": "vertical",
2372
2414
  "children": [
2373
2415
  {
2374
- "align": "center",
2416
+ "type": "stack",
2417
+ "gap": "md",
2375
2418
  "children": [
2376
2419
  {
2377
2420
  "children": [
@@ -2380,37 +2423,38 @@
2380
2423
  "name": "server"
2381
2424
  },
2382
2425
  {
2383
- "variant": "h2",
2384
2426
  "type": "typography",
2385
- "content": "Backend"
2427
+ "content": "Backend",
2428
+ "variant": "h2"
2386
2429
  }
2387
2430
  ],
2388
- "direction": "horizontal",
2431
+ "gap": "md",
2389
2432
  "type": "stack",
2390
2433
  "align": "center",
2391
- "gap": "md"
2434
+ "direction": "horizontal"
2392
2435
  },
2393
2436
  {
2394
- "type": "status-dot",
2395
2437
  "pulse": false,
2438
+ "type": "status-dot",
2396
2439
  "label": "Circuit Closed",
2397
2440
  "status": "online"
2398
2441
  }
2399
2442
  ],
2400
- "type": "stack",
2401
2443
  "justify": "between",
2402
- "gap": "md",
2403
- "direction": "horizontal"
2444
+ "direction": "horizontal",
2445
+ "align": "center"
2404
2446
  },
2405
2447
  {
2406
2448
  "type": "divider"
2407
2449
  },
2408
2450
  {
2409
- "message": "Service is healthy. All requests are being processed.",
2410
2451
  "type": "alert",
2411
- "variant": "success"
2452
+ "variant": "success",
2453
+ "message": "Service is healthy. All requests are being processed."
2412
2454
  },
2413
2455
  {
2456
+ "cols": 2.0,
2457
+ "type": "simple-grid",
2414
2458
  "children": [
2415
2459
  {
2416
2460
  "type": "stat-display",
@@ -2418,13 +2462,11 @@
2418
2462
  "label": "Failures"
2419
2463
  },
2420
2464
  {
2421
- "type": "stat-display",
2422
2465
  "label": "Successes",
2423
- "value": "@entity.successCount"
2466
+ "value": "@entity.successCount",
2467
+ "type": "stat-display"
2424
2468
  }
2425
- ],
2426
- "cols": 2.0,
2427
- "type": "simple-grid"
2469
+ ]
2428
2470
  },
2429
2471
  {
2430
2472
  "min": 0.0,
@@ -2433,16 +2475,15 @@
2433
2475
  "value": "@entity.failureCount"
2434
2476
  }
2435
2477
  ],
2436
- "type": "stack",
2437
- "direction": "vertical",
2438
2478
  "gap": "lg"
2439
2479
  }
2440
2480
  ],
2481
+ "type": "dashboard-layout",
2441
2482
  "navItems": [
2442
2483
  {
2443
- "icon": "git-branch",
2484
+ "label": "Routes",
2444
2485
  "href": "/routes",
2445
- "label": "Routes"
2486
+ "icon": "git-branch"
2446
2487
  },
2447
2488
  {
2448
2489
  "icon": "server",
@@ -2450,11 +2491,12 @@
2450
2491
  "href": "/backends"
2451
2492
  },
2452
2493
  {
2453
- "icon": "bar-chart-2",
2454
2494
  "label": "Analytics",
2455
- "href": "/analytics"
2495
+ "href": "/analytics",
2496
+ "icon": "bar-chart-2"
2456
2497
  }
2457
- ]
2498
+ ],
2499
+ "appName": "API Gateway"
2458
2500
  }
2459
2501
  ]
2460
2502
  ]
@@ -2468,110 +2510,79 @@
2468
2510
  "render-ui",
2469
2511
  "main",
2470
2512
  {
2471
- "navItems": [
2472
- {
2473
- "icon": "git-branch",
2474
- "label": "Routes",
2475
- "href": "/routes"
2476
- },
2477
- {
2478
- "label": "Backends",
2479
- "icon": "server",
2480
- "href": "/backends"
2481
- },
2482
- {
2483
- "label": "Analytics",
2484
- "href": "/analytics",
2485
- "icon": "bar-chart-2"
2486
- }
2487
- ],
2488
2513
  "type": "dashboard-layout",
2489
2514
  "appName": "API Gateway",
2490
2515
  "children": [
2491
2516
  {
2492
- "gap": "lg",
2493
- "type": "stack",
2494
2517
  "direction": "vertical",
2495
2518
  "children": [
2496
2519
  {
2520
+ "gap": "md",
2521
+ "justify": "between",
2497
2522
  "children": [
2498
2523
  {
2499
- "type": "stack",
2500
- "direction": "horizontal",
2501
2524
  "align": "center",
2525
+ "direction": "horizontal",
2526
+ "gap": "md",
2527
+ "type": "stack",
2502
2528
  "children": [
2503
2529
  {
2504
2530
  "type": "icon",
2505
2531
  "name": "server"
2506
2532
  },
2507
2533
  {
2534
+ "content": "Backend",
2508
2535
  "variant": "h2",
2509
- "type": "typography",
2510
- "content": "Backend"
2536
+ "type": "typography"
2511
2537
  }
2512
- ],
2513
- "gap": "md"
2538
+ ]
2514
2539
  },
2515
2540
  {
2516
- "label": "Circuit Closed",
2517
2541
  "pulse": false,
2518
- "status": "online",
2519
- "type": "status-dot"
2542
+ "label": "Circuit Closed",
2543
+ "type": "status-dot",
2544
+ "status": "online"
2520
2545
  }
2521
2546
  ],
2522
- "justify": "between",
2523
- "direction": "horizontal",
2524
- "type": "stack",
2525
2547
  "align": "center",
2526
- "gap": "md"
2548
+ "type": "stack",
2549
+ "direction": "horizontal"
2527
2550
  },
2528
2551
  {
2529
2552
  "type": "divider"
2530
2553
  },
2531
2554
  {
2532
2555
  "variant": "success",
2533
- "type": "alert",
2534
- "message": "Service is healthy. All requests are being processed."
2556
+ "message": "Service is healthy. All requests are being processed.",
2557
+ "type": "alert"
2535
2558
  },
2536
2559
  {
2537
- "cols": 2.0,
2538
2560
  "type": "simple-grid",
2561
+ "cols": 2.0,
2539
2562
  "children": [
2540
2563
  {
2541
- "label": "Failures",
2542
2564
  "type": "stat-display",
2565
+ "label": "Failures",
2543
2566
  "value": "@entity.failureCount"
2544
2567
  },
2545
2568
  {
2569
+ "type": "stat-display",
2546
2570
  "label": "Successes",
2547
- "value": "@entity.successCount",
2548
- "type": "stat-display"
2571
+ "value": "@entity.successCount"
2549
2572
  }
2550
2573
  ]
2551
2574
  },
2552
2575
  {
2553
- "value": "@entity.failureCount",
2554
2576
  "min": 0.0,
2577
+ "type": "meter",
2555
2578
  "max": "@entity.threshold",
2556
- "type": "meter"
2579
+ "value": "@entity.failureCount"
2557
2580
  }
2558
- ]
2581
+ ],
2582
+ "gap": "lg",
2583
+ "type": "stack"
2559
2584
  }
2560
- ]
2561
- }
2562
- ]
2563
- ]
2564
- },
2565
- {
2566
- "from": "halfOpen",
2567
- "to": "open",
2568
- "event": "FAILURE",
2569
- "effects": [
2570
- [
2571
- "render-ui",
2572
- "main",
2573
- {
2574
- "appName": "API Gateway",
2585
+ ],
2575
2586
  "navItems": [
2576
2587
  {
2577
2588
  "icon": "git-branch",
@@ -2588,26 +2599,37 @@
2588
2599
  "icon": "bar-chart-2",
2589
2600
  "label": "Analytics"
2590
2601
  }
2591
- ],
2602
+ ]
2603
+ }
2604
+ ]
2605
+ ]
2606
+ },
2607
+ {
2608
+ "from": "halfOpen",
2609
+ "to": "open",
2610
+ "event": "FAILURE",
2611
+ "effects": [
2612
+ [
2613
+ "render-ui",
2614
+ "main",
2615
+ {
2592
2616
  "type": "dashboard-layout",
2593
2617
  "children": [
2594
2618
  {
2595
- "gap": "lg",
2596
- "direction": "vertical",
2597
2619
  "children": [
2598
2620
  {
2599
- "type": "stack",
2600
- "direction": "horizontal",
2621
+ "align": "center",
2622
+ "gap": "md",
2601
2623
  "children": [
2602
2624
  {
2603
- "gap": "md",
2604
- "type": "stack",
2605
- "direction": "horizontal",
2606
2625
  "align": "center",
2626
+ "direction": "horizontal",
2627
+ "type": "stack",
2628
+ "gap": "md",
2607
2629
  "children": [
2608
2630
  {
2609
- "name": "alert-triangle",
2610
- "type": "icon"
2631
+ "type": "icon",
2632
+ "name": "alert-triangle"
2611
2633
  },
2612
2634
  {
2613
2635
  "type": "typography",
@@ -2618,159 +2640,179 @@
2618
2640
  },
2619
2641
  {
2620
2642
  "label": "Circuit Open",
2621
- "type": "status-dot",
2643
+ "status": "critical",
2622
2644
  "pulse": true,
2623
- "status": "critical"
2645
+ "type": "status-dot"
2624
2646
  }
2625
2647
  ],
2648
+ "direction": "horizontal",
2626
2649
  "justify": "between",
2627
- "align": "center",
2628
- "gap": "md"
2650
+ "type": "stack"
2629
2651
  },
2630
2652
  {
2631
2653
  "type": "divider"
2632
2654
  },
2633
2655
  {
2656
+ "variant": "error",
2634
2657
  "message": "Circuit is open. Requests are being rejected to prevent cascading failures.",
2635
- "type": "alert",
2636
- "variant": "error"
2658
+ "type": "alert"
2637
2659
  },
2638
2660
  {
2639
- "type": "simple-grid",
2640
- "cols": 2.0,
2641
2661
  "children": [
2642
2662
  {
2643
2663
  "label": "Failures",
2644
- "value": "@entity.failureCount",
2645
- "type": "stat-display"
2664
+ "type": "stat-display",
2665
+ "value": "@entity.failureCount"
2646
2666
  },
2647
2667
  {
2668
+ "value": "@entity.successCount",
2648
2669
  "type": "stat-display",
2649
- "label": "Successes",
2650
- "value": "@entity.successCount"
2670
+ "label": "Successes"
2651
2671
  }
2652
- ]
2672
+ ],
2673
+ "type": "simple-grid",
2674
+ "cols": 2.0
2653
2675
  },
2654
2676
  {
2655
- "max": "@entity.threshold",
2677
+ "min": 0.0,
2656
2678
  "value": "@entity.failureCount",
2657
2679
  "type": "meter",
2658
- "min": 0.0
2680
+ "max": "@entity.threshold"
2659
2681
  },
2660
2682
  {
2661
2683
  "variant": "ghost",
2662
- "label": "Reset",
2684
+ "action": "RESET",
2663
2685
  "type": "button",
2664
2686
  "icon": "rotate-ccw",
2665
- "action": "RESET"
2687
+ "label": "Reset"
2666
2688
  }
2667
2689
  ],
2668
- "type": "stack"
2690
+ "gap": "lg",
2691
+ "type": "stack",
2692
+ "direction": "vertical"
2669
2693
  }
2670
- ]
2671
- }
2672
- ]
2673
- ]
2674
- },
2675
- {
2676
- "from": "halfOpen",
2677
- "to": "closed",
2678
- "event": "RESET",
2679
- "effects": [
2680
- [
2681
- "render-ui",
2682
- "main",
2683
- {
2684
- "appName": "API Gateway",
2694
+ ],
2685
2695
  "navItems": [
2686
2696
  {
2687
2697
  "label": "Routes",
2688
- "icon": "git-branch",
2689
- "href": "/routes"
2698
+ "href": "/routes",
2699
+ "icon": "git-branch"
2690
2700
  },
2691
2701
  {
2692
- "href": "/backends",
2693
2702
  "icon": "server",
2694
- "label": "Backends"
2703
+ "label": "Backends",
2704
+ "href": "/backends"
2695
2705
  },
2696
2706
  {
2697
- "label": "Analytics",
2698
2707
  "href": "/analytics",
2699
- "icon": "bar-chart-2"
2708
+ "icon": "bar-chart-2",
2709
+ "label": "Analytics"
2700
2710
  }
2701
2711
  ],
2712
+ "appName": "API Gateway"
2713
+ }
2714
+ ]
2715
+ ]
2716
+ },
2717
+ {
2718
+ "from": "halfOpen",
2719
+ "to": "closed",
2720
+ "event": "RESET",
2721
+ "effects": [
2722
+ [
2723
+ "render-ui",
2724
+ "main",
2725
+ {
2726
+ "appName": "API Gateway",
2727
+ "type": "dashboard-layout",
2702
2728
  "children": [
2703
2729
  {
2704
- "gap": "lg",
2705
2730
  "type": "stack",
2731
+ "direction": "vertical",
2706
2732
  "children": [
2707
2733
  {
2734
+ "type": "stack",
2735
+ "direction": "horizontal",
2708
2736
  "align": "center",
2709
- "gap": "md",
2737
+ "justify": "between",
2710
2738
  "children": [
2711
2739
  {
2712
- "align": "center",
2713
- "type": "stack",
2714
- "direction": "horizontal",
2715
- "gap": "md",
2716
2740
  "children": [
2717
2741
  {
2718
2742
  "type": "icon",
2719
2743
  "name": "server"
2720
2744
  },
2721
2745
  {
2722
- "type": "typography",
2746
+ "variant": "h2",
2723
2747
  "content": "Backend",
2724
- "variant": "h2"
2748
+ "type": "typography"
2725
2749
  }
2726
- ]
2750
+ ],
2751
+ "type": "stack",
2752
+ "align": "center",
2753
+ "direction": "horizontal",
2754
+ "gap": "md"
2727
2755
  },
2728
2756
  {
2729
- "pulse": false,
2730
- "status": "online",
2731
2757
  "label": "Circuit Closed",
2732
- "type": "status-dot"
2758
+ "pulse": false,
2759
+ "type": "status-dot",
2760
+ "status": "online"
2733
2761
  }
2734
2762
  ],
2735
- "type": "stack",
2736
- "direction": "horizontal",
2737
- "justify": "between"
2763
+ "gap": "md"
2738
2764
  },
2739
2765
  {
2740
2766
  "type": "divider"
2741
2767
  },
2742
2768
  {
2743
2769
  "variant": "success",
2744
- "message": "Service is healthy. All requests are being processed.",
2745
- "type": "alert"
2770
+ "type": "alert",
2771
+ "message": "Service is healthy. All requests are being processed."
2746
2772
  },
2747
2773
  {
2748
- "type": "simple-grid",
2749
2774
  "children": [
2750
2775
  {
2751
2776
  "label": "Failures",
2752
- "type": "stat-display",
2753
- "value": "@entity.failureCount"
2777
+ "value": "@entity.failureCount",
2778
+ "type": "stat-display"
2754
2779
  },
2755
2780
  {
2756
2781
  "label": "Successes",
2757
- "value": "@entity.successCount",
2758
- "type": "stat-display"
2782
+ "type": "stat-display",
2783
+ "value": "@entity.successCount"
2759
2784
  }
2760
2785
  ],
2786
+ "type": "simple-grid",
2761
2787
  "cols": 2.0
2762
2788
  },
2763
2789
  {
2764
- "type": "meter",
2765
- "min": 0.0,
2766
2790
  "value": "@entity.failureCount",
2767
- "max": "@entity.threshold"
2791
+ "max": "@entity.threshold",
2792
+ "type": "meter",
2793
+ "min": 0.0
2768
2794
  }
2769
2795
  ],
2770
- "direction": "vertical"
2796
+ "gap": "lg"
2771
2797
  }
2772
2798
  ],
2773
- "type": "dashboard-layout"
2799
+ "navItems": [
2800
+ {
2801
+ "href": "/routes",
2802
+ "label": "Routes",
2803
+ "icon": "git-branch"
2804
+ },
2805
+ {
2806
+ "href": "/backends",
2807
+ "icon": "server",
2808
+ "label": "Backends"
2809
+ },
2810
+ {
2811
+ "icon": "bar-chart-2",
2812
+ "label": "Analytics",
2813
+ "href": "/analytics"
2814
+ }
2815
+ ]
2774
2816
  }
2775
2817
  ]
2776
2818
  ]
@@ -2922,8 +2964,8 @@
2922
2964
  "Analytics",
2923
2965
  {
2924
2966
  "emit": {
2925
- "failure": "AnalyticsLoadFailed",
2926
- "success": "AnalyticsLoaded"
2967
+ "success": "AnalyticsLoaded",
2968
+ "failure": "AnalyticsLoadFailed"
2927
2969
  }
2928
2970
  }
2929
2971
  ],
@@ -2931,12 +2973,15 @@
2931
2973
  "render-ui",
2932
2974
  "main",
2933
2975
  {
2934
- "type": "dashboard-layout",
2935
2976
  "appName": "API Gateway",
2936
2977
  "children": [
2937
2978
  {
2979
+ "type": "scaled-diagram",
2938
2980
  "children": [
2939
2981
  {
2982
+ "direction": "vertical",
2983
+ "gap": "lg",
2984
+ "type": "stack",
2940
2985
  "children": [
2941
2986
  {
2942
2987
  "items": [
@@ -2953,11 +2998,9 @@
2953
2998
  {
2954
2999
  "type": "stack",
2955
3000
  "justify": "between",
3001
+ "gap": "md",
2956
3002
  "children": [
2957
3003
  {
2958
- "gap": "md",
2959
- "type": "stack",
2960
- "direction": "horizontal",
2961
3004
  "children": [
2962
3005
  {
2963
3006
  "name": "bar-chart-2",
@@ -2968,28 +3011,30 @@
2968
3011
  "content": "Analytics",
2969
3012
  "type": "typography"
2970
3013
  }
2971
- ]
3014
+ ],
3015
+ "direction": "horizontal",
3016
+ "gap": "md",
3017
+ "type": "stack"
2972
3018
  },
2973
3019
  {
3020
+ "action": "REFRESH",
2974
3021
  "label": "Refresh",
3022
+ "type": "button",
2975
3023
  "variant": "secondary",
2976
- "action": "REFRESH",
2977
- "icon": "refresh-cw",
2978
- "type": "button"
3024
+ "icon": "refresh-cw"
2979
3025
  }
2980
3026
  ],
2981
- "gap": "md",
2982
3027
  "direction": "horizontal"
2983
3028
  },
2984
3029
  {
2985
3030
  "type": "divider"
2986
3031
  },
2987
3032
  {
2988
- "type": "box",
2989
3033
  "padding": "md",
3034
+ "type": "box",
2990
3035
  "children": [
2991
3036
  {
2992
- "type": "simple-grid",
3037
+ "cols": 3.0,
2993
3038
  "children": [
2994
3039
  {
2995
3040
  "type": "stat-display",
@@ -2997,39 +3042,39 @@
2997
3042
  "value": "@entity.totalRequests"
2998
3043
  },
2999
3044
  {
3000
- "value": "@entity.errorRate",
3045
+ "label": "ErrorRate",
3001
3046
  "type": "stat-display",
3002
- "label": "ErrorRate"
3047
+ "value": "@entity.errorRate"
3003
3048
  },
3004
3049
  {
3005
3050
  "value": "@entity.avgLatency",
3006
- "label": "AvgLatency",
3007
- "type": "stat-display"
3051
+ "type": "stat-display",
3052
+ "label": "AvgLatency"
3008
3053
  },
3009
3054
  {
3010
3055
  "type": "card",
3011
3056
  "children": [
3012
3057
  {
3013
- "gap": "sm",
3058
+ "direction": "vertical",
3014
3059
  "type": "stack",
3060
+ "gap": "sm",
3015
3061
  "children": [
3016
3062
  {
3063
+ "variant": "caption",
3017
3064
  "content": "Uptime",
3018
- "type": "typography",
3019
- "variant": "caption"
3065
+ "type": "typography"
3020
3066
  },
3021
3067
  {
3068
+ "content": "@entity.uptime",
3022
3069
  "type": "typography",
3023
- "variant": "h3",
3024
- "content": "@entity.uptime"
3070
+ "variant": "h3"
3025
3071
  }
3026
- ],
3027
- "direction": "vertical"
3072
+ ]
3028
3073
  }
3029
3074
  ]
3030
3075
  }
3031
3076
  ],
3032
- "cols": 3.0
3077
+ "type": "simple-grid"
3033
3078
  }
3034
3079
  ]
3035
3080
  },
@@ -3037,6 +3082,8 @@
3037
3082
  "type": "divider"
3038
3083
  },
3039
3084
  {
3085
+ "gap": "md",
3086
+ "cols": 2.0,
3040
3087
  "type": "grid",
3041
3088
  "children": [
3042
3089
  {
@@ -3054,20 +3101,18 @@
3054
3101
  "children": [
3055
3102
  {
3056
3103
  "variant": "caption",
3057
- "type": "typography",
3058
- "content": "Graph View"
3104
+ "content": "Graph View",
3105
+ "type": "typography"
3059
3106
  }
3060
3107
  ]
3061
3108
  }
3062
- ],
3063
- "gap": "md",
3064
- "cols": 2.0
3109
+ ]
3065
3110
  },
3066
3111
  {
3067
3112
  "data": [
3068
3113
  {
3069
- "value": 12.0,
3070
- "date": "Jan"
3114
+ "date": "Jan",
3115
+ "value": 12.0
3071
3116
  },
3072
3117
  {
3073
3118
  "value": 19.0,
@@ -3082,12 +3127,12 @@
3082
3127
  "date": "Apr"
3083
3128
  },
3084
3129
  {
3085
- "date": "May",
3086
- "value": 22.0
3130
+ "value": 22.0,
3131
+ "date": "May"
3087
3132
  },
3088
3133
  {
3089
- "date": "Jun",
3090
- "value": 30.0
3134
+ "value": 30.0,
3135
+ "date": "Jun"
3091
3136
  }
3092
3137
  ],
3093
3138
  "type": "line-chart"
@@ -3096,8 +3141,8 @@
3096
3141
  "type": "chart-legend",
3097
3142
  "items": [
3098
3143
  {
3099
- "label": "Current",
3100
- "color": "primary"
3144
+ "color": "primary",
3145
+ "label": "Current"
3101
3146
  },
3102
3147
  {
3103
3148
  "label": "Previous",
@@ -3106,58 +3151,55 @@
3106
3151
  ]
3107
3152
  },
3108
3153
  {
3109
- "type": "graph-view",
3154
+ "edges": [
3155
+ {
3156
+ "target": "b",
3157
+ "source": "a"
3158
+ },
3159
+ {
3160
+ "target": "c",
3161
+ "source": "b"
3162
+ }
3163
+ ],
3110
3164
  "width": 400.0,
3165
+ "height": 200.0,
3166
+ "type": "graph-view",
3111
3167
  "nodes": [
3112
3168
  {
3113
3169
  "id": "a",
3114
3170
  "label": "Start"
3115
3171
  },
3116
3172
  {
3117
- "label": "Process",
3118
- "id": "b"
3173
+ "id": "b",
3174
+ "label": "Process"
3119
3175
  },
3120
3176
  {
3121
3177
  "id": "c",
3122
3178
  "label": "End"
3123
3179
  }
3124
- ],
3125
- "edges": [
3126
- {
3127
- "target": "b",
3128
- "source": "a"
3129
- },
3130
- {
3131
- "target": "c",
3132
- "source": "b"
3133
- }
3134
- ],
3135
- "height": 200.0
3180
+ ]
3136
3181
  }
3137
- ],
3138
- "gap": "lg",
3139
- "direction": "vertical",
3140
- "type": "stack"
3182
+ ]
3141
3183
  }
3142
- ],
3143
- "type": "scaled-diagram"
3184
+ ]
3144
3185
  }
3145
3186
  ],
3187
+ "type": "dashboard-layout",
3146
3188
  "navItems": [
3147
3189
  {
3148
- "label": "Routes",
3190
+ "icon": "git-branch",
3149
3191
  "href": "/routes",
3150
- "icon": "git-branch"
3192
+ "label": "Routes"
3151
3193
  },
3152
3194
  {
3153
- "icon": "server",
3154
3195
  "href": "/backends",
3155
- "label": "Backends"
3196
+ "label": "Backends",
3197
+ "icon": "server"
3156
3198
  },
3157
3199
  {
3158
- "href": "/analytics",
3159
3200
  "icon": "bar-chart-2",
3160
- "label": "Analytics"
3201
+ "label": "Analytics",
3202
+ "href": "/analytics"
3161
3203
  }
3162
3204
  ]
3163
3205
  }
@@ -3183,14 +3225,13 @@
3183
3225
  "render-ui",
3184
3226
  "main",
3185
3227
  {
3228
+ "type": "dashboard-layout",
3186
3229
  "appName": "API Gateway",
3187
3230
  "children": [
3188
3231
  {
3232
+ "type": "scaled-diagram",
3189
3233
  "children": [
3190
3234
  {
3191
- "type": "stack",
3192
- "direction": "vertical",
3193
- "gap": "lg",
3194
3235
  "children": [
3195
3236
  {
3196
3237
  "items": [
@@ -3205,43 +3246,44 @@
3205
3246
  "type": "breadcrumb"
3206
3247
  },
3207
3248
  {
3249
+ "type": "stack",
3250
+ "direction": "horizontal",
3208
3251
  "children": [
3209
3252
  {
3210
3253
  "type": "stack",
3254
+ "gap": "md",
3211
3255
  "children": [
3212
3256
  {
3213
3257
  "name": "bar-chart-2",
3214
3258
  "type": "icon"
3215
3259
  },
3216
3260
  {
3261
+ "type": "typography",
3217
3262
  "content": "Analytics",
3218
- "variant": "h2",
3219
- "type": "typography"
3263
+ "variant": "h2"
3220
3264
  }
3221
3265
  ],
3222
- "direction": "horizontal",
3223
- "gap": "md"
3266
+ "direction": "horizontal"
3224
3267
  },
3225
3268
  {
3226
- "icon": "refresh-cw",
3269
+ "action": "REFRESH",
3227
3270
  "type": "button",
3228
3271
  "variant": "secondary",
3229
3272
  "label": "Refresh",
3230
- "action": "REFRESH"
3273
+ "icon": "refresh-cw"
3231
3274
  }
3232
3275
  ],
3233
3276
  "justify": "between",
3234
- "direction": "horizontal",
3235
- "gap": "md",
3236
- "type": "stack"
3277
+ "gap": "md"
3237
3278
  },
3238
3279
  {
3239
3280
  "type": "divider"
3240
3281
  },
3241
3282
  {
3283
+ "type": "box",
3242
3284
  "children": [
3243
3285
  {
3244
- "cols": 3.0,
3286
+ "type": "simple-grid",
3245
3287
  "children": [
3246
3288
  {
3247
3289
  "value": "@entity.totalRequests",
@@ -3249,23 +3291,24 @@
3249
3291
  "label": "TotalRequests"
3250
3292
  },
3251
3293
  {
3252
- "value": "@entity.errorRate",
3253
3294
  "label": "ErrorRate",
3254
- "type": "stat-display"
3295
+ "type": "stat-display",
3296
+ "value": "@entity.errorRate"
3255
3297
  },
3256
3298
  {
3257
- "value": "@entity.avgLatency",
3258
3299
  "type": "stat-display",
3259
- "label": "AvgLatency"
3300
+ "label": "AvgLatency",
3301
+ "value": "@entity.avgLatency"
3260
3302
  },
3261
3303
  {
3304
+ "type": "card",
3262
3305
  "children": [
3263
3306
  {
3264
3307
  "children": [
3265
3308
  {
3266
- "type": "typography",
3267
3309
  "variant": "caption",
3268
- "content": "Uptime"
3310
+ "content": "Uptime",
3311
+ "type": "typography"
3269
3312
  },
3270
3313
  {
3271
3314
  "type": "typography",
@@ -3273,33 +3316,29 @@
3273
3316
  "content": "@entity.uptime"
3274
3317
  }
3275
3318
  ],
3276
- "gap": "sm",
3277
3319
  "type": "stack",
3320
+ "gap": "sm",
3278
3321
  "direction": "vertical"
3279
3322
  }
3280
- ],
3281
- "type": "card"
3323
+ ]
3282
3324
  }
3283
3325
  ],
3284
- "type": "simple-grid"
3326
+ "cols": 3.0
3285
3327
  }
3286
3328
  ],
3287
- "type": "box",
3288
3329
  "padding": "md"
3289
3330
  },
3290
3331
  {
3291
3332
  "type": "divider"
3292
3333
  },
3293
3334
  {
3294
- "cols": 2.0,
3295
- "gap": "md",
3296
3335
  "children": [
3297
3336
  {
3298
3337
  "children": [
3299
3338
  {
3300
- "content": "Chart View",
3339
+ "type": "typography",
3301
3340
  "variant": "caption",
3302
- "type": "typography"
3341
+ "content": "Chart View"
3303
3342
  }
3304
3343
  ],
3305
3344
  "type": "card"
@@ -3307,18 +3346,19 @@
3307
3346
  {
3308
3347
  "children": [
3309
3348
  {
3310
- "type": "typography",
3311
3349
  "content": "Graph View",
3312
- "variant": "caption"
3350
+ "variant": "caption",
3351
+ "type": "typography"
3313
3352
  }
3314
3353
  ],
3315
3354
  "type": "card"
3316
3355
  }
3317
3356
  ],
3357
+ "gap": "md",
3358
+ "cols": 2.0,
3318
3359
  "type": "grid"
3319
3360
  },
3320
3361
  {
3321
- "type": "line-chart",
3322
3362
  "data": [
3323
3363
  {
3324
3364
  "value": 12.0,
@@ -3329,12 +3369,12 @@
3329
3369
  "value": 19.0
3330
3370
  },
3331
3371
  {
3332
- "value": 15.0,
3333
- "date": "Mar"
3372
+ "date": "Mar",
3373
+ "value": 15.0
3334
3374
  },
3335
3375
  {
3336
- "date": "Apr",
3337
- "value": 25.0
3376
+ "value": 25.0,
3377
+ "date": "Apr"
3338
3378
  },
3339
3379
  {
3340
3380
  "value": 22.0,
@@ -3344,7 +3384,8 @@
3344
3384
  "date": "Jun",
3345
3385
  "value": 30.0
3346
3386
  }
3347
- ]
3387
+ ],
3388
+ "type": "line-chart"
3348
3389
  },
3349
3390
  {
3350
3391
  "type": "chart-legend",
@@ -3360,16 +3401,6 @@
3360
3401
  ]
3361
3402
  },
3362
3403
  {
3363
- "edges": [
3364
- {
3365
- "source": "a",
3366
- "target": "b"
3367
- },
3368
- {
3369
- "target": "c",
3370
- "source": "b"
3371
- }
3372
- ],
3373
3404
  "nodes": [
3374
3405
  {
3375
3406
  "id": "a",
@@ -3384,34 +3415,45 @@
3384
3415
  "label": "End"
3385
3416
  }
3386
3417
  ],
3387
- "width": 400.0,
3388
3418
  "type": "graph-view",
3389
- "height": 200.0
3419
+ "height": 200.0,
3420
+ "edges": [
3421
+ {
3422
+ "target": "b",
3423
+ "source": "a"
3424
+ },
3425
+ {
3426
+ "target": "c",
3427
+ "source": "b"
3428
+ }
3429
+ ],
3430
+ "width": 400.0
3390
3431
  }
3391
- ]
3432
+ ],
3433
+ "gap": "lg",
3434
+ "direction": "vertical",
3435
+ "type": "stack"
3392
3436
  }
3393
- ],
3394
- "type": "scaled-diagram"
3437
+ ]
3395
3438
  }
3396
3439
  ],
3397
3440
  "navItems": [
3398
3441
  {
3399
- "href": "/routes",
3400
3442
  "icon": "git-branch",
3443
+ "href": "/routes",
3401
3444
  "label": "Routes"
3402
3445
  },
3403
3446
  {
3447
+ "label": "Backends",
3404
3448
  "href": "/backends",
3405
- "icon": "server",
3406
- "label": "Backends"
3449
+ "icon": "server"
3407
3450
  },
3408
3451
  {
3409
- "label": "Analytics",
3410
3452
  "icon": "bar-chart-2",
3453
+ "label": "Analytics",
3411
3454
  "href": "/analytics"
3412
3455
  }
3413
- ],
3414
- "type": "dashboard-layout"
3456
+ ]
3415
3457
  }
3416
3458
  ]
3417
3459
  ]
@@ -3435,35 +3477,19 @@
3435
3477
  "render-ui",
3436
3478
  "main",
3437
3479
  {
3438
- "navItems": [
3439
- {
3440
- "label": "Routes",
3441
- "href": "/routes",
3442
- "icon": "git-branch"
3443
- },
3444
- {
3445
- "icon": "server",
3446
- "href": "/backends",
3447
- "label": "Backends"
3448
- },
3449
- {
3450
- "href": "/analytics",
3451
- "icon": "bar-chart-2",
3452
- "label": "Analytics"
3453
- }
3454
- ],
3455
3480
  "type": "dashboard-layout",
3481
+ "appName": "API Gateway",
3456
3482
  "children": [
3457
3483
  {
3458
3484
  "children": [
3459
3485
  {
3460
- "direction": "vertical",
3486
+ "type": "stack",
3461
3487
  "children": [
3462
3488
  {
3463
3489
  "items": [
3464
3490
  {
3465
- "label": "Home",
3466
- "href": "/"
3491
+ "href": "/",
3492
+ "label": "Home"
3467
3493
  },
3468
3494
  {
3469
3495
  "label": "Analytics"
@@ -3472,55 +3498,53 @@
3472
3498
  "type": "breadcrumb"
3473
3499
  },
3474
3500
  {
3475
- "gap": "md",
3476
- "type": "stack",
3477
- "justify": "between",
3478
- "direction": "horizontal",
3479
3501
  "children": [
3480
3502
  {
3481
- "direction": "horizontal",
3482
3503
  "gap": "md",
3483
- "type": "stack",
3484
3504
  "children": [
3485
3505
  {
3486
3506
  "name": "bar-chart-2",
3487
3507
  "type": "icon"
3488
3508
  },
3489
3509
  {
3490
- "type": "typography",
3491
3510
  "content": "Analytics",
3492
- "variant": "h2"
3511
+ "variant": "h2",
3512
+ "type": "typography"
3493
3513
  }
3494
- ]
3514
+ ],
3515
+ "direction": "horizontal",
3516
+ "type": "stack"
3495
3517
  },
3496
3518
  {
3497
- "action": "REFRESH",
3498
- "variant": "secondary",
3499
- "icon": "refresh-cw",
3500
3519
  "type": "button",
3501
- "label": "Refresh"
3520
+ "variant": "secondary",
3521
+ "action": "REFRESH",
3522
+ "label": "Refresh",
3523
+ "icon": "refresh-cw"
3502
3524
  }
3503
- ]
3525
+ ],
3526
+ "gap": "md",
3527
+ "direction": "horizontal",
3528
+ "justify": "between",
3529
+ "type": "stack"
3504
3530
  },
3505
3531
  {
3506
3532
  "type": "divider"
3507
3533
  },
3508
3534
  {
3509
- "padding": "md",
3510
3535
  "children": [
3511
3536
  {
3512
- "type": "simple-grid",
3513
3537
  "cols": 3.0,
3514
3538
  "children": [
3515
3539
  {
3516
- "type": "stat-display",
3517
3540
  "label": "TotalRequests",
3541
+ "type": "stat-display",
3518
3542
  "value": "@entity.totalRequests"
3519
3543
  },
3520
3544
  {
3521
- "type": "stat-display",
3545
+ "label": "ErrorRate",
3522
3546
  "value": "@entity.errorRate",
3523
- "label": "ErrorRate"
3547
+ "type": "stat-display"
3524
3548
  },
3525
3549
  {
3526
3550
  "type": "stat-display",
@@ -3530,91 +3554,92 @@
3530
3554
  {
3531
3555
  "children": [
3532
3556
  {
3533
- "gap": "sm",
3534
- "type": "stack",
3535
3557
  "children": [
3536
3558
  {
3537
3559
  "type": "typography",
3538
- "variant": "caption",
3539
- "content": "Uptime"
3560
+ "content": "Uptime",
3561
+ "variant": "caption"
3540
3562
  },
3541
3563
  {
3542
3564
  "type": "typography",
3543
- "content": "@entity.uptime",
3544
- "variant": "h3"
3565
+ "variant": "h3",
3566
+ "content": "@entity.uptime"
3545
3567
  }
3546
3568
  ],
3569
+ "type": "stack",
3570
+ "gap": "sm",
3547
3571
  "direction": "vertical"
3548
3572
  }
3549
3573
  ],
3550
3574
  "type": "card"
3551
3575
  }
3552
- ]
3576
+ ],
3577
+ "type": "simple-grid"
3553
3578
  }
3554
3579
  ],
3580
+ "padding": "md",
3555
3581
  "type": "box"
3556
3582
  },
3557
3583
  {
3558
3584
  "type": "divider"
3559
3585
  },
3560
3586
  {
3561
- "cols": 2.0,
3562
3587
  "type": "grid",
3588
+ "cols": 2.0,
3563
3589
  "gap": "md",
3564
3590
  "children": [
3565
3591
  {
3566
3592
  "type": "card",
3567
3593
  "children": [
3568
3594
  {
3595
+ "type": "typography",
3569
3596
  "content": "Chart View",
3570
- "variant": "caption",
3571
- "type": "typography"
3597
+ "variant": "caption"
3572
3598
  }
3573
3599
  ]
3574
3600
  },
3575
3601
  {
3576
- "type": "card",
3577
3602
  "children": [
3578
3603
  {
3579
- "type": "typography",
3580
3604
  "content": "Graph View",
3581
- "variant": "caption"
3605
+ "variant": "caption",
3606
+ "type": "typography"
3582
3607
  }
3583
- ]
3608
+ ],
3609
+ "type": "card"
3584
3610
  }
3585
3611
  ]
3586
3612
  },
3587
3613
  {
3588
- "type": "line-chart",
3589
3614
  "data": [
3590
3615
  {
3591
- "date": "Jan",
3592
- "value": 12.0
3616
+ "value": 12.0,
3617
+ "date": "Jan"
3593
3618
  },
3594
3619
  {
3595
- "date": "Feb",
3596
- "value": 19.0
3620
+ "value": 19.0,
3621
+ "date": "Feb"
3597
3622
  },
3598
3623
  {
3599
- "date": "Mar",
3600
- "value": 15.0
3624
+ "value": 15.0,
3625
+ "date": "Mar"
3601
3626
  },
3602
3627
  {
3603
3628
  "date": "Apr",
3604
3629
  "value": 25.0
3605
3630
  },
3606
3631
  {
3607
- "value": 22.0,
3608
- "date": "May"
3632
+ "date": "May",
3633
+ "value": 22.0
3609
3634
  },
3610
3635
  {
3611
- "value": 30.0,
3612
- "date": "Jun"
3636
+ "date": "Jun",
3637
+ "value": 30.0
3613
3638
  }
3614
- ]
3639
+ ],
3640
+ "type": "line-chart"
3615
3641
  },
3616
3642
  {
3617
- "type": "chart-legend",
3618
3643
  "items": [
3619
3644
  {
3620
3645
  "label": "Current",
@@ -3624,25 +3649,16 @@
3624
3649
  "label": "Previous",
3625
3650
  "color": "muted"
3626
3651
  }
3627
- ]
3652
+ ],
3653
+ "type": "chart-legend"
3628
3654
  },
3629
3655
  {
3630
- "height": 200.0,
3631
3656
  "type": "graph-view",
3632
- "edges": [
3633
- {
3634
- "source": "a",
3635
- "target": "b"
3636
- },
3637
- {
3638
- "source": "b",
3639
- "target": "c"
3640
- }
3641
- ],
3657
+ "height": 200.0,
3642
3658
  "nodes": [
3643
3659
  {
3644
- "id": "a",
3645
- "label": "Start"
3660
+ "label": "Start",
3661
+ "id": "a"
3646
3662
  },
3647
3663
  {
3648
3664
  "id": "b",
@@ -3653,17 +3669,43 @@
3653
3669
  "label": "End"
3654
3670
  }
3655
3671
  ],
3672
+ "edges": [
3673
+ {
3674
+ "target": "b",
3675
+ "source": "a"
3676
+ },
3677
+ {
3678
+ "source": "b",
3679
+ "target": "c"
3680
+ }
3681
+ ],
3656
3682
  "width": 400.0
3657
3683
  }
3658
3684
  ],
3659
- "gap": "lg",
3660
- "type": "stack"
3685
+ "direction": "vertical",
3686
+ "gap": "lg"
3661
3687
  }
3662
3688
  ],
3663
3689
  "type": "scaled-diagram"
3664
3690
  }
3665
3691
  ],
3666
- "appName": "API Gateway"
3692
+ "navItems": [
3693
+ {
3694
+ "icon": "git-branch",
3695
+ "label": "Routes",
3696
+ "href": "/routes"
3697
+ },
3698
+ {
3699
+ "label": "Backends",
3700
+ "icon": "server",
3701
+ "href": "/backends"
3702
+ },
3703
+ {
3704
+ "href": "/analytics",
3705
+ "icon": "bar-chart-2",
3706
+ "label": "Analytics"
3707
+ }
3708
+ ]
3667
3709
  }
3668
3710
  ]
3669
3711
  ]
@@ -3678,8 +3720,8 @@
3678
3720
  "Analytics",
3679
3721
  {
3680
3722
  "emit": {
3681
- "success": "AnalyticsLoaded",
3682
- "failure": "AnalyticsLoadFailed"
3723
+ "failure": "AnalyticsLoadFailed",
3724
+ "success": "AnalyticsLoaded"
3683
3725
  }
3684
3726
  }
3685
3727
  ],
@@ -3687,14 +3729,28 @@
3687
3729
  "render-ui",
3688
3730
  "main",
3689
3731
  {
3690
- "appName": "API Gateway",
3732
+ "type": "dashboard-layout",
3733
+ "navItems": [
3734
+ {
3735
+ "label": "Routes",
3736
+ "href": "/routes",
3737
+ "icon": "git-branch"
3738
+ },
3739
+ {
3740
+ "label": "Backends",
3741
+ "icon": "server",
3742
+ "href": "/backends"
3743
+ },
3744
+ {
3745
+ "label": "Analytics",
3746
+ "href": "/analytics",
3747
+ "icon": "bar-chart-2"
3748
+ }
3749
+ ],
3691
3750
  "children": [
3692
3751
  {
3693
- "type": "scaled-diagram",
3694
3752
  "children": [
3695
3753
  {
3696
- "type": "stack",
3697
- "direction": "vertical",
3698
3754
  "children": [
3699
3755
  {
3700
3756
  "type": "breadcrumb",
@@ -3709,95 +3765,95 @@
3709
3765
  ]
3710
3766
  },
3711
3767
  {
3768
+ "gap": "md",
3712
3769
  "type": "stack",
3770
+ "justify": "between",
3713
3771
  "direction": "horizontal",
3714
3772
  "children": [
3715
3773
  {
3716
- "gap": "md",
3717
- "direction": "horizontal",
3718
3774
  "type": "stack",
3719
3775
  "children": [
3720
3776
  {
3721
- "name": "bar-chart-2",
3722
- "type": "icon"
3777
+ "type": "icon",
3778
+ "name": "bar-chart-2"
3723
3779
  },
3724
3780
  {
3725
- "content": "Analytics",
3781
+ "variant": "h2",
3726
3782
  "type": "typography",
3727
- "variant": "h2"
3783
+ "content": "Analytics"
3728
3784
  }
3729
- ]
3785
+ ],
3786
+ "gap": "md",
3787
+ "direction": "horizontal"
3730
3788
  },
3731
3789
  {
3732
- "type": "button",
3733
- "label": "Refresh",
3734
- "action": "REFRESH",
3790
+ "variant": "secondary",
3735
3791
  "icon": "refresh-cw",
3736
- "variant": "secondary"
3792
+ "action": "REFRESH",
3793
+ "type": "button",
3794
+ "label": "Refresh"
3737
3795
  }
3738
- ],
3739
- "justify": "between",
3740
- "gap": "md"
3796
+ ]
3741
3797
  },
3742
3798
  {
3743
3799
  "type": "divider"
3744
3800
  },
3745
3801
  {
3746
3802
  "padding": "md",
3803
+ "type": "box",
3747
3804
  "children": [
3748
3805
  {
3749
3806
  "type": "simple-grid",
3750
3807
  "cols": 3.0,
3751
3808
  "children": [
3752
3809
  {
3753
- "label": "TotalRequests",
3754
3810
  "value": "@entity.totalRequests",
3755
- "type": "stat-display"
3811
+ "type": "stat-display",
3812
+ "label": "TotalRequests"
3756
3813
  },
3757
3814
  {
3758
- "type": "stat-display",
3815
+ "label": "ErrorRate",
3759
3816
  "value": "@entity.errorRate",
3760
- "label": "ErrorRate"
3817
+ "type": "stat-display"
3761
3818
  },
3762
3819
  {
3820
+ "value": "@entity.avgLatency",
3763
3821
  "type": "stat-display",
3764
- "label": "AvgLatency",
3765
- "value": "@entity.avgLatency"
3822
+ "label": "AvgLatency"
3766
3823
  },
3767
3824
  {
3768
3825
  "children": [
3769
3826
  {
3827
+ "type": "stack",
3828
+ "gap": "sm",
3770
3829
  "children": [
3771
3830
  {
3772
3831
  "type": "typography",
3773
- "variant": "caption",
3774
- "content": "Uptime"
3832
+ "content": "Uptime",
3833
+ "variant": "caption"
3775
3834
  },
3776
3835
  {
3777
- "variant": "h3",
3836
+ "type": "typography",
3778
3837
  "content": "@entity.uptime",
3779
- "type": "typography"
3838
+ "variant": "h3"
3780
3839
  }
3781
3840
  ],
3782
- "gap": "sm",
3783
- "direction": "vertical",
3784
- "type": "stack"
3841
+ "direction": "vertical"
3785
3842
  }
3786
3843
  ],
3787
3844
  "type": "card"
3788
3845
  }
3789
3846
  ]
3790
3847
  }
3791
- ],
3792
- "type": "box"
3848
+ ]
3793
3849
  },
3794
3850
  {
3795
3851
  "type": "divider"
3796
3852
  },
3797
3853
  {
3798
- "cols": 2.0,
3799
3854
  "gap": "md",
3800
3855
  "type": "grid",
3856
+ "cols": 2.0,
3801
3857
  "children": [
3802
3858
  {
3803
3859
  "type": "card",
@@ -3810,18 +3866,19 @@
3810
3866
  ]
3811
3867
  },
3812
3868
  {
3813
- "type": "card",
3814
3869
  "children": [
3815
3870
  {
3871
+ "content": "Graph View",
3816
3872
  "type": "typography",
3817
- "variant": "caption",
3818
- "content": "Graph View"
3873
+ "variant": "caption"
3819
3874
  }
3820
- ]
3875
+ ],
3876
+ "type": "card"
3821
3877
  }
3822
3878
  ]
3823
3879
  },
3824
3880
  {
3881
+ "type": "line-chart",
3825
3882
  "data": [
3826
3883
  {
3827
3884
  "value": 12.0,
@@ -3844,17 +3901,16 @@
3844
3901
  "value": 22.0
3845
3902
  },
3846
3903
  {
3847
- "value": 30.0,
3848
- "date": "Jun"
3904
+ "date": "Jun",
3905
+ "value": 30.0
3849
3906
  }
3850
- ],
3851
- "type": "line-chart"
3907
+ ]
3852
3908
  },
3853
3909
  {
3854
3910
  "items": [
3855
3911
  {
3856
- "color": "primary",
3857
- "label": "Current"
3912
+ "label": "Current",
3913
+ "color": "primary"
3858
3914
  },
3859
3915
  {
3860
3916
  "label": "Previous",
@@ -3864,20 +3920,10 @@
3864
3920
  "type": "chart-legend"
3865
3921
  },
3866
3922
  {
3867
- "edges": [
3868
- {
3869
- "target": "b",
3870
- "source": "a"
3871
- },
3872
- {
3873
- "target": "c",
3874
- "source": "b"
3875
- }
3876
- ],
3877
3923
  "nodes": [
3878
3924
  {
3879
- "id": "a",
3880
- "label": "Start"
3925
+ "label": "Start",
3926
+ "id": "a"
3881
3927
  },
3882
3928
  {
3883
3929
  "id": "b",
@@ -3888,34 +3934,30 @@
3888
3934
  "label": "End"
3889
3935
  }
3890
3936
  ],
3891
- "height": 200.0,
3937
+ "width": 400.0,
3892
3938
  "type": "graph-view",
3893
- "width": 400.0
3939
+ "height": 200.0,
3940
+ "edges": [
3941
+ {
3942
+ "source": "a",
3943
+ "target": "b"
3944
+ },
3945
+ {
3946
+ "target": "c",
3947
+ "source": "b"
3948
+ }
3949
+ ]
3894
3950
  }
3895
3951
  ],
3896
- "gap": "lg"
3952
+ "direction": "vertical",
3953
+ "gap": "lg",
3954
+ "type": "stack"
3897
3955
  }
3898
- ]
3899
- }
3900
- ],
3901
- "navItems": [
3902
- {
3903
- "label": "Routes",
3904
- "href": "/routes",
3905
- "icon": "git-branch"
3906
- },
3907
- {
3908
- "href": "/backends",
3909
- "label": "Backends",
3910
- "icon": "server"
3911
- },
3912
- {
3913
- "href": "/analytics",
3914
- "label": "Analytics",
3915
- "icon": "bar-chart-2"
3956
+ ],
3957
+ "type": "scaled-diagram"
3916
3958
  }
3917
3959
  ],
3918
- "type": "dashboard-layout"
3960
+ "appName": "API Gateway"
3919
3961
  }
3920
3962
  ]
3921
3963
  ]
@@ -3939,30 +3981,15 @@
3939
3981
  "render-ui",
3940
3982
  "main",
3941
3983
  {
3942
- "navItems": [
3943
- {
3944
- "href": "/routes",
3945
- "icon": "git-branch",
3946
- "label": "Routes"
3947
- },
3948
- {
3949
- "icon": "server",
3950
- "label": "Backends",
3951
- "href": "/backends"
3952
- },
3953
- {
3954
- "icon": "bar-chart-2",
3955
- "label": "Analytics",
3956
- "href": "/analytics"
3957
- }
3958
- ],
3984
+ "appName": "API Gateway",
3959
3985
  "children": [
3960
3986
  {
3961
3987
  "children": [
3962
3988
  {
3989
+ "direction": "vertical",
3990
+ "type": "stack",
3963
3991
  "children": [
3964
3992
  {
3965
- "type": "breadcrumb",
3966
3993
  "items": [
3967
3994
  {
3968
3995
  "label": "Home",
@@ -3971,17 +3998,18 @@
3971
3998
  {
3972
3999
  "label": "Analytics"
3973
4000
  }
3974
- ]
4001
+ ],
4002
+ "type": "breadcrumb"
3975
4003
  },
3976
4004
  {
4005
+ "direction": "horizontal",
4006
+ "type": "stack",
3977
4007
  "children": [
3978
4008
  {
3979
- "direction": "horizontal",
3980
- "type": "stack",
3981
4009
  "children": [
3982
4010
  {
3983
- "name": "bar-chart-2",
3984
- "type": "icon"
4011
+ "type": "icon",
4012
+ "name": "bar-chart-2"
3985
4013
  },
3986
4014
  {
3987
4015
  "variant": "h2",
@@ -3989,38 +4017,40 @@
3989
4017
  "type": "typography"
3990
4018
  }
3991
4019
  ],
3992
- "gap": "md"
4020
+ "type": "stack",
4021
+ "gap": "md",
4022
+ "direction": "horizontal"
3993
4023
  },
3994
4024
  {
3995
- "icon": "refresh-cw",
4025
+ "type": "button",
4026
+ "action": "REFRESH",
3996
4027
  "variant": "secondary",
3997
4028
  "label": "Refresh",
3998
- "type": "button",
3999
- "action": "REFRESH"
4029
+ "icon": "refresh-cw"
4000
4030
  }
4001
4031
  ],
4002
4032
  "gap": "md",
4003
- "direction": "horizontal",
4004
- "type": "stack",
4005
4033
  "justify": "between"
4006
4034
  },
4007
4035
  {
4008
4036
  "type": "divider"
4009
4037
  },
4010
4038
  {
4039
+ "type": "box",
4040
+ "padding": "md",
4011
4041
  "children": [
4012
4042
  {
4013
- "type": "simple-grid",
4043
+ "cols": 3.0,
4014
4044
  "children": [
4015
4045
  {
4016
- "type": "stat-display",
4017
4046
  "label": "TotalRequests",
4018
- "value": "@entity.totalRequests"
4047
+ "value": "@entity.totalRequests",
4048
+ "type": "stat-display"
4019
4049
  },
4020
4050
  {
4051
+ "label": "ErrorRate",
4021
4052
  "type": "stat-display",
4022
- "value": "@entity.errorRate",
4023
- "label": "ErrorRate"
4053
+ "value": "@entity.errorRate"
4024
4054
  },
4025
4055
  {
4026
4056
  "type": "stat-display",
@@ -4031,35 +4061,34 @@
4031
4061
  "type": "card",
4032
4062
  "children": [
4033
4063
  {
4034
- "gap": "sm",
4035
- "direction": "vertical",
4036
- "type": "stack",
4037
4064
  "children": [
4038
4065
  {
4039
- "variant": "caption",
4066
+ "content": "Uptime",
4040
4067
  "type": "typography",
4041
- "content": "Uptime"
4068
+ "variant": "caption"
4042
4069
  },
4043
4070
  {
4044
4071
  "content": "@entity.uptime",
4045
- "type": "typography",
4046
- "variant": "h3"
4072
+ "variant": "h3",
4073
+ "type": "typography"
4047
4074
  }
4048
- ]
4075
+ ],
4076
+ "direction": "vertical",
4077
+ "type": "stack",
4078
+ "gap": "sm"
4049
4079
  }
4050
4080
  ]
4051
4081
  }
4052
4082
  ],
4053
- "cols": 3.0
4083
+ "type": "simple-grid"
4054
4084
  }
4055
- ],
4056
- "type": "box",
4057
- "padding": "md"
4085
+ ]
4058
4086
  },
4059
4087
  {
4060
4088
  "type": "divider"
4061
4089
  },
4062
4090
  {
4091
+ "gap": "md",
4063
4092
  "type": "grid",
4064
4093
  "children": [
4065
4094
  {
@@ -4075,18 +4104,18 @@
4075
4104
  {
4076
4105
  "children": [
4077
4106
  {
4078
- "variant": "caption",
4079
4107
  "type": "typography",
4108
+ "variant": "caption",
4080
4109
  "content": "Graph View"
4081
4110
  }
4082
4111
  ],
4083
4112
  "type": "card"
4084
4113
  }
4085
4114
  ],
4086
- "cols": 2.0,
4087
- "gap": "md"
4115
+ "cols": 2.0
4088
4116
  },
4089
4117
  {
4118
+ "type": "line-chart",
4090
4119
  "data": [
4091
4120
  {
4092
4121
  "date": "Jan",
@@ -4101,22 +4130,20 @@
4101
4130
  "value": 15.0
4102
4131
  },
4103
4132
  {
4104
- "date": "Apr",
4105
- "value": 25.0
4133
+ "value": 25.0,
4134
+ "date": "Apr"
4106
4135
  },
4107
4136
  {
4108
- "value": 22.0,
4109
- "date": "May"
4137
+ "date": "May",
4138
+ "value": 22.0
4110
4139
  },
4111
4140
  {
4112
- "value": 30.0,
4113
- "date": "Jun"
4141
+ "date": "Jun",
4142
+ "value": 30.0
4114
4143
  }
4115
- ],
4116
- "type": "line-chart"
4144
+ ]
4117
4145
  },
4118
4146
  {
4119
- "type": "chart-legend",
4120
4147
  "items": [
4121
4148
  {
4122
4149
  "label": "Current",
@@ -4126,9 +4153,25 @@
4126
4153
  "label": "Previous",
4127
4154
  "color": "muted"
4128
4155
  }
4129
- ]
4156
+ ],
4157
+ "type": "chart-legend"
4130
4158
  },
4131
4159
  {
4160
+ "type": "graph-view",
4161
+ "nodes": [
4162
+ {
4163
+ "id": "a",
4164
+ "label": "Start"
4165
+ },
4166
+ {
4167
+ "label": "Process",
4168
+ "id": "b"
4169
+ },
4170
+ {
4171
+ "label": "End",
4172
+ "id": "c"
4173
+ }
4174
+ ],
4132
4175
  "edges": [
4133
4176
  {
4134
4177
  "source": "a",
@@ -4139,34 +4182,33 @@
4139
4182
  "source": "b"
4140
4183
  }
4141
4184
  ],
4142
- "type": "graph-view",
4143
4185
  "width": 400.0,
4144
- "height": 200.0,
4145
- "nodes": [
4146
- {
4147
- "label": "Start",
4148
- "id": "a"
4149
- },
4150
- {
4151
- "label": "Process",
4152
- "id": "b"
4153
- },
4154
- {
4155
- "id": "c",
4156
- "label": "End"
4157
- }
4158
- ]
4186
+ "height": 200.0
4159
4187
  }
4160
4188
  ],
4161
- "gap": "lg",
4162
- "type": "stack",
4163
- "direction": "vertical"
4189
+ "gap": "lg"
4164
4190
  }
4165
4191
  ],
4166
4192
  "type": "scaled-diagram"
4167
4193
  }
4168
4194
  ],
4169
- "appName": "API Gateway",
4195
+ "navItems": [
4196
+ {
4197
+ "label": "Routes",
4198
+ "href": "/routes",
4199
+ "icon": "git-branch"
4200
+ },
4201
+ {
4202
+ "icon": "server",
4203
+ "label": "Backends",
4204
+ "href": "/backends"
4205
+ },
4206
+ {
4207
+ "label": "Analytics",
4208
+ "href": "/analytics",
4209
+ "icon": "bar-chart-2"
4210
+ }
4211
+ ],
4170
4212
  "type": "dashboard-layout"
4171
4213
  }
4172
4214
  ]