-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtest.mjs
71 lines (61 loc) · 2.67 KB
/
test.mjs
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
import { globalAgents } from "./core/agents/Agent.mjs";
import { GlobalConversation, globalConverse } from "./core/globalConversation.mjs";
import { globalTime } from "./core/globalTime.mjs";
import { sysinfo } from "./logger.mjs";
import { GlobalTaskManager } from "./core/agents/assignment.mjs";
import { getProjectPath } from "./filepath.mjs";
let steps = 100;
sysinfo("Starting simulation...");
const projectInfoPath = getProjectPath() + "/project_info.json";
const projectHistoryPath = getProjectPath() + "/project_history.json";
const leaderInfo = globalAgents.get("David_Thompson").agentInfo;
const globalTaskManager = GlobalTaskManager.getInstance(leaderInfo, projectInfoPath, projectHistoryPath);
for (const agent of globalAgents.values()) {
agent.setGlobalTaskManager(globalTaskManager);
}
await globalTaskManager.setFinalGoal("create a food brand that is loved by everyone");
await globalTaskManager.loadProjectInfo();
// Initialize GlobalTaskManager
sysinfo("Initializing project info...");
for(let i = 0; i < steps; i++) {
const startTime = Date.now();
sysinfo("################################");
sysinfo(`# Step ${i+1} of ${steps}`);
sysinfo(`# Current time: ${globalTime.toString()}`);
sysinfo("################################");
if (globalTime.isNewDay()) {
await performDailyAndHourlyPlans();
}
await performNextAction();
globalTime.updateTime();
const endTime = Date.now();
sysinfo(`--> Step ${i+1} took ${(endTime - startTime) / 1000 }s <--`);
}
async function performDailyAndHourlyPlans() {
const planPromises = Array.from(globalAgents.values()).map(async (agent) => {
await globalTaskManager.assignTaskToManager(agent.taskManager);
await agent.taskManager.generateDailyTask();
await agent.getDailyPlans();
await agent.getHourlyPlans();
await agent.saveToInstantMemory();
});
// Wait for all Agents to complete getDailyPlans and getHourlyPlans calls
await Promise.all(planPromises);
}
async function performNextAction() {
const willToConversePromises = Array.from(globalAgents.values()).map(agent => {
return agent.getWillToConverse();
});
// Wait for all Agents to complete getNextAction calls
await Promise.all(willToConversePromises);
sysinfo("Phase 1 done: will to converse")
const actionPromises = Array.from(globalAgents.values()).map(async (agent) => {
await agent.getNextAction();
await agent.saveNextAction();
await agent.updateTaskProgress();
});
await Promise.all(actionPromises);
sysinfo("Phase 2 done: action decision and task progress update")
await globalConverse();
sysinfo("Phase 3 done: converse")
}