@elvatis_com/openclaw-cli-bridge-elvatis 3.4.0 → 3.4.1
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/README.md +1 -1
- package/SKILL.md +1 -1
- package/openclaw.plugin.json +1 -1
- package/package.json +1 -1
- package/src/cli-runner.ts +4 -2
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
> OpenClaw plugin that bridges locally installed AI CLIs (Codex, Gemini, Claude Code, OpenCode, Pi) as model providers — with slash commands for instant model switching, restore, health testing, and model listing.
|
|
4
4
|
|
|
5
|
-
**Current version:** `3.4.
|
|
5
|
+
**Current version:** `3.4.1`
|
|
6
6
|
|
|
7
7
|
---
|
|
8
8
|
|
package/SKILL.md
CHANGED
package/openclaw.plugin.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"id": "openclaw-cli-bridge-elvatis",
|
|
3
3
|
"slug": "openclaw-cli-bridge-elvatis",
|
|
4
4
|
"name": "OpenClaw CLI Bridge",
|
|
5
|
-
"version": "3.4.
|
|
5
|
+
"version": "3.4.1",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"description": "Phase 1: openai-codex auth bridge. Phase 2: local HTTP proxy routing model calls through gemini/claude CLIs (vllm provider).",
|
|
8
8
|
"providers": [
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@elvatis_com/openclaw-cli-bridge-elvatis",
|
|
3
|
-
"version": "3.4.
|
|
3
|
+
"version": "3.4.1",
|
|
4
4
|
"description": "Bridges gemini, claude, and codex CLI tools as OpenClaw model providers. Reads existing CLI auth without re-login.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"openclaw": {
|
package/src/cli-runner.ts
CHANGED
|
@@ -708,8 +708,8 @@ export async function runClaude(
|
|
|
708
708
|
|
|
709
709
|
const stderr = result.stderr || "(no output)";
|
|
710
710
|
|
|
711
|
-
// Session might be corrupted or
|
|
712
|
-
if (stderr.includes("session") || stderr.includes("resume") || stderr.includes("not found")) {
|
|
711
|
+
// Session might be corrupted, expired, or locked by a zombie process — invalidate and retry
|
|
712
|
+
if (stderr.includes("session") || stderr.includes("resume") || stderr.includes("not found") || stderr.includes("already in use")) {
|
|
713
713
|
debugLog("CLAUDE", `session ${session.sessionId.slice(0, 8)} invalid, creating fresh`, { error: stderr.slice(0, 100) });
|
|
714
714
|
invalidateSession(model);
|
|
715
715
|
// Retry once with a fresh session
|
|
@@ -724,6 +724,8 @@ export async function runClaude(
|
|
|
724
724
|
recordSessionSuccess(model);
|
|
725
725
|
return retry.stdout;
|
|
726
726
|
}
|
|
727
|
+
// Retry also failed — invalidate the fresh session so the next request doesn't reuse it
|
|
728
|
+
invalidateSession(model);
|
|
727
729
|
throw new Error(`claude exited ${retry.exitCode}: ${annotateExitError(retry.exitCode, retry.stderr || "(no output)", false, modelId)}`);
|
|
728
730
|
}
|
|
729
731
|
|