@openai/agents-core 0.3.2 → 0.3.4

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 (52) hide show
  1. package/dist/agent.d.ts +3 -2
  2. package/dist/agent.js.map +1 -1
  3. package/dist/agent.mjs.map +1 -1
  4. package/dist/guardrail.d.ts +11 -2
  5. package/dist/guardrail.js +2 -1
  6. package/dist/guardrail.js.map +1 -1
  7. package/dist/guardrail.mjs +2 -1
  8. package/dist/guardrail.mjs.map +1 -1
  9. package/dist/index.d.ts +3 -3
  10. package/dist/index.js +2 -1
  11. package/dist/index.js.map +1 -1
  12. package/dist/index.mjs +1 -1
  13. package/dist/index.mjs.map +1 -1
  14. package/dist/mcp.d.ts +17 -2
  15. package/dist/mcp.js +58 -9
  16. package/dist/mcp.js.map +1 -1
  17. package/dist/mcp.mjs +57 -9
  18. package/dist/mcp.mjs.map +1 -1
  19. package/dist/metadata.js +2 -2
  20. package/dist/metadata.mjs +2 -2
  21. package/dist/model.d.ts +5 -0
  22. package/dist/run.js +64 -5
  23. package/dist/run.js.map +1 -1
  24. package/dist/run.mjs +64 -5
  25. package/dist/run.mjs.map +1 -1
  26. package/dist/runImplementation.js +37 -2
  27. package/dist/runImplementation.js.map +1 -1
  28. package/dist/runImplementation.mjs +37 -2
  29. package/dist/runImplementation.mjs.map +1 -1
  30. package/dist/runState.d.ts +248 -18
  31. package/dist/runState.js +31 -5
  32. package/dist/runState.js.map +1 -1
  33. package/dist/runState.mjs +31 -5
  34. package/dist/runState.mjs.map +1 -1
  35. package/dist/shims/mcp-server/node.js +1 -0
  36. package/dist/shims/mcp-server/node.js.map +1 -1
  37. package/dist/shims/mcp-server/node.mjs +1 -0
  38. package/dist/shims/mcp-server/node.mjs.map +1 -1
  39. package/dist/tracing/index.d.ts +1 -0
  40. package/dist/tracing/index.js.map +1 -1
  41. package/dist/tracing/index.mjs.map +1 -1
  42. package/dist/types/protocol.d.ts +207 -32
  43. package/dist/types/protocol.js +21 -3
  44. package/dist/types/protocol.js.map +1 -1
  45. package/dist/types/protocol.mjs +20 -2
  46. package/dist/types/protocol.mjs.map +1 -1
  47. package/dist/usage.d.ts +42 -3
  48. package/dist/usage.js +97 -12
  49. package/dist/usage.js.map +1 -1
  50. package/dist/usage.mjs +96 -13
  51. package/dist/usage.mjs.map +1 -1
  52. package/package.json +1 -1
package/dist/usage.js CHANGED
@@ -1,8 +1,51 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.UsageData = exports.Usage = void 0;
3
+ exports.UsageData = exports.RequestUsageData = exports.Usage = exports.RequestUsage = void 0;
4
4
  const protocol_1 = require("./types/protocol.js");
5
+ Object.defineProperty(exports, "RequestUsageData", { enumerable: true, get: function () { return protocol_1.RequestUsageData; } });
5
6
  Object.defineProperty(exports, "UsageData", { enumerable: true, get: function () { return protocol_1.UsageData; } });
