diff --git a/docs/index.html b/docs/index.html index bbb67ea..83cc41e 100755 --- a/docs/index.html +++ b/docs/index.html @@ -5514,6 +5514,49 @@
+
+

πŸŽ›οΈ Universal API Config

+

Configure your LLM providers in one place β€” provider, key, base URL, model, and context cap β€” shared with the individual provider sections below (fully backward-compatible).

+
+
+ + +
+
+ + +
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+
+ + +
+
In-browser mission routing currently uses OpenRouter or Venice (or a connected local agent). Keys for other providers, custom base URLs, and the context cap are stored and used for model discovery and server-side / agent flows.
+ +
+
+

πŸ”‘ API Keys

@@ -7386,6 +7429,7 @@ Correlating findings across agents, identifying patterns, producing actionable i if (page === 'operators' && typeof window.loadOperativesRoster === 'function') setTimeout(window.loadOperativesRoster, 80); if (page === 'evidence' && typeof window.hydrateFindings === 'function') setTimeout(window.hydrateFindings, 60); if (page === 'selfimprove' && typeof window.renderSelfImprove === 'function') setTimeout(window.renderSelfImprove, 60); + if (page === 'settings' && typeof window.uacInit === 'function') setTimeout(window.uacInit, 40); } document.querySelectorAll('.nav-item').forEach(i => i.addEventListener('click', () => navigateTo(i.dataset.page))); @@ -8816,6 +8860,110 @@ o.id === 'coordinator' ? `1. MISSION_STATUS: Progress assessment if (input) input.value = state.settings?.fallbackModel || 'nousresearch/hermes-3-llama-3.1-405b'; } + // ── Universal API Config panel (#90) ──────────────────────────────────────────────── + // One place to set the active provider's key / base URL / model / max-context. Reads and + // writes the SAME state.settings keys the individual provider sections use (${p}Key, + // selectedModel), so it is fully backward-compatible β€” nothing migrates, nothing is lost. + const UAC_DEFAULT_BASE = { + openrouter: 'https://openrouter.ai/api/v1', + venice: 'https://api.venice.ai/api/v1', + openai: 'https://api.openai.com/v1', + anthropic: 'https://api.anthropic.com', + }; + function uacProvider() { return document.getElementById('uacProvider')?.value || 'openrouter'; } + // Model ids come from a provider's /models response (and the user can point Base URL at ANY + // endpoint), so they are untrusted. Build