fix(ui): external adapter selection, config field placement, and transcript parser freshness

- Fix external adapters (hermes, droid) not auto-selected when
  navigating with ?adapterType= param — was using a stale
  module-level Set built before async adapter registration
- Move SchemaConfigFields to render after thinking effort (same
  visual area as Claude's chrome toggle) instead of bottom of
  config section
- Extract SelectField into its own component to fix React hooks
  order violation when schema fields change between renders
- Add onAdapterChange() subscription in registry.ts so
  registerUIAdapter() notifies components when dynamic parsers
  load, fixing stale parser for old runs
- Add parserTick to both RunTranscriptView and
  useLiveRunTranscripts to force recomputation on parser change
This commit is contained in:
HenkDz 2026-04-01 21:56:19 +01:00
parent 69a1593ff8
commit 47f3cdc1bb
13 changed files with 473 additions and 55 deletions

View file

@ -26,6 +26,18 @@ export function listKnownAdapterTypes(): string[] {
* Unknown types (external adapters) are always considered enabled.
*/
export function isEnabledAdapterType(type: string): boolean {
// Known external adapter — always valid
if (listUIAdapters().some((a) => a.type === type)) return true;
return !getAdapterDisplay(type).comingSoon;
}
/**
* Check whether an adapter type is a valid choice for new agent creation.
* Includes all registered UI adapters (built-in + external) and
* any non-"coming soon" adapter from the display registry.
*/
export function isValidAdapterType(type: string): boolean {
if (listUIAdapters().some((a) => a.type === type)) return true;
return !getAdapterDisplay(type).comingSoon;
}