Add optional Nanobot plugin controls (#4396)
* feat: add optional nanobot features * test: update azure install hint expectation * fix: validate optional feature extras maintainer edit: verify requested dependency extras before treating optional features as installed, propagate restart state from feature enablement, and align docs with the new plugins enable command. * fix: bound optional feature installs maintainer edit: make optional feature installs time out as a normal install failure instead of leaving the WebUI or CLI action waiting indefinitely. * feat: slim optional channel dependencies * fix: log optional install commands * fix(webui): gate remote feature installs * docs: clarify webhook plugin example * fix(webui): harden optional feature installs * fix: install optional deps without package fallback * fix(cli): refine plugin feature controls * fix(webui): count enabled nanobot features * fix(webui): allow slow feature install routes * fix(webui): allow disabling websocket channel * fix(plugins): simplify optional feature controls * fix(webui): polish apps catalog states * fix(webui): confirm nanobot support installs * fix(webui): polish nanobot install dialog * fix(webui): suppress empty websocket handshakes * fix(webui): clarify apps plugin summary * fix(webui): localize workspace access copy * fix(plugins): polish optional feature controls (#4691) --------- Co-authored-by: Xubin Ren <52506698+Re-bin@users.noreply.github.com>
This commit is contained in:
@@ -14,7 +14,7 @@ Two modes are supported, selected automatically:
|
||||
falls back to :class:`azure.identity.aio.DefaultAzureCredential` and
|
||||
acquires a bearer token scoped to
|
||||
``https://cognitiveservices.azure.com/.default``. ``azure-identity``
|
||||
is an optional dependency installed via ``pip install nanobot-ai[azure]``.
|
||||
is an optional dependency installed via ``nanobot plugins enable azure``.
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
@@ -55,7 +55,7 @@ class _AzureTokenProvider:
|
||||
except ImportError as exc:
|
||||
raise RuntimeError(
|
||||
"Azure OpenAI AAD authentication requires the 'azure-identity' package. "
|
||||
"Install it with: pip install 'nanobot-ai[azure]'"
|
||||
"Run: nanobot plugins enable azure"
|
||||
) from exc
|
||||
|
||||
self._scope = scope
|
||||
|
||||
@@ -71,7 +71,7 @@ class BedrockProvider(LLMProvider):
|
||||
import boto3
|
||||
except ImportError as exc: # pragma: no cover - exercised only without boto3 installed
|
||||
raise RuntimeError(
|
||||
"AWS Bedrock provider requires boto3. Install it with `pip install boto3`."
|
||||
"AWS Bedrock provider requires boto3. Run `nanobot plugins enable bedrock`."
|
||||
) from exc
|
||||
|
||||
session_kwargs: dict[str, Any] = {}
|
||||
|
||||
Reference in New Issue
Block a user