@vielzeug/codex 2.0.1 → 2.1.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.
Files changed (66) hide show
  1. package/README.md +1 -1
  2. package/data/catalog.json +137 -132
  3. package/data/llms-full.txt +12784 -17341
  4. package/data/llms.txt +12 -11
  5. package/data/manifest.json +1 -1
  6. package/data/packages/arsenal.json +1 -1
  7. package/data/packages/assay.json +1 -1
  8. package/data/packages/clockwork.json +2 -2
  9. package/data/packages/codex.json +2 -2
  10. package/data/packages/coins.json +1 -1
  11. package/data/packages/conduit.json +1 -1
  12. package/data/packages/courier.json +1 -1
  13. package/data/packages/dnd.json +14 -12
  14. package/data/packages/familiar.json +26 -16
  15. package/data/packages/flux.json +1 -1
  16. package/data/packages/forge.json +1 -1
  17. package/data/packages/herald.json +19 -33
  18. package/data/packages/keymap.json +13 -19
  19. package/data/packages/ledger.json +28 -25
  20. package/data/packages/lingua.json +2 -2
  21. package/data/packages/necromancer.json +50 -0
  22. package/data/packages/orbit.json +34 -39
  23. package/data/packages/ore.json +1 -1
  24. package/data/packages/prism.json +37 -40
  25. package/data/packages/pulse.json +26 -24
  26. package/data/packages/refine.json +1 -1
  27. package/data/packages/ripple.json +12 -14
  28. package/data/packages/rune.json +6 -7
  29. package/data/packages/sandbox.json +7 -6
  30. package/data/packages/scout.json +10 -10
  31. package/data/packages/scroll.json +18 -17
  32. package/data/packages/sourcerer.json +1 -1
  33. package/data/packages/spell.json +1 -1
  34. package/data/packages/tempo.json +49 -81
  35. package/data/packages/vault.json +37 -40
  36. package/data/packages/ward.json +5 -17
  37. package/data/packages/wayfinder.json +9 -9
  38. package/data/refine.json +4507 -4525
  39. package/data/search.json +210 -211
  40. package/dist/cli.js +1 -1
  41. package/dist/cli.js.map +1 -1
  42. package/dist/http.js +52 -6
  43. package/dist/http.js.map +1 -1
  44. package/dist/server.js +1 -1
  45. package/dist/server.js.map +1 -1
  46. package/dist/tools/index.js +13 -5
  47. package/dist/tools/index.js.map +1 -1
  48. package/package.json +5 -5
  49. package/dist/__tests__/server.test.js +0 -346
  50. package/dist/__tests__/server.test.js.map +0 -1
  51. package/dist/__tests__/unit.test.js +0 -502
  52. package/dist/__tests__/unit.test.js.map +0 -1
  53. package/dist/data.js +0 -91
  54. package/dist/data.js.map +0 -1
  55. package/dist/frontmatter.js +0 -72
  56. package/dist/frontmatter.js.map +0 -1
  57. package/dist/generator.js +0 -176
  58. package/dist/generator.js.map +0 -1
  59. package/dist/llms.js +0 -162
  60. package/dist/llms.js.map +0 -1
  61. package/dist/resources.js +0 -4
  62. package/dist/resources.js.map +0 -1
  63. package/dist/search.js +0 -125
  64. package/dist/search.js.map +0 -1
  65. package/dist/tools.js +0 -1040
  66. package/dist/tools.js.map +0 -1
package/dist/cli.js CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
2
+ import { StdioServerTransport } from '@modelcontextprotocol/server/stdio';
3
3
  import { readFileSync } from 'node:fs';
4
4
  import { dirname, resolve } from 'node:path';
