wyrm-mcp 5.7.3 → 5.8.0
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/dist/buddy.d.ts +29 -0
- package/dist/buddy.d.ts.map +1 -1
- package/dist/buddy.js +173 -8
- package/dist/buddy.js.map +1 -1
- package/dist/index.js +50 -8
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/buddy.d.ts
CHANGED
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
import type Database from 'better-sqlite3';
|
|
17
17
|
export type BuddyMood = 'normal' | 'celebratory' | 'stuck' | 'quiet';
|
|
18
18
|
export type BuddyPersona = 'wyrm' | 'drogo' | 'berlin' | 'sumair' | 'custom';
|
|
19
|
+
export type BuddySize = 'full' | 'compact' | 'mini';
|
|
19
20
|
export interface BuddyInputs {
|
|
20
21
|
projectId: number;
|
|
21
22
|
projectName: string;
|
|
@@ -70,12 +71,40 @@ export interface BuddyOutput {
|
|
|
70
71
|
};
|
|
71
72
|
dataPoints: number;
|
|
72
73
|
}
|
|
74
|
+
export interface PeerBuddyRequest {
|
|
75
|
+
from_buddy?: string;
|
|
76
|
+
project_hint?: string;
|
|
77
|
+
mood_hint?: BuddyMood;
|
|
78
|
+
size?: BuddySize;
|
|
79
|
+
format?: 'markdown' | 'json';
|
|
80
|
+
}
|
|
81
|
+
export interface PeerBuddyJsonReply {
|
|
82
|
+
buddy: {
|
|
83
|
+
name: string;
|
|
84
|
+
version: string;
|
|
85
|
+
protocol: string;
|
|
86
|
+
mood: BuddyMood;
|
|
87
|
+
summary: string;
|
|
88
|
+
highlights: Array<{
|
|
89
|
+
kind: string;
|
|
90
|
+
id: string;
|
|
91
|
+
title: string;
|
|
92
|
+
}>;
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
export declare const BUDDY_PROTOCOL_VERSION = "1.0";
|
|
96
|
+
export declare function buildPeerBuddyReply(db: Database.Database, req: PeerBuddyRequest, wyrmVersion: string): {
|
|
97
|
+
markdown: string;
|
|
98
|
+
json: PeerBuddyJsonReply;
|
|
99
|
+
cycleDetected: boolean;
|
|
100
|
+
};
|
|
73
101
|
export declare function gatherBuddyInputs(db: Database.Database, projectId: number, now?: Date): BuddyInputs;
|
|
74
102
|
export declare function resolveMood(inputs: BuddyInputs, override?: BuddyMood): BuddyMood;
|
|
75
103
|
export interface BuddyOptions {
|
|
76
104
|
mood?: BuddyMood;
|
|
77
105
|
persona?: BuddyPersona;
|
|
78
106
|
personaName?: string;
|
|
107
|
+
size?: BuddySize;
|
|
79
108
|
}
|
|
80
109
|
export declare function buildBuddyOutput(inputs: BuddyInputs, opts?: BuddyOptions): BuddyOutput;
|
|
81
110
|
//# sourceMappingURL=buddy.d.ts.map
|
package/dist/buddy.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buddy.d.ts","sourceRoot":"","sources":["../src/buddy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAE3C,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,aAAa,GAAG,OAAO,GAAG,OAAO,CAAC;AACrE,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"buddy.d.ts","sourceRoot":"","sources":["../src/buddy.ts"],"names":[],"mappings":"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"}
|
package/dist/buddy.js
CHANGED
|
@@ -52,12 +52,168 @@ function wyrmEyeLine(mood) {
|
|
|
52
52
|
return null;
|
|
53
53
|
}
|
|
54
54
|
}
|
|
55
|
-
|
|
55
|
+
export const BUDDY_PROTOCOL_VERSION = '1.0';
|
|
56
|
+
export function buildPeerBuddyReply(db, req, wyrmVersion) {
|
|
57
|
+
// Cycle protection: if we're being called back as part of our own chain.
|
|
58
|
+
const cycleDetected = (req.from_buddy ?? '').toLowerCase().startsWith('wyrm');
|
|
59
|
+
// Try to resolve project_hint to a real Wyrm project; fall back to global view.
|
|
60
|
+
let project = null;
|
|
61
|
+
if (req.project_hint && !cycleDetected) {
|
|
62
|
+
try {
|
|
63
|
+
// Try as path first
|
|
64
|
+
const byPath = db.prepare('SELECT id, name FROM projects WHERE path = ?').get(req.project_hint);
|
|
65
|
+
if (byPath) {
|
|
66
|
+
project = byPath;
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
// Try as name
|
|
70
|
+
const byName = db.prepare('SELECT id, name FROM projects WHERE name = ? COLLATE NOCASE LIMIT 1').get(req.project_hint);
|
|
71
|
+
if (byName)
|
|
72
|
+
project = byName;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
catch { /* fall through to global */ }
|
|
76
|
+
}
|
|
77
|
+
const size = req.size ?? 'compact';
|
|
78
|
+
const mood = req.mood_hint ?? 'normal';
|
|
79
|
+
// Build the highlights
|
|
80
|
+
const highlights = [];
|
|
81
|
+
if (project) {
|
|
82
|
+
const inputs = gatherBuddyInputs(db, project.id);
|
|
83
|
+
if (inputs.topPendingQuest) {
|
|
84
|
+
highlights.push({
|
|
85
|
+
kind: 'quest',
|
|
86
|
+
id: `quest:${inputs.topPendingQuest.id}`,
|
|
87
|
+
title: inputs.topPendingQuest.title,
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
if (inputs.recentlyCompletedQuest) {
|
|
91
|
+
highlights.push({
|
|
92
|
+
kind: 'completion',
|
|
93
|
+
id: `quest:${inputs.recentlyCompletedQuest.id}`,
|
|
94
|
+
title: inputs.recentlyCompletedQuest.title,
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
if (inputs.activeGoal) {
|
|
98
|
+
highlights.push({
|
|
99
|
+
kind: 'goal',
|
|
100
|
+
id: `goal:${inputs.activeGoal.id}`,
|
|
101
|
+
title: inputs.activeGoal.title,
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
if (inputs.unresolvedFailures[0]) {
|
|
105
|
+
highlights.push({
|
|
106
|
+
kind: 'failure',
|
|
107
|
+
id: `failure:${inputs.unresolvedFailures[0].id}`,
|
|
108
|
+
title: inputs.unresolvedFailures[0].description.slice(0, 60),
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
// Global view: top pending quest across all projects, agent status
|
|
114
|
+
try {
|
|
115
|
+
const row = db.prepare(`SELECT id, title, project_id FROM quests WHERE status='pending'
|
|
116
|
+
ORDER BY CASE priority WHEN 'critical' THEN 0 WHEN 'high' THEN 1 WHEN 'medium' THEN 2 ELSE 3 END LIMIT 1`).get();
|
|
117
|
+
if (row)
|
|
118
|
+
highlights.push({ kind: 'quest', id: `quest:${row.id}`, title: row.title });
|
|
119
|
+
}
|
|
120
|
+
catch { /* ignore */ }
|
|
121
|
+
}
|
|
122
|
+
// Build the summary text
|
|
123
|
+
let summary;
|
|
124
|
+
if (cycleDetected) {
|
|
125
|
+
summary = "(cycle — Wyrm already in the call chain, skipping)";
|
|
126
|
+
}
|
|
127
|
+
else if (project) {
|
|
128
|
+
const n = highlights.length;
|
|
129
|
+
summary = `Wyrm sees ${n} highlight${n === 1 ? '' : 's'} for project ${project.name}.`;
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
summary = `Wyrm watching across ${countProjects(db)} projects.`;
|
|
133
|
+
}
|
|
134
|
+
// Markdown rendering — sized + mood-aware
|
|
135
|
+
let markdown;
|
|
136
|
+
if (cycleDetected) {
|
|
137
|
+
markdown = '_(wyrm: cycle detected, no reply)_';
|
|
138
|
+
}
|
|
139
|
+
else if (size === 'mini') {
|
|
140
|
+
markdown = `<--==(${mood === 'celebratory' ? '^' : mood === 'stuck' ? '-' : 'o'})~~~~~~__ ${summary}`;
|
|
141
|
+
}
|
|
142
|
+
else if (size === 'compact') {
|
|
143
|
+
const lines = ['🐉 **wyrm:** ' + summary];
|
|
144
|
+
for (const h of highlights.slice(0, 3)) {
|
|
145
|
+
lines.push(`- \`${h.id}\` ${h.title}`);
|
|
146
|
+
}
|
|
147
|
+
markdown = lines.join('\n');
|
|
148
|
+
}
|
|
149
|
+
else {
|
|
150
|
+
// full
|
|
151
|
+
const lines = ['🐉 **wyrm** (' + (project?.name ?? 'global') + ')'];
|
|
152
|
+
lines.push('');
|
|
153
|
+
lines.push(summary);
|
|
154
|
+
if (highlights.length > 0) {
|
|
155
|
+
lines.push('');
|
|
156
|
+
for (const h of highlights)
|
|
157
|
+
lines.push(`- \`${h.id}\` ${h.title}`);
|
|
158
|
+
}
|
|
159
|
+
markdown = lines.join('\n');
|
|
160
|
+
}
|
|
161
|
+
const json = {
|
|
162
|
+
buddy: {
|
|
163
|
+
name: 'wyrm',
|
|
164
|
+
version: wyrmVersion,
|
|
165
|
+
protocol: BUDDY_PROTOCOL_VERSION,
|
|
166
|
+
mood,
|
|
167
|
+
summary,
|
|
168
|
+
highlights,
|
|
169
|
+
},
|
|
170
|
+
};
|
|
171
|
+
return { markdown, json, cycleDetected };
|
|
172
|
+
}
|
|
173
|
+
function countProjects(db) {
|
|
174
|
+
try {
|
|
175
|
+
const row = db.prepare('SELECT COUNT(*) as n FROM projects').get();
|
|
176
|
+
return row.n;
|
|
177
|
+
}
|
|
178
|
+
catch {
|
|
179
|
+
return 0;
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
// ---------------------------------------------------------------------------
|
|
183
|
+
function renderWyrm(mood, size = 'full') {
|
|
56
184
|
const eye = wyrmEyeLine(mood);
|
|
57
185
|
if (eye === null)
|
|
58
186
|
return '';
|
|
187
|
+
if (size === 'mini')
|
|
188
|
+
return renderWyrmMini(mood);
|
|
189
|
+
if (size === 'compact')
|
|
190
|
+
return renderWyrmCompact(mood);
|
|
59
191
|
return [WYRM_TOP, eye, WYRM_BOTTOM].join('\n');
|
|
60
192
|
}
|
|
193
|
+
/**
|
|
194
|
+
* Compact wyrm — 5 lines, same visual language (flowing tildes + spine).
|
|
195
|
+
* Use for workspace contexts where vertical space is precious. Eye line
|
|
196
|
+
* still carries mood.
|
|
197
|
+
*/
|
|
198
|
+
function renderWyrmCompact(mood) {
|
|
199
|
+
const eyeChar = mood === 'celebratory' ? '^' : mood === 'stuck' ? '-' : 'o';
|
|
200
|
+
const aura = mood === 'celebratory' ? ' *' : mood === 'stuck' ? ' ?' : '';
|
|
201
|
+
return [
|
|
202
|
+
' __--~~==~~--___',
|
|
203
|
+
' .~//==.. ` ` __--~ ~~',
|
|
204
|
+
` _-~${eyeChar}~ \\/ ||\\\\ _/~~-${aura}`,
|
|
205
|
+
' ~==~ | \\\\_ `-~7 -~ || \\',
|
|
206
|
+
' .~--____==-~__--~~',
|
|
207
|
+
].join('\n');
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Mini wyrm — single inline line. Use as a prefix in chat-style outputs
|
|
211
|
+
* or as a status-bar mascot.
|
|
212
|
+
*/
|
|
213
|
+
function renderWyrmMini(mood) {
|
|
214
|
+
const eye = mood === 'celebratory' ? '^' : mood === 'stuck' ? '-' : 'o';
|
|
215
|
+
return `<--==(${eye})~~~~~~__`;
|
|
216
|
+
}
|
|
61
217
|
// ---------------------------------------------------------------------------
|
|
62
218
|
// Phrase library — small, deterministic, no randomness in selection.
|
|
63
219
|
// ---------------------------------------------------------------------------
|
|
@@ -298,16 +454,25 @@ export function buildBuddyOutput(inputs, opts = {}) {
|
|
|
298
454
|
// formal, sumair is warm-words-not-art). Designed per the
|
|
299
455
|
// `professional-ascii-art` skill.
|
|
300
456
|
if (persona === 'wyrm') {
|
|
301
|
-
const
|
|
457
|
+
const size = opts.size ?? 'full';
|
|
458
|
+
const art = renderWyrm(mood, size);
|
|
302
459
|
if (art) {
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
460
|
+
if (size === 'mini') {
|
|
461
|
+
// Mini renders inline as a prefix on the greeting line, not a block.
|
|
462
|
+
// Defer; consumed by the greeting render below.
|
|
463
|
+
}
|
|
464
|
+
else {
|
|
465
|
+
lines.push('```');
|
|
466
|
+
lines.push(art);
|
|
467
|
+
lines.push('```');
|
|
468
|
+
lines.push('');
|
|
469
|
+
}
|
|
307
470
|
}
|
|
308
471
|
}
|
|
309
|
-
// Greeting
|
|
310
|
-
|
|
472
|
+
// Greeting (with optional mini-wyrm inline prefix for the wyrm persona)
|
|
473
|
+
const greeting = pickPhrase(GREETINGS[persona][timeOfDay(inputs.now)], inputs.projectId, inputs.now);
|
|
474
|
+
const useMini = persona === 'wyrm' && opts.size === 'mini';
|
|
475
|
+
lines.push(useMini ? `${renderWyrmMini(mood)} ${greeting}` : greeting);
|
|
311
476
|
lines.push('');
|
|
312
477
|
// Streak (3+ days only)
|
|
313
478
|
if (inputs.streakDays >= 3) {
|
package/dist/buddy.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buddy.js","sourceRoot":"","sources":["../src/buddy.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"buddy.js","sourceRoot":"","sources":["../src/buddy.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -64,14 +64,14 @@ import { spawn as cpSpawn } from "child_process";
|
|
|
64
64
|
import { makeEstimator, applyBudget, resolveBudget } from "./token-budget.js";
|
|
65
65
|
import { loadWeightsFromEnv, score as rankScore } from "./context-ranking.js";
|
|
66
66
|
import { SessionSeen } from "./session-seen.js";
|
|
67
|
-
import { gatherBuddyInputs, buildBuddyOutput } from "./buddy.js";
|
|
67
|
+
import { gatherBuddyInputs, buildBuddyOutput, buildPeerBuddyReply } from "./buddy.js";
|
|
68
68
|
import { fileURLToPath as _versionFileURLToPath } from "url";
|
|
69
69
|
import { dirname as _versionDirname, join as _versionJoin } from "path";
|
|
70
70
|
import { readFileSync as _versionReadFile, existsSync as _versionExists } from "fs";
|
|
71
71
|
// Update when adding/removing MCP tools so wyrm_capabilities reports accurately.
|
|
72
72
|
// The ListToolsRequestSchema handler is the single source of truth at runtime —
|
|
73
73
|
// this constant is just for the self-description and the postinstall pitch.
|
|
74
|
-
const WYRM_TOOL_COUNT =
|
|
74
|
+
const WYRM_TOOL_COUNT = 116;
|
|
75
75
|
// Spec 014 — token budgeting subsystem. Lazy-init on first use.
|
|
76
76
|
const tokenEstimator = makeEstimator();
|
|
77
77
|
const rankWeights = loadWeightsFromEnv();
|
|
@@ -91,6 +91,15 @@ function sessionSeen() {
|
|
|
91
91
|
async function collectExternalBuddyReplies(projectId) {
|
|
92
92
|
const replies = [];
|
|
93
93
|
const servers = mcpClient.list().filter((r) => r.enabled);
|
|
94
|
+
// Identify ourselves for cycle prevention per Buddy Protocol v1.0 §4.
|
|
95
|
+
const fromBuddy = `wyrm@${WYRM_PACKAGE_VERSION}`;
|
|
96
|
+
// Try to give peers context — name of the project the local buddy is on.
|
|
97
|
+
let projectHint;
|
|
98
|
+
try {
|
|
99
|
+
const row = db.getDatabase().prepare('SELECT name FROM projects WHERE id = ?').get(projectId);
|
|
100
|
+
projectHint = row?.name;
|
|
101
|
+
}
|
|
102
|
+
catch { /* fine */ }
|
|
94
103
|
for (const srv of servers) {
|
|
95
104
|
if (replies.length >= 3)
|
|
96
105
|
break;
|
|
@@ -103,12 +112,20 @@ async function collectExternalBuddyReplies(projectId) {
|
|
|
103
112
|
}
|
|
104
113
|
if (!tools)
|
|
105
114
|
continue;
|
|
106
|
-
|
|
115
|
+
// Prefer well-known `buddy` (Buddy Protocol v1.0); fall back to `*_buddy` / `buddy_*` patterns.
|
|
116
|
+
const wellKnown = tools.find((t) => t.name.toLowerCase() === 'buddy');
|
|
117
|
+
const buddyTools = wellKnown
|
|
118
|
+
? [wellKnown]
|
|
119
|
+
: tools.filter((t) => /^(buddy_|.*_buddy)$/i.test(t.name));
|
|
107
120
|
for (const t of buddyTools) {
|
|
108
121
|
if (replies.length >= 3)
|
|
109
122
|
break;
|
|
110
123
|
try {
|
|
111
|
-
const r = await mcpClient.call(srv.server_name, t.name, {
|
|
124
|
+
const r = await mcpClient.call(srv.server_name, t.name, {
|
|
125
|
+
from_buddy: fromBuddy,
|
|
126
|
+
project_hint: projectHint,
|
|
127
|
+
size: 'compact',
|
|
128
|
+
});
|
|
112
129
|
const text = typeof r.result === 'string' ? r.result : JSON.stringify(r.result).slice(0, 800);
|
|
113
130
|
if (text)
|
|
114
131
|
replies.push({ server: srv.server_name, tool: t.name, reply: text });
|
|
@@ -1558,9 +1575,23 @@ server.setRequestHandler(ListToolsRequestSchema, async () => ({
|
|
|
1558
1575
|
required: ["project_path"],
|
|
1559
1576
|
},
|
|
1560
1577
|
},
|
|
1578
|
+
{
|
|
1579
|
+
name: "buddy",
|
|
1580
|
+
description: "Buddy Protocol v1.0 entry point. The well-known name other buddy-compatible MCP servers call to ask Wyrm for a brief, data-grounded status reply. Project-agnostic by default; pass `project_hint` to scope. Returns markdown by default or structured JSON via `format:'json'`. Cycle-protected (won't reply to itself). See the buddy-protocol skill for the full convention.",
|
|
1581
|
+
inputSchema: {
|
|
1582
|
+
type: "object",
|
|
1583
|
+
properties: {
|
|
1584
|
+
from_buddy: { type: "string", description: "Calling buddy's identity (e.g. 'linear-buddy@1.0.0'). Used for cycle prevention." },
|
|
1585
|
+
project_hint: { type: "string", description: "Project path or name. If it resolves to a registered Wyrm project, the reply is scoped to it; otherwise Wyrm returns a global view." },
|
|
1586
|
+
mood_hint: { type: "string", enum: ["normal", "celebratory", "stuck", "quiet"], description: "Calling buddy's mood. Wyrm adapts tone if set." },
|
|
1587
|
+
size: { type: "string", enum: ["full", "compact", "mini"], description: "Output size cap. Default: 'compact' for peer queries." },
|
|
1588
|
+
format: { type: "string", enum: ["markdown", "json"], description: "Output shape. Default: 'markdown'." },
|
|
1589
|
+
},
|
|
1590
|
+
},
|
|
1591
|
+
},
|
|
1561
1592
|
{
|
|
1562
1593
|
name: "wyrm_buddy",
|
|
1563
|
-
description: "Friendly, data-grounded coding companion. Returns a brief greeting + project state + suggested next step sourced entirely from Wyrm's real data. Every claim cites a real DB row ID — no hallucinated encouragement. Personas: wyrm (default, dragon-themed), drogo (gruff), berlin (precise), sumair (warm), custom. Moods: normal / celebratory / stuck / quiet — auto-detected
|
|
1594
|
+
description: "Friendly, data-grounded coding companion. Returns a brief greeting + project state + suggested next step sourced entirely from Wyrm's real data. Every claim cites a real DB row ID — no hallucinated encouragement. Personas: wyrm (default, dragon-themed), drogo (gruff), berlin (precise), sumair (warm), custom. Moods: normal / celebratory / stuck / quiet — auto-detected. Sizes: full (10-line PhantomDragon-style mascot), compact (5-line workspace-friendly), mini (single-line inline prefix). Federates with other registered MCPs that expose `buddy`, `*_buddy`, or `buddy_*` tools — their replies fold into a 'From other buddies' section.",
|
|
1564
1595
|
inputSchema: {
|
|
1565
1596
|
type: "object",
|
|
1566
1597
|
properties: {
|
|
@@ -1568,7 +1599,8 @@ server.setRequestHandler(ListToolsRequestSchema, async () => ({
|
|
|
1568
1599
|
mood: { type: "string", enum: ["normal", "celebratory", "stuck", "quiet"], description: "Override the auto-detected mood." },
|
|
1569
1600
|
persona: { type: "string", enum: ["wyrm", "drogo", "berlin", "sumair", "custom"], description: "Voice. Default: WYRM_BUDDY_DEFAULT_PERSONA env or 'wyrm'." },
|
|
1570
1601
|
persona_name: { type: "string", description: "Required when persona === 'custom'." },
|
|
1571
|
-
|
|
1602
|
+
size: { type: "string", enum: ["full", "compact", "mini"], description: "Mascot size. 'full' = 10-line head+shoulder banner (default), 'compact' = 5-line workspace-friendly, 'mini' = single-line inline prefix on the greeting." },
|
|
1603
|
+
federate: { type: "boolean", description: "Query other registered MCPs with *_buddy tools and fold their replies in. Default: true if any are registered." },
|
|
1572
1604
|
},
|
|
1573
1605
|
},
|
|
1574
1606
|
},
|
|
@@ -4347,8 +4379,18 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
4347
4379
|
}
|
|
4348
4380
|
return { content: [{ type: "text", text: injText }] };
|
|
4349
4381
|
}
|
|
4382
|
+
case "buddy": {
|
|
4383
|
+
// Buddy Protocol v1.0 — peer entry point. Other MCP servers' buddies
|
|
4384
|
+
// call this. Project-agnostic by default; project_hint scopes it.
|
|
4385
|
+
const peerReq = args;
|
|
4386
|
+
const reply = buildPeerBuddyReply(db.getDatabase(), peerReq, WYRM_PACKAGE_VERSION);
|
|
4387
|
+
if (peerReq.format === 'json') {
|
|
4388
|
+
return { content: [{ type: 'text', text: JSON.stringify(reply.json, null, 2) }] };
|
|
4389
|
+
}
|
|
4390
|
+
return { content: [{ type: 'text', text: reply.markdown }] };
|
|
4391
|
+
}
|
|
4350
4392
|
case "wyrm_buddy": {
|
|
4351
|
-
const { project_path: bdPath, mood: bdMood, persona: bdPersona, persona_name: bdPersonaName, federate: bdFederate } = args;
|
|
4393
|
+
const { project_path: bdPath, mood: bdMood, persona: bdPersona, persona_name: bdPersonaName, federate: bdFederate, size: bdSize } = args;
|
|
4352
4394
|
// Resolve project: explicit path > cwd > nothing
|
|
4353
4395
|
const cwd = bdPath ?? process.cwd();
|
|
4354
4396
|
const project = db.getProject(cwd);
|
|
@@ -4374,7 +4416,7 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
4374
4416
|
// Federation is best-effort. Don't fail the local buddy on a remote hiccup.
|
|
4375
4417
|
}
|
|
4376
4418
|
}
|
|
4377
|
-
const out = buildBuddyOutput(inputs, { mood: bdMood, persona, personaName: bdPersonaName });
|
|
4419
|
+
const out = buildBuddyOutput(inputs, { mood: bdMood, persona, personaName: bdPersonaName, size: bdSize });
|
|
4378
4420
|
return { content: [{ type: 'text', text: out.markdown }] };
|
|
4379
4421
|
}
|
|
4380
4422
|
case "wyrm_capabilities": {
|