orquesta-cli 0.2.50 → 0.2.51
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.
|
@@ -290,14 +290,23 @@ export const PlanExecuteApp = ({ llmClient: initialLlmClient, modelInfo, resumeL
|
|
|
290
290
|
};
|
|
291
291
|
}, [addLog]);
|
|
292
292
|
useEffect(() => {
|
|
293
|
-
if (llmClient)
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
293
|
+
if (!llmClient)
|
|
294
|
+
return;
|
|
295
|
+
let buffer = '';
|
|
296
|
+
let rafId = null;
|
|
297
|
+
llmClient.onStreamingContent = (token) => {
|
|
298
|
+
buffer += token;
|
|
299
|
+
if (!rafId) {
|
|
300
|
+
rafId = setTimeout(() => {
|
|
301
|
+
setStreamingText(buffer);
|
|
302
|
+
rafId = null;
|
|
303
|
+
}, 80);
|
|
304
|
+
}
|
|
305
|
+
};
|
|
298
306
|
return () => {
|
|
299
|
-
if (
|
|
300
|
-
|
|
307
|
+
if (rafId)
|
|
308
|
+
clearTimeout(rafId);
|
|
309
|
+
llmClient.onStreamingContent = null;
|
|
301
310
|
};
|
|
302
311
|
}, [llmClient]);
|
|
303
312
|
useEffect(() => {
|
|
@@ -1329,12 +1338,13 @@ export const PlanExecuteApp = ({ llmClient: initialLlmClient, modelInfo, resumeL
|
|
|
1329
1338
|
filePath = JSON.parse(entry.details || '{}').file || '';
|
|
1330
1339
|
}
|
|
1331
1340
|
catch { }
|
|
1341
|
+
const diffLines = entry.diff.length > 10 ? [...entry.diff.slice(0, 10), `... +${entry.diff.length - 10} more lines`] : entry.diff;
|
|
1332
1342
|
const header = filePath ? `┌─ ${filePath} ─` : '┌─';
|
|
1333
1343
|
return (React.createElement(Box, { key: entry.id, flexDirection: "column", marginLeft: 2 },
|
|
1334
1344
|
React.createElement(Text, { color: "gray" },
|
|
1335
1345
|
header,
|
|
1336
1346
|
'─'.repeat(Math.max(0, 32 - header.length))),
|
|
1337
|
-
|
|
1347
|
+
diffLines.map((line, i) => (React.createElement(Text, { key: i, color: line.startsWith('+') ? 'green' : line.startsWith('-') ? 'red' : 'gray' },
|
|
1338
1348
|
'│ ',
|
|
1339
1349
|
line))),
|
|
1340
1350
|
React.createElement(Text, { color: "gray" }, '└' + '─'.repeat(32))));
|
|
@@ -1439,7 +1449,7 @@ export const PlanExecuteApp = ({ llmClient: initialLlmClient, modelInfo, resumeL
|
|
|
1439
1449
|
isProcessing && (planExecutionState.executionPhase === 'planning' || planExecutionState.todos.length === 0) && !pendingToolApproval && !isDocsSearching && (React.createElement(Box, { marginY: 1, flexDirection: "column" },
|
|
1440
1450
|
React.createElement(ActivityIndicator, { activity: getCurrentActivityType(), startTime: activityStartTime, detail: activityDetail, subActivities: subActivities, modelName: currentModelInfo.model }),
|
|
1441
1451
|
streamingText && (React.createElement(Box, { marginTop: 1, paddingX: 1 },
|
|
1442
|
-
React.createElement(Text, { wrap: "wrap" }, streamingText))))),
|
|
1452
|
+
React.createElement(Text, { wrap: "wrap" }, streamingText.split('\n').slice(-15).join('\n')))))),
|
|
1443
1453
|
isDocsSearching && (React.createElement(DocsSearchProgress, { logs: docsSearchLogs, isSearching: isDocsSearching })),
|
|
1444
1454
|
planExecutionState.todos.length > 0 && (React.createElement(Box, { marginTop: 2, marginBottom: 1 },
|
|
1445
1455
|
React.createElement(TodoPanel, { todos: planExecutionState.todos, currentTodoId: planExecutionState.currentTodoId, isProcessing: isProcessing }))),
|