@elvatis_com/openclaw-cli-bridge-elvatis 0.2.14 → 0.2.15

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.
@@ -1,42 +1,49 @@
1
1
  # STATUS.md — openclaw-cli-bridge-elvatis
2
2
 
3
- _Last updated: 2026-03-07 by Akido (claude-sonnet-4-6)_
3
+ _Last updated: 2026-03-08 by Akido (claude-sonnet-4-6)_
4
4
 
5
- ## Current Version: 0.2.14 — STABLE
5
+ ## Current Version: 0.2.15 — STABLE
6
6
 
7
7
  ## What is done
8
8
 
9
9
  - ✅ Repo: `https://github.com/elvatis/openclaw-cli-bridge-elvatis`
10
- - ✅ npm: `@elvatis_com/openclaw-cli-bridge-elvatis@0.2.14`
11
- - ✅ ClawHub: `openclaw-cli-bridge-elvatis@0.2.14`
10
+ - ✅ npm: `@elvatis_com/openclaw-cli-bridge-elvatis@0.2.15`
11
+ - ✅ ClawHub: `openclaw-cli-bridge-elvatis@0.2.15`
12
12
  - ✅ Phase 1: `openai-codex` provider via `~/.codex/auth.json` (no re-login)
13
13
  - ✅ Phase 2: Local OpenAI-compatible proxy on `127.0.0.1:31337` (Gemini + Claude CLI)
14
14
  - ✅ Phase 3: 10 slash commands (`/cli-sonnet`, `/cli-opus`, `/cli-haiku`, `/cli-gemini`, `/cli-gemini-flash`, `/cli-gemini3`, `/cli-codex`, `/cli-codex-mini`, `/cli-back`, `/cli-test`)
15
15
  - ✅ Config patcher: auto-adds vllm provider to `openclaw.json` on first startup
16
16
  - ✅ Prompt delivery via stdin (no E2BIG, no Gemini agentic mode)
17
- - ✅ `registerService` stop() hook: closes proxy server on plugin teardown (fixes EADDRINUSE on hot-reload)
18
- - ✅ `openclaw.extensions` added to `package.json` (required for `openclaw plugins install`)
17
+ - ✅ `registerService` stop() hook: closes proxy server on plugin teardown
18
+ - ✅ `requireAuth: false` on all commands webchat + WhatsApp authorized via gateway `commands.allowFrom`
19
+ - ✅ `vllm/` prefix stripping in `routeToCliRunner` — accepts both `vllm/cli-claude/...` and bare `cli-claude/...`
20
+ - ✅ End-to-end tested (2026-03-08): claude-sonnet-4-6 ✅ claude-haiku-4-5 ✅ gemini-2.5-flash ✅ gemini-2.5-pro ✅ codex ✅
21
+
22
+ ## Known Operational Notes
23
+
24
+ - **Claude CLI auth expires** — token lifetime ~90 days. When `/cli-test` returns 401, run `claude auth login` on the server to refresh.
25
+ - Config patcher writes `openclaw.json` directly → triggers one gateway restart on first install (expected, one-time only)
26
+ - ClawHub publish ignores `.clawhubignore` — use rsync workaround (see CONVENTIONS.md)
19
27
 
20
28
  ## Bugs Fixed
21
29
 
30
+ ### v0.2.14 — vllm/ prefix not stripped in model router
31
+ `routeToCliRunner` received full provider path `vllm/cli-claude/...` from OpenClaw
32
+ but only checked for `cli-claude/...` — caused "Unknown CLI bridge model" on all requests.
33
+ Fixed by stripping the `vllm/` prefix before routing.
34
+
35
+ ### v0.2.13 — requireAuth blocking webchat commands
36
+ All `/cli-*` commands had `requireAuth: true`. Plugin-level auth checks `isAuthorizedSender`
37
+ via a different resolution path than `commands.allowFrom` config — webchat senders were
38
+ never authorized. Fixed by setting `requireAuth: false`; gateway-level `commands.allowFrom`
39
+ is the correct security layer.
40
+
22
41
  ### v0.2.9 — Critical: Gateway SIGKILL via fuser
23
42
  `fuser -k 31337/tcp` was sending SIGKILL to the gateway process itself during
24
- in-process hot-reloads. The gateway holds port 31337 (via the proxy it spawned),
25
- so `fuser` found it and killed it — explaining `status=9/KILL` in systemd journal.
26
- Fixed by replacing `fuser -k` with a safe health probe (`GET /v1/models`): if the
27
- existing proxy responds, reuse it silently. If EADDRINUSE but no response, wait 1s
28
- and retry once. No process killing involved.
43
+ in-process hot-reloads. Fixed by replacing `fuser -k` with a safe health probe.
29
44
 
