DrylCommandPalette
AI-aware
A full-screen command launcher overlay that unifies navigation, actions and AI intents in a
single keyboard-first entry point. Press Ctrl K anywhere in the app, or use the
buttons below to open each variant.
Basic — static items
Pass a CommandItem[] to Items; the palette filters client-side. Three item types: Navigate, Action, AiIntent.
Category grouping
Set CommandItem.Category to cluster items under named headers, alpha-sorted before uncategorised items. Tab jumps to the next group.
Async SearchProvider
Provide a Func<string, Task<CommandItem[]>> for server-driven search. A non-empty query waits for Debounce (250 ms by default); the first load shows a skeleton, later ones quiet the previous rows.
Host search — fallback and recent items
The palette as one field for a whole app: the provider returns the host's records in its own group order (GroupOrder.AsProvided), each row keyed by Id with a trailing Meta fact. A Fallback hands any query to an assistant — last while rows match, first when none does. OnItemRun lets the host remember what ran and return it for the empty query.
AI intent — result panel
AiIntent items keep the palette open after selection so the AI result panel can stream its response. The finished draft rests as a proposal until you accept or dismiss it.
Declarative commands + arguments
Declare DrylCommands (with typed DrylCommandArguments) once; they self-register and run through a single OnRun(CommandContext). Commands with arguments open an inline fill view; Destructive commands gate on a confirm dialog.
AI resolver — natural language
Supply an ICommandResolver to resolve a natural-language query into one confirmable command suggestion (human-in-the-loop). Production apps use DrylAiCommandResolver from DRYL.Components.Agents over a real agent.