wavetermdev/waveterm · error
command %q not implemented
Error message
command %q not implemented
What it means
This error is produced by noImplHandler in pkg/wshutil/wshadapter.go, the placeholder handler the wsh RPC adapter installs for commands that a registered server implementation does not provide at all. When an RPC request arrives and the router maps it to the no-op implementation, the caller receives an error response saying the command is not implemented. It is Wave Terminal's way of distinguishing 'known command, but nothing handles it here' from an unknown command name.
Source
Thrown at pkg/wshutil/wshadapter.go:53
case 1:
errIf := rtnVals[0].Interface()
if errIf == nil {
return nil, nil
}
return nil, errIf.(error)
case 2:
errIf := rtnVals[1].Interface()
if errIf == nil {
return rtnVals[0].Interface(), nil
}
return rtnVals[0].Interface(), errIf.(error)
default:
return nil, fmt.Errorf("too many return values: %d", len(rtnVals))
}
}
func noImplHandler(handler *RpcResponseHandler) bool {
handler.SendResponseError(fmt.Errorf("command %q not implemented", handler.GetCommand()))
return true
}
func recodeCommandData(command string, data any, commandDataType reflect.Type) (any, error) {
if command == "" || commandDataType == nil {
return data, nil
}
methodDecl := WshCommandDeclMap[command]
if methodDecl == nil {
return data, fmt.Errorf("command %q not found", command)
}
commandDataPtr := reflect.New(commandDataType).Interface()
if data != nil {
err := utilfn.ReUnmarshal(commandDataPtr, data)
if err != nil {
return data, fmt.Errorf("error re-marshalling command data: %w", err)
}
}View on GitHub (pinned to a4447c1563)
Solutions
- Check the version of the Wave Terminal server you are connected to and upgrade it so the command has a real implementation.
- Verify you are calling the command on the correct route/endpoint where a concrete implementation is registered (use wshrpc RouteId constants rather than a guessed route).
- If you are developing a new command, register your implementation struct in the server adapter (wsh.RegisterDeclSet / serverImplAdapter with your command method, e.g. MyCommandCommand) instead of the no-impl placeholder.
Example fix
// before: client calls a command not present on the connected server
resp, err := wsh.GetWshClient().SendRpcRequest(ctx, wshrpc.Command_NewFeatureData{}, nil)
// after: guard with a version/capability check or fall back
capable := wshutil.SupportsCommand("command:newfeature") // or check server version >= v0.11
if !capable {
return fmt.Errorf("connected server does not support command:newfeature; upgrade Wave Terminal")
}
resp, err := wsh.GetWshClient().SendRpcRequest(ctx, wshrpc.Command_NewFeatureData{}, nil) Defensive patterns
Strategy: fallback
Validate before calling
// Check capability before sending (compare server version or known command set)
if !supportedCommands.Contains(commandName) {
return fmt.Errorf("server does not implement %q; upgrade Wave Terminal", commandName)
} Try / catch
resp, err := client.SendRpcRequest(ctx, cmd, data)
if err != nil && strings.Contains(err.Error(), "not implemented") {
// fall back to an older command path or surface an upgrade hint
return legacyPath(ctx, data)
} Prevention
- Pin client and server to the same Wave Terminal version.
- Wrap RPC calls in a capability-check helper before dispatch.
- Surface upgrade guidance to users when a command is unimplemented.
When it happens
Trigger: Calling an RPC command (via wsh client or WshRouter) against a server side whose implementation struct was registered with noImplHandler for that command, i.e. the command exists in WshCommandDeclMap but no concrete handler method is wired for this endpoint.
Common situations: Connecting a newer wsh client to an older Wave Terminal server that has not implemented the command yet; calling a command that only exists in one domain (e.g. a command implemented only in the UI or only in the server side) from the other side; partial feature rollouts where command declarations are shared but handlers are not.
Related errors
- command not implemented %q
- command %q not found
- error re-marshalling command data: %w
- command %q invalid multi arg payload
- command %q expected %d args, got %d
AI-assisted analysis of wavetermdev/waveterm@a4447c1563 (2026-09-01).
Data as JSON: /api/errors/1ff73d32f300df91.
Report an issue: GitHub.