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,135 @@
1
+ /**
2
+ * Key Maps
3
+ * Phase 6: Centralized key binding handlers
4
+ */
5
+ import { getNextPanel, getPreviousPanel } from './types.js';
6
+ import { navigationState } from './state.js';
7
+ /**
8
+ * Global keymap (works on all screens)
9
+ */
10
+ export function handleGlobalKey(key, screen) {
11
+ switch (key) {
12
+ case 'escape':
13
+ case 'C-c':
14
+ // Esc: back to hub (from DRILLDOWN/PALETTE/HELP)
15
+ if (screen.name !== "HUB") {
16
+ navigationState.goToHub();
17
+ return true;
18
+ }
19
+ // Ctrl+C: quit
20
+ if (key === 'C-c') {
21
+ process.exit(0);
22
+ return true;
23
+ }
24
+ break;
25
+ case 'q':
26
+ // Quit (optional)
27
+ process.exit(0);
28
+ return true;
29
+ case ':':
30
+ // Open palette
31
+ navigationState.goToPalette();
32
+ return true;
33
+ case '?':
34
+ // Help toggle
35
+ if (screen.name === "HELP") {
36
+ navigationState.goToHub();
37
+ }
38
+ else {
39
+ navigationState.goToHelp();
40
+ }
41
+ return true;
42
+ }
43
+ return false;
44
+ }
45
+ /**
46
+ * Hub keymap
47
+ */
48
+ export function handleHubKey(key, screen) {
49
+ if (screen.name !== "HUB")
50
+ return false;
51
+ switch (key) {
52
+ case 'tab':
53
+ // Next panel
54
+ const next = getNextPanel(screen.focusedPanelId);
55
+ navigationState.setScreen({ ...screen, focusedPanelId: next });
56
+ return true;
57
+ case 'S-tab':
58
+ // Previous panel (if supported)
59
+ const prev = getPreviousPanel(screen.focusedPanelId);
60
+ navigationState.setScreen({ ...screen, focusedPanelId: prev });
61
+ return true;
62
+ case 'enter':
63
+ // Open drilldown
64
+ navigationState.goToDrilldown(screen.focusedPanelId);
65
+ return true;
66
+ case '/':
67
+ // Search (if FEED is focused)
68
+ if (screen.focusedPanelId === "FEED") {
69
+ navigationState.goToDrilldown("FEED", undefined, "");
70
+ }
71
+ return true;
72
+ }
73
+ return false;
74
+ }
75
+ /**
76
+ * Drilldown keymap
77
+ */
78
+ export function handleDrilldownKey(key, screen) {
79
+ if (screen.name !== "DRILLDOWN")
80
+ return false;
81
+ switch (key) {
82
+ case '/':
83
+ // Toggle search/filter
84
+ if (screen.filter === undefined) {
85
+ navigationState.goToDrilldown(screen.panelId, screen.cursor, "");
86
+ }
87
+ else {
88
+ navigationState.goToDrilldown(screen.panelId, screen.cursor, undefined);
89
+ }
90
+ return true;
91
+ case 'up':
92
+ case 'k':
93
+ // Scroll up
94
+ if (screen.cursor !== undefined) {
95
+ navigationState.goToDrilldown(screen.panelId, Math.max(0, (screen.cursor || 0) - 1), screen.filter);
96
+ }
97
+ return true;
98
+ case 'down':
99
+ case 'j':
100
+ // Scroll down
101
+ if (screen.cursor !== undefined) {
102
+ navigationState.goToDrilldown(screen.panelId, (screen.cursor || 0) + 1, screen.filter);
103
+ }
104
+ return true;
105
+ }
106
+ return false;
107
+ }
108
+ /**
109
+ * Palette keymap
110
+ */
111
+ export function handlePaletteKey(key, screen, input) {
112
+ if (screen.name !== "PALETTE")
113
+ return { handled: false };
114
+ switch (key) {
115
+ case 'up':
116
+ // Select previous suggestion (would need to track selection index)
117
+ return { handled: true };
118
+ case 'down':
119
+ // Select next suggestion
120
+ return { handled: true };
121
+ case 'enter':
122
+ // Execute selected command
123
+ return { handled: true, execute: true };
124
+ default:
125
+ // Character input
126
+ if (key.length === 1) {
127
+ return { handled: true, newInput: input + key };
128
+ }
129
+ if (key === 'backspace' || key === 'C-h') {
130
+ return { handled: true, newInput: input.slice(0, -1) };
131
+ }
132
+ return { handled: false };
133
+ }
134
+ }
135
+ //# sourceMappingURL=keymaps.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keymaps.js","sourceRoot":"","sources":["../../../src/ui/navigation/keymaps.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Command Palette
3
+ * Phase 6: Fuzzy matching command palette
4
+ */
5
+ import type { PaletteItem } from './types.js';
6
+ /**
7
+ * Fuzzy match commands
8
+ */
9
+ export declare function fuzzyMatch(input: string, maxResults?: number): PaletteItem[];
10
+ //# sourceMappingURL=palette.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"palette.d.ts","sourceRoot":"","sources":["../../../src/ui/navigation/palette.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAiF9C;;GAEG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,GAAE,MAAW,GAAG,WAAW,EAAE,CAkDhF"}
@@ -0,0 +1,133 @@
1
+ /**
2
+ * Command Palette
3
+ * Phase 6: Fuzzy matching command palette
4
+ */
5
+ import { navigationState } from './state.js';
6
+ /**
7
+ * Available commands
8
+ */
9
+ const COMMANDS = [
10
+ {
11
+ command: 'hub',
12
+ description: 'Go to hub',
13
+ action: () => navigationState.goToHub(),
14
+ },
15
+ {
16
+ command: 'inspect posture',
17
+ description: 'Open posture drilldown',
18
+ action: () => navigationState.goToDrilldown('POSTURE'),
19
+ },
20
+ {
21
+ command: 'inspect resources',
22
+ description: 'Open resources drilldown',
23
+ action: () => navigationState.goToDrilldown('RESOURCES'),
24
+ },
25
+ {
26
+ command: 'inspect assets',
27
+ description: 'Open assets drilldown',
28
+ action: () => navigationState.goToDrilldown('ASSETS'),
29
+ },
30
+ {
31
+ command: 'inspect feed',
32
+ description: 'Open feed drilldown',
33
+ action: () => navigationState.goToDrilldown('FEED'),
34
+ },
35
+ {
36
+ command: 'inspect network',
37
+ description: 'Open network drilldown',
38
+ action: () => navigationState.goToDrilldown('NETWORK'),
39
+ },
40
+ {
41
+ command: 'inspect capabilities',
42
+ description: 'Open capabilities drilldown',
43
+ action: () => navigationState.goToDrilldown('CAPABILITIES'),
44
+ },
45
+ {
46
+ command: 'start',
47
+ description: 'Start last agent / open start flow',
48
+ action: () => {
49
+ // Placeholder - would trigger start command
50
+ console.log('start command');
51
+ },
52
+ },
53
+ {
54
+ command: 'deploy',
55
+ description: 'Open deploy flow',
56
+ action: () => {
57
+ // Placeholder - would trigger deploy command
58
+ console.log('deploy command');
59
+ },
60
+ },
61
+ {
62
+ command: 'metrics',
63
+ description: 'Go to metrics screen',
64
+ action: () => {
65
+ // Placeholder - would navigate to metrics
66
+ console.log('metrics command');
67
+ },
68
+ },
69
+ {
70
+ command: 'system',
71
+ description: 'Go to system screen',
72
+ action: () => {
73
+ // Placeholder - would navigate to system
74
+ console.log('system command');
75
+ },
76
+ },
77
+ {
78
+ command: 'help',
79
+ description: 'Show help',
80
+ action: () => navigationState.goToHelp(),
81
+ },
82
+ ];
83
+ /**
84
+ * Fuzzy match commands
85
+ */
86
+ export function fuzzyMatch(input, maxResults = 10) {
87
+ if (!input) {
88
+ return COMMANDS.slice(0, maxResults);
89
+ }
90
+ const lowerInput = input.toLowerCase();
91
+ // Score each command
92
+ const scored = COMMANDS.map(cmd => {
93
+ const lowerCmd = cmd.command.toLowerCase();
94
+ let score = 0;
95
+ // Exact match
96
+ if (lowerCmd === lowerInput) {
97
+ score = 1000;
98
+ }
99
+ // Starts with
100
+ else if (lowerCmd.startsWith(lowerInput)) {
101
+ score = 500;
102
+ }
103
+ // Contains
104
+ else if (lowerCmd.includes(lowerInput)) {
105
+ score = 100;
106
+ }
107
+ // Word match
108
+ else {
109
+ const words = lowerCmd.split(' ');
110
+ const inputWords = lowerInput.split(' ');
111
+ let wordScore = 0;
112
+ inputWords.forEach(inputWord => {
113
+ words.forEach(word => {
114
+ if (word.startsWith(inputWord)) {
115
+ wordScore += 50;
116
+ }
117
+ else if (word.includes(inputWord)) {
118
+ wordScore += 10;
119
+ }
120
+ });
121
+ });
122
+ score = wordScore;
123
+ }
124
+ return { cmd, score };
125
+ });
126
+ // Sort by score and return top results
127
+ return scored
128
+ .filter(item => item.score > 0)
129
+ .sort((a, b) => b.score - a.score)
130
+ .slice(0, maxResults)
131
+ .map(item => item.cmd);
132
+ }
133
+ //# sourceMappingURL=palette.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"palette.js","sourceRoot":"","sources":["../../../src/ui/navigation/palette.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Navigation State
3
+ * Phase 6: Centralized navigation state management
4
+ */
5
+ import type { Screen, PanelId } from './types.js';
6
+ declare class NavigationState {
7
+ private screen;
8
+ private listeners;
9
+ /**
10
+ * Get current screen
11
+ */
12
+ getScreen(): Screen;
13
+ /**
14
+ * Set screen
15
+ */
16
+ setScreen(screen: Screen): void;
17
+ /**
18
+ * Navigate to hub
19
+ */
20
+ goToHub(focusedPanelId?: PanelId): void;
21
+ /**
22
+ * Navigate to drilldown
23
+ */
24
+ goToDrilldown(panelId: PanelId, cursor?: number, filter?: string): void;
25
+ /**
26
+ * Navigate to palette
27
+ */
28
+ goToPalette(input?: string, suggestions?: any[]): void;
29
+ /**
30
+ * Navigate to help
31
+ */
32
+ goToHelp(): void;
33
+ /**
34
+ * Subscribe to screen changes
35
+ */
36
+ subscribe(listener: (screen: Screen) => void): () => void;
37
+ /**
38
+ * Notify listeners
39
+ */
40
+ private notifyListeners;
41
+ }
42
+ /**
43
+ * Global navigation state instance
44
+ */
45
+ export declare const navigationState: NavigationState;
46
+ export {};
47
+ //# sourceMappingURL=state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../../src/ui/navigation/state.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAElD,cAAM,eAAe;IACnB,OAAO,CAAC,MAAM,CAAsD;IACpE,OAAO,CAAC,SAAS,CAA4C;IAE7D;;OAEG;IACH,SAAS,IAAI,MAAM;IAInB;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAK/B;;OAEG;IACH,OAAO,CAAC,cAAc,CAAC,EAAE,OAAO,GAAG,IAAI;IAOvC;;OAEG;IACH,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;IASvE;;OAEG;IACH,WAAW,CAAC,KAAK,GAAE,MAAW,EAAE,WAAW,GAAE,GAAG,EAAO,GAAG,IAAI;IAQ9D;;OAEG;IACH,QAAQ,IAAI,IAAI;IAIhB;;OAEG;IACH,SAAS,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,GAAG,MAAM,IAAI;IAOzD;;OAEG;IACH,OAAO,CAAC,eAAe;CASxB;AAED;;GAEG;AACH,eAAO,MAAM,eAAe,iBAAwB,CAAC"}
@@ -0,0 +1,84 @@
1
+ /**
2
+ * Navigation State
3
+ * Phase 6: Centralized navigation state management
4
+ */
5
+ class NavigationState {
6
+ screen = { name: "HUB", focusedPanelId: "POSTURE" };
7
+ listeners = new Set();
8
+ /**
9
+ * Get current screen
10
+ */
11
+ getScreen() {
12
+ return this.screen;
13
+ }
14
+ /**
15
+ * Set screen
16
+ */
17
+ setScreen(screen) {
18
+ this.screen = screen;
19
+ this.notifyListeners();
20
+ }
21
+ /**
22
+ * Navigate to hub
23
+ */
24
+ goToHub(focusedPanelId) {
25
+ this.setScreen({
26
+ name: "HUB",
27
+ focusedPanelId: focusedPanelId || "POSTURE",
28
+ });
29
+ }
30
+ /**
31
+ * Navigate to drilldown
32
+ */
33
+ goToDrilldown(panelId, cursor, filter) {
34
+ this.setScreen({
35
+ name: "DRILLDOWN",
36
+ panelId,
37
+ cursor,
38
+ filter,
39
+ });
40
+ }
41
+ /**
42
+ * Navigate to palette
43
+ */
44
+ goToPalette(input = "", suggestions = []) {
45
+ this.setScreen({
46
+ name: "PALETTE",
47
+ input,
48
+ suggestions,
49
+ });
50
+ }
51
+ /**
52
+ * Navigate to help
53
+ */
54
+ goToHelp() {
55
+ this.setScreen({ name: "HELP" });
56
+ }
57
+ /**
58
+ * Subscribe to screen changes
59
+ */
60
+ subscribe(listener) {
61
+ this.listeners.add(listener);
62
+ return () => {
63
+ this.listeners.delete(listener);
64
+ };
65
+ }
66
+ /**
67
+ * Notify listeners
68
+ */
69
+ notifyListeners() {
70
+ this.listeners.forEach(listener => {
71
+ try {
72
+ listener(this.screen);
73
+ }
74
+ catch (error) {
75
+ console.error('[NavigationState] Listener error:', error);
76
+ }
77
+ });
78
+ }
79
+ }
80
+ /**
81
+ * Global navigation state instance
82
+ */
83
+ export const navigationState = new NavigationState();
84
+ //# sourceMappingURL=state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state.js","sourceRoot":"","sources":["../../../src/ui/navigation/state.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,MAAM,eAAe;IACX,MAAM,GAAW,EAAE,IAAI,EAAE,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,CAAC;IAC5D,SAAS,GAAkC,IAAI,GAAG,EAAE,CAAC;IAE7D;;OAEG;IACH,SAAS;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,MAAc;QACtB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,eAAe,EAAE,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,OAAO,CAAC,cAAwB;QAC9B,IAAI,CAAC,SAAS,CAAC;YACb,IAAI,EAAE,KAAK;YACX,cAAc,EAAE,cAAc,IAAI,SAAS;SAC5C,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,aAAa,CAAC,OAAgB,EAAE,MAAe,EAAE,MAAe;QAC9D,IAAI,CAAC,SAAS,CAAC;YACb,IAAI,EAAE,WAAW;YACjB,OAAO;YACP,MAAM;YACN,MAAM;SACP,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,QAAgB,EAAE,EAAE,cAAqB,EAAE;QACrD,IAAI,CAAC,SAAS,CAAC;YACb,IAAI,EAAE,SAAS;YACf,KAAK;YACL,WAAW;SACZ,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,QAAkC;QAC1C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC7B,OAAO,GAAG,EAAE;YACV,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAClC,CAAC,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,eAAe;QACrB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;YAChC,IAAI,CAAC;gBACH,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACxB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,mCAAmC,EAAE,KAAK,CAAC,CAAC;YAC5D,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Navigation Types
3
+ * Phase 6: State machine for TUI navigation
4
+ */
5
+ export type PanelId = "POSTURE" | "RESOURCES" | "ASSETS" | "FEED" | "NETWORK" | "CAPABILITIES" | "STATUSBAR";
6
+ export type Screen = {
7
+ name: "HUB";
8
+ focusedPanelId: PanelId;
9
+ } | {
10
+ name: "DRILLDOWN";
11
+ panelId: PanelId;
12
+ cursor?: number;
13
+ filter?: string;
14
+ } | {
15
+ name: "PALETTE";
16
+ input: string;
17
+ suggestions: PaletteItem[];
18
+ } | {
19
+ name: "HELP";
20
+ };
21
+ export type PaletteItem = {
22
+ command: string;
23
+ description: string;
24
+ action: () => void;
25
+ };
26
+ /**
27
+ * Focus order (Tab cycling)
28
+ */
29
+ export declare const FOCUS_ORDER: PanelId[];
30
+ /**
31
+ * Get next panel in focus order
32
+ */
33
+ export declare function getNextPanel(current: PanelId): PanelId;
34
+ /**
35
+ * Get previous panel in focus order
36
+ */
37
+ export declare function getPreviousPanel(current: PanelId): PanelId;
38
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/ui/navigation/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,MAAM,OAAO,GACf,SAAS,GACT,WAAW,GACX,QAAQ,GACR,MAAM,GACN,SAAS,GACT,cAAc,GACd,WAAW,CAAC;AAEhB,MAAM,MAAM,MAAM,GACd;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,cAAc,EAAE,OAAO,CAAA;CAAE,GACxC;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GACzE;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,WAAW,EAAE,CAAA;CAAE,GAC9D;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAErB,MAAM,MAAM,WAAW,GAAG;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,WAAW,EAAE,OAAO,EAOhC,CAAC;AAEF;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAMtD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAM1D"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Navigation Types
3
+ * Phase 6: State machine for TUI navigation
4
+ */
5
+ /**
6
+ * Focus order (Tab cycling)
7
+ */
8
+ export const FOCUS_ORDER = [
9
+ "POSTURE",
10
+ "RESOURCES",
11
+ "ASSETS",
12
+ "FEED",
13
+ "NETWORK",
14
+ "CAPABILITIES",
15
+ ];
16
+ /**
17
+ * Get next panel in focus order
18
+ */
19
+ export function getNextPanel(current) {
20
+ const index = FOCUS_ORDER.indexOf(current);
21
+ if (index === -1 || index === FOCUS_ORDER.length - 1) {
22
+ return FOCUS_ORDER[0];
23
+ }
24
+ return FOCUS_ORDER[index + 1];
25
+ }
26
+ /**
27
+ * Get previous panel in focus order
28
+ */
29
+ export function getPreviousPanel(current) {
30
+ const index = FOCUS_ORDER.indexOf(current);
31
+ if (index === -1 || index === 0) {
32
+ return FOCUS_ORDER[FOCUS_ORDER.length - 1];
33
+ }
34
+ return FOCUS_ORDER[index - 1];
35
+ }
36
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/ui/navigation/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAuBH;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAc;IACpC,SAAS;IACT,WAAW;IACX,QAAQ;IACR,MAAM;IACN,SAAS;IACT,cAAc;CACf,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,OAAgB;IAC3C,MAAM,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3C,IAAI,KAAK,KAAK,CAAC,CAAC,IAAI,KAAK,KAAK,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrD,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC;IACxB,CAAC;IACD,OAAO,WAAW,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AAChC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAgB;IAC/C,MAAM,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3C,IAAI,KAAK,KAAK,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;QAChC,OAAO,WAAW,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC7C,CAAC;IACD,OAAO,WAAW,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AAChC,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Panel 3: ACTIVE ASSETS
3
+ * Location: Left column (bottom)
4
+ * Purpose: Treat agents as deployed intelligence assets
5
+ */
6
+ import type { Widgets } from 'neo-blessed';
7
+ import type { AppState } from '../../store.js';
8
+ /**
9
+ * Render ACTIVE ASSETS panel
10
+ */
11
+ export declare function renderActiveAssetsPanel(screen: Widgets.Screen, top: number, left: number, width: number, height: number, appState: AppState): Widgets.Box;
12
+ //# sourceMappingURL=active-assets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"active-assets.d.ts","sourceRoot":"","sources":["../../../src/ui/panels/active-assets.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAoB/C;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,OAAO,CAAC,MAAM,EACtB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,QAAQ,GACjB,OAAO,CAAC,GAAG,CA+Db"}
@@ -0,0 +1,83 @@
1
+ /**
2
+ * Panel 3: ACTIVE ASSETS
3
+ * Location: Left column (bottom)
4
+ * Purpose: Treat agents as deployed intelligence assets
5
+ */
6
+ import { getSystemState } from '../../system-state.js';
7
+ import { createPanel } from '../primitives/Panel.js';
8
+ import { getBlessedColor } from '../theme/tokens.js';
9
+ /**
10
+ * Get last action from run history
11
+ */
12
+ function getLastAction(appState) {
13
+ if (appState.runHistory.length === 0) {
14
+ return 'NONE';
15
+ }
16
+ const lastRun = appState.runHistory[appState.runHistory.length - 1];
17
+ if (lastRun.status === 'RUNNING') {
18
+ return `run:${lastRun.runId.substring(0, 8)}`;
19
+ }
20
+ return `start:${lastRun.agentName}`;
21
+ }
22
+ /**
23
+ * Render ACTIVE ASSETS panel
24
+ */
25
+ export function renderActiveAssetsPanel(screen, top, left, width, height, appState) {
26
+ let systemState;
27
+ try {
28
+ systemState = getSystemState(appState, false);
29
+ }
30
+ catch {
31
+ systemState = null;
32
+ }
33
+ const content = [];
34
+ if (systemState) {
35
+ const assets = systemState.assetRegistrySummary;
36
+ // TOTAL
37
+ content.push(`TOTAL: {${getBlessedColor('accentCyan')}-fg}${assets.total}{/}`);
38
+ // ACTIVE
39
+ const activeColor = assets.active > 0
40
+ ? getBlessedColor('successGreen')
41
+ : getBlessedColor('mutedGrey');
42
+ content.push(`ACTIVE: {${activeColor}-fg}${assets.active}{/}`);
43
+ // IDLE
44
+ content.push(`IDLE: {${getBlessedColor('mutedGrey')}-fg}${assets.idle}{/}`);
45
+ // ERROR
46
+ const errorColor = assets.error > 0
47
+ ? getBlessedColor('criticalRed')
48
+ : getBlessedColor('mutedGrey');
49
+ content.push(`ERROR: {${errorColor}-fg}${assets.error}{/}`);
50
+ // HIGHLIGHT
51
+ if (assets.highlighted) {
52
+ const highlightColor = assets.highlighted.status === 'ACTIVE'
53
+ ? getBlessedColor('successGreen')
54
+ : assets.highlighted.status === 'ERROR'
55
+ ? getBlessedColor('criticalRed')
56
+ : getBlessedColor('accentCyan');
57
+ content.push(`HIGHLIGHT: {${highlightColor}-fg}${assets.highlighted.name}{/}`);
58
+ }
59
+ else {
60
+ content.push(`HIGHLIGHT: {${getBlessedColor('mutedGrey')}-fg}NONE{/}`);
61
+ }
62
+ // LAST ACTION
63
+ const lastAction = getLastAction(appState);
64
+ content.push(`LAST ACTION: {${getBlessedColor('accentCyan')}-fg}${lastAction}{/}`);
65
+ }
66
+ else {
67
+ content.push('TOTAL: UNKNOWN');
68
+ content.push('ACTIVE: UNKNOWN');
69
+ content.push('IDLE: UNKNOWN');
70
+ content.push('ERROR: UNKNOWN');
71
+ content.push('HIGHLIGHT: UNKNOWN');
72
+ content.push('LAST ACTION: UNKNOWN');
73
+ }
74
+ return createPanel(screen, {
75
+ title: 'ACTIVE ASSETS',
76
+ top,
77
+ left,
78
+ width,
79
+ height,
80
+ content,
81
+ });
82
+ }
83
+ //# sourceMappingURL=active-assets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"active-assets.js","sourceRoot":"","sources":["../../../src/ui/panels/active-assets.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD;;GAEG;AACH,SAAS,aAAa,CAAC,QAAkB;IACvC,IAAI,QAAQ,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrC,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,OAAO,GAAG,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACpE,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QACjC,OAAO,OAAO,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;IAChD,CAAC;IACD,OAAO,SAAS,OAAO,CAAC,SAAS,EAAE,CAAC;AACtC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,uBAAuB,CACrC,MAAsB,EACtB,GAAW,EACX,IAAY,EACZ,KAAa,EACb,MAAc,EACd,QAAkB;IAElB,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,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,IAAI,WAAW,EAAE,CAAC;QAChB,MAAM,MAAM,GAAG,WAAW,CAAC,oBAAoB,CAAC;QAEhD,QAAQ;QACR,OAAO,CAAC,IAAI,CAAC,WAAW,eAAe,CAAC,YAAY,CAAC,OAAO,MAAM,CAAC,KAAK,KAAK,CAAC,CAAC;QAE/E,SAAS;QACT,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC;YACnC,CAAC,CAAC,eAAe,CAAC,cAAc,CAAC;YACjC,CAAC,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;QACjC,OAAO,CAAC,IAAI,CAAC,YAAY,WAAW,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC;QAE/D,OAAO;QACP,OAAO,CAAC,IAAI,CAAC,UAAU,eAAe,CAAC,WAAW,CAAC,OAAO,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC;QAE5E,QAAQ;QACR,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,GAAG,CAAC;YACjC,CAAC,CAAC,eAAe,CAAC,aAAa,CAAC;YAChC,CAAC,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;QACjC,OAAO,CAAC,IAAI,CAAC,WAAW,UAAU,OAAO,MAAM,CAAC,KAAK,KAAK,CAAC,CAAC;QAE5D,YAAY;QACZ,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;YACvB,MAAM,cAAc,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,KAAK,QAAQ;gBAC3D,CAAC,CAAC,eAAe,CAAC,cAAc,CAAC;gBACjC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,KAAK,OAAO;oBACvC,CAAC,CAAC,eAAe,CAAC,aAAa,CAAC;oBAChC,CAAC,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;YAClC,OAAO,CAAC,IAAI,CAAC,eAAe,cAAc,OAAO,MAAM,CAAC,WAAW,CAAC,IAAI,KAAK,CAAC,CAAC;QACjF,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CAAC,eAAe,eAAe,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;QACzE,CAAC;QAED,cAAc;QACd,MAAM,UAAU,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;QAC3C,OAAO,CAAC,IAAI,CAAC,iBAAiB,eAAe,CAAC,YAAY,CAAC,OAAO,UAAU,KAAK,CAAC,CAAC;IACrF,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC/B,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAChC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAC9B,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC/B,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QACnC,OAAO,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IACvC,CAAC;IAED,OAAO,WAAW,CAAC,MAAM,EAAE;QACzB,KAAK,EAAE,eAAe;QACtB,GAAG;QACH,IAAI;QACJ,KAAK;QACL,MAAM;QACN,OAAO;KACR,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Panel 6: CAPABILITY FLAGS
3
+ * Location: Right column (bottom)
4
+ * Purpose: Silent credibility. No explanation.
5
+ */
6
+ import type { Widgets } from 'neo-blessed';
7
+ import type { AppState } from '../../store.js';
8
+ /**
9
+ * Render CAPABILITY FLAGS panel
10
+ */
11
+ export declare function renderCapabilityFlagsPanel(screen: Widgets.Screen, top: number, left: number, width: number, height: number, appState: AppState): Widgets.Box;
12
+ //# sourceMappingURL=capability-flags.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capability-flags.d.ts","sourceRoot":"","sources":["../../../src/ui/panels/capability-flags.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAK/C;;GAEG;AACH,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,OAAO,CAAC,MAAM,EACtB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,QAAQ,GACjB,OAAO,CAAC,GAAG,CAoDb"}