Skip to content

Commit f88cde5

Browse files
pokeyclaude
andauthored
fix(agents): improve middleware type inference with const type parameters (#9238)
Co-authored-by: Claude <[email protected]>
1 parent bf158d2 commit f88cde5

23 files changed

+107
-107
lines changed

examples/src/createAgent/dynamicTools/advanced.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ const selectToolsMiddleware = createMiddleware({
8080
const semanticAgent = createAgent({
8181
model: "openai:gpt-4o",
8282
tools: fullCatalog, // superset for validation and typing
83-
middleware: [selectToolsMiddleware] as const,
83+
middleware: [selectToolsMiddleware],
8484
});
8585

8686
const result = await semanticAgent.invoke({

examples/src/createAgent/middleware/hitl.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ const agent = createAgent({
7272
systemPrompt:
7373
"You are a helpful assistant. Use the tools provided to help the user.",
7474
tools: [calculateTool, writeFileTool],
75-
middleware: [hitlMiddleware] as const,
75+
middleware: [hitlMiddleware],
7676
});
7777
const config = {
7878
configurable: {

examples/src/createAgent/middleware/promptCaching.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { anthropicPromptCachingMiddleware } from "langchain";
55
const agent = createAgent({
66
model: "anthropic:claude-sonnet-4-20250514",
77
tools: [],
8-
middleware: [anthropicPromptCachingMiddleware({ ttl: "5m" })] as const,
8+
middleware: [anthropicPromptCachingMiddleware({ ttl: "5m" })],
99
});
1010

1111
// Usage example with a long chat history for testing caching

examples/src/createAgent/middleware/simpleHitl.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ const agent = createAgent({
4848
model: "openai:gpt-4o-mini",
4949
tools: [],
5050
checkpointer,
51-
middleware: [humanInTheLoopMiddleware] as const,
51+
middleware: [humanInTheLoopMiddleware],
5252
});
5353

5454
console.log("🚀 Human in the Loop Example - Missing Information Flow");

examples/src/createAgent/middleware/simpleSummarization.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ const agent = createAgent({
5656
userId: z.string(),
5757
}),
5858
tools: [],
59-
middleware: [summarizationMiddleware] as const,
59+
middleware: [summarizationMiddleware],
6060
});
6161

6262
const config = {

examples/src/createAgent/middleware/summarization.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ const summaryMiddleware = summarizationMiddleware({
3333
const agent = createAgent({
3434
model: "openai:gpt-4o-mini",
3535
tools: [],
36-
middleware: [summaryMiddleware] as const,
36+
middleware: [summaryMiddleware],
3737
});
3838

3939
console.log("🚀 Summarization Middleware Example");

libs/langchain/src/agents/index.ts

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@ export function createAgent<
146146
ContextSchema extends
147147
| AnyAnnotationRoot
148148
| InteropZodObject = AnyAnnotationRoot,
149-
TMiddleware extends readonly AgentMiddleware[] = readonly AgentMiddleware[]
149+
const TMiddleware extends readonly AgentMiddleware[] = readonly AgentMiddleware[]
150150
>(
151151
params: CreateAgentParams<
152152
T,
@@ -169,7 +169,7 @@ export function createAgent<
169169
ContextSchema extends
170170
| AnyAnnotationRoot
171171
| InteropZodObject = AnyAnnotationRoot,
172-
TMiddleware extends readonly AgentMiddleware[] = readonly AgentMiddleware[]
172+
const TMiddleware extends readonly AgentMiddleware[] = readonly AgentMiddleware[]
173173
>(
174174
params: CreateAgentParams<
175175
ExtractZodArrayTypes<T> extends Record<string, any>
@@ -200,7 +200,7 @@ export function createAgent<
200200
ContextSchema extends
201201
| AnyAnnotationRoot
202202
| InteropZodObject = AnyAnnotationRoot,
203-
TMiddleware extends readonly AgentMiddleware[] = readonly AgentMiddleware[]
203+
const TMiddleware extends readonly AgentMiddleware[] = readonly AgentMiddleware[]
204204
>(
205205
params: CreateAgentParams<
206206
Record<string, unknown>,
@@ -222,7 +222,7 @@ export function createAgent<
222222
ContextSchema extends
223223
| AnyAnnotationRoot
224224
| InteropZodObject = AnyAnnotationRoot,
225-
TMiddleware extends readonly AgentMiddleware[] = readonly AgentMiddleware[]
225+
const TMiddleware extends readonly AgentMiddleware[] = readonly AgentMiddleware[]
226226
>(
227227
params: CreateAgentParams<
228228
Record<string, unknown>,
@@ -244,7 +244,7 @@ export function createAgent<
244244
ContextSchema extends
245245
| AnyAnnotationRoot
246246
| InteropZodObject = AnyAnnotationRoot,
247-
TMiddleware extends readonly AgentMiddleware[] = readonly AgentMiddleware[]
247+
const TMiddleware extends readonly AgentMiddleware[] = readonly AgentMiddleware[]
248248
>(
249249
params: CreateAgentParams<
250250
Record<string, unknown>,
@@ -267,7 +267,7 @@ export function createAgent<
267267
ContextSchema extends
268268
| AnyAnnotationRoot
269269
| InteropZodObject = AnyAnnotationRoot,
270-
TMiddleware extends readonly AgentMiddleware[] = readonly AgentMiddleware[]
270+
const TMiddleware extends readonly AgentMiddleware[] = readonly AgentMiddleware[]
271271
>(
272272
params: CreateAgentParams<
273273
T,
@@ -290,7 +290,7 @@ export function createAgent<
290290
ContextSchema extends
291291
| AnyAnnotationRoot
292292
| InteropZodObject = AnyAnnotationRoot,
293-
TMiddleware extends readonly AgentMiddleware[] = readonly AgentMiddleware[]
293+
const TMiddleware extends readonly AgentMiddleware[] = readonly AgentMiddleware[]
294294
>(
295295
params: CreateAgentParams<T, StateSchema, ContextSchema, ToolStrategy<T>> & {
296296
responseFormat: ToolStrategy<T>;
@@ -308,7 +308,7 @@ export function createAgent<
308308
ContextSchema extends
309309
| AnyAnnotationRoot
310310
| InteropZodObject = AnyAnnotationRoot,
311-
TMiddleware extends readonly AgentMiddleware[] = readonly AgentMiddleware[]
311+
const TMiddleware extends readonly AgentMiddleware[] = readonly AgentMiddleware[]
312312
>(
313313
params: CreateAgentParams<
314314
T,
@@ -330,7 +330,7 @@ export function createAgent<
330330
ContextSchema extends
331331
| AnyAnnotationRoot
332332
| InteropZodObject = AnyAnnotationRoot,
333-
TMiddleware extends readonly AgentMiddleware[] = readonly AgentMiddleware[]
333+
const TMiddleware extends readonly AgentMiddleware[] = readonly AgentMiddleware[]
334334
>(
335335
params: Omit<
336336
CreateAgentParams<
@@ -352,7 +352,7 @@ export function createAgent<
352352
ContextSchema extends
353353
| AnyAnnotationRoot
354354
| InteropZodObject = AnyAnnotationRoot,
355-
TMiddleware extends readonly AgentMiddleware[] = readonly AgentMiddleware[]
355+
const TMiddleware extends readonly AgentMiddleware[] = readonly AgentMiddleware[]
356356
>(
357357
params: Omit<
358358
CreateAgentParams<
@@ -378,7 +378,7 @@ export function createAgent<
378378
ContextSchema extends
379379
| AnyAnnotationRoot
380380
| InteropZodObject = AnyAnnotationRoot,
381-
TMiddleware extends readonly AgentMiddleware[] = readonly AgentMiddleware[]
381+
const TMiddleware extends readonly AgentMiddleware[] = readonly AgentMiddleware[]
382382
>(
383383
params: CreateAgentParams<
384384
StructuredResponseFormat,

libs/langchain/src/agents/middleware/tests/callLimit.test.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ describe("ModelCallLimitMiddleware", () => {
7676
const agent = createAgent({
7777
model,
7878
tools,
79-
middleware: [middleware] as const,
79+
middleware: [middleware],
8080
});
8181

8282
const result = await agent.invoke({ messages: ["Hello, world!"] });
@@ -130,7 +130,7 @@ describe("ModelCallLimitMiddleware", () => {
130130
model,
131131
tools,
132132
checkpointer,
133-
middleware: [middleware] as const,
133+
middleware: [middleware],
134134
});
135135
await expect(
136136
agent.invoke({ messages: ["Hello, world!"] }, config)
@@ -139,7 +139,7 @@ describe("ModelCallLimitMiddleware", () => {
139139
const agent2 = createAgent({
140140
model,
141141
tools,
142-
middleware: [middleware] as const,
142+
middleware: [middleware],
143143
checkpointer,
144144
});
145145
if (exitBehavior === "throw") {
@@ -165,7 +165,7 @@ describe("ModelCallLimitMiddleware", () => {
165165
model,
166166
tools,
167167
checkpointer,
168-
middleware: [middleware] as const,
168+
middleware: [middleware],
169169
});
170170
if (exitBehavior === "throw") {
171171
await expect(

libs/langchain/src/agents/middleware/tests/contextEditing.test.ts

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ describe("contextEditingMiddleware", () => {
6565

6666
const agent = createAgent({
6767
model,
68-
middleware: [middleware] as const,
68+
middleware: [middleware],
6969
});
7070

7171
// Create a conversation that doesn't exceed default 100K token threshold
@@ -113,7 +113,7 @@ describe("contextEditingMiddleware", () => {
113113

114114
const agent = createAgent({
115115
model,
116-
middleware: [middleware] as const,
116+
middleware: [middleware],
117117
});
118118

119119
const messages = createToolCallConversation();
@@ -156,7 +156,7 @@ describe("contextEditingMiddleware", () => {
156156

157157
const agent = createAgent({
158158
model,
159-
middleware: [middleware] as const,
159+
middleware: [middleware],
160160
});
161161

162162
const messages = createToolCallConversation();
@@ -189,7 +189,7 @@ describe("contextEditingMiddleware", () => {
189189

190190
const agent = createAgent({
191191
model,
192-
middleware: [middleware] as const,
192+
middleware: [middleware],
193193
});
194194

195195
const messages = createToolCallConversation();
@@ -221,7 +221,7 @@ describe("contextEditingMiddleware", () => {
221221

222222
const agent = createAgent({
223223
model,
224-
middleware: [middleware] as const,
224+
middleware: [middleware],
225225
});
226226

227227
const messages: BaseMessage[] = [
@@ -289,7 +289,7 @@ describe("contextEditingMiddleware", () => {
289289

290290
const agent = createAgent({
291291
model,
292-
middleware: [middleware] as const,
292+
middleware: [middleware],
293293
});
294294

295295
const messages = createToolCallConversation();
@@ -342,7 +342,7 @@ describe("contextEditingMiddleware", () => {
342342

343343
const agent = createAgent({
344344
model,
345-
middleware: [middleware] as const,
345+
middleware: [middleware],
346346
});
347347

348348
const messages = createToolCallConversation();
@@ -376,7 +376,7 @@ describe("contextEditingMiddleware", () => {
376376

377377
const agent = createAgent({
378378
model,
379-
middleware: [middleware] as const,
379+
middleware: [middleware],
380380
});
381381

382382
const messages = createToolCallConversation();
@@ -442,7 +442,7 @@ describe("contextEditingMiddleware", () => {
442442

443443
const agent = createAgent({
444444
model,
445-
middleware: [middleware] as const,
445+
middleware: [middleware],
446446
});
447447

448448
const messages = createToolCallConversation();
@@ -496,7 +496,7 @@ describe("contextEditingMiddleware", () => {
496496

497497
const agent = createAgent({
498498
model,
499-
middleware: [middleware] as const,
499+
middleware: [middleware],
500500
});
501501

502502
const messages = [new HumanMessage("Hello"), new AIMessage("Hi there!")];
@@ -521,7 +521,7 @@ describe("contextEditingMiddleware", () => {
521521

522522
const agent = createAgent({
523523
model,
524-
middleware: [middleware] as const,
524+
middleware: [middleware],
525525
});
526526

527527
const messages = [
@@ -549,7 +549,7 @@ describe("contextEditingMiddleware", () => {
549549

550550
const agent = createAgent({
551551
model,
552-
middleware: [middleware] as const,
552+
middleware: [middleware],
553553
});
554554

555555
const messages: BaseMessage[] = [
@@ -585,7 +585,7 @@ describe("contextEditingMiddleware", () => {
585585

586586
const agent = createAgent({
587587
model,
588-
middleware: [middleware] as const,
588+
middleware: [middleware],
589589
});
590590

591591
// Create a message that's already marked as cleared
@@ -638,7 +638,7 @@ describe("contextEditingMiddleware", () => {
638638

639639
const agent = createAgent({
640640
model,
641-
middleware: [middleware] as const,
641+
middleware: [middleware],
642642
});
643643

644644
// Tool message without a corresponding AI message (malformed conversation)

libs/langchain/src/agents/middleware/tests/dynamicSystemPrompt.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ describe("dynamicSystemPrompt", () => {
4141

4242
const agent = createAgent({
4343
model,
44-
middleware: [middleware] as const,
44+
middleware: [middleware],
4545
contextSchema,
4646
});
4747

@@ -81,7 +81,7 @@ describe("dynamicSystemPrompt", () => {
8181

8282
const agent = createAgent({
8383
model,
84-
middleware: [middleware] as const,
84+
middleware: [middleware],
8585
contextSchema,
8686
});
8787

0 commit comments

Comments
 (0)