langchain
Version:
Typescript bindings for langchain
1 lines • 7.07 kB
Source Map (JSON)
{"version":3,"file":"annotation.cjs","names":["stateSchema: TStateSchema","middlewareList: TMiddleware","stateFields: Record<string, any>","UntrackedValue","inputFields: Record<string, any>","outputFields: Record<string, any>","schema: InteropZodObject | StateSchema<any>","StateSchema","ReducedValue","schemaMetaRegistry","MessagesValue"],"sources":["../../src/agents/annotation.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport {\n StateSchema,\n MessagesValue,\n UntrackedValue,\n ReducedValue,\n type StateDefinitionInit,\n} from \"@langchain/langgraph\";\nimport { schemaMetaRegistry } from \"@langchain/langgraph/zod\";\n\nimport type { AgentMiddleware } from \"./middleware/types.js\";\nimport {\n type InteropZodObject,\n isZodSchemaV4,\n getInteropZodObjectShape,\n isInteropZodObject,\n} from \"@langchain/core/utils/types\";\n\n/**\n * Type for jumpTo navigation targets\n */\ntype JumpToTarget = \"model_request\" | \"tools\" | \"end\" | undefined;\n\nexport function createAgentState<\n TStateSchema extends StateDefinitionInit | undefined = undefined,\n TMiddleware extends readonly AgentMiddleware<any, any, any>[] = [],\n>(\n hasStructuredResponse = true,\n stateSchema: TStateSchema,\n middlewareList: TMiddleware = [] as unknown as TMiddleware\n) {\n /**\n * Collect fields from state schemas\n */\n const stateFields: Record<string, any> = {\n // jumpTo is used for internal navigation control\n jumpTo: new UntrackedValue<JumpToTarget>(),\n };\n\n // Separate shapes for input/output without reducer metadata (to avoid channel conflicts)\n const inputFields: Record<string, any> = {};\n const outputFields: Record<string, any> = {};\n\n const applySchema = (schema: InteropZodObject | StateSchema<any>) => {\n // Handle StateSchema: extract from .fields\n if (StateSchema.isInstance(schema)) {\n for (const [key, field] of Object.entries(schema.fields)) {\n if (key.startsWith(\"_\")) {\n continue;\n }\n if (!(key in stateFields)) {\n // Add to stateFields to preserve ReducedValue/UntrackedValue behavior\n stateFields[key] = field;\n\n // For ioFields, extract the appropriate schema from ReducedValue\n if (ReducedValue.isInstance(field)) {\n // For input, use inputSchema if available, otherwise use the value schema\n inputFields[key] = field.inputSchema || field.valueSchema;\n outputFields[key] = field.valueSchema;\n } else {\n // For non-ReducedValue fields, use the field as-is\n inputFields[key] = field;\n outputFields[key] = field;\n }\n }\n }\n return;\n }\n\n // Handle Zod v3/v4: extract shape using interop utilities\n const shape = getInteropZodObjectShape(schema);\n for (const [key, fieldSchema] of Object.entries(shape)) {\n // Skip private state properties (prefixed with underscore)\n if (key.startsWith(\"_\")) {\n continue;\n }\n if (!(key in stateFields)) {\n // Check for reducer metadata (Zod v4 only supports schemaMetaRegistry)\n if (isZodSchemaV4(fieldSchema)) {\n const meta = schemaMetaRegistry.get(fieldSchema);\n if (meta?.reducer) {\n // Wrap with ReducedValue to preserve reducer behavior\n if (meta.reducer.schema) {\n stateFields[key] = new ReducedValue(fieldSchema as any, {\n inputSchema: meta.reducer.schema as any,\n reducer: meta.reducer.fn,\n });\n // For input, use the inputSchema\n inputFields[key] = meta.reducer.schema;\n outputFields[key] = fieldSchema;\n } else {\n stateFields[key] = new ReducedValue(fieldSchema as any, {\n reducer: meta.reducer.fn,\n });\n // No inputSchema, use the value schema\n inputFields[key] = fieldSchema;\n outputFields[key] = fieldSchema;\n }\n continue;\n }\n }\n\n // No reducer - use schema directly\n stateFields[key] = fieldSchema;\n inputFields[key] = fieldSchema;\n outputFields[key] = fieldSchema;\n }\n }\n };\n\n /**\n * Add state schema properties from user-provided schema.\n * Supports both StateSchema and Zod v3/v4 objects.\n */\n if (\n stateSchema &&\n (StateSchema.isInstance(stateSchema) || isInteropZodObject(stateSchema))\n ) {\n applySchema(stateSchema);\n }\n\n /**\n * Add state schema properties from middleware.\n * Supports both StateSchema and Zod v3/v4 objects.\n */\n for (const middleware of middlewareList) {\n if (\n middleware.stateSchema &&\n (StateSchema.isInstance(middleware.stateSchema) ||\n isInteropZodObject(middleware.stateSchema))\n ) {\n applySchema(middleware.stateSchema);\n }\n }\n\n // Only include structuredResponse when responseFormat is defined\n if (hasStructuredResponse) {\n outputFields.structuredResponse = new UntrackedValue<any>();\n }\n\n /**\n * Create StateSchema instances for state, input, and output.\n * Using MessagesValue provides the proper message reducer behavior.\n */\n return {\n state: new StateSchema({\n messages: MessagesValue,\n ...stateFields,\n }),\n input: new StateSchema({\n messages: MessagesValue,\n ...inputFields,\n }),\n output: new StateSchema({\n messages: MessagesValue,\n ...outputFields,\n }),\n };\n}\n"],"mappings":";;;;;;AAuBA,SAAgB,iBAId,wBAAwB,MACxBA,aACAC,iBAA8B,CAAE,GAChC;;;;CAIA,MAAMC,cAAmC,EAEvC,QAAQ,IAAIC,uCACb;CAGD,MAAMC,cAAmC,CAAE;CAC3C,MAAMC,eAAoC,CAAE;CAE5C,MAAM,cAAc,CAACC,WAAgD;AAEnE,MAAIC,kCAAY,WAAW,OAAO,EAAE;AAClC,QAAK,MAAM,CAAC,KAAK,MAAM,IAAI,OAAO,QAAQ,OAAO,OAAO,EAAE;AACxD,QAAI,IAAI,WAAW,IAAI,CACrB;AAEF,QAAI,EAAE,OAAO,cAAc;KAEzB,YAAY,OAAO;AAGnB,SAAIC,mCAAa,WAAW,MAAM,EAAE;MAElC,YAAY,OAAO,MAAM,eAAe,MAAM;MAC9C,aAAa,OAAO,MAAM;KAC3B,OAAM;MAEL,YAAY,OAAO;MACnB,aAAa,OAAO;KACrB;IACF;GACF;AACD;EACD;EAGD,MAAM,mEAAiC,OAAO;AAC9C,OAAK,MAAM,CAAC,KAAK,YAAY,IAAI,OAAO,QAAQ,MAAM,EAAE;AAEtD,OAAI,IAAI,WAAW,IAAI,CACrB;AAEF,OAAI,EAAE,OAAO,cAAc;AAEzB,wDAAkB,YAAY,EAAE;KAC9B,MAAM,OAAOC,6CAAmB,IAAI,YAAY;AAChD,SAAI,MAAM,SAAS;AAEjB,UAAI,KAAK,QAAQ,QAAQ;OACvB,YAAY,OAAO,IAAID,mCAAa,aAAoB;QACtD,aAAa,KAAK,QAAQ;QAC1B,SAAS,KAAK,QAAQ;OACvB;OAED,YAAY,OAAO,KAAK,QAAQ;OAChC,aAAa,OAAO;MACrB,OAAM;OACL,YAAY,OAAO,IAAIA,mCAAa,aAAoB,EACtD,SAAS,KAAK,QAAQ,GACvB;OAED,YAAY,OAAO;OACnB,aAAa,OAAO;MACrB;AACD;KACD;IACF;IAGD,YAAY,OAAO;IACnB,YAAY,OAAO;IACnB,aAAa,OAAO;GACrB;EACF;CACF;;;;;AAMD,KACE,gBACCD,kCAAY,WAAW,YAAY,yDAAuB,YAAY,GAEvE,YAAY,YAAY;;;;;AAO1B,MAAK,MAAM,cAAc,eACvB,KACE,WAAW,gBACVA,kCAAY,WAAW,WAAW,YAAY,yDAC1B,WAAW,YAAY,GAE5C,YAAY,WAAW,YAAY;AAKvC,KAAI,uBACF,aAAa,qBAAqB,IAAIJ;;;;;AAOxC,QAAO;EACL,OAAO,IAAII,kCAAY;GACrB,UAAUG;GACV,GAAG;EACJ;EACD,OAAO,IAAIH,kCAAY;GACrB,UAAUG;GACV,GAAG;EACJ;EACD,QAAQ,IAAIH,kCAAY;GACtB,UAAUG;GACV,GAAG;EACJ;CACF;AACF"}