@openai/agents-openai 0.13.1 → 0.13.2

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 (35) hide show
  1. package/dist/experimental/hostedMultiAgent/config.d.ts +7 -0
  2. package/dist/experimental/hostedMultiAgent/config.js +3 -0
  3. package/dist/experimental/hostedMultiAgent/config.js.map +1 -0
  4. package/dist/experimental/hostedMultiAgent/config.mjs +2 -0
  5. package/dist/experimental/hostedMultiAgent/config.mjs.map +1 -0
  6. package/dist/experimental/hostedMultiAgent/index.d.ts +3 -0
  7. package/dist/experimental/hostedMultiAgent/index.js +8 -0
  8. package/dist/experimental/hostedMultiAgent/index.js.map +1 -0
  9. package/dist/experimental/hostedMultiAgent/index.mjs +3 -0
  10. package/dist/experimental/hostedMultiAgent/index.mjs.map +1 -0
  11. package/dist/experimental/hostedMultiAgent/metadata.d.ts +8 -0
  12. package/dist/experimental/hostedMultiAgent/metadata.js +36 -0
  13. package/dist/experimental/hostedMultiAgent/metadata.js.map +1 -0
  14. package/dist/experimental/hostedMultiAgent/metadata.mjs +33 -0
  15. package/dist/experimental/hostedMultiAgent/metadata.mjs.map +1 -0
  16. package/dist/experimental/hostedMultiAgent/model.d.ts +28 -0
  17. package/dist/experimental/hostedMultiAgent/model.js +677 -0
  18. package/dist/experimental/hostedMultiAgent/model.js.map +1 -0
  19. package/dist/experimental/hostedMultiAgent/model.mjs +670 -0
  20. package/dist/experimental/hostedMultiAgent/model.mjs.map +1 -0
  21. package/dist/metadata.js +2 -2
  22. package/dist/metadata.mjs +2 -2
  23. package/dist/openaiChatCompletionsConverter.js +12 -0
  24. package/dist/openaiChatCompletionsConverter.js.map +1 -1
  25. package/dist/openaiChatCompletionsConverter.mjs +12 -0
  26. package/dist/openaiChatCompletionsConverter.mjs.map +1 -1
  27. package/dist/openaiChatCompletionsModel.js +27 -0
  28. package/dist/openaiChatCompletionsModel.js.map +1 -1
  29. package/dist/openaiChatCompletionsModel.mjs +27 -0
  30. package/dist/openaiChatCompletionsModel.mjs.map +1 -1
  31. package/dist/openaiResponsesModel.js +106 -45
  32. package/dist/openaiResponsesModel.js.map +1 -1
  33. package/dist/openaiResponsesModel.mjs +106 -45
  34. package/dist/openaiResponsesModel.mjs.map +1 -1
  35. package/package.json +14 -2
