[PR #321] [CLOSED] feat(provider-pool): add deterministic priority-based provider selection #338

Closed
opened 2026-02-27 07:19:00 +03:00 by kerem · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/justlovemaki/AIClient-2-API/pull/321
Author: @Asoubra12
Created: 2/11/2026
Status: Closed

Base: mainHead: pr/provider-priority-filter-clean


📝 Commits (10+)

  • b662b82 feat(provider-pool): add deterministic priority-based provider selection
  • 6fc6041 feat(risk+ui): strict lifecycle admission, enterprise SSO PKCE, BitBrowser isolated login
  • 45de3b3 fix(ui): avoid BusyBox ps -p by reading /proc for process cpu
  • 3985ab7 feat(kiro): add AWS import wizard node setup and attach flow
  • e5a5635 feat(isolated-browser): add local chromium provider for Xpra/noVNC/Kasm workflows
  • 5fd9dc7 Fix local Chromium proxy handling and isolated browser badge label
  • 961f348 kiro: resolve accountId and persist machineId on import
  • 5eba12c docker: add chromium + noVNC browser GUI stack
  • 1624ea0 docker: expose only noVNC port (6080)
  • 0f0f3c8 docker: remove VNC port from EXPOSE

📊 Changes

51 files changed (+10571 additions, -341 deletions)

View changed files

📝 .gitignore (+17 -0)
📝 Dockerfile (+29 -10)
📝 README.md (+116 -1)
📝 configs/config.json.example (+14 -1)
📝 configs/provider_pools.json.example (+17 -1)
📝 docker/docker-compose.build.yml (+9 -2)
📝 docker/docker-compose.yml (+6 -0)
docker/entrypoint.sh (+56 -0)
📝 src/auth/kiro-oauth.js (+843 -55)
📝 src/core/config-manager.js (+149 -2)
📝 src/providers/adapter.js (+61 -12)
📝 src/providers/claude/claude-kiro.js (+208 -101)
📝 src/providers/provider-pool-manager.js (+928 -16)
src/risk/constants.js (+82 -0)
src/risk/error-normalizer.js (+177 -0)
src/risk/index.js (+13 -0)
src/risk/lifecycle-store.js (+228 -0)
src/risk/provider-account-policy.js (+202 -0)
src/risk/risk-manager.js (+635 -0)
src/risk/risk-policy-engine.js (+92 -0)

...and 31 more files

📄 Description

Summary

Add deterministic provider selection priority inside each provider pool.

What This PR Changes

  • Adds optional per-node priority field in provider_pools.json.
  • Selection behavior:
    • Lower number = higher priority.
    • Selector first filters to the lowest-priority healthy tier.
    • Existing LRU/score balancing remains unchanged within that same tier.
  • Adds default priority normalization (100) for omitted/invalid values.
  • Documents the feature in README and provider pool example config.

Why

Current score/LRU rotation is great for balancing but cannot guarantee strict primary->backup behavior. This PR adds deterministic tiering without changing token/OAuth mechanisms.

Validation

  • Added unit tests in tests/provider-pool-priority.test.js:
    • lower priority wins before score/LRU
    • disabled primary falls back to backup tier
    • string/invalid priority handling
    • score/LRU still applies inside same priority tier

🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/justlovemaki/AIClient-2-API/pull/321 **Author:** [@Asoubra12](https://github.com/Asoubra12) **Created:** 2/11/2026 **Status:** ❌ Closed **Base:** `main` ← **Head:** `pr/provider-priority-filter-clean` --- ### 📝 Commits (10+) - [`b662b82`](https://github.com/justlovemaki/AIClient-2-API/commit/b662b82a42f64d87bd3b76d2a468c44a8d45c647) feat(provider-pool): add deterministic priority-based provider selection - [`6fc6041`](https://github.com/justlovemaki/AIClient-2-API/commit/6fc6041be98b0cccabadfc7c93d5d528c42a632d) feat(risk+ui): strict lifecycle admission, enterprise SSO PKCE, BitBrowser isolated login - [`45de3b3`](https://github.com/justlovemaki/AIClient-2-API/commit/45de3b3fd3d1869a0149264665af112e208c6594) fix(ui): avoid BusyBox ps -p by reading /proc for process cpu - [`3985ab7`](https://github.com/justlovemaki/AIClient-2-API/commit/3985ab70c8857dd60b60c3e876a1da8398dc45a3) feat(kiro): add AWS import wizard node setup and attach flow - [`e5a5635`](https://github.com/justlovemaki/AIClient-2-API/commit/e5a5635d187707e6453dad5f4b4f570749bf89fc) feat(isolated-browser): add local chromium provider for Xpra/noVNC/Kasm workflows - [`5fd9dc7`](https://github.com/justlovemaki/AIClient-2-API/commit/5fd9dc723570ff096fe8cb555fb0d1e3e3d2bf1f) Fix local Chromium proxy handling and isolated browser badge label - [`961f348`](https://github.com/justlovemaki/AIClient-2-API/commit/961f348d4aa21c7046d13c2ecf0109d0cb7e350a) kiro: resolve accountId and persist machineId on import - [`5eba12c`](https://github.com/justlovemaki/AIClient-2-API/commit/5eba12c4d0f9bc32083db7f35c91b43e22ecab64) docker: add chromium + noVNC browser GUI stack - [`1624ea0`](https://github.com/justlovemaki/AIClient-2-API/commit/1624ea08faac895b6e96b93f86f13921f66de2a0) docker: expose only noVNC port (6080) - [`0f0f3c8`](https://github.com/justlovemaki/AIClient-2-API/commit/0f0f3c8a1fead26237e815f60df310c0454a2913) docker: remove VNC port from EXPOSE ### 📊 Changes **51 files changed** (+10571 additions, -341 deletions) <details> <summary>View changed files</summary> 📝 `.gitignore` (+17 -0) 📝 `Dockerfile` (+29 -10) 📝 `README.md` (+116 -1) 📝 `configs/config.json.example` (+14 -1) 📝 `configs/provider_pools.json.example` (+17 -1) 📝 `docker/docker-compose.build.yml` (+9 -2) 📝 `docker/docker-compose.yml` (+6 -0) ➕ `docker/entrypoint.sh` (+56 -0) 📝 `src/auth/kiro-oauth.js` (+843 -55) 📝 `src/core/config-manager.js` (+149 -2) 📝 `src/providers/adapter.js` (+61 -12) 📝 `src/providers/claude/claude-kiro.js` (+208 -101) 📝 `src/providers/provider-pool-manager.js` (+928 -16) ➕ `src/risk/constants.js` (+82 -0) ➕ `src/risk/error-normalizer.js` (+177 -0) ➕ `src/risk/index.js` (+13 -0) ➕ `src/risk/lifecycle-store.js` (+228 -0) ➕ `src/risk/provider-account-policy.js` (+202 -0) ➕ `src/risk/risk-manager.js` (+635 -0) ➕ `src/risk/risk-policy-engine.js` (+92 -0) _...and 31 more files_ </details> ### 📄 Description ## Summary Add deterministic provider selection priority inside each provider pool. ## What This PR Changes - Adds optional per-node `priority` field in `provider_pools.json`. - Selection behavior: - Lower number = higher priority. - Selector first filters to the lowest-priority healthy tier. - Existing LRU/score balancing remains unchanged within that same tier. - Adds default priority normalization (`100`) for omitted/invalid values. - Documents the feature in README and provider pool example config. ## Why Current score/LRU rotation is great for balancing but cannot guarantee strict primary->backup behavior. This PR adds deterministic tiering without changing token/OAuth mechanisms. ## Validation - Added unit tests in `tests/provider-pool-priority.test.js`: - lower priority wins before score/LRU - disabled primary falls back to backup tier - string/invalid priority handling - score/LRU still applies inside same priority tier --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
kerem 2026-02-27 07:19:00 +03:00
Sign in to join this conversation.
No labels
pull-request
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/AIClient-2-API-justlovemaki#338
No description provided.