5
5
  import { fileURLToPath, pathToFileURL } from 'node:url';
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAChC,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAE1D,SAAS,KAAK;IACZ,GAAG,CACD;QACE,mEAAmE;QACnE,EAAE;QACF,UAAU;QACV,2DAA2D;QAC3D,qDAAqD;QACrD,qEAAqE;QACrE,qCAAqC;QACrC,yCAAyC;KAC1C,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,OAA0B,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IACxE,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACnD,KAAK,EAAE,CAAC;QAER,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACtD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,EAAE,iBAAiB,CAAC,EAAE,MAAM,CAAC,CAAwB,CAAC;QAE3G,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,OAAO,IAAI,CAAC,CAAC;QAEzC,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAI,MAA6D,CAAC;IAElE,IAAI,CAAC;QACH,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;YACtB,IAAI,EAAE,IAAI;YACV,OAAO,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;YAC/F,MAAM,EAAE,IAAI;SACb,CAAC,CAAC,CAAC;QAEJ,MAAM,QAAQ,GAAG,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC/C,MAAM,OAAO,GAAG,IAAI,eAAe,CAAC,QAAQ,CAAC,CAAC;QAC9C,MAAM,IAAI,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAEtC,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAClB,MAAM,eAAe,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CACjG,IAAI,oBAAoB,EAAE,CAC3B,CAAC;YAEF,OAAO,CAAC,CAAC;QACX,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;QAC7G,MAAM,QAAQ,GAAG,GAAS,EAAE;YAC1B,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;gBAC5B,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACvB,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QAEF,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACjC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QAElC,OAAO,CAAC,CAAC;IACX,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,GAAG,CAAC,UAAU,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAExE,OAAO,CAAC,CAAC;IACX,CAAC;AACH,CAAC;AAED,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAClE,OAAO,CAAC,QAAQ,GAAG,MAAM,IAAI,EAAE,CAAC;AAClC,CAAC"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
package/dist/http.js CHANGED
@@ -1,5 +1,7 @@
1
- import { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js';
1
+ import { createMcpHandler } from '@modelcontextprotocol/server';
2
2
  import { createServer } from 'node:http';
3
+ import { Readable } from 'node:stream';
4
+ import { pipeline } from 'node:stream/promises';
3
5
  import { log } from './_log.js';
4
6
  import { createMcpServer } from './server.js';
5
7
  function close(server) {
@@ -8,18 +10,63 @@ function close(server) {
8
10
  server.close((error) => (error ? reject(error) : resolve()));
9
11
  });
10
12
  }
13
+ /**
14
+ * Builds a Web-standard `Request` from a Node `IncomingMessage` — `createMcpHandler()`'s
15
+ * `fetch()` face speaks Fetch API objects (2026-07-28's stateless transport is Web-standard
16
+ * `Request`/`Response`, not Node's own `req`/`res` pair), so the loopback host bridges once here.
17
+ */
18
+ function toWebRequest(request) {
19
+ const headers = new Headers();
20
+ for (const [key, value] of Object.entries(request.headers)) {
21
+ if (value === undefined)
22
+ continue;
23
+ if (Array.isArray(value))
24
+ for (const entry of value)
25
+ headers.append(key, entry);
26
+ else
27
+ headers.set(key, value);
28
+ }
29
+ const hasBody = request.method !== 'GET' && request.method !== 'HEAD';
30
+ return new Request(`http://${request.headers.host ?? 'localhost'}${request.url}`, {
31
+ ...(hasBody && { body: Readable.toWeb(request), duplex: 'half' }),
32
+ headers,
33
+ method: request.method,
34
+ });
35
+ }
36
+ /** Writes a Web-standard `Response` back onto a Node `ServerResponse`, preserving repeated headers. */
37
+ async function sendWebResponse(webResponse, response) {
38
+ response.statusCode = webResponse.status;
39
+ for (const [key, value] of webResponse.headers)
40
+ response.appendHeader(key, value);
41
+ if (!webResponse.body) {
42
+ response.end();
43
+ return;
44
+ }
45
+ await pipeline(Readable.fromWeb(webResponse.body), response);
46
+ }
11
47
  /** Streamable HTTP host owns every transport and only listens on loopback addresses. */
