erosolar-cli 1.3.6 ā 1.3.7
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 +8 -0
- package/dist/StringUtils.d.ts.map +1 -0
- package/dist/StringUtils.js +11 -0
- package/dist/StringUtils.js.map +1 -0
- package/dist/capabilities/index.d.ts +1 -1
- package/dist/capabilities/index.d.ts.map +1 -1
- package/dist/capabilities/index.js +1 -1
- package/dist/capabilities/index.js.map +1 -1
- package/dist/capabilities/skillCapability.d.ts +2 -6
- package/dist/capabilities/skillCapability.d.ts.map +1 -1
- package/dist/capabilities/skillCapability.js +70 -20
- package/dist/capabilities/skillCapability.js.map +1 -1
- package/dist/core/agent.d.ts +16 -0
- package/dist/core/agent.d.ts.map +1 -1
- package/dist/core/agent.js +171 -54
- package/dist/core/agent.js.map +1 -1
- package/dist/core/contextWindow.d.ts +6 -0
- package/dist/core/contextWindow.d.ts.map +1 -1
- package/dist/core/contextWindow.js +12 -4
- package/dist/core/contextWindow.js.map +1 -1
- package/dist/plugins/tools/skills/skillPlugin.js +2 -2
- package/dist/plugins/tools/skills/skillPlugin.js.map +1 -1
- package/dist/shell/interactiveShell.d.ts +19 -0
- package/dist/shell/interactiveShell.d.ts.map +1 -1
- package/dist/shell/interactiveShell.js +177 -0
- package/dist/shell/interactiveShell.js.map +1 -1
- package/dist/skills/skillRepository.d.ts +99 -23
- package/dist/skills/skillRepository.d.ts.map +1 -1
- package/dist/skills/skillRepository.js +213 -329
- package/dist/skills/skillRepository.js.map +1 -1
- package/dist/tools/skillTools.d.ts.map +1 -1
- package/dist/tools/skillTools.js +24 -62
- package/dist/tools/skillTools.js.map +1 -1
- package/package.json +21 -5
- package/scripts/ai-code-reviewer.mjs +343 -0
- package/scripts/code-intelligence-enhancer.mjs +415 -0
- package/scripts/dev-productivity-booster.mjs +342 -0
- package/dist/ui/advancedPrompt.d.ts +0 -58
- package/dist/ui/advancedPrompt.d.ts.map +0 -1
- package/dist/ui/advancedPrompt.js +0 -219
- package/dist/ui/advancedPrompt.js.map +0 -1
- package/dist/ui/overlay/OverlayManager.d.ts +0 -105
- package/dist/ui/overlay/OverlayManager.d.ts.map +0 -1
- package/dist/ui/overlay/OverlayManager.js +0 -291
- package/dist/ui/overlay/OverlayManager.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skillPlugin.js","sourceRoot":"","sources":["../../../../src/plugins/tools/skills/skillPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"skillPlugin.js","sourceRoot":"","sources":["../../../../src/plugins/tools/skills/skillPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAC;AAG3E,MAAM,UAAU,qBAAqB;IACnC,OAAO;QACL,EAAE,EAAE,oBAAoB;QACxB,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC;QAC1B,MAAM,EAAE,GAAG,EAAE,CAAC,eAAe;KAC9B,CAAC;AACJ,CAAC"}
|
|
@@ -95,6 +95,11 @@ export declare class InteractiveShell {
|
|
|
95
95
|
private enqueueUserInput;
|
|
96
96
|
private flushBufferedInput;
|
|
97
97
|
private processInputBlock;
|
|
98
|
+
/**
|
|
99
|
+
* Check if the command is a continuous/infinite loop command
|
|
100
|
+
* These commands run until the task is complete or user interrupts
|
|
101
|
+
*/
|
|
102
|
+
private isContinuousCommand;
|
|
98
103
|
private handlePendingInteraction;
|
|
99
104
|
private processSlashCommand;
|
|
100
105
|
private tryCustomSlashCommand;
|
|
@@ -144,6 +149,20 @@ export declare class InteractiveShell {
|
|
|
144
149
|
private handleSecretSelection;
|
|
145
150
|
private handleSecretInput;
|
|
146
151
|
private processRequest;
|
|
152
|
+
/**
|
|
153
|
+
* Process a continuous/infinite loop request.
|
|
154
|
+
* Runs the agent in a loop until:
|
|
155
|
+
* 1. The agent indicates completion (no more actions needed)
|
|
156
|
+
* 2. User interrupts (Ctrl+C)
|
|
157
|
+
* 3. Maximum iterations reached (safety limit)
|
|
158
|
+
*
|
|
159
|
+
* Context is automatically managed - overflow errors trigger auto-recovery.
|
|
160
|
+
*/
|
|
161
|
+
private processContinuousRequest;
|
|
162
|
+
/**
|
|
163
|
+
* Check if an error is a context overflow error
|
|
164
|
+
*/
|
|
165
|
+
private isContextOverflowError;
|
|
147
166
|
private awaitPendingCleanup;
|
|
148
167
|
private rebuildAgent;
|
|
149
168
|
private buildSystemPrompt;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interactiveShell.d.ts","sourceRoot":"","sources":["../../src/shell/interactiveShell.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"interactiveShell.d.ts","sourceRoot":"","sources":["../../src/shell/interactiveShell.ts"],"names":[],"mappings":"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"}
|
|
@@ -591,10 +591,29 @@ export class InteractiveShell {
|
|
|
591
591
|
await this.processSlashCommand(trimmed);
|
|
592
592
|
return;
|
|
593
593
|
}
|
|
594
|
+
// Check for continuous/infinite loop commands
|
|
595
|
+
if (this.isContinuousCommand(trimmed)) {
|
|
596
|
+
await this.processContinuousRequest(trimmed);
|
|
597
|
+
this.rl.prompt();
|
|
598
|
+
return;
|
|
599
|
+
}
|
|
594
600
|
// Direct execution for all inputs, including multi-line pastes
|
|
595
601
|
await this.processRequest(trimmed);
|
|
596
602
|
this.rl.prompt();
|
|
597
603
|
}
|
|
604
|
+
/**
|
|
605
|
+
* Check if the command is a continuous/infinite loop command
|
|
606
|
+
* These commands run until the task is complete or user interrupts
|
|
607
|
+
*/
|
|
608
|
+
isContinuousCommand(input) {
|
|
609
|
+
const lower = input.toLowerCase().trim();
|
|
610
|
+
const patterns = [
|
|
611
|
+
/^(keep going|continue|finish|until done|run until done|complete|finish it|keep working)/i,
|
|
612
|
+
/\b(until done|until complete|until finished|to completion|to the end)\b/i,
|
|
613
|
+
/^(do it|just do it|make it work|fix it all|finish everything)\b/i,
|
|
614
|
+
];
|
|
615
|
+
return patterns.some(pattern => pattern.test(lower));
|
|
616
|
+
}
|
|
598
617
|
async handlePendingInteraction(input) {
|
|
599
618
|
if (!this.pendingInteraction) {
|
|
600
619
|
return false;
|
|
@@ -1692,6 +1711,133 @@ export class InteractiveShell {
|
|
|
1692
1711
|
this.persistentPrompt.show();
|
|
1693
1712
|
}
|
|
1694
1713
|
}
|
|
1714
|
+
/**
|
|
1715
|
+
* Process a continuous/infinite loop request.
|
|
1716
|
+
* Runs the agent in a loop until:
|
|
1717
|
+
* 1. The agent indicates completion (no more actions needed)
|
|
1718
|
+
* 2. User interrupts (Ctrl+C)
|
|
1719
|
+
* 3. Maximum iterations reached (safety limit)
|
|
1720
|
+
*
|
|
1721
|
+
* Context is automatically managed - overflow errors trigger auto-recovery.
|
|
1722
|
+
*/
|
|
1723
|
+
async processContinuousRequest(initialRequest) {
|
|
1724
|
+
const MAX_ITERATIONS = 100; // Safety limit to prevent truly infinite loops
|
|
1725
|
+
const COMPLETION_PATTERNS = [
|
|
1726
|
+
/\b(completed?|done|finished|all.*done|task.*complete|nothing.*left|no.*more.*tasks?)\b/i,
|
|
1727
|
+
/\b(everything.*done|all.*tasks?.*complete|successfully.*completed?)\b/i,
|
|
1728
|
+
];
|
|
1729
|
+
if (this.isProcessing) {
|
|
1730
|
+
display.showWarning('Please wait for the current request to complete.');
|
|
1731
|
+
return;
|
|
1732
|
+
}
|
|
1733
|
+
if (!this.agent && !this.rebuildAgent()) {
|
|
1734
|
+
display.showWarning('Configure an API key via /secrets before sending requests.');
|
|
1735
|
+
return;
|
|
1736
|
+
}
|
|
1737
|
+
const agent = this.agent;
|
|
1738
|
+
if (!agent) {
|
|
1739
|
+
return;
|
|
1740
|
+
}
|
|
1741
|
+
this.isProcessing = true;
|
|
1742
|
+
const overallStartTime = Date.now();
|
|
1743
|
+
// Hide persistent prompt during processing
|
|
1744
|
+
this.persistentPrompt.hide();
|
|
1745
|
+
display.showSystemMessage(`š Starting continuous execution mode. Press Ctrl+C to stop.`);
|
|
1746
|
+
this.uiAdapter.startProcessing('Continuous execution mode');
|
|
1747
|
+
this.setProcessingStatus();
|
|
1748
|
+
let iteration = 0;
|
|
1749
|
+
let lastResponse = '';
|
|
1750
|
+
let consecutiveNoProgress = 0;
|
|
1751
|
+
const MAX_NO_PROGRESS = 3;
|
|
1752
|
+
try {
|
|
1753
|
+
// First request uses the original prompt
|
|
1754
|
+
let currentPrompt = initialRequest;
|
|
1755
|
+
while (iteration < MAX_ITERATIONS) {
|
|
1756
|
+
iteration++;
|
|
1757
|
+
display.showSystemMessage(`\nš Iteration ${iteration}/${MAX_ITERATIONS}`);
|
|
1758
|
+
display.showThinking(`Working on iteration ${iteration}...`);
|
|
1759
|
+
try {
|
|
1760
|
+
// Send the request and capture the response
|
|
1761
|
+
const response = await agent.send(currentPrompt, true);
|
|
1762
|
+
await this.awaitPendingCleanup();
|
|
1763
|
+
this.captureHistorySnapshot();
|
|
1764
|
+
this.autosaveIfEnabled();
|
|
1765
|
+
// Track metrics
|
|
1766
|
+
const elapsedMs = Date.now() - overallStartTime;
|
|
1767
|
+
this.alphaZeroMetrics.recordMessage(elapsedMs);
|
|
1768
|
+
display.stopThinking(false);
|
|
1769
|
+
// Check if the response indicates completion
|
|
1770
|
+
const isComplete = COMPLETION_PATTERNS.some(pattern => pattern.test(response));
|
|
1771
|
+
const responseChanged = response !== lastResponse;
|
|
1772
|
+
if (isComplete && responseChanged) {
|
|
1773
|
+
display.showSystemMessage(`\nā
Task completed after ${iteration} iteration(s).`);
|
|
1774
|
+
break;
|
|
1775
|
+
}
|
|
1776
|
+
// Check for no progress (same response multiple times)
|
|
1777
|
+
if (!responseChanged) {
|
|
1778
|
+
consecutiveNoProgress++;
|
|
1779
|
+
if (consecutiveNoProgress >= MAX_NO_PROGRESS) {
|
|
1780
|
+
display.showSystemMessage(`\nā ļø No progress detected for ${MAX_NO_PROGRESS} iterations. Stopping.`);
|
|
1781
|
+
break;
|
|
1782
|
+
}
|
|
1783
|
+
}
|
|
1784
|
+
else {
|
|
1785
|
+
consecutiveNoProgress = 0;
|
|
1786
|
+
}
|
|
1787
|
+
lastResponse = response;
|
|
1788
|
+
// Prepare next iteration prompt
|
|
1789
|
+
currentPrompt = 'Continue with the next step. If all tasks are complete, say "done".';
|
|
1790
|
+
// Small delay between iterations to prevent rate limiting
|
|
1791
|
+
await new Promise(resolve => setTimeout(resolve, 500));
|
|
1792
|
+
}
|
|
1793
|
+
catch (error) {
|
|
1794
|
+
display.stopThinking(false);
|
|
1795
|
+
// Handle context overflow specially - the agent should auto-recover
|
|
1796
|
+
// but if it propagates here, we continue the loop
|
|
1797
|
+
if (this.isContextOverflowError(error)) {
|
|
1798
|
+
display.showSystemMessage(`ā” Context overflow handled. Continuing with reduced context...`);
|
|
1799
|
+
// The agent.ts should have already handled recovery
|
|
1800
|
+
// Continue to next iteration
|
|
1801
|
+
continue;
|
|
1802
|
+
}
|
|
1803
|
+
// For other errors, check if handled by provider error handler
|
|
1804
|
+
const handled = this.handleProviderError(error, () => this.processContinuousRequest(initialRequest));
|
|
1805
|
+
if (!handled) {
|
|
1806
|
+
display.showError(error instanceof Error ? error.message : String(error), error);
|
|
1807
|
+
break;
|
|
1808
|
+
}
|
|
1809
|
+
}
|
|
1810
|
+
}
|
|
1811
|
+
if (iteration >= MAX_ITERATIONS) {
|
|
1812
|
+
display.showWarning(`\nā ļø Reached maximum iterations (${MAX_ITERATIONS}). Stopping to prevent infinite loop.`);
|
|
1813
|
+
}
|
|
1814
|
+
}
|
|
1815
|
+
finally {
|
|
1816
|
+
const totalElapsed = Date.now() - overallStartTime;
|
|
1817
|
+
const minutes = Math.floor(totalElapsed / 60000);
|
|
1818
|
+
const seconds = Math.floor((totalElapsed % 60000) / 1000);
|
|
1819
|
+
display.showSystemMessage(`\nš Continuous execution completed: ${iteration} iterations, ${minutes}m ${seconds}s total`);
|
|
1820
|
+
this.isProcessing = false;
|
|
1821
|
+
this.uiAdapter.endProcessing('Ready for prompts');
|
|
1822
|
+
this.setIdleStatus();
|
|
1823
|
+
display.newLine();
|
|
1824
|
+
this.persistentPrompt.show();
|
|
1825
|
+
}
|
|
1826
|
+
}
|
|
1827
|
+
/**
|
|
1828
|
+
* Check if an error is a context overflow error
|
|
1829
|
+
*/
|
|
1830
|
+
isContextOverflowError(error) {
|
|
1831
|
+
if (!(error instanceof Error))
|
|
1832
|
+
return false;
|
|
1833
|
+
const message = error.message.toLowerCase();
|
|
1834
|
+
return (message.includes('context length') ||
|
|
1835
|
+
(message.includes('token') && (message.includes('limit') || message.includes('exceed') || message.includes('maximum'))) ||
|
|
1836
|
+
message.includes('too long') ||
|
|
1837
|
+
message.includes('too many tokens') ||
|
|
1838
|
+
message.includes('max_tokens') ||
|
|
1839
|
+
message.includes('context window'));
|
|
1840
|
+
}
|
|
1695
1841
|
async awaitPendingCleanup() {
|
|
1696
1842
|
if (!this.pendingCleanup) {
|
|
1697
1843
|
return;
|
|
@@ -1776,6 +1922,37 @@ export class InteractiveShell {
|
|
|
1776
1922
|
this.pendingCleanup = cleanup;
|
|
1777
1923
|
}
|
|
1778
1924
|
},
|
|
1925
|
+
onContextSquishing: (message) => {
|
|
1926
|
+
// Show notification in UI when auto context squishing occurs
|
|
1927
|
+
display.showSystemMessage(`š ${message}`);
|
|
1928
|
+
this.statusTracker.pushOverride('context-squish', 'Auto-squishing context', {
|
|
1929
|
+
detail: 'Reducing conversation history to fit within token limits',
|
|
1930
|
+
tone: 'warning',
|
|
1931
|
+
});
|
|
1932
|
+
},
|
|
1933
|
+
onContextRecovery: (attempt, maxAttempts, message) => {
|
|
1934
|
+
// Show recovery progress in UI
|
|
1935
|
+
display.showSystemMessage(`ā” Context Recovery (${attempt}/${maxAttempts}): ${message}`);
|
|
1936
|
+
// Update persistent prompt to show recovery status
|
|
1937
|
+
this.persistentPrompt.updateStatusBar({
|
|
1938
|
+
contextUsage: 100, // Show as full during recovery
|
|
1939
|
+
});
|
|
1940
|
+
},
|
|
1941
|
+
onContextPruned: (removedCount, stats) => {
|
|
1942
|
+
// Clear squish overlay if active
|
|
1943
|
+
this.statusTracker.clearOverride('context-squish');
|
|
1944
|
+
// Show notification that context was pruned
|
|
1945
|
+
const method = stats['method'];
|
|
1946
|
+
const percentage = stats['percentage'];
|
|
1947
|
+
if (method === 'emergency-recovery') {
|
|
1948
|
+
display.showSystemMessage(`ā
Context recovery complete. Removed ${removedCount} messages. Context now at ${percentage ?? 'unknown'}%`);
|
|
1949
|
+
}
|
|
1950
|
+
// Update context usage in UI
|
|
1951
|
+
if (typeof percentage === 'number') {
|
|
1952
|
+
this.uiAdapter.updateContextUsage(percentage);
|
|
1953
|
+
this.persistentPrompt.updateStatusBar({ contextUsage: percentage });
|
|
1954
|
+
}
|
|
1955
|
+
},
|
|
1779
1956
|
});
|
|
1780
1957
|
const historyToLoad = (this.pendingHistoryLoad && this.pendingHistoryLoad.length
|
|
1781
1958
|
? this.pendingHistoryLoad
|