@eggjs/tegg-controller-plugin 3.63.0 → 3.64.2

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/README.md CHANGED
@@ -236,19 +236,16 @@ import {
236
236
  Inject,
237
237
  ToolArgsSchema,
238
238
  } from '@eggjs/tegg';
239
- import z from 'zod';
239
+ import * as z from 'zod/v4';
240
240
 
241
241
  export const PromptType = {
242
242
  name: z.string(),
243
243
  };
244
244
 
245
245
  export const ToolType = {
246
- name: z.string({
247
- description: 'npm package name',
248
- }),
246
+ name: z.string().describe('npm package name'),
249
247
  };
250
248
 
251
-
252
249
  @MCPController()
253
250
  export class McpController {
254
251
 
@@ -1,10 +1,15 @@
1
1
  import type { Application, Context } from 'egg';
2
2
  import { EventStore } from '@modelcontextprotocol/sdk/server/streamableHttp.js';
3
+ import { InMemoryEventStore } from '@modelcontextprotocol/sdk/examples/shared/inMemoryEventStore.js';
3
4
  export interface MCPConfigOptions {
4
5
  sseInitPath: string;
5
6
  sseMessagePath: string;
6
7
  streamPath: string;
7
8
  statelessStreamPath: string;
9
+ ssePingEnabled?: boolean;
10
+ streamPingEnabled?: boolean;
11
+ pingElapsed?: number;
12
+ pingInterval?: number;
8
13
  sessionIdGenerator?: (ctx: Context) => string;
9
14
  eventStore?: EventStore;
10
15
  sseHeartTime?: number;
@@ -18,6 +23,10 @@ export declare class MCPConfig {
18
23
  private _sessionIdGenerator;
19
24
  private _eventStore;
20
25
  private _sseHeartTime;
26
+ private _pingElapsed;
27
+ private _pingInterval;
28
+ private _ssePingEnabled;
29
+ private _streamPingEnabled;
21
30
  private _multipleServer;
22
31
  constructor(options: MCPConfigOptions);
23
32
  getSseInitPath(name?: string): string;
@@ -25,8 +34,12 @@ export declare class MCPConfig {
25
34
  getStreamPath(name?: string): string;
26
35
  getStatelessStreamPath(name?: string): string;
27
36
  getSessionIdGenerator(name?: string): (ctx: Context) => string;
28
- getEventStore(name?: string): EventStore;
37
+ getEventStore(name?: string): EventStore | InMemoryEventStore;
29
38
  getSseHeartTime(name?: string): number;
30
39
  getMultipleServerNames(): string[];
40
+ getPingElapsed(name?: string): number;
41
+ getPingInterval(name?: string): number;
42
+ getSsePingEnabled(name?: string): boolean;
43
+ getStreamPingEnabled(name?: string): boolean;
31
44
  setMultipleServerPath(app: Application, name: string): void;
32
45
  }
@@ -5,7 +5,7 @@ const node_crypto_1 = require("node:crypto");
5
5
  const inMemoryEventStore_js_1 = require("@modelcontextprotocol/sdk/examples/shared/inMemoryEventStore.js");
6
6
  class MCPConfig {
7
7
  constructor(options) {
8
- var _a, _b, _c, _d;
8
+ var _a, _b, _c, _d, _e, _f, _g, _h;
9
9
  this._sessionIdGenerator =
10
10
  (_a = options.sessionIdGenerator) !== null && _a !== void 0 ? _a : (() => (0, node_crypto_1.randomUUID)());
11
11
  this._sseInitPath = options.sseInitPath;
@@ -14,7 +14,11 @@ class MCPConfig {
14
14
  this._statelessStreamPath = options.statelessStreamPath;
15
15
  this._eventStore = (_b = options.eventStore) !== null && _b !== void 0 ? _b : new inMemoryEventStore_js_1.InMemoryEventStore();
16
16
  this._sseHeartTime = (_c = options.sseHeartTime) !== null && _c !== void 0 ? _c : 25000;
17
- this._multipleServer = (_d = options.multipleServer) !== null && _d !== void 0 ? _d : {};
17
+ this._pingElapsed = (_d = options.pingElapsed) !== null && _d !== void 0 ? _d : 10 * 60 * 1000;
18
+ this._pingInterval = (_e = options.pingInterval) !== null && _e !== void 0 ? _e : 5 * 1000;
19
+ this._ssePingEnabled = (_f = options.ssePingEnabled) !== null && _f !== void 0 ? _f : false;
20
+ this._streamPingEnabled = (_g = options.streamPingEnabled) !== null && _g !== void 0 ? _g : false;
21
+ this._multipleServer = (_h = options.multipleServer) !== null && _h !== void 0 ? _h : {};
18
22
  }
19
23
  getSseInitPath(name) {
20
24
  if (name) {
@@ -89,6 +93,46 @@ class MCPConfig {
89
93
  getMultipleServerNames() {
90
94
  return Object.keys(this._multipleServer);
91
95
  }
96
+ getPingElapsed(name) {
97
+ if (name) {
98
+ const config = this._multipleServer[name];
99
+ if ((config === null || config === void 0 ? void 0 : config.pingElapsed) !== undefined) {
100
+ return config.pingElapsed;
101
+ }
102
+ return 10 * 60 * 1000;
103
+ }
104
+ return this._pingElapsed;
105
+ }
106
+ getPingInterval(name) {
107
+ if (name) {
108
+ const config = this._multipleServer[name];
109
+ if ((config === null || config === void 0 ? void 0 : config.pingInterval) !== undefined) {
110
+ return config.pingInterval;
111
+ }
112
+ return 5 * 1000;
113
+ }
114
+ return this._pingInterval;
115
+ }
116
+ getSsePingEnabled(name) {
117
+ if (name) {
118
+ const config = this._multipleServer[name];
119
+ if ((config === null || config === void 0 ? void 0 : config.ssePingEnabled) !== undefined) {
120
+ return config.ssePingEnabled;
121
+ }
122
+ return false;
123
+ }
124
+ return this._ssePingEnabled;
125
+ }
126
+ getStreamPingEnabled(name) {
127
+ if (name) {
128
+ const config = this._multipleServer[name];
129
+ if ((config === null || config === void 0 ? void 0 : config.streamPingEnabled) !== undefined) {
130
+ return config.streamPingEnabled;
131
+ }
132
+ return false;
133
+ }
134
+ return this._streamPingEnabled;
135
+ }
92
136
  setMultipleServerPath(app, name) {
93
137
  var _a;
94
138
  if (!app.config.mcp.multipleServer) {
@@ -104,4 +148,4 @@ class MCPConfig {
104
148
  }
105
149
  }
106
150
  exports.MCPConfig = MCPConfig;
107
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTUNQQ29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiTUNQQ29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLDZDQUF5QztBQUV6QywyR0FBcUc7QUFhckcsTUFBYSxTQUFTO0lBV3BCLFlBQVksT0FBeUI7O1FBQ25DLElBQUksQ0FBQyxtQkFBbUI7WUFDdEIsTUFBQSxPQUFPLENBQUMsa0JBQWtCLG1DQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBQSx3QkFBVSxHQUFFLENBQUMsQ0FBQztRQUNyRCxJQUFJLENBQUMsWUFBWSxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUM7UUFDeEMsSUFBSSxDQUFDLGVBQWUsR0FBRyxPQUFPLENBQUMsY0FBYyxDQUFDO1FBQzlDLElBQUksQ0FBQyxXQUFXLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQztRQUN0QyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsT0FBTyxDQUFDLG1CQUFtQixDQUFDO1FBQ3hELElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBQSxPQUFPLENBQUMsVUFBVSxtQ0FBSSxJQUFJLDBDQUFrQixFQUFFLENBQUM7UUFDbEUsSUFBSSxDQUFDLGFBQWEsR0FBRyxNQUFBLE9BQU8sQ0FBQyxZQUFZLG1DQUFJLEtBQUssQ0FBQztRQUVuRCxJQUFJLENBQUMsZUFBZSxHQUFHLE1BQUEsT0FBTyxDQUFDLGNBQWMsbUNBQUksRUFBRSxDQUFDO0lBQ3RELENBQUM7SUFFRCxjQUFjLENBQUMsSUFBYTtRQUMxQixJQUFJLElBQUksRUFBRSxDQUFDO1lBQ1QsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUMxQyxJQUFJLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxXQUFXLEVBQUUsQ0FBQztnQkFDeEIsT0FBTyxNQUFNLENBQUMsV0FBVyxDQUFDO1lBQzVCLENBQUM7WUFDRCxPQUFPLFFBQVEsSUFBSSxNQUFNLENBQUM7UUFDNUIs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
151
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTUNQQ29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiTUNQQ29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLDZDQUF5QztBQUV6QywyR0FBcUc7QUFpQnJHLE1BQWEsU0FBUztJQWdCcEIsWUFBWSxPQUF5Qjs7UUFDbkMsSUFBSSxDQUFDLG1CQUFtQjtZQUN0QixNQUFBLE9BQU8sQ0FBQyxrQkFBa0IsbUNBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFBLHdCQUFVLEdBQUUsQ0FBQyxDQUFDO1FBQ3JELElBQUksQ0FBQyxZQUFZLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQztRQUN4QyxJQUFJLENBQUMsZUFBZSxHQUFHLE9BQU8sQ0FBQyxjQUFjLENBQUM7UUFDOUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDO1FBQ3RDLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxPQUFPLENBQUMsbUJBQW1CLENBQUM7UUFDeEQsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFBLE9BQU8sQ0FBQyxVQUFVLG1DQUFJLElBQUksMENBQWtCLEVBQUUsQ0FBQztRQUNsRSxJQUFJLENBQUMsYUFBYSxHQUFHLE1BQUEsT0FBTyxDQUFDLFlBQVksbUNBQUksS0FBSyxDQUFDO1FBQ25ELElBQUksQ0FBQyxZQUFZLEdBQUcsTUFBQSxPQUFPLENBQUMsV0FBVyxtQ0FBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQztRQUMxRCxJQUFJLENBQUMsYUFBYSxHQUFHLE1BQUEsT0FBTyxDQUFDLFlBQVksbUNBQUksQ0FBQyxHQUFHLElBQUksQ0FBQztRQUN0RCxJQUFJLENBQUMsZUFBZSxHQUFHLE1BQUEsT0FBTyxDQUFDLGNBQWMsbUNBQUksS0FBSyxDQUFDO1FBQ3ZELElBQUksQ0FBQyxrQkFBa0IsR0FBRyxNQUFBLE9BQU8sQ0FBQyxpQkFBaUIsbUNBQUksS0FBSyxDQUFDO1FBRTdELElBQUksQ0FBQyxlQUFlLEdBQUcs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
@@ -1,6 +1,6 @@
1
1
  import type { Application, Context } from 'egg';
2
2
  import http, { ServerResponse } from 'node:http';
3
- import { ControllerMetadata, MCPControllerMeta, MCPPromptMeta, MCPToolMeta, EggContext, EggObjectName, MCPResourceMeta } from '@eggjs/tegg';
3
+ import { ControllerMetadata, MCPControllerMeta, MCPPromptMeta, MCPToolMeta, EggContext, EggObjectName, MCPResourceMeta, MCPProtocols } from '@eggjs/tegg';
4
4
  import { EggPrototype } from '@eggjs/tegg-metadata';
5
5
  import { EggContainerFactory, EggObject } from '@eggjs/tegg-runtime';
6
6
  import { ControllerRegister } from '../../ControllerRegister';
@@ -8,10 +8,10 @@ import { SSEServerTransport } from '@modelcontextprotocol/sdk/server/sse.js';
8
8
  import { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js';
9
9
  import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
10
10
  import { JSONRPCMessage } from '@modelcontextprotocol/sdk/types.js';
11
- import { MCPProtocols } from '@eggjs/mcp-proxy/types';
12
11
  import compose from 'koa-compose';
13
12
  import { MCPConfig } from './MCPConfig';
14
13
  import { MCPServerHelper } from './MCPServerHelper';
14
+ import { Server } from '@modelcontextprotocol/sdk/server/index.js';
15
15
  export interface MCPControllerHook {
16
16
  preSSEInitHandle?: (ctx: Context, transport: SSEServerTransport, register: MCPControllerRegister) => Promise<void>;
17
17
  preHandleInitHandle?: (ctx: Context) => Promise<void>;
@@ -62,6 +62,7 @@ export declare class MCPControllerRegister implements ControllerRegister {
62
62
  prompts: ServerRegisterRecord<MCPPromptMeta>[];
63
63
  resources: ServerRegisterRecord<MCPResourceMeta>[];
64
64
  }>;
65
+ pingIntervals: Record<string, NodeJS.Timeout>;
65
66
  static create(proto: EggPrototype, controllerMeta: ControllerMetadata, app: Application): MCPControllerRegister;
66
67
  constructor(_proto: EggPrototype, controllerMeta: MCPControllerMeta, app: Application);
67
68
  static addHook(hook: MCPControllerHook): void;
@@ -73,6 +74,7 @@ export declare class MCPControllerRegister implements ControllerRegister {
73
74
  sseCtxStorageRun(ctx: Context, transport: SSEServerTransport, name?: string): void;
74
75
  mcpServerRegister(name?: string): void;
75
76
  getGlobalMiddleware(): void;
77
+ mcpServerPing(server: Server, sessionId: string, name?: string): void;
76
78
  register(): Promise<void>;
77
79
  }
78
80
  export {};
@@ -11,7 +11,6 @@ const tegg_1 = require("@eggjs/tegg");
11
11
  const sse_js_1 = require("@modelcontextprotocol/sdk/server/sse.js");
12
12
  const streamableHttp_js_1 = require("@modelcontextprotocol/sdk/server/streamableHttp.js");
13
13
  const types_js_1 = require("@modelcontextprotocol/sdk/types.js");
14
- const types_1 = require("@eggjs/mcp-proxy/types");
15
14
  const await_event_1 = __importDefault(require("await-event"));
16
15
  const koa_compose_1 = __importDefault(require("koa-compose"));
17
16
  const raw_body_1 = __importDefault(require("raw-body"));
@@ -63,6 +62,7 @@ class MCPControllerRegister {
63
62
  // eslint-disable-next-line no-spaced-func
64
63
  this.sseTransportsRequestMap = new Map();
65
64
  this.registerMap = {};
65
+ this.pingIntervals = {};
66
66
  this.app = app;
67
67
  this.eggContainerFactory = app.eggContainerFactory;
68
68
  this.router = app.router;
@@ -240,13 +240,16 @@ class MCPControllerRegister {
240
240
  const transport = new streamableHttp_js_1.StreamableHTTPServerTransport({
241
241
  sessionIdGenerator: () => this.mcpConfig.getSessionIdGenerator(name)(ctx),
242
242
  eventStore,
243
- onsessioninitialized: async () => {
243
+ onsessioninitialized: async (sessionId) => {
244
244
  var _a;
245
245
  if (MCPControllerRegister.hooks.length > 0) {
246
246
  for (const hook of MCPControllerRegister.hooks) {
247
247
  await ((_a = hook.onStreamSessionInitialized) === null || _a === void 0 ? void 0 : _a.call(hook, self.app.currentContext, transport, mcpServerHelper.server, self));
248
248
  }
249
249
  }
250
+ if (self.mcpConfig.getStreamPingEnabled(name)) {
251
+ self.mcpServerPing(mcpServerHelper.server.server, sessionId, name);
252
+ }
250
253
  },
251
254
  });
252
255
  ctx.set({
@@ -254,6 +257,12 @@ class MCPControllerRegister {
254
257
  'transfer-encoding': 'chunked',
255
258
  });
256
259
  await mcpServerHelper.server.connect(transport);
260
+ transport.onclose = async () => {
261
+ if (transport.sessionId && self.pingIntervals[transport.sessionId]) {
262
+ clearInterval(self.pingIntervals[transport.sessionId]);
263
+ delete self.pingIntervals[transport.sessionId];
264
+ }
265
+ };
257
266
  const onmessage = transport.onmessage;
258
267
  transport.onmessage = async (message, extra) => {
259
268
  if (self.app.currentContext) {
@@ -304,7 +313,7 @@ class MCPControllerRegister {
304
313
  }
305
314
  if (MCPControllerRegister.hooks.length > 0) {
306
315
  for (const hook of MCPControllerRegister.hooks) {
307
- const checked = await ((_d = hook.checkAndRunProxy) === null || _d === void 0 ? void 0 : _d.call(hook, self.app.currentContext, types_1.MCPProtocols.STREAM, sessionId));
316
+ const checked = await ((_d = hook.checkAndRunProxy) === null || _d === void 0 ? void 0 : _d.call(hook, self.app.currentContext, tegg_1.MCPProtocols.STREAM, sessionId));
308
317
  if (checked) {
309
318
  return;
310
319
  }
@@ -365,6 +374,9 @@ class MCPControllerRegister {
365
374
  }
366
375
  await mcpServerHelper.server.connect(transport);
367
376
  self.mcpServerMap[id] = mcpServerHelper.server;
377
+ if (self.mcpConfig.getSsePingEnabled(name)) {
378
+ self.mcpServerPing(mcpServerHelper.server.server, transport.sessionId, name);
379
+ }
368
380
  return self.sseCtxStorageRun.bind(self)(ctx, transport, name);
369
381
  };
370
382
  Reflect.apply(routerFunc, this.router, [
@@ -385,6 +397,10 @@ class MCPControllerRegister {
385
397
  closeFunc === null || closeFunc === void 0 ? void 0 : closeFunc(...args);
386
398
  delete self.transports[transport.sessionId];
387
399
  delete self.mcpServerMap[transport.sessionId];
400
+ if (transport.sessionId && self.pingIntervals[transport.sessionId]) {
401
+ clearInterval(self.pingIntervals[transport.sessionId]);
402
+ delete self.pingIntervals[transport.sessionId];
403
+ }
388
404
  self.sseTransportsRequestMap.delete(transport);
389
405
  const connection = self.sseConnections.get(transport.sessionId);
390
406
  if (connection) {
@@ -484,7 +500,7 @@ class MCPControllerRegister {
484
500
  }
485
501
  if (MCPControllerRegister.hooks.length > 0) {
486
502
  for (const hook of MCPControllerRegister.hooks) {
487
- const checked = await ((_d = hook.checkAndRunProxy) === null || _d === void 0 ? void 0 : _d.call(hook, self.app.currentContext, types_1.MCPProtocols.SSE, sessionId));
503
+ const checked = await ((_d = hook.checkAndRunProxy) === null || _d === void 0 ? void 0 : _d.call(hook, self.app.currentContext, tegg_1.MCPProtocols.SSE, sessionId));
488
504
  if (checked) {
489
505
  return;
490
506
  }
@@ -513,6 +529,29 @@ class MCPControllerRegister {
513
529
  }
514
530
  this.globalMiddlewares = (0, koa_compose_1.default)(middlewares);
515
531
  }
532
+ mcpServerPing(server, sessionId, name) {
533
+ const duration = this.mcpConfig.getPingElapsed(name);
534
+ const interval = this.mcpConfig.getPingInterval(name);
535
+ const startTime = Date.now();
536
+ const timerId = setInterval(async () => {
537
+ const elapsed = Date.now() - startTime;
538
+ try {
539
+ await server.ping();
540
+ }
541
+ catch (e) {
542
+ this.app.logger.warn('mcp server ping failed: ', e);
543
+ }
544
+ finally {
545
+ if (elapsed >= duration) {
546
+ if (this.pingIntervals[sessionId]) {
547
+ clearInterval(this.pingIntervals[sessionId]);
548
+ delete this.pingIntervals[sessionId];
549
+ }
550
+ }
551
+ }
552
+ }, interval);
553
+ this.pingIntervals[sessionId] = timerId;
554
+ }
516
555
  async register() {
517
556
  var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r;
518
557
  for (const proto of this.controllerProtos) {
@@ -596,4 +635,4 @@ class MCPControllerRegister {
596
635
  }
597
636
  exports.MCPControllerRegister = MCPControllerRegister;
598
637
  MCPControllerRegister.hooks = [];
599
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTUNQQ29udHJvbGxlclJlZ2lzdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiTUNQQ29udHJvbGxlclJlZ2lzdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUVBLDhEQUFpQztBQUNqQyx5Q0FBa0U7QUFDbEUsdUNBQWtDO0FBRWxDLHNDQVVxQjtBQUlyQixvRUFBNkU7QUFDN0UsMEZBQW1HO0FBRW5HLGlFQUE2SDtBQUM3SCxrREFBc0Q7QUFDdEQsOERBQXFDO0FBQ3JDLDhEQUFrQztBQUVsQyx3REFBa0M7QUFDbEMsZ0VBQXVDO0FBRXZDLDJDQUF3QztBQUN4Qyx1REFBb0Q7QUE0QnBELE1BQU0sdUJBQXdCLFNBQVEsMkJBQWtCO0lBQ3RELEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBdUI7O1FBQ2hDLElBQUksR0FBRyxHQUFpQixJQUFJLENBQUM7UUFDN0IsSUFBSSxDQUFDO1lBQ0gsTUFBTSxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzVCLENBQUM7UUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ1gsR0FBRyxHQUFHLENBQVUsQ0FBQztRQUNuQixDQUFDO2dCQUFTLENBQUM7WUFDVCxtRUFBbUU7WUFDbkUsTUFBTSxHQUFHLEdBQUcsTUFBQSxxQkFBcUIsQ0FBQyxRQUFRLDBDQUFFLHVCQUF1QixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM5RSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksT0FBTyxFQUFFLENBQUM7Z0JBQzNCLE1BQU0sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsTUFBQSxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxtQ0FBSSxFQUFFLENBQUM7Z0JBQ2xELElBQUksT0FBTyxFQUFFLENBQUM7b0JBQ1osR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FB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
638
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTUNQQ29udHJvbGxlclJlZ2lzdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiTUNQQ29udHJvbGxlclJlZ2lzdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUVBLDhEQUFpQztBQUNqQyx5Q0FBa0U7QUFDbEUsdUNBQWtDO0FBRWxDLHNDQVdxQjtBQUlyQixvRUFBNkU7QUFDN0UsMEZBQW1HO0FBRW5HLGlFQUE2SDtBQUM3SCw4REFBcUM7QUFDckMsOERBQWtDO0FBRWxDLHdEQUFrQztBQUNsQyxnRUFBdUM7QUFFdkMsMkNBQXdDO0FBQ3hDLHVEQUFvRDtBQTZCcEQsTUFBTSx1QkFBd0IsU0FBUSwyQkFBa0I7SUFDdEQsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUF1Qjs7UUFDaEMsSUFBSSxHQUFHLEdBQWlCLElBQUksQ0FBQztRQUM3QixJQUFJLENBQUM7WUFDSCxNQUFNLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDNUIsQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDWCxHQUFHLEdBQUcsQ0FBVSxDQUFDO1FBQ25CLENBQUM7Z0JBQVMsQ0FBQztZQUNULG1FQUFtRTtZQUNuRSxNQUFNLEdBQUcsR0FBRyxNQUFBLHFCQUFxQixDQUFDLFFBQVEsMENBQUUsdUJBQXVCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzlFLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxPQUFPLEVBQUUsQ0FBQztnQkFDM0IsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxNQUFBLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLG1DQUFJLEVBQUUsQ0FBQztnQkFDbEQsSUFBSSxPQUFPLEVBQUUsQ0FBQztvQkFDWixHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO29CQUNqQyxPQUFP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
package/package.json CHANGED
@@ -7,7 +7,7 @@
7
7
  "tegg"
8
8
  ]
9
9
  },
10
- "version": "3.63.0",
10
+ "version": "3.64.2",
11
11
  "description": "controller decorator for egg",
12
12
  "keywords": [
13
13
  "egg",
@@ -48,15 +48,14 @@
48
48
  "node": ">=14.0.0"
49
49
  },
50
50
  "dependencies": {
51
- "@eggjs/egg-module-common": "^3.63.0",
52
- "@eggjs/mcp-proxy": "^3.63.0",
51
+ "@eggjs/egg-module-common": "^3.64.2",
53
52
  "@eggjs/router": "^2.0.1",
54
- "@eggjs/tegg": "^3.63.0",
55
- "@eggjs/tegg-common-util": "^3.63.0",
56
- "@eggjs/tegg-loader": "^3.63.0",
57
- "@eggjs/tegg-metadata": "^3.63.0",
58
- "@eggjs/tegg-runtime": "^3.63.0",
59
- "@modelcontextprotocol/sdk": "^1.10.0",
53
+ "@eggjs/tegg": "^3.64.2",
54
+ "@eggjs/tegg-common-util": "^3.64.2",
55
+ "@eggjs/tegg-loader": "^3.64.2",
56
+ "@eggjs/tegg-metadata": "^3.64.2",
57
+ "@eggjs/tegg-runtime": "^3.64.2",
58
+ "@modelcontextprotocol/sdk": "^1.23.0",
60
59
  "await-event": "^2.1.0",
61
60
  "content-type": "^1.0.5",
62
61
  "egg-errors": "^2.3.0",
@@ -68,9 +67,9 @@
68
67
  "zod": "^3.24.4"
69
68
  },
70
69
  "devDependencies": {
71
- "@eggjs/module-test-util": "^3.63.0",
72
- "@eggjs/tegg-config": "^3.63.0",
73
- "@eggjs/tegg-plugin": "^3.63.0",
70
+ "@eggjs/module-test-util": "^3.64.2",
71
+ "@eggjs/tegg-config": "^3.64.2",
72
+ "@eggjs/tegg-plugin": "^3.64.2",
74
73
  "@types/mocha": "^10.0.1",
75
74
  "@types/node": "^20.2.4",
76
75
  "cross-env": "^7.0.3",
@@ -84,5 +83,5 @@
84
83
  "publishConfig": {
85
84
  "access": "public"
86
85
  },
87
- "gitHead": "a988697a056ddcd9127ab2ffa2d0adacea1b2073"
86
+ "gitHead": "26842700a7d53c08d544fad51882c6e12f40e7cb"
88
87
  }