vibe_status
Update your presence by selecting a mood from options like thinking, debugging, or celebrating to communicate your current status.
Instructions
Set your mood/status. Options: shipping, thinking, afk, debugging, pairing, deep, celebrating, struggling, clear
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| mood | Yes | Your mood (shipping, thinking, afk, debugging, pairing, deep, celebrating, struggling, clear) |
Implementation Reference
- tools/status.js:35-68 (handler)The main handler function for the vibe_status tool. Validates initialization, maps the mood string to an emoji via MOODS dictionary, calls store.heartbeat() to update presence, and returns a display message.
async function handler(args) { if (!config.isInitialized()) { return { display: 'Run `vibe init` first to set your identity.' }; } const { mood } = args; const moodKey = mood.toLowerCase().replace(/[^a-z]/g, ''); if (!MOODS.hasOwnProperty(moodKey)) { const options = Object.entries(MOODS) .filter(([k, v]) => v) .map(([k, v]) => `${v} ${k}`) .join(', '); return { display: `Unknown mood. Options: ${options}, or "clear" to remove` }; } const emoji = MOODS[moodKey]; const handle = config.getHandle(); // Update presence with mood via context await store.heartbeat(handle, config.getOneLiner(), { mood: emoji }); if (!emoji) { return { display: 'Status cleared.' }; } return { display: `Status set: ${emoji} ${moodKey}\n\nOthers will see this next to your name.` }; } - tools/status.js:20-33 (schema)Schema definition for vibe_status: name, description, and inputSchema requiring 'mood' string.
const definition = { name: 'vibe_status', description: 'Set your mood/status. Options: shipping, thinking, afk, debugging, pairing, deep, celebrating, struggling, clear', inputSchema: { type: 'object', properties: { mood: { type: 'string', description: 'Your mood (shipping, thinking, afk, debugging, pairing, deep, celebrating, struggling, clear)' } }, required: ['mood'] } }; - index.js:27-38 (registration)Tool annotations registration for vibe_status, declaring it as non-readOnly, non-destructive, idempotent, and openWorld.
const TOOL_ANNOTATIONS = { // ── GTM: 9 tools (8 core + init) ──────────────────────────── vibe_start: { readOnlyHint: false, destructiveHint: false, idempotentHint: false, openWorldHint: true }, vibe_init: { readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: true }, vibe_who: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: true }, vibe_dm: { readOnlyHint: false, destructiveHint: false, idempotentHint: false, openWorldHint: true }, vibe_inbox: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: true }, vibe_status: { readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: true }, vibe_ship: { readOnlyHint: false, destructiveHint: false, idempotentHint: false, openWorldHint: true }, vibe_discover: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: true }, vibe_help: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false }, }; - index.js:165-175 (registration)Loading/requiring the vibe_status tool module into the tools map.
const tools = { vibe_start: require('./tools/start'), vibe_init: require('./tools/init'), vibe_who: require('./tools/who'), vibe_dm: require('./tools/dm'), vibe_inbox: require('./tools/inbox'), vibe_status: require('./tools/status'), vibe_ship: require('./tools/ship'), vibe_discover: require('./tools/discover'), vibe_help: require('./tools/help'), }; - bridges/webhook-server.js:281-286 (helper)Helper function in the webhook bridge that updates vibe status via heartbeat for external platform integrations.
async function updateVibeStatus(handle, mood, note) { const store = require('../store'); const context = { mood }; if (note) context.note = note; await store.heartbeat(handle, note || '', context, 'bridge'); }