diff --git a/packages/core/src/config/config.ts b/packages/core/src/config/config.ts index 901eb269d8..e5ee70c040 100644 --- a/packages/core/src/config/config.ts +++ b/packages/core/src/config/config.ts @@ -2832,7 +2832,11 @@ export class Config implements McpContext, AgentLoopContext { } async createToolRegistry(): Promise { - const registry = new ToolRegistry(this, this.messageBus, true); + const registry = new ToolRegistry( + this, + this.messageBus, + /* isMainRegistry= */ true, + ); // helper to create & register core tools that are enabled const maybeRegister = ( diff --git a/packages/core/src/tools/tools.ts b/packages/core/src/tools/tools.ts index f00aeb2d33..5add6823b5 100644 --- a/packages/core/src/tools/tools.ts +++ b/packages/core/src/tools/tools.ts @@ -381,6 +381,8 @@ export abstract class DeclarativeTool< ) {} clone(messageBus?: MessageBus): this { + // Note: we cannot use structuredClone() here because it does not preserve + // prototype chains or handle non-serializable properties (like functions). // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion const cloned = Object.assign( Object.create(Object.getPrototypeOf(this)),