@sma1lboy/kobe 0.5.17 → 0.5.19
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 +19 -11
- package/dist/cli/index.js +295 -109
- package/package.json +2 -2
package/dist/bin/kobed.js
CHANGED
|
@@ -2626,7 +2626,7 @@ var init_bridge = __esm(() => {
|
|
|
2626
2626
|
init_server();
|
|
2627
2627
|
});
|
|
2628
2628
|
|
|
2629
|
-
// ../../node_modules/.bun/solid-js@1.9.
|
|
2629
|
+
// ../../node_modules/.bun/solid-js@1.9.12/node_modules/solid-js/dist/dev.js
|
|
2630
2630
|
function getContextId(count) {
|
|
2631
2631
|
const num = String(count), len = num.length - 1;
|
|
2632
2632
|
return sharedConfig.context.id + (len ? String.fromCharCode(96 + len) : "") + num;
|
|
@@ -3154,6 +3154,8 @@ function runComputation(node, value, time) {
|
|
|
3154
3154
|
if (node.updatedAt != null && "observers" in node) {
|
|
3155
3155
|
writeSignal(node, nextValue, true);
|
|
3156
3156
|
} else if (Transition && Transition.running && node.pure) {
|
|
3157
|
+
if (!Transition.sources.has(node))
|
|
3158
|
+
node.value = nextValue;
|
|
3157
3159
|
Transition.sources.add(node);
|
|
3158
3160
|
node.tValue = nextValue;
|
|
3159
3161
|
} else
|
|
@@ -3197,16 +3199,27 @@ function createComputation(fn, init, pure, state = STALE, options) {
|
|
|
3197
3199
|
if (options && options.name)
|
|
3198
3200
|
c.name = options.name;
|
|
3199
3201
|
if (ExternalSourceConfig && c.fn) {
|
|
3202
|
+
const sourceFn = c.fn;
|
|
3200
3203
|
const [track, trigger] = createSignal(undefined, {
|
|
3201
3204
|
equals: false
|
|
3202
3205
|
});
|
|
3203
|
-
const ordinary = ExternalSourceConfig.factory(
|
|
3206
|
+
const ordinary = ExternalSourceConfig.factory(sourceFn, trigger);
|
|
3204
3207
|
onCleanup(() => ordinary.dispose());
|
|
3205
|
-
|
|
3206
|
-
const
|
|
3208
|
+
let inTransition;
|
|
3209
|
+
const triggerInTransition = () => startTransition(trigger).then(() => {
|
|
3210
|
+
if (inTransition) {
|
|
3211
|
+
inTransition.dispose();
|
|
3212
|
+
inTransition = undefined;
|
|
3213
|
+
}
|
|
3214
|
+
});
|
|
3207
3215
|
c.fn = (x) => {
|
|
3208
3216
|
track();
|
|
3209
|
-
|
|
3217
|
+
if (Transition && Transition.running) {
|
|
3218
|
+
if (!inTransition)
|
|
3219
|
+
inTransition = ExternalSourceConfig.factory(sourceFn, triggerInTransition);
|
|
3220
|
+
return inTransition.track(x);
|
|
3221
|
+
}
|
|
3222
|
+
return ordinary.track(x);
|
|
3210
3223
|
};
|
|
3211
3224
|
}
|
|
3212
3225
|
DevHooks.afterCreateOwner && DevHooks.afterCreateOwner(c);
|
|
@@ -3798,12 +3811,7 @@ var init_dev = __esm(() => {
|
|
|
3798
3811
|
equals: equalFn
|
|
3799
3812
|
};
|
|
3800
3813
|
runEffects = runQueue;
|
|
3801
|
-
UNOWNED = {
|
|
3802
|
-
owned: null,
|
|
3803
|
-
cleanups: null,
|
|
3804
|
-
context: null,
|
|
3805
|
-
owner: null
|
|
3806
|
-
};
|
|
3814
|
+
UNOWNED = {};
|
|
3807
3815
|
NO_INIT = {};
|
|
3808
3816
|
DevHooks = {
|
|
3809
3817
|
afterUpdate: null,
|
package/dist/cli/index.js
CHANGED
|
@@ -182,7 +182,7 @@ var init_repos = __esm(() => {
|
|
|
182
182
|
init_env();
|
|
183
183
|
});
|
|
184
184
|
|
|
185
|
-
// ../../node_modules/.bun/solid-js@1.9.
|
|
185
|
+
// ../../node_modules/.bun/solid-js@1.9.12/node_modules/solid-js/dist/dev.js
|
|
186
186
|
function getContextId(count) {
|
|
187
187
|
const num = String(count), len = num.length - 1;
|
|
188
188
|
return sharedConfig.context.id + (len ? String.fromCharCode(96 + len) : "") + num;
|
|
@@ -710,6 +710,8 @@ function runComputation(node, value, time) {
|
|
|
710
710
|
if (node.updatedAt != null && "observers" in node) {
|
|
711
711
|
writeSignal(node, nextValue, true);
|
|
712
712
|
} else if (Transition && Transition.running && node.pure) {
|
|
713
|
+
if (!Transition.sources.has(node))
|
|
714
|
+
node.value = nextValue;
|
|
713
715
|
Transition.sources.add(node);
|
|
714
716
|
node.tValue = nextValue;
|
|
715
717
|
} else
|
|
@@ -753,16 +755,27 @@ function createComputation(fn, init, pure, state = STALE, options) {
|
|
|
753
755
|
if (options && options.name)
|
|
754
756
|
c.name = options.name;
|
|
755
757
|
if (ExternalSourceConfig && c.fn) {
|
|
758
|
+
const sourceFn = c.fn;
|
|
756
759
|
const [track, trigger] = createSignal(undefined, {
|
|
757
760
|
equals: false
|
|
758
761
|
});
|
|
759
|
-
const ordinary = ExternalSourceConfig.factory(
|
|
762
|
+
const ordinary = ExternalSourceConfig.factory(sourceFn, trigger);
|
|
760
763
|
onCleanup(() => ordinary.dispose());
|
|
761
|
-
|
|
762
|
-
const
|
|
764
|
+
let inTransition;
|
|
765
|
+
const triggerInTransition = () => startTransition(trigger).then(() => {
|
|
766
|
+
if (inTransition) {
|
|
767
|
+
inTransition.dispose();
|
|
768
|
+
inTransition = undefined;
|
|
769
|
+
}
|
|
770
|
+
});
|
|
763
771
|
c.fn = (x) => {
|
|
764
772
|
track();
|
|
765
|
-
|
|
773
|
+
if (Transition && Transition.running) {
|
|
774
|
+
if (!inTransition)
|
|
775
|
+
inTransition = ExternalSourceConfig.factory(sourceFn, triggerInTransition);
|
|
776
|
+
return inTransition.track(x);
|
|
777
|
+
}
|
|
778
|
+
return ordinary.track(x);
|
|
766
779
|
};
|
|
767
780
|
}
|
|
768
781
|
DevHooks.afterCreateOwner && DevHooks.afterCreateOwner(c);
|
|
@@ -1354,12 +1367,7 @@ var init_dev = __esm(() => {
|
|
|
1354
1367
|
equals: equalFn
|
|
1355
1368
|
};
|
|
1356
1369
|
runEffects = runQueue;
|
|
1357
|
-
UNOWNED = {
|
|
1358
|
-
owned: null,
|
|
1359
|
-
cleanups: null,
|
|
1360
|
-
context: null,
|
|
1361
|
-
owner: null
|
|
1362
|
-
};
|
|
1370
|
+
UNOWNED = {};
|
|
1363
1371
|
NO_INIT = {};
|
|
1364
1372
|
DevHooks = {
|
|
1365
1373
|
afterUpdate: null,
|
|
@@ -1817,7 +1825,7 @@ var init_esm = __esm(() => {
|
|
|
1817
1825
|
})(EncodingMode || (EncodingMode = {}));
|
|
1818
1826
|
});
|
|
1819
1827
|
|
|
1820
|
-
// ../../node_modules/.bun/@opentui+solid@0.2.4+
|
|
1828
|
+
// ../../node_modules/.bun/@opentui+solid@0.2.4+f38a454781f02d2a/node_modules/@opentui/solid/index.js
|
|
1821
1829
|
import { CliRenderer, createCliRenderer, engine as engine2 } from "@opentui/core";
|
|
1822
1830
|
import { createTestRenderer } from "@opentui/core/testing";
|
|
1823
1831
|
import {
|
|
@@ -2686,7 +2694,7 @@ var init_solid = __esm(() => {
|
|
|
2686
2694
|
});
|
|
2687
2695
|
});
|
|
2688
2696
|
|
|
2689
|
-
// ../../node_modules/.bun/solid-js@1.9.
|
|
2697
|
+
// ../../node_modules/.bun/solid-js@1.9.12/node_modules/solid-js/store/dist/dev.js
|
|
2690
2698
|
function wrap$1(value) {
|
|
2691
2699
|
let p = value[$PROXY];
|
|
2692
2700
|
if (!p) {
|
|
@@ -15503,7 +15511,7 @@ var init_package = __esm(() => {
|
|
|
15503
15511
|
package_default = {
|
|
15504
15512
|
$schema: "https://json.schemastore.org/package.json",
|
|
15505
15513
|
name: "@sma1lboy/kobe",
|
|
15506
|
-
version: "0.5.
|
|
15514
|
+
version: "0.5.19",
|
|
15507
15515
|
description: "TUI orchestrator for Claude Code (codename)",
|
|
15508
15516
|
type: "module",
|
|
15509
15517
|
packageManager: "bun@1.3.13",
|
|
@@ -15548,7 +15556,7 @@ var init_package = __esm(() => {
|
|
|
15548
15556
|
"@opentui/core": "0.2.4",
|
|
15549
15557
|
"@opentui/solid": "0.2.4",
|
|
15550
15558
|
"@xterm/headless": "^6.0.0",
|
|
15551
|
-
"solid-js": "1.9.
|
|
15559
|
+
"solid-js": "1.9.12"
|
|
15552
15560
|
},
|
|
15553
15561
|
devDependencies: {
|
|
15554
15562
|
"@biomejs/biome": "1.9.4",
|
|
@@ -30793,23 +30801,46 @@ var init_MessageList = __esm(() => {
|
|
|
30793
30801
|
});
|
|
30794
30802
|
|
|
30795
30803
|
// src/tui/panes/chat/composer/model-picker-row.ts
|
|
30796
|
-
function
|
|
30797
|
-
const
|
|
30798
|
-
|
|
30799
|
-
|
|
30800
|
-
|
|
30801
|
-
|
|
30802
|
-
|
|
30803
|
-
|
|
30804
|
-
|
|
30805
|
-
}
|
|
30804
|
+
function modelPickerModelOptions(choices) {
|
|
30805
|
+
const byKey = new Map;
|
|
30806
|
+
for (const choice of choices) {
|
|
30807
|
+
const key = `${choice.vendor}:${choice.id}`;
|
|
30808
|
+
const bucket = byKey.get(key);
|
|
30809
|
+
if (bucket)
|
|
30810
|
+
bucket.push(choice);
|
|
30811
|
+
else
|
|
30812
|
+
byKey.set(key, [choice]);
|
|
30813
|
+
}
|
|
30814
|
+
return [...byKey.values()].map((bucket) => {
|
|
30815
|
+
const base = bucket.find((choice) => choice.effort === undefined) ?? bucket[0];
|
|
30816
|
+
if (!base) {
|
|
30817
|
+
throw new Error("model picker option bucket unexpectedly empty");
|
|
30818
|
+
}
|
|
30819
|
+
return {
|
|
30820
|
+
vendor: base.vendor,
|
|
30821
|
+
id: base.id,
|
|
30822
|
+
label: stripEffortSuffix(base.label, base.effort),
|
|
30823
|
+
hint: base.hint,
|
|
30824
|
+
choices: bucket
|
|
30825
|
+
};
|
|
30826
|
+
});
|
|
30827
|
+
}
|
|
30828
|
+
function modelPickerEffortOptions(model) {
|
|
30829
|
+
return model.choices.map((choice) => ({
|
|
30830
|
+
id: choice.id,
|
|
30831
|
+
effort: choice.effort,
|
|
30832
|
+
label: choice.effort ?? "default",
|
|
30833
|
+
hint: choice.effort ? choice.hint : choice.hint ?? "use the model default"
|
|
30834
|
+
}));
|
|
30806
30835
|
}
|
|
30807
|
-
function
|
|
30808
|
-
|
|
30836
|
+
function stripEffortSuffix(label, effort) {
|
|
30837
|
+
if (!effort)
|
|
30838
|
+
return label;
|
|
30839
|
+
return label.replace(new RegExp(`\\s+\xB7\\s+${escapeRegExp3(effort)}$`), "");
|
|
30840
|
+
}
|
|
30841
|
+
function escapeRegExp3(value) {
|
|
30842
|
+
return value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
30809
30843
|
}
|
|
30810
|
-
var init_model_picker_row = __esm(() => {
|
|
30811
|
-
init_registry2();
|
|
30812
|
-
});
|
|
30813
30844
|
|
|
30814
30845
|
// src/tui/panes/chat/composer/ModelPicker.tsx
|
|
30815
30846
|
import { TextAttributes as TextAttributes24 } from "@opentui/core";
|
|
@@ -30818,137 +30849,293 @@ function ModelPicker(props) {
|
|
|
30818
30849
|
const {
|
|
30819
30850
|
theme
|
|
30820
30851
|
} = useTheme();
|
|
30821
|
-
const
|
|
30852
|
+
const models = createMemo(() => modelPickerModelOptions(allModels()));
|
|
30853
|
+
const [selectedModel, setSelectedModel] = createSignal();
|
|
30854
|
+
const effortChoices = createMemo(() => {
|
|
30855
|
+
const model = selectedModel();
|
|
30856
|
+
return model ? modelPickerEffortOptions(model) : [];
|
|
30857
|
+
});
|
|
30822
30858
|
const seed = props.current ?? defaultCapabilities.defaultModelId();
|
|
30823
|
-
const initial =
|
|
30859
|
+
const initial = models().findIndex((m2) => m2.id === seed);
|
|
30824
30860
|
const [cursor, setCursor] = createSignal(initial >= 0 ? initial : 0);
|
|
30861
|
+
const [effortCursor, setEffortCursor] = createSignal(0);
|
|
30862
|
+
const inEffortStep = () => selectedModel() !== undefined;
|
|
30863
|
+
function setInitialEffortCursor(model) {
|
|
30864
|
+
const efforts = modelPickerEffortOptions(model);
|
|
30865
|
+
const idx = efforts.findIndex((choice) => choice.effort === props.currentEffort);
|
|
30866
|
+
setEffortCursor(idx >= 0 ? idx : 0);
|
|
30867
|
+
}
|
|
30825
30868
|
function commit() {
|
|
30826
|
-
|
|
30869
|
+
if (inEffortStep()) {
|
|
30870
|
+
commitEffort();
|
|
30871
|
+
return;
|
|
30872
|
+
}
|
|
30873
|
+
const model = models()[cursor()];
|
|
30874
|
+
if (!model)
|
|
30875
|
+
return;
|
|
30876
|
+
const efforts = modelPickerEffortOptions(model);
|
|
30877
|
+
if (efforts.length <= 1 && efforts[0]?.effort === undefined) {
|
|
30878
|
+
props.onPick({
|
|
30879
|
+
id: model.id,
|
|
30880
|
+
effort: undefined
|
|
30881
|
+
});
|
|
30882
|
+
dialog.clear();
|
|
30883
|
+
return;
|
|
30884
|
+
}
|
|
30885
|
+
setSelectedModel(model);
|
|
30886
|
+
setInitialEffortCursor(model);
|
|
30887
|
+
}
|
|
30888
|
+
function commitEffort() {
|
|
30889
|
+
const model = selectedModel();
|
|
30890
|
+
if (!model)
|
|
30891
|
+
return;
|
|
30892
|
+
const choice = effortChoices()[effortCursor()];
|
|
30827
30893
|
if (!choice)
|
|
30828
30894
|
return;
|
|
30829
30895
|
props.onPick({
|
|
30830
|
-
id:
|
|
30896
|
+
id: model.id,
|
|
30831
30897
|
effort: choice.effort
|
|
30832
30898
|
});
|
|
30833
30899
|
dialog.clear();
|
|
30834
30900
|
}
|
|
30901
|
+
function backToModels() {
|
|
30902
|
+
setSelectedModel(undefined);
|
|
30903
|
+
}
|
|
30835
30904
|
useBindings(() => ({
|
|
30836
30905
|
bindings: [{
|
|
30837
30906
|
key: "up",
|
|
30838
30907
|
cmd: () => {
|
|
30839
|
-
const n2 =
|
|
30908
|
+
const n2 = inEffortStep() ? effortChoices().length : models().length;
|
|
30840
30909
|
if (n2 === 0)
|
|
30841
30910
|
return;
|
|
30842
|
-
|
|
30911
|
+
if (inEffortStep())
|
|
30912
|
+
setEffortCursor((c2) => (c2 - 1 + n2) % n2);
|
|
30913
|
+
else
|
|
30914
|
+
setCursor((c2) => (c2 - 1 + n2) % n2);
|
|
30843
30915
|
}
|
|
30844
30916
|
}, {
|
|
30845
30917
|
key: "down",
|
|
30846
30918
|
cmd: () => {
|
|
30847
|
-
const n2 =
|
|
30919
|
+
const n2 = inEffortStep() ? effortChoices().length : models().length;
|
|
30848
30920
|
if (n2 === 0)
|
|
30849
30921
|
return;
|
|
30850
|
-
|
|
30922
|
+
if (inEffortStep())
|
|
30923
|
+
setEffortCursor((c2) => (c2 + 1) % n2);
|
|
30924
|
+
else
|
|
30925
|
+
setCursor((c2) => (c2 + 1) % n2);
|
|
30851
30926
|
}
|
|
30852
30927
|
}, {
|
|
30853
30928
|
key: "k",
|
|
30854
30929
|
cmd: () => {
|
|
30855
|
-
const n2 =
|
|
30930
|
+
const n2 = inEffortStep() ? effortChoices().length : models().length;
|
|
30856
30931
|
if (n2 === 0)
|
|
30857
30932
|
return;
|
|
30858
|
-
|
|
30933
|
+
if (inEffortStep())
|
|
30934
|
+
setEffortCursor((c2) => (c2 - 1 + n2) % n2);
|
|
30935
|
+
else
|
|
30936
|
+
setCursor((c2) => (c2 - 1 + n2) % n2);
|
|
30859
30937
|
}
|
|
30860
30938
|
}, {
|
|
30861
30939
|
key: "j",
|
|
30862
30940
|
cmd: () => {
|
|
30863
|
-
const n2 =
|
|
30941
|
+
const n2 = inEffortStep() ? effortChoices().length : models().length;
|
|
30864
30942
|
if (n2 === 0)
|
|
30865
30943
|
return;
|
|
30866
|
-
|
|
30944
|
+
if (inEffortStep())
|
|
30945
|
+
setEffortCursor((c2) => (c2 + 1) % n2);
|
|
30946
|
+
else
|
|
30947
|
+
setCursor((c2) => (c2 + 1) % n2);
|
|
30867
30948
|
}
|
|
30949
|
+
}, {
|
|
30950
|
+
key: "left",
|
|
30951
|
+
cmd: backToModels
|
|
30952
|
+
}, {
|
|
30953
|
+
key: "h",
|
|
30954
|
+
cmd: backToModels
|
|
30868
30955
|
}, {
|
|
30869
30956
|
key: "return",
|
|
30870
30957
|
cmd: commit
|
|
30871
30958
|
}]
|
|
30872
30959
|
}));
|
|
30873
30960
|
return (() => {
|
|
30874
|
-
var _el$ = createElement("box"), _el$2 = createElement("box"), _el$3 = createElement("text"), _el$
|
|
30961
|
+
var _el$ = createElement("box"), _el$2 = createElement("box"), _el$3 = createElement("text"), _el$4 = createElement("text"), _el$6 = createElement("box"), _el$7 = createElement("text");
|
|
30875
30962
|
insertNode(_el$, _el$2);
|
|
30876
|
-
insertNode(_el$, _el$
|
|
30877
|
-
insertNode(_el$, _el$8);
|
|
30963
|
+
insertNode(_el$, _el$6);
|
|
30878
30964
|
setProp(_el$, "paddingLeft", 2);
|
|
30879
30965
|
setProp(_el$, "paddingRight", 2);
|
|
30880
30966
|
setProp(_el$, "gap", 1);
|
|
30881
30967
|
insertNode(_el$2, _el$3);
|
|
30882
|
-
insertNode(_el$2, _el$
|
|
30968
|
+
insertNode(_el$2, _el$4);
|
|
30883
30969
|
setProp(_el$2, "flexDirection", "row");
|
|
30884
30970
|
setProp(_el$2, "justifyContent", "space-between");
|
|
30885
|
-
|
|
30886
|
-
insertNode(_el$
|
|
30887
|
-
setProp(_el$
|
|
30888
|
-
|
|
30889
|
-
|
|
30890
|
-
|
|
30891
|
-
|
|
30892
|
-
|
|
30893
|
-
|
|
30894
|
-
|
|
30895
|
-
|
|
30896
|
-
|
|
30897
|
-
|
|
30898
|
-
|
|
30899
|
-
|
|
30900
|
-
|
|
30901
|
-
|
|
30902
|
-
|
|
30903
|
-
|
|
30904
|
-
|
|
30905
|
-
|
|
30906
|
-
|
|
30907
|
-
|
|
30908
|
-
}
|
|
30909
|
-
|
|
30910
|
-
|
|
30911
|
-
|
|
30912
|
-
|
|
30913
|
-
|
|
30914
|
-
|
|
30915
|
-
|
|
30916
|
-
|
|
30917
|
-
|
|
30971
|
+
insert(_el$3, () => inEffortStep() ? "Pick effort" : "Pick a model");
|
|
30972
|
+
insertNode(_el$4, createTextNode(`esc`));
|
|
30973
|
+
setProp(_el$4, "onMouseUp", () => props.onCancel());
|
|
30974
|
+
insert(_el$, (() => {
|
|
30975
|
+
var _c$ = memo2(() => !!inEffortStep());
|
|
30976
|
+
return () => _c$() ? (() => {
|
|
30977
|
+
var _el$8 = createElement("box"), _el$9 = createElement("box"), _el$0 = createElement("text"), _el$10 = createElement("text");
|
|
30978
|
+
insertNode(_el$8, _el$9);
|
|
30979
|
+
setProp(_el$8, "flexDirection", "column");
|
|
30980
|
+
setProp(_el$8, "paddingBottom", 1);
|
|
30981
|
+
insertNode(_el$9, _el$0);
|
|
30982
|
+
insertNode(_el$9, _el$10);
|
|
30983
|
+
setProp(_el$9, "flexDirection", "row");
|
|
30984
|
+
setProp(_el$9, "gap", 2);
|
|
30985
|
+
setProp(_el$9, "paddingLeft", 1);
|
|
30986
|
+
setProp(_el$9, "paddingRight", 1);
|
|
30987
|
+
insertNode(_el$0, createTextNode(`model`));
|
|
30988
|
+
setProp(_el$0, "wrapMode", "none");
|
|
30989
|
+
setProp(_el$10, "wrapMode", "none");
|
|
30990
|
+
insert(_el$10, () => selectedModel()?.label);
|
|
30991
|
+
insert(_el$8, createComponent2(For, {
|
|
30992
|
+
get each() {
|
|
30993
|
+
return effortChoices();
|
|
30994
|
+
},
|
|
30995
|
+
children: (choice, i2) => {
|
|
30996
|
+
const active = () => i2() === effortCursor();
|
|
30997
|
+
return (() => {
|
|
30998
|
+
var _el$11 = createElement("box"), _el$12 = createElement("text");
|
|
30999
|
+
insertNode(_el$11, _el$12);
|
|
31000
|
+
setProp(_el$11, "flexDirection", "row");
|
|
31001
|
+
setProp(_el$11, "gap", 2);
|
|
31002
|
+
setProp(_el$11, "paddingLeft", 1);
|
|
31003
|
+
setProp(_el$11, "paddingRight", 1);
|
|
31004
|
+
setProp(_el$11, "onMouseUp", () => {
|
|
31005
|
+
setEffortCursor(i2());
|
|
31006
|
+
props.onPick({
|
|
31007
|
+
id: choice.id,
|
|
31008
|
+
effort: choice.effort
|
|
31009
|
+
});
|
|
31010
|
+
dialog.clear();
|
|
31011
|
+
});
|
|
30918
31012
|
setProp(_el$12, "wrapMode", "none");
|
|
30919
|
-
insert(_el$12, () =>
|
|
30920
|
-
|
|
30921
|
-
|
|
30922
|
-
|
|
30923
|
-
|
|
30924
|
-
|
|
30925
|
-
|
|
30926
|
-
|
|
30927
|
-
|
|
30928
|
-
|
|
30929
|
-
|
|
30930
|
-
|
|
30931
|
-
|
|
30932
|
-
|
|
30933
|
-
|
|
30934
|
-
|
|
30935
|
-
|
|
30936
|
-
|
|
30937
|
-
|
|
30938
|
-
|
|
30939
|
-
|
|
30940
|
-
|
|
30941
|
-
|
|
30942
|
-
|
|
30943
|
-
|
|
30944
|
-
|
|
30945
|
-
|
|
31013
|
+
insert(_el$12, () => active() ? "\u25B8 " : " ", null);
|
|
31014
|
+
insert(_el$12, () => choice.label, null);
|
|
31015
|
+
insert(_el$11, (() => {
|
|
31016
|
+
var _c$2 = memo2(() => !!choice.hint);
|
|
31017
|
+
return () => _c$2() ? (() => {
|
|
31018
|
+
var _el$13 = createElement("text");
|
|
31019
|
+
setProp(_el$13, "wrapMode", "none");
|
|
31020
|
+
insert(_el$13, () => choice.hint);
|
|
31021
|
+
effect((_$p) => setProp(_el$13, "fg", active() ? theme.selectedListItemText : theme.textMuted, _$p));
|
|
31022
|
+
return _el$13;
|
|
31023
|
+
})() : null;
|
|
31024
|
+
})(), null);
|
|
31025
|
+
effect((_p$) => {
|
|
31026
|
+
var _v$8 = active() ? theme.primary : undefined, _v$9 = active() ? theme.selectedListItemText : theme.text, _v$0 = active() ? TextAttributes24.BOLD : undefined;
|
|
31027
|
+
_v$8 !== _p$.e && (_p$.e = setProp(_el$11, "backgroundColor", _v$8, _p$.e));
|
|
31028
|
+
_v$9 !== _p$.t && (_p$.t = setProp(_el$12, "fg", _v$9, _p$.t));
|
|
31029
|
+
_v$0 !== _p$.a && (_p$.a = setProp(_el$12, "attributes", _v$0, _p$.a));
|
|
31030
|
+
return _p$;
|
|
31031
|
+
}, {
|
|
31032
|
+
e: undefined,
|
|
31033
|
+
t: undefined,
|
|
31034
|
+
a: undefined
|
|
31035
|
+
});
|
|
31036
|
+
return _el$11;
|
|
31037
|
+
})();
|
|
31038
|
+
}
|
|
31039
|
+
}), null);
|
|
31040
|
+
effect((_p$) => {
|
|
31041
|
+
var { textMuted: _v$5, text: _v$6 } = theme, _v$7 = TextAttributes24.BOLD;
|
|
31042
|
+
_v$5 !== _p$.e && (_p$.e = setProp(_el$0, "fg", _v$5, _p$.e));
|
|
31043
|
+
_v$6 !== _p$.t && (_p$.t = setProp(_el$10, "fg", _v$6, _p$.t));
|
|
31044
|
+
_v$7 !== _p$.a && (_p$.a = setProp(_el$10, "attributes", _v$7, _p$.a));
|
|
31045
|
+
return _p$;
|
|
31046
|
+
}, {
|
|
31047
|
+
e: undefined,
|
|
31048
|
+
t: undefined,
|
|
31049
|
+
a: undefined
|
|
31050
|
+
});
|
|
31051
|
+
return _el$8;
|
|
31052
|
+
})() : (() => {
|
|
31053
|
+
var _el$14 = createElement("box");
|
|
31054
|
+
setProp(_el$14, "flexDirection", "column");
|
|
31055
|
+
setProp(_el$14, "paddingBottom", 1);
|
|
31056
|
+
insert(_el$14, createComponent2(For, {
|
|
31057
|
+
get each() {
|
|
31058
|
+
return models();
|
|
31059
|
+
},
|
|
31060
|
+
children: (model, i2) => {
|
|
31061
|
+
const active = () => i2() === cursor();
|
|
31062
|
+
const hasEfforts = () => modelPickerEffortOptions(model).some((choice) => choice.effort !== undefined);
|
|
31063
|
+
return (() => {
|
|
31064
|
+
var _el$15 = createElement("box"), _el$16 = createElement("text"), _el$17 = createElement("text");
|
|
31065
|
+
insertNode(_el$15, _el$16);
|
|
31066
|
+
insertNode(_el$15, _el$17);
|
|
31067
|
+
setProp(_el$15, "flexDirection", "row");
|
|
31068
|
+
setProp(_el$15, "gap", 2);
|
|
31069
|
+
setProp(_el$15, "paddingLeft", 1);
|
|
31070
|
+
setProp(_el$15, "paddingRight", 1);
|
|
31071
|
+
setProp(_el$15, "onMouseUp", () => {
|
|
31072
|
+
const efforts = modelPickerEffortOptions(model);
|
|
31073
|
+
if (efforts.length <= 1 && efforts[0]?.effort === undefined) {
|
|
31074
|
+
props.onPick({
|
|
31075
|
+
id: model.id,
|
|
31076
|
+
effort: undefined
|
|
31077
|
+
});
|
|
31078
|
+
dialog.clear();
|
|
31079
|
+
return;
|
|
31080
|
+
}
|
|
31081
|
+
setCursor(i2());
|
|
31082
|
+
setSelectedModel(model);
|
|
31083
|
+
setInitialEffortCursor(model);
|
|
31084
|
+
});
|
|
31085
|
+
setProp(_el$16, "wrapMode", "none");
|
|
31086
|
+
insert(_el$16, () => active() ? "\u25B8 " : " ", null);
|
|
31087
|
+
insert(_el$16, () => model.label, null);
|
|
31088
|
+
setProp(_el$17, "wrapMode", "none");
|
|
31089
|
+
insert(_el$17, () => model.vendor);
|
|
31090
|
+
insert(_el$15, (() => {
|
|
31091
|
+
var _c$3 = memo2(() => !!hasEfforts());
|
|
31092
|
+
return () => _c$3() ? (() => {
|
|
31093
|
+
var _el$18 = createElement("text");
|
|
31094
|
+
insertNode(_el$18, createTextNode(`effort\u2026`));
|
|
31095
|
+
setProp(_el$18, "wrapMode", "none");
|
|
31096
|
+
effect((_$p) => setProp(_el$18, "fg", active() ? theme.selectedListItemText : theme.textMuted, _$p));
|
|
31097
|
+
return _el$18;
|
|
31098
|
+
})() : null;
|
|
31099
|
+
})(), null);
|
|
31100
|
+
insert(_el$15, (() => {
|
|
31101
|
+
var _c$4 = memo2(() => !!model.hint);
|
|
31102
|
+
return () => _c$4() ? (() => {
|
|
31103
|
+
var _el$20 = createElement("text");
|
|
31104
|
+
setProp(_el$20, "wrapMode", "none");
|
|
31105
|
+
insert(_el$20, () => model.hint);
|
|
31106
|
+
effect((_$p) => setProp(_el$20, "fg", active() ? theme.selectedListItemText : theme.textMuted, _$p));
|
|
31107
|
+
return _el$20;
|
|
31108
|
+
})() : null;
|
|
31109
|
+
})(), null);
|
|
31110
|
+
effect((_p$) => {
|
|
31111
|
+
var _v$1 = active() ? theme.primary : undefined, _v$10 = active() ? theme.selectedListItemText : theme.text, _v$11 = active() ? TextAttributes24.BOLD : undefined, _v$12 = active() ? theme.selectedListItemText : theme.textMuted;
|
|
31112
|
+
_v$1 !== _p$.e && (_p$.e = setProp(_el$15, "backgroundColor", _v$1, _p$.e));
|
|
31113
|
+
_v$10 !== _p$.t && (_p$.t = setProp(_el$16, "fg", _v$10, _p$.t));
|
|
31114
|
+
_v$11 !== _p$.a && (_p$.a = setProp(_el$16, "attributes", _v$11, _p$.a));
|
|
31115
|
+
_v$12 !== _p$.o && (_p$.o = setProp(_el$17, "fg", _v$12, _p$.o));
|
|
31116
|
+
return _p$;
|
|
31117
|
+
}, {
|
|
31118
|
+
e: undefined,
|
|
31119
|
+
t: undefined,
|
|
31120
|
+
a: undefined,
|
|
31121
|
+
o: undefined
|
|
31122
|
+
});
|
|
31123
|
+
return _el$15;
|
|
31124
|
+
})();
|
|
31125
|
+
}
|
|
31126
|
+
}));
|
|
31127
|
+
return _el$14;
|
|
31128
|
+
})();
|
|
31129
|
+
})(), _el$6);
|
|
31130
|
+
insertNode(_el$6, _el$7);
|
|
31131
|
+
setProp(_el$6, "paddingBottom", 1);
|
|
31132
|
+
insert(_el$7, () => inEffortStep() ? "\u2191\u2193 pick \xB7 enter select \xB7 h back \xB7 esc cancel" : "\u2191\u2193 pick \xB7 enter select \xB7 esc cancel");
|
|
30946
31133
|
effect((_p$) => {
|
|
30947
31134
|
var _v$ = TextAttributes24.BOLD, _v$2 = theme.text, _v$3 = theme.textMuted, _v$4 = theme.textMuted;
|
|
30948
31135
|
_v$ !== _p$.e && (_p$.e = setProp(_el$3, "attributes", _v$, _p$.e));
|
|
30949
31136
|
_v$2 !== _p$.t && (_p$.t = setProp(_el$3, "fg", _v$2, _p$.t));
|
|
30950
|
-
_v$3 !== _p$.a && (_p$.a = setProp(_el$
|
|
30951
|
-
_v$4 !== _p$.o && (_p$.o = setProp(_el$
|
|
31137
|
+
_v$3 !== _p$.a && (_p$.a = setProp(_el$4, "fg", _v$3, _p$.a));
|
|
31138
|
+
_v$4 !== _p$.o && (_p$.o = setProp(_el$7, "fg", _v$4, _p$.o));
|
|
30952
31139
|
return _p$;
|
|
30953
31140
|
}, {
|
|
30954
31141
|
e: undefined,
|
|
@@ -30973,7 +31160,6 @@ var init_ModelPicker = __esm(() => {
|
|
|
30973
31160
|
init_theme();
|
|
30974
31161
|
init_keymap();
|
|
30975
31162
|
init_dialog();
|
|
30976
|
-
init_model_picker_row();
|
|
30977
31163
|
ModelPicker.show = (dialog, current, currentEffort) => {
|
|
30978
31164
|
return new Promise((resolve4) => {
|
|
30979
31165
|
dialog.replace(() => createComponent2(ModelPicker, {
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json.schemastore.org/package.json",
|
|
3
3
|
"name": "@sma1lboy/kobe",
|
|
4
|
-
"version": "0.5.
|
|
4
|
+
"version": "0.5.19",
|
|
5
5
|
"description": "TUI orchestrator for Claude Code (codename)",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"packageManager": "bun@1.3.13",
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
"@opentui/core": "0.2.4",
|
|
47
47
|
"@opentui/solid": "0.2.4",
|
|
48
48
|
"@xterm/headless": "^6.0.0",
|
|
49
|
-
"solid-js": "1.9.
|
|
49
|
+
"solid-js": "1.9.12"
|
|
50
50
|
},
|
|
51
51
|
"devDependencies": {
|
|
52
52
|
"@biomejs/biome": "1.9.4",
|