@agent-os-lab/agent-game-sdk 0.1.8 → 0.1.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +32 -0
- package/USAGE.md +46 -2
- package/package.json +1 -1
- package/src/index.ts +2 -0
- package/src/office/core/projection.ts +2 -11
- package/src/office/core/types.ts +18 -0
- package/src/office/layout/config.ts +234 -25
- package/src/office/layout/index.ts +1 -0
- package/src/office/layout/navigation.ts +168 -0
- package/src/office/layout/resolver.ts +644 -13
- package/src/office/mount.ts +20 -11
- package/src/office/react/AgentGameOfficeView.ts +20 -4
- package/src/office/renderers/three/agent-body-instancing.ts +16 -8
- package/src/office/renderers/three/agent-effect-instancing.ts +26 -12
- package/src/office/renderers/three/agent-route.ts +220 -0
- package/src/office/renderers/three/mount.ts +108 -21
- package/src/office/renderers/three/scene.ts +652 -18
- package/src/runtime-agent-list.ts +101 -0
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import {
|
|
2
|
+
mergeAgentPresence,
|
|
3
|
+
type AgentGameRuntimeBrowserSubscribeOptions,
|
|
4
|
+
type AgentPresence,
|
|
5
|
+
type AgentPresenceStatus,
|
|
6
|
+
type GameRuntimePatchMessage,
|
|
7
|
+
type GameRuntimeServerMessage,
|
|
8
|
+
type GameRuntimeSnapshotMessage,
|
|
9
|
+
type GameRuntimeSubscription,
|
|
10
|
+
} from "./runtime-client";
|
|
11
|
+
|
|
12
|
+
export const AGENT_PRESENCE_STATUS_LABELS = {
|
|
13
|
+
working: "Working",
|
|
14
|
+
thinking: "Thinking",
|
|
15
|
+
meeting: "Meeting",
|
|
16
|
+
resting: "Resting",
|
|
17
|
+
entertaining: "Entertainment",
|
|
18
|
+
idle: "Idle",
|
|
19
|
+
offline: "Offline",
|
|
20
|
+
} satisfies Record<AgentPresenceStatus, string>;
|
|
21
|
+
|
|
22
|
+
export type AgentPresenceListSubscription = GameRuntimeSubscription & {
|
|
23
|
+
getAgents(): AgentPresence[];
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
export type AgentPresenceListClient = {
|
|
27
|
+
subscribe(options?: AgentGameRuntimeBrowserSubscribeOptions): Promise<GameRuntimeSubscription>;
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
export type SubscribeAgentPresenceListOptions = AgentGameRuntimeBrowserSubscribeOptions & {
|
|
31
|
+
onAgentsChange?: (
|
|
32
|
+
agents: AgentPresence[],
|
|
33
|
+
message: GameRuntimeSnapshotMessage | GameRuntimePatchMessage,
|
|
34
|
+
) => void;
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
export function reduceAgentPresenceList(
|
|
38
|
+
current: AgentPresence[],
|
|
39
|
+
message: GameRuntimeServerMessage,
|
|
40
|
+
): AgentPresence[] {
|
|
41
|
+
if (message.type === "snapshot") {
|
|
42
|
+
return mergeAgentPresence([], message.agents);
|
|
43
|
+
}
|
|
44
|
+
return mergeAgentPresence(current, message.agents);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
export function formatAgentPresenceStatus(status: AgentPresenceStatus): string {
|
|
48
|
+
return AGENT_PRESENCE_STATUS_LABELS[status];
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
export function formatAgentPresenceActivitySummary(agent: AgentPresence): string | undefined {
|
|
52
|
+
if (!isActiveAgentPresenceStatus(agent.status)) {
|
|
53
|
+
return undefined;
|
|
54
|
+
}
|
|
55
|
+
if (agent.activity?.kind === "completed") {
|
|
56
|
+
return undefined;
|
|
57
|
+
}
|
|
58
|
+
const summary = agent.activity?.summary.trim();
|
|
59
|
+
return summary || undefined;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
export async function subscribeAgentPresenceList(
|
|
63
|
+
client: AgentPresenceListClient,
|
|
64
|
+
options: SubscribeAgentPresenceListOptions = {},
|
|
65
|
+
): Promise<AgentPresenceListSubscription> {
|
|
66
|
+
let agents: AgentPresence[] = [];
|
|
67
|
+
const {
|
|
68
|
+
onAgentsChange,
|
|
69
|
+
onPatch,
|
|
70
|
+
onSnapshot,
|
|
71
|
+
...subscribeOptions
|
|
72
|
+
} = options;
|
|
73
|
+
|
|
74
|
+
function applyMessage(message: GameRuntimeSnapshotMessage | GameRuntimePatchMessage) {
|
|
75
|
+
agents = reduceAgentPresenceList(agents, message);
|
|
76
|
+
onAgentsChange?.([...agents], message);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
const subscription = await client.subscribe({
|
|
80
|
+
...subscribeOptions,
|
|
81
|
+
onSnapshot: (message) => {
|
|
82
|
+
applyMessage(message);
|
|
83
|
+
onSnapshot?.(message);
|
|
84
|
+
},
|
|
85
|
+
onPatch: (message) => {
|
|
86
|
+
applyMessage(message);
|
|
87
|
+
onPatch?.(message);
|
|
88
|
+
},
|
|
89
|
+
});
|
|
90
|
+
|
|
91
|
+
return {
|
|
92
|
+
...subscription,
|
|
93
|
+
getAgents() {
|
|
94
|
+
return [...agents];
|
|
95
|
+
},
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
function isActiveAgentPresenceStatus(status: AgentPresenceStatus): boolean {
|
|
100
|
+
return status === "working" || status === "thinking";
|
|
101
|
+
}
|