erosolar-cli 2.1.217 → 2.1.218
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/shell/interactiveShell.d.ts.map +1 -1
- package/dist/shell/interactiveShell.js +12 -4
- package/dist/shell/interactiveShell.js.map +1 -1
- package/dist/ui/UnifiedUIRenderer.d.ts.map +1 -1
- package/dist/ui/UnifiedUIRenderer.js +23 -9
- package/dist/ui/UnifiedUIRenderer.js.map +1 -1
- package/dist/ui/shortcutsHelp.js +1 -1
- package/dist/ui/shortcutsHelp.js.map +1 -1
- package/dist/utils/errorUtils.d.ts +12 -0
- package/dist/utils/errorUtils.d.ts.map +1 -0
- package/dist/utils/errorUtils.js +83 -0
- package/dist/utils/errorUtils.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { sleep } from './asyncUtils.js';
|
|
2
|
+
const RETRYABLE_KEYWORDS = [
|
|
3
|
+
'timeout',
|
|
4
|
+
'network',
|
|
5
|
+
'rate limit',
|
|
6
|
+
'too many requests',
|
|
7
|
+
'service unavailable',
|
|
8
|
+
];
|
|
9
|
+
function deriveErrorCode(error) {
|
|
10
|
+
if (error.name && error.name !== 'Error') {
|
|
11
|
+
return error.name.toUpperCase();
|
|
12
|
+
}
|
|
13
|
+
const normalized = error.message
|
|
14
|
+
.trim()
|
|
15
|
+
.replace(/[^\w]+/g, '_')
|
|
16
|
+
.replace(/^_+|_+$/g, '')
|
|
17
|
+
.toUpperCase();
|
|
18
|
+
return normalized || undefined;
|
|
19
|
+
}
|
|
20
|
+
export function createErrorDetails(error, context) {
|
|
21
|
+
const timestamp = new Date().toISOString();
|
|
22
|
+
if (error instanceof Error) {
|
|
23
|
+
return {
|
|
24
|
+
message: error.message,
|
|
25
|
+
code: deriveErrorCode(error),
|
|
26
|
+
context,
|
|
27
|
+
stack: error.stack,
|
|
28
|
+
timestamp,
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
return {
|
|
32
|
+
message: String(error),
|
|
33
|
+
context,
|
|
34
|
+
timestamp,
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
export function formatErrorForLogging(error, context) {
|
|
38
|
+
const details = createErrorDetails(error, context);
|
|
39
|
+
const parts = [`Error: ${details.message}`];
|
|
40
|
+
if (context) {
|
|
41
|
+
parts.push(`Context: ${JSON.stringify(context)}`);
|
|
42
|
+
}
|
|
43
|
+
parts.push(`Stack: ${details.stack ?? '(not available)'}`);
|
|
44
|
+
parts.push(`Timestamp: ${details.timestamp}`);
|
|
45
|
+
return parts.join('\n');
|
|
46
|
+
}
|
|
47
|
+
export function isRetryableError(error) {
|
|
48
|
+
if (error && typeof error === 'object' && 'retryable' in error) {
|
|
49
|
+
const retryableFlag = error.retryable;
|
|
50
|
+
if (typeof retryableFlag === 'boolean') {
|
|
51
|
+
return retryableFlag;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
const message = error instanceof Error
|
|
55
|
+
? error.message
|
|
56
|
+
: typeof error === 'string'
|
|
57
|
+
? error
|
|
58
|
+
: '';
|
|
59
|
+
if (!message) {
|
|
60
|
+
return false;
|
|
61
|
+
}
|
|
62
|
+
const normalized = message.toLowerCase();
|
|
63
|
+
return RETRYABLE_KEYWORDS.some(keyword => normalized.includes(keyword));
|
|
64
|
+
}
|
|
65
|
+
export async function withRetry(operation, maxRetries = 3, delayMs = 100) {
|
|
66
|
+
let attempts = 0;
|
|
67
|
+
// eslint-disable-next-line no-constant-condition
|
|
68
|
+
while (true) {
|
|
69
|
+
try {
|
|
70
|
+
return await operation();
|
|
71
|
+
}
|
|
72
|
+
catch (error) {
|
|
73
|
+
if (!isRetryableError(error) || attempts >= maxRetries) {
|
|
74
|
+
throw error;
|
|
75
|
+
}
|
|
76
|
+
attempts += 1;
|
|
77
|
+
if (delayMs > 0) {
|
|
78
|
+
await sleep(delayMs);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=errorUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errorUtils.js","sourceRoot":"","sources":["../../src/utils/errorUtils.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "erosolar-cli",
|
|
3
|
-
"version": "2.1.
|
|
3
|
+
"version": "2.1.218",
|
|
4
4
|
"description": "Unified AI agent framework for the command line - Multi-provider support with schema-driven tools, code intelligence, and transparent reasoning",
|
|
5
5
|
"main": "dist/bin/erosolar.js",
|
|
6
6
|
"type": "module",
|