wiggum-cli 0.10.13 → 0.10.14
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/tui/app.d.ts +3 -16
- package/dist/tui/app.d.ts.map +1 -1
- package/dist/tui/app.js +78 -34
- package/dist/tui/app.js.map +1 -1
- package/dist/tui/screens/InitScreen.d.ts +2 -2
- package/dist/tui/screens/InitScreen.d.ts.map +1 -1
- package/dist/tui/screens/InitScreen.js +4 -2
- package/dist/tui/screens/InitScreen.js.map +1 -1
- package/dist/tui/screens/InterviewScreen.d.ts.map +1 -1
- package/dist/tui/screens/InterviewScreen.js +5 -15
- package/dist/tui/screens/InterviewScreen.js.map +1 -1
- package/package.json +1 -1
- package/src/tui/app.tsx +244 -68
- package/src/tui/screens/InitScreen.tsx +8 -46
- package/src/tui/screens/InterviewScreen.tsx +6 -69
package/dist/tui/app.d.ts
CHANGED
|
@@ -3,6 +3,9 @@
|
|
|
3
3
|
*
|
|
4
4
|
* The root component for the Ink-based TUI. Routes to different screens
|
|
5
5
|
* based on the current screen state. Manages session state and navigation.
|
|
6
|
+
*
|
|
7
|
+
* Uses a "continuous thread" model like Claude Code - all output stays
|
|
8
|
+
* visible in the terminal as a growing thread, rather than clearing screens.
|
|
6
9
|
*/
|
|
7
10
|
import React from 'react';
|
|
8
11
|
import { type Instance } from 'ink';
|
|
@@ -45,22 +48,6 @@ export interface AppProps {
|
|
|
45
48
|
/** Called when the user exits/cancels */
|
|
46
49
|
onExit?: () => void;
|
|
47
50
|
}
|
|
48
|
-
/**
|
|
49
|
-
* Main App component for the Ink-based TUI
|
|
50
|
-
*
|
|
51
|
-
* Routes to different screens based on the current screen state.
|
|
52
|
-
* Manages session state and provides navigation between screens.
|
|
53
|
-
*
|
|
54
|
-
* @example
|
|
55
|
-
* ```tsx
|
|
56
|
-
* renderApp({
|
|
57
|
-
* screen: 'welcome',
|
|
58
|
-
* initialSessionState: sessionState,
|
|
59
|
-
* version: '0.8.0',
|
|
60
|
-
* onExit: () => process.exit(0),
|
|
61
|
-
* });
|
|
62
|
-
* ```
|
|
63
|
-
*/
|
|
64
51
|
export declare function App({ screen: initialScreen, initialSessionState, version, interviewProps, onComplete, onExit, }: AppProps): React.ReactElement | null;
|
|
65
52
|
/**
|
|
66
53
|
* Render options for renderApp
|
package/dist/tui/app.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../src/tui/app.tsx"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../src/tui/app.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAgC,MAAM,OAAO,CAAC;AACrD,OAAO,EAA6B,KAAK,QAAQ,EAAE,MAAM,KAAK,CAAC;AAG/D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAkB7D;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,WAAW,GAAG,MAAM,CAAC;AAEnE;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,0CAA0C;IAC1C,WAAW,EAAE,MAAM,CAAC;IACpB,kCAAkC;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,yBAAyB;IACzB,QAAQ,EAAE,UAAU,CAAC;IACrB,sBAAsB;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,oDAAoD;IACpD,UAAU,CAAC,EAAE,UAAU,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,gCAAgC;IAChC,MAAM,EAAE,SAAS,CAAC;IAClB,4BAA4B;IAC5B,mBAAmB,EAAE,YAAY,CAAC;IAClC,kBAAkB;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,2EAA2E;IAC3E,cAAc,CAAC,EAAE,iBAAiB,CAAC;IACnC,oDAAoD;IACpD,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,yCAAyC;IACzC,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;CACrB;AAyBD,wBAAgB,GAAG,CAAC,EAClB,MAAM,EAAE,aAAa,EACrB,mBAAmB,EACnB,OAAiB,EACjB,cAAc,EACd,UAAU,EACV,MAAM,GACP,EAAE,QAAQ,GAAG,KAAK,CAAC,YAAY,GAAG,IAAI,CAsTtC;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,gCAAgC;IAChC,MAAM,EAAE,SAAS,CAAC;IAClB,4BAA4B;IAC5B,mBAAmB,EAAE,YAAY,CAAC;IAClC,kBAAkB;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,qEAAqE;IACrE,cAAc,CAAC,EAAE,iBAAiB,CAAC;IACnC,4CAA4C;IAC5C,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,6BAA6B;IAC7B,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;CACrB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,gBAAgB,GAAG,QAAQ,CAW7D"}
|
package/dist/tui/app.js
CHANGED
|
@@ -1,19 +1,23 @@
|
|
|
1
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
/**
|
|
3
3
|
* Main Ink Application Entry Point
|
|
4
4
|
*
|
|
5
5
|
* The root component for the Ink-based TUI. Routes to different screens
|
|
6
6
|
* based on the current screen state. Manages session state and navigation.
|
|
7
|
+
*
|
|
8
|
+
* Uses a "continuous thread" model like Claude Code - all output stays
|
|
9
|
+
* visible in the terminal as a growing thread, rather than clearing screens.
|
|
7
10
|
*/
|
|
8
11
|
import { useState, useCallback } from 'react';
|
|
9
|
-
import { render } from 'ink';
|
|
12
|
+
import { render, Static, Box, Text } from 'ink';
|
|
10
13
|
import { existsSync, mkdirSync, writeFileSync } from 'node:fs';
|
|
11
14
|
import { join } from 'node:path';
|
|
12
15
|
import { loadConfigWithDefaults } from '../utils/config.js';
|
|
13
16
|
import { InterviewScreen } from './screens/InterviewScreen.js';
|
|
14
|
-
import { WelcomeScreen } from './screens/WelcomeScreen.js';
|
|
15
17
|
import { InitScreen } from './screens/InitScreen.js';
|
|
16
18
|
import { MainShell } from './screens/MainShell.js';
|
|
19
|
+
import { WiggumBanner } from './components/WiggumBanner.js';
|
|
20
|
+
import { colors, theme } from './theme.js';
|
|
17
21
|
/**
|
|
18
22
|
* Main App component for the Ink-based TUI
|
|
19
23
|
*
|
|
@@ -30,10 +34,34 @@ import { MainShell } from './screens/MainShell.js';
|
|
|
30
34
|
* });
|
|
31
35
|
* ```
|
|
32
36
|
*/
|
|
37
|
+
/**
|
|
38
|
+
* Generate a unique ID for thread items
|
|
39
|
+
*/
|
|
40
|
+
function generateThreadId() {
|
|
41
|
+
return `thread-${Date.now()}-${Math.random().toString(36).substring(2, 9)}`;
|
|
42
|
+
}
|
|
33
43
|
export function App({ screen: initialScreen, initialSessionState, version = '0.8.0', interviewProps, onComplete, onExit, }) {
|
|
34
44
|
const [currentScreen, setCurrentScreen] = useState(initialScreen);
|
|
35
45
|
const [screenProps, setScreenProps] = useState(interviewProps ? { featureName: interviewProps.featureName } : null);
|
|
36
46
|
const [sessionState, setSessionState] = useState(initialSessionState);
|
|
47
|
+
// Thread history - preserves all output as a continuous thread
|
|
48
|
+
const [threadHistory, setThreadHistory] = useState(() => {
|
|
49
|
+
// Start with banner if showing welcome screen
|
|
50
|
+
if (initialScreen === 'welcome') {
|
|
51
|
+
return [{
|
|
52
|
+
id: generateThreadId(),
|
|
53
|
+
type: 'banner',
|
|
54
|
+
content: (_jsxs(Box, { flexDirection: "column", padding: 1, children: [_jsx(WiggumBanner, {}), _jsxs(Box, { marginTop: 1, flexDirection: "row", children: [_jsxs(Text, { color: colors.pink, children: ["v", version] }), _jsx(Text, { dimColor: true, children: theme.statusLine.separator }), initialSessionState.provider ? (_jsxs(Text, { color: colors.blue, children: [initialSessionState.provider, "/", initialSessionState.model] })) : (_jsx(Text, { color: colors.orange, children: "not configured" })), _jsx(Text, { dimColor: true, children: theme.statusLine.separator }), _jsx(Text, { color: initialSessionState.initialized ? colors.green : colors.orange, children: initialSessionState.initialized ? 'Ready' : 'Not initialized' })] }), _jsx(Box, { marginTop: 1, children: _jsxs(Text, { dimColor: true, children: ["Tip: ", initialSessionState.initialized ? '/new <feature> to create spec' : '/init to set up', ", /help for commands"] }) })] })),
|
|
55
|
+
}];
|
|
56
|
+
}
|
|
57
|
+
return [];
|
|
58
|
+
});
|
|
59
|
+
/**
|
|
60
|
+
* Add an item to the thread history
|
|
61
|
+
*/
|
|
62
|
+
const addToThread = useCallback((type, content) => {
|
|
63
|
+
setThreadHistory(prev => [...prev, { id: generateThreadId(), type, content }]);
|
|
64
|
+
}, []);
|
|
37
65
|
/**
|
|
38
66
|
* Navigate to a different screen
|
|
39
67
|
*/
|
|
@@ -42,11 +70,12 @@ export function App({ screen: initialScreen, initialSessionState, version = '0.8
|
|
|
42
70
|
setCurrentScreen(target);
|
|
43
71
|
}, []);
|
|
44
72
|
/**
|
|
45
|
-
* Handle interview completion - save spec to disk and
|
|
73
|
+
* Handle interview completion - save spec to disk and add to thread
|
|
46
74
|
*/
|
|
47
75
|
const handleInterviewComplete = useCallback(async (spec) => {
|
|
48
76
|
// Get feature name from navigation props or initial interview props
|
|
49
77
|
const featureName = screenProps?.featureName || interviewProps?.featureName;
|
|
78
|
+
let specPath = '';
|
|
50
79
|
if (featureName && typeof featureName === 'string') {
|
|
51
80
|
try {
|
|
52
81
|
// Load config to get specs directory
|
|
@@ -57,7 +86,7 @@ export function App({ screen: initialScreen, initialSessionState, version = '0.8
|
|
|
57
86
|
mkdirSync(specsDir, { recursive: true });
|
|
58
87
|
}
|
|
59
88
|
// Write spec to file
|
|
60
|
-
|
|
89
|
+
specPath = join(specsDir, `${featureName}.md`);
|
|
61
90
|
writeFileSync(specPath, spec, 'utf-8');
|
|
62
91
|
// Call onComplete with the spec path for logging
|
|
63
92
|
onComplete?.(specPath);
|
|
@@ -70,6 +99,12 @@ export function App({ screen: initialScreen, initialSessionState, version = '0.8
|
|
|
70
99
|
else {
|
|
71
100
|
onComplete?.(spec);
|
|
72
101
|
}
|
|
102
|
+
// Add completion summary to thread
|
|
103
|
+
const specLines = spec.split('\n');
|
|
104
|
+
const totalLines = specLines.length;
|
|
105
|
+
const previewLines = specLines.slice(0, 5);
|
|
106
|
+
const remainingLines = Math.max(0, totalLines - 5);
|
|
107
|
+
addToThread('spec-complete', (_jsxs(Box, { flexDirection: "column", marginY: 1, children: [_jsxs(Box, { flexDirection: "row", children: [_jsx(Text, { color: colors.green, children: "\u25CF" }), _jsx(Text, { children: " " }), _jsx(Text, { bold: true, children: "Write" }), _jsxs(Text, { dimColor: true, children: ["(", specPath || `${featureName}.md`, ")"] })] }), _jsx(Box, { marginLeft: 2, children: _jsxs(Text, { dimColor: true, children: ["\u2514 Wrote ", totalLines, " lines"] }) }), _jsxs(Box, { marginLeft: 4, flexDirection: "column", children: [previewLines.map((line, i) => (_jsxs(Box, { flexDirection: "row", children: [_jsxs(Text, { dimColor: true, children: [String(i + 1).padStart(4), " "] }), _jsx(Text, { dimColor: true, children: line })] }, i))), remainingLines > 0 && (_jsxs(Text, { dimColor: true, children: ["\u2026 +", remainingLines, " lines"] }))] }), _jsxs(Box, { marginTop: 1, flexDirection: "row", gap: 1, children: [_jsx(Text, { color: colors.green, children: "\u25CF" }), _jsx(Text, { children: "Done. Specification generated successfully." })] }), _jsxs(Box, { marginTop: 1, flexDirection: "column", children: [_jsx(Text, { bold: true, children: "What's next:" }), _jsxs(Box, { flexDirection: "row", gap: 1, children: [_jsx(Text, { color: colors.green, children: "\u203A" }), _jsx(Text, { dimColor: true, children: "Review the spec in your editor" })] }), _jsxs(Box, { flexDirection: "row", gap: 1, children: [_jsx(Text, { color: colors.green, children: "\u203A" }), _jsx(Text, { color: colors.blue, children: "/help" }), _jsx(Text, { dimColor: true, children: "See all commands" })] })] })] })));
|
|
73
108
|
// If started on interview (--tui mode), call onExit to resolve promise
|
|
74
109
|
// Otherwise, return to shell
|
|
75
110
|
if (initialScreen === 'interview') {
|
|
@@ -78,7 +113,7 @@ export function App({ screen: initialScreen, initialSessionState, version = '0.8
|
|
|
78
113
|
else {
|
|
79
114
|
navigate('shell');
|
|
80
115
|
}
|
|
81
|
-
}, [onComplete, navigate, initialScreen, onExit, screenProps, interviewProps, sessionState.projectRoot]);
|
|
116
|
+
}, [onComplete, navigate, initialScreen, onExit, screenProps, interviewProps, sessionState.projectRoot, addToThread]);
|
|
82
117
|
/**
|
|
83
118
|
* Handle interview cancel
|
|
84
119
|
*/
|
|
@@ -104,38 +139,47 @@ export function App({ screen: initialScreen, initialSessionState, version = '0.8
|
|
|
104
139
|
const handleSessionStateChange = useCallback((newState) => {
|
|
105
140
|
setSessionState(newState);
|
|
106
141
|
}, []);
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
142
|
+
/**
|
|
143
|
+
* Handle init completion - add summary to thread and update state
|
|
144
|
+
*/
|
|
145
|
+
const handleInitComplete = useCallback((newState, generatedFiles) => {
|
|
146
|
+
// Add init completion to thread
|
|
147
|
+
addToThread('init-complete', (_jsxs(Box, { flexDirection: "column", marginY: 1, children: [generatedFiles && generatedFiles.slice(0, 5).map((file) => (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Box, { flexDirection: "row", children: [_jsx(Text, { color: colors.green, children: "\u25CF" }), _jsx(Text, { children: " " }), _jsx(Text, { bold: true, children: "Write" }), _jsxs(Text, { dimColor: true, children: ["(", file, ")"] })] }), _jsx(Box, { marginLeft: 2, children: _jsxs(Text, { dimColor: true, children: ["\u2514 Created ", file] }) })] }, file))), generatedFiles && generatedFiles.length > 5 && (_jsxs(Text, { dimColor: true, children: [" ... and ", generatedFiles.length - 5, " more files"] })), _jsxs(Box, { marginTop: 1, flexDirection: "row", gap: 1, children: [_jsx(Text, { color: colors.green, children: "\u25CF" }), _jsx(Text, { children: "Done. Created Ralph configuration files." })] }), _jsxs(Box, { marginTop: 1, flexDirection: "column", children: [_jsx(Text, { bold: true, children: "What's next:" }), _jsxs(Box, { flexDirection: "row", gap: 1, children: [_jsx(Text, { color: colors.green, children: "\u203A" }), _jsxs(Text, { color: colors.blue, children: ["/new ", '<feature>'] }), _jsx(Text, { dimColor: true, children: "Create a feature specification" })] }), _jsxs(Box, { flexDirection: "row", gap: 1, children: [_jsx(Text, { color: colors.green, children: "\u203A" }), _jsx(Text, { color: colors.blue, children: "/help" }), _jsx(Text, { dimColor: true, children: "See all commands" })] })] })] })));
|
|
148
|
+
setSessionState(newState);
|
|
149
|
+
navigate('shell');
|
|
150
|
+
}, [addToThread, navigate]);
|
|
151
|
+
// Render current screen content
|
|
152
|
+
const renderCurrentScreen = () => {
|
|
153
|
+
switch (currentScreen) {
|
|
154
|
+
case 'welcome':
|
|
155
|
+
// Banner is already in thread history, just continue to shell
|
|
119
156
|
return null;
|
|
157
|
+
case 'shell':
|
|
158
|
+
return (_jsx(MainShell, { sessionState: sessionState, onNavigate: navigate, onSessionStateChange: handleSessionStateChange }));
|
|
159
|
+
case 'interview': {
|
|
160
|
+
// Get feature name from props or navigation
|
|
161
|
+
const featureName = screenProps?.featureName || interviewProps?.featureName;
|
|
162
|
+
if (!featureName || typeof featureName !== 'string') {
|
|
163
|
+
// Missing feature name, go back to shell
|
|
164
|
+
navigate('shell');
|
|
165
|
+
return null;
|
|
166
|
+
}
|
|
167
|
+
if (!sessionState.provider) {
|
|
168
|
+
// No provider configured, can't run interview
|
|
169
|
+
navigate('shell');
|
|
170
|
+
return null;
|
|
171
|
+
}
|
|
172
|
+
return (_jsx(InterviewScreen, { featureName: featureName, projectRoot: sessionState.projectRoot, provider: sessionState.provider, model: sessionState.model, scanResult: sessionState.scanResult, specsPath: sessionState.config?.paths.specs, onComplete: handleInterviewComplete, onCancel: handleInterviewCancel }));
|
|
120
173
|
}
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
navigate('shell');
|
|
124
|
-
return null;
|
|
174
|
+
case 'init': {
|
|
175
|
+
return (_jsx(InitScreen, { projectRoot: sessionState.projectRoot, sessionState: sessionState, onComplete: handleInitComplete, onCancel: () => navigate('shell') }));
|
|
125
176
|
}
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
case 'init': {
|
|
129
|
-
// Handle init completion by updating session state
|
|
130
|
-
const handleInitComplete = (newState) => {
|
|
131
|
-
setSessionState(newState);
|
|
132
|
-
navigate('shell');
|
|
133
|
-
};
|
|
134
|
-
return (_jsx(InitScreen, { projectRoot: sessionState.projectRoot, sessionState: sessionState, onComplete: handleInitComplete, onCancel: () => navigate('shell') }));
|
|
177
|
+
default:
|
|
178
|
+
return null;
|
|
135
179
|
}
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
}
|
|
180
|
+
};
|
|
181
|
+
// Render with thread history (Static) + current screen
|
|
182
|
+
return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Static, { items: threadHistory, children: (item) => (_jsx(Box, { children: item.content }, item.id)) }), renderCurrentScreen()] }));
|
|
139
183
|
}
|
|
140
184
|
/**
|
|
141
185
|
* Render the App component to the terminal
|
package/dist/tui/app.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.js","sourceRoot":"","sources":["../../src/tui/app.tsx"],"names":[],"mappings":";AAAA
|
|
1
|
+
{"version":3,"file":"app.js","sourceRoot":"","sources":["../../src/tui/app.tsx"],"names":[],"mappings":"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"}
|
|
@@ -18,8 +18,8 @@ export interface InitScreenProps {
|
|
|
18
18
|
projectRoot: string;
|
|
19
19
|
/** Current session state */
|
|
20
20
|
sessionState: SessionState;
|
|
21
|
-
/** Called when initialization is complete */
|
|
22
|
-
onComplete: (newState: SessionState) => void;
|
|
21
|
+
/** Called when initialization is complete (with optional generated files list) */
|
|
22
|
+
onComplete: (newState: SessionState, generatedFiles?: string[]) => void;
|
|
23
23
|
/** Called when user cancels */
|
|
24
24
|
onCancel: () => void;
|
|
25
25
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InitScreen.d.ts","sourceRoot":"","sources":["../../../src/tui/screens/InitScreen.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAyC,MAAM,OAAO,CAAC;AA6B9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAGhE;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,6BAA6B;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,4BAA4B;IAC5B,YAAY,EAAE,YAAY,CAAC;IAC3B,
|
|
1
|
+
{"version":3,"file":"InitScreen.d.ts","sourceRoot":"","sources":["../../../src/tui/screens/InitScreen.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAyC,MAAM,OAAO,CAAC;AA6B9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAGhE;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,6BAA6B;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,4BAA4B;IAC5B,YAAY,EAAE,YAAY,CAAC;IAC3B,kFAAkF;IAClF,UAAU,EAAE,CAAC,QAAQ,EAAE,YAAY,EAAE,cAAc,CAAC,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IACxE,+BAA+B;IAC/B,QAAQ,EAAE,MAAM,IAAI,CAAC;CACtB;AA+CD;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,EACzB,WAAW,EACX,YAAY,EACZ,UAAU,EACV,QAAQ,GACT,EAAE,eAAe,GAAG,KAAK,CAAC,YAAY,CAsetC"}
|
|
@@ -221,7 +221,8 @@ export function InitScreen({ projectRoot, sessionState, onComplete, onCancel, })
|
|
|
221
221
|
config,
|
|
222
222
|
initialized: true,
|
|
223
223
|
});
|
|
224
|
-
|
|
224
|
+
// Pass generated files to completion handler for thread history
|
|
225
|
+
onComplete(newSessionState, generatedFiles);
|
|
225
226
|
}
|
|
226
227
|
catch (error) {
|
|
227
228
|
setError(`Failed to generate files: ${error instanceof Error ? error.message : String(error)}`);
|
|
@@ -311,7 +312,8 @@ export function InitScreen({ projectRoot, sessionState, onComplete, onCancel, })
|
|
|
311
312
|
hint: 'please wait',
|
|
312
313
|
} }));
|
|
313
314
|
case 'complete':
|
|
314
|
-
|
|
315
|
+
// Brief completion message - full summary added to thread by App
|
|
316
|
+
return (_jsxs(Box, { flexDirection: "row", gap: 1, children: [_jsx(Text, { color: colors.green, children: "\u25CF" }), _jsx(Text, { children: "Initialization complete." })] }));
|
|
315
317
|
case 'error':
|
|
316
318
|
return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { color: colors.pink, bold: true, children: "Error" }), _jsx(Text, { color: colors.pink, children: state.error }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { dimColor: true, children: "Press Esc to go back" }) })] }));
|
|
317
319
|
default:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InitScreen.js","sourceRoot":"","sources":["../../../src/tui/screens/InitScreen.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"InitScreen.js","sourceRoot":"","sources":["../../../src/tui/screens/InitScreen.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InterviewScreen.d.ts","sourceRoot":"","sources":["../../../src/tui/screens/InterviewScreen.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAmD,MAAM,OAAO,CAAC;AAExE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAczD;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,0CAA0C;IAC1C,WAAW,EAAE,MAAM,CAAC;IACpB,kCAAkC;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,yBAAyB;IACzB,QAAQ,EAAE,UAAU,CAAC;IACrB,sBAAsB;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,oDAAoD;IACpD,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,qFAAqF;IACrF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8CAA8C;IAC9C,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,6CAA6C;IAC7C,QAAQ,EAAE,MAAM,IAAI,CAAC;CACtB;AAED;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,EAC9B,WAAW,EACX,WAAW,EACX,QAAQ,EACR,KAAK,EACL,UAAU,EACV,SAA0B,EAC1B,UAAU,EACV,QAAQ,GACT,EAAE,oBAAoB,GAAG,KAAK,CAAC,YAAY,
|
|
1
|
+
{"version":3,"file":"InterviewScreen.d.ts","sourceRoot":"","sources":["../../../src/tui/screens/InterviewScreen.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAmD,MAAM,OAAO,CAAC;AAExE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAczD;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,0CAA0C;IAC1C,WAAW,EAAE,MAAM,CAAC;IACpB,kCAAkC;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,yBAAyB;IACzB,QAAQ,EAAE,UAAU,CAAC;IACrB,sBAAsB;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,oDAAoD;IACpD,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,qFAAqF;IACrF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8CAA8C;IAC9C,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,6CAA6C;IAC7C,QAAQ,EAAE,MAAM,IAAI,CAAC;CACtB;AAED;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,EAC9B,WAAW,EACX,WAAW,EACX,QAAQ,EACR,KAAK,EACL,UAAU,EACV,SAA0B,EAC1B,UAAU,EACV,QAAQ,GACT,EAAE,oBAAoB,GAAG,KAAK,CAAC,YAAY,CAkR3C"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
/**
|
|
3
3
|
* InterviewScreen - Main screen for the /new command interview flow
|
|
4
4
|
*
|
|
@@ -17,7 +17,7 @@ import { WorkingIndicator } from '../components/WorkingIndicator.js';
|
|
|
17
17
|
import { ChatInput } from '../components/ChatInput.js';
|
|
18
18
|
import { useSpecGenerator, PHASE_CONFIGS, TOTAL_DISPLAY_PHASES, } from '../hooks/useSpecGenerator.js';
|
|
19
19
|
import { InterviewOrchestrator } from '../orchestration/interview-orchestrator.js';
|
|
20
|
-
import {
|
|
20
|
+
import { theme } from '../theme.js';
|
|
21
21
|
/**
|
|
22
22
|
* InterviewScreen component
|
|
23
23
|
*
|
|
@@ -113,12 +113,8 @@ export function InterviewScreen({ featureName, projectRoot, provider, model, sca
|
|
|
113
113
|
if (isCancelledRef.current)
|
|
114
114
|
return;
|
|
115
115
|
setGeneratedSpec(spec);
|
|
116
|
-
//
|
|
117
|
-
|
|
118
|
-
if (!isCancelledRef.current) {
|
|
119
|
-
onCompleteRef.current(spec);
|
|
120
|
-
}
|
|
121
|
-
}, 3000); // Show completion view for 3 seconds
|
|
116
|
+
// Complete immediately - App will add summary to thread
|
|
117
|
+
onCompleteRef.current(spec);
|
|
122
118
|
},
|
|
123
119
|
onError: (error) => {
|
|
124
120
|
if (isCancelledRef.current)
|
|
@@ -226,12 +222,6 @@ export function InterviewScreen({ featureName, projectRoot, provider, model, sca
|
|
|
226
222
|
};
|
|
227
223
|
// Build phase string for status line
|
|
228
224
|
const phaseString = `${phaseConfig.name} (${phaseConfig.number}/${TOTAL_DISPLAY_PHASES})`;
|
|
229
|
-
return (_jsxs(Box, { flexDirection: "column", padding: 1, children: [_jsx(StatusLine, { action: "New Spec", phase: phaseString, path: featureName }), state.error && (_jsx(Box, { marginY: 1, children: _jsxs(Text, { color: theme.colors.error, children: ["Error: ", state.error] }) })), _jsx(Box, { marginY: 1, children: _jsx(MessageList, { messages: state.messages, toolCallsExpanded: toolCallsExpanded }) }), state.isWorking && (_jsx(Box, { marginY: 1, children: _jsx(WorkingIndicator, { state: workingState, variant: state.phase === 'generation' ? 'thinking' : 'active' }) })), state.phase === 'complete' && (_jsxs(Box, {
|
|
230
|
-
const specLines = state.generatedSpec.split('\n');
|
|
231
|
-
const totalLines = specLines.length;
|
|
232
|
-
const previewLines = specLines.slice(0, 5);
|
|
233
|
-
const remainingLines = Math.max(0, totalLines - 5);
|
|
234
|
-
return (_jsxs(_Fragment, { children: [_jsx(Box, { marginLeft: 2, children: _jsxs(Text, { dimColor: true, children: ["\u2514 Wrote ", totalLines, " lines to ", specsPath, "/", featureName, ".md"] }) }), _jsxs(Box, { marginLeft: 4, flexDirection: "column", children: [previewLines.map((line, i) => (_jsxs(Box, { flexDirection: "row", children: [_jsxs(Text, { dimColor: true, children: [String(i + 1).padStart(4), " "] }), _jsx(Text, { dimColor: true, children: line })] }, i))), remainingLines > 0 && (_jsxs(Text, { dimColor: true, children: ["\u2026 +", remainingLines, " lines (ctrl+o to expand)"] }))] })] }));
|
|
235
|
-
})(), _jsxs(Box, { marginTop: 1, flexDirection: "row", gap: 1, children: [_jsx(Text, { color: theme.colors.success, children: "\u25CF" }), _jsx(Text, { children: "Done. Specification generated successfully." })] }), _jsxs(Box, { marginTop: 1, flexDirection: "column", children: [_jsx(Text, { bold: true, children: "What's next:" }), _jsxs(Box, { flexDirection: "row", gap: 1, children: [_jsx(Text, { color: colors.green, children: "\u203A" }), _jsx(Text, { dimColor: true, children: "Review the spec in your editor" })] }), _jsxs(Box, { flexDirection: "row", gap: 1, children: [_jsx(Text, { color: colors.green, children: "\u203A" }), _jsx(Text, { color: colors.blue, children: "/help" }), _jsx(Text, { dimColor: true, children: "See all commands" })] })] }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { dimColor: true, italic: true, children: "Returning to shell in 3s..." }) })] })), state.phase !== 'complete' && (_jsx(Box, { marginTop: 1, children: _jsx(ChatInput, { onSubmit: handleSubmit, disabled: inputDisabled, allowEmpty: state.phase === 'context', placeholder: getPlaceholder() }) }))] }));
|
|
225
|
+
return (_jsxs(Box, { flexDirection: "column", padding: 1, children: [_jsx(StatusLine, { action: "New Spec", phase: phaseString, path: featureName }), state.error && (_jsx(Box, { marginY: 1, children: _jsxs(Text, { color: theme.colors.error, children: ["Error: ", state.error] }) })), _jsx(Box, { marginY: 1, children: _jsx(MessageList, { messages: state.messages, toolCallsExpanded: toolCallsExpanded }) }), state.isWorking && (_jsx(Box, { marginY: 1, children: _jsx(WorkingIndicator, { state: workingState, variant: state.phase === 'generation' ? 'thinking' : 'active' }) })), state.phase === 'complete' && (_jsxs(Box, { flexDirection: "row", gap: 1, children: [_jsx(Text, { color: theme.colors.success, children: "\u25CF" }), _jsx(Text, { children: "Specification complete." })] })), state.phase !== 'complete' && (_jsx(Box, { marginTop: 1, children: _jsx(ChatInput, { onSubmit: handleSubmit, disabled: inputDisabled, allowEmpty: state.phase === 'context', placeholder: getPlaceholder() }) }))] }));
|
|
236
226
|
}
|
|
237
227
|
//# sourceMappingURL=InterviewScreen.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InterviewScreen.js","sourceRoot":"","sources":["../../../src/tui/screens/InterviewScreen.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;AAEH,OAAc,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACxE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC;AAG1C,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EACL,gBAAgB,EAChB,aAAa,EACb,oBAAoB,GAErB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,qBAAqB,EAAE,MAAM,4CAA4C,CAAC;AACnF,OAAO,
|
|
1
|
+
{"version":3,"file":"InterviewScreen.js","sourceRoot":"","sources":["../../../src/tui/screens/InterviewScreen.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/tui/app.tsx
CHANGED
|
@@ -3,10 +3,13 @@
|
|
|
3
3
|
*
|
|
4
4
|
* The root component for the Ink-based TUI. Routes to different screens
|
|
5
5
|
* based on the current screen state. Manages session state and navigation.
|
|
6
|
+
*
|
|
7
|
+
* Uses a "continuous thread" model like Claude Code - all output stays
|
|
8
|
+
* visible in the terminal as a growing thread, rather than clearing screens.
|
|
6
9
|
*/
|
|
7
10
|
|
|
8
11
|
import React, { useState, useCallback } from 'react';
|
|
9
|
-
import { render, type Instance } from 'ink';
|
|
12
|
+
import { render, Static, Box, Text, type Instance } from 'ink';
|
|
10
13
|
import { existsSync, mkdirSync, writeFileSync } from 'node:fs';
|
|
11
14
|
import { join } from 'node:path';
|
|
12
15
|
import type { AIProvider } from '../ai/providers.js';
|
|
@@ -17,6 +20,17 @@ import { InterviewScreen } from './screens/InterviewScreen.js';
|
|
|
17
20
|
import { WelcomeScreen } from './screens/WelcomeScreen.js';
|
|
18
21
|
import { InitScreen } from './screens/InitScreen.js';
|
|
19
22
|
import { MainShell, type NavigationTarget, type NavigationProps } from './screens/MainShell.js';
|
|
23
|
+
import { WiggumBanner } from './components/WiggumBanner.js';
|
|
24
|
+
import { colors, theme } from './theme.js';
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Thread item representing a completed action in the history
|
|
28
|
+
*/
|
|
29
|
+
interface ThreadItem {
|
|
30
|
+
id: string;
|
|
31
|
+
type: 'banner' | 'init-complete' | 'spec-complete' | 'message';
|
|
32
|
+
content: React.ReactNode;
|
|
33
|
+
}
|
|
20
34
|
|
|
21
35
|
/**
|
|
22
36
|
* Available screen types for the App component
|
|
@@ -73,6 +87,13 @@ export interface AppProps {
|
|
|
73
87
|
* });
|
|
74
88
|
* ```
|
|
75
89
|
*/
|
|
90
|
+
/**
|
|
91
|
+
* Generate a unique ID for thread items
|
|
92
|
+
*/
|
|
93
|
+
function generateThreadId(): string {
|
|
94
|
+
return `thread-${Date.now()}-${Math.random().toString(36).substring(2, 9)}`;
|
|
95
|
+
}
|
|
96
|
+
|
|
76
97
|
export function App({
|
|
77
98
|
screen: initialScreen,
|
|
78
99
|
initialSessionState,
|
|
@@ -87,6 +108,48 @@ export function App({
|
|
|
87
108
|
);
|
|
88
109
|
const [sessionState, setSessionState] = useState<SessionState>(initialSessionState);
|
|
89
110
|
|
|
111
|
+
// Thread history - preserves all output as a continuous thread
|
|
112
|
+
const [threadHistory, setThreadHistory] = useState<ThreadItem[]>(() => {
|
|
113
|
+
// Start with banner if showing welcome screen
|
|
114
|
+
if (initialScreen === 'welcome') {
|
|
115
|
+
return [{
|
|
116
|
+
id: generateThreadId(),
|
|
117
|
+
type: 'banner',
|
|
118
|
+
content: (
|
|
119
|
+
<Box flexDirection="column" padding={1}>
|
|
120
|
+
<WiggumBanner />
|
|
121
|
+
<Box marginTop={1} flexDirection="row">
|
|
122
|
+
<Text color={colors.pink}>v{version}</Text>
|
|
123
|
+
<Text dimColor>{theme.statusLine.separator}</Text>
|
|
124
|
+
{initialSessionState.provider ? (
|
|
125
|
+
<Text color={colors.blue}>{initialSessionState.provider}/{initialSessionState.model}</Text>
|
|
126
|
+
) : (
|
|
127
|
+
<Text color={colors.orange}>not configured</Text>
|
|
128
|
+
)}
|
|
129
|
+
<Text dimColor>{theme.statusLine.separator}</Text>
|
|
130
|
+
<Text color={initialSessionState.initialized ? colors.green : colors.orange}>
|
|
131
|
+
{initialSessionState.initialized ? 'Ready' : 'Not initialized'}
|
|
132
|
+
</Text>
|
|
133
|
+
</Box>
|
|
134
|
+
<Box marginTop={1}>
|
|
135
|
+
<Text dimColor>
|
|
136
|
+
Tip: {initialSessionState.initialized ? '/new <feature> to create spec' : '/init to set up'}, /help for commands
|
|
137
|
+
</Text>
|
|
138
|
+
</Box>
|
|
139
|
+
</Box>
|
|
140
|
+
),
|
|
141
|
+
}];
|
|
142
|
+
}
|
|
143
|
+
return [];
|
|
144
|
+
});
|
|
145
|
+
|
|
146
|
+
/**
|
|
147
|
+
* Add an item to the thread history
|
|
148
|
+
*/
|
|
149
|
+
const addToThread = useCallback((type: ThreadItem['type'], content: React.ReactNode) => {
|
|
150
|
+
setThreadHistory(prev => [...prev, { id: generateThreadId(), type, content }]);
|
|
151
|
+
}, []);
|
|
152
|
+
|
|
90
153
|
/**
|
|
91
154
|
* Navigate to a different screen
|
|
92
155
|
*/
|
|
@@ -96,11 +159,12 @@ export function App({
|
|
|
96
159
|
}, []);
|
|
97
160
|
|
|
98
161
|
/**
|
|
99
|
-
* Handle interview completion - save spec to disk and
|
|
162
|
+
* Handle interview completion - save spec to disk and add to thread
|
|
100
163
|
*/
|
|
101
164
|
const handleInterviewComplete = useCallback(async (spec: string) => {
|
|
102
165
|
// Get feature name from navigation props or initial interview props
|
|
103
166
|
const featureName = screenProps?.featureName || interviewProps?.featureName;
|
|
167
|
+
let specPath = '';
|
|
104
168
|
|
|
105
169
|
if (featureName && typeof featureName === 'string') {
|
|
106
170
|
try {
|
|
@@ -114,7 +178,7 @@ export function App({
|
|
|
114
178
|
}
|
|
115
179
|
|
|
116
180
|
// Write spec to file
|
|
117
|
-
|
|
181
|
+
specPath = join(specsDir, `${featureName}.md`);
|
|
118
182
|
writeFileSync(specPath, spec, 'utf-8');
|
|
119
183
|
|
|
120
184
|
// Call onComplete with the spec path for logging
|
|
@@ -127,6 +191,60 @@ export function App({
|
|
|
127
191
|
onComplete?.(spec);
|
|
128
192
|
}
|
|
129
193
|
|
|
194
|
+
// Add completion summary to thread
|
|
195
|
+
const specLines = spec.split('\n');
|
|
196
|
+
const totalLines = specLines.length;
|
|
197
|
+
const previewLines = specLines.slice(0, 5);
|
|
198
|
+
const remainingLines = Math.max(0, totalLines - 5);
|
|
199
|
+
|
|
200
|
+
addToThread('spec-complete', (
|
|
201
|
+
<Box flexDirection="column" marginY={1}>
|
|
202
|
+
{/* Tool-call style preview */}
|
|
203
|
+
<Box flexDirection="row">
|
|
204
|
+
<Text color={colors.green}>●</Text>
|
|
205
|
+
<Text> </Text>
|
|
206
|
+
<Text bold>Write</Text>
|
|
207
|
+
<Text dimColor>({specPath || `${featureName}.md`})</Text>
|
|
208
|
+
</Box>
|
|
209
|
+
<Box marginLeft={2}>
|
|
210
|
+
<Text dimColor>└ Wrote {totalLines} lines</Text>
|
|
211
|
+
</Box>
|
|
212
|
+
|
|
213
|
+
{/* Preview with line numbers */}
|
|
214
|
+
<Box marginLeft={4} flexDirection="column">
|
|
215
|
+
{previewLines.map((line, i) => (
|
|
216
|
+
<Box key={i} flexDirection="row">
|
|
217
|
+
<Text dimColor>{String(i + 1).padStart(4)} </Text>
|
|
218
|
+
<Text dimColor>{line}</Text>
|
|
219
|
+
</Box>
|
|
220
|
+
))}
|
|
221
|
+
{remainingLines > 0 && (
|
|
222
|
+
<Text dimColor>… +{remainingLines} lines</Text>
|
|
223
|
+
)}
|
|
224
|
+
</Box>
|
|
225
|
+
|
|
226
|
+
{/* Done message */}
|
|
227
|
+
<Box marginTop={1} flexDirection="row" gap={1}>
|
|
228
|
+
<Text color={colors.green}>●</Text>
|
|
229
|
+
<Text>Done. Specification generated successfully.</Text>
|
|
230
|
+
</Box>
|
|
231
|
+
|
|
232
|
+
{/* What's next */}
|
|
233
|
+
<Box marginTop={1} flexDirection="column">
|
|
234
|
+
<Text bold>What's next:</Text>
|
|
235
|
+
<Box flexDirection="row" gap={1}>
|
|
236
|
+
<Text color={colors.green}>›</Text>
|
|
237
|
+
<Text dimColor>Review the spec in your editor</Text>
|
|
238
|
+
</Box>
|
|
239
|
+
<Box flexDirection="row" gap={1}>
|
|
240
|
+
<Text color={colors.green}>›</Text>
|
|
241
|
+
<Text color={colors.blue}>/help</Text>
|
|
242
|
+
<Text dimColor>See all commands</Text>
|
|
243
|
+
</Box>
|
|
244
|
+
</Box>
|
|
245
|
+
</Box>
|
|
246
|
+
));
|
|
247
|
+
|
|
130
248
|
// If started on interview (--tui mode), call onExit to resolve promise
|
|
131
249
|
// Otherwise, return to shell
|
|
132
250
|
if (initialScreen === 'interview') {
|
|
@@ -134,7 +252,7 @@ export function App({
|
|
|
134
252
|
} else {
|
|
135
253
|
navigate('shell');
|
|
136
254
|
}
|
|
137
|
-
}, [onComplete, navigate, initialScreen, onExit, screenProps, interviewProps, sessionState.projectRoot]);
|
|
255
|
+
}, [onComplete, navigate, initialScreen, onExit, screenProps, interviewProps, sessionState.projectRoot, addToThread]);
|
|
138
256
|
|
|
139
257
|
/**
|
|
140
258
|
* Handle interview cancel
|
|
@@ -163,78 +281,136 @@ export function App({
|
|
|
163
281
|
setSessionState(newState);
|
|
164
282
|
}, []);
|
|
165
283
|
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
284
|
+
/**
|
|
285
|
+
* Handle init completion - add summary to thread and update state
|
|
286
|
+
*/
|
|
287
|
+
const handleInitComplete = useCallback((newState: SessionState, generatedFiles?: string[]) => {
|
|
288
|
+
// Add init completion to thread
|
|
289
|
+
addToThread('init-complete', (
|
|
290
|
+
<Box flexDirection="column" marginY={1}>
|
|
291
|
+
{/* Tool-call style display for files */}
|
|
292
|
+
{generatedFiles && generatedFiles.slice(0, 5).map((file) => (
|
|
293
|
+
<Box key={file} flexDirection="column">
|
|
294
|
+
<Box flexDirection="row">
|
|
295
|
+
<Text color={colors.green}>●</Text>
|
|
296
|
+
<Text> </Text>
|
|
297
|
+
<Text bold>Write</Text>
|
|
298
|
+
<Text dimColor>({file})</Text>
|
|
299
|
+
</Box>
|
|
300
|
+
<Box marginLeft={2}>
|
|
301
|
+
<Text dimColor>└ Created {file}</Text>
|
|
302
|
+
</Box>
|
|
303
|
+
</Box>
|
|
304
|
+
))}
|
|
305
|
+
{generatedFiles && generatedFiles.length > 5 && (
|
|
306
|
+
<Text dimColor> ... and {generatedFiles.length - 5} more files</Text>
|
|
307
|
+
)}
|
|
308
|
+
|
|
309
|
+
{/* Done message */}
|
|
310
|
+
<Box marginTop={1} flexDirection="row" gap={1}>
|
|
311
|
+
<Text color={colors.green}>●</Text>
|
|
312
|
+
<Text>Done. Created Ralph configuration files.</Text>
|
|
313
|
+
</Box>
|
|
314
|
+
|
|
315
|
+
{/* What's next */}
|
|
316
|
+
<Box marginTop={1} flexDirection="column">
|
|
317
|
+
<Text bold>What's next:</Text>
|
|
318
|
+
<Box flexDirection="row" gap={1}>
|
|
319
|
+
<Text color={colors.green}>›</Text>
|
|
320
|
+
<Text color={colors.blue}>/new {'<feature>'}</Text>
|
|
321
|
+
<Text dimColor>Create a feature specification</Text>
|
|
322
|
+
</Box>
|
|
323
|
+
<Box flexDirection="row" gap={1}>
|
|
324
|
+
<Text color={colors.green}>›</Text>
|
|
325
|
+
<Text color={colors.blue}>/help</Text>
|
|
326
|
+
<Text dimColor>See all commands</Text>
|
|
327
|
+
</Box>
|
|
328
|
+
</Box>
|
|
329
|
+
</Box>
|
|
330
|
+
));
|
|
331
|
+
|
|
332
|
+
setSessionState(newState);
|
|
333
|
+
navigate('shell');
|
|
334
|
+
}, [addToThread, navigate]);
|
|
335
|
+
|
|
336
|
+
// Render current screen content
|
|
337
|
+
const renderCurrentScreen = () => {
|
|
338
|
+
switch (currentScreen) {
|
|
339
|
+
case 'welcome':
|
|
340
|
+
// Banner is already in thread history, just continue to shell
|
|
195
341
|
return null;
|
|
342
|
+
|
|
343
|
+
case 'shell':
|
|
344
|
+
return (
|
|
345
|
+
<MainShell
|
|
346
|
+
sessionState={sessionState}
|
|
347
|
+
onNavigate={navigate}
|
|
348
|
+
onSessionStateChange={handleSessionStateChange}
|
|
349
|
+
/>
|
|
350
|
+
);
|
|
351
|
+
|
|
352
|
+
case 'interview': {
|
|
353
|
+
// Get feature name from props or navigation
|
|
354
|
+
const featureName = screenProps?.featureName || interviewProps?.featureName;
|
|
355
|
+
|
|
356
|
+
if (!featureName || typeof featureName !== 'string') {
|
|
357
|
+
// Missing feature name, go back to shell
|
|
358
|
+
navigate('shell');
|
|
359
|
+
return null;
|
|
360
|
+
}
|
|
361
|
+
|
|
362
|
+
if (!sessionState.provider) {
|
|
363
|
+
// No provider configured, can't run interview
|
|
364
|
+
navigate('shell');
|
|
365
|
+
return null;
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
return (
|
|
369
|
+
<InterviewScreen
|
|
370
|
+
featureName={featureName}
|
|
371
|
+
projectRoot={sessionState.projectRoot}
|
|
372
|
+
provider={sessionState.provider}
|
|
373
|
+
model={sessionState.model}
|
|
374
|
+
scanResult={sessionState.scanResult}
|
|
375
|
+
specsPath={sessionState.config?.paths.specs}
|
|
376
|
+
onComplete={handleInterviewComplete}
|
|
377
|
+
onCancel={handleInterviewCancel}
|
|
378
|
+
/>
|
|
379
|
+
);
|
|
196
380
|
}
|
|
197
381
|
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
382
|
+
case 'init': {
|
|
383
|
+
return (
|
|
384
|
+
<InitScreen
|
|
385
|
+
projectRoot={sessionState.projectRoot}
|
|
386
|
+
sessionState={sessionState}
|
|
387
|
+
onComplete={handleInitComplete}
|
|
388
|
+
onCancel={() => navigate('shell')}
|
|
389
|
+
/>
|
|
390
|
+
);
|
|
202
391
|
}
|
|
203
392
|
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
featureName={featureName}
|
|
207
|
-
projectRoot={sessionState.projectRoot}
|
|
208
|
-
provider={sessionState.provider}
|
|
209
|
-
model={sessionState.model}
|
|
210
|
-
scanResult={sessionState.scanResult}
|
|
211
|
-
specsPath={sessionState.config?.paths.specs}
|
|
212
|
-
onComplete={handleInterviewComplete}
|
|
213
|
-
onCancel={handleInterviewCancel}
|
|
214
|
-
/>
|
|
215
|
-
);
|
|
393
|
+
default:
|
|
394
|
+
return null;
|
|
216
395
|
}
|
|
396
|
+
};
|
|
217
397
|
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
onComplete={handleInitComplete}
|
|
230
|
-
onCancel={() => navigate('shell')}
|
|
231
|
-
/>
|
|
232
|
-
);
|
|
233
|
-
}
|
|
398
|
+
// Render with thread history (Static) + current screen
|
|
399
|
+
return (
|
|
400
|
+
<Box flexDirection="column">
|
|
401
|
+
{/* Static thread history - preserved output that doesn't re-render */}
|
|
402
|
+
<Static items={threadHistory}>
|
|
403
|
+
{(item) => (
|
|
404
|
+
<Box key={item.id}>
|
|
405
|
+
{item.content}
|
|
406
|
+
</Box>
|
|
407
|
+
)}
|
|
408
|
+
</Static>
|
|
234
409
|
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
410
|
+
{/* Current active screen */}
|
|
411
|
+
{renderCurrentScreen()}
|
|
412
|
+
</Box>
|
|
413
|
+
);
|
|
238
414
|
}
|
|
239
415
|
|
|
240
416
|
/**
|
|
@@ -49,8 +49,8 @@ export interface InitScreenProps {
|
|
|
49
49
|
projectRoot: string;
|
|
50
50
|
/** Current session state */
|
|
51
51
|
sessionState: SessionState;
|
|
52
|
-
/** Called when initialization is complete */
|
|
53
|
-
onComplete: (newState: SessionState) => void;
|
|
52
|
+
/** Called when initialization is complete (with optional generated files list) */
|
|
53
|
+
onComplete: (newState: SessionState, generatedFiles?: string[]) => void;
|
|
54
54
|
/** Called when user cancels */
|
|
55
55
|
onCancel: () => void;
|
|
56
56
|
}
|
|
@@ -295,7 +295,8 @@ export function InitScreen({
|
|
|
295
295
|
initialized: true,
|
|
296
296
|
});
|
|
297
297
|
|
|
298
|
-
|
|
298
|
+
// Pass generated files to completion handler for thread history
|
|
299
|
+
onComplete(newSessionState, generatedFiles);
|
|
299
300
|
} catch (error) {
|
|
300
301
|
setError(`Failed to generate files: ${error instanceof Error ? error.message : String(error)}`);
|
|
301
302
|
}
|
|
@@ -512,50 +513,11 @@ export function InitScreen({
|
|
|
512
513
|
);
|
|
513
514
|
|
|
514
515
|
case 'complete':
|
|
516
|
+
// Brief completion message - full summary added to thread by App
|
|
515
517
|
return (
|
|
516
|
-
<Box flexDirection="
|
|
517
|
-
{
|
|
518
|
-
|
|
519
|
-
<Box key={file} flexDirection="column" marginBottom={1}>
|
|
520
|
-
<Box flexDirection="row">
|
|
521
|
-
<Text color={colors.green}>●</Text>
|
|
522
|
-
<Text> </Text>
|
|
523
|
-
<Text bold>Write</Text>
|
|
524
|
-
<Text dimColor>({file})</Text>
|
|
525
|
-
</Box>
|
|
526
|
-
<Box marginLeft={2}>
|
|
527
|
-
<Text dimColor>└ Created {file}</Text>
|
|
528
|
-
</Box>
|
|
529
|
-
</Box>
|
|
530
|
-
))}
|
|
531
|
-
|
|
532
|
-
{/* Done message */}
|
|
533
|
-
<Box marginTop={1} flexDirection="row" gap={1}>
|
|
534
|
-
<Text color={colors.green}>●</Text>
|
|
535
|
-
<Text>Done. Created Ralph configuration files.</Text>
|
|
536
|
-
</Box>
|
|
537
|
-
|
|
538
|
-
{/* Created files summary */}
|
|
539
|
-
<Box marginTop={1} flexDirection="column">
|
|
540
|
-
<Text dimColor>Created files:</Text>
|
|
541
|
-
{state.generatedFiles.map((file) => (
|
|
542
|
-
<Text key={file} dimColor> {file}</Text>
|
|
543
|
-
))}
|
|
544
|
-
</Box>
|
|
545
|
-
|
|
546
|
-
<Box marginTop={1} flexDirection="column">
|
|
547
|
-
<Text bold>What's next:</Text>
|
|
548
|
-
<Box flexDirection="row" gap={1}>
|
|
549
|
-
<Text color={colors.green}>›</Text>
|
|
550
|
-
<Text color={colors.blue}>/new {'<feature>'}</Text>
|
|
551
|
-
<Text dimColor>Create a feature specification</Text>
|
|
552
|
-
</Box>
|
|
553
|
-
<Box flexDirection="row" gap={1}>
|
|
554
|
-
<Text color={colors.green}>›</Text>
|
|
555
|
-
<Text color={colors.blue}>/help</Text>
|
|
556
|
-
<Text dimColor>See all commands</Text>
|
|
557
|
-
</Box>
|
|
558
|
-
</Box>
|
|
518
|
+
<Box flexDirection="row" gap={1}>
|
|
519
|
+
<Text color={colors.green}>●</Text>
|
|
520
|
+
<Text>Initialization complete.</Text>
|
|
559
521
|
</Box>
|
|
560
522
|
);
|
|
561
523
|
|
|
@@ -165,12 +165,8 @@ export function InterviewScreen({
|
|
|
165
165
|
onComplete: (spec) => {
|
|
166
166
|
if (isCancelledRef.current) return;
|
|
167
167
|
setGeneratedSpec(spec);
|
|
168
|
-
//
|
|
169
|
-
|
|
170
|
-
if (!isCancelledRef.current) {
|
|
171
|
-
onCompleteRef.current(spec);
|
|
172
|
-
}
|
|
173
|
-
}, 3000); // Show completion view for 3 seconds
|
|
168
|
+
// Complete immediately - App will add summary to thread
|
|
169
|
+
onCompleteRef.current(spec);
|
|
174
170
|
},
|
|
175
171
|
onError: (error) => {
|
|
176
172
|
if (isCancelledRef.current) return;
|
|
@@ -324,70 +320,11 @@ export function InterviewScreen({
|
|
|
324
320
|
</Box>
|
|
325
321
|
)}
|
|
326
322
|
|
|
327
|
-
{/* Completion message
|
|
323
|
+
{/* Completion message - full summary added to thread by App */}
|
|
328
324
|
{state.phase === 'complete' && (
|
|
329
|
-
<Box
|
|
330
|
-
{
|
|
331
|
-
<
|
|
332
|
-
<Text color={theme.colors.tool.success}>●</Text>
|
|
333
|
-
<Text> </Text>
|
|
334
|
-
<Text bold>Write</Text>
|
|
335
|
-
<Text dimColor>({specsPath}/{featureName}.md)</Text>
|
|
336
|
-
</Box>
|
|
337
|
-
|
|
338
|
-
{/* Summary line and preview */}
|
|
339
|
-
{state.generatedSpec && (() => {
|
|
340
|
-
const specLines = state.generatedSpec.split('\n');
|
|
341
|
-
const totalLines = specLines.length;
|
|
342
|
-
const previewLines = specLines.slice(0, 5);
|
|
343
|
-
const remainingLines = Math.max(0, totalLines - 5);
|
|
344
|
-
|
|
345
|
-
return (
|
|
346
|
-
<>
|
|
347
|
-
<Box marginLeft={2}>
|
|
348
|
-
<Text dimColor>└ Wrote {totalLines} lines to {specsPath}/{featureName}.md</Text>
|
|
349
|
-
</Box>
|
|
350
|
-
|
|
351
|
-
{/* Preview with line numbers */}
|
|
352
|
-
<Box marginLeft={4} flexDirection="column">
|
|
353
|
-
{previewLines.map((line, i) => (
|
|
354
|
-
<Box key={i} flexDirection="row">
|
|
355
|
-
<Text dimColor>{String(i + 1).padStart(4)} </Text>
|
|
356
|
-
<Text dimColor>{line}</Text>
|
|
357
|
-
</Box>
|
|
358
|
-
))}
|
|
359
|
-
{remainingLines > 0 && (
|
|
360
|
-
<Text dimColor>… +{remainingLines} lines (ctrl+o to expand)</Text>
|
|
361
|
-
)}
|
|
362
|
-
</Box>
|
|
363
|
-
</>
|
|
364
|
-
);
|
|
365
|
-
})()}
|
|
366
|
-
|
|
367
|
-
{/* Done message */}
|
|
368
|
-
<Box marginTop={1} flexDirection="row" gap={1}>
|
|
369
|
-
<Text color={theme.colors.success}>●</Text>
|
|
370
|
-
<Text>Done. Specification generated successfully.</Text>
|
|
371
|
-
</Box>
|
|
372
|
-
|
|
373
|
-
{/* What's next */}
|
|
374
|
-
<Box marginTop={1} flexDirection="column">
|
|
375
|
-
<Text bold>What's next:</Text>
|
|
376
|
-
<Box flexDirection="row" gap={1}>
|
|
377
|
-
<Text color={colors.green}>›</Text>
|
|
378
|
-
<Text dimColor>Review the spec in your editor</Text>
|
|
379
|
-
</Box>
|
|
380
|
-
<Box flexDirection="row" gap={1}>
|
|
381
|
-
<Text color={colors.green}>›</Text>
|
|
382
|
-
<Text color={colors.blue}>/help</Text>
|
|
383
|
-
<Text dimColor>See all commands</Text>
|
|
384
|
-
</Box>
|
|
385
|
-
</Box>
|
|
386
|
-
|
|
387
|
-
{/* Auto-continue hint */}
|
|
388
|
-
<Box marginTop={1}>
|
|
389
|
-
<Text dimColor italic>Returning to shell in 3s...</Text>
|
|
390
|
-
</Box>
|
|
325
|
+
<Box flexDirection="row" gap={1}>
|
|
326
|
+
<Text color={theme.colors.success}>●</Text>
|
|
327
|
+
<Text>Specification complete.</Text>
|
|
391
328
|
</Box>
|
|
392
329
|
)}
|
|
393
330
|
|