Skip to content

Commit 203631c

Browse files
committed
bring "load character" back
1 parent aed5be3 commit 203631c

File tree

1 file changed

+42
-0
lines changed

1 file changed

+42
-0
lines changed

agent/src/index.ts

+42
Original file line numberDiff line numberDiff line change
@@ -240,6 +240,48 @@ async function jsonToCharacter(
240240
return character;
241241
}
242242

243+
async function loadCharacter(filePath: string): Promise<Character> {
244+
const content = tryLoadFile(filePath);
245+
if (!content) {
246+
throw new Error(`Character file not found: ${filePath}`);
247+
}
248+
let character = JSON.parse(content);
249+
validateCharacterConfig(character);
250+
// .id isn't really valid
251+
const characterId = character.id || character.name;
252+
const characterPrefix = `CHARACTER.${characterId.toUpperCase().replace(/ /g, "_")}.`;
253+
const characterSettings = Object.entries(process.env)
254+
.filter(([key]) => key.startsWith(characterPrefix))
255+
.reduce((settings, [key, value]) => {
256+
const settingKey = key.slice(characterPrefix.length);
257+
return { ...settings, [settingKey]: value };
258+
}, {});
259+
if (Object.keys(characterSettings).length > 0) {
260+
character.settings = character.settings || {};
261+
character.settings.secrets = {
262+
...characterSettings,
263+
...character.settings.secrets,
264+
};
265+
}
266+
// Handle plugins
267+
character.plugins = await handlePluginImporting(character.plugins);
268+
if (character.extends) {
269+
elizaLogger.info(
270+
`Merging ${character.name} character with parent characters`
271+
);
272+
for (const extendPath of character.extends) {
273+
const baseCharacter = await loadCharacter(
274+
path.resolve(path.dirname(filePath), extendPath)
275+
);
276+
character = mergeCharacters(baseCharacter, character);
277+
elizaLogger.info(
278+
`Merged ${character.name} with ${baseCharacter.name}`
279+
);
280+
}
281+
}
282+
return character;
283+
}
284+
243285
export async function loadCharacterFromOnchain(): Promise<Character[]> {
244286
const jsonText = onchainJson;
245287

0 commit comments

Comments
 (0)