Skip to content

Commit ded4753

Browse files
committed
Fix #152 empty arguments parsing error in ai-sdk extension
1 parent 4adbcb5 commit ded4753

File tree

3 files changed

+38
-1
lines changed

3 files changed

+38
-1
lines changed

.changeset/common-carrots-wait.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@openai/agents-extensions': patch
3+
---
4+
5+
Fix #152 empty arguments parsing error in ai-sdk extension

packages/agents-extensions/src/aiSdk.ts

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,7 @@ export function itemsToLanguageV1Messages(
168168
type: 'tool-call',
169169
toolCallId: item.callId,
170170
toolName: item.name,
171-
args: JSON.parse(item.arguments),
171+
args: parseArguments(item.arguments),
172172
providerMetadata: {
173173
...(item.providerData ?? {}),
174174
},
@@ -775,3 +775,15 @@ export class AiSdkModel implements Model {
775775
export function aisdk(model: LanguageModelV1) {
776776
return new AiSdkModel(model);
777777
}
778+
779+
export function parseArguments(args: string | undefined | null): any {
780+
if (!args) {
781+
return {};
782+
}
783+
784+
try {
785+
return JSON.parse(args);
786+
} catch (_) {
787+
return {};
788+
}
789+
}

packages/agents-extensions/test/aiSdk.test.ts

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import {
33
AiSdkModel,
44
getResponseFormat,
55
itemsToLanguageV1Messages,
6+
parseArguments,
67
toolToLanguageV1Tool,
78
} from '../src/aiSdk';
89
import { protocol, withTrace, UserError } from '@openai/agents';
@@ -802,4 +803,23 @@ describe('AiSdkModel', () => {
802803
},
803804
]);
804805
});
806+
807+
describe('parseArguments', () => {
808+
test('should parse valid JSON', () => {
809+
expect(parseArguments(undefined)).toEqual({});
810+
expect(parseArguments(null)).toEqual({});
811+
expect(parseArguments('')).toEqual({});
812+
expect(parseArguments(' ')).toEqual({});
813+
expect(parseArguments('{ ')).toEqual({});
814+
expect(parseArguments('foo')).toEqual({});
815+
expect(parseArguments('{}')).toEqual({});
816+
expect(parseArguments('{ }')).toEqual({});
817+
818+
expect(parseArguments('"foo"')).toEqual('foo');
819+
expect(parseArguments('[]')).toEqual([]);
820+
expect(parseArguments('[1,2,3]')).toEqual([1, 2, 3]);
821+
expect(parseArguments('{"a":1}')).toEqual({ a: 1 });
822+
expect(parseArguments('{"a":1,"b":"c"}')).toEqual({ a: 1, b: 'c' });
823+
});
824+
});
805825
});

0 commit comments

Comments
 (0)