@ai-sdk/harness-deepagents 0.0.0-6b196531-20260710185421

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.
@@ -0,0 +1,536 @@
1
+ lockfileVersion: '9.0'
2
+
3
+ settings:
4
+ autoInstallPeers: true
5
+ excludeLinksFromLockfile: false
6
+
7
+ importers:
8
+
9
+ .:
10
+ dependencies:
11
+ '@langchain/anthropic':
12
+ specifier: ^1.0.0
13
+ version: 1.4.1(@langchain/core@1.1.49(openai@6.43.0(ws@8.21.0)(zod@4.4.3))(ws@8.21.0))
14
+ '@langchain/core':
15
+ specifier: ^1.1.44
16
+ version: 1.1.49(openai@6.43.0(ws@8.21.0)(zod@4.4.3))(ws@8.21.0)
17
+ '@langchain/langgraph':
18
+ specifier: ^1.3.0
19
+ version: 1.4.2(@langchain/core@1.1.49(openai@6.43.0(ws@8.21.0)(zod@4.4.3))(ws@8.21.0))(zod@4.4.3)
20
+ deepagents:
21
+ specifier: 1.10.2
22
+ version: 1.10.2(langsmith@0.7.10(openai@6.43.0(ws@8.21.0)(zod@4.4.3))(ws@8.21.0))(openai@6.43.0(ws@8.21.0)(zod@4.4.3))(ws@8.21.0)
23
+ ws:
24
+ specifier: 8.21.0
25
+ version: 8.21.0
26
+ zod:
27
+ specifier: ^4.3.6
28
+ version: 4.4.3
29
+
30
+ packages:
31
+
32
+ '@anthropic-ai/sdk@0.103.0':
33
+ resolution: {integrity: sha512-1uG7RNgoHTUxzOXqSCODKt0UTVlxWiHk/2Tt2/uQJiPW7XzBeKVuJyd3Aw6T3LPyvZV/jDTnPLX7SaM70WLLjA==}
34
+ hasBin: true
35
+ peerDependencies:
36
+ zod: ^3.25.0 || ^4.0.0
37
+ peerDependenciesMeta:
38
+ zod:
39
+ optional: true
40
+
41
+ '@babel/runtime@7.29.7':
42
+ resolution: {integrity: sha512-Nq8OhGWiZIZGV6hLHoyAKLLcJihP/xFeBMGJoUrxTX2psI8dCifzLhZISFb+VWS3wFMRDmCGw5R+dOySCqPLhw==}
43
+ engines: {node: '>=6.9.0'}
44
+
45
+ '@cfworker/json-schema@4.1.1':
46
+ resolution: {integrity: sha512-gAmrUZSGtKc3AiBL71iNWxDsyUC5uMaKKGdvzYsBoTW/xi42JQHl7eKV2OYzCUqvc+D2RCcf7EXY2iCyFIk6og==}
47
+
48
+ '@langchain/anthropic@1.4.1':
49
+ resolution: {integrity: sha512-h3b6hxThcfh0WdmpuWr+qBi74MN+0BpNI/4H681vwXxbD3hLr2qMYN6ghqcPQhCxGJjg8ufs85qu2/ldSWonYQ==}
50
+ engines: {node: '>=20'}
51
+ peerDependencies:
52
+ '@langchain/core': ^1.1.49
53
+
54
+ '@langchain/core@1.1.49':
55
+ resolution: {integrity: sha512-7wkN3Qv/qZqsY0p3h48CNu6E6y5GMYatYxj+JrX4uVNBiqIVQm1Z528QrmayJWVW9SQTQicqRNoyTCzl+K9F8Q==}
56
+ engines: {node: '>=20'}
57
+
58
+ '@langchain/langgraph-checkpoint@1.1.1':
59
+ resolution: {integrity: sha512-gHqhO6e2dyZ7TTfyaFy25yjcRsavURc9XMGT4q+LUBTc0hT4JxKe3qvrMX2OFTzW8W/0kjV59haHmSRFZIGkvg==}
60
+ engines: {node: '>=18'}
61
+ peerDependencies:
62
+ '@langchain/core': ^1.1.48
63
+
64
+ '@langchain/langgraph-sdk@1.9.22':
65
+ resolution: {integrity: sha512-DBKs9R2SGivlGqK/ZRTOUu39Q7Z+yRrG4PoTYLIWn7pqrLNhyZ4yZI/tEEEi/J0inpCuKfg/eydSwnRmPV/q3w==}
66
+ peerDependencies:
67
+ '@langchain/core': ^1.1.48
68
+ react: ^18 || ^19
69
+ react-dom: ^18 || ^19
70
+ svelte: ^4.0.0 || ^5.0.0
71
+ vue: ^3.0.0
72
+ peerDependenciesMeta:
73
+ react:
74
+ optional: true
75
+ react-dom:
76
+ optional: true
77
+ svelte:
78
+ optional: true
79
+ vue:
80
+ optional: true
81
+
82
+ '@langchain/langgraph@1.4.2':
83
+ resolution: {integrity: sha512-ivhYwbEKW4i/x2JfHcrTrToEE9EXZnwr4dPj7GC5974xEYeLgHYzii3GAYo1kgU5A0ZAd7rIxTpMOfcbycxliQ==}
84
+ engines: {node: '>=18'}
85
+ peerDependencies:
86
+ '@langchain/core': ^1.1.48
87
+ zod: ^3.25.32 || ^4.2.0
88
+ zod-to-json-schema: ^3.x
89
+ peerDependenciesMeta:
90
+ zod-to-json-schema:
91
+ optional: true
92
+
93
+ '@langchain/protocol@0.0.16':
94
+ resolution: {integrity: sha512-ws+J7MaHyhO5dG7f0vdyHQiUn9hoCnki0f3crJPa4MCTGzcRC39jYSCghyrGtBPYQnZbUQiGyRVpW3z3M8IpJg==}
95
+
96
+ '@nodelib/fs.scandir@2.1.5':
97
+ resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
98
+ engines: {node: '>= 8'}
99
+
100
+ '@nodelib/fs.stat@2.0.5':
101
+ resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
102
+ engines: {node: '>= 8'}
103
+
104
+ '@nodelib/fs.walk@1.2.8':
105
+ resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
106
+ engines: {node: '>= 8'}
107
+
108
+ '@stablelib/base64@1.0.1':
109
+ resolution: {integrity: sha512-1bnPQqSxSuc3Ii6MhBysoWCg58j97aUjuCSZrGSmDxNqtytIi0k8utUenAwTZN4V5mXXYGsVUI9zeBqy+jBOSQ==}
110
+
111
+ '@standard-schema/spec@1.1.0':
112
+ resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==}
113
+
114
+ '@types/json-schema@7.0.15':
115
+ resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==}
116
+
117
+ base64-js@1.5.1:
118
+ resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==}
119
+
120
+ braces@3.0.3:
121
+ resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==}
122
+ engines: {node: '>=8'}
123
+
124
+ deepagents@1.10.2:
125
+ resolution: {integrity: sha512-Ptp+t/FgIvMhDbVK0ml3IHcNx3gog3Cbqx+s88H4Hz8ieHG7svuR+/4Mawc/g14FY7mCls7Y8gCcrGb0i3Mi4w==}
126
+ peerDependencies:
127
+ langsmith: '>=0.6.0 <1.0.0'
128
+
129
+ eventemitter3@4.0.7:
130
+ resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==}
131
+
132
+ eventemitter3@5.0.4:
133
+ resolution: {integrity: sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==}
134
+
135
+ fast-glob@3.3.3:
136
+ resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==}
137
+ engines: {node: '>=8.6.0'}
138
+
139
+ fast-sha256@1.3.0:
140
+ resolution: {integrity: sha512-n11RGP/lrWEFI/bWdygLxhI+pVeo1ZYIVwvvPkW7azl/rOy+F3HYRZ2K5zeE9mmkhQppyv9sQFx0JM9UabnpPQ==}
141
+
142
+ fastq@1.20.1:
143
+ resolution: {integrity: sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==}
144
+
145
+ fill-range@7.1.1:
146
+ resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==}
147
+ engines: {node: '>=8'}
148
+
149
+ glob-parent@5.1.2:
150
+ resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
151
+ engines: {node: '>= 6'}
152
+
153
+ is-extglob@2.1.1:
154
+ resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
155
+ engines: {node: '>=0.10.0'}
156
+
157
+ is-glob@4.0.3:
158
+ resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
159
+ engines: {node: '>=0.10.0'}
160
+
161
+ is-network-error@1.3.2:
162
+ resolution: {integrity: sha512-PhBY86zaxNZUuWP6h13Vu5oFe0XY6/UlKzQnYFELzGVHygP3MxmvTfYSG7GN3aIab/iWudSMgjSnG9Dq+nHrgA==}
163
+ engines: {node: '>=16'}
164
+
165
+ is-number@7.0.0:
166
+ resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
167
+ engines: {node: '>=0.12.0'}
168
+
169
+ js-tiktoken@1.0.21:
170
+ resolution: {integrity: sha512-biOj/6M5qdgx5TKjDnFT1ymSpM5tbd3ylwDtrQvFQSu0Z7bBYko2dF+W/aUkXUPuk6IVpRxk/3Q2sHOzGlS36g==}
171
+
172
+ json-schema-to-ts@3.1.1:
173
+ resolution: {integrity: sha512-+DWg8jCJG2TEnpy7kOm/7/AxaYoaRbjVB4LFZLySZlWn8exGs3A4OLJR966cVvU26N7X9TWxl+Jsw7dzAqKT6g==}
174
+ engines: {node: '>=16'}
175
+
176
+ langchain@1.4.5:
177
+ resolution: {integrity: sha512-P625jmIg91XwZoll6H3tyOLux1wQPjSptdGdiDdSrZVyUmeWKwzJu0+mmJjluNRCQVgzqCZzy1RWkz9p+vb+3A==}
178
+ engines: {node: '>=20'}
179
+ peerDependencies:
180
+ '@langchain/core': ^1.1.49
181
+
182
+ langsmith@0.7.10:
183
+ resolution: {integrity: sha512-3EjJx9zGMzqF60eT9JADHF+Hn/T5ayTgEVp4d3M5yvJIJi3q6seX0p5jT8ecBCWBi1kIvvssWrcDxfwgSier7Q==}
184
+ peerDependencies:
185
+ '@opentelemetry/api': '*'
186
+ '@opentelemetry/exporter-trace-otlp-proto': '*'
187
+ '@opentelemetry/sdk-trace-base': '*'
188
+ openai: '*'
189
+ ws: '>=7'
190
+ peerDependenciesMeta:
191
+ '@opentelemetry/api':
192
+ optional: true
193
+ '@opentelemetry/exporter-trace-otlp-proto':
194
+ optional: true
195
+ '@opentelemetry/sdk-trace-base':
196
+ optional: true
197
+ openai:
198
+ optional: true
199
+ ws:
200
+ optional: true
201
+
202
+ merge2@1.4.1:
203
+ resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
204
+ engines: {node: '>= 8'}
205
+
206
+ micromatch@4.0.8:
207
+ resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==}
208
+ engines: {node: '>=8.6'}
209
+
210
+ mustache@4.2.0:
211
+ resolution: {integrity: sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==}
212
+ hasBin: true
213
+
214
+ openai@6.43.0:
215
+ resolution: {integrity: sha512-wVjioGjbnAZycj5mmkFVxbBxLEp+NkKpdMscCYP9LTbq+nbf1WTMVp+ovmD35jgyco4tldWZJkcqdmlh3O9yHQ==}
216
+ peerDependencies:
217
+ ws: ^8.18.0
218
+ zod: ^3.25 || ^4.0
219
+ peerDependenciesMeta:
220
+ ws:
221
+ optional: true
222
+ zod:
223
+ optional: true
224
+
225
+ p-finally@1.0.0:
226
+ resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==}
227
+ engines: {node: '>=4'}
228
+
229
+ p-queue@6.6.2:
230
+ resolution: {integrity: sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==}
231
+ engines: {node: '>=8'}
232
+
233
+ p-queue@9.3.0:
234
+ resolution: {integrity: sha512-7NED7xhQ74Ngp4JP/2e0VZHp7vSWfJfqeiR92jPgxsz6m0Se4P03YoTKa9dDXyZ3r6P616gUXttrB6nnHYKang==}
235
+ engines: {node: '>=20'}
236
+
237
+ p-retry@7.1.1:
238
+ resolution: {integrity: sha512-J5ApzjyRkkf601HpEeykoiCvzHQjWxPAHhyjFcEUP2SWq0+35NKh8TLhpLw+Dkq5TZBFvUM6UigdE9hIVYTl5w==}
239
+ engines: {node: '>=20'}
240
+
241
+ p-timeout@3.2.0:
242
+ resolution: {integrity: sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==}
243
+ engines: {node: '>=8'}
244
+
245
+ p-timeout@7.0.1:
246
+ resolution: {integrity: sha512-AxTM2wDGORHGEkPCt8yqxOTMgpfbEHqF51f/5fJCmwFC3C/zNcGT63SymH2ttOAaiIws2zVg4+izQCjrakcwHg==}
247
+ engines: {node: '>=20'}
248
+
249
+ picomatch@2.3.2:
250
+ resolution: {integrity: sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==}
251
+ engines: {node: '>=8.6'}
252
+
253
+ queue-microtask@1.2.3:
254
+ resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
255
+
256
+ reusify@1.1.0:
257
+ resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==}
258
+ engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
259
+
260
+ run-parallel@1.2.0:
261
+ resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
262
+
263
+ standardwebhooks@1.0.0:
264
+ resolution: {integrity: sha512-BbHGOQK9olHPMvQNHWul6MYlrRTAOKn03rOe4A8O3CLWhNf4YHBqq2HJKKC+sfqpxiBY52pNeesD6jIiLDz8jg==}
265
+
266
+ to-regex-range@5.0.1:
267
+ resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
268
+ engines: {node: '>=8.0'}
269
+
270
+ ts-algebra@2.0.0:
271
+ resolution: {integrity: sha512-FPAhNPFMrkwz76P7cdjdmiShwMynZYN6SgOujD1urY4oNm80Ou9oMdmbR45LotcKOXoy7wSmHkRFE6Mxbrhefw==}
272
+
273
+ ws@8.21.0:
274
+ resolution: {integrity: sha512-Vsp28b7DRcimFQvrqu2Wek3z1iYxDCWqHYB8Qsnk/S4RfaCQzPGPyBNuVjJV3cd6UiKtUtp6sNM77gWvzcCH+g==}
275
+ engines: {node: '>=10.0.0'}
276
+ peerDependencies:
277
+ bufferutil: ^4.0.1
278
+ utf-8-validate: '>=5.0.2'
279
+ peerDependenciesMeta:
280
+ bufferutil:
281
+ optional: true
282
+ utf-8-validate:
283
+ optional: true
284
+
285
+ yaml@2.9.0:
286
+ resolution: {integrity: sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA==}
287
+ engines: {node: '>= 14.6'}
288
+ hasBin: true
289
+
290
+ zod@4.4.3:
291
+ resolution: {integrity: sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==}
292
+
293
+ snapshots:
294
+
295
+ '@anthropic-ai/sdk@0.103.0(zod@4.4.3)':
296
+ dependencies:
297
+ json-schema-to-ts: 3.1.1
298
+ standardwebhooks: 1.0.0
299
+ optionalDependencies:
300
+ zod: 4.4.3
301
+
302
+ '@babel/runtime@7.29.7': {}
303
+
304
+ '@cfworker/json-schema@4.1.1': {}
305
+
306
+ '@langchain/anthropic@1.4.1(@langchain/core@1.1.49(openai@6.43.0(ws@8.21.0)(zod@4.4.3))(ws@8.21.0))':
307
+ dependencies:
308
+ '@anthropic-ai/sdk': 0.103.0(zod@4.4.3)
309
+ '@langchain/core': 1.1.49(openai@6.43.0(ws@8.21.0)(zod@4.4.3))(ws@8.21.0)
310
+ zod: 4.4.3
311
+
312
+ '@langchain/core@1.1.49(openai@6.43.0(ws@8.21.0)(zod@4.4.3))(ws@8.21.0)':
313
+ dependencies:
314
+ '@cfworker/json-schema': 4.1.1
315
+ '@standard-schema/spec': 1.1.0
316
+ js-tiktoken: 1.0.21
317
+ langsmith: 0.7.10(openai@6.43.0(ws@8.21.0)(zod@4.4.3))(ws@8.21.0)
318
+ mustache: 4.2.0
319
+ p-queue: 6.6.2
320
+ zod: 4.4.3
321
+ transitivePeerDependencies:
322
+ - '@opentelemetry/api'
323
+ - '@opentelemetry/exporter-trace-otlp-proto'
324
+ - '@opentelemetry/sdk-trace-base'
325
+ - openai
326
+ - ws
327
+
328
+ '@langchain/langgraph-checkpoint@1.1.1(@langchain/core@1.1.49(openai@6.43.0(ws@8.21.0)(zod@4.4.3))(ws@8.21.0))':
329
+ dependencies:
330
+ '@langchain/core': 1.1.49(openai@6.43.0(ws@8.21.0)(zod@4.4.3))(ws@8.21.0)
331
+
332
+ '@langchain/langgraph-sdk@1.9.22(@langchain/core@1.1.49(openai@6.43.0(ws@8.21.0)(zod@4.4.3))(ws@8.21.0))':
333
+ dependencies:
334
+ '@langchain/core': 1.1.49(openai@6.43.0(ws@8.21.0)(zod@4.4.3))(ws@8.21.0)
335
+ '@langchain/protocol': 0.0.16
336
+ '@types/json-schema': 7.0.15
337
+ p-queue: 9.3.0
338
+ p-retry: 7.1.1
339
+
340
+ '@langchain/langgraph@1.4.2(@langchain/core@1.1.49(openai@6.43.0(ws@8.21.0)(zod@4.4.3))(ws@8.21.0))(zod@4.4.3)':
341
+ dependencies:
342
+ '@langchain/core': 1.1.49(openai@6.43.0(ws@8.21.0)(zod@4.4.3))(ws@8.21.0)
343
+ '@langchain/langgraph-checkpoint': 1.1.1(@langchain/core@1.1.49(openai@6.43.0(ws@8.21.0)(zod@4.4.3))(ws@8.21.0))
344
+ '@langchain/langgraph-sdk': 1.9.22(@langchain/core@1.1.49(openai@6.43.0(ws@8.21.0)(zod@4.4.3))(ws@8.21.0))
345
+ '@langchain/protocol': 0.0.16
346
+ '@standard-schema/spec': 1.1.0
347
+ zod: 4.4.3
348
+ transitivePeerDependencies:
349
+ - react
350
+ - react-dom
351
+ - svelte
352
+ - vue
353
+
354
+ '@langchain/protocol@0.0.16': {}
355
+
356
+ '@nodelib/fs.scandir@2.1.5':
357
+ dependencies:
358
+ '@nodelib/fs.stat': 2.0.5
359
+ run-parallel: 1.2.0
360
+
361
+ '@nodelib/fs.stat@2.0.5': {}
362
+
363
+ '@nodelib/fs.walk@1.2.8':
364
+ dependencies:
365
+ '@nodelib/fs.scandir': 2.1.5
366
+ fastq: 1.20.1
367
+
368
+ '@stablelib/base64@1.0.1': {}
369
+
370
+ '@standard-schema/spec@1.1.0': {}
371
+
372
+ '@types/json-schema@7.0.15': {}
373
+
374
+ base64-js@1.5.1: {}
375
+
376
+ braces@3.0.3:
377
+ dependencies:
378
+ fill-range: 7.1.1
379
+
380
+ deepagents@1.10.2(langsmith@0.7.10(openai@6.43.0(ws@8.21.0)(zod@4.4.3))(ws@8.21.0))(openai@6.43.0(ws@8.21.0)(zod@4.4.3))(ws@8.21.0):
381
+ dependencies:
382
+ '@langchain/core': 1.1.49(openai@6.43.0(ws@8.21.0)(zod@4.4.3))(ws@8.21.0)
383
+ '@langchain/langgraph': 1.4.2(@langchain/core@1.1.49(openai@6.43.0(ws@8.21.0)(zod@4.4.3))(ws@8.21.0))(zod@4.4.3)
384
+ '@langchain/langgraph-sdk': 1.9.22(@langchain/core@1.1.49(openai@6.43.0(ws@8.21.0)(zod@4.4.3))(ws@8.21.0))
385
+ fast-glob: 3.3.3
386
+ langchain: 1.4.5(@langchain/core@1.1.49(openai@6.43.0(ws@8.21.0)(zod@4.4.3))(ws@8.21.0))(openai@6.43.0(ws@8.21.0)(zod@4.4.3))(ws@8.21.0)
387
+ langsmith: 0.7.10(openai@6.43.0(ws@8.21.0)(zod@4.4.3))(ws@8.21.0)
388
+ micromatch: 4.0.8
389
+ yaml: 2.9.0
390
+ zod: 4.4.3
391
+ transitivePeerDependencies:
392
+ - '@opentelemetry/api'
393
+ - '@opentelemetry/exporter-trace-otlp-proto'
394
+ - '@opentelemetry/sdk-trace-base'
395
+ - openai
396
+ - react
397
+ - react-dom
398
+ - svelte
399
+ - vue
400
+ - ws
401
+ - zod-to-json-schema
402
+
403
+ eventemitter3@4.0.7: {}
404
+
405
+ eventemitter3@5.0.4: {}
406
+
407
+ fast-glob@3.3.3:
408
+ dependencies:
409
+ '@nodelib/fs.stat': 2.0.5
410
+ '@nodelib/fs.walk': 1.2.8
411
+ glob-parent: 5.1.2
412
+ merge2: 1.4.1
413
+ micromatch: 4.0.8
414
+
415
+ fast-sha256@1.3.0: {}
416
+
417
+ fastq@1.20.1:
418
+ dependencies:
419
+ reusify: 1.1.0
420
+
421
+ fill-range@7.1.1:
422
+ dependencies:
423
+ to-regex-range: 5.0.1
424
+
425
+ glob-parent@5.1.2:
426
+ dependencies:
427
+ is-glob: 4.0.3
428
+
429
+ is-extglob@2.1.1: {}
430
+
431
+ is-glob@4.0.3:
432
+ dependencies:
433
+ is-extglob: 2.1.1
434
+
435
+ is-network-error@1.3.2: {}
436
+
437
+ is-number@7.0.0: {}
438
+
439
+ js-tiktoken@1.0.21:
440
+ dependencies:
441
+ base64-js: 1.5.1
442
+
443
+ json-schema-to-ts@3.1.1:
444
+ dependencies:
445
+ '@babel/runtime': 7.29.7
446
+ ts-algebra: 2.0.0
447
+
448
+ langchain@1.4.5(@langchain/core@1.1.49(openai@6.43.0(ws@8.21.0)(zod@4.4.3))(ws@8.21.0))(openai@6.43.0(ws@8.21.0)(zod@4.4.3))(ws@8.21.0):
449
+ dependencies:
450
+ '@langchain/core': 1.1.49(openai@6.43.0(ws@8.21.0)(zod@4.4.3))(ws@8.21.0)
451
+ '@langchain/langgraph': 1.4.2(@langchain/core@1.1.49(openai@6.43.0(ws@8.21.0)(zod@4.4.3))(ws@8.21.0))(zod@4.4.3)
452
+ '@langchain/langgraph-checkpoint': 1.1.1(@langchain/core@1.1.49(openai@6.43.0(ws@8.21.0)(zod@4.4.3))(ws@8.21.0))
453
+ langsmith: 0.7.10(openai@6.43.0(ws@8.21.0)(zod@4.4.3))(ws@8.21.0)
454
+ zod: 4.4.3
455
+ transitivePeerDependencies:
456
+ - '@opentelemetry/api'
457
+ - '@opentelemetry/exporter-trace-otlp-proto'
458
+ - '@opentelemetry/sdk-trace-base'
459
+ - openai
460
+ - react
461
+ - react-dom
462
+ - svelte
463
+ - vue
464
+ - ws
465
+ - zod-to-json-schema
466
+
467
+ langsmith@0.7.10(openai@6.43.0(ws@8.21.0)(zod@4.4.3))(ws@8.21.0):
468
+ dependencies:
469
+ p-queue: 6.6.2
470
+ optionalDependencies:
471
+ openai: 6.43.0(ws@8.21.0)(zod@4.4.3)
472
+ ws: 8.21.0
473
+
474
+ merge2@1.4.1: {}
475
+
476
+ micromatch@4.0.8:
477
+ dependencies:
478
+ braces: 3.0.3
479
+ picomatch: 2.3.2
480
+
481
+ mustache@4.2.0: {}
482
+
483
+ openai@6.43.0(ws@8.21.0)(zod@4.4.3):
484
+ optionalDependencies:
485
+ ws: 8.21.0
486
+ zod: 4.4.3
487
+ optional: true
488
+
489
+ p-finally@1.0.0: {}
490
+
491
+ p-queue@6.6.2:
492
+ dependencies:
493
+ eventemitter3: 4.0.7
494
+ p-timeout: 3.2.0
495
+
496
+ p-queue@9.3.0:
497
+ dependencies:
498
+ eventemitter3: 5.0.4
499
+ p-timeout: 7.0.1
500
+
501
+ p-retry@7.1.1:
502
+ dependencies:
503
+ is-network-error: 1.3.2
504
+
505
+ p-timeout@3.2.0:
506
+ dependencies:
507
+ p-finally: 1.0.0
508
+
509
+ p-timeout@7.0.1: {}
510
+
511
+ picomatch@2.3.2: {}
512
+
513
+ queue-microtask@1.2.3: {}
514
+
515
+ reusify@1.1.0: {}
516
+
517
+ run-parallel@1.2.0:
518
+ dependencies:
519
+ queue-microtask: 1.2.3
520
+
521
+ standardwebhooks@1.0.0:
522
+ dependencies:
523
+ '@stablelib/base64': 1.0.1
524
+ fast-sha256: 1.3.0
525
+
526
+ to-regex-range@5.0.1:
527
+ dependencies:
528
+ is-number: 7.0.0
529
+
530
+ ts-algebra@2.0.0: {}
531
+
532
+ ws@8.21.0: {}
533
+
534
+ yaml@2.9.0: {}
535
+
536
+ zod@4.4.3: {}
@@ -0,0 +1,129 @@
1
+ import {
2
+ AIMessage,
3
+ ToolMessage,
4
+ type ToolCall,
5
+ } from '@langchain/core/messages';
6
+ import type { createDeepAgent } from 'deepagents';
7
+ import type { StartMessage } from '../deepagents-bridge-protocol';
8
+ import {
9
+ isBuiltinToolIncluded,
10
+ NATIVE_TOOL_KIND,
11
+ toCommonName,
12
+ } from './approvals';
13
+
14
+ type DeepAgentsMiddleware = NonNullable<
15
+ NonNullable<Parameters<typeof createDeepAgent>[0]>['middleware']
16
+ >[number];
17
+
18
+ type DeepAgentsState = {
19
+ messages: unknown[];
20
+ };
21
+
22
+ type DeepAgentsMiddlewareUpdate = {
23
+ messages: unknown[];
24
+ jumpTo?: 'model';
25
+ };
26
+
27
+ const MIDDLEWARE_BRAND = Symbol.for('AgentMiddleware');
28
+
29
+ function getBuiltinToolFilteringDenialReason(input: {
30
+ toolName: string;
31
+ }): string {
32
+ return `Tool '${input.toolName}' is inactive due to the HarnessAgent tool filtering policy.`;
33
+ }
34
+
35
+ function stringifyToolInput(input: unknown): string {
36
+ return JSON.stringify(input ?? {});
37
+ }
38
+
39
+ function isNativeBuiltinToolCall(input: { toolCall: ToolCall }): boolean {
40
+ return Object.keys(NATIVE_TOOL_KIND).includes(input.toolCall.name);
41
+ }
42
+
43
+ function isInactiveBuiltinToolCall(input: {
44
+ toolCall: ToolCall;
45
+ builtinToolFiltering: StartMessage['builtinToolFiltering'];
46
+ }): boolean {
47
+ return (
48
+ isNativeBuiltinToolCall({ toolCall: input.toolCall }) &&
49
+ !isBuiltinToolIncluded({
50
+ nativeName: input.toolCall.name,
51
+ toolFiltering: input.builtinToolFiltering,
52
+ })
53
+ );
54
+ }
55
+
56
+ export function createBuiltinToolFilteringMiddleware(input: {
57
+ builtinToolFiltering: StartMessage['builtinToolFiltering'];
58
+ emit: (event: Record<string, unknown>) => void;
59
+ }): DeepAgentsMiddleware | undefined {
60
+ if (input.builtinToolFiltering == null) return undefined;
61
+
62
+ return {
63
+ [MIDDLEWARE_BRAND]: true,
64
+ name: 'HarnessBuiltinToolFilteringMiddleware',
65
+ afterModel: {
66
+ canJumpTo: ['model'],
67
+ hook: (
68
+ state: DeepAgentsState,
69
+ ): DeepAgentsMiddlewareUpdate | undefined => {
70
+ const lastMessage = [...state.messages]
71
+ .reverse()
72
+ .find(message => AIMessage.isInstance(message));
73
+
74
+ if (!lastMessage?.tool_calls?.length) return undefined;
75
+
76
+ let hasActiveToolCalls = false;
77
+ const deniedToolMessages: ToolMessage[] = [];
78
+
79
+ for (const toolCall of lastMessage.tool_calls) {
80
+ if (
81
+ !isInactiveBuiltinToolCall({
82
+ toolCall,
83
+ builtinToolFiltering: input.builtinToolFiltering,
84
+ })
85
+ ) {
86
+ hasActiveToolCalls = true;
87
+ continue;
88
+ }
89
+
90
+ const nativeName = toolCall.name;
91
+ toolCall.id ??= `${nativeName}-filtered-${deniedToolMessages.length}`;
92
+ const toolName = toCommonName(nativeName);
93
+ const reason = getBuiltinToolFilteringDenialReason({ toolName });
94
+
95
+ input.emit({
96
+ type: 'tool-call',
97
+ toolCallId: toolCall.id,
98
+ toolName,
99
+ input: stringifyToolInput(toolCall.args),
100
+ providerExecuted: true,
101
+ nativeName,
102
+ });
103
+ input.emit({
104
+ type: 'tool-result',
105
+ toolCallId: toolCall.id,
106
+ toolName,
107
+ result: reason,
108
+ });
109
+
110
+ deniedToolMessages.push(
111
+ new ToolMessage({
112
+ content: reason,
113
+ name: nativeName,
114
+ tool_call_id: toolCall.id,
115
+ status: 'error',
116
+ }),
117
+ );
118
+ }
119
+
120
+ if (deniedToolMessages.length === 0) return undefined;
121
+
122
+ return {
123
+ messages: [lastMessage, ...deniedToolMessages],
124
+ ...(hasActiveToolCalls ? {} : { jumpTo: 'model' }),
125
+ };
126
+ },
127
+ },
128
+ } as DeepAgentsMiddleware;
129
+ }