langchain
Version:
Typescript bindings for langchain
1 lines • 4.59 kB
Source Map (JSON)
{"version":3,"file":"annotation.cjs","names":["stateSchema: TStateSchema","middlewareList: TMiddleware","schemaShape: Record<string, any>","z","schema: InteropZodObject","MessagesZodState"],"sources":["../../src/agents/annotation.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { z } from \"zod/v3\";\nimport { MessagesZodState } from \"@langchain/langgraph\";\nimport { withLangGraph } from \"@langchain/langgraph/zod\";\n\nimport type { AgentMiddleware, AnyAnnotationRoot } from \"./middleware/types.js\";\nimport {\n InteropZodObject,\n isZodSchemaV4,\n getInteropZodObjectShape,\n} from \"@langchain/core/utils/types\";\nimport type { BaseMessage } from \"@langchain/core/messages\";\n\nexport function createAgentAnnotationConditional<\n TStateSchema extends\n | AnyAnnotationRoot\n | InteropZodObject\n | 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 * Create Zod schema object to preserve jsonSchemaExtra\n * metadata for LangGraph Studio using v3-compatible withLangGraph\n */\n const schemaShape: Record<string, any> = {\n jumpTo: z\n .union([\n z.literal(\"model_request\"),\n z.literal(\"tools\"),\n z.literal(\"end\"),\n z.undefined(),\n ])\n .optional(),\n };\n\n const applySchema = (schema: InteropZodObject) => {\n // Handle both Zod v3 and v4 schemas\n const shape = isZodSchemaV4(schema)\n ? getInteropZodObjectShape(schema)\n : schema.shape;\n\n for (const [key, fieldSchema] of Object.entries(shape)) {\n /**\n * Skip private state properties\n */\n if (key.startsWith(\"_\")) {\n continue;\n }\n\n if (!(key in schemaShape)) {\n /**\n * If the field schema is Zod v4, convert to v3-compatible z.any()\n * This allows the shape to be merged while preserving the key structure\n */\n schemaShape[key] = isZodSchemaV4(fieldSchema) ? z.any() : fieldSchema;\n }\n }\n };\n\n /**\n * Add state schema properties to the Zod schema\n */\n if (stateSchema && (\"shape\" in stateSchema || isZodSchemaV4(stateSchema))) {\n applySchema(stateSchema as InteropZodObject);\n }\n\n for (const middleware of middlewareList) {\n if (middleware.stateSchema) {\n applySchema(middleware.stateSchema as InteropZodObject);\n }\n }\n\n // Only include structuredResponse when responseFormat is defined\n if (hasStructuredResponse) {\n schemaShape.structuredResponse = z.string().optional();\n }\n\n // Create messages field with LangGraph UI metadata for input/output schemas\n // Only use jsonSchemaExtra (no reducer) to avoid channel conflict - this creates\n // a LastValue channel which is allowed to coexist with the state's messages channel\n const messages = withLangGraph(z.custom<BaseMessage[]>(), {\n jsonSchemaExtra: { langgraph_type: \"messages\" },\n });\n\n return {\n state: MessagesZodState.extend(schemaShape),\n input: z.object({\n messages,\n ...Object.fromEntries(\n Object.entries(schemaShape).filter(\n ([key]) => ![\"structuredResponse\", \"jumpTo\"].includes(key)\n )\n ),\n }),\n output: z.object({\n messages,\n ...Object.fromEntries(\n Object.entries(schemaShape).filter(([key]) => key !== \"jumpTo\")\n ),\n }),\n };\n}\n"],"mappings":";;;;;;;AAaA,SAAgB,iCAOd,wBAAwB,MACxBA,aACAC,iBAA8B,CAAE,GAChC;;;;;CAKA,MAAMC,cAAmC,EACvC,QAAQC,SACL,MAAM;EACLA,SAAE,QAAQ,gBAAgB;EAC1BA,SAAE,QAAQ,QAAQ;EAClBA,SAAE,QAAQ,MAAM;EAChBA,SAAE,WAAW;CACd,EAAC,CACD,UAAU,CACd;CAED,MAAM,cAAc,CAACC,WAA6B;EAEhD,MAAM,wDAAsB,OAAO,8DACN,OAAO,GAChC,OAAO;AAEX,OAAK,MAAM,CAAC,KAAK,YAAY,IAAI,OAAO,QAAQ,MAAM,EAAE;;;;AAItD,OAAI,IAAI,WAAW,IAAI,CACrB;AAGF,OAAI,EAAE,OAAO;;;;;GAKX,YAAY,uDAAqB,YAAY,GAAGD,SAAE,KAAK,GAAG;EAE7D;CACF;;;;AAKD,KAAI,gBAAgB,WAAW,+DAA6B,YAAY,GACtE,YAAY,YAAgC;AAG9C,MAAK,MAAM,cAAc,eACvB,KAAI,WAAW,aACb,YAAY,WAAW,YAAgC;AAK3D,KAAI,uBACF,YAAY,qBAAqBA,SAAE,QAAQ,CAAC,UAAU;CAMxD,MAAM,wDAAyBA,SAAE,QAAuB,EAAE,EACxD,iBAAiB,EAAE,gBAAgB,WAAY,EAChD,EAAC;AAEF,QAAO;EACL,OAAOE,uCAAiB,OAAO,YAAY;EAC3C,OAAOF,SAAE,OAAO;GACd;GACA,GAAG,OAAO,YACR,OAAO,QAAQ,YAAY,CAAC,OAC1B,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,sBAAsB,QAAS,EAAC,SAAS,IAAI,CAC3D,CACF;EACF,EAAC;EACF,QAAQA,SAAE,OAAO;GACf;GACA,GAAG,OAAO,YACR,OAAO,QAAQ,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,SAAS,CAChE;EACF,EAAC;CACH;AACF"}