nohandcoder
Version:
An AI agent for code editing, searching, and project analysis
55 lines (54 loc) ⢠2.14 kB
JavaScript
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.chat = chat;
const chalk_1 = __importDefault(require("chalk"));
const dotenv_1 = __importDefault(require("dotenv"));
const NoHandCoderAgent_1 = require("./agents/NoHandCoderAgent");
// Load environment variables
dotenv_1.default.config();
if (!process.env.OPENAI_API_KEY) {
console.error(chalk_1.default.red("Error: OPENAI_API_KEY is not set"));
process.exit(1);
}
const workspaceRoot = process.cwd();
const aiService = new NoHandCoderAgent_1.NoHandCoderAgent(workspaceRoot);
async function chat() {
console.log(chalk_1.default.blue("\nš¤ Welcome to No Hand Coder Agent!"));
console.log(chalk_1.default.gray("Let's have a conversation about your code. Type 'exit' or 'quit' to end the conversation.\n"));
while (true) {
try {
const userInput = await new Promise((resolve) => {
process.stdout.write(chalk_1.default.cyan("\nYou: "));
process.stdin.once("data", (data) => {
resolve(data.toString().trim());
});
});
if (userInput.toLowerCase() === "exit" ||
userInput.toLowerCase() === "quit") {
console.log(chalk_1.default.green("\nš Goodbye!"));
process.exit(0);
}
if (!userInput)
continue;
console.log(chalk_1.default.blue("\nš¤ Thinking...\n"));
await aiService.handleUserInput(userInput, (chunk) => {
process.stdout.write(chunk);
});
console.log("\n");
}
catch (error) {
console.error(chalk_1.default.red("\nā Error:"), error);
console.log("\n");
}
}
}
// Only run if this file is being run directly
if (require.main === module) {
chat().catch((error) => {
console.error(chalk_1.default.red("\nā Fatal error:"), error);
process.exit(1);
});
}
;