12
48
  export async function startHttpHost(options) {
13
49
  const host = options.host ?? '127.0.0.1';
14
- const mcpServer = createMcpServer(options.catalog, { debug: options.debug, version: options.version });
15
- const transport = new StreamableHTTPServerTransport({ sessionIdGenerator: undefined });
50
+ // Stateless by default (SEP-2575): a fresh server instance per request, matching the
51
+ // spec's "any request can land on any instance" design — codex's tools carry no
52
+ // per-connection state, so a persistent instance buys nothing beyond a small, negligible
53
+ // (13-tool catalog) reconstruction cost per request.
54
+ const factory = () => createMcpServer(options.catalog, { debug: options.debug, version: options.version });
55
+ // `createMcpHandler()`'s factory only runs lazily, on the first real request — call it once
56
+ // eagerly here so a broken catalog/registration setup fails `startHttpHost()` itself, before
57
+ // the port opens, matching the old eager `mcpServer.connect()` fail-fast guarantee.
58
+ factory();
59
+ const handler = createMcpHandler(factory);
16
60
  const httpServer = createServer((request, response) => {
17
61
  if (request.method === 'GET' && request.url === '/health') {
18
62
  response.writeHead(200, { 'content-type': 'application/json; charset=utf-8' });
19
63
  response.end(JSON.stringify({ status: 'ok', version: options.version }));
20
64
  return;
21
65
  }
22
- void transport.handleRequest(request, response).catch((error) => {
66
+ handler
67
+ .fetch(toWebRequest(request))
68
+ .then((webResponse) => sendWebResponse(webResponse, response))
69
+ .catch((error) => {
23
70
  if (!response.headersSent) {
24
71
  response.writeHead(500, { 'content-type': 'application/json; charset=utf-8' });
25
72
  response.end(JSON.stringify({ error: 'MCP request failed' }));
@@ -40,11 +87,10 @@ export async function startHttpHost(options) {
40
87
  await close(httpServer);
41
88
  }
42
89
  finally {
43
- await mcpServer.close();
90
+ await handler.close();
44
91
  }
45
92
  };
46
93
  try {
47
- await mcpServer.connect(transport);
48
94
  await new Promise((resolve, reject) => {
49
95
  httpServer.once('error', reject);
50
96
  httpServer.listen(options.port, host, () => {
package/dist/http.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"http.js","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"http.js","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"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"}
package/dist/server.js CHANGED
@@ -1,4 +1,4 @@
1
- import { Server } from '@modelcontextprotocol/sdk/server/index.js';
1
+ import { Server } from '@modelcontextprotocol/server';
2
2
  import { registerTools } from './tools/index.js';
3
3
  export function createMcpServer(catalog, options) {
4
4
  const server = new Server({ name: 'vielzeug', version: options.version }, { capabilities: { tools: {} } });
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAInE,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,MAAM,UAAU,eAAe,CAAC,OAAgB,EAAE,OAA6C;IAC7F,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAE3G,aAAa,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IAE9C,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAC;AAItD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,MAAM,UAAU,eAAe,CAAC,OAAgB,EAAE,OAA6C;IAC7F,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAE3G,aAAa,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IAE9C,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -1,4 +1,4 @@
1
- import { CallToolRequestSchema, ErrorCode, ListToolsRequestSchema, McpError } from '@modelcontextprotocol/sdk/types.js';
1
+ import { METHOD_NOT_FOUND, ProtocolError } from '@modelcontextprotocol/server';
2
2
  import { log } from '../_log.js';
3
3
  import { CatalogError } from '../catalog.js';
4
4
  import { packageTools } from './packages.js';
@@ -11,13 +11,21 @@ function content(value) {
11
11
  };
12
12
  }
13
13
  export function registerTools(server, catalog, debug = false) {
14
- server.setRequestHandler(ListToolsRequestSchema, () => ({
15
- tools: ALL_TOOLS.map(({ description, inputSchema, name }) => ({ description, inputSchema, name })),
14
+ server.setRequestHandler('tools/list', () => ({
15
+ // `ToolSchema` is codex's own hand-rolled, precisely-typed shape (see tools/schema.ts); it's
16
+ // a valid JSON Schema object at the wire, just not structurally identical to the SDK's own
17
+ // generic recursive JSON-value type for `Tool.inputSchema`. Cast at this one wire boundary
18
+ // rather than loosen `ToolSchema`/`ToolProperty` themselves.
19
+ tools: ALL_TOOLS.map(({ description, inputSchema, name }) => ({
20
+ description,
21
+ inputSchema: inputSchema,
22
+ name,
23
+ })),
16
24
  }));
17
- server.setRequestHandler(CallToolRequestSchema, (request) => {
25
+ server.setRequestHandler('tools/call', (request) => {
18
26
  const tool = byName.get(request.params.name);
19
27
  if (!tool)
20
- throw new McpError(ErrorCode.MethodNotFound, `Unknown tool: ${request.params.name}`);
28
+ throw new ProtocolError(METHOD_NOT_FOUND, `Unknown tool: ${request.params.name}`);
21
29
  const started = Date.now();
22
30
  try {
23
31
  const result = tool.execute(request.params.arguments ?? {}, catalog);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,qBAAqB,EAAE,SAAS,EAAE,sBAAsB,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAC;AAIxH,OAAO,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,EAAE,YAAY,EAAgB,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,MAAM,CAAC,MAAM,SAAS,GAA8B,CAAC,GAAG,YAAY,EAAE,GAAG,WAAW,CAAC,CAAC;AAEtF,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;AAEnE,SAAS,OAAO,CAAC,KAAc;IAC7B,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,CAAC;KAC/G,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,MAAc,EAAE,OAAgB,EAAE,KAAK,GAAG,KAAK;IAC3E,MAAM,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,GAAG,EAAE,CAAC,CAAC;QACtD,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,WAAW,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;KACnG,CAAC,CAAC,CAAC;IACJ,MAAM,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,CAAC,OAAO,EAAE,EAAE;QAC1D,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAE7C,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,QAAQ,CAAC,SAAS,CAAC,cAAc,EAAE,iBAAiB,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QAEhG,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAE3B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC;YAErE,IAAI,KAAK;gBAAE,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,IAAI,CAAC,CAAC;YAEzD,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC;QACzB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,YAAY,EAAE,CAAC;gBAClC,IAAI,KAAK;oBAAE,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;gBAE/D,OAAO;oBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,CAAC;oBACxG,OAAO,EAAE,IAAI;iBACd,CAAC;YACJ,CAAC;YAED,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAI/E,OAAO,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,EAAE,YAAY,EAAgB,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,MAAM,CAAC,MAAM,SAAS,GAA8B,CAAC,GAAG,YAAY,EAAE,GAAG,WAAW,CAAC,CAAC;AAEtF,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;AAEnE,SAAS,OAAO,CAAC,KAAc;IAC7B,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,CAAC;KAC/G,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,MAAc,EAAE,OAAgB,EAAE,KAAK,GAAG,KAAK;IAC3E,MAAM,CAAC,iBAAiB,CAAC,YAAY,EAAE,GAAG,EAAE,CAAC,CAAC;QAC5C,6FAA6F;QAC7F,2FAA2F;QAC3F,2FAA2F;QAC3F,6DAA6D;QAC7D,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,EAAE,WAAW,EAAE,IAAI,EAAE,EAAQ,EAAE,CAAC,CAAC;YAClE,WAAW;YACX,WAAW,EAAE,WAA6C;YAC1D,IAAI;SACL,CAAC,CAAC;KACJ,CAAC,CAAC,CAAC;IACJ,MAAM,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC,OAAO,EAAE,EAAE;QACjD,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAE7C,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,aAAa,CAAC,gBAAgB,EAAE,iBAAiB,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QAE7F,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAE3B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC;YAErE,IAAI,KAAK;gBAAE,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,IAAI,CAAC,CAAC;YAEzD,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC;QACzB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,YAAY,EAAE,CAAC;gBAClC,IAAI,KAAK;oBAAE,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;gBAE/D,OAAO;oBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,CAAC;oBACxG,OAAO,EAAE,IAAI;iBACd,CAAC;YACJ,CAAC;YAED,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vielzeug/codex",
3
- "version": "2.0.1",
3
+ "version": "2.1.0",
4
4
  "type": "module",
5
5
  "description": "MCP server that exposes the vielzeug ecosystem to AI assistants — run locally over stdio or remotely over HTTP",
6
6
  "exports": {
@@ -18,7 +18,7 @@
18
18
  "node": ">=22"
19
19
  },
20
20
  "scripts": {
21
- "build": "tsc",
21
+ "build": "rm -rf dist && tsc",
22
22
  "dev": "node --experimental-strip-types ./scripts/dev.ts",
23
23
  "fix": "eslint --fix src",
24
24
  "gen:tool-docs": "node --experimental-strip-types ./scripts/generate-tool-docs.ts",
@@ -32,9 +32,6 @@
32
32
  "test:integration": "pnpm run prepare:data && vitest run --project integration",
33
33
  "test:unit": "vitest run --project unit"
34
34
  },
35
- "dependencies": {
36
- "@modelcontextprotocol/sdk": "^1.30.0"
37
- },
38
35
  "devDependencies": {
39
36
  "@types/node": "^26.1.2",
40
37
  "typescript": "^6.0.3",
@@ -43,5 +40,8 @@
43
40
  "publishConfig": {
44
41
  "access": "public",
45
42
  "registry": "https://registry.npmjs.org/"
43
+ },
44
+ "dependencies": {
45
+ "@modelcontextprotocol/server": "2.0.0"
46
46
  }
47
47
  }
@@ -1,346 +0,0 @@
1
- import { Client } from '@modelcontextprotocol/sdk/client/index.js';
2
- import { InMemoryTransport } from '@modelcontextprotocol/sdk/inMemory.js';
3
- import { existsSync, mkdirSync, writeFileSync } from 'node:fs';
4
- import { dirname, resolve } from 'node:path';
5
- import { fileURLToPath } from 'node:url';
6
- import { afterEach, beforeAll, describe, expect, it } from 'vitest';
7
- import { loadData } from '../data.js';
8
- import { createServer } from '../server.js';
9
- import { SCHEMA_VERSION } from '../types.js';
10
- let data;
11
- const activeClients = [];
12
- const __dirname = dirname(fileURLToPath(import.meta.url));
13
- const dataFile = resolve(__dirname, '../../data/vielzeug-data.json');
14
- beforeAll(async () => {
15
- // Regenerate if missing or if loadData throws (e.g. schema version mismatch from stale file)
16
- const needsRegen = !existsSync(dataFile) ||
17
- (() => {
18
- try {
19
- loadData();
20
- return false;
21
- }
22
- catch {
23
- return true;
24
- }
25
- })();
26
- if (needsRegen) {
27
- // Import the generator function directly — faster than spawning a subprocess
28
- const { generateBundledData } = await import("../../scripts/generator.js");
29
- const { data: generated } = generateBundledData({ incremental: false });
30
- mkdirSync(dirname(dataFile), { recursive: true });
31
- writeFileSync(dataFile, `${JSON.stringify(generated, null, 2)}\n`, 'utf8');
32
- }
33
- data = loadData();
34
- });
35
- afterEach(async () => {
36
- const clients = activeClients.splice(0);
37
- for (const client of clients) {
38
- await client.close();
39
- }
40
- });
41
- async function createTestPair() {
42
- const [clientTransport, serverTransport] = InMemoryTransport.createLinkedPair();
43
- const server = createServer(data);
44
- await server.connect(serverTransport);
45
- const client = new Client({ name: 'test-client', version: '1.0.0' });
46
- await client.connect(clientTransport);
47
- activeClients.push(client);
48
- return { client, server };
49
- }
50
- function readText(result) {
51
- return result.content[0]?.text ?? '';
52
- }
53
- describe('vielzeug MCP server', () => {
54
- it('registers seven tools', async () => {
55
- const { client } = await createTestPair();
56
- const { tools } = await client.listTools();
57
- const names = tools.map((t) => t.name).sort();
58
- expect(names).toEqual([
59
- 'get-component',
60
- 'get-docs',
61
- 'get-package',
62
- 'get-source',
63
- 'list-components',
64
- 'list-packages',
65
- 'search-packages',
66
- ]);
67
- });
68
- it('get-docs page enum only includes doc pages, not source', async () => {
69
- const { client } = await createTestPair();
70
- const { tools } = await client.listTools();
71
- const tool = tools.find((t) => t.name === 'get-docs');
72
- expect(tool).toBeDefined();
73
- const schema = tool?.inputSchema;
74
- expect(schema.properties['page'].enum).toEqual(['index', 'api', 'usage', 'examples']);
75
- expect(schema.properties['page'].enum).not.toContain('source');
76
- expect(schema.required).toContain('packageSlug');
77
- });
78
- it('list-packages returns all packages without internal docs payload', async () => {
79
- const { client } = await createTestPair();
80
- const result = (await client.callTool({ arguments: {}, name: 'list-packages' }));
81
- const parsed = JSON.parse(readText(result));
82
- expect(Array.isArray(parsed)).toBe(true);
83
- expect(parsed.length).toBeGreaterThan(0);
84
- expect(parsed[0]).toHaveProperty('name');
85
- expect(parsed[0]).toHaveProperty('availableDocPages');
86
- expect(parsed[0]).toHaveProperty('hasSource');
87
- expect(parsed[0]).not.toHaveProperty('docs');
88
- expect(parsed[0]).not.toHaveProperty('apiSource');
89
- });
90
- it('get-package returns a single PackageMeta object', async () => {
91
- const { client } = await createTestPair();
92
- const result = (await client.callTool({
93
- arguments: { packageSlug: 'spell' },
94
- name: 'get-package',
95
- }));
96
- const parsed = JSON.parse(readText(result));
97
- expect(result.isError).not.toBe(true);
98
- expect(parsed['slug']).toBe('spell');
99
- expect(parsed).toHaveProperty('hasSource');
100
- expect(parsed).not.toHaveProperty('docs');
101
- });
102
- it('get-package with unknown slug returns an error', async () => {
103
- const { client } = await createTestPair();
104
- const result = (await client.callTool({
105
- arguments: { packageSlug: 'does-not-exist' },
106
- name: 'get-package',
107
- }));
108
- expect(result.isError).toBe(true);
109
- });
110
- it('get-docs reads a doc page', async () => {
111
- const { client } = await createTestPair();
112
- const result = (await client.callTool({
113
- arguments: { packageSlug: 'spell', page: 'api' },
114
- name: 'get-docs',
115
- }));
116
- expect(result.isError).not.toBe(true);
117
- expect(readText(result).length).toBeGreaterThan(0);
118
- });
119
- it('get-source returns the src/index.ts content', async () => {
120
- const { client } = await createTestPair();
121
- const result = (await client.callTool({
122
- arguments: { packageSlug: 'spell' },
123
- name: 'get-source',
124
- }));
125
- expect(result.isError).not.toBe(true);
126
- expect(readText(result)).toContain('export');
127
- });
128
- it('get-docs rejects source as a page value', async () => {
129
- const { client } = await createTestPair();
130
- const result = (await client.callTool({
131
- arguments: { packageSlug: 'spell', page: 'source' },
132
- name: 'get-docs',
133
- }));
134
- expect(result.isError).toBe(true);
135
- });
136
- it('get-source returns isError for a package with no source', async () => {
137
- // codex has no apiSource bundled (it's the MCP server itself, not a browser-accessible lib)
138
- const { client } = await createTestPair();
139
- const pkgMetas = JSON.parse(readText((await client.callTool({ arguments: {}, name: 'list-packages' }))));
140
- const noSourceSlug = pkgMetas.find((p) => !p.hasSource)?.slug;
141
- if (!noSourceSlug)
142
- return; // all packages have source — skip
143
- const result = (await client.callTool({
144
- arguments: { packageSlug: noSourceSlug },
145
- name: 'get-source',
146
- }));
147
- expect(result.isError).toBe(true);
148
- expect(readText(result)).toContain('no src/index.ts source');
149
- });
150
- it('search-packages results include a name field on each hit', async () => {
151
- const { client } = await createTestPair();
152
- const result = (await client.callTool({
153
- arguments: { query: 'signal' },
154
- name: 'search-packages',
155
- }));
156
- expect(result.isError).not.toBe(true);
157
- const hits = JSON.parse(readText(result));
158
- expect(hits.length).toBeGreaterThan(0);
159
- expect(typeof hits[0]?.['name']).toBe('string');
160
- expect((hits[0]?.['name']).length).toBeGreaterThan(0);
161
- });
162
- it('search-packages returns source in matchedIn when query matches apiSource', async () => {
163
- const { client } = await createTestPair();
164
- // 'createServer' is only in codex apiSource — a reliable source-only match
165
- const result = (await client.callTool({
166
- arguments: { query: 'createServer' },
167
- name: 'search-packages',
168
- }));
169
- expect(result.isError).not.toBe(true);
170
- const hits = JSON.parse(readText(result));
171
- const codexHit = hits.find((h) => h.slug === 'codex');
172
- // codex may or may not have apiSource in the snapshot — test defensively
173
- if (codexHit) {
174
- expect(codexHit.matchedIn).toContain('source');
175
- }
176
- });
177
- it('search-packages returns empty array for no matches', async () => {
178
- const { client } = await createTestPair();
179
- const result = (await client.callTool({
180
- arguments: { query: 'zzz_no_match_xyz_' },
181
- name: 'search-packages',
182
- }));
183
- expect(result.isError).not.toBe(true);
184
- expect(JSON.parse(readText(result))).toEqual([]);
185
- });
186
- it('search-packages results have matchedIn as an array and a numeric score', async () => {
187
- const { client } = await createTestPair();
188
- const result = (await client.callTool({
189
- arguments: { query: 'signal' },
190
- name: 'search-packages',
191
- }));
192
- expect(result.isError).not.toBe(true);
193
- const hits = JSON.parse(readText(result));
194
- expect(hits.length).toBeGreaterThan(0);
195
- expect(Array.isArray(hits[0]?.['matchedIn'])).toBe(true);
196
- expect(typeof hits[0]?.['score']).toBe('number');
197
- expect(hits[0]?.['score']).toBeGreaterThan(0);
198
- });
199
- it('search-packages scores name matches higher than description matches', async () => {
200
- // ripple matches by name — should score higher than a package that only matches in description
201
- const { client } = await createTestPair();
202
- const result = (await client.callTool({
203
- arguments: { query: 'ripple' },
204
- name: 'search-packages',
205
- }));
206
- expect(result.isError).not.toBe(true);
207
- const hits = JSON.parse(readText(result));
208
- const rippleHit = hits.find((h) => h.slug === 'ripple');
209
- if (rippleHit) {
210
- // name match weight (3.9) is highest in metadata tier
211
- expect(rippleHit.score).toBeGreaterThanOrEqual(3.9);
212
- }
213
- });
214
- it('list-components and get-component work when sigil metadata is available', async () => {
215
- const { client } = await createTestPair();
216
- const listResult = (await client.callTool({ arguments: {}, name: 'list-components' }));
217
- if (listResult.isError) {
218
- expect(readText(listResult)).toContain('Sigil component metadata is unavailable');
219
- return;
220
- }
221
- const tags = JSON.parse(readText(listResult));
222
- expect(Array.isArray(tags)).toBe(true);
223
- expect(tags.length).toBeGreaterThan(0);
224
- const firstTag = tags[0]?.tagName;
225
- expect(typeof firstTag).toBe('string');
226
- const componentResult = (await client.callTool({
227
- arguments: { tagName: firstTag },
228
- name: 'get-component',
229
- }));
230
- expect(componentResult.isError).not.toBe(true);
231
- expect(readText(componentResult)).toContain(firstTag);
232
- });
233
- it('get-docs defaults to index page when page is omitted', async () => {
234
- const { client } = await createTestPair();
235
- const withPage = (await client.callTool({
236
- arguments: { packageSlug: 'spell', page: 'index' },
237
- name: 'get-docs',
238
- }));
239
- const withoutPage = (await client.callTool({
240
- arguments: { packageSlug: 'spell' },
241
- name: 'get-docs',
242
- }));
243
- expect(withPage.isError).not.toBe(true);
244
- expect(withoutPage.isError).not.toBe(true);
245
- expect(readText(withoutPage)).toBe(readText(withPage));
246
- });
247
- it('get-docs error lists available pages when requested page is missing', async () => {
248
- const { client } = await createTestPair();
249
- const result = (await client.callTool({
250
- // 'source' is not a valid page enum value — triggers the enum-validation error
251
- arguments: { packageSlug: 'spell', page: 'source' },
252
- name: 'get-docs',
253
- }));
254
- expect(result.isError).toBe(true);
255
- expect(readText(result)).toMatch(/index|api|usage|examples/);
256
- });
257
- it('unknown tool returns MethodNotFound error', async () => {
258
- const { client } = await createTestPair();
259
- await expect(client.callTool({ arguments: {}, name: 'no-such-tool' })).rejects.toThrow();
260
- });
261
- it('get-docs returns error when page enum is valid but package lacks that page', async () => {
262
- // Use a synthetic data fixture with only index page — guarantees the missing-page path always runs
263
- const syntheticData = {
264
- packages: [
265
- {
266
- apiSource: null,
267
- availableDocPages: ['index'],
268
- category: '',
269
- components: [],
270
- description: 'test',
271
- docs: { index: '# Test' },
272
- exports: [],
273
- keywords: [],
274
- name: '@vielzeug/synthetic',
275
- related: [],
276
- slug: 'synthetic',
277
- version: '1.0.0',
278
- },
279
- ],
280
- schemaVersion: SCHEMA_VERSION,
281
- version: '0.0.0',
282
- };
283
- const [clientTransport, serverTransport] = InMemoryTransport.createLinkedPair();
284
- const srv = createServer(syntheticData);
285
- await srv.connect(serverTransport);
286
- const client = new Client({ name: 'test-missing-page', version: '1.0.0' });
287
- await client.connect(clientTransport);
288
- activeClients.push(client);
289
- const result = (await client.callTool({
290
- arguments: { packageSlug: 'synthetic', page: 'examples' },
291
- name: 'get-docs',
292
- }));
293
- expect(result.isError).toBe(true);
294
- expect(readText(result)).toMatch(/Available/);
295
- });
296
- it('list-components returns error when Sigil CEM is absent', async () => {
297
- const dataWithNoSigil = {
298
- ...data,
299
- packages: data.packages.map((p) => (p.slug === 'sigil' ? { ...p, components: [] } : p)),
300
- };
301
- const [clientTransport, serverTransport] = InMemoryTransport.createLinkedPair();
302
- const srv = createServer(dataWithNoSigil);
303
- await srv.connect(serverTransport);
304
- const client = new Client({ name: 'test-no-sigil-list', version: '1.0.0' });
305
- await client.connect(clientTransport);
306
- activeClients.push(client);
307
- const result = (await client.callTool({ arguments: {}, name: 'list-components' }));
308
- expect(result.isError).toBe(true);
309
- expect(readText(result)).toContain('unavailable');
310
- });
311
- it('get-component returns error when Sigil CEM is absent', async () => {
312
- // components: [] causes ToolContext.components to be null (tools.ts checks length > 0)
313
- const dataWithNoSigil = {
314
- ...data,
315
- packages: data.packages.map((p) => (p.slug === 'sigil' ? { ...p, components: [] } : p)),
316
- };
317
- const [clientTransport, serverTransport] = InMemoryTransport.createLinkedPair();
318
- const srv = createServer(dataWithNoSigil);
319
- await srv.connect(serverTransport);
320
- const client = new Client({ name: 'test-no-sigil', version: '1.0.0' });
321
- await client.connect(clientTransport);
322
- activeClients.push(client);
323
- const result = (await client.callTool({
324
- arguments: { tagName: 'sg-button' },
325
- name: 'get-component',
326
- }));
327
- expect(result.isError).toBe(true);
328
- expect(readText(result)).toContain('unavailable');
329
- });
330
- it('search-packages returns error when query exceeds 500 chars', async () => {
331
- const { client } = await createTestPair();
332
- const longQuery = 'a'.repeat(501);
333
- const result = (await client.callTool({
334
- arguments: { query: longQuery },
335
- name: 'search-packages',
336
- }));
337
- expect(result.isError).toBe(true);
338
- expect(readText(result)).toContain('500');
339
- });
340
- it('get-package requires packageSlug', async () => {
341
- const { client } = await createTestPair();
342
- const result = (await client.callTool({ arguments: {}, name: 'get-package' }));
343
- expect(result.isError).toBe(true);
344
- });
345
- });
346
- //# sourceMappingURL=server.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"server.test.js","sourceRoot":"","sources":["../../src/__tests__/server.test.ts"],"names":[],"mappings":"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"}