diff --git a/package.json b/package.json index 86746b1..2cd925e 100644 --- a/package.json +++ b/package.json @@ -37,5 +37,10 @@ "typescript": "^6.0.3", "typescript-eslint": "^8.62.1", "zod": "^4.4.3" + }, + "dependencies": { + "@langchain/google-genai": "^2.2.0", + "@types/node": "^20.19.43", + "dotenv": "^17.4.2" } } diff --git a/packages/core/package.json b/packages/core/package.json index f454ca1..7f9598b 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -7,6 +7,8 @@ ".": "./dist/index.js" }, "dependencies": { + "@langchain/google-genai": "^2.2.0", + "@types/node": "^26.1.0", "better-sqlite3": "^12.11.1" } } diff --git a/packages/core/src/clock.ts b/packages/core/src/clock.ts new file mode 100644 index 0000000..feac19e --- /dev/null +++ b/packages/core/src/clock.ts @@ -0,0 +1,19 @@ +export class WorldClock { + private currentTime: Date; + + constructor(startTime: Date = new Date(1999, 4, 14, 18, 0)) { + this.currentTime = startTime; + } + + advance(minutes: number): void { + this.currentTime = new Date(this.currentTime.getTime() + minutes * 60_000); + } + + get(): Date { + return this.currentTime; + } + + static fromISOString(iso: string): WorldClock { + return new WorldClock(new Date(iso)); + } +} diff --git a/packages/core/src/world.ts b/packages/core/src/world.ts index e5cc509..50f4801 100644 --- a/packages/core/src/world.ts +++ b/packages/core/src/world.ts @@ -1,5 +1,6 @@ import { AttributableObject } from "./attribute.js"; import { Entity } from "./entity.js"; +import { WorldClock } from "./clock.js"; export class WorldState extends AttributableObject { /** @@ -7,9 +8,11 @@ export class WorldState extends AttributableObject { * Universe's current state (distinct from how it started) */ readonly entities: Map = new Map(); + readonly clock: WorldClock; - constructor(id?: string) { + constructor(id?: string, startTime?: Date) { super(id); + this.clock = new WorldClock(startTime); } addEntity(entity: Entity): void {