Skip to content

Commit 1e4607c

Browse files
committed
Feat: Enables multiple remote urls
1 parent 640b4e8 commit 1e4607c

File tree

2 files changed

+22
-14
lines changed

2 files changed

+22
-14
lines changed

.env.example

+2-2
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@ SERVER_PORT=3000
1414
SUPABASE_URL=
1515
SUPABASE_ANON_KEY=
1616

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

2020
###############################
2121
#### Client Configurations ####

agent/src/index.ts

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

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

255258
if (characterPaths?.length > 0) {
@@ -321,17 +324,16 @@ export async function loadCharacters(
321324
}
322325
}
323326

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);
332332
loadedCharacters.push(character);
333333
}
334+
}
334335

336+
if (loadedCharacters.length === 0) {
335337
elizaLogger.info("No characters found, using default character");
336338
loadedCharacters.push(defaultCharacter);
337339
}
@@ -1091,14 +1093,20 @@ const checkPortAvailable = (port: number): Promise<boolean> => {
10911093
});
10921094
};
10931095

1096+
const hasValidRemoteUrls = () =>
1097+
process.env.REMOTE_CHARACTER_URLS != "" &&
1098+
process.env.REMOTE_CHARACTER_URLS.startsWith("http")
1099+
10941100
const startAgents = async () => {
10951101
const directClient = new DirectClient();
10961102
let serverPort = parseInt(settings.SERVER_PORT || "3000");
10971103
const args = parseArguments();
10981104
let charactersArg = args.characters || args.character;
10991105
let characters = [defaultCharacter];
11001106

1101-
if (charactersArg) {
1107+
1108+
1109+
if (charactersArg || hasValidRemoteUrls()) {
11021110
characters = await loadCharacters(charactersArg);
11031111
}
11041112

0 commit comments

Comments
 (0)