@openai/agents-core 0.3.6 → 0.3.8

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 (180) hide show
  1. package/dist/errors.d.ts +40 -0
  2. package/dist/errors.js +38 -1
  3. package/dist/errors.js.map +1 -1
  4. package/dist/errors.mjs +34 -0
  5. package/dist/errors.mjs.map +1 -1
  6. package/dist/index.d.ts +6 -2
  7. package/dist/index.js +13 -2
  8. package/dist/index.js.map +1 -1
  9. package/dist/index.mjs +3 -1
  10. package/dist/index.mjs.map +1 -1
  11. package/dist/metadata.js +2 -2
  12. package/dist/metadata.mjs +2 -2
  13. package/dist/result.d.ts +17 -0
  14. package/dist/result.js +71 -24
  15. package/dist/result.js.map +1 -1
  16. package/dist/result.mjs +69 -22
  17. package/dist/result.mjs.map +1 -1
  18. package/dist/run.d.ts +14 -47
  19. package/dist/run.js +421 -994
  20. package/dist/run.js.map +1 -1
  21. package/dist/run.mjs +405 -978
  22. package/dist/run.mjs.map +1 -1
  23. package/dist/runState.d.ts +1286 -172
  24. package/dist/runState.js +146 -16
  25. package/dist/runState.js.map +1 -1
  26. package/dist/runState.mjs +142 -12
  27. package/dist/runState.mjs.map +1 -1
  28. package/dist/runner/constants.d.ts +1 -0
  29. package/dist/runner/constants.js +6 -0
  30. package/dist/runner/constants.js.map +1 -0
  31. package/dist/runner/constants.mjs +3 -0
  32. package/dist/runner/constants.mjs.map +1 -0
  33. package/dist/runner/conversation.d.ts +85 -0
  34. package/dist/runner/conversation.js +275 -0
  35. package/dist/runner/conversation.js.map +1 -0
  36. package/dist/runner/conversation.mjs +269 -0
  37. package/dist/runner/conversation.mjs.map +1 -0
  38. package/dist/runner/guardrails.d.ts +23 -0
  39. package/dist/runner/guardrails.js +174 -0
  40. package/dist/runner/guardrails.js.map +1 -0
  41. package/dist/runner/guardrails.mjs +166 -0
  42. package/dist/runner/guardrails.mjs.map +1 -0
  43. package/dist/runner/items.d.ts +18 -0
  44. package/dist/runner/items.js +89 -0
  45. package/dist/runner/items.js.map +1 -0
  46. package/dist/runner/items.mjs +79 -0
  47. package/dist/runner/items.mjs.map +1 -0
  48. package/dist/runner/mcpApprovals.d.ts +25 -0
  49. package/dist/runner/mcpApprovals.js +66 -0
  50. package/dist/runner/mcpApprovals.js.map +1 -0
  51. package/dist/runner/mcpApprovals.mjs +63 -0
  52. package/dist/runner/mcpApprovals.mjs.map +1 -0
  53. package/dist/runner/modelOutputs.d.ts +10 -0
  54. package/dist/runner/modelOutputs.js +206 -0
  55. package/dist/runner/modelOutputs.js.map +1 -0
  56. package/dist/runner/modelOutputs.mjs +203 -0
  57. package/dist/runner/modelOutputs.mjs.map +1 -0
  58. package/dist/runner/modelPreparation.d.ts +8 -0
  59. package/dist/runner/modelPreparation.js +41 -0
  60. package/dist/runner/modelPreparation.js.map +1 -0
  61. package/dist/runner/modelPreparation.mjs +38 -0
  62. package/dist/runner/modelPreparation.mjs.map +1 -0
  63. package/dist/runner/modelSettings.d.ts +20 -0
  64. package/dist/runner/modelSettings.js +97 -0
  65. package/dist/runner/modelSettings.js.map +1 -0
  66. package/dist/runner/modelSettings.mjs +92 -0
  67. package/dist/runner/modelSettings.mjs.map +1 -0
  68. package/dist/runner/runLoop.d.ts +32 -0
  69. package/dist/runner/runLoop.js +62 -0
  70. package/dist/runner/runLoop.js.map +1 -0
  71. package/dist/runner/runLoop.mjs +57 -0
  72. package/dist/runner/runLoop.mjs.map +1 -0
  73. package/dist/runner/sessionPersistence.d.ts +26 -0
  74. package/dist/runner/sessionPersistence.js +441 -0
  75. package/dist/runner/sessionPersistence.js.map +1 -0
  76. package/dist/runner/sessionPersistence.mjs +431 -0
  77. package/dist/runner/sessionPersistence.mjs.map +1 -0
  78. package/dist/runner/steps.d.ts +48 -0
  79. package/dist/runner/steps.js +40 -0
  80. package/dist/runner/steps.js.map +1 -0
  81. package/dist/runner/steps.mjs +36 -0
  82. package/dist/runner/steps.mjs.map +1 -0
  83. package/dist/runner/streaming.d.ts +9 -0
  84. package/dist/runner/streaming.js +74 -0
  85. package/dist/runner/streaming.js.map +1 -0
  86. package/dist/runner/streaming.mjs +65 -0
  87. package/dist/runner/streaming.mjs.map +1 -0
  88. package/dist/runner/toolExecution.d.ts +15 -0
  89. package/dist/runner/toolExecution.js +997 -0
  90. package/dist/runner/toolExecution.js.map +1 -0
  91. package/dist/runner/toolExecution.mjs +984 -0
  92. package/dist/runner/toolExecution.mjs.map +1 -0
  93. package/dist/runner/toolUseTracker.d.ts +9 -0
  94. package/dist/runner/toolUseTracker.js +34 -0
  95. package/dist/runner/toolUseTracker.js.map +1 -0
  96. package/dist/runner/toolUseTracker.mjs +30 -0
  97. package/dist/runner/toolUseTracker.mjs.map +1 -0
  98. package/dist/runner/tracing.d.ts +23 -0
  99. package/dist/runner/tracing.js +45 -0
  100. package/dist/runner/tracing.js.map +1 -0
  101. package/dist/runner/tracing.mjs +41 -0
  102. package/dist/runner/tracing.mjs.map +1 -0
  103. package/dist/runner/turnPreparation.d.ts +30 -0
  104. package/dist/runner/turnPreparation.js +80 -0
  105. package/dist/runner/turnPreparation.js.map +1 -0
  106. package/dist/runner/turnPreparation.mjs +74 -0
  107. package/dist/runner/turnPreparation.mjs.map +1 -0
  108. package/dist/runner/turnResolution.d.ts +3 -0
  109. package/dist/runner/turnResolution.js +531 -0
  110. package/dist/runner/turnResolution.js.map +1 -0
  111. package/dist/runner/turnResolution.mjs +526 -0
  112. package/dist/runner/turnResolution.mjs.map +1 -0
  113. package/dist/runner/types.d.ts +66 -0
  114. package/dist/runner/types.js +3 -0
  115. package/dist/runner/types.js.map +1 -0
  116. package/dist/runner/types.mjs +2 -0
  117. package/dist/runner/types.mjs.map +1 -0
  118. package/dist/shims/mcp-server/node.js +76 -30
  119. package/dist/shims/mcp-server/node.js.map +1 -1
  120. package/dist/shims/mcp-server/node.mjs +76 -30
  121. package/dist/shims/mcp-server/node.mjs.map +1 -1
  122. package/dist/tool.d.ts +28 -2
  123. package/dist/tool.js +7 -1
  124. package/dist/tool.js.map +1 -1
  125. package/dist/tool.mjs +8 -2
  126. package/dist/tool.mjs.map +1 -1
  127. package/dist/toolGuardrail.d.ts +101 -0
  128. package/dist/toolGuardrail.js +58 -0
  129. package/dist/toolGuardrail.js.map +1 -0
  130. package/dist/toolGuardrail.mjs +51 -0
  131. package/dist/toolGuardrail.mjs.map +1 -0
  132. package/dist/tracing/config.d.ts +3 -0
  133. package/dist/tracing/config.js +3 -0
  134. package/dist/tracing/config.js.map +1 -0
  135. package/dist/tracing/config.mjs +2 -0
  136. package/dist/tracing/config.mjs.map +1 -0
  137. package/dist/tracing/context.d.ts +2 -0
  138. package/dist/tracing/context.js +95 -24
  139. package/dist/tracing/context.js.map +1 -1
  140. package/dist/tracing/context.mjs +95 -24
  141. package/dist/tracing/context.mjs.map +1 -1
  142. package/dist/tracing/createSpans.d.ts +11 -11
  143. package/dist/tracing/index.d.ts +2 -0
  144. package/dist/tracing/index.js.map +1 -1
  145. package/dist/tracing/index.mjs.map +1 -1
  146. package/dist/tracing/provider.js +54 -4
  147. package/dist/tracing/provider.js.map +1 -1
  148. package/dist/tracing/provider.mjs +54 -4
  149. package/dist/tracing/provider.mjs.map +1 -1
  150. package/dist/tracing/spans.d.ts +2 -0
  151. package/dist/tracing/spans.js +6 -0
  152. package/dist/tracing/spans.js.map +1 -1
  153. package/dist/tracing/spans.mjs +6 -0
  154. package/dist/tracing/spans.mjs.map +1 -1
  155. package/dist/tracing/traces.d.ts +11 -1
  156. package/dist/tracing/traces.js +15 -2
  157. package/dist/tracing/traces.js.map +1 -1
  158. package/dist/tracing/traces.mjs +15 -2
  159. package/dist/tracing/traces.mjs.map +1 -1
  160. package/dist/types/protocol.d.ts +11 -0
  161. package/dist/types/protocol.js +1 -0
  162. package/dist/types/protocol.js.map +1 -1
  163. package/dist/types/protocol.mjs +1 -0
  164. package/dist/types/protocol.mjs.map +1 -1
  165. package/dist/utils/binary.d.ts +6 -0
  166. package/dist/utils/binary.js +53 -0
  167. package/dist/utils/binary.js.map +1 -0
  168. package/dist/utils/binary.mjs +49 -0
  169. package/dist/utils/binary.mjs.map +1 -0
  170. package/dist/utils/toolGuardrails.d.ts +24 -0
  171. package/dist/utils/toolGuardrails.js +58 -0
  172. package/dist/utils/toolGuardrails.js.map +1 -0
  173. package/dist/utils/toolGuardrails.mjs +54 -0
  174. package/dist/utils/toolGuardrails.mjs.map +1 -0
  175. package/package.json +4 -3
  176. package/dist/runImplementation.d.ts +0 -161
  177. package/dist/runImplementation.js +0 -2054
  178. package/dist/runImplementation.js.map +0 -1
  179. package/dist/runImplementation.mjs +0 -2028
  180. package/dist/runImplementation.mjs.map +0 -1
