feat(city-map): Add 2D City Map with coordinates and agent presence

- Add migration 013_city_map_coordinates.sql with map coordinates, zones, and agents table
- Add /city/map API endpoint in city-service
- Add /city/agents and /city/agents/online endpoints
- Extend presence aggregator to include agents[] in snapshot
- Add AgentsSource for fetching agent data from DB
- Create CityMap component with interactive room tiles
- Add useCityMap hook for fetching map data
- Update useGlobalPresence to include agents
- Add map/list view toggle on /city page
- Add agent badges to room cards and map tiles
This commit is contained in:
Apple
2025-11-27 07:00:47 -08:00
parent 3de3c8cb36
commit 6bd769ef40
258 changed files with 1747 additions and 79 deletions

View File

@@ -124,3 +124,4 @@ export function MessengerPage() {

View File

@@ -21,3 +21,4 @@ export async function createChannel(data: ChannelCreateInput): Promise<Channel>

View File

@@ -28,3 +28,4 @@ export async function getChannelMessages(

View File

@@ -23,3 +23,4 @@ export async function getChannels(microdaoId?: string): Promise<Channel[]> {

View File

@@ -24,3 +24,4 @@ export async function sendMessage(

View File

@@ -41,3 +41,4 @@ export function ChannelHeader({ channel, isConnected }: Props) {

View File

@@ -45,3 +45,4 @@ export function ChannelList({ channels, selectedChannelId, onSelectChannel }: Pr

View File

@@ -77,3 +77,4 @@ export function MessageComposer({ onSend, disabled }: Props) {

View File

@@ -63,3 +63,4 @@ export function MessageList({ messages, loading }: Props) {

View File

@@ -41,3 +41,4 @@ export function useChannels(microdaoId?: string) {

View File

@@ -60,3 +60,4 @@ export function useMessages(channelId: string) {

View File

@@ -110,3 +110,4 @@ export function useMessagingWebSocket(channelId: string): UseMessagingWebSocketR

View File

@@ -98,3 +98,4 @@ export interface WebSocketMessage {