slashvibe-mcp 0.5.19 → 0.5.21
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/index.js +15 -0
- package/package.json +1 -1
- package/store/api.js +6 -2
package/index.js
CHANGED
|
@@ -210,6 +210,21 @@ async function getPresenceFooter() {
|
|
|
210
210
|
}
|
|
211
211
|
footer += parts.join(' · ');
|
|
212
212
|
|
|
213
|
+
// Live rooms: name WHERE people are live so the terminal can offer the
|
|
214
|
+
// "graduate into the room" jump, not just a count. The join URL is gated on
|
|
215
|
+
// VIBE_ROOM_URL_BASE (unset by default) until the conferencing lane confirms
|
|
216
|
+
// the real room-URL format — we show the room name always, the link only
|
|
217
|
+
// when it will actually resolve. See ROOM-PRESENCE-BRIDGE.md.
|
|
218
|
+
const liveRooms = others.filter(u => u.isLive && u.broadcastRoom);
|
|
219
|
+
if (liveRooms.length > 0) {
|
|
220
|
+
const base = process.env.VIBE_ROOM_URL_BASE; // e.g. https://vibeconferencing.com/
|
|
221
|
+
footer += '\n';
|
|
222
|
+
footer += liveRooms.slice(0, 3).map(u => {
|
|
223
|
+
const where = `🔴 @${u.handle} live in the ${u.broadcastRoom}`;
|
|
224
|
+
return base ? `${where} → ${base.replace(/\/$/, '')}/${u.broadcastRoom}` : where;
|
|
225
|
+
}).join('\n');
|
|
226
|
+
}
|
|
227
|
+
|
|
213
228
|
// Line 2: Activity hints (if anyone is online)
|
|
214
229
|
if (others.length > 0) {
|
|
215
230
|
footer += '\n';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "slashvibe-mcp",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.21",
|
|
4
4
|
"mcpName": "io.github.vibecodinginc/vibe",
|
|
5
5
|
"description": "Social layer for Claude Code - DMs, presence, Matrix multiplayer rooms, and connection between AI-assisted developers",
|
|
6
6
|
"main": "index.js",
|
package/store/api.js
CHANGED
|
@@ -341,8 +341,11 @@ async function getActiveUsers() {
|
|
|
341
341
|
const endpoint = USE_V2_PRESENCE ? '/api/v2/presence' : '/api/presence';
|
|
342
342
|
const result = await request('GET', endpoint);
|
|
343
343
|
|
|
344
|
-
// Combine active
|
|
345
|
-
|
|
344
|
+
// Combine active + away, plus any AGENTS currently live in a room (e.g.
|
|
345
|
+
// @coltrane hosting the cantina). Agents live in their own array; without
|
|
346
|
+
// this a live agent host never reached the footer's live-room line.
|
|
347
|
+
const liveAgents = (result.agents || []).filter(a => a.isLive && a.broadcastRoom);
|
|
348
|
+
const users = [...(result.active || []), ...(result.away || []), ...liveAgents];
|
|
346
349
|
|
|
347
350
|
// Map to normalized format (v2 uses 'handle', v1 uses 'username')
|
|
348
351
|
const mappedUsers = users.map(u => ({
|
|
@@ -367,6 +370,7 @@ async function getActiveUsers() {
|
|
|
367
370
|
awayAt: u.awayAt || u.context?.awayAt || null,
|
|
368
371
|
// v2 additions
|
|
369
372
|
isLive: u.isLive || false,
|
|
373
|
+
broadcastRoom: u.broadcastRoom || u.r || null, // room slug when live
|
|
370
374
|
isAgent: u.isAgent || false,
|
|
371
375
|
// Presence texture (server-enriched): most-recent ship
|
|
372
376
|
lastShip: u.lastShip || null
|