slashvibe-mcp 0.3.21 → 0.3.22
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/LICENSE +21 -0
- package/README.md +280 -47
- package/config.js +36 -31
- package/crypto.js +1 -6
- package/discord.js +19 -19
- package/index.js +217 -207
- package/intelligence/index.js +2 -9
- package/intelligence/infer.js +10 -16
- package/intelligence/patterns.js +23 -18
- package/intelligence/proactive.js +16 -15
- package/intelligence/serendipity.js +57 -20
- package/memory.js +13 -8
- package/notify.js +39 -14
- package/package.json +27 -20
- package/presence.js +2 -2
- package/prompts.js +5 -9
- package/protocol/index.js +123 -87
- package/protocol/telegram-commands.js +36 -37
- package/store/api.js +358 -529
- package/store/local.js +9 -10
- package/store/profiles.js +48 -192
- package/store/reservations.js +2 -9
- package/store/skills.js +69 -71
- package/store/sqlite.js +355 -0
- package/tools/_actions.js +48 -387
- package/tools/_connection-queue.js +45 -56
- package/tools/_discovery-enhanced.js +52 -57
- package/tools/_discovery.js +87 -185
- package/tools/{l2-status.js → _experimental/l2-status.js} +68 -70
- package/tools/{shipback.js → _experimental/shipback.js} +4 -3
- package/tools/_proactive-discovery.js +60 -73
- package/tools/_shared/index.js +41 -64
- package/tools/admin-inbox.js +10 -15
- package/tools/agents.js +1 -1
- package/tools/artifact-create.js +13 -23
- package/tools/artifact-view.js +4 -4
- package/tools/{_deprecated/back.js → back.js} +1 -1
- package/tools/bye.js +3 -5
- package/tools/consent.js +2 -2
- package/tools/context.js +9 -10
- package/tools/crossword.js +3 -2
- package/tools/discover.js +94 -356
- package/tools/dm.js +27 -86
- package/tools/doctor.js +12 -41
- package/tools/drawing.js +34 -20
- package/tools/echo.js +11 -11
- package/tools/feed.js +30 -58
- package/tools/follow.js +64 -187
- package/tools/{_deprecated/forget.js → forget.js} +4 -7
- package/tools/game.js +144 -48
- package/tools/handoff.js +6 -8
- package/tools/help.js +3 -3
- package/tools/idea.js +15 -27
- package/tools/inbox.js +121 -293
- package/tools/init.js +54 -151
- package/tools/invite.js +8 -21
- package/tools/migrate.js +27 -24
- package/tools/multiplayer-game.js +50 -40
- package/tools/{_deprecated/mute.js → mute.js} +4 -3
- package/tools/notifications.js +58 -48
- package/tools/observe.js +12 -15
- package/tools/onboarding.js +8 -11
- package/tools/open.js +13 -144
- package/tools/party-game.js +23 -12
- package/tools/patterns.js +2 -1
- package/tools/ping.js +5 -7
- package/tools/react.js +28 -30
- package/tools/{_deprecated/recall.js → recall.js} +5 -10
- package/tools/release.js +4 -2
- package/tools/{_deprecated/remember.js → remember.js} +4 -6
- package/tools/report.js +2 -2
- package/tools/request.js +6 -26
- package/tools/reserve.js +1 -1
- package/tools/session-fork.js +97 -0
- package/tools/session-save.js +109 -0
- package/tools/settings.js +30 -99
- package/tools/ship.js +74 -56
- package/tools/{_deprecated/skills-exchange.js → skills-exchange.js} +38 -39
- package/tools/social-inbox.js +22 -28
- package/tools/social-post.js +24 -27
- package/tools/solo-game.js +54 -46
- package/tools/start.js +14 -148
- package/tools/status.js +21 -68
- package/tools/submit.js +4 -2
- package/tools/suggest-tags.js +36 -33
- package/tools/summarize.js +19 -16
- package/tools/tag-suggestions.js +72 -73
- package/tools/test.js +1 -1
- package/tools/{_deprecated/tictactoe.js → tictactoe.js} +26 -26
- package/tools/token.js +4 -4
- package/tools/update.js +1 -2
- package/tools/watch.js +132 -112
- package/tools/who.js +20 -40
- package/tools/{_deprecated/wordassociation.js → wordassociation.js} +23 -20
- package/tools/workshop-buddy.js +52 -53
- package/tools/x-mentions.js +0 -1
- package/tools/x-reply.js +0 -1
- package/twitter.js +14 -20
- package/version.json +8 -10
- package/analytics.js +0 -107
- package/auth-store.js +0 -148
- package/auto-update.js +0 -130
- package/bridges/bridge-monitor.js +0 -388
- package/bridges/discord-bot.js +0 -431
- package/bridges/farcaster.js +0 -299
- package/bridges/telegram.js +0 -261
- package/bridges/webhook-health.js +0 -420
- package/bridges/webhook-server.js +0 -437
- package/bridges/whatsapp.js +0 -441
- package/bridges/x-webhook.js +0 -423
- package/games/arcade.js +0 -406
- package/games/chess.js +0 -451
- package/games/colorguess.js +0 -343
- package/games/crossword-words.js +0 -171
- package/games/crossword.js +0 -461
- package/games/drawing.js +0 -347
- package/games/gameroulette.js +0 -300
- package/games/gamerouter.js +0 -336
- package/games/gamestatus.js +0 -337
- package/games/guessnumber.js +0 -209
- package/games/hangman.js +0 -279
- package/games/memory.js +0 -338
- package/games/multiplayer-tictactoe.js +0 -389
- package/games/pixelart.js +0 -399
- package/games/quickduel.js +0 -354
- package/games/riddle.js +0 -371
- package/games/rockpaperscissors.js +0 -291
- package/games/snake.js +0 -406
- package/games/storybuilder.js +0 -343
- package/games/tictactoe.js +0 -345
- package/games/twentyquestions.js +0 -286
- package/games/twotruths.js +0 -207
- package/games/werewolf.js +0 -508
- package/games/wordassociation.js +0 -247
- package/games/wordchain.js +0 -135
- package/intelligence/interests.js +0 -369
- package/notification-emitter.js +0 -77
- package/setup.js +0 -480
- package/smart-inbox.js +0 -276
- package/tools/_deprecated/auto-suggest-connections.js +0 -304
- package/tools/_deprecated/bootstrap-skills.js +0 -231
- package/tools/_deprecated/bridge-dashboard.js +0 -342
- package/tools/_deprecated/bridge-health.js +0 -400
- package/tools/_deprecated/bridge-live.js +0 -384
- package/tools/_deprecated/bridges.js +0 -383
- package/tools/_deprecated/colorguess.js +0 -281
- package/tools/_deprecated/discover-insights.js +0 -379
- package/tools/_deprecated/discover-momentum.js +0 -256
- package/tools/_deprecated/discovery-analytics.js +0 -345
- package/tools/_deprecated/discovery-auto-suggest.js +0 -275
- package/tools/_deprecated/discovery-bootstrap.js +0 -267
- package/tools/_deprecated/discovery-daily.js +0 -375
- package/tools/_deprecated/discovery-dashboard.js +0 -385
- package/tools/_deprecated/discovery-digest.js +0 -314
- package/tools/_deprecated/discovery-hub.js +0 -357
- package/tools/_deprecated/discovery-insights.js +0 -384
- package/tools/_deprecated/discovery-momentum.js +0 -281
- package/tools/_deprecated/discovery-monitor.js +0 -319
- package/tools/_deprecated/discovery-proactive.js +0 -300
- package/tools/_deprecated/draw.js +0 -317
- package/tools/_deprecated/farcaster.js +0 -307
- package/tools/_deprecated/games-catalog.js +0 -376
- package/tools/_deprecated/games.js +0 -313
- package/tools/_deprecated/guessnumber.js +0 -194
- package/tools/_deprecated/hangman.js +0 -129
- package/tools/_deprecated/multiplayer-tictactoe.js +0 -303
- package/tools/_deprecated/riddle.js +0 -240
- package/tools/_deprecated/run-bootstrap.js +0 -69
- package/tools/_deprecated/skills-analytics.js +0 -349
- package/tools/_deprecated/skills-bootstrap.js +0 -301
- package/tools/_deprecated/skills-dashboard.js +0 -268
- package/tools/_deprecated/skills.js +0 -380
- package/tools/_deprecated/smart-intro.js +0 -353
- package/tools/_deprecated/storybuilder.js +0 -331
- package/tools/_deprecated/telegram-bot.js +0 -183
- package/tools/_deprecated/telegram-setup.js +0 -214
- package/tools/_deprecated/twentyquestions.js +0 -143
- package/tools/_shared.js +0 -234
- package/tools/_work-context.js +0 -338
- package/tools/_work-context.manual-test.js +0 -199
- package/tools/_work-context.test.js +0 -260
- package/tools/activity.js +0 -220
- package/tools/agent-treasury.js +0 -288
- package/tools/analytics.js +0 -191
- package/tools/approve.js +0 -197
- package/tools/arcade.js +0 -173
- package/tools/artifacts-price.js +0 -107
- package/tools/ask-expert.js +0 -160
- package/tools/available.js +0 -120
- package/tools/become-expert.js +0 -150
- package/tools/broadcast.js +0 -325
- package/tools/chat.js +0 -202
- package/tools/collaborative-drawing.js +0 -286
- package/tools/connection-status.js +0 -178
- package/tools/earnings.js +0 -126
- package/tools/friends.js +0 -207
- package/tools/genesis.js +0 -233
- package/tools/gig-browse.js +0 -206
- package/tools/gig-complete.js +0 -144
- package/tools/health.js +0 -87
- package/tools/leaderboard.js +0 -117
- package/tools/lib/git-apply.js +0 -206
- package/tools/lib/git-bundle.js +0 -407
- package/tools/mint.js +0 -377
- package/tools/plan.js +0 -225
- package/tools/profile.js +0 -219
- package/tools/proof-of-work.js +0 -144
- package/tools/pulse.js +0 -218
- package/tools/reply.js +0 -166
- package/tools/reputation.js +0 -175
- package/tools/schedule.js +0 -367
- package/tools/search-messages.js +0 -123
- package/tools/session.js +0 -467
- package/tools/session_price.js +0 -128
- package/tools/smart-check.js +0 -201
- package/tools/social-processor.js +0 -445
- package/tools/streak.js +0 -147
- package/tools/stuck.js +0 -297
- package/tools/subscribe.js +0 -148
- package/tools/subscriptions.js +0 -134
- package/tools/tip.js +0 -193
- package/tools/wallet.js +0 -269
- package/tools/webhook-test.js +0 -388
- package/tools/withdraw.js +0 -145
- package/tools/work-summary.js +0 -96
- package/tools/workshop.js +0 -327
- /package/tools/{l2-bridge.js → _experimental/l2-bridge.js} +0 -0
- /package/tools/{l2.js → _experimental/l2.js} +0 -0
- /package/tools/{_deprecated/away.js → away.js} +0 -0
package/tools/admin-inbox.js
CHANGED
|
@@ -11,9 +11,9 @@
|
|
|
11
11
|
*/
|
|
12
12
|
|
|
13
13
|
const config = require('../config');
|
|
14
|
-
const { header, divider, formatTimeAgo, truncate } = require('./_shared');
|
|
14
|
+
const { header, divider, formatTimeAgo, truncate, debug } = require('./_shared');
|
|
15
15
|
|
|
16
|
-
const API_URL =
|
|
16
|
+
const API_URL = config.getApiUrl();
|
|
17
17
|
|
|
18
18
|
const definition = {
|
|
19
19
|
name: 'vibe_admin_inbox',
|
|
@@ -90,15 +90,12 @@ Run \`vibe init\` first to set your handle.`
|
|
|
90
90
|
|
|
91
91
|
async function viewInbox({ account, limit, adminToken }) {
|
|
92
92
|
try {
|
|
93
|
-
const response = await fetch(
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
'Authorization': `Bearer ${adminToken}`,
|
|
98
|
-
'Content-Type': 'application/json'
|
|
99
|
-
}
|
|
93
|
+
const response = await fetch(`${API_URL}/api/admin/system-inbox?account=${account}&limit=${limit}`, {
|
|
94
|
+
headers: {
|
|
95
|
+
Authorization: `Bearer ${adminToken}`,
|
|
96
|
+
'Content-Type': 'application/json'
|
|
100
97
|
}
|
|
101
|
-
);
|
|
98
|
+
});
|
|
102
99
|
|
|
103
100
|
if (!response.ok) {
|
|
104
101
|
const error = await response.json().catch(() => ({}));
|
|
@@ -140,9 +137,8 @@ When users reply to @${account}, they'll appear here.`
|
|
|
140
137
|
display += `**Reply as @${account}:** Add \`--as=${account}\``;
|
|
141
138
|
|
|
142
139
|
return { display };
|
|
143
|
-
|
|
144
140
|
} catch (error) {
|
|
145
|
-
|
|
141
|
+
debug('admin-inbox', 'Error:', error);
|
|
146
142
|
return {
|
|
147
143
|
display: `## Error
|
|
148
144
|
|
|
@@ -173,7 +169,7 @@ Usage: \`vibe admin-inbox --reply --to=${to} --text="your message"\``
|
|
|
173
169
|
const response = await fetch(`${API_URL}/api/admin/system-reply`, {
|
|
174
170
|
method: 'POST',
|
|
175
171
|
headers: {
|
|
176
|
-
|
|
172
|
+
Authorization: `Bearer ${adminToken}`,
|
|
177
173
|
'Content-Type': 'application/json'
|
|
178
174
|
},
|
|
179
175
|
body: JSON.stringify({
|
|
@@ -204,9 +200,8 @@ ${response.status === 401 ? '⚠️ Invalid admin token' : error.error || 'Faile
|
|
|
204
200
|
display += `\n_"${truncate(text, 100)}"_`;
|
|
205
201
|
|
|
206
202
|
return { display };
|
|
207
|
-
|
|
208
203
|
} catch (error) {
|
|
209
|
-
|
|
204
|
+
debug('admin-inbox', 'Reply error:', error);
|
|
210
205
|
return {
|
|
211
206
|
display: `## Error
|
|
212
207
|
|
package/tools/agents.js
CHANGED
|
@@ -23,7 +23,7 @@ const definition = {
|
|
|
23
23
|
|
|
24
24
|
// Known agents with descriptions (fallback when API doesn't have details)
|
|
25
25
|
const KNOWN_AGENTS = {
|
|
26
|
-
|
|
26
|
+
echo: {
|
|
27
27
|
role: 'Feedback & Welcome',
|
|
28
28
|
description: 'Welcomes newcomers, answers questions, collects feedback'
|
|
29
29
|
},
|
package/tools/artifact-create.js
CHANGED
|
@@ -2,16 +2,17 @@
|
|
|
2
2
|
* vibe_create_artifact - Create social artifacts from conversations
|
|
3
3
|
*
|
|
4
4
|
* Artifacts are first-class objects with provenance, permissions, and social context.
|
|
5
|
-
* They can be guides, learnings,
|
|
5
|
+
* They can be guides, learnings, or workspaces - all shareable via DM.
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
8
|
const config = require('../config');
|
|
9
9
|
const store = require('../store');
|
|
10
|
-
const { requireInit } = require('./_shared');
|
|
10
|
+
const { requireInit, normalizeHandle, debug } = require('./_shared');
|
|
11
11
|
|
|
12
12
|
const definition = {
|
|
13
13
|
name: 'vibe_create_artifact',
|
|
14
|
-
description:
|
|
14
|
+
description:
|
|
15
|
+
'Create a social artifact (guide, learning, workspace) from conversation or memory. Artifacts are first-class objects with provenance and can be shared via DM.',
|
|
15
16
|
inputSchema: {
|
|
16
17
|
type: 'object',
|
|
17
18
|
properties: {
|
|
@@ -25,7 +26,7 @@ const definition = {
|
|
|
25
26
|
},
|
|
26
27
|
template: {
|
|
27
28
|
type: 'string',
|
|
28
|
-
enum: ['guide', 'learning', 'workspace'
|
|
29
|
+
enum: ['guide', 'learning', 'workspace'],
|
|
29
30
|
description: 'Structural template to use'
|
|
30
31
|
},
|
|
31
32
|
content: {
|
|
@@ -131,7 +132,7 @@ async function handler(args) {
|
|
|
131
132
|
if (personalize === 'recipient_opt_in' && recipient) {
|
|
132
133
|
// TODO: Check if recipient has granted permission
|
|
133
134
|
// For now, downgrade to creator_only
|
|
134
|
-
|
|
135
|
+
debug('artifact-create', 'recipient_opt_in not yet implemented, using creator_only');
|
|
135
136
|
}
|
|
136
137
|
|
|
137
138
|
// Build artifact object
|
|
@@ -140,8 +141,8 @@ async function handler(args) {
|
|
|
140
141
|
|
|
141
142
|
// Build audience list (always includes creator and recipient)
|
|
142
143
|
const fullAudience = new Set([creator]);
|
|
143
|
-
if (recipient) fullAudience.add(recipient
|
|
144
|
-
audience.forEach(h => fullAudience.add(h
|
|
144
|
+
if (recipient) fullAudience.add(normalizeHandle(recipient));
|
|
145
|
+
audience.forEach(h => fullAudience.add(normalizeHandle(h)));
|
|
145
146
|
|
|
146
147
|
const artifact = {
|
|
147
148
|
id: artifactId,
|
|
@@ -152,7 +153,7 @@ async function handler(args) {
|
|
|
152
153
|
|
|
153
154
|
// Social metadata
|
|
154
155
|
created_by: creator,
|
|
155
|
-
created_for: recipient ? recipient
|
|
156
|
+
created_for: recipient ? normalizeHandle(recipient) : null,
|
|
156
157
|
thread_id,
|
|
157
158
|
|
|
158
159
|
// Privacy
|
|
@@ -176,17 +177,6 @@ async function handler(args) {
|
|
|
176
177
|
forked_from: null
|
|
177
178
|
};
|
|
178
179
|
|
|
179
|
-
// Add approval workflow for plan templates
|
|
180
|
-
if (template === 'plan') {
|
|
181
|
-
artifact.approval = {
|
|
182
|
-
status: 'pending',
|
|
183
|
-
requested_from: recipient ? [recipient.replace('@', '')] : [],
|
|
184
|
-
requires: 'any', // 'any' or 'all'
|
|
185
|
-
responses: [],
|
|
186
|
-
resolved_at: null
|
|
187
|
-
};
|
|
188
|
-
}
|
|
189
|
-
|
|
190
180
|
// Store artifact
|
|
191
181
|
const storeResult = await store.createArtifact(artifact);
|
|
192
182
|
|
|
@@ -201,7 +191,7 @@ async function handler(args) {
|
|
|
201
191
|
// Auto-share via DM if requested
|
|
202
192
|
if (autoShare && recipient) {
|
|
203
193
|
try {
|
|
204
|
-
const dmResult = await store.sendArtifactCard(recipient
|
|
194
|
+
const dmResult = await store.sendArtifactCard(normalizeHandle(recipient), {
|
|
205
195
|
type: 'artifact_card',
|
|
206
196
|
artifact_id: artifactId,
|
|
207
197
|
url: artifactUrl,
|
|
@@ -210,16 +200,16 @@ async function handler(args) {
|
|
|
210
200
|
creator,
|
|
211
201
|
created_for: recipient,
|
|
212
202
|
template,
|
|
213
|
-
snippet: content.blocks[0]?.text || content.blocks[0]?.markdown || ''
|
|
203
|
+
snippet: content.blocks[0]?.text || content.blocks[0]?.markdown || ''
|
|
214
204
|
},
|
|
215
205
|
context: thread_id ? `From your conversation thread` : `Created by ${creator}`
|
|
216
206
|
});
|
|
217
207
|
|
|
218
208
|
if (!dmResult.success) {
|
|
219
|
-
|
|
209
|
+
debug('artifact-create', 'Failed to send DM:', dmResult.error);
|
|
220
210
|
}
|
|
221
211
|
} catch (e) {
|
|
222
|
-
|
|
212
|
+
debug('artifact-create', 'DM send error:', e.message);
|
|
223
213
|
}
|
|
224
214
|
}
|
|
225
215
|
|
package/tools/artifact-view.js
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
const config = require('../config');
|
|
8
8
|
const store = require('../store');
|
|
9
|
-
const { requireInit } = require('./_shared');
|
|
9
|
+
const { requireInit, debug } = require('./_shared');
|
|
10
10
|
|
|
11
11
|
/**
|
|
12
12
|
* Helper function to get artifact by slug (for use in other tools)
|
|
@@ -33,7 +33,7 @@ async function getArtifactBySlug(slug) {
|
|
|
33
33
|
|
|
34
34
|
return null;
|
|
35
35
|
} catch (error) {
|
|
36
|
-
|
|
36
|
+
debug('artifact-view', 'Error fetching artifact:', error);
|
|
37
37
|
return null;
|
|
38
38
|
}
|
|
39
39
|
}
|
|
@@ -145,9 +145,9 @@ async function handler(args) {
|
|
|
145
145
|
|
|
146
146
|
if (artifacts.length === 0) {
|
|
147
147
|
const messages = {
|
|
148
|
-
|
|
148
|
+
mine: "You haven't created any artifacts yet.",
|
|
149
149
|
'for-me': 'No artifacts have been created for you yet.',
|
|
150
|
-
|
|
150
|
+
network: 'No artifacts visible in your network yet.'
|
|
151
151
|
};
|
|
152
152
|
return {
|
|
153
153
|
display: `📦 ${messages[list]}\n\nCreate one with \`vibe_create_artifact\``
|
|
@@ -12,7 +12,7 @@ const { getProactiveSummary, markBack } = require('../intelligence/proactive');
|
|
|
12
12
|
|
|
13
13
|
const definition = {
|
|
14
14
|
name: 'vibe_back',
|
|
15
|
-
description:
|
|
15
|
+
description: "Clear your away status. You're back!",
|
|
16
16
|
inputSchema: {
|
|
17
17
|
type: 'object',
|
|
18
18
|
properties: {}
|
package/tools/bye.js
CHANGED
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
* The summary appears locally before sign-off.
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
+
const { requireInit } = require('./_shared');
|
|
8
9
|
const config = require('../config');
|
|
9
10
|
const store = require('../store');
|
|
10
11
|
const summarize = require('./summarize');
|
|
@@ -20,11 +21,8 @@ const definition = {
|
|
|
20
21
|
};
|
|
21
22
|
|
|
22
23
|
async function handler(args) {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
display: 'No active session to end.'
|
|
26
|
-
};
|
|
27
|
-
}
|
|
24
|
+
const initCheck = requireInit();
|
|
25
|
+
if (initCheck) return initCheck;
|
|
28
26
|
|
|
29
27
|
const myHandle = config.getHandle();
|
|
30
28
|
|
package/tools/consent.js
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
|
|
10
10
|
const config = require('../config');
|
|
11
11
|
const store = require('../store');
|
|
12
|
-
const { requireInit, header, emptyState, formatTimeAgo, divider } = require('./_shared');
|
|
12
|
+
const { requireInit, normalizeHandle, header, emptyState, formatTimeAgo, divider } = require('./_shared');
|
|
13
13
|
|
|
14
14
|
const definition = {
|
|
15
15
|
name: 'vibe_consent',
|
|
@@ -76,7 +76,7 @@ async function handler(args) {
|
|
|
76
76
|
};
|
|
77
77
|
}
|
|
78
78
|
|
|
79
|
-
const targetHandle = handle
|
|
79
|
+
const targetHandle = normalizeHandle(handle);
|
|
80
80
|
|
|
81
81
|
if (action === 'accept') {
|
|
82
82
|
const result = await store.acceptConsent(targetHandle, myHandle);
|
package/tools/context.js
CHANGED
|
@@ -9,12 +9,13 @@
|
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
11
|
const { execSync } = require('child_process');
|
|
12
|
+
const { requireInit } = require('./_shared');
|
|
12
13
|
const config = require('../config');
|
|
13
14
|
const store = require('../store');
|
|
14
15
|
|
|
15
16
|
const definition = {
|
|
16
17
|
name: 'vibe_context',
|
|
17
|
-
description:
|
|
18
|
+
description: "Share what you're working on (file, branch, error). Ephemeral — gone when you go offline.",
|
|
18
19
|
inputSchema: {
|
|
19
20
|
type: 'object',
|
|
20
21
|
properties: {
|
|
@@ -24,7 +25,7 @@ const definition = {
|
|
|
24
25
|
},
|
|
25
26
|
error: {
|
|
26
27
|
type: 'string',
|
|
27
|
-
description:
|
|
28
|
+
description: "Recent error you're debugging (optional)"
|
|
28
29
|
},
|
|
29
30
|
note: {
|
|
30
31
|
type: 'string',
|
|
@@ -55,11 +56,8 @@ function getGitRoot() {
|
|
|
55
56
|
}
|
|
56
57
|
|
|
57
58
|
async function handler(args) {
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
display: 'Run `vibe init` first to set your identity.'
|
|
61
|
-
};
|
|
62
|
-
}
|
|
59
|
+
const initCheck = requireInit();
|
|
60
|
+
if (initCheck) return initCheck;
|
|
63
61
|
|
|
64
62
|
const handle = config.getHandle();
|
|
65
63
|
const { file, error, note, clear } = args;
|
|
@@ -71,8 +69,8 @@ async function handler(args) {
|
|
|
71
69
|
branch: null,
|
|
72
70
|
error: null,
|
|
73
71
|
note: null
|
|
74
|
-
});
|
|
75
|
-
return { display:
|
|
72
|
+
}, 'mcp');
|
|
73
|
+
return { display: "Context cleared. Others no longer see what you're working on." };
|
|
76
74
|
}
|
|
77
75
|
|
|
78
76
|
// Auto-detect git info
|
|
@@ -113,7 +111,8 @@ vibe context --clear
|
|
|
113
111
|
}
|
|
114
112
|
|
|
115
113
|
// Send to presence
|
|
116
|
-
|
|
114
|
+
// Phase 1 Presence Bridge: include source so platform knows this came from MCP
|
|
115
|
+
await store.heartbeat(handle, config.getOneLiner(), context, 'mcp');
|
|
117
116
|
|
|
118
117
|
// Build confirmation display
|
|
119
118
|
let display = '## Context Shared\n\n';
|
package/tools/crossword.js
CHANGED
|
@@ -25,7 +25,7 @@ const definition = {
|
|
|
25
25
|
properties: {
|
|
26
26
|
action: {
|
|
27
27
|
type: 'string',
|
|
28
|
-
description:
|
|
28
|
+
description: "Action: daily (join today's puzzle), create, join, play, hint, status",
|
|
29
29
|
enum: ['daily', 'create', 'join', 'play', 'hint', 'status', 'list']
|
|
30
30
|
},
|
|
31
31
|
room: {
|
|
@@ -344,7 +344,8 @@ Then restart Claude Code.`
|
|
|
344
344
|
|
|
345
345
|
if (rooms.length === 0) {
|
|
346
346
|
return {
|
|
347
|
-
display:
|
|
347
|
+
display:
|
|
348
|
+
"**No active crossword rooms.**\n\nStart one:\n- `crossword daily` - Join today's puzzle\n- `crossword create` - Create a new room"
|
|
348
349
|
};
|
|
349
350
|
}
|
|
350
351
|
|