7
+ /**
8
+ * Usage details for a single API request.
9
+ */
10
+ class RequestUsage {
11
+ /**
12
+ * The number of input tokens used for this request.
13
+ */
14
+ inputTokens;
15
+ /**
16
+ * The number of output tokens used for this request.
17
+ */
18
+ outputTokens;
19
+ /**
20
+ * The total number of tokens sent and received for this request.
21
+ */
22
+ totalTokens;
23
+ /**
24
+ * Details about the input tokens used for this request.
25
+ */
26
+ inputTokensDetails;
27
+ /**
28
+ * Details about the output tokens used for this request.
29
+ */
30
+ outputTokensDetails;
31
+ constructor(input) {
32
+ this.inputTokens = input?.inputTokens ?? input?.input_tokens ?? 0;
33
+ this.outputTokens = input?.outputTokens ?? input?.output_tokens ?? 0;
34
+ this.totalTokens =
35
+ input?.totalTokens ??
36
+ input?.total_tokens ??
37
+ this.inputTokens + this.outputTokens;
38
+ const inputTokensDetails = input?.inputTokensDetails ?? input?.input_tokens_details;
39
+ this.inputTokensDetails = inputTokensDetails
40
+ ? inputTokensDetails
41
+ : {};
42
+ const outputTokensDetails = input?.outputTokensDetails ?? input?.output_tokens_details;
43
+ this.outputTokensDetails = outputTokensDetails
44
+ ? outputTokensDetails
45
+ : {};
46
+ }
47
+ }
48
+ exports.RequestUsage = RequestUsage;
6
49
  /**
7
50
  * Tracks token usage and request counts for an agent run.
8
51
  */
