summaryrefslogtreecommitdiff
path: root/packages/cli/src/ui/App.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'packages/cli/src/ui/App.tsx')
-rw-r--r--packages/cli/src/ui/App.tsx29
1 files changed, 28 insertions, 1 deletions
diff --git a/packages/cli/src/ui/App.tsx b/packages/cli/src/ui/App.tsx
index cdec11e2..dcd2b7ee 100644
--- a/packages/cli/src/ui/App.tsx
+++ b/packages/cli/src/ui/App.tsx
@@ -89,6 +89,9 @@ const App = ({ config, settings, startupWarnings = [] }: AppProps) => {
const [showToolDescriptions, setShowToolDescriptions] =
useState<boolean>(false);
const [ctrlCPressedOnce, setCtrlCPressedOnce] = useState(false);
+ const [quittingMessages, setQuittingMessages] = useState<
+ HistoryItem[] | null
+ >(null);
const ctrlCTimerRef = useRef<NodeJS.Timeout | null>(null);
const errorCount = useMemo(
@@ -162,6 +165,7 @@ const App = ({ config, settings, startupWarnings = [] }: AppProps) => {
performMemoryRefresh,
toggleCorgiMode,
showToolDescriptions,
+ setQuittingMessages,
);
useInput((input: string, key: InkKeyType) => {
@@ -185,7 +189,14 @@ const App = ({ config, settings, startupWarnings = [] }: AppProps) => {
if (ctrlCTimerRef.current) {
clearTimeout(ctrlCTimerRef.current);
}
- process.exit(0);
+ const quitCommand = slashCommands.find(
+ (cmd) => cmd.name === 'quit' || cmd.altName === 'exit',
+ );
+ if (quitCommand) {
+ quitCommand.action('quit', '', '');
+ } else {
+ process.exit(0);
+ }
} else {
setCtrlCPressedOnce(true);
ctrlCTimerRef.current = setTimeout(() => {
@@ -338,6 +349,22 @@ const App = ({ config, settings, startupWarnings = [] }: AppProps) => {
const branchName = useGitBranchName(config.getTargetDir());
+ if (quittingMessages) {
+ return (
+ <Box flexDirection="column" marginBottom={1}>
+ {quittingMessages.map((item) => (
+ <HistoryItemDisplay
+ key={item.id}
+ availableTerminalHeight={availableTerminalHeight}
+ item={item}
+ isPending={false}
+ config={config}
+ />
+ ))}
+ </Box>
+ );
+ }
+
return (
<StreamingContext.Provider value={streamingState}>
<Box flexDirection="column" marginBottom={1} width="90%">