4runr-os 1.0.23 → 1.0.36

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 (235) hide show
  1. package/dist/collectors/collector_assets.d.ts +19 -0
  2. package/dist/collectors/collector_assets.d.ts.map +1 -0
  3. package/dist/collectors/collector_assets.js +72 -0
  4. package/dist/collectors/collector_assets.js.map +1 -0
  5. package/dist/collectors/collector_capabilities.d.ts +19 -0
  6. package/dist/collectors/collector_capabilities.d.ts.map +1 -0
  7. package/dist/collectors/collector_capabilities.js +61 -0
  8. package/dist/collectors/collector_capabilities.js.map +1 -0
  9. package/dist/collectors/collector_feed.d.ts +30 -0
  10. package/dist/collectors/collector_feed.d.ts.map +1 -0
  11. package/dist/collectors/collector_feed.js +78 -0
  12. package/dist/collectors/collector_feed.js.map +1 -0
  13. package/dist/collectors/collector_geo.d.ts +12 -0
  14. package/dist/collectors/collector_geo.d.ts.map +1 -0
  15. package/dist/collectors/collector_geo.js +248 -0
  16. package/dist/collectors/collector_geo.js.map +1 -0
  17. package/dist/collectors/collector_network.d.ts +22 -0
  18. package/dist/collectors/collector_network.d.ts.map +1 -0
  19. package/dist/collectors/collector_network.js +83 -0
  20. package/dist/collectors/collector_network.js.map +1 -0
  21. package/dist/collectors/collector_posture.d.ts +25 -0
  22. package/dist/collectors/collector_posture.d.ts.map +1 -0
  23. package/dist/collectors/collector_posture.js +207 -0
  24. package/dist/collectors/collector_posture.js.map +1 -0
  25. package/dist/collectors/collector_resources.d.ts +21 -0
  26. package/dist/collectors/collector_resources.d.ts.map +1 -0
  27. package/dist/collectors/collector_resources.js +87 -0
  28. package/dist/collectors/collector_resources.js.map +1 -0
  29. package/dist/collectors/helpers.d.ts +21 -0
  30. package/dist/collectors/helpers.d.ts.map +1 -0
  31. package/dist/collectors/helpers.js +49 -0
  32. package/dist/collectors/helpers.js.map +1 -0
  33. package/dist/core/collectorRegistry.d.ts +43 -0
  34. package/dist/core/collectorRegistry.d.ts.map +1 -0
  35. package/dist/core/collectorRegistry.js +76 -0
  36. package/dist/core/collectorRegistry.js.map +1 -0
  37. package/dist/core/constants.d.ts +25 -0
  38. package/dist/core/constants.d.ts.map +1 -0
  39. package/dist/core/constants.js +33 -0
  40. package/dist/core/constants.js.map +1 -0
  41. package/dist/core/eventBus.d.ts +36 -0
  42. package/dist/core/eventBus.d.ts.map +1 -0
  43. package/dist/core/eventBus.js +52 -0
  44. package/dist/core/eventBus.js.map +1 -0
  45. package/dist/core/types.d.ts +128 -0
  46. package/dist/core/types.d.ts.map +1 -0
  47. package/dist/core/types.js +6 -0
  48. package/dist/core/types.js.map +1 -0
  49. package/dist/events.d.ts +35 -0
  50. package/dist/events.d.ts.map +1 -0
  51. package/dist/events.js +89 -0
  52. package/dist/events.js.map +1 -0
  53. package/dist/index.js +301 -36
  54. package/dist/index.js.map +1 -1
  55. package/dist/models.d.ts +74 -0
  56. package/dist/models.d.ts.map +1 -0
  57. package/dist/models.js +7 -0
  58. package/dist/models.js.map +1 -0
  59. package/dist/state/getCollectorResults.d.ts +18 -0
  60. package/dist/state/getCollectorResults.d.ts.map +1 -0
  61. package/dist/state/getCollectorResults.js +25 -0
  62. package/dist/state/getCollectorResults.js.map +1 -0
  63. package/dist/state/historyStore.d.ts +35 -0
  64. package/dist/state/historyStore.d.ts.map +1 -0
  65. package/dist/state/historyStore.js +58 -0
  66. package/dist/state/historyStore.js.map +1 -0
  67. package/dist/state/uiStateBuilder.d.ts +12 -0
  68. package/dist/state/uiStateBuilder.d.ts.map +1 -0
  69. package/dist/state/uiStateBuilder.js +169 -0
  70. package/dist/state/uiStateBuilder.js.map +1 -0
  71. package/dist/state/uiStateScheduler.d.ts +43 -0
  72. package/dist/state/uiStateScheduler.d.ts.map +1 -0
  73. package/dist/state/uiStateScheduler.js +118 -0
  74. package/dist/state/uiStateScheduler.js.map +1 -0
  75. package/dist/store.d.ts +3 -1
  76. package/dist/store.d.ts.map +1 -1
  77. package/dist/store.js +2 -0
  78. package/dist/store.js.map +1 -1
  79. package/dist/system-state.d.ts +96 -0
  80. package/dist/system-state.d.ts.map +1 -0
  81. package/dist/system-state.js +273 -0
  82. package/dist/system-state.js.map +1 -0
  83. package/dist/ui/boot/sequence.d.ts +10 -0
  84. package/dist/ui/boot/sequence.d.ts.map +1 -0
  85. package/dist/ui/boot/sequence.js +173 -0
  86. package/dist/ui/boot/sequence.js.map +1 -0
  87. package/dist/ui/constraints/layoutSpec.d.ts +47 -0
  88. package/dist/ui/constraints/layoutSpec.d.ts.map +1 -0
  89. package/dist/ui/constraints/layoutSpec.js +60 -0
  90. package/dist/ui/constraints/layoutSpec.js.map +1 -0
  91. package/dist/ui/constraints/unknownHandling.d.ts +29 -0
  92. package/dist/ui/constraints/unknownHandling.d.ts.map +1 -0
  93. package/dist/ui/constraints/unknownHandling.js +60 -0
  94. package/dist/ui/constraints/unknownHandling.js.map +1 -0
  95. package/dist/ui/drilldowns/feed.d.ts +11 -0
  96. package/dist/ui/drilldowns/feed.d.ts.map +1 -0
  97. package/dist/ui/drilldowns/feed.js +68 -0
  98. package/dist/ui/drilldowns/feed.js.map +1 -0
  99. package/dist/ui/drilldowns/index.d.ts +7 -0
  100. package/dist/ui/drilldowns/index.d.ts.map +1 -0
  101. package/dist/ui/drilldowns/index.js +8 -0
  102. package/dist/ui/drilldowns/index.js.map +1 -0
  103. package/dist/ui/drilldowns/posture.d.ts +11 -0
  104. package/dist/ui/drilldowns/posture.d.ts.map +1 -0
  105. package/dist/ui/drilldowns/posture.js +74 -0
  106. package/dist/ui/drilldowns/posture.js.map +1 -0
  107. package/dist/ui/intelligence-posture-view.d.ts +22 -0
  108. package/dist/ui/intelligence-posture-view.d.ts.map +1 -0
  109. package/dist/ui/intelligence-posture-view.js +169 -0
  110. package/dist/ui/intelligence-posture-view.js.map +1 -0
  111. package/dist/ui/navigation/keymaps.d.ts +26 -0
  112. package/dist/ui/navigation/keymaps.d.ts.map +1 -0
  113. package/dist/ui/navigation/keymaps.js +135 -0
  114. package/dist/ui/navigation/keymaps.js.map +1 -0
  115. package/dist/ui/navigation/palette.d.ts +10 -0
  116. package/dist/ui/navigation/palette.d.ts.map +1 -0
  117. package/dist/ui/navigation/palette.js +133 -0
  118. package/dist/ui/navigation/palette.js.map +1 -0
  119. package/dist/ui/navigation/state.d.ts +47 -0
  120. package/dist/ui/navigation/state.d.ts.map +1 -0
  121. package/dist/ui/navigation/state.js +84 -0
  122. package/dist/ui/navigation/state.js.map +1 -0
  123. package/dist/ui/navigation/types.d.ts +38 -0
  124. package/dist/ui/navigation/types.d.ts.map +1 -0
  125. package/dist/ui/navigation/types.js +36 -0
  126. package/dist/ui/navigation/types.js.map +1 -0
  127. package/dist/ui/panels/active-assets.d.ts +12 -0
  128. package/dist/ui/panels/active-assets.d.ts.map +1 -0
  129. package/dist/ui/panels/active-assets.js +83 -0
  130. package/dist/ui/panels/active-assets.js.map +1 -0
  131. package/dist/ui/panels/capability-flags.d.ts +12 -0
  132. package/dist/ui/panels/capability-flags.d.ts.map +1 -0
  133. package/dist/ui/panels/capability-flags.js +59 -0
  134. package/dist/ui/panels/capability-flags.js.map +1 -0
  135. package/dist/ui/panels/command-surface.d.ts +12 -0
  136. package/dist/ui/panels/command-surface.d.ts.map +1 -0
  137. package/dist/ui/panels/command-surface.js +55 -0
  138. package/dist/ui/panels/command-surface.js.map +1 -0
  139. package/dist/ui/panels/network-origin.d.ts +12 -0
  140. package/dist/ui/panels/network-origin.d.ts.map +1 -0
  141. package/dist/ui/panels/network-origin.js +79 -0
  142. package/dist/ui/panels/network-origin.js.map +1 -0
  143. package/dist/ui/panels/operations-feed.d.ts +12 -0
  144. package/dist/ui/panels/operations-feed.d.ts.map +1 -0
  145. package/dist/ui/panels/operations-feed.js +90 -0
  146. package/dist/ui/panels/operations-feed.js.map +1 -0
  147. package/dist/ui/panels/posture.d.ts +12 -0
  148. package/dist/ui/panels/posture.d.ts.map +1 -0
  149. package/dist/ui/panels/posture.js +84 -0
  150. package/dist/ui/panels/posture.js.map +1 -0
  151. package/dist/ui/panels/resources.d.ts +11 -0
  152. package/dist/ui/panels/resources.d.ts.map +1 -0
  153. package/dist/ui/panels/resources.js +88 -0
  154. package/dist/ui/panels/resources.js.map +1 -0
  155. package/dist/ui/primitives/Panel.d.ts +25 -0
  156. package/dist/ui/primitives/Panel.d.ts.map +1 -0
  157. package/dist/ui/primitives/Panel.js +59 -0
  158. package/dist/ui/primitives/Panel.js.map +1 -0
  159. package/dist/ui/rendering/metricRenderer.d.ts +24 -0
  160. package/dist/ui/rendering/metricRenderer.d.ts.map +1 -0
  161. package/dist/ui/rendering/metricRenderer.js +86 -0
  162. package/dist/ui/rendering/metricRenderer.js.map +1 -0
  163. package/dist/ui/runtime/hub.d.ts +12 -0
  164. package/dist/ui/runtime/hub.d.ts.map +1 -0
  165. package/dist/ui/runtime/hub.js +468 -0
  166. package/dist/ui/runtime/hub.js.map +1 -0
  167. package/dist/ui/runtime/hubValidation.d.ts +23 -0
  168. package/dist/ui/runtime/hubValidation.d.ts.map +1 -0
  169. package/dist/ui/runtime/hubValidation.js +90 -0
  170. package/dist/ui/runtime/hubValidation.js.map +1 -0
  171. package/dist/ui/runtime/index.d.ts +29 -0
  172. package/dist/ui/runtime/index.d.ts.map +1 -0
  173. package/dist/ui/runtime/index.js +299 -0
  174. package/dist/ui/runtime/index.js.map +1 -0
  175. package/dist/ui/runtime/no-tui.d.ts +12 -0
  176. package/dist/ui/runtime/no-tui.d.ts.map +1 -0
  177. package/dist/ui/runtime/no-tui.js +77 -0
  178. package/dist/ui/runtime/no-tui.js.map +1 -0
  179. package/dist/ui/runtime/state-builder.d.ts +13 -0
  180. package/dist/ui/runtime/state-builder.d.ts.map +1 -0
  181. package/dist/ui/runtime/state-builder.js +114 -0
  182. package/dist/ui/runtime/state-builder.js.map +1 -0
  183. package/dist/ui/runtime/terminalSizeCheck.d.ts +10 -0
  184. package/dist/ui/runtime/terminalSizeCheck.d.ts.map +1 -0
  185. package/dist/ui/runtime/terminalSizeCheck.js +51 -0
  186. package/dist/ui/runtime/terminalSizeCheck.js.map +1 -0
  187. package/dist/ui/runtime/tuiLogGate.d.ts +22 -0
  188. package/dist/ui/runtime/tuiLogGate.d.ts.map +1 -0
  189. package/dist/ui/runtime/tuiLogGate.js +68 -0
  190. package/dist/ui/runtime/tuiLogGate.js.map +1 -0
  191. package/dist/ui/state/types.d.ts +72 -0
  192. package/dist/ui/state/types.d.ts.map +1 -0
  193. package/dist/ui/state/types.js +6 -0
  194. package/dist/ui/state/types.js.map +1 -0
  195. package/dist/ui/theme/borders.d.ts +20 -0
  196. package/dist/ui/theme/borders.d.ts.map +1 -0
  197. package/dist/ui/theme/borders.js +55 -0
  198. package/dist/ui/theme/borders.js.map +1 -0
  199. package/dist/ui/theme/tokens.d.ts +28 -0
  200. package/dist/ui/theme/tokens.d.ts.map +1 -0
  201. package/dist/ui/theme/tokens.js +50 -0
  202. package/dist/ui/theme/tokens.js.map +1 -0
  203. package/dist/ui/theme/typography.d.ts +14 -0
  204. package/dist/ui/theme/typography.d.ts.map +1 -0
  205. package/dist/ui/theme/typography.js +30 -0
  206. package/dist/ui/theme/typography.js.map +1 -0
  207. package/dist/ui/widgets/flagRow.d.ts +25 -0
  208. package/dist/ui/widgets/flagRow.d.ts.map +1 -0
  209. package/dist/ui/widgets/flagRow.js +57 -0
  210. package/dist/ui/widgets/flagRow.js.map +1 -0
  211. package/dist/ui/widgets/index.d.ts +9 -0
  212. package/dist/ui/widgets/index.d.ts.map +1 -0
  213. package/dist/ui/widgets/index.js +9 -0
  214. package/dist/ui/widgets/index.js.map +1 -0
  215. package/dist/ui/widgets/meter.d.ts +18 -0
  216. package/dist/ui/widgets/meter.d.ts.map +1 -0
  217. package/dist/ui/widgets/meter.js +38 -0
  218. package/dist/ui/widgets/meter.js.map +1 -0
  219. package/dist/ui/widgets/miniMap.d.ts +26 -0
  220. package/dist/ui/widgets/miniMap.d.ts.map +1 -0
  221. package/dist/ui/widgets/miniMap.js +94 -0
  222. package/dist/ui/widgets/miniMap.js.map +1 -0
  223. package/dist/ui/widgets/sparkline.d.ts +17 -0
  224. package/dist/ui/widgets/sparkline.d.ts.map +1 -0
  225. package/dist/ui/widgets/sparkline.js +63 -0
  226. package/dist/ui/widgets/sparkline.js.map +1 -0
  227. package/dist/ui-primitives.d.ts +5 -2
  228. package/dist/ui-primitives.d.ts.map +1 -1
  229. package/dist/ui-primitives.js +22 -9
  230. package/dist/ui-primitives.js.map +1 -1
  231. package/package.json +5 -4
  232. package/dist/ui/home-view.d.ts +0 -27
  233. package/dist/ui/home-view.d.ts.map +0 -1
  234. package/dist/ui/home-view.js +0 -127
  235. package/dist/ui/home-view.js.map +0 -1
