+ {(['dawn', 'day', 'dusk', 'night'] as TimeTheme[]).map((item) => (
+
+ ))}
+
+
+ {floorTiles.map((tile) => (
+
+ ))}
+
+
+ {/* Corridor base */}
+
+
+
+
+ {heatmapPoints.map((point) => (
+
+ ))}
+
+
+ {/* Zone rooms */}
+ {roomLayoutState.map((room) => (
+
{
+ event.stopPropagation()
+ const activeInRoom = renderedWorkers.filter((worker) => worker.zoneLabel === room.label).length
+ setSelectedHotspot({
+ kind: 'room',
+ id: room.id,
+ label: room.label,
+ x: room.x + room.w / 2,
+ y: room.y + room.h / 2,
+ stats: [
+ `${activeInRoom} workers present`,
+ `${Math.round(room.w * room.h)} tile area`,
+ 'Click worker to inspect session',
+ ],
+ })
+ pushOfficeEvent({
+ kind: 'room',
+ severity: 'info',
+ message: `${room.label} room inspected (${activeInRoom} workers).`,
+ })
+ }}
+ >
+
+
+ {room.label}
+
+
+ ))}
+
+ {/* Props / furniture */}
+ {mapPropsState.map((prop) => (
+
{
+ event.stopPropagation()
+ const nearest = renderedWorkers
+ .slice()
+ .sort((a, b) => Math.hypot(a.x - prop.x, a.y - prop.y) - Math.hypot(b.x - prop.x, b.y - prop.y))[0]
+ setSelectedHotspot({
+ kind: 'desk',
+ id: prop.id,
+ label: prop.id.replace(/^desk-/, 'Desk ').replace(/^plant-/, 'Plant ').replace(/^kitchen$/, 'Lounge Rug'),
+ x: prop.x + prop.w / 2,
+ y: prop.y + prop.h / 2,
+ stats: [
+ nearest ? `Nearest worker: ${nearest.agent.name}` : 'No nearby worker',
+ `Footprint ${prop.w.toFixed(1)}x${prop.h.toFixed(1)}`,
+ 'Use action buttons in agent modal',
+ ],
+ })
+ pushOfficeEvent({
+ kind: 'desk',
+ severity: 'info',
+ message: `${prop.id} inspected${nearest ? ` near ${nearest.agent.name}` : ''}.`,
+ })
+ }}
+ >
+
+
+ ))}
+
+
+
+ {renderedWorkers.map(({ agent, x, y, zoneLabel, seatLabel, isMoving, direction }) => (
+
+
+
+
+
- {agent.last_activity && (
-
- {agent.last_activity}
+
) : (
@@ -326,6 +1984,108 @@ export function OfficePanel() {
Session: {selectedAgent.session_key}
)}
+
+
+
Quick Actions
+
+ executeAgentAction(selectedAgent, 'focus')}
+ className="h-8 px-2 rounded border border-border bg-secondary text-[11px] hover:bg-surface-2"
+ >
+ Focus
+
+ executeAgentAction(selectedAgent, 'pair')}
+ className="h-8 px-2 rounded border border-border bg-secondary text-[11px] hover:bg-surface-2"
+ >
+ Pair
+
+ executeAgentAction(selectedAgent, 'break')}
+ className="h-8 px-2 rounded border border-border bg-secondary text-[11px] hover:bg-surface-2"
+ >
+ Break
+
+
+
+
+ {isLocalMode && (
+
+
openFlightDeck(selectedAgent)}
+ disabled={flightDeckLaunching}
+ className="w-full h-9 px-3 rounded-md border border-border bg-secondary text-foreground text-xs hover:bg-surface-2 transition-smooth"
+ >
+ {flightDeckLaunching ? 'Opening Flight Deck...' : 'Open in Flight Deck'}
+
+
+ Private/pro companion app for session deep-dive
+
+
+ )}
+