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.
- package/dist/collectors/collector_assets.d.ts +19 -0
- package/dist/collectors/collector_assets.d.ts.map +1 -0
- package/dist/collectors/collector_assets.js +72 -0
- package/dist/collectors/collector_assets.js.map +1 -0
- package/dist/collectors/collector_capabilities.d.ts +19 -0
- package/dist/collectors/collector_capabilities.d.ts.map +1 -0
- package/dist/collectors/collector_capabilities.js +61 -0
- package/dist/collectors/collector_capabilities.js.map +1 -0
- package/dist/collectors/collector_feed.d.ts +30 -0
- package/dist/collectors/collector_feed.d.ts.map +1 -0
- package/dist/collectors/collector_feed.js +78 -0
- package/dist/collectors/collector_feed.js.map +1 -0
- package/dist/collectors/collector_geo.d.ts +12 -0
- package/dist/collectors/collector_geo.d.ts.map +1 -0
- package/dist/collectors/collector_geo.js +248 -0
- package/dist/collectors/collector_geo.js.map +1 -0
- package/dist/collectors/collector_network.d.ts +22 -0
- package/dist/collectors/collector_network.d.ts.map +1 -0
- package/dist/collectors/collector_network.js +83 -0
- package/dist/collectors/collector_network.js.map +1 -0
- package/dist/collectors/collector_posture.d.ts +25 -0
- package/dist/collectors/collector_posture.d.ts.map +1 -0
- package/dist/collectors/collector_posture.js +207 -0
- package/dist/collectors/collector_posture.js.map +1 -0
- package/dist/collectors/collector_resources.d.ts +21 -0
- package/dist/collectors/collector_resources.d.ts.map +1 -0
- package/dist/collectors/collector_resources.js +87 -0
- package/dist/collectors/collector_resources.js.map +1 -0
- package/dist/collectors/helpers.d.ts +21 -0
- package/dist/collectors/helpers.d.ts.map +1 -0
- package/dist/collectors/helpers.js +49 -0
- package/dist/collectors/helpers.js.map +1 -0
- package/dist/core/collectorRegistry.d.ts +43 -0
- package/dist/core/collectorRegistry.d.ts.map +1 -0
- package/dist/core/collectorRegistry.js +76 -0
- package/dist/core/collectorRegistry.js.map +1 -0
- package/dist/core/constants.d.ts +25 -0
- package/dist/core/constants.d.ts.map +1 -0
- package/dist/core/constants.js +33 -0
- package/dist/core/constants.js.map +1 -0
- package/dist/core/eventBus.d.ts +36 -0
- package/dist/core/eventBus.d.ts.map +1 -0
- package/dist/core/eventBus.js +52 -0
- package/dist/core/eventBus.js.map +1 -0
- package/dist/core/types.d.ts +128 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +6 -0
- package/dist/core/types.js.map +1 -0
- package/dist/index.js +135 -5
- package/dist/index.js.map +1 -1
- package/dist/state/getCollectorResults.d.ts +18 -0
- package/dist/state/getCollectorResults.d.ts.map +1 -0
- package/dist/state/getCollectorResults.js +25 -0
- package/dist/state/getCollectorResults.js.map +1 -0
- package/dist/state/historyStore.d.ts +35 -0
- package/dist/state/historyStore.d.ts.map +1 -0
- package/dist/state/historyStore.js +58 -0
- package/dist/state/historyStore.js.map +1 -0
- package/dist/state/uiStateBuilder.d.ts +12 -0
- package/dist/state/uiStateBuilder.d.ts.map +1 -0
- package/dist/state/uiStateBuilder.js +169 -0
- package/dist/state/uiStateBuilder.js.map +1 -0
- package/dist/state/uiStateScheduler.d.ts +43 -0
- package/dist/state/uiStateScheduler.d.ts.map +1 -0
- package/dist/state/uiStateScheduler.js +118 -0
- package/dist/state/uiStateScheduler.js.map +1 -0
- package/dist/ui/boot/sequence.d.ts +10 -0
- package/dist/ui/boot/sequence.d.ts.map +1 -0
- package/dist/ui/boot/sequence.js +173 -0
- package/dist/ui/boot/sequence.js.map +1 -0
- package/dist/ui/constraints/layoutSpec.d.ts +47 -0
- package/dist/ui/constraints/layoutSpec.d.ts.map +1 -0
- package/dist/ui/constraints/layoutSpec.js +60 -0
- package/dist/ui/constraints/layoutSpec.js.map +1 -0
- package/dist/ui/constraints/unknownHandling.d.ts +29 -0
- package/dist/ui/constraints/unknownHandling.d.ts.map +1 -0
- package/dist/ui/constraints/unknownHandling.js +60 -0
- package/dist/ui/constraints/unknownHandling.js.map +1 -0
- package/dist/ui/drilldowns/feed.d.ts +11 -0
- package/dist/ui/drilldowns/feed.d.ts.map +1 -0
- package/dist/ui/drilldowns/feed.js +68 -0
- package/dist/ui/drilldowns/feed.js.map +1 -0
- package/dist/ui/drilldowns/index.d.ts +7 -0
- package/dist/ui/drilldowns/index.d.ts.map +1 -0
- package/dist/ui/drilldowns/index.js +8 -0
- package/dist/ui/drilldowns/index.js.map +1 -0
- package/dist/ui/drilldowns/posture.d.ts +11 -0
- package/dist/ui/drilldowns/posture.d.ts.map +1 -0
- package/dist/ui/drilldowns/posture.js +74 -0
- package/dist/ui/drilldowns/posture.js.map +1 -0
- package/dist/ui/navigation/keymaps.d.ts +26 -0
- package/dist/ui/navigation/keymaps.d.ts.map +1 -0
- package/dist/ui/navigation/keymaps.js +135 -0
- package/dist/ui/navigation/keymaps.js.map +1 -0
- package/dist/ui/navigation/palette.d.ts +10 -0
- package/dist/ui/navigation/palette.d.ts.map +1 -0
- package/dist/ui/navigation/palette.js +133 -0
- package/dist/ui/navigation/palette.js.map +1 -0
- package/dist/ui/navigation/state.d.ts +47 -0
- package/dist/ui/navigation/state.d.ts.map +1 -0
- package/dist/ui/navigation/state.js +84 -0
- package/dist/ui/navigation/state.js.map +1 -0
- package/dist/ui/navigation/types.d.ts +38 -0
- package/dist/ui/navigation/types.d.ts.map +1 -0
- package/dist/ui/navigation/types.js +36 -0
- package/dist/ui/navigation/types.js.map +1 -0
- package/dist/ui/panels/active-assets.d.ts +12 -0
- package/dist/ui/panels/active-assets.d.ts.map +1 -0
- package/dist/ui/panels/active-assets.js +83 -0
- package/dist/ui/panels/active-assets.js.map +1 -0
- package/dist/ui/panels/capability-flags.d.ts +12 -0
- package/dist/ui/panels/capability-flags.d.ts.map +1 -0
- package/dist/ui/panels/capability-flags.js +59 -0
- package/dist/ui/panels/capability-flags.js.map +1 -0
- package/dist/ui/panels/command-surface.d.ts +12 -0
- package/dist/ui/panels/command-surface.d.ts.map +1 -0
- package/dist/ui/panels/command-surface.js +55 -0
- package/dist/ui/panels/command-surface.js.map +1 -0
- package/dist/ui/panels/network-origin.d.ts +12 -0
- package/dist/ui/panels/network-origin.d.ts.map +1 -0
- package/dist/ui/panels/network-origin.js +79 -0
- package/dist/ui/panels/network-origin.js.map +1 -0
- package/dist/ui/panels/operations-feed.d.ts +12 -0
- package/dist/ui/panels/operations-feed.d.ts.map +1 -0
- package/dist/ui/panels/operations-feed.js +90 -0
- package/dist/ui/panels/operations-feed.js.map +1 -0
- package/dist/ui/panels/posture.d.ts +12 -0
- package/dist/ui/panels/posture.d.ts.map +1 -0
- package/dist/ui/panels/posture.js +84 -0
- package/dist/ui/panels/posture.js.map +1 -0
- package/dist/ui/panels/resources.d.ts +11 -0
- package/dist/ui/panels/resources.d.ts.map +1 -0
- package/dist/ui/panels/resources.js +88 -0
- package/dist/ui/panels/resources.js.map +1 -0
- package/dist/ui/primitives/Panel.d.ts +25 -0
- package/dist/ui/primitives/Panel.d.ts.map +1 -0
- package/dist/ui/primitives/Panel.js +59 -0
- package/dist/ui/primitives/Panel.js.map +1 -0
- package/dist/ui/rendering/metricRenderer.d.ts +24 -0
- package/dist/ui/rendering/metricRenderer.d.ts.map +1 -0
- package/dist/ui/rendering/metricRenderer.js +86 -0
- package/dist/ui/rendering/metricRenderer.js.map +1 -0
- package/dist/ui/runtime/hub.d.ts +12 -0
- package/dist/ui/runtime/hub.d.ts.map +1 -0
- package/dist/ui/runtime/hub.js +468 -0
- package/dist/ui/runtime/hub.js.map +1 -0
- package/dist/ui/runtime/hubValidation.d.ts +23 -0
- package/dist/ui/runtime/hubValidation.d.ts.map +1 -0
- package/dist/ui/runtime/hubValidation.js +90 -0
- package/dist/ui/runtime/hubValidation.js.map +1 -0
- package/dist/ui/runtime/index.d.ts +29 -0
- package/dist/ui/runtime/index.d.ts.map +1 -0
- package/dist/ui/runtime/index.js +299 -0
- package/dist/ui/runtime/index.js.map +1 -0
- package/dist/ui/runtime/no-tui.d.ts +12 -0
- package/dist/ui/runtime/no-tui.d.ts.map +1 -0
- package/dist/ui/runtime/no-tui.js +77 -0
- package/dist/ui/runtime/no-tui.js.map +1 -0
- package/dist/ui/runtime/state-builder.d.ts +13 -0
- package/dist/ui/runtime/state-builder.d.ts.map +1 -0
- package/dist/ui/runtime/state-builder.js +114 -0
- package/dist/ui/runtime/state-builder.js.map +1 -0
- package/dist/ui/runtime/terminalSizeCheck.d.ts +10 -0
- package/dist/ui/runtime/terminalSizeCheck.d.ts.map +1 -0
- package/dist/ui/runtime/terminalSizeCheck.js +51 -0
- package/dist/ui/runtime/terminalSizeCheck.js.map +1 -0
- package/dist/ui/runtime/tuiLogGate.d.ts +22 -0
- package/dist/ui/runtime/tuiLogGate.d.ts.map +1 -0
- package/dist/ui/runtime/tuiLogGate.js +68 -0
- package/dist/ui/runtime/tuiLogGate.js.map +1 -0
- package/dist/ui/state/types.d.ts +72 -0
- package/dist/ui/state/types.d.ts.map +1 -0
- package/dist/ui/state/types.js +6 -0
- package/dist/ui/state/types.js.map +1 -0
- package/dist/ui/theme/borders.d.ts +20 -0
- package/dist/ui/theme/borders.d.ts.map +1 -0
- package/dist/ui/theme/borders.js +55 -0
- package/dist/ui/theme/borders.js.map +1 -0
- package/dist/ui/theme/tokens.d.ts +28 -0
- package/dist/ui/theme/tokens.d.ts.map +1 -0
- package/dist/ui/theme/tokens.js +50 -0
- package/dist/ui/theme/tokens.js.map +1 -0
- package/dist/ui/theme/typography.d.ts +14 -0
- package/dist/ui/theme/typography.d.ts.map +1 -0
- package/dist/ui/theme/typography.js +30 -0
- package/dist/ui/theme/typography.js.map +1 -0
- package/dist/ui/widgets/flagRow.d.ts +25 -0
- package/dist/ui/widgets/flagRow.d.ts.map +1 -0
- package/dist/ui/widgets/flagRow.js +57 -0
- package/dist/ui/widgets/flagRow.js.map +1 -0
- package/dist/ui/widgets/index.d.ts +9 -0
- package/dist/ui/widgets/index.d.ts.map +1 -0
- package/dist/ui/widgets/index.js +9 -0
- package/dist/ui/widgets/index.js.map +1 -0
- package/dist/ui/widgets/meter.d.ts +18 -0
- package/dist/ui/widgets/meter.d.ts.map +1 -0
- package/dist/ui/widgets/meter.js +38 -0
- package/dist/ui/widgets/meter.js.map +1 -0
- package/dist/ui/widgets/miniMap.d.ts +26 -0
- package/dist/ui/widgets/miniMap.d.ts.map +1 -0
- package/dist/ui/widgets/miniMap.js +94 -0
- package/dist/ui/widgets/miniMap.js.map +1 -0
- package/dist/ui/widgets/sparkline.d.ts +17 -0
- package/dist/ui/widgets/sparkline.d.ts.map +1 -0
- package/dist/ui/widgets/sparkline.js +63 -0
- package/dist/ui/widgets/sparkline.js.map +1 -0
- package/package.json +5 -4
- package/dist/ui/home-view.d.ts +0 -27
- package/dist/ui/home-view.d.ts.map +0 -1
- package/dist/ui/home-view.js +0 -127
- 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 @@
|
|
|
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"}
|