-
Notifications
You must be signed in to change notification settings - Fork 1
/
ai.js
97 lines (76 loc) · 3.03 KB
/
ai.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
import 'dotenv/config'
import OpenAI from 'openai';
import { promises as fs } from "fs";
import { exec } from "child_process";
const openai = new OpenAI({
apiKey: process.env['OPENAI_API_KEY'],
});
async function runGitCommands() {
try {
await execAsync('git diff --unified=0 HEAD >> gitlog.txt');
console.log("Git log written to gitlog.txt.");
await execAsync("git add .");
console.log("Files added to git.");
await execAsync('git commit -m "ai save"');
console.log("Changes committed to git.");
} catch (error) {
console.error(`Error running git commands: ${error.message}`);
console.log("continuing...");
} finally{
}
}
async function execAsync(command) {
return new Promise((resolve, reject) => {
exec(command, (error, stdout, stderr) => {
if (error) {
reject(error);
return;
}
if (stderr) {
reject(new Error(stderr));
return;
}
resolve(stdout);
});
});
}
async function main() {
const daily = await fs.readFile("daily.txt", "utf8");
const todoUpcomingDone = await fs.readFile("todoUpcomingDone.txt", "utf8");
const initiatives = await fs.readFile("initiatives.txt", "utf8");
const userState = await fs.readFile("userState.txt", "utf8");
const questions = await fs.readFile("questions.txt", "utf8");
const gitlog = await fs.readFile("gitlog.txt", "utf8");
const currentTime = new Date().toLocaleString();
runGitCommands();
const instructions = `
You are a all knowing AI assistant, named @Ami. You're going to help me reach all of my goals over a period of time, faster and with integrity is best.
I have a few free hours, please outline what I should do. Please ask 3 questions that would help you help me better.
I have a set of files to track all the input data about me. Treat the data provided as truth:
I'll write out my thoughts in a file called daily.txt. Each day will have a header in the format of "*** MMM dd***" where MMM is the month and dd is the day.
I'll write out what I need to do, what I've done and what's upcoming in a file called todoUpcomingDone.txt
I'll write the current state of myself in a file called userState.txt
I'll write my current initiatives in a file called initiatives.txt
All questions you proide, I will answer in a file called questions.txt
We'll use git to track changes of the files so you can see the updates in gitlog.txt. The current time is ${currentTime}
Here are the files
daily.txt
${daily}
todoUpcomingDone.txt
${todoUpcomingDone}
userState.txt
${userState}
initiatives.txt
${initiatives}
questions.txt
${questions}
gitlog.txt
${gitlog}
`;
const chatCompletion = await openai.chat.completions.create({
messages: [{ role: 'user', content: instructions }],
model: 'gpt-4o',
});
console.log(chatCompletion.choices[0].message.content);
}
main();