4runr-os 1.3.42 → 1.3.44
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/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/dist/ui/v3/collectors/resources.d.ts.map +1 -1
- package/dist/ui/v3/collectors/resources.js +7 -2
- package/dist/ui/v3/collectors/resources.js.map +1 -1
- package/dist/ui/v3/core/eventBus.d.ts.map +1 -1
- package/dist/ui/v3/core/eventBus.js +4 -1
- package/dist/ui/v3/core/eventBus.js.map +1 -1
- package/dist/ui/v3/core/logger.d.ts +16 -5
- package/dist/ui/v3/core/logger.d.ts.map +1 -1
- package/dist/ui/v3/core/logger.js +111 -28
- package/dist/ui/v3/core/logger.js.map +1 -1
- package/dist/ui/v3/state/capabilitiesStore.d.ts.map +1 -1
- package/dist/ui/v3/state/capabilitiesStore.js +7 -1
- package/dist/ui/v3/state/capabilitiesStore.js.map +1 -1
- package/dist/ui/v3/state/gatewayConnectionStore.d.ts.map +1 -1
- package/dist/ui/v3/state/gatewayConnectionStore.js +7 -1
- package/dist/ui/v3/state/gatewayConnectionStore.js.map +1 -1
- package/dist/ui/v3/state/panelStore.d.ts.map +1 -1
- package/dist/ui/v3/state/panelStore.js +8 -1
- package/dist/ui/v3/state/panelStore.js.map +1 -1
- package/dist/ui/v3/state/value.d.ts.map +1 -1
- package/dist/ui/v3/state/value.js +2 -1
- package/dist/ui/v3/state/value.js.map +1 -1
- package/dist/ui/v3/tui/startTui.d.ts +25 -0
- package/dist/ui/v3/tui/startTui.d.ts.map +1 -0
- package/dist/ui/v3/tui/startTui.js +43 -0
- package/dist/ui/v3/tui/startTui.js.map +1 -0
- package/dist/ui/v3/ui/panels/AssetsPanel.d.ts.map +1 -1
- package/dist/ui/v3/ui/panels/AssetsPanel.js +15 -11
- package/dist/ui/v3/ui/panels/AssetsPanel.js.map +1 -1
- package/dist/ui/v3/ui/panels/PosturePanel.d.ts.map +1 -1
- package/dist/ui/v3/ui/panels/PosturePanel.js +20 -2
- package/dist/ui/v3/ui/panels/PosturePanel.js.map +1 -1
- package/dist/ui/v3/ui/panels/ResourcesPanel.d.ts.map +1 -1
- package/dist/ui/v3/ui/panels/ResourcesPanel.js +15 -12
- package/dist/ui/v3/ui/panels/ResourcesPanel.js.map +1 -1
- package/dist/ui/v3/ui/phase1Runtime.d.ts.map +1 -1
- package/dist/ui/v3/ui/phase1Runtime.js +26 -27
- package/dist/ui/v3/ui/phase1Runtime.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,58 +1,141 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Structural Fix A: Logger Wrapper
|
|
3
3
|
*
|
|
4
|
-
* Hard enforcement: No console.log in TUI mode
|
|
4
|
+
* Hard enforcement: No console.log/process.stdout.write in TUI mode
|
|
5
5
|
* All output goes through eventBus as [SYS] / [ERR] depending on level
|
|
6
|
+
*
|
|
7
|
+
* Rules:
|
|
8
|
+
* - logger.info() → Operations feed (NOT stdout)
|
|
9
|
+
* - logger.error() → Operations feed AND stderr (optional)
|
|
10
|
+
* - logger.raw() is FORBIDDEN
|
|
11
|
+
* - stdout.write is monkeypatched to throw in TUI mode
|
|
6
12
|
*/
|
|
7
13
|
import { eventBus } from './eventBus.js';
|
|
8
14
|
let tuiMode = false;
|
|
15
|
+
let originalStdoutWrite = null;
|
|
16
|
+
let originalConsoleLog = null;
|
|
17
|
+
let originalConsoleError = null;
|
|
18
|
+
let originalConsoleWarn = null;
|
|
19
|
+
let originalConsoleInfo = null;
|
|
20
|
+
let originalConsoleDebug = null;
|
|
9
21
|
/**
|
|
10
|
-
* Enable TUI mode (suppresses console
|
|
22
|
+
* Structural Fix A: Enable TUI mode (suppresses all stdout/console writes)
|
|
23
|
+
*
|
|
24
|
+
* Monkeypatches stdout.write and console methods to throw errors
|
|
25
|
+
* Only the renderer (blessed) is allowed to write to stdout
|
|
11
26
|
*/
|
|
12
27
|
export function enableTuiMode() {
|
|
28
|
+
if (tuiMode)
|
|
29
|
+
return; // Already enabled
|
|
13
30
|
tuiMode = true;
|
|
31
|
+
// Structural Fix A: Monkeypatch stdout.write to throw
|
|
32
|
+
// This prevents ANY code from writing to stdout outside the renderer
|
|
33
|
+
originalStdoutWrite = process.stdout.write.bind(process.stdout);
|
|
34
|
+
process.stdout.write = function (chunk, encoding, cb) {
|
|
35
|
+
// Allow blessed to write (it's the renderer)
|
|
36
|
+
// Check if this is coming from blessed by checking stack trace
|
|
37
|
+
const stack = new Error().stack || '';
|
|
38
|
+
const isBlessed = stack.includes('blessed') ||
|
|
39
|
+
stack.includes('neo-blessed') ||
|
|
40
|
+
stack.includes('blessed-contrib') ||
|
|
41
|
+
stack.includes('node_modules/blessed') ||
|
|
42
|
+
stack.includes('node_modules/neo-blessed');
|
|
43
|
+
if (isBlessed) {
|
|
44
|
+
// This is from blessed - allow it
|
|
45
|
+
return originalStdoutWrite(chunk, encoding, cb);
|
|
46
|
+
}
|
|
47
|
+
// Structural Fix A: Throw error for any other stdout writes
|
|
48
|
+
// This ensures NO code writes to stdout except the renderer
|
|
49
|
+
const chunkStr = String(chunk).substring(0, 100);
|
|
50
|
+
throw new Error(`STDOUT WRITE OUTSIDE TUI: ${chunkStr}. Use logger.info() instead. Stack: ${stack.split('\n').slice(0, 3).join(' | ')}`);
|
|
51
|
+
};
|
|
52
|
+
// Structural Fix A: Monkeypatch console methods to use logger
|
|
53
|
+
originalConsoleLog = console.log;
|
|
54
|
+
originalConsoleError = console.error;
|
|
55
|
+
originalConsoleWarn = console.warn;
|
|
56
|
+
originalConsoleInfo = console.info;
|
|
57
|
+
originalConsoleDebug = console.debug;
|
|
58
|
+
console.log = (...args) => {
|
|
59
|
+
const msg = args.map(a => String(a)).join(' ');
|
|
60
|
+
eventBus.emit({ tag: "SYS", msg, level: 'INFO' });
|
|
61
|
+
};
|
|
62
|
+
console.error = (...args) => {
|
|
63
|
+
const msg = args.map(a => String(a)).join(' ');
|
|
64
|
+
eventBus.emit({ tag: "ERR", msg, level: 'ERROR' });
|
|
65
|
+
// Also write to stderr (not stdout) for critical errors
|
|
66
|
+
if (originalConsoleError) {
|
|
67
|
+
originalConsoleError(...args);
|
|
68
|
+
}
|
|
69
|
+
};
|
|
70
|
+
console.warn = (...args) => {
|
|
71
|
+
const msg = args.map(a => String(a)).join(' ');
|
|
72
|
+
eventBus.emit({ tag: "SYS", msg, level: 'WARN' });
|
|
73
|
+
};
|
|
74
|
+
console.info = (...args) => {
|
|
75
|
+
const msg = args.map(a => String(a)).join(' ');
|
|
76
|
+
eventBus.emit({ tag: "SYS", msg, level: 'INFO' });
|
|
77
|
+
};
|
|
78
|
+
console.debug = (...args) => {
|
|
79
|
+
const msg = args.map(a => String(a)).join(' ');
|
|
80
|
+
eventBus.emit({ tag: "SYS", msg, level: 'INFO' });
|
|
81
|
+
};
|
|
14
82
|
}
|
|
15
83
|
/**
|
|
16
|
-
* Disable TUI mode (restores console
|
|
84
|
+
* Disable TUI mode (restores console/stdout)
|
|
17
85
|
*/
|
|
18
86
|
export function disableTuiMode() {
|
|
87
|
+
if (!tuiMode)
|
|
88
|
+
return; // Already disabled
|
|
19
89
|
tuiMode = false;
|
|
90
|
+
// Restore original functions
|
|
91
|
+
if (originalStdoutWrite) {
|
|
92
|
+
process.stdout.write = originalStdoutWrite;
|
|
93
|
+
originalStdoutWrite = null;
|
|
94
|
+
}
|
|
95
|
+
if (originalConsoleLog) {
|
|
96
|
+
console.log = originalConsoleLog;
|
|
97
|
+
originalConsoleLog = null;
|
|
98
|
+
}
|
|
99
|
+
if (originalConsoleError) {
|
|
100
|
+
console.error = originalConsoleError;
|
|
101
|
+
originalConsoleError = null;
|
|
102
|
+
}
|
|
103
|
+
if (originalConsoleWarn) {
|
|
104
|
+
console.warn = originalConsoleWarn;
|
|
105
|
+
originalConsoleWarn = null;
|
|
106
|
+
}
|
|
107
|
+
if (originalConsoleInfo) {
|
|
108
|
+
console.info = originalConsoleInfo;
|
|
109
|
+
originalConsoleInfo = null;
|
|
110
|
+
}
|
|
111
|
+
if (originalConsoleDebug) {
|
|
112
|
+
console.debug = originalConsoleDebug;
|
|
113
|
+
originalConsoleDebug = null;
|
|
114
|
+
}
|
|
20
115
|
}
|
|
21
116
|
/**
|
|
22
|
-
* Logger interface
|
|
117
|
+
* Structural Fix A: Logger interface
|
|
118
|
+
*
|
|
119
|
+
* All logging goes through Operations feed, NOT stdout
|
|
23
120
|
*/
|
|
24
121
|
export const logger = {
|
|
25
122
|
debug: (msg) => {
|
|
26
|
-
|
|
27
|
-
eventBus.emit({ tag: "SYS", msg, level: 'INFO' });
|
|
28
|
-
}
|
|
29
|
-
else {
|
|
30
|
-
console.debug(msg);
|
|
31
|
-
}
|
|
123
|
+
eventBus.emit({ tag: "SYS", msg, level: 'INFO' });
|
|
32
124
|
},
|
|
33
125
|
info: (msg) => {
|
|
34
|
-
|
|
35
|
-
eventBus.emit({ tag: "SYS", msg, level: 'INFO' });
|
|
36
|
-
}
|
|
37
|
-
else {
|
|
38
|
-
console.info(msg);
|
|
39
|
-
}
|
|
126
|
+
eventBus.emit({ tag: "SYS", msg, level: 'INFO' });
|
|
40
127
|
},
|
|
41
128
|
warn: (msg) => {
|
|
42
|
-
|
|
43
|
-
eventBus.emit({ tag: "SYS", msg, level: 'WARN' });
|
|
44
|
-
}
|
|
45
|
-
else {
|
|
46
|
-
console.warn(msg);
|
|
47
|
-
}
|
|
129
|
+
eventBus.emit({ tag: "SYS", msg, level: 'WARN' });
|
|
48
130
|
},
|
|
49
131
|
error: (msg) => {
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
console.error(msg);
|
|
132
|
+
eventBus.emit({ tag: "ERR", msg, level: 'ERROR' });
|
|
133
|
+
// Also write to stderr for critical errors (not stdout)
|
|
134
|
+
if (!tuiMode && originalConsoleError) {
|
|
135
|
+
originalConsoleError(msg);
|
|
55
136
|
}
|
|
56
137
|
},
|
|
138
|
+
// Structural Fix A: raw() is FORBIDDEN - do not use
|
|
139
|
+
// raw: () => { throw new Error('logger.raw() is forbidden - use logger.info() instead'); }
|
|
57
140
|
};
|
|
58
141
|
//# sourceMappingURL=logger.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../../src/ui/v3/core/logger.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../../src/ui/v3/core/logger.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capabilitiesStore.d.ts","sourceRoot":"","sources":["../../../../src/ui/v3/state/capabilitiesStore.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,MAAM,iBAAiB,GACzB;IAAE,MAAM,EAAE,UAAU,CAAA;CAAE,GACtB;IAAE,MAAM,EAAE,SAAS,CAAA;CAAE,GACrB;IAAE,MAAM,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAA;CAAE,GACrC;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzC;;GAEG;AACH,cAAM,iBAAiB;IACrB,OAAO,CAAC,KAAK,CAEX;IAEF,OAAO,CAAC,SAAS,CAAsD;IAEvE;;OAEG;IACH,QAAQ,IAAI,iBAAiB;IAI7B;;OAEG;IACH,SAAS,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,GAAG,MAAM,IAAI;IAOnE;;OAEG;IACH,OAAO,CAAC,QAAQ;
|
|
1
|
+
{"version":3,"file":"capabilitiesStore.d.ts","sourceRoot":"","sources":["../../../../src/ui/v3/state/capabilitiesStore.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,MAAM,iBAAiB,GACzB;IAAE,MAAM,EAAE,UAAU,CAAA;CAAE,GACtB;IAAE,MAAM,EAAE,SAAS,CAAA;CAAE,GACrB;IAAE,MAAM,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAA;CAAE,GACrC;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzC;;GAEG;AACH,cAAM,iBAAiB;IACrB,OAAO,CAAC,KAAK,CAEX;IAEF,OAAO,CAAC,SAAS,CAAsD;IAEvE;;OAEG;IACH,QAAQ,IAAI,iBAAiB;IAI7B;;OAEG;IACH,SAAS,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,GAAG,MAAM,IAAI;IAOnE;;OAEG;IACH,OAAO,CAAC,QAAQ;IAiBhB;;OAEG;IACH,UAAU,IAAI,IAAI;IAIlB;;OAEG;IACH,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI;IAIhC;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAI/B;;OAEG;IACH,KAAK,IAAI,IAAI;CAGd;AAGD,eAAO,MAAM,iBAAiB,mBAA0B,CAAC"}
|
|
@@ -36,7 +36,13 @@ class CapabilitiesStore {
|
|
|
36
36
|
listener(newState);
|
|
37
37
|
}
|
|
38
38
|
catch (error) {
|
|
39
|
-
|
|
39
|
+
// Structural Fix A: Use logger
|
|
40
|
+
// Use dynamic import without await to avoid async issues
|
|
41
|
+
import('../core/logger.js').then(({ logger }) => {
|
|
42
|
+
logger.error(`CapabilitiesStore listener error: ${error instanceof Error ? error.message : String(error)}`);
|
|
43
|
+
}).catch(() => {
|
|
44
|
+
// Logger not available - ignore
|
|
45
|
+
});
|
|
40
46
|
}
|
|
41
47
|
});
|
|
42
48
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capabilitiesStore.js","sourceRoot":"","sources":["../../../../src/ui/v3/state/capabilitiesStore.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAQH;;GAEG;AACH,MAAM,iBAAiB;IACb,KAAK,GAAsB;QACjC,MAAM,EAAE,UAAU;KACnB,CAAC;IAEM,SAAS,GAA4C,IAAI,GAAG,EAAE,CAAC;IAEvE;;OAEG;IACH,QAAQ;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,QAA4C;QACpD,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,QAAQ,CAAC,QAA2B;QAC1C,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC;QACtB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;YAChC,IAAI,CAAC;gBACH,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACrB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"capabilitiesStore.js","sourceRoot":"","sources":["../../../../src/ui/v3/state/capabilitiesStore.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAQH;;GAEG;AACH,MAAM,iBAAiB;IACb,KAAK,GAAsB;QACjC,MAAM,EAAE,UAAU;KACnB,CAAC;IAEM,SAAS,GAA4C,IAAI,GAAG,EAAE,CAAC;IAEvE;;OAEG;IACH,QAAQ;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,QAA4C;QACpD,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,QAAQ,CAAC,QAA2B;QAC1C,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC;QACtB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;YAChC,IAAI,CAAC;gBACH,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACrB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,+BAA+B;gBAC/B,yDAAyD;gBACzD,MAAM,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;oBAC9C,MAAM,CAAC,KAAK,CAAC,qCAAqC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBAC9G,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;oBACZ,gCAAgC;gBAClC,CAAC,CAAC,CAAC;YACL,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,UAAU;QACR,IAAI,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;IACvC,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,KAAe;QACvB,IAAI,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;IAC7C,CAAC;IAED;;OAEG;IACH,QAAQ,CAAC,OAAe;QACtB,IAAI,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;IAC9C,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;IACxC,CAAC;CACF;AAED,qBAAqB;AACrB,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,iBAAiB,EAAE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gatewayConnectionStore.d.ts","sourceRoot":"","sources":["../../../../src/ui/v3/state/gatewayConnectionStore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,MAAM,MAAM,eAAe,GACvB;IAAE,MAAM,EAAE,cAAc,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAC1D;IAAE,MAAM,EAAE,YAAY,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAC9E;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,GAAG,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GAClH;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAE5G;;GAEG;AACH,cAAM,sBAAsB;IAC1B,OAAO,CAAC,KAAK,CAIX;IAEF,OAAO,CAAC,SAAS,CAAoD;IAErE;;OAEG;IACH,QAAQ,IAAI,eAAe;IAI3B;;OAEG;IACH,SAAS,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,GAAG,MAAM,IAAI;IAOjE;;OAEG;IACH,OAAO,CAAC,QAAQ;
|
|
1
|
+
{"version":3,"file":"gatewayConnectionStore.d.ts","sourceRoot":"","sources":["../../../../src/ui/v3/state/gatewayConnectionStore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,MAAM,MAAM,eAAe,GACvB;IAAE,MAAM,EAAE,cAAc,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAC1D;IAAE,MAAM,EAAE,YAAY,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAC9E;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,GAAG,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GAClH;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAE5G;;GAEG;AACH,cAAM,sBAAsB;IAC1B,OAAO,CAAC,KAAK,CAIX;IAEF,OAAO,CAAC,SAAS,CAAoD;IAErE;;OAEG;IACH,QAAQ,IAAI,eAAe;IAI3B;;OAEG;IACH,SAAS,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,GAAG,MAAM,IAAI;IAOjE;;OAEG;IACH,OAAO,CAAC,QAAQ;IAmBhB;;OAEG;IACH,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,GAAE,MAAa,GAAG,IAAI;IAS7D;;OAEG;IACH,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI;IAWxF;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI;IAWxF;;OAEG;IACH,eAAe,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI;CAOtD;AAGD,eAAO,MAAM,sBAAsB,wBAA+B,CAAC"}
|
|
@@ -45,7 +45,13 @@ class GatewayConnectionStore {
|
|
|
45
45
|
}
|
|
46
46
|
catch (error) {
|
|
47
47
|
// Don't let listener errors break the store
|
|
48
|
-
|
|
48
|
+
// Structural Fix A: Use logger
|
|
49
|
+
// Use dynamic import without await to avoid async issues
|
|
50
|
+
import('../core/logger.js').then(({ logger }) => {
|
|
51
|
+
logger.error(`GatewayConnectionStore listener error: ${error instanceof Error ? error.message : String(error)}`);
|
|
52
|
+
}).catch(() => {
|
|
53
|
+
// Logger not available - ignore
|
|
54
|
+
});
|
|
49
55
|
}
|
|
50
56
|
});
|
|
51
57
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gatewayConnectionStore.js","sourceRoot":"","sources":["../../../../src/ui/v3/state/gatewayConnectionStore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAQH;;GAEG;AACH,MAAM,sBAAsB;IAClB,KAAK,GAAoB;QAC/B,MAAM,EAAE,cAAc;QACtB,MAAM,EAAE,eAAe;QACvB,IAAI,EAAE,qCAAqC;KAC5C,CAAC;IAEM,SAAS,GAA0C,IAAI,GAAG,EAAE,CAAC;IAErE;;OAEG;IACH,QAAQ;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,QAA0C;QAClD,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,QAAQ,CAAC,QAAyB;QACxC,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC;QACtB,uBAAuB;QACvB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;YAChC,IAAI,CAAC;gBACH,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACrB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,4CAA4C;gBAC5C,OAAO,CAAC,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"gatewayConnectionStore.js","sourceRoot":"","sources":["../../../../src/ui/v3/state/gatewayConnectionStore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAQH;;GAEG;AACH,MAAM,sBAAsB;IAClB,KAAK,GAAoB;QAC/B,MAAM,EAAE,cAAc;QACtB,MAAM,EAAE,eAAe;QACvB,IAAI,EAAE,qCAAqC;KAC5C,CAAC;IAEM,SAAS,GAA0C,IAAI,GAAG,EAAE,CAAC;IAErE;;OAEG;IACH,QAAQ;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,QAA0C;QAClD,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,QAAQ,CAAC,QAAyB;QACxC,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC;QACtB,uBAAuB;QACvB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;YAChC,IAAI,CAAC;gBACH,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACrB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,4CAA4C;gBAC5C,+BAA+B;gBAC/B,yDAAyD;gBACzD,MAAM,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;oBAC9C,MAAM,CAAC,KAAK,CAAC,0CAA0C,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBACnH,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;oBACZ,gCAAgC;gBAClC,CAAC,CAAC,CAAC;YACL,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,aAAa,CAAC,MAAc,EAAE,YAAoB,IAAI;QACpD,IAAI,CAAC,QAAQ,CAAC;YACZ,MAAM,EAAE,YAAY;YACpB,MAAM;YACN,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;YACrB,SAAS;SACV,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,YAAY,CAAC,MAAc,EAAE,UAAkB,EAAE,MAAY,EAAE,SAAkB;QAC/E,IAAI,CAAC,QAAQ,CAAC;YACZ,MAAM,EAAE,WAAW;YACnB,MAAM;YACN,UAAU;YACV,MAAM;YACN,SAAS;YACT,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE;SACxB,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,QAAQ,CAAC,MAAc,EAAE,IAAwB,EAAE,OAAe,EAAE,IAAa;QAC/E,IAAI,CAAC,QAAQ,CAAC;YACZ,MAAM,EAAE,OAAO;YACf,MAAM;YACN,IAAI;YACJ,OAAO;YACP,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE;YACvB,IAAI;SACL,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,eAAe,CAAC,MAAe,EAAE,IAAa;QAC5C,IAAI,CAAC,QAAQ,CAAC;YACZ,MAAM,EAAE,cAAc;YACtB,MAAM;YACN,IAAI;SACL,CAAC,CAAC;IACL,CAAC;CACF;AAED,qBAAqB;AACrB,MAAM,CAAC,MAAM,sBAAsB,GAAG,IAAI,sBAAsB,EAAE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"panelStore.d.ts","sourceRoot":"","sources":["../../../../src/ui/v3/state/panelStore.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,YAAY,EAAE,iBAAiB,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAGtI;;;GAGG;AACH,MAAM,WAAW,UAAU,CAAC,CAAC;IAC3B,MAAM,EAAE,WAAW,GAAG,aAAa,GAAG,UAAU,GAAG,SAAS,CAAC;IAC7D,IAAI,CAAC,EAAE,CAAC,CAAC;IACT,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,UAAU,CAAC,cAAc,CAAC,CAAC;IACtC,MAAM,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC;IAChC,OAAO,EAAE,UAAU,CAAC,YAAY,CAAC,CAAC;IAClC,YAAY,EAAE,UAAU,CAAC,iBAAiB,CAAC,CAAC;IAC5C,OAAO,EAAE,UAAU,CAAC,YAAY,CAAC,CAAC;IAClC,WAAW,EAAE,UAAU,CAAC,gBAAgB,CAAC,CAAC;CAC3C;AAED;;GAEG;AACH,cAAM,UAAU;IACd,OAAO,CAAC,KAAK,CA8BX;IAEF,OAAO,CAAC,SAAS,CAAgD;IAEjE;;OAEG;IACH,QAAQ,IAAI,WAAW;IAIvB;;OAEG;IACH,QAAQ,CAAC,CAAC,SAAS,MAAM,WAAW,EAAE,GAAG,EAAE,CAAC,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAIjF;;OAEG;IACH,SAAS,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,GAAG,MAAM,IAAI;IAO7D;;OAEG;IACH,OAAO,CAAC,QAAQ;
|
|
1
|
+
{"version":3,"file":"panelStore.d.ts","sourceRoot":"","sources":["../../../../src/ui/v3/state/panelStore.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,YAAY,EAAE,iBAAiB,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAGtI;;;GAGG;AACH,MAAM,WAAW,UAAU,CAAC,CAAC;IAC3B,MAAM,EAAE,WAAW,GAAG,aAAa,GAAG,UAAU,GAAG,SAAS,CAAC;IAC7D,IAAI,CAAC,EAAE,CAAC,CAAC;IACT,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,UAAU,CAAC,cAAc,CAAC,CAAC;IACtC,MAAM,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC;IAChC,OAAO,EAAE,UAAU,CAAC,YAAY,CAAC,CAAC;IAClC,YAAY,EAAE,UAAU,CAAC,iBAAiB,CAAC,CAAC;IAC5C,OAAO,EAAE,UAAU,CAAC,YAAY,CAAC,CAAC;IAClC,WAAW,EAAE,UAAU,CAAC,gBAAgB,CAAC,CAAC;CAC3C;AAED;;GAEG;AACH,cAAM,UAAU;IACd,OAAO,CAAC,KAAK,CA8BX;IAEF,OAAO,CAAC,SAAS,CAAgD;IAEjE;;OAEG;IACH,QAAQ,IAAI,WAAW;IAIvB;;OAEG;IACH,QAAQ,CAAC,CAAC,SAAS,MAAM,WAAW,EAAE,GAAG,EAAE,CAAC,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAIjF;;OAEG;IACH,SAAS,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,GAAG,MAAM,IAAI;IAO7D;;OAEG;IACH,OAAO,CAAC,QAAQ;IA4BhB;;OAEG;IACH,YAAY,CAAC,KAAK,EAAE,UAAU,CAAC,cAAc,CAAC,GAAG,IAAI;IAIrD;;OAEG;IACH,SAAS,CAAC,KAAK,EAAE,UAAU,CAAC,WAAW,CAAC,GAAG,IAAI;IAI/C;;OAEG;IACH,UAAU,CAAC,KAAK,EAAE,UAAU,CAAC,YAAY,CAAC,GAAG,IAAI;IAIjD;;OAEG;IACH,eAAe,CAAC,KAAK,EAAE,UAAU,CAAC,iBAAiB,CAAC,GAAG,IAAI;IAI3D;;OAEG;IACH,UAAU,CAAC,KAAK,EAAE,UAAU,CAAC,YAAY,CAAC,GAAG,IAAI;IAIjD;;OAEG;IACH,cAAc,CAAC,KAAK,EAAE,UAAU,CAAC,gBAAgB,CAAC,GAAG,IAAI;CAG1D;AAGD,eAAO,MAAM,UAAU,YAAmB,CAAC"}
|
|
@@ -78,7 +78,14 @@ class PanelStore {
|
|
|
78
78
|
listener({ ...this.state });
|
|
79
79
|
}
|
|
80
80
|
catch (error) {
|
|
81
|
-
|
|
81
|
+
// Structural Fix A: Use logger (but logger might not be available during store init)
|
|
82
|
+
// Silently continue - don't break the store if logger fails
|
|
83
|
+
// Use dynamic import without await to avoid async issues
|
|
84
|
+
import('../core/logger.js').then(({ logger }) => {
|
|
85
|
+
logger.error(`PanelStore listener error: ${error instanceof Error ? error.message : String(error)}`);
|
|
86
|
+
}).catch(() => {
|
|
87
|
+
// Logger not available - ignore
|
|
88
|
+
});
|
|
82
89
|
}
|
|
83
90
|
});
|
|
84
91
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"panelStore.js","sourceRoot":"","sources":["../../../../src/ui/v3/state/panelStore.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AA8BH;;GAEG;AACH,MAAM,UAAU;IACN,KAAK,GAAgB;QAC3B,SAAS,EAAE;YACT,MAAM,EAAE,SAAS;YACjB,MAAM,EAAE,cAAc;SACvB;QACD,MAAM,EAAE;YACN,MAAM,EAAE,aAAa;YACrB,MAAM,EAAE,gCAAgC;YACxC,UAAU,EAAE,sBAAsB;SACnC;QACD,OAAO,EAAE;YACP,MAAM,EAAE,aAAa;YACrB,MAAM,EAAE,uBAAuB;YAC/B,UAAU,EAAE,yCAAyC;SACtD;QACD,YAAY,EAAE;YACZ,MAAM,EAAE,aAAa;YACrB,MAAM,EAAE,yBAAyB;YACjC,UAAU,EAAE,+BAA+B;SAC5C;QACD,OAAO,EAAE;YACP,MAAM,EAAE,aAAa;YACrB,MAAM,EAAE,yBAAyB;YACjC,UAAU,EAAE,oCAAoC;SACjD;QACD,WAAW,EAAE;YACX,MAAM,EAAE,aAAa;YACrB,MAAM,EAAE,wBAAwB;YAChC,UAAU,EAAE,oBAAoB;SACjC;KACF,CAAC;IAEM,SAAS,GAAsC,IAAI,GAAG,EAAE,CAAC;IAEjE;;OAEG;IACH,QAAQ;QACN,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,QAAQ,CAA8B,GAAM;QAC1C,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,QAAsC;QAC9C,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,QAAQ,CACd,GAAM,EACN,MAAmD;QAEnD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAChC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG;YAChB,GAAG,OAAO;YACV,GAAG,MAAM;YACT,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpB,CAAC;QAEpB,uBAAuB;QACvB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;YAChC,IAAI,CAAC;gBACH,QAAQ,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;YAC9B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"panelStore.js","sourceRoot":"","sources":["../../../../src/ui/v3/state/panelStore.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"value.d.ts","sourceRoot":"","sources":["../../../../src/ui/v3/state/value.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;
|
|
1
|
+
{"version":3,"file":"value.d.ts","sourceRoot":"","sources":["../../../../src/ui/v3/state/value.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
* - UNAVAILABLE/UNKNOWN must not include value
|
|
10
10
|
* - No other fields
|
|
11
11
|
*/
|
|
12
|
+
import { logger } from '../core/logger.js';
|
|
12
13
|
/**
|
|
13
14
|
* Create an AVAILABLE value
|
|
14
15
|
*/
|
|
@@ -74,7 +75,7 @@ export function renderValue(v, renderAvailable, renderLoading) {
|
|
|
74
75
|
// CRITICAL: If not available, ensure no value is present (defensive check)
|
|
75
76
|
if ('value' in v && v.value !== undefined) {
|
|
76
77
|
// State corruption detected - log and return error
|
|
77
|
-
|
|
78
|
+
logger.error(`[renderValue] State corruption: ${v.availability} state has value property`);
|
|
78
79
|
return `UNAVAILABLE\nReason: State corruption (${v.availability} with value)\nNext: Restart application`;
|
|
79
80
|
}
|
|
80
81
|
if (isLoading(v)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"value.js","sourceRoot":"","sources":["../../../../src/ui/v3/state/value.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;
|
|
1
|
+
{"version":3,"file":"value.js","sourceRoot":"","sources":["../../../../src/ui/v3/state/value.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAU3C;;GAEG;AACH,MAAM,UAAU,SAAS,CAAI,KAAQ;IACnC,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,OAAO,CAAI,MAAe,EAAE,IAAgD;IAC1F,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;AACnD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAI,MAAe,EAAE,UAAmB;IACjE,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;AAC7D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,OAAO,CAAI,MAAe,EAAE,UAAmB;IAC7D,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;AACzD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAI,KAAe;IAC5C,OAAO,KAAK,CAAC,YAAY,KAAK,WAAW,CAAC;AAC5C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAI,KAAe;IAC9C,OAAO,KAAK,CAAC,YAAY,KAAK,aAAa,CAAC;AAC9C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CAAI,KAAe;IAC1C,OAAO,KAAK,CAAC,YAAY,KAAK,SAAS,CAAC;AAC1C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CAAI,KAAe;IAC1C,OAAO,KAAK,CAAC,YAAY,KAAK,SAAS,CAAC;AAC1C,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CACzB,CAAW,EACX,eAAiC,EACjC,aAA6F;IAE7F,oDAAoD;IACpD,6EAA6E;IAC7E,IAAI,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;QACnB,8CAA8C;QAC9C,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAC7C,mDAAmD;YACnD,OAAO,4FAA4F,CAAC;QACtG,CAAC;QACD,OAAO,eAAe,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC;IAED,2EAA2E;IAC3E,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAC1C,mDAAmD;QACnD,MAAM,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC,YAAY,2BAA2B,CAAC,CAAC;QAC3F,OAAO,0CAA0C,CAAC,CAAC,YAAY,yCAAyC,CAAC;IAC3G,CAAC;IAED,IAAI,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;QACjB,qEAAqE;QACrE,IAAI,aAAa,EAAE,CAAC;YAClB,OAAO,aAAa,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;QACzC,CAAC;QACD,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,IAAI,YAAY,CAAC;QACxC,MAAM,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9F,OAAO,OAAO,CAAC,CAAC,CAAC,GAAG,MAAM,KAAK,OAAO,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;IACpD,CAAC;IAED,6DAA6D;IAC7D,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,IAAI,iBAAiB,CAAC;IAC7C,MAAM,UAAU,GAAG,CAAC,CAAC,UAAU,IAAI,YAAY,CAAC;IAChD,MAAM,MAAM,GAAG,CAAC,CAAC,YAAY,CAAC;IAE9B,OAAO,GAAG,MAAM,aAAa,MAAM,WAAW,UAAU,EAAE,CAAC;AAC7D,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Structural Fix B: Enforce One UI Root
|
|
3
|
+
*
|
|
4
|
+
* Centralized TUI boot entry point with singleton guard.
|
|
5
|
+
* This is the ONLY place that should start the TUI.
|
|
6
|
+
*
|
|
7
|
+
* Rules:
|
|
8
|
+
* - Singleton guard prevents multiple UI instances
|
|
9
|
+
* - connect/reconnect updates store state only, never recreates UI
|
|
10
|
+
* - Never calls render() or creates new screen instances after initial boot
|
|
11
|
+
*/
|
|
12
|
+
declare global {
|
|
13
|
+
var __TUI_STARTED__: boolean | undefined;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Start the TUI (singleton - only runs once per process)
|
|
17
|
+
*
|
|
18
|
+
* Returns true if TUI was started, false if already running
|
|
19
|
+
*/
|
|
20
|
+
export declare function startTui(): Promise<boolean>;
|
|
21
|
+
/**
|
|
22
|
+
* Check if TUI is already started
|
|
23
|
+
*/
|
|
24
|
+
export declare function isTuiStarted(): boolean;
|
|
25
|
+
//# sourceMappingURL=startTui.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"startTui.d.ts","sourceRoot":"","sources":["../../../../src/ui/v3/tui/startTui.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAKH,OAAO,CAAC,MAAM,CAAC;IAEb,IAAI,eAAe,EAAE,OAAO,GAAG,SAAS,CAAC;CAC1C;AAED;;;;GAIG;AACH,wBAAsB,QAAQ,IAAI,OAAO,CAAC,OAAO,CAAC,CAmBjD;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,OAAO,CAEtC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Structural Fix B: Enforce One UI Root
|
|
3
|
+
*
|
|
4
|
+
* Centralized TUI boot entry point with singleton guard.
|
|
5
|
+
* This is the ONLY place that should start the TUI.
|
|
6
|
+
*
|
|
7
|
+
* Rules:
|
|
8
|
+
* - Singleton guard prevents multiple UI instances
|
|
9
|
+
* - connect/reconnect updates store state only, never recreates UI
|
|
10
|
+
* - Never calls render() or creates new screen instances after initial boot
|
|
11
|
+
*/
|
|
12
|
+
import { startPhase1Runtime } from '../ui/phase1Runtime.js';
|
|
13
|
+
/**
|
|
14
|
+
* Start the TUI (singleton - only runs once per process)
|
|
15
|
+
*
|
|
16
|
+
* Returns true if TUI was started, false if already running
|
|
17
|
+
*/
|
|
18
|
+
export async function startTui() {
|
|
19
|
+
// Structural Fix B: Singleton guard
|
|
20
|
+
if (globalThis.__TUI_STARTED__) {
|
|
21
|
+
// TUI already started - do nothing
|
|
22
|
+
return false;
|
|
23
|
+
}
|
|
24
|
+
// Mark as started BEFORE calling startPhase1Runtime
|
|
25
|
+
// This prevents race conditions if startPhase1Runtime is called multiple times
|
|
26
|
+
globalThis.__TUI_STARTED__ = true;
|
|
27
|
+
try {
|
|
28
|
+
await startPhase1Runtime();
|
|
29
|
+
return true;
|
|
30
|
+
}
|
|
31
|
+
catch (error) {
|
|
32
|
+
// If start fails, reset the flag so we can retry
|
|
33
|
+
globalThis.__TUI_STARTED__ = false;
|
|
34
|
+
throw error;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Check if TUI is already started
|
|
39
|
+
*/
|
|
40
|
+
export function isTuiStarted() {
|
|
41
|
+
return globalThis.__TUI_STARTED__ === true;
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=startTui.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"startTui.js","sourceRoot":"","sources":["../../../../src/ui/v3/tui/startTui.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAQ5D;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ;IAC5B,oCAAoC;IACpC,IAAI,UAAU,CAAC,eAAe,EAAE,CAAC;QAC/B,mCAAmC;QACnC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,oDAAoD;IACpD,+EAA+E;IAC/E,UAAU,CAAC,eAAe,GAAG,IAAI,CAAC;IAElC,IAAI,CAAC;QACH,MAAM,kBAAkB,EAAE,CAAC;QAC3B,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,iDAAiD;QACjD,UAAU,CAAC,eAAe,GAAG,KAAK,CAAC;QACnC,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY;IAC1B,OAAO,UAAU,CAAC,eAAe,KAAK,IAAI,CAAC;AAC7C,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AssetsPanel.d.ts","sourceRoot":"","sources":["../../../../../src/ui/v3/ui/panels/AssetsPanel.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"AssetsPanel.d.ts","sourceRoot":"","sources":["../../../../../src/ui/v3/ui/panels/AssetsPanel.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAgB/D;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,GAAG,MAAM,EAAE,CA6BrE"}
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
* Handles Value<AssetsState> correctly - no blank panels.
|
|
6
6
|
*/
|
|
7
7
|
import { renderValue, isAvailable } from '../../state/value.js';
|
|
8
|
+
import { logger } from '../../core/logger.js';
|
|
8
9
|
/**
|
|
9
10
|
* Render Assets panel content when AVAILABLE
|
|
10
11
|
*/
|
|
@@ -30,19 +31,22 @@ export function renderAssetsPanel(value) {
|
|
|
30
31
|
if (!value || typeof value !== 'object' || !('availability' in value)) {
|
|
31
32
|
return ['UNAVAILABLE', 'Reason: Invalid state object', 'Next: Restart application'];
|
|
32
33
|
}
|
|
34
|
+
// CRITICAL: If state is not AVAILABLE, return UNAVAILABLE message immediately
|
|
35
|
+
// Do NOT call renderValue which might show data
|
|
36
|
+
if (!isAvailable(value)) {
|
|
37
|
+
const status = value.availability;
|
|
38
|
+
const reason = value.reason || 'Not available';
|
|
39
|
+
const nextAction = ('nextAction' in value && value.nextAction) ? value.nextAction : 'Run "help"';
|
|
40
|
+
return [status, `Reason: ${reason}`, `Next: ${nextAction}`];
|
|
41
|
+
}
|
|
42
|
+
// Only render data if state is AVAILABLE
|
|
33
43
|
const content = renderValue(value, renderAvailable);
|
|
34
44
|
const lines = content.split('\n').filter(line => line.trim().length > 0);
|
|
35
|
-
//
|
|
36
|
-
if (
|
|
37
|
-
//
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
// State corruption detected - return only the UNAVAILABLE message
|
|
41
|
-
const status = value.availability;
|
|
42
|
-
const reason = value.reason || 'State corruption detected';
|
|
43
|
-
const nextAction = ('nextAction' in value && value.nextAction) ? value.nextAction : 'Restart application';
|
|
44
|
-
return [status, `Reason: ${reason}`, `Next: ${nextAction}`];
|
|
45
|
-
}
|
|
45
|
+
// Final safety check: if lines contain UNAVAILABLE/UNKNOWN status, something is wrong
|
|
46
|
+
if (lines.some(line => line === 'UNAVAILABLE' || line === 'UNKNOWN' || line === 'DISABLED')) {
|
|
47
|
+
// This shouldn't happen if state is AVAILABLE, but defensive check
|
|
48
|
+
logger.error('[AssetsPanel] State corruption: AVAILABLE state returned UNAVAILABLE message');
|
|
49
|
+
return ['UNAVAILABLE', 'Reason: State corruption detected', 'Next: Restart application'];
|
|
46
50
|
}
|
|
47
51
|
return lines;
|
|
48
52
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AssetsPanel.js","sourceRoot":"","sources":["../../../../../src/ui/v3/ui/panels/AssetsPanel.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,WAAW,EAAE,WAAW,EAAiB,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"AssetsPanel.js","sourceRoot":"","sources":["../../../../../src/ui/v3/ui/panels/AssetsPanel.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,WAAW,EAAE,WAAW,EAAiB,MAAM,sBAAsB,CAAC;AAC/E,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAE9C;;GAEG;AACH,SAAS,eAAe,CAAC,IAAiB;IACxC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;IACnC,KAAK,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IACrC,KAAK,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IACjC,KAAK,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;IACnC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAyB;IACzD,mDAAmD;IACnD,mDAAmD;IACnD,0DAA0D;IAC1D,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,CAAC,cAAc,IAAI,KAAK,CAAC,EAAE,CAAC;QACtE,OAAO,CAAC,aAAa,EAAE,8BAA8B,EAAE,2BAA2B,CAAC,CAAC;IACtF,CAAC;IAED,8EAA8E;IAC9E,gDAAgD;IAChD,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;QACxB,MAAM,MAAM,GAAG,KAAK,CAAC,YAAY,CAAC;QAClC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,eAAe,CAAC;QAC/C,MAAM,UAAU,GAAG,CAAC,YAAY,IAAI,KAAK,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC;QACjG,OAAO,CAAC,MAAM,EAAE,WAAW,MAAM,EAAE,EAAE,SAAS,UAAU,EAAE,CAAC,CAAC;IAC9D,CAAC;IAED,yCAAyC;IACzC,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC;IACpD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAEzE,sFAAsF;IACtF,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,KAAK,aAAa,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,UAAU,CAAC,EAAE,CAAC;QAC5F,mEAAmE;QACnE,MAAM,CAAC,KAAK,CAAC,8EAA8E,CAAC,CAAC;QAC7F,OAAO,CAAC,aAAa,EAAE,mCAAmC,EAAE,2BAA2B,CAAC,CAAC;IAC3F,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PosturePanel.d.ts","sourceRoot":"","sources":["../../../../../src/ui/v3/ui/panels/PosturePanel.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAUhE;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,KAAK,CAAC,YAAY,CAAC,GAAG,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"PosturePanel.d.ts","sourceRoot":"","sources":["../../../../../src/ui/v3/ui/panels/PosturePanel.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAUhE;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,KAAK,CAAC,YAAY,CAAC,GAAG,MAAM,EAAE,CAyCvE"}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Renders the POSTURE panel content.
|
|
5
5
|
* Currently shows DISABLED state since posture module is not implemented.
|
|
6
6
|
*/
|
|
7
|
-
import { renderValue, isUnavailable } from '../../state/value.js';
|
|
7
|
+
import { renderValue, isUnavailable, isUnknown } from '../../state/value.js';
|
|
8
8
|
/**
|
|
9
9
|
* Render Posture panel content when AVAILABLE
|
|
10
10
|
*/
|
|
@@ -18,6 +18,24 @@ function renderAvailable(data) {
|
|
|
18
18
|
* Shows DISABLED message if posture is not implemented
|
|
19
19
|
*/
|
|
20
20
|
export function renderPosturePanel(value) {
|
|
21
|
+
// CRITICAL: Handle UNKNOWN state explicitly (prevents "UNKNOWN" from appearing as title)
|
|
22
|
+
if (isUnknown(value)) {
|
|
23
|
+
// UNKNOWN state - check if it should be DISABLED based on reason
|
|
24
|
+
if (value.reason?.includes('not probed') || value.reason?.includes('not enabled') || value.reason?.includes('POSTURE_URL')) {
|
|
25
|
+
// This is the initial UNKNOWN that should become DISABLED
|
|
26
|
+
return [
|
|
27
|
+
'DISABLED',
|
|
28
|
+
`Reason: ${value.reason || 'Posture module not enabled in this build'}`,
|
|
29
|
+
`Next: ${value.nextAction || 'Enable posture service or configure POSTURE_URL'}`
|
|
30
|
+
];
|
|
31
|
+
}
|
|
32
|
+
// Otherwise it's a true UNKNOWN state
|
|
33
|
+
return [
|
|
34
|
+
'UNKNOWN',
|
|
35
|
+
value.reason ? `Reason: ${value.reason}` : 'Posture state unknown',
|
|
36
|
+
value.nextAction ? `Next: ${value.nextAction}` : 'Run "status" to check system state'
|
|
37
|
+
];
|
|
38
|
+
}
|
|
21
39
|
// If unavailable, check if it's a disabled state (deterministic)
|
|
22
40
|
if (isUnavailable(value)) {
|
|
23
41
|
// Check if reason indicates disabled (from module config probe)
|
|
@@ -35,7 +53,7 @@ export function renderPosturePanel(value) {
|
|
|
35
53
|
value.nextAction ? `Next: ${value.nextAction}` : 'Connect to Gateway'
|
|
36
54
|
];
|
|
37
55
|
}
|
|
38
|
-
// Otherwise use normal rendering
|
|
56
|
+
// Otherwise use normal rendering (AVAILABLE or LOADING)
|
|
39
57
|
const content = renderValue(value, renderAvailable);
|
|
40
58
|
return content.split('\n');
|
|
41
59
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PosturePanel.js","sourceRoot":"","sources":["../../../../../src/ui/v3/ui/panels/PosturePanel.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"PosturePanel.js","sourceRoot":"","sources":["../../../../../src/ui/v3/ui/panels/PosturePanel.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAE7E;;GAEG;AACH,SAAS,eAAe,CAAC,IAAkB;IACzC,OAAO,SAAS,IAAI,CAAC,IAAI,EAAE,CAAC;AAC9B,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAA0B;IAC3D,yFAAyF;IACzF,IAAI,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;QACrB,iEAAiE;QACjE,IAAI,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAC,IAAI,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;YAC3H,0DAA0D;YAC1D,OAAO;gBACL,UAAU;gBACV,WAAW,KAAK,CAAC,MAAM,IAAI,0CAA0C,EAAE;gBACvE,SAAS,KAAK,CAAC,UAAU,IAAI,iDAAiD,EAAE;aACjF,CAAC;QACJ,CAAC;QACD,sCAAsC;QACtC,OAAO;YACL,SAAS;YACT,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,uBAAuB;YAClE,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,oCAAoC;SACtF,CAAC;IACJ,CAAC;IAED,iEAAiE;IACjE,IAAI,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,gEAAgE;QAChE,IAAI,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;YACnF,OAAO;gBACL,UAAU;gBACV,WAAW,KAAK,CAAC,MAAM,EAAE;gBACzB,SAAS,KAAK,CAAC,UAAU,IAAI,iDAAiD,EAAE;aACjF,CAAC;QACJ,CAAC;QACD,mEAAmE;QACnE,OAAO;YACL,aAAa;YACb,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,eAAe;YAC1D,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,oBAAoB;SACtE,CAAC;IACJ,CAAC;IAED,wDAAwD;IACxD,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC;IACpD,OAAO,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC7B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ResourcesPanel.d.ts","sourceRoot":"","sources":["../../../../../src/ui/v3/ui/panels/ResourcesPanel.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"ResourcesPanel.d.ts","sourceRoot":"","sources":["../../../../../src/ui/v3/ui/panels/ResourcesPanel.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAgClE;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,KAAK,CAAC,cAAc,CAAC,GAAG,MAAM,EAAE,CA6B3E"}
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
* Line-budgeted, truncation-safe.
|
|
7
7
|
*/
|
|
8
8
|
import { isAvailable, renderValue } from '../../state/value.js';
|
|
9
|
+
import { logger } from '../../core/logger.js';
|
|
9
10
|
/**
|
|
10
11
|
* Format uptime string (already formatted in ResourcesState)
|
|
11
12
|
*/
|
|
@@ -43,20 +44,22 @@ export function renderResourcesPanel(value) {
|
|
|
43
44
|
if (!value || typeof value !== 'object' || !('availability' in value)) {
|
|
44
45
|
return ['UNAVAILABLE', 'Reason: Invalid state object', 'Next: Restart application'];
|
|
45
46
|
}
|
|
47
|
+
// CRITICAL: If state is not AVAILABLE, return UNAVAILABLE message immediately
|
|
48
|
+
// Do NOT call renderValue which might show data
|
|
49
|
+
if (!isAvailable(value)) {
|
|
50
|
+
const status = value.availability;
|
|
51
|
+
const reason = value.reason || 'Not available';
|
|
52
|
+
const nextAction = ('nextAction' in value && value.nextAction) ? value.nextAction : 'Run "help"';
|
|
53
|
+
return [status, `Reason: ${reason}`, `Next: ${nextAction}`];
|
|
54
|
+
}
|
|
55
|
+
// Only render data if state is AVAILABLE
|
|
46
56
|
const content = renderValue(value, renderAvailable);
|
|
47
57
|
const lines = content.split('\n').filter(line => line.trim().length > 0);
|
|
48
|
-
//
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
if (hasDataLines) {
|
|
54
|
-
// State corruption detected - return only the UNAVAILABLE message
|
|
55
|
-
const status = value.availability;
|
|
56
|
-
const reason = value.reason || 'State corruption detected';
|
|
57
|
-
const nextAction = ('nextAction' in value && value.nextAction) ? value.nextAction : 'Restart application';
|
|
58
|
-
return [status, `Reason: ${reason}`, `Next: ${nextAction}`];
|
|
59
|
-
}
|
|
58
|
+
// Final safety check: if lines contain UNAVAILABLE/UNKNOWN status, something is wrong
|
|
59
|
+
if (lines.some(line => line === 'UNAVAILABLE' || line === 'UNKNOWN' || line === 'DISABLED')) {
|
|
60
|
+
// This shouldn't happen if state is AVAILABLE, but defensive check
|
|
61
|
+
logger.error('[ResourcesPanel] State corruption: AVAILABLE state returned UNAVAILABLE message');
|
|
62
|
+
return ['UNAVAILABLE', 'Reason: State corruption detected', 'Next: Restart application'];
|
|
60
63
|
}
|
|
61
64
|
return lines;
|
|
62
65
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ResourcesPanel.js","sourceRoot":"","sources":["../../../../../src/ui/v3/ui/panels/ResourcesPanel.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,EAAE,WAAW,EAAE,WAAW,EAAiB,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"ResourcesPanel.js","sourceRoot":"","sources":["../../../../../src/ui/v3/ui/panels/ResourcesPanel.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,EAAE,WAAW,EAAE,WAAW,EAAiB,MAAM,sBAAsB,CAAC;AAC/E,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAE9C;;GAEG;AACH,SAAS,YAAY,CAAC,MAAc;IAClC,OAAO,MAAM,CAAC,CAAC,gCAAgC;AACjD,CAAC;AAED;;GAEG;AACH,SAAS,eAAe,CAAC,IAAoB;IAC3C,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,cAAc;IACd,KAAK,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAE5C,cAAc;IACd,KAAK,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,SAAS,MAAM,IAAI,CAAC,UAAU,KAAK,CAAC,CAAC;IAE7D,eAAe;IACf,KAAK,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,UAAU,MAAM,IAAI,CAAC,WAAW,KAAK,CAAC,CAAC;IAEhE,iBAAiB;IACnB,KAAK,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IAEjC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,oBAAoB,CAAC,KAA4B;IAC/D,mDAAmD;IACnD,mDAAmD;IACnD,0DAA0D;IAC1D,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,CAAC,cAAc,IAAI,KAAK,CAAC,EAAE,CAAC;QACtE,OAAO,CAAC,aAAa,EAAE,8BAA8B,EAAE,2BAA2B,CAAC,CAAC;IACtF,CAAC;IAED,8EAA8E;IAC9E,gDAAgD;IAChD,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;QACxB,MAAM,MAAM,GAAG,KAAK,CAAC,YAAY,CAAC;QAClC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,eAAe,CAAC;QAC/C,MAAM,UAAU,GAAG,CAAC,YAAY,IAAI,KAAK,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC;QACjG,OAAO,CAAC,MAAM,EAAE,WAAW,MAAM,EAAE,EAAE,SAAS,UAAU,EAAE,CAAC,CAAC;IAC9D,CAAC;IAED,yCAAyC;IACzC,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC;IACpD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAEzE,sFAAsF;IACtF,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,KAAK,aAAa,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,UAAU,CAAC,EAAE,CAAC;QAC5F,mEAAmE;QACnE,MAAM,CAAC,KAAK,CAAC,iFAAiF,CAAC,CAAC;QAChG,OAAO,CAAC,aAAa,EAAE,mCAAmC,EAAE,2BAA2B,CAAC,CAAC;IAC3F,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
|