4runr-os 1.0.98 → 1.0.100
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/ui/v3/collectors/resources.d.ts +3 -3
- package/dist/ui/v3/collectors/resources.d.ts.map +1 -1
- package/dist/ui/v3/collectors/resources.js +13 -4
- package/dist/ui/v3/collectors/resources.js.map +1 -1
- package/dist/ui/v3/commands/router.js +3 -3
- package/dist/ui/v3/commands/router.js.map +1 -1
- package/dist/ui/v3/state/assertUiState.d.ts +27 -0
- package/dist/ui/v3/state/assertUiState.d.ts.map +1 -0
- package/dist/ui/v3/state/assertUiState.js +85 -0
- package/dist/ui/v3/state/assertUiState.js.map +1 -0
- package/dist/ui/v3/state/defaultState.d.ts +9 -2
- package/dist/ui/v3/state/defaultState.d.ts.map +1 -1
- package/dist/ui/v3/state/defaultState.js +15 -3
- package/dist/ui/v3/state/defaultState.js.map +1 -1
- package/dist/ui/v3/state/uiState.d.ts +13 -3
- package/dist/ui/v3/state/uiState.d.ts.map +1 -1
- package/dist/ui/v3/state/uiState.js +6 -1
- package/dist/ui/v3/state/uiState.js.map +1 -1
- package/dist/ui/v3/state/uiStateBuilder.d.ts +6 -1
- package/dist/ui/v3/state/uiStateBuilder.d.ts.map +1 -1
- package/dist/ui/v3/state/uiStateBuilder.js +18 -3
- package/dist/ui/v3/state/uiStateBuilder.js.map +1 -1
- package/dist/ui/v3/state/uiStateTypes.d.ts +52 -0
- package/dist/ui/v3/state/uiStateTypes.d.ts.map +1 -0
- package/dist/ui/v3/state/uiStateTypes.js +8 -0
- package/dist/ui/v3/state/uiStateTypes.js.map +1 -0
- package/dist/ui/v3/state/value.d.ts +40 -12
- package/dist/ui/v3/state/value.d.ts.map +1 -1
- package/dist/ui/v3/state/value.js +39 -6
- package/dist/ui/v3/state/value.js.map +1 -1
- package/dist/ui/v3/ui/panels/AssetsPanel.d.ts +16 -0
- package/dist/ui/v3/ui/panels/AssetsPanel.d.ts.map +1 -0
- package/dist/ui/v3/ui/panels/AssetsPanel.js +29 -0
- package/dist/ui/v3/ui/panels/AssetsPanel.js.map +1 -0
- package/dist/ui/v3/ui/panels/CapabilitiesPanel.d.ts +16 -0
- package/dist/ui/v3/ui/panels/CapabilitiesPanel.d.ts.map +1 -0
- package/dist/ui/v3/ui/panels/CapabilitiesPanel.js +27 -0
- package/dist/ui/v3/ui/panels/CapabilitiesPanel.js.map +1 -0
- package/dist/ui/v3/ui/panels/NetworkPanel.d.ts +16 -0
- package/dist/ui/v3/ui/panels/NetworkPanel.d.ts.map +1 -0
- package/dist/ui/v3/ui/panels/NetworkPanel.js +24 -0
- package/dist/ui/v3/ui/panels/NetworkPanel.js.map +1 -0
- package/dist/ui/v3/ui/panels/PosturePanel.d.ts +16 -0
- package/dist/ui/v3/ui/panels/PosturePanel.d.ts.map +1 -0
- package/dist/ui/v3/ui/panels/PosturePanel.js +24 -0
- package/dist/ui/v3/ui/panels/PosturePanel.js.map +1 -0
- package/dist/ui/v3/ui/panels/ResourcesPanel.d.ts +6 -3
- package/dist/ui/v3/ui/panels/ResourcesPanel.d.ts.map +1 -1
- package/dist/ui/v3/ui/panels/ResourcesPanel.js +25 -29
- 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 +163 -18
- package/dist/ui/v3/ui/phase1Runtime.js.map +1 -1
- package/dist/ui/v3/v1Adapters/__tests__/smoke.test.d.ts +16 -0
- package/dist/ui/v3/v1Adapters/__tests__/smoke.test.d.ts.map +1 -0
- package/dist/ui/v3/v1Adapters/__tests__/smoke.test.js +141 -0
- package/dist/ui/v3/v1Adapters/__tests__/smoke.test.js.map +1 -0
- package/dist/ui/v3/v1Adapters/agents.d.ts +52 -0
- package/dist/ui/v3/v1Adapters/agents.d.ts.map +1 -0
- package/dist/ui/v3/v1Adapters/agents.js +134 -0
- package/dist/ui/v3/v1Adapters/agents.js.map +1 -0
- package/dist/ui/v3/v1Adapters/config.d.ts +62 -0
- package/dist/ui/v3/v1Adapters/config.d.ts.map +1 -0
- package/dist/ui/v3/v1Adapters/config.js +79 -0
- package/dist/ui/v3/v1Adapters/config.js.map +1 -0
- package/dist/ui/v3/v1Adapters/connect.d.ts +49 -0
- package/dist/ui/v3/v1Adapters/connect.d.ts.map +1 -0
- package/dist/ui/v3/v1Adapters/connect.js +118 -0
- package/dist/ui/v3/v1Adapters/connect.js.map +1 -0
- package/dist/ui/v3/v1Adapters/runs.d.ts +38 -0
- package/dist/ui/v3/v1Adapters/runs.d.ts.map +1 -0
- package/dist/ui/v3/v1Adapters/runs.js +93 -0
- package/dist/ui/v3/v1Adapters/runs.js.map +1 -0
- package/package.json +1 -1
|
@@ -13,11 +13,11 @@
|
|
|
13
13
|
* - Uses Node APIs/libs only (no shell commands)
|
|
14
14
|
*/
|
|
15
15
|
import type { Value } from '../state/value.js';
|
|
16
|
-
import type {
|
|
16
|
+
import type { ResourcesState } from '../state/uiStateTypes.js';
|
|
17
17
|
/**
|
|
18
18
|
* Collect system resources
|
|
19
19
|
*
|
|
20
|
-
* Returns Value<
|
|
20
|
+
* Returns Value<ResourcesState> - either AVAILABLE with data or UNAVAILABLE with reason
|
|
21
21
|
*/
|
|
22
|
-
export declare function collectResources(): Promise<Value<
|
|
22
|
+
export declare function collectResources(): Promise<Value<ResourcesState>>;
|
|
23
23
|
//# sourceMappingURL=resources.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resources.d.ts","sourceRoot":"","sources":["../../../../src/ui/v3/collectors/resources.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAIH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE/C,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"resources.d.ts","sourceRoot":"","sources":["../../../../src/ui/v3/collectors/resources.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAIH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE/C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAc/D;;;;GAIG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CA0HvE"}
|
|
@@ -16,10 +16,19 @@ import si from 'systeminformation';
|
|
|
16
16
|
import os from 'os';
|
|
17
17
|
import { available, unavailable } from '../state/value.js';
|
|
18
18
|
const COLLECTOR_TIMEOUT = 1500; // ms
|
|
19
|
+
/**
|
|
20
|
+
* Format uptime seconds to HH:MM:SS string
|
|
21
|
+
*/
|
|
22
|
+
function formatUptime(seconds) {
|
|
23
|
+
const hours = Math.floor(seconds / 3600);
|
|
24
|
+
const minutes = Math.floor((seconds % 3600) / 60);
|
|
25
|
+
const secs = Math.floor(seconds % 60);
|
|
26
|
+
return `${hours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}:${secs.toString().padStart(2, '0')}`;
|
|
27
|
+
}
|
|
19
28
|
/**
|
|
20
29
|
* Collect system resources
|
|
21
30
|
*
|
|
22
|
-
* Returns Value<
|
|
31
|
+
* Returns Value<ResourcesState> - either AVAILABLE with data or UNAVAILABLE with reason
|
|
23
32
|
*/
|
|
24
33
|
export async function collectResources() {
|
|
25
34
|
// Wrap in timeout
|
|
@@ -96,14 +105,14 @@ export async function collectResources() {
|
|
|
96
105
|
return unavailable('Uptime unavailable', 'Ensure Node.js os module is functional');
|
|
97
106
|
}
|
|
98
107
|
// All metrics collected successfully
|
|
108
|
+
// Format uptime as HH:MM:SS string
|
|
99
109
|
const data = {
|
|
100
|
-
cpuPercent,
|
|
101
|
-
load1,
|
|
110
|
+
cpuPct: cpuPercent,
|
|
102
111
|
ramUsedMB,
|
|
103
112
|
ramTotalMB,
|
|
104
113
|
diskUsedGB,
|
|
105
114
|
diskTotalGB,
|
|
106
|
-
uptimeSeconds,
|
|
115
|
+
uptime: formatUptime(uptimeSeconds),
|
|
107
116
|
};
|
|
108
117
|
return available(data);
|
|
109
118
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resources.js","sourceRoot":"","sources":["../../../../src/ui/v3/collectors/resources.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACnC,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAG3D,MAAM,iBAAiB,GAAG,IAAI,CAAC,CAAC,KAAK;AAErC;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB;IACpC,kBAAkB;IAClB,MAAM,cAAc,GAAG,IAAI,OAAO,
|
|
1
|
+
{"version":3,"file":"resources.js","sourceRoot":"","sources":["../../../../src/ui/v3/collectors/resources.ts"],"names":[],"mappings":"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"}
|
|
@@ -75,11 +75,11 @@ function handleStatus() {
|
|
|
75
75
|
eventBus.emitTag('SYS', '=== UI STATE SUMMARY ===');
|
|
76
76
|
// Resources status
|
|
77
77
|
if (isAvailable(state.resources)) {
|
|
78
|
-
const r = state.resources.
|
|
79
|
-
eventBus.emitTag('SYS', `RESOURCES: CPU ${r.
|
|
78
|
+
const r = state.resources.value;
|
|
79
|
+
eventBus.emitTag('SYS', `RESOURCES: CPU ${r.cpuPct.toFixed(1)}% | RAM ${r.ramUsedMB}/${r.ramTotalMB}MB | Disk ${r.diskUsedGB}/${r.diskTotalGB}GB`);
|
|
80
80
|
}
|
|
81
81
|
else {
|
|
82
|
-
eventBus.emitTag('SYS', `RESOURCES: ${state.resources.
|
|
82
|
+
eventBus.emitTag('SYS', `RESOURCES: ${state.resources.availability} - ${state.resources.reason || 'Unknown'}`);
|
|
83
83
|
}
|
|
84
84
|
eventBus.emitTag('SYS', '=== END STATE SUMMARY ===');
|
|
85
85
|
return noOpResult();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router.js","sourceRoot":"","sources":["../../../../src/ui/v3/commands/router.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,GAAW,EAAE,IAAc;IACtD,MAAM,OAAO,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC;IAEzC,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,MAAM;YACT,OAAO,UAAU,EAAE,CAAC;QAEtB,KAAK,OAAO;YACV,OAAO,WAAW,EAAE,CAAC;QAEvB,KAAK,MAAM,CAAC;QACZ,KAAK,MAAM;YACT,OAAO,UAAU,EAAE,CAAC;QAEtB,KAAK,MAAM;YACT,OAAO,UAAU,EAAE,CAAC;QAEtB,KAAK,QAAQ;YACX,OAAO,YAAY,EAAE,CAAC;QAExB,KAAK,UAAU;YACb,OAAO,cAAc,CAAC,IAAI,CAAC,CAAC;QAE9B;YACE,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAS,UAAU;IACjB,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,qDAAqD,CAAC,CAAC;IAC/E,OAAO,UAAU,EAAE,CAAC;AACtB,CAAC;AAED;;;GAGG;AACH,SAAS,WAAW;IAClB,SAAS,CAAC,KAAK,EAAE,CAAC;IAClB,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;IACxC,OAAO,UAAU,EAAE,CAAC;AACtB,CAAC;AAED;;GAEG;AACH,SAAS,UAAU;IACjB,OAAO,UAAU,EAAE,CAAC;AACtB,CAAC;AAED;;;GAGG;AACH,SAAS,UAAU;IACjB,6CAA6C;IAC7C,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,kBAAkB,CAAC,CAAC;IAC5C,OAAO,UAAU,EAAE,CAAC;AACtB,CAAC;AAED;;;GAGG;AACH,SAAS,YAAY;IACnB,MAAM,KAAK,GAAG,YAAY,EAAE,CAAC;IAE7B,sBAAsB;IACtB,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,0BAA0B,CAAC,CAAC;IAEpD,mBAAmB;IACnB,IAAI,WAAW,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;QACjC,MAAM,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,
|
|
1
|
+
{"version":3,"file":"router.js","sourceRoot":"","sources":["../../../../src/ui/v3/commands/router.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Section 4: UiState Validation (Runtime Contract)
|
|
3
|
+
*
|
|
4
|
+
* Catches illegal state mutations at runtime.
|
|
5
|
+
* Provides immediate, deterministic failure (no silent broken UI).
|
|
6
|
+
*
|
|
7
|
+
* Validation rules:
|
|
8
|
+
* - State must be an object
|
|
9
|
+
* - Must include all keys exactly
|
|
10
|
+
* - For each key:
|
|
11
|
+
* - Must have availability in allowed set
|
|
12
|
+
* - If AVAILABLE → must have value
|
|
13
|
+
* - If UNAVAILABLE/UNKNOWN → must not have value
|
|
14
|
+
*/
|
|
15
|
+
import type { UiState } from './uiState.js';
|
|
16
|
+
/**
|
|
17
|
+
* Assert that state is a valid UiState
|
|
18
|
+
*
|
|
19
|
+
* Throws concise errors like:
|
|
20
|
+
* - UISTATE_INVALID: assets missing
|
|
21
|
+
* - UISTATE_INVALID: resources AVAILABLE missing value
|
|
22
|
+
*
|
|
23
|
+
* No stack dumps into the Operations Feed (this is internal).
|
|
24
|
+
* If you surface it, wrap it as a single [ERR] event with capped details.
|
|
25
|
+
*/
|
|
26
|
+
export declare function assertUiState(state: any): asserts state is UiState;
|
|
27
|
+
//# sourceMappingURL=assertUiState.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assertUiState.d.ts","sourceRoot":"","sources":["../../../../src/ui/v3/state/assertUiState.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAgD5C;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,KAAK,IAAI,OAAO,CAuBlE"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Section 4: UiState Validation (Runtime Contract)
|
|
3
|
+
*
|
|
4
|
+
* Catches illegal state mutations at runtime.
|
|
5
|
+
* Provides immediate, deterministic failure (no silent broken UI).
|
|
6
|
+
*
|
|
7
|
+
* Validation rules:
|
|
8
|
+
* - State must be an object
|
|
9
|
+
* - Must include all keys exactly
|
|
10
|
+
* - For each key:
|
|
11
|
+
* - Must have availability in allowed set
|
|
12
|
+
* - If AVAILABLE → must have value
|
|
13
|
+
* - If UNAVAILABLE/UNKNOWN → must not have value
|
|
14
|
+
*/
|
|
15
|
+
const REQUIRED_KEYS = [
|
|
16
|
+
'posture',
|
|
17
|
+
'resources',
|
|
18
|
+
'assets',
|
|
19
|
+
'network',
|
|
20
|
+
'capabilities',
|
|
21
|
+
'statusStrip',
|
|
22
|
+
];
|
|
23
|
+
const VALID_AVAILABILITY = ["AVAILABLE", "UNAVAILABLE", "UNKNOWN"];
|
|
24
|
+
/**
|
|
25
|
+
* Assert that a value has valid structure
|
|
26
|
+
*/
|
|
27
|
+
function assertValue(key, value) {
|
|
28
|
+
if (!value || typeof value !== 'object') {
|
|
29
|
+
throw new Error(`UISTATE_INVALID: ${key} is not an object`);
|
|
30
|
+
}
|
|
31
|
+
if (!('availability' in value)) {
|
|
32
|
+
throw new Error(`UISTATE_INVALID: ${key} missing availability`);
|
|
33
|
+
}
|
|
34
|
+
const availability = value.availability;
|
|
35
|
+
if (!VALID_AVAILABILITY.includes(availability)) {
|
|
36
|
+
throw new Error(`UISTATE_INVALID: ${key} has invalid availability: ${availability}`);
|
|
37
|
+
}
|
|
38
|
+
if (availability === "AVAILABLE") {
|
|
39
|
+
if (!('value' in value)) {
|
|
40
|
+
throw new Error(`UISTATE_INVALID: ${key} AVAILABLE missing value`);
|
|
41
|
+
}
|
|
42
|
+
// AVAILABLE must not have reason/nextAction (they're for UNAVAILABLE/UNKNOWN)
|
|
43
|
+
if ('reason' in value || 'nextAction' in value) {
|
|
44
|
+
throw new Error(`UISTATE_INVALID: ${key} AVAILABLE should not have reason/nextAction`);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
// UNAVAILABLE or UNKNOWN must not have value
|
|
49
|
+
if ('value' in value) {
|
|
50
|
+
throw new Error(`UISTATE_INVALID: ${key} ${availability} should not have value`);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Assert that state is a valid UiState
|
|
56
|
+
*
|
|
57
|
+
* Throws concise errors like:
|
|
58
|
+
* - UISTATE_INVALID: assets missing
|
|
59
|
+
* - UISTATE_INVALID: resources AVAILABLE missing value
|
|
60
|
+
*
|
|
61
|
+
* No stack dumps into the Operations Feed (this is internal).
|
|
62
|
+
* If you surface it, wrap it as a single [ERR] event with capped details.
|
|
63
|
+
*/
|
|
64
|
+
export function assertUiState(state) {
|
|
65
|
+
if (!state || typeof state !== 'object') {
|
|
66
|
+
throw new Error('UISTATE_INVALID: state is not an object');
|
|
67
|
+
}
|
|
68
|
+
// Check all required keys are present
|
|
69
|
+
for (const key of REQUIRED_KEYS) {
|
|
70
|
+
if (!(key in state)) {
|
|
71
|
+
throw new Error(`UISTATE_INVALID: ${key} missing`);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
// Check no extra keys (strict contract)
|
|
75
|
+
const stateKeys = Object.keys(state);
|
|
76
|
+
const extraKeys = stateKeys.filter(k => !REQUIRED_KEYS.includes(k));
|
|
77
|
+
if (extraKeys.length > 0) {
|
|
78
|
+
throw new Error(`UISTATE_INVALID: extra keys found: ${extraKeys.join(', ')}`);
|
|
79
|
+
}
|
|
80
|
+
// Validate each key's value structure
|
|
81
|
+
for (const key of REQUIRED_KEYS) {
|
|
82
|
+
assertValue(key, state[key]);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=assertUiState.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assertUiState.js","sourceRoot":"","sources":["../../../../src/ui/v3/state/assertUiState.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAMH,MAAM,aAAa,GAAsB;IACvC,SAAS;IACT,WAAW;IACX,QAAQ;IACR,SAAS;IACT,cAAc;IACd,aAAa;CACd,CAAC;AAEF,MAAM,kBAAkB,GAAmB,CAAC,WAAW,EAAE,aAAa,EAAE,SAAS,CAAC,CAAC;AAEnF;;GAEG;AACH,SAAS,WAAW,CAAI,GAAW,EAAE,KAAU;IAC7C,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,oBAAoB,GAAG,mBAAmB,CAAC,CAAC;IAC9D,CAAC;IAED,IAAI,CAAC,CAAC,cAAc,IAAI,KAAK,CAAC,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CAAC,oBAAoB,GAAG,uBAAuB,CAAC,CAAC;IAClE,CAAC;IAED,MAAM,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;IACxC,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;QAC/C,MAAM,IAAI,KAAK,CAAC,oBAAoB,GAAG,8BAA8B,YAAY,EAAE,CAAC,CAAC;IACvF,CAAC;IAED,IAAI,YAAY,KAAK,WAAW,EAAE,CAAC;QACjC,IAAI,CAAC,CAAC,OAAO,IAAI,KAAK,CAAC,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,oBAAoB,GAAG,0BAA0B,CAAC,CAAC;QACrE,CAAC;QACD,8EAA8E;QAC9E,IAAI,QAAQ,IAAI,KAAK,IAAI,YAAY,IAAI,KAAK,EAAE,CAAC;YAC/C,MAAM,IAAI,KAAK,CAAC,oBAAoB,GAAG,8CAA8C,CAAC,CAAC;QACzF,CAAC;IACH,CAAC;SAAM,CAAC;QACN,6CAA6C;QAC7C,IAAI,OAAO,IAAI,KAAK,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,oBAAoB,GAAG,IAAI,YAAY,wBAAwB,CAAC,CAAC;QACnF,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,aAAa,CAAC,KAAU;IACtC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAC7D,CAAC;IAED,sCAAsC;IACtC,KAAK,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;QAChC,IAAI,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,oBAAoB,GAAG,UAAU,CAAC,CAAC;QACrD,CAAC;IACH,CAAC;IAED,wCAAwC;IACxC,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrC,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAkB,CAAC,CAAC,CAAC;IACrF,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,sCAAsC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChF,CAAC;IAED,sCAAsC;IACtC,KAAK,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;QAChC,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/B,CAAC;AACH,CAAC"}
|
|
@@ -1,8 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Default UiState (
|
|
2
|
+
* Section 4: Default UiState (Cold Boot State)
|
|
3
3
|
*
|
|
4
4
|
* Initial state before collectors run.
|
|
5
|
-
* All fields start as UNAVAILABLE
|
|
5
|
+
* All fields start as UNAVAILABLE with:
|
|
6
|
+
* - reason stating why
|
|
7
|
+
* - nextAction telling operator what to do next
|
|
8
|
+
*
|
|
9
|
+
* Hard requirements:
|
|
10
|
+
* - No key may be AVAILABLE in the default state
|
|
11
|
+
* - No key may be missing
|
|
12
|
+
* - All panels must have meaningful reason + nextAction (do not leave empty)
|
|
6
13
|
*/
|
|
7
14
|
import type { UiState } from './uiState.js';
|
|
8
15
|
export declare const defaultUiState: UiState;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defaultState.d.ts","sourceRoot":"","sources":["../../../../src/ui/v3/state/defaultState.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"defaultState.d.ts","sourceRoot":"","sources":["../../../../src/ui/v3/state/defaultState.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAG5C,eAAO,MAAM,cAAc,EAAE,OAyB5B,CAAC"}
|
|
@@ -1,11 +1,23 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Default UiState (
|
|
2
|
+
* Section 4: Default UiState (Cold Boot State)
|
|
3
3
|
*
|
|
4
4
|
* Initial state before collectors run.
|
|
5
|
-
* All fields start as UNAVAILABLE
|
|
5
|
+
* All fields start as UNAVAILABLE with:
|
|
6
|
+
* - reason stating why
|
|
7
|
+
* - nextAction telling operator what to do next
|
|
8
|
+
*
|
|
9
|
+
* Hard requirements:
|
|
10
|
+
* - No key may be AVAILABLE in the default state
|
|
11
|
+
* - No key may be missing
|
|
12
|
+
* - All panels must have meaningful reason + nextAction (do not leave empty)
|
|
6
13
|
*/
|
|
7
14
|
import { unavailable } from './value.js';
|
|
8
15
|
export const defaultUiState = {
|
|
9
|
-
|
|
16
|
+
posture: unavailable('Posture not initialized', 'Run "status" to check system state'),
|
|
17
|
+
resources: unavailable('Resources not collected', 'Waiting for first collection cycle'),
|
|
18
|
+
assets: unavailable('Asset registry not initialized', 'Start agent registry'),
|
|
19
|
+
network: unavailable('Network state unknown', 'Run "connect" to initialize Gateway'),
|
|
20
|
+
capabilities: unavailable('Capabilities not loaded', 'Run "status" after connecting'),
|
|
21
|
+
statusStrip: unavailable('Status not initialized', 'System starting up'),
|
|
10
22
|
};
|
|
11
23
|
//# sourceMappingURL=defaultState.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defaultState.js","sourceRoot":"","sources":["../../../../src/ui/v3/state/defaultState.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"defaultState.js","sourceRoot":"","sources":["../../../../src/ui/v3/state/defaultState.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC,MAAM,CAAC,MAAM,cAAc,GAAY;IACrC,OAAO,EAAE,WAAW,CAClB,yBAAyB,EACzB,oCAAoC,CACrC;IACD,SAAS,EAAE,WAAW,CACpB,yBAAyB,EACzB,oCAAoC,CACrC;IACD,MAAM,EAAE,WAAW,CACjB,gCAAgC,EAChC,sBAAsB,CACvB;IACD,OAAO,EAAE,WAAW,CAClB,uBAAuB,EACvB,qCAAqC,CACtC;IACD,YAAY,EAAE,WAAW,CACvB,yBAAyB,EACzB,+BAA+B,CAChC;IACD,WAAW,EAAE,WAAW,CACtB,wBAAwB,EACxB,oBAAoB,CACrB;CACF,CAAC"}
|
|
@@ -1,12 +1,22 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* UiState
|
|
2
|
+
* Section 4: UiState Contract
|
|
3
3
|
*
|
|
4
4
|
* Single source of truth for UI state.
|
|
5
5
|
* All panels render from UiState only.
|
|
6
|
+
*
|
|
7
|
+
* Rule: UiState keys are locked. If a developer tries to add a key,
|
|
8
|
+
* it should require deliberate refactor (not accidental).
|
|
9
|
+
*
|
|
10
|
+
* All keys must use Value<T> with strict type T for that panel.
|
|
6
11
|
*/
|
|
7
12
|
import type { Value } from './value.js';
|
|
8
|
-
import type {
|
|
13
|
+
import type { PostureState, ResourcesState, AssetsState, NetworkState, CapabilitiesState, StatusStripState } from './uiStateTypes.js';
|
|
9
14
|
export interface UiState {
|
|
10
|
-
|
|
15
|
+
posture: Value<PostureState>;
|
|
16
|
+
resources: Value<ResourcesState>;
|
|
17
|
+
assets: Value<AssetsState>;
|
|
18
|
+
network: Value<NetworkState>;
|
|
19
|
+
capabilities: Value<CapabilitiesState>;
|
|
20
|
+
statusStrip: Value<StatusStripState>;
|
|
11
21
|
}
|
|
12
22
|
//# sourceMappingURL=uiState.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uiState.d.ts","sourceRoot":"","sources":["../../../../src/ui/v3/state/uiState.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"uiState.d.ts","sourceRoot":"","sources":["../../../../src/ui/v3/state/uiState.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,KAAK,EACV,YAAY,EACZ,cAAc,EACd,WAAW,EACX,YAAY,EACZ,iBAAiB,EACjB,gBAAgB,EACjB,MAAM,mBAAmB,CAAC;AAE3B,MAAM,WAAW,OAAO;IACtB,OAAO,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;IAC7B,SAAS,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC;IACjC,MAAM,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;IAC3B,OAAO,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;IAC7B,YAAY,EAAE,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACvC,WAAW,EAAE,KAAK,CAAC,gBAAgB,CAAC,CAAC;CACtC"}
|
|
@@ -1,8 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* UiState
|
|
2
|
+
* Section 4: UiState Contract
|
|
3
3
|
*
|
|
4
4
|
* Single source of truth for UI state.
|
|
5
5
|
* All panels render from UiState only.
|
|
6
|
+
*
|
|
7
|
+
* Rule: UiState keys are locked. If a developer tries to add a key,
|
|
8
|
+
* it should require deliberate refactor (not accidental).
|
|
9
|
+
*
|
|
10
|
+
* All keys must use Value<T> with strict type T for that panel.
|
|
6
11
|
*/
|
|
7
12
|
export {};
|
|
8
13
|
//# sourceMappingURL=uiState.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uiState.js","sourceRoot":"","sources":["../../../../src/ui/v3/state/uiState.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"uiState.js","sourceRoot":"","sources":["../../../../src/ui/v3/state/uiState.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG"}
|
|
@@ -1,12 +1,17 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* UiState Builder
|
|
2
|
+
* Section 4: UiState Builder
|
|
3
3
|
*
|
|
4
4
|
* Builds the complete UiState from collectors.
|
|
5
5
|
* This is the single source of truth for UI data.
|
|
6
|
+
*
|
|
7
|
+
* All panels must have data - no missing keys.
|
|
6
8
|
*/
|
|
7
9
|
import type { UiState } from './uiState.js';
|
|
8
10
|
/**
|
|
9
11
|
* Build the current UiState
|
|
12
|
+
*
|
|
13
|
+
* Section 4: Must include all required keys
|
|
14
|
+
* All keys must use Value<T> structure
|
|
10
15
|
*/
|
|
11
16
|
export declare function buildUiState(): Promise<UiState>;
|
|
12
17
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uiStateBuilder.d.ts","sourceRoot":"","sources":["../../../../src/ui/v3/state/uiStateBuilder.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"uiStateBuilder.d.ts","sourceRoot":"","sources":["../../../../src/ui/v3/state/uiStateBuilder.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAe5C;;;;;GAKG;AACH,wBAAsB,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC,CAoBrD;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,OAAO,CAEtC"}
|
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* UiState Builder
|
|
2
|
+
* Section 4: UiState Builder
|
|
3
3
|
*
|
|
4
4
|
* Builds the complete UiState from collectors.
|
|
5
5
|
* This is the single source of truth for UI data.
|
|
6
|
+
*
|
|
7
|
+
* All panels must have data - no missing keys.
|
|
6
8
|
*/
|
|
7
9
|
import { defaultUiState } from './defaultState.js';
|
|
10
|
+
import { assertUiState } from './assertUiState.js';
|
|
8
11
|
import { collectResources } from '../collectors/resources.js';
|
|
12
|
+
import { unavailable } from './value.js';
|
|
9
13
|
/**
|
|
10
14
|
* Build UiState from collectors
|
|
11
15
|
*
|
|
@@ -15,14 +19,25 @@ const COLLECTOR_INTERVAL = 1500; // ms
|
|
|
15
19
|
let lastState = defaultUiState;
|
|
16
20
|
/**
|
|
17
21
|
* Build the current UiState
|
|
22
|
+
*
|
|
23
|
+
* Section 4: Must include all required keys
|
|
24
|
+
* All keys must use Value<T> structure
|
|
18
25
|
*/
|
|
19
26
|
export async function buildUiState() {
|
|
20
|
-
// Collect resources
|
|
27
|
+
// Collect resources (only one collector for now)
|
|
21
28
|
const resources = await collectResources();
|
|
22
|
-
// Build state
|
|
29
|
+
// Build state with all required keys
|
|
30
|
+
// For now, most panels are UNAVAILABLE (will be populated by collectors in future)
|
|
23
31
|
const state = {
|
|
32
|
+
posture: unavailable('Posture not initialized', 'Run "status" to check system state'),
|
|
24
33
|
resources,
|
|
34
|
+
assets: unavailable('Asset registry not initialized', 'Start agent registry'),
|
|
35
|
+
network: unavailable('Network state unknown', 'Run "connect" to initialize Gateway'),
|
|
36
|
+
capabilities: unavailable('Capabilities not loaded', 'Run "status" after connecting'),
|
|
37
|
+
statusStrip: unavailable('Status not initialized', 'System starting up'),
|
|
25
38
|
};
|
|
39
|
+
// Section 4: Validate state contract at runtime
|
|
40
|
+
assertUiState(state);
|
|
26
41
|
lastState = state;
|
|
27
42
|
return state;
|
|
28
43
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uiStateBuilder.js","sourceRoot":"","sources":["../../../../src/ui/v3/state/uiStateBuilder.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"uiStateBuilder.js","sourceRoot":"","sources":["../../../../src/ui/v3/state/uiStateBuilder.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC;;;;GAIG;AACH,MAAM,kBAAkB,GAAG,IAAI,CAAC,CAAC,KAAK;AAEtC,IAAI,SAAS,GAAY,cAAc,CAAC;AAExC;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY;IAChC,iDAAiD;IACjD,MAAM,SAAS,GAAG,MAAM,gBAAgB,EAAE,CAAC;IAE3C,qCAAqC;IACrC,mFAAmF;IACnF,MAAM,KAAK,GAAY;QACrB,OAAO,EAAE,WAAW,CAAC,yBAAyB,EAAE,oCAAoC,CAAC;QACrF,SAAS;QACT,MAAM,EAAE,WAAW,CAAC,gCAAgC,EAAE,sBAAsB,CAAC;QAC7E,OAAO,EAAE,WAAW,CAAC,uBAAuB,EAAE,qCAAqC,CAAC;QACpF,YAAY,EAAE,WAAW,CAAC,yBAAyB,EAAE,+BAA+B,CAAC;QACrF,WAAW,EAAE,WAAW,CAAC,wBAAwB,EAAE,oBAAoB,CAAC;KACzE,CAAC;IAEF,gDAAgD;IAChD,aAAa,CAAC,KAAK,CAAC,CAAC;IAErB,SAAS,GAAG,KAAK,CAAC;IAClB,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY;IAC1B,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Section 4: UiState Type Definitions
|
|
3
|
+
*
|
|
4
|
+
* Strict type definitions for each panel's data.
|
|
5
|
+
* These are the T in Value<T> for each panel.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Posture state (minimal for now)
|
|
9
|
+
*/
|
|
10
|
+
export type PostureState = {
|
|
11
|
+
mode: "HUB" | "UNKNOWN";
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* Resources state (system metrics)
|
|
15
|
+
*/
|
|
16
|
+
export type ResourcesState = {
|
|
17
|
+
cpuPct: number;
|
|
18
|
+
ramUsedMB: number;
|
|
19
|
+
ramTotalMB: number;
|
|
20
|
+
diskUsedGB: number;
|
|
21
|
+
diskTotalGB: number;
|
|
22
|
+
uptime: string;
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* Assets state
|
|
26
|
+
*/
|
|
27
|
+
export type AssetsState = {
|
|
28
|
+
total: number;
|
|
29
|
+
active: number;
|
|
30
|
+
idle: number;
|
|
31
|
+
error: number;
|
|
32
|
+
};
|
|
33
|
+
/**
|
|
34
|
+
* Network state
|
|
35
|
+
*/
|
|
36
|
+
export type NetworkState = {
|
|
37
|
+
gateway: "CONNECTED" | "DISCONNECTED";
|
|
38
|
+
};
|
|
39
|
+
/**
|
|
40
|
+
* Capabilities state
|
|
41
|
+
*/
|
|
42
|
+
export type CapabilitiesState = {
|
|
43
|
+
items: string[];
|
|
44
|
+
};
|
|
45
|
+
/**
|
|
46
|
+
* Status strip state
|
|
47
|
+
*/
|
|
48
|
+
export type StatusStripState = {
|
|
49
|
+
left: string;
|
|
50
|
+
right: string;
|
|
51
|
+
};
|
|
52
|
+
//# sourceMappingURL=uiStateTypes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uiStateTypes.d.ts","sourceRoot":"","sources":["../../../../src/ui/v3/state/uiStateTypes.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,KAAK,GAAG,SAAS,CAAC;CACzB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB,OAAO,EAAE,WAAW,GAAG,cAAc,CAAC;CACvC,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uiStateTypes.js","sourceRoot":"","sources":["../../../../src/ui/v3/state/uiStateTypes.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
|
|
@@ -1,39 +1,67 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Value Protocol
|
|
2
|
+
* Section 4: Value Protocol
|
|
3
3
|
*
|
|
4
4
|
* Explicit availability semantics for data.
|
|
5
5
|
* Prevents fake values and blank panels.
|
|
6
|
+
*
|
|
7
|
+
* Hard rules:
|
|
8
|
+
* - AVAILABLE must include value
|
|
9
|
+
* - UNAVAILABLE/UNKNOWN must not include value
|
|
10
|
+
* - No other fields
|
|
6
11
|
*/
|
|
7
|
-
export type
|
|
12
|
+
export type Availability = "AVAILABLE" | "UNAVAILABLE" | "UNKNOWN";
|
|
8
13
|
export type Value<T> = {
|
|
9
|
-
|
|
10
|
-
|
|
14
|
+
availability: "AVAILABLE";
|
|
15
|
+
value: T;
|
|
16
|
+
} | {
|
|
17
|
+
availability: "UNAVAILABLE";
|
|
18
|
+
reason?: string;
|
|
19
|
+
nextAction?: string;
|
|
11
20
|
} | {
|
|
12
|
-
|
|
13
|
-
reason
|
|
21
|
+
availability: "UNKNOWN";
|
|
22
|
+
reason?: string;
|
|
14
23
|
nextAction?: string;
|
|
15
24
|
};
|
|
16
25
|
/**
|
|
17
26
|
* Create an AVAILABLE value
|
|
18
27
|
*/
|
|
19
|
-
export declare function available<T>(
|
|
28
|
+
export declare function available<T>(value: T): Value<T>;
|
|
20
29
|
/**
|
|
21
30
|
* Create an UNAVAILABLE value
|
|
22
31
|
*/
|
|
23
|
-
export declare function unavailable<T>(reason
|
|
32
|
+
export declare function unavailable<T>(reason?: string, nextAction?: string): Value<T>;
|
|
33
|
+
/**
|
|
34
|
+
* Create an UNKNOWN value
|
|
35
|
+
*/
|
|
36
|
+
export declare function unknown<T>(reason?: string, nextAction?: string): Value<T>;
|
|
24
37
|
/**
|
|
25
38
|
* Type guard: check if value is AVAILABLE
|
|
26
39
|
*/
|
|
27
40
|
export declare function isAvailable<T>(value: Value<T>): value is {
|
|
28
|
-
|
|
29
|
-
|
|
41
|
+
availability: "AVAILABLE";
|
|
42
|
+
value: T;
|
|
30
43
|
};
|
|
31
44
|
/**
|
|
32
45
|
* Type guard: check if value is UNAVAILABLE
|
|
33
46
|
*/
|
|
34
47
|
export declare function isUnavailable<T>(value: Value<T>): value is {
|
|
35
|
-
|
|
36
|
-
reason
|
|
48
|
+
availability: "UNAVAILABLE";
|
|
49
|
+
reason?: string;
|
|
50
|
+
nextAction?: string;
|
|
51
|
+
};
|
|
52
|
+
/**
|
|
53
|
+
* Type guard: check if value is UNKNOWN
|
|
54
|
+
*/
|
|
55
|
+
export declare function isUnknown<T>(value: Value<T>): value is {
|
|
56
|
+
availability: "UNKNOWN";
|
|
57
|
+
reason?: string;
|
|
37
58
|
nextAction?: string;
|
|
38
59
|
};
|
|
60
|
+
/**
|
|
61
|
+
* Section 4: Shared helper to render Value<T>
|
|
62
|
+
*
|
|
63
|
+
* Handles AVAILABLE, UNAVAILABLE, and UNKNOWN states consistently
|
|
64
|
+
* Never renders empty string - always shows meaningful content
|
|
65
|
+
*/
|
|
66
|
+
export declare function renderValue<T>(v: Value<T>, renderAvailable: (t: T) => string): string;
|
|
39
67
|
//# sourceMappingURL=value.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"value.d.ts","sourceRoot":"","sources":["../../../../src/ui/v3/state/value.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"value.d.ts","sourceRoot":"","sources":["../../../../src/ui/v3/state/value.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,MAAM,MAAM,YAAY,GAAG,WAAW,GAAG,aAAa,GAAG,SAAS,CAAC;AAEnE,MAAM,MAAM,KAAK,CAAC,CAAC,IACf;IAAE,YAAY,EAAE,WAAW,CAAC;IAAC,KAAK,EAAE,CAAC,CAAA;CAAE,GACvC;IAAE,YAAY,EAAE,aAAa,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,GACrE;IAAE,YAAY,EAAE,SAAS,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAEtE;;GAEG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAE/C;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAE7E;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAEzE;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI;IAAE,YAAY,EAAE,WAAW,CAAC;IAAC,KAAK,EAAE,CAAC,CAAA;CAAE,CAEhG;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI;IAAE,YAAY,EAAE,aAAa,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,CAEhI;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI;IAAE,YAAY,EAAE,SAAS,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,CAExH;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAC3B,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EACX,eAAe,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,MAAM,GAChC,MAAM,CAWR"}
|