@@ -1089,6 +1089,9 @@ function getInputMessageContent(entry) {
1089
1089
  return {
1090
1090
  type: 'input_text',
1091
1091
  text: entry.text,
1092
+ ...(entry.promptCacheBreakpoint
1093
+ ? { prompt_cache_breakpoint: entry.promptCacheBreakpoint }
1094
+ : {}),
1092
1095
  ...(0, providerData_1.getSnakeCasedProviderDataWithoutReservedKeys)(entry.providerData, [
1093
1096
  'type',
1094
1097
  'text',
@@ -1114,6 +1117,9 @@ function getInputMessageContent(entry) {
1114
1117
  }
1115
1118
  return {
1116
1119
  ...imageEntry,
1120
+ ...(entry.promptCacheBreakpoint
1121
+ ? { prompt_cache_breakpoint: entry.promptCacheBreakpoint }
1122
+ : {}),
1117
1123
  ...(0, providerData_1.getSnakeCasedProviderDataWithoutReservedKeys)(entry.providerData, [
1118
1124
  'type',
1119
1125
  'detail',
@@ -1168,6 +1174,9 @@ function getInputMessageContent(entry) {
1168
1174
  }
1169
1175
  return {
1170
1176
  ...fileEntry,
1177
+ ...(entry.promptCacheBreakpoint
1178
+ ? { prompt_cache_breakpoint: entry.promptCacheBreakpoint }
1179
+ : {}),
1171
1180
  ...(0, providerData_1.getSnakeCasedProviderDataWithoutReservedKeys)(entry.providerData, [
1172
1181
  'type',
1173
1182
  'file_data',
@@ -2074,6 +2083,66 @@ class OpenAIResponsesModel {
2074
2083
  getRetryAdvice(args) {
2075
2084
  return (0, retryAdvice_1.getOpenAIRetryAdvice)(args);
2076
2085
  }
2086
+ /**
2087
+ * @internal
2088
+ */
2089
+ _convertResponseOutputItems(items) {
2090
+ return convertToOutputItem(items);
2091
+ }
2092
+ /**
2093
+ * @internal
2094
+ */
2095
+ _getResponseForSDKOutput(response) {
2096
+ return response;
2097
+ }
2098
+ /**
2099
+ * @internal
2100
+ */
2101
+ _shouldEmitOutputTextDelta(_event, _outputItem) {
2102
+ return true;
2103
+ }
2104
+ /**
2105
+ * @internal
2106
+ */
2107
+ _shouldEmitRawModelEvent(_event) {
2108
+ return true;
2109
+ }
2110
+ /**
2111
+ * @internal
2112
+ */
2113
+ _getResponsesCreateRequestOverrides(_request, _requestData) {
2114
+ return {};
2115
+ }
2116
+ /**
2117
+ * @internal
2118
+ */
2119
+ _getResponseUsage(response) {
2120
+ return new agents_core_1.Usage({
2121
+ inputTokens: response.usage?.input_tokens ?? 0,
2122
+ outputTokens: response.usage?.output_tokens ?? 0,
2123
+ totalTokens: response.usage?.total_tokens ?? 0,
2124
+ inputTokensDetails: { ...response.usage?.input_tokens_details },
2125
+ outputTokensDetails: { ...response.usage?.output_tokens_details },
2126
+ requestUsageEntries: [
2127
+ (0, responsesUtils_1.toRequestUsageEntry)(response.usage, 'responses.create'),
2128
+ ],
2129
+ });
2130
+ }
2131
+ /**
2132
+ * @internal
2133
+ */
2134
+ _getStreamedResponseUsage(response) {
2135
+ return {
2136
+ inputTokens: response.usage?.input_tokens ?? 0,
2137
+ outputTokens: response.usage?.output_tokens ?? 0,
2138
+ totalTokens: response.usage?.total_tokens ?? 0,
2139
+ inputTokensDetails: { ...response.usage?.input_tokens_details },
2140
+ outputTokensDetails: { ...response.usage?.output_tokens_details },
2141
+ requestUsageEntries: [
2142
+ (0, responsesUtils_1.toRequestUsageEntry)(response.usage, 'responses.create'),
2143
+ ],
2144
+ };
2145
+ }
2077
2146
  async _fetchResponse(request, stream) {
2078
2147
  const builtRequest = this._buildResponsesCreateRequest(request, stream);
2079
2148
  const requestOptions = {
@@ -2187,6 +2256,7 @@ class OpenAIResponsesModel {
2187
2256
  text: responseFormat,
2188
2257
  store: request.modelSettings.store,
2189
2258
  prompt_cache_retention: (0, modelSettings_1.normalizePromptCacheRetention)(request.modelSettings.promptCacheRetention),
2259
+ prompt_cache_options: request.modelSettings.promptCacheOptions,
2190
2260
  context_management: getContextManagement(request.modelSettings.contextManagement),
2191
2261
  ...restOfProviderData,
2192
2262
  };
@@ -2196,6 +2266,10 @@ class OpenAIResponsesModel {
2196
2266
  ...transportOverrides.extraBody,
2197
2267
  };
2198
2268
  }
2269
+ requestData = {
2270
+ ...requestData,
2271
+ ...this._getResponsesCreateRequestOverrides(request, requestData),
2272
+ };
2199
2273
  // Keep the transport mode aligned with the calling path even if extra_body includes stream.
2200
2274
  requestData.stream = stream;
2201
2275
  const requestHeaderAccumulator = (0, responsesTransportUtils_1.createHeaderAccumulator)();
@@ -2234,18 +2308,10 @@ class OpenAIResponsesModel {
2234
2308
  }
2235
2309
  return response;
2236
2310
  });
2311
+ const responseForSDKOutput = this._getResponseForSDKOutput(response);
2237
2312
  const output = {
2238
- usage: new agents_core_1.Usage({
2239
- inputTokens: response.usage?.input_tokens ?? 0,
2240
- outputTokens: response.usage?.output_tokens ?? 0,
2241
- totalTokens: response.usage?.total_tokens ?? 0,
2242
- inputTokensDetails: { ...response.usage?.input_tokens_details },
2243
- outputTokensDetails: { ...response.usage?.output_tokens_details },
2244
- requestUsageEntries: [
2245
- (0, responsesUtils_1.toRequestUsageEntry)(response.usage, 'responses.create'),
2246
- ],
2247
- }),
2248
- output: convertToOutputItem(response.output),
2313
+ usage: this._getResponseUsage(response),
2314
+ output: this._convertResponseOutputItems(responseForSDKOutput.output),
2249
2315
  responseId: response.id,
2250
2316
  requestId: getOpenAIResponseRequestId(response),
2251
2317
  providerData: response,
@@ -2269,8 +2335,17 @@ class OpenAIResponsesModel {
2269
2335
  }
2270
2336
  const response = await this._fetchResponse(request, true);
2271
2337
  let finalResponse;
2338
+ const outputItemsByIndex = new Map();
2272
2339
  for await (const event of response) {
2273
2340
  const eventType = event.type;
2341
+ const shouldEmitRawModelEvent = this._shouldEmitRawModelEvent(event);
2342
+ if (eventType === 'response.output_item.added') {
2343
+ const outputItemAdded = event;
2344
+ if (typeof outputItemAdded.output_index === 'number' &&
2345
+ outputItemAdded.item) {
2346
+ outputItemsByIndex.set(outputItemAdded.output_index, outputItemAdded.item);
2347
+ }
2348
+ }
2274
2349
  if (eventType === 'response.created') {
2275
2350
  yield {
2276
2351
  type: 'response_started',
@@ -2283,56 +2358,42 @@ class OpenAIResponsesModel {
2283
2358
  const terminalEvent = event;
2284
2359
  finalResponse = terminalEvent.response;
2285
2360
  const { response, ...remainingEvent } = terminalEvent;
2286
- const { output, usage, id, ...remainingResponse } = response;
2361
+ const { output: _output, usage: _usage, id, ...remainingResponse } = response;
2362
+ const responseForSDKOutput = this._getResponseForSDKOutput(response);
2287
2363
  yield {
2288
2364
  type: 'response_done',
2289
2365
  response: {
2290
2366
  id: id,
2291
2367
  requestId: getOpenAIResponseRequestId(response),
2292
- output: convertToOutputItem(output),
2293
- usage: {
2294
- inputTokens: usage?.input_tokens ?? 0,
2295
- outputTokens: usage?.output_tokens ?? 0,
2296
- totalTokens: usage?.total_tokens ?? 0,
2297
- inputTokensDetails: {
2298
- ...usage?.input_tokens_details,
2299
- },
2300
- outputTokensDetails: {
2301
- ...usage?.output_tokens_details,
2302
- },
2303
- requestUsageEntries: [
2304
- (0, responsesUtils_1.toRequestUsageEntry)(usage, 'responses.create'),
2305
- ],
2306
- },
2368
+ output: this._convertResponseOutputItems(responseForSDKOutput.output),
2369
+ usage: this._getStreamedResponseUsage(response),
2307
2370
  providerData: remainingResponse,
2308
2371
  },
2309
2372
  providerData: remainingEvent,
2310
2373
  };
2311
- if (eventType === 'response.completed') {
2374
+ }
2375
+ else if (eventType === 'response.output_text.delta') {
2376
+ const { delta, ...remainingEvent } = event;
2377
+ const outputItem = typeof remainingEvent.output_index === 'number'
2378
+ ? outputItemsByIndex.get(remainingEvent.output_index)
2379
+ : undefined;
2380
+ if (this._shouldEmitOutputTextDelta(event, outputItem)) {
2312
2381
  yield {
2313
- type: 'model',
2314
- event: event,
2315
- providerData: {
2316
- rawModelEventSource: rawModelEvents_1.OPENAI_RESPONSES_RAW_MODEL_EVENT_SOURCE,
2317
- },
2382
+ type: 'output_text_delta',
2383
+ delta: delta,
2384
+ providerData: remainingEvent,
2318
2385
  };
2319
2386
  }
2320
2387
  }
2321
- else if (eventType === 'response.output_text.delta') {
2322
- const { delta, ...remainingEvent } = event;
2388
+ if (shouldEmitRawModelEvent) {
2323
2389
  yield {
2324
- type: 'output_text_delta',
2325
- delta: delta,
2326
- providerData: remainingEvent,
2390
+ type: 'model',
2391
+ event: event,
2392
+ providerData: {
2393
+ rawModelEventSource: rawModelEvents_1.OPENAI_RESPONSES_RAW_MODEL_EVENT_SOURCE,
2394
+ },
2327
2395
  };
2328
2396
  }
2329
- yield {
2330
- type: 'model',
2331
- event: event,
2332
- providerData: {
2333
- rawModelEventSource: rawModelEvents_1.OPENAI_RESPONSES_RAW_MODEL_EVENT_SOURCE,
2334
- },
2335
- };
2336
2397
  }
2337
2398
  if (request.tracing && span && finalResponse) {
2338
2399
  span.spanData.response_id = finalResponse.id;