@openai/agents-core 0.5.3 → 0.6.0

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 (112) hide show
  1. package/dist/computer.d.ts +10 -2
  2. package/dist/events.d.ts +1 -1
  3. package/dist/events.js.map +1 -1
  4. package/dist/events.mjs.map +1 -1
  5. package/dist/extensions/handoffFilters.d.ts +4 -3
  6. package/dist/extensions/handoffFilters.js +8 -3
  7. package/dist/extensions/handoffFilters.js.map +1 -1
  8. package/dist/extensions/handoffFilters.mjs +9 -4
  9. package/dist/extensions/handoffFilters.mjs.map +1 -1
  10. package/dist/index.d.ts +4 -4
  11. package/dist/index.js +8 -2
  12. package/dist/index.js.map +1 -1
  13. package/dist/index.mjs +2 -2
  14. package/dist/index.mjs.map +1 -1
  15. package/dist/items.d.ts +1158 -32
  16. package/dist/items.js +56 -2
  17. package/dist/items.js.map +1 -1
  18. package/dist/items.mjs +53 -1
  19. package/dist/items.mjs.map +1 -1
  20. package/dist/metadata.js +3 -3
  21. package/dist/metadata.mjs +3 -3
  22. package/dist/model.d.ts +14 -2
  23. package/dist/run.js +2 -2
  24. package/dist/run.js.map +1 -1
  25. package/dist/run.mjs +3 -3
  26. package/dist/run.mjs.map +1 -1
  27. package/dist/runContext.d.ts +12 -1
  28. package/dist/runContext.js +145 -41
  29. package/dist/runContext.js.map +1 -1
  30. package/dist/runContext.mjs +145 -41
  31. package/dist/runContext.mjs.map +1 -1
  32. package/dist/runState.d.ts +506 -18
  33. package/dist/runState.js +321 -15
  34. package/dist/runState.js.map +1 -1
  35. package/dist/runState.mjs +322 -16
  36. package/dist/runState.mjs.map +1 -1
  37. package/dist/runner/approvalRejection.d.ts +13 -0
  38. package/dist/runner/approvalRejection.js +44 -0
  39. package/dist/runner/approvalRejection.js.map +1 -0
  40. package/dist/runner/approvalRejection.mjs +37 -0
  41. package/dist/runner/approvalRejection.mjs.map +1 -0
  42. package/dist/runner/mcpApprovals.js +4 -1
  43. package/dist/runner/mcpApprovals.js.map +1 -1
  44. package/dist/runner/mcpApprovals.mjs +4 -1
  45. package/dist/runner/mcpApprovals.mjs.map +1 -1
  46. package/dist/runner/modelOutputs.d.ts +5 -1
  47. package/dist/runner/modelOutputs.js +552 -12
  48. package/dist/runner/modelOutputs.js.map +1 -1
  49. package/dist/runner/modelOutputs.mjs +552 -13
  50. package/dist/runner/modelOutputs.mjs.map +1 -1
  51. package/dist/runner/modelPreparation.js +5 -2
  52. package/dist/runner/modelPreparation.js.map +1 -1
  53. package/dist/runner/modelPreparation.mjs +5 -2
  54. package/dist/runner/modelPreparation.mjs.map +1 -1
  55. package/dist/runner/sessionPersistence.js +17 -3
  56. package/dist/runner/sessionPersistence.js.map +1 -1
  57. package/dist/runner/sessionPersistence.mjs +17 -3
  58. package/dist/runner/sessionPersistence.mjs.map +1 -1
  59. package/dist/runner/streaming.js +8 -0
  60. package/dist/runner/streaming.js.map +1 -1
  61. package/dist/runner/streaming.mjs +9 -1
  62. package/dist/runner/streaming.mjs.map +1 -1
  63. package/dist/runner/toolExecution.js +105 -95
  64. package/dist/runner/toolExecution.js.map +1 -1
  65. package/dist/runner/toolExecution.mjs +100 -90
  66. package/dist/runner/toolExecution.mjs.map +1 -1
  67. package/dist/runner/toolSearch.d.ts +23 -0
  68. package/dist/runner/toolSearch.js +426 -0
  69. package/dist/runner/toolSearch.js.map +1 -0
  70. package/dist/runner/toolSearch.mjs +416 -0
  71. package/dist/runner/toolSearch.mjs.map +1 -0
  72. package/dist/runner/turnResolution.js +2 -1
  73. package/dist/runner/turnResolution.js.map +1 -1
  74. package/dist/runner/turnResolution.mjs +2 -1
  75. package/dist/runner/turnResolution.mjs.map +1 -1
  76. package/dist/tool.d.ts +50 -0
  77. package/dist/tool.js +79 -0
  78. package/dist/tool.js.map +1 -1
  79. package/dist/tool.mjs +74 -0
  80. package/dist/tool.mjs.map +1 -1
  81. package/dist/toolIdentity.d.ts +23 -0
  82. package/dist/toolIdentity.js +105 -0
  83. package/dist/toolIdentity.js.map +1 -0
  84. package/dist/toolIdentity.mjs +89 -0
  85. package/dist/toolIdentity.mjs.map +1 -0
  86. package/dist/tooling.d.ts +24 -0
  87. package/dist/tooling.js +110 -0
  88. package/dist/tooling.js.map +1 -0
  89. package/dist/tooling.mjs +97 -0
  90. package/dist/tooling.mjs.map +1 -0
  91. package/dist/types/aliases.d.ts +3 -3
  92. package/dist/types/protocol.d.ts +417 -12
  93. package/dist/types/protocol.js +59 -4
  94. package/dist/types/protocol.js.map +1 -1
  95. package/dist/types/protocol.mjs +57 -2
  96. package/dist/types/protocol.mjs.map +1 -1
  97. package/dist/types/providerData.d.ts +2 -0
  98. package/dist/utils/index.d.ts +2 -0
  99. package/dist/utils/index.js +15 -1
  100. package/dist/utils/index.js.map +1 -1
  101. package/dist/utils/index.mjs +2 -0
  102. package/dist/utils/index.mjs.map +1 -1
  103. package/dist/utils/serialize.js +37 -6
  104. package/dist/utils/serialize.js.map +1 -1
  105. package/dist/utils/serialize.mjs +37 -6
  106. package/dist/utils/serialize.mjs.map +1 -1
  107. package/dist/utils/toolSearch.d.ts +1 -0
  108. package/dist/utils/toolSearch.js +13 -0
  109. package/dist/utils/toolSearch.js.map +1 -0
  110. package/dist/utils/toolSearch.mjs +2 -0
  111. package/dist/utils/toolSearch.mjs.map +1 -0
  112. package/package.json +2 -2
