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