hermes-hub/src/antigravity_provider/router
Hermes Team afaf600f56 feat(nvidia): определение моделей, доступных конкретному аккаунту
Каталог NVIDIA публичный: GET /v1/models отдаётся вообще без ключа и
возвращает одни и те же 83 модели всем. Проверено запросом. Полей о
доступности в нём нет — только id, object, created, owned_by. Значит
узнать из каталога, чем может пользоваться аккаунт, невозможно.

Единственный достоверный способ — спросить у самой модели. Недоступная
отвечает «404 Function ... Not found for account <id>» до генерации, то
есть её проверка ничего не стоит; доступная расходует один токен при
max_tokens=1.

Добавлены модуль model_entitlements, действие probe_account_models и
кнопка «Определить доступные модели» в карточке аккаунта для NVIDIA и
OpenRouter. Запуск только по явному нажатию с подтверждением: опрос
тратит вызовы и упирается в ограничения частоты. Результат сохраняется.

Модели раскладываются на три группы, а не на две: доступные, не выданные
аккаунту и НЕ ОПРЕДЕЛЁННЫЕ с причиной. Отвергнутый ключ (401/403),
превышение частоты (429) и сетевой сбой попадают в третью группу —
выдавать их за «недоступно» нельзя. Проверено: без ключа все модели
получают «ключ не задан», с неверным ключом — «ключ отвергнут (HTTP 403)».

610 passed, ruff clean, релизный гейт 10/10.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-01 02:45:01 +07:00
..
adapters fix(providers): ключ не доходил до адаптера; счётчик аккаунтов расходился 2026-09-01 01:46:46 +07:00
scheduler feat(hub): product stabilization, native windows ux v3, provider icons, and architecture roadmap 2026-08-20 11:01:52 +07:00
supervisor feat(state): harden snapshots quotas and routing 2026-08-21 00:03:50 +07:00
web feat(nvidia): определение моделей, доступных конкретному аккаунту 2026-09-01 02:45:01 +07:00
__init__.py feat(dashboard): expose telemetry breakdown, provider call_share, host metrics, and active leases 2026-08-21 17:44:56 +07:00
account_identity.py feat(router): integrate local LLM provider (llama.cpp/vLLM/Ollama) with zero quotas (A25) 2026-08-24 14:00:25 +07:00
account_probe_service.py fix(a54): validate accounts synchronously and manage Windows runtime lifecycle 2026-08-31 20:54:19 +07:00
action_handler.py feat(nvidia): определение моделей, доступных конкретному аккаунту 2026-09-01 02:45:01 +07:00
auto_assigner.py merge: A51 — подключённый аккаунт реально попадает в цепочку роли 2026-08-31 19:13:02 +07:00
claude_oauth.py merge: complete antigravity state layer 2026-08-21 00:10:56 +07:00
cli_commands.py feat(config): A41 чистая конфигурация при первой установке, безопасность учетных данных и сброс 2026-08-31 02:27:42 +07:00
codex_oauth.py fix(windows): чёрные окна консоли выскакивали каждую минуту 2026-08-31 19:39:12 +07:00
connection_preflight.py fix: agy не находился в Linux; Ollama Cloud нельзя было подключить по ключу 2026-09-01 02:07:11 +07:00
dual_coder_pipeline.py feat(a52): local models replacement, local-supervisor, and dual coder with cloud judge 2026-08-31 19:12:07 +07:00
event_bus.py feat(state): close contract gaps v1.1, canonical event publishers, and view model enrichment 2026-08-21 08:20:56 +07:00
exceptions.py fix: close P0 release blockers 2026-08-20 16:25:11 +07:00
grok_oauth.py fix(grok): опрос device-flow не различал отказ, просрочку и ожидание 2026-08-24 15:11:54 +07:00
health_tracker.py feat(providers): A42 подключение OpenRouter, NVIDIA, Ollama, исправление discovery и ложной квоты Codex 2026-08-31 11:36:55 +07:00
host_metrics.py fix(dashboard): unify LeaseManager, warm up initial CPU measurement, add live network speed, and clarify YAML comment support 2026-08-21 22:18:59 +07:00
launcher_bootstrap.py fix(windows): чёрные окна консоли выскакивали каждую минуту 2026-08-31 19:39:12 +07:00
local_discovery.py fix(roles): 19 агентов вместо 13, шесть пар неотличимы по названию; поиск локальных серверов 2026-08-30 20:46:25 +07:00
local_supervisor.py feat(a52): local models replacement, local-supervisor, and dual coder with cloud judge 2026-08-31 19:12:07 +07:00
model_discovery.py Merge antigravity/quotas-models-migration (A9) 2026-08-23 12:57:49 +07:00
model_discovery_service.py fix(a55): account connection fixes - antigravity windows/linux, ollama server discovery, version display, full settings 2026-08-31 23:39:53 +07:00
model_entitlements.py feat(nvidia): определение моделей, доступных конкретному аккаунту 2026-09-01 02:45:01 +07:00
model_registry.py feat(pipeline): A35 and A36 canonical Antigravity workflow pipeline with role resolution and loops 2026-08-30 15:34:07 +00:00
preflight_service.py feat(a31): preflight dependency agent, workflow run state recovery, local concurrency and context guard, PII email masking, and cost-controller token honesty 2026-08-26 09:27:36 +07:00
profile_manager.py fix(a55): account connection fixes - antigravity windows/linux, ollama server discovery, version display, full settings 2026-08-31 23:39:53 +07:00
profile_oauth.py fix(web): кнопка копирования молча не работала по сети, а возврат вёл в тупик 2026-08-25 11:06:08 +07:00
quota_collector.py fix(accounts): чужая почта после смены аккаунта, отказ NVIDIA при верном ключе, отмена выхода 2026-08-31 23:06:37 +07:00
role_registry.py feat(a52): local models replacement, local-supervisor, and dual coder with cloud judge 2026-08-31 19:12:07 +07:00
router_config.py feat(config): A41 чистая конфигурация при первой установке, безопасность учетных данных и сброс 2026-08-31 02:27:42 +07:00
router_engine.py feat(pipeline): A35 and A36 canonical Antigravity workflow pipeline with role resolution and loops 2026-08-30 15:34:07 +00:00
scheduler.py feat(state): close contract gaps v1.1, canonical event publishers, and view model enrichment 2026-08-21 08:20:56 +07:00
security_guard.py fix(security): команда с тильдой обходила защиту каталога учётных данных 2026-08-30 22:51:17 +07:00
session_affinity.py feat(dashboard): expose telemetry breakdown, provider call_share, host metrics, and active leases 2026-08-21 17:44:56 +07:00
settings_service.py fix(hermes): «конфигурация не найдена» при работающем Hermes 2026-08-31 23:22:08 +07:00
skills_service.py feat(skills): A49 subagents layout, skills tab, SkillDoctor, and Obsidian memory integration 2026-08-31 18:19:01 +07:00
state_store.py fix(a55): account connection fixes - antigravity windows/linux, ollama server discovery, version display, full settings 2026-08-31 23:39:53 +07:00
telemetry_service.py feat(a51): hub controls hermes - full real routing, bypass telemetry and truthful status 2026-08-31 18:53:55 +07:00
unified_health.py fix(a54): validate accounts synchronously and manage Windows runtime lifecycle 2026-08-31 20:54:19 +07:00
workflow_service.py feat(skills): A49 subagents layout, skills tab, SkillDoctor, and Obsidian memory integration 2026-08-31 18:19:01 +07:00