jeopi-cli 16.2.20 → 16.2.22
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/CHANGELOG.md +6 -0
- package/dist/cli.js +2333 -2333
- package/package.json +12 -12
- package/src/modes/controllers/event-controller.ts +6 -1
- package/src/session/agent-session.ts +8 -1
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"type": "module",
|
|
3
3
|
"name": "jeopi-cli",
|
|
4
|
-
"version": "16.2.
|
|
4
|
+
"version": "16.2.22",
|
|
5
5
|
"description": "Coding agent CLI with read, bash, edit, write tools and session management",
|
|
6
6
|
"homepage": "https://github.com/akillness/jeopi",
|
|
7
7
|
"author": "Can Boluk",
|
|
@@ -56,17 +56,17 @@
|
|
|
56
56
|
"@agentclientprotocol/sdk": "0.25.0",
|
|
57
57
|
"@babel/parser": "^7.29.7",
|
|
58
58
|
"@mozilla/readability": "^0.6.0",
|
|
59
|
-
"jeopi-hashline": "16.2.
|
|
60
|
-
"jeopi-stats": "16.2.
|
|
61
|
-
"jeopi-agent-core": "16.2.
|
|
62
|
-
"jeopi-ai": "16.2.
|
|
63
|
-
"jeopi-catalog": "16.2.
|
|
64
|
-
"jeopi-mnemopi": "16.2.
|
|
65
|
-
"jeopi-natives": "16.2.
|
|
66
|
-
"jeopi-tui": "16.2.
|
|
67
|
-
"jeopi-utils": "16.2.
|
|
68
|
-
"jeopi-wire": "16.2.
|
|
69
|
-
"jeopi-snapcompact": "16.2.
|
|
59
|
+
"jeopi-hashline": "16.2.22",
|
|
60
|
+
"jeopi-stats": "16.2.22",
|
|
61
|
+
"jeopi-agent-core": "16.2.22",
|
|
62
|
+
"jeopi-ai": "16.2.22",
|
|
63
|
+
"jeopi-catalog": "16.2.22",
|
|
64
|
+
"jeopi-mnemopi": "16.2.22",
|
|
65
|
+
"jeopi-natives": "16.2.22",
|
|
66
|
+
"jeopi-tui": "16.2.22",
|
|
67
|
+
"jeopi-utils": "16.2.22",
|
|
68
|
+
"jeopi-wire": "16.2.22",
|
|
69
|
+
"jeopi-snapcompact": "16.2.22",
|
|
70
70
|
"@opentelemetry/api": "^1.9.1",
|
|
71
71
|
"@opentelemetry/context-async-hooks": "^2.7.1",
|
|
72
72
|
"@opentelemetry/exporter-trace-otlp-proto": "^0.218.0",
|
|
@@ -1227,7 +1227,12 @@ export class EventController {
|
|
|
1227
1227
|
this.ctx.statusContainer.clear();
|
|
1228
1228
|
}
|
|
1229
1229
|
if (!event.success) {
|
|
1230
|
-
|
|
1230
|
+
const finalError = event.finalError || "Unknown error";
|
|
1231
|
+
this.ctx.showError(
|
|
1232
|
+
finalError.startsWith("Quota exhausted.")
|
|
1233
|
+
? finalError
|
|
1234
|
+
: `Retry failed after ${event.attempt} attempts: ${finalError}`,
|
|
1235
|
+
);
|
|
1231
1236
|
}
|
|
1232
1237
|
this.#ensureWorkingLoaderWhileStreaming();
|
|
1233
1238
|
this.ctx.ui.requestRender();
|
|
@@ -12998,6 +12998,12 @@ export class AgentSession {
|
|
|
12998
12998
|
// Smart Fallback if no exact headers found
|
|
12999
12999
|
return undefined;
|
|
13000
13000
|
}
|
|
13001
|
+
#formatRetryDelayCapError(errorMessage: string, delayMs: number, maxDelayMs: number, usageLimit: boolean): string {
|
|
13002
|
+
if (usageLimit) {
|
|
13003
|
+
return `Quota exhausted. Provider requested ${delayMs}ms wait (${formatDuration(delayMs)}), exceeds retry.maxDelayMs (${maxDelayMs}ms), so jeopi did not sleep. Original error: ${errorMessage}`;
|
|
13004
|
+
}
|
|
13005
|
+
return `Provider requested ${delayMs}ms wait, exceeds retry.maxDelayMs (${maxDelayMs}ms). Original error: ${errorMessage}`;
|
|
13006
|
+
}
|
|
13001
13007
|
|
|
13002
13008
|
/**
|
|
13003
13009
|
* Handle retryable errors with exponential backoff.
|
|
@@ -13174,13 +13180,14 @@ export class AgentSession {
|
|
|
13174
13180
|
const maxDelayMs = retrySettings.maxDelayMs;
|
|
13175
13181
|
if (maxDelayMs > 0 && delayMs > maxDelayMs && !switchedCredential && !switchedModel && !classifierRefusal) {
|
|
13176
13182
|
const attempt = this.#retryAttempt;
|
|
13183
|
+
const usageLimit = AIError.is(id, AIError.Flag.UsageLimit);
|
|
13177
13184
|
this.#retryAttempt = 0;
|
|
13178
13185
|
this.#refusalBackoff = undefined;
|
|
13179
13186
|
await this.#emitSessionEvent({
|
|
13180
13187
|
type: "auto_retry_end",
|
|
13181
13188
|
success: false,
|
|
13182
13189
|
attempt,
|
|
13183
|
-
finalError:
|
|
13190
|
+
finalError: this.#formatRetryDelayCapError(errorMessage, delayMs, maxDelayMs, usageLimit),
|
|
13184
13191
|
});
|
|
13185
13192
|
this.#resolveRetry();
|
|
13186
13193
|
return false;
|