nexrall-code 0.5.82 → 0.5.83
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/index.js +38 -7
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -55925,7 +55925,7 @@ function renderBanner(info) {
|
|
|
55925
55925
|
const PAD = 1;
|
|
55926
55926
|
const CHROME = 3 + 4 * PAD;
|
|
55927
55927
|
const LOGO_W = Math.max(...NEX_LOGO.map(visibleLen));
|
|
55928
|
-
const termW = process.stdout.columns
|
|
55928
|
+
const termW = info.columns ?? process.stdout.columns ?? 100;
|
|
55929
55929
|
const totalW = Math.max(LOGO_W + CHROME + 24, termW - 1);
|
|
55930
55930
|
const headerText = `Nexrall Code v${info.version}`;
|
|
55931
55931
|
const LEFT_W = Math.max(LOGO_W, visibleLen(headerText));
|
|
@@ -64945,11 +64945,14 @@ function repaintAfterResizeSettle() {
|
|
|
64945
64945
|
if (inkInstance !== instance)
|
|
64946
64946
|
return;
|
|
64947
64947
|
process.stdout.write("\x1B[0J");
|
|
64948
|
+
forceFullRedrawRef?.();
|
|
64948
64949
|
});
|
|
64949
64950
|
}
|
|
64951
|
+
var forceFullRedrawRef = null;
|
|
64950
64952
|
var DEFAULT_PROMPT = colors.primary.bold("> ");
|
|
64951
64953
|
var App2 = ({ onReady }) => {
|
|
64952
64954
|
const [items, setItems] = (0, import_react35.useState)([]);
|
|
64955
|
+
const [staticKey, setStaticKey] = (0, import_react35.useState)(0);
|
|
64953
64956
|
const [footer, setFooterState] = (0, import_react35.useState)({ mode: "auto", autoApprove: false });
|
|
64954
64957
|
const [busy, setBusyState] = (0, import_react35.useState)(false);
|
|
64955
64958
|
const [line, setLineState] = (0, import_react35.useState)("");
|
|
@@ -64979,8 +64982,12 @@ var App2 = ({ onReady }) => {
|
|
|
64979
64982
|
setQuitArmedState(at);
|
|
64980
64983
|
}, []);
|
|
64981
64984
|
const [live, setLiveState] = (0, import_react35.useState)("");
|
|
64982
|
-
const print = (0, import_react35.useCallback)((text) => {
|
|
64983
|
-
setItems((prev) => [...prev, { id: idCounter++, content: text }]);
|
|
64985
|
+
const print = (0, import_react35.useCallback)((text, opts) => {
|
|
64986
|
+
setItems((prev) => [...prev, { id: idCounter++, content: text, isBanner: opts?.isBanner }]);
|
|
64987
|
+
}, []);
|
|
64988
|
+
const bannerRegeneratorRef = (0, import_react35.useRef)(null);
|
|
64989
|
+
const setBannerRegenerator = (0, import_react35.useCallback)((fn) => {
|
|
64990
|
+
bannerRegeneratorRef.current = fn;
|
|
64984
64991
|
}, []);
|
|
64985
64992
|
const setFooter = (0, import_react35.useCallback)((info) => setFooterState(info), []);
|
|
64986
64993
|
const setLive = (0, import_react35.useCallback)((text) => setLiveState(text), []);
|
|
@@ -65115,10 +65122,28 @@ var App2 = ({ onReady }) => {
|
|
|
65115
65122
|
return s2.slice(0, pos) + char + s2.slice(pos);
|
|
65116
65123
|
});
|
|
65117
65124
|
});
|
|
65125
|
+
const forceFullRedraw = (0, import_react35.useCallback)(() => {
|
|
65126
|
+
process.stdout.write("\x1B[2J\x1B[H");
|
|
65127
|
+
const regen = bannerRegeneratorRef.current;
|
|
65128
|
+
if (regen) {
|
|
65129
|
+
const columns = process.stdout.columns || 80;
|
|
65130
|
+
setItems((prev) => prev.map(
|
|
65131
|
+
(it) => it.isBanner ? { ...it, content: regen(columns) } : it
|
|
65132
|
+
));
|
|
65133
|
+
}
|
|
65134
|
+
setStaticKey((k) => k + 1);
|
|
65135
|
+
}, []);
|
|
65136
|
+
import_react35.default.useEffect(() => {
|
|
65137
|
+
forceFullRedrawRef = forceFullRedraw;
|
|
65138
|
+
return () => {
|
|
65139
|
+
forceFullRedrawRef = null;
|
|
65140
|
+
};
|
|
65141
|
+
}, [forceFullRedraw]);
|
|
65118
65142
|
import_react35.default.useEffect(() => {
|
|
65119
65143
|
onReady({
|
|
65120
65144
|
print,
|
|
65121
65145
|
setFooter,
|
|
65146
|
+
setBannerRegenerator,
|
|
65122
65147
|
setLive,
|
|
65123
65148
|
askLine,
|
|
65124
65149
|
onLine,
|
|
@@ -65130,7 +65155,7 @@ var App2 = ({ onReady }) => {
|
|
|
65130
65155
|
});
|
|
65131
65156
|
}, []);
|
|
65132
65157
|
const slices = renderInputSlices(line, cursorPos);
|
|
65133
|
-
return /* @__PURE__ */ import_react35.default.createElement(Box_default, { flexDirection: "column" }, /* @__PURE__ */ import_react35.default.createElement(Static, { items }, (item) => /* @__PURE__ */ import_react35.default.createElement(Text, { key: item.id }, item.content)), live ? /* @__PURE__ */ import_react35.default.createElement(Text, null, live) : null, /* @__PURE__ */ import_react35.default.createElement(
|
|
65158
|
+
return /* @__PURE__ */ import_react35.default.createElement(Box_default, { flexDirection: "column" }, /* @__PURE__ */ import_react35.default.createElement(Static, { items, key: staticKey }, (item) => /* @__PURE__ */ import_react35.default.createElement(Text, { key: item.id }, item.content)), live ? /* @__PURE__ */ import_react35.default.createElement(Text, null, live) : null, /* @__PURE__ */ import_react35.default.createElement(
|
|
65134
65159
|
Box_default,
|
|
65135
65160
|
{
|
|
65136
65161
|
borderStyle: "single",
|
|
@@ -65140,7 +65165,7 @@ var App2 = ({ onReady }) => {
|
|
|
65140
65165
|
borderRight: false,
|
|
65141
65166
|
borderDimColor: true
|
|
65142
65167
|
}
|
|
65143
|
-
), /* @__PURE__ */ import_react35.default.createElement(Box_default, null, /* @__PURE__ */ import_react35.default.createElement(Text, null, prompt2), /* @__PURE__ */ import_react35.default.createElement(Text, null, slices.before), /* @__PURE__ */ import_react35.default.createElement(Text, { inverse: true }, slices.atCursor), /* @__PURE__ */ import_react35.default.createElement(Text, null, slices.after)), /* @__PURE__ */ import_react35.default.createElement(
|
|
65168
|
+
), /* @__PURE__ */ import_react35.default.createElement(Box_default, null, /* @__PURE__ */ import_react35.default.createElement(Text, null, /* @__PURE__ */ import_react35.default.createElement(Text, null, prompt2), /* @__PURE__ */ import_react35.default.createElement(Text, null, slices.before), /* @__PURE__ */ import_react35.default.createElement(Text, { inverse: true }, slices.atCursor), /* @__PURE__ */ import_react35.default.createElement(Text, null, slices.after))), /* @__PURE__ */ import_react35.default.createElement(
|
|
65144
65169
|
Box_default,
|
|
65145
65170
|
{
|
|
65146
65171
|
borderStyle: "single",
|
|
@@ -65986,14 +66011,20 @@ Set ${TRUST_ENV_VAR}=1 to confirm non-interactively, or run \`nex\` interactivel
|
|
|
65986
66011
|
if (branch) {
|
|
65987
66012
|
tips.push(`On branch ${branch}${changedLines > 0 ? ` (${changedLines} changed)` : ""}.`);
|
|
65988
66013
|
}
|
|
65989
|
-
|
|
66014
|
+
const bannerInfo = {
|
|
65990
66015
|
version: CLI_VERSION,
|
|
65991
66016
|
userLabel: currentUserLabel(),
|
|
65992
66017
|
modelLabel: resolveModelLabel(modelAlias),
|
|
65993
66018
|
workDir,
|
|
65994
66019
|
nexrallMdLoaded: !!nexrallMd,
|
|
65995
66020
|
tips
|
|
65996
|
-
}
|
|
66021
|
+
};
|
|
66022
|
+
if (interactive) {
|
|
66023
|
+
getInkTerminal().print(renderBanner({ ...bannerInfo, columns: process.stdout.columns ?? 80 }), { isBanner: true });
|
|
66024
|
+
getInkTerminal().setBannerRegenerator((columns) => renderBanner({ ...bannerInfo, columns }));
|
|
66025
|
+
} else {
|
|
66026
|
+
console.log(renderBanner({ ...bannerInfo, columns: process.stdout.columns ?? 80 }));
|
|
66027
|
+
}
|
|
65997
66028
|
console.log();
|
|
65998
66029
|
}
|
|
65999
66030
|
let messages = [];
|