@@ -0,0 +1,441 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.createSessionPersistenceTracker = createSessionPersistenceTracker;
7
+ exports.saveToSession = saveToSession;
8
+ exports.saveStreamInputToSession = saveStreamInputToSession;
9
+ exports.saveStreamResultToSession = saveStreamResultToSession;
10
+ exports.prepareInputItemsWithSession = prepareInputItemsWithSession;
11
+ const errors_1 = require("../errors.js");
12
+ const session_1 = require("../memory/session.js");
13
+ const usage_1 = require("../usage.js");
14
+ const base64_1 = require("../utils/base64.js");
15
+ const binary_1 = require("../utils/binary.js");
16
+ const items_1 = require("./items.js");
17
+ const logger_1 = __importDefault(require("../logger.js"));
18
+ function createSessionPersistenceTracker(options) {
19
+ const { session } = options;
20
+ if (!session) {
21
+ return undefined;
22
+ }
23
+ class SessionPersistenceTrackerImpl {
24
+ session;
25
+ hasCallModelInputFilter;
26
+ persistInput;
27
+ originalSnapshot;
28
+ filteredSnapshot;
29
+ pendingWriteCounts;
30
+ persistedInput = false;
31
+ constructor() {
32
+ this.session = options.session;
33
+ this.hasCallModelInputFilter = options.hasCallModelInputFilter;
34
+ this.persistInput = options.persistInput;
35
+ this.originalSnapshot = options.resumingFromState ? [] : undefined;
36
+ this.filteredSnapshot = undefined;
37
+ this.pendingWriteCounts = options.resumingFromState
38
+ ? new Map()
39
+ : undefined;
40
+ }
41
+ setPreparedItems = (items) => {
42
+ const sessionItems = items ?? [];
43
+ this.originalSnapshot = sessionItems.map((item) => structuredClone(item));
44
+ this.pendingWriteCounts = new Map();
45
+ for (const item of sessionItems) {
46
+ const key = (0, items_1.getAgentInputItemKey)(item);
47
+ this.pendingWriteCounts.set(key, (this.pendingWriteCounts.get(key) ?? 0) + 1);
48
+ }
49
+ };
50
+ recordTurnItems = (sourceItems, filteredItems) => {
51
+ const pendingCounts = this.pendingWriteCounts;
52
+ if (filteredItems !== undefined) {
53
+ if (!pendingCounts) {
54
+ this.filteredSnapshot = cloneItems(filteredItems);
55
+ return;
56
+ }
57
+ const nextSnapshot = collectPersistableFilteredItems({
58
+ pendingCounts,
59
+ sourceItems,
60
+ filteredItems,
61
+ existingSnapshot: this.filteredSnapshot,
62
+ });
63
+ if (nextSnapshot !== undefined) {
64
+ this.filteredSnapshot = nextSnapshot;
65
+ }
66
+ return;
67
+ }
68
+ this.filteredSnapshot = buildSnapshotForUnfilteredItems({
69
+ pendingCounts,
70
+ sourceItems,
71
+ existingSnapshot: this.filteredSnapshot,
72
+ });
73
+ };
74
+ getItemsForPersistence = () => {
75
+ if (this.filteredSnapshot !== undefined) {
76
+ return this.filteredSnapshot;
77
+ }
78
+ if (this.hasCallModelInputFilter) {
79
+ return undefined;
80
+ }
81
+ return this.originalSnapshot;
82
+ };
83
+ buildPersistInputOnce = (serverManagesConversation) => {
84
+ if (!this.session || serverManagesConversation) {
85
+ return undefined;
86
+ }
87
+ const persistInput = this.persistInput ?? saveStreamInputToSession;
88
+ return async () => {
89
+ if (this.persistedInput) {
90
+ return;
91
+ }
92
+ const itemsToPersist = this.getItemsForPersistence();
93
+ if (!itemsToPersist || itemsToPersist.length === 0) {
94
+ return;
95
+ }
96
+ this.persistedInput = true;
97
+ await persistInput(this.session, itemsToPersist);
98
+ };
99
+ };
100
+ }
101
+ return new SessionPersistenceTrackerImpl();
102
+ }
103
+ function cloneItems(items) {
104
+ return items.map((item) => structuredClone(item));
105
+ }
106
+ function buildSourceOccurrenceCounts(sourceItems) {
107
+ const sourceOccurrenceCounts = new WeakMap();
108
+ for (const source of sourceItems) {
109
+ if (!source || typeof source !== 'object') {
110
+ continue;
111
+ }
112
+ const nextCount = (sourceOccurrenceCounts.get(source) ?? 0) + 1;
113
+ sourceOccurrenceCounts.set(source, nextCount);
114
+ }
115
+ return sourceOccurrenceCounts;
116
+ }
117
+ function collectPersistableFilteredItems(options) {
118
+ const { pendingCounts, sourceItems, filteredItems, existingSnapshot } = options;
119
+ const persistableItems = [];
120
+ const sourceOccurrenceCounts = buildSourceOccurrenceCounts(sourceItems);
121
+ const consumeAnyPendingWriteSlot = () => {
122
+ for (const [key, remaining] of pendingCounts) {
123
+ if (remaining > 0) {
124
+ pendingCounts.set(key, remaining - 1);
125
+ return true;
126
+ }
127
+ }
128
+ return false;
129
+ };
130
+ for (let i = 0; i < filteredItems.length; i++) {
131
+ const filteredItem = filteredItems[i];
132
+ if (!filteredItem) {
133
+ continue;
134
+ }
135
+ let allocated = false;
136
+ const source = sourceItems[i];
137
+ if (source && typeof source === 'object') {
138
+ const pendingOccurrences = (sourceOccurrenceCounts.get(source) ?? 0) - 1;
139
+ sourceOccurrenceCounts.set(source, pendingOccurrences);
140
+ if (pendingOccurrences > 0) {
141
+ continue;
142
+ }
143
+ const sourceKey = (0, items_1.getAgentInputItemKey)(source);
144
+ const remaining = pendingCounts.get(sourceKey) ?? 0;
145
+ if (remaining > 0) {
146
+ pendingCounts.set(sourceKey, remaining - 1);
147
+ persistableItems.push(structuredClone(filteredItem));
148
+ allocated = true;
149
+ continue;
150
+ }
151
+ }
152
+ const filteredKey = (0, items_1.getAgentInputItemKey)(filteredItem);
153
+ const filteredRemaining = pendingCounts.get(filteredKey) ?? 0;
154
+ if (filteredRemaining > 0) {
155
+ pendingCounts.set(filteredKey, filteredRemaining - 1);
156
+ persistableItems.push(structuredClone(filteredItem));
157
+ allocated = true;
158
+ continue;
159
+ }
160
+ if (!source && consumeAnyPendingWriteSlot()) {
161
+ persistableItems.push(structuredClone(filteredItem));
162
+ allocated = true;
163
+ }
164
+ if (!allocated && !source && existingSnapshot === undefined) {
165
+ persistableItems.push(structuredClone(filteredItem));
166
+ }
167
+ }
168
+ if (persistableItems.length > 0 || existingSnapshot === undefined) {
169
+ return persistableItems;
170
+ }
171
+ return existingSnapshot;
172
+ }
173
+ function buildSnapshotForUnfilteredItems(options) {
174
+ const { pendingCounts, sourceItems, existingSnapshot } = options;
175
+ if (!pendingCounts) {
176
+ const filtered = sourceItems
177
+ .filter((item) => Boolean(item))
178
+ .map((item) => structuredClone(item));
179
+ return filtered.length > 0
180
+ ? filtered
181
+ : existingSnapshot === undefined
182
+ ? []
183
+ : existingSnapshot;
184
+ }
185
+ const filtered = [];
186
+ for (const item of sourceItems) {
187
+ if (!item) {
188
+ continue;
189
+ }
190
+ const key = (0, items_1.getAgentInputItemKey)(item);
191
+ const remaining = pendingCounts.get(key) ?? 0;
192
+ if (remaining <= 0) {
193
+ continue;
194
+ }
195
+ pendingCounts.set(key, remaining - 1);
196
+ filtered.push(structuredClone(item));
197
+ }
198
+ if (filtered.length > 0) {
199
+ return filtered;
200
+ }
201
+ return existingSnapshot === undefined ? [] : existingSnapshot;
202
+ }
203
+ async function saveToSession(session, sessionInputItems, result) {
204
+ const state = result.state;
205
+ const alreadyPersisted = state._currentTurnPersistedItemCount ?? 0;
206
+ const newRunItems = result.newItems.slice(alreadyPersisted);
207
+ if (process.env.OPENAI_AGENTS__DEBUG_SAVE_SESSION) {
208
+ console.debug('saveToSession:newRunItems', newRunItems.map((item) => item.type));
209
+ }
210
+ await persistRunItemsToSession({
211
+ session,
212
+ state,
213
+ newRunItems,
214
+ extraInputItems: sessionInputItems,
215
+ lastResponseId: result.lastResponseId,
216
+ alreadyPersistedCount: alreadyPersisted,
217
+ });
218
+ }
219
+ async function saveStreamInputToSession(session, sessionInputItems) {
220
+ if (!session) {
221
+ return;
222
+ }
223
+ if (!sessionInputItems || sessionInputItems.length === 0) {
224
+ return;
225
+ }
226
+ const sanitizedInput = normalizeItemsForSessionPersistence(sessionInputItems);
227
+ await session.addItems(sanitizedInput);
228
+ }
229
+ async function saveStreamResultToSession(session, result) {
230
+ const state = result.state;
231
+ const alreadyPersisted = state._currentTurnPersistedItemCount ?? 0;
232
+ const newRunItems = result.newItems.slice(alreadyPersisted);
233
+ await persistRunItemsToSession({
234
+ session,
235
+ state,
236
+ newRunItems,
237
+ lastResponseId: result.lastResponseId,
238
+ alreadyPersistedCount: alreadyPersisted,
239
+ });
240
+ }
241
+ async function prepareInputItemsWithSession(input, session, sessionInputCallback, options) {
242
+ if (!session) {
243
+ return {
244
+ preparedInput: input,
245
+ sessionItems: undefined,
246
+ };
247
+ }
248
+ const includeHistoryInPreparedInput = options?.includeHistoryInPreparedInput ?? true;
249
+ const preserveDroppedNewItems = options?.preserveDroppedNewItems ?? false;
250
+ const history = await session.getItems();
251
+ const newInputItems = (0, items_1.toAgentInputList)(input);
252
+ if (!sessionInputCallback) {
253
+ return {
254
+ preparedInput: includeHistoryInPreparedInput
255
+ ? [...history, ...newInputItems]
256
+ : newInputItems,
257
+ sessionItems: newInputItems,
258
+ };
259
+ }
260
+ const historySnapshot = history.slice();
261
+ const newInputSnapshot = newInputItems.slice();
262
+ const combined = await sessionInputCallback(history, newInputItems);
263
+ if (!Array.isArray(combined)) {
264
+ throw new errors_1.UserError('Session input callback must return an array of AgentInputItem objects.');
265
+ }
266
+ const historyCounts = buildItemFrequencyMap(historySnapshot);
267
+ const newInputCounts = buildItemFrequencyMap(newInputSnapshot);
268
+ const historyRefs = (0, items_1.buildAgentInputPool)(historySnapshot);
269
+ const newInputRefs = (0, items_1.buildAgentInputPool)(newInputSnapshot);
270
+ const appended = [];
271
+ for (const item of combined) {
272
+ const key = (0, items_1.getAgentInputItemKey)(item);
273
+ if ((0, items_1.removeAgentInputFromPool)(newInputRefs, item)) {
274
+ decrementCount(newInputCounts, key);
275
+ appended.push(item);
276
+ continue;
277
+ }
278
+ if ((0, items_1.removeAgentInputFromPool)(historyRefs, item)) {
279
+ decrementCount(historyCounts, key);
280
+ continue;
281
+ }
282
+ const historyRemaining = historyCounts.get(key) ?? 0;
283
+ if (historyRemaining > 0) {
284
+ historyCounts.set(key, historyRemaining - 1);
285
+ continue;
286
+ }
287
+ const newRemaining = newInputCounts.get(key) ?? 0;
288
+ if (newRemaining > 0) {
289
+ newInputCounts.set(key, newRemaining - 1);
290
+ appended.push(item);
291
+ continue;
292
+ }
293
+ appended.push(item);
294
+ }
295
+ const preparedItems = includeHistoryInPreparedInput
296
+ ? combined
297
+ : appended.length > 0
298
+ ? appended
299
+ : preserveDroppedNewItems
300
+ ? newInputSnapshot
301
+ : [];
302
+ if (preserveDroppedNewItems &&
303
+ appended.length === 0 &&
304
+ newInputSnapshot.length > 0) {
305
+ // In server-managed conversations we cannot drop the turn delta; restore it and warn callers.
306
+ logger_1.default.warn('sessionInputCallback dropped all new inputs in a server-managed conversation; original turn inputs were restored to avoid losing the API delta. Keep at least one new item or omit conversationId if you intended to drop them.');
307
+ }
308
+ return {
309
+ preparedInput: preparedItems,
310
+ sessionItems: appended,
311
+ };
312
+ }
313
+ function normalizeItemsForSessionPersistence(items) {
314
+ return items.map((item) => sanitizeValueForSession(stripTransientCallIds(item)));
315
+ }
316
+ function sanitizeValueForSession(value, context = {}) {
317
+ if (value === null || value === undefined) {
318
+ return value;
319
+ }
320
+ const binary = (0, binary_1.toUint8ArrayFromBinary)(value);
321
+ if (binary) {
322
+ return toDataUrlFromBytes(binary, context.mediaType);
323
+ }
324
+ if (Array.isArray(value)) {
325
+ return value.map((entry) => sanitizeValueForSession(entry, context));
326
+ }
327
+ if (!isPlainObject(value)) {
328
+ return value;
329
+ }
330
+ const record = value;
331
+ const result = {};
332
+ const mediaType = typeof record.mediaType === 'string' && record.mediaType.length > 0
333
+ ? record.mediaType
334
+ : context.mediaType;
335
+ for (const [key, entry] of Object.entries(record)) {
336
+ const nextContext = key === 'data' || key === 'fileData' ? { mediaType } : context;
337
+ result[key] = sanitizeValueForSession(entry, nextContext);
338
+ }
339
+ return result;
340
+ }
341
+ function toDataUrlFromBytes(bytes, mediaType) {
342
+ const base64 = (0, base64_1.encodeUint8ArrayToBase64)(bytes);
343
+ const type = mediaType && !mediaType.startsWith('data:') ? mediaType : 'text/plain';
344
+ return `data:${type};base64,${base64}`;
345
+ }
346
+ function isPlainObject(value) {
347
+ if (typeof value !== 'object' || value === null) {
348
+ return false;
349
+ }
350
+ const proto = Object.getPrototypeOf(value);
351
+ return proto === Object.prototype || proto === null;
352
+ }
353
+ function stripTransientCallIds(value) {
354
+ if (value === null || value === undefined) {
355
+ return value;
356
+ }
357
+ if (Array.isArray(value)) {
358
+ return value.map((entry) => stripTransientCallIds(entry));
359
+ }
360
+ if (!isPlainObject(value)) {
361
+ return value;
362
+ }
363
+ const record = value;
364
+ const result = {};
365
+ const isProtocolItem = typeof record.type === 'string' && record.type.length > 0;
366
+ const shouldStripId = isProtocolItem && shouldStripIdForType(record.type);
367
+ for (const [key, entry] of Object.entries(record)) {
368
+ if (shouldStripId && key === 'id') {
369
+ continue;
370
+ }
371
+ result[key] = stripTransientCallIds(entry);
372
+ }
373
+ return result;
374
+ }
375
+ function shouldStripIdForType(type) {
376
+ switch (type) {
377
+ case 'function_call':
378
+ case 'function_call_result':
379
+ return true;
380
+ default:
381
+ return false;
382
+ }
383
+ }
384
+ async function persistRunItemsToSession(options) {
385
+ const { session, state, newRunItems, extraInputItems = [], lastResponseId, alreadyPersistedCount, } = options;
386
+ if (!session) {
387
+ return;
388
+ }
389
+ const itemsToSave = [
390
+ ...extraInputItems,
391
+ ...(0, items_1.extractOutputItemsFromRunItems)(newRunItems),
392
+ ];
393
+ if (itemsToSave.length === 0) {
394
+ state._currentTurnPersistedItemCount =
395
+ alreadyPersistedCount + newRunItems.length;
396
+ await runCompactionOnSession(session, lastResponseId, state);
397
+ return;
398
+ }
399
+ const sanitizedItems = normalizeItemsForSessionPersistence(itemsToSave);
400
+ await session.addItems(sanitizedItems);
401
+ await runCompactionOnSession(session, lastResponseId, state);
402
+ state._currentTurnPersistedItemCount =
403
+ alreadyPersistedCount + newRunItems.length;
404
+ }
405
+ async function runCompactionOnSession(session, responseId, state) {
406
+ if (!(0, session_1.isOpenAIResponsesCompactionAwareSession)(session)) {
407
+ return;
408
+ }
409
+ const compactionResult = await session.runCompaction(typeof responseId === 'undefined' ? undefined : { responseId });
410
+ if (!compactionResult) {
411
+ return;
412
+ }
413
+ const usage = compactionResult.usage;
414
+ state._context.usage.add(new usage_1.Usage({
415
+ requests: 1,
416
+ inputTokens: usage.inputTokens,
417
+ outputTokens: usage.outputTokens,
418
+ totalTokens: usage.totalTokens,
419
+ inputTokensDetails: usage.inputTokensDetails,
420
+ outputTokensDetails: usage.outputTokensDetails,
421
+ requestUsageEntries: [usage],
422
+ }));
423
+ }
424
+ function buildItemFrequencyMap(items) {
425
+ const counts = new Map();
426
+ for (const item of items) {
427
+ const key = (0, items_1.getAgentInputItemKey)(item);
428
+ counts.set(key, (counts.get(key) ?? 0) + 1);
429
+ }
430
+ return counts;
431
+ }
432
+ function decrementCount(map, key) {
433
+ const remaining = (map.get(key) ?? 0) - 1;
434
+ if (remaining <= 0) {
435
+ map.delete(key);
436
+ }
437
+ else {
438
+ map.set(key, remaining);
439
+ }
440
+ }
441
+ //# sourceMappingURL=sessionPersistence.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sessionPersistence.js","sourceRoot":"","sources":["../../src/runner/sessionPersistence.ts"],"names":[],"mappings":"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"}