fix: self-contained action + recover stranded glm/qwen engines - #6
Merged
Conversation
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
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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Two things:
Action no longer needs npm.
@kyora-sh/reviewhas 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 viaversion: <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) andqwen(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