@openai/agents-core 0.1.11 → 0.2.1

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 (63) hide show
  1. package/dist/agent.d.ts +8 -5
  2. package/dist/agent.js +4 -3
  3. package/dist/agent.js.map +1 -1
  4. package/dist/agent.mjs +4 -3
  5. package/dist/agent.mjs.map +1 -1
  6. package/dist/index.d.ts +1 -0
  7. package/dist/index.js.map +1 -1
  8. package/dist/index.mjs.map +1 -1
  9. package/dist/items.d.ts +424 -80
  10. package/dist/metadata.js +3 -3
  11. package/dist/metadata.js.map +1 -1
  12. package/dist/metadata.mjs +3 -3
  13. package/dist/metadata.mjs.map +1 -1
  14. package/dist/runImplementation.js +346 -0
  15. package/dist/runImplementation.js.map +1 -1
  16. package/dist/runImplementation.mjs +346 -0
  17. package/dist/runImplementation.mjs.map +1 -1
  18. package/dist/runState.d.ts +2416 -225
  19. package/dist/shims/shims-browser.d.ts +1 -1
  20. package/dist/shims/shims-workerd.d.ts +1 -1
  21. package/dist/tool.d.ts +5 -5
  22. package/dist/tool.js.map +1 -1
  23. package/dist/tool.mjs.map +1 -1
  24. package/dist/types/helpers.d.ts +3 -3
  25. package/dist/types/protocol.d.ts +1249 -205
  26. package/dist/types/protocol.js +101 -19
  27. package/dist/types/protocol.js.map +1 -1
  28. package/dist/types/protocol.mjs +100 -18
  29. package/dist/types/protocol.mjs.map +1 -1
  30. package/dist/utils/base64.d.ts +4 -0
  31. package/dist/utils/base64.js +43 -0
  32. package/dist/utils/base64.js.map +1 -0
  33. package/dist/utils/base64.mjs +40 -0
  34. package/dist/utils/base64.mjs.map +1 -0
  35. package/dist/utils/index.d.ts +1 -0
  36. package/dist/utils/index.js +3 -1
  37. package/dist/utils/index.js.map +1 -1
  38. package/dist/utils/index.mjs +1 -0
  39. package/dist/utils/index.mjs.map +1 -1
  40. package/dist/utils/smartString.js +56 -3
  41. package/dist/utils/smartString.js.map +1 -1
  42. package/dist/utils/smartString.mjs +56 -3
  43. package/dist/utils/smartString.mjs.map +1 -1
  44. package/dist/utils/tools.js +72 -15
  45. package/dist/utils/tools.js.map +1 -1
  46. package/dist/utils/tools.mjs +72 -15
  47. package/dist/utils/tools.mjs.map +1 -1
  48. package/dist/utils/typeGuards.d.ts +2 -2
  49. package/dist/utils/typeGuards.js +7 -7
  50. package/dist/utils/typeGuards.js.map +1 -1
  51. package/dist/utils/typeGuards.mjs +7 -7
  52. package/dist/utils/typeGuards.mjs.map +1 -1
  53. package/dist/utils/zodCompat.d.ts +13 -0
  54. package/dist/utils/zodCompat.js +29 -0
  55. package/dist/utils/zodCompat.js.map +1 -0
  56. package/dist/utils/zodCompat.mjs +24 -0
  57. package/dist/utils/zodCompat.mjs.map +1 -0
  58. package/dist/utils/zodJsonSchemaCompat.d.ts +29 -0
  59. package/dist/utils/zodJsonSchemaCompat.js +282 -0
  60. package/dist/utils/zodJsonSchemaCompat.js.map +1 -0
  61. package/dist/utils/zodJsonSchemaCompat.mjs +278 -0
  62. package/dist/utils/zodJsonSchemaCompat.mjs.map +1 -0
  63. package/package.json +4 -4
@@ -1,16 +1,24 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.toSmartString = toSmartString;
4
+ const BYTE_PREVIEW_LIMIT = 20;
4
5
  function toSmartString(value) {
5
6
  if (value === null || value === undefined) {
6
7
  return String(value);
7
8
  }
8
- else if (typeof value === 'string') {
9
+ if (isArrayBufferLike(value)) {
10
+ return formatByteArray(new Uint8Array(value));
11
+ }
12
+ if (isArrayBufferView(value)) {
13
+ const view = value;
14
+ return formatByteArray(new Uint8Array(view.buffer, view.byteOffset, view.byteLength));
15
+ }
16
+ if (typeof value === 'string') {
9
17
  return value;
10
18
  }
11
- else if (typeof value === 'object') {
19
+ if (typeof value === 'object') {
12
20
  try {
13
- return JSON.stringify(value);
21
+ return JSON.stringify(value, smartStringReplacer);
14
22
  }
15
23
  catch (_e) {
16
24
  return '[object with circular references]';
@@ -18,4 +26,49 @@ function toSmartString(value) {
18
26
  }
19
27
  return String(value);
20
28
  }
29
+ function isArrayBufferLike(value) {
30
+ if (value instanceof ArrayBuffer) {
31
+ return true;
32
+ }
33
+ const sharedArrayBufferCtor = globalThis.SharedArrayBuffer;
34
+ return Boolean(sharedArrayBufferCtor && value instanceof sharedArrayBufferCtor);
35
+ }
36
+ function isArrayBufferView(value) {
37
+ return typeof ArrayBuffer !== 'undefined' && ArrayBuffer.isView(value);
38
+ }
39
+ function isSerializedBufferSnapshot(value) {
40
+ return (typeof value === 'object' &&
41
+ value !== null &&
42
+ value.type === 'Buffer' &&
43
+ Array.isArray(value.data));
44
+ }
45
+ function formatByteArray(bytes) {
46
+ if (bytes.length === 0) {
47
+ return '[byte array (0 bytes)]';
48
+ }
49
+ const previewLength = Math.min(bytes.length, BYTE_PREVIEW_LIMIT);
50
+ const previewParts = [];
51
+ for (let i = 0; i < previewLength; i++) {
52
+ previewParts.push(formatByte(bytes[i]));
53
+ }
54
+ const ellipsis = bytes.length > BYTE_PREVIEW_LIMIT ? ' …' : '';
55
+ const preview = previewParts.join(' ');
56
+ return `[byte array ${preview}${ellipsis} (${bytes.length} bytes)]`;
57
+ }
58
+ function formatByte(byte) {
59
+ return `0x${byte.toString(16).padStart(2, '0')}`;
60
+ }
61
+ function smartStringReplacer(_key, nestedValue) {
62
+ if (isArrayBufferLike(nestedValue)) {
63
+ return formatByteArray(new Uint8Array(nestedValue));
64
+ }
65
+ if (isArrayBufferView(nestedValue)) {
66
+ const view = nestedValue;
67
+ return formatByteArray(new Uint8Array(view.buffer, view.byteOffset, view.byteLength));
68
+ }
69
+ if (isSerializedBufferSnapshot(nestedValue)) {
70
+ return formatByteArray(Uint8Array.from(nestedValue.data));
71
+ }
72
+ return nestedValue;
73
+ }
21
74
  //# sourceMappingURL=smartString.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"smartString.js","sourceRoot":"","sources":["../../src/utils/smartString.ts"],"names":[],"mappings":";;AAAA,sCAaC;AAbD,SAAgB,aAAa,CAAC,KAAc;IAC1C,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QAC1C,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;SAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACrC,OAAO,KAAK,CAAC;IACf,CAAC;SAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACrC,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC;QAAC,OAAO,EAAE,EAAE,CAAC;YACZ,OAAO,mCAAmC,CAAC;QAC7C,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC"}
1
+ {"version":3,"file":"smartString.js","sourceRoot":"","sources":["../../src/utils/smartString.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,21 @@
1
+ const BYTE_PREVIEW_LIMIT = 20;
1
2
  export function toSmartString(value) {
2
3
  if (value === null || value === undefined) {
3
4
  return String(value);
4
5
  }
5
- else if (typeof value === 'string') {
6
+ if (isArrayBufferLike(value)) {
7
+ return formatByteArray(new Uint8Array(value));
8
+ }
9
+ if (isArrayBufferView(value)) {
10
+ const view = value;
11
+ return formatByteArray(new Uint8Array(view.buffer, view.byteOffset, view.byteLength));
12
+ }
13
+ if (typeof value === 'string') {
6
14
  return value;
7
15
  }
8
- else if (typeof value === 'object') {
16
+ if (typeof value === 'object') {
9
17
  try {
10
- return JSON.stringify(value);
18
+ return JSON.stringify(value, smartStringReplacer);
11
19
  }
12
20
  catch (_e) {
13
21
  return '[object with circular references]';
@@ -15,4 +23,49 @@ export function toSmartString(value) {
15
23
  }
16
24
  return String(value);
17
25
  }
26
+ function isArrayBufferLike(value) {
27
+ if (value instanceof ArrayBuffer) {
28
+ return true;
29
+ }
30
+ const sharedArrayBufferCtor = globalThis.SharedArrayBuffer;
31
+ return Boolean(sharedArrayBufferCtor && value instanceof sharedArrayBufferCtor);
32
+ }
33
+ function isArrayBufferView(value) {
34
+ return typeof ArrayBuffer !== 'undefined' && ArrayBuffer.isView(value);
35
+ }
36
+ function isSerializedBufferSnapshot(value) {
37
+ return (typeof value === 'object' &&
38
+ value !== null &&
39
+ value.type === 'Buffer' &&
40
+ Array.isArray(value.data));
41
+ }
42
+ function formatByteArray(bytes) {
43
+ if (bytes.length === 0) {
44
+ return '[byte array (0 bytes)]';
45
+ }
46
+ const previewLength = Math.min(bytes.length, BYTE_PREVIEW_LIMIT);
47
+ const previewParts = [];
48
+ for (let i = 0; i < previewLength; i++) {
49
+ previewParts.push(formatByte(bytes[i]));
50
+ }
51
+ const ellipsis = bytes.length > BYTE_PREVIEW_LIMIT ? ' …' : '';
52
+ const preview = previewParts.join(' ');
53
+ return `[byte array ${preview}${ellipsis} (${bytes.length} bytes)]`;
54
+ }
55
+ function formatByte(byte) {
56
+ return `0x${byte.toString(16).padStart(2, '0')}`;
57
+ }
58
+ function smartStringReplacer(_key, nestedValue) {
59
+ if (isArrayBufferLike(nestedValue)) {
60
+ return formatByteArray(new Uint8Array(nestedValue));
61
+ }
62
+ if (isArrayBufferView(nestedValue)) {
63
+ const view = nestedValue;
64
+ return formatByteArray(new Uint8Array(view.buffer, view.byteOffset, view.byteLength));
65
+ }
66
+ if (isSerializedBufferSnapshot(nestedValue)) {
67
+ return formatByteArray(Uint8Array.from(nestedValue.data));
68
+ }
69
+ return nestedValue;
70
+ }
18
71
  //# sourceMappingURL=smartString.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"smartString.mjs","sourceRoot":"","sources":["../../src/utils/smartString.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,aAAa,CAAC,KAAc;IAC1C,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QAC1C,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;SAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACrC,OAAO,KAAK,CAAC;IACf,CAAC;SAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACrC,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC;QAAC,OAAO,EAAE,EAAE,CAAC;YACZ,OAAO,mCAAmC,CAAC;QAC7C,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC"}
1
+ {"version":3,"file":"smartString.mjs","sourceRoot":"","sources":["../../src/utils/smartString.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,17 @@ exports.convertAgentOutputTypeToSerializable = convertAgentOutputTypeToSerializa
6
6
  const zod_1 = require("openai/helpers/zod");
7
7
  const errors_1 = require("../errors.js");
8
8
  const typeGuards_1 = require("./typeGuards.js");
9
+ const zodJsonSchemaCompat_1 = require("./zodJsonSchemaCompat.js");
10
+ const zodCompat_1 = require("./zodCompat.js");
11
+ const zodResponsesFunctionCompat = zod_1.zodResponsesFunction;
12
+ // The `.schema` payload is all we need, so a lightweight signature keeps the compiler happy.
13
+ const zodTextFormatCompat = zod_1.zodTextFormat;
14
+ // openai/helpers/zod cannot emit strict schemas for every Zod runtime
15
+ // (notably Zod v4), so we delegate to a small local converter living in
16
+ // zodJsonSchemaCompat.ts whenever its output is missing the required JSON Schema bits.
17
+ function buildJsonSchemaFromZod(inputType) {
18
+ return (0, zodJsonSchemaCompat_1.zodJsonSchemaCompat)(inputType);
19
+ }
9
20
  /**
10
21
  * Convert a string to a function tool name by replacing spaces with underscores and
11
22
  * non-alphanumeric characters with underscores.
@@ -34,16 +45,38 @@ function toFunctionToolName(name) {
34
45
  function getSchemaAndParserFromInputType(inputType, name) {
35
46
  const parser = (input) => JSON.parse(input);
36
47
  if ((0, typeGuards_1.isZodObject)(inputType)) {
37
- const formattedFunction = (0, zod_1.zodResponsesFunction)({
38
- name,
39
- parameters: inputType,
40
- function: () => { }, // empty function here to satisfy the OpenAI helper
41
- description: '',
42
- });
43
- return {
44
- schema: formattedFunction.parameters,
45
- parser: formattedFunction.$parseRaw,
48
+ const useFallback = (originalError) => {
49
+ const fallbackSchema = buildJsonSchemaFromZod(inputType);
50
+ if (fallbackSchema) {
51
+ return {
52
+ schema: fallbackSchema,
53
+ parser: (rawInput) => inputType.parse(JSON.parse(rawInput)),
54
+ };
55
+ }
56
+ const errorMessage = originalError instanceof Error
57
+ ? ` Upstream helper error: ${originalError.message}`
58
+ : '';
59
+ throw new errors_1.UserError(`Unable to convert the provided Zod schema to JSON Schema. Ensure that the \`zod\` package is available at runtime or provide a JSON schema object instead.${errorMessage}`);
46
60
  };
61
+ let formattedFunction;
62
+ try {
63
+ formattedFunction = zodResponsesFunctionCompat({
64
+ name,
65
+ parameters: (0, zodCompat_1.asZodType)(inputType),
66
+ function: () => { }, // empty function here to satisfy the OpenAI helper
67
+ description: '',
68
+ });
69
+ }
70
+ catch (error) {
71
+ return useFallback(error);
72
+ }
73
+ if ((0, zodJsonSchemaCompat_1.hasJsonSchemaObjectShape)(formattedFunction.parameters)) {
74
+ return {
75
+ schema: formattedFunction.parameters,
76
+ parser: formattedFunction.$parseRaw,
77
+ };
78
+ }
79
+ return useFallback();
47
80
  }
48
81
  else if (typeof inputType === 'object' && inputType !== null) {
49
82
  return {
@@ -61,13 +94,37 @@ function convertAgentOutputTypeToSerializable(outputType) {
61
94
  return 'text';
62
95
  }
63
96
  if ((0, typeGuards_1.isZodObject)(outputType)) {
64
- const output = (0, zod_1.zodTextFormat)(outputType, 'output');
65
- return {
66
- type: output.type,
67
- name: output.name,
68
- strict: output.strict || false,
69
- schema: output.schema,
97
+ const useFallback = (existing, originalError) => {
98
+ const fallbackSchema = buildJsonSchemaFromZod(outputType);
99
+ if (fallbackSchema) {
100
+ return {
101
+ type: existing?.type ?? 'json_schema',
102
+ name: existing?.name ?? 'output',
103
+ strict: existing?.strict ?? false,
104
+ schema: fallbackSchema,
105
+ };
106
+ }
107
+ const errorMessage = originalError instanceof Error
108
+ ? ` Upstream helper error: ${originalError.message}`
109
+ : '';
110
+ throw new errors_1.UserError(`Unable to convert the provided Zod schema to JSON Schema. Ensure that the \`zod\` package is available at runtime or provide a JSON schema object instead.${errorMessage}`);
70
111
  };
112
+ let output;
113
+ try {
114
+ output = zodTextFormatCompat((0, zodCompat_1.asZodType)(outputType), 'output');
115
+ }
116
+ catch (error) {
117
+ return useFallback(undefined, error);
118
+ }
119
+ if ((0, zodJsonSchemaCompat_1.hasJsonSchemaObjectShape)(output.schema)) {
120
+ return {
121
+ type: output.type,
122
+ name: output.name,
123
+ strict: output.strict || false,
124
+ schema: output.schema,
125
+ };
126
+ }
127
+ return useFallback(output);
71
128
  }
72
129
  return outputType;
73
130
  }
@@ -1 +1 @@
1
- {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/utils/tools.ts"],"names":[],"mappings":";;AAiBA,gDAaC;AAUD,0EA6BC;AAKD,oFAkBC;AA5FD,4CAAyE;AACzE,yCAAsC;AAGtC,gDAA2C;AAO3C;;;;;GAKG;AACH,SAAgB,kBAAkB,CAAC,IAAY;IAC7C,kCAAkC;IAClC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAEhC,uDAAuD;IACvD,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;IAE1C,+BAA+B;IAC/B,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;IAC/C,CAAC;IAED,OAAO,IAAwB,CAAC;AAClC,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,+BAA+B,CAC7C,SAAY,EACZ,IAAY;IAKZ,MAAM,MAAM,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAEpD,IAAI,IAAA,wBAAW,EAAC,SAAS,CAAC,EAAE,CAAC;QAC3B,MAAM,iBAAiB,GAAG,IAAA,0BAAoB,EAAC;YAC7C,IAAI;YACJ,UAAU,EAAE,SAAS;YACrB,QAAQ,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,mDAAmD;YACvE,WAAW,EAAE,EAAE;SAChB,CAAC,CAAC;QAEH,OAAO;YACL,MAAM,EAAE,iBAAiB,CAAC,UAAmC;YAC7D,MAAM,EAAE,iBAAiB,CAAC,SAAS;SACpC,CAAC;IACJ,CAAC;SAAM,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;QAC/D,OAAO;YACL,MAAM,EAAE,SAAS;YACjB,MAAM;SACP,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,kBAAS,CAAC,sDAAsD,CAAC,CAAC;AAC9E,CAAC;AAED;;GAEG;AACH,SAAgB,oCAAoC,CAClD,UAA2B;IAE3B,IAAI,UAAU,KAAK,MAAM,EAAE,CAAC;QAC1B,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,IAAA,wBAAW,EAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,MAAM,MAAM,GAAG,IAAA,mBAAa,EAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QACnD,OAAO;YACL,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,KAAK;YAC9B,MAAM,EAAE,MAAM,CAAC,MAA+B;SAC/C,CAAC;IACJ,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC"}
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/utils/tools.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,17 @@
1
1
  import { zodResponsesFunction, zodTextFormat } from 'openai/helpers/zod';
2
2
  import { UserError } from "../errors.mjs";
3
3
  import { isZodObject } from "./typeGuards.mjs";
4
+ import { zodJsonSchemaCompat, hasJsonSchemaObjectShape, } from "./zodJsonSchemaCompat.mjs";
5
+ import { asZodType } from "./zodCompat.mjs";
6
+ const zodResponsesFunctionCompat = zodResponsesFunction;
7
+ // The `.schema` payload is all we need, so a lightweight signature keeps the compiler happy.
8
+ const zodTextFormatCompat = zodTextFormat;
9
+ // openai/helpers/zod cannot emit strict schemas for every Zod runtime
10
+ // (notably Zod v4), so we delegate to a small local converter living in
11
+ // zodJsonSchemaCompat.ts whenever its output is missing the required JSON Schema bits.
12
+ function buildJsonSchemaFromZod(inputType) {
13
+ return zodJsonSchemaCompat(inputType);
14
+ }
4
15
  /**
5
16
  * Convert a string to a function tool name by replacing spaces with underscores and
6
17
  * non-alphanumeric characters with underscores.
@@ -29,16 +40,38 @@ export function toFunctionToolName(name) {
29
40
  export function getSchemaAndParserFromInputType(inputType, name) {
30
41
  const parser = (input) => JSON.parse(input);
31
42
  if (isZodObject(inputType)) {
32
- const formattedFunction = zodResponsesFunction({
33
- name,
34
- parameters: inputType,
35
- function: () => { }, // empty function here to satisfy the OpenAI helper
36
- description: '',
37
- });
38
- return {
39
- schema: formattedFunction.parameters,
40
- parser: formattedFunction.$parseRaw,
43
+ const useFallback = (originalError) => {
44
+ const fallbackSchema = buildJsonSchemaFromZod(inputType);
45
+ if (fallbackSchema) {
46
+ return {
47
+ schema: fallbackSchema,
48
+ parser: (rawInput) => inputType.parse(JSON.parse(rawInput)),
49
+ };
50
+ }
51
+ const errorMessage = originalError instanceof Error
52
+ ? ` Upstream helper error: ${originalError.message}`
53
+ : '';
54
+ throw new UserError(`Unable to convert the provided Zod schema to JSON Schema. Ensure that the \`zod\` package is available at runtime or provide a JSON schema object instead.${errorMessage}`);
41
55
  };
56
+ let formattedFunction;
57
+ try {
58
+ formattedFunction = zodResponsesFunctionCompat({
59
+ name,
60
+ parameters: asZodType(inputType),
61
+ function: () => { }, // empty function here to satisfy the OpenAI helper
62
+ description: '',
63
+ });
64
+ }
65
+ catch (error) {
66
+ return useFallback(error);
67
+ }
68
+ if (hasJsonSchemaObjectShape(formattedFunction.parameters)) {
69
+ return {
70
+ schema: formattedFunction.parameters,
71
+ parser: formattedFunction.$parseRaw,
72
+ };
73
+ }
74
+ return useFallback();
42
75
  }
43
76
  else if (typeof inputType === 'object' && inputType !== null) {
44
77
  return {
@@ -56,13 +89,37 @@ export function convertAgentOutputTypeToSerializable(outputType) {
56
89
  return 'text';
57
90
  }
58
91
  if (isZodObject(outputType)) {
59
- const output = zodTextFormat(outputType, 'output');
60
- return {
61
- type: output.type,
62
- name: output.name,
63
- strict: output.strict || false,
64
- schema: output.schema,
92
+ const useFallback = (existing, originalError) => {
93
+ const fallbackSchema = buildJsonSchemaFromZod(outputType);
94
+ if (fallbackSchema) {
95
+ return {
96
+ type: existing?.type ?? 'json_schema',
97
+ name: existing?.name ?? 'output',
98
+ strict: existing?.strict ?? false,
99
+ schema: fallbackSchema,
100
+ };
101
+ }
102
+ const errorMessage = originalError instanceof Error
103
+ ? ` Upstream helper error: ${originalError.message}`
104
+ : '';
105
+ throw new UserError(`Unable to convert the provided Zod schema to JSON Schema. Ensure that the \`zod\` package is available at runtime or provide a JSON schema object instead.${errorMessage}`);
65
106
  };
107
+ let output;
108
+ try {
109
+ output = zodTextFormatCompat(asZodType(outputType), 'output');
110
+ }
111
+ catch (error) {
112
+ return useFallback(undefined, error);
113
+ }
114
+ if (hasJsonSchemaObjectShape(output.schema)) {
115
+ return {
116
+ type: output.type,
117
+ name: output.name,
118
+ strict: output.strict || false,
119
+ schema: output.schema,
120
+ };
121
+ }
122
+ return useFallback(output);
66
123
  }
67
124
  return outputType;
68
125
  }
@@ -1 +1 @@
1
- {"version":3,"file":"tools.mjs","sourceRoot":"","sources":["../../src/utils/tools.ts"],"names":[],"mappings":"OAAO,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,oBAAoB;OACjE,EAAE,SAAS,EAAE;OAGb,EAAE,WAAW,EAAE;AAOtB;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,kCAAkC;IAClC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAEhC,uDAAuD;IACvD,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;IAE1C,+BAA+B;IAC/B,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;IAC/C,CAAC;IAED,OAAO,IAAwB,CAAC;AAClC,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,+BAA+B,CAC7C,SAAY,EACZ,IAAY;IAKZ,MAAM,MAAM,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAEpD,IAAI,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC;QAC3B,MAAM,iBAAiB,GAAG,oBAAoB,CAAC;YAC7C,IAAI;YACJ,UAAU,EAAE,SAAS;YACrB,QAAQ,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,mDAAmD;YACvE,WAAW,EAAE,EAAE;SAChB,CAAC,CAAC;QAEH,OAAO;YACL,MAAM,EAAE,iBAAiB,CAAC,UAAmC;YAC7D,MAAM,EAAE,iBAAiB,CAAC,SAAS;SACpC,CAAC;IACJ,CAAC;SAAM,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;QAC/D,OAAO;YACL,MAAM,EAAE,SAAS;YACjB,MAAM;SACP,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,SAAS,CAAC,sDAAsD,CAAC,CAAC;AAC9E,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oCAAoC,CAClD,UAA2B;IAE3B,IAAI,UAAU,KAAK,MAAM,EAAE,CAAC;QAC1B,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,WAAW,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,MAAM,MAAM,GAAG,aAAa,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QACnD,OAAO;YACL,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,KAAK;YAC9B,MAAM,EAAE,MAAM,CAAC,MAA+B;SAC/C,CAAC;IACJ,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC"}
1
+ {"version":3,"file":"tools.mjs","sourceRoot":"","sources":["../../src/utils/tools.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,11 @@
1
- import type { ZodObject } from 'zod';
1
+ import type { ZodObjectLike } from './zodCompat';
2
2
  /**
3
3
  * Verifies that an input is a ZodObject without needing to have Zod at runtime since it's an
4
4
  * optional dependency.
5
5
  * @param input
6
6
  * @returns
7
7
  */
8
- export declare function isZodObject(input: unknown): input is ZodObject<any>;
8
+ export declare function isZodObject(input: unknown): input is ZodObjectLike;
9
9
  /**
10
10
  * Verifies that an input is an object with an `input` property.
11
11
  * @param input
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.isZodObject = isZodObject;
4
4
  exports.isAgentToolInput = isAgentToolInput;
5
+ const zodCompat_1 = require("./zodCompat.js");
5
6
  /**
6
7
  * Verifies that an input is a ZodObject without needing to have Zod at runtime since it's an
7
8
  * optional dependency.
@@ -9,13 +10,12 @@ exports.isAgentToolInput = isAgentToolInput;
9
10
  * @returns
10
11
  */
11
12
  function isZodObject(input) {
12
- return (typeof input === 'object' &&
13
- input !== null &&
14
- '_def' in input &&
15
- typeof input._def === 'object' &&
16
- input._def !== null &&
17
- 'typeName' in input._def &&
18
- input._def.typeName === 'ZodObject');
13
+ const definition = (0, zodCompat_1.readZodDefinition)(input);
14
+ if (!definition) {
15
+ return false;
16
+ }
17
+ const type = (0, zodCompat_1.readZodType)(input);
18
+ return type === 'object';
19
19
  }
20
20
  /**
21
21
  * Verifies that an input is an object with an `input` property.
@@ -1 +1 @@
1
- {"version":3,"file":"typeGuards.js","sourceRoot":"","sources":["../../src/utils/typeGuards.ts"],"names":[],"mappings":";;AASA,kCAUC;AAOD,4CASC;AAjCD;;;;;GAKG;AAEH,SAAgB,WAAW,CAAC,KAAc;IACxC,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,MAAM,IAAI,KAAK;QACf,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ;QAC9B,KAAK,CAAC,IAAI,KAAK,IAAI;QACnB,UAAU,IAAI,KAAK,CAAC,IAAI;QACxB,KAAK,CAAC,IAAI,CAAC,QAAQ,KAAK,WAAW,CACpC,CAAC;AACJ,CAAC;AACD;;;;GAIG;AAEH,SAAgB,gBAAgB,CAAC,KAAc;IAG7C,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,OAAO,IAAI,KAAK;QAChB,OAAQ,KAAa,CAAC,KAAK,KAAK,QAAQ,CACzC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"typeGuards.js","sourceRoot":"","sources":["../../src/utils/typeGuards.ts"],"names":[],"mappings":";;AASA,kCAQC;AAOD,4CASC;AAhCD,8CAA6D;AAE7D;;;;;GAKG;AACH,SAAgB,WAAW,CAAC,KAAc;IACxC,MAAM,UAAU,GAAG,IAAA,6BAAiB,EAAC,KAAK,CAAC,CAAC;IAC5C,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,IAAI,GAAG,IAAA,uBAAW,EAAC,KAAK,CAAC,CAAC;IAChC,OAAO,IAAI,KAAK,QAAQ,CAAC;AAC3B,CAAC;AAED;;;;GAIG;AACH,SAAgB,gBAAgB,CAAC,KAAc;IAG7C,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,OAAO,IAAI,KAAK;QAChB,OAAQ,KAAa,CAAC,KAAK,KAAK,QAAQ,CACzC,CAAC;AACJ,CAAC"}
@@ -1,3 +1,4 @@
1
+ import { readZodDefinition, readZodType } from "./zodCompat.mjs";
1
2
  /**
2
3
  * Verifies that an input is a ZodObject without needing to have Zod at runtime since it's an
3
4
  * optional dependency.
@@ -5,13 +6,12 @@
5
6
  * @returns
6
7
  */
7
8
  export function isZodObject(input) {
8
- return (typeof input === 'object' &&
9
- input !== null &&
10
- '_def' in input &&
11
- typeof input._def === 'object' &&
12
- input._def !== null &&
13
- 'typeName' in input._def &&
14
- input._def.typeName === 'ZodObject');
9
+ const definition = readZodDefinition(input);
10
+ if (!definition) {
11
+ return false;
12
+ }
13
+ const type = readZodType(input);
14
+ return type === 'object';
15
15
  }
16
16
  /**
17
17
  * Verifies that an input is an object with an `input` property.
@@ -1 +1 @@
1
- {"version":3,"file":"typeGuards.mjs","sourceRoot":"","sources":["../../src/utils/typeGuards.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AAEH,MAAM,UAAU,WAAW,CAAC,KAAc;IACxC,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,MAAM,IAAI,KAAK;QACf,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ;QAC9B,KAAK,CAAC,IAAI,KAAK,IAAI;QACnB,UAAU,IAAI,KAAK,CAAC,IAAI;QACxB,KAAK,CAAC,IAAI,CAAC,QAAQ,KAAK,WAAW,CACpC,CAAC;AACJ,CAAC;AACD;;;;GAIG;AAEH,MAAM,UAAU,gBAAgB,CAAC,KAAc;IAG7C,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,OAAO,IAAI,KAAK;QAChB,OAAQ,KAAa,CAAC,KAAK,KAAK,QAAQ,CACzC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"typeGuards.mjs","sourceRoot":"","sources":["../../src/utils/typeGuards.ts"],"names":[],"mappings":"OACO,EAAE,iBAAiB,EAAE,WAAW,EAAE;AAEzC;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAC,KAAc;IACxC,MAAM,UAAU,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAC5C,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,IAAI,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;IAChC,OAAO,IAAI,KAAK,QAAQ,CAAC;AAC3B,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAc;IAG7C,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,OAAO,IAAI,KAAK;QAChB,OAAQ,KAAa,CAAC,KAAK,KAAK,QAAQ,CACzC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,13 @@
1
+ import type { ZodObject as ZodObjectV3, ZodTypeAny } from 'zod';
2
+ import type { ZodObject as ZodObjectV4, ZodType as ZodTypeV4 } from 'zod/v4';
3
+ type ZodDefinition = Record<string, unknown> | undefined;
4
+ type ZodTypeV4Any = ZodTypeV4<any, any, any>;
5
+ export type ZodTypeLike = ZodTypeAny | ZodTypeV4Any;
6
+ export type ZodObjectLike = ZodObjectV3<any, any, any, any, any> | ZodObjectV4<any, any>;
7
+ export declare function asZodType(schema: ZodTypeLike): ZodTypeAny;
8
+ export declare function readZodDefinition(input: unknown): ZodDefinition;
9
+ export declare function readZodType(input: unknown): string | undefined;
10
+ export type ZodInfer<T extends ZodTypeLike> = T extends {
11
+ _output: infer Output;
12
+ } ? Output : never;
13
+ export {};
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.asZodType = asZodType;
4
+ exports.readZodDefinition = readZodDefinition;
5
+ exports.readZodType = readZodType;
6
+ function asZodType(schema) {
7
+ return schema;
8
+ }
9
+ function readZodDefinition(input) {
10
+ if (typeof input !== 'object' || input === null) {
11
+ return undefined;
12
+ }
13
+ const candidate = input;
14
+ return candidate._zod?.def || candidate._def || candidate.def;
15
+ }
16
+ function readZodType(input) {
17
+ const def = readZodDefinition(input);
18
+ if (!def) {
19
+ return undefined;
20
+ }
21
+ const rawType = (typeof def.typeName === 'string' && def.typeName) ||
22
+ (typeof def.type === 'string' && def.type);
23
+ if (typeof rawType !== 'string') {
24
+ return undefined;
25
+ }
26
+ const lower = rawType.toLowerCase();
27
+ return lower.startsWith('zod') ? lower.slice(3) : lower;
28
+ }
29
+ //# sourceMappingURL=zodCompat.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zodCompat.js","sourceRoot":"","sources":["../../src/utils/zodCompat.ts"],"names":[],"mappings":";;AAkBA,8BAEC;AAED,8CAOC;AAED,kCAgBC;AA7BD,SAAgB,SAAS,CAAC,MAAmB;IAC3C,OAAO,MAA+B,CAAC;AACzC,CAAC;AAED,SAAgB,iBAAiB,CAAC,KAAc;IAC9C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAChD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,SAAS,GAAG,KAAgB,CAAC;IACnC,OAAO,SAAS,CAAC,IAAI,EAAE,GAAG,IAAI,SAAS,CAAC,IAAI,IAAI,SAAS,CAAC,GAAG,CAAC;AAChE,CAAC;AAED,SAAgB,WAAW,CAAC,KAAc;IACxC,MAAM,GAAG,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;IACrC,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,OAAO,GACX,CAAC,OAAO,GAAG,CAAC,QAAQ,KAAK,QAAQ,IAAI,GAAG,CAAC,QAAQ,CAAC;QAClD,CAAC,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC;IAE7C,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAChC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IACpC,OAAO,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AAC1D,CAAC"}
@@ -0,0 +1,24 @@
1
+ export function asZodType(schema) {
2
+ return schema;
3
+ }
4
+ export function readZodDefinition(input) {
5
+ if (typeof input !== 'object' || input === null) {
6
+ return undefined;
7
+ }
8
+ const candidate = input;
9
+ return candidate._zod?.def || candidate._def || candidate.def;
10
+ }
11
+ export function readZodType(input) {
12
+ const def = readZodDefinition(input);
13
+ if (!def) {
14
+ return undefined;
15
+ }
16
+ const rawType = (typeof def.typeName === 'string' && def.typeName) ||
17
+ (typeof def.type === 'string' && def.type);
18
+ if (typeof rawType !== 'string') {
19
+ return undefined;
20
+ }
21
+ const lower = rawType.toLowerCase();
22
+ return lower.startsWith('zod') ? lower.slice(3) : lower;
23
+ }
24
+ //# sourceMappingURL=zodCompat.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zodCompat.mjs","sourceRoot":"","sources":["../../src/utils/zodCompat.ts"],"names":[],"mappings":"AAkBA,MAAM,UAAU,SAAS,CAAC,MAAmB;IAC3C,OAAO,MAA+B,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,KAAc;IAC9C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAChD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,SAAS,GAAG,KAAgB,CAAC;IACnC,OAAO,SAAS,CAAC,IAAI,EAAE,GAAG,IAAI,SAAS,CAAC,IAAI,IAAI,SAAS,CAAC,GAAG,CAAC;AAChE,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,KAAc;IACxC,MAAM,GAAG,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;IACrC,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,OAAO,GACX,CAAC,OAAO,GAAG,CAAC,QAAQ,KAAK,QAAQ,IAAI,GAAG,CAAC,QAAQ,CAAC;QAClD,CAAC,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC;IAE7C,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAChC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IACpC,OAAO,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AAC1D,CAAC"}
@@ -0,0 +1,29 @@
1
+ import type { JsonObjectSchema, JsonSchemaDefinitionEntry } from '../types';
2
+ import type { ZodObjectLike } from './zodCompat';
3
+ /**
4
+ * The JSON-schema helpers in openai/helpers/zod only emit complete schemas for
5
+ * a subset of Zod constructs. In particular, Zod v4 (and several decorators in v3)
6
+ * omit `type`, `properties`, or `required` metadata, which breaks tool execution
7
+ * when a user relies on automatic schema extraction.
8
+ *
9
+ * This module provides a minimal, type-directed fallback converter that inspects
10
+ * Zod internals and synthesises the missing JSON Schema bits on demand. The
11
+ * converter only covers the constructs we actively depend on (objects, optionals,
12
+ * unions, tuples, records, sets, etc.); anything more exotic simply returns
13
+ * `undefined`, signalling to the caller that it should surface a user error.
14
+ *
15
+ * The implementation is intentionally explicit: helper functions isolate each
16
+ * Zod shape, making the behaviour both testable and easier to trim back if the
17
+ * upstream helper gains first-class support. See zodJsonSchemaCompat.test.ts for
18
+ * the regression cases we guarantee.
19
+ */
20
+ type LooseJsonObjectSchema = {
21
+ type: 'object';
22
+ properties: Record<string, JsonSchemaDefinitionEntry>;
23
+ required?: string[];
24
+ additionalProperties?: boolean;
25
+ $schema?: string;
26
+ };
27
+ export declare function hasJsonSchemaObjectShape(value: unknown): value is LooseJsonObjectSchema;
28
+ export declare function zodJsonSchemaCompat(input: ZodObjectLike): JsonObjectSchema<any> | undefined;
29
+ export {};