@h-rig/cli 0.0.6-alpha.86 → 0.0.6-alpha.87
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/bin/rig.js +79 -18
- package/dist/src/app-opentui/bootstrap.js +79 -18
- package/dist/src/app-opentui/command-palette.js +1 -0
- package/dist/src/app-opentui/drone.js +1 -0
- package/dist/src/app-opentui/index.js +61 -7
- package/dist/src/app-opentui/list-search.d.ts +5 -1
- package/dist/src/app-opentui/list-search.js +2 -2
- package/dist/src/app-opentui/react/App.js +67 -8
- package/dist/src/app-opentui/react/Backdrop.js +1 -0
- package/dist/src/app-opentui/react/ChromeHost.js +7 -0
- package/dist/src/app-opentui/react/SceneFrameView.js +55 -5
- package/dist/src/app-opentui/react/launch.js +67 -8
- package/dist/src/app-opentui/react/syntax.js +1 -0
- package/dist/src/app-opentui/registry.js +3 -5
- package/dist/src/app-opentui/render/graphics.js +1 -0
- package/dist/src/app-opentui/render/hover.d.ts +11 -0
- package/dist/src/app-opentui/render/hover.js +34 -0
- package/dist/src/app-opentui/render/native-host.js +1 -0
- package/dist/src/app-opentui/render/panels.js +50 -3
- package/dist/src/app-opentui/render/preloader.js +1 -0
- package/dist/src/app-opentui/render/scene.js +1 -0
- package/dist/src/app-opentui/render/text.d.ts +13 -0
- package/dist/src/app-opentui/render/text.js +54 -5
- package/dist/src/app-opentui/render/type-bar.js +1 -0
- package/dist/src/app-opentui/runtime.js +61 -7
- package/dist/src/app-opentui/scenes/command.js +1 -0
- package/dist/src/app-opentui/scenes/doctor.js +1 -0
- package/dist/src/app-opentui/scenes/error.js +1 -0
- package/dist/src/app-opentui/scenes/family-domains/agent.js +1 -0
- package/dist/src/app-opentui/scenes/family-domains/browser.js +1 -0
- package/dist/src/app-opentui/scenes/family-domains/dist.js +1 -0
- package/dist/src/app-opentui/scenes/family-domains/git.js +1 -0
- package/dist/src/app-opentui/scenes/family-domains/github.js +1 -0
- package/dist/src/app-opentui/scenes/family-domains/harness.js +1 -0
- package/dist/src/app-opentui/scenes/family-domains/index.js +1 -0
- package/dist/src/app-opentui/scenes/family-domains/kit.js +1 -0
- package/dist/src/app-opentui/scenes/family-domains/profile.js +1 -0
- package/dist/src/app-opentui/scenes/family-domains/queue.js +1 -0
- package/dist/src/app-opentui/scenes/family-domains/remote.js +1 -0
- package/dist/src/app-opentui/scenes/family-domains/review.js +1 -0
- package/dist/src/app-opentui/scenes/family-domains/setup.js +1 -0
- package/dist/src/app-opentui/scenes/family-domains/stats.js +1 -0
- package/dist/src/app-opentui/scenes/family.js +1 -0
- package/dist/src/app-opentui/scenes/fleet.js +3 -5
- package/dist/src/app-opentui/scenes/handoff.js +1 -0
- package/dist/src/app-opentui/scenes/help.js +1 -0
- package/dist/src/app-opentui/scenes/inbox.js +1 -0
- package/dist/src/app-opentui/scenes/init.js +1 -0
- package/dist/src/app-opentui/scenes/inspect.js +1 -0
- package/dist/src/app-opentui/scenes/main.js +1 -0
- package/dist/src/app-opentui/scenes/pi.js +1 -0
- package/dist/src/app-opentui/scenes/plugin.js +1 -0
- package/dist/src/app-opentui/scenes/repo.js +1 -0
- package/dist/src/app-opentui/scenes/run-detail.js +1 -0
- package/dist/src/app-opentui/scenes/server.js +1 -0
- package/dist/src/app-opentui/scenes/tasks.js +3 -5
- package/dist/src/app-opentui/scenes/workspace.js +1 -0
- package/dist/src/app-opentui/selectable.js +1 -0
- package/dist/src/app-opentui/theme.d.ts +1 -0
- package/dist/src/app-opentui/theme.js +1 -0
- package/package.json +8 -8
|
@@ -15,6 +15,7 @@ var RIG_UI = {
|
|
|
15
15
|
bg2: "#0b0c0e",
|
|
16
16
|
panel: "#101115",
|
|
17
17
|
panel2: "#14161b",
|
|
18
|
+
hover: "#181b24",
|
|
18
19
|
glass: "#1e2230",
|
|
19
20
|
border: "#2a2e3a",
|
|
20
21
|
ink: "#f4f5f8",
|
|
@@ -42,16 +43,59 @@ var styles = {
|
|
|
42
43
|
magenta: otuiFg(RIG_UI.magenta)
|
|
43
44
|
};
|
|
44
45
|
|
|
46
|
+
// packages/cli/src/app-opentui/render/hover.ts
|
|
47
|
+
var hoveredId;
|
|
48
|
+
var listeners = new Set;
|
|
49
|
+
function isHovered(id) {
|
|
50
|
+
return id !== undefined && id === hoveredId;
|
|
51
|
+
}
|
|
52
|
+
function setHoveredSelectableId(id) {
|
|
53
|
+
if (hoveredId === id)
|
|
54
|
+
return;
|
|
55
|
+
hoveredId = id;
|
|
56
|
+
for (const listener of listeners)
|
|
57
|
+
listener();
|
|
58
|
+
}
|
|
59
|
+
function clearHoveredSelectableId(id) {
|
|
60
|
+
if (id !== undefined && hoveredId === id)
|
|
61
|
+
setHoveredSelectableId(undefined);
|
|
62
|
+
}
|
|
63
|
+
|
|
45
64
|
// packages/cli/src/app-opentui/render/text.ts
|
|
46
65
|
var TRANSPARENT = RGBA.fromInts(0, 0, 0, 0);
|
|
66
|
+
var HOVER_BG = RGBA.fromHex(RIG_UI.hover);
|
|
67
|
+
function lineIsClickable(line) {
|
|
68
|
+
return line?.selectable !== undefined || line?.selectableIndex !== undefined;
|
|
69
|
+
}
|
|
70
|
+
function lineSelectableId(line) {
|
|
71
|
+
return line?.selectable?.id ?? line?.selectableId;
|
|
72
|
+
}
|
|
73
|
+
function lineBackground(line) {
|
|
74
|
+
if (line?.bg)
|
|
75
|
+
return RGBA.fromHex(line.bg);
|
|
76
|
+
const id = lineSelectableId(line);
|
|
77
|
+
if (id !== undefined && isHovered(id))
|
|
78
|
+
return HOVER_BG;
|
|
79
|
+
return TRANSPARENT;
|
|
80
|
+
}
|
|
47
81
|
function selectableMouseHandler(currentLineRef, onLineMouseDown) {
|
|
48
82
|
return (event) => {
|
|
49
83
|
const currentLine = currentLineRef();
|
|
50
|
-
if (currentLine
|
|
84
|
+
if (!lineIsClickable(currentLine))
|
|
51
85
|
return;
|
|
52
86
|
onLineMouseDown?.(currentLine, event);
|
|
53
87
|
};
|
|
54
88
|
}
|
|
89
|
+
function hoverHandlers(currentLineRef) {
|
|
90
|
+
return {
|
|
91
|
+
onMouseOver: () => {
|
|
92
|
+
const id = lineSelectableId(currentLineRef());
|
|
93
|
+
if (id !== undefined)
|
|
94
|
+
setHoveredSelectableId(id);
|
|
95
|
+
},
|
|
96
|
+
onMouseOut: () => clearHoveredSelectableId(lineSelectableId(currentLineRef()))
|
|
97
|
+
};
|
|
98
|
+
}
|
|
55
99
|
function createTextLine(renderer, id, top, onLineMouseDown) {
|
|
56
100
|
let currentLine;
|
|
57
101
|
const renderable = new TextRenderable(renderer, {
|
|
@@ -63,7 +107,8 @@ function createTextLine(renderer, id, top, onLineMouseDown) {
|
|
|
63
107
|
width: 1,
|
|
64
108
|
fg: RIG_UI.ink2,
|
|
65
109
|
selectable: true,
|
|
66
|
-
onMouseDown: selectableMouseHandler(() => currentLine, onLineMouseDown)
|
|
110
|
+
onMouseDown: selectableMouseHandler(() => currentLine, onLineMouseDown),
|
|
111
|
+
...hoverHandlers(() => currentLine)
|
|
67
112
|
});
|
|
68
113
|
renderable.setRigSceneLine = (line) => {
|
|
69
114
|
currentLine = line;
|
|
@@ -80,7 +125,8 @@ function createFlowTextLine(renderer, id, onLineMouseDown) {
|
|
|
80
125
|
flexShrink: 0,
|
|
81
126
|
fg: RIG_UI.ink2,
|
|
82
127
|
selectable: true,
|
|
83
|
-
onMouseDown: selectableMouseHandler(() => currentLine, onLineMouseDown)
|
|
128
|
+
onMouseDown: selectableMouseHandler(() => currentLine, onLineMouseDown),
|
|
129
|
+
...hoverHandlers(() => currentLine)
|
|
84
130
|
});
|
|
85
131
|
renderable.setRigSceneLine = (line) => {
|
|
86
132
|
currentLine = line;
|
|
@@ -94,7 +140,7 @@ function applyTextLine(renderable, line, top, left, width) {
|
|
|
94
140
|
renderable.width = width;
|
|
95
141
|
renderable.content = line?.styledText ?? line?.text ?? "";
|
|
96
142
|
renderable.fg = line?.fg ?? RIG_UI.ink2;
|
|
97
|
-
renderable.bg = line
|
|
143
|
+
renderable.bg = lineBackground(line);
|
|
98
144
|
renderable.attributes = line?.bold ? TextAttributes2.BOLD : line?.dim ? TextAttributes2.DIM : 0;
|
|
99
145
|
}
|
|
100
146
|
function applyFlowTextLine(renderable, line, width) {
|
|
@@ -104,7 +150,7 @@ function applyFlowTextLine(renderable, line, width) {
|
|
|
104
150
|
renderable.width = Math.max(1, width);
|
|
105
151
|
renderable.content = line?.styledText ?? line?.text ?? "";
|
|
106
152
|
renderable.fg = line?.fg ?? RIG_UI.ink2;
|
|
107
|
-
renderable.bg = line
|
|
153
|
+
renderable.bg = lineBackground(line);
|
|
108
154
|
renderable.attributes = line?.bold ? TextAttributes2.BOLD : line?.dim ? TextAttributes2.DIM : 0;
|
|
109
155
|
}
|
|
110
156
|
function clearTextLines(renderables, from = 0) {
|
|
@@ -119,6 +165,9 @@ function clearTextLines(renderables, from = 0) {
|
|
|
119
165
|
}
|
|
120
166
|
}
|
|
121
167
|
export {
|
|
168
|
+
lineSelectableId,
|
|
169
|
+
lineIsClickable,
|
|
170
|
+
lineBackground,
|
|
122
171
|
createTextLine,
|
|
123
172
|
createFlowTextLine,
|
|
124
173
|
clearTextLines,
|
|
@@ -2245,6 +2245,7 @@ var RIG_UI = {
|
|
|
2245
2245
|
bg2: "#0b0c0e",
|
|
2246
2246
|
panel: "#101115",
|
|
2247
2247
|
panel2: "#14161b",
|
|
2248
|
+
hover: "#181b24",
|
|
2248
2249
|
glass: "#1e2230",
|
|
2249
2250
|
border: "#2a2e3a",
|
|
2250
2251
|
ink: "#f4f5f8",
|
|
@@ -3344,15 +3345,66 @@ function sparklineString(values, width) {
|
|
|
3344
3345
|
|
|
3345
3346
|
// packages/cli/src/app-opentui/render/text.ts
|
|
3346
3347
|
import { RGBA as RGBA4, TextAttributes as TextAttributes4, TextRenderable } from "@opentui/core";
|
|
3348
|
+
|
|
3349
|
+
// packages/cli/src/app-opentui/render/hover.ts
|
|
3350
|
+
var hoveredId;
|
|
3351
|
+
var listeners = new Set;
|
|
3352
|
+
function isHovered(id) {
|
|
3353
|
+
return id !== undefined && id === hoveredId;
|
|
3354
|
+
}
|
|
3355
|
+
function setHoveredSelectableId(id) {
|
|
3356
|
+
if (hoveredId === id)
|
|
3357
|
+
return;
|
|
3358
|
+
hoveredId = id;
|
|
3359
|
+
for (const listener of listeners)
|
|
3360
|
+
listener();
|
|
3361
|
+
}
|
|
3362
|
+
function clearHoveredSelectableId(id) {
|
|
3363
|
+
if (id !== undefined && hoveredId === id)
|
|
3364
|
+
setHoveredSelectableId(undefined);
|
|
3365
|
+
}
|
|
3366
|
+
function subscribeHover(listener) {
|
|
3367
|
+
listeners.add(listener);
|
|
3368
|
+
return () => {
|
|
3369
|
+
listeners.delete(listener);
|
|
3370
|
+
};
|
|
3371
|
+
}
|
|
3372
|
+
|
|
3373
|
+
// packages/cli/src/app-opentui/render/text.ts
|
|
3347
3374
|
var TRANSPARENT2 = RGBA4.fromInts(0, 0, 0, 0);
|
|
3375
|
+
var HOVER_BG = RGBA4.fromHex(RIG_UI.hover);
|
|
3376
|
+
function lineIsClickable(line2) {
|
|
3377
|
+
return line2?.selectable !== undefined || line2?.selectableIndex !== undefined;
|
|
3378
|
+
}
|
|
3379
|
+
function lineSelectableId(line2) {
|
|
3380
|
+
return line2?.selectable?.id ?? line2?.selectableId;
|
|
3381
|
+
}
|
|
3382
|
+
function lineBackground(line2) {
|
|
3383
|
+
if (line2?.bg)
|
|
3384
|
+
return RGBA4.fromHex(line2.bg);
|
|
3385
|
+
const id = lineSelectableId(line2);
|
|
3386
|
+
if (id !== undefined && isHovered(id))
|
|
3387
|
+
return HOVER_BG;
|
|
3388
|
+
return TRANSPARENT2;
|
|
3389
|
+
}
|
|
3348
3390
|
function selectableMouseHandler(currentLineRef, onLineMouseDown) {
|
|
3349
3391
|
return (event) => {
|
|
3350
3392
|
const currentLine = currentLineRef();
|
|
3351
|
-
if (currentLine
|
|
3393
|
+
if (!lineIsClickable(currentLine))
|
|
3352
3394
|
return;
|
|
3353
3395
|
onLineMouseDown?.(currentLine, event);
|
|
3354
3396
|
};
|
|
3355
3397
|
}
|
|
3398
|
+
function hoverHandlers(currentLineRef) {
|
|
3399
|
+
return {
|
|
3400
|
+
onMouseOver: () => {
|
|
3401
|
+
const id = lineSelectableId(currentLineRef());
|
|
3402
|
+
if (id !== undefined)
|
|
3403
|
+
setHoveredSelectableId(id);
|
|
3404
|
+
},
|
|
3405
|
+
onMouseOut: () => clearHoveredSelectableId(lineSelectableId(currentLineRef()))
|
|
3406
|
+
};
|
|
3407
|
+
}
|
|
3356
3408
|
function createTextLine(renderer, id, top, onLineMouseDown) {
|
|
3357
3409
|
let currentLine;
|
|
3358
3410
|
const renderable = new TextRenderable(renderer, {
|
|
@@ -3364,7 +3416,8 @@ function createTextLine(renderer, id, top, onLineMouseDown) {
|
|
|
3364
3416
|
width: 1,
|
|
3365
3417
|
fg: RIG_UI.ink2,
|
|
3366
3418
|
selectable: true,
|
|
3367
|
-
onMouseDown: selectableMouseHandler(() => currentLine, onLineMouseDown)
|
|
3419
|
+
onMouseDown: selectableMouseHandler(() => currentLine, onLineMouseDown),
|
|
3420
|
+
...hoverHandlers(() => currentLine)
|
|
3368
3421
|
});
|
|
3369
3422
|
renderable.setRigSceneLine = (line2) => {
|
|
3370
3423
|
currentLine = line2;
|
|
@@ -3381,7 +3434,8 @@ function createFlowTextLine(renderer, id, onLineMouseDown) {
|
|
|
3381
3434
|
flexShrink: 0,
|
|
3382
3435
|
fg: RIG_UI.ink2,
|
|
3383
3436
|
selectable: true,
|
|
3384
|
-
onMouseDown: selectableMouseHandler(() => currentLine, onLineMouseDown)
|
|
3437
|
+
onMouseDown: selectableMouseHandler(() => currentLine, onLineMouseDown),
|
|
3438
|
+
...hoverHandlers(() => currentLine)
|
|
3385
3439
|
});
|
|
3386
3440
|
renderable.setRigSceneLine = (line2) => {
|
|
3387
3441
|
currentLine = line2;
|
|
@@ -3395,7 +3449,7 @@ function applyTextLine(renderable, line2, top, left, width) {
|
|
|
3395
3449
|
renderable.width = width;
|
|
3396
3450
|
renderable.content = line2?.styledText ?? line2?.text ?? "";
|
|
3397
3451
|
renderable.fg = line2?.fg ?? RIG_UI.ink2;
|
|
3398
|
-
renderable.bg = line2
|
|
3452
|
+
renderable.bg = lineBackground(line2);
|
|
3399
3453
|
renderable.attributes = line2?.bold ? TextAttributes4.BOLD : line2?.dim ? TextAttributes4.DIM : 0;
|
|
3400
3454
|
}
|
|
3401
3455
|
function applyFlowTextLine(renderable, line2, width) {
|
|
@@ -3405,7 +3459,7 @@ function applyFlowTextLine(renderable, line2, width) {
|
|
|
3405
3459
|
renderable.width = Math.max(1, width);
|
|
3406
3460
|
renderable.content = line2?.styledText ?? line2?.text ?? "";
|
|
3407
3461
|
renderable.fg = line2?.fg ?? RIG_UI.ink2;
|
|
3408
|
-
renderable.bg = line2
|
|
3462
|
+
renderable.bg = lineBackground(line2);
|
|
3409
3463
|
renderable.attributes = line2?.bold ? TextAttributes4.BOLD : line2?.dim ? TextAttributes4.DIM : 0;
|
|
3410
3464
|
}
|
|
3411
3465
|
function clearTextLines(renderables, from = 0) {
|
|
@@ -4759,8 +4813,7 @@ async function launchRigOpenTuiApp(options) {
|
|
|
4759
4813
|
} else if (!selectById(store, id, renderedSelectableItems)) {
|
|
4760
4814
|
return;
|
|
4761
4815
|
}
|
|
4762
|
-
|
|
4763
|
-
runAppAction("Activate selection", () => activateSelection(runtime, renderedSelectableItems));
|
|
4816
|
+
runAppAction("Activate selection", () => activateSelection(runtime, renderedSelectableItems));
|
|
4764
4817
|
};
|
|
4765
4818
|
for (let index = 0;index < MAX_SCENE_PANELS; index += 1) {
|
|
4766
4819
|
const panel = createScrollPanelLayer(renderer, `rig-scroll-panel-${index}`, onLineClick);
|
|
@@ -4827,6 +4880,7 @@ async function launchRigOpenTuiApp(options) {
|
|
|
4827
4880
|
};
|
|
4828
4881
|
renderer.keyInput.on("keypress", onKeyPress);
|
|
4829
4882
|
resources.add(() => renderer?.keyInput.off("keypress", onKeyPress));
|
|
4883
|
+
resources.add(subscribeHover(() => scheduleAppRender(0)));
|
|
4830
4884
|
const onPaste = (event) => {
|
|
4831
4885
|
const state = store.getState();
|
|
4832
4886
|
if (state.scene === "handoff") {
|
|
@@ -12,6 +12,7 @@ var RIG_UI = {
|
|
|
12
12
|
bg2: "#0b0c0e",
|
|
13
13
|
panel: "#101115",
|
|
14
14
|
panel2: "#14161b",
|
|
15
|
+
hover: "#181b24",
|
|
15
16
|
glass: "#1e2230",
|
|
16
17
|
border: "#2a2e3a",
|
|
17
18
|
ink: "#f4f5f8",
|
|
@@ -284,11 +285,8 @@ function withSelectable(line2, item) {
|
|
|
284
285
|
}
|
|
285
286
|
|
|
286
287
|
// packages/cli/src/app-opentui/list-search.ts
|
|
287
|
-
function
|
|
288
|
-
return
|
|
289
|
-
}
|
|
290
|
-
function listSearchQuery(state) {
|
|
291
|
-
return isListSearchScene(state.scene) ? state.typeBar.value.trim() : "";
|
|
288
|
+
function listSearchQuery(_state) {
|
|
289
|
+
return "";
|
|
292
290
|
}
|
|
293
291
|
function valueText(value) {
|
|
294
292
|
if (value === undefined || value === null)
|
|
@@ -12,6 +12,7 @@ var RIG_UI = {
|
|
|
12
12
|
bg2: "#0b0c0e",
|
|
13
13
|
panel: "#101115",
|
|
14
14
|
panel2: "#14161b",
|
|
15
|
+
hover: "#181b24",
|
|
15
16
|
glass: "#1e2230",
|
|
16
17
|
border: "#2a2e3a",
|
|
17
18
|
ink: "#f4f5f8",
|
|
@@ -284,11 +285,8 @@ function withSelectable(line2, item) {
|
|
|
284
285
|
}
|
|
285
286
|
|
|
286
287
|
// packages/cli/src/app-opentui/list-search.ts
|
|
287
|
-
function
|
|
288
|
-
return
|
|
289
|
-
}
|
|
290
|
-
function listSearchQuery(state) {
|
|
291
|
-
return isListSearchScene(state.scene) ? state.typeBar.value.trim() : "";
|
|
288
|
+
function listSearchQuery(_state) {
|
|
289
|
+
return "";
|
|
292
290
|
}
|
|
293
291
|
function valueText(value) {
|
|
294
292
|
if (value === undefined || value === null)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@h-rig/cli",
|
|
3
|
-
"version": "0.0.6-alpha.
|
|
3
|
+
"version": "0.0.6-alpha.87",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Rig package",
|
|
6
6
|
"license": "UNLICENSED",
|
|
@@ -28,13 +28,13 @@
|
|
|
28
28
|
"@earendil-works/pi-tui": "^0.79.0",
|
|
29
29
|
"@opentui/core": "^0.4.1",
|
|
30
30
|
"@opentui/react": "0.4.1",
|
|
31
|
-
"@rig/client": "npm:@h-rig/client@0.0.6-alpha.
|
|
32
|
-
"@rig/contracts": "npm:@h-rig/contracts@0.0.6-alpha.
|
|
33
|
-
"@rig/core": "npm:@h-rig/core@0.0.6-alpha.
|
|
34
|
-
"@rig/pi-rig": "npm:@h-rig/pi-rig@0.0.6-alpha.
|
|
35
|
-
"@rig/runtime": "npm:@h-rig/runtime@0.0.6-alpha.
|
|
36
|
-
"@rig/server": "npm:@h-rig/server@0.0.6-alpha.
|
|
37
|
-
"@rig/standard-plugin": "npm:@h-rig/standard-plugin@0.0.6-alpha.
|
|
31
|
+
"@rig/client": "npm:@h-rig/client@0.0.6-alpha.87",
|
|
32
|
+
"@rig/contracts": "npm:@h-rig/contracts@0.0.6-alpha.87",
|
|
33
|
+
"@rig/core": "npm:@h-rig/core@0.0.6-alpha.87",
|
|
34
|
+
"@rig/pi-rig": "npm:@h-rig/pi-rig@0.0.6-alpha.87",
|
|
35
|
+
"@rig/runtime": "npm:@h-rig/runtime@0.0.6-alpha.87",
|
|
36
|
+
"@rig/server": "npm:@h-rig/server@0.0.6-alpha.87",
|
|
37
|
+
"@rig/standard-plugin": "npm:@h-rig/standard-plugin@0.0.6-alpha.87",
|
|
38
38
|
"@xterm/headless": "^6.0.0",
|
|
39
39
|
"effect": "4.0.0-beta.78",
|
|
40
40
|
"picocolors": "^1.1.1",
|