@sma1lboy/kobe 0.5.7 → 0.5.8
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/kobed.js +404 -88
- package/dist/cli/index.js +878 -279
- package/package.json +1 -1
package/dist/cli/index.js
CHANGED
|
@@ -5183,7 +5183,6 @@ function bindByIds(handlers) {
|
|
|
5183
5183
|
}
|
|
5184
5184
|
function useKobeKeybindings(opts) {
|
|
5185
5185
|
const palette = useCommandPalette();
|
|
5186
|
-
const dialog = useDialog();
|
|
5187
5186
|
const renderer = useRenderer();
|
|
5188
5187
|
const onQuit = opts.onQuit ?? (() => {
|
|
5189
5188
|
try {
|
|
@@ -5195,7 +5194,6 @@ function useKobeKeybindings(opts) {
|
|
|
5195
5194
|
});
|
|
5196
5195
|
const onFocusNext = opts.onFocusNext ?? (() => {});
|
|
5197
5196
|
const onFocusPrev = opts.onFocusPrev ?? (() => {});
|
|
5198
|
-
const onFocusDetach = opts.onFocusDetach ?? (() => {});
|
|
5199
5197
|
if (renderer) {
|
|
5200
5198
|
const onSelection = () => {
|
|
5201
5199
|
const text = renderer.getSelection()?.getSelectedText();
|
|
@@ -5237,17 +5235,7 @@ function useKobeKeybindings(opts) {
|
|
|
5237
5235
|
"focus.next": () => onFocusNext(),
|
|
5238
5236
|
"focus.prev": () => onFocusPrev(),
|
|
5239
5237
|
"app.copy_or_quit": () => handleCtrlC()
|
|
5240
|
-
})
|
|
5241
|
-
{
|
|
5242
|
-
key: "escape",
|
|
5243
|
-
cmd: () => {
|
|
5244
|
-
if (dialog.stack.length > 0) {
|
|
5245
|
-
dialog.pop();
|
|
5246
|
-
} else {
|
|
5247
|
-
onFocusDetach();
|
|
5248
|
-
}
|
|
5249
|
-
}
|
|
5250
|
-
}
|
|
5238
|
+
})
|
|
5251
5239
|
];
|
|
5252
5240
|
});
|
|
5253
5241
|
useBindings(() => ({ bindings: bindings() }));
|
|
@@ -5257,7 +5245,6 @@ var init_keybindings = __esm(() => {
|
|
|
5257
5245
|
init_solid();
|
|
5258
5246
|
init_dev();
|
|
5259
5247
|
init_keymap();
|
|
5260
|
-
init_dialog();
|
|
5261
5248
|
init_command_palette();
|
|
5262
5249
|
[ctrlCArmed, setCtrlCArmed] = createSignal(false);
|
|
5263
5250
|
KobeKeymap = [
|
|
@@ -5345,14 +5332,6 @@ var init_keybindings = __esm(() => {
|
|
|
5345
5332
|
category: "Global",
|
|
5346
5333
|
description: "Copy selection / press twice within 1.5s to quit"
|
|
5347
5334
|
},
|
|
5348
|
-
{
|
|
5349
|
-
id: "focus.detach",
|
|
5350
|
-
scope: "global",
|
|
5351
|
-
keys: ["esc"],
|
|
5352
|
-
category: "Navigation",
|
|
5353
|
-
description: "Back to sidebar. In chat while streaming, interrupts the turn instead. Closes top dialog if any.",
|
|
5354
|
-
hint: { keys: "esc", label: "back to sidebar" }
|
|
5355
|
-
},
|
|
5356
5335
|
{
|
|
5357
5336
|
id: "chat.interrupt",
|
|
5358
5337
|
scope: "workspace",
|
|
@@ -8878,7 +8857,7 @@ var init_package = __esm(() => {
|
|
|
8878
8857
|
package_default = {
|
|
8879
8858
|
$schema: "https://json.schemastore.org/package.json",
|
|
8880
8859
|
name: "@sma1lboy/kobe",
|
|
8881
|
-
version: "0.5.
|
|
8860
|
+
version: "0.5.8",
|
|
8882
8861
|
description: "TUI orchestrator for Claude Code (codename)",
|
|
8883
8862
|
type: "module",
|
|
8884
8863
|
packageManager: "bun@1.3.13",
|
|
@@ -10654,6 +10633,9 @@ class Orchestrator {
|
|
|
10654
10633
|
planUsageSignal() {
|
|
10655
10634
|
return () => null;
|
|
10656
10635
|
}
|
|
10636
|
+
rcBridgeSignal() {
|
|
10637
|
+
return () => ({ state: "off" });
|
|
10638
|
+
}
|
|
10657
10639
|
subscribeTasks(listener2) {
|
|
10658
10640
|
return this.store.subscribe(listener2);
|
|
10659
10641
|
}
|
|
@@ -11368,6 +11350,8 @@ class RemoteOrchestrator {
|
|
|
11368
11350
|
setRunState;
|
|
11369
11351
|
planUsageAcc;
|
|
11370
11352
|
setPlanUsage;
|
|
11353
|
+
rcBridgeAcc;
|
|
11354
|
+
setRcBridge;
|
|
11371
11355
|
subscribers = new Map;
|
|
11372
11356
|
pendingInputBroker = new InMemoryPendingInputBroker;
|
|
11373
11357
|
constructor(client) {
|
|
@@ -11375,12 +11359,15 @@ class RemoteOrchestrator {
|
|
|
11375
11359
|
const [tasks, setTasks] = createSignal([]);
|
|
11376
11360
|
const [runState, setRunState] = createSignal(new Map);
|
|
11377
11361
|
const [planUsage, setPlanUsage] = createSignal(null);
|
|
11362
|
+
const [rcBridge, setRcBridge] = createSignal({ state: "off" });
|
|
11378
11363
|
this.tasksAcc = tasks;
|
|
11379
11364
|
this.setTasks = (next) => setTasks(() => next);
|
|
11380
11365
|
this.runStateAcc = runState;
|
|
11381
11366
|
this.setRunState = (next) => setRunState(() => next);
|
|
11382
11367
|
this.planUsageAcc = planUsage;
|
|
11383
11368
|
this.setPlanUsage = (next) => setPlanUsage(() => next);
|
|
11369
|
+
this.rcBridgeAcc = rcBridge;
|
|
11370
|
+
this.setRcBridge = (next) => setRcBridge(() => next);
|
|
11384
11371
|
this.client.on("*", (frame) => this.handleEvent(frame.name, frame.payload));
|
|
11385
11372
|
}
|
|
11386
11373
|
async init() {
|
|
@@ -11402,6 +11389,8 @@ class RemoteOrchestrator {
|
|
|
11402
11389
|
}
|
|
11403
11390
|
if (hello.planUsage)
|
|
11404
11391
|
this.setPlanUsage(hello.planUsage);
|
|
11392
|
+
if (hello.rcBridge)
|
|
11393
|
+
this.setRcBridge(hello.rcBridge);
|
|
11405
11394
|
await this.client.request("subscribe", { taskIds: "all" });
|
|
11406
11395
|
if (hello.pending) {
|
|
11407
11396
|
for (const [taskId, entries] of Object.entries(hello.pending)) {
|
|
@@ -11434,6 +11423,21 @@ class RemoteOrchestrator {
|
|
|
11434
11423
|
planUsageSignal() {
|
|
11435
11424
|
return this.planUsageAcc;
|
|
11436
11425
|
}
|
|
11426
|
+
rcBridgeSignal() {
|
|
11427
|
+
return this.rcBridgeAcc;
|
|
11428
|
+
}
|
|
11429
|
+
async startRcBridge(opts = {}) {
|
|
11430
|
+
const res = await this.client.request("rcBridge.start", {
|
|
11431
|
+
taskId: opts.taskId,
|
|
11432
|
+
tabId: opts.tabId,
|
|
11433
|
+
cwd: opts.cwd
|
|
11434
|
+
});
|
|
11435
|
+
return res.status;
|
|
11436
|
+
}
|
|
11437
|
+
async stopRcBridge() {
|
|
11438
|
+
const res = await this.client.request("rcBridge.stop", {});
|
|
11439
|
+
return res.status;
|
|
11440
|
+
}
|
|
11437
11441
|
listTasks() {
|
|
11438
11442
|
return this.tasksAcc().slice();
|
|
11439
11443
|
}
|
|
@@ -11574,6 +11578,12 @@ class RemoteOrchestrator {
|
|
|
11574
11578
|
this.setPlanUsage(usage ?? null);
|
|
11575
11579
|
return;
|
|
11576
11580
|
}
|
|
11581
|
+
if (name === "rcBridge.changed") {
|
|
11582
|
+
const status = obj.status;
|
|
11583
|
+
if (status)
|
|
11584
|
+
this.setRcBridge(status);
|
|
11585
|
+
return;
|
|
11586
|
+
}
|
|
11577
11587
|
const taskId = obj.taskId;
|
|
11578
11588
|
const tabId = obj.tabId;
|
|
11579
11589
|
if (!taskId || !tabId)
|
|
@@ -13532,6 +13542,447 @@ var init_pane_header = __esm(() => {
|
|
|
13532
13542
|
init_theme();
|
|
13533
13543
|
});
|
|
13534
13544
|
|
|
13545
|
+
// src/tui/component/rc-bridge-dialog.tsx
|
|
13546
|
+
import { TextAttributes as TextAttributes12 } from "@opentui/core";
|
|
13547
|
+
function RcBridgeDialog(props) {
|
|
13548
|
+
const dialog = useDialog();
|
|
13549
|
+
const {
|
|
13550
|
+
theme
|
|
13551
|
+
} = useTheme();
|
|
13552
|
+
const [busy, setBusy] = createSignal(false);
|
|
13553
|
+
const targetTask = () => props.activeTask?.();
|
|
13554
|
+
const canEnable = () => Boolean(targetTask());
|
|
13555
|
+
async function activate() {
|
|
13556
|
+
if (busy())
|
|
13557
|
+
return;
|
|
13558
|
+
const s = props.status();
|
|
13559
|
+
setBusy(true);
|
|
13560
|
+
try {
|
|
13561
|
+
if (s.state === "off" || s.state === "error") {
|
|
13562
|
+
const task = targetTask();
|
|
13563
|
+
if (!task)
|
|
13564
|
+
return;
|
|
13565
|
+
await props.orchestrator.startRcBridge({
|
|
13566
|
+
taskId: task.id,
|
|
13567
|
+
tabId: props.activeTabId?.() ?? undefined
|
|
13568
|
+
});
|
|
13569
|
+
} else if (s.state === "running") {
|
|
13570
|
+
await props.orchestrator.stopRcBridge();
|
|
13571
|
+
}
|
|
13572
|
+
} catch (err) {
|
|
13573
|
+
console.error("kobe: rcBridge action failed:", err);
|
|
13574
|
+
} finally {
|
|
13575
|
+
setBusy(false);
|
|
13576
|
+
}
|
|
13577
|
+
}
|
|
13578
|
+
useBindings(() => ({
|
|
13579
|
+
enabled: dialog.stack.length > 0,
|
|
13580
|
+
bindings: [{
|
|
13581
|
+
key: "return",
|
|
13582
|
+
cmd: () => void activate()
|
|
13583
|
+
}]
|
|
13584
|
+
}));
|
|
13585
|
+
return (() => {
|
|
13586
|
+
var _el$ = createElement("box"), _el$2 = createElement("box"), _el$3 = createElement("text"), _el$5 = createElement("text"), _el$7 = createElement("text"), _el$8 = createTextNode(`Binds this task's worktree to a claude.ai environment so you can pick it up from another device. claude.ai sessions on that environment run on your machine under the task's worktree \u2014 and if this tab already has a kobe conversation, you can \`/resume <id>\` it in claude.ai to keep going from where you left off.`);
|
|
13587
|
+
insertNode(_el$, _el$2);
|
|
13588
|
+
insertNode(_el$, _el$7);
|
|
13589
|
+
setProp(_el$, "paddingLeft", 2);
|
|
13590
|
+
setProp(_el$, "paddingRight", 2);
|
|
13591
|
+
setProp(_el$, "gap", 1);
|
|
13592
|
+
insertNode(_el$2, _el$3);
|
|
13593
|
+
insertNode(_el$2, _el$5);
|
|
13594
|
+
setProp(_el$2, "flexDirection", "row");
|
|
13595
|
+
setProp(_el$2, "justifyContent", "space-between");
|
|
13596
|
+
insertNode(_el$3, createTextNode(`Share to claude.ai`));
|
|
13597
|
+
insertNode(_el$5, createTextNode(`esc`));
|
|
13598
|
+
setProp(_el$5, "onMouseUp", () => dialog.clear());
|
|
13599
|
+
insertNode(_el$7, _el$8);
|
|
13600
|
+
setProp(_el$7, "wrapMode", "word");
|
|
13601
|
+
insert(_el$, createComponent2(Switch, {
|
|
13602
|
+
get children() {
|
|
13603
|
+
return [createComponent2(Match, {
|
|
13604
|
+
get when() {
|
|
13605
|
+
return props.status().state === "off";
|
|
13606
|
+
},
|
|
13607
|
+
get children() {
|
|
13608
|
+
return createComponent2(Show, {
|
|
13609
|
+
get when() {
|
|
13610
|
+
return canEnable();
|
|
13611
|
+
},
|
|
13612
|
+
get fallback() {
|
|
13613
|
+
return (() => {
|
|
13614
|
+
var _el$48 = createElement("text");
|
|
13615
|
+
insertNode(_el$48, createTextNode(`No active task \u2014 select a task in the sidebar first, then re-open this dialog.`));
|
|
13616
|
+
effect((_$p) => setProp(_el$48, "fg", theme.textMuted, _$p));
|
|
13617
|
+
return _el$48;
|
|
13618
|
+
})();
|
|
13619
|
+
},
|
|
13620
|
+
get children() {
|
|
13621
|
+
var _el$1 = createElement("box"), _el$10 = createElement("text"), _el$12 = createElement("box"), _el$13 = createElement("text"), _el$14 = createElement("text"), _el$16 = createElement("text");
|
|
13622
|
+
insertNode(_el$1, _el$10);
|
|
13623
|
+
insertNode(_el$1, _el$12);
|
|
13624
|
+
setProp(_el$1, "flexDirection", "column");
|
|
13625
|
+
setProp(_el$1, "gap", 0);
|
|
13626
|
+
insertNode(_el$10, createTextNode(`Will share:`));
|
|
13627
|
+
insertNode(_el$12, _el$13);
|
|
13628
|
+
insertNode(_el$12, _el$14);
|
|
13629
|
+
insertNode(_el$12, _el$16);
|
|
13630
|
+
setProp(_el$12, "flexDirection", "row");
|
|
13631
|
+
setProp(_el$12, "gap", 1);
|
|
13632
|
+
insert(_el$13, () => targetTask()?.title ?? "");
|
|
13633
|
+
insertNode(_el$14, createTextNode(`\xB7`));
|
|
13634
|
+
setProp(_el$16, "wrapMode", "none");
|
|
13635
|
+
insert(_el$16, () => targetTask()?.worktreePath ?? "");
|
|
13636
|
+
effect((_p$) => {
|
|
13637
|
+
var { textMuted: _v$, text: _v$2 } = theme, _v$3 = TextAttributes12.BOLD, _v$4 = theme.textMuted, _v$5 = theme.text;
|
|
13638
|
+
_v$ !== _p$.e && (_p$.e = setProp(_el$10, "fg", _v$, _p$.e));
|
|
13639
|
+
_v$2 !== _p$.t && (_p$.t = setProp(_el$13, "fg", _v$2, _p$.t));
|
|
13640
|
+
_v$3 !== _p$.a && (_p$.a = setProp(_el$13, "attributes", _v$3, _p$.a));
|
|
13641
|
+
_v$4 !== _p$.o && (_p$.o = setProp(_el$14, "fg", _v$4, _p$.o));
|
|
13642
|
+
_v$5 !== _p$.i && (_p$.i = setProp(_el$16, "fg", _v$5, _p$.i));
|
|
13643
|
+
return _p$;
|
|
13644
|
+
}, {
|
|
13645
|
+
e: undefined,
|
|
13646
|
+
t: undefined,
|
|
13647
|
+
a: undefined,
|
|
13648
|
+
o: undefined,
|
|
13649
|
+
i: undefined
|
|
13650
|
+
});
|
|
13651
|
+
return _el$1;
|
|
13652
|
+
}
|
|
13653
|
+
});
|
|
13654
|
+
}
|
|
13655
|
+
}), createComponent2(Match, {
|
|
13656
|
+
get when() {
|
|
13657
|
+
return props.status().state === "starting";
|
|
13658
|
+
},
|
|
13659
|
+
get children() {
|
|
13660
|
+
var _el$17 = createElement("text");
|
|
13661
|
+
insertNode(_el$17, createTextNode(`Connecting to claude.ai\u2026`));
|
|
13662
|
+
effect((_$p) => setProp(_el$17, "fg", theme.accent, _$p));
|
|
13663
|
+
return _el$17;
|
|
13664
|
+
}
|
|
13665
|
+
}), createComponent2(Match, {
|
|
13666
|
+
get when() {
|
|
13667
|
+
return props.status().state === "running";
|
|
13668
|
+
},
|
|
13669
|
+
get children() {
|
|
13670
|
+
var _el$19 = createElement("box"), _el$20 = createElement("box"), _el$21 = createElement("text"), _el$23 = createElement("text");
|
|
13671
|
+
insertNode(_el$19, _el$20);
|
|
13672
|
+
setProp(_el$19, "flexDirection", "column");
|
|
13673
|
+
setProp(_el$19, "gap", 0);
|
|
13674
|
+
insertNode(_el$20, _el$21);
|
|
13675
|
+
insertNode(_el$20, _el$23);
|
|
13676
|
+
setProp(_el$20, "flexDirection", "row");
|
|
13677
|
+
setProp(_el$20, "gap", 1);
|
|
13678
|
+
insertNode(_el$21, createTextNode(`Env:`));
|
|
13679
|
+
insert(_el$23, () => props.status().envId);
|
|
13680
|
+
insert(_el$19, createComponent2(Show, {
|
|
13681
|
+
get when() {
|
|
13682
|
+
return props.status().deeplink;
|
|
13683
|
+
},
|
|
13684
|
+
get children() {
|
|
13685
|
+
var _el$24 = createElement("box"), _el$25 = createElement("text"), _el$27 = createElement("text");
|
|
13686
|
+
insertNode(_el$24, _el$25);
|
|
13687
|
+
insertNode(_el$24, _el$27);
|
|
13688
|
+
setProp(_el$24, "flexDirection", "column");
|
|
13689
|
+
setProp(_el$24, "gap", 0);
|
|
13690
|
+
setProp(_el$24, "paddingTop", 1);
|
|
13691
|
+
insertNode(_el$25, createTextNode(`Open from another device:`));
|
|
13692
|
+
insert(_el$27, () => props.status().deeplink);
|
|
13693
|
+
effect((_p$) => {
|
|
13694
|
+
var { textMuted: _v$6, accent: _v$7 } = theme;
|
|
13695
|
+
_v$6 !== _p$.e && (_p$.e = setProp(_el$25, "fg", _v$6, _p$.e));
|
|
13696
|
+
_v$7 !== _p$.t && (_p$.t = setProp(_el$27, "fg", _v$7, _p$.t));
|
|
13697
|
+
return _p$;
|
|
13698
|
+
}, {
|
|
13699
|
+
e: undefined,
|
|
13700
|
+
t: undefined
|
|
13701
|
+
});
|
|
13702
|
+
return _el$24;
|
|
13703
|
+
}
|
|
13704
|
+
}), null);
|
|
13705
|
+
insert(_el$19, createComponent2(Show, {
|
|
13706
|
+
get when() {
|
|
13707
|
+
return props.status().bound;
|
|
13708
|
+
},
|
|
13709
|
+
get children() {
|
|
13710
|
+
var _el$28 = createElement("box"), _el$29 = createElement("box"), _el$30 = createElement("text"), _el$32 = createElement("text");
|
|
13711
|
+
insertNode(_el$28, _el$29);
|
|
13712
|
+
setProp(_el$28, "flexDirection", "column");
|
|
13713
|
+
setProp(_el$28, "gap", 0);
|
|
13714
|
+
setProp(_el$28, "paddingTop", 1);
|
|
13715
|
+
insertNode(_el$29, _el$30);
|
|
13716
|
+
insertNode(_el$29, _el$32);
|
|
13717
|
+
setProp(_el$29, "flexDirection", "row");
|
|
13718
|
+
setProp(_el$29, "gap", 1);
|
|
13719
|
+
insertNode(_el$30, createTextNode(`Sharing:`));
|
|
13720
|
+
setProp(_el$32, "wrapMode", "none");
|
|
13721
|
+
insert(_el$32, () => props.status().bound?.taskTitle ?? props.status().bound?.taskId);
|
|
13722
|
+
insert(_el$28, createComponent2(Show, {
|
|
13723
|
+
get when() {
|
|
13724
|
+
return props.status().bound?.sessionId;
|
|
13725
|
+
},
|
|
13726
|
+
get fallback() {
|
|
13727
|
+
return (() => {
|
|
13728
|
+
var _el$50 = createElement("text");
|
|
13729
|
+
insertNode(_el$50, createTextNode(`(no kobe session yet \u2014 claude.ai will start a fresh one in this worktree)`));
|
|
13730
|
+
setProp(_el$50, "wrapMode", "word");
|
|
13731
|
+
effect((_$p) => setProp(_el$50, "fg", theme.textMuted, _$p));
|
|
13732
|
+
return _el$50;
|
|
13733
|
+
})();
|
|
13734
|
+
},
|
|
13735
|
+
get children() {
|
|
13736
|
+
var _el$33 = createElement("box"), _el$34 = createElement("text"), _el$36 = createElement("text"), _el$37 = createTextNode(`/resume `);
|
|
13737
|
+
insertNode(_el$33, _el$34);
|
|
13738
|
+
insertNode(_el$33, _el$36);
|
|
13739
|
+
setProp(_el$33, "flexDirection", "column");
|
|
13740
|
+
setProp(_el$33, "gap", 0);
|
|
13741
|
+
insertNode(_el$34, createTextNode(`To continue this tab's conversation in claude.ai, run:`));
|
|
13742
|
+
insertNode(_el$36, _el$37);
|
|
13743
|
+
insert(_el$36, () => props.status().bound?.sessionId, null);
|
|
13744
|
+
effect((_p$) => {
|
|
13745
|
+
var { textMuted: _v$8, accent: _v$9 } = theme, _v$0 = TextAttributes12.BOLD;
|
|
13746
|
+
_v$8 !== _p$.e && (_p$.e = setProp(_el$34, "fg", _v$8, _p$.e));
|
|
13747
|
+
_v$9 !== _p$.t && (_p$.t = setProp(_el$36, "fg", _v$9, _p$.t));
|
|
13748
|
+
_v$0 !== _p$.a && (_p$.a = setProp(_el$36, "attributes", _v$0, _p$.a));
|
|
13749
|
+
return _p$;
|
|
13750
|
+
}, {
|
|
13751
|
+
e: undefined,
|
|
13752
|
+
t: undefined,
|
|
13753
|
+
a: undefined
|
|
13754
|
+
});
|
|
13755
|
+
return _el$33;
|
|
13756
|
+
}
|
|
13757
|
+
}), null);
|
|
13758
|
+
effect((_p$) => {
|
|
13759
|
+
var { textMuted: _v$1, text: _v$10 } = theme, _v$11 = TextAttributes12.BOLD;
|
|
13760
|
+
_v$1 !== _p$.e && (_p$.e = setProp(_el$30, "fg", _v$1, _p$.e));
|
|
13761
|
+
_v$10 !== _p$.t && (_p$.t = setProp(_el$32, "fg", _v$10, _p$.t));
|
|
13762
|
+
_v$11 !== _p$.a && (_p$.a = setProp(_el$32, "attributes", _v$11, _p$.a));
|
|
13763
|
+
return _p$;
|
|
13764
|
+
}, {
|
|
13765
|
+
e: undefined,
|
|
13766
|
+
t: undefined,
|
|
13767
|
+
a: undefined
|
|
13768
|
+
});
|
|
13769
|
+
return _el$28;
|
|
13770
|
+
}
|
|
13771
|
+
}), null);
|
|
13772
|
+
insert(_el$19, createComponent2(Show, {
|
|
13773
|
+
get when() {
|
|
13774
|
+
return props.status().cwd;
|
|
13775
|
+
},
|
|
13776
|
+
get children() {
|
|
13777
|
+
var _el$38 = createElement("box"), _el$39 = createElement("text"), _el$41 = createElement("text");
|
|
13778
|
+
insertNode(_el$38, _el$39);
|
|
13779
|
+
insertNode(_el$38, _el$41);
|
|
13780
|
+
setProp(_el$38, "flexDirection", "row");
|
|
13781
|
+
setProp(_el$38, "gap", 1);
|
|
13782
|
+
setProp(_el$38, "paddingTop", 1);
|
|
13783
|
+
insertNode(_el$39, createTextNode(`Cwd:`));
|
|
13784
|
+
setProp(_el$41, "wrapMode", "none");
|
|
13785
|
+
insert(_el$41, () => props.status().cwd);
|
|
13786
|
+
effect((_p$) => {
|
|
13787
|
+
var { textMuted: _v$12, text: _v$13 } = theme;
|
|
13788
|
+
_v$12 !== _p$.e && (_p$.e = setProp(_el$39, "fg", _v$12, _p$.e));
|
|
13789
|
+
_v$13 !== _p$.t && (_p$.t = setProp(_el$41, "fg", _v$13, _p$.t));
|
|
13790
|
+
return _p$;
|
|
13791
|
+
}, {
|
|
13792
|
+
e: undefined,
|
|
13793
|
+
t: undefined
|
|
13794
|
+
});
|
|
13795
|
+
return _el$38;
|
|
13796
|
+
}
|
|
13797
|
+
}), null);
|
|
13798
|
+
effect((_p$) => {
|
|
13799
|
+
var { textMuted: _v$14, accent: _v$15 } = theme, _v$16 = TextAttributes12.BOLD;
|
|
13800
|
+
_v$14 !== _p$.e && (_p$.e = setProp(_el$21, "fg", _v$14, _p$.e));
|
|
13801
|
+
_v$15 !== _p$.t && (_p$.t = setProp(_el$23, "fg", _v$15, _p$.t));
|
|
13802
|
+
_v$16 !== _p$.a && (_p$.a = setProp(_el$23, "attributes", _v$16, _p$.a));
|
|
13803
|
+
return _p$;
|
|
13804
|
+
}, {
|
|
13805
|
+
e: undefined,
|
|
13806
|
+
t: undefined,
|
|
13807
|
+
a: undefined
|
|
13808
|
+
});
|
|
13809
|
+
return _el$19;
|
|
13810
|
+
}
|
|
13811
|
+
}), createComponent2(Match, {
|
|
13812
|
+
get when() {
|
|
13813
|
+
return props.status().state === "stopping";
|
|
13814
|
+
},
|
|
13815
|
+
get children() {
|
|
13816
|
+
var _el$42 = createElement("text");
|
|
13817
|
+
insertNode(_el$42, createTextNode(`Disconnecting\u2026`));
|
|
13818
|
+
effect((_$p) => setProp(_el$42, "fg", theme.textMuted, _$p));
|
|
13819
|
+
return _el$42;
|
|
13820
|
+
}
|
|
13821
|
+
}), createComponent2(Match, {
|
|
13822
|
+
get when() {
|
|
13823
|
+
return props.status().state === "error";
|
|
13824
|
+
},
|
|
13825
|
+
get children() {
|
|
13826
|
+
var _el$44 = createElement("box"), _el$45 = createElement("text");
|
|
13827
|
+
insertNode(_el$44, _el$45);
|
|
13828
|
+
setProp(_el$44, "flexDirection", "column");
|
|
13829
|
+
setProp(_el$44, "gap", 0);
|
|
13830
|
+
insertNode(_el$45, createTextNode(`Bridge failed.`));
|
|
13831
|
+
insert(_el$44, createComponent2(Show, {
|
|
13832
|
+
get when() {
|
|
13833
|
+
return props.status().errorMessage;
|
|
13834
|
+
},
|
|
13835
|
+
get children() {
|
|
13836
|
+
var _el$47 = createElement("text");
|
|
13837
|
+
setProp(_el$47, "wrapMode", "word");
|
|
13838
|
+
insert(_el$47, () => props.status().errorMessage);
|
|
13839
|
+
effect((_$p) => setProp(_el$47, "fg", theme.textMuted, _$p));
|
|
13840
|
+
return _el$47;
|
|
13841
|
+
}
|
|
13842
|
+
}), null);
|
|
13843
|
+
effect((_p$) => {
|
|
13844
|
+
var _v$17 = theme.error, _v$18 = TextAttributes12.BOLD;
|
|
13845
|
+
_v$17 !== _p$.e && (_p$.e = setProp(_el$45, "fg", _v$17, _p$.e));
|
|
13846
|
+
_v$18 !== _p$.t && (_p$.t = setProp(_el$45, "attributes", _v$18, _p$.t));
|
|
13847
|
+
return _p$;
|
|
13848
|
+
}, {
|
|
13849
|
+
e: undefined,
|
|
13850
|
+
t: undefined
|
|
13851
|
+
});
|
|
13852
|
+
return _el$44;
|
|
13853
|
+
}
|
|
13854
|
+
})];
|
|
13855
|
+
}
|
|
13856
|
+
}), null);
|
|
13857
|
+
insert(_el$, createComponent2(Switch, {
|
|
13858
|
+
get children() {
|
|
13859
|
+
return [createComponent2(Match, {
|
|
13860
|
+
get when() {
|
|
13861
|
+
return props.status().state === "off";
|
|
13862
|
+
},
|
|
13863
|
+
get children() {
|
|
13864
|
+
return createComponent2(ActionButton, {
|
|
13865
|
+
label: "[ enter ] Enable",
|
|
13866
|
+
get disabled() {
|
|
13867
|
+
return busy() || !canEnable();
|
|
13868
|
+
},
|
|
13869
|
+
onClick: activate
|
|
13870
|
+
});
|
|
13871
|
+
}
|
|
13872
|
+
}), createComponent2(Match, {
|
|
13873
|
+
get when() {
|
|
13874
|
+
return props.status().state === "running";
|
|
13875
|
+
},
|
|
13876
|
+
get children() {
|
|
13877
|
+
return createComponent2(ActionButton, {
|
|
13878
|
+
label: "[ enter ] Disable",
|
|
13879
|
+
get disabled() {
|
|
13880
|
+
return busy();
|
|
13881
|
+
},
|
|
13882
|
+
onClick: activate,
|
|
13883
|
+
variant: "warning"
|
|
13884
|
+
});
|
|
13885
|
+
}
|
|
13886
|
+
}), createComponent2(Match, {
|
|
13887
|
+
get when() {
|
|
13888
|
+
return props.status().state === "error";
|
|
13889
|
+
},
|
|
13890
|
+
get children() {
|
|
13891
|
+
return createComponent2(ActionButton, {
|
|
13892
|
+
label: "[ enter ] Retry",
|
|
13893
|
+
get disabled() {
|
|
13894
|
+
return busy() || !canEnable();
|
|
13895
|
+
},
|
|
13896
|
+
onClick: activate
|
|
13897
|
+
});
|
|
13898
|
+
}
|
|
13899
|
+
}), createComponent2(Match, {
|
|
13900
|
+
get when() {
|
|
13901
|
+
return props.status().state === "starting" || props.status().state === "stopping";
|
|
13902
|
+
},
|
|
13903
|
+
get children() {
|
|
13904
|
+
return createComponent2(ActionButton, {
|
|
13905
|
+
label: "working\u2026",
|
|
13906
|
+
disabled: true
|
|
13907
|
+
});
|
|
13908
|
+
}
|
|
13909
|
+
})];
|
|
13910
|
+
}
|
|
13911
|
+
}), null);
|
|
13912
|
+
effect((_p$) => {
|
|
13913
|
+
var _v$19 = TextAttributes12.BOLD, _v$20 = theme.text, _v$21 = theme.textMuted, _v$22 = theme.textMuted;
|
|
13914
|
+
_v$19 !== _p$.e && (_p$.e = setProp(_el$3, "attributes", _v$19, _p$.e));
|
|
13915
|
+
_v$20 !== _p$.t && (_p$.t = setProp(_el$3, "fg", _v$20, _p$.t));
|
|
13916
|
+
_v$21 !== _p$.a && (_p$.a = setProp(_el$5, "fg", _v$21, _p$.a));
|
|
13917
|
+
_v$22 !== _p$.o && (_p$.o = setProp(_el$7, "fg", _v$22, _p$.o));
|
|
13918
|
+
return _p$;
|
|
13919
|
+
}, {
|
|
13920
|
+
e: undefined,
|
|
13921
|
+
t: undefined,
|
|
13922
|
+
a: undefined,
|
|
13923
|
+
o: undefined
|
|
13924
|
+
});
|
|
13925
|
+
return _el$;
|
|
13926
|
+
})();
|
|
13927
|
+
}
|
|
13928
|
+
function ActionButton(props) {
|
|
13929
|
+
const {
|
|
13930
|
+
theme
|
|
13931
|
+
} = useTheme();
|
|
13932
|
+
const fg = () => {
|
|
13933
|
+
if (props.disabled)
|
|
13934
|
+
return theme.textMuted;
|
|
13935
|
+
if (props.variant === "warning")
|
|
13936
|
+
return theme.warning;
|
|
13937
|
+
return theme.accent;
|
|
13938
|
+
};
|
|
13939
|
+
return (() => {
|
|
13940
|
+
var _el$52 = createElement("box"), _el$53 = createElement("text");
|
|
13941
|
+
insertNode(_el$52, _el$53);
|
|
13942
|
+
setProp(_el$52, "paddingLeft", 1);
|
|
13943
|
+
setProp(_el$52, "paddingRight", 1);
|
|
13944
|
+
setProp(_el$52, "onMouseUp", () => {
|
|
13945
|
+
if (!props.disabled)
|
|
13946
|
+
props.onClick?.();
|
|
13947
|
+
});
|
|
13948
|
+
insert(_el$53, () => props.label);
|
|
13949
|
+
effect((_p$) => {
|
|
13950
|
+
var _v$23 = theme.backgroundElement, _v$24 = fg(), _v$25 = TextAttributes12.BOLD;
|
|
13951
|
+
_v$23 !== _p$.e && (_p$.e = setProp(_el$52, "backgroundColor", _v$23, _p$.e));
|
|
13952
|
+
_v$24 !== _p$.t && (_p$.t = setProp(_el$53, "fg", _v$24, _p$.t));
|
|
13953
|
+
_v$25 !== _p$.a && (_p$.a = setProp(_el$53, "attributes", _v$25, _p$.a));
|
|
13954
|
+
return _p$;
|
|
13955
|
+
}, {
|
|
13956
|
+
e: undefined,
|
|
13957
|
+
t: undefined,
|
|
13958
|
+
a: undefined
|
|
13959
|
+
});
|
|
13960
|
+
return _el$52;
|
|
13961
|
+
})();
|
|
13962
|
+
}
|
|
13963
|
+
var init_rc_bridge_dialog = __esm(() => {
|
|
13964
|
+
init_solid();
|
|
13965
|
+
init_solid();
|
|
13966
|
+
init_solid();
|
|
13967
|
+
init_solid();
|
|
13968
|
+
init_solid();
|
|
13969
|
+
init_solid();
|
|
13970
|
+
init_solid();
|
|
13971
|
+
init_solid();
|
|
13972
|
+
init_dev();
|
|
13973
|
+
init_theme();
|
|
13974
|
+
init_keymap();
|
|
13975
|
+
init_dialog();
|
|
13976
|
+
RcBridgeDialog.show = (dialog, orchestrator, status, activeTask, activeTabId) => {
|
|
13977
|
+
dialog.replace(() => createComponent2(RcBridgeDialog, {
|
|
13978
|
+
orchestrator,
|
|
13979
|
+
status,
|
|
13980
|
+
activeTask,
|
|
13981
|
+
activeTabId
|
|
13982
|
+
}));
|
|
13983
|
+
};
|
|
13984
|
+
});
|
|
13985
|
+
|
|
13535
13986
|
// src/tui/component/border.tsx
|
|
13536
13987
|
var EmptyBorder, SplitBorder, HSplitBorder;
|
|
13537
13988
|
var init_border = __esm(() => {
|
|
@@ -13696,7 +14147,7 @@ var init_focus = __esm(() => {
|
|
|
13696
14147
|
});
|
|
13697
14148
|
|
|
13698
14149
|
// src/tui/component/status-bar.tsx
|
|
13699
|
-
import { TextAttributes as
|
|
14150
|
+
import { TextAttributes as TextAttributes13 } from "@opentui/core";
|
|
13700
14151
|
function Hotkey(props) {
|
|
13701
14152
|
const {
|
|
13702
14153
|
theme
|
|
@@ -13715,7 +14166,7 @@ function Hotkey(props) {
|
|
|
13715
14166
|
setProp(_el$5, "wrapMode", "none");
|
|
13716
14167
|
insert(_el$5, () => props.label);
|
|
13717
14168
|
effect((_p$) => {
|
|
13718
|
-
var _v$ = theme.accent, _v$2 =
|
|
14169
|
+
var _v$ = theme.accent, _v$2 = TextAttributes13.BOLD, _v$3 = theme.textMuted;
|
|
13719
14170
|
_v$ !== _p$.e && (_p$.e = setProp(_el$2, "fg", _v$, _p$.e));
|
|
13720
14171
|
_v$2 !== _p$.t && (_p$.t = setProp(_el$2, "attributes", _v$2, _p$.t));
|
|
13721
14172
|
_v$3 !== _p$.a && (_p$.a = setProp(_el$5, "fg", _v$3, _p$.a));
|
|
@@ -13749,11 +14200,7 @@ function StatusBar() {
|
|
|
13749
14200
|
const leftHints = () => KobeKeymap.filter((b) => {
|
|
13750
14201
|
if (!b.hint || b.hint.pin)
|
|
13751
14202
|
return false;
|
|
13752
|
-
|
|
13753
|
-
return true;
|
|
13754
|
-
if (b.id === "focus.detach" && focus.focused() === "workspace")
|
|
13755
|
-
return true;
|
|
13756
|
-
return false;
|
|
14203
|
+
return b.scope === focus.focused();
|
|
13757
14204
|
});
|
|
13758
14205
|
const rightHints = KobeKeymap.filter((b) => b.hint?.pin === "right");
|
|
13759
14206
|
return (() => {
|
|
@@ -13807,7 +14254,7 @@ function StatusBar() {
|
|
|
13807
14254
|
insertNode(_el$0, createTextNode(`Press Ctrl+C again to exit`));
|
|
13808
14255
|
setProp(_el$0, "wrapMode", "none");
|
|
13809
14256
|
effect((_p$) => {
|
|
13810
|
-
var _v$4 = theme.warning, _v$5 =
|
|
14257
|
+
var _v$4 = theme.warning, _v$5 = TextAttributes13.BOLD;
|
|
13811
14258
|
_v$4 !== _p$.e && (_p$.e = setProp(_el$0, "fg", _v$4, _p$.e));
|
|
13812
14259
|
_v$5 !== _p$.t && (_p$.t = setProp(_el$0, "attributes", _v$5, _p$.t));
|
|
13813
14260
|
return _p$;
|
|
@@ -13819,7 +14266,7 @@ function StatusBar() {
|
|
|
13819
14266
|
}
|
|
13820
14267
|
}), null);
|
|
13821
14268
|
effect((_p$) => {
|
|
13822
|
-
var _v$6 = theme.primary, _v$7 =
|
|
14269
|
+
var _v$6 = theme.primary, _v$7 = TextAttributes13.BOLD;
|
|
13823
14270
|
_v$6 !== _p$.e && (_p$.e = setProp(_el$8, "fg", _v$6, _p$.e));
|
|
13824
14271
|
_v$7 !== _p$.t && (_p$.t = setProp(_el$8, "attributes", _v$7, _p$.t));
|
|
13825
14272
|
return _p$;
|
|
@@ -13845,7 +14292,7 @@ var init_status_bar = __esm(() => {
|
|
|
13845
14292
|
});
|
|
13846
14293
|
|
|
13847
14294
|
// src/tui/component/toast-overlay.tsx
|
|
13848
|
-
import { TextAttributes as
|
|
14295
|
+
import { TextAttributes as TextAttributes14 } from "@opentui/core";
|
|
13849
14296
|
function ToastOverlay() {
|
|
13850
14297
|
const {
|
|
13851
14298
|
theme
|
|
@@ -13888,7 +14335,7 @@ function ToastOverlay() {
|
|
|
13888
14335
|
setProp(_el$4, "wrapMode", "none");
|
|
13889
14336
|
insert(_el$4, () => toast.title);
|
|
13890
14337
|
effect((_p$) => {
|
|
13891
|
-
var _v$3 = bg(), _v$4 = fg(), _v$5 =
|
|
14338
|
+
var _v$3 = bg(), _v$4 = fg(), _v$5 = TextAttributes14.BOLD, _v$6 = fg();
|
|
13892
14339
|
_v$3 !== _p$.e && (_p$.e = setProp(_el$2, "backgroundColor", _v$3, _p$.e));
|
|
13893
14340
|
_v$4 !== _p$.t && (_p$.t = setProp(_el$3, "fg", _v$4, _p$.t));
|
|
13894
14341
|
_v$5 !== _p$.a && (_p$.a = setProp(_el$3, "attributes", _v$5, _p$.a));
|
|
@@ -13932,7 +14379,7 @@ var init_toast_overlay = __esm(() => {
|
|
|
13932
14379
|
});
|
|
13933
14380
|
|
|
13934
14381
|
// src/tui/component/create-pr-button.tsx
|
|
13935
|
-
import { TextAttributes as
|
|
14382
|
+
import { TextAttributes as TextAttributes15 } from "@opentui/core";
|
|
13936
14383
|
function isEnabled(task) {
|
|
13937
14384
|
if (!task)
|
|
13938
14385
|
return false;
|
|
@@ -13969,7 +14416,7 @@ function CreatePRButton(props) {
|
|
|
13969
14416
|
insertNode(_el$4, createTextNode(`Create PR`));
|
|
13970
14417
|
setProp(_el$4, "wrapMode", "none");
|
|
13971
14418
|
effect((_p$) => {
|
|
13972
|
-
var _v$ = enabled() ? onClick : undefined, _v$2 = bracketColor(), _v$3 =
|
|
14419
|
+
var _v$ = enabled() ? onClick : undefined, _v$2 = bracketColor(), _v$3 = TextAttributes15.BOLD, _v$4 = labelColor();
|
|
13973
14420
|
_v$ !== _p$.e && (_p$.e = setProp(_el$, "onMouseUp", _v$, _p$.e));
|
|
13974
14421
|
_v$2 !== _p$.t && (_p$.t = setProp(_el$2, "fg", _v$2, _p$.t));
|
|
13975
14422
|
_v$3 !== _p$.a && (_p$.a = setProp(_el$2, "attributes", _v$3, _p$.a));
|
|
@@ -14259,7 +14706,7 @@ var init_markdown_parser = __esm(() => {
|
|
|
14259
14706
|
});
|
|
14260
14707
|
|
|
14261
14708
|
// src/tui/panes/chat/Markdown.tsx
|
|
14262
|
-
import { TextAttributes as
|
|
14709
|
+
import { TextAttributes as TextAttributes16 } from "@opentui/core";
|
|
14263
14710
|
function InlineSpans(props) {
|
|
14264
14711
|
const {
|
|
14265
14712
|
theme
|
|
@@ -14289,7 +14736,7 @@ function InlineSpans(props) {
|
|
|
14289
14736
|
insert(_el$3, () => t.text, _el$5);
|
|
14290
14737
|
effect((_$p) => setProp(_el$3, "style", {
|
|
14291
14738
|
fg: theme.accent,
|
|
14292
|
-
attributes:
|
|
14739
|
+
attributes: TextAttributes16.DIM
|
|
14293
14740
|
}, _$p));
|
|
14294
14741
|
return _el$3;
|
|
14295
14742
|
})();
|
|
@@ -14301,7 +14748,7 @@ function InlineSpans(props) {
|
|
|
14301
14748
|
insert(_el$6, () => showUrl ? t.text : t.href);
|
|
14302
14749
|
effect((_$p) => setProp(_el$6, "style", {
|
|
14303
14750
|
fg: theme.accent,
|
|
14304
|
-
attributes:
|
|
14751
|
+
attributes: TextAttributes16.UNDERLINE
|
|
14305
14752
|
}, _$p));
|
|
14306
14753
|
return _el$6;
|
|
14307
14754
|
})(), createComponent2(Show, {
|
|
@@ -14313,7 +14760,7 @@ function InlineSpans(props) {
|
|
|
14313
14760
|
insert(_el$7, () => t.href, _el$9);
|
|
14314
14761
|
effect((_$p) => setProp(_el$7, "style", {
|
|
14315
14762
|
fg: theme.textMuted,
|
|
14316
|
-
attributes:
|
|
14763
|
+
attributes: TextAttributes16.DIM
|
|
14317
14764
|
}, _$p));
|
|
14318
14765
|
return _el$7;
|
|
14319
14766
|
}
|
|
@@ -14490,7 +14937,7 @@ function VerticalTable(props) {
|
|
|
14490
14937
|
var _el$20 = createElement("text");
|
|
14491
14938
|
insertNode(_el$20, createTextNode(`\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500`));
|
|
14492
14939
|
effect((_p$) => {
|
|
14493
|
-
var _v$4 = theme.textMuted, _v$5 =
|
|
14940
|
+
var _v$4 = theme.textMuted, _v$5 = TextAttributes16.DIM;
|
|
14494
14941
|
_v$4 !== _p$.e && (_p$.e = setProp(_el$20, "fg", _v$4, _p$.e));
|
|
14495
14942
|
_v$5 !== _p$.t && (_p$.t = setProp(_el$20, "attributes", _v$5, _p$.t));
|
|
14496
14943
|
return _p$;
|
|
@@ -14581,7 +15028,7 @@ function BlockNode(props) {
|
|
|
14581
15028
|
})();
|
|
14582
15029
|
}
|
|
14583
15030
|
if (b.kind === "heading") {
|
|
14584
|
-
const attrs = b.level === 1 ?
|
|
15031
|
+
const attrs = b.level === 1 ? TextAttributes16.BOLD | TextAttributes16.UNDERLINE : TextAttributes16.BOLD;
|
|
14585
15032
|
const fg = b.level <= 2 ? theme.accent : theme.text;
|
|
14586
15033
|
const tokens = parseInline(b.text);
|
|
14587
15034
|
return (() => {
|
|
@@ -14607,7 +15054,7 @@ function BlockNode(props) {
|
|
|
14607
15054
|
const checkbox = item.checked ? "[x] " : "[ ] ";
|
|
14608
15055
|
const bullet = b.ordered ? `${b.start + idx()}. ` : "\u2022 ";
|
|
14609
15056
|
const prefix = isTask ? checkbox : bullet;
|
|
14610
|
-
const labelAttrs = isTask && item.checked ?
|
|
15057
|
+
const labelAttrs = isTask && item.checked ? TextAttributes16.DIM : 0;
|
|
14611
15058
|
return (() => {
|
|
14612
15059
|
var _el$30 = createElement("text"), _el$31 = createElement("span");
|
|
14613
15060
|
insertNode(_el$30, _el$31);
|
|
@@ -14654,9 +15101,9 @@ function BlockNode(props) {
|
|
|
14654
15101
|
}
|
|
14655
15102
|
}), null);
|
|
14656
15103
|
effect((_p$) => {
|
|
14657
|
-
var _v$10 = theme.textMuted, _v$11 =
|
|
15104
|
+
var _v$10 = theme.textMuted, _v$11 = TextAttributes16.ITALIC, _v$12 = {
|
|
14658
15105
|
fg: theme.textMuted,
|
|
14659
|
-
attributes:
|
|
15106
|
+
attributes: TextAttributes16.DIM
|
|
14660
15107
|
};
|
|
14661
15108
|
_v$10 !== _p$.e && (_p$.e = setProp(_el$33, "fg", _v$10, _p$.e));
|
|
14662
15109
|
_v$11 !== _p$.t && (_p$.t = setProp(_el$33, "attributes", _v$11, _p$.t));
|
|
@@ -14698,7 +15145,7 @@ function BlockNode(props) {
|
|
|
14698
15145
|
var _el$37 = createElement("text");
|
|
14699
15146
|
insert(_el$37, () => b.lang);
|
|
14700
15147
|
effect((_p$) => {
|
|
14701
|
-
var _v$13 = theme.textMuted, _v$14 =
|
|
15148
|
+
var _v$13 = theme.textMuted, _v$14 = TextAttributes16.DIM;
|
|
14702
15149
|
_v$13 !== _p$.e && (_p$.e = setProp(_el$37, "fg", _v$13, _p$.e));
|
|
14703
15150
|
_v$14 !== _p$.t && (_p$.t = setProp(_el$37, "attributes", _v$14, _p$.t));
|
|
14704
15151
|
return _p$;
|
|
@@ -14758,7 +15205,7 @@ var init_Markdown = __esm(() => {
|
|
|
14758
15205
|
});
|
|
14759
15206
|
|
|
14760
15207
|
// src/tui/component/update-dialog.tsx
|
|
14761
|
-
import { TextAttributes as
|
|
15208
|
+
import { TextAttributes as TextAttributes17 } from "@opentui/core";
|
|
14762
15209
|
function UpdateDialog(props) {
|
|
14763
15210
|
const dialog = useDialog();
|
|
14764
15211
|
const {
|
|
@@ -14873,7 +15320,7 @@ function UpdateDialog(props) {
|
|
|
14873
15320
|
}
|
|
14874
15321
|
}));
|
|
14875
15322
|
effect((_p$) => {
|
|
14876
|
-
var _v$ =
|
|
15323
|
+
var _v$ = TextAttributes17.BOLD, _v$2 = theme.text, _v$3 = theme.textMuted, _v$4 = theme.textMuted, _v$5 = theme.textMuted, _v$6 = theme.warning, _v$7 = TextAttributes17.BOLD, _v$8 = theme.textMuted, _v$9 = theme.accent, _v$0 = TextAttributes17.BOLD, _v$1 = theme.textMuted;
|
|
14877
15324
|
_v$ !== _p$.e && (_p$.e = setProp(_el$3, "attributes", _v$, _p$.e));
|
|
14878
15325
|
_v$2 !== _p$.t && (_p$.t = setProp(_el$3, "fg", _v$2, _p$.t));
|
|
14879
15326
|
_v$3 !== _p$.a && (_p$.a = setProp(_el$5, "fg", _v$3, _p$.a));
|
|
@@ -14924,17 +15371,20 @@ var init_update_dialog = __esm(() => {
|
|
|
14924
15371
|
});
|
|
14925
15372
|
|
|
14926
15373
|
// src/tui/component/top-bar.tsx
|
|
14927
|
-
import { TextAttributes as
|
|
15374
|
+
import { TextAttributes as TextAttributes18 } from "@opentui/core";
|
|
14928
15375
|
function TopBar(props) {
|
|
14929
15376
|
const {
|
|
14930
15377
|
theme
|
|
14931
15378
|
} = useTheme();
|
|
14932
15379
|
const dialog = useDialog();
|
|
15380
|
+
const remoteOrch = props.orchestrator instanceof RemoteOrchestrator ? props.orchestrator : null;
|
|
15381
|
+
const rcBridge = props.orchestrator.rcBridgeSignal();
|
|
15382
|
+
const isBridgeOn = () => rcBridge().state === "running" || rcBridge().state === "starting";
|
|
14933
15383
|
return (() => {
|
|
14934
|
-
var _el$ = createElement("box"), _el$2 = createElement("box"), _el$3 = createElement("text"), _el$5 = createElement("text"), _el$6 = createTextNode(`v`), _el$
|
|
15384
|
+
var _el$ = createElement("box"), _el$2 = createElement("box"), _el$3 = createElement("text"), _el$5 = createElement("text"), _el$6 = createTextNode(`v`), _el$10 = createElement("box"), _el$12 = createElement("box");
|
|
14935
15385
|
insertNode(_el$, _el$2);
|
|
14936
|
-
insertNode(_el$, _el$0);
|
|
14937
15386
|
insertNode(_el$, _el$10);
|
|
15387
|
+
insertNode(_el$, _el$12);
|
|
14938
15388
|
setProp(_el$, "flexDirection", "row");
|
|
14939
15389
|
setProp(_el$, "paddingLeft", 2);
|
|
14940
15390
|
setProp(_el$, "paddingRight", 2);
|
|
@@ -14965,7 +15415,7 @@ function TopBar(props) {
|
|
|
14965
15415
|
});
|
|
14966
15416
|
insert(_el$7, () => props.updateInfo()?.latest, _el$9);
|
|
14967
15417
|
effect((_p$) => {
|
|
14968
|
-
var _v$ = theme.warning, _v$2 =
|
|
15418
|
+
var _v$ = theme.warning, _v$2 = TextAttributes18.BOLD;
|
|
14969
15419
|
_v$ !== _p$.e && (_p$.e = setProp(_el$7, "fg", _v$, _p$.e));
|
|
14970
15420
|
_v$2 !== _p$.t && (_p$.t = setProp(_el$7, "attributes", _v$2, _p$.t));
|
|
14971
15421
|
return _p$;
|
|
@@ -14976,38 +15426,66 @@ function TopBar(props) {
|
|
|
14976
15426
|
return _el$7;
|
|
14977
15427
|
}
|
|
14978
15428
|
}), null);
|
|
14979
|
-
|
|
14980
|
-
setProp(_el$0, "flexGrow", 1);
|
|
14981
|
-
setProp(_el$0, "flexShrink", 1);
|
|
14982
|
-
setProp(_el$0, "flexBasis", 0);
|
|
14983
|
-
setProp(_el$0, "gap", 1);
|
|
14984
|
-
setProp(_el$0, "justifyContent", "center");
|
|
14985
|
-
insert(_el$0, createComponent2(Show, {
|
|
15429
|
+
insert(_el$2, createComponent2(Show, {
|
|
14986
15430
|
get when() {
|
|
14987
|
-
return
|
|
15431
|
+
return remoteOrch && isBridgeOn();
|
|
14988
15432
|
},
|
|
14989
15433
|
get children() {
|
|
14990
|
-
var _el$
|
|
14991
|
-
|
|
14992
|
-
|
|
15434
|
+
var _el$0 = createElement("text"), _el$1 = createTextNode(`\u25C9 `);
|
|
15435
|
+
insertNode(_el$0, _el$1);
|
|
15436
|
+
setProp(_el$0, "onMouseUp", () => {
|
|
15437
|
+
const orch = remoteOrch;
|
|
15438
|
+
if (orch)
|
|
15439
|
+
RcBridgeDialog.show(dialog, orch, rcBridge, props.activeTask, props.activeChatTabId);
|
|
15440
|
+
});
|
|
15441
|
+
insert(_el$0, (() => {
|
|
15442
|
+
var _c$ = memo2(() => rcBridge().state === "running");
|
|
15443
|
+
return () => _c$() ? rcBridge().bound?.taskTitle ?? rcBridge().envId ?? "RC" : "RC connecting\u2026";
|
|
15444
|
+
})(), null);
|
|
14993
15445
|
effect((_p$) => {
|
|
14994
|
-
var _v$3 = theme.
|
|
14995
|
-
_v$3 !== _p$.e && (_p$.e = setProp(_el$
|
|
14996
|
-
_v$4 !== _p$.t && (_p$.t = setProp(_el$
|
|
15446
|
+
var _v$3 = theme.accent, _v$4 = TextAttributes18.BOLD;
|
|
15447
|
+
_v$3 !== _p$.e && (_p$.e = setProp(_el$0, "fg", _v$3, _p$.e));
|
|
15448
|
+
_v$4 !== _p$.t && (_p$.t = setProp(_el$0, "attributes", _v$4, _p$.t));
|
|
14997
15449
|
return _p$;
|
|
14998
15450
|
}, {
|
|
14999
15451
|
e: undefined,
|
|
15000
15452
|
t: undefined
|
|
15001
15453
|
});
|
|
15002
|
-
return _el$
|
|
15454
|
+
return _el$0;
|
|
15003
15455
|
}
|
|
15004
|
-
}));
|
|
15456
|
+
}), null);
|
|
15005
15457
|
setProp(_el$10, "flexDirection", "row");
|
|
15006
15458
|
setProp(_el$10, "flexGrow", 1);
|
|
15007
15459
|
setProp(_el$10, "flexShrink", 1);
|
|
15008
15460
|
setProp(_el$10, "flexBasis", 0);
|
|
15009
|
-
setProp(_el$10, "
|
|
15010
|
-
|
|
15461
|
+
setProp(_el$10, "gap", 1);
|
|
15462
|
+
setProp(_el$10, "justifyContent", "center");
|
|
15463
|
+
insert(_el$10, createComponent2(Show, {
|
|
15464
|
+
get when() {
|
|
15465
|
+
return props.activeTask() !== undefined;
|
|
15466
|
+
},
|
|
15467
|
+
get children() {
|
|
15468
|
+
var _el$11 = createElement("text");
|
|
15469
|
+
setProp(_el$11, "wrapMode", "none");
|
|
15470
|
+
insert(_el$11, () => props.activeTask()?.branch);
|
|
15471
|
+
effect((_p$) => {
|
|
15472
|
+
var _v$5 = theme.text, _v$6 = TextAttributes18.BOLD;
|
|
15473
|
+
_v$5 !== _p$.e && (_p$.e = setProp(_el$11, "fg", _v$5, _p$.e));
|
|
15474
|
+
_v$6 !== _p$.t && (_p$.t = setProp(_el$11, "attributes", _v$6, _p$.t));
|
|
15475
|
+
return _p$;
|
|
15476
|
+
}, {
|
|
15477
|
+
e: undefined,
|
|
15478
|
+
t: undefined
|
|
15479
|
+
});
|
|
15480
|
+
return _el$11;
|
|
15481
|
+
}
|
|
15482
|
+
}));
|
|
15483
|
+
setProp(_el$12, "flexDirection", "row");
|
|
15484
|
+
setProp(_el$12, "flexGrow", 1);
|
|
15485
|
+
setProp(_el$12, "flexShrink", 1);
|
|
15486
|
+
setProp(_el$12, "flexBasis", 0);
|
|
15487
|
+
setProp(_el$12, "justifyContent", "flex-end");
|
|
15488
|
+
insert(_el$12, createComponent2(CreatePRButton, {
|
|
15011
15489
|
get orchestrator() {
|
|
15012
15490
|
return props.orchestrator;
|
|
15013
15491
|
},
|
|
@@ -15016,10 +15494,10 @@ function TopBar(props) {
|
|
|
15016
15494
|
}
|
|
15017
15495
|
}));
|
|
15018
15496
|
effect((_p$) => {
|
|
15019
|
-
var _v$
|
|
15020
|
-
_v$
|
|
15021
|
-
_v$
|
|
15022
|
-
_v$
|
|
15497
|
+
var _v$7 = theme.primary, _v$8 = TextAttributes18.BOLD, _v$9 = theme.textMuted;
|
|
15498
|
+
_v$7 !== _p$.e && (_p$.e = setProp(_el$3, "fg", _v$7, _p$.e));
|
|
15499
|
+
_v$8 !== _p$.t && (_p$.t = setProp(_el$3, "attributes", _v$8, _p$.t));
|
|
15500
|
+
_v$9 !== _p$.a && (_p$.a = setProp(_el$5, "fg", _v$9, _p$.a));
|
|
15023
15501
|
return _p$;
|
|
15024
15502
|
}, {
|
|
15025
15503
|
e: undefined,
|
|
@@ -15037,11 +15515,14 @@ var init_top_bar = __esm(() => {
|
|
|
15037
15515
|
init_solid();
|
|
15038
15516
|
init_solid();
|
|
15039
15517
|
init_solid();
|
|
15518
|
+
init_solid();
|
|
15040
15519
|
init_dev();
|
|
15041
15520
|
init_package();
|
|
15521
|
+
init_remote_orchestrator();
|
|
15042
15522
|
init_theme();
|
|
15043
15523
|
init_dialog();
|
|
15044
15524
|
init_create_pr_button();
|
|
15525
|
+
init_rc_bridge_dialog();
|
|
15045
15526
|
init_update_dialog();
|
|
15046
15527
|
});
|
|
15047
15528
|
|
|
@@ -16235,11 +16716,22 @@ var init_use_pane_sizes = __esm(() => {
|
|
|
16235
16716
|
|
|
16236
16717
|
// src/tui/component/new-task-dialog/state.ts
|
|
16237
16718
|
import * as fs5 from "fs";
|
|
16719
|
+
import * as os from "os";
|
|
16720
|
+
function pickerModeFor(value, repoOptions) {
|
|
16721
|
+
const trimmed = value.trim();
|
|
16722
|
+
if (repoOptions.includes(trimmed))
|
|
16723
|
+
return "saved";
|
|
16724
|
+
if (trimmed.startsWith("~"))
|
|
16725
|
+
return "browse";
|
|
16726
|
+
if (trimmed.includes("/"))
|
|
16727
|
+
return "browse";
|
|
16728
|
+
return "saved";
|
|
16729
|
+
}
|
|
16238
16730
|
function stripNewlines(v) {
|
|
16239
16731
|
return v.replace(/[\r\n]+/g, "");
|
|
16240
16732
|
}
|
|
16241
16733
|
function nextField(field) {
|
|
16242
|
-
return field === "
|
|
16734
|
+
return field === "repo" ? "baseRef" : "repo";
|
|
16243
16735
|
}
|
|
16244
16736
|
function computeRepoOptions(defaultRepo, savedRepos) {
|
|
16245
16737
|
const seen = new Set;
|
|
@@ -16332,6 +16824,59 @@ function listLocalBranches(repo) {
|
|
|
16332
16824
|
return [];
|
|
16333
16825
|
}
|
|
16334
16826
|
}
|
|
16827
|
+
function expandHome(p) {
|
|
16828
|
+
if (p === "~")
|
|
16829
|
+
return os.homedir();
|
|
16830
|
+
if (p.startsWith("~/"))
|
|
16831
|
+
return os.homedir() + p.slice(1);
|
|
16832
|
+
return p;
|
|
16833
|
+
}
|
|
16834
|
+
function splitPathForDirSuggest(value) {
|
|
16835
|
+
if (!value)
|
|
16836
|
+
return { base: "", filter: "" };
|
|
16837
|
+
const normalized = value === "~" ? "~/" : value;
|
|
16838
|
+
const expanded = expandHome(normalized);
|
|
16839
|
+
if (expanded.endsWith("/"))
|
|
16840
|
+
return { base: expanded, filter: "" };
|
|
16841
|
+
const lastSlash = expanded.lastIndexOf("/");
|
|
16842
|
+
if (lastSlash === -1)
|
|
16843
|
+
return { base: "", filter: expanded };
|
|
16844
|
+
return { base: expanded.slice(0, lastSlash + 1), filter: expanded.slice(lastSlash + 1) };
|
|
16845
|
+
}
|
|
16846
|
+
function listSubdirs(base) {
|
|
16847
|
+
if (!base)
|
|
16848
|
+
return [];
|
|
16849
|
+
try {
|
|
16850
|
+
const entries = fs5.readdirSync(base, { withFileTypes: true });
|
|
16851
|
+
const out = [];
|
|
16852
|
+
for (const e of entries) {
|
|
16853
|
+
if (e.isDirectory())
|
|
16854
|
+
out.push(e.name);
|
|
16855
|
+
}
|
|
16856
|
+
return out.sort((a, b) => a.localeCompare(b));
|
|
16857
|
+
} catch {
|
|
16858
|
+
return [];
|
|
16859
|
+
}
|
|
16860
|
+
}
|
|
16861
|
+
function filterSubdirs(all, filter) {
|
|
16862
|
+
const f = filter.toLowerCase();
|
|
16863
|
+
const showHidden = f.startsWith(".");
|
|
16864
|
+
const visible = showHidden ? all : all.filter((n) => !n.startsWith("."));
|
|
16865
|
+
if (!f)
|
|
16866
|
+
return visible;
|
|
16867
|
+
return visible.filter((n) => n.toLowerCase().startsWith(f));
|
|
16868
|
+
}
|
|
16869
|
+
function joinDrill(typedValue, baseExpanded, name) {
|
|
16870
|
+
const out = `${baseExpanded + name}/`;
|
|
16871
|
+
if (typedValue.startsWith("~")) {
|
|
16872
|
+
const home = os.homedir();
|
|
16873
|
+
if (out === `${home}/`)
|
|
16874
|
+
return "~/";
|
|
16875
|
+
if (out.startsWith(`${home}/`))
|
|
16876
|
+
return `~${out.slice(home.length)}`;
|
|
16877
|
+
}
|
|
16878
|
+
return out;
|
|
16879
|
+
}
|
|
16335
16880
|
function resolveBaseRef(typed, filteredBranches, cursor) {
|
|
16336
16881
|
const picked = filteredBranches[cursor];
|
|
16337
16882
|
if (picked)
|
|
@@ -16343,49 +16888,49 @@ var DEFAULT_BASE_REF = "main", PICKER_MAX_VISIBLE = 8;
|
|
|
16343
16888
|
var init_state2 = () => {};
|
|
16344
16889
|
|
|
16345
16890
|
// src/tui/component/new-task-dialog/dialog.tsx
|
|
16346
|
-
import { TextAttributes as
|
|
16891
|
+
import { TextAttributes as TextAttributes19 } from "@opentui/core";
|
|
16347
16892
|
function NewTaskDialogView(props) {
|
|
16348
16893
|
const dialog = useDialog();
|
|
16349
16894
|
const {
|
|
16350
16895
|
theme
|
|
16351
16896
|
} = useTheme();
|
|
16352
|
-
const [field, setField] = createSignal("
|
|
16897
|
+
const [field, setField] = createSignal("repo");
|
|
16353
16898
|
const [repo, setRepo] = createSignal(props.defaultRepo);
|
|
16354
16899
|
const [baseRef, setBaseRef] = createSignal(DEFAULT_BASE_REF);
|
|
16355
16900
|
const repoOptions = createMemo(() => computeRepoOptions(props.defaultRepo, props.savedRepos));
|
|
16356
|
-
const
|
|
16357
|
-
|
|
16358
|
-
|
|
16359
|
-
|
|
16360
|
-
|
|
16361
|
-
|
|
16901
|
+
const mode = createMemo(() => pickerModeFor(repo(), repoOptions()));
|
|
16902
|
+
const subdirSplit = createMemo(() => splitPathForDirSuggest(repo()));
|
|
16903
|
+
const subdirAll = createMemo(() => listSubdirs(subdirSplit().base));
|
|
16904
|
+
const subdirFiltered = createMemo(() => filterSubdirs(subdirAll(), subdirSplit().filter));
|
|
16905
|
+
const savedFiltered = createMemo(() => filterRepos(repoOptions(), repo()));
|
|
16906
|
+
const activeList = createMemo(() => mode() === "browse" ? subdirFiltered() : savedFiltered());
|
|
16362
16907
|
const [repoCursor, setRepoCursor] = createSignal(0);
|
|
16363
|
-
const
|
|
16908
|
+
const activeWindow = createMemo(() => windowAround(activeList(), repoCursor()));
|
|
16909
|
+
const branches = createMemo(() => listLocalBranches(expandHome(repo().trim())));
|
|
16364
16910
|
const branchFiltered = createMemo(() => filterBranches(branches(), baseRef()));
|
|
16365
16911
|
const [branchCursor, setBranchCursor] = createSignal(0);
|
|
16912
|
+
const branchWindow = createMemo(() => windowAround(branchFiltered(), branchCursor()));
|
|
16366
16913
|
createEffect(() => {
|
|
16367
16914
|
branchFiltered();
|
|
16368
16915
|
setBranchCursor(0);
|
|
16369
16916
|
});
|
|
16370
16917
|
createEffect(() => {
|
|
16371
|
-
|
|
16918
|
+
activeList();
|
|
16372
16919
|
setRepoCursor(0);
|
|
16373
16920
|
});
|
|
16374
|
-
const repoWindow = createMemo(() => windowAround(repoFiltered(), repoCursor()));
|
|
16375
|
-
const branchWindow = createMemo(() => windowAround(branchFiltered(), branchCursor()));
|
|
16376
16921
|
const [submitError, setSubmitError] = createSignal(null);
|
|
16377
16922
|
createEffect(() => {
|
|
16378
16923
|
repo();
|
|
16379
16924
|
setSubmitError(null);
|
|
16380
16925
|
});
|
|
16381
16926
|
function commit() {
|
|
16382
|
-
const r = repo().trim();
|
|
16927
|
+
const r = expandHome(repo().trim());
|
|
16383
16928
|
if (!r)
|
|
16384
16929
|
return;
|
|
16385
16930
|
const reason = validateRepoPath(r);
|
|
16386
16931
|
if (reason) {
|
|
16387
16932
|
setSubmitError(reason);
|
|
16388
|
-
setField("
|
|
16933
|
+
setField("repo");
|
|
16389
16934
|
return;
|
|
16390
16935
|
}
|
|
16391
16936
|
const b = baseRef().trim() || DEFAULT_BASE_REF;
|
|
@@ -16395,11 +16940,52 @@ function NewTaskDialogView(props) {
|
|
|
16395
16940
|
});
|
|
16396
16941
|
dialog.clear();
|
|
16397
16942
|
}
|
|
16398
|
-
function
|
|
16399
|
-
|
|
16943
|
+
function onRepoSubmit() {
|
|
16944
|
+
if (!repo().trim() && mode() === "saved") {
|
|
16945
|
+
const picked2 = activeList()[0];
|
|
16946
|
+
if (picked2) {
|
|
16947
|
+
setRepo(picked2);
|
|
16948
|
+
commit();
|
|
16949
|
+
return;
|
|
16950
|
+
}
|
|
16951
|
+
}
|
|
16952
|
+
if (mode() === "browse") {
|
|
16953
|
+
const list = subdirFiltered();
|
|
16954
|
+
const picked2 = list[repoCursor()];
|
|
16955
|
+
const split = subdirSplit();
|
|
16956
|
+
if (picked2) {
|
|
16957
|
+
if (split.filter) {
|
|
16958
|
+
setRepo(joinDrill(repo(), split.base, picked2));
|
|
16959
|
+
return;
|
|
16960
|
+
}
|
|
16961
|
+
const resolved = expandHome(repo().trim());
|
|
16962
|
+
if (!resolved || validateRepoPath(resolved) !== null) {
|
|
16963
|
+
setRepo(joinDrill(repo(), split.base, picked2));
|
|
16964
|
+
return;
|
|
16965
|
+
}
|
|
16966
|
+
}
|
|
16967
|
+
commit();
|
|
16968
|
+
return;
|
|
16969
|
+
}
|
|
16970
|
+
const picked = activeList()[repoCursor()];
|
|
16971
|
+
if (picked) {
|
|
16972
|
+
setRepo(picked);
|
|
16973
|
+
commit();
|
|
16974
|
+
return;
|
|
16975
|
+
}
|
|
16976
|
+
commit();
|
|
16977
|
+
}
|
|
16978
|
+
function selectRepoAtMouse(absoluteIndex) {
|
|
16979
|
+
const list = activeList();
|
|
16400
16980
|
const picked = list[absoluteIndex];
|
|
16401
16981
|
if (!picked)
|
|
16402
16982
|
return;
|
|
16983
|
+
if (mode() === "browse") {
|
|
16984
|
+
const split = subdirSplit();
|
|
16985
|
+
setRepo(joinDrill(repo(), split.base, picked));
|
|
16986
|
+
setRepoCursor(absoluteIndex);
|
|
16987
|
+
return;
|
|
16988
|
+
}
|
|
16403
16989
|
setRepo(picked);
|
|
16404
16990
|
setRepoCursor(absoluteIndex);
|
|
16405
16991
|
setField("baseRef");
|
|
@@ -16411,15 +16997,13 @@ function NewTaskDialogView(props) {
|
|
|
16411
16997
|
}, {
|
|
16412
16998
|
key: "up",
|
|
16413
16999
|
cmd: () => {
|
|
16414
|
-
if (field() === "
|
|
16415
|
-
const list2 =
|
|
17000
|
+
if (field() === "repo") {
|
|
17001
|
+
const list2 = activeList();
|
|
16416
17002
|
if (list2.length === 0)
|
|
16417
17003
|
return;
|
|
16418
17004
|
setRepoCursor(clampCursor(repoCursor() - 1, list2.length));
|
|
16419
17005
|
return;
|
|
16420
17006
|
}
|
|
16421
|
-
if (field() === "repoCustom")
|
|
16422
|
-
return;
|
|
16423
17007
|
if (field() !== "baseRef")
|
|
16424
17008
|
return;
|
|
16425
17009
|
const list = branchFiltered();
|
|
@@ -16430,15 +17014,13 @@ function NewTaskDialogView(props) {
|
|
|
16430
17014
|
}, {
|
|
16431
17015
|
key: "down",
|
|
16432
17016
|
cmd: () => {
|
|
16433
|
-
if (field() === "
|
|
16434
|
-
const list2 =
|
|
17017
|
+
if (field() === "repo") {
|
|
17018
|
+
const list2 = activeList();
|
|
16435
17019
|
if (list2.length === 0)
|
|
16436
17020
|
return;
|
|
16437
17021
|
setRepoCursor(clampCursor(repoCursor() + 1, list2.length));
|
|
16438
17022
|
return;
|
|
16439
17023
|
}
|
|
16440
|
-
if (field() === "repoCustom")
|
|
16441
|
-
return;
|
|
16442
17024
|
if (field() !== "baseRef")
|
|
16443
17025
|
return;
|
|
16444
17026
|
const list = branchFiltered();
|
|
@@ -16446,20 +17028,14 @@ function NewTaskDialogView(props) {
|
|
|
16446
17028
|
return;
|
|
16447
17029
|
setBranchCursor(clampCursor(branchCursor() + 1, list.length));
|
|
16448
17030
|
}
|
|
16449
|
-
}, {
|
|
16450
|
-
key: "return",
|
|
16451
|
-
cmd: () => {
|
|
16452
|
-
if (field() === "repoPicker")
|
|
16453
|
-
selectRepoAt(repoCursor());
|
|
16454
|
-
}
|
|
16455
17031
|
}]
|
|
16456
17032
|
}));
|
|
16457
17033
|
return (() => {
|
|
16458
|
-
var _el$ = createElement("box"), _el$2 = createElement("box"), _el$3 = createElement("text"), _el$5 = createElement("text"), _el$
|
|
17034
|
+
var _el$ = createElement("box"), _el$2 = createElement("box"), _el$3 = createElement("text"), _el$5 = createElement("text"), _el$7 = createElement("box"), _el$8 = createElement("text"), _el$0 = createElement("input"), _el$18 = createElement("box"), _el$19 = createElement("text"), _el$21 = createElement("input"), _el$31 = createElement("box"), _el$32 = createElement("text");
|
|
16459
17035
|
insertNode(_el$, _el$2);
|
|
16460
|
-
insertNode(_el$, _el$
|
|
16461
|
-
insertNode(_el$, _el$
|
|
16462
|
-
insertNode(_el$, _el$
|
|
17036
|
+
insertNode(_el$, _el$7);
|
|
17037
|
+
insertNode(_el$, _el$18);
|
|
17038
|
+
insertNode(_el$, _el$31);
|
|
16463
17039
|
setProp(_el$, "paddingLeft", 2);
|
|
16464
17040
|
setProp(_el$, "paddingRight", 2);
|
|
16465
17041
|
setProp(_el$, "gap", 1);
|
|
@@ -16470,105 +17046,106 @@ function NewTaskDialogView(props) {
|
|
|
16470
17046
|
insertNode(_el$3, createTextNode(`New task`));
|
|
16471
17047
|
insertNode(_el$5, createTextNode(`esc`));
|
|
16472
17048
|
setProp(_el$5, "onMouseUp", () => props.onCancel());
|
|
17049
|
+
insertNode(_el$7, _el$8);
|
|
17050
|
+
insertNode(_el$7, _el$0);
|
|
17051
|
+
setProp(_el$7, "gap", 0);
|
|
17052
|
+
insertNode(_el$8, createTextNode(`repo`));
|
|
17053
|
+
setProp(_el$0, "onInput", (v) => setRepo(stripNewlines(v)));
|
|
17054
|
+
setProp(_el$0, "onSubmit", () => {
|
|
17055
|
+
if (!repo().trim())
|
|
17056
|
+
return;
|
|
17057
|
+
onRepoSubmit();
|
|
17058
|
+
});
|
|
16473
17059
|
insert(_el$, createComponent2(Show, {
|
|
16474
17060
|
get when() {
|
|
16475
|
-
return
|
|
17061
|
+
return memo2(() => field() === "repo")() && activeList().length > 0;
|
|
16476
17062
|
},
|
|
16477
17063
|
get children() {
|
|
16478
|
-
var _el$
|
|
16479
|
-
|
|
16480
|
-
setProp(_el$
|
|
16481
|
-
|
|
16482
|
-
insert(_el$7, createComponent2(Show, {
|
|
17064
|
+
var _el$1 = createElement("box");
|
|
17065
|
+
setProp(_el$1, "gap", 0);
|
|
17066
|
+
setProp(_el$1, "paddingLeft", 2);
|
|
17067
|
+
insert(_el$1, createComponent2(Show, {
|
|
16483
17068
|
get when() {
|
|
16484
|
-
return
|
|
17069
|
+
return activeWindow().start > 0;
|
|
16485
17070
|
},
|
|
16486
17071
|
get children() {
|
|
16487
|
-
var _el$
|
|
16488
|
-
insertNode(_el$
|
|
16489
|
-
insertNode(_el$
|
|
16490
|
-
setProp(_el$
|
|
16491
|
-
insert(_el$
|
|
16492
|
-
effect((_$p) => setProp(_el$
|
|
16493
|
-
return _el$
|
|
17072
|
+
var _el$10 = createElement("text"), _el$11 = createTextNode(`\u2191 `), _el$12 = createTextNode(` more`);
|
|
17073
|
+
insertNode(_el$10, _el$11);
|
|
17074
|
+
insertNode(_el$10, _el$12);
|
|
17075
|
+
setProp(_el$10, "wrapMode", "none");
|
|
17076
|
+
insert(_el$10, () => activeWindow().start, _el$12);
|
|
17077
|
+
effect((_$p) => setProp(_el$10, "fg", theme.textMuted, _$p));
|
|
17078
|
+
return _el$10;
|
|
16494
17079
|
}
|
|
16495
17080
|
}), null);
|
|
16496
|
-
insert(_el$
|
|
17081
|
+
insert(_el$1, createComponent2(For, {
|
|
16497
17082
|
get each() {
|
|
16498
|
-
return
|
|
17083
|
+
return activeWindow().items;
|
|
16499
17084
|
},
|
|
16500
|
-
children: (
|
|
16501
|
-
const absoluteIndex = () =>
|
|
16502
|
-
const isCursor = () =>
|
|
16503
|
-
const
|
|
16504
|
-
const
|
|
17085
|
+
children: (name, i) => {
|
|
17086
|
+
const absoluteIndex = () => activeWindow().start + i();
|
|
17087
|
+
const isCursor = () => absoluteIndex() === repoCursor();
|
|
17088
|
+
const isCurrentDir = () => mode() === "saved" && name === props.defaultRepo;
|
|
17089
|
+
const isSelected = () => mode() === "saved" && repo().trim() === name;
|
|
17090
|
+
const suffix = () => mode() === "browse" ? "/" : "";
|
|
17091
|
+
const tag = () => isCurrentDir() ? " (current dir)" : "";
|
|
16505
17092
|
return (() => {
|
|
16506
|
-
var _el$
|
|
16507
|
-
setProp(_el$
|
|
16508
|
-
setProp(_el$
|
|
16509
|
-
insert(_el$
|
|
16510
|
-
insert(_el$
|
|
16511
|
-
insert(_el$
|
|
17093
|
+
var _el$34 = createElement("text");
|
|
17094
|
+
setProp(_el$34, "wrapMode", "none");
|
|
17095
|
+
setProp(_el$34, "onMouseUp", () => selectRepoAtMouse(absoluteIndex()));
|
|
17096
|
+
insert(_el$34, () => isCursor() ? "\u25B8 " : " ", null);
|
|
17097
|
+
insert(_el$34, name, null);
|
|
17098
|
+
insert(_el$34, suffix, null);
|
|
17099
|
+
insert(_el$34, tag, null);
|
|
16512
17100
|
effect((_p$) => {
|
|
16513
|
-
var _v$10 = isCursor() ? theme.primary : isSelected() ? theme.accent : theme.textMuted, _v$11 = isCursor() ?
|
|
16514
|
-
_v$10 !== _p$.e && (_p$.e = setProp(_el$
|
|
16515
|
-
_v$11 !== _p$.t && (_p$.t = setProp(_el$
|
|
17101
|
+
var _v$10 = isCursor() ? theme.primary : isSelected() ? theme.accent : theme.textMuted, _v$11 = isCursor() ? TextAttributes19.BOLD : undefined;
|
|
17102
|
+
_v$10 !== _p$.e && (_p$.e = setProp(_el$34, "fg", _v$10, _p$.e));
|
|
17103
|
+
_v$11 !== _p$.t && (_p$.t = setProp(_el$34, "attributes", _v$11, _p$.t));
|
|
16516
17104
|
return _p$;
|
|
16517
17105
|
}, {
|
|
16518
17106
|
e: undefined,
|
|
16519
17107
|
t: undefined
|
|
16520
17108
|
});
|
|
16521
|
-
return _el$
|
|
17109
|
+
return _el$34;
|
|
16522
17110
|
})();
|
|
16523
17111
|
}
|
|
16524
17112
|
}), null);
|
|
16525
|
-
insert(_el$
|
|
17113
|
+
insert(_el$1, createComponent2(Show, {
|
|
16526
17114
|
get when() {
|
|
16527
|
-
return
|
|
17115
|
+
return activeWindow().start + activeWindow().items.length < activeWindow().total;
|
|
16528
17116
|
},
|
|
16529
17117
|
get children() {
|
|
16530
|
-
var _el$
|
|
16531
|
-
insertNode(_el$
|
|
16532
|
-
insertNode(_el$
|
|
16533
|
-
setProp(_el$
|
|
16534
|
-
insert(_el$
|
|
16535
|
-
effect((_$p) => setProp(_el$
|
|
16536
|
-
return _el$
|
|
17118
|
+
var _el$13 = createElement("text"), _el$14 = createTextNode(`\u2193 `), _el$15 = createTextNode(` more`);
|
|
17119
|
+
insertNode(_el$13, _el$14);
|
|
17120
|
+
insertNode(_el$13, _el$15);
|
|
17121
|
+
setProp(_el$13, "wrapMode", "none");
|
|
17122
|
+
insert(_el$13, () => activeWindow().total - activeWindow().start - activeWindow().items.length, _el$15);
|
|
17123
|
+
effect((_$p) => setProp(_el$13, "fg", theme.textMuted, _$p));
|
|
17124
|
+
return _el$13;
|
|
16537
17125
|
}
|
|
16538
17126
|
}), null);
|
|
16539
|
-
|
|
16540
|
-
return _el$7;
|
|
17127
|
+
return _el$1;
|
|
16541
17128
|
}
|
|
16542
|
-
}), _el$
|
|
16543
|
-
insertNode(_el$14, _el$15);
|
|
16544
|
-
insertNode(_el$14, _el$17);
|
|
16545
|
-
setProp(_el$14, "gap", 0);
|
|
16546
|
-
insertNode(_el$15, createTextNode(`or type a custom path`));
|
|
16547
|
-
setProp(_el$17, "onInput", (v) => setRepo(stripNewlines(v)));
|
|
16548
|
-
setProp(_el$17, "onSubmit", () => {
|
|
16549
|
-
if (!repo().trim())
|
|
16550
|
-
return;
|
|
16551
|
-
commit();
|
|
16552
|
-
});
|
|
17129
|
+
}), _el$18);
|
|
16553
17130
|
insert(_el$, createComponent2(Show, {
|
|
16554
17131
|
get when() {
|
|
16555
17132
|
return submitError();
|
|
16556
17133
|
},
|
|
16557
17134
|
get children() {
|
|
16558
|
-
var _el$
|
|
16559
|
-
insertNode(_el$
|
|
16560
|
-
insert(_el$
|
|
16561
|
-
effect((_$p) => setProp(_el$
|
|
16562
|
-
return _el$
|
|
16563
|
-
}
|
|
16564
|
-
}), _el$
|
|
16565
|
-
insertNode(_el$
|
|
16566
|
-
insertNode(_el$
|
|
16567
|
-
setProp(_el$
|
|
16568
|
-
insertNode(_el$
|
|
16569
|
-
setProp(_el$
|
|
16570
|
-
setProp(_el$
|
|
16571
|
-
setProp(_el$
|
|
17135
|
+
var _el$16 = createElement("text"), _el$17 = createTextNode(`\u203B `);
|
|
17136
|
+
insertNode(_el$16, _el$17);
|
|
17137
|
+
insert(_el$16, submitError, null);
|
|
17138
|
+
effect((_$p) => setProp(_el$16, "fg", theme.error, _$p));
|
|
17139
|
+
return _el$16;
|
|
17140
|
+
}
|
|
17141
|
+
}), _el$18);
|
|
17142
|
+
insertNode(_el$18, _el$19);
|
|
17143
|
+
insertNode(_el$18, _el$21);
|
|
17144
|
+
setProp(_el$18, "gap", 0);
|
|
17145
|
+
insertNode(_el$19, createTextNode(`from branch`));
|
|
17146
|
+
setProp(_el$21, "placeholder", DEFAULT_BASE_REF);
|
|
17147
|
+
setProp(_el$21, "onInput", (v) => setBaseRef(stripNewlines(v)));
|
|
17148
|
+
setProp(_el$21, "onSubmit", () => {
|
|
16572
17149
|
setBaseRef(resolveBaseRef(baseRef(), branchFiltered(), branchCursor()));
|
|
16573
17150
|
commit();
|
|
16574
17151
|
});
|
|
@@ -16577,41 +17154,41 @@ function NewTaskDialogView(props) {
|
|
|
16577
17154
|
return memo2(() => !!(field() === "baseRef" && branchFiltered().length === 0))() && submitError() == null;
|
|
16578
17155
|
},
|
|
16579
17156
|
get children() {
|
|
16580
|
-
var _el$
|
|
16581
|
-
insertNode(_el$
|
|
16582
|
-
setProp(_el$
|
|
16583
|
-
setProp(_el$
|
|
16584
|
-
setProp(_el$
|
|
16585
|
-
setProp(_el$
|
|
16586
|
-
insert(_el$
|
|
16587
|
-
effect((_$p) => setProp(_el$
|
|
16588
|
-
return _el$
|
|
17157
|
+
var _el$22 = createElement("box"), _el$23 = createElement("text");
|
|
17158
|
+
insertNode(_el$22, _el$23);
|
|
17159
|
+
setProp(_el$22, "gap", 0);
|
|
17160
|
+
setProp(_el$22, "paddingLeft", 2);
|
|
17161
|
+
setProp(_el$22, "paddingBottom", 1);
|
|
17162
|
+
setProp(_el$23, "wrapMode", "none");
|
|
17163
|
+
insert(_el$23, () => branches().length === 0 ? "(no local branches found \u2014 typed text will be used as ref)" : "(no match \u2014 typed text will be used as ref)");
|
|
17164
|
+
effect((_$p) => setProp(_el$23, "fg", theme.textMuted, _$p));
|
|
17165
|
+
return _el$22;
|
|
16589
17166
|
}
|
|
16590
|
-
}), _el$
|
|
17167
|
+
}), _el$31);
|
|
16591
17168
|
insert(_el$, createComponent2(Show, {
|
|
16592
17169
|
get when() {
|
|
16593
17170
|
return memo2(() => field() === "baseRef")() && branchFiltered().length > 0;
|
|
16594
17171
|
},
|
|
16595
17172
|
get children() {
|
|
16596
|
-
var _el$
|
|
16597
|
-
setProp(_el$
|
|
16598
|
-
setProp(_el$
|
|
16599
|
-
setProp(_el$
|
|
16600
|
-
insert(_el$
|
|
17173
|
+
var _el$24 = createElement("box");
|
|
17174
|
+
setProp(_el$24, "gap", 0);
|
|
17175
|
+
setProp(_el$24, "paddingLeft", 2);
|
|
17176
|
+
setProp(_el$24, "paddingBottom", 1);
|
|
17177
|
+
insert(_el$24, createComponent2(Show, {
|
|
16601
17178
|
get when() {
|
|
16602
17179
|
return branchWindow().start > 0;
|
|
16603
17180
|
},
|
|
16604
17181
|
get children() {
|
|
16605
|
-
var _el$
|
|
16606
|
-
insertNode(_el$
|
|
16607
|
-
insertNode(_el$
|
|
16608
|
-
setProp(_el$
|
|
16609
|
-
insert(_el$
|
|
16610
|
-
effect((_$p) => setProp(_el$
|
|
16611
|
-
return _el$
|
|
17182
|
+
var _el$25 = createElement("text"), _el$26 = createTextNode(`\u2191 `), _el$27 = createTextNode(` more`);
|
|
17183
|
+
insertNode(_el$25, _el$26);
|
|
17184
|
+
insertNode(_el$25, _el$27);
|
|
17185
|
+
setProp(_el$25, "wrapMode", "none");
|
|
17186
|
+
insert(_el$25, () => branchWindow().start, _el$27);
|
|
17187
|
+
effect((_$p) => setProp(_el$25, "fg", theme.textMuted, _$p));
|
|
17188
|
+
return _el$25;
|
|
16612
17189
|
}
|
|
16613
17190
|
}), null);
|
|
16614
|
-
insert(_el$
|
|
17191
|
+
insert(_el$24, createComponent2(For, {
|
|
16615
17192
|
get each() {
|
|
16616
17193
|
return branchWindow().items;
|
|
16617
17194
|
},
|
|
@@ -16620,61 +17197,61 @@ function NewTaskDialogView(props) {
|
|
|
16620
17197
|
const isCursor = () => absoluteIndex() === branchCursor();
|
|
16621
17198
|
const isSelected = () => baseRef().trim() === name;
|
|
16622
17199
|
return (() => {
|
|
16623
|
-
var _el$
|
|
16624
|
-
setProp(_el$
|
|
16625
|
-
setProp(_el$
|
|
17200
|
+
var _el$35 = createElement("text");
|
|
17201
|
+
setProp(_el$35, "wrapMode", "none");
|
|
17202
|
+
setProp(_el$35, "onMouseUp", () => {
|
|
16626
17203
|
setBaseRef(name);
|
|
16627
17204
|
setBranchCursor(absoluteIndex());
|
|
16628
17205
|
commit();
|
|
16629
17206
|
});
|
|
16630
|
-
insert(_el$
|
|
16631
|
-
insert(_el$
|
|
17207
|
+
insert(_el$35, () => isCursor() ? "\u25B8 " : " ", null);
|
|
17208
|
+
insert(_el$35, name, null);
|
|
16632
17209
|
effect((_p$) => {
|
|
16633
|
-
var _v$12 = isCursor() ? theme.primary : isSelected() ? theme.accent : theme.textMuted, _v$13 = isCursor() ?
|
|
16634
|
-
_v$12 !== _p$.e && (_p$.e = setProp(_el$
|
|
16635
|
-
_v$13 !== _p$.t && (_p$.t = setProp(_el$
|
|
17210
|
+
var _v$12 = isCursor() ? theme.primary : isSelected() ? theme.accent : theme.textMuted, _v$13 = isCursor() ? TextAttributes19.BOLD : undefined;
|
|
17211
|
+
_v$12 !== _p$.e && (_p$.e = setProp(_el$35, "fg", _v$12, _p$.e));
|
|
17212
|
+
_v$13 !== _p$.t && (_p$.t = setProp(_el$35, "attributes", _v$13, _p$.t));
|
|
16636
17213
|
return _p$;
|
|
16637
17214
|
}, {
|
|
16638
17215
|
e: undefined,
|
|
16639
17216
|
t: undefined
|
|
16640
17217
|
});
|
|
16641
|
-
return _el$
|
|
17218
|
+
return _el$35;
|
|
16642
17219
|
})();
|
|
16643
17220
|
}
|
|
16644
17221
|
}), null);
|
|
16645
|
-
insert(_el$
|
|
17222
|
+
insert(_el$24, createComponent2(Show, {
|
|
16646
17223
|
get when() {
|
|
16647
17224
|
return branchWindow().start + branchWindow().items.length < branchWindow().total;
|
|
16648
17225
|
},
|
|
16649
17226
|
get children() {
|
|
16650
|
-
var _el$
|
|
16651
|
-
insertNode(_el$
|
|
16652
|
-
insertNode(_el$
|
|
16653
|
-
setProp(_el$
|
|
16654
|
-
insert(_el$
|
|
16655
|
-
effect((_$p) => setProp(_el$
|
|
16656
|
-
return _el$
|
|
17227
|
+
var _el$28 = createElement("text"), _el$29 = createTextNode(`\u2193 `), _el$30 = createTextNode(` more`);
|
|
17228
|
+
insertNode(_el$28, _el$29);
|
|
17229
|
+
insertNode(_el$28, _el$30);
|
|
17230
|
+
setProp(_el$28, "wrapMode", "none");
|
|
17231
|
+
insert(_el$28, () => branchWindow().total - branchWindow().start - branchWindow().items.length, _el$30);
|
|
17232
|
+
effect((_$p) => setProp(_el$28, "fg", theme.textMuted, _$p));
|
|
17233
|
+
return _el$28;
|
|
16657
17234
|
}
|
|
16658
17235
|
}), null);
|
|
16659
|
-
return _el$
|
|
17236
|
+
return _el$24;
|
|
16660
17237
|
}
|
|
16661
|
-
}), _el$
|
|
16662
|
-
insertNode(_el$
|
|
16663
|
-
setProp(_el$
|
|
16664
|
-
insertNode(_el$
|
|
17238
|
+
}), _el$31);
|
|
17239
|
+
insertNode(_el$31, _el$32);
|
|
17240
|
+
setProp(_el$31, "paddingBottom", 1);
|
|
17241
|
+
insertNode(_el$32, createTextNode(`\u2191\u2193 pick \xB7 enter select \xB7 tab next field \xB7 esc cancel`));
|
|
16665
17242
|
effect((_p$) => {
|
|
16666
|
-
var _v$ =
|
|
17243
|
+
var _v$ = TextAttributes19.BOLD, _v$2 = theme.text, _v$3 = theme.textMuted, _v$4 = field() === "repo" ? theme.accent : theme.textMuted, _v$5 = repo(), _v$6 = props.defaultRepo, _v$7 = field() === "repo", _v$8 = field() === "baseRef" ? theme.accent : theme.textMuted, _v$9 = baseRef(), _v$0 = field() === "baseRef", _v$1 = theme.textMuted;
|
|
16667
17244
|
_v$ !== _p$.e && (_p$.e = setProp(_el$3, "attributes", _v$, _p$.e));
|
|
16668
17245
|
_v$2 !== _p$.t && (_p$.t = setProp(_el$3, "fg", _v$2, _p$.t));
|
|
16669
17246
|
_v$3 !== _p$.a && (_p$.a = setProp(_el$5, "fg", _v$3, _p$.a));
|
|
16670
|
-
_v$4 !== _p$.o && (_p$.o = setProp(_el$
|
|
16671
|
-
_v$5 !== _p$.i && (_p$.i = setProp(_el$
|
|
16672
|
-
_v$6 !== _p$.n && (_p$.n = setProp(_el$
|
|
16673
|
-
_v$7 !== _p$.s && (_p$.s = setProp(_el$
|
|
16674
|
-
_v$8 !== _p$.h && (_p$.h = setProp(_el$
|
|
16675
|
-
_v$9 !== _p$.r && (_p$.r = setProp(_el$
|
|
16676
|
-
_v$0 !== _p$.d && (_p$.d = setProp(_el$
|
|
16677
|
-
_v$1 !== _p$.l && (_p$.l = setProp(_el$
|
|
17247
|
+
_v$4 !== _p$.o && (_p$.o = setProp(_el$8, "fg", _v$4, _p$.o));
|
|
17248
|
+
_v$5 !== _p$.i && (_p$.i = setProp(_el$0, "value", _v$5, _p$.i));
|
|
17249
|
+
_v$6 !== _p$.n && (_p$.n = setProp(_el$0, "placeholder", _v$6, _p$.n));
|
|
17250
|
+
_v$7 !== _p$.s && (_p$.s = setProp(_el$0, "focused", _v$7, _p$.s));
|
|
17251
|
+
_v$8 !== _p$.h && (_p$.h = setProp(_el$19, "fg", _v$8, _p$.h));
|
|
17252
|
+
_v$9 !== _p$.r && (_p$.r = setProp(_el$21, "value", _v$9, _p$.r));
|
|
17253
|
+
_v$0 !== _p$.d && (_p$.d = setProp(_el$21, "focused", _v$0, _p$.d));
|
|
17254
|
+
_v$1 !== _p$.l && (_p$.l = setProp(_el$32, "fg", _v$1, _p$.l));
|
|
16678
17255
|
return _p$;
|
|
16679
17256
|
}, {
|
|
16680
17257
|
e: undefined,
|
|
@@ -16731,7 +17308,7 @@ var init_new_task_dialog = __esm(() => {
|
|
|
16731
17308
|
});
|
|
16732
17309
|
|
|
16733
17310
|
// src/tui/component/rename-task-dialog/dialog.tsx
|
|
16734
|
-
import { TextAttributes as
|
|
17311
|
+
import { TextAttributes as TextAttributes20 } from "@opentui/core";
|
|
16735
17312
|
function RenameTaskDialogView(props) {
|
|
16736
17313
|
const dialog = useDialog();
|
|
16737
17314
|
const {
|
|
@@ -16771,7 +17348,7 @@ function RenameTaskDialogView(props) {
|
|
|
16771
17348
|
setProp(_el$0, "paddingBottom", 1);
|
|
16772
17349
|
insertNode(_el$1, createTextNode(`enter rename \xB7 esc cancel`));
|
|
16773
17350
|
effect((_p$) => {
|
|
16774
|
-
var _v$ =
|
|
17351
|
+
var _v$ = TextAttributes20.BOLD, _v$2 = theme.text, _v$3 = theme.textMuted, _v$4 = theme.accent, _v$5 = title(), _v$6 = props.currentTitle, _v$7 = theme.textMuted;
|
|
16775
17352
|
_v$ !== _p$.e && (_p$.e = setProp(_el$3, "attributes", _v$, _p$.e));
|
|
16776
17353
|
_v$2 !== _p$.t && (_p$.t = setProp(_el$3, "fg", _v$2, _p$.t));
|
|
16777
17354
|
_v$3 !== _p$.a && (_p$.a = setProp(_el$4, "fg", _v$3, _p$.a));
|
|
@@ -17094,7 +17671,7 @@ var init_use_workspace_tabs = __esm(() => {
|
|
|
17094
17671
|
});
|
|
17095
17672
|
|
|
17096
17673
|
// src/tui/component/resume-dialog.tsx
|
|
17097
|
-
import { TextAttributes as
|
|
17674
|
+
import { TextAttributes as TextAttributes21 } from "@opentui/core";
|
|
17098
17675
|
function ResumeDialog(props) {
|
|
17099
17676
|
const dialog = useDialog();
|
|
17100
17677
|
const {
|
|
@@ -17241,7 +17818,7 @@ function ResumeDialog(props) {
|
|
|
17241
17818
|
setProp(_el$9, "paddingBottom", 1);
|
|
17242
17819
|
insertNode(_el$0, createTextNode(`j/k or \u2191\u2193 navigate \u2022 enter resume \u2022 esc dismiss`));
|
|
17243
17820
|
effect((_p$) => {
|
|
17244
|
-
var _v$ =
|
|
17821
|
+
var _v$ = TextAttributes21.BOLD, _v$2 = theme.text, _v$3 = theme.textMuted, _v$4 = theme.textMuted;
|
|
17245
17822
|
_v$ !== _p$.e && (_p$.e = setProp(_el$3, "attributes", _v$, _p$.e));
|
|
17246
17823
|
_v$2 !== _p$.t && (_p$.t = setProp(_el$3, "fg", _v$2, _p$.t));
|
|
17247
17824
|
_v$3 !== _p$.a && (_p$.a = setProp(_el$5, "fg", _v$3, _p$.a));
|
|
@@ -17566,7 +18143,7 @@ var init_mention = __esm(() => {
|
|
|
17566
18143
|
});
|
|
17567
18144
|
|
|
17568
18145
|
// src/tui/panes/chat/Composer.tsx
|
|
17569
|
-
import { TextAttributes as
|
|
18146
|
+
import { TextAttributes as TextAttributes22 } from "@opentui/core";
|
|
17570
18147
|
function resolvePlaceholder(opts) {
|
|
17571
18148
|
if (!opts.hasTask)
|
|
17572
18149
|
return opts.noTaskMessage ?? "(no task \u2014 press n to create)";
|
|
@@ -18134,7 +18711,7 @@ function Composer(props) {
|
|
|
18134
18711
|
}
|
|
18135
18712
|
}), null);
|
|
18136
18713
|
effect((_p$) => {
|
|
18137
|
-
var _v$20 = active() ? theme.primary : theme.text, _v$21 = active() ?
|
|
18714
|
+
var _v$20 = active() ? theme.primary : theme.text, _v$21 = active() ? TextAttributes22.BOLD : undefined;
|
|
18138
18715
|
_v$20 !== _p$.e && (_p$.e = setProp(_el$28, "fg", _v$20, _p$.e));
|
|
18139
18716
|
_v$21 !== _p$.t && (_p$.t = setProp(_el$28, "attributes", _v$21, _p$.t));
|
|
18140
18717
|
return _p$;
|
|
@@ -18241,7 +18818,7 @@ function Composer(props) {
|
|
|
18241
18818
|
}
|
|
18242
18819
|
}), null);
|
|
18243
18820
|
effect((_p$) => {
|
|
18244
|
-
var _v$22 = active() ? theme.primary : theme.text, _v$23 = active() ?
|
|
18821
|
+
var _v$22 = active() ? theme.primary : theme.text, _v$23 = active() ? TextAttributes22.BOLD : undefined;
|
|
18245
18822
|
_v$22 !== _p$.e && (_p$.e = setProp(_el$31, "fg", _v$22, _p$.e));
|
|
18246
18823
|
_v$23 !== _p$.t && (_p$.t = setProp(_el$31, "attributes", _v$23, _p$.t));
|
|
18247
18824
|
return _p$;
|
|
@@ -19075,7 +19652,7 @@ function summarizeGlob(input, output, done) {
|
|
|
19075
19652
|
}
|
|
19076
19653
|
|
|
19077
19654
|
// src/tui/panes/chat/MessageList.tsx
|
|
19078
|
-
import { TextAttributes as
|
|
19655
|
+
import { TextAttributes as TextAttributes23 } from "@opentui/core";
|
|
19079
19656
|
function previewToolInput(input) {
|
|
19080
19657
|
if (input == null)
|
|
19081
19658
|
return "";
|
|
@@ -19171,7 +19748,7 @@ function UserRow(props) {
|
|
|
19171
19748
|
})() : null;
|
|
19172
19749
|
})(), null);
|
|
19173
19750
|
effect((_p$) => {
|
|
19174
|
-
var _v$ = theme.accent, _v$2 =
|
|
19751
|
+
var _v$ = theme.accent, _v$2 = TextAttributes23.BOLD, _v$3 = theme.primary, _v$4 = TextAttributes23.BOLD;
|
|
19175
19752
|
_v$ !== _p$.e && (_p$.e = setProp(_el$2, "fg", _v$, _p$.e));
|
|
19176
19753
|
_v$2 !== _p$.t && (_p$.t = setProp(_el$2, "attributes", _v$2, _p$.t));
|
|
19177
19754
|
_v$3 !== _p$.a && (_p$.a = setProp(_el$5, "fg", _v$3, _p$.a));
|
|
@@ -19251,7 +19828,7 @@ function UserRow(props) {
|
|
|
19251
19828
|
setProp(_el$21, "flexGrow", 1);
|
|
19252
19829
|
insert(_el$22, () => view.text);
|
|
19253
19830
|
effect((_p$) => {
|
|
19254
|
-
var _v$9 = theme.accent, _v$0 =
|
|
19831
|
+
var _v$9 = theme.accent, _v$0 = TextAttributes23.BOLD, _v$1 = theme.text;
|
|
19255
19832
|
_v$9 !== _p$.e && (_p$.e = setProp(_el$19, "fg", _v$9, _p$.e));
|
|
19256
19833
|
_v$0 !== _p$.t && (_p$.t = setProp(_el$19, "attributes", _v$0, _p$.t));
|
|
19257
19834
|
_v$1 !== _p$.a && (_p$.a = setProp(_el$22, "fg", _v$1, _p$.a));
|
|
@@ -19287,7 +19864,7 @@ function AssistantRow(props) {
|
|
|
19287
19864
|
}
|
|
19288
19865
|
}));
|
|
19289
19866
|
effect((_p$) => {
|
|
19290
|
-
var _v$10 = theme.accent, _v$11 =
|
|
19867
|
+
var _v$10 = theme.accent, _v$11 = TextAttributes23.BOLD;
|
|
19291
19868
|
_v$10 !== _p$.e && (_p$.e = setProp(_el$25, "fg", _v$10, _p$.e));
|
|
19292
19869
|
_v$11 !== _p$.t && (_p$.t = setProp(_el$25, "attributes", _v$11, _p$.t));
|
|
19293
19870
|
return _p$;
|
|
@@ -19362,7 +19939,7 @@ function ToolRow(props) {
|
|
|
19362
19939
|
}), null);
|
|
19363
19940
|
effect((_p$) => {
|
|
19364
19941
|
var _v$18 = theme.text, _v$19 = {
|
|
19365
|
-
attributes:
|
|
19942
|
+
attributes: TextAttributes23.BOLD
|
|
19366
19943
|
};
|
|
19367
19944
|
_v$18 !== _p$.e && (_p$.e = setProp(_el$45, "fg", _v$18, _p$.e));
|
|
19368
19945
|
_v$19 !== _p$.t && (_p$.t = setProp(_el$46, "style", _v$19, _p$.t));
|
|
@@ -19530,7 +20107,7 @@ function ToolRow(props) {
|
|
|
19530
20107
|
}
|
|
19531
20108
|
}), null);
|
|
19532
20109
|
effect((_p$) => {
|
|
19533
|
-
var _v$16 = prefixColor(), _v$17 =
|
|
20110
|
+
var _v$16 = prefixColor(), _v$17 = TextAttributes23.BOLD;
|
|
19534
20111
|
_v$16 !== _p$.e && (_p$.e = setProp(_el$29, "fg", _v$16, _p$.e));
|
|
19535
20112
|
_v$17 !== _p$.t && (_p$.t = setProp(_el$29, "attributes", _v$17, _p$.t));
|
|
19536
20113
|
return _p$;
|
|
@@ -19769,7 +20346,7 @@ function BashBanner(props) {
|
|
|
19769
20346
|
}
|
|
19770
20347
|
}), null);
|
|
19771
20348
|
effect((_p$) => {
|
|
19772
|
-
var _v$28 = theme.accent, _v$29 =
|
|
20349
|
+
var _v$28 = theme.accent, _v$29 = TextAttributes23.BOLD, _v$30 = theme.text;
|
|
19773
20350
|
_v$28 !== _p$.e && (_p$.e = setProp(_el$73, "fg", _v$28, _p$.e));
|
|
19774
20351
|
_v$29 !== _p$.t && (_p$.t = setProp(_el$73, "attributes", _v$29, _p$.t));
|
|
19775
20352
|
_v$30 !== _p$.a && (_p$.a = setProp(_el$76, "fg", _v$30, _p$.a));
|
|
@@ -19857,7 +20434,7 @@ function ReadGrepGlobBanner(props) {
|
|
|
19857
20434
|
}), null);
|
|
19858
20435
|
effect((_p$) => {
|
|
19859
20436
|
var _v$31 = theme.text, _v$32 = {
|
|
19860
|
-
attributes:
|
|
20437
|
+
attributes: TextAttributes23.BOLD
|
|
19861
20438
|
};
|
|
19862
20439
|
_v$31 !== _p$.e && (_p$.e = setProp(_el$81, "fg", _v$31, _p$.e));
|
|
19863
20440
|
_v$32 !== _p$.t && (_p$.t = setProp(_el$82, "style", _v$32, _p$.t));
|
|
@@ -19886,7 +20463,7 @@ function SystemRow(props) {
|
|
|
19886
20463
|
setProp(_el$87, "flexGrow", 1);
|
|
19887
20464
|
insert(_el$88, () => props.text);
|
|
19888
20465
|
effect((_p$) => {
|
|
19889
|
-
var _v$33 = theme.textMuted, _v$34 =
|
|
20466
|
+
var _v$33 = theme.textMuted, _v$34 = TextAttributes23.DIM, _v$35 = isError() ? theme.error : theme.textMuted;
|
|
19890
20467
|
_v$33 !== _p$.e && (_p$.e = setProp(_el$85, "fg", _v$33, _p$.e));
|
|
19891
20468
|
_v$34 !== _p$.t && (_p$.t = setProp(_el$85, "attributes", _v$34, _p$.t));
|
|
19892
20469
|
_v$35 !== _p$.a && (_p$.a = setProp(_el$88, "fg", _v$35, _p$.a));
|
|
@@ -19976,7 +20553,7 @@ function ApprovalRow(props) {
|
|
|
19976
20553
|
insertNode(_el$103, _el$105);
|
|
19977
20554
|
insert(_el$103, () => r().status, _el$105);
|
|
19978
20555
|
effect((_p$) => {
|
|
19979
|
-
var _v$44 = r().status === "approved" ? theme.success : theme.error, _v$45 =
|
|
20556
|
+
var _v$44 = r().status === "approved" ? theme.success : theme.error, _v$45 = TextAttributes23.BOLD;
|
|
19980
20557
|
_v$44 !== _p$.e && (_p$.e = setProp(_el$103, "fg", _v$44, _p$.e));
|
|
19981
20558
|
_v$45 !== _p$.t && (_p$.t = setProp(_el$103, "attributes", _v$45, _p$.t));
|
|
19982
20559
|
return _p$;
|
|
@@ -19993,7 +20570,7 @@ function ApprovalRow(props) {
|
|
|
19993
20570
|
insertNode(_el$99, createTextNode(`[ Approve ]`));
|
|
19994
20571
|
setProp(_el$99, "onMouseUp", () => props.onApprove(true));
|
|
19995
20572
|
effect((_p$) => {
|
|
19996
|
-
var _v$36 = theme.success, _v$37 =
|
|
20573
|
+
var _v$36 = theme.success, _v$37 = TextAttributes23.BOLD;
|
|
19997
20574
|
_v$36 !== _p$.e && (_p$.e = setProp(_el$99, "fg", _v$36, _p$.e));
|
|
19998
20575
|
_v$37 !== _p$.t && (_p$.t = setProp(_el$99, "attributes", _v$37, _p$.t));
|
|
19999
20576
|
return _p$;
|
|
@@ -20007,7 +20584,7 @@ function ApprovalRow(props) {
|
|
|
20007
20584
|
insertNode(_el$101, createTextNode(`[ Reject ]`));
|
|
20008
20585
|
setProp(_el$101, "onMouseUp", () => props.onApprove(false));
|
|
20009
20586
|
effect((_p$) => {
|
|
20010
|
-
var _v$38 = theme.error, _v$39 =
|
|
20587
|
+
var _v$38 = theme.error, _v$39 = TextAttributes23.BOLD;
|
|
20011
20588
|
_v$38 !== _p$.e && (_p$.e = setProp(_el$101, "fg", _v$38, _p$.e));
|
|
20012
20589
|
_v$39 !== _p$.t && (_p$.t = setProp(_el$101, "attributes", _v$39, _p$.t));
|
|
20013
20590
|
return _p$;
|
|
@@ -20020,7 +20597,7 @@ function ApprovalRow(props) {
|
|
|
20020
20597
|
}
|
|
20021
20598
|
}));
|
|
20022
20599
|
effect((_p$) => {
|
|
20023
|
-
var _v$40 = headerColor(), _v$41 =
|
|
20600
|
+
var _v$40 = headerColor(), _v$41 = TextAttributes23.BOLD, _v$42 = headerColor(), _v$43 = TextAttributes23.BOLD;
|
|
20024
20601
|
_v$40 !== _p$.e && (_p$.e = setProp(_el$91, "fg", _v$40, _p$.e));
|
|
20025
20602
|
_v$41 !== _p$.t && (_p$.t = setProp(_el$91, "attributes", _v$41, _p$.t));
|
|
20026
20603
|
_v$42 !== _p$.a && (_p$.a = setProp(_el$92, "fg", _v$42, _p$.a));
|
|
@@ -20242,7 +20819,7 @@ function QuestionRow(props) {
|
|
|
20242
20819
|
insertNode(_el$116, _el$118);
|
|
20243
20820
|
insert(_el$116, () => q.header, _el$118);
|
|
20244
20821
|
effect((_p$) => {
|
|
20245
|
-
var _v$52 = theme.accent, _v$53 =
|
|
20822
|
+
var _v$52 = theme.accent, _v$53 = TextAttributes23.BOLD;
|
|
20246
20823
|
_v$52 !== _p$.e && (_p$.e = setProp(_el$116, "fg", _v$52, _p$.e));
|
|
20247
20824
|
_v$53 !== _p$.t && (_p$.t = setProp(_el$116, "attributes", _v$53, _p$.t));
|
|
20248
20825
|
return _p$;
|
|
@@ -20356,7 +20933,7 @@ function QuestionRow(props) {
|
|
|
20356
20933
|
}
|
|
20357
20934
|
}), null);
|
|
20358
20935
|
effect((_p$) => {
|
|
20359
|
-
var _v$58 = isHl() ? theme.accent : theme.textMuted, _v$59 =
|
|
20936
|
+
var _v$58 = isHl() ? theme.accent : theme.textMuted, _v$59 = TextAttributes23.BOLD, _v$60 = theme.textMuted, _v$61 = isPicked() ? theme.accent : theme.textMuted, _v$62 = TextAttributes23.BOLD, _v$63 = theme.text;
|
|
20360
20937
|
_v$58 !== _p$.e && (_p$.e = setProp(_el$136, "fg", _v$58, _p$.e));
|
|
20361
20938
|
_v$59 !== _p$.t && (_p$.t = setProp(_el$136, "attributes", _v$59, _p$.t));
|
|
20362
20939
|
_v$60 !== _p$.a && (_p$.a = setProp(_el$137, "fg", _v$60, _p$.a));
|
|
@@ -20401,7 +20978,7 @@ function QuestionRow(props) {
|
|
|
20401
20978
|
insertNode(_el$147, createTextNode(`Other`));
|
|
20402
20979
|
insertNode(_el$149, createTextNode(`Type your own answer`));
|
|
20403
20980
|
effect((_p$) => {
|
|
20404
|
-
var _v$64 = isOtherHl() ? theme.accent : theme.textMuted, _v$65 =
|
|
20981
|
+
var _v$64 = isOtherHl() ? theme.accent : theme.textMuted, _v$65 = TextAttributes23.BOLD, _v$66 = theme.textMuted, _v$67 = otherPicked() ? theme.accent : theme.textMuted, _v$68 = TextAttributes23.BOLD, _v$69 = theme.text, _v$70 = theme.textMuted;
|
|
20405
20982
|
_v$64 !== _p$.e && (_p$.e = setProp(_el$143, "fg", _v$64, _p$.e));
|
|
20406
20983
|
_v$65 !== _p$.t && (_p$.t = setProp(_el$143, "attributes", _v$65, _p$.t));
|
|
20407
20984
|
_v$66 !== _p$.a && (_p$.a = setProp(_el$144, "fg", _v$66, _p$.a));
|
|
@@ -20457,7 +21034,7 @@ function QuestionRow(props) {
|
|
|
20457
21034
|
}
|
|
20458
21035
|
}), null);
|
|
20459
21036
|
effect((_p$) => {
|
|
20460
|
-
var _v$54 = isQuestionComplete(index()) ? theme.success : theme.textMuted, _v$55 =
|
|
21037
|
+
var _v$54 = isQuestionComplete(index()) ? theme.success : theme.textMuted, _v$55 = TextAttributes23.BOLD;
|
|
20461
21038
|
_v$54 !== _p$.e && (_p$.e = setProp(_el$132, "fg", _v$54, _p$.e));
|
|
20462
21039
|
_v$55 !== _p$.t && (_p$.t = setProp(_el$132, "attributes", _v$55, _p$.t));
|
|
20463
21040
|
return _p$;
|
|
@@ -20493,7 +21070,7 @@ function QuestionRow(props) {
|
|
|
20493
21070
|
setProp(_el$111, "paddingTop", 1);
|
|
20494
21071
|
insertNode(_el$112, createTextNode(`[submitted]`));
|
|
20495
21072
|
effect((_p$) => {
|
|
20496
|
-
var _v$46 = theme.success, _v$47 =
|
|
21073
|
+
var _v$46 = theme.success, _v$47 = TextAttributes23.BOLD;
|
|
20497
21074
|
_v$46 !== _p$.e && (_p$.e = setProp(_el$112, "fg", _v$46, _p$.e));
|
|
20498
21075
|
_v$47 !== _p$.t && (_p$.t = setProp(_el$112, "attributes", _v$47, _p$.t));
|
|
20499
21076
|
return _p$;
|
|
@@ -20505,7 +21082,7 @@ function QuestionRow(props) {
|
|
|
20505
21082
|
}
|
|
20506
21083
|
}), null);
|
|
20507
21084
|
effect((_p$) => {
|
|
20508
|
-
var _v$48 = theme.warning, _v$49 =
|
|
21085
|
+
var _v$48 = theme.warning, _v$49 = TextAttributes23.BOLD, _v$50 = theme.warning, _v$51 = TextAttributes23.BOLD;
|
|
20509
21086
|
_v$48 !== _p$.e && (_p$.e = setProp(_el$108, "fg", _v$48, _p$.e));
|
|
20510
21087
|
_v$49 !== _p$.t && (_p$.t = setProp(_el$108, "attributes", _v$49, _p$.t));
|
|
20511
21088
|
_v$50 !== _p$.a && (_p$.a = setProp(_el$110, "fg", _v$50, _p$.a));
|
|
@@ -20625,7 +21202,7 @@ function MessageList(props) {
|
|
|
20625
21202
|
insertNode(_el$160, _el$161);
|
|
20626
21203
|
insert(_el$160, () => props.error, null);
|
|
20627
21204
|
effect((_p$) => {
|
|
20628
|
-
var _v$71 = theme.error, _v$72 =
|
|
21205
|
+
var _v$71 = theme.error, _v$72 = TextAttributes23.BOLD, _v$73 = theme.error;
|
|
20629
21206
|
_v$71 !== _p$.e && (_p$.e = setProp(_el$158, "fg", _v$71, _p$.e));
|
|
20630
21207
|
_v$72 !== _p$.t && (_p$.t = setProp(_el$158, "attributes", _v$72, _p$.t));
|
|
20631
21208
|
_v$73 !== _p$.a && (_p$.a = setProp(_el$160, "fg", _v$73, _p$.a));
|
|
@@ -20781,7 +21358,7 @@ function ToolFoldRow(props) {
|
|
|
20781
21358
|
setProp(_el$164, "flexGrow", 1);
|
|
20782
21359
|
insert(_el$165, () => props.summary);
|
|
20783
21360
|
effect((_p$) => {
|
|
20784
|
-
var _v$74 = fg(), _v$75 =
|
|
21361
|
+
var _v$74 = fg(), _v$75 = TextAttributes23.DIM, _v$76 = theme.textMuted;
|
|
20785
21362
|
_v$74 !== _p$.e && (_p$.e = setProp(_el$163, "fg", _v$74, _p$.e));
|
|
20786
21363
|
_v$75 !== _p$.t && (_p$.t = setProp(_el$163, "attributes", _v$75, _p$.t));
|
|
20787
21364
|
_v$76 !== _p$.a && (_p$.a = setProp(_el$165, "fg", _v$76, _p$.a));
|
|
@@ -20846,7 +21423,7 @@ var init_models = __esm(() => {
|
|
|
20846
21423
|
});
|
|
20847
21424
|
|
|
20848
21425
|
// src/tui/panes/chat/composer/ModelPicker.tsx
|
|
20849
|
-
import { TextAttributes as
|
|
21426
|
+
import { TextAttributes as TextAttributes24 } from "@opentui/core";
|
|
20850
21427
|
function ModelPicker(props) {
|
|
20851
21428
|
const dialog = useDialog();
|
|
20852
21429
|
const {
|
|
@@ -20926,7 +21503,7 @@ function ModelPicker(props) {
|
|
|
20926
21503
|
})() : null;
|
|
20927
21504
|
})(), null);
|
|
20928
21505
|
effect((_p$) => {
|
|
20929
|
-
var _v$5 = active() ? theme.primary : undefined, _v$6 = active() ? theme.selectedListItemText : theme.text, _v$7 = active() ?
|
|
21506
|
+
var _v$5 = active() ? theme.primary : undefined, _v$6 = active() ? theme.selectedListItemText : theme.text, _v$7 = active() ? TextAttributes24.BOLD : undefined;
|
|
20930
21507
|
_v$5 !== _p$.e && (_p$.e = setProp(_el$1, "backgroundColor", _v$5, _p$.e));
|
|
20931
21508
|
_v$6 !== _p$.t && (_p$.t = setProp(_el$10, "fg", _v$6, _p$.t));
|
|
20932
21509
|
_v$7 !== _p$.a && (_p$.a = setProp(_el$10, "attributes", _v$7, _p$.a));
|
|
@@ -20944,7 +21521,7 @@ function ModelPicker(props) {
|
|
|
20944
21521
|
setProp(_el$8, "paddingBottom", 1);
|
|
20945
21522
|
insertNode(_el$9, createTextNode(`\u2191\u2193 pick \xB7 enter select \xB7 esc cancel`));
|
|
20946
21523
|
effect((_p$) => {
|
|
20947
|
-
var _v$ =
|
|
21524
|
+
var _v$ = TextAttributes24.BOLD, _v$2 = theme.text, _v$3 = theme.textMuted, _v$4 = theme.textMuted;
|
|
20948
21525
|
_v$ !== _p$.e && (_p$.e = setProp(_el$3, "attributes", _v$, _p$.e));
|
|
20949
21526
|
_v$2 !== _p$.t && (_p$.t = setProp(_el$3, "fg", _v$2, _p$.t));
|
|
20950
21527
|
_v$3 !== _p$.a && (_p$.a = setProp(_el$5, "fg", _v$3, _p$.a));
|
|
@@ -20986,10 +21563,10 @@ var init_ModelPicker = __esm(() => {
|
|
|
20986
21563
|
|
|
20987
21564
|
// src/tui/panes/chat/composer/user-slashes.ts
|
|
20988
21565
|
import { readFile as readFile6, readdir as readdir3, stat as stat3 } from "fs/promises";
|
|
20989
|
-
import { homedir as
|
|
21566
|
+
import { homedir as homedir11 } from "os";
|
|
20990
21567
|
import { join as join14 } from "path";
|
|
20991
21568
|
function resolveHome() {
|
|
20992
|
-
return process.env.HOME ??
|
|
21569
|
+
return process.env.HOME ?? homedir11();
|
|
20993
21570
|
}
|
|
20994
21571
|
async function safeReaddir(path8) {
|
|
20995
21572
|
try {
|
|
@@ -21701,7 +22278,7 @@ var init_use_chat_session = __esm(() => {
|
|
|
21701
22278
|
});
|
|
21702
22279
|
|
|
21703
22280
|
// src/tui/panes/chat/Chat.tsx
|
|
21704
|
-
import { TextAttributes as
|
|
22281
|
+
import { TextAttributes as TextAttributes25 } from "@opentui/core";
|
|
21705
22282
|
function Chat(props) {
|
|
21706
22283
|
const {
|
|
21707
22284
|
theme
|
|
@@ -22369,7 +22946,7 @@ function QueuedPromptList(props) {
|
|
|
22369
22946
|
insertNode(_el$19, createTextNode(`[x]`));
|
|
22370
22947
|
setProp(_el$19, "onMouseUp", () => props.onCancel(entry.id));
|
|
22371
22948
|
effect((_p$) => {
|
|
22372
|
-
var _v$4 = theme.textMuted, _v$5 =
|
|
22949
|
+
var _v$4 = theme.textMuted, _v$5 = TextAttributes25.BOLD, _v$6 = theme.textMuted, _v$7 = theme.text, _v$8 = theme.error, _v$9 = TextAttributes25.BOLD;
|
|
22373
22950
|
_v$4 !== _p$.e && (_p$.e = setProp(_el$11, "fg", _v$4, _p$.e));
|
|
22374
22951
|
_v$5 !== _p$.t && (_p$.t = setProp(_el$11, "attributes", _v$5, _p$.t));
|
|
22375
22952
|
_v$6 !== _p$.a && (_p$.a = setProp(_el$14, "fg", _v$6, _p$.a));
|
|
@@ -22402,7 +22979,7 @@ function QueuedPromptList(props) {
|
|
|
22402
22979
|
insertNode(_el$9, createTextNode(`+`));
|
|
22403
22980
|
insert(_el$1, () => `\u2026 ${hidden()} more queued`);
|
|
22404
22981
|
effect((_p$) => {
|
|
22405
|
-
var _v$ = theme.textMuted, _v$2 =
|
|
22982
|
+
var _v$ = theme.textMuted, _v$2 = TextAttributes25.BOLD, _v$3 = theme.textMuted;
|
|
22406
22983
|
_v$ !== _p$.e && (_p$.e = setProp(_el$9, "fg", _v$, _p$.e));
|
|
22407
22984
|
_v$2 !== _p$.t && (_p$.t = setProp(_el$9, "attributes", _v$2, _p$.t));
|
|
22408
22985
|
_v$3 !== _p$.a && (_p$.a = setProp(_el$1, "fg", _v$3, _p$.a));
|
|
@@ -22448,7 +23025,7 @@ var init_Chat = __esm(() => {
|
|
|
22448
23025
|
});
|
|
22449
23026
|
|
|
22450
23027
|
// src/tui/component/sidebar.tsx
|
|
22451
|
-
import { TextAttributes as
|
|
23028
|
+
import { TextAttributes as TextAttributes26 } from "@opentui/core";
|
|
22452
23029
|
function Sidebar(props) {
|
|
22453
23030
|
const {
|
|
22454
23031
|
theme
|
|
@@ -22474,7 +23051,7 @@ function Sidebar(props) {
|
|
|
22474
23051
|
setProp(_el$2, "paddingBottom", 1);
|
|
22475
23052
|
insert(_el$3, () => props.title);
|
|
22476
23053
|
effect((_p$) => {
|
|
22477
|
-
var _v$ = theme.text, _v$2 =
|
|
23054
|
+
var _v$ = theme.text, _v$2 = TextAttributes26.BOLD;
|
|
22478
23055
|
_v$ !== _p$.e && (_p$.e = setProp(_el$3, "fg", _v$, _p$.e));
|
|
22479
23056
|
_v$2 !== _p$.t && (_p$.t = setProp(_el$3, "attributes", _v$2, _p$.t));
|
|
22480
23057
|
return _p$;
|
|
@@ -22733,7 +23310,7 @@ var init_keys4 = __esm(() => {
|
|
|
22733
23310
|
});
|
|
22734
23311
|
|
|
22735
23312
|
// src/tui/panes/sidebar/Sidebar.tsx
|
|
22736
|
-
import { TextAttributes as
|
|
23313
|
+
import { TextAttributes as TextAttributes27 } from "@opentui/core";
|
|
22737
23314
|
function Sidebar2(props) {
|
|
22738
23315
|
const {
|
|
22739
23316
|
theme
|
|
@@ -22825,7 +23402,7 @@ function Sidebar2(props) {
|
|
|
22825
23402
|
return () => _c$() ? `[ ${tab.label} ]` : tab.label;
|
|
22826
23403
|
})());
|
|
22827
23404
|
effect((_p$) => {
|
|
22828
|
-
var _v$7 = active() ? theme.primary : theme.textMuted, _v$8 = active() ?
|
|
23405
|
+
var _v$7 = active() ? theme.primary : theme.textMuted, _v$8 = active() ? TextAttributes27.BOLD : undefined;
|
|
22829
23406
|
_v$7 !== _p$.e && (_p$.e = setProp(_el$13, "fg", _v$7, _p$.e));
|
|
22830
23407
|
_v$8 !== _p$.t && (_p$.t = setProp(_el$13, "attributes", _v$8, _p$.t));
|
|
22831
23408
|
return _p$;
|
|
@@ -22920,7 +23497,7 @@ function Sidebar2(props) {
|
|
|
22920
23497
|
}
|
|
22921
23498
|
}), null);
|
|
22922
23499
|
effect((_p$) => {
|
|
22923
|
-
var _v$9 = isCursor() ? theme.primary : isSelected() ? theme.backgroundElement : undefined, _v$0 = isCursor() ? theme.selectedListItemText : badgeColor(), _v$1 = isCursor() ? theme.selectedListItemText : theme.text, _v$10 = (isMain || isSelected() && !isCursor()) && !isCursor() ?
|
|
23500
|
+
var _v$9 = isCursor() ? theme.primary : isSelected() ? theme.backgroundElement : undefined, _v$0 = isCursor() ? theme.selectedListItemText : badgeColor(), _v$1 = isCursor() ? theme.selectedListItemText : theme.text, _v$10 = (isMain || isSelected() && !isCursor()) && !isCursor() ? TextAttributes27.BOLD : undefined;
|
|
22924
23501
|
_v$9 !== _p$.e && (_p$.e = setProp(_el$14, "backgroundColor", _v$9, _p$.e));
|
|
22925
23502
|
_v$0 !== _p$.t && (_p$.t = setProp(_el$15, "fg", _v$0, _p$.t));
|
|
22926
23503
|
_v$1 !== _p$.a && (_p$.a = setProp(_el$16, "fg", _v$1, _p$.a));
|
|
@@ -22958,7 +23535,7 @@ function Sidebar2(props) {
|
|
|
22958
23535
|
setProp(_el$11, "wrapMode", "none");
|
|
22959
23536
|
setProp(_el$11, "onMouseUp", () => props.onAddTask?.());
|
|
22960
23537
|
effect((_p$) => {
|
|
22961
|
-
var _v$ = props.width ? props.width() : SIDEBAR_WIDTH, _v$2 = focusedAccessor() ? theme.focusAccent : theme.textMuted, _v$3 =
|
|
23538
|
+
var _v$ = props.width ? props.width() : SIDEBAR_WIDTH, _v$2 = focusedAccessor() ? theme.focusAccent : theme.textMuted, _v$3 = TextAttributes27.BOLD, _v$4 = focusedAccessor() ? theme.focusAccent : theme.textMuted, _v$5 = TextAttributes27.BOLD, _v$6 = theme.textMuted;
|
|
22962
23539
|
_v$ !== _p$.e && (_p$.e = setProp(_el$, "width", _v$, _p$.e));
|
|
22963
23540
|
_v$2 !== _p$.t && (_p$.t = setProp(_el$3, "fg", _v$2, _p$.t));
|
|
22964
23541
|
_v$3 !== _p$.a && (_p$.a = setProp(_el$3, "attributes", _v$3, _p$.a));
|
|
@@ -23034,7 +23611,10 @@ import { dirname as dirname6 } from "path";
|
|
|
23034
23611
|
async function startBridgeServer(orch, socketPath) {
|
|
23035
23612
|
await mkdir3(dirname6(socketPath), { recursive: true });
|
|
23036
23613
|
await unlink3(socketPath).catch(() => {});
|
|
23614
|
+
const conns = new Set;
|
|
23037
23615
|
const server = createServer((conn) => {
|
|
23616
|
+
conns.add(conn);
|
|
23617
|
+
conn.on("close", () => conns.delete(conn));
|
|
23038
23618
|
let buffer = "";
|
|
23039
23619
|
conn.on("data", (chunk) => {
|
|
23040
23620
|
buffer += chunk.toString("utf8");
|
|
@@ -23067,6 +23647,9 @@ async function startBridgeServer(orch, socketPath) {
|
|
|
23067
23647
|
return {
|
|
23068
23648
|
socketPath,
|
|
23069
23649
|
async close() {
|
|
23650
|
+
for (const conn of conns)
|
|
23651
|
+
conn.destroy();
|
|
23652
|
+
conns.clear();
|
|
23070
23653
|
await new Promise((resolve4) => server.close(() => resolve4()));
|
|
23071
23654
|
await unlink3(socketPath).catch(() => {});
|
|
23072
23655
|
}
|
|
@@ -23160,11 +23743,11 @@ __export(exports_bridge, {
|
|
|
23160
23743
|
startBridge: () => startBridge
|
|
23161
23744
|
});
|
|
23162
23745
|
import { writeFile as writeFile3 } from "fs/promises";
|
|
23163
|
-
import { homedir as
|
|
23746
|
+
import { homedir as homedir12 } from "os";
|
|
23164
23747
|
import { join as join15 } from "path";
|
|
23165
23748
|
import { fileURLToPath as fileURLToPath2 } from "url";
|
|
23166
23749
|
async function startBridge(orch, opts = {}) {
|
|
23167
|
-
const home = opts.homeDir ?? process.env.KOBE_HOME_DIR ??
|
|
23750
|
+
const home = opts.homeDir ?? process.env.KOBE_HOME_DIR ?? homedir12();
|
|
23168
23751
|
const runDir = join15(home, ".kobe", "run");
|
|
23169
23752
|
const socketPath = join15(runDir, `bridge-${process.pid}.sock`);
|
|
23170
23753
|
const mcpConfigPath = join15(runDir, `mcp-${process.pid}.json`);
|
|
@@ -23194,7 +23777,7 @@ var init_bridge = __esm(() => {
|
|
|
23194
23777
|
});
|
|
23195
23778
|
|
|
23196
23779
|
// src/tui/app.tsx
|
|
23197
|
-
import { homedir as
|
|
23780
|
+
import { homedir as homedir13 } from "os";
|
|
23198
23781
|
import { join as join16 } from "path";
|
|
23199
23782
|
function Shell(props) {
|
|
23200
23783
|
const themeCtx = useTheme();
|
|
@@ -23213,6 +23796,7 @@ function Shell(props) {
|
|
|
23213
23796
|
const [workspaceContextAside, setWorkspaceContextAside] = createSignal(null);
|
|
23214
23797
|
const planUsageAcc = props.orchestrator.planUsageSignal();
|
|
23215
23798
|
const workspacePlanAside = createMemo(() => formatPlanUsageCompact(planUsageAcc()));
|
|
23799
|
+
const rcBridgeAcc = props.orchestrator.rcBridgeSignal();
|
|
23216
23800
|
const [updateInfo, setUpdateInfo] = createSignal(null);
|
|
23217
23801
|
onMount(() => {
|
|
23218
23802
|
checkLatestVersion().then((info) => {
|
|
@@ -23303,6 +23887,20 @@ function Shell(props) {
|
|
|
23303
23887
|
return;
|
|
23304
23888
|
return parts.join(" \u2022 ");
|
|
23305
23889
|
});
|
|
23890
|
+
const palette = useCommandPalette();
|
|
23891
|
+
onMount(() => {
|
|
23892
|
+
if (!(props.orchestrator instanceof RemoteOrchestrator))
|
|
23893
|
+
return;
|
|
23894
|
+
const orch = props.orchestrator;
|
|
23895
|
+
const unregister = palette.addCommand({
|
|
23896
|
+
name: "rcBridge.share",
|
|
23897
|
+
title: "Share to claude.ai (remote-control)",
|
|
23898
|
+
desc: "Bind this task's worktree to a claude.ai environment so you can resume the conversation from another device.",
|
|
23899
|
+
slashName: "share",
|
|
23900
|
+
run: () => RcBridgeDialog.show(dialog, orch, rcBridgeAcc, activeTask, activeChatTabIdAcc)
|
|
23901
|
+
});
|
|
23902
|
+
onCleanup(unregister);
|
|
23903
|
+
});
|
|
23306
23904
|
let pendingPersistedId = persistedSelectedId ?? null;
|
|
23307
23905
|
createEffect(() => {
|
|
23308
23906
|
const tasks = tasksAcc();
|
|
@@ -23325,7 +23923,6 @@ function Shell(props) {
|
|
|
23325
23923
|
});
|
|
23326
23924
|
useKobeKeybindings({
|
|
23327
23925
|
onShowHelp: () => HelpDialog.show(dialog),
|
|
23328
|
-
onFocusDetach: () => setFocusedPane("sidebar"),
|
|
23329
23926
|
onFocusNext: () => {
|
|
23330
23927
|
if (focusedPane() !== "workspace")
|
|
23331
23928
|
focus.cycle(1);
|
|
@@ -23400,6 +23997,7 @@ function Shell(props) {
|
|
|
23400
23997
|
return props.orchestrator;
|
|
23401
23998
|
},
|
|
23402
23999
|
activeTask,
|
|
24000
|
+
activeChatTabId: activeChatTabIdAcc,
|
|
23403
24001
|
updateInfo
|
|
23404
24002
|
}), _el$2);
|
|
23405
24003
|
insertNode(_el$2, _el$3);
|
|
@@ -23648,7 +24246,7 @@ async function startApp() {
|
|
|
23648
24246
|
} of loadUserThemes()) {
|
|
23649
24247
|
addTheme(name, theme);
|
|
23650
24248
|
}
|
|
23651
|
-
const homeDir2 = process.env.KOBE_HOME_DIR ??
|
|
24249
|
+
const homeDir2 = process.env.KOBE_HOME_DIR ?? homedir13();
|
|
23652
24250
|
let orchestrator;
|
|
23653
24251
|
if (process.env.KOBE_TEST_ENGINE || process.env.KOBE_NO_DAEMON === "1") {
|
|
23654
24252
|
const engine3 = await buildEngine();
|
|
@@ -23715,6 +24313,7 @@ var init_app = __esm(() => {
|
|
|
23715
24313
|
init_center_tab_strip();
|
|
23716
24314
|
init_help_dialog();
|
|
23717
24315
|
init_pane_header();
|
|
24316
|
+
init_rc_bridge_dialog();
|
|
23718
24317
|
init_resizable_edge();
|
|
23719
24318
|
init_status_bar();
|
|
23720
24319
|
init_toast_overlay();
|
|
@@ -23746,7 +24345,7 @@ var exports_tui = {};
|
|
|
23746
24345
|
__export(exports_tui, {
|
|
23747
24346
|
startTui: () => startTui
|
|
23748
24347
|
});
|
|
23749
|
-
import { TextAttributes as
|
|
24348
|
+
import { TextAttributes as TextAttributes28 } from "@opentui/core";
|
|
23750
24349
|
function HelpHint() {
|
|
23751
24350
|
const {
|
|
23752
24351
|
theme
|
|
@@ -23820,7 +24419,7 @@ function Banner() {
|
|
|
23820
24419
|
insert(_el$20, selected);
|
|
23821
24420
|
insert(_el$12, createComponent2(HelpHint, {}), null);
|
|
23822
24421
|
effect((_p$) => {
|
|
23823
|
-
var _v$7 = theme.primary, _v$8 =
|
|
24422
|
+
var _v$7 = theme.primary, _v$8 = TextAttributes28.BOLD, _v$9 = theme.borderActive, _v$0 = theme.text, _v$1 = theme.textMuted, _v$10 = {
|
|
23824
24423
|
fg: theme.accent
|
|
23825
24424
|
};
|
|
23826
24425
|
_v$7 !== _p$.e && (_p$.e = setProp(_el$13, "fg", _v$7, _p$.e));
|