@meistrari/remy-cli 1.0.0-rc.1 → 1.0.0
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/remy.js +35 -16
- package/package.json +1 -1
package/dist/remy.js
CHANGED
|
@@ -34553,7 +34553,10 @@ function renderComposerDivider({ width, tag, leadLabel }) {
|
|
|
34553
34553
|
// src/tui/renderer.ts
|
|
34554
34554
|
import { createCliRenderer } from "@opentui/core";
|
|
34555
34555
|
var rendererDestroyed = new WeakMap;
|
|
34556
|
-
var
|
|
34556
|
+
var enterAlternateScreen = "\x1B[?1049h";
|
|
34557
|
+
var clearScreen = "\x1B[2J\x1B[H";
|
|
34558
|
+
var exitAlternateScreen = "\x1B[?1049l";
|
|
34559
|
+
var transitionScreenWriter;
|
|
34557
34560
|
async function createRemyRenderer({
|
|
34558
34561
|
createRenderer = createCliRenderer
|
|
34559
34562
|
} = {}) {
|
|
@@ -34566,23 +34569,28 @@ async function createRemyRenderer({
|
|
|
34566
34569
|
const renderer = await createRenderer({
|
|
34567
34570
|
exitOnCtrlC: false,
|
|
34568
34571
|
exitSignals: [],
|
|
34569
|
-
screenMode: "
|
|
34570
|
-
useMouse:
|
|
34572
|
+
screenMode: "alternate-screen",
|
|
34573
|
+
useMouse: true,
|
|
34571
34574
|
onDestroy: resolveDestroyed
|
|
34572
34575
|
});
|
|
34576
|
+
transitionScreenWriter = undefined;
|
|
34573
34577
|
rendererDestroyed.set(renderer, destroyed);
|
|
34574
34578
|
return renderer;
|
|
34575
34579
|
}
|
|
34576
34580
|
async function waitForRemyRendererDestroy(renderer) {
|
|
34577
34581
|
await (rendererDestroyed.get(renderer) ?? Promise.resolve());
|
|
34578
34582
|
}
|
|
34579
|
-
function
|
|
34583
|
+
function showRemyTransitionScreen({
|
|
34580
34584
|
write = (chunk) => process.stdout.write(chunk)
|
|
34581
34585
|
} = {}) {
|
|
34582
|
-
write
|
|
34586
|
+
transitionScreenWriter = write;
|
|
34587
|
+
write(`${enterAlternateScreen}${clearScreen}`);
|
|
34588
|
+
}
|
|
34589
|
+
function restoreRemyTransitionScreen() {
|
|
34590
|
+
transitionScreenWriter?.(exitAlternateScreen);
|
|
34591
|
+
transitionScreenWriter = undefined;
|
|
34583
34592
|
}
|
|
34584
34593
|
async function renderRemyView({
|
|
34585
|
-
clearScreen = clearRemyScreen,
|
|
34586
34594
|
open: open4,
|
|
34587
34595
|
waitForAction
|
|
34588
34596
|
}) {
|
|
@@ -34592,7 +34600,6 @@ async function renderRemyView({
|
|
|
34592
34600
|
} finally {
|
|
34593
34601
|
view.destroy();
|
|
34594
34602
|
await view.waitForDestroy?.();
|
|
34595
|
-
clearScreen();
|
|
34596
34603
|
}
|
|
34597
34604
|
}
|
|
34598
34605
|
|
|
@@ -36994,7 +37001,7 @@ var compactMarkRows = 9;
|
|
|
36994
37001
|
var compactMinWidth = 48;
|
|
36995
37002
|
var compactMinHeight = 20;
|
|
36996
37003
|
var markBrightnessGain = 4.2;
|
|
36997
|
-
var remyCliVersion = "1.0.0
|
|
37004
|
+
var remyCliVersion = "1.0.0";
|
|
36998
37005
|
async function showRemySplash({
|
|
36999
37006
|
createRenderer = createRemyRenderer,
|
|
37000
37007
|
durationMs = splashDurationMs,
|
|
@@ -37311,6 +37318,7 @@ async function dispatchCliCommand(dependencies) {
|
|
|
37311
37318
|
interrupt: shutdown.interrupt
|
|
37312
37319
|
});
|
|
37313
37320
|
} catch (error93) {
|
|
37321
|
+
restoreRemyTransitionScreen();
|
|
37314
37322
|
if (error93 instanceof CliInterruptedError) {
|
|
37315
37323
|
dependencies.output.writeStderr(`Interrupted.
|
|
37316
37324
|
`);
|
|
@@ -37337,6 +37345,7 @@ async function dispatchCliCommand(dependencies) {
|
|
|
37337
37345
|
`);
|
|
37338
37346
|
return 1;
|
|
37339
37347
|
} finally {
|
|
37348
|
+
restoreRemyTransitionScreen();
|
|
37340
37349
|
shutdown.dispose();
|
|
37341
37350
|
}
|
|
37342
37351
|
}
|
|
@@ -37752,6 +37761,9 @@ async function dashboard({
|
|
|
37752
37761
|
const pages = [initialSessions];
|
|
37753
37762
|
let pageIndex = 0;
|
|
37754
37763
|
let loadingPage;
|
|
37764
|
+
function holdTransitionScreen() {
|
|
37765
|
+
showRemyTransitionScreen({ write: (chunk) => dependencies.output.writeStdout(chunk) });
|
|
37766
|
+
}
|
|
37755
37767
|
async function loadDashboardPage({ direction }) {
|
|
37756
37768
|
if (loadingPage)
|
|
37757
37769
|
return await loadingPage;
|
|
@@ -37776,6 +37788,7 @@ async function dashboard({
|
|
|
37776
37788
|
}
|
|
37777
37789
|
}
|
|
37778
37790
|
let firstOpen = true;
|
|
37791
|
+
holdTransitionScreen();
|
|
37779
37792
|
while (true) {
|
|
37780
37793
|
if (!firstOpen) {
|
|
37781
37794
|
pages.splice(0, pages.length, toDashboardPage(await operations.listSessions({ client: operations.client, limit: 20 })));
|
|
@@ -37793,6 +37806,7 @@ async function dashboard({
|
|
|
37793
37806
|
return 0;
|
|
37794
37807
|
if (action.kind === "interrupt")
|
|
37795
37808
|
throw new CliInterruptedError("SIGINT");
|
|
37809
|
+
holdTransitionScreen();
|
|
37796
37810
|
if (action.kind === "session")
|
|
37797
37811
|
return await attachSession({ dependencies, sessionId: action.sessionId, noTui: false, json: false });
|
|
37798
37812
|
const draft = await openTuiNewSessionWizard({
|
|
@@ -37801,10 +37815,13 @@ async function dashboard({
|
|
|
37801
37815
|
repositories,
|
|
37802
37816
|
reloadRepositories: async () => await collectAllRepositories({ listRepositories: operations.listRepositories })
|
|
37803
37817
|
});
|
|
37804
|
-
if (!draft)
|
|
37818
|
+
if (!draft) {
|
|
37819
|
+
holdTransitionScreen();
|
|
37805
37820
|
continue;
|
|
37821
|
+
}
|
|
37806
37822
|
if ("kind" in draft)
|
|
37807
37823
|
throw new CliInterruptedError("SIGINT");
|
|
37824
|
+
holdTransitionScreen();
|
|
37808
37825
|
const created = await createFromTuiDraft({ dependencies, operations, draft });
|
|
37809
37826
|
return await attachCreatedSession({ dependencies, operations, created, repositories: draft.repositories, noTui: false, json: false });
|
|
37810
37827
|
}
|
|
@@ -37863,7 +37880,6 @@ function createSplashPresentation({
|
|
|
37863
37880
|
const controller = new AbortController;
|
|
37864
37881
|
let splash;
|
|
37865
37882
|
let ready;
|
|
37866
|
-
let mounted = false;
|
|
37867
37883
|
let closed = false;
|
|
37868
37884
|
const onCommandAbort = () => controller.abort();
|
|
37869
37885
|
dependencies.abortSignal?.addEventListener("abort", onCommandAbort, { once: true });
|
|
@@ -37886,10 +37902,7 @@ function createSplashPresentation({
|
|
|
37886
37902
|
mode: "startup",
|
|
37887
37903
|
signal: controller.signal,
|
|
37888
37904
|
onInterrupt: interrupt,
|
|
37889
|
-
onReady:
|
|
37890
|
-
mounted = splashController !== undefined;
|
|
37891
|
-
resolveReady(splashController);
|
|
37892
|
-
}
|
|
37905
|
+
onReady: resolveReady
|
|
37893
37906
|
});
|
|
37894
37907
|
splash.catch((error93) => rejectReady(error93));
|
|
37895
37908
|
}
|
|
@@ -37902,8 +37915,6 @@ function createSplashPresentation({
|
|
|
37902
37915
|
dependencies.abortSignal?.removeEventListener("abort", onCommandAbort);
|
|
37903
37916
|
controller.abort();
|
|
37904
37917
|
await splash;
|
|
37905
|
-
if (mounted)
|
|
37906
|
-
clearRemyScreen();
|
|
37907
37918
|
}
|
|
37908
37919
|
};
|
|
37909
37920
|
}
|
|
@@ -38246,6 +38257,8 @@ async function runAttachedSession({
|
|
|
38246
38257
|
if (interactive) {
|
|
38247
38258
|
const openSessionTui = dependencies.openSessionTui ?? createSessionTui;
|
|
38248
38259
|
let composerSnapshot;
|
|
38260
|
+
const holdTransitionScreen = () => showRemyTransitionScreen({ write: (chunk) => dependencies.output.writeStdout(chunk) });
|
|
38261
|
+
holdTransitionScreen();
|
|
38249
38262
|
while (true) {
|
|
38250
38263
|
const action = await renderRemyView({
|
|
38251
38264
|
open: async () => await openSessionTui({
|
|
@@ -38290,6 +38303,7 @@ async function runAttachedSession({
|
|
|
38290
38303
|
return 0;
|
|
38291
38304
|
}
|
|
38292
38305
|
if (action.kind === "sessions") {
|
|
38306
|
+
holdTransitionScreen();
|
|
38293
38307
|
stop();
|
|
38294
38308
|
await startPromise;
|
|
38295
38309
|
if (dependencies.abortSignal?.aborted)
|
|
@@ -38299,14 +38313,17 @@ async function runAttachedSession({
|
|
|
38299
38313
|
bootstrap: await prepareDashboardBootstrap({ dependencies, operations })
|
|
38300
38314
|
});
|
|
38301
38315
|
}
|
|
38316
|
+
holdTransitionScreen();
|
|
38302
38317
|
const availableRepositories = await collectAllRepositories({ listRepositories: operations.listRepositories });
|
|
38303
38318
|
let draft = await openTuiNewSessionWizard({ dependencies, operations, repositories: availableRepositories });
|
|
38304
38319
|
if (!draft) {
|
|
38320
|
+
holdTransitionScreen();
|
|
38305
38321
|
composerSnapshot = action.composer;
|
|
38306
38322
|
continue;
|
|
38307
38323
|
}
|
|
38308
38324
|
if ("kind" in draft)
|
|
38309
38325
|
throw new CliInterruptedError("SIGINT");
|
|
38326
|
+
holdTransitionScreen();
|
|
38310
38327
|
while (true) {
|
|
38311
38328
|
try {
|
|
38312
38329
|
const created = await createFromTuiDraft({ dependencies, operations, draft });
|
|
@@ -38321,6 +38338,7 @@ async function runAttachedSession({
|
|
|
38321
38338
|
json: false
|
|
38322
38339
|
});
|
|
38323
38340
|
} catch (error93) {
|
|
38341
|
+
holdTransitionScreen();
|
|
38324
38342
|
draft = await openTuiNewSessionWizard({
|
|
38325
38343
|
dependencies,
|
|
38326
38344
|
operations,
|
|
@@ -38329,6 +38347,7 @@ async function runAttachedSession({
|
|
|
38329
38347
|
initialError: error93 instanceof Error ? error93.message : String(error93)
|
|
38330
38348
|
});
|
|
38331
38349
|
if (!draft) {
|
|
38350
|
+
holdTransitionScreen();
|
|
38332
38351
|
composerSnapshot = action.composer;
|
|
38333
38352
|
break;
|
|
38334
38353
|
}
|