30
- ### v0.2.7–v0.2.8 — EADDRINUSE on hot-reload (partially fixed, superseded by v0.2.9)
31
- Added `closeAllConnections()` + `registerService` stop() hook. Port still leaked
32
- during systemd restarts due to race condition. v0.2.9 health-probe approach is the
33
- definitive fix.
45
+ ### v0.2.7–v0.2.8 — EADDRINUSE on hot-reload
46
+ Added `closeAllConnections()` + `registerService` stop() hook.
34
47
 
35
48
  ### v0.2.6 — Port leak on gateway hot-reload
36
- HTTP proxy server had no cleanup handler. Fixed with `registerService` stop() callback.
37
-
38
- ## Open Risks
39
-
40
- - `openai-codex/gpt-5.4` returns 401 missing scope `model.request` — external (OpenAI account scope), not plugin code
41
- - Config patcher writes `openclaw.json` directly → triggers one gateway restart on first install (expected, one-time only)
42
- - ClawHub publish ignores `.clawhubignore` — use rsync workaround (see CONVENTIONS.md)
49
+ HTTP proxy server had no cleanup handler.
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  > OpenClaw plugin that bridges locally installed AI CLIs (Codex, Gemini, Claude Code) as model providers — with slash commands for instant model switching, restore, and health testing.
4
4
 
5
- **Current version:** `0.2.14`
5
+ **Current version:** `0.2.15`
6
6
 
7
7
  ---
8
8
 
@@ -234,8 +234,20 @@ npm test # vitest run (5 unit tests for formatPrompt)
234
234
 
235
235
  ## Changelog
236
236
 
237
+ ### v0.2.15
238
+ - **docs:** Rewrite changelog (entries for v0.2.12–v0.2.14 were corrupted by repeated sed version bumps); all providers verified working (Claude, Gemini, Codex)
239
+ - **docs:** Update STATUS.md with end-to-end test results
240
+
237
241
  ### v0.2.14
238
- - **docs:** Fix changelog (v0.2.10 entry was lost by sed, v0.2.11 description was wrong); enforce single-commit publish discipline
242
+ - **fix:** Strip `vllm/` prefix in `routeToCliRunner` OpenClaw sends full provider path (`vllm/cli-claude/...`) but proxy router expected bare `cli-claude/...`; caused "Unknown CLI bridge model" on all requests
243
+ - **test:** Add 4 routing tests covering both prefixed and non-prefixed model paths (9 tests total)
244
+
245
+ ### v0.2.13
246
+ - **fix:** Set `requireAuth: false` on all `/cli-*` commands — webchat senders were always blocked because plugin-level auth uses a different resolution path than `commands.allowFrom` config; gateway-level allowlist is the correct security layer
247
+ - **fix:** Hardcoded `version: "0.2.5"` in plugin object (`index.ts`) — now tracks `package.json`
248
+
249
+ ### v0.2.12
250
+ - **docs:** Fix changelog continuity — v0.2.10 entry was lost, v0.2.11 description was wrong; all entries now accurate
239
251
 
240
252
  ### v0.2.11
241
253
  - **docs:** Fix README `Current version` header (was stuck at 0.2.9 after 0.2.10 bump)
package/SKILL.md CHANGED
@@ -53,4 +53,4 @@ Each command runs `openclaw models set <model>` atomically and replies with a co
53
53
 
54
54
  See `README.md` for full configuration reference and architecture diagram.
55
55
 
56
- **Version:** 0.2.14
56
+ **Version:** 0.2.15
package/index.ts CHANGED
@@ -277,7 +277,7 @@ function proxyTestRequest(
277
277
  const plugin = {
278
278
  id: "openclaw-cli-bridge-elvatis",
279
279
  name: "OpenClaw CLI Bridge",
280
- version: "0.2.14",
280
+ version: "0.2.15",
281
281
  description:
282
282
  "Phase 1: openai-codex auth bridge. " +
283
283
  "Phase 2: HTTP proxy for gemini/claude CLIs. " +
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "id": "openclaw-cli-bridge-elvatis",
3
3
  "name": "OpenClaw CLI Bridge",
4
- "version": "0.2.14",
4
+ "version": "0.2.15",
5
5
  "description": "Phase 1: openai-codex auth bridge. Phase 2: local HTTP proxy routing model calls through gemini/claude CLIs (vllm provider).",
6
6
  "providers": [
7
7
  "openai-codex"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@elvatis_com/openclaw-cli-bridge-elvatis",
3
- "version": "0.2.14",
3
+ "version": "0.2.15",
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": {