Skip to content

fix: self-contained action + recover stranded glm/qwen engines - #6

Merged
eliahilse merged 3 commits into
mainfrom
fix/action-self-contained
Jul 30, 2026
Merged

fix: self-contained action + recover stranded glm/qwen engines#6
eliahilse merged 3 commits into
mainfrom
fix/action-self-contained

Conversation

@eliahilse

Copy link
Copy Markdown
Owner

Two things:

Action no longer needs npm. @kyora-sh/review has zero runtime dependencies, so the action now runs the CLI source straight from its own checkout (version: bundled, the new default) — uses: eliahilse/kyora/action@<ref> pins the code version naturally, and publishing to npm becomes optional (still available via version: <npm-version> for anyone who wants it). This unblocks CI installs entirely: workflow file + secrets, nothing else.

Recovers the glm + qwen engines. The #5 squash-merge landed before the last two engine commits reached the branch (same stranding as the README in #2), so main was missing them. Cherry-picked: glm (GLM-5.2, Z.ai coding plan via Claude Code) and qwen (qwen3.8-max-preview, Token Plan via Claude Code) — both live-validated earlier. Full panel on main after this: codex, claude, kimi, glm, grok, qwen.

🤖 Generated with Claude Code

https://claude.ai/code/session_01CQy3ZJ5MyUxo4qjZwA93Na

eliahilse and others added 3 commits July 30, 2026 22:12
opencode's Z.ai integration deadlocks on GLM's streamed tool-call
deltas (anomalyco/opencode#6708, #8428), so the engine rides the claude
binary against Z.ai's Anthropic-compatible endpoint instead — same
subscription quota, and the probe/deny execution policy applies. The
key comes from ZAI_API_KEY or opencode's auth store.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CQy3ZJ5MyUxo4qjZwA93Na
…Code

opencode's agentic loop proved unreliable locally regardless of
provider (fresh-leader runs wedge on any tool-triggering prompt), so
qwen rides the claude binary against the Token Plan's Anthropic
endpoint, replacing the unvalidated qwen-code adapter. Key resolves
from QWEN_API_KEY or the config bl config agent writes.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CQy3ZJ5MyUxo4qjZwA93Na
The review CLI has zero runtime dependencies, so the action executes it
straight from its own checkout — uses: @ref pins the version. npm
remains an opt-in via the version input. Also carries the glm and qwen
engines stranded on feat/exec-probes by the #5 squash timing.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CQy3ZJ5MyUxo4qjZwA93Na
@eliahilse
eliahilse merged commit 328606c into main Jul 30, 2026
2 checks passed
eliahilse added a commit that referenced this pull request Jul 30, 2026
Never launch an engine that's out of quota, and spread load across the
subs that still have headroom:

- **Cooldown tracking**: every engine run records its outcome in
`~/.local/state/kyora-review/usage.json`. A run that hits a usage limit
(detected from vendor error signatures on failed runs only — a finding
*about* rate limiting can't false-positive) puts that engine on
cooldown: vendor "try again in N hours/minutes" hints are parsed when
present, otherwise `cooldownMinutes` (default 60). Cooled-down engines
are skipped with a log line; `--ignore-quota` forces them; if the whole
panel is cooling, the run no-ops CI-safe instead of burning attempts.
- **Load rotation**: `--max-engines <n>` / `maxEngines` config runs only
the n least-recently-used healthy engines per review — with a 6-engine
panel and `max-engines: 3`, consecutive PRs rotate through different
subscription triples.
- **`kyora-review usage`** shows per-engine runs, last outcome, and
remaining cooldown; `doctor` annotates cooldowns inline.
- **CI persistence**: the action's cache now carries the state dir
alongside `~/.codex`, so cooldowns survive between workflow runs. Also
fixes the action's auto-detection gap for the new engines: `ZAI_API_KEY`
→ glm, `QWEN_API_KEY` → qwen (and claude-binary install covers both);
dropped the dead qwen-code install.
- 7 new unit tests (26 total).

Stacked on #6 — merge that first and this collapses to the quota
changes.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

https://claude.ai/code/session_01CQy3ZJ5MyUxo4qjZwA93Na

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant