4runr-os 1.0.23 → 1.0.36
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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/events.d.ts +35 -0
- package/dist/events.d.ts.map +1 -0
- package/dist/events.js +89 -0
- package/dist/events.js.map +1 -0
- package/dist/index.js +301 -36
- package/dist/index.js.map +1 -1
- package/dist/models.d.ts +74 -0
- package/dist/models.d.ts.map +1 -0
- package/dist/models.js +7 -0
- package/dist/models.js.map +1 -0
- 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/store.d.ts +3 -1
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +2 -0
- package/dist/store.js.map +1 -1
- package/dist/system-state.d.ts +96 -0
- package/dist/system-state.d.ts.map +1 -0
- package/dist/system-state.js +273 -0
- package/dist/system-state.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/intelligence-posture-view.d.ts +22 -0
- package/dist/ui/intelligence-posture-view.d.ts.map +1 -0
- package/dist/ui/intelligence-posture-view.js +169 -0
- package/dist/ui/intelligence-posture-view.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/dist/ui-primitives.d.ts +5 -2
- package/dist/ui-primitives.d.ts.map +1 -1
- package/dist/ui-primitives.js +22 -9
- package/dist/ui-primitives.js.map +1 -1
- 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,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"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Mini Map Widget
|
|
3
|
+
* Phase 5: ASCII world map with operator/gateway/database positions
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* World bounding box for projection
|
|
7
|
+
*/
|
|
8
|
+
const WORLD_BBOX = {
|
|
9
|
+
latMin: -60,
|
|
10
|
+
latMax: 80,
|
|
11
|
+
lonMin: -180,
|
|
12
|
+
lonMax: 180,
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* Convert lat/lon to grid coordinates
|
|
16
|
+
*/
|
|
17
|
+
function latLonToGrid(lat, lon, width, height) {
|
|
18
|
+
// Clamp lat/lon to world bounds
|
|
19
|
+
const clampedLat = Math.max(WORLD_BBOX.latMin, Math.min(WORLD_BBOX.latMax, lat));
|
|
20
|
+
const clampedLon = Math.max(WORLD_BBOX.lonMin, Math.min(WORLD_BBOX.lonMax, lon));
|
|
21
|
+
// Convert to grid coordinates
|
|
22
|
+
// x: longitude -> [0, width-1]
|
|
23
|
+
const x = Math.floor(((clampedLon - WORLD_BBOX.lonMin) / (WORLD_BBOX.lonMax - WORLD_BBOX.lonMin)) * (width - 1));
|
|
24
|
+
// y: latitude -> [0, height-1] (inverted because top is north)
|
|
25
|
+
const y = Math.floor(((WORLD_BBOX.latMax - clampedLat) / (WORLD_BBOX.latMax - WORLD_BBOX.latMin)) * (height - 1));
|
|
26
|
+
// Clamp to grid bounds
|
|
27
|
+
return {
|
|
28
|
+
x: Math.max(0, Math.min(width - 1, x)),
|
|
29
|
+
y: Math.max(0, Math.min(height - 1, y)),
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Render mini map
|
|
34
|
+
* Returns array of strings, each exactly width characters
|
|
35
|
+
*/
|
|
36
|
+
export function renderMiniMap(input) {
|
|
37
|
+
const { width, height, origin, gateway, db } = input;
|
|
38
|
+
// Check if we have required coordinates
|
|
39
|
+
const hasOrigin = origin && origin !== "UNKNOWN" && typeof origin === 'object';
|
|
40
|
+
const hasGateway = gateway && gateway !== "UNKNOWN" && typeof gateway === 'object';
|
|
41
|
+
if (!hasOrigin || !hasGateway) {
|
|
42
|
+
// Return GEO UNAVAILABLE message
|
|
43
|
+
const lines = [];
|
|
44
|
+
lines.push('MINI-MAP: GEO UNAVAILABLE');
|
|
45
|
+
// Fill remaining lines
|
|
46
|
+
while (lines.length < height) {
|
|
47
|
+
lines.push(' '.repeat(width));
|
|
48
|
+
}
|
|
49
|
+
return lines.slice(0, height);
|
|
50
|
+
}
|
|
51
|
+
// Initialize grid with spaces
|
|
52
|
+
const grid = [];
|
|
53
|
+
for (let y = 0; y < height; y++) {
|
|
54
|
+
grid[y] = [];
|
|
55
|
+
for (let x = 0; x < width; x++) {
|
|
56
|
+
grid[y][x] = ' ';
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
// Place markers (precedence: G > O > D)
|
|
60
|
+
const markers = [];
|
|
61
|
+
// Gateway (highest precedence)
|
|
62
|
+
if (hasGateway) {
|
|
63
|
+
const pos = latLonToGrid(gateway.lat, gateway.lon, width, height);
|
|
64
|
+
markers.push({ pos, char: 'G' });
|
|
65
|
+
}
|
|
66
|
+
// Origin
|
|
67
|
+
if (hasOrigin) {
|
|
68
|
+
const pos = latLonToGrid(origin.lat, origin.lon, width, height);
|
|
69
|
+
markers.push({ pos, char: 'O' });
|
|
70
|
+
}
|
|
71
|
+
// Database (lowest precedence)
|
|
72
|
+
if (db && db !== "UNKNOWN" && typeof db === 'object') {
|
|
73
|
+
const pos = latLonToGrid(db.lat, db.lon, width, height);
|
|
74
|
+
markers.push({ pos, char: 'D' });
|
|
75
|
+
}
|
|
76
|
+
// Place markers (later markers overwrite earlier ones if collision)
|
|
77
|
+
markers.forEach(marker => {
|
|
78
|
+
grid[marker.pos.y][marker.pos.x] = marker.char;
|
|
79
|
+
});
|
|
80
|
+
// Convert grid to lines
|
|
81
|
+
const lines = grid.map(row => row.join(''));
|
|
82
|
+
// Ensure exactly height lines, each exactly width chars
|
|
83
|
+
while (lines.length < height) {
|
|
84
|
+
lines.push(' '.repeat(width));
|
|
85
|
+
}
|
|
86
|
+
return lines.slice(0, height).map(line => {
|
|
87
|
+
// Pad or truncate to exact width
|
|
88
|
+
if (line.length < width) {
|
|
89
|
+
return line + ' '.repeat(width - line.length);
|
|
90
|
+
}
|
|
91
|
+
return line.substring(0, width);
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=miniMap.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"miniMap.js","sourceRoot":"","sources":["../../../src/ui/widgets/miniMap.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sparkline Widget
|
|
3
|
+
* Phase 4: 1-line trend visualization
|
|
4
|
+
*/
|
|
5
|
+
export type SparklineInput = {
|
|
6
|
+
samples: Array<number | null>;
|
|
7
|
+
min?: number;
|
|
8
|
+
max?: number;
|
|
9
|
+
width: number;
|
|
10
|
+
unknownLabel?: string;
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* Render sparkline
|
|
14
|
+
* Returns a string of exactly `width` characters
|
|
15
|
+
*/
|
|
16
|
+
export declare function renderSparkline(input: SparklineInput): string;
|
|
17
|
+
//# sourceMappingURL=sparkline.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sparkline.d.ts","sourceRoot":"","sources":["../../../src/ui/widgets/sparkline.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,MAAM,cAAc,GAAG;IAC3B,OAAO,EAAE,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC9B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAOF;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,cAAc,GAAG,MAAM,CAoE7D"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sparkline Widget
|
|
3
|
+
* Phase 4: 1-line trend visualization
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Unicode sparkline characters (8 levels)
|
|
7
|
+
*/
|
|
8
|
+
const SPARKLINE_CHARS = '▁▂▃▄▅▆▇█';
|
|
9
|
+
/**
|
|
10
|
+
* Render sparkline
|
|
11
|
+
* Returns a string of exactly `width` characters
|
|
12
|
+
*/
|
|
13
|
+
export function renderSparkline(input) {
|
|
14
|
+
const { samples, min = 0, max = 100, width, unknownLabel = '—', } = input;
|
|
15
|
+
// If no samples or all null, return placeholder
|
|
16
|
+
if (samples.length === 0 || samples.every(s => s === null)) {
|
|
17
|
+
return unknownLabel.repeat(width);
|
|
18
|
+
}
|
|
19
|
+
// Filter out nulls and get valid samples
|
|
20
|
+
const validSamples = samples.filter((s) => s !== null);
|
|
21
|
+
if (validSamples.length === 0) {
|
|
22
|
+
return unknownLabel.repeat(width);
|
|
23
|
+
}
|
|
24
|
+
// Downsample or upsample to exactly width
|
|
25
|
+
const normalized = [];
|
|
26
|
+
const step = validSamples.length / width;
|
|
27
|
+
for (let i = 0; i < width; i++) {
|
|
28
|
+
const startIdx = Math.floor(i * step);
|
|
29
|
+
const endIdx = Math.floor((i + 1) * step);
|
|
30
|
+
// Average samples in this range
|
|
31
|
+
let sum = 0;
|
|
32
|
+
let count = 0;
|
|
33
|
+
for (let j = startIdx; j < endIdx && j < validSamples.length; j++) {
|
|
34
|
+
sum += validSamples[j];
|
|
35
|
+
count++;
|
|
36
|
+
}
|
|
37
|
+
if (count > 0) {
|
|
38
|
+
normalized.push(sum / count);
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
normalized.push(null); // Will be handled as gap
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
// Map to sparkline characters
|
|
45
|
+
const range = max - min;
|
|
46
|
+
const result = [];
|
|
47
|
+
for (const value of normalized) {
|
|
48
|
+
if (value === null || isNaN(value)) {
|
|
49
|
+
result.push(unknownLabel);
|
|
50
|
+
continue;
|
|
51
|
+
}
|
|
52
|
+
// Clamp to [min, max]
|
|
53
|
+
const clamped = Math.max(min, Math.min(max, value));
|
|
54
|
+
// Map to [0, 1]
|
|
55
|
+
const normalizedValue = range > 0 ? (clamped - min) / range : 0;
|
|
56
|
+
// Map to character index [0, 7]
|
|
57
|
+
const charIndex = Math.floor(normalizedValue * (SPARKLINE_CHARS.length - 1));
|
|
58
|
+
const char = SPARKLINE_CHARS[charIndex];
|
|
59
|
+
result.push(char);
|
|
60
|
+
}
|
|
61
|
+
return result.join('');
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=sparkline.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sparkline.js","sourceRoot":"","sources":["../../../src/ui/widgets/sparkline.ts"],"names":[],"mappings":"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"}
|
package/dist/ui-primitives.d.ts
CHANGED
|
@@ -4,7 +4,9 @@
|
|
|
4
4
|
*/
|
|
5
5
|
/**
|
|
6
6
|
* Header: consistent brand bar at top
|
|
7
|
+
* Phase 4: Authority, not decoration
|
|
7
8
|
* Format: 4Runr | AI AGENT OPERATING SYSTEM | vX.Y.Z | [MODE]
|
|
9
|
+
* Strong separator, not decorative box
|
|
8
10
|
*/
|
|
9
11
|
export declare function Header(version: string, mode?: 'LOCAL' | 'REMOTE'): string;
|
|
10
12
|
/**
|
|
@@ -19,8 +21,9 @@ export declare function StatusBar(params: {
|
|
|
19
21
|
lastAction?: string;
|
|
20
22
|
}): string;
|
|
21
23
|
/**
|
|
22
|
-
* Section: clean blocks with separators
|
|
23
|
-
*
|
|
24
|
+
* Section: clean blocks with strong separators
|
|
25
|
+
* Phase 4: Structural separators, not decorative
|
|
26
|
+
* Structure: Title (ALL CAPS) | Full-width separator | Lines (indented)
|
|
24
27
|
*/
|
|
25
28
|
export declare function Section(title: string, lines: string[]): string;
|
|
26
29
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui-primitives.d.ts","sourceRoot":"","sources":["../src/ui-primitives.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAkBH
|
|
1
|
+
{"version":3,"file":"ui-primitives.d.ts","sourceRoot":"","sources":["../src/ui-primitives.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAkBH;;;;;GAKG;AACH,wBAAgB,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,MAAM,CAUzE;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE;IAChC,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,SAAS,CAAC;IACrC,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,GAAG,MAAM,CAYT;AAED;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAe9D;AAED;;;GAGG;AACH,wBAAgB,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,GAAE,MAAW,GAAG,MAAM,CAuCvF;AAED;;;GAGG;AACH,wBAAgB,KAAK,CACnB,IAAI,EAAE,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,EAC3C,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,MAAM,EAChB,WAAW,CAAC,EAAE,MAAM,GACnB,MAAM,CAcR;AASD,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,GAAE,SAAS,GAAG,MAAe,GAAG;IAC1E,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;CACpD,CAmCA;AAED;;;GAGG;AACH,wBAAgB,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAG5C;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,GAAE,MAAU,GAAG,MAAM,CAEjE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAGpE"}
|
package/dist/ui-primitives.js
CHANGED
|
@@ -2,16 +2,21 @@
|
|
|
2
2
|
* 4Runr OS UI Primitives
|
|
3
3
|
* Building blocks for all views - compose these, don't print raw strings
|
|
4
4
|
*/
|
|
5
|
-
import { C_BRAND, C_ACCENT, C_TEXT, C_MUTED, C_SUCCESS, C_WARN, C_ERROR, C_DIM, C_BRAND_BRIGHT, RESET, } from './theme.js';
|
|
5
|
+
import { C_BRAND, C_ACCENT, C_TEXT, C_MUTED, C_SUCCESS, C_WARN, C_ERROR, C_DIM, C_BRAND_BRIGHT, RESET, BOLD, } from './theme.js';
|
|
6
6
|
/**
|
|
7
7
|
* Header: consistent brand bar at top
|
|
8
|
+
* Phase 4: Authority, not decoration
|
|
8
9
|
* Format: 4Runr | AI AGENT OPERATING SYSTEM | vX.Y.Z | [MODE]
|
|
10
|
+
* Strong separator, not decorative box
|
|
9
11
|
*/
|
|
10
12
|
export function Header(version, mode) {
|
|
11
13
|
const modeText = mode ? ` | ${mode}` : '';
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
14
|
+
const terminalWidth = process.stdout.columns || 80;
|
|
15
|
+
const separatorWidth = Math.max(terminalWidth - 2, 78);
|
|
16
|
+
const separator = `${C_BRAND}${'═'.repeat(separatorWidth)}${RESET}`;
|
|
17
|
+
// Header line: Brand (purple), system name (white), version (muted), mode
|
|
18
|
+
const headerLine = ` ${C_BRAND_BRIGHT}4Runr${RESET} ${C_TEXT}AI AGENT OPERATING SYSTEM${RESET} ${C_MUTED}v${version}${RESET}${modeText}`;
|
|
19
|
+
return `${separator}\n${headerLine}\n${separator}`;
|
|
15
20
|
}
|
|
16
21
|
/**
|
|
17
22
|
* StatusBar: 1-2 line HUD after each command
|
|
@@ -29,13 +34,21 @@ export function StatusBar(params) {
|
|
|
29
34
|
return `${C_DIM}${parts.join(' ')}${RESET}`;
|
|
30
35
|
}
|
|
31
36
|
/**
|
|
32
|
-
* Section: clean blocks with separators
|
|
33
|
-
*
|
|
37
|
+
* Section: clean blocks with strong separators
|
|
38
|
+
* Phase 4: Structural separators, not decorative
|
|
39
|
+
* Structure: Title (ALL CAPS) | Full-width separator | Lines (indented)
|
|
34
40
|
*/
|
|
35
41
|
export function Section(title, lines) {
|
|
36
|
-
|
|
37
|
-
const
|
|
38
|
-
|
|
42
|
+
// Headers: ALL CAPS, visually dominant (brand color for authority)
|
|
43
|
+
const titleLine = `${C_BRAND}${BOLD}${title.toUpperCase()}${RESET}`;
|
|
44
|
+
// Strong separator: full-width, structural boundary (not decorative)
|
|
45
|
+
// Use full terminal width (80 chars standard, but adapt to actual width)
|
|
46
|
+
const terminalWidth = process.stdout.columns || 80;
|
|
47
|
+
const separator = `${C_DIM}${'─'.repeat(Math.max(terminalWidth - 2, 78))}${RESET}`;
|
|
48
|
+
// Content: indented, calm alignment
|
|
49
|
+
const content = lines.length > 0
|
|
50
|
+
? lines.map(line => ` ${line}`).join('\n')
|
|
51
|
+
: ` ${C_MUTED}(empty)${RESET}`;
|
|
39
52
|
return `${titleLine}\n${separator}\n${content}`;
|
|
40
53
|
}
|
|
41
54
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui-primitives.js","sourceRoot":"","sources":["../src/ui-primitives.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,OAAO,EACP,QAAQ,EACR,MAAM,EACN,OAAO,EACP,SAAS,EACT,MAAM,EACN,OAAO,EACP,KAAK,EAEL,cAAc,EAEd,KAAK,
|
|
1
|
+
{"version":3,"file":"ui-primitives.js","sourceRoot":"","sources":["../src/ui-primitives.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "4runr-os",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.36",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "4Runr AI Agent OS - Interactive terminal for managing AI agents",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -25,11 +25,12 @@
|
|
|
25
25
|
"author": "4Runr Team",
|
|
26
26
|
"license": "MIT",
|
|
27
27
|
"dependencies": {
|
|
28
|
-
"axios": "^1.6.0"
|
|
28
|
+
"axios": "^1.6.0",
|
|
29
|
+
"neo-blessed": "^0.2.0"
|
|
29
30
|
},
|
|
30
31
|
"devDependencies": {
|
|
31
|
-
"@types/node": "^20.
|
|
32
|
-
"typescript": "^5.
|
|
32
|
+
"@types/node": "^20.19.26",
|
|
33
|
+
"typescript": "^5.9.3"
|
|
33
34
|
},
|
|
34
35
|
"files": [
|
|
35
36
|
"dist/**/*",
|
package/dist/ui/home-view.d.ts
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* HOME View Renderer
|
|
3
|
-
*
|
|
4
|
-
* EXTENSION EXAMPLE: This is the pattern all view renderers should follow
|
|
5
|
-
*
|
|
6
|
-
* Rules:
|
|
7
|
-
* - Pure function: receives state → returns rendered string
|
|
8
|
-
* - No side effects, no console.log, no state mutations
|
|
9
|
-
* - Use UI primitives (Section, Table, Alert, etc.)
|
|
10
|
-
* - Import types with `import type` (not regular import)
|
|
11
|
-
*
|
|
12
|
-
* To create a new view:
|
|
13
|
-
* 1. Create file: src/ui/my-view.ts
|
|
14
|
-
* 2. Export function: renderMyView(state: AppState): string
|
|
15
|
-
* 3. Use UI primitives to build output
|
|
16
|
-
* 4. Return joined string (ready for console.log)
|
|
17
|
-
*
|
|
18
|
-
* See CONTRIBUTING-CLI.md for full extension recipe
|
|
19
|
-
*/
|
|
20
|
-
import type { AppState } from '../store.js';
|
|
21
|
-
/**
|
|
22
|
-
* Render HOME view
|
|
23
|
-
* @param state - Current application state
|
|
24
|
-
* @returns Rendered view as string (ready to console.log)
|
|
25
|
-
*/
|
|
26
|
-
export declare function renderHomeView(state: AppState): string;
|
|
27
|
-
//# sourceMappingURL=home-view.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"home-view.d.ts","sourceRoot":"","sources":["../../src/ui/home-view.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAM5C;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM,CA8GtD"}
|