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 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
@@ -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;AAE7E,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE,IAAI,CAAC;IACV,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,GAAG,IAAI,CAAC;IACtG,eAAe,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,GAAG,IAAI,CAAC;IAC7F,sBAAsB,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IACnF,kBAAkB,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACnH,gBAAgB,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAC9D,UAAU,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,GAAG,IAAI,CAAC;IACnF,eAAe,CAAC,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC1E;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,SAAS,CAAC;IACxB,eAAe,EAAE;QAAE,IAAI,EAAE,YAAY,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACtD,UAAU,EAAE,MAAM,CAAC;CACpB;AA6JD,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,GAAE,IAAiB,GAAG,WAAW,CA+F/G;AAMD,wBAAgB,WAAW,CAAC,MAAM,EAAE,WAAW,EAAE,QAAQ,CAAC,EAAE,SAAS,GAAG,SAAS,CAKhF;AAMD,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,GAAE,YAAiB,GAAG,WAAW,CAsI1F"}
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
- function renderWyrm(mood) {
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 art = renderWyrm(mood);
457
+ const size = opts.size ?? 'full';
458
+ const art = renderWyrm(mood, size);
302
459
  if (art) {
303
- lines.push('```');
304
- lines.push(art);
305
- lines.push('```');
306
- lines.push('');
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
- lines.push(pickPhrase(GREETINGS[persona][timeOfDay(inputs.now)], inputs.projectId, inputs.now));
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 = 115;
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
- const buddyTools = tools.filter((t) => /^(buddy_|.*_buddy)$/i.test(t.name));
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, { project_id: projectId });
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 when omitted. Token-frugal: <800 normal, <300 quiet. Federates with other registered MCPs that expose `*_buddy` tools.",
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
- federate: { type: "boolean", description: "If true, query other registered MCPs with *_buddy tools and fold their responses in. Default: true if any are registered." },
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": {