@moxxy/plugin-mcp 0.28.0 → 0.29.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.
@@ -1 +1 @@
1
- {"version":3,"file":"config-io.d.ts","sourceRoot":"","sources":["../../src/admin/config-io.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAEnE;;;;;;GAMG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AASD,wBAAsB,aAAa,IAAI,OAAO,CAAC,eAAe,CAAC,CAwB9D;AAED,wBAAsB,cAAc,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAGxE;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,eAAe,CAAC,CAAC,EACrC,EAAE,EAAE,CAAC,GAAG,EAAE,eAAe,KAAK;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,MAAM,EAAE,CAAC,CAAA;CAAE,GAAG,OAAO,CAAC;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,MAAM,EAAE,CAAC,CAAA;CAAE,CAAC,GACjH,OAAO,CAAC,CAAC,CAAC,CAOZ;AAED;;;;;;;;;GASG;AACH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAUxG;AAED;;;GAGG;AACH,wBAAsB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAQ3E"}
1
+ {"version":3,"file":"config-io.d.ts","sourceRoot":"","sources":["../../src/admin/config-io.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAEnE;;;;;;GAMG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AASD,wBAAsB,aAAa,IAAI,OAAO,CAAC,eAAe,CAAC,CAwB9D;AAED,wBAAsB,cAAc,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAGxE;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,eAAe,CAAC,CAAC,EACrC,EAAE,EAAE,CAAC,GAAG,EAAE,eAAe,KAAK;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,MAAM,EAAE,CAAC,CAAA;CAAE,GAAG,OAAO,CAAC;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,MAAM,EAAE,CAAC,CAAA;CAAE,CAAC,GACjH,OAAO,CAAC,CAAC,CAAC,CAOZ;AAED;;;;;;;;;GASG;AACH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAYxG;AAED;;;GAGG;AACH,wBAAsB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAQ3E"}
@@ -1,5 +1,5 @@
1
1
  import { promises as fs } from 'node:fs';
2
- import { createMutex } from '@moxxy/sdk';
2
+ import { assertDefined, createMutex } from '@moxxy/sdk';
3
3
  import { moxxyPath, writeFileAtomic } from '@moxxy/sdk/server';
4
4
  import { mcpStoredConfigRootSchema, mcpStoredServerSchema } from './config-schema.js';
5
5
  /**
@@ -85,7 +85,9 @@ export async function setServerDisabled(name, disabled) {
85
85
  // Unknown name → same reference skips the write (mutateMcpConfig no-op).
86
86
  if (idx < 0)
87
87
  return { next: cfg, result: null };
88
- const updated = { ...cfg.servers[idx], disabled };
88
+ const existing = cfg.servers[idx];
89
+ assertDefined(existing, `mcp server at index ${idx} must exist (findIndex matched name "${name}")`);
90
+ const updated = { ...existing, disabled };
89
91
  const nextServers = [...cfg.servers];
90
92
  nextServers[idx] = updated;
91
93
  return { next: { servers: nextServers }, result: updated };
@@ -1 +1 @@
1
- {"version":3,"file":"config-io.js","sourceRoot":"","sources":["../../src/admin/config-io.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config-io.js","sourceRoot":"","sources":["../../src/admin/config-io.ts"],"names":[],"mappings":"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"}
@@ -146,9 +146,10 @@ function buildMcpAdminPluginInternal(opts) {
146
146
  return await runtime.refreshServerCache(server);
147
147
  }
148
148
  catch (err) {
149
- log?.warn?.(`mcp: failed to refresh cache for "${server.name}"`, {
150
- err: err instanceof Error ? err.message : String(err),
151
- });
149
+ if (log?.warn)
150
+ log.warn(`mcp: failed to refresh cache for "${server.name}"`, {
151
+ err: err instanceof Error ? err.message : String(err),
152
+ });
152
153
  return null;
153
154
  }
154
155
  }));
@@ -162,9 +163,10 @@ function buildMcpAdminPluginInternal(opts) {
162
163
  runtime.attachServerLazy(entry);
163
164
  }
164
165
  catch (err) {
165
- log?.warn?.(`mcp: failed to attach lazy stubs for "${entry.name}"`, {
166
- err: err instanceof Error ? err.message : String(err),
167
- });
166
+ if (log?.warn)
167
+ log.warn(`mcp: failed to attach lazy stubs for "${entry.name}"`, {
168
+ err: err instanceof Error ? err.message : String(err),
169
+ });
168
170
  }
169
171
  }
170
172
  },
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/admin/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/admin/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/admin/runtime.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAiB,eAAe,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAKrF,OAAO,EAAwB,KAAK,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAC5E,OAAO,KAAK,EACV,qBAAqB,EACrB,gBAAgB,EAChB,eAAe,EAChB,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IACjD,YAAY,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC;QAC7C,SAAS,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;QACjC,WAAW,EAAE,aAAa,CAAC,iBAAiB,CAAC,CAAC;KAC/C,CAAC,CAAC;IACH,gBAAgB,CAAC,MAAM,EAAE,eAAe,GAAG;QAAE,SAAS,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;KAAE,CAAC;IAChF,kBAAkB,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IACtE,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC9C;AAED,MAAM,WAAW,iBAAiB;IAChC;;;;OAIG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,iBAAiB,GAAG,IAAI,CAAC;CACpD;AAED,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,qBAAqB,GAAG,IAAI,EACtC,OAAO,GAAE,iBAAsB,GAC9B,UAAU,CA+MZ"}
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/admin/runtime.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAiB,eAAe,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAKrF,OAAO,EAAwB,KAAK,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAC5E,OAAO,KAAK,EACV,qBAAqB,EACrB,gBAAgB,EAChB,eAAe,EAChB,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IACjD,YAAY,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC;QAC7C,SAAS,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;QACjC,WAAW,EAAE,aAAa,CAAC,iBAAiB,CAAC,CAAC;KAC/C,CAAC,CAAC;IACH,gBAAgB,CAAC,MAAM,EAAE,eAAe,GAAG;QAAE,SAAS,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;KAAE,CAAC;IAChF,kBAAkB,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IACtE,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC9C;AAED,MAAM,WAAW,iBAAiB;IAChC;;;;OAIG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,iBAAiB,GAAG,IAAI,CAAC;CACpD;AAED,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,qBAAqB,GAAG,IAAI,EACtC,OAAO,GAAE,iBAAsB,GAC9B,UAAU,CAmNZ"}
@@ -1,4 +1,4 @@
1
- import { MoxxyError } from '@moxxy/sdk';
1
+ import { assertDefined, MoxxyError } from '@moxxy/sdk';
2
2
  import { defaultClientFactory } from '../client.js';
3
3
  import { MCP_CONNECT_TIMEOUT_MS, withTimeout } from '../timeout.js';
4
4
  import { wrapMcpServerToolsLazy } from '../wrap.js';
@@ -76,8 +76,11 @@ export function createMcpRuntime(registry, options = {}) {
76
76
  const attachServerLazy = (server) => {
77
77
  if (!registry)
78
78
  return { toolNames: [] };
79
- if (runtimes.has(server.name))
80
- return { toolNames: runtimes.get(server.name).toolNames };
79
+ if (runtimes.has(server.name)) {
80
+ const existing = runtimes.get(server.name);
81
+ assertDefined(existing, `runtime for "${server.name}" must exist (has() returned true)`);
82
+ return { toolNames: existing.toolNames };
83
+ }
81
84
  const descriptors = server.cachedTools ?? [];
82
85
  if (descriptors.length === 0) {
83
86
  return { toolNames: [] };
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/admin/runtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/admin/runtime.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@moxxy/plugin-mcp",
3
- "version": "0.28.0",
3
+ "version": "0.29.0",
4
4
  "description": "MCP (Model Context Protocol) client plugin for moxxy — connect to MCP servers and surface their tools.",
5
5
  "keywords": [
6
6
  "moxxy",
@@ -45,14 +45,14 @@
45
45
  "dependencies": {
46
46
  "@modelcontextprotocol/sdk": "^1.0.0",
47
47
  "zod": "^3.24.0",
48
- "@moxxy/sdk": "0.28.0"
48
+ "@moxxy/sdk": "0.29.0"
49
49
  },
50
50
  "devDependencies": {
51
51
  "@types/node": "^22.10.0",
52
52
  "typescript": "^5.7.3",
53
53
  "vitest": "^2.1.8",
54
- "@moxxy/vitest-preset": "0.0.0",
55
- "@moxxy/tsconfig": "0.0.0"
54
+ "@moxxy/tsconfig": "0.0.0",
55
+ "@moxxy/vitest-preset": "0.0.0"
56
56
  },
57
57
  "scripts": {
58
58
  "build": "tsc -p tsconfig.json",
@@ -1,5 +1,5 @@
1
1
  import { promises as fs } from 'node:fs';
2
- import { createMutex } from '@moxxy/sdk';
2
+ import { assertDefined, createMutex } from '@moxxy/sdk';
3
3
  import { moxxyPath, writeFileAtomic } from '@moxxy/sdk/server';
4
4
  import { mcpStoredConfigRootSchema, mcpStoredServerSchema } from './config-schema.js';
5
5
  import type { McpStoredConfig, McpStoredServer } from './types.js';
@@ -90,7 +90,9 @@ export async function setServerDisabled(name: string, disabled: boolean): Promis
90
90
  const idx = cfg.servers.findIndex((s) => s.name === name);
91
91
  // Unknown name → same reference skips the write (mutateMcpConfig no-op).
92
92
  if (idx < 0) return { next: cfg, result: null };
93
- const updated: McpStoredServer = { ...cfg.servers[idx]!, disabled };
93
+ const existing = cfg.servers[idx];
94
+ assertDefined(existing, `mcp server at index ${idx} must exist (findIndex matched name "${name}")`);
95
+ const updated: McpStoredServer = { ...existing, disabled };
94
96
  const nextServers = [...cfg.servers];
95
97
  nextServers[idx] = updated;
96
98
  return { next: { servers: nextServers }, result: updated };
@@ -185,9 +185,10 @@ function buildMcpAdminPluginInternal(
185
185
  try {
186
186
  return await runtime.refreshServerCache(server);
187
187
  } catch (err) {
188
- log?.warn?.(`mcp: failed to refresh cache for "${server.name}"`, {
189
- err: err instanceof Error ? err.message : String(err),
190
- });
188
+ if (log?.warn)
189
+ log.warn(`mcp: failed to refresh cache for "${server.name}"`, {
190
+ err: err instanceof Error ? err.message : String(err),
191
+ });
191
192
  return null;
192
193
  }
193
194
  }),
@@ -200,9 +201,10 @@ function buildMcpAdminPluginInternal(
200
201
  try {
201
202
  runtime.attachServerLazy(entry);
202
203
  } catch (err) {
203
- log?.warn?.(`mcp: failed to attach lazy stubs for "${entry.name}"`, {
204
- err: err instanceof Error ? err.message : String(err),
205
- });
204
+ if (log?.warn)
205
+ log.warn(`mcp: failed to attach lazy stubs for "${entry.name}"`, {
206
+ err: err instanceof Error ? err.message : String(err),
207
+ });
206
208
  }
207
209
  }
208
210
  },
@@ -2,6 +2,7 @@ import { mkdtemp, rm } from 'node:fs/promises';
2
2
  import { tmpdir } from 'node:os';
3
3
  import { join } from 'node:path';
4
4
  import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
5
+ import { assertDefined } from '@moxxy/sdk';
5
6
  import type { McpClientLike, McpServerConfig, McpToolDescriptor } from '../types.js';
6
7
  import type { AdminToolRegistryLike, McpStoredServer } from './types.js';
7
8
 
@@ -162,7 +163,8 @@ describe('admin/runtime', () => {
162
163
  const registry = makeRegistry();
163
164
  const rt = createMcpRuntime(registry);
164
165
  rt.attachServerLazy(stored());
165
- const handle = rt.runtimes.get('demo')!;
166
+ const handle = rt.runtimes.get('demo');
167
+ assertDefined(handle, "runtime 'demo' registered by attachServerLazy");
166
168
  // Closing before any tool runs must not connect or throw.
167
169
  await handle.client.close();
168
170
  expect(hoisted.connectCalls).toHaveLength(0);
@@ -1,4 +1,4 @@
1
- import { MoxxyError } from '@moxxy/sdk';
1
+ import { assertDefined, MoxxyError } from '@moxxy/sdk';
2
2
  import type { McpClientLike, McpServerConfig, McpToolDescriptor } from '../types.js';
3
3
  import { defaultClientFactory } from '../client.js';
4
4
  import { MCP_CONNECT_TIMEOUT_MS, withTimeout } from '../timeout.js';
@@ -115,7 +115,11 @@ export function createMcpRuntime(
115
115
  */
116
116
  const attachServerLazy: McpRuntime['attachServerLazy'] = (server) => {
117
117
  if (!registry) return { toolNames: [] };
118
- if (runtimes.has(server.name)) return { toolNames: runtimes.get(server.name)!.toolNames };
118
+ if (runtimes.has(server.name)) {
119
+ const existing = runtimes.get(server.name);
120
+ assertDefined(existing, `runtime for "${server.name}" must exist (has() returned true)`);
121
+ return { toolNames: existing.toolNames };
122
+ }
119
123
  const descriptors = server.cachedTools ?? [];
120
124
  if (descriptors.length === 0) {
121
125
  return { toolNames: [] };
@@ -2,6 +2,7 @@ import { readFile } from 'node:fs/promises';
2
2
  import { mkdtemp, rm } from 'node:fs/promises';
3
3
  import { tmpdir } from 'node:os';
4
4
  import { join } from 'node:path';
5
+ import { assertDefined } from '@moxxy/sdk';
5
6
  import type { Skill } from '@moxxy/sdk';
6
7
  import { afterEach, beforeEach, describe, expect, it } from 'vitest';
7
8
  import type { McpServerConfig, McpToolDescriptor } from '../types.js';
@@ -22,20 +23,27 @@ function parseFrontmatter(raw: string): { fm: Record<string, unknown>; body: str
22
23
  const fm: Record<string, unknown> = {};
23
24
  const lines = fmText.split('\n');
24
25
  for (let i = 0; i < lines.length; i++) {
25
- const line = lines[i]!;
26
+ const line = lines[i];
27
+ assertDefined(line, 'frontmatter line present within bounds');
26
28
  if (!line.trim()) continue;
27
29
  const m = /^([A-Za-z0-9_-]+):\s*(.*)$/.exec(line);
28
30
  if (!m) throw new Error(`unparseable frontmatter line: ${JSON.stringify(line)}`);
29
31
  const [, key, val] = m;
32
+ assertDefined(key, 'regex capture group 1 present when the line matched');
30
33
  if (val) {
31
- fm[key!] = val;
34
+ fm[key] = val;
32
35
  } else {
33
36
  const items: string[] = [];
34
- while (i + 1 < lines.length && /^\s+-\s/.test(lines[i + 1]!)) {
37
+ while (i + 1 < lines.length) {
38
+ const next = lines[i + 1];
39
+ assertDefined(next, 'next frontmatter line present within bounds');
40
+ if (!/^\s+-\s/.test(next)) break;
35
41
  i++;
36
- items.push(lines[i]!.replace(/^\s+-\s*/, '').replace(/^"(.*)"$/, '$1'));
42
+ const item = lines[i];
43
+ assertDefined(item, 'frontmatter sequence item present');
44
+ items.push(item.replace(/^\s+-\s*/, '').replace(/^"(.*)"$/, '$1'));
37
45
  }
38
- fm[key!] = items;
46
+ fm[key] = items;
39
47
  }
40
48
  }
41
49
  return { fm, body };
@@ -73,10 +81,11 @@ describe('admin/skill (createMcpUsageSkillWriter)', () => {
73
81
  const write = createMcpUsageSkillWriter({ skillRegistry: registry, userSkillsDir: dir });
74
82
  const result = await write(server, DESCRIPTORS);
75
83
  expect(result).not.toBeNull();
76
- expect(result!.skillName).toBe('acme-mcp');
77
- expect(result!.path).toBe(join(dir, 'acme-mcp.md'));
84
+ assertDefined(result, 'write() returns a result for a fresh skill');
85
+ expect(result.skillName).toBe('acme-mcp');
86
+ expect(result.path).toBe(join(dir, 'acme-mcp.md'));
78
87
 
79
- const raw = await readFile(result!.path, 'utf8');
88
+ const raw = await readFile(result.path, 'utf8');
80
89
  const { fm, body } = parseFrontmatter(raw);
81
90
  expect(fm.name).toBe('acme-mcp');
82
91
  expect(fm.description).toBe('Use the acme MCP server (2 tools).');
@@ -95,7 +104,8 @@ describe('admin/skill (createMcpUsageSkillWriter)', () => {
95
104
  const write = createMcpUsageSkillWriter({ skillRegistry: registry, userSkillsDir: dir });
96
105
  await write(server, DESCRIPTORS);
97
106
  expect(registry.registered).toHaveLength(1);
98
- const skill = registry.registered[0]!;
107
+ const skill = registry.registered[0];
108
+ assertDefined(skill, 'first registered skill present');
99
109
  expect(skill.id).toBe('user/acme-mcp');
100
110
  expect(skill.scope).toBe('user');
101
111
  expect(skill.path).toBe(join(dir, 'acme-mcp.md'));
@@ -119,7 +129,8 @@ describe('admin/skill (createMcpUsageSkillWriter)', () => {
119
129
  const write = createMcpUsageSkillWriter({ skillRegistry: null, userSkillsDir: dir });
120
130
  const result = await write(server, DESCRIPTORS);
121
131
  expect(result).not.toBeNull();
122
- const raw = await readFile(result!.path, 'utf8');
132
+ assertDefined(result, 'write() returns a result even with no registry');
133
+ const raw = await readFile(result.path, 'utf8');
123
134
  expect(raw).toContain('name: acme-mcp');
124
135
  });
125
136
 
@@ -131,7 +142,8 @@ describe('admin/skill (createMcpUsageSkillWriter)', () => {
131
142
  }));
132
143
  const write = createMcpUsageSkillWriter({ skillRegistry: null, userSkillsDir: dir });
133
144
  const result = await write(server, many);
134
- const raw = await readFile(result!.path, 'utf8');
145
+ assertDefined(result, 'write() returns a result for a fresh skill');
146
+ const raw = await readFile(result.path, 'utf8');
135
147
  const { fm, body } = parseFrontmatter(raw);
136
148
  expect(fm.description).toBe('Use the acme MCP server (5 tools).');
137
149
  expect((fm['allowed-tools'] as string[])).toHaveLength(5);
@@ -1,4 +1,5 @@
1
1
  import { describe, expect, it, vi } from 'vitest';
2
+ import { assertDefined } from '@moxxy/sdk';
2
3
  import type { ServiceRegistry } from '@moxxy/sdk';
3
4
  import { mcpAdminPlugin } from './index.js';
4
5
 
@@ -35,7 +36,11 @@ describe('mcpAdminPlugin (discovery-loadable)', () => {
35
36
 
36
37
  // The inner onInit reads ~/.moxxy/mcp.json (absent on CI → caught + skipped);
37
38
  // we only assert the service wiring here.
38
- await mcpAdminPlugin.hooks!.onInit!({ services } as never);
39
+ const hooks = mcpAdminPlugin.hooks;
40
+ assertDefined(hooks, 'mcpAdminPlugin.hooks present');
41
+ const onInit = hooks.onInit;
42
+ assertDefined(onInit, 'mcpAdminPlugin onInit hook present');
43
+ await onInit({ services } as never);
39
44
 
40
45
  expect(get).toHaveBeenCalledWith('tools');
41
46
  expect(get).toHaveBeenCalledWith('skills');
package/src/index.test.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import { describe, expect, it } from 'vitest';
2
+ import { assertDefined } from '@moxxy/sdk';
2
3
  import { createMcpPlugin } from './index.js';
3
4
  import type { McpClientLike } from './types.js';
4
5
 
@@ -24,7 +25,11 @@ describe('createMcpPlugin', () => {
24
25
  });
25
26
  expect(plugin.name).toBe('@moxxy/plugin-mcp');
26
27
  expect(plugin.tools).toHaveLength(1);
27
- expect(plugin.tools![0]!.name).toBe('mcp__demo__ping');
28
+ const tools = plugin.tools;
29
+ assertDefined(tools, 'plugin.tools present after createMcpPlugin');
30
+ const first = tools[0];
31
+ assertDefined(first, 'first mcp tool present');
32
+ expect(first.name).toBe('mcp__demo__ping');
28
33
  });
29
34
 
30
35
  it('aggregates tools across multiple servers', async () => {
@@ -36,7 +41,9 @@ describe('createMcpPlugin', () => {
36
41
  clientFactory: async () => fakeClient,
37
42
  });
38
43
  expect(plugin.tools).toHaveLength(2);
39
- expect(plugin.tools!.map((t) => t.name)).toEqual(['mcp__a__ping', 'mcp__b__ping']);
44
+ const tools = plugin.tools;
45
+ assertDefined(tools, 'plugin.tools present after createMcpPlugin');
46
+ expect(tools.map((t) => t.name)).toEqual(['mcp__a__ping', 'mcp__b__ping']);
40
47
  });
41
48
 
42
49
  it('connects servers in parallel and bounds boot at the slowest, not the sum (u86-5)', async () => {
@@ -59,7 +66,9 @@ describe('createMcpPlugin', () => {
59
66
  clientFactory: async (s) => slowClient(s.name),
60
67
  });
61
68
  const elapsed = Date.now() - start;
62
- expect(plugin.tools!.map((t) => t.name)).toEqual(['mcp__a__ping', 'mcp__b__ping']);
69
+ const tools = plugin.tools;
70
+ assertDefined(tools, 'plugin.tools present after createMcpPlugin');
71
+ expect(tools.map((t) => t.name)).toEqual(['mcp__a__ping', 'mcp__b__ping']);
63
72
  expect(elapsed).toBeLessThan(90); // < the ~100ms serial sum
64
73
  });
65
74
 
@@ -89,7 +98,9 @@ describe('createMcpPlugin', () => {
89
98
  servers: [{ name: 'a', command: 'noop' }, { name: 'b', command: 'noop' }],
90
99
  clientFactory: async () => c,
91
100
  });
92
- await plugin.hooks?.onShutdown?.({} as never);
101
+ const hooks = plugin.hooks;
102
+ assertDefined(hooks, 'plugin.hooks registered by createMcpPlugin');
103
+ await hooks.onShutdown?.({} as never);
93
104
  expect(closed).toBe(2);
94
105
  });
95
106
  });
package/src/wrap.test.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { afterEach, describe, expect, it, vi } from 'vitest';
2
2
  import { wrapMcpServerTools, wrapMcpServerToolsLazy } from './wrap.js';
3
3
  import type { McpClientLike, McpToolDescriptor } from './types.js';
4
- import { asSessionId, asToolCallId, asTurnId } from '@moxxy/sdk';
4
+ import { asSessionId, asToolCallId, asTurnId, assertDefined } from '@moxxy/sdk';
5
5
 
6
6
  const baseCtx = () => ({
7
7
  sessionId: asSessionId('s'),
@@ -52,15 +52,19 @@ describe('wrapMcpServerTools', () => {
52
52
  client,
53
53
  });
54
54
  expect(tools).toHaveLength(2);
55
- expect(tools[0]!.name).toBe('mcp__demo__fetch');
56
- expect(tools[0]!.description).toBe('Fetch a URL');
57
- expect(tools[0]!.inputJsonSchema).toEqual({
55
+ const t0 = tools[0];
56
+ assertDefined(t0, 'first wrapped mcp tool present');
57
+ const t1 = tools[1];
58
+ assertDefined(t1, 'second wrapped mcp tool present');
59
+ expect(t0.name).toBe('mcp__demo__fetch');
60
+ expect(t0.description).toBe('Fetch a URL');
61
+ expect(t0.inputJsonSchema).toEqual({
58
62
  type: 'object',
59
63
  properties: { url: { type: 'string' } },
60
64
  required: ['url'],
61
65
  });
62
- expect(tools[1]!.name).toBe('mcp__demo__shell');
63
- expect(tools[1]!.description).toContain('shell');
66
+ expect(t1.name).toBe('mcp__demo__shell');
67
+ expect(t1.description).toContain('shell');
64
68
  });
65
69
 
66
70
  it('routes tool invocations through callTool and stringifies the content', async () => {
@@ -69,7 +73,9 @@ describe('wrapMcpServerTools', () => {
69
73
  server: { name: 'demo', command: 'noop' },
70
74
  client,
71
75
  });
72
- const result = await tools[0]!.handler({ url: 'https://x' }, baseCtx());
76
+ const first = tools[0];
77
+ assertDefined(first, 'wrapped mcp tool present');
78
+ const result = await first.handler({ url: 'https://x' }, baseCtx());
73
79
  expect(result).toBe('called fetch');
74
80
  expect(client.calls).toEqual([{ name: 'fetch', arguments: { url: 'https://x' } }]);
75
81
  });
@@ -84,7 +90,9 @@ describe('wrapMcpServerTools', () => {
84
90
  server: { name: 'demo', command: 'noop' },
85
91
  client,
86
92
  });
87
- const result = await tools[0]!.handler({ url: 'https://x' }, baseCtx());
93
+ const first = tools[0];
94
+ assertDefined(first, 'wrapped mcp tool present');
95
+ const result = await first.handler({ url: 'https://x' }, baseCtx());
88
96
  expect(result).toBe('[error] no permission');
89
97
  });
90
98
 
@@ -95,7 +103,9 @@ describe('wrapMcpServerTools', () => {
95
103
  isError: false,
96
104
  } as never);
97
105
  const tools = await wrapMcpServerTools({ server: { name: 'demo', command: 'noop' }, client });
98
- const result = await tools[0]!.handler({ url: 'x' }, baseCtx());
106
+ const first = tools[0];
107
+ assertDefined(first, 'wrapped mcp tool present');
108
+ const result = await first.handler({ url: 'x' }, baseCtx());
99
109
  expect(result).toBe('hello body');
100
110
  });
101
111
 
@@ -106,7 +116,9 @@ describe('wrapMcpServerTools', () => {
106
116
  isError: false,
107
117
  } as never);
108
118
  const tools = await wrapMcpServerTools({ server: { name: 'demo', command: 'noop' }, client });
109
- const result = await tools[0]!.handler({ url: 'x' }, baseCtx());
119
+ const first = tools[0];
120
+ assertDefined(first, 'wrapped mcp tool present');
121
+ const result = await first.handler({ url: 'x' }, baseCtx());
110
122
  expect(result).toBe('[resource:file:///a.bin application/octet-stream]');
111
123
  });
112
124
 
@@ -117,7 +129,9 @@ describe('wrapMcpServerTools', () => {
117
129
  isError: false,
118
130
  } as never);
119
131
  const tools = await wrapMcpServerTools({ server: { name: 'demo', command: 'noop' }, client });
120
- const result = await tools[0]!.handler({ url: 'x' }, baseCtx());
132
+ const first = tools[0];
133
+ assertDefined(first, 'wrapped mcp tool present');
134
+ const result = await first.handler({ url: 'x' }, baseCtx());
121
135
  expect(result).toBe('[image:image/png]');
122
136
  });
