@mondaydotcomorg/atp-langchain 0.20.2 → 0.20.4

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.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,IAAI,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAE5F,cAAc,uBAAuB,CAAC;AACtC,OAAO,EACN,cAAc,EACd,mBAAmB,GAGnB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACN,2BAA2B,EAC3B,4BAA4B,GAG5B,MAAM,oBAAoB,CAAC;AAE5B,cAAc,WAAW,CAAC"}
1
+ {"version":3,"sources":["../src/tools.ts","../src/langgraph-client.ts","../src/langgraph-tools.ts","../src/event-adapter.ts","../src/node.ts"],"names":["createATPTools","serverUrl","headers","hooks","client","AgentToolProtocolClient","baseUrl","connect","atpTools","createToolsFromATPClient","tools","map","tool","DynamicTool","name","description","func","convertToLangChainTools","ApprovalRequiredException","ClientCallbackError","constructor","approvalRequest","message","LangGraphATPClient","llm","embeddings","useLangGraphInterrupts","directApprovalHandler","pendingApprovals","Map","options","approvalHandler","serviceProviders","undefined","provideLLM","call","prompt","handleLLMCall","extract","schema","handleLLMExtract","classify","text","categories","handleLLMClassify","provideEmbedding","embed","handleEmbedding","provideApproval","request","context","handleApprovalRequest","init","version","getTypeDefinitions","execute","code","config","result","needsApproval","resumeWithApproval","executionId","approved","reason","approvalResponse","timestamp","Date","now","delete","resume","getPendingApproval","get","messages","systemPrompt","push","SystemMessage","HumanMessage","response","invoke","content","JSON","stringify","structuredLLM","withStructuredOutput","join","trim","includes","category","toLowerCase","fallback","Error","embedQuery","getUnderlyingClient","cleanContext","set","log","warn","defaultExecutionConfig","clientOptions","atpTool","ToolNames","EXECUTE_CODE","ATPExecuteTool","Tool","_call","input","parsed","parse","status","ExecutionStatus","COMPLETED","success","stats","FAILED","error","DynamicStructuredTool","zodSchema","inputSchema","isApprovalRequired","createSimpleATPTool","find","t","createLangChainEventHandler","onEvent","tags","metadata","event","baseEvent","run_id","runId","type","ATPEventType","THINKING","data","chunk","step","TOOL_START","apiGroup","toolName","TOOL_END","output","duration","TEXT","TEXT_END","SOURCE","url","title","summary","createdAt","PROGRESS","fraction","percentage","Math","round","ERROR","createCallbackManagerHandler","callbackManager","handleLLMNewToken","handleToolStart","handleToolEnd","handleCustomEvent","ATPExecutionNode","state","executionResult","lastExecutionStatus","lastExecutionOutput","asFunction","bind","createATPNode"],"mappings":";;;;;;;;AAkCA,eAAsBA,cAAAA,CACrBC,SAAAA,EACAC,OAAAA,EACAC,KAAAA,EAAmB;AAEnB,EAAA,MAAMC,MAAAA,GAAS,IAAIC,uBAAAA,CAAwB;IAAEC,OAAAA,EAASL,SAAAA;AAAWC,IAAAA,OAAAA;AAASC,IAAAA;GAAM,CAAA;AAChF,EAAA,MAAMC,OAAOG,OAAAA,EAAO;AAEpB,EAAA,MAAMC,QAAAA,GAAWC,yBAAyBL,MAAAA,CAAAA;AAE1C,EAAA,MAAMM,QAAQF,QAAAA,CAASG,GAAAA,CACtB,CAACC,IAAAA,KACA,IAAIC,WAAAA,CAAY;AACfC,IAAAA,IAAAA,EAAMF,IAAAA,CAAKE,IAAAA;AACXC,IAAAA,WAAAA,EAAaH,KAAKG,WAAAA,IAAe,EAAA;AACjCC,IAAAA,IAAAA,EAAMJ,IAAAA,CAAKI;AACZ,GAAA,CAAA,CAAA;AAGF,EAAA,OAAO;AAAEZ,IAAAA,MAAAA;AAAQM,IAAAA;AAAM,GAAA;AACxB;AApBsBV,MAAAA,CAAAA,cAAAA,EAAAA,gBAAAA,CAAAA;AA4Bf,SAASiB,wBAAwBP,KAAAA,EAAa;AACpD,EAAA,OAAOA,KAAAA,CAAMC,GAAAA,CACZ,CAACC,IAAAA,KACA,IAAIC,WAAAA,CAAY;AACfC,IAAAA,IAAAA,EAAMF,IAAAA,CAAKE,IAAAA;AACXC,IAAAA,WAAAA,EAAaH,KAAKG,WAAAA,IAAe,EAAA;AACjCC,IAAAA,IAAAA,EAAMJ,IAAAA,CAAKI;AACZ,GAAA,CAAA,CAAA;AAEH;AATgBC,MAAAA,CAAAA,uBAAAA,EAAAA,yBAAAA,CAAAA;AC+BT,IAAMC,yBAAAA,GAAN,cAAwCC,mBAAAA,CAAAA;EA7F/C;;;;AA8FCC,EAAAA,WAAAA,CAA4BC,eAAAA,EAAkC;AAC7D,IAAA,KAAA,CAAM,CAAA,mBAAA,EAAsBA,eAAAA,CAAgBC,OAAO,CAAA,CAAE,CAAA;SAD1BD,eAAAA,GAAAA,eAAAA;AAE3B,IAAA,IAAA,CAAKP,IAAAA,GAAO,2BAAA;AACb,EAAA;AACD;AAWO,IAAMS,qBAAN,MAAMA;EA7Gb;;;AA8GSnB,EAAAA,MAAAA;AACAoB,EAAAA,GAAAA;AACAC,EAAAA,UAAAA;AACAC,EAAAA,sBAAAA;AACAC,EAAAA,qBAAAA;AAKAC,EAAAA,gBAAAA,uBAAuBC,GAAAA,EAAAA;AAE/BT,EAAAA,WAAAA,CAAYU,OAAAA,EAAoC;AAC/C,IAAA,MAAM,EACL7B,SAAAA,EACAC,OAAAA,EACAsB,GAAAA,EACAC,UAAAA,EACAf,OACAgB,sBAAAA,GAAyB,IAAA,EACzBK,eAAAA,EACA5B,KAAAA,EAAK,GACF2B,OAAAA;AAEJ,IAAA,IAAA,CAAK1B,MAAAA,GAAS,IAAIC,uBAAAA,CAAwB;MACzCC,OAAAA,EAASL,SAAAA;AACTC,MAAAA,OAAAA;AACAC,MAAAA,KAAAA;AACA6B,MAAAA,gBAAAA,EAAkBtB,KAAAA,GAAQ;AAAEA,QAAAA;OAAM,GAAIuB;KACvC,CAAA;AACA,IAAA,IAAA,CAAKT,GAAAA,GAAMA,GAAAA;AACX,IAAA,IAAA,CAAKC,UAAAA,GAAaA,UAAAA;AAClB,IAAA,IAAA,CAAKC,sBAAAA,GAAyBA,sBAAAA;AAC9B,IAAA,IAAA,CAAKC,qBAAAA,GAAwBI,eAAAA;AAE7B,IAAA,IAAA,CAAK3B,OAAO8B,UAAAA,CAAW;MACtBC,IAAAA,kBAAM,MAAA,CAAA,OAAOC,QAAgBN,QAAAA,KAAAA;AAC5B,QAAA,OAAO,MAAM,IAAA,CAAKO,aAAAA,CAAcD,MAAAA,EAAQN,QAAAA,CAAAA;MACzC,CAAA,EAFM,MAAA,CAAA;MAGNQ,OAAAA,kBAAS,MAAA,CAAA,OAAOF,MAAAA,EAAgBG,MAAAA,EAAaT,QAAAA,KAAAA;AAC5C,QAAA,OAAO,MAAM,IAAA,CAAKU,gBAAAA,CAAiBJ,MAAAA,EAAQG,QAAQT,QAAAA,CAAAA;MACpD,CAAA,EAFS,SAAA,CAAA;MAGTW,QAAAA,kBAAU,MAAA,CAAA,OAAOC,IAAAA,EAAcC,UAAAA,EAAsBb,QAAAA,KAAAA;AACpD,QAAA,OAAO,MAAM,IAAA,CAAKc,iBAAAA,CAAkBF,IAAAA,EAAMC,YAAYb,QAAAA,CAAAA;MACvD,CAAA,EAFU,UAAA;KAGX,CAAA;AAEA,IAAA,IAAI,KAAKL,UAAAA,EAAY;AACpB,MAAA,IAAA,CAAKrB,OAAOyC,gBAAAA,CAAiB;AAC5BC,QAAAA,KAAAA,gCAAcJ,IAAAA,KAAAA;AACb,UAAA,OAAO,MAAM,IAAA,CAAKK,eAAAA,CAAgBL,IAAAA,CAAAA;QACnC,CAAA,EAFO,OAAA;OAGR,CAAA;AACD,IAAA;AAEA,IAAA,IAAA,CAAKtC,OAAO4C,eAAAA,CAAgB;MAC3BC,OAAAA,kBAAS,MAAA,CAAA,OAAO3B,SAAiB4B,OAAAA,KAAAA;AAChC,QAAA,OAAO,MAAM,IAAA,CAAKC,qBAAAA,CAAsB7B,OAAAA,EAAS4B,OAAAA,CAAAA;MAClD,CAAA,EAFS,SAAA;KAGV,CAAA;AACD,EAAA;;;;AAKA,EAAA,MAAM3C,OAAAA,GAAyB;AAC9B,IAAA,MAAM,IAAA,CAAKH,OAAOgD,IAAAA,CAAK;MAAEtC,IAAAA,EAAM,sBAAA;MAAwBuC,OAAAA,EAAS;KAAQ,CAAA;AACxE,IAAA,MAAM,IAAA,CAAKjD,OAAOG,OAAAA,EAAO;AAC1B,EAAA;;;;EAKA+C,kBAAAA,GAA6B;AAC5B,IAAA,OAAO,IAAA,CAAKlD,OAAOkD,kBAAAA,EAAkB;AACtC,EAAA;;;;;;;;;;EAWA,MAAMC,OAAAA,CAAQC,MAAcC,MAAAA,EAAgE;AAC3F,IAAA,MAAMC,SAAS,MAAM,IAAA,CAAKtD,MAAAA,CAAOmD,OAAAA,CAAQC,MAAMC,MAAAA,CAAAA;AAE/C,IAAA,OAAO;AACNC,MAAAA,MAAAA;MACAC,aAAAA,EAAe;AAChB,KAAA;AACD,EAAA;;;;;;EAOA,MAAMC,kBAAAA,CACLC,WAAAA,EACAC,QAAAA,EACAC,MAAAA,EAC2B;AAC3B,IAAA,MAAMC,gBAAAA,GAAqC;AAC1CF,MAAAA,QAAAA;AACAC,MAAAA,MAAAA;AACAE,MAAAA,SAAAA,EAAWC,KAAKC,GAAAA;AACjB,KAAA;AAEA,IAAA,IAAA,CAAKvC,gBAAAA,CAAiBwC,OAAOP,WAAAA,CAAAA;AAE7B,IAAA,OAAO,MAAM,IAAA,CAAKzD,MAAAA,CAAOiE,MAAAA,CAAOR,aAAaG,gBAAAA,CAAAA;AAC9C,EAAA;;;;AAKAM,EAAAA,kBAAAA,CAAmBT,WAAAA,EAAkD;AACpE,IAAA,OAAO,IAAA,CAAKjC,gBAAAA,CAAiB2C,GAAAA,CAAIV,WAAAA,CAAAA;AAClC,EAAA;;;;EAKA,MAAcxB,aAAAA,CAAcD,QAAgBN,OAAAA,EAAgC;AAC3E,IAAA,MAAM0C,WAA0B,EAAA;AAEhC,IAAA,IAAI1C,SAAS2C,YAAAA,EAAc;AAC1BD,MAAAA,QAAAA,CAASE,IAAAA,CAAK,IAAIC,aAAAA,CAAc7C,OAAAA,CAAQ2C,YAAY,CAAA,CAAA;AACrD,IAAA;AAEAD,IAAAA,QAAAA,CAASE,IAAAA,CAAK,IAAIE,YAAAA,CAAaxC,MAAAA,CAAAA,CAAAA;AAE/B,IAAA,MAAMyC,QAAAA,GAAW,MAAM,IAAA,CAAKrD,GAAAA,CAAIsD,OAAON,QAAAA,CAAAA;AAEvC,IAAA,OAAO,OAAOK,SAASE,OAAAA,KAAY,QAAA,GAChCF,SAASE,OAAAA,GACTC,IAAAA,CAAKC,SAAAA,CAAUJ,QAAAA,CAASE,OAAO,CAAA;AACnC,EAAA;;;;EAKA,MAAcvC,gBAAAA,CAAiBJ,MAAAA,EAAgBG,MAAAA,EAAaT,OAAAA,EAA6B;AACxF,IAAA,MAAMoD,aAAAA,GAAgB,IAAA,CAAK1D,GAAAA,CAAI2D,oBAAAA,CAAqB5C,MAAAA,CAAAA;AAEpD,IAAA,MAAMiC,WAA0B,EAAA;AAChC,IAAA,IAAI1C,SAAS2C,YAAAA,EAAc;AAC1BD,MAAAA,QAAAA,CAASE,IAAAA,CAAK,IAAIC,aAAAA,CAAc7C,OAAAA,CAAQ2C,YAAY,CAAA,CAAA;AACrD,IAAA;AACAD,IAAAA,QAAAA,CAASE,IAAAA,CAAK,IAAIE,YAAAA,CAAaxC,MAAAA,CAAAA,CAAAA;AAE/B,IAAA,MAAMsB,MAAAA,GAAS,MAAMwB,aAAAA,CAAcJ,MAAAA,CAAON,QAAAA,CAAAA;AAE1C,IAAA,OAAOd,MAAAA;AACR,EAAA;;;;EAKA,MAAcd,iBAAAA,CACbF,IAAAA,EACAC,UAAAA,EACAb,OAAAA,EACkB;AAClB,IAAA,MAAMM,MAAAA,GAAS,CAAA,0DAAA,EAA6DO,UAAAA,CAAWyC,IAAAA,CAAK,IAAA,CAAA;;QAAkB1C,IAAAA;;;AAE9G,IAAA,MAAM8B,WAA0B,EAAA;AAChC,IAAA,IAAI1C,SAAS2C,YAAAA,EAAc;AAC1BD,MAAAA,QAAAA,CAASE,IAAAA,CAAK,IAAIC,aAAAA,CAAc7C,OAAAA,CAAQ2C,YAAY,CAAA,CAAA;AACrD,IAAA;AACAD,IAAAA,QAAAA,CAASE,IAAAA,CAAK,IAAIE,YAAAA,CAAaxC,MAAAA,CAAAA,CAAAA;AAE/B,IAAA,MAAMyC,QAAAA,GAAW,MAAM,IAAA,CAAKrD,GAAAA,CAAIsD,OAAON,QAAAA,CAAAA;AAEvC,IAAA,MAAMd,MAAAA,GACL,OAAOmB,QAAAA,CAASE,OAAAA,KAAY,WACzBF,QAAAA,CAASE,OAAAA,CAAQM,IAAAA,EAAI,GACrBL,IAAAA,CAAKC,SAAAA,CAAUJ,QAAAA,CAASE,OAAO,EAAEM,IAAAA,EAAI;AAEzC,IAAA,IAAI,CAAC1C,UAAAA,CAAW2C,QAAAA,CAAS5B,MAAAA,CAAAA,EAAS;AACjC,MAAA,KAAA,MAAW6B,YAAY5C,UAAAA,EAAY;AAClC,QAAA,IAAIe,OAAO8B,WAAAA,EAAW,CAAGF,SAASC,QAAAA,CAASC,WAAAA,EAAW,CAAA,EAAK;AAC1D,UAAA,OAAOD,QAAAA;AACR,QAAA;AACD,MAAA;AACA,MAAA,MAAME,QAAAA,GAAW9C,WAAW,CAAA,CAAA;AAC5B,MAAA,IAAI,CAAC8C,QAAAA,EAAU;AACd,QAAA,MAAM,IAAIC,MAAM,2CAAA,CAAA;AACjB,MAAA;AACA,MAAA,OAAOD,QAAAA;AACR,IAAA;AAEA,IAAA,OAAO/B,MAAAA;AACR,EAAA;;;;AAKA,EAAA,MAAcX,gBAAgBL,IAAAA,EAAiC;AAC9D,IAAA,IAAI,CAAC,KAAKjB,UAAAA,EAAY;AACrB,MAAA,MAAM,IAAIiE,MACT,yFAAA,CAAA;AAEF,IAAA;AAEA,IAAA,OAAO,MAAM,IAAA,CAAKjE,UAAAA,CAAWkE,UAAAA,CAAWjD,IAAAA,CAAAA;AACzC,EAAA;;;;EAKAkD,mBAAAA,GAA+C;AAC9C,IAAA,OAAO,IAAA,CAAKxF,MAAAA;AACb,EAAA;EAEA,MAAc+C,qBAAAA,CACb7B,SACA4B,OAAAA,EACqE;AACrE,IAAA,MAAMW,cAAeX,OAAAA,EAAiBW,WAAAA;AACtC,IAAA,MAAMgC,eAAe3C,OAAAA,GAAU;MAAE,GAAGA;KAAQ,GAAIjB,MAAAA;AAChD,IAAA,IAAI4D,YAAAA,EAAc;AACjB,MAAA,OAAQA,YAAAA,CAAqBhC,WAAAA;AAC9B,IAAA;AAEA,IAAA,IAAI,KAAKnC,sBAAAA,EAAwB;AAChC,MAAA,IAAI,OAAOmC,WAAAA,KAAgB,QAAA,IAAY,CAACA,WAAAA,EAAa;AACpD,QAAA,MAAM,IAAI6B,MAAM,oDAAA,CAAA;AACjB,MAAA;AAEA,MAAA,MAAMrE,eAAAA,GAAmC;AACxCC,QAAAA,OAAAA;QACA4B,OAAAA,EAAS2C,YAAAA;AACThC,QAAAA,WAAAA;AACAI,QAAAA,SAAAA,EAAWC,KAAKC,GAAAA;AACjB,OAAA;AAEA,MAAA,IAAA,CAAKvC,gBAAAA,CAAiBkE,GAAAA,CAAIjC,WAAAA,EAAaxC,eAAAA,CAAAA;AAEvC,MAAA,MAAM,IAAIH,0BAA0BG,eAAAA,CAAAA;AACrC,IAAA;AAEA,IAAA,IAAI,KAAKM,qBAAAA,EAAuB;AAC/B,MAAA,MAAMmC,QAAAA,GAAW,MAAM,IAAA,CAAKnC,qBAAAA,CAAsBL,SAASuE,YAAAA,CAAAA;AAC3D,MAAA,OAAO;AACN/B,QAAAA,QAAAA;AACAG,QAAAA,SAAAA,EAAWC,KAAKC,GAAAA;AACjB,OAAA;AACD,IAAA;AAEA4B,IAAAA,GAAAA,CAAIC,IAAAA,CAAK,CAAA,wCAAA,EAA2C1E,OAAAA,CAAAA,CAAS,CAAA;AAC7D,IAAA,OAAO;MACNwC,QAAAA,EAAU,KAAA;AACVG,MAAAA,SAAAA,EAAWC,KAAKC,GAAAA;AACjB,KAAA;AACD,EAAA;AACD;AC5RA,eAAsBnE,gBAAe8B,OAAAA,EAA8B;AAClE,EAAA,MAAM,EAAE7B,SAAAA,EAAWgG,sBAAAA,EAAwB,GAAGC,eAAAA,GAAkBpE,OAAAA;AAEhE,EAAA,MAAM1B,MAAAA,GAAS,IAAImB,kBAAAA,CAAmB;AACrCtB,IAAAA,SAAAA;IACA,GAAGiG;GACJ,CAAA;AAEA,EAAA,MAAM9F,OAAOG,OAAAA,EAAO;AAEpB,EAAA,MAAMC,QAAAA,GAAWC,wBAAAA,CAAyBL,MAAAA,CAAOwF,mBAAAA,EAAmB,CAAA;AAEpE,EAAA,MAAMlF,KAAAA,GAAQF,QAAAA,CAASG,GAAAA,CAAI,CAACwF,OAAAA,KAAAA;AAC3B,IAAA,IAAIA,OAAAA,CAAQrF,IAAAA,KAASsF,SAAAA,CAAUC,YAAAA,EAAc;AAC5C,MAAA,IAAMC,cAAAA,GAAN,MAAMA,cAAAA,SAAuBC,IAAAA,CAAAA;QAlGhC;;;QAmGIzF,IAAAA,GAAO,CAAA,IAAA,EAAOqF,QAAQrF,IAAI,CAAA,CAAA;AAC1BC,QAAAA,WAAAA,GAAcoF,QAAQpF,WAAAA,IAAe,wCAAA;AAErC,QAAA,MAAMyF,MAAMC,KAAAA,EAAgC;AAC3C,UAAA,IAAI;AACH,YAAA,IAAIjD,IAAAA;AACJ,YAAA,IAAI;AACH,cAAA,MAAMkD,MAAAA,GAAS1B,IAAAA,CAAK2B,KAAAA,CAAMF,KAAAA,CAAAA;AAC1BjD,cAAAA,IAAAA,GAAOkD,OAAOlD,IAAAA,IAAQiD,KAAAA;YACvB,CAAA,CAAA,MAAQ;AACPjD,cAAAA,IAAAA,GAAOiD,KAAAA;AACR,YAAA;AAEA,YAAA,MAAM/C,MAAAA,GAAS,MAAMtD,MAAAA,CAAOmD,OAAAA,CAAQC,MAAMyC,sBAAAA,CAAAA;AAE1C,YAAA,IAAIvC,MAAAA,CAAOA,MAAAA,CAAOkD,MAAAA,KAAWC,eAAAA,CAAgBC,SAAAA,EAAW;AACvD,cAAA,OAAO9B,KAAKC,SAAAA,CACX;gBACC8B,OAAAA,EAAS,IAAA;AACTrD,gBAAAA,MAAAA,EAAQA,OAAOA,MAAAA,CAAOA,MAAAA;AACtBsD,gBAAAA,KAAAA,EAAOtD,OAAOA,MAAAA,CAAOsD;AACtB,eAAA,EACA,MACA,CAAA,CAAA;AAEF,YAAA,CAAA,MAAA,IAAWtD,MAAAA,CAAOA,MAAAA,CAAOkD,MAAAA,KAAWC,eAAAA,CAAgBI,MAAAA,EAAQ;AAC3D,cAAA,OAAOjC,KAAKC,SAAAA,CACX;gBACC8B,OAAAA,EAAS,KAAA;AACTG,gBAAAA,KAAAA,EAAOxD,OAAOA,MAAAA,CAAOwD,KAAAA;AACrBF,gBAAAA,KAAAA,EAAOtD,OAAOA,MAAAA,CAAOsD;AACtB,eAAA,EACA,MACA,CAAA,CAAA;YAEF,CAAA,MAAO;AACN,cAAA,OAAOhC,KAAKC,SAAAA,CACX;gBACC8B,OAAAA,EAAS,KAAA;gBACTG,KAAAA,EAAO,iCAAA,GAAoCxD,OAAOA,MAAAA,CAAOkD;AAC1D,eAAA,EACA,MACA,CAAA,CAAA;AAEF,YAAA;AACD,UAAA,CAAA,CAAA,OAASM,KAAAA,EAAY;AACpB,YAAA,IAAIA,iBAAiBhG,yBAAAA,EAA2B;AAC/C,cAAA,MAAMgG,KAAAA;AACP,YAAA;AACA,YAAA,OAAOlC,KAAKC,SAAAA,CACX;cACC8B,OAAAA,EAAS,KAAA;AACTG,cAAAA,KAAAA,EAAOA,MAAM5F,OAAAA,IAAW;AACzB,aAAA,EACA,MACA,CAAA,CAAA;AAEF,UAAA;AACD,QAAA;AACD,OAAA;AAEA,MAAA,OAAO,IAAIgF,cAAAA,EAAAA;AACZ,IAAA;AAEA,IAAA,OAAO,IAAIa,qBAAAA,CAAsB;MAChCrG,IAAAA,EAAM,CAAA,IAAA,EAAOqF,QAAQrF,IAAI,CAAA,CAAA;AACzBC,MAAAA,WAAAA,EAAaoF,QAAQpF,WAAAA,IAAe,EAAA;MACpCwB,MAAAA,EAAQ4D,OAAAA,CAAQiB,aAAcjB,OAAAA,CAAQkB,WAAAA;AACtCrG,MAAAA,IAAAA,gCAAayF,KAAAA,KAAAA;AACZ,QAAA,IAAI;AACH,UAAA,MAAM/C,MAAAA,GAAS,MAAMyC,OAAAA,CAAQnF,IAAAA,CAAKyF,KAAAA,CAAAA;AAClC,UAAA,OAAO,OAAO/C,WAAW,QAAA,GAAWA,MAAAA,GAASsB,KAAKC,SAAAA,CAAUvB,MAAAA,EAAQ,MAAM,CAAA,CAAA;AAC3E,QAAA,CAAA,CAAA,OAASwD,KAAAA,EAAY;AACpB,UAAA,OAAOlC,KAAKC,SAAAA,CACX;YACC8B,OAAAA,EAAS,KAAA;AACTG,YAAAA,KAAAA,EAAOA,KAAAA,CAAM5F;AACd,WAAA,EACA,MACA,CAAA,CAAA;AAEF,QAAA;MACD,CAAA,EAdM,MAAA;KAeP,CAAA;EACD,CAAA,CAAA;AAEA,EAAA,OAAO;AACNlB,IAAAA,MAAAA;AACAM,IAAAA,KAAAA;AACA4G,IAAAA,kBAAAA,0BAAqBJ,KAAAA,KAAAA;AACpB,MAAA,OAAOA,KAAAA,YAAiBhG,yBAAAA;IACzB,CAAA,EAFoB,oBAAA,CAAA;IAGpB0C,kBAAAA,kBAAoB,MAAA,CAAA,OAAOC,WAAAA,EAAqBC,QAAAA,EAAmBC,MAAAA,KAAAA;AAClE,MAAA,OAAO,MAAM3D,MAAAA,CAAOwD,kBAAAA,CAAmBC,WAAAA,EAAaC,UAAUC,MAAAA,CAAAA;IAC/D,CAAA,EAFoB,oBAAA;AAGrB,GAAA;AACD;AA/GsB/D,MAAAA,CAAAA,eAAAA,EAAAA,gBAAAA,CAAAA;AAuHtB,eAAsBuH,mBAAAA,CACrBtH,SAAAA,EACAuB,GAAAA,EACAtB,OAAAA,EAAgC;AAEhC,EAAA,MAAMwD,MAAAA,GAAS,MAAM1D,eAAAA,CAAe;AACnCC,IAAAA,SAAAA;AACAC,IAAAA,OAAAA;AACAsB,IAAAA;GACD,CAAA;AACA,EAAA,MAAMZ,IAAAA,GAAO8C,MAAAA,CAAOhD,KAAAA,CAAM8G,IAAAA,CAAK,CAACC,CAAAA,KAAMA,CAAAA,CAAE3G,IAAAA,KAAS,CAAA,IAAA,EAAOsF,SAAAA,CAAUC,YAAY,CAAA,CAAE,CAAA;AAChF,EAAA,IAAI,CAACzF,IAAAA,EAAM;AACV,IAAA,MAAM,IAAI8E,MAAM,wCAAA,CAAA;AACjB,EAAA;AACA,EAAA,OAAO9E,IAAAA;AACR;AAfsB2G,MAAAA,CAAAA,mBAAAA,EAAAA,qBAAAA,CAAAA;ACvJf,SAASG,2BAAAA,CACfC,OAAAA,EACA7F,OAAAA,GAA8C,EAAC,EAAC;AAEhD,EAAA,MAAM,EAAE8F,IAAAA,GAAO,IAAIC,QAAAA,GAAW,IAAE,GAAK/F,OAAAA;AAErC,EAAA,OAAO,CAACgG,KAAAA,KAAAA;AACP,IAAA,MAAMC,SAAAA,GAAY;AACjBC,MAAAA,MAAAA,EAAQF,KAAAA,CAAMG,KAAAA;MACdL,IAAAA,EAAM;AAAC,QAAA,KAAA;AAAUA,QAAAA,GAAAA;;MACjBC,QAAAA,EAAU;QAAE,GAAGA,QAAAA;AAAU5D,QAAAA,SAAAA,EAAW6D,KAAAA,CAAM7D;AAAU;AACrD,KAAA;AAEA,IAAA,QAAQ6D,MAAMI,IAAAA;AACb,MAAA,KAAKC,aAAaC,QAAAA,EAAU;AAC3B,QAAA,MAAMC,OAAOP,KAAAA,CAAMO,IAAAA;AACnBV,QAAAA,OAAAA,CAAQ;UACP,GAAGI,SAAAA;UACHD,KAAAA,EAAO,eAAA;UACPhH,IAAAA,EAAM,cAAA;UACNuH,IAAAA,EAAM;AACLC,YAAAA,KAAAA,EAAOD,IAAAA,CAAKtD,OAAAA;AACZwD,YAAAA,IAAAA,EAAMF,IAAAA,CAAKE;AACZ;SACD,CAAA;AACA,QAAA;AACD,MAAA;AAEA,MAAA,KAAKJ,aAAaK,UAAAA,EAAY;AAC7B,QAAA,MAAMH,OAAOP,KAAAA,CAAMO,IAAAA;AACnBV,QAAAA,OAAAA,CAAQ;UACP,GAAGI,SAAAA;UACHD,KAAAA,EAAO,eAAA;AACPhH,UAAAA,IAAAA,EAAM,CAAA,EAAGuH,IAAAA,CAAKI,QAAQ,CAAA,CAAA,EAAIJ,KAAKK,QAAQ,CAAA,CAAA;UACvCL,IAAAA,EAAM;AACL5B,YAAAA,KAAAA,EAAO4B,IAAAA,CAAK5B;AACb,WAAA;UACAoB,QAAAA,EAAU;AACT,YAAA,GAAGE,SAAAA,CAAUF,QAAAA;AACbY,YAAAA,QAAAA,EAAUJ,IAAAA,CAAKI,QAAAA;AACfC,YAAAA,QAAAA,EAAUL,IAAAA,CAAKK;AAChB;SACD,CAAA;AACA,QAAA;AACD,MAAA;AAEA,MAAA,KAAKP,aAAaQ,QAAAA,EAAU;AAC3B,QAAA,MAAMN,OAAOP,KAAAA,CAAMO,IAAAA;AAQnBV,QAAAA,OAAAA,CAAQ;UACP,GAAGI,SAAAA;UACHD,KAAAA,EAAO,aAAA;AACPhH,UAAAA,IAAAA,EAAM,CAAA,EAAGuH,IAAAA,CAAKI,QAAQ,CAAA,CAAA,EAAIJ,KAAKK,QAAQ,CAAA,CAAA;UACvCL,IAAAA,EAAM;AACLO,YAAAA,MAAAA,EAAQP,IAAAA,CAAKO,MAAAA;AACb1B,YAAAA,KAAAA,EAAOmB,IAAAA,CAAKnB;AACb,WAAA;UACAW,QAAAA,EAAU;AACT,YAAA,GAAGE,SAAAA,CAAUF,QAAAA;AACbY,YAAAA,QAAAA,EAAUJ,IAAAA,CAAKI,QAAAA;AACfC,YAAAA,QAAAA,EAAUL,IAAAA,CAAKK,QAAAA;AACfG,YAAAA,QAAAA,EAAUR,IAAAA,CAAKQ,QAAAA;AACf9B,YAAAA,OAAAA,EAASsB,IAAAA,CAAKtB;AACf;SACD,CAAA;AACA,QAAA;AACD,MAAA;AAEA,MAAA,KAAKoB,aAAaW,IAAAA,EAAM;AACvB,QAAA,MAAMT,OAAOP,KAAAA,CAAMO,IAAAA;AACnBV,QAAAA,OAAAA,CAAQ;UACP,GAAGI,SAAAA;UACHD,KAAAA,EAAO,iBAAA;UACPhH,IAAAA,EAAM,YAAA;UACNuH,IAAAA,EAAM;AACLC,YAAAA,KAAAA,EAAOD,IAAAA,CAAK3F;AACb;SACD,CAAA;AACA,QAAA;AACD,MAAA;AAEA,MAAA,KAAKyF,YAAAA,CAAaY,QAAAA;AACjBpB,QAAAA,OAAAA,CAAQ;UACP,GAAGI,SAAAA;UACHD,KAAAA,EAAO,cAAA;UACPhH,IAAAA,EAAM,YAAA;AACNuH,UAAAA,IAAAA,EAAM;SACP,CAAA;AACA,QAAA;AAED,MAAA,KAAKF,aAAaa,MAAAA,EAAQ;AACzB,QAAA,MAAMX,OAAOP,KAAAA,CAAMO,IAAAA;AAMnBV,QAAAA,OAAAA,CAAQ;UACP,GAAGI,SAAAA;UACHD,KAAAA,EAAO,iBAAA;UACPhH,IAAAA,EAAM,YAAA;UACNuH,IAAAA,EAAM;AACLY,YAAAA,GAAAA,EAAKZ,IAAAA,CAAKY,GAAAA;AACVC,YAAAA,KAAAA,EAAOb,IAAAA,CAAKa,KAAAA;AACZC,YAAAA,OAAAA,EAASd,IAAAA,CAAKc,OAAAA;AACdC,YAAAA,SAAAA,EAAWf,IAAAA,CAAKe;AACjB;SACD,CAAA;AACA,QAAA;AACD,MAAA;AAEA,MAAA,KAAKjB,aAAakB,QAAAA,EAAU;AAC3B,QAAA,MAAMhB,OAAOP,KAAAA,CAAMO,IAAAA;AACnBV,QAAAA,OAAAA,CAAQ;UACP,GAAGI,SAAAA;UACHD,KAAAA,EAAO,iBAAA;UACPhH,IAAAA,EAAM,cAAA;UACNuH,IAAAA,EAAM;AACL/G,YAAAA,OAAAA,EAAS+G,IAAAA,CAAK/G,OAAAA;AACdgI,YAAAA,QAAAA,EAAUjB,IAAAA,CAAKiB,QAAAA;AACfC,YAAAA,UAAAA,EAAYC,IAAAA,CAAKC,KAAAA,CAAMpB,IAAAA,CAAKiB,QAAAA,GAAW,GAAA;AACxC;SACD,CAAA;AACA,QAAA;AACD,MAAA;AAEA,MAAA,KAAKnB,aAAauB,KAAAA,EAAO;AACxB,QAAA,MAAMrB,OAAOP,KAAAA,CAAMO,IAAAA;AACnBV,QAAAA,OAAAA,CAAQ;UACP,GAAGI,SAAAA;UACHD,KAAAA,EAAO,gBAAA;UACPhH,IAAAA,EAAM,WAAA;UACNuH,IAAAA,EAAM;AACLnB,YAAAA,KAAAA,EAAOmB,IAAAA,CAAK/G,OAAAA;AACZkC,YAAAA,IAAAA,EAAM6E,IAAAA,CAAK7E;AACZ;SACD,CAAA;AACA,QAAA;AACD,MAAA;AAEA,MAAA;AAECmE,QAAAA,OAAAA,CAAQ;UACP,GAAGI,SAAAA;UACHD,KAAAA,EAAO,iBAAA;UACPhH,IAAAA,EAAM,CAAA,IAAA,EAAOgH,MAAMI,IAAI,CAAA,CAAA;AACvBG,UAAAA,IAAAA,EAAMP,KAAAA,CAAMO;SACb,CAAA;AACA,QAAA;AACF;AACD,EAAA,CAAA;AACD;AA7JgBX,MAAAA,CAAAA,2BAAAA,EAAAA,6BAAAA,CAAAA;AAsKT,SAASiC,6BAA6BC,eAAAA,EA2B5C;AACA,EAAA,OAAO,CAAC9B,KAAAA,KAAAA;AACP,IAAA,QAAQA,MAAMI,IAAAA;AACb,MAAA,KAAKC,aAAaC,QAAAA,EAAU;AAC3B,QAAA,MAAMC,OAAOP,KAAAA,CAAMO,IAAAA;AACnBuB,QAAAA,eAAAA,CAAgBC,iBAAAA,GAAoBxB,IAAAA,CAAKtD,OAAAA,EAAS9C,MAAAA,EAAW6F,MAAMG,KAAK,CAAA;AACxE,QAAA;AACD,MAAA;AAEA,MAAA,KAAKE,aAAaK,UAAAA,EAAY;AAC7B,QAAA,MAAMH,OAAOP,KAAAA,CAAMO,IAAAA;AACnBuB,QAAAA,eAAAA,CAAgBE,eAAAA,GACf;AAAEhJ,UAAAA,IAAAA,EAAM,CAAA,EAAGuH,IAAAA,CAAKI,QAAQ,CAAA,CAAA,EAAIJ,KAAKK,QAAQ,CAAA;AAAG,SAAA,EAC5C1D,KAAKC,SAAAA,CAAUoD,IAAAA,CAAK5B,KAAK,CAAA,EACzBqB,KAAAA,CAAMG,OACNhG,MAAAA,EACA;AAAC,UAAA;AACD,SAAA,EAAA;AAAEwG,UAAAA,QAAAA,EAAUJ,IAAAA,CAAKI;SAAS,CAAA;AAE3B,QAAA;AACD,MAAA;AAEA,MAAA,KAAKN,aAAaQ,QAAAA,EAAU;AAC3B,QAAA,MAAMN,OAAOP,KAAAA,CAAMO,IAAAA;AACnBuB,QAAAA,eAAAA,CAAgBG,aAAAA,GAAgB/E,KAAKC,SAAAA,CAAUoD,IAAAA,CAAKO,MAAM,CAAA,EAAGd,KAAAA,CAAMG,OAAOhG,MAAAA,EAAW;AACpF,UAAA;AACA,SAAA,CAAA;AACD,QAAA;AACD,MAAA;AAEA,MAAA,KAAKkG,aAAaW,IAAAA,EAAM;AACvB,QAAA,MAAMT,OAAOP,KAAAA,CAAMO,IAAAA;AACnBuB,QAAAA,eAAAA,CAAgBC,iBAAAA,GAAoBxB,IAAAA,CAAK3F,IAAAA,EAAMT,MAAAA,EAAW6F,MAAMG,KAAK,CAAA;AACrE,QAAA;AACD,MAAA;AAEA,MAAA;AACC2B,QAAAA,eAAAA,CAAgBI,iBAAAA,GAAoB,OAAOlC,KAAAA,CAAMI,IAAI,IAAIJ,KAAAA,CAAMO,IAAAA,EAAMP,MAAMG,KAAAA,EAAO;AAAC,UAAA;AAAQ,SAAA,EAAA;AAC1FhE,UAAAA,SAAAA,EAAW6D,KAAAA,CAAM7D;SAClB,CAAA;AACA,QAAA;AACF;AACD,EAAA,CAAA;AACD;AAtEgB0F,MAAAA,CAAAA,4BAAAA,EAAAA,8BAAAA,CAAAA;ACpNT,IAAMM,mBAAN,MAAMA;EALb;;;AAMS7J,EAAAA,MAAAA;AAERgB,EAAAA,WAAAA,CAAYhB,MAAAA,EAAiC;AAC5C,IAAA,IAAA,CAAKA,MAAAA,GAASA,MAAAA;AACf,EAAA;;;;AAKA,EAAA,MAAMmD,QAAQ2G,KAAAA,EAA8E;AAC3F,IAAA,IAAI,CAACA,MAAM1G,IAAAA,EAAM;AAChB,MAAA,MAAM,IAAIkC,MAAM,2BAAA,CAAA;AACjB,IAAA;AAEA,IAAA,MAAMhC,SAAS,MAAM,IAAA,CAAKtD,MAAAA,CAAOmD,OAAAA,CAAQ2G,MAAM1G,IAAI,CAAA;AAEnD,IAAA,OAAO;MACN,GAAG0G,KAAAA;MACHC,eAAAA,EAAiBzG,MAAAA;AACjB0G,MAAAA,mBAAAA,EAAqB1G,MAAAA,CAAOkD,MAAAA;AAC5ByD,MAAAA,mBAAAA,EACC3G,OAAOkD,MAAAA,KAAWC,eAAAA,CAAgBC,SAAAA,GAAYpD,MAAAA,CAAOA,SAASA,MAAAA,CAAOwD;AACvE,KAAA;AACD,EAAA;;;;EAKAoD,UAAAA,GAAa;AACZ,IAAA,OAAO,IAAA,CAAK/G,OAAAA,CAAQgH,IAAAA,CAAK,IAAI,CAAA;AAC9B,EAAA;AACD;AAKO,SAASC,cAAcpK,MAAAA,EAA+B;AAC5D,EAAA,OAAO,OAAO8J,KAAAA,KAAAA;AACb,IAAA,IAAI,CAACA,MAAM1G,IAAAA,EAAM;AAChB,MAAA,MAAM,IAAIkC,MAAM,2BAAA,CAAA;AACjB,IAAA;AAEA,IAAA,MAAMhC,MAAAA,GAAS,MAAMtD,MAAAA,CAAOmD,OAAAA,CAAQ2G,MAAM1G,IAAI,CAAA;AAE9C,IAAA,OAAO;MACN,GAAG0G,KAAAA;MACHC,eAAAA,EAAiBzG,MAAAA;AACjB0G,MAAAA,mBAAAA,EAAqB1G,MAAAA,CAAOkD,MAAAA;AAC5ByD,MAAAA,mBAAAA,EACC3G,OAAOkD,MAAAA,KAAWC,eAAAA,CAAgBC,SAAAA,GAAYpD,MAAAA,CAAOA,SAASA,MAAAA,CAAOwD;AACvE,KAAA;AACD,EAAA,CAAA;AACD;AAhBgBsD,MAAAA,CAAAA,aAAAA,EAAAA,eAAAA,CAAAA","file":"index.js","sourcesContent":["/**\n * LangChain Integration for Agent Tool Protocol\n *\n * Converts ATP client tools into LangChain DynamicTool instances\n */\n\nimport {\n\tAgentToolProtocolClient,\n\tcreateToolsFromATPClient,\n\ttype Tool,\n\ttype ClientHooks,\n} from '@mondaydotcomorg/atp-client';\nimport { DynamicTool } from '@langchain/core/tools';\n\n/**\n * Creates ATP client and returns LangChain-compatible DynamicTool instances\n * The client is automatically connected and ready to use.\n *\n * @param serverUrl - ATP server URL (e.g. 'http://localhost:3333')\n * @param headers - Optional headers for authentication (e.g. { Authorization: 'Bearer token' })\n * @param hooks - Optional hooks for intercepting and modifying client behavior\n * @returns Promise of { client, tools } where tools is an array of LangChain DynamicTools\n *\n * @example\n * ```typescript\n * const { client, tools } = await createATPTools('http://localhost:3333', {\n * Authorization: 'Bearer api-key'\n * });\n *\n * // Use tools with any LangChain agent\n * const agent = await createReactAgent({ llm, tools, prompt });\n * const executor = new AgentExecutor({ agent, tools });\n * ```\n */\nexport async function createATPTools(\n\tserverUrl: string,\n\theaders?: Record<string, string>,\n\thooks?: ClientHooks\n) {\n\tconst client = new AgentToolProtocolClient({ baseUrl: serverUrl, headers, hooks });\n\tawait client.connect();\n\n\tconst atpTools = createToolsFromATPClient(client);\n\n\tconst tools = atpTools.map(\n\t\t(tool: Tool) =>\n\t\t\tnew DynamicTool({\n\t\t\t\tname: tool.name,\n\t\t\t\tdescription: tool.description || '',\n\t\t\t\tfunc: tool.func,\n\t\t\t})\n\t);\n\n\treturn { client, tools };\n}\n\n/**\n * Converts generic ATP tools into LangChain DynamicTool instances\n *\n * @param tools - Array of ATP tools (with inputSchema and func)\n * @returns Array of LangChain DynamicTools\n */\nexport function convertToLangChainTools(tools: Tool[]): DynamicTool[] {\n\treturn tools.map(\n\t\t(tool: Tool) =>\n\t\t\tnew DynamicTool({\n\t\t\t\tname: tool.name,\n\t\t\t\tdescription: tool.description || '',\n\t\t\t\tfunc: tool.func,\n\t\t\t})\n\t);\n}\n","/**\n * LangGraph-aware ATP Client\n *\n * This client integrates ATP execution with LangGraph's interrupt-based\n * human-in-the-loop (HITL) system. When ATP code calls atp.approval.request(),\n * it triggers a LangGraph interrupt for production-ready async approval flows.\n *\n * Features:\n * - LangGraph interrupt integration for approvals\n * - LLM sampling via LangChain models\n * - Checkpoint-aware state management\n * - Production-ready async approval workflows\n */\n\nimport { AgentToolProtocolClient, ClientCallbackError } from '@mondaydotcomorg/atp-client';\nimport type { ClientHooks } from '@mondaydotcomorg/atp-client';\nimport type { ExecutionResult, ExecutionConfig, ClientTool } from '@mondaydotcomorg/atp-protocol';\nimport { log } from '@mondaydotcomorg/atp-runtime';\nimport type { BaseChatModel } from '@langchain/core/language_models/chat_models';\nimport type { BaseMessage } from '@langchain/core/messages';\nimport { HumanMessage, SystemMessage, AIMessage } from '@langchain/core/messages';\nimport type { Embeddings } from '@langchain/core/embeddings';\n\n/**\n * Approval request that needs human decision\n */\nexport interface ApprovalRequest {\n\tmessage: string;\n\tcontext?: Record<string, unknown>;\n\texecutionId: string;\n\ttimestamp: number;\n}\n\n/**\n * Approval response from human\n */\nexport interface ApprovalResponse {\n\tapproved: boolean;\n\treason?: string;\n\ttimestamp: number;\n}\n\n/**\n * Options for creating the LangGraph ATP client\n */\nexport interface LangGraphATPClientOptions {\n\t/** Base URL of ATP server */\n\tserverUrl: string;\n\t/** Custom headers for authentication (e.g., { Authorization: 'Bearer token' }) */\n\theaders?: Record<string, string>;\n\t/** LangChain LLM for atp.llm.call() sampling */\n\tllm: BaseChatModel;\n\t/**\n\t * LangChain embeddings model for atp.embedding.embed() and atp.embedding.search()\n\t * Optional - if not provided, embedding calls will fail\n\t */\n\tembeddings?: Embeddings;\n\t/**\n\t * Client-provided tools that execute locally (e.g., file operations, browser automation)\n\t * These tools are registered with the server and can be called from server code execution\n\t */\n\ttools?: ClientTool[];\n\t/**\n\t * Whether to use LangGraph interrupts for approvals (production mode).\n\t * If false, will use a direct callback handler.\n\t * Default: true\n\t */\n\tuseLangGraphInterrupts?: boolean;\n\t/**\n\t * Direct approval handler (only used if useLangGraphInterrupts = false)\n\t */\n\tapprovalHandler?: (message: string, context?: Record<string, unknown>) => Promise<boolean>;\n\t/**\n\t * Hooks for intercepting and modifying client behavior\n\t */\n\thooks?: ClientHooks;\n}\n\n/**\n * Result of ATP execution that may need approval\n */\nexport interface ATPExecutionResult {\n\t/** Standard execution result */\n\tresult: ExecutionResult;\n\t/** If true, execution is waiting for approval via LangGraph interrupt */\n\tneedsApproval: boolean;\n\t/** Approval request details (if needsApproval = true) */\n\tapprovalRequest?: ApprovalRequest;\n}\n\n/**\n * Exception thrown when approval is needed - this triggers LangGraph interrupt\n */\nexport class ApprovalRequiredException extends ClientCallbackError {\n\tconstructor(public readonly approvalRequest: ApprovalRequest) {\n\t\tsuper(`Approval required: ${approvalRequest.message}`);\n\t\tthis.name = 'ApprovalRequiredException';\n\t}\n}\n\n/**\n * LangGraph-aware ATP Client\n *\n * Integrates ATP with LangGraph's production-ready interrupt system:\n * - atp.llm.call() → Routes to LangChain LLM (no interrupt)\n * - atp.approval.request() → Throws ApprovalRequiredException (triggers LangGraph interrupt)\n * - Supports checkpoint-based state persistence\n * - Enables async approval workflows\n */\nexport class LangGraphATPClient {\n\tprivate client: AgentToolProtocolClient;\n\tprivate llm: BaseChatModel;\n\tprivate embeddings?: Embeddings;\n\tprivate useLangGraphInterrupts: boolean;\n\tprivate directApprovalHandler?: (\n\t\tmessage: string,\n\t\tcontext?: Record<string, unknown>\n\t) => Promise<boolean>;\n\n\tprivate pendingApprovals = new Map<string, ApprovalRequest>();\n\n\tconstructor(options: LangGraphATPClientOptions) {\n\t\tconst {\n\t\t\tserverUrl,\n\t\t\theaders,\n\t\t\tllm,\n\t\t\tembeddings,\n\t\t\ttools,\n\t\t\tuseLangGraphInterrupts = true,\n\t\t\tapprovalHandler,\n\t\t\thooks,\n\t\t} = options;\n\n\t\tthis.client = new AgentToolProtocolClient({\n\t\t\tbaseUrl: serverUrl,\n\t\t\theaders,\n\t\t\thooks,\n\t\t\tserviceProviders: tools ? { tools } : undefined,\n\t\t});\n\t\tthis.llm = llm;\n\t\tthis.embeddings = embeddings;\n\t\tthis.useLangGraphInterrupts = useLangGraphInterrupts;\n\t\tthis.directApprovalHandler = approvalHandler;\n\n\t\tthis.client.provideLLM({\n\t\t\tcall: async (prompt: string, options?: any) => {\n\t\t\t\treturn await this.handleLLMCall(prompt, options);\n\t\t\t},\n\t\t\textract: async (prompt: string, schema: any, options?: any) => {\n\t\t\t\treturn await this.handleLLMExtract(prompt, schema, options);\n\t\t\t},\n\t\t\tclassify: async (text: string, categories: string[], options?: any) => {\n\t\t\t\treturn await this.handleLLMClassify(text, categories, options);\n\t\t\t},\n\t\t});\n\n\t\tif (this.embeddings) {\n\t\t\tthis.client.provideEmbedding({\n\t\t\t\tembed: async (text: string) => {\n\t\t\t\t\treturn await this.handleEmbedding(text);\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\tthis.client.provideApproval({\n\t\t\trequest: async (message: string, context?: Record<string, unknown>) => {\n\t\t\t\treturn await this.handleApprovalRequest(message, context);\n\t\t\t},\n\t\t});\n\t}\n\n\t/**\n\t * Initialize the client connection\n\t */\n\tasync connect(): Promise<void> {\n\t\tawait this.client.init({ name: 'langgraph-atp-client', version: '1.0.0' });\n\t\tawait this.client.connect();\n\t}\n\n\t/**\n\t * Get TypeScript API definitions\n\t */\n\tgetTypeDefinitions(): string {\n\t\treturn this.client.getTypeDefinitions();\n\t}\n\n\t/**\n\t * Execute ATP code with LangGraph interrupt support\n\t *\n\t * When approval is needed:\n\t * - If useLangGraphInterrupts=true: Throws ApprovalRequiredException\n\t * - If useLangGraphInterrupts=false: Uses direct approval handler\n\t *\n\t * @throws ApprovalRequiredException when approval is needed (interrupt mode)\n\t */\n\tasync execute(code: string, config?: Partial<ExecutionConfig>): Promise<ATPExecutionResult> {\n\t\tconst result = await this.client.execute(code, config);\n\n\t\treturn {\n\t\t\tresult,\n\t\t\tneedsApproval: false,\n\t\t};\n\t}\n\n\t/**\n\t * Resume execution after approval decision\n\t *\n\t * Call this after LangGraph resumes from interrupt with approval decision.\n\t */\n\tasync resumeWithApproval(\n\t\texecutionId: string,\n\t\tapproved: boolean,\n\t\treason?: string\n\t): Promise<ExecutionResult> {\n\t\tconst approvalResponse: ApprovalResponse = {\n\t\t\tapproved,\n\t\t\treason,\n\t\t\ttimestamp: Date.now(),\n\t\t};\n\n\t\tthis.pendingApprovals.delete(executionId);\n\n\t\treturn await this.client.resume(executionId, approvalResponse);\n\t}\n\n\t/**\n\t * Get pending approval request for an execution\n\t */\n\tgetPendingApproval(executionId: string): ApprovalRequest | undefined {\n\t\treturn this.pendingApprovals.get(executionId);\n\t}\n\n\t/**\n\t * Handle LLM call - route to LangChain LLM\n\t */\n\tprivate async handleLLMCall(prompt: string, options?: any): Promise<string> {\n\t\tconst messages: BaseMessage[] = [];\n\n\t\tif (options?.systemPrompt) {\n\t\t\tmessages.push(new SystemMessage(options.systemPrompt));\n\t\t}\n\n\t\tmessages.push(new HumanMessage(prompt));\n\n\t\tconst response = await this.llm.invoke(messages);\n\n\t\treturn typeof response.content === 'string'\n\t\t\t? response.content\n\t\t\t: JSON.stringify(response.content);\n\t}\n\n\t/**\n\t * Handle LLM extract - route to LangChain LLM with structured output\n\t */\n\tprivate async handleLLMExtract(prompt: string, schema: any, options?: any): Promise<any> {\n\t\tconst structuredLLM = this.llm.withStructuredOutput(schema);\n\n\t\tconst messages: BaseMessage[] = [];\n\t\tif (options?.systemPrompt) {\n\t\t\tmessages.push(new SystemMessage(options.systemPrompt));\n\t\t}\n\t\tmessages.push(new HumanMessage(prompt));\n\n\t\tconst result = await structuredLLM.invoke(messages);\n\n\t\treturn result;\n\t}\n\n\t/**\n\t * Handle LLM classify - route to LangChain LLM\n\t */\n\tprivate async handleLLMClassify(\n\t\ttext: string,\n\t\tcategories: string[],\n\t\toptions?: any\n\t): Promise<string> {\n\t\tconst prompt = `Classify the following text into one of these categories: ${categories.join(', ')}\\n\\nText: ${text}\\n\\nCategory:`;\n\n\t\tconst messages: BaseMessage[] = [];\n\t\tif (options?.systemPrompt) {\n\t\t\tmessages.push(new SystemMessage(options.systemPrompt));\n\t\t}\n\t\tmessages.push(new HumanMessage(prompt));\n\n\t\tconst response = await this.llm.invoke(messages);\n\n\t\tconst result =\n\t\t\ttypeof response.content === 'string'\n\t\t\t\t? response.content.trim()\n\t\t\t\t: JSON.stringify(response.content).trim();\n\n\t\tif (!categories.includes(result)) {\n\t\t\tfor (const category of categories) {\n\t\t\t\tif (result.toLowerCase().includes(category.toLowerCase())) {\n\t\t\t\t\treturn category;\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst fallback = categories[0];\n\t\t\tif (!fallback) {\n\t\t\t\tthrow new Error('No categories provided for classification');\n\t\t\t}\n\t\t\treturn fallback;\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t/**\n\t * Handle embedding - route to LangChain embeddings model\n\t */\n\tprivate async handleEmbedding(text: string): Promise<number[]> {\n\t\tif (!this.embeddings) {\n\t\t\tthrow new Error(\n\t\t\t\t'Embeddings model not provided. Pass embeddings option when creating LangGraphATPClient.'\n\t\t\t);\n\t\t}\n\n\t\treturn await this.embeddings.embedQuery(text);\n\t}\n\n\t/**\n\t * Get the underlying ATP client for advanced usage\n\t */\n\tgetUnderlyingClient(): AgentToolProtocolClient {\n\t\treturn this.client;\n\t}\n\n\tprivate async handleApprovalRequest(\n\t\tmessage: string,\n\t\tcontext?: Record<string, unknown>\n\t): Promise<{ approved: boolean; reason?: string; timestamp: number }> {\n\t\tconst executionId = (context as any)?.executionId;\n\t\tconst cleanContext = context ? { ...context } : undefined;\n\t\tif (cleanContext) {\n\t\t\tdelete (cleanContext as any).executionId;\n\t\t}\n\n\t\tif (this.useLangGraphInterrupts) {\n\t\t\tif (typeof executionId !== 'string' || !executionId) {\n\t\t\t\tthrow new Error('executionId is missing in approval request context');\n\t\t\t}\n\n\t\t\tconst approvalRequest: ApprovalRequest = {\n\t\t\t\tmessage,\n\t\t\t\tcontext: cleanContext,\n\t\t\t\texecutionId,\n\t\t\t\ttimestamp: Date.now(),\n\t\t\t};\n\n\t\t\tthis.pendingApprovals.set(executionId, approvalRequest);\n\n\t\t\tthrow new ApprovalRequiredException(approvalRequest);\n\t\t}\n\n\t\tif (this.directApprovalHandler) {\n\t\t\tconst approved = await this.directApprovalHandler(message, cleanContext);\n\t\t\treturn {\n\t\t\t\tapproved,\n\t\t\t\ttimestamp: Date.now(),\n\t\t\t};\n\t\t}\n\n\t\tlog.warn(`Approval request rejected (no handler): ${message}`);\n\t\treturn {\n\t\t\tapproved: false,\n\t\t\ttimestamp: Date.now(),\n\t\t};\n\t}\n}\n","/**\n * LangGraph Tools Integration for ATP\n *\n * Creates LangChain-compatible tools from ATP with full support for:\n * - LangGraph interrupts for human-in-the-loop approvals\n * - LLM sampling via LangChain models\n * - Checkpoint-based state persistence\n */\n\nimport { Tool, DynamicTool, DynamicStructuredTool } from '@langchain/core/tools';\nimport { type JSONSchema } from '@langchain/core/utils/json_schema';\nimport {\n\tLangGraphATPClient,\n\ttype LangGraphATPClientOptions,\n\tApprovalRequiredException,\n} from './langgraph-client.js';\nimport {\n\tcreateToolsFromATPClient,\n\tToolNames,\n\ttype Tool as ATPTool,\n} from '@mondaydotcomorg/atp-client';\nimport { ExecutionStatus, type ExecutionConfig } from '@mondaydotcomorg/atp-protocol';\n\n/**\n * Options for creating ATP tools with LangGraph integration\n */\nexport interface CreateATPToolsOptions extends Omit<LangGraphATPClientOptions, 'serverUrl'> {\n\t/** ATP server URL */\n\tserverUrl: string;\n\t/**\n\t * Default execution config for all ATP code executions\n\t */\n\tdefaultExecutionConfig?: Partial<ExecutionConfig>;\n}\n\n/**\n * Result of creating ATP tools\n */\nexport interface ATPToolsResult {\n\t/** The LangGraph-aware ATP client */\n\tclient: LangGraphATPClient;\n\t/** LangChain tools for agent use */\n\ttools: (Tool | DynamicStructuredTool)[];\n\t/**\n\t * Helper to check if an error is an approval request\n\t */\n\tisApprovalRequired: (error: any) => error is ApprovalRequiredException;\n\t/**\n\t * Helper to resume after approval\n\t */\n\tresumeWithApproval: (executionId: string, approved: boolean, reason?: string) => Promise<any>;\n}\n\n/**\n * Creates LangChain tools from ATP server with LangGraph interrupt support\n *\n * Example usage with LangGraph:\n * ```typescript\n * import { StateGraph } from \"@langchain/langgraph\";\n * import { MemorySaver } from \"@langchain/langgraph\";\n * import { ChatOpenAI } from \"@langchain/openai\";\n *\n * const llm = new ChatOpenAI({ modelName: \"gpt-4\" });\n * const { client, tools, isApprovalRequired, resumeWithApproval } = await createATPTools({\n * serverUrl: 'http://localhost:3333',\n * headers: { Authorization: 'Bearer test-key' }, // Optional\n * llm,\n * });\n *\n * // Use tools in LangGraph agent\n * const graph = new StateGraph({...})\n * .addNode(\"agent\", agentNode)\n * .addNode(\"approval\", async (state) => {\n * // Human reviews state.approvalRequest\n * return interrupt({ value: state.approvalRequest });\n * });\n *\n * const checkpointer = new MemorySaver();\n * const app = graph.compile({\n * checkpointer,\n * interruptBefore: [\"approval\"]\n * });\n * ```\n */\nexport async function createATPTools(options: CreateATPToolsOptions): Promise<ATPToolsResult> {\n\tconst { serverUrl, defaultExecutionConfig, ...clientOptions } = options;\n\n\tconst client = new LangGraphATPClient({\n\t\tserverUrl,\n\t\t...clientOptions,\n\t});\n\n\tawait client.connect();\n\n\tconst atpTools = createToolsFromATPClient(client.getUnderlyingClient());\n\n\tconst tools = atpTools.map((atpTool: ATPTool) => {\n\t\tif (atpTool.name === ToolNames.EXECUTE_CODE) {\n\t\t\tclass ATPExecuteTool extends Tool {\n\t\t\t\tname = `atp_${atpTool.name}`;\n\t\t\t\tdescription = atpTool.description || 'Execute TypeScript code in ATP sandbox';\n\n\t\t\t\tasync _call(input: string): Promise<string> {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tlet code: string;\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tconst parsed = JSON.parse(input);\n\t\t\t\t\t\t\tcode = parsed.code || input;\n\t\t\t\t\t\t} catch {\n\t\t\t\t\t\t\tcode = input;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst result = await client.execute(code, defaultExecutionConfig);\n\n\t\t\t\t\t\tif (result.result.status === ExecutionStatus.COMPLETED) {\n\t\t\t\t\t\t\treturn JSON.stringify(\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tsuccess: true,\n\t\t\t\t\t\t\t\t\tresult: result.result.result,\n\t\t\t\t\t\t\t\t\tstats: result.result.stats,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\t2\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} else if (result.result.status === ExecutionStatus.FAILED) {\n\t\t\t\t\t\t\treturn JSON.stringify(\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tsuccess: false,\n\t\t\t\t\t\t\t\t\terror: result.result.error,\n\t\t\t\t\t\t\t\t\tstats: result.result.stats,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\t2\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn JSON.stringify(\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tsuccess: false,\n\t\t\t\t\t\t\t\t\terror: 'Execution in unexpected state: ' + result.result.status,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\t2\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch (error: any) {\n\t\t\t\t\t\tif (error instanceof ApprovalRequiredException) {\n\t\t\t\t\t\t\tthrow error;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn JSON.stringify(\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tsuccess: false,\n\t\t\t\t\t\t\t\terror: error.message || 'Unknown error',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t2\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn new ATPExecuteTool();\n\t\t}\n\n\t\treturn new DynamicStructuredTool({\n\t\t\tname: `atp_${atpTool.name}`,\n\t\t\tdescription: atpTool.description || '',\n\t\t\tschema: atpTool.zodSchema || (atpTool.inputSchema as JSONSchema),\n\t\t\tfunc: async (input: any) => {\n\t\t\t\ttry {\n\t\t\t\t\tconst result = await atpTool.func(input);\n\t\t\t\t\treturn typeof result === 'string' ? result : JSON.stringify(result, null, 2);\n\t\t\t\t} catch (error: any) {\n\t\t\t\t\treturn JSON.stringify(\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tsuccess: false,\n\t\t\t\t\t\t\terror: error.message,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tnull,\n\t\t\t\t\t\t2\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t},\n\t\t});\n\t});\n\n\treturn {\n\t\tclient,\n\t\ttools,\n\t\tisApprovalRequired: (error: any): error is ApprovalRequiredException => {\n\t\t\treturn error instanceof ApprovalRequiredException;\n\t\t},\n\t\tresumeWithApproval: async (executionId: string, approved: boolean, reason?: string) => {\n\t\t\treturn await client.resumeWithApproval(executionId, approved, reason);\n\t\t},\n\t};\n}\n\n/**\n * Helper to create a simple ATP tool for existing LangGraph agents\n *\n * This creates a single tool that can execute ATP code. For more control,\n * use createATPTools() directly.\n */\nexport async function createSimpleATPTool(\n\tserverUrl: string,\n\tllm: any,\n\theaders?: Record<string, string>\n): Promise<Tool | DynamicStructuredTool> {\n\tconst result = await createATPTools({\n\t\tserverUrl,\n\t\theaders,\n\t\tllm,\n\t});\n\tconst tool = result.tools.find((t) => t.name === `atp_${ToolNames.EXECUTE_CODE}`);\n\tif (!tool) {\n\t\tthrow new Error('Failed to create ATP execute_code tool');\n\t}\n\treturn tool;\n}\n","/**\n * LangChain Event Adapter\n *\n * Converts ATP streaming events to LangChain-compatible event format.\n * Works with LangChain's callback system and streamEvents API.\n */\n\nimport { type ATPEvent, ATPEventType } from '@mondaydotcomorg/atp-protocol';\n\n/**\n * LangChain-style event format\n * Compatible with LangChain's streamEvents() output format\n */\nexport interface LangChainEvent {\n\tevent: string;\n\tname?: string;\n\tdata: unknown;\n\trun_id?: string;\n\tmetadata?: Record<string, unknown>;\n\ttags?: string[];\n}\n\n/**\n * Options for creating the LangChain event handler\n */\nexport interface CreateLangChainEventHandlerOptions {\n\t/**\n\t * Tags to add to all events\n\t */\n\ttags?: string[];\n\t/**\n\t * Metadata to add to all events\n\t */\n\tmetadata?: Record<string, unknown>;\n}\n\n/**\n * Creates an event handler that converts ATP events to LangChain event format.\n *\n * @param onEvent - Callback to receive LangChain-formatted events\n * @param options - Optional configuration\n * @returns An event handler function to pass to ATP's executeStream\n *\n * @example\n * ```typescript\n * const handler = createLangChainEventHandler((event) => {\n * console.log(event.event, event.data);\n * });\n *\n * const result = await client.executeStream(code, {}, handler);\n * ```\n */\nexport function createLangChainEventHandler(\n\tonEvent: (event: LangChainEvent) => void,\n\toptions: CreateLangChainEventHandlerOptions = {}\n): (event: ATPEvent) => void {\n\tconst { tags = [], metadata = {} } = options;\n\n\treturn (event: ATPEvent) => {\n\t\tconst baseEvent = {\n\t\t\trun_id: event.runId,\n\t\t\ttags: ['atp', ...tags],\n\t\t\tmetadata: { ...metadata, timestamp: event.timestamp },\n\t\t};\n\n\t\tswitch (event.type) {\n\t\t\tcase ATPEventType.THINKING: {\n\t\t\t\tconst data = event.data as { content: string; step?: string };\n\t\t\t\tonEvent({\n\t\t\t\t\t...baseEvent,\n\t\t\t\t\tevent: 'on_llm_stream',\n\t\t\t\t\tname: 'atp_thinking',\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tchunk: data.content,\n\t\t\t\t\t\tstep: data.step,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase ATPEventType.TOOL_START: {\n\t\t\t\tconst data = event.data as { toolName: string; apiGroup: string; input: unknown };\n\t\t\t\tonEvent({\n\t\t\t\t\t...baseEvent,\n\t\t\t\t\tevent: 'on_tool_start',\n\t\t\t\t\tname: `${data.apiGroup}.${data.toolName}`,\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tinput: data.input,\n\t\t\t\t\t},\n\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t...baseEvent.metadata,\n\t\t\t\t\t\tapiGroup: data.apiGroup,\n\t\t\t\t\t\ttoolName: data.toolName,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase ATPEventType.TOOL_END: {\n\t\t\t\tconst data = event.data as {\n\t\t\t\t\ttoolName: string;\n\t\t\t\t\tapiGroup: string;\n\t\t\t\t\toutput: unknown;\n\t\t\t\t\tduration: number;\n\t\t\t\t\tsuccess: boolean;\n\t\t\t\t\terror?: string;\n\t\t\t\t};\n\t\t\t\tonEvent({\n\t\t\t\t\t...baseEvent,\n\t\t\t\t\tevent: 'on_tool_end',\n\t\t\t\t\tname: `${data.apiGroup}.${data.toolName}`,\n\t\t\t\t\tdata: {\n\t\t\t\t\t\toutput: data.output,\n\t\t\t\t\t\terror: data.error,\n\t\t\t\t\t},\n\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t...baseEvent.metadata,\n\t\t\t\t\t\tapiGroup: data.apiGroup,\n\t\t\t\t\t\ttoolName: data.toolName,\n\t\t\t\t\t\tduration: data.duration,\n\t\t\t\t\t\tsuccess: data.success,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase ATPEventType.TEXT: {\n\t\t\t\tconst data = event.data as { text: string };\n\t\t\t\tonEvent({\n\t\t\t\t\t...baseEvent,\n\t\t\t\t\tevent: 'on_chain_stream',\n\t\t\t\t\tname: 'atp_output',\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tchunk: data.text,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase ATPEventType.TEXT_END:\n\t\t\t\tonEvent({\n\t\t\t\t\t...baseEvent,\n\t\t\t\t\tevent: 'on_chain_end',\n\t\t\t\t\tname: 'atp_output',\n\t\t\t\t\tdata: {},\n\t\t\t\t});\n\t\t\t\tbreak;\n\n\t\t\tcase ATPEventType.SOURCE: {\n\t\t\t\tconst data = event.data as {\n\t\t\t\t\turl: string;\n\t\t\t\t\ttitle: string;\n\t\t\t\t\tsummary?: string;\n\t\t\t\t\tcreatedAt?: string;\n\t\t\t\t};\n\t\t\t\tonEvent({\n\t\t\t\t\t...baseEvent,\n\t\t\t\t\tevent: 'on_custom_event',\n\t\t\t\t\tname: 'atp_source',\n\t\t\t\t\tdata: {\n\t\t\t\t\t\turl: data.url,\n\t\t\t\t\t\ttitle: data.title,\n\t\t\t\t\t\tsummary: data.summary,\n\t\t\t\t\t\tcreatedAt: data.createdAt,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase ATPEventType.PROGRESS: {\n\t\t\t\tconst data = event.data as { message: string; fraction: number };\n\t\t\t\tonEvent({\n\t\t\t\t\t...baseEvent,\n\t\t\t\t\tevent: 'on_custom_event',\n\t\t\t\t\tname: 'atp_progress',\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tmessage: data.message,\n\t\t\t\t\t\tfraction: data.fraction,\n\t\t\t\t\t\tpercentage: Math.round(data.fraction * 100),\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase ATPEventType.ERROR: {\n\t\t\t\tconst data = event.data as { message: string; code?: string };\n\t\t\t\tonEvent({\n\t\t\t\t\t...baseEvent,\n\t\t\t\t\tevent: 'on_chain_error',\n\t\t\t\t\tname: 'atp_error',\n\t\t\t\t\tdata: {\n\t\t\t\t\t\terror: data.message,\n\t\t\t\t\t\tcode: data.code,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tdefault:\n\t\t\t\t// Forward unknown events as custom events\n\t\t\t\tonEvent({\n\t\t\t\t\t...baseEvent,\n\t\t\t\t\tevent: 'on_custom_event',\n\t\t\t\t\tname: `atp_${event.type}`,\n\t\t\t\t\tdata: event.data,\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t}\n\t};\n}\n\n/**\n * Creates an event handler compatible with LangChain's CallbackManager.\n * Useful for integrating with existing LangChain callback infrastructure.\n *\n * @param callbackManager - LangChain CallbackManager or similar interface\n * @returns An event handler function to pass to ATP's executeStream\n */\nexport function createCallbackManagerHandler(callbackManager: {\n\thandleCustomEvent?: (\n\t\teventName: string,\n\t\tdata: unknown,\n\t\trunId?: string,\n\t\ttags?: string[],\n\t\tmetadata?: Record<string, unknown>\n\t) => Promise<void> | void;\n\thandleToolStart?: (\n\t\ttool: { name: string },\n\t\tinput: string,\n\t\trunId?: string,\n\t\tparentRunId?: string,\n\t\ttags?: string[],\n\t\tmetadata?: Record<string, unknown>\n\t) => Promise<void> | void;\n\thandleToolEnd?: (\n\t\toutput: string,\n\t\trunId?: string,\n\t\tparentRunId?: string,\n\t\ttags?: string[]\n\t) => Promise<void> | void;\n\thandleLLMNewToken?: (\n\t\ttoken: string,\n\t\tidx?: { prompt: number; completion: number },\n\t\trunId?: string\n\t) => Promise<void> | void;\n}): (event: ATPEvent) => void {\n\treturn (event: ATPEvent) => {\n\t\tswitch (event.type) {\n\t\t\tcase ATPEventType.THINKING: {\n\t\t\t\tconst data = event.data as { content: string };\n\t\t\t\tcallbackManager.handleLLMNewToken?.(data.content, undefined, event.runId);\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase ATPEventType.TOOL_START: {\n\t\t\t\tconst data = event.data as { toolName: string; apiGroup: string; input: unknown };\n\t\t\t\tcallbackManager.handleToolStart?.(\n\t\t\t\t\t{ name: `${data.apiGroup}.${data.toolName}` },\n\t\t\t\t\tJSON.stringify(data.input),\n\t\t\t\t\tevent.runId,\n\t\t\t\t\tundefined,\n\t\t\t\t\t['atp'],\n\t\t\t\t\t{ apiGroup: data.apiGroup }\n\t\t\t\t);\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase ATPEventType.TOOL_END: {\n\t\t\t\tconst data = event.data as { output: unknown };\n\t\t\t\tcallbackManager.handleToolEnd?.(JSON.stringify(data.output), event.runId, undefined, [\n\t\t\t\t\t'atp',\n\t\t\t\t]);\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase ATPEventType.TEXT: {\n\t\t\t\tconst data = event.data as { text: string };\n\t\t\t\tcallbackManager.handleLLMNewToken?.(data.text, undefined, event.runId);\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tdefault:\n\t\t\t\tcallbackManager.handleCustomEvent?.(`atp_${event.type}`, event.data, event.runId, ['atp'], {\n\t\t\t\t\ttimestamp: event.timestamp,\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t}\n\t};\n}\n","import { AgentToolProtocolClient } from '@mondaydotcomorg/atp-client';\nimport { ExecutionStatus } from '@mondaydotcomorg/atp-protocol';\n\n/**\n * LangGraph-compatible node for ATP execution\n */\nexport class ATPExecutionNode {\n\tprivate client: AgentToolProtocolClient;\n\n\tconstructor(client: AgentToolProtocolClient) {\n\t\tthis.client = client;\n\t}\n\n\t/**\n\t * Execute code from the state and update the state with results\n\t */\n\tasync execute(state: { code?: string; messages?: any[]; [key: string]: any }): Promise<any> {\n\t\tif (!state.code) {\n\t\t\tthrow new Error('No code provided in state');\n\t\t}\n\n\t\tconst result = await this.client.execute(state.code);\n\n\t\treturn {\n\t\t\t...state,\n\t\t\texecutionResult: result,\n\t\t\tlastExecutionStatus: result.status,\n\t\t\tlastExecutionOutput:\n\t\t\t\tresult.status === ExecutionStatus.COMPLETED ? result.result : result.error,\n\t\t};\n\t}\n\n\t/**\n\t * Create a function suitable for LangGraph node\n\t */\n\tasFunction() {\n\t\treturn this.execute.bind(this);\n\t}\n}\n\n/**\n * Helper to create a simple ATP execution node function\n */\nexport function createATPNode(client: AgentToolProtocolClient) {\n\treturn async (state: any) => {\n\t\tif (!state.code) {\n\t\t\tthrow new Error('No code provided in state');\n\t\t}\n\n\t\tconst result = await client.execute(state.code);\n\n\t\treturn {\n\t\t\t...state,\n\t\t\texecutionResult: result,\n\t\t\tlastExecutionStatus: result.status,\n\t\t\tlastExecutionOutput:\n\t\t\t\tresult.status === ExecutionStatus.COMPLETED ? result.result : result.error,\n\t\t};\n\t};\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mondaydotcomorg/atp-langchain",
3
- "version": "0.20.2",
3
+ "version": "0.20.4",
4
4
  "description": "LangChain integration for Agent Tool Protocol",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",
@@ -44,7 +44,7 @@
44
44
  "license": "MIT",
45
45
  "dependencies": {
46
46
  "@langchain/core": "^0.3.78",
47
- "@mondaydotcomorg/atp-client": "0.19.15",
47
+ "@mondaydotcomorg/atp-client": "0.19.16",
48
48
  "@mondaydotcomorg/atp-protocol": "0.19.15",
49
49
  "@mondaydotcomorg/atp-runtime": "0.19.14",
50
50
  "json-schema-to-zod": "^2.6.1",