@@ -245,12 +245,15 @@ async function loadCharacter(filePath: string): Promise<Character> {
245
245
return jsonToCharacter ( filePath , character ) ;
246
246
}
247
247
248
+ function commaSeparatedStringToArray ( commaSeparated : string ) : string [ ] {
249
+ return commaSeparated ?. split ( "," ) . map ( value => value . trim ( ) )
250
+ }
251
+
252
+
248
253
export async function loadCharacters (
249
254
charactersArg : string
250
255
) : Promise < Character [ ] > {
251
- let characterPaths = charactersArg
252
- ?. split ( "," )
253
- . map ( ( filePath ) => filePath . trim ( ) ) ;
256
+ let characterPaths = commaSeparatedStringToArray ( charactersArg )
254
257
const loadedCharacters : Character [ ] = [ ] ;
255
258
256
259
if ( characterPaths ?. length > 0 ) {
@@ -322,17 +325,16 @@ export async function loadCharacters(
322
325
}
323
326
}
324
327
325
- if ( loadedCharacters . length === 0 ) {
326
- if (
327
- process . env . REMOTE_CHARACTER_URL != "" &&
328
- process . env . REMOTE_CHARACTER_URL . startsWith ( "http" )
329
- ) {
330
- const character = await loadCharacterFromUrl (
331
- process . env . REMOTE_CHARACTER_URL
332
- ) ;
328
+ if ( hasValidRemoteUrls ( ) ) {
329
+ elizaLogger . info ( "Loading characters from remote URLs" ) ;
330
+ let characterUrls = commaSeparatedStringToArray ( process . env . REMOTE_CHARACTER_URLS )
331
+ for ( const characterUrl of characterUrls ) {
332
+ const character = await loadCharacterFromUrl ( characterUrl ) ;
333
333
loadedCharacters . push ( character ) ;
334
334
}
335
+ }
335
336
337
+ if ( loadedCharacters . length === 0 ) {
336
338
elizaLogger . info ( "No characters found, using default character" ) ;
337
339
loadedCharacters . push ( defaultCharacter ) ;
338
340
}
@@ -1099,14 +1101,18 @@ const checkPortAvailable = (port: number): Promise<boolean> => {
1099
1101
} ) ;
1100
1102
} ;
1101
1103
1104
+ const hasValidRemoteUrls = ( ) =>
1105
+ process . env . REMOTE_CHARACTER_URLS != "" &&
1106
+ process . env . REMOTE_CHARACTER_URLS . startsWith ( "http" )
1107
+
1102
1108
const startAgents = async ( ) => {
1103
1109
const directClient = new DirectClient ( ) ;
1104
1110
let serverPort = parseInt ( settings . SERVER_PORT || "3000" ) ;
1105
1111
const args = parseArguments ( ) ;
1106
1112
let charactersArg = args . characters || args . character ;
1107
1113
let characters = [ defaultCharacter ] ;
1108
1114
1109
- if ( charactersArg ) {
1115
+ if ( charactersArg || hasValidRemoteUrls ( ) ) {
1110
1116
characters = await loadCharacters ( charactersArg ) ;
1111
1117
}
1112
1118
0 commit comments