123
137
 
@@ -128,7 +142,9 @@ describe('wrapMcpServerTools', () => {
128
142
  client,
129
143
  toolNamePrefix: (s, t) => `x_${s}_${t}`,
130
144
  });
131
- expect(tools[0]!.name).toBe('x_demo_fetch');
145
+ const first = tools[0];
146
+ assertDefined(first, 'wrapped mcp tool present');
147
+ expect(first.name).toBe('x_demo_fetch');
132
148
  });
133
149
 
134
150
  it('aborts when ctx.signal is fired', async () => {
@@ -140,14 +156,18 @@ describe('wrapMcpServerTools', () => {
140
156
  const controller = new AbortController();
141
157
  const ctx = { ...baseCtx(), signal: controller.signal };
142
158
  controller.abort();
143
- await expect(tools[0]!.handler({ url: 'x' }, ctx)).rejects.toThrow(/aborted/);
159
+ const first = tools[0];
160
+ assertDefined(first, 'wrapped mcp tool present');
161
+ await expect(first.handler({ url: 'x' }, ctx)).rejects.toThrow(/aborted/);
144
162
  });
145
163
 
146
164
  it('rejects a missing required field WITHOUT calling the server', async () => {
147
165
  const client = makeFakeClient();
148
166
  const tools = await wrapMcpServerTools({ server: { name: 'demo', command: 'noop' }, client });
149
167
  // `fetch` declares required: ['url']; emit it missing.
150
- const result = await tools[0]!.handler({}, baseCtx());
168
+ const first = tools[0];
169
+ assertDefined(first, 'wrapped mcp tool present');
170
+ const result = await first.handler({}, baseCtx());
151
171
  expect(result).toMatch(/invalid arguments.*missing required field "url"/);
152
172
  expect(client.calls).toHaveLength(0);
153
173
  });
@@ -155,7 +175,9 @@ describe('wrapMcpServerTools', () => {
155
175
  it('rejects a wrong primitive type WITHOUT calling the server', async () => {
156
176
  const client = makeFakeClient();
157
177
  const tools = await wrapMcpServerTools({ server: { name: 'demo', command: 'noop' }, client });
158
- const result = await tools[0]!.handler({ url: 123 }, baseCtx());
178
+ const first = tools[0];
179
+ assertDefined(first, 'wrapped mcp tool present');
180
+ const result = await first.handler({ url: 123 }, baseCtx());
159
181
  expect(result).toMatch(/field "url" must be of type string/);
160
182
  expect(client.calls).toHaveLength(0);
161
183
  });
@@ -163,7 +185,9 @@ describe('wrapMcpServerTools', () => {
163
185
  it('forwards a well-formed call that satisfies the declared schema', async () => {
164
186
  const client = makeFakeClient();
165
187
  const tools = await wrapMcpServerTools({ server: { name: 'demo', command: 'noop' }, client });
166
- const result = await tools[0]!.handler({ url: 'https://ok' }, baseCtx());
188
+ const first = tools[0];
189
+ assertDefined(first, 'wrapped mcp tool present');
190
+ const result = await first.handler({ url: 'https://ok' }, baseCtx());
167
191
  expect(result).toBe('called fetch');
168
192
  expect(client.calls).toEqual([{ name: 'fetch', arguments: { url: 'https://ok' } }]);
169
193
  });
@@ -172,7 +196,9 @@ describe('wrapMcpServerTools', () => {
172
196
  const client = makeFakeClient();
173
197
  const tools = await wrapMcpServerTools({ server: { name: 'demo', command: 'noop' }, client });
174
198
  // `shell` (tools[1]) declares only { type: 'object' } — anything passes.
175
- const result = await tools[1]!.handler({ anything: ['goes'] }, baseCtx());
199
+ const second = tools[1];
200
+ assertDefined(second, 'second wrapped mcp tool present');
201
+ const result = await second.handler({ anything: ['goes'] }, baseCtx());
176
202
  expect(result).toBe('called shell');
177
203
  });
178
204
  });
@@ -189,7 +215,9 @@ describe('runMcpCallWithFallback (timeout + settle-once)', () => {
189
215
  vi.spyOn(client, 'callTool').mockImplementation(() => new Promise<never>(() => {}));
190
216
  const tools = await wrapMcpServerTools({ server: { name: 'demo', command: 'noop' }, client });
191
217
 
192
- const promise = tools[0]!.handler({ url: 'x' }, baseCtx());
218
+ const first = tools[0];
219
+ assertDefined(first, 'wrapped mcp tool present');
220
+ const promise = first.handler({ url: 'x' }, baseCtx());
193
221
  // Attach the rejection assertion before advancing so the rejection is observed.
194
222
  const assertion = expect(promise).rejects.toThrow(/timed out/);
195
223
  await vi.advanceTimersByTimeAsync(5 * 60 * 1000);
@@ -209,7 +237,9 @@ describe('runMcpCallWithFallback (timeout + settle-once)', () => {
209
237
  const controller = new AbortController();
210
238
  const ctx = { ...baseCtx(), signal: controller.signal };
211
239
 
212
- const promise = tools[0]!.handler({ url: 'x' }, ctx);
240
+ const first = tools[0];
241
+ assertDefined(first, 'wrapped mcp tool present');
242
+ const promise = first.handler({ url: 'x' }, ctx);
213
243
  controller.abort();
214
244
  // The late resolution must NOT win or throw "already settled".
215
245
  resolveCall({ content: [{ type: 'text', text: 'too late' }], isError: false });
@@ -232,8 +262,10 @@ describe('wrapMcpServerToolsLazy', () => {
232
262
  });
233
263
  expect(getClient).not.toHaveBeenCalled(); // building does not connect
234
264
 
235
- await tools[0]!.handler({ url: 'a' }, baseCtx());
236
- await tools[0]!.handler({ url: 'b' }, baseCtx());
265
+ const first = tools[0];
266
+ assertDefined(first, 'wrapped mcp tool present');
267
+ await first.handler({ url: 'a' }, baseCtx());
268
+ await first.handler({ url: 'b' }, baseCtx());
237
269
  // Two invocations, but the lazy wrapper hands the same factory each time.
238
270
  // The connection caching itself is the factory's job; here we assert the
239
271
  // factory is invoked per call and the calls reach the client.
@@ -253,8 +285,10 @@ describe('wrapMcpServerToolsLazy', () => {
253
285
  });
254
286
  const controller = new AbortController();
255
287
  controller.abort();
288
+ const first = tools[0];
289
+ assertDefined(first, 'wrapped mcp tool present');
256
290
  await expect(
257
- tools[0]!.handler({ url: 'x' }, { ...baseCtx(), signal: controller.signal }),
291
+ first.handler({ url: 'x' }, { ...baseCtx(), signal: controller.signal }),
258
292
  ).rejects.toThrow(/aborted/);
259
293
  expect(getClient).not.toHaveBeenCalled();
260
294
  });