pudu-ai 0.2.8 → 0.2.9
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/cli/index.js +26 -17
- package/package.json +1 -1
package/dist/cli/index.js
CHANGED
|
@@ -1986,7 +1986,7 @@ import { render } from "ink";
|
|
|
1986
1986
|
|
|
1987
1987
|
// src/tui/App.tsx
|
|
1988
1988
|
import { Box as Box10, useApp as useApp2, useInput as useInput4 } from "ink";
|
|
1989
|
-
import { useMemo as useMemo2, useState as useState4 } from "react";
|
|
1989
|
+
import { useMemo as useMemo2, useRef as useRef2, useState as useState4 } from "react";
|
|
1990
1990
|
|
|
1991
1991
|
// src/tui/views/Dashboard.tsx
|
|
1992
1992
|
import { Box, Text } from "ink";
|
|
@@ -3071,15 +3071,7 @@ function TasksView({ session }) {
|
|
|
3071
3071
|
}
|
|
3072
3072
|
|
|
3073
3073
|
// src/tui/keys.ts
|
|
3074
|
-
function
|
|
3075
|
-
const letter = input.toLowerCase();
|
|
3076
|
-
if (screen === "benchmark") return { type: "ignore" };
|
|
3077
|
-
if (screen === "recommend" || screen === "tasks") {
|
|
3078
|
-
if (letter === "q") return { type: "quit" };
|
|
3079
|
-
if (key.escape) return { type: "home" };
|
|
3080
|
-
return { type: "ignore" };
|
|
3081
|
-
}
|
|
3082
|
-
if (letter === "q" || key.escape) return { type: "quit" };
|
|
3074
|
+
function globalNav(letter) {
|
|
3083
3075
|
if (letter === "b") return { type: "screen", screen: "benchmark" };
|
|
3084
3076
|
if (letter === "m") return { type: "screen", screen: "models" };
|
|
3085
3077
|
if (letter === "r") return { type: "screen", screen: "recommend" };
|
|
@@ -3087,7 +3079,20 @@ function handleAppKey(screen, input, key) {
|
|
|
3087
3079
|
if (letter === "c") return { type: "screen", screen: "compare" };
|
|
3088
3080
|
if (letter === "l") return { type: "screen", screen: "history" };
|
|
3089
3081
|
if (letter === "t") return { type: "screen", screen: "tasks" };
|
|
3090
|
-
if (letter === "s"
|
|
3082
|
+
if (letter === "s") return { type: "screen", screen: "recommend" };
|
|
3083
|
+
return void 0;
|
|
3084
|
+
}
|
|
3085
|
+
function handleAppKey(screen, input, key) {
|
|
3086
|
+
const letter = input.toLowerCase();
|
|
3087
|
+
if (screen === "benchmark") return { type: "ignore" };
|
|
3088
|
+
if (letter === "q") return { type: "quit" };
|
|
3089
|
+
if (key.escape) return screen === "home" ? { type: "quit" } : { type: "home" };
|
|
3090
|
+
if (screen === "recommend") {
|
|
3091
|
+
if (letter === "i" || letter === "1" || letter === "2" || letter === "3") return { type: "ignore" };
|
|
3092
|
+
}
|
|
3093
|
+
const nav = globalNav(letter);
|
|
3094
|
+
if (nav) return nav;
|
|
3095
|
+
if (letter === "i" && screen === "home") return { type: "screen", screen: "recommend" };
|
|
3091
3096
|
if (key.return && screen === "home") return { type: "screen", screen: "benchmark" };
|
|
3092
3097
|
return { type: "ignore" };
|
|
3093
3098
|
}
|
|
@@ -3150,23 +3155,28 @@ function ColorNav() {
|
|
|
3150
3155
|
}
|
|
3151
3156
|
|
|
3152
3157
|
// src/tui/App.tsx
|
|
3153
|
-
import { jsx as jsx10, jsxs as jsxs9 } from "react/jsx-runtime";
|
|
3158
|
+
import { Fragment as Fragment2, jsx as jsx10, jsxs as jsxs9 } from "react/jsx-runtime";
|
|
3154
3159
|
function App(props) {
|
|
3155
3160
|
const { exit } = useApp2();
|
|
3156
3161
|
const [screen, setScreen] = useState4(props.start ?? "home");
|
|
3162
|
+
const screenRef = useRef2(screen);
|
|
3163
|
+
screenRef.current = screen;
|
|
3157
3164
|
const [selected, setSelected] = useState4(0);
|
|
3158
3165
|
const benchable = useMemo2(
|
|
3159
3166
|
() => props.session.models.filter((m) => Boolean(m.artifactPath)),
|
|
3160
3167
|
[props.session.models]
|
|
3161
3168
|
);
|
|
3162
3169
|
useInput4((input, key) => {
|
|
3163
|
-
const result = handleAppKey(
|
|
3170
|
+
const result = handleAppKey(screenRef.current, input, key);
|
|
3164
3171
|
if (result.type === "quit") exit();
|
|
3165
3172
|
if (result.type === "home") setScreen("home");
|
|
3166
3173
|
if (result.type === "screen") setScreen(result.screen);
|
|
3167
3174
|
});
|
|
3168
|
-
return /* @__PURE__ */ jsxs9(Box10, { flexDirection: "column",
|
|
3169
|
-
screen !== "benchmark" && /* @__PURE__ */
|
|
3175
|
+
return /* @__PURE__ */ jsxs9(Box10, { flexDirection: "column", paddingX: 1, paddingTop: 0, paddingBottom: 1, children: [
|
|
3176
|
+
screen !== "benchmark" && /* @__PURE__ */ jsxs9(Fragment2, { children: [
|
|
3177
|
+
/* @__PURE__ */ jsx10(ColorNav, {}),
|
|
3178
|
+
/* @__PURE__ */ jsx10(Welcome, { compact: true })
|
|
3179
|
+
] }),
|
|
3170
3180
|
screen === "home" && /* @__PURE__ */ jsx10(Dashboard, { session: props.session }),
|
|
3171
3181
|
screen === "models" && /* @__PURE__ */ jsx10(ModelsView, { session: props.session }),
|
|
3172
3182
|
screen === "hardware" && /* @__PURE__ */ jsx10(HardwareView, { session: props.session }),
|
|
@@ -3184,8 +3194,7 @@ function App(props) {
|
|
|
3184
3194
|
preset: props.preset,
|
|
3185
3195
|
onBack: () => setScreen("home")
|
|
3186
3196
|
}
|
|
3187
|
-
)
|
|
3188
|
-
screen !== "benchmark" && /* @__PURE__ */ jsx10(ColorNav, {})
|
|
3197
|
+
)
|
|
3189
3198
|
] });
|
|
3190
3199
|
}
|
|
3191
3200
|
|