feat(dashboard): add Plugins page with enable/disable, auth status, install/remove

- New PluginsPage.tsx: full plugin management UI (list, enable/disable,
  install from git, remove, git pull updates, provider picker)
- Backend: dashboard_set_agent_plugin_enabled now also toggles the
  plugin's toolset in platform_toolsets so enabling actually makes
  tools visible in agent sessions
- Backend: /api/dashboard/plugins/hub returns auth_required + auth_command
  per plugin (checks tool registry check_fn)
- Frontend: auth_required shown as Badge + CommandBlock with copy-able
  auth command
- Fix: Select overflow in providers card (min-w-0 grid cells, removed
  truncate/overflow-hidden that clipped dropdown)
- Refactor: _install_plugin_core extracted for non-interactive reuse,
  PluginOperationError for structured error handling
- i18n: en/zh/types updated with all new plugin page strings
This commit is contained in:
Austin Pickett 2026-04-30 17:41:10 -04:00
parent e5dad4ac57
commit e2a4905606
10 changed files with 1521 additions and 189 deletions

View file

@ -46,6 +46,8 @@ import React, { Fragment, useEffect, useState } from "react";
* - `cron:bottom` bottom of /cron page
* - `skills:top` top of /skills page
* - `skills:bottom` bottom of /skills page
* - `plugins:top` top of /plugins page
* - `plugins:bottom` bottom of /plugins page
* - `config:top` top of /config page
* - `config:bottom` bottom of /config page
* - `env:top` top of /env (Keys) page
@ -78,6 +80,8 @@ export const KNOWN_SLOT_NAMES = [
"cron:bottom",
"skills:top",
"skills:bottom",
"plugins:top",
"plugins:bottom",
"config:top",
"config:bottom",
"env:top",