@@ -0,0 +1,114 @@
1
+ /**
2
+ * State Builder
3
+ * Phase 1: Build UiState from AppState (or use UNKNOWN if not available)
4
+ */
5
+ import { getSystemState } from '../../system-state.js';
6
+ /**
7
+ * Build UI state from application state
8
+ * Uses real values if available, otherwise UNKNOWN
9
+ * NO FAKE DATA - this is a hard requirement
10
+ */
11
+ export function buildUiState(appState) {
12
+ // Try to get system state if available
13
+ let systemState;
14
+ try {
15
+ systemState = getSystemState(appState, false);
16
+ }
17
+ catch {
18
+ systemState = null;
19
+ }
20
+ // System Posture
21
+ const system_posture = systemState
22
+ ? {
23
+ overallPosture: systemState.systemPosture.overallPosture,
24
+ executionMode: systemState.systemPosture.executionMode,
25
+ riskLevel: systemState.systemPosture.riskLevel,
26
+ }
27
+ : {
28
+ overallPosture: 'UNKNOWN',
29
+ executionMode: 'UNKNOWN',
30
+ riskLevel: 'UNKNOWN',
31
+ };
32
+ // Network Context
33
+ const network_context = systemState
34
+ ? {
35
+ operatorOrigin: {
36
+ region: systemState.networkContext.operatorOrigin.region || 'UNKNOWN',
37
+ networkType: systemState.networkContext.operatorOrigin.networkType,
38
+ },
39
+ targetInfrastructure: {
40
+ gatewayRegion: systemState.networkContext.targetInfrastructure.gatewayRegion || 'UNKNOWN',
41
+ databaseRegion: systemState.networkContext.targetInfrastructure.databaseRegion || 'UNKNOWN',
42
+ latencyClass: systemState.networkContext.targetInfrastructure.latencyClass,
43
+ },
44
+ }
45
+ : {
46
+ operatorOrigin: {
47
+ region: 'UNKNOWN',
48
+ networkType: 'UNKNOWN',
49
+ },
50
+ targetInfrastructure: {
51
+ gatewayRegion: 'UNKNOWN',
52
+ databaseRegion: 'UNKNOWN',
53
+ latencyClass: 'UNKNOWN',
54
+ },
55
+ };
56
+ // Asset Registry Summary
57
+ const asset_registry_summary = systemState
58
+ ? {
59
+ total: systemState.assetRegistrySummary.total,
60
+ active: systemState.assetRegistrySummary.active,
61
+ idle: systemState.assetRegistrySummary.idle,
62
+ error: systemState.assetRegistrySummary.error,
63
+ highlighted: systemState.assetRegistrySummary.highlighted
64
+ ? {
65
+ name: systemState.assetRegistrySummary.highlighted.name,
66
+ status: systemState.assetRegistrySummary.highlighted.status,
67
+ }
68
+ : null,
69
+ }
70
+ : {
71
+ total: 0,
72
+ active: 0,
73
+ idle: 0,
74
+ error: 0,
75
+ highlighted: null,
76
+ };
77
+ // Operation Feed
78
+ const operation_feed = systemState
79
+ ? {
80
+ events: systemState.operationFeed.map(e => ({
81
+ type: e.type,
82
+ description: e.description,
83
+ timestamp: e.timestamp,
84
+ severity: e.severity,
85
+ })),
86
+ }
87
+ : {
88
+ events: [],
89
+ };
90
+ // Capability Flags
91
+ const capability_flags = systemState
92
+ ? {
93
+ gateway: systemState.capabilityFlags.gateway,
94
+ database: systemState.capabilityFlags.database,
95
+ memoryLayer: systemState.capabilityFlags.memoryLayer,
96
+ security: systemState.capabilityFlags.security,
97
+ rateLimiting: systemState.capabilityFlags.rateLimiting,
98
+ }
99
+ : {
100
+ gateway: 'UNKNOWN',
101
+ database: 'UNKNOWN',
102
+ memoryLayer: 'UNKNOWN',
103
+ security: 'UNKNOWN',
104
+ rateLimiting: 'UNKNOWN',
105
+ };
106
+ return {
107
+ system_posture,
108
+ network_context,
109
+ asset_registry_summary,
110
+ operation_feed,
111
+ capability_flags,
112
+ };
113
+ }
114
+ //# sourceMappingURL=state-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state-builder.js","sourceRoot":"","sources":["../../../src/ui/runtime/state-builder.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,QAAkB;IAC7C,uCAAuC;IACvC,IAAI,WAAW,CAAC;IAChB,IAAI,CAAC;QACH,WAAW,GAAG,cAAc,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAChD,CAAC;IAAC,MAAM,CAAC;QACP,WAAW,GAAG,IAAI,CAAC;IACrB,CAAC;IAED,iBAAiB;IACjB,MAAM,cAAc,GAAG,WAAW;QAChC,CAAC,CAAC;YACE,cAAc,EAAE,WAAW,CAAC,aAAa,CAAC,cAAqE;YAC/G,aAAa,EAAE,WAAW,CAAC,aAAa,CAAC,aAA8C;YACvF,SAAS,EAAE,WAAW,CAAC,aAAa,CAAC,SAAwC;SAC9E;QACH,CAAC,CAAC;YACE,cAAc,EAAE,SAAkB;YAClC,aAAa,EAAE,SAAkB;YACjC,SAAS,EAAE,SAAkB;SAC9B,CAAC;IAEN,kBAAkB;IAClB,MAAM,eAAe,GAAG,WAAW;QACjC,CAAC,CAAC;YACE,cAAc,EAAE;gBACd,MAAM,EAAE,WAAW,CAAC,cAAc,CAAC,cAAc,CAAC,MAAM,IAAI,SAAS;gBACrE,WAAW,EAAE,WAAW,CAAC,cAAc,CAAC,cAAc,CAAC,WAAW;aACnE;YACD,oBAAoB,EAAE;gBACpB,aAAa,EAAE,WAAW,CAAC,cAAc,CAAC,oBAAoB,CAAC,aAAa,IAAI,SAAS;gBACzF,cAAc,EAAE,WAAW,CAAC,cAAc,CAAC,oBAAoB,CAAC,cAAc,IAAI,SAAS;gBAC3F,YAAY,EAAE,WAAW,CAAC,cAAc,CAAC,oBAAoB,CAAC,YAAY;aAC3E;SACF;QACH,CAAC,CAAC;YACE,cAAc,EAAE;gBACd,MAAM,EAAE,SAAS;gBACjB,WAAW,EAAE,SAAkB;aAChC;YACD,oBAAoB,EAAE;gBACpB,aAAa,EAAE,SAAS;gBACxB,cAAc,EAAE,SAAS;gBACzB,YAAY,EAAE,SAAkB;aACjC;SACF,CAAC;IAEN,yBAAyB;IACzB,MAAM,sBAAsB,GAAG,WAAW;QACxC,CAAC,CAAC;YACE,KAAK,EAAE,WAAW,CAAC,oBAAoB,CAAC,KAAK;YAC7C,MAAM,EAAE,WAAW,CAAC,oBAAoB,CAAC,MAAM;YAC/C,IAAI,EAAE,WAAW,CAAC,oBAAoB,CAAC,IAAI;YAC3C,KAAK,EAAE,WAAW,CAAC,oBAAoB,CAAC,KAAK;YAC7C,WAAW,EAAE,WAAW,CAAC,oBAAoB,CAAC,WAAW;gBACvD,CAAC,CAAC;oBACE,IAAI,EAAE,WAAW,CAAC,oBAAoB,CAAC,WAAW,CAAC,IAAI;oBACvD,MAAM,EAAE,WAAW,CAAC,oBAAoB,CAAC,WAAW,CAAC,MAAqC;iBAC3F;gBACH,CAAC,CAAC,IAAI;SACT;QACH,CAAC,CAAC;YACE,KAAK,EAAE,CAAC;YACR,MAAM,EAAE,CAAC;YACT,IAAI,EAAE,CAAC;YACP,KAAK,EAAE,CAAC;YACR,WAAW,EAAE,IAAI;SAClB,CAAC;IAEN,iBAAiB;IACjB,MAAM,cAAc,GAAG,WAAW;QAChC,CAAC,CAAC;YACE,MAAM,EAAE,WAAW,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBAC1C,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,WAAW,EAAE,CAAC,CAAC,WAAW;gBAC1B,SAAS,EAAE,CAAC,CAAC,SAAS;gBACtB,QAAQ,EAAE,CAAC,CAAC,QAAQ;aACrB,CAAC,CAAC;SACJ;QACH,CAAC,CAAC;YACE,MAAM,EAAE,EAAE;SACX,CAAC;IAEN,mBAAmB;IACnB,MAAM,gBAAgB,GAAG,WAAW;QAClC,CAAC,CAAC;YACE,OAAO,EAAE,WAAW,CAAC,eAAe,CAAC,OAA+B;YACpE,QAAQ,EAAE,WAAW,CAAC,eAAe,CAAC,QAAuC;YAC7E,WAAW,EAAE,WAAW,CAAC,eAAe,CAAC,WAAyC;YAClF,QAAQ,EAAE,WAAW,CAAC,eAAe,CAAC,QAAoC;YAC1E,YAAY,EAAE,WAAW,CAAC,eAAe,CAAC,YAAsC;SACjF;QACH,CAAC,CAAC;YACE,OAAO,EAAE,SAAkB;YAC3B,QAAQ,EAAE,SAAkB;YAC5B,WAAW,EAAE,SAAkB;YAC/B,QAAQ,EAAE,SAAkB;YAC5B,YAAY,EAAE,SAAkB;SACjC,CAAC;IAEN,OAAO;QACL,cAAc;QACd,eAAe;QACf,sBAAsB;QACtB,cAAc;QACd,gBAAgB;KACjB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Terminal Size Check
3
+ * Phase 8: Runtime check for terminal size
4
+ */
5
+ import type { Widgets } from 'neo-blessed';
6
+ /**
7
+ * Check terminal size and render fallback if too small
8
+ */
9
+ export declare function checkAndRenderTerminalSize(screen: Widgets.Screen): boolean;
10
+ //# sourceMappingURL=terminalSizeCheck.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terminalSizeCheck.d.ts","sourceRoot":"","sources":["../../../src/ui/runtime/terminalSizeCheck.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAI3C;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,GAAG,OAAO,CAY1E"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Terminal Size Check
3
+ * Phase 8: Runtime check for terminal size
4
+ */
5
+ import { checkTerminalSize } from '../constraints/layoutSpec.js';
6
+ import { getBlessedColor } from '../theme/tokens.js';
7
+ /**
8
+ * Check terminal size and render fallback if too small
9
+ */
10
+ export function checkAndRenderTerminalSize(screen) {
11
+ const width = screen.width;
12
+ const height = screen.height;
13
+ const check = checkTerminalSize(width, height);
14
+ if (!check.valid) {
15
+ renderTerminalTooSmallScreen(screen, width, height, check.message);
16
+ return false;
17
+ }
18
+ return true;
19
+ }
20
+ /**
21
+ * Render fallback screen when terminal is too small
22
+ */
23
+ function renderTerminalTooSmallScreen(screen, currentWidth, currentHeight, message) {
24
+ const blessed = require('neo-blessed');
25
+ const blessedLib = blessed;
26
+ // Clear screen
27
+ screen.children.forEach((child) => child.destroy());
28
+ const fallbackBox = blessedLib.box({
29
+ top: 0,
30
+ left: 0,
31
+ width: screen.width,
32
+ height: screen.height,
33
+ border: { type: 'line' },
34
+ style: {
35
+ border: { fg: getBlessedColor('warnAmber') },
36
+ },
37
+ tags: true,
38
+ });
39
+ const content = [];
40
+ content.push('');
41
+ content.push(`{${getBlessedColor('warnAmber')}-fg}{bold}TERMINAL TOO SMALL{/bold}`);
42
+ content.push('');
43
+ content.push(`{${getBlessedColor('mutedGrey')}-fg}Current size: ${currentWidth}x${currentHeight}{/}`);
44
+ content.push(`{${getBlessedColor('mutedGrey')}-fg}Required: 120x35{/}`);
45
+ content.push('');
46
+ content.push(`{${getBlessedColor('mutedGrey')}-fg}Hint: resize terminal or set NO_TUI=1{/}`);
47
+ fallbackBox.setContent(content.join('\n'));
48
+ screen.append(fallbackBox);
49
+ screen.render();
50
+ }
51
+ //# sourceMappingURL=terminalSizeCheck.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terminalSizeCheck.js","sourceRoot":"","sources":["../../../src/ui/runtime/terminalSizeCheck.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD;;GAEG;AACH,MAAM,UAAU,0BAA0B,CAAC,MAAsB;IAC/D,MAAM,KAAK,GAAG,MAAM,CAAC,KAAe,CAAC;IACrC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAgB,CAAC;IAEvC,MAAM,KAAK,GAAG,iBAAiB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAE/C,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACjB,4BAA4B,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,OAAQ,CAAC,CAAC;QACpE,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,SAAS,4BAA4B,CACnC,MAAsB,EACtB,YAAoB,EACpB,aAAqB,EACrB,OAAe;IAEf,MAAM,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IACvC,MAAM,UAAU,GAAQ,OAAO,CAAC;IAEhC,eAAe;IACf,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAU,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IAEzD,MAAM,WAAW,GAAG,UAAU,CAAC,GAAG,CAAC;QACjC,GAAG,EAAE,CAAC;QACN,IAAI,EAAE,CAAC;QACP,KAAK,EAAE,MAAM,CAAC,KAAe;QAC7B,MAAM,EAAE,MAAM,CAAC,MAAgB;QAC/B,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;QACxB,KAAK,EAAE;YACL,MAAM,EAAE,EAAE,EAAE,EAAE,eAAe,CAAC,WAAW,CAAC,EAAE;SAC7C;QACD,IAAI,EAAE,IAAI;KACX,CAAC,CAAC;IAEH,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,OAAO,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC,WAAW,CAAC,qCAAqC,CAAC,CAAC;IACpF,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,OAAO,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC,WAAW,CAAC,qBAAqB,YAAY,IAAI,aAAa,KAAK,CAAC,CAAC;IACtG,OAAO,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC,WAAW,CAAC,yBAAyB,CAAC,CAAC;IACxE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,OAAO,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC,WAAW,CAAC,8CAA8C,CAAC,CAAC;IAE7F,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3C,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAC3B,MAAM,CAAC,MAAM,EAAE,CAAC;AAClB,CAAC"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * TUI Log Gate
3
+ * Phase 8: Prevent unstructured prints during TUI mode
4
+ */
5
+ /**
6
+ * Initialize TUI log gate
7
+ * Overrides console methods to prevent unstructured prints
8
+ */
9
+ export declare function initTuiLogGate(isDev?: boolean): void;
10
+ /**
11
+ * Restore original console methods
12
+ */
13
+ export declare function restoreConsoleMethods(): void;
14
+ /**
15
+ * Get debug buffer (for optional debug panel)
16
+ */
17
+ export declare function getDebugBuffer(): string[];
18
+ /**
19
+ * Clear debug buffer
20
+ */
21
+ export declare function clearDebugBuffer(): void;
22
+ //# sourceMappingURL=tuiLogGate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tuiLogGate.d.ts","sourceRoot":"","sources":["../../../src/ui/runtime/tuiLogGate.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,GAAE,OAAe,GAAG,IAAI,CAgC3D;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,IAAI,CAQ5C;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,MAAM,EAAE,CAEzC;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,IAAI,CAEvC"}
@@ -0,0 +1,68 @@
1
+ /**
2
+ * TUI Log Gate
3
+ * Phase 8: Prevent unstructured prints during TUI mode
4
+ */
5
+ let originalConsoleLog;
6
+ let originalConsoleError;
7
+ let originalConsoleWarn;
8
+ let tuiModeActive = false;
9
+ let debugBuffer = [];
10
+ /**
11
+ * Initialize TUI log gate
12
+ * Overrides console methods to prevent unstructured prints
13
+ */
14
+ export function initTuiLogGate(isDev = false) {
15
+ tuiModeActive = true;
16
+ // Save original methods
17
+ originalConsoleLog = console.log;
18
+ originalConsoleError = console.error;
19
+ originalConsoleWarn = console.warn;
20
+ // Override console.log
21
+ console.log = (...args) => {
22
+ if (isDev) {
23
+ // In dev, throw to catch violations early
24
+ throw new Error(`TUI mode: console.log() called. Use structured logger instead.\nArgs: ${JSON.stringify(args)}`);
25
+ }
26
+ else {
27
+ // In prod, route to debug buffer (optional)
28
+ debugBuffer.push(`[LOG] ${args.join(' ')}`);
29
+ }
30
+ };
31
+ // Override console.error (allow in TUI, but log to buffer)
32
+ console.error = (...args) => {
33
+ debugBuffer.push(`[ERROR] ${args.join(' ')}`);
34
+ // Still call original in case of critical errors
35
+ if (isDev) {
36
+ originalConsoleError(...args);
37
+ }
38
+ };
39
+ // Override console.warn
40
+ console.warn = (...args) => {
41
+ debugBuffer.push(`[WARN] ${args.join(' ')}`);
42
+ };
43
+ }
44
+ /**
45
+ * Restore original console methods
46
+ */
47
+ export function restoreConsoleMethods() {
48
+ if (tuiModeActive) {
49
+ console.log = originalConsoleLog;
50
+ console.error = originalConsoleError;
51
+ console.warn = originalConsoleWarn;
52
+ tuiModeActive = false;
53
+ debugBuffer = [];
54
+ }
55
+ }
56
+ /**
57
+ * Get debug buffer (for optional debug panel)
58
+ */
59
+ export function getDebugBuffer() {
60
+ return [...debugBuffer];
61
+ }
62
+ /**
63
+ * Clear debug buffer
64
+ */
65
+ export function clearDebugBuffer() {
66
+ debugBuffer = [];
67
+ }
68
+ //# sourceMappingURL=tuiLogGate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tuiLogGate.js","sourceRoot":"","sources":["../../../src/ui/runtime/tuiLogGate.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,IAAI,kBAAsC,CAAC;AAC3C,IAAI,oBAA0C,CAAC;AAC/C,IAAI,mBAAwC,CAAC;AAC7C,IAAI,aAAa,GAAY,KAAK,CAAC;AACnC,IAAI,WAAW,GAAa,EAAE,CAAC;AAE/B;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,QAAiB,KAAK;IACnD,aAAa,GAAG,IAAI,CAAC;IAErB,wBAAwB;IACxB,kBAAkB,GAAG,OAAO,CAAC,GAAG,CAAC;IACjC,oBAAoB,GAAG,OAAO,CAAC,KAAK,CAAC;IACrC,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAEnC,uBAAuB;IACvB,OAAO,CAAC,GAAG,GAAG,CAAC,GAAG,IAAW,EAAE,EAAE;QAC/B,IAAI,KAAK,EAAE,CAAC;YACV,0CAA0C;YAC1C,MAAM,IAAI,KAAK,CAAC,yEAAyE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACnH,CAAC;aAAM,CAAC;YACN,4CAA4C;YAC5C,WAAW,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC,CAAC;IAEF,2DAA2D;IAC3D,OAAO,CAAC,KAAK,GAAG,CAAC,GAAG,IAAW,EAAE,EAAE;QACjC,WAAW,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC9C,iDAAiD;QACjD,IAAI,KAAK,EAAE,CAAC;YACV,oBAAoB,CAAC,GAAG,IAAI,CAAC,CAAC;QAChC,CAAC;IACH,CAAC,CAAC;IAEF,wBAAwB;IACxB,OAAO,CAAC,IAAI,GAAG,CAAC,GAAG,IAAW,EAAE,EAAE;QAChC,WAAW,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC/C,CAAC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB;IACnC,IAAI,aAAa,EAAE,CAAC;QAClB,OAAO,CAAC,GAAG,GAAG,kBAAkB,CAAC;QACjC,OAAO,CAAC,KAAK,GAAG,oBAAoB,CAAC;QACrC,OAAO,CAAC,IAAI,GAAG,mBAAmB,CAAC;QACnC,aAAa,GAAG,KAAK,CAAC;QACtB,WAAW,GAAG,EAAE,CAAC;IACnB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc;IAC5B,OAAO,CAAC,GAAG,WAAW,CAAC,CAAC;AAC1B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB;IAC9B,WAAW,GAAG,EAAE,CAAC;AACnB,CAAC"}
@@ -0,0 +1,72 @@
1
+ /**
2
+ * UI State Types
3
+ * Phase 1: Stub state object - no fake data, use UNKNOWN if not available
4
+ */
5
+ /**
6
+ * System Posture State
7
+ */
8
+ export interface SystemPostureState {
9
+ overallPosture: 'OPERATIONAL' | 'DEGRADED' | 'OFFLINE' | 'CRITICAL' | 'UNKNOWN';
10
+ executionMode: 'LOCAL' | 'REMOTE' | 'HYBRID' | 'UNKNOWN';
11
+ riskLevel: 'LOW' | 'ELEVATED' | 'HIGH' | 'UNKNOWN';
12
+ }
13
+ /**
14
+ * Network Context State
15
+ */
16
+ export interface NetworkContextState {
17
+ operatorOrigin: {
18
+ region: string;
19
+ networkType: 'LOCAL' | 'VPN' | 'CLOUD' | 'UNKNOWN';
20
+ };
21
+ targetInfrastructure: {
22
+ gatewayRegion: string;
23
+ databaseRegion: string;
24
+ latencyClass: 'LOW' | 'MEDIUM' | 'HIGH' | 'UNKNOWN';
25
+ };
26
+ }
27
+ /**
28
+ * Asset Registry Summary State
29
+ */
30
+ export interface AssetRegistrySummaryState {
31
+ total: number;
32
+ active: number;
33
+ idle: number;
34
+ error: number;
35
+ highlighted: {
36
+ name: string;
37
+ status: 'ACTIVE' | 'IDLE' | 'ERROR' | 'UNKNOWN';
38
+ } | null;
39
+ }
40
+ /**
41
+ * Operation Feed State
42
+ */
43
+ export interface OperationFeedState {
44
+ events: Array<{
45
+ type: string;
46
+ description: string;
47
+ timestamp: number;
48
+ severity: 'info' | 'warning' | 'critical';
49
+ }>;
50
+ }
51
+ /**
52
+ * Capability Flags State
53
+ */
54
+ export interface CapabilityFlagsState {
55
+ gateway: 'READY' | 'DEGRADED' | 'UNKNOWN';
56
+ database: 'READY' | 'NOT_INITIALIZED' | 'UNKNOWN';
57
+ memoryLayer: 'IN_MEMORY' | 'PERSISTENT' | 'UNKNOWN';
58
+ security: 'OPEN' | 'BASIC' | 'JWT' | 'UNKNOWN';
59
+ rateLimiting: 'ENABLED' | 'DISABLED' | 'UNKNOWN';
60
+ }
61
+ /**
62
+ * Complete UI State
63
+ * Phase 1: Minimal stub - populate with real values if available, otherwise UNKNOWN
64
+ */
65
+ export interface UiState {
66
+ system_posture: SystemPostureState;
67
+ network_context: NetworkContextState;
68
+ asset_registry_summary: AssetRegistrySummaryState;
69
+ operation_feed: OperationFeedState;
70
+ capability_flags: CapabilityFlagsState;
71
+ }
72
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/ui/state/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,cAAc,EAAE,aAAa,GAAG,UAAU,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,CAAC;IAChF,aAAa,EAAE,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;IACzD,SAAS,EAAE,KAAK,GAAG,UAAU,GAAG,MAAM,GAAG,SAAS,CAAC;CACpD;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,cAAc,EAAE;QACd,MAAM,EAAE,MAAM,CAAC;QACf,WAAW,EAAE,OAAO,GAAG,KAAK,GAAG,OAAO,GAAG,SAAS,CAAC;KACpD,CAAC;IACF,oBAAoB,EAAE;QACpB,aAAa,EAAE,MAAM,CAAC;QACtB,cAAc,EAAE,MAAM,CAAC;QACvB,YAAY,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,CAAC;KACrD,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE;QACX,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;KACjD,GAAG,IAAI,CAAC;CACV;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,KAAK,CAAC;QACZ,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,UAAU,CAAC;KAC3C,CAAC,CAAC;CACJ;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,OAAO,GAAG,UAAU,GAAG,SAAS,CAAC;IAC1C,QAAQ,EAAE,OAAO,GAAG,iBAAiB,GAAG,SAAS,CAAC;IAClD,WAAW,EAAE,WAAW,GAAG,YAAY,GAAG,SAAS,CAAC;IACpD,QAAQ,EAAE,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,SAAS,CAAC;IAC/C,YAAY,EAAE,SAAS,GAAG,UAAU,GAAG,SAAS,CAAC;CAClD;AAED;;;GAGG;AACH,MAAM,WAAW,OAAO;IACtB,cAAc,EAAE,kBAAkB,CAAC;IACnC,eAAe,EAAE,mBAAmB,CAAC;IACrC,sBAAsB,EAAE,yBAAyB,CAAC;IAClD,cAAc,EAAE,kBAAkB,CAAC;IACnC,gBAAgB,EAAE,oBAAoB,CAAC;CACxC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * UI State Types
3
+ * Phase 1: Stub state object - no fake data, use UNKNOWN if not available
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/ui/state/types.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Border System
3
+ * Phase 7: Border "glow" without graphics
4
+ */
5
+ import type { PanelId } from '../navigation/types.js';
6
+ export type BorderStyle = {
7
+ borderType: 'line' | 'bg' | 'bold';
8
+ borderColor: string;
9
+ titleColor: string;
10
+ };
11
+ export type Severity = 'OK' | 'WARNING' | 'CRITICAL' | 'NEUTRAL';
12
+ /**
13
+ * Get border style for panel
14
+ */
15
+ export declare function getBorderStyle(panelId: PanelId, isFocused: boolean, severity?: Severity): BorderStyle;
16
+ /**
17
+ * Map status to severity
18
+ */
19
+ export declare function statusToSeverity(status: string | 'OPERATIONAL' | 'DEGRADED' | 'OFFLINE' | 'CRITICAL' | 'UNKNOWN'): Severity;
20
+ //# sourceMappingURL=borders.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"borders.d.ts","sourceRoot":"","sources":["../../../src/ui/theme/borders.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAEtD,MAAM,MAAM,WAAW,GAAG;IACxB,UAAU,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAAC;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG,IAAI,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,CAAC;AAEjE;;GAEG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,OAAO,EAClB,QAAQ,GAAE,QAAoB,GAC7B,WAAW,CAkCb;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,MAAM,GAAG,aAAa,GAAG,UAAU,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,GAC/E,QAAQ,CAMV"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * Border System
3
+ * Phase 7: Border "glow" without graphics
4
+ */
5
+ import { getBlessedColor } from './tokens.js';
6
+ /**
7
+ * Get border style for panel
8
+ */
9
+ export function getBorderStyle(panelId, isFocused, severity = 'NEUTRAL') {
10
+ // Focus glow: cyan accent, double-line or brighter
11
+ if (isFocused) {
12
+ return {
13
+ borderType: 'bold', // Double-line effect via bold
14
+ borderColor: getBlessedColor('accentCyan'),
15
+ titleColor: getBlessedColor('accentCyan'),
16
+ };
17
+ }
18
+ // Critical glow: red only when posture is CRITICAL
19
+ if (severity === 'CRITICAL') {
20
+ return {
21
+ borderType: 'line',
22
+ borderColor: getBlessedColor('criticalRed'),
23
+ titleColor: getBlessedColor('criticalRed'),
24
+ };
25
+ }
26
+ // Warning: amber for degraded
27
+ if (severity === 'WARNING') {
28
+ return {
29
+ borderType: 'line',
30
+ borderColor: getBlessedColor('warnAmber'),
31
+ titleColor: getBlessedColor('warnAmber'),
32
+ };
33
+ }
34
+ // Standard: purple (brand identity)
35
+ return {
36
+ borderType: 'line',
37
+ borderColor: getBlessedColor('primaryPurple'),
38
+ titleColor: getBlessedColor('primaryPurple'),
39
+ };
40
+ }
41
+ /**
42
+ * Map status to severity
43
+ */
44
+ export function statusToSeverity(status) {
45
+ if (status === 'OPERATIONAL')
46
+ return 'OK';
47
+ if (status === 'CRITICAL')
48
+ return 'CRITICAL';
49
+ if (status === 'DEGRADED')
50
+ return 'WARNING';
51
+ if (status === 'OFFLINE')
52
+ return 'WARNING'; // Amber unless critical dependency down
53
+ return 'NEUTRAL';
54
+ }
55
+ //# sourceMappingURL=borders.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"borders.js","sourceRoot":"","sources":["../../../src/ui/theme/borders.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAW9C;;GAEG;AACH,MAAM,UAAU,cAAc,CAC5B,OAAgB,EAChB,SAAkB,EAClB,WAAqB,SAAS;IAE9B,mDAAmD;IACnD,IAAI,SAAS,EAAE,CAAC;QACd,OAAO;YACL,UAAU,EAAE,MAAM,EAAE,8BAA8B;YAClD,WAAW,EAAE,eAAe,CAAC,YAAY,CAAC;YAC1C,UAAU,EAAE,eAAe,CAAC,YAAY,CAAC;SAC1C,CAAC;IACJ,CAAC;IAED,mDAAmD;IACnD,IAAI,QAAQ,KAAK,UAAU,EAAE,CAAC;QAC5B,OAAO;YACL,UAAU,EAAE,MAAM;YAClB,WAAW,EAAE,eAAe,CAAC,aAAa,CAAC;YAC3C,UAAU,EAAE,eAAe,CAAC,aAAa,CAAC;SAC3C,CAAC;IACJ,CAAC;IAED,8BAA8B;IAC9B,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,OAAO;YACL,UAAU,EAAE,MAAM;YAClB,WAAW,EAAE,eAAe,CAAC,WAAW,CAAC;YACzC,UAAU,EAAE,eAAe,CAAC,WAAW,CAAC;SACzC,CAAC;IACJ,CAAC;IAED,oCAAoC;IACpC,OAAO;QACL,UAAU,EAAE,MAAM;QAClB,WAAW,EAAE,eAAe,CAAC,eAAe,CAAC;QAC7C,UAAU,EAAE,eAAe,CAAC,eAAe,CAAC;KAC7C,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAC9B,MAAgF;IAEhF,IAAI,MAAM,KAAK,aAAa;QAAE,OAAO,IAAI,CAAC;IAC1C,IAAI,MAAM,KAAK,UAAU;QAAE,OAAO,UAAU,CAAC;IAC7C,IAAI,MAAM,KAAK,UAAU;QAAE,OAAO,SAAS,CAAC;IAC5C,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC,CAAC,wCAAwC;IACpF,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Terminal Theme Tokens
3
+ * Phase 1: Single source of truth for terminal-safe colors
4
+ * Used by both TUI (blessed) and NO_TUI (text) modes
5
+ */
6
+ /**
7
+ * Terminal color tokens
8
+ * These are terminal-safe ANSI color codes
9
+ */
10
+ export declare const themeTokens: {
11
+ readonly primaryPurple: "magenta";
12
+ readonly accentCyan: "cyan";
13
+ readonly successGreen: "green";
14
+ readonly warnAmber: "yellow";
15
+ readonly criticalRed: "red";
16
+ readonly mutedGrey: "gray";
17
+ readonly standardWhite: "white";
18
+ readonly borderStyle: "line";
19
+ readonly titleStyle: {
20
+ readonly bold: true;
21
+ readonly fg: "magenta";
22
+ };
23
+ };
24
+ /**
25
+ * Get blessed color name from token
26
+ */
27
+ export declare function getBlessedColor(token: keyof typeof themeTokens): string;
28
+ //# sourceMappingURL=tokens.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../../../src/ui/theme/tokens.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;GAGG;AACH,eAAO,MAAM,WAAW;;;;;;;;;;;;;CAwBd,CAAC;AAEX;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,OAAO,WAAW,GAAG,MAAM,CASvE"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Terminal Theme Tokens
3
+ * Phase 1: Single source of truth for terminal-safe colors
4
+ * Used by both TUI (blessed) and NO_TUI (text) modes
5
+ */
6
+ /**
7
+ * Terminal color tokens
8
+ * These are terminal-safe ANSI color codes
9
+ */
10
+ export const themeTokens = {
11
+ // Primary brand color (purple)
12
+ primaryPurple: 'magenta',
13
+ // Accent color (cyan)
14
+ accentCyan: 'cyan',
15
+ // Status colors
16
+ successGreen: 'green',
17
+ warnAmber: 'yellow',
18
+ criticalRed: 'red',
19
+ // Neutral colors
20
+ mutedGrey: 'gray',
21
+ standardWhite: 'white',
22
+ // Border style
23
+ borderStyle: 'line', // 'line' for single, 'double' for double lines
24
+ // Title style
25
+ titleStyle: {
26
+ bold: true,
27
+ fg: 'magenta',
28
+ },
29
+ };
30
+ /**
31
+ * Get blessed color name from token
32
+ */
33
+ export function getBlessedColor(token) {
34
+ if (token === 'primaryPurple')
35
+ return 'magenta';
36
+ if (token === 'accentCyan')
37
+ return 'cyan';
38
+ if (token === 'successGreen')
39
+ return 'green';
40
+ if (token === 'warnAmber')
41
+ return 'yellow';
42
+ if (token === 'criticalRed')
43
+ return 'red';
44
+ if (token === 'mutedGrey')
45
+ return 'gray';
46
+ if (token === 'standardWhite')
47
+ return 'white';
48
+ return 'white';
49
+ }
50
+ //# sourceMappingURL=tokens.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokens.js","sourceRoot":"","sources":["../../../src/ui/theme/tokens.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;GAGG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,+BAA+B;IAC/B,aAAa,EAAE,SAAS;IAExB,sBAAsB;IACtB,UAAU,EAAE,MAAM;IAElB,gBAAgB;IAChB,YAAY,EAAE,OAAO;IACrB,SAAS,EAAE,QAAQ;IACnB,WAAW,EAAE,KAAK;IAElB,iBAAiB;IACjB,SAAS,EAAE,MAAM;IACjB,aAAa,EAAE,OAAO;IAEtB,eAAe;IACf,WAAW,EAAE,MAAM,EAAE,+CAA+C;IAEpE,cAAc;IACd,UAAU,EAAE;QACV,IAAI,EAAE,IAAI;QACV,EAAE,EAAE,SAAS;KACd;CACO,CAAC;AAEX;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,KAA+B;IAC7D,IAAI,KAAK,KAAK,eAAe;QAAE,OAAO,SAAS,CAAC;IAChD,IAAI,KAAK,KAAK,YAAY;QAAE,OAAO,MAAM,CAAC;IAC1C,IAAI,KAAK,KAAK,cAAc;QAAE,OAAO,OAAO,CAAC;IAC7C,IAAI,KAAK,KAAK,WAAW;QAAE,OAAO,QAAQ,CAAC;IAC3C,IAAI,KAAK,KAAK,aAAa;QAAE,OAAO,KAAK,CAAC;IAC1C,IAAI,KAAK,KAAK,WAAW;QAAE,OAAO,MAAM,CAAC;IACzC,IAAI,KAAK,KAAK,eAAe;QAAE,OAAO,OAAO,CAAC;IAC9C,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Typography Standard
3
+ * Phase 7: Strict title rendering
4
+ */
5
+ /**
6
+ * Render panel title with consistent formatting
7
+ * Rules: ALL CAPS, padded with spaces, no punctuation
8
+ */
9
+ export declare function renderPanelTitle(title: string, focused?: boolean): string;
10
+ /**
11
+ * Format label-value pair with consistent alignment
12
+ */
13
+ export declare function formatLabelValue(label: string, value: string, labelWidth?: number, valueColor?: string): string;
14
+ //# sourceMappingURL=typography.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typography.d.ts","sourceRoot":"","sources":["../../../src/ui/theme/typography.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,OAAe,GAAG,MAAM,CAehF;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,UAAU,GAAE,MAAW,EACvB,UAAU,CAAC,EAAE,MAAM,GAClB,MAAM,CAIR"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Typography Standard
3
+ * Phase 7: Strict title rendering
4
+ */
5
+ import { getBlessedColor } from './tokens.js';
6
+ /**
7
+ * Render panel title with consistent formatting
8
+ * Rules: ALL CAPS, padded with spaces, no punctuation
9
+ */
10
+ export function renderPanelTitle(title, focused = false) {
11
+ // Ensure ALL CAPS
12
+ const upperTitle = title.toUpperCase();
13
+ // Pad with spaces: " POSTURE " or " OPERATIONS FEED "
14
+ const padded = ` ${upperTitle} `;
15
+ // Apply color (cyan if focused, purple otherwise)
16
+ const color = focused
17
+ ? getBlessedColor('accentCyan')
18
+ : getBlessedColor('primaryPurple');
19
+ const style = focused ? '{bold}' : '';
20
+ return `${style}{${color}-fg}${padded}{/}${focused ? '{/bold}' : ''}`;
21
+ }
22
+ /**
23
+ * Format label-value pair with consistent alignment
24
+ */
25
+ export function formatLabelValue(label, value, labelWidth = 12, valueColor) {
26
+ const paddedLabel = label.padEnd(labelWidth);
27
+ const color = valueColor || getBlessedColor('standardWhite');
28
+ return `{${getBlessedColor('mutedGrey')}-fg}${paddedLabel}{/}: {${color}-fg}${value}{/}`;
29
+ }
30
+ //# sourceMappingURL=typography.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typography.js","sourceRoot":"","sources":["../../../src/ui/theme/typography.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAa,EAAE,UAAmB,KAAK;IACtE,kBAAkB;IAClB,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;IAEvC,sDAAsD;IACtD,MAAM,MAAM,GAAG,IAAI,UAAU,GAAG,CAAC;IAEjC,kDAAkD;IAClD,MAAM,KAAK,GAAG,OAAO;QACnB,CAAC,CAAC,eAAe,CAAC,YAAY,CAAC;QAC/B,CAAC,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC;IAErC,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;IAEtC,OAAO,GAAG,KAAK,IAAI,KAAK,OAAO,MAAM,MAAM,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AACxE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAC9B,KAAa,EACb,KAAa,EACb,aAAqB,EAAE,EACvB,UAAmB;IAEnB,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAC7C,MAAM,KAAK,GAAG,UAAU,IAAI,eAAe,CAAC,eAAe,CAAC,CAAC;IAC7D,OAAO,IAAI,eAAe,CAAC,WAAW,CAAC,OAAO,WAAW,SAAS,KAAK,OAAO,KAAK,KAAK,CAAC;AAC3F,CAAC"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Flag Row Widget
3
+ * Phase 4: Compact capability readiness strip
4
+ */
5
+ export type Flag = {
6
+ key: string;
7
+ value: string;
8
+ level: "OK" | "WARN" | "BAD" | "UNKNOWN";
9
+ };
10
+ /**
11
+ * Render flag row
12
+ * Format: KEY:VALUE KEY:VALUE ...
13
+ * Color is applied by caller using theme tokens
14
+ */
15
+ export declare function renderFlagRow(flags: Flag[], maxFlags: number): string;
16
+ /**
17
+ * Get color token for flag level
18
+ * Returns theme token name for use with getBlessedColor
19
+ */
20
+ export declare function getFlagColorToken(level: Flag['level']): string;
21
+ /**
22
+ * Convert capability value to flag level
23
+ */
24
+ export declare function capabilityToLevel(value: string, capability: 'gateway' | 'database' | 'memory' | 'security' | 'rateLimit'): Flag['level'];
25
+ //# sourceMappingURL=flagRow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flagRow.d.ts","sourceRoot":"","sources":["../../../src/ui/widgets/flagRow.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,MAAM,IAAI,GAAG;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,IAAI,GAAG,MAAM,GAAG,KAAK,GAAG,SAAS,CAAC;CAC1C,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAUrE;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,MAAM,CAY9D;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,SAAS,GAAG,UAAU,GAAG,QAAQ,GAAG,UAAU,GAAG,WAAW,GACvE,IAAI,CAAC,OAAO,CAAC,CAiBf"}