@@ -31,6 +74,10 @@ class Usage {
31
74
  * Details about the output tokens used across all requests.
32
75
  */
33
76
  outputTokensDetails = [];
77
+ /**
78
+ * List of per-request usage entries for detailed cost calculations.
79
+ */
80
+ requestUsageEntries;
34
81
  constructor(input) {
35
82
  if (typeof input === 'undefined') {
36
83
  this.requests = 0;
@@ -39,27 +86,50 @@ class Usage {
39
86
  this.totalTokens = 0;
40
87
  this.inputTokensDetails = [];
41
88
  this.outputTokensDetails = [];
89
+ this.requestUsageEntries = undefined;
42
90
  }
43
91
  else {
44
92
  this.requests = input?.requests ?? 1;
45
93
  this.inputTokens = input?.inputTokens ?? input?.input_tokens ?? 0;
46
94
  this.outputTokens = input?.outputTokens ?? input?.output_tokens ?? 0;
47
- this.totalTokens = input?.totalTokens ?? input?.total_tokens ?? 0;
95
+ this.totalTokens =
96
+ input?.totalTokens ??
97
+ input?.total_tokens ??
98
+ this.inputTokens + this.outputTokens;
48
99
  const inputTokensDetails = input?.inputTokensDetails ?? input?.input_tokens_details;
49
- this.inputTokensDetails = inputTokensDetails
50
- ? [inputTokensDetails]
51
- : [];
100
+ if (Array.isArray(inputTokensDetails)) {
101
+ this.inputTokensDetails = inputTokensDetails;
102
+ }
103
+ else {
104
+ this.inputTokensDetails = inputTokensDetails
105
+ ? [inputTokensDetails]
106
+ : [];
107
+ }
52
108
  const outputTokensDetails = input?.outputTokensDetails ?? input?.output_tokens_details;
53
- this.outputTokensDetails = outputTokensDetails
54
- ? [outputTokensDetails]
55
- : [];
109
+ if (Array.isArray(outputTokensDetails)) {
110
+ this.outputTokensDetails = outputTokensDetails;
111
+ }
112
+ else {
113
+ this.outputTokensDetails = outputTokensDetails
114
+ ? [outputTokensDetails]
115
+ : [];
116
+ }
117
+ const requestUsageEntries = input?.requestUsageEntries ?? input?.request_usage_entries;
118
+ const normalizedRequestUsageEntries = Array.isArray(requestUsageEntries)
119
+ ? requestUsageEntries.map((entry) => entry instanceof RequestUsage ? entry : new RequestUsage(entry))
120
+ : undefined;
121
+ this.requestUsageEntries =
122
+ normalizedRequestUsageEntries &&
123
+ normalizedRequestUsageEntries.length > 0
124
+ ? normalizedRequestUsageEntries
125
+ : undefined;
56
126
  }
57
127
  }
58
128
  add(newUsage) {
59
- this.requests += newUsage.requests;
60
- this.inputTokens += newUsage.inputTokens;
61
- this.outputTokens += newUsage.outputTokens;
62
- this.totalTokens += newUsage.totalTokens;
129
+ this.requests += newUsage.requests ?? 0;
130
+ this.inputTokens += newUsage.inputTokens ?? 0;
131
+ this.outputTokens += newUsage.outputTokens ?? 0;
132
+ this.totalTokens += newUsage.totalTokens ?? 0;
63
133
  if (newUsage.inputTokensDetails) {
64
134
  // The type does not allow undefined, but it could happen runtime
65
135
  this.inputTokensDetails.push(...newUsage.inputTokensDetails);
@@ -68,6 +138,21 @@ class Usage {
68
138
  // The type does not allow undefined, but it could happen runtime
69
139
  this.outputTokensDetails.push(...newUsage.outputTokensDetails);
70
140
  }
141
+ if (Array.isArray(newUsage.requestUsageEntries) &&
142
+ newUsage.requestUsageEntries.length > 0) {
143
+ this.requestUsageEntries ??= [];
144
+ this.requestUsageEntries.push(...newUsage.requestUsageEntries.map((entry) => entry instanceof RequestUsage ? entry : new RequestUsage(entry)));
145
+ }
146
+ else if (newUsage.requests === 1 && newUsage.totalTokens > 0) {
147
+ this.requestUsageEntries ??= [];
148
+ this.requestUsageEntries.push(new RequestUsage({
149
+ inputTokens: newUsage.inputTokens,
150
+ outputTokens: newUsage.outputTokens,
151
+ totalTokens: newUsage.totalTokens,
152
+ inputTokensDetails: newUsage.inputTokensDetails?.[0],
153
+ outputTokensDetails: newUsage.outputTokensDetails?.[0],
154
+ }));
155
+ }
71
156
  }
72
157
  }
73
158
  exports.Usage = Usage;
package/dist/usage.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"usage.js","sourceRoot":"","sources":["../src/usage.ts"],"names":[],"mappings":";;;AAAA,kDAA6C;AAwFpC,0FAxFA,oBAAS,OAwFA;AA5ElB;;GAEG;AACH,MAAa,KAAK;IAChB;;OAEG;IACI,QAAQ,CAAS;IAExB;;OAEG;IACI,WAAW,CAAS;IAE3B;;OAEG;IACI,YAAY,CAAS;IAE5B;;OAEG;IACI,WAAW,CAAS;IAE3B;;OAEG;IACI,kBAAkB,GAAkC,EAAE,CAAC;IAE9D;;OAEG;IACI,mBAAmB,GAAkC,EAAE,CAAC;IAE/D,YAAY,KAAkB;QAC5B,IAAI,OAAO,KAAK,KAAK,WAAW,EAAE,CAAC;YACjC,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;YAClB,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;YACrB,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;YACtB,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;YACrB,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAC;YAC7B,IAAI,CAAC,mBAAmB,GAAG,EAAE,CAAC;QAChC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,QAAQ,GAAG,KAAK,EAAE,QAAQ,IAAI,CAAC,CAAC;YACrC,IAAI,CAAC,WAAW,GAAG,KAAK,EAAE,WAAW,IAAI,KAAK,EAAE,YAAY,IAAI,CAAC,CAAC;YAClE,IAAI,CAAC,YAAY,GAAG,KAAK,EAAE,YAAY,IAAI,KAAK,EAAE,aAAa,IAAI,CAAC,CAAC;YACrE,IAAI,CAAC,WAAW,GAAG,KAAK,EAAE,WAAW,IAAI,KAAK,EAAE,YAAY,IAAI,CAAC,CAAC;YAClE,MAAM,kBAAkB,GACtB,KAAK,EAAE,kBAAkB,IAAI,KAAK,EAAE,oBAAoB,CAAC;YAC3D,IAAI,CAAC,kBAAkB,GAAG,kBAAkB;gBAC1C,CAAC,CAAC,CAAC,kBAA4C,CAAC;gBAChD,CAAC,CAAC,EAAE,CAAC;YACP,MAAM,mBAAmB,GACvB,KAAK,EAAE,mBAAmB,IAAI,KAAK,EAAE,qBAAqB,CAAC;YAC7D,IAAI,CAAC,mBAAmB,GAAG,mBAAmB;gBAC5C,CAAC,CAAC,CAAC,mBAA6C,CAAC;gBACjD,CAAC,CAAC,EAAE,CAAC;QACT,CAAC;IACH,CAAC;IAED,GAAG,CAAC,QAAe;QACjB,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,QAAQ,CAAC;QACnC,IAAI,CAAC,WAAW,IAAI,QAAQ,CAAC,WAAW,CAAC;QACzC,IAAI,CAAC,YAAY,IAAI,QAAQ,CAAC,YAAY,CAAC;QAC3C,IAAI,CAAC,WAAW,IAAI,QAAQ,CAAC,WAAW,CAAC;QACzC,IAAI,QAAQ,CAAC,kBAAkB,EAAE,CAAC;YAChC,iEAAiE;YACjE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,kBAAkB,CAAC,CAAC;QAC/D,CAAC;QACD,IAAI,QAAQ,CAAC,mBAAmB,EAAE,CAAC;YACjC,iEAAiE;YACjE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,mBAAmB,CAAC,CAAC;QACjE,CAAC;IACH,CAAC;CACF;AAvED,sBAuEC"}
1
+ {"version":3,"file":"usage.js","sourceRoot":"","sources":["../src/usage.ts"],"names":[],"mappings":";;;AAAA,kDAA+D;AAmNtD,iGAnNA,2BAAgB,OAmNA;AAAE,0FAnNA,oBAAS,OAmNA;AAtLpC;;GAEG;AACH,MAAa,YAAY;IACvB;;OAEG;IACI,WAAW,CAAS;IAE3B;;OAEG;IACI,YAAY,CAAS;IAE5B;;OAEG;IACI,WAAW,CAAS;IAE3B;;OAEG;IACI,kBAAkB,CAAyB;IAElD;;OAEG;IACI,mBAAmB,CAAyB;IAEnD,YAAY,KAAyB;QACnC,IAAI,CAAC,WAAW,GAAG,KAAK,EAAE,WAAW,IAAI,KAAK,EAAE,YAAY,IAAI,CAAC,CAAC;QAClE,IAAI,CAAC,YAAY,GAAG,KAAK,EAAE,YAAY,IAAI,KAAK,EAAE,aAAa,IAAI,CAAC,CAAC;QACrE,IAAI,CAAC,WAAW;YACd,KAAK,EAAE,WAAW;gBAClB,KAAK,EAAE,YAAY;gBACnB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC;QACvC,MAAM,kBAAkB,GACtB,KAAK,EAAE,kBAAkB,IAAI,KAAK,EAAE,oBAAoB,CAAC;QAC3D,IAAI,CAAC,kBAAkB,GAAG,kBAAkB;YAC1C,CAAC,CAAE,kBAA6C;YAChD,CAAC,CAAC,EAAE,CAAC;QACP,MAAM,mBAAmB,GACvB,KAAK,EAAE,mBAAmB,IAAI,KAAK,EAAE,qBAAqB,CAAC;QAC7D,IAAI,CAAC,mBAAmB,GAAG,mBAAmB;YAC5C,CAAC,CAAE,mBAA8C;YACjD,CAAC,CAAC,EAAE,CAAC;IACT,CAAC;CACF;AA5CD,oCA4CC;AAED;;GAEG;AACH,MAAa,KAAK;IAChB;;OAEG;IACI,QAAQ,CAAS;IAExB;;OAEG;IACI,WAAW,CAAS;IAE3B;;OAEG;IACI,YAAY,CAAS;IAE5B;;OAEG;IACI,WAAW,CAAS;IAE3B;;OAEG;IACI,kBAAkB,GAAkC,EAAE,CAAC;IAE9D;;OAEG;IACI,mBAAmB,GAAkC,EAAE,CAAC;IAE/D;;OAEG;IACI,mBAAmB,CAA6B;IAEvD,YAAY,KAAkB;QAC5B,IAAI,OAAO,KAAK,KAAK,WAAW,EAAE,CAAC;YACjC,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;YAClB,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;YACrB,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;YACtB,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;YACrB,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAC;YAC7B,IAAI,CAAC,mBAAmB,GAAG,EAAE,CAAC;YAC9B,IAAI,CAAC,mBAAmB,GAAG,SAAS,CAAC;QACvC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,QAAQ,GAAG,KAAK,EAAE,QAAQ,IAAI,CAAC,CAAC;YACrC,IAAI,CAAC,WAAW,GAAG,KAAK,EAAE,WAAW,IAAI,KAAK,EAAE,YAAY,IAAI,CAAC,CAAC;YAClE,IAAI,CAAC,YAAY,GAAG,KAAK,EAAE,YAAY,IAAI,KAAK,EAAE,aAAa,IAAI,CAAC,CAAC;YACrE,IAAI,CAAC,WAAW;gBACd,KAAK,EAAE,WAAW;oBAClB,KAAK,EAAE,YAAY;oBACnB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC;YACvC,MAAM,kBAAkB,GACtB,KAAK,EAAE,kBAAkB,IAAI,KAAK,EAAE,oBAAoB,CAAC;YAC3D,IAAI,KAAK,CAAC,OAAO,CAAC,kBAAkB,CAAC,EAAE,CAAC;gBACtC,IAAI,CAAC,kBAAkB,GAAG,kBAEzB,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,kBAAkB,GAAG,kBAAkB;oBAC1C,CAAC,CAAC,CAAC,kBAA4C,CAAC;oBAChD,CAAC,CAAC,EAAE,CAAC;YACT,CAAC;YACD,MAAM,mBAAmB,GACvB,KAAK,EAAE,mBAAmB,IAAI,KAAK,EAAE,qBAAqB,CAAC;YAC7D,IAAI,KAAK,CAAC,OAAO,CAAC,mBAAmB,CAAC,EAAE,CAAC;gBACvC,IAAI,CAAC,mBAAmB,GAAG,mBAE1B,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,mBAAmB,GAAG,mBAAmB;oBAC5C,CAAC,CAAC,CAAC,mBAA6C,CAAC;oBACjD,CAAC,CAAC,EAAE,CAAC;YACT,CAAC;YAED,MAAM,mBAAmB,GACvB,KAAK,EAAE,mBAAmB,IAAI,KAAK,EAAE,qBAAqB,CAAC;YAC7D,MAAM,6BAA6B,GAAG,KAAK,CAAC,OAAO,CAAC,mBAAmB,CAAC;gBACtE,CAAC,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAChC,KAAK,YAAY,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,YAAY,CAAC,KAAK,CAAC,CAChE;gBACH,CAAC,CAAC,SAAS,CAAC;YACd,IAAI,CAAC,mBAAmB;gBACtB,6BAA6B;oBAC7B,6BAA6B,CAAC,MAAM,GAAG,CAAC;oBACtC,CAAC,CAAC,6BAA6B;oBAC/B,CAAC,CAAC,SAAS,CAAC;QAClB,CAAC;IACH,CAAC;IAED,GAAG,CAAC,QAAe;QACjB,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,QAAQ,IAAI,CAAC,CAAC;QACxC,IAAI,CAAC,WAAW,IAAI,QAAQ,CAAC,WAAW,IAAI,CAAC,CAAC;QAC9C,IAAI,CAAC,YAAY,IAAI,QAAQ,CAAC,YAAY,IAAI,CAAC,CAAC;QAChD,IAAI,CAAC,WAAW,IAAI,QAAQ,CAAC,WAAW,IAAI,CAAC,CAAC;QAC9C,IAAI,QAAQ,CAAC,kBAAkB,EAAE,CAAC;YAChC,iEAAiE;YACjE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,kBAAkB,CAAC,CAAC;QAC/D,CAAC;QACD,IAAI,QAAQ,CAAC,mBAAmB,EAAE,CAAC;YACjC,iEAAiE;YACjE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,mBAAmB,CAAC,CAAC;QACjE,CAAC;QAED,IACE,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC;YAC3C,QAAQ,CAAC,mBAAmB,CAAC,MAAM,GAAG,CAAC,EACvC,CAAC;YACD,IAAI,CAAC,mBAAmB,KAAK,EAAE,CAAC;YAChC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAC3B,GAAG,QAAQ,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAC5C,KAAK,YAAY,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,YAAY,CAAC,KAAK,CAAC,CAChE,CACF,CAAC;QACJ,CAAC;aAAM,IAAI,QAAQ,CAAC,QAAQ,KAAK,CAAC,IAAI,QAAQ,CAAC,WAAW,GAAG,CAAC,EAAE,CAAC;YAC/D,IAAI,CAAC,mBAAmB,KAAK,EAAE,CAAC;YAChC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAC3B,IAAI,YAAY,CAAC;gBACf,WAAW,EAAE,QAAQ,CAAC,WAAW;gBACjC,YAAY,EAAE,QAAQ,CAAC,YAAY;gBACnC,WAAW,EAAE,QAAQ,CAAC,WAAW;gBACjC,kBAAkB,EAAE,QAAQ,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC;gBACpD,mBAAmB,EAAE,QAAQ,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC;aACvD,CAAC,CACH,CAAC;QACJ,CAAC;IACH,CAAC;CACF;AAhID,sBAgIC"}
package/dist/usage.mjs CHANGED
@@ -1,4 +1,45 @@
1
- import { UsageData } from "./types/protocol.mjs";
1
+ import { RequestUsageData, UsageData } from "./types/protocol.mjs";
2
+ /**
3
+ * Usage details for a single API request.
4
+ */
5
+ export class RequestUsage {
6
+ /**
7
+ * The number of input tokens used for this request.
8
+ */
9
+ inputTokens;
10
+ /**
11
+ * The number of output tokens used for this request.
12
+ */
13
+ outputTokens;
14
+ /**
15
+ * The total number of tokens sent and received for this request.
16
+ */
17
+ totalTokens;
18
+ /**
19
+ * Details about the input tokens used for this request.
20
+ */
21
+ inputTokensDetails;
22
+ /**
23
+ * Details about the output tokens used for this request.
24
+ */
25
+ outputTokensDetails;
26
+ constructor(input) {
27
+ this.inputTokens = input?.inputTokens ?? input?.input_tokens ?? 0;
28
+ this.outputTokens = input?.outputTokens ?? input?.output_tokens ?? 0;
29
+ this.totalTokens =
30
+ input?.totalTokens ??
31
+ input?.total_tokens ??
32
+ this.inputTokens + this.outputTokens;
33
+ const inputTokensDetails = input?.inputTokensDetails ?? input?.input_tokens_details;
34
+ this.inputTokensDetails = inputTokensDetails
35
+ ? inputTokensDetails
36
+ : {};
37
+ const outputTokensDetails = input?.outputTokensDetails ?? input?.output_tokens_details;
38
+ this.outputTokensDetails = outputTokensDetails
39
+ ? outputTokensDetails
40
+ : {};
41
+ }
42
+ }
2
43
  /**
3
44
  * Tracks token usage and request counts for an agent run.
4
45
  */
@@ -27,6 +68,10 @@ export class Usage {
27
68
  * Details about the output tokens used across all requests.
28
69
  */
29
70
  outputTokensDetails = [];
71
+ /**
72
+ * List of per-request usage entries for detailed cost calculations.
73
+ */
74
+ requestUsageEntries;
30
75
  constructor(input) {
31
76
  if (typeof input === 'undefined') {
32
77
  this.requests = 0;
@@ -35,27 +80,50 @@ export class Usage {
35
80
  this.totalTokens = 0;
36
81
  this.inputTokensDetails = [];
37
82
  this.outputTokensDetails = [];
83
+ this.requestUsageEntries = undefined;
38
84
  }
39
85
  else {
40
86
  this.requests = input?.requests ?? 1;
41
87
  this.inputTokens = input?.inputTokens ?? input?.input_tokens ?? 0;
42
88
  this.outputTokens = input?.outputTokens ?? input?.output_tokens ?? 0;
43
- this.totalTokens = input?.totalTokens ?? input?.total_tokens ?? 0;
89
+ this.totalTokens =
90
+ input?.totalTokens ??
91
+ input?.total_tokens ??
92
+ this.inputTokens + this.outputTokens;
44
93
  const inputTokensDetails = input?.inputTokensDetails ?? input?.input_tokens_details;
45
- this.inputTokensDetails = inputTokensDetails
46
- ? [inputTokensDetails]
47
- : [];
94
+ if (Array.isArray(inputTokensDetails)) {
95
+ this.inputTokensDetails = inputTokensDetails;
96
+ }
97
+ else {
98
+ this.inputTokensDetails = inputTokensDetails
99
+ ? [inputTokensDetails]
100
+ : [];
101
+ }
48
102
  const outputTokensDetails = input?.outputTokensDetails ?? input?.output_tokens_details;
49
- this.outputTokensDetails = outputTokensDetails
50
- ? [outputTokensDetails]
51
- : [];
103
+ if (Array.isArray(outputTokensDetails)) {
104
+ this.outputTokensDetails = outputTokensDetails;
105
+ }
106
+ else {
107
+ this.outputTokensDetails = outputTokensDetails
108
+ ? [outputTokensDetails]
109
+ : [];
110
+ }
111
+ const requestUsageEntries = input?.requestUsageEntries ?? input?.request_usage_entries;
112
+ const normalizedRequestUsageEntries = Array.isArray(requestUsageEntries)
113
+ ? requestUsageEntries.map((entry) => entry instanceof RequestUsage ? entry : new RequestUsage(entry))
114
+ : undefined;
115
+ this.requestUsageEntries =
116
+ normalizedRequestUsageEntries &&
117
+ normalizedRequestUsageEntries.length > 0
118
+ ? normalizedRequestUsageEntries
119
+ : undefined;
52
120
  }
53
121
  }
54
122
  add(newUsage) {
55
- this.requests += newUsage.requests;
56
- this.inputTokens += newUsage.inputTokens;
57
- this.outputTokens += newUsage.outputTokens;
58
- this.totalTokens += newUsage.totalTokens;
123
+ this.requests += newUsage.requests ?? 0;
124
+ this.inputTokens += newUsage.inputTokens ?? 0;
125
+ this.outputTokens += newUsage.outputTokens ?? 0;
126
+ this.totalTokens += newUsage.totalTokens ?? 0;
59
127
  if (newUsage.inputTokensDetails) {
60
128
  // The type does not allow undefined, but it could happen runtime
61
129
  this.inputTokensDetails.push(...newUsage.inputTokensDetails);
@@ -64,7 +132,22 @@ export class Usage {
64
132
  // The type does not allow undefined, but it could happen runtime
65
133
  this.outputTokensDetails.push(...newUsage.outputTokensDetails);
66
134
  }
135
+ if (Array.isArray(newUsage.requestUsageEntries) &&
136
+ newUsage.requestUsageEntries.length > 0) {
137
+ this.requestUsageEntries ??= [];
138
+ this.requestUsageEntries.push(...newUsage.requestUsageEntries.map((entry) => entry instanceof RequestUsage ? entry : new RequestUsage(entry)));
139
+ }
140
+ else if (newUsage.requests === 1 && newUsage.totalTokens > 0) {
141
+ this.requestUsageEntries ??= [];
142
+ this.requestUsageEntries.push(new RequestUsage({
143
+ inputTokens: newUsage.inputTokens,
144
+ outputTokens: newUsage.outputTokens,
145
+ totalTokens: newUsage.totalTokens,
146
+ inputTokensDetails: newUsage.inputTokensDetails?.[0],
147
+ outputTokensDetails: newUsage.outputTokensDetails?.[0],
148
+ }));
149
+ }
67
150
  }
68
151
  }
69
- export { UsageData };
152
+ export { RequestUsageData, UsageData };
70
153
  //# sourceMappingURL=usage.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"usage.mjs","sourceRoot":"","sources":["../src/usage.ts"],"names":[],"mappings":"OAAO,EAAE,SAAS,EAAE;AAYpB;;GAEG;AACH,MAAM,OAAO,KAAK;IAChB;;OAEG;IACI,QAAQ,CAAS;IAExB;;OAEG;IACI,WAAW,CAAS;IAE3B;;OAEG;IACI,YAAY,CAAS;IAE5B;;OAEG;IACI,WAAW,CAAS;IAE3B;;OAEG;IACI,kBAAkB,GAAkC,EAAE,CAAC;IAE9D;;OAEG;IACI,mBAAmB,GAAkC,EAAE,CAAC;IAE/D,YAAY,KAAkB;QAC5B,IAAI,OAAO,KAAK,KAAK,WAAW,EAAE,CAAC;YACjC,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;YAClB,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;YACrB,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;YACtB,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;YACrB,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAC;YAC7B,IAAI,CAAC,mBAAmB,GAAG,EAAE,CAAC;QAChC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,QAAQ,GAAG,KAAK,EAAE,QAAQ,IAAI,CAAC,CAAC;YACrC,IAAI,CAAC,WAAW,GAAG,KAAK,EAAE,WAAW,IAAI,KAAK,EAAE,YAAY,IAAI,CAAC,CAAC;YAClE,IAAI,CAAC,YAAY,GAAG,KAAK,EAAE,YAAY,IAAI,KAAK,EAAE,aAAa,IAAI,CAAC,CAAC;YACrE,IAAI,CAAC,WAAW,GAAG,KAAK,EAAE,WAAW,IAAI,KAAK,EAAE,YAAY,IAAI,CAAC,CAAC;YAClE,MAAM,kBAAkB,GACtB,KAAK,EAAE,kBAAkB,IAAI,KAAK,EAAE,oBAAoB,CAAC;YAC3D,IAAI,CAAC,kBAAkB,GAAG,kBAAkB;gBAC1C,CAAC,CAAC,CAAC,kBAA4C,CAAC;gBAChD,CAAC,CAAC,EAAE,CAAC;YACP,MAAM,mBAAmB,GACvB,KAAK,EAAE,mBAAmB,IAAI,KAAK,EAAE,qBAAqB,CAAC;YAC7D,IAAI,CAAC,mBAAmB,GAAG,mBAAmB;gBAC5C,CAAC,CAAC,CAAC,mBAA6C,CAAC;gBACjD,CAAC,CAAC,EAAE,CAAC;QACT,CAAC;IACH,CAAC;IAED,GAAG,CAAC,QAAe;QACjB,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,QAAQ,CAAC;QACnC,IAAI,CAAC,WAAW,IAAI,QAAQ,CAAC,WAAW,CAAC;QACzC,IAAI,CAAC,YAAY,IAAI,QAAQ,CAAC,YAAY,CAAC;QAC3C,IAAI,CAAC,WAAW,IAAI,QAAQ,CAAC,WAAW,CAAC;QACzC,IAAI,QAAQ,CAAC,kBAAkB,EAAE,CAAC;YAChC,iEAAiE;YACjE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,kBAAkB,CAAC,CAAC;QAC/D,CAAC;QACD,IAAI,QAAQ,CAAC,mBAAmB,EAAE,CAAC;YACjC,iEAAiE;YACjE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,mBAAmB,CAAC,CAAC;QACjE,CAAC;IACH,CAAC;CACF;AAED,OAAO,EAAE,SAAS,EAAE,CAAC"}
1
+ {"version":3,"file":"usage.mjs","sourceRoot":"","sources":["../src/usage.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@openai/agents-core",
3
3
  "repository": "https://github.com/openai/openai-agents-js",
4
4
  "homepage": "https://openai.github.io/openai-agents-js/",
5
- "version": "0.3.2",
5
+ "version": "0.3.4",
6
6
  "description": "The OpenAI Agents SDK is a lightweight yet powerful framework for building multi-agent workflows.",
7
7
  "author": "OpenAI <support@openai.com>",
8
8
  "main": "dist/index.js",