Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions .changeset/omit-middleware-trace-inputs.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
---
"deepagents": patch
"@langchain/quickjs": patch
---

fix(middleware): omit repeated conversation and state inputs from owned middleware lifecycle traces

Keep middleware spans and outputs, and preserve model/tool tracing and user-supplied middleware policies. Apply the defaults to standalone middleware, subagents, and QuickJS cleanup. Lifecycle chain events also receive the omitted inputs.

Require LangChain 1.5.11-rc.0 and LangGraph 1.4.15-rc.0 or newer for middleware trace-policy support. QuickJS now declares its LangChain peer requirement explicitly.
Comment thread
hntrl marked this conversation as resolved.
Resolved
8 changes: 4 additions & 4 deletions libs/deepagents/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@
"devDependencies": {
"@langchain/anthropic": "^1.5.0",
"@langchain/core": "^1.2.9",
"@langchain/langgraph": "^1.4.10",
"@langchain/langgraph": "^1.4.15-rc.0",
"@langchain/langgraph-checkpoint": "^1.1.5",
"@langchain/langgraph-sdk": "^1.9.23",
"@langchain/openai": "^1.5.1",
Expand All @@ -58,7 +58,7 @@
"@vitest/coverage-v8": "^4.0.18",
"@vitest/ui": "^4.0.18",
"dotenv": "^17.2.4",
"langchain": "^1.5.10",
"langchain": "^1.5.11-rc.0",
"tsdown": "^0.22.1",
"tsx": "^4.21.0",
"typescript": "^7.0.2",
Expand Down Expand Up @@ -100,10 +100,10 @@
},
"peerDependencies": {
"@langchain/core": "^1.2.9",
"@langchain/langgraph": "^1.4.10",
"@langchain/langgraph": "^1.4.15-rc.0",
"@langchain/langgraph-checkpoint": "^1.1.5",
"@langchain/langgraph-sdk": "^1.9.23",
"langchain": "^1.5.10",
"langchain": "^1.5.11-rc.0",
"langsmith": ">=0.7.1 <0.10.0"
},
"files": [
Expand Down
2 changes: 2 additions & 0 deletions libs/deepagents/src/middleware/agent-memory.ts
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ import fs from "node:fs";
import { z } from "zod";
import {
createMiddleware,
omitPayload,
/**
* required for type inference
*/
Expand Down Expand Up @@ -236,6 +237,7 @@ export function createAgentMemoryMiddleware(

return createMiddleware({
name: "AgentMemoryMiddleware",
tracePolicy: { processInputs: omitPayload },
stateSchema: AgentMemoryStateSchema as any,

beforeAgent(state: any) {
Expand Down
2 changes: 2 additions & 0 deletions libs/deepagents/src/middleware/async_subagents.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import { Command, ReducedValue, StateSchema } from "@langchain/langgraph";
import { Client, type DefaultValues, type Run } from "@langchain/langgraph-sdk";
import {
createMiddleware,
omitPayload,
tool,
ToolMessage,
SystemMessage,
Expand Down Expand Up @@ -875,6 +876,7 @@ export function createAsyncSubAgentMiddleware(

return createMiddleware({
name: "asyncSubAgentMiddleware",
tracePolicy: { processInputs: omitPayload },
stateSchema: AsyncTaskStateSchema,
tools,
wrapModelCall: async (request, handler) => {
Expand Down
3 changes: 2 additions & 1 deletion libs/deepagents/src/middleware/cache.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { createMiddleware, SystemMessage } from "langchain";
import { createMiddleware, omitPayload, SystemMessage } from "langchain";

/**
* Import langchain for type inference
Expand Down Expand Up @@ -36,6 +36,7 @@ import { isAnthropicModel } from "../utils.js";
export function createCacheBreakpointMiddleware() {
return createMiddleware({
name: "CacheBreakpointMiddleware",
tracePolicy: { processInputs: omitPayload },

wrapModelCall(request, handler) {
// Per-call provider gate: the boot-time install gate in createDeepAgent
Expand Down
2 changes: 2 additions & 0 deletions libs/deepagents/src/middleware/completion_callback.ts
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,7 @@
import * as z from "zod";
import {
createMiddleware,
omitPayload,
/**
* required for type inference
*/
Expand Down Expand Up @@ -303,6 +304,7 @@ export function createCompletionCallbackMiddleware(

return createMiddleware({
name: "CompletionCallbackMiddleware",
tracePolicy: { processInputs: omitPayload },
stateSchema: CompletionCallbackStateSchema,

/**
Expand Down
2 changes: 2 additions & 0 deletions libs/deepagents/src/middleware/fs.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import {
context,
createMiddleware,
omitPayload,
tool,
HumanMessage,
ToolMessage,
Expand Down Expand Up @@ -2019,6 +2020,7 @@ export function createFilesystemMiddleware(

return createMiddleware({
name: "FilesystemMiddleware",
tracePolicy: { processInputs: omitPayload },
stateSchema: FilesystemStateSchema,
tools: allTools,
async beforeAgent(state) {
Expand Down
2 changes: 2 additions & 0 deletions libs/deepagents/src/middleware/memory.ts
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ import { z } from "zod";
import {
context,
createMiddleware,
omitPayload,
SystemMessage,
/**
* required for type inference
Expand Down Expand Up @@ -287,6 +288,7 @@ export function createMemoryMiddleware(options: MemoryMiddlewareOptions) {

return createMiddleware({
name: "MemoryMiddleware",
tracePolicy: { processInputs: omitPayload },
stateSchema: MemoryStateSchema,

async beforeAgent(state) {
Expand Down
2 changes: 2 additions & 0 deletions libs/deepagents/src/middleware/patch_tool_calls.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import {
createMiddleware,
omitPayload,
ToolMessage,
AIMessage,
/**
Expand Down Expand Up @@ -134,6 +135,7 @@ export function patchDanglingToolCalls(messages: BaseMessage[]): {
export function createPatchToolCallsMiddleware() {
return createMiddleware({
name: "patchToolCallsMiddleware",
tracePolicy: { processInputs: omitPayload },
beforeAgent: async (state) => {
const messages = state.messages;

Expand Down
2 changes: 2 additions & 0 deletions libs/deepagents/src/middleware/skills.ts
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ import yaml from "yaml";
import {
context,
createMiddleware,
omitPayload,
/**
* required for type inference
*/
Expand Down Expand Up @@ -820,6 +821,7 @@ export function createSkillsMiddleware(options: SkillsMiddlewareOptions) {

return createMiddleware({
name: "SkillsMiddleware",
tracePolicy: { processInputs: omitPayload },
stateSchema: SkillsStateSchema,

async beforeAgent(state) {
Expand Down
3 changes: 3 additions & 0 deletions libs/deepagents/src/middleware/subagents.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import { z } from "zod/v4";

import {
createMiddleware,
omitPayload,
createAgent,
AgentMiddleware,
tool,
Expand Down Expand Up @@ -469,6 +470,7 @@ function createForkTaskToolMiddleware(
): AgentMiddleware {
return createMiddleware({
name: "forkTaskToolMiddleware",
tracePolicy: { processInputs: omitPayload },
stateSchema: ForkedContextStateSchema,
tools: [taskTool],
beforeAgent: () => ({ [FORKED_CONTEXT_KEY]: true }),
Expand Down Expand Up @@ -1003,6 +1005,7 @@ export function createSubAgentMiddleware(options: SubAgentMiddlewareOptions) {

return createMiddleware({
name: "subAgentMiddleware",
tracePolicy: { processInputs: omitPayload },
tools: [taskTool],
wrapModelCall: async (request, handler) => {
if (systemPrompt !== null) {
Expand Down
2 changes: 2 additions & 0 deletions libs/deepagents/src/middleware/summarization.ts
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@
import { z } from "zod";
import {
createMiddleware,
omitPayload,
countTokensApproximately,
HumanMessage,
AIMessage,
Expand Down Expand Up @@ -1182,6 +1183,7 @@ export function createSummarizationMiddleware(

return createMiddleware({
name: "SummarizationMiddleware",
tracePolicy: { processInputs: omitPayload },
stateSchema: SummarizationStateSchema,

async wrapModelCall(request, handler) {
Expand Down
3 changes: 2 additions & 1 deletion libs/deepagents/src/middleware/tool_exclusion.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { ToolMessage } from "@langchain/core/messages";
import { createMiddleware, type AgentMiddleware } from "langchain";
import { createMiddleware, omitPayload, type AgentMiddleware } from "langchain";

function hasToolName(tool: unknown): tool is { name: string } {
return (
Expand All @@ -22,6 +22,7 @@ export function createToolExclusionMiddleware(
): AgentMiddleware {
return createMiddleware({
name: "_ToolExclusionMiddleware",
tracePolicy: { processInputs: omitPayload },
wrapModelCall(request, handler) {
return handler({
...request,
Expand Down
Loading
Loading