@@ -4,6 +4,8 @@ import { Usage } from './usage';
4
4
  type ApprovalRecord = {
5
5
  approved: boolean | string[];
6
6
  rejected: boolean | string[];
7
+ messages?: Record<string, string>;
8
+ stickyRejectMessage?: string;
7
9
  };
8
10
  type RunContextJson = {
9
11
  context: any;
@@ -29,6 +31,14 @@ export declare class RunContext<TContext = UnknownContext> {
29
31
  */
30
32
  toolInput?: unknown;
31
33
  constructor(context?: TContext);
34
+ /**
35
+ * Retrieve the caller-provided rejection message for a specific tool call.
36
+ *
37
+ * @param toolName - The name of the tool.
38
+ * @param callId - The call ID of the tool invocation.
39
+ * @returns The message string if one was provided, `undefined` otherwise.
40
+ */
41
+ getRejectionMessage(toolName: string, callId: string): string | undefined;
32
42
  /**
33
43
  * Check if a tool call has been approved.
34
44
  *
@@ -53,8 +63,9 @@ export declare class RunContext<TContext = UnknownContext> {
53
63
  *
54
64
  * @param approvalItem - The tool approval item to reject.
55
65
  */
56
- rejectTool(approvalItem: RunToolApprovalItem, { alwaysReject }?: {
66
+ rejectTool(approvalItem: RunToolApprovalItem, { alwaysReject, message, }?: {
57
67
  alwaysReject?: boolean;
68
+ message?: string;
58
69
  }): void;
59
70
  toJSON(): RunContextJson;
60
71
  }
@@ -6,6 +6,62 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.RunContext = void 0;
7
7
  const logger_1 = __importDefault(require("./logger.js"));
8
8
  const usage_1 = require("./usage.js");
9
+ const COMPUTER_APPROVAL_TOOL_NAMES = new Set([
10
+ 'computer',
11
+ 'computer_use_preview',
12
+ ]);
13
+ function getApprovalToolNameCandidates(toolName) {
14
+ if (!COMPUTER_APPROVAL_TOOL_NAMES.has(toolName)) {
15
+ return [toolName];
16
+ }
17
+ return toolName === 'computer'
18
+ ? ['computer', 'computer_use_preview']
19
+ : ['computer_use_preview', 'computer'];
20
+ }
21
+ function mergeApprovalList(current, incoming) {
22
+ if (current === true || incoming === true) {
23
+ return true;
24
+ }
25
+ const currentList = Array.isArray(current) ? current : [];
26
+ const incomingList = Array.isArray(incoming) ? incoming : [];
27
+ return Array.from(new Set([...currentList, ...incomingList]));
28
+ }
29
+ function mergeApprovalMessages(current, incoming) {
30
+ if (current.rejected === true) {
31
+ return current.messages;
32
+ }
33
+ const merged = current.messages || incoming.messages
34
+ ? { ...incoming.messages, ...current.messages }
35
+ : undefined;
36
+ if (!merged) {
37
+ return undefined;
38
+ }
39
+ if (Array.isArray(current.rejected)) {
40
+ for (const callId of current.rejected) {
41
+ if (!current.messages ||
42
+ !Object.prototype.hasOwnProperty.call(current.messages, callId)) {
43
+ delete merged[callId];
44
+ }
45
+ }
46
+ }
47
+ return Object.keys(merged).length > 0 ? merged : undefined;
48
+ }
49
+ function mergeStickyRejectMessage(current, incoming) {
50
+ if (current.rejected === true) {
51
+ return current.stickyRejectMessage;
52
+ }
53
+ return current.stickyRejectMessage ?? incoming.stickyRejectMessage;
54
+ }
55
+ function mergeApprovalRecords(current, incoming) {
56
+ const mergedMessages = mergeApprovalMessages(current, incoming);
57
+ const stickyRejectMessage = mergeStickyRejectMessage(current, incoming);
58
+ return {
59
+ approved: mergeApprovalList(current.approved, incoming.approved),
60
+ rejected: mergeApprovalList(current.rejected, incoming.rejected),
61
+ ...(mergedMessages ? { messages: mergedMessages } : {}),
62
+ ...(stickyRejectMessage !== undefined ? { stickyRejectMessage } : {}),
63
+ };
64
+ }
9
65
  /**
10
66
  * A context object that is passed to the `Runner.run()` method.
11
67
  */
@@ -56,7 +112,10 @@ class RunContext {
56
112
  * @param approvals - The approvals map to rebuild.
57
113
  */
58
114
  _rebuildApprovals(approvals) {
59
- this.#approvals = new Map(Object.entries(approvals));
115
+ this.#approvals = new Map();
116
+ for (const [toolName, approval] of Object.entries(approvals)) {
117
+ this.#setApprovalRecord(toolName, approval);
118
+ }
60
119
  }
61
120
  /**
62
121
  * Merge approvals from a serialized state without discarding existing entries.
@@ -65,25 +124,36 @@ class RunContext {
65
124
  * @param approvals - The approvals map to merge.
66
125
  */
67
126
  _mergeApprovals(approvals) {
68
- const mergeApproval = (current, incoming) => {
69
- if (current === true || incoming === true) {
70
- return true;
71
- }
72
- const currentList = Array.isArray(current) ? current : [];
73
- const incomingList = Array.isArray(incoming) ? incoming : [];
74
- return Array.from(new Set([...currentList, ...incomingList]));
75
- };
76
127
  for (const [toolName, incoming] of Object.entries(approvals)) {
77
- const existing = this.#approvals.get(toolName);
78
- if (!existing) {
79
- this.#approvals.set(toolName, incoming);
80
- continue;
128
+ this.#setApprovalRecord(toolName, incoming);
129
+ }
130
+ }
131
+ /**
132
+ * Retrieve the caller-provided rejection message for a specific tool call.
133
+ *
134
+ * @param toolName - The name of the tool.
135
+ * @param callId - The call ID of the tool invocation.
136
+ * @returns The message string if one was provided, `undefined` otherwise.
137
+ */
138
+ getRejectionMessage(toolName, callId) {
139
+ for (const approvalEntry of this.#getApprovalEntries(toolName)) {
140
+ if (typeof approvalEntry.messages?.[callId] === 'string') {
141
+ return approvalEntry.messages[callId];
142
+ }
143
+ }
144
+ for (const approvalEntry of this.#getApprovalEntries(toolName)) {
145
+ if (approvalEntry.rejected === true) {
146
+ return approvalEntry.stickyRejectMessage;
81
147
  }
82
- this.#approvals.set(toolName, {
83
- approved: mergeApproval(existing.approved, incoming.approved),
84
- rejected: mergeApproval(existing.rejected, incoming.rejected),
85
- });
86
148
  }
149
+ return undefined;
150
+ }
151
+ #getCallId(approvalItem) {
152
+ if ('callId' in approvalItem.rawItem) {
153
+ return approvalItem.rawItem.callId;
154
+ }
155
+ const providerData = approvalItem.rawItem.providerData;
156
+ return (approvalItem.rawItem.id ?? providerData?.itemId ?? providerData?.id ?? '');
87
157
  }
88
158
  /**
89
159
  * Check if a tool call has been approved.
@@ -93,23 +163,25 @@ class RunContext {
93
163
  */
94
164
  isToolApproved(approval) {
95
165
  const { toolName, callId } = approval;
96
- const approvalEntry = this.#approvals.get(toolName);
97
- if (approvalEntry?.approved === true && approvalEntry.rejected === true) {
166
+ const approvalEntries = this.#getApprovalEntries(toolName);
167
+ const hasPermanentApproval = approvalEntries.some((approvalEntry) => approvalEntry.approved === true);
168
+ const hasPermanentRejection = approvalEntries.some((approvalEntry) => approvalEntry.rejected === true);
169
+ if (hasPermanentApproval && hasPermanentRejection) {
98
170
  logger_1.default.warn('Tool is permanently approved and rejected at the same time. Approval takes precedence');
99
171
  return true;
100
172
  }
101
- if (approvalEntry?.approved === true) {
173
+ if (hasPermanentApproval) {
102
174
  return true;
103
175
  }
104
- if (approvalEntry?.rejected === true) {
176
+ if (hasPermanentRejection) {
105
177
  return false;
106
178
  }
107
- const individualCallApproval = Array.isArray(approvalEntry?.approved)
179
+ const individualCallApproval = approvalEntries.some((approvalEntry) => Array.isArray(approvalEntry.approved)
108
180
  ? approvalEntry.approved.includes(callId)
109
- : false;
110
- const individualCallRejection = Array.isArray(approvalEntry?.rejected)
181
+ : false);
182
+ const individualCallRejection = approvalEntries.some((approvalEntry) => Array.isArray(approvalEntry.rejected)
111
183
  ? approvalEntry.rejected.includes(callId)
112
- : false;
184
+ : false);
113
185
  if (individualCallApproval && individualCallRejection) {
114
186
  logger_1.default.warn(`Tool call ${callId} is both approved and rejected at the same time. Approval takes precedence`);
115
187
  return true;
@@ -130,52 +202,58 @@ class RunContext {
130
202
  */
131
203
  approveTool(approvalItem, { alwaysApprove = false } = {}) {
132
204
  const toolName = approvalItem.toolName ?? approvalItem.rawItem.name;
205
+ const approvalKey = this.#getApprovalStorageKey(toolName);
133
206
  if (alwaysApprove) {
134
- this.#approvals.set(toolName, {
207
+ this.#approvals.set(approvalKey, {
135
208
  approved: true,
136
209
  rejected: [],
137
210
  });
138
211
  return;
139
212
  }
140
- const approvalEntry = this.#approvals.get(toolName) ?? {
213
+ const approvalEntry = this.#approvals.get(approvalKey) ?? {
141
214
  approved: [],
142
215
  rejected: [],
143
216
  };
144
217
  if (Array.isArray(approvalEntry.approved)) {
145
- // function tool has call_id, hosted tool call has id
146
- const callId = 'callId' in approvalItem.rawItem
147
- ? approvalItem.rawItem.callId // function tools
148
- : approvalItem.rawItem.id; // hosted tools
149
- approvalEntry.approved.push(callId);
218
+ approvalEntry.approved.push(this.#getCallId(approvalItem));
150
219
  }
151
- this.#approvals.set(toolName, approvalEntry);
220
+ this.#approvals.set(approvalKey, approvalEntry);
152
221
  }
153
222
  /**
154
223
  * Reject a tool call.
155
224
  *
156
225
  * @param approvalItem - The tool approval item to reject.
157
226
  */
158
- rejectTool(approvalItem, { alwaysReject = false } = {}) {
227
+ rejectTool(approvalItem, { alwaysReject = false, message, } = {}) {
159
228
  const toolName = approvalItem.toolName ?? approvalItem.rawItem.name;
229
+ const approvalKey = this.#getApprovalStorageKey(toolName);
160
230
  if (alwaysReject) {
161
- this.#approvals.set(toolName, {
231
+ const callId = this.#getCallId(approvalItem);
232
+ this.#approvals.set(approvalKey, {
162
233
  approved: false,
163
234
  rejected: true,
235
+ ...(message !== undefined
236
+ ? {
237
+ messages: { [callId]: message },
238
+ stickyRejectMessage: message,
239
+ }
240
+ : {}),
164
241
  });
165
242
  return;
166
243
  }
167
- const approvalEntry = this.#approvals.get(toolName) ?? {
244
+ const approvalEntry = this.#approvals.get(approvalKey) ?? {
168
245
  approved: [],
169
246
  rejected: [],
170
247
  };
171
248
  if (Array.isArray(approvalEntry.rejected)) {
172
- // function tool has call_id, hosted tool call has id
173
- const callId = 'callId' in approvalItem.rawItem
174
- ? approvalItem.rawItem.callId // function tools
175
- : approvalItem.rawItem.id; // hosted tools
249
+ const callId = this.#getCallId(approvalItem);
176
250
  approvalEntry.rejected.push(callId);
251
+ if (message !== undefined) {
252
+ approvalEntry.messages = approvalEntry.messages ?? {};
253
+ approvalEntry.messages[callId] = message;
254
+ }
177
255
  }
178
- this.#approvals.set(toolName, approvalEntry);
256
+ this.#approvals.set(approvalKey, approvalEntry);
179
257
  }
180
258
  /**
181
259
  * Creates a child context that shares approvals and usage, with tool input set.
@@ -206,6 +284,32 @@ class RunContext {
206
284
  }
207
285
  return json;
208
286
  }
287
+ #getApprovalEntries(toolName) {
288
+ return getApprovalToolNameCandidates(toolName)
289
+ .map((candidate) => this.#approvals.get(candidate))
290
+ .filter((approval) => approval !== undefined);
291
+ }
292
+ #getApprovalStorageKey(toolName) {
293
+ return (getApprovalToolNameCandidates(toolName).find((candidate) => this.#approvals.has(candidate)) ?? toolName);
294
+ }
295
+ #setApprovalRecord(toolName, incoming) {
296
+ const candidates = getApprovalToolNameCandidates(toolName);
297
+ const existingEntries = candidates
298
+ .map((candidate) => this.#approvals.get(candidate))
299
+ .filter((approval) => approval !== undefined);
300
+ const mergedExisting = existingEntries.reduce((current, approval) => current ? mergeApprovalRecords(current, approval) : approval, undefined);
301
+ const merged = mergedExisting
302
+ ? mergeApprovalRecords(mergedExisting, incoming)
303
+ : incoming;
304
+ const targetKey = candidates.find((candidate) => this.#approvals.has(candidate)) ??
305
+ toolName;
306
+ this.#approvals.set(targetKey, merged);
307
+ for (const candidate of candidates) {
308
+ if (candidate !== targetKey) {
309
+ this.#approvals.delete(candidate);
310
+ }
311
+ }
312
+ }
209
313
  }
210
314
  exports.RunContext = RunContext;
211
315
  //# sourceMappingURL=runContext.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"runContext.js","sourceRoot":"","sources":["../src/runContext.ts"],"names":[],"mappings":";;;;;;AACA,yDAA8B;AAE9B,sCAAgC;AAchC;;GAEG;AACH,MAAa,UAAU;IACrB;;OAEG;IACH,OAAO,CAAW;IAElB;;OAEG;IACH,KAAK,CAAQ;IAEb;;OAEG;IACH,SAAS,CAAW;IAEpB;;OAEG;IACH,UAAU,CAA8B;IAExC,YAAY,UAAoB,EAAc;QAC5C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,KAAK,GAAG,IAAI,aAAK,EAAE,CAAC;QACzB,IAAI,CAAC,UAAU,GAAG,IAAI,GAAG,EAAE,CAAC;IAC9B,CAAC;IAED;;;;OAIG;IACO,WAAW;QACnB,OAAO,IAAI,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC;IAED;;;OAGG;IACO,iBAAiB,CACzB,MAAe;QAEf,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC9B,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QAC1B,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QACpC,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;;OAKG;IACH,iBAAiB,CAAC,SAAyC;QACzD,IAAI,CAAC,UAAU,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;IACvD,CAAC;IAED;;;;;OAKG;IACH,eAAe,CAAC,SAAyC;QACvD,MAAM,aAAa,GAAG,CACpB,OAAmC,EACnC,QAAoC,EACpC,EAAE;YACF,IAAI,OAAO,KAAK,IAAI,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;gBAC1C,OAAO,IAAI,CAAC;YACd,CAAC;YACD,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1D,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7D,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,WAAW,EAAE,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;QAChE,CAAC,CAAC;QAEF,KAAK,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;YAC7D,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAC/C,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;gBACxC,SAAS;YACX,CAAC;YACD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,EAAE;gBAC5B,QAAQ,EAAE,aAAa,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC;gBAC7D,QAAQ,EAAE,aAAa,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC;aAC9D,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,cAAc,CAAC,QAA8C;QAC3D,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAC;QACtC,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACpD,IAAI,aAAa,EAAE,QAAQ,KAAK,IAAI,IAAI,aAAa,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;YACxE,gBAAM,CAAC,IAAI,CACT,uFAAuF,CACxF,CAAC;YACF,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,aAAa,EAAE,QAAQ,KAAK,IAAI,EAAE,CAAC;YACrC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,aAAa,EAAE,QAAQ,KAAK,IAAI,EAAE,CAAC;YACrC,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,sBAAsB,GAAG,KAAK,CAAC,OAAO,CAAC,aAAa,EAAE,QAAQ,CAAC;YACnE,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC;YACzC,CAAC,CAAC,KAAK,CAAC;QACV,MAAM,uBAAuB,GAAG,KAAK,CAAC,OAAO,CAAC,aAAa,EAAE,QAAQ,CAAC;YACpE,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC;YACzC,CAAC,CAAC,KAAK,CAAC;QAEV,IAAI,sBAAsB,IAAI,uBAAuB,EAAE,CAAC;YACtD,gBAAM,CAAC,IAAI,CACT,aAAa,MAAM,4EAA4E,CAChG,CAAC;YACF,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,sBAAsB,EAAE,CAAC;YAC3B,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,uBAAuB,EAAE,CAAC;YAC5B,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;;;;OAKG;IACH,WAAW,CACT,YAAiC,EACjC,EAAE,aAAa,GAAG,KAAK,KAAkC,EAAE;QAE3D,MAAM,QAAQ,GACZ,YAAY,CAAC,QAAQ,IAAK,YAAY,CAAC,OAAe,CAAC,IAAI,CAAC;QAC9D,IAAI,aAAa,EAAE,CAAC;YAClB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,EAAE;gBAC5B,QAAQ,EAAE,IAAI;gBACd,QAAQ,EAAE,EAAE;aACb,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QAED,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI;YACrD,QAAQ,EAAE,EAAE;YACZ,QAAQ,EAAE,EAAE;SACb,CAAC;QACF,IAAI,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1C,qDAAqD;YACrD,MAAM,MAAM,GACV,QAAQ,IAAI,YAAY,CAAC,OAAO;gBAC9B,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,iBAAiB;gBAC/C,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,EAAG,CAAC,CAAC,eAAe;YAC/C,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACtC,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;IAC/C,CAAC;IAED;;;;OAIG;IACH,UAAU,CACR,YAAiC,EACjC,EAAE,YAAY,GAAG,KAAK,KAAiC,EAAE;QAEzD,MAAM,QAAQ,GACZ,YAAY,CAAC,QAAQ,IAAK,YAAY,CAAC,OAAe,CAAC,IAAI,CAAC;QAC9D,IAAI,YAAY,EAAE,CAAC;YACjB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,EAAE;gBAC5B,QAAQ,EAAE,KAAK;gBACf,QAAQ,EAAE,IAAI;aACf,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QAED,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI;YACrD,QAAQ,EAAE,EAAc;YACxB,QAAQ,EAAE,EAAc;SACzB,CAAC;QAEF,IAAI,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1C,qDAAqD;YACrD,MAAM,MAAM,GACV,QAAQ,IAAI,YAAY,CAAC,OAAO;gBAC9B,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,iBAAiB;gBAC/C,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,EAAG,CAAC,CAAC,eAAe;YAC/C,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACtC,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;IAC/C,CAAC;IAED;;;OAGG;IACH,kBAAkB,CAAC,SAAkB;QACnC,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QACxD,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;OAGG;IACH,qBAAqB;QACnB,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QACxD,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM;QACJ,MAAM,IAAI,GAAmB;YAC3B,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,SAAS,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;SACzD,CAAC;QACF,IAAI,OAAO,IAAI,CAAC,SAAS,KAAK,WAAW,EAAE,CAAC;YAC1C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAClC,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAjPD,gCAiPC"}
1
+ {"version":3,"file":"runContext.js","sourceRoot":"","sources":["../src/runContext.ts"],"names":[],"mappings":";;;;;;AACA,yDAA8B;AAE9B,sCAAgC;AAShC,MAAM,4BAA4B,GAAG,IAAI,GAAG,CAAC;IAC3C,UAAU;IACV,sBAAsB;CACvB,CAAC,CAAC;AAEH,SAAS,6BAA6B,CAAC,QAAgB;IACrD,IAAI,CAAC,4BAA4B,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QAChD,OAAO,CAAC,QAAQ,CAAC,CAAC;IACpB,CAAC;IAED,OAAO,QAAQ,KAAK,UAAU;QAC5B,CAAC,CAAC,CAAC,UAAU,EAAE,sBAAsB,CAAC;QACtC,CAAC,CAAC,CAAC,sBAAsB,EAAE,UAAU,CAAC,CAAC;AAC3C,CAAC;AAED,SAAS,iBAAiB,CACxB,OAAmC,EACnC,QAAoC;IAEpC,IAAI,OAAO,KAAK,IAAI,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QAC1C,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1D,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7D,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,WAAW,EAAE,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;AAChE,CAAC;AAED,SAAS,qBAAqB,CAC5B,OAAuB,EACvB,QAAwB;IAExB,IAAI,OAAO,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;QAC9B,OAAO,OAAO,CAAC,QAAQ,CAAC;IAC1B,CAAC;IAED,MAAM,MAAM,GACV,OAAO,CAAC,QAAQ,IAAI,QAAQ,CAAC,QAAQ;QACnC,CAAC,CAAC,EAAE,GAAG,QAAQ,CAAC,QAAQ,EAAE,GAAG,OAAO,CAAC,QAAQ,EAAE;QAC/C,CAAC,CAAC,SAAS,CAAC;IAChB,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QACpC,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YACtC,IACE,CAAC,OAAO,CAAC,QAAQ;gBACjB,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,EAC/D,CAAC;gBACD,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC;YACxB,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;AAC7D,CAAC;AAED,SAAS,wBAAwB,CAC/B,OAAuB,EACvB,QAAwB;IAExB,IAAI,OAAO,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;QAC9B,OAAO,OAAO,CAAC,mBAAmB,CAAC;IACrC,CAAC;IACD,OAAO,OAAO,CAAC,mBAAmB,IAAI,QAAQ,CAAC,mBAAmB,CAAC;AACrE,CAAC;AAED,SAAS,oBAAoB,CAC3B,OAAuB,EACvB,QAAwB;IAExB,MAAM,cAAc,GAAG,qBAAqB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAChE,MAAM,mBAAmB,GAAG,wBAAwB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACxE,OAAO;QACL,QAAQ,EAAE,iBAAiB,CAAC,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC;QAChE,QAAQ,EAAE,iBAAiB,CAAC,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC;QAChE,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvD,GAAG,CAAC,mBAAmB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,mBAAmB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACtE,CAAC;AACJ,CAAC;AASD;;GAEG;AACH,MAAa,UAAU;IACrB;;OAEG;IACH,OAAO,CAAW;IAElB;;OAEG;IACH,KAAK,CAAQ;IAEb;;OAEG;IACH,SAAS,CAAW;IAEpB;;OAEG;IACH,UAAU,CAA8B;IAExC,YAAY,UAAoB,EAAc;QAC5C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,KAAK,GAAG,IAAI,aAAK,EAAE,CAAC;QACzB,IAAI,CAAC,UAAU,GAAG,IAAI,GAAG,EAAE,CAAC;IAC9B,CAAC;IAED;;;;OAIG;IACO,WAAW;QACnB,OAAO,IAAI,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC;IAED;;;OAGG;IACO,iBAAiB,CACzB,MAAe;QAEf,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC9B,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QAC1B,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QACpC,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;;OAKG;IACH,iBAAiB,CAAC,SAAyC;QACzD,IAAI,CAAC,UAAU,GAAG,IAAI,GAAG,EAAE,CAAC;QAC5B,KAAK,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;YAC7D,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,eAAe,CAAC,SAAyC;QACvD,KAAK,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;YAC7D,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IAED;;;;;;OAMG;IACH,mBAAmB,CAAC,QAAgB,EAAE,MAAc;QAClD,KAAK,MAAM,aAAa,IAAI,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC/D,IAAI,OAAO,aAAa,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,KAAK,QAAQ,EAAE,CAAC;gBACzD,OAAO,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YACxC,CAAC;QACH,CAAC;QAED,KAAK,MAAM,aAAa,IAAI,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC/D,IAAI,aAAa,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;gBACpC,OAAO,aAAa,CAAC,mBAAmB,CAAC;YAC3C,CAAC;QACH,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,UAAU,CAAC,YAAiC;QAC1C,IAAI,QAAQ,IAAI,YAAY,CAAC,OAAO,EAAE,CAAC;YACrC,OAAO,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC;QACrC,CAAC;QAED,MAAM,YAAY,GAAG,YAAY,CAAC,OAAO,CAAC,YAE7B,CAAC;QACd,OAAO,CACL,YAAY,CAAC,OAAO,CAAC,EAAE,IAAI,YAAY,EAAE,MAAM,IAAI,YAAY,EAAE,EAAE,IAAI,EAAE,CAC1E,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACH,cAAc,CAAC,QAA8C;QAC3D,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAC;QACtC,MAAM,eAAe,GAAG,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QAC3D,MAAM,oBAAoB,GAAG,eAAe,CAAC,IAAI,CAC/C,CAAC,aAAa,EAAE,EAAE,CAAC,aAAa,CAAC,QAAQ,KAAK,IAAI,CACnD,CAAC;QACF,MAAM,qBAAqB,GAAG,eAAe,CAAC,IAAI,CAChD,CAAC,aAAa,EAAE,EAAE,CAAC,aAAa,CAAC,QAAQ,KAAK,IAAI,CACnD,CAAC;QAEF,IAAI,oBAAoB,IAAI,qBAAqB,EAAE,CAAC;YAClD,gBAAM,CAAC,IAAI,CACT,uFAAuF,CACxF,CAAC;YACF,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,oBAAoB,EAAE,CAAC;YACzB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,qBAAqB,EAAE,CAAC;YAC1B,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,sBAAsB,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,EAAE,CACpE,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC;YACnC,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC;YACzC,CAAC,CAAC,KAAK,CACV,CAAC;QACF,MAAM,uBAAuB,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,EAAE,CACrE,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC;YACnC,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC;YACzC,CAAC,CAAC,KAAK,CACV,CAAC;QAEF,IAAI,sBAAsB,IAAI,uBAAuB,EAAE,CAAC;YACtD,gBAAM,CAAC,IAAI,CACT,aAAa,MAAM,4EAA4E,CAChG,CAAC;YACF,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,sBAAsB,EAAE,CAAC;YAC3B,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,uBAAuB,EAAE,CAAC;YAC5B,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;;;;OAKG;IACH,WAAW,CACT,YAAiC,EACjC,EAAE,aAAa,GAAG,KAAK,KAAkC,EAAE;QAE3D,MAAM,QAAQ,GACZ,YAAY,CAAC,QAAQ,IAAK,YAAY,CAAC,OAAe,CAAC,IAAI,CAAC;QAC9D,MAAM,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC;QAC1D,IAAI,aAAa,EAAE,CAAC;YAClB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,WAAW,EAAE;gBAC/B,QAAQ,EAAE,IAAI;gBACd,QAAQ,EAAE,EAAE;aACb,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QAED,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI;YACxD,QAAQ,EAAE,EAAE;YACZ,QAAQ,EAAE,EAAE;SACb,CAAC;QACF,IAAI,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1C,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC;QAC7D,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IAClD,CAAC;IAED;;;;OAIG;IACH,UAAU,CACR,YAAiC,EACjC,EACE,YAAY,GAAG,KAAK,EACpB,OAAO,MACyC,EAAE;QAEpD,MAAM,QAAQ,GACZ,YAAY,CAAC,QAAQ,IAAK,YAAY,CAAC,OAAe,CAAC,IAAI,CAAC;QAC9D,MAAM,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC;QAC1D,IAAI,YAAY,EAAE,CAAC;YACjB,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;YAC7C,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,WAAW,EAAE;gBAC/B,QAAQ,EAAE,KAAK;gBACf,QAAQ,EAAE,IAAI;gBACd,GAAG,CAAC,OAAO,KAAK,SAAS;oBACvB,CAAC,CAAC;wBACE,QAAQ,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE;wBAC/B,mBAAmB,EAAE,OAAO;qBAC7B;oBACH,CAAC,CAAC,EAAE,CAAC;aACR,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QAED,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI;YACxD,QAAQ,EAAE,EAAc;YACxB,QAAQ,EAAE,EAAc;SACzB,CAAC;QAEF,IAAI,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;YAC7C,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACpC,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;gBAC1B,aAAa,CAAC,QAAQ,GAAG,aAAa,CAAC,QAAQ,IAAI,EAAE,CAAC;gBACtD,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC;YAC3C,CAAC;QACH,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IAClD,CAAC;IAED;;;OAGG;IACH,kBAAkB,CAAC,SAAkB;QACnC,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QACxD,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;OAGG;IACH,qBAAqB;QACnB,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QACxD,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM;QACJ,MAAM,IAAI,GAAmB;YAC3B,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,SAAS,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;SACzD,CAAC;QACF,IAAI,OAAO,IAAI,CAAC,SAAS,KAAK,WAAW,EAAE,CAAC;YAC1C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAClC,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,mBAAmB,CAAC,QAAgB;QAClC,OAAO,6BAA6B,CAAC,QAAQ,CAAC;aAC3C,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;aAClD,MAAM,CAAC,CAAC,QAAQ,EAA8B,EAAE,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC;IAC9E,CAAC;IAED,sBAAsB,CAAC,QAAgB;QACrC,OAAO,CACL,6BAA6B,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CACzD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAC/B,IAAI,QAAQ,CACd,CAAC;IACJ,CAAC;IAED,kBAAkB,CAAC,QAAgB,EAAE,QAAwB;QAC3D,MAAM,UAAU,GAAG,6BAA6B,CAAC,QAAQ,CAAC,CAAC;QAC3D,MAAM,eAAe,GAAG,UAAU;aAC/B,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;aAClD,MAAM,CAAC,CAAC,QAAQ,EAA8B,EAAE,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC;QAC5E,MAAM,cAAc,GAAG,eAAe,CAAC,MAAM,CAC3C,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE,CACpB,OAAO,CAAC,CAAC,CAAC,oBAAoB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,EAC9D,SAAS,CACV,CAAC;QACF,MAAM,MAAM,GAAG,cAAc;YAC3B,CAAC,CAAC,oBAAoB,CAAC,cAAc,EAAE,QAAQ,CAAC;YAChD,CAAC,CAAC,QAAQ,CAAC;QACb,MAAM,SAAS,GACb,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAC9D,QAAQ,CAAC;QAEX,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QACvC,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACnC,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;gBAC5B,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YACpC,CAAC;QACH,CAAC;IACH,CAAC;CACF;AA7TD,gCA6TC"}
@@ -1,5 +1,61 @@
1
1
  import logger from "./logger.mjs";
2
2
  import { Usage } from "./usage.mjs";
3
+ const COMPUTER_APPROVAL_TOOL_NAMES = new Set([
4
+ 'computer',
5
+ 'computer_use_preview',
6
+ ]);
7
+ function getApprovalToolNameCandidates(toolName) {
8
+ if (!COMPUTER_APPROVAL_TOOL_NAMES.has(toolName)) {
9
+ return [toolName];
10
+ }
11
+ return toolName === 'computer'
12
+ ? ['computer', 'computer_use_preview']
13
+ : ['computer_use_preview', 'computer'];
14
+ }
15
+ function mergeApprovalList(current, incoming) {
16
+ if (current === true || incoming === true) {
17
+ return true;
18
+ }
19
+ const currentList = Array.isArray(current) ? current : [];
20
+ const incomingList = Array.isArray(incoming) ? incoming : [];
21
+ return Array.from(new Set([...currentList, ...incomingList]));
22
+ }
23
+ function mergeApprovalMessages(current, incoming) {
24
+ if (current.rejected === true) {
25
+ return current.messages;
26
+ }
27
+ const merged = current.messages || incoming.messages
28
+ ? { ...incoming.messages, ...current.messages }
29
+ : undefined;
30
+ if (!merged) {
31
+ return undefined;
32
+ }
33
+ if (Array.isArray(current.rejected)) {
34
+ for (const callId of current.rejected) {
35
+ if (!current.messages ||
36
+ !Object.prototype.hasOwnProperty.call(current.messages, callId)) {
37
+ delete merged[callId];
38
+ }
39
+ }
40
+ }
41
+ return Object.keys(merged).length > 0 ? merged : undefined;
42
+ }
43
+ function mergeStickyRejectMessage(current, incoming) {
44
+ if (current.rejected === true) {
45
+ return current.stickyRejectMessage;
46
+ }
47
+ return current.stickyRejectMessage ?? incoming.stickyRejectMessage;
48
+ }
49
+ function mergeApprovalRecords(current, incoming) {
50
+ const mergedMessages = mergeApprovalMessages(current, incoming);
51
+ const stickyRejectMessage = mergeStickyRejectMessage(current, incoming);
52
+ return {
53
+ approved: mergeApprovalList(current.approved, incoming.approved),
54
+ rejected: mergeApprovalList(current.rejected, incoming.rejected),
55
+ ...(mergedMessages ? { messages: mergedMessages } : {}),
56
+ ...(stickyRejectMessage !== undefined ? { stickyRejectMessage } : {}),
57
+ };
58
+ }
3
59
  /**
4
60
  * A context object that is passed to the `Runner.run()` method.
5
61
  */
@@ -50,7 +106,10 @@ export class RunContext {
50
106
  * @param approvals - The approvals map to rebuild.
51
107
  */
52
108
  _rebuildApprovals(approvals) {
53
- this.#approvals = new Map(Object.entries(approvals));
109
+ this.#approvals = new Map();
110
+ for (const [toolName, approval] of Object.entries(approvals)) {
111
+ this.#setApprovalRecord(toolName, approval);
112
+ }
54
113
  }
55
114
  /**
56
115
  * Merge approvals from a serialized state without discarding existing entries.
@@ -59,25 +118,36 @@ export class RunContext {
59
118
  * @param approvals - The approvals map to merge.
60
119
  */
61
120
  _mergeApprovals(approvals) {
62
- const mergeApproval = (current, incoming) => {
63
- if (current === true || incoming === true) {
64
- return true;
65
- }
66
- const currentList = Array.isArray(current) ? current : [];
67
- const incomingList = Array.isArray(incoming) ? incoming : [];
68
- return Array.from(new Set([...currentList, ...incomingList]));
69
- };
70
121
  for (const [toolName, incoming] of Object.entries(approvals)) {
71
- const existing = this.#approvals.get(toolName);
72
- if (!existing) {
73
- this.#approvals.set(toolName, incoming);
74
- continue;
122
+ this.#setApprovalRecord(toolName, incoming);
123
+ }
124
+ }
125
+ /**
126
+ * Retrieve the caller-provided rejection message for a specific tool call.
127
+ *
128
+ * @param toolName - The name of the tool.
129
+ * @param callId - The call ID of the tool invocation.
130
+ * @returns The message string if one was provided, `undefined` otherwise.
131
+ */
132
+ getRejectionMessage(toolName, callId) {
133
+ for (const approvalEntry of this.#getApprovalEntries(toolName)) {
134
+ if (typeof approvalEntry.messages?.[callId] === 'string') {
135
+ return approvalEntry.messages[callId];
136
+ }
137
+ }
138
+ for (const approvalEntry of this.#getApprovalEntries(toolName)) {
139
+ if (approvalEntry.rejected === true) {
140
+ return approvalEntry.stickyRejectMessage;
75
141
  }
76
- this.#approvals.set(toolName, {
77
- approved: mergeApproval(existing.approved, incoming.approved),
78
- rejected: mergeApproval(existing.rejected, incoming.rejected),
79
- });
80
142
  }
143
+ return undefined;
144
+ }
145
+ #getCallId(approvalItem) {
146
+ if ('callId' in approvalItem.rawItem) {
147
+ return approvalItem.rawItem.callId;
148
+ }
149
+ const providerData = approvalItem.rawItem.providerData;
150
+ return (approvalItem.rawItem.id ?? providerData?.itemId ?? providerData?.id ?? '');
81
151
  }
82
152
  /**
83
153
  * Check if a tool call has been approved.
@@ -87,23 +157,25 @@ export class RunContext {
87
157
  */
88
158
  isToolApproved(approval) {
89
159
  const { toolName, callId } = approval;
90
- const approvalEntry = this.#approvals.get(toolName);
91
- if (approvalEntry?.approved === true && approvalEntry.rejected === true) {
160
+ const approvalEntries = this.#getApprovalEntries(toolName);
161
+ const hasPermanentApproval = approvalEntries.some((approvalEntry) => approvalEntry.approved === true);
162
+ const hasPermanentRejection = approvalEntries.some((approvalEntry) => approvalEntry.rejected === true);
163
+ if (hasPermanentApproval && hasPermanentRejection) {
92
164
  logger.warn('Tool is permanently approved and rejected at the same time. Approval takes precedence');
93
165
  return true;
94
166
  }
95
- if (approvalEntry?.approved === true) {
167
+ if (hasPermanentApproval) {
96
168
  return true;
97
169
  }
98
- if (approvalEntry?.rejected === true) {
170
+ if (hasPermanentRejection) {
99
171
  return false;
100
172
  }
101
- const individualCallApproval = Array.isArray(approvalEntry?.approved)
173
+ const individualCallApproval = approvalEntries.some((approvalEntry) => Array.isArray(approvalEntry.approved)
102
174
  ? approvalEntry.approved.includes(callId)
103
- : false;
104
- const individualCallRejection = Array.isArray(approvalEntry?.rejected)
175
+ : false);
176
+ const individualCallRejection = approvalEntries.some((approvalEntry) => Array.isArray(approvalEntry.rejected)
105
177
  ? approvalEntry.rejected.includes(callId)
106
- : false;
178
+ : false);
107
179
  if (individualCallApproval && individualCallRejection) {
108
180
  logger.warn(`Tool call ${callId} is both approved and rejected at the same time. Approval takes precedence`);
109
181
  return true;
@@ -124,52 +196,58 @@ export class RunContext {
124
196
  */
125
197
  approveTool(approvalItem, { alwaysApprove = false } = {}) {
126
198
  const toolName = approvalItem.toolName ?? approvalItem.rawItem.name;
199
+ const approvalKey = this.#getApprovalStorageKey(toolName);
127
200
  if (alwaysApprove) {
128
- this.#approvals.set(toolName, {
201
+ this.#approvals.set(approvalKey, {
129
202
  approved: true,
130
203
  rejected: [],
131
204
  });
132
205
  return;
133
206
  }
134
- const approvalEntry = this.#approvals.get(toolName) ?? {
207
+ const approvalEntry = this.#approvals.get(approvalKey) ?? {
135
208
  approved: [],
136
209
  rejected: [],
137
210
  };
138
211
  if (Array.isArray(approvalEntry.approved)) {
139
- // function tool has call_id, hosted tool call has id
140
- const callId = 'callId' in approvalItem.rawItem
141
- ? approvalItem.rawItem.callId // function tools
142
- : approvalItem.rawItem.id; // hosted tools
143
- approvalEntry.approved.push(callId);
212
+ approvalEntry.approved.push(this.#getCallId(approvalItem));
144
213
  }
145
- this.#approvals.set(toolName, approvalEntry);
214
+ this.#approvals.set(approvalKey, approvalEntry);
146
215
  }
147
216
  /**
148
217
  * Reject a tool call.
149
218
  *
150
219
  * @param approvalItem - The tool approval item to reject.
151
220
  */
152
- rejectTool(approvalItem, { alwaysReject = false } = {}) {
221
+ rejectTool(approvalItem, { alwaysReject = false, message, } = {}) {
153
222
  const toolName = approvalItem.toolName ?? approvalItem.rawItem.name;
223
+ const approvalKey = this.#getApprovalStorageKey(toolName);
154
224
  if (alwaysReject) {
155
- this.#approvals.set(toolName, {
225
+ const callId = this.#getCallId(approvalItem);
226
+ this.#approvals.set(approvalKey, {
156
227
  approved: false,
157
228
  rejected: true,
229
+ ...(message !== undefined
230
+ ? {
231
+ messages: { [callId]: message },
232
+ stickyRejectMessage: message,
233
+ }
234
+ : {}),
158
235
  });
159
236
  return;
160
237
  }
161
- const approvalEntry = this.#approvals.get(toolName) ?? {
238
+ const approvalEntry = this.#approvals.get(approvalKey) ?? {
162
239
  approved: [],
163
240
  rejected: [],
164
241
  };
165
242
  if (Array.isArray(approvalEntry.rejected)) {
166
- // function tool has call_id, hosted tool call has id
167
- const callId = 'callId' in approvalItem.rawItem
168
- ? approvalItem.rawItem.callId // function tools
169
- : approvalItem.rawItem.id; // hosted tools
243
+ const callId = this.#getCallId(approvalItem);
170
244
  approvalEntry.rejected.push(callId);
245
+ if (message !== undefined) {
246
+ approvalEntry.messages = approvalEntry.messages ?? {};
247
+ approvalEntry.messages[callId] = message;
248
+ }
171
249
  }
172
- this.#approvals.set(toolName, approvalEntry);
250
+ this.#approvals.set(approvalKey, approvalEntry);
173
251
  }
174
252
  /**
175
253
  * Creates a child context that shares approvals and usage, with tool input set.
@@ -200,5 +278,31 @@ export class RunContext {
200
278
  }
201
279
  return json;
202
280
  }
281
+ #getApprovalEntries(toolName) {
282
+ return getApprovalToolNameCandidates(toolName)
283
+ .map((candidate) => this.#approvals.get(candidate))
284
+ .filter((approval) => approval !== undefined);
285
+ }
286
+ #getApprovalStorageKey(toolName) {
287
+ return (getApprovalToolNameCandidates(toolName).find((candidate) => this.#approvals.has(candidate)) ?? toolName);
288
+ }
289
+ #setApprovalRecord(toolName, incoming) {
290
+ const candidates = getApprovalToolNameCandidates(toolName);
291
+ const existingEntries = candidates
292
+ .map((candidate) => this.#approvals.get(candidate))
293
+ .filter((approval) => approval !== undefined);
294
+ const mergedExisting = existingEntries.reduce((current, approval) => current ? mergeApprovalRecords(current, approval) : approval, undefined);
295
+ const merged = mergedExisting
296
+ ? mergeApprovalRecords(mergedExisting, incoming)
297
+ : incoming;
298
+ const targetKey = candidates.find((candidate) => this.#approvals.has(candidate)) ??
299
+ toolName;
300
+ this.#approvals.set(targetKey, merged);
301
+ for (const candidate of candidates) {
302
+ if (candidate !== targetKey) {
303
+ this.#approvals.delete(candidate);
304
+ }
305
+ }
306
+ }
203
307
  }
204
308
  //# sourceMappingURL=runContext.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"runContext.mjs","sourceRoot":"","sources":["../src/runContext.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runContext.mjs","sourceRoot":"","sources":["../src/runContext.ts"],"names":[],"mappings":"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"}