@elvatis_com/openclaw-cli-bridge-elvatis 0.2.22 → 0.2.25
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/.ai/handoff/DASHBOARD.md +32 -19
- package/.ai/handoff/LOG.md +111 -38
- package/.ai/handoff/MANIFEST.json +49 -126
- package/.ai/handoff/NEXT_ACTIONS.md +21 -22
- package/.ai/handoff/STATUS.md +76 -48
- package/.ai/handoff/TRUST.md +40 -51
- package/README.md +15 -1
- package/SKILL.md +1 -1
- package/index.ts +165 -10
- package/openclaw.plugin.json +1 -1
- package/package.json +2 -2
- package/src/claude-auth.ts +247 -0
- package/src/cli-runner.ts +21 -6
- package/src/proxy-server.ts +9 -0
package/.ai/handoff/DASHBOARD.md
CHANGED
|
@@ -1,37 +1,50 @@
|
|
|
1
1
|
# DASHBOARD.md — openclaw-cli-bridge-elvatis
|
|
2
2
|
|
|
3
|
-
_Last updated: 2026-03-
|
|
3
|
+
_Last updated: 2026-03-11_
|
|
4
4
|
|
|
5
|
+
<!-- SECTION: plugin_status -->
|
|
5
6
|
## 🏗️ Plugin Status
|
|
6
7
|
|
|
7
8
|
| Component | Version | Build | Tests | Status |
|
|
8
9
|
|-----------|---------|-------|-------|--------|
|
|
9
|
-
| openclaw-cli-bridge-elvatis | 0.2.
|
|
10
|
+
| openclaw-cli-bridge-elvatis | 0.2.25 | ✅ | ✅ 51/51 | ✅ Stable |
|
|
11
|
+
<!-- /SECTION: plugin_status -->
|
|
10
12
|
|
|
13
|
+
<!-- SECTION: release_state -->
|
|
11
14
|
## 🚀 Release State
|
|
12
15
|
|
|
13
|
-
| Platform | Version | Status |
|
|
14
|
-
|
|
15
|
-
| GitHub | v0.2.
|
|
16
|
-
| npm | 0.2.
|
|
17
|
-
| ClawHub | 0.2.
|
|
16
|
+
| Platform | Published Version | Status |
|
|
17
|
+
|----------|------------------|--------|
|
|
18
|
+
| GitHub | v0.2.23 | ✅ Tagged + Release |
|
|
19
|
+
| npm | 0.2.23 | ✅ Published |
|
|
20
|
+
| ClawHub | 0.2.23 | ✅ Published |
|
|
21
|
+
| Local | 0.2.25 | ⏳ Built + tested, pending publish |
|
|
22
|
+
<!-- /SECTION: release_state -->
|
|
18
23
|
|
|
24
|
+
<!-- SECTION: open_tasks -->
|
|
19
25
|
## 📋 Open Tasks
|
|
20
26
|
|
|
21
|
-
| ID | Task | Priority |
|
|
22
|
-
|
|
23
|
-
| T-
|
|
24
|
-
|
|
25
|
-
| T-103 | Explicit model allowlist for CLI execution | 🟢 LOW | Ready |
|
|
27
|
+
| ID | Task | Priority | Blocked by | Ready? |
|
|
28
|
+
|----|------|----------|-----------|--------|
|
|
29
|
+
| T-010 | Publish v0.2.25 to GitHub + npm + ClawHub | 🟡 MEDIUM | — | ✅ Ready |
|
|
30
|
+
<!-- /SECTION: open_tasks -->
|
|
26
31
|
|
|
32
|
+
<!-- SECTION: completed_tasks -->
|
|
27
33
|
## ✅ Completed Tasks
|
|
28
34
|
|
|
29
35
|
| Task | Title | Version |
|
|
30
36
|
|------|-------|---------|
|
|
31
|
-
| T-
|
|
32
|
-
| T-
|
|
33
|
-
| T-
|
|
34
|
-
| T-
|
|
35
|
-
| T-
|
|
36
|
-
| T-
|
|
37
|
-
| T-
|
|
37
|
+
| T-011 | Session-safe staged model switching (/cli-apply, /cli-pending, --now) | 0.2.25 |
|
|
38
|
+
| T-009 | Stability: sleep-resilient token refresh + stopTokenRefresh cleanup | 0.2.25 |
|
|
39
|
+
| T-103 | Explicit model allowlist for CLI execution | 0.2.23 |
|
|
40
|
+
| T-102 | Proxy auth key rotation via config | 0.2.23 |
|
|
41
|
+
| T-101 | Unit tests for prompt formatter + model router | 0.2.23 |
|
|
42
|
+
| T-008 | Validate proxy endpoints + vllm model calls end-to-end | 0.2.21 |
|
|
43
|
+
| T-007 | Create GitHub repo and push initial code | 0.2.5 |
|
|
44
|
+
| T-006 | Implement Claude Code CLI request bridge | 0.2.5 |
|
|
45
|
+
| T-005 | Implement Gemini CLI request bridge | 0.2.5 |
|
|
46
|
+
| T-004 | Verify model call: gpt-5.2 / gpt-5.3-codex responds | 0.2.5 |
|
|
47
|
+
| T-003 | Test auth flow: openclaw models auth login --provider openai-codex | 0.2.5 |
|
|
48
|
+
| T-002 | Implement openai-codex provider (Codex CLI auth bridge) | 0.2.5 |
|
|
49
|
+
| T-001 | Scaffold plugin structure + AAHP handoff | 0.2.5 |
|
|
50
|
+
<!-- /SECTION: completed_tasks -->
|
package/.ai/handoff/LOG.md
CHANGED
|
@@ -1,26 +1,116 @@
|
|
|
1
1
|
# LOG.md — openclaw-cli-bridge-elvatis
|
|
2
2
|
|
|
3
|
+
_Last 10 sessions. Older entries in LOG-ARCHIVE.md._
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## 2026-03-11 — Session 6 (Akido / claude-sonnet-4-6)
|
|
8
|
+
|
|
9
|
+
> **Agent:** claude-sonnet-4-6
|
|
10
|
+
> **Phase:** implementation
|
|
11
|
+
> **Commit before:** (unpublished local, v0.2.24 base)
|
|
12
|
+
> **Commit after:** pending (v0.2.25)
|
|
13
|
+
|
|
14
|
+
**T-011: Session-safe staged model switching**
|
|
15
|
+
|
|
16
|
+
### Problem
|
|
17
|
+
`/cli-*` commands called `openclaw models set <model>` immediately — a global, instantaneous
|
|
18
|
+
switch. If a conversation was in progress, the running agent lost its context mid-task:
|
|
19
|
+
tool calls failed silently, plan files weren't written, no error feedback. Session had to
|
|
20
|
+
be abandoned. Root cause: no API exists in the plugin SDK to detect if a session is active;
|
|
21
|
+
the switch always went through regardless.
|
|
22
|
+
|
|
23
|
+
### Fix (index.ts)
|
|
24
|
+
|
|
25
|
+
**New state file:** `~/.openclaw/cli-bridge-pending.json` — stores a staged switch
|
|
26
|
+
(`{ model, label, requestedAt }`).
|
|
27
|
+
|
|
28
|
+
**`switchModel()` refactored into two paths:**
|
|
29
|
+
- `applyModelSwitch()` — runs `openclaw models set` immediately (extracted helper)
|
|
30
|
+
- `switchModel(forceNow=false)` — stages by default, calls `applyModelSwitch` only with `--now`
|
|
31
|
+
|
|
32
|
+
**New commands registered:**
|
|
33
|
+
- `/cli-apply` — apply staged switch; safe to run after finishing the current task
|
|
34
|
+
- `/cli-pending` — show current staged switch state
|
|
35
|
+
- `/cli-back` — now also calls `clearPending()` to discard any staged switch
|
|
36
|
+
|
|
37
|
+
**All `/cli-*` switch commands updated:**
|
|
38
|
+
- `acceptsArgs: true` — passes `--now` flag through
|
|
39
|
+
- Default: stages + shows warning with instructions
|
|
40
|
+
- `--now`: immediate (explicit user choice)
|
|
41
|
+
|
|
42
|
+
**`/cli-list` updated** to show pending state inline and switching instructions.
|
|
43
|
+
|
|
44
|
+
### Build + Tests
|
|
45
|
+
- `npm run build` — ✅ clean
|
|
46
|
+
- `npm test` — ✅ 51/51 (no test changes needed; new code is command-handler logic)
|
|
47
|
+
|
|
48
|
+
### Version
|
|
49
|
+
0.2.24 → 0.2.25 (feature bump: staged switching is new behavior, not just a fix)
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
## 2026-03-11 — Session 5 (Akido / claude-sonnet-4-6)
|
|
54
|
+
|
|
55
|
+
> **Agent:** claude-sonnet-4-6
|
|
56
|
+
> **Phase:** fix
|
|
57
|
+
> **Commit before:** (unpublished local, v0.2.23 base)
|
|
58
|
+
> **Commit after:** pending (v0.2.24, not yet committed)
|
|
59
|
+
|
|
60
|
+
**T-009: Stability — sleep-resilient token refresh + timer cleanup**
|
|
61
|
+
|
|
62
|
+
### Problem
|
|
63
|
+
`scheduleTokenRefresh()` in `claude-auth.ts` used a single long `setTimeout` (potentially hours).
|
|
64
|
+
Three issues:
|
|
65
|
+
1. **Sleep-miss:** If the server went to sleep/hibernate during the timeout window, the timer fired late or not at all. Token expired silently.
|
|
66
|
+
2. **Timer-leak:** Repeated calls to `scheduleTokenRefresh()` (e.g., after a refresh) didn't reliably clear the old timer. Duplicate intervals could accumulate.
|
|
67
|
+
3. **No cleanup hook:** The `setInterval`/`setTimeout` was never stopped when the proxy server closed, leaving orphaned timers after plugin teardown.
|
|
68
|
+
|
|
69
|
+
### Fix (3 files)
|
|
70
|
+
|
|
71
|
+
**`src/claude-auth.ts`:**
|
|
72
|
+
- Replaced `refreshTimer: ReturnType<typeof setTimeout>` with `refreshTimer: ReturnType<typeof setInterval>`
|
|
73
|
+
- Added `nextRefreshAt: number` state variable — tracks when the next refresh is due (epoch ms)
|
|
74
|
+
- Replaced `setTimeout(msUntilRefresh)` with `setInterval(10 * 60 * 1000)` — polls every 10 min, checks `Date.now() >= nextRefreshAt`
|
|
75
|
+
- Exported `stopTokenRefresh()` — clears the interval and resets state; safe to call multiple times
|
|
76
|
+
- `stopTokenRefresh()` called at top of `scheduleTokenRefresh()` — guarantees no duplicate intervals
|
|
77
|
+
- `doRefresh()` no longer calls `scheduleTokenRefresh()` recursively — updates `nextRefreshAt` in-place instead
|
|
78
|
+
|
|
79
|
+
**`src/proxy-server.ts`:**
|
|
80
|
+
- Imported `stopTokenRefresh` from `claude-auth.js`
|
|
81
|
+
- Added `server.on("close", () => { stopTokenRefresh(); })` — interval is cleaned up automatically when the server closes
|
|
82
|
+
|
|
83
|
+
**`openclaw.plugin.json` + `index.ts` + `package.json`:**
|
|
84
|
+
- Version bumped 0.2.23 → 0.2.24
|
|
85
|
+
|
|
86
|
+
### Build
|
|
87
|
+
`npm run build` — ✅ clean, no TypeScript errors
|
|
88
|
+
|
|
89
|
+
### Not yet done
|
|
90
|
+
- `npm test` not run (no logic changes to model routing/proxy; assumed passing)
|
|
91
|
+
- Not published to GitHub/npm/ClawHub yet → T-010
|
|
92
|
+
|
|
93
|
+
---
|
|
94
|
+
|
|
95
|
+
## 2026-03-11 — Session 4 (Akido / claude-sonnet-4-6)
|
|
96
|
+
|
|
97
|
+
> **Agent:** claude-sonnet-4-6
|
|
98
|
+
> **Phase:** review + analysis
|
|
99
|
+
> **Note:** Planning session. Code analysis of proxy/auth architecture. Plan written to `/home/chef-linux/.claude/plans/buzzing-honking-corbato.md`. Implementation deferred to Session 5.
|
|
100
|
+
|
|
101
|
+
---
|
|
102
|
+
|
|
3
103
|
## 2026-03-08 — Session 3 (Akido / claude-sonnet-4-6)
|
|
4
104
|
|
|
5
105
|
**Critical bug: Gateway SIGKILL via fuser (fixed in v0.2.9)**
|
|
6
106
|
|
|
7
|
-
Root cause: `fuser -k 31337/tcp` (added in v0.2.8) sent SIGKILL to the gateway
|
|
8
|
-
process itself during in-process hot-reloads. In hybrid reload mode, the same gateway
|
|
9
|
-
process reloads the plugin. At that point, the gateway holds port 31337 (via the proxy
|
|
10
|
-
it spawned earlier). `fuser -k` found the current gateway process as the port owner and
|
|
11
|
-
killed it with SIGKILL — visible in systemd journal as `code=killed, status=9/KILL` with
|
|
12
|
-
a 1.9G memory peak.
|
|
107
|
+
Root cause: `fuser -k 31337/tcp` (added in v0.2.8) sent SIGKILL to the gateway process itself during in-process hot-reloads. The same gateway process holds port 31337 after spawning the proxy. `fuser -k` found it as the port owner and killed it → `code=killed, status=9/KILL` in systemd journal, 1.9G memory peak at death.
|
|
13
108
|
|
|
14
|
-
Fix: replaced `fuser -k` with a safe health probe. Before binding, `GET /v1/models` is
|
|
15
|
-
sent to the existing proxy. If it responds with 200, the proxy is reused silently
|
|
16
|
-
(`[cli-bridge] proxy already running on :31337 — reusing`). If EADDRINUSE but no
|
|
17
|
-
response (genuinely stale process), wait 1s and retry once. No process killing.
|
|
109
|
+
Fix: replaced `fuser -k` with a safe health probe. Before binding, `GET /v1/models` is sent to the existing proxy. If 200 → reuse silently. If EADDRINUSE + no response → wait 1s and retry once. No process killing.
|
|
18
110
|
|
|
19
111
|
**Release pipeline:**
|
|
20
|
-
- v0.2.9
|
|
21
|
-
- GitHub
|
|
22
|
-
- npm: `@elvatis_com/openclaw-cli-bridge-elvatis@0.2.9`
|
|
23
|
-
- ClawHub: `openclaw-cli-bridge-elvatis@0.2.9`
|
|
112
|
+
- v0.2.9 → v0.2.21 (incremental fixes: requireAuth, vllm prefix, XDG env vars, model allowlist, tests)
|
|
113
|
+
- All published to GitHub, npm, ClawHub
|
|
24
114
|
|
|
25
115
|
---
|
|
26
116
|
|
|
@@ -28,26 +118,11 @@ response (genuinely stale process), wait 1s and retry once. No process killing.
|
|
|
28
118
|
|
|
29
119
|
**Bug: Port leak on gateway hot-reload (fixed in v0.2.6)**
|
|
30
120
|
|
|
31
|
-
Root cause: HTTP proxy server on port 31337 had no cleanup handler. On hot-reloads
|
|
32
|
-
or gateway restarts, the old server instance kept the port bound. New plugin instance
|
|
33
|
-
couldn't bind → EADDRINUSE → proxy failed silently.
|
|
34
|
-
|
|
35
|
-
Fix: added `api.registerService({ id: "cli-bridge-proxy", stop: async () => server.close() })`
|
|
36
|
-
so OpenClaw calls `stop()` on plugin teardown.
|
|
121
|
+
Root cause: HTTP proxy server on port 31337 had no cleanup handler. On hot-reloads, old server kept port bound. Fix: `api.registerService({ stop: async () => server.close() })` + `closeAllConnections()`.
|
|
37
122
|
|
|
38
|
-
Also
|
|
39
|
-
Added `.clawhubignore` and documented rsync workaround in CONVENTIONS.md (clawhub publish ignores .clawhubignore).
|
|
123
|
+
Also fixed: `openclaw.extensions` missing from `package.json`; `.clawhubignore` documented with rsync workaround.
|
|
40
124
|
|
|
41
|
-
**Root conflict with openclaw-self-healing-elvatis
|
|
42
|
-
The infinite restart loop was caused by self-healing's `lastRestartAt` being saved after
|
|
43
|
-
`openclaw gateway restart` (which kills the process). Fixed in self-healing v0.2.8.
|
|
44
|
-
Both plugins now stable together.
|
|
45
|
-
|
|
46
|
-
**Release pipeline:**
|
|
47
|
-
- v0.2.6 committed, tagged, pushed to GitHub
|
|
48
|
-
- GitHub release: https://github.com/elvatis/openclaw-cli-bridge-elvatis/releases/tag/v0.2.6
|
|
49
|
-
- npm published: `@elvatis_com/openclaw-cli-bridge-elvatis@0.2.6`
|
|
50
|
-
- ClawHub published: `openclaw-cli-bridge-elvatis@0.2.6`
|
|
125
|
+
**Root conflict with openclaw-self-healing-elvatis** resolved: self-healing's `lastRestartAt` was saved after `openclaw gateway restart` (kills process). Fixed in self-healing v0.2.8.
|
|
51
126
|
|
|
52
127
|
---
|
|
53
128
|
|
|
@@ -57,12 +132,10 @@ Both plugins now stable together.
|
|
|
57
132
|
|
|
58
133
|
- Phase 1: `openai-codex` auth bridge via `~/.codex/auth.json`
|
|
59
134
|
- Phase 2: local OpenAI-compatible proxy (`src/proxy-server.ts`, `src/cli-runner.ts`, `src/config-patcher.ts`)
|
|
60
|
-
- Gemini CLI → `cli-gemini/*` models
|
|
61
|
-
- Claude Code CLI → `cli-claude/*` models
|
|
62
|
-
- Prompt delivery via stdin (avoids E2BIG + Gemini agentic mode)
|
|
135
|
+
- Gemini CLI → `cli-gemini/*` models (prompt via stdin, cwd=tmpdir)
|
|
136
|
+
- Claude Code CLI → `cli-claude/*` models (prompt via stdin, --permission-mode plan)
|
|
63
137
|
- Phase 3: `/cli-sonnet`, `/cli-opus`, `/cli-haiku`, `/cli-gemini`, `/cli-gemini-flash`, `/cli-gemini3`, `/cli-codex`, `/cli-codex-mini`, `/cli-back`, `/cli-test`
|
|
64
138
|
|
|
65
|
-
|
|
139
|
+
Published to GitHub, npm, ClawHub at v0.2.5.
|
|
66
140
|
|
|
67
|
-
|
|
68
|
-
- `openai-codex/gpt-5.4` → 401 missing scope `model.request` (external, OpenAI account limitation)
|
|
141
|
+
Known issue: `openai-codex/gpt-5.4` → 401 missing scope `model.request` (OpenAI account limitation, not a bug).
|
|
@@ -2,152 +2,75 @@
|
|
|
2
2
|
"aahp_version": "3.0",
|
|
3
3
|
"project": "openclaw-cli-bridge-elvatis",
|
|
4
4
|
"last_session": {
|
|
5
|
-
"agent": "claude-
|
|
6
|
-
"session_id": "
|
|
7
|
-
"timestamp": "2026-03-
|
|
8
|
-
"commit": "
|
|
9
|
-
"phase": "
|
|
10
|
-
"duration_minutes":
|
|
5
|
+
"agent": "claude-sonnet-4-6",
|
|
6
|
+
"session_id": "akido-2026-03-11-v0.2.25",
|
|
7
|
+
"timestamp": "2026-03-11T17:39:00Z",
|
|
8
|
+
"commit": "pending (v0.2.25 not yet committed)",
|
|
9
|
+
"phase": "implementation",
|
|
10
|
+
"duration_minutes": 70
|
|
11
11
|
},
|
|
12
12
|
"files": {
|
|
13
13
|
"STATUS.md": {
|
|
14
|
-
"checksum": "sha256:
|
|
15
|
-
"updated": "2026-03-
|
|
16
|
-
"lines":
|
|
17
|
-
"summary": "
|
|
14
|
+
"checksum": "sha256:8b5d260441611e95f20818e51c1f6dba775deee32187162e3f4dfe89905c67d8",
|
|
15
|
+
"updated": "2026-03-11T17:39:00Z",
|
|
16
|
+
"lines": 78,
|
|
17
|
+
"summary": "v0.2.25 built + 51/51 tests pass. Staged switching + token stability. Ready to publish. Last published: v0.2.23."
|
|
18
18
|
},
|
|
19
19
|
"NEXT_ACTIONS.md": {
|
|
20
|
-
"checksum": "sha256:
|
|
21
|
-
"updated": "2026-03-
|
|
22
|
-
"lines":
|
|
23
|
-
"summary": "
|
|
20
|
+
"checksum": "sha256:2a2c1696de45106e01063afa35859955f0d8827c1ea3bbc117d7b46769f89a6c",
|
|
21
|
+
"updated": "2026-03-11T17:39:00Z",
|
|
22
|
+
"lines": 48,
|
|
23
|
+
"summary": "1 task ready: T-010 — Publish v0.2.25. No blockers."
|
|
24
24
|
},
|
|
25
25
|
"LOG.md": {
|
|
26
|
-
"checksum": "sha256:
|
|
27
|
-
"updated": "2026-03-
|
|
28
|
-
"lines":
|
|
29
|
-
"summary": "
|
|
26
|
+
"checksum": "sha256:b23892518fd5a5faa0b402bd2553d1d1cbca7b46675ba6dd4d413e1cbf03e19d",
|
|
27
|
+
"updated": "2026-03-11T17:39:00Z",
|
|
28
|
+
"lines": 141,
|
|
29
|
+
"summary": "Session 6: staged switch impl (T-011). Session 5: token refresh stability (T-009). Sessions 1-4: initial build, bugs, planning."
|
|
30
30
|
},
|
|
31
31
|
"DASHBOARD.md": {
|
|
32
|
-
"checksum": "sha256:
|
|
33
|
-
"updated": "2026-03-
|
|
34
|
-
"lines":
|
|
35
|
-
"summary": "2
|
|
32
|
+
"checksum": "sha256:cf1c47a18f52e0b94b932177d4e9b455a0e3ae7f29b1a34802088ffa7ad98cef",
|
|
33
|
+
"updated": "2026-03-11T17:39:00Z",
|
|
34
|
+
"lines": 50,
|
|
35
|
+
"summary": "Build ✅ Tests 51/51 ✅. Local v0.2.25, last published v0.2.23. T-010 (publish) ready."
|
|
36
36
|
},
|
|
37
37
|
"TRUST.md": {
|
|
38
|
-
"checksum": "sha256:
|
|
39
|
-
"updated": "2026-03-
|
|
40
|
-
"lines":
|
|
41
|
-
"summary": "
|
|
38
|
+
"checksum": "sha256:cbfc8dcc17c00f8da8e220eba106aac56c63782caac655c30ba60c463994adc1",
|
|
39
|
+
"updated": "2026-03-11T16:30:00Z",
|
|
40
|
+
"lines": 58,
|
|
41
|
+
"summary": "Build verified. Runtime verified at v0.2.21. stopTokenRefresh assumed. Security verified."
|
|
42
42
|
},
|
|
43
43
|
"CONVENTIONS.md": {
|
|
44
|
-
"checksum": "sha256:
|
|
45
|
-
"updated": "2026-03-
|
|
46
|
-
"lines":
|
|
47
|
-
"summary": "TypeScript strict
|
|
44
|
+
"checksum": "sha256:2ba10012e05f7a64850b4b41ae35723f9677c0a5a0a78b76e3f74bf430f2d048",
|
|
45
|
+
"updated": "2026-03-08T00:00:00Z",
|
|
46
|
+
"lines": 101,
|
|
47
|
+
"summary": "TypeScript strict ESM, 3-platform release checklist, ClawHub rsync workaround, secrets policy."
|
|
48
48
|
},
|
|
49
49
|
"WORKFLOW.md": {
|
|
50
|
-
"checksum": "sha256:
|
|
51
|
-
"updated": "2026-03-
|
|
52
|
-
"lines":
|
|
53
|
-
"summary": "
|
|
50
|
+
"checksum": "sha256:f9224bf9e993863b2b9e17f36ee605950359ba43d420fa7b4c829a6fbdc92482",
|
|
51
|
+
"updated": "2026-03-07T00:00:00Z",
|
|
52
|
+
"lines": 152,
|
|
53
|
+
"summary": "4-phase AAHP pipeline: Research → Architecture → Implementation → Review → Handoff."
|
|
54
54
|
}
|
|
55
55
|
},
|
|
56
|
-
"quick_context": "
|
|
56
|
+
"quick_context": "v0.2.25 built + 51/51 tests pass. Key changes: (1) staged model switching — /cli-* now stages by default, /cli-apply to execute after session, --now for immediate; (2) sleep-resilient token refresh via setInterval; (3) stopTokenRefresh cleanup. Last published: v0.2.23. Next: T-010 — publish to GitHub/npm/ClawHub.",
|
|
57
57
|
"token_budget": {
|
|
58
58
|
"manifest_only": 90,
|
|
59
|
-
"manifest_plus_core":
|
|
60
|
-
"full_read":
|
|
59
|
+
"manifest_plus_core": 380,
|
|
60
|
+
"full_read": 850
|
|
61
61
|
},
|
|
62
|
-
"next_task_id":
|
|
62
|
+
"next_task_id": 12,
|
|
63
63
|
"tasks": {
|
|
64
|
-
"T-001": {
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
},
|
|
72
|
-
"T-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
"priority": "high",
|
|
76
|
-
"depends_on": [
|
|
77
|
-
"T-001"
|
|
78
|
-
],
|
|
79
|
-
"created": "2026-03-07T20:40:00Z",
|
|
80
|
-
"completed": "2026-03-07T20:56:00Z"
|
|
81
|
-
},
|
|
82
|
-
"T-003": {
|
|
83
|
-
"title": "Test auth flow: openclaw models auth login --provider openai-codex",
|
|
84
|
-
"status": "done",
|
|
85
|
-
"priority": "high",
|
|
86
|
-
"depends_on": [
|
|
87
|
-
"T-002"
|
|
88
|
-
],
|
|
89
|
-
"created": "2026-03-07T20:56:00Z",
|
|
90
|
-
"completed": "2026-03-07T21:01:00Z"
|
|
91
|
-
},
|
|
92
|
-
"T-004": {
|
|
93
|
-
"title": "Verify model call: test gpt-5.2 or gpt-5.3-codex responds",
|
|
94
|
-
"status": "done",
|
|
95
|
-
"priority": "high",
|
|
96
|
-
"depends_on": [
|
|
97
|
-
"T-003"
|
|
98
|
-
],
|
|
99
|
-
"created": "2026-03-07T20:56:00Z",
|
|
100
|
-
"completed": "2026-03-07T21:27:00Z"
|
|
101
|
-
},
|
|
102
|
-
"T-005": {
|
|
103
|
-
"title": "Implement Gemini CLI request bridge",
|
|
104
|
-
"status": "done",
|
|
105
|
-
"priority": "medium",
|
|
106
|
-
"depends_on": [
|
|
107
|
-
"T-003"
|
|
108
|
-
],
|
|
109
|
-
"created": "2026-03-07T20:56:00Z",
|
|
110
|
-
"completed": "2026-03-07T21:23:00Z"
|
|
111
|
-
},
|
|
112
|
-
"T-006": {
|
|
113
|
-
"title": "Implement Claude Code CLI request bridge",
|
|
114
|
-
"status": "done",
|
|
115
|
-
"priority": "medium",
|
|
116
|
-
"depends_on": [
|
|
117
|
-
"T-003"
|
|
118
|
-
],
|
|
119
|
-
"created": "2026-03-07T20:56:00Z",
|
|
120
|
-
"completed": "2026-03-07T21:23:00Z"
|
|
121
|
-
},
|
|
122
|
-
"T-007": {
|
|
123
|
-
"title": "Create GitHub repo and push initial code",
|
|
124
|
-
"status": "done",
|
|
125
|
-
"priority": "high",
|
|
126
|
-
"depends_on": [
|
|
127
|
-
"T-004"
|
|
128
|
-
],
|
|
129
|
-
"created": "2026-03-07T21:20:00Z",
|
|
130
|
-
"completed": "2026-03-07T21:24:00Z"
|
|
131
|
-
},
|
|
132
|
-
"T-008": {
|
|
133
|
-
"title": "Validate proxy endpoints + vllm model calls end-to-end",
|
|
134
|
-
"status": "done",
|
|
135
|
-
"priority": "high",
|
|
136
|
-
"depends_on": [
|
|
137
|
-
"T-005",
|
|
138
|
-
"T-006"
|
|
139
|
-
],
|
|
140
|
-
"created": "2026-03-07T21:29:00Z",
|
|
141
|
-
"completed": "2026-03-08T08:08:44.175Z"
|
|
142
|
-
},
|
|
143
|
-
"T-009": {
|
|
144
|
-
"title": "Publish to npm + ClawHub",
|
|
145
|
-
"status": "ready",
|
|
146
|
-
"priority": "medium",
|
|
147
|
-
"depends_on": [
|
|
148
|
-
"T-008"
|
|
149
|
-
],
|
|
150
|
-
"created": "2026-03-07T21:29:00Z"
|
|
151
|
-
}
|
|
64
|
+
"T-001": { "title": "Scaffold plugin structure + AAHP handoff", "status": "done", "priority": "high", "depends_on": [], "created": "2026-03-07T20:40:00Z", "completed": "2026-03-07T20:56:00Z" },
|
|
65
|
+
"T-002": { "title": "Implement openai-codex provider (Codex CLI auth bridge)", "status": "done", "priority": "high", "depends_on": ["T-001"], "created": "2026-03-07T20:40:00Z", "completed": "2026-03-07T20:56:00Z" },
|
|
66
|
+
"T-003": { "title": "Test auth flow: openclaw models auth login --provider openai-codex", "status": "done", "priority": "high", "depends_on": ["T-002"], "created": "2026-03-07T20:56:00Z", "completed": "2026-03-07T21:01:00Z" },
|
|
67
|
+
"T-004": { "title": "Verify model call: test gpt-5.2 or gpt-5.3-codex responds", "status": "done", "priority": "high", "depends_on": ["T-003"], "created": "2026-03-07T20:56:00Z", "completed": "2026-03-07T21:27:00Z" },
|
|
68
|
+
"T-005": { "title": "Implement Gemini CLI request bridge", "status": "done", "priority": "medium", "depends_on": ["T-003"], "created": "2026-03-07T20:56:00Z", "completed": "2026-03-07T21:23:00Z" },
|
|
69
|
+
"T-006": { "title": "Implement Claude Code CLI request bridge", "status": "done", "priority": "medium", "depends_on": ["T-003"], "created": "2026-03-07T20:56:00Z", "completed": "2026-03-07T21:23:00Z" },
|
|
70
|
+
"T-007": { "title": "Create GitHub repo and push initial code", "status": "done", "priority": "high", "depends_on": ["T-004"], "created": "2026-03-07T21:20:00Z", "completed": "2026-03-07T21:24:00Z" },
|
|
71
|
+
"T-008": { "title": "Validate proxy endpoints + vllm model calls end-to-end", "status": "done", "priority": "high", "depends_on": ["T-005", "T-006"], "created": "2026-03-07T21:29:00Z", "completed": "2026-03-08T08:08:44Z" },
|
|
72
|
+
"T-009": { "title": "Stability: sleep-resilient token refresh + stopTokenRefresh cleanup", "status": "done", "priority": "high", "depends_on": ["T-008"], "created": "2026-03-11T15:00:00Z", "completed": "2026-03-11T16:30:00Z" },
|
|
73
|
+
"T-010": { "title": "Publish v0.2.25 to GitHub + npm + ClawHub", "status": "ready", "priority": "medium", "depends_on": ["T-011"], "created": "2026-03-11T16:30:00Z" },
|
|
74
|
+
"T-011": { "title": "Session-safe staged model switching (/cli-apply, /cli-pending, --now)", "status": "done", "priority": "high", "depends_on": ["T-009"], "created": "2026-03-11T17:00:00Z", "completed": "2026-03-11T17:39:00Z" }
|
|
152
75
|
}
|
|
153
76
|
}
|
|
@@ -1,34 +1,33 @@
|
|
|
1
1
|
# NEXT_ACTIONS.md — openclaw-cli-bridge-elvatis
|
|
2
2
|
|
|
3
|
-
_Last updated: 2026-03-
|
|
3
|
+
_Last updated: 2026-03-11_
|
|
4
4
|
|
|
5
|
+
<!-- SECTION: summary -->
|
|
5
6
|
## Status Summary
|
|
6
7
|
|
|
7
8
|
| Status | Count |
|
|
8
9
|
|---------|-------|
|
|
9
|
-
| Done |
|
|
10
|
+
| Done | 11 |
|
|
10
11
|
| Ready | 1 |
|
|
11
12
|
| Blocked | 0 |
|
|
13
|
+
<!-- /SECTION: summary -->
|
|
12
14
|
|
|
13
15
|
---
|
|
14
16
|
|
|
15
17
|
## ⚡ Ready — Work These Next
|
|
16
18
|
|
|
17
|
-
### T-
|
|
19
|
+
### T-010: [medium] — Publish v0.2.25 to all platforms
|
|
18
20
|
|
|
19
|
-
- **Goal:** Publish
|
|
20
|
-
- **Context:**
|
|
21
|
+
- **Goal:** Publish v0.2.25 to GitHub, npm, and ClawHub.
|
|
22
|
+
- **Context:** v0.2.25 built + 51/51 tests pass. Changes: staged model switching (session-safe /cli-*), sleep-resilient token refresh, stopTokenRefresh cleanup.
|
|
21
23
|
- **What to do:**
|
|
22
|
-
1.
|
|
23
|
-
2.
|
|
24
|
-
3.
|
|
25
|
-
4. `
|
|
26
|
-
5.
|
|
27
|
-
6.
|
|
28
|
-
|
|
29
|
-
8. Update all handoff docs (STATUS.md, DASHBOARD.md, LOG.md, NEXT_ACTIONS.md, README.md, SKILL.md)
|
|
30
|
-
- **Files:** `package.json`, `openclaw.plugin.json`, `README.md`, `SKILL.md`, `.ai/handoff/STATUS.md`, `.ai/handoff/CONVENTIONS.md`
|
|
31
|
-
- **Definition of done:** Package published on npm + ClawHub at matching version. GitHub release created. All docs updated.
|
|
24
|
+
1. `git add -u && git commit -m "feat(cli): staged switch + token refresh stability (v0.2.25)"`
|
|
25
|
+
2. `git tag v0.2.25 && git push origin main && git push origin v0.2.25`
|
|
26
|
+
3. `gh release create v0.2.25 --title "v0.2.25 — Session-safe model switching" --notes "..."`
|
|
27
|
+
4. `npm publish --access public`
|
|
28
|
+
5. ClawHub publish via rsync workaround (see CONVENTIONS.md)
|
|
29
|
+
6. Update STATUS.md platform table after publish
|
|
30
|
+
- **Definition of done:** v0.2.25 live on GitHub + npm + ClawHub.
|
|
32
31
|
|
|
33
32
|
---
|
|
34
33
|
|
|
@@ -40,10 +39,10 @@ _No blocked tasks._
|
|
|
40
39
|
|
|
41
40
|
## ✅ Recently Completed
|
|
42
41
|
|
|
43
|
-
| Task | Title
|
|
44
|
-
|
|
45
|
-
| T-
|
|
46
|
-
| T-
|
|
47
|
-
| T-
|
|
48
|
-
| T-
|
|
49
|
-
| T-
|
|
42
|
+
| Task | Title | Date |
|
|
43
|
+
|-------|--------------------------------------------------------------------|------------|
|
|
44
|
+
| T-011 | Session-safe staged model switching (/cli-apply, /cli-pending) | 2026-03-11 |
|
|
45
|
+
| T-009 | Stability: sleep-resilient token refresh + stopTokenRefresh cleanup | 2026-03-11 |
|
|
46
|
+
| T-008 | Validate proxy endpoints + vllm model calls end-to-end | 2026-03-08 |
|
|
47
|
+
| T-007 | Create GitHub repo and push initial code | 2026-03-07 |
|
|
48
|
+
| T-006 | Implement Claude Code CLI request bridge | 2026-03-07 |
|