4runr-os 1.0.28 → 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 (211) 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/index.js +135 -5
  50. package/dist/index.js.map +1 -1
  51. package/dist/state/getCollectorResults.d.ts +18 -0
  52. package/dist/state/getCollectorResults.d.ts.map +1 -0
  53. package/dist/state/getCollectorResults.js +25 -0
  54. package/dist/state/getCollectorResults.js.map +1 -0
  55. package/dist/state/historyStore.d.ts +35 -0
  56. package/dist/state/historyStore.d.ts.map +1 -0
  57. package/dist/state/historyStore.js +58 -0
  58. package/dist/state/historyStore.js.map +1 -0
  59. package/dist/state/uiStateBuilder.d.ts +12 -0
  60. package/dist/state/uiStateBuilder.d.ts.map +1 -0
  61. package/dist/state/uiStateBuilder.js +169 -0
  62. package/dist/state/uiStateBuilder.js.map +1 -0
  63. package/dist/state/uiStateScheduler.d.ts +43 -0
  64. package/dist/state/uiStateScheduler.d.ts.map +1 -0
  65. package/dist/state/uiStateScheduler.js +118 -0
  66. package/dist/state/uiStateScheduler.js.map +1 -0
  67. package/dist/ui/boot/sequence.d.ts +10 -0
  68. package/dist/ui/boot/sequence.d.ts.map +1 -0
  69. package/dist/ui/boot/sequence.js +173 -0
  70. package/dist/ui/boot/sequence.js.map +1 -0
  71. package/dist/ui/constraints/layoutSpec.d.ts +47 -0
  72. package/dist/ui/constraints/layoutSpec.d.ts.map +1 -0
  73. package/dist/ui/constraints/layoutSpec.js +60 -0
  74. package/dist/ui/constraints/layoutSpec.js.map +1 -0
  75. package/dist/ui/constraints/unknownHandling.d.ts +29 -0
  76. package/dist/ui/constraints/unknownHandling.d.ts.map +1 -0
  77. package/dist/ui/constraints/unknownHandling.js +60 -0
  78. package/dist/ui/constraints/unknownHandling.js.map +1 -0
  79. package/dist/ui/drilldowns/feed.d.ts +11 -0
  80. package/dist/ui/drilldowns/feed.d.ts.map +1 -0
  81. package/dist/ui/drilldowns/feed.js +68 -0
  82. package/dist/ui/drilldowns/feed.js.map +1 -0
  83. package/dist/ui/drilldowns/index.d.ts +7 -0
  84. package/dist/ui/drilldowns/index.d.ts.map +1 -0
  85. package/dist/ui/drilldowns/index.js +8 -0
  86. package/dist/ui/drilldowns/index.js.map +1 -0
  87. package/dist/ui/drilldowns/posture.d.ts +11 -0
  88. package/dist/ui/drilldowns/posture.d.ts.map +1 -0
  89. package/dist/ui/drilldowns/posture.js +74 -0
  90. package/dist/ui/drilldowns/posture.js.map +1 -0
  91. package/dist/ui/navigation/keymaps.d.ts +26 -0
  92. package/dist/ui/navigation/keymaps.d.ts.map +1 -0
  93. package/dist/ui/navigation/keymaps.js +135 -0
  94. package/dist/ui/navigation/keymaps.js.map +1 -0
  95. package/dist/ui/navigation/palette.d.ts +10 -0
  96. package/dist/ui/navigation/palette.d.ts.map +1 -0
  97. package/dist/ui/navigation/palette.js +133 -0
  98. package/dist/ui/navigation/palette.js.map +1 -0
  99. package/dist/ui/navigation/state.d.ts +47 -0
  100. package/dist/ui/navigation/state.d.ts.map +1 -0
  101. package/dist/ui/navigation/state.js +84 -0
  102. package/dist/ui/navigation/state.js.map +1 -0
  103. package/dist/ui/navigation/types.d.ts +38 -0
  104. package/dist/ui/navigation/types.d.ts.map +1 -0
  105. package/dist/ui/navigation/types.js +36 -0
  106. package/dist/ui/navigation/types.js.map +1 -0
  107. package/dist/ui/panels/active-assets.d.ts +12 -0
  108. package/dist/ui/panels/active-assets.d.ts.map +1 -0
  109. package/dist/ui/panels/active-assets.js +83 -0
  110. package/dist/ui/panels/active-assets.js.map +1 -0
  111. package/dist/ui/panels/capability-flags.d.ts +12 -0
  112. package/dist/ui/panels/capability-flags.d.ts.map +1 -0
  113. package/dist/ui/panels/capability-flags.js +59 -0
  114. package/dist/ui/panels/capability-flags.js.map +1 -0
  115. package/dist/ui/panels/command-surface.d.ts +12 -0
  116. package/dist/ui/panels/command-surface.d.ts.map +1 -0
  117. package/dist/ui/panels/command-surface.js +55 -0
  118. package/dist/ui/panels/command-surface.js.map +1 -0
  119. package/dist/ui/panels/network-origin.d.ts +12 -0
  120. package/dist/ui/panels/network-origin.d.ts.map +1 -0
  121. package/dist/ui/panels/network-origin.js +79 -0
  122. package/dist/ui/panels/network-origin.js.map +1 -0
  123. package/dist/ui/panels/operations-feed.d.ts +12 -0
  124. package/dist/ui/panels/operations-feed.d.ts.map +1 -0
  125. package/dist/ui/panels/operations-feed.js +90 -0
  126. package/dist/ui/panels/operations-feed.js.map +1 -0
  127. package/dist/ui/panels/posture.d.ts +12 -0
  128. package/dist/ui/panels/posture.d.ts.map +1 -0
  129. package/dist/ui/panels/posture.js +84 -0
  130. package/dist/ui/panels/posture.js.map +1 -0
  131. package/dist/ui/panels/resources.d.ts +11 -0
  132. package/dist/ui/panels/resources.d.ts.map +1 -0
  133. package/dist/ui/panels/resources.js +88 -0
  134. package/dist/ui/panels/resources.js.map +1 -0
  135. package/dist/ui/primitives/Panel.d.ts +25 -0
  136. package/dist/ui/primitives/Panel.d.ts.map +1 -0
  137. package/dist/ui/primitives/Panel.js +59 -0
  138. package/dist/ui/primitives/Panel.js.map +1 -0
  139. package/dist/ui/rendering/metricRenderer.d.ts +24 -0
  140. package/dist/ui/rendering/metricRenderer.d.ts.map +1 -0
  141. package/dist/ui/rendering/metricRenderer.js +86 -0
  142. package/dist/ui/rendering/metricRenderer.js.map +1 -0
  143. package/dist/ui/runtime/hub.d.ts +12 -0
  144. package/dist/ui/runtime/hub.d.ts.map +1 -0
  145. package/dist/ui/runtime/hub.js +468 -0
  146. package/dist/ui/runtime/hub.js.map +1 -0
  147. package/dist/ui/runtime/hubValidation.d.ts +23 -0
  148. package/dist/ui/runtime/hubValidation.d.ts.map +1 -0
  149. package/dist/ui/runtime/hubValidation.js +90 -0
  150. package/dist/ui/runtime/hubValidation.js.map +1 -0
  151. package/dist/ui/runtime/index.d.ts +29 -0
  152. package/dist/ui/runtime/index.d.ts.map +1 -0
  153. package/dist/ui/runtime/index.js +299 -0
  154. package/dist/ui/runtime/index.js.map +1 -0
  155. package/dist/ui/runtime/no-tui.d.ts +12 -0
  156. package/dist/ui/runtime/no-tui.d.ts.map +1 -0
  157. package/dist/ui/runtime/no-tui.js +77 -0
  158. package/dist/ui/runtime/no-tui.js.map +1 -0
  159. package/dist/ui/runtime/state-builder.d.ts +13 -0
  160. package/dist/ui/runtime/state-builder.d.ts.map +1 -0
  161. package/dist/ui/runtime/state-builder.js +114 -0
  162. package/dist/ui/runtime/state-builder.js.map +1 -0
  163. package/dist/ui/runtime/terminalSizeCheck.d.ts +10 -0
  164. package/dist/ui/runtime/terminalSizeCheck.d.ts.map +1 -0
  165. package/dist/ui/runtime/terminalSizeCheck.js +51 -0
  166. package/dist/ui/runtime/terminalSizeCheck.js.map +1 -0
  167. package/dist/ui/runtime/tuiLogGate.d.ts +22 -0
  168. package/dist/ui/runtime/tuiLogGate.d.ts.map +1 -0
  169. package/dist/ui/runtime/tuiLogGate.js +68 -0
  170. package/dist/ui/runtime/tuiLogGate.js.map +1 -0
  171. package/dist/ui/state/types.d.ts +72 -0
  172. package/dist/ui/state/types.d.ts.map +1 -0
  173. package/dist/ui/state/types.js +6 -0
  174. package/dist/ui/state/types.js.map +1 -0
  175. package/dist/ui/theme/borders.d.ts +20 -0
  176. package/dist/ui/theme/borders.d.ts.map +1 -0
  177. package/dist/ui/theme/borders.js +55 -0
  178. package/dist/ui/theme/borders.js.map +1 -0
  179. package/dist/ui/theme/tokens.d.ts +28 -0
  180. package/dist/ui/theme/tokens.d.ts.map +1 -0
  181. package/dist/ui/theme/tokens.js +50 -0
  182. package/dist/ui/theme/tokens.js.map +1 -0
  183. package/dist/ui/theme/typography.d.ts +14 -0
  184. package/dist/ui/theme/typography.d.ts.map +1 -0
  185. package/dist/ui/theme/typography.js +30 -0
  186. package/dist/ui/theme/typography.js.map +1 -0
  187. package/dist/ui/widgets/flagRow.d.ts +25 -0
  188. package/dist/ui/widgets/flagRow.d.ts.map +1 -0
  189. package/dist/ui/widgets/flagRow.js +57 -0
  190. package/dist/ui/widgets/flagRow.js.map +1 -0
  191. package/dist/ui/widgets/index.d.ts +9 -0
  192. package/dist/ui/widgets/index.d.ts.map +1 -0
  193. package/dist/ui/widgets/index.js +9 -0
  194. package/dist/ui/widgets/index.js.map +1 -0
  195. package/dist/ui/widgets/meter.d.ts +18 -0
  196. package/dist/ui/widgets/meter.d.ts.map +1 -0
  197. package/dist/ui/widgets/meter.js +38 -0
  198. package/dist/ui/widgets/meter.js.map +1 -0
  199. package/dist/ui/widgets/miniMap.d.ts +26 -0
  200. package/dist/ui/widgets/miniMap.d.ts.map +1 -0
  201. package/dist/ui/widgets/miniMap.js +94 -0
  202. package/dist/ui/widgets/miniMap.js.map +1 -0
  203. package/dist/ui/widgets/sparkline.d.ts +17 -0
  204. package/dist/ui/widgets/sparkline.d.ts.map +1 -0
  205. package/dist/ui/widgets/sparkline.js +63 -0
  206. package/dist/ui/widgets/sparkline.js.map +1 -0
  207. package/package.json +5 -4
  208. package/dist/ui/home-view.d.ts +0 -27
  209. package/dist/ui/home-view.d.ts.map +0 -1
  210. package/dist/ui/home-view.js +0 -127
  211. package/dist/ui/home-view.js.map +0 -1
@@ -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"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * Flag Row Widget
3
+ * Phase 4: Compact capability readiness strip
4
+ */
5
+ /**
6
+ * Render flag row
7
+ * Format: KEY:VALUE KEY:VALUE ...
8
+ * Color is applied by caller using theme tokens
9
+ */
10
+ export function renderFlagRow(flags, maxFlags) {
11
+ // Truncate to maxFlags
12
+ const displayFlags = flags.slice(0, maxFlags);
13
+ // Build row
14
+ const parts = displayFlags.map(flag => {
15
+ return `${flag.key}:${flag.value}`;
16
+ });
17
+ return parts.join(' ');
18
+ }
19
+ /**
20
+ * Get color token for flag level
21
+ * Returns theme token name for use with getBlessedColor
22
+ */
23
+ export function getFlagColorToken(level) {
24
+ switch (level) {
25
+ case 'OK':
26
+ return 'successGreen';
27
+ case 'WARN':
28
+ return 'warnAmber';
29
+ case 'BAD':
30
+ return 'criticalRed';
31
+ case 'UNKNOWN':
32
+ default:
33
+ return 'mutedGrey';
34
+ }
35
+ }
36
+ /**
37
+ * Convert capability value to flag level
38
+ */
39
+ export function capabilityToLevel(value, capability) {
40
+ if (value === "UNKNOWN")
41
+ return "UNKNOWN";
42
+ switch (capability) {
43
+ case 'gateway':
44
+ return value === "READY" ? "OK" : "WARN";
45
+ case 'database':
46
+ return value === "READY" ? "OK" : value === "NOT_INITIALIZED" ? "WARN" : "BAD";
47
+ case 'memory':
48
+ return "OK"; // Memory mode is informational
49
+ case 'security':
50
+ return value === "OPEN" ? "WARN" : "OK";
51
+ case 'rateLimit':
52
+ return value === "ENABLED" ? "OK" : "WARN";
53
+ default:
54
+ return "UNKNOWN";
55
+ }
56
+ }
57
+ //# sourceMappingURL=flagRow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flagRow.js","sourceRoot":"","sources":["../../../src/ui/widgets/flagRow.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,KAAa,EAAE,QAAgB;IAC3D,uBAAuB;IACvB,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IAE9C,YAAY;IACZ,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;QACpC,OAAO,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAoB;IACpD,QAAQ,KAAK,EAAE,CAAC;QACd,KAAK,IAAI;YACP,OAAO,cAAc,CAAC;QACxB,KAAK,MAAM;YACT,OAAO,WAAW,CAAC;QACrB,KAAK,KAAK;YACR,OAAO,aAAa,CAAC;QACvB,KAAK,SAAS,CAAC;QACf;YACE,OAAO,WAAW,CAAC;IACvB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAC/B,KAAa,EACb,UAAwE;IAExE,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAE1C,QAAQ,UAAU,EAAE,CAAC;QACnB,KAAK,SAAS;YACZ,OAAO,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;QAC3C,KAAK,UAAU;YACb,OAAO,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK,iBAAiB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;QACjF,KAAK,QAAQ;YACX,OAAO,IAAI,CAAC,CAAC,+BAA+B;QAC9C,KAAK,UAAU;YACb,OAAO,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;QAC1C,KAAK,WAAW;YACd,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;QAC7C;YACE,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Widgets Index
3
+ * Phase 4-5: Export all widgets
4
+ */
5
+ export { renderSparkline, type SparklineInput } from './sparkline.js';
6
+ export { renderMeter, type MeterInput } from './meter.js';
7
+ export { renderFlagRow, getFlagColorToken, capabilityToLevel, type Flag } from './flagRow.js';
8
+ export { renderMiniMap, type MiniMapInput } from './miniMap.js';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ui/widgets/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,eAAe,EAAE,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,KAAK,IAAI,EAAE,MAAM,cAAc,CAAC;AAC9F,OAAO,EAAE,aAAa,EAAE,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Widgets Index
3
+ * Phase 4-5: Export all widgets
4
+ */
5
+ export { renderSparkline } from './sparkline.js';
6
+ export { renderMeter } from './meter.js';
7
+ export { renderFlagRow, getFlagColorToken, capabilityToLevel } from './flagRow.js';
8
+ export { renderMiniMap } from './miniMap.js';
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ui/widgets/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,eAAe,EAAuB,MAAM,gBAAgB,CAAC;AACtE,OAAO,EAAE,WAAW,EAAmB,MAAM,YAAY,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,iBAAiB,EAAa,MAAM,cAAc,CAAC;AAC9F,OAAO,EAAE,aAAa,EAAqB,MAAM,cAAc,CAAC"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Meter Widget
3
+ * Phase 4: Small 1-line meter bar for status intensity
4
+ */
5
+ export type MeterInput = {
6
+ value: number | "UNKNOWN";
7
+ min: number;
8
+ max: number;
9
+ width: number;
10
+ labelLeft?: string;
11
+ labelRight?: string;
12
+ };
13
+ /**
14
+ * Render meter bar
15
+ * Format: <LABEL>: [■■■■■□□□□□] <RIGHT>
16
+ */
17
+ export declare function renderMeter(input: MeterInput): string;
18
+ //# sourceMappingURL=meter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"meter.d.ts","sourceRoot":"","sources":["../../../src/ui/widgets/meter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,MAAM,UAAU,GAAG;IACvB,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF;;;GAGG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CA4CrD"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Meter Widget
3
+ * Phase 4: Small 1-line meter bar for status intensity
4
+ */
5
+ /**
6
+ * Render meter bar
7
+ * Format: <LABEL>: [■■■■■□□□□□] <RIGHT>
8
+ */
9
+ export function renderMeter(input) {
10
+ const { value, min, max, width, labelLeft = '', labelRight = '', } = input;
11
+ // Build bar
12
+ let bar;
13
+ if (value === "UNKNOWN") {
14
+ bar = '?'.repeat(width);
15
+ }
16
+ else {
17
+ // Clamp value to [min, max]
18
+ const clamped = Math.max(min, Math.min(max, value));
19
+ // Map to [0, 1]
20
+ const range = max - min;
21
+ const normalized = range > 0 ? (clamped - min) / range : 0;
22
+ // Calculate filled blocks
23
+ const filled = Math.round(normalized * width);
24
+ const empty = width - filled;
25
+ bar = '■'.repeat(filled) + '□'.repeat(empty);
26
+ }
27
+ // Build full string
28
+ const parts = [];
29
+ if (labelLeft) {
30
+ parts.push(`${labelLeft}:`);
31
+ }
32
+ parts.push(`[${bar}]`);
33
+ if (labelRight) {
34
+ parts.push(labelRight);
35
+ }
36
+ return parts.join(' ');
37
+ }
38
+ //# sourceMappingURL=meter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"meter.js","sourceRoot":"","sources":["../../../src/ui/widgets/meter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAWH;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,KAAiB;IAC3C,MAAM,EACJ,KAAK,EACL,GAAG,EACH,GAAG,EACH,KAAK,EACL,SAAS,GAAG,EAAE,EACd,UAAU,GAAG,EAAE,GAChB,GAAG,KAAK,CAAC;IAEV,YAAY;IACZ,IAAI,GAAW,CAAC;IAEhB,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC;SAAM,CAAC;QACN,4BAA4B;QAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;QAEpD,gBAAgB;QAChB,MAAM,KAAK,GAAG,GAAG,GAAG,GAAG,CAAC;QACxB,MAAM,UAAU,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAE3D,0BAA0B;QAC1B,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,CAAC;QAC9C,MAAM,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC;QAE7B,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC/C,CAAC;IAED,oBAAoB;IACpB,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,IAAI,SAAS,EAAE,CAAC;QACd,KAAK,CAAC,IAAI,CAAC,GAAG,SAAS,GAAG,CAAC,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC;IAEvB,IAAI,UAAU,EAAE,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACzB,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Mini Map Widget
3
+ * Phase 5: ASCII world map with operator/gateway/database positions
4
+ */
5
+ export type MiniMapInput = {
6
+ width: number;
7
+ height: number;
8
+ origin?: {
9
+ lat: number;
10
+ lon: number;
11
+ } | "UNKNOWN";
12
+ gateway?: {
13
+ lat: number;
14
+ lon: number;
15
+ } | "UNKNOWN";
16
+ db?: {
17
+ lat: number;
18
+ lon: number;
19
+ } | "UNKNOWN";
20
+ };
21
+ /**
22
+ * Render mini map
23
+ * Returns array of strings, each exactly width characters
24
+ */
25
+ export declare function renderMiniMap(input: MiniMapInput): string[];
26
+ //# sourceMappingURL=miniMap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"miniMap.d.ts","sourceRoot":"","sources":["../../../src/ui/widgets/miniMap.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,MAAM,YAAY,GAAG;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC;IAClD,OAAO,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC;IACnD,EAAE,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC;CAC/C,CAAC;AAuCF;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,EAAE,CAoE3D"}