quarkusio/quarkus · error
Assistant not available
Error message
Assistant not available
What it means
DevConsoleManager.invokeAssistant looks up a named assistant action and applies it to a globally registered assistant object. This error means an assistant action handler for the given name is registered, but no actual assistant implementation was ever set via the DEV_MANAGER_GLOBALS_ASSISTANT global, so the action cannot be dispatched.
Source
Thrown at core/devmode-spi/src/main/java/io/quarkus/dev/console/DevConsoleManager.java:167
/**
* Invokes a registered action
*
* @param name the name of the action
* @param params the named parameters
* @return the result of the invocation. An empty map is returned for action not returning any result.
*/
@SuppressWarnings("unchecked")
public static <T> T invoke(String name, Map<String, String> params) {
var function = actions.get(name);
if (function == null) {
// Try assistant actions
var bifunction = assistantActions.get(name);
if (bifunction != null) {
Object assistant = DevConsoleManager.getGlobal(DEV_MANAGER_GLOBALS_ASSISTANT);
if (assistant != null) {
return (T) bifunction.apply(assistant, params);
} else {
throw new RuntimeException("Assistant not available");
}
} else {
throw new NoSuchElementException(name);
}
} else {
return (T) function.apply(params);
}
}
}
View on GitHub (pinned to e1c734241f)
Solutions
- Add/configure the assistant provider extension so the assistant global is registered at startup
- Remove or guard calls to invokeAssistant when no assistant is present (check DevConsoleManager.getGlobal(DEV_MANAGER_GLOBALS_ASSISTANT) first)
- Set the DEV_MANAGER_GLOBALS_ASSISTANT global before invoking assistant actions
- Upgrade the assistant extension — older versions may fail to register the global
Example fix
// before
Object result = DevConsoleManager.invokeAssistant("explainError", params);
// after
if (DevConsoleManager.getGlobal(DevConsoleManager.DEV_MANAGER_GLOBALS_ASSISTANT) == null) {
throw new ServiceUnavailableException("No assistant configured");
}
Object result = DevConsoleManager.invokeAssistant("explainError", params); Defensive patterns
Strategy: validation
Validate before calling
if (DevConsoleManager.getGlobal(DevConsoleManager.DEV_MANAGER_GLOBALS_ASSISTANT) == null) {
throw new ServiceUnavailableException("Assistant not configured in this app");
} Try / catch
try {
return DevConsoleManager.invokeAssistant(name, params);
} catch (RuntimeException e) {
if ("Assistant not available".equals(e.getMessage())) {
return fallbackResponse(name);
}
throw e;
} Prevention
- Check the assistant global before dispatching assistant actions
- Only register assistant Dev UI actions when the assistant extension is present
- Gate assistant UI features behind a capability check
When it happens
Trigger: Calling DevConsoleManager.invokeAssistant(name, params) when assistantActions contains the name (registered at build/deployment time) but DevConsoleManager.setGlobal(DEV_MANAGER_GLOBALS_ASSISTANT, ...) was never called, e.g. no AI assistant extension is active in the running dev-mode application.
Common situations: Clicking an AI-assist feature in the Dev UI in a project that has no assistant extension (e.g. quarkus-langchain4j assistant not configured); invoking a dev-mode assistant endpoint programmatically without the assistant runtime installed.
Related errors
- Failed to find any non-blocking provider for startup actions
- You have to specify a key. This is the key the user will pre
- You have to specify a description. This is what the user wil
- You have to specify userMessage that will be send to AI, or
- User message is required
AI-assisted analysis of quarkusio/quarkus@e1c734241f (2026-09-05).
Data as JSON: /api/errors/cf2ace31b4f07e9e.
Report an issue: GitHub.