This repository has been archived on 2026-03-24. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
token-gated-economy/artifacts/api-server/src/lib/world-state.ts

53 lines
1.4 KiB
TypeScript

export interface TimmyState {
mood: string;
activity: string;
}
export interface WorldState {
timmyState: TimmyState;
agentStates: Record<string, string>;
updatedAt: string;
}
const DEFAULT_TIMMY: TimmyState = {
mood: "contemplative",
activity: "idle",
};
const _state: WorldState = {
timmyState: { ...DEFAULT_TIMMY },
agentStates: { alpha: "idle", beta: "idle", gamma: "idle", delta: "idle" },
updatedAt: new Date().toISOString(),
};
export function getWorldState(): WorldState {
return {
timmyState: { ..._state.timmyState },
agentStates: { ..._state.agentStates },
updatedAt: _state.updatedAt,
};
}
export function setAgentStateInWorld(agentId: string, agentState: string): void {
_state.agentStates[agentId] = agentState;
_state.updatedAt = new Date().toISOString();
_deriveTimmy();
}
function _deriveTimmy(): void {
const states = Object.values(_state.agentStates);
if (states.includes("working")) {
_state.timmyState.activity = "working";
_state.timmyState.mood = "focused";
} else if (states.includes("thinking") || states.includes("evaluating")) {
_state.timmyState.activity = "thinking";
_state.timmyState.mood = "curious";
} else if (states.some((s) => s !== "idle")) {
_state.timmyState.activity = "active";
_state.timmyState.mood = "attentive";
} else {
_state.timmyState.activity = "idle";
_state.timmyState.mood = "contemplative";
}
}