erosolar-cli 1.7.404 → 1.7.405
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/StringUtils.d.ts +4 -1
- package/dist/StringUtils.d.ts.map +1 -1
- package/dist/StringUtils.js +8 -2
- package/dist/StringUtils.js.map +1 -1
- package/dist/capabilities/toolRegistry.js +1 -1
- package/dist/capabilities/toolRegistry.js.map +1 -1
- package/dist/contracts/schemas/tool-selection.schema.json +7 -1
- package/dist/contracts/tools.schema.json +149 -103
- package/dist/contracts/v1/toolAccess.d.ts +1 -1
- package/dist/contracts/v1/toolAccess.d.ts.map +1 -1
- package/dist/runtime/agentController.d.ts.map +1 -1
- package/dist/runtime/agentController.js +19 -1
- package/dist/runtime/agentController.js.map +1 -1
- package/dist/shell/interactiveShell.d.ts.map +1 -1
- package/dist/shell/interactiveShell.js +29 -17
- package/dist/shell/interactiveShell.js.map +1 -1
- package/dist/shell/terminalInput.d.ts +4 -0
- package/dist/shell/terminalInput.d.ts.map +1 -1
- package/dist/shell/terminalInput.js +28 -9
- package/dist/shell/terminalInput.js.map +1 -1
- package/dist/shell/terminalInputAdapter.d.ts +1 -0
- package/dist/shell/terminalInputAdapter.d.ts.map +1 -1
- package/dist/shell/terminalInputAdapter.js +3 -0
- package/dist/shell/terminalInputAdapter.js.map +1 -1
- package/dist/tools/enhancedCodeIntelligenceTools.js +1 -2
- package/dist/tools/enhancedCodeIntelligenceTools.js.map +1 -1
- package/dist/tools/fileTools.js +3 -0
- package/dist/tools/fileTools.js.map +1 -1
- package/dist/tools/frontendTestingTools.js +1 -1
- package/dist/tools/frontendTestingTools.js.map +1 -1
- package/dist/tools/learnTools.d.ts +2 -0
- package/dist/tools/learnTools.d.ts.map +1 -1
- package/dist/tools/learnTools.js +4 -0
- package/dist/tools/learnTools.js.map +1 -1
- package/dist/tools/localExplore.d.ts.map +1 -1
- package/dist/tools/localExplore.js +0 -1
- package/dist/tools/localExplore.js.map +1 -1
- package/dist/tools/notebookEditTools.js.map +1 -1
- package/dist/tools/repoChecksTools.js +4 -3
- package/dist/tools/repoChecksTools.js.map +1 -1
- package/dist/tools/searchTools.js +4 -0
- package/dist/tools/searchTools.js.map +1 -1
- package/dist/tools/softwareEngineeringTools.d.ts.map +1 -1
- package/dist/tools/softwareEngineeringTools.js +1 -0
- package/dist/tools/softwareEngineeringTools.js.map +1 -1
- package/dist/tools/webTools.d.ts.map +1 -1
- package/dist/tools/webTools.js.map +1 -1
- package/package.json +3 -3
|
@@ -902,7 +902,7 @@ export class InteractiveShell {
|
|
|
902
902
|
: null;
|
|
903
903
|
// Stop any active spinner to prevent process hang
|
|
904
904
|
display.stopThinking(false);
|
|
905
|
-
this.stopStreamingHeartbeat();
|
|
905
|
+
this.stopStreamingHeartbeat({ skipRender: true });
|
|
906
906
|
this.uiUpdates.dispose();
|
|
907
907
|
this.clearPromptRefreshTimer();
|
|
908
908
|
this.teardownStatusTracking();
|
|
@@ -911,7 +911,9 @@ export class InteractiveShell {
|
|
|
911
911
|
// Clear any pending cleanup to prevent hanging
|
|
912
912
|
this.pendingCleanup = null;
|
|
913
913
|
// Reset terminal state before disposing adapters
|
|
914
|
-
this.terminalInput.
|
|
914
|
+
if (this.terminalInput.isScrollRegionActive()) {
|
|
915
|
+
this.terminalInput.exitStreamingScrollRegion({ skipRender: true });
|
|
916
|
+
}
|
|
915
917
|
if (this.alternateScreenEnabled) {
|
|
916
918
|
this.terminalInput.exitAlternateScreen();
|
|
917
919
|
}
|
|
@@ -1021,7 +1023,7 @@ export class InteractiveShell {
|
|
|
1021
1023
|
const defaults = buildEnabledToolSet(null);
|
|
1022
1024
|
if (setsEqual(interaction.selection, defaults)) {
|
|
1023
1025
|
clearToolSettings();
|
|
1024
|
-
display.showInfo('Tool settings cleared. Defaults will be used on the next launch.');
|
|
1026
|
+
display.showInfo('Tool settings cleared. Defaults will be used on the next launch. Next steps: enable any optional suites from the Tools menu or preferences (restart to apply) if you want them available by default.');
|
|
1025
1027
|
return;
|
|
1026
1028
|
}
|
|
1027
1029
|
const ordered = interaction.options
|
|
@@ -1765,7 +1767,7 @@ export class InteractiveShell {
|
|
|
1765
1767
|
}
|
|
1766
1768
|
}
|
|
1767
1769
|
startStreamingHeartbeat(label = 'Streaming') {
|
|
1768
|
-
this.stopStreamingHeartbeat();
|
|
1770
|
+
this.stopStreamingHeartbeat({ skipRender: true });
|
|
1769
1771
|
// Enter global streaming mode - blocks all non-streaming UI output
|
|
1770
1772
|
enterStreamingMode();
|
|
1771
1773
|
this.streamingStatusBase = label;
|
|
@@ -1801,7 +1803,13 @@ export class InteractiveShell {
|
|
|
1801
1803
|
},
|
|
1802
1804
|
});
|
|
1803
1805
|
}
|
|
1804
|
-
stopStreamingHeartbeat() {
|
|
1806
|
+
stopStreamingHeartbeat(options = {}) {
|
|
1807
|
+
const skipRender = !!options.skipRender;
|
|
1808
|
+
const streamingActive = this.isStreamingUiActive();
|
|
1809
|
+
const scrollRegionActive = this.terminalInput.isScrollRegionActive();
|
|
1810
|
+
if (!streamingActive && !scrollRegionActive) {
|
|
1811
|
+
return;
|
|
1812
|
+
}
|
|
1805
1813
|
// Exit global streaming mode - allows UI to render again
|
|
1806
1814
|
exitStreamingMode();
|
|
1807
1815
|
// Preserve final elapsed time before clearing heartbeat start
|
|
@@ -1809,7 +1817,7 @@ export class InteractiveShell {
|
|
|
1809
1817
|
this.lastStreamingElapsedSeconds = Math.max(0, Math.floor((Date.now() - this.streamingHeartbeatStart) / 1000));
|
|
1810
1818
|
}
|
|
1811
1819
|
// Exit scroll region mode
|
|
1812
|
-
this.terminalInput.exitStreamingScrollRegion();
|
|
1820
|
+
this.terminalInput.exitStreamingScrollRegion({ skipRender });
|
|
1813
1821
|
this.uiUpdates.stopHeartbeat('streaming');
|
|
1814
1822
|
this.streamingHeartbeatStart = null;
|
|
1815
1823
|
this.streamingHeartbeatFrame = 0;
|
|
@@ -1822,7 +1830,9 @@ export class InteractiveShell {
|
|
|
1822
1830
|
// Clear streaming status from display
|
|
1823
1831
|
display.updateStreamingStatus(null);
|
|
1824
1832
|
// Force refresh to update the input area now that streaming has ended
|
|
1825
|
-
|
|
1833
|
+
if (!skipRender) {
|
|
1834
|
+
this.refreshStatusLine(true);
|
|
1835
|
+
}
|
|
1826
1836
|
}
|
|
1827
1837
|
buildStreamingStatus(label, _elapsedSeconds) {
|
|
1828
1838
|
// Model + elapsed time already live in the pinned meta header; keep the streaming
|
|
@@ -5391,7 +5401,7 @@ export class InteractiveShell {
|
|
|
5391
5401
|
}
|
|
5392
5402
|
display.stopThinking(false);
|
|
5393
5403
|
this.uiUpdates.setMode('processing');
|
|
5394
|
-
this.stopStreamingHeartbeat();
|
|
5404
|
+
this.stopStreamingHeartbeat({ skipRender: true });
|
|
5395
5405
|
this.isProcessing = false;
|
|
5396
5406
|
this.terminalInput.setStreaming(false);
|
|
5397
5407
|
this.uiAdapter.endProcessing('Ready for prompts');
|
|
@@ -6020,7 +6030,8 @@ What's the next action?`;
|
|
|
6020
6030
|
if (thinking) {
|
|
6021
6031
|
this.presentThoughtProcess(thinking, enriched, {
|
|
6022
6032
|
wasStreamed: metadata.wasStreamed,
|
|
6023
|
-
|
|
6033
|
+
// Always render the thought block immediately when present so it appears first.
|
|
6034
|
+
renderWhenStreamed: true,
|
|
6024
6035
|
});
|
|
6025
6036
|
}
|
|
6026
6037
|
if (metadata.isFinal) {
|
|
@@ -6028,8 +6039,8 @@ What's the next action?`;
|
|
|
6028
6039
|
this.finalizeAssistantStream();
|
|
6029
6040
|
}
|
|
6030
6041
|
const body = responseContent || content;
|
|
6031
|
-
|
|
6032
|
-
if (
|
|
6042
|
+
// Always render the final response body even if it already streamed.
|
|
6043
|
+
if (body) {
|
|
6033
6044
|
this.renderAssistantContent('response', body, { ...enriched, isFinal: true });
|
|
6034
6045
|
}
|
|
6035
6046
|
this.renderToolUsageSummary({ ...enriched, isFinal: true });
|
|
@@ -6115,7 +6126,7 @@ What's the next action?`;
|
|
|
6115
6126
|
// Update UI to show operation was cancelled
|
|
6116
6127
|
display.showWarning('Operation cancelled.');
|
|
6117
6128
|
this.uiUpdates.setMode('processing');
|
|
6118
|
-
this.stopStreamingHeartbeat();
|
|
6129
|
+
this.stopStreamingHeartbeat({ skipRender: true });
|
|
6119
6130
|
this.updateStatusMessage(null);
|
|
6120
6131
|
this.terminalInput.setStreaming(false);
|
|
6121
6132
|
this.renderPromptArea();
|
|
@@ -6220,20 +6231,21 @@ What's the next action?`;
|
|
|
6220
6231
|
buildThinkingDirective() {
|
|
6221
6232
|
switch (this.thinkingMode) {
|
|
6222
6233
|
case 'concise':
|
|
6223
|
-
return 'Concise thinking mode
|
|
6234
|
+
return 'Concise thinking mode: respond directly with the final answer and skip <thinking> blocks unless the user explicitly asks for reasoning.';
|
|
6224
6235
|
case 'extended':
|
|
6225
6236
|
return [
|
|
6226
|
-
'Extended thinking mode
|
|
6237
|
+
'Extended thinking mode: include a <thinking> block followed by a <response> block.',
|
|
6227
6238
|
'<thinking>',
|
|
6228
|
-
'
|
|
6239
|
+
'Brief, structured reasoning (cite tools/files when relevant; no secrets).',
|
|
6229
6240
|
'</thinking>',
|
|
6230
6241
|
'<response>',
|
|
6231
|
-
'Final answer with
|
|
6242
|
+
'Final answer with requested code/commands and next steps.',
|
|
6232
6243
|
'</response>',
|
|
6233
6244
|
].join('\n');
|
|
6234
6245
|
case 'balanced':
|
|
6235
6246
|
default:
|
|
6236
|
-
|
|
6247
|
+
// Balanced is the default; avoid injecting extra prompt text to keep context lean.
|
|
6248
|
+
return null;
|
|
6237
6249
|
}
|
|
6238
6250
|
}
|
|
6239
6251
|
buildDisplayMetadata(metadata) {
|