codeep 1.0.54 → 1.0.55
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/components/AgentProgress.js +21 -27
- package/package.json +1 -1
|
@@ -140,36 +140,36 @@ const isSectionBreak = (line, prevLine) => {
|
|
|
140
140
|
return false;
|
|
141
141
|
};
|
|
142
142
|
export const LiveCodeStream = ({ actions, isRunning }) => {
|
|
143
|
-
// State for streaming effect -
|
|
144
|
-
const [
|
|
143
|
+
// State for streaming effect - sliding window showing last 10 lines
|
|
144
|
+
const [visibleEndLine, setVisibleEndLine] = useState(0);
|
|
145
145
|
const [lastActionId, setLastActionId] = useState(null);
|
|
146
146
|
// Find the current write/edit action with code content
|
|
147
147
|
const currentAction = actions.length > 0 ? actions[actions.length - 1] : null;
|
|
148
148
|
// Create a unique ID for the current action
|
|
149
149
|
const actionId = currentAction ? `${currentAction.target}-${currentAction.timestamp}` : null;
|
|
150
|
-
// Reset
|
|
150
|
+
// Reset and stream progressively when action changes
|
|
151
151
|
useEffect(() => {
|
|
152
152
|
if (!currentAction || !currentAction.details) {
|
|
153
|
-
|
|
153
|
+
setVisibleEndLine(0);
|
|
154
154
|
return;
|
|
155
155
|
}
|
|
156
156
|
// If this is a new action, reset and start streaming
|
|
157
157
|
if (actionId !== lastActionId) {
|
|
158
158
|
setLastActionId(actionId);
|
|
159
|
-
|
|
159
|
+
setVisibleEndLine(10); // Start with first 10 lines
|
|
160
160
|
return;
|
|
161
161
|
}
|
|
162
|
-
// Stream more lines progressively
|
|
162
|
+
// Stream more lines progressively (sliding window moves forward)
|
|
163
163
|
const totalLines = currentAction.details.split('\n').length;
|
|
164
|
-
if (
|
|
164
|
+
if (visibleEndLine < totalLines) {
|
|
165
165
|
const timer = setTimeout(() => {
|
|
166
|
-
//
|
|
167
|
-
|
|
166
|
+
// Move window forward by 10 lines every 100ms
|
|
167
|
+
setVisibleEndLine(prev => Math.min(prev + 10, totalLines));
|
|
168
168
|
}, 100);
|
|
169
169
|
return () => clearTimeout(timer);
|
|
170
170
|
}
|
|
171
|
-
}, [currentAction, actionId, lastActionId,
|
|
172
|
-
// Only show for write/edit actions with content
|
|
171
|
+
}, [currentAction, actionId, lastActionId, visibleEndLine]);
|
|
172
|
+
// Only show for write/edit actions with content while running
|
|
173
173
|
if (!isRunning || !currentAction)
|
|
174
174
|
return null;
|
|
175
175
|
if (currentAction.type !== 'write' && currentAction.type !== 'edit')
|
|
@@ -185,23 +185,17 @@ export const LiveCodeStream = ({ actions, isRunning }) => {
|
|
|
185
185
|
const totalLines = allLines.length;
|
|
186
186
|
const actionLabel = currentAction.type === 'write' ? '✨ Creating' : '✏️ Editing';
|
|
187
187
|
const actionColor = currentAction.type === 'write' ? 'green' : 'yellow';
|
|
188
|
-
//
|
|
189
|
-
const
|
|
190
|
-
const
|
|
191
|
-
|
|
192
|
-
const
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
return (_jsxs(Box, { flexDirection: "column", marginY: 1, children: [_jsxs(Box, { flexDirection: "row", justifyContent: "space-between", children: [_jsxs(Box, { children: [_jsxs(Text, { color: actionColor, bold: true, children: [actionLabel, " "] }), _jsx(Text, { color: "white", bold: true, children: filename })] }), _jsxs(Box, { children: [_jsxs(Text, { color: "gray", children: [langLabel, " \u2022 "] }), _jsx(Text, { color: "cyan", children: visibleLines }), _jsxs(Text, { color: "gray", children: ["/", totalLines, " lines"] }), remainingLines > 0 && (_jsx(Text, { color: "yellow", children: " \u25BC streaming..." }))] })] }), fullPath !== filename && (_jsxs(Text, { color: "gray", dimColor: true, children: [" \uD83D\uDCC1 ", fullPath] })), _jsx(Text, { color: actionColor, children: '┌' + '─'.repeat(78) + '┐' }), _jsx(Box, { flexDirection: "column", children: linesToShow.map((line, i) => {
|
|
197
|
-
const lineNum = i + 1;
|
|
198
|
-
const prevLine = i > 0 ? allLines[i - 1] : null;
|
|
199
|
-
const showSeparator = isSectionBreak(line, prevLine);
|
|
188
|
+
// Sliding window: show only last 10 lines of what's been "written" so far
|
|
189
|
+
const WINDOW_SIZE = 10;
|
|
190
|
+
const startLine = Math.max(0, visibleEndLine - WINDOW_SIZE);
|
|
191
|
+
const linesToShow = allLines.slice(startLine, visibleEndLine);
|
|
192
|
+
const remainingLines = totalLines - visibleEndLine;
|
|
193
|
+
const linesAbove = startLine;
|
|
194
|
+
return (_jsxs(Box, { flexDirection: "column", marginY: 1, children: [_jsxs(Box, { flexDirection: "row", justifyContent: "space-between", children: [_jsxs(Box, { children: [_jsxs(Text, { color: actionColor, bold: true, children: [actionLabel, " "] }), _jsx(Text, { color: "white", bold: true, children: filename })] }), _jsxs(Box, { children: [_jsxs(Text, { color: "gray", children: [langLabel, " \u2022 "] }), _jsx(Text, { color: "cyan", children: visibleEndLine }), _jsxs(Text, { color: "gray", children: ["/", totalLines, " lines"] }), remainingLines > 0 && (_jsx(Text, { color: "yellow", children: " \u25BC streaming..." }))] })] }), fullPath !== filename && (_jsxs(Text, { color: "gray", dimColor: true, children: [" \uD83D\uDCC1 ", fullPath] })), _jsx(Text, { color: actionColor, children: '─'.repeat(80) }), linesAbove > 0 && (_jsxs(Text, { color: "gray", dimColor: true, children: [" \u22EE ", linesAbove, " lines above"] })), _jsx(Box, { flexDirection: "column", children: linesToShow.map((line, i) => {
|
|
195
|
+
const lineNum = startLine + i + 1;
|
|
200
196
|
const lineColor = getCodeColor(line, ext);
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
return (_jsxs(Box, { flexDirection: "column", children: [showSeparator && i > 0 && (_jsx(Text, { color: "gray", dimColor: true, children: '│' + ' '.repeat(78) + '│' })), _jsxs(Text, { children: [_jsx(Text, { color: actionColor, children: "\u2502" }), _jsx(Text, { color: isEvenLine ? 'gray' : 'white', dimColor: !isEvenLine, children: String(lineNum).padStart(4, ' ') }), _jsx(Text, { color: "gray", dimColor: true, children: " \u2502 " }), _jsx(Text, { color: lineColor, children: line.slice(0, 70) }), line.length > 70 && _jsx(Text, { color: "gray", children: "\u2026" }), line.length <= 70 && _jsx(Text, { children: ' '.repeat(Math.max(0, 70 - line.length)) }), _jsx(Text, { color: actionColor, children: "\u2502" })] })] }, i));
|
|
204
|
-
}) }), remainingLines > 0 && (_jsxs(Text, { color: "yellow", children: ['│', " ... ", remainingLines, " more lines loading... ", '│'] })), _jsx(Text, { color: actionColor, children: '└' + '─'.repeat(78) + '┘' })] }));
|
|
197
|
+
return (_jsxs(Text, { children: [_jsx(Text, { color: "gray", dimColor: true, children: String(lineNum).padStart(4, ' ') }), _jsx(Text, { color: "gray", dimColor: true, children: " \u2502 " }), _jsx(Text, { color: lineColor, children: line.slice(0, 72) }), line.length > 72 && _jsx(Text, { color: "gray", children: "\u2026" })] }, i));
|
|
198
|
+
}) }), remainingLines > 0 && (_jsxs(Text, { color: "yellow", children: [" \u22EE ", remainingLines, " more lines..."] })), _jsx(Text, { color: actionColor, children: '─'.repeat(80) })] }));
|
|
205
199
|
};
|
|
206
200
|
// Helper functions for action display
|
|
207
201
|
const getActionColor = (type) => {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "codeep",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.55",
|
|
4
4
|
"description": "AI-powered coding assistant built for the terminal. Multiple LLM providers, project-aware context, and a seamless development workflow.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|