From 581c28159d7e424fde7dc09b88a30cace73fe253 Mon Sep 17 00:00:00 2001 From: calebsheridan Date: Thu, 7 Nov 2024 09:31:34 +0100 Subject: [PATCH] Align types for first-time character creation to eliza Character type --- scripts/knowledge2character.js | 46 +++++++++++++++++++++++++++++++--- 1 file changed, 43 insertions(+), 3 deletions(-) diff --git a/scripts/knowledge2character.js b/scripts/knowledge2character.js index c2ca0f3..dc89a3d 100755 --- a/scripts/knowledge2character.js +++ b/scripts/knowledge2character.js @@ -3,6 +3,39 @@ import fs from 'fs'; import inquirer from 'inquirer'; +const createBasicCharacterFile = async (filePath) => { + // See eliza types for reference: https://github.com/ai16z/eliza/blob/main/packages/core/src/core/types.ts + const basicCharacter = { + name: await promptUser('Enter character name:', 'New Character'), + description: await promptUser('Enter character description:', 'A new character'), + clients: [], + modelProvider: 'llama_local', + settings: { + secrets: {}, + voice: { + model: 'en_US-male-medium', + }, + }, + traits: [], + background: '', + knowledge: {}, + messageExamples: [], + postExamples: [], + topics: [], + style: { + all: [], + chat: [], + post: [], + }, + adjectives: [], + nicknames: {}, + phrases: {}, + }; + + writeJsonFile(filePath, basicCharacter); + return basicCharacter; +}; + const promptUser = async (question, defaultValue = '') => { console.log(); @@ -51,11 +84,18 @@ const main = async () => { knowledgeFilePath = await promptUser('Please provide the path to the knowledge JSON file:', 'knowledge.json'); } - const character = readJsonFile(characterFilePath); + let character; + if (!fs.existsSync(characterFilePath)) { + console.log(`Character file not found. Let's create one!`); + character = await createBasicCharacterFile(characterFilePath); + } else { + character = readJsonFile(characterFilePath); + } + const knowledge = readJsonFile(knowledgeFilePath); - if (!character || !knowledge) { - console.error('Invalid input files. Please provide valid JSON files for character and knowledge.'); + if (!knowledge) { + console.error('Invalid knowledge file. Please provide a valid JSON file for knowledge.'); return; }