Skip to content

Commit

Permalink
pass down run id (#1913)
Browse files Browse the repository at this point in the history
- Pass down run id
- Fix some major mistakes
- Add changeset
- Address @abhiaiyer91 PR comment
- Fix tests

---------

Co-authored-by: umgefahren <55623006+umgefahren@users.noreply.github.com>
  • Loading branch information
abhiaiyer91 and umgefahren authored Feb 14, 2025
1 parent cf40fd7 commit e448a26
Show file tree
Hide file tree
Showing 4 changed files with 27 additions and 16 deletions.
5 changes: 5 additions & 0 deletions .changeset/rotten-planets-confess.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@mastra/core': patch
---

Correctly pass down runId to called tools
6 changes: 4 additions & 2 deletions packages/core/src/agent/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -460,6 +460,7 @@ export class Agent<
return tool.execute({
context: args,
mastra: this.#mastra,
runId,
});
} catch (err) {
this.logger.error(`[Agent:${this.name}] - Failed execution`, {
Expand Down Expand Up @@ -520,6 +521,7 @@ export class Agent<
});
return toolObj.execute!({
context: args,
runId,
});
} catch (err) {
this.logger.error(`[Agent:${this.name}] - Failed toolset execution`, {
Expand Down Expand Up @@ -884,7 +886,7 @@ export class Agent<
onFinish?.(result);
},
maxSteps,
runId,
runId: runIdToUse,
toolChoice,
}) as unknown as StreamReturn<Z>;
}
Expand Down Expand Up @@ -913,7 +915,7 @@ export class Agent<
onFinish?.(result);
},
maxSteps,
runId,
runId: runIdToUse,
toolChoice,
}) as unknown as StreamReturn<Z>;
}
Expand Down
16 changes: 8 additions & 8 deletions packages/core/src/llm/model/model.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ describe('MastraLLM', () => {

describe('convertTools', () => {
it('should convert tools correctly', () => {
const converted = aisdkText.convertTools(mockTools);
const converted = aisdkText.convertTools({ tools: mockTools });

expect(converted).toHaveProperty('testTool');

Expand All @@ -83,22 +83,22 @@ describe('MastraLLM', () => {
});

it('should handle empty tools input', () => {
const converted = aisdkText.convertTools();
const converted = aisdkText.convertTools({ tools: {} });
expect(converted).toEqual({});
});

it('should log debug messages during tool conversion', () => {
aisdkText.convertTools();
aisdkText.convertTools({ tools: mockTools });
expect(mockMastra.logger.debug).toHaveBeenCalledWith('Starting tool conversion for LLM');
expect(mockMastra.logger.debug).toHaveBeenCalledWith('Converted tools for LLM');
});

it('should execute tool with correct context', async () => {
const converted = aisdkText.convertTools(mockTools);
const converted = aisdkText.convertTools({ tools: mockTools });
expect(converted).toBeDefined();
expect(converted.testTool).toBeDefined();
if (converted.testTool.execute) {
await converted.testTool.execute({ test: 'value' }, {} as any);
await converted.testTool.execute({ test: 'value' });
}

expect(mockToolExecute).toHaveBeenCalledWith({ test: 'value' });
Expand Down Expand Up @@ -323,7 +323,7 @@ describe('MastraLLM', () => {

it('should handle pre-converted tools', async () => {
const messages: CoreMessage[] = [{ role: 'user', content: 'test message' }];
const convertedTools = aisdkText.convertTools(mockTools);
const convertedTools = aisdkText.convertTools({ tools: mockTools });

await aisdkText.__text({
messages,
Expand Down Expand Up @@ -435,7 +435,7 @@ describe('MastraLLM', () => {

it('should handle pre-converted tools', async () => {
const messages: CoreMessage[] = [{ role: 'user', content: 'test message' }];
const convertedTools = aisdkText.convertTools(mockTools);
const convertedTools = aisdkText.convertTools({ tools: mockTools });

await aisdkText.__stream({
messages,
Expand Down Expand Up @@ -674,7 +674,7 @@ describe('MastraLLM', () => {
const schema = z.object({
content: z.string(),
});
const convertedTools = aisdkObject.convertTools(mockTools);
const convertedTools = aisdkObject.convertTools({ tools: mockTools });

await aisdkObject.__streamObject({
messages,
Expand Down
16 changes: 10 additions & 6 deletions packages/core/src/llm/model/model.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ import {
} from '../';
import { type MastraPrimitives } from '../../action';
import { type ToolsInput } from '../../agent/types';
import type { CoreTool } from '../../tools';
import { delay } from '../../utils';

import { MastraLLMBase } from './base';
Expand Down Expand Up @@ -68,7 +69,7 @@ export class MastraLLM extends MastraLLMBase {
return this.#model;
}

convertTools(tools?: ToolsInput): Record<string, Tool> {
convertTools({ tools, runId }: { tools?: ToolsInput; runId?: string } = {}): Record<string, CoreTool> {
this.logger.debug('Starting tool conversion for LLM');
const converted = Object.entries(tools || {}).reduce(
(memo, value) => {
Expand All @@ -88,6 +89,7 @@ export class MastraLLM extends MastraLLMBase {
return tool.execute({
context: props,
mastra: this.#mastra,
runId,
});
} catch (error) {
this.logger.error('Error executing tool', {
Expand All @@ -103,9 +105,11 @@ export class MastraLLM extends MastraLLMBase {

return memo;
},
{} as Record<string, Tool>,
{} as Record<string, CoreTool>,
);

this.logger.debug(`Converted tools for LLM`);

return converted;
}

Expand All @@ -128,7 +132,7 @@ export class MastraLLM extends MastraLLMBase {
tools: Object.keys(tools || convertedTools || {}),
});

const finalTools = convertedTools || this.convertTools(tools);
const finalTools = convertedTools || this.convertTools({ tools, runId });

const argsForExecute = {
model,
Expand Down Expand Up @@ -182,7 +186,7 @@ export class MastraLLM extends MastraLLMBase {

this.logger.debug(`[LLM] - Generating a text object`, { runId });

const finalTools = convertedTools || this.convertTools(tools);
const finalTools = convertedTools || this.convertTools({ tools, runId });

const argsForExecute = {
model,
Expand Down Expand Up @@ -255,7 +259,7 @@ export class MastraLLM extends MastraLLMBase {
tools: Object.keys(tools || convertedTools || {}),
});

const finalTools = convertedTools || this.convertTools(tools);
const finalTools = convertedTools || this.convertTools({ tools, runId });

const argsForExecute = {
model,
Expand Down Expand Up @@ -326,7 +330,7 @@ export class MastraLLM extends MastraLLMBase {
tools: Object.keys(tools || convertedTools || {}),
});

const finalTools = convertedTools || this.convertTools(tools);
const finalTools = convertedTools || this.convertTools({ tools, runId });

const argsForExecute = {
model,
Expand Down

0 comments on commit e448a26

Please sign in to comment.