Skip to content

Commit 66ccfdb

Browse files
authored
Merge pull request #2328 from leeran7/multiple-remote-urls
feat: Enable Multiple remote character urls
2 parents a2001a1 + aaefc80 commit 66ccfdb

File tree

2 files changed

+20
-14
lines changed

2 files changed

+20
-14
lines changed

.env.example

+2-2
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@ VITE_SERVER_PORT=${SERVER_PORT}
1515
SUPABASE_URL=
1616
SUPABASE_ANON_KEY=
1717

18-
# Remote character url (optional)
19-
REMOTE_CHARACTER_URL=
18+
# Comma separated list of remote character urls (optional)
19+
REMOTE_CHARACTER_URLS=
2020

2121
###############################
2222
#### Client Configurations ####

agent/src/index.ts

+18-12
Original file line numberDiff line numberDiff line change
@@ -245,12 +245,15 @@ async function loadCharacter(filePath: string): Promise<Character> {
245245
return jsonToCharacter(filePath, character);
246246
}
247247

248+
function commaSeparatedStringToArray(commaSeparated: string): string[] {
249+
return commaSeparated?.split(",").map(value => value.trim())
250+
}
251+
252+
248253
export async function loadCharacters(
249254
charactersArg: string
250255
): Promise<Character[]> {
251-
let characterPaths = charactersArg
252-
?.split(",")
253-
.map((filePath) => filePath.trim());
256+
let characterPaths = commaSeparatedStringToArray(charactersArg)
254257
const loadedCharacters: Character[] = [];
255258

256259
if (characterPaths?.length > 0) {
@@ -322,17 +325,16 @@ export async function loadCharacters(
322325
}
323326
}
324327

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);
333333
loadedCharacters.push(character);
334334
}
335+
}
335336

337+
if (loadedCharacters.length === 0) {
336338
elizaLogger.info("No characters found, using default character");
337339
loadedCharacters.push(defaultCharacter);
338340
}
@@ -1099,14 +1101,18 @@ const checkPortAvailable = (port: number): Promise<boolean> => {
10991101
});
11001102
};
11011103

1104+
const hasValidRemoteUrls = () =>
1105+
process.env.REMOTE_CHARACTER_URLS != "" &&
1106+
process.env.REMOTE_CHARACTER_URLS.startsWith("http")
1107+
11021108
const startAgents = async () => {
11031109
const directClient = new DirectClient();
11041110
let serverPort = parseInt(settings.SERVER_PORT || "3000");
11051111
const args = parseArguments();
11061112
let charactersArg = args.characters || args.character;
11071113
let characters = [defaultCharacter];
11081114

1109-
if (charactersArg) {
1115+
if (charactersArg || hasValidRemoteUrls()) {
11101116
characters = await loadCharacters(charactersArg);
11111117
}
11121118

0 commit comments

Comments
 (0)