@picoflow/ezgraph 0.0.13 → 0.0.15

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.
@@ -1 +1 @@
1
- const qN=d;(function(t,A){const k5={t:0xad,A:0xfd,r:0x125,i:0xa6,Z:0xce,Y:0xe8},qa=d,r=t();while(!![]){try{const i=-parseInt(qa(k5.t))/0x1*(-parseInt(qa(0x10b))/0x2)+-parseInt(qa(k5.A))/0x3+-parseInt(qa(k5.r))/0x4*(parseInt(qa(0xdc))/0x5)+-parseInt(qa(k5.i))/0x6*(parseInt(qa(0xd6))/0x7)+-parseInt(qa(0x122))/0x8+parseInt(qa(k5.Z))/0x9*(parseInt(qa(k5.Y))/0xa)+parseInt(qa(0x99))/0xb*(parseInt(qa(0xa8))/0xc);if(i===A)break;else r['push'](r['shift']());}catch(Z){r['push'](r['shift']());}}}(k,0x27bd1));var J=Object[qN(0xc6)],c=(t,A)=>J(t,qN(0xc9),{'value':A,'configurable':!0x0});import{mapChatMessagesToStoredMessages as l,mapStoredMessagesToChatMessages as e}from'@langchain/core/messages';import{BaseGraph as B}from'../base-graph.js';function k(){const kf=['CMvSzwfZzvr1CM4','DhjPBq','DgHVDwDODfnPz25HDhvYzq','y3vYCMvUDe5Vzgu','ndaW','Dg9ju09tDhjPBMC','Bw9Uz29KyG','jYbJAgfUz2vKigjLzM9Yzsb0AgLZihr1CM4Gy291BgqGyMuGC2f2zwqU','C3rVCMviAxn0B3jPzxm','AgLZDg9YAwvZ','mtyXmtq0nhLWs1DLEq','q09ttu9eqL9jra','mZm2mJG5mMTtveTHDq','CMvZDg9YzuHPC3rVCMLLCW','zxjYB3i','Dg9Rzw5Z','CMvHza','ntK0nJHzwhrsu2u','lIbszxn0B3jLig9Yig1Pz3jHDguGAxqGyMvMB3jLihnHDMLUzY4','q09ttu9FrejFq0Xjru5ux1nfq1jfva','u1fmsvrfx0rcx1bbveG','zgf0yq','CMv2AxnPB24','q29ZBw9ZihnLC3nPB24GCgvYC2LZDgvUy2uGCMvXDwLYzxmGq09ttu9eqL9vuKWGyw5Kienpu01prejFs0vzlcbVCIbdt1nnt19ftKrqt0LovcWGqvPvuKvFvevoqu5ux0Lelcbdt1nnt19eqL9dteLftLrFsuqSigfUzcbdt1nnt19eqL9dteLftLrFu0vduKvulG','y29Kzq','AxnmAxzLu2vZC2LVBLr1CM4','jYbZy2HLBweGDMvYC2LVBIa','zxHWAxjLC0f0','jYbJAgfUz2vKigjLzM9YzsbPDhmGBwLNCMf0Aw9UignVDwXKigjLihnHDMvKlG','twvTB3j5u2vZC2LVBKrVy3vTzw50q29UDgfPBMvY','DgHVDwDODa','u2vZC2LVBIaN','DhLWzq','lI9JB3nTB3mTC2vZC2LVBI1KB2n1BwvUDc5JB250ywLUzxiUANm','C3fSAxrL','AxrLBxm','zNjVBuvUDhjPzxm','yxnZAwDU','u0vtu0LptL9dt05gteLdva','oYbLEhbLy3rLzca','y29TBwL0rxHWzwn0zwrszxzPC2LVBG','q09ttu9tx0nptLrbsu5fuG','zgvMAw5LuhjVCgvYDhK','C3rYAw5N','CMvKDwnL','BMfTzq','yxnZzxj0swq','jYbPCYbHBhjLywr5ihbYB2nLC3nPBMCGysb0DxjUlG','CgfYC2u','D2fYBMLUz3m','nte4nerotgHcBq','CMvZCg9UC2vFBwv0ywrHDge','CMvXDwLYzuzYzwvmzwfZzq','zxPNCMfWAeLUDgvYBMfS','zw50CMLLCW','CgXHy2vOB2XKzxjeB2n1BwvUDa','y29UzMXPy3q','q09ttu9tx1riuK9vr0Hqvvq','n29TvvLjwG','q09ttu9eqL9trvntsu9ox0Le','qgf6DxjLl2nVC21VCW','C2f2zvn0yxrL','Aw5JBhvKzxm','tu9or09eqL9vuKW','nw92sfz6uW','qgf6DxjLl2LKzw50Axr5','yxnZzxj0u2vZC2LVBKDYyxbOu2nOzw1H','DhvYBG','zxjYB3jZ','lI9KyxrHl3nLC3nPB25ZlNnXBgL0zq','z3jHCgHty2HLBwfwzxjZAw9U','ihDHCM5PBMCOCYKGD2vYzsbKCM9WCgvKlG','zgf0ywjHC2vZ','ywrKAxrPB25HBf9RD2fYz3m','C2vZC2LVBLr1CM5mzwfZzu1Z','y29UDgfPBMvY','nti5meD6twLVAa','ywXS','lcbUB3qG','C2nOzw1HvMvYC2LVBG','BgfUz2DYyxbO','u0vtu0LptL9cvvnz','yxbWzw5Ktg9NCW','AxnbCNjHEq','jYbSB3n0igL0CYbSzwfZzsbIzwzVCMuGBg9NCYb3zxjLigfWCgvUzgvKoYa','C2LNBMf0DxjLqMvHCMLUz0nVBNrLBNrcBg9JAW','CMvXDwLYzu93BMvY','BgXTq29UzMLN','yxnZzxj0u2vZC2LVBKDYyxbO','l2LK','Bw9KAwzPzwrbDa','DxnHz2vFBwv0ywrHDge','zNjVBunVBMzPzW','Aw52ywXPzf90B29Sx2nHBgXZ','u2vZC2LVBLr1CM5fCNjVCG','jYb1C2vZigDYyxbOicC','y29TCgXLDgvK','mtC4otKYA3HSq3bk','jYbIzwXVBMDZihrVigDYyxbOicC','BgvHC2vK','q2fUBM90ihbLCNnPC3qGC2vZC2LVBIbKB2n1BwvUDcb2zxjZAw9Uia','DMvYC2LVBG','CMvZDg9YzvnLC3nPB25eB2n1BwvUDa','DhvYBKXLyxnLtxm','AxnszwnVCMq','zg9JDw1LBNrZ','q09ttu9eqL9lrvK','zMLYC3q','yMvNAw5uDxjU','y3jLyxrLswzoB3rfEgLZDhm','y29ZBw9Z','nNPfDeHQwa','CMvWBgfJzuLUy29TCgf0AwjSzq','B3jPz2LUywXuzxH0q29UDgvUDejSB2nR','C2v0','Bw9KzwXnzxrHzgf0yq','y29ZBw9Zzgi','Dg9VBf9JywXSCW','q09ttu9FrejFq0Xjru5ux0Le','zxHWzwn0zwrszxzPC2LVBG','y29UDgv4Da','y29UBMvJDa','C2vZC2LVBNm','CMvHzerVy3vTzw50','nJaWmda','z2v0','Cgf0Ahm','tM90igzVDw5K','zgvJAxnPB25Z','z3jHCgHjza','BwfW','C3rHDhvZ','zgvSzxrLu2vZC2LVBG','B2jQzwn0','mZu4mtuYsvfetg9P','z2v0vgLTzq','DxbZzxj0','oteWmJKYBNjPz0fp','zgLZCg9Zzq','jY4GvxnLicDTzw1VCNKNlcaNC3fSAxrLjYWGj21VBMDVzgiNlcbVCIaNy29ZBw9ZjY4','z2v0u2vZC2LVBG','BM9Kzxm','qvPvuKvFvevoqu5ux0Le','CMvZDg9Yzvn0yxrL','u0vtu0LptL9uvvjox0Xfqvnfx01t','BgvUz3rO','y29TBwL0uhjLzgLJyxrL','C3rHDhvZq29Kzq','BM93','z3jHCgG','CMvTB3zLtgvNywn5vg9VBfrYywnLCW','Dgv4Da','tu9or09eqL9dt0Xmrunusu9o','B3DUzxi','q09ttu9FrejFsuq','Bwf0y2HLC1nLC3nPB25xCML0zvbYzwrPy2f0zq','zgvSzxrL','AxnoB3rgB3vUza','y29UzMLN','jY4Gu3rHCNqGysbUzxCGC2vZC2LVBIb0BYbYDw4GysbKAwzMzxjLBNqGz3jHCgGU','CgfYDgL0Aw9Us2v5','y29TCgfYzufUzfn3yxa','AxrLBq','y2XVC2u','zgvJAxnPB25vC2fNzq','y3jLyxrLzef0','C2vZC2LVBLjLDMLZAw9U','ywXSB3DpD25LCG','Aw5FChjVz3jLC3m','AM9PBG','AxngAw5PDgu','mtfnAKDzEgO','y29TCgfJDfn0B3jLze1LC3nHz2vZ','C2L6zq'];k=function(){return kf;};return k();}import{ConfigManager as w}from'../config-manager.js';import{GRAPH_END_NODE as D}from'../graph-state.js';import{cloneJsonObject as o}from'../graph-context.js';import{GraphLlm as a}from'../graph-llm.config.js';import{replaceNodeStates as u}from'../node-state.js';import{createSessionLogs as n}from'../session-log.js';import{emptyTokenUsage as m,normalizeTokenUsage as E}from'../token-usage.js';import{assertGraphSchemaVersion as s}from'../stable-id.js';import{addDecisionUsage as L,emptyDecisionUsage as z,normalizeDecisionUsage as R}from'../decision/decision-types.js';const h=0x10,g=qN(0xed),q=qN(0xc2),Ce='SESSION_COMPLETED';class f extends Error{static{c(this,qN(0xfa));}[qN(0xb4)];constructor(A,r){const qu=qN;super(r),this[qu(0xc9)]=qu(0xfa),this[qu(0xb4)]=A;}}class N{static{c(this,'SessionManager');}['container'];[qN(0x103)];constructor(A=new V(),r=F()){const qP=qN;this['container']=A,this[qP(0x103)]=r;}static async[qN(0xf8)](r=new w()){const k8={t:0x119,A:0x9d,r:0x12c,i:0x119,Z:0xdb,Y:0xa2,H:0x110,M:0x106,O:0x12a,q0:0x112,q1:0x136,q2:0xa7,q3:0xec,q4:0xd7,q5:0xd8,q6:0xdd,q7:0xe4,q8:0x119,q9:0x11a,qq:0xbd},qn=qN,q0=r[qn(k8.t)]('SESSION_STORE','memory')[qn(k8.A)]()['toLowerCase'](),q1=F(r['get'](qn(k8.r)));if(q0==='memory')return new N(new V(),q1);if(q0===qn(0xbe)){const {SqliteSessionDocumentContainer:qX}=await import('./sqlite-session-document.container.js');return new N(new qX(r[qn(k8.i)](qn(0xb0),qn(0xe1))),q1);}if(q0===qn(0xa2)||q0==='mongo'){const qv=p(r,qn(k8.Z)),qB=p(r,'MONGODB_NAME'),qw=p(r,qn(0x134));if(!qv||!qB||!qw)throw new Error('MongoDB\x20session\x20persistence\x20requires\x20MONGODB_URL,\x20MONGODB_NAME,\x20and\x20MONGODB_COLLECTION.');const [{MongoClient:qK},{MongoDbSessionDocumentContainer:qj}]=await Promise[qn(0xe9)]([import(qn(k8.Y)),import('./mongodb-session-document.container.js')]),qD=new qK(qv);await qD[qn(0x115)]();const qo=qD['db'](qB)['collection'](qw);return await qo['createIndex']({'id':0x1},{'unique':!0x0}),new N(new qj(qo,qD),q1);}if(q0!==qn(0x10a)&&q0!==qn(k8.H))throw new Error('Unsupported\x20SESSION_STORE\x20\x27'+q0+qn(0x127));const q2=p(r,'COSMO_ENDPOINT','COSMOS_ENDPOINT','COSMODB_URL'),q3=p(r,qn(k8.M),'COSMOS_KEY'),q4=p(r,qn(k8.O)),q5=p(r,qn(k8.q0)),q6=p(r,qn(0xaf)),q7=p(r,qn(k8.q1),'COSMOS_DATABASE',qn(k8.q2))??qn(k8.q3),q8=p(r,'COSMO_DB_SESSION_CONTAINER_ID',qn(0xc5),qn(k8.q4))??qn(0x116);if(!q2||!q3&&(!q4||!q5||!q6))throw new Error(qn(0xb3));const [{CosmosClient:q9},{ClientSecretCredential:qq}]=await Promise['all']([import(qn(k8.q5)),import(qn(k8.q6))]),qk=q3?new q9({'endpoint':q2,'key':q3}):new q9({'endpoint':q2,'aadCredentials':new qq(q4,q5,q6)}),{database:qd}=await qk[qn(k8.q7)][qn(0x109)]({'id':q7}),qG=Number(r[qn(k8.q8)](qn(0xd5),qn(0xa0))),{container:qT}=await qd['containers'][qn(0x109)]({'id':q8,'partitionKey':{'paths':['/id']},...Number[qn(0x98)](qG)&&qG>0x0?{'throughput':qG}:{}}),{resource:qy}=await qT[qn(0xac)](),ql=qy?.[qn(0x13c)]?.[qn(k8.q9)]??[];if(!ql[qn(0xda)](qn(0xf5)))throw new Error('Cosmos\x20container\x20\x27'+q8+'\x27\x20must\x20use\x20partition\x20key\x20/id;\x20found\x20'+(ql[qn(0x145)](',\x20')||'none')+'.');const {CosmosSessionDocumentContainer:qe}=await import(qn(k8.qq));return new N(new qe(qT,()=>qk[qn(0x126)]()),q1);}async[qN(0x128)](A){const k9={t:0x117,A:0x101},qm=qN,r=await this[qm(k9.t)](A);return r?.[qm(k9.A)]===h?r:void 0x0;}async[qN(0x117)](A){const kq={t:0xe7},qV=qN;try{const {resource:r}=await this[qV(kq.t)][qV(0x13e)](A,A)[qV(0xac)]();return r;}catch(i){if(G(i))return;throw i;}}async[qN(0x108)](A,r,Z){const kk={t:0xca,A:0x117,r:0x123,i:0x103,Z:0xa1,Y:0x13d,H:0xcb,M:0xe7,O:0xd4,q0:0xff,q1:0xdf,q2:0xbb,q3:0xcb},qE=qN,Y=B[qE(kk.t)](Z[qE(0x11d)]),H=s(Z[qE(0xe2)]),M=await this[qE(kk.A)](A);M&&M[qE(0x101)]===h&&T(M,Y);const O=new Date(),q0={'owner':r,'expiresAt':new Date(O[qE(kk.r)]()+this[qE(kk.i)])[qE(0xa1)]()};if(!M){const q2=this['placeholderDocument'](A,Z,Y,H,q0,O[qE(kk.Z)]());if(await this['container'][qE(kk.Y)]({'expectedRevision':null},q2)==='conflict')throw new f(g,qE(0xbb)+A+qE(kk.H));return{'kind':qE(0xff),'document':q2,'expectedRevision':q2['revision']};}if(M[qE(0x101)]!==h){const q3=this['placeholderDocument'](A,Z,Y,H,q0,O['toISOString']());if(await this[qE(kk.M)][qE(0x13d)]({'expectedRevision':S(M),'replaceIncompatible':!0x0},q3)===qE(kk.O))throw new f(g,qE(0xbb)+A+'\x27\x20is\x20already\x20processing\x20a\x20turn.');return{'kind':qE(kk.q0),'document':q3,'expectedRevision':q3[qE(0xb2)]};}if(K(M[qE(0xdf)])&&M[qE(kk.q1)]?.[qE(0x135)]!==r)throw new f(g,'Session\x20\x27'+A+qE(kk.H));const q1={...M,'revision':S(M)+0x1,'turn':q0};if(await this['container']['compareAndSwap']({'expectedRevision':S(M),'requireFreeLease':!0x0,'allowOwner':r},q1)==='conflict')throw new f(g,qE(kk.q2)+A+qE(kk.q3));return{'kind':'leased','document':q1,'expectedRevision':S(q1)};}async[qN(0x12b)](A,r){const qC=qN,i=await this['getSession'](A);if(i)return this[qC(0x102)](i,r);}[qN(0x102)](A,r){const kG={t:0x129,A:0x129,r:0xa5,i:0x13a,Z:0x114,Y:0x11f,H:0xfc},qp=qN,i=B[qp(0xca)](r);T(A,i);const {graph:Z}=A;if(!Z[qp(kG.t)])return;const Y=u({},Z[qp(kG.A)]),H=ae(Z[qp(kG.r)]);return{'currentNode':Z[qp(0x9f)],'config':Z[qp(kG.i)]??{},'context':o(Z[qp(kG.Z)]===void 0x0?{}:Z['context']),'completed':A[qp(kG.Y)]===qp(kG.H)||Z[qp(0x9f)]===D,'nodes':Y,'tokens':E(A[qp(0xab)]),'decisionUsage':R(A['decisionUsage']),'histories':H,'inputConsumed':!0x0,'response':''};}async[qN(0xd9)](A,r,Z,Y=n(),H={}){const kT={t:0xe2,A:0xa1,r:0x129,i:0xfc,Z:0x140,Y:0xe0,H:0x11c,M:0x9f,O:0x114,q0:0x10f,q1:0x135,q2:0x13d,q3:0xd4,q4:0xbb,q5:0xcb},qJ=qN,M=B[qJ(0xca)](Z[qJ(0x11d)]),q0=s(Z[qJ(kT.t)]),q1=await this[qJ(0x117)](A),q2=q1?.[qJ(0x101)]===h?q1:void 0x0;q2&&(T(q2,M),j(q2,q0));const q3=new Date()[qJ(kT.A)](),q4=oe(u({},r[qJ(kT.r)])),{tokens:q5,histories:q6}=r,q7=this[qJ(0xc4)](q1,H),q8={'version':h,'id':A,'revision':q7===null?0x0:q7+0x1,'status':r[qJ(kT.i)]?'completed':'in_progress','tokens':E(q5),'decisionUsage':R(r[qJ(kT.Z)]),'errors':[...q2?.[qJ(0xe0)]??[],...Y[qJ(kT.Y)]],'warnings':[...q2?.[qJ(0xcd)]??[],...Y[qJ(0xcd)]],'decisions':[...q2?.['decisions']??[],...Y[qJ(kT.H)]],'graph':{'id':M,'schemaVersion':q0,'currentNode':r[qJ(kT.M)],'config':r[qJ(0x13a)],'context':o(r[qJ(kT.O)]===void 0x0?{}:r[qJ(kT.O)]),'histories':se(q6),'model':a[qJ(kT.q0)](Z[qJ(0xf3)]),'nodes':q4},...H['keepTurn']&&q2?.[qJ(0xdf)]?{'turn':{'owner':q2[qJ(0xdf)][qJ(kT.q1)],'expiresAt':new Date(Date[qJ(0x130)]()+this[qJ(0x103)])[qJ(0xa1)]()}}:{},'createdAt':q2?.['createdAt']??q3,'modifiedAt':q3};if(await this['container'][qJ(kT.q2)](this[qJ(0x12e)](q1,H,q7),q8)===qJ(kT.q3))throw new f(H['owner']?q:g,H[qJ(0x135)]?qJ(kT.q4)+A+qJ(0xa3):qJ(0xbb)+A+qJ(kT.q5));return q8;}async['appendLogs'](A,r,Z,Y={}){const ky={t:0xe2,A:0x128,r:0x140,i:0xe0,Z:0x11c,Y:0x9f,H:0x13a,M:0xa5,O:0x114,q0:0xf3,q1:0x131,q2:0x131,q3:0x141,q4:0x13d,q5:0x12e,q6:0x135,q7:0xbb,q8:0x12d},qs=qN,H=B[qs(0xca)](Z[qs(0x11d)]),M=s(Z[qs(ky.t)]),O=await this[qs(ky.A)](A);O&&(T(O,H),j(O,M));const q0=new Date()['toISOString'](),q1=this[qs(0xc4)](O,Y),q2={'version':h,'id':A,'revision':q1===null?0x0:q1+0x1,'status':r[qs(0xe0)]['length']>0x0?qs(0xaa):O?.['status']??'in_progress','tokens':O?.[qs(0xab)]??m(),'decisionUsage':r[qs(0x11c)][qs(0xc8)]((q3,q4)=>L(q3,q4['usage']),R(O?.[qs(ky.r)])),'errors':[...O?.[qs(ky.i)]??[],...r[qs(0xe0)]],'warnings':[...O?.[qs(0xcd)]??[],...r[qs(0xcd)]],'decisions':[...O?.[qs(ky.Z)]??[],...r[qs(0x11c)]],'graph':{'id':H,'schemaVersion':M,...O?{'currentNode':O['graph'][qs(ky.Y)],'config':O['graph'][qs(ky.H)]}:{},'histories':O?.[qs(0x131)][qs(ky.M)]??{},'context':o(O?.['graph'][qs(ky.O)]===void 0x0?{}:O[qs(0x131)]['context']),'model':a['modelMetadata'](Z[qs(ky.q0)]),...O?.[qs(ky.q1)][qs(0x129)]?{'nodes':O[qs(ky.q2)][qs(0x129)]}:{}},'createdAt':O?.[qs(ky.q3)]??q0,'modifiedAt':q0};if(await this['container'][qs(ky.q4)](this[qs(ky.q5)](O,Y,q1),q2)==='conflict'){if(Y[qs(ky.q6)]){console['warn'](qs(ky.q7)+A+qs(0xf0)+r[qs(ky.i)]['length']+'\x20error(s)\x20and\x20'+r['warnings'][qs(ky.q8)]+qs(0xe3));return;}throw new f(g,'Session\x20\x27'+A+qs(0xcb));}return q2;}async['endFailedTurn'](A,r,i,Z,Y){const kl={t:0xe0,A:0xcd,r:0x9c},qL=qN;if(Z&&(Z[qL(kl.t)][qL(0x12d)]>0x0||Z[qL(kl.A)][qL(0x12d)]>0x0||Z[qL(0x11c)][qL(0x12d)]>0x0)){await this[qL(0xee)](A,Z,i,{'owner':r,...Y!==void 0x0?{'expectedRevision':Y}:{}});return;}await this[qL(kl.r)](A,r,Y);}async[qN(0x9c)](A,r,Z){const ke={t:0x135,A:0x13d},qz=qN,Y=await this['getSession'](A);if(!Y||Y['turn']?.[qz(ke.t)]!==r)return;const H=Z??S(Y),{turn:M,...O}=Y,q0={...O,'modifiedAt':new Date()['toISOString']()};await this[qz(0xe7)][qz(ke.A)]({'expectedRevision':H,'requireOwner':r},q0);}async[qN(0x120)](A){const kX={t:0xe7},qR=qN;try{await this[qR(kX.t)][qR(0x13e)](A,A)[qR(0x138)]();}catch(r){if(!G(r))throw r;}}async['persistMigratedSession'](A,r={}){const kv={t:0x100,A:0xc3,r:0x131,i:0xeb,Z:0x128,Y:0xdf,H:0x114,M:0x141,O:0x141,q0:0xbb,q1:0xb8},qc=qN;if(A['version']!==h)throw new Error(qc(kv.t)+A[qc(0x101)]+qc(kv.A)+h+'.');B[qc(0xca)](A[qc(0x131)]['id']),s(A[qc(kv.r)][qc(kv.i)]);const i=await this[qc(kv.Z)](A['id']),Z=r[qc(0x113)]??S(i||A),Y=i?.[qc(0xdf)]??A[qc(kv.Y)],H={...A,'graph':{...A['graph'],'context':o(A[qc(kv.r)][qc(kv.H)]===void 0x0?{}:A['graph']['context'])},'revision':Z,'createdAt':i?.[qc(kv.M)]??A[qc(kv.O)],'modifiedAt':i?.[qc(0xf6)]??A[qc(0xf6)],...Y?{'turn':Y}:{}};if(await this['container'][qc(0x13d)]({'expectedRevision':Z,...r[qc(0x135)]?{'requireOwner':r[qc(0x135)]}:{'requireFreeLease':!0x0}},H)===qc(0xd4))throw new f(r[qc(0x135)]?q:g,qc(kv.q0)+A['id']+qc(kv.q1));}async[qN(0x13f)](){const qg=qN;await this['container'][qg(0x13f)]?.();}[qN(0xd3)](A,r,i,Z,Y,H){const kw={t:0x144},qt=qN;return{'version':h,'id':A,'revision':0x0,'status':qt(kw.t),'tokens':m(),'decisionUsage':z(),'errors':[],'warnings':[],'decisions':[],'graph':{'id':i,'schemaVersion':Z,'histories':{},'context':{},'model':a[qt(0x10f)](r[qt(0xf3)])},'turn':Y,'createdAt':H,'modifiedAt':H};}['commitExpectedRevision'](A,r){const kK={t:0x113},qA=qN;return r[qA(kK.t)]!==void 0x0?r[qA(kK.t)]:A?S(A):null;}[qN(0x12e)](A,r,i){const kj={t:0x135,A:0x101},qr=qN;return r[qr(kj.t)]?{'expectedRevision':i,'requireOwner':r['owner']}:A&&A[qr(kj.A)]!==h?{'expectedRevision':i,'replaceIncompatible':!0x0}:{'expectedRevision':i,'requireFreeLease':!0x0};}}function p(A,...i){const qf=qN;for(const Z of i){const Y=A[qf(0x119)](Z);if(Y)return Y;}}c(p,qN(0x107));function T(t,A){const ko={t:0x131,A:0xbb,r:0xfe,i:0x13b},qi=qN;if(t[qi(ko.t)]['id']!==A)throw new Error(qi(ko.A)+t['id']+qi(ko.r)+t['graph']['id']+'\x27,\x20not\x20\x27'+A+qi(ko.i));}c(T,qN(0xf4));function j(t,A){const ka={t:0x131,A:0xeb,r:0xfb,i:0xb6,Z:0x131,Y:0xeb,H:0xea,M:0xae},qh=qN;if(t[qh(ka.t)][qh(ka.A)]!==A)throw new Error('Session\x20\x27'+t['id']+qh(ka.r)+t['graph']['id']+qh(ka.i)+t[qh(ka.Z)][qh(ka.Y)]+qh(ka.H)+A+qh(ka.M));}c(j,qN(0xde));function oe(t){const ku={t:0x11e},kN={t:0x121},qQ=qN;return Object[qQ(0xc0)](Object[qQ(0xd2)](t)[qQ(ku.t)](([A,i])=>{const qZ=qQ;if(!i||typeof i!=qZ(kN.t))return[A,i];const {toolTrace:Z,...Y}=i;return[A,Y];}));}c(oe,qN(0x132));function ie(t){const kP={t:0xef,A:0x12d,r:0xe5,i:0xd1,Z:0xcf,Y:0xf7,H:0x111,M:0x12d,O:0xf9,q0:0x12d,q1:0xf9};return t['map'](A=>{const qY=d,i={...A[qY(0xb1)]},Z=A['type']==='ai'&&Array[qY(kP.t)](i[qY(0x111)])&&i[qY(0x111)][qY(kP.A)]>0x0?ce(i[qY(0xe5)]):void 0x0,Y=b(i[qY(kP.r)])&&i[qY(0xe5)][qY(kP.i)]===!0x0;return delete i[qY(0xe5)],(Z||Y)&&(i['additional_kwargs']={...Z?{'originalTextContentBlock':Z}:{},...Y?{'ezgraphInternal':!0x0}:{}}),delete i[qY(kP.Z)],delete i[qY(kP.Y)],A[qY(0xbc)]==='ai'&&(Array[qY(0xef)](i[qY(kP.H)])&&i[qY(0x111)][qY(kP.M)]===0x0&&delete i[qY(kP.H)],Array['isArray'](i[qY(kP.O)])&&i[qY(0xf9)][qY(kP.q0)]===0x0&&delete i[qY(kP.q1)]),{...A,'data':i};});}c(ie,qN(0x9a));function se(t){const km={t:0xd2,A:0x11e},qH=qN;return Object[qH(0xc0)](Object[qH(km.t)](t)[qH(km.A)](([A,i])=>[A,ie(l(i))]));}c(se,qN(0xa4));function ae(t={}){const kV={t:0xc0},qW=qN;return Object[qW(kV.t)](Object[qW(0xd2)](t)[qW(0x11e)](([A,i])=>[A,e(i)]));}c(ae,qN(0xa9));function ce(t){const kE={t:0x9e,A:0x133,r:0x9e},qM=qN;if(!b(t))return;const A=t[qM(0x10d)];if(!(!b(A)||typeof A[qM(kE.t)]!=qM(0xc7)))return{...typeof A[qM(kE.A)]==qM(0xc7)?{'text':A['text']}:{},'thoughtSignature':A[qM(kE.r)],...A[qM(0xba)]===!0x0?{'thought':!0x0}:{}};}c(ce,qN(0xf1));function b(t){const qx=qN;return t!==null&&typeof t==qx(0x121)&&!Array['isArray'](t);}c(b,qN(0x104));class V{static{c(this,qN(0xb9));}[qN(0x105)]=new Map();get[qN(0x9b)](){const qU=qN;return this[qU(0x105)][qU(0x9b)];}[qN(0xbf)]={'upsert':c(async e=>{const kJ={t:0x105},qO=qN,t=e;return this[qO(kJ.t)]['set'](t['id'],structuredClone(t)),{};},qN(0x124))};async[qN(0x13d)](A,r){const ks={t:0x105},qF=qN,i=this[qF(ks.t)][qF(0x119)](r['id']);return de(i,A)?(this['documents'][qF(0x10e)](r['id'],structuredClone(r)),'ok'):'conflict';}[qN(0x13e)](A,r){const kz={t:0x119,A:0xc1,r:0x11b},kL={t:0x105},qI=qN;return{'read':c(async()=>{const qS=d,i=this[qS(kL.t)][qS(0x119)](A);if(!i||i['id']!==r)throw Object[qS(0xc1)](new Error('Not\x20found'),{'code':0x194});return{'resource':structuredClone(i)};},'read'),'delete':c(async()=>{const qb=d,i=this[qb(0x105)][qb(kz.t)](A);if(!i||i['id']!==r)throw Object[qb(kz.A)](new Error(qb(kz.r)),{'code':0x194});return this[qb(0x105)]['delete'](A),{};},qI(0x138))};}}function G(t){const k0=qN;if(!t||typeof t!=k0(0x121))return!0x1;const A=t;return A[k0(0xb4)]===0x194||A[k0(0x12f)]===0x194;}c(G,qN(0x139));function F(t=process.env.SESSION_TURN_LEASE_MS){const kg={t:0x118},k1=qN,A=Number(t??k1(kg.t));return Number[k1(0x98)](A)&&A>0x0?A:0xea60;}function d(q,G){q=q-0x98;const T=k();let y=T[q];if(d['zZPXch']===undefined){var l=function(B){const w='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let K='',j='';for(let D=0x0,o,a,N=0x0;a=B['charAt'](N++);~a&&(o=D%0x4?o*0x40+a:a,D++%0x4)?K+=String['fromCharCode'](0xff&o>>(-0x2*D&0x6)):0x0){a=w['indexOf'](a);}for(let k=0x0,u=K['length'];k<u;k++){j+='%'+('00'+K['charCodeAt'](k)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(j);};d['quHhSI']=l,d['AkYZlF']={},d['zZPXch']=!![];}const e=T[0x0],X=q+e,v=d['AkYZlF'][X];return!v?(y=d['quHhSI'](y),d['AkYZlF'][X]=y):y=v,y;}c(F,qN(0xe6));function S(t){const kt={t:0xb2},k2=qN;return t?.[k2(kt.t)]??0x0;}c(S,qN(0x142));function K(A,i=Date['now']()){const kA={t:0x135,A:0xcc,r:0xb7},k3=qN;if(!A?.[k3(kA.t)]||!A[k3(0xb7)])return!0x1;const Z=Date[k3(kA.A)](A[k3(kA.r)]);return Number['isFinite'](Z)&&Z>i;}c(K,qN(0xb5));function de(A,i,Z=Date[qN(0x130)]()){const kr={t:0x113,A:0xdf,r:0xf2,i:0xd0},k4=qN;return i[k4(0x10c)]?A!==void 0x0&&A['version']!==h:i[k4(kr.t)]===null?A===void 0x0:!(!A||S(A)!==i[k4(0x113)]||i['requireOwner']&&A[k4(kr.A)]?.[k4(0x135)]!==i[k4(kr.r)]||i[k4(kr.i)]&&K(A[k4(0xdf)],Z)&&A['turn']?.[k4(0x135)]!==i[k4(0x143)]);}c(de,qN(0x137));export{V as MemorySessionDocumentContainer,g as SESSION_BUSY,Ce as SESSION_COMPLETED,q as SESSION_CONFLICT,h as SESSION_DOCUMENT_VERSION,N as SessionManager,f as SessionTurnError,K as isLiveSessionTurn,de as matchesSessionWritePredicate,S as sessionRevision,F as sessionTurnLeaseMs};
1
+ const dR=s;(function(e,o){const b8={e:0xad,o:0xfd,O:0x125,E:0xa6,l:0xce,k:0xe8},dr=s,O=e();while(!![]){try{const E=-parseInt(dr(b8.e))/0x1*(-parseInt(dr(0x10b))/0x2)+-parseInt(dr(b8.o))/0x3+-parseInt(dr(b8.O))/0x4*(parseInt(dr(0xdc))/0x5)+-parseInt(dr(b8.E))/0x6*(parseInt(dr(0xd6))/0x7)+-parseInt(dr(0x122))/0x8+parseInt(dr(b8.l))/0x9*(parseInt(dr(b8.k))/0xa)+parseInt(dr(0x99))/0xb*(parseInt(dr(0xa8))/0xc);if(E===o)break;else O['push'](O['shift']());}catch(l){O['push'](O['shift']());}}}(d,0x27bd1));var J=Object[dR(0xc6)],c=(o,O)=>J(o,dR(0xc9),{'value':O,'configurable':!0x0});import{mapChatMessagesToStoredMessages as z,mapStoredMessagesToChatMessages as Y}from'@langchain/core/messages';import{BaseGraph as u}from'../base-graph.js';function d(){const bQ=['CMvSzwfZzvr1CM4','DhjPBq','DgHVDwDODfnPz25HDhvYzq','y3vYCMvUDe5Vzgu','ndaW','Dg9ju09tDhjPBMC','Bw9Uz29KyG','jYbJAgfUz2vKigjLzM9Yzsb0AgLZihr1CM4Gy291BgqGyMuGC2f2zwqU','C3rVCMviAxn0B3jPzxm','AgLZDg9YAwvZ','mtyXmtq0nhLWs1DLEq','q09ttu9eqL9jra','mZm2mJG5mMTtveTHDq','CMvZDg9YzuHPC3rVCMLLCW','zxjYB3i','Dg9Rzw5Z','CMvHza','ntK0nJHzwhrsu2u','lIbszxn0B3jLig9Yig1Pz3jHDguGAxqGyMvMB3jLihnHDMLUzY4','q09ttu9FrejFq0Xjru5ux1nfq1jfva','u1fmsvrfx0rcx1bbveG','zgf0yq','CMv2AxnPB24','q29ZBw9ZihnLC3nPB24GCgvYC2LZDgvUy2uGCMvXDwLYzxmGq09ttu9eqL9vuKWGyw5Kienpu01prejFs0vzlcbVCIbdt1nnt19ftKrqt0LovcWGqvPvuKvFvevoqu5ux0Lelcbdt1nnt19eqL9dteLftLrFsuqSigfUzcbdt1nnt19eqL9dteLftLrFu0vduKvulG','y29Kzq','AxnmAxzLu2vZC2LVBLr1CM4','jYbZy2HLBweGDMvYC2LVBIa','zxHWAxjLC0f0','jYbJAgfUz2vKigjLzM9YzsbPDhmGBwLNCMf0Aw9UignVDwXKigjLihnHDMvKlG','twvTB3j5u2vZC2LVBKrVy3vTzw50q29UDgfPBMvY','DgHVDwDODa','u2vZC2LVBIaN','DhLWzq','lI9JB3nTB3mTC2vZC2LVBI1KB2n1BwvUDc5JB250ywLUzxiUANm','C3fSAxrL','AxrLBxm','zNjVBuvUDhjPzxm','yxnZAwDU','u0vtu0LptL9dt05gteLdva','oYbLEhbLy3rLzca','y29TBwL0rxHWzwn0zwrszxzPC2LVBG','q09ttu9tx0nptLrbsu5fuG','zgvMAw5LuhjVCgvYDhK','C3rYAw5N','CMvKDwnL','BMfTzq','yxnZzxj0swq','jYbPCYbHBhjLywr5ihbYB2nLC3nPBMCGysb0DxjUlG','CgfYC2u','D2fYBMLUz3m','nte4nerotgHcBq','CMvZCg9UC2vFBwv0ywrHDge','CMvXDwLYzuzYzwvmzwfZzq','zxPNCMfWAeLUDgvYBMfS','zw50CMLLCW','CgXHy2vOB2XKzxjeB2n1BwvUDa','y29UzMXPy3q','q09ttu9tx1riuK9vr0Hqvvq','n29TvvLjwG','q09ttu9eqL9trvntsu9ox0Le','qgf6DxjLl2nVC21VCW','C2f2zvn0yxrL','Aw5JBhvKzxm','tu9or09eqL9vuKW','nw92sfz6uW','qgf6DxjLl2LKzw50Axr5','yxnZzxj0u2vZC2LVBKDYyxbOu2nOzw1H','DhvYBG','zxjYB3jZ','lI9KyxrHl3nLC3nPB25ZlNnXBgL0zq','z3jHCgHty2HLBwfwzxjZAw9U','ihDHCM5PBMCOCYKGD2vYzsbKCM9WCgvKlG','zgf0ywjHC2vZ','ywrKAxrPB25HBf9RD2fYz3m','C2vZC2LVBLr1CM5mzwfZzu1Z','y29UDgfPBMvY','nti5meD6twLVAa','ywXS','lcbUB3qG','C2nOzw1HvMvYC2LVBG','BgfUz2DYyxbO','u0vtu0LptL9cvvnz','yxbWzw5Ktg9NCW','AxnbCNjHEq','jYbSB3n0igL0CYbSzwfZzsbIzwzVCMuGBg9NCYb3zxjLigfWCgvUzgvKoYa','C2LNBMf0DxjLqMvHCMLUz0nVBNrLBNrcBg9JAW','CMvXDwLYzu93BMvY','BgXTq29UzMLN','yxnZzxj0u2vZC2LVBKDYyxbO','l2LK','Bw9KAwzPzwrbDa','DxnHz2vFBwv0ywrHDge','zNjVBunVBMzPzW','Aw52ywXPzf90B29Sx2nHBgXZ','u2vZC2LVBLr1CM5fCNjVCG','jYb1C2vZigDYyxbOicC','y29TCgXLDgvK','mtC4otKYA3HSq3bk','jYbIzwXVBMDZihrVigDYyxbOicC','BgvHC2vK','q2fUBM90ihbLCNnPC3qGC2vZC2LVBIbKB2n1BwvUDcb2zxjZAw9Uia','DMvYC2LVBG','CMvZDg9YzvnLC3nPB25eB2n1BwvUDa','DhvYBKXLyxnLtxm','AxnszwnVCMq','zg9JDw1LBNrZ','q09ttu9eqL9lrvK','zMLYC3q','yMvNAw5uDxjU','y3jLyxrLswzoB3rfEgLZDhm','y29ZBw9Z','nNPfDeHQwa','CMvWBgfJzuLUy29TCgf0AwjSzq','B3jPz2LUywXuzxH0q29UDgvUDejSB2nR','C2v0','Bw9KzwXnzxrHzgf0yq','y29ZBw9Zzgi','Dg9VBf9JywXSCW','q09ttu9FrejFq0Xjru5ux0Le','zxHWzwn0zwrszxzPC2LVBG','y29UDgv4Da','y29UBMvJDa','C2vZC2LVBNm','CMvHzerVy3vTzw50','nJaWmda','z2v0','Cgf0Ahm','tM90igzVDw5K','zgvJAxnPB25Z','z3jHCgHjza','BwfW','C3rHDhvZ','zgvSzxrLu2vZC2LVBG','B2jQzwn0','mZu4mtuYsvfetg9P','z2v0vgLTzq','DxbZzxj0','oteWmJKYBNjPz0fp','zgLZCg9Zzq','jY4GvxnLicDTzw1VCNKNlcaNC3fSAxrLjYWGj21VBMDVzgiNlcbVCIaNy29ZBw9ZjY4','z2v0u2vZC2LVBG','BM9Kzxm','qvPvuKvFvevoqu5ux0Le','CMvZDg9Yzvn0yxrL','u0vtu0LptL9uvvjox0Xfqvnfx01t','BgvUz3rO','y29TBwL0uhjLzgLJyxrL','C3rHDhvZq29Kzq','BM93','z3jHCgG','CMvTB3zLtgvNywn5vg9VBfrYywnLCW','Dgv4Da','tu9or09eqL9dt0Xmrunusu9o','B3DUzxi','q09ttu9FrejFsuq','Bwf0y2HLC1nLC3nPB25xCML0zvbYzwrPy2f0zq','zgvSzxrL','AxnoB3rgB3vUza','y29UzMLN','jY4Gu3rHCNqGysbUzxCGC2vZC2LVBIb0BYbYDw4GysbKAwzMzxjLBNqGz3jHCgGU','CgfYDgL0Aw9Us2v5','y29TCgfYzufUzfn3yxa','AxrLBq','y2XVC2u','zgvJAxnPB25vC2fNzq','y3jLyxrLzef0','C2vZC2LVBLjLDMLZAw9U','ywXSB3DpD25LCG','Aw5FChjVz3jLC3m','AM9PBG','AxngAw5PDgu','mtfnAKDzEgO','y29TCgfJDfn0B3jLze1LC3nHz2vZ','C2L6zq'];d=function(){return bQ;};return d();}import{ConfigManager as Z}from'../config-manager.js';import{GRAPH_END_NODE as H}from'../graph-state.js';import{cloneJsonObject as r}from'../graph-context.js';import{GraphLlm as R}from'../graph-llm.config.js';import{replaceNodeStates as M}from'../node-state.js';import{createSessionLogs as i}from'../session-log.js';import{emptyTokenUsage as t,normalizeTokenUsage as m}from'../token-usage.js';import{assertGraphSchemaVersion as L}from'../stable-id.js';import{addDecisionUsage as D,emptyDecisionUsage as B,normalizeDecisionUsage as a}from'../decision/decision-types.js';const h=0x10,g=dR(0xed),q=dR(0xc2),Ce='SESSION_COMPLETED';class f extends Error{static{c(this,dR(0xfa));}[dR(0xb4)];constructor(o,O){const dM=dR;super(O),this[dM(0xc9)]=dM(0xfa),this[dM(0xb4)]=o;}}class N{static{c(this,'SessionManager');}['container'];[dR(0x103)];constructor(o=new V(),O=F()){const dq=dR;this['container']=o,this[dq(0x103)]=O;}static async[dR(0xf8)](d0=new Z()){const bb={e:0x119,o:0x9d,O:0x12c,E:0x119,l:0xdb,k:0xa2,w:0x110,n:0x106,A:0x12a,d0:0x112,d1:0x136,d2:0xa7,d3:0xec,d4:0xd7,d5:0xd8,d6:0xdd,d7:0xe4,d8:0x119,d9:0x11a,dd:0xbd},dP=dR,d1=d0[dP(bb.e)]('SESSION_STORE','memory')[dP(bb.o)]()['toLowerCase'](),d2=F(d0['get'](dP(bb.O)));if(d1==='memory')return new N(new V(),d2);if(d1===dP(0xbe)){const {SqliteSessionDocumentContainer:dJ}=await import('./sqlite-session-document.container.js');return new N(new dJ(d0[dP(bb.E)](dP(0xb0),dP(0xe1))),d2);}if(d1===dP(0xa2)||d1==='mongo'){const dx=p(d0,dP(bb.l)),dp=p(d0,'MONGODB_NAME'),df=p(d0,dP(0x134));if(!dx||!dp||!df)throw new Error('MongoDB\x20session\x20persistence\x20requires\x20MONGODB_URL,\x20MONGODB_NAME,\x20and\x20MONGODB_COLLECTION.');const [{MongoClient:du},{MongoDbSessionDocumentContainer:dc}]=await Promise[dP(0xe9)]([import(dP(bb.k)),import('./mongodb-session-document.container.js')]),dZ=new du(dx);await dZ[dP(0x115)]();const dH=dZ['db'](dp)['collection'](df);return await dH['createIndex']({'id':0x1},{'unique':!0x0}),new N(new dc(dH,dZ),d2);}if(d1!==dP(0x10a)&&d1!==dP(bb.w))throw new Error('Unsupported\x20SESSION_STORE\x20\x27'+d1+dP(0x127));const d3=p(d0,'COSMO_ENDPOINT','COSMOS_ENDPOINT','COSMODB_URL'),d4=p(d0,dP(bb.n),'COSMOS_KEY'),d5=p(d0,dP(bb.A)),d6=p(d0,dP(bb.d0)),d7=p(d0,dP(0xaf)),d8=p(d0,dP(bb.d1),'COSMOS_DATABASE',dP(bb.d2))??dP(bb.d3),d9=p(d0,'COSMO_DB_SESSION_CONTAINER_ID',dP(0xc5),dP(bb.d4))??dP(0x116);if(!d3||!d4&&(!d5||!d6||!d7))throw new Error(dP(0xb3));const [{CosmosClient:dd},{ClientSecretCredential:db}]=await Promise['all']([import(dP(bb.d5)),import(dP(bb.d6))]),dv=d4?new dd({'endpoint':d3,'key':d4}):new dd({'endpoint':d3,'aadCredentials':new db(d5,d6,d7)}),{database:ds}=await dv[dP(bb.d7)][dP(0x109)]({'id':d8}),dz=Number(d0[dP(bb.d8)](dP(0xd5),dP(0xa0))),{container:dF}=await ds['containers'][dP(0x109)]({'id':d9,'partitionKey':{'paths':['/id']},...Number[dP(0x98)](dz)&&dz>0x0?{'throughput':dz}:{}}),{resource:dX}=await dF[dP(0xac)](),dV=dX?.[dP(0x13c)]?.[dP(bb.d9)]??[];if(!dV[dP(0xda)](dP(0xf5)))throw new Error('Cosmos\x20container\x20\x27'+d9+'\x27\x20must\x20use\x20partition\x20key\x20/id;\x20found\x20'+(dV[dP(0x145)](',\x20')||'none')+'.');const {CosmosSessionDocumentContainer:dY}=await import(dP(bb.dd));return new N(new dY(dF,()=>dv[dP(0x126)]()),d2);}async[dR(0x128)](o){const bv={e:0x117,o:0x101},dW=dR,O=await this[dW(bv.e)](o);return O?.[dW(bv.o)]===h?O:void 0x0;}async[dR(0x117)](o){const bs={e:0xe7},dI=dR;try{const {resource:O}=await this[dI(bs.e)][dI(0x13e)](o,o)[dI(0xac)]();return O;}catch(E){if(G(E))return;throw E;}}async[dR(0x108)](O,E,k){const bz={e:0xca,o:0x117,O:0x123,E:0x103,l:0xa1,k:0x13d,w:0xcb,n:0xe7,A:0xd4,d0:0xff,d1:0xdf,d2:0xbb,d3:0xcb},dy=dR,w=u[dy(bz.e)](k[dy(0x11d)]),A=L(k[dy(0xe2)]),d0=await this[dy(bz.o)](O);d0&&d0[dy(0x101)]===h&&T(d0,w);const d1=new Date(),d2={'owner':E,'expiresAt':new Date(d1[dy(bz.O)]()+this[dy(bz.E)])[dy(0xa1)]()};if(!d0){const d4=this['placeholderDocument'](O,k,w,A,d2,d1[dy(bz.l)]());if(await this['container'][dy(bz.k)]({'expectedRevision':null},d4)==='conflict')throw new f(g,dy(0xbb)+O+dy(bz.w));return{'kind':dy(0xff),'document':d4,'expectedRevision':d4['revision']};}if(d0[dy(0x101)]!==h){const d5=this['placeholderDocument'](O,k,w,A,d2,d1['toISOString']());if(await this[dy(bz.n)][dy(0x13d)]({'expectedRevision':S(d0),'replaceIncompatible':!0x0},d5)===dy(bz.A))throw new f(g,dy(0xbb)+O+'\x27\x20is\x20already\x20processing\x20a\x20turn.');return{'kind':dy(bz.d0),'document':d5,'expectedRevision':d5[dy(0xb2)]};}if(K(d0[dy(0xdf)])&&d0[dy(bz.d1)]?.[dy(0x135)]!==E)throw new f(g,'Session\x20\x27'+O+dy(bz.w));const d3={...d0,'revision':S(d0)+0x1,'turn':d2};if(await this['container']['compareAndSwap']({'expectedRevision':S(d0),'requireFreeLease':!0x0,'allowOwner':E},d3)==='conflict')throw new f(g,dy(bz.d2)+O+dy(bz.d3));return{'kind':'leased','document':d3,'expectedRevision':S(d3)};}async[dR(0x12b)](o,O){const dg=dR,E=await this['getSession'](o);if(E)return this[dg(0x102)](E,O);}[dR(0x102)](O,E){const bX={e:0x129,o:0x129,O:0xa5,E:0x13a,l:0x114,k:0x11f,w:0xfc},di=dR,l=u[di(0xca)](E);T(O,l);const {graph:k}=O;if(!k[di(bX.e)])return;const w=M({},k[di(bX.o)]),A=ae(k[di(bX.O)]);return{'currentNode':k[di(0x9f)],'config':k[di(bX.E)]??{},'context':r(k[di(bX.l)]===void 0x0?{}:k['context']),'completed':O[di(bX.k)]===di(bX.w)||k[di(0x9f)]===H,'nodes':w,'tokens':m(O[di(0xab)]),'decisionUsage':a(O['decisionUsage']),'histories':A,'inputConsumed':!0x0,'response':''};}async[dR(0xd9)](k,A,d0,d1=i(),d2={}){const bV={e:0xe2,o:0xa1,O:0x129,E:0xfc,l:0x140,k:0xe0,w:0x11c,n:0x9f,A:0x114,d0:0x10f,d1:0x135,d2:0x13d,d3:0xd4,d4:0xbb,d5:0xcb},dh=dR,d3=u[dh(0xca)](d0[dh(0x11d)]),d4=L(d0[dh(bV.e)]),d5=await this[dh(0x117)](k),d6=d5?.[dh(0x101)]===h?d5:void 0x0;d6&&(T(d6,d3),j(d6,d4));const d7=new Date()[dh(bV.o)](),d8=oe(M({},A[dh(bV.O)])),{tokens:d9,histories:dd}=A,db=this[dh(0xc4)](d5,d2),dv={'version':h,'id':k,'revision':db===null?0x0:db+0x1,'status':A[dh(bV.E)]?'completed':'in_progress','tokens':m(d9),'decisionUsage':a(A[dh(bV.l)]),'errors':[...d6?.[dh(0xe0)]??[],...d1[dh(bV.k)]],'warnings':[...d6?.[dh(0xcd)]??[],...d1[dh(0xcd)]],'decisions':[...d6?.['decisions']??[],...d1[dh(bV.w)]],'graph':{'id':d3,'schemaVersion':d4,'currentNode':A[dh(bV.n)],'config':A[dh(0x13a)],'context':r(A[dh(bV.A)]===void 0x0?{}:A[dh(bV.A)]),'histories':se(dd),'model':R[dh(bV.d0)](d0[dh(0xf3)]),'nodes':d8},...d2['keepTurn']&&d6?.[dh(0xdf)]?{'turn':{'owner':d6[dh(0xdf)][dh(bV.d1)],'expiresAt':new Date(Date[dh(0x130)]()+this[dh(0x103)])[dh(0xa1)]()}}:{},'createdAt':d6?.['createdAt']??d7,'modifiedAt':d7};if(await this['container'][dh(bV.d2)](this[dh(0x12e)](d5,d2,db),dv)===dh(bV.d3))throw new f(d2['owner']?q:g,d2[dh(0x135)]?dh(bV.d4)+k+dh(0xa3):dh(0xbb)+k+dh(bV.d5));return dv;}async['appendLogs'](O,E,l,k={}){const bY={e:0xe2,o:0x128,O:0x140,E:0xe0,l:0x11c,k:0x9f,w:0x13a,n:0xa5,A:0x114,d0:0xf3,d1:0x131,d2:0x131,d3:0x141,d4:0x13d,d5:0x12e,d6:0x135,d7:0xbb,d8:0x12d},dt=dR,w=u[dt(0xca)](l[dt(0x11d)]),A=L(l[dt(bY.e)]),d0=await this[dt(bY.o)](O);d0&&(T(d0,w),j(d0,A));const d1=new Date()['toISOString'](),d2=this[dt(0xc4)](d0,k),d3={'version':h,'id':O,'revision':d2===null?0x0:d2+0x1,'status':E[dt(0xe0)]['length']>0x0?dt(0xaa):d0?.['status']??'in_progress','tokens':d0?.[dt(0xab)]??t(),'decisionUsage':E[dt(0x11c)][dt(0xc8)]((d4,d5)=>D(d4,d5['usage']),a(d0?.[dt(bY.O)])),'errors':[...d0?.[dt(bY.E)]??[],...E[dt(0xe0)]],'warnings':[...d0?.[dt(0xcd)]??[],...E[dt(0xcd)]],'decisions':[...d0?.[dt(bY.l)]??[],...E[dt(0x11c)]],'graph':{'id':w,'schemaVersion':A,...d0?{'currentNode':d0['graph'][dt(bY.k)],'config':d0['graph'][dt(bY.w)]}:{},'histories':d0?.[dt(0x131)][dt(bY.n)]??{},'context':r(d0?.['graph'][dt(bY.A)]===void 0x0?{}:d0[dt(0x131)]['context']),'model':R['modelMetadata'](l[dt(bY.d0)]),...d0?.[dt(bY.d1)][dt(0x129)]?{'nodes':d0[dt(bY.d2)][dt(0x129)]}:{}},'createdAt':d0?.[dt(bY.d3)]??d1,'modifiedAt':d1};if(await this['container'][dt(bY.d4)](this[dt(bY.d5)](d0,k,d2),d3)==='conflict'){if(k[dt(bY.d6)]){console['warn'](dt(bY.d7)+O+dt(0xf0)+E[dt(bY.E)]['length']+'\x20error(s)\x20and\x20'+E['warnings'][dt(bY.d8)]+dt(0xe3));return;}throw new f(g,'Session\x20\x27'+O+dt(0xcb));}return d3;}async['endFailedTurn'](O,E,l,k,w){const bJ={e:0xe0,o:0xcd,O:0x9c},dm=dR;if(k&&(k[dm(bJ.e)][dm(0x12d)]>0x0||k[dm(bJ.o)][dm(0x12d)]>0x0||k[dm(0x11c)][dm(0x12d)]>0x0)){await this[dm(0xee)](O,k,l,{'owner':E,...w!==void 0x0?{'expectedRevision':w}:{}});return;}await this[dm(bJ.O)](O,E,w);}async[dR(0x9c)](O,E,l){const bx={e:0x135,o:0x13d},dL=dR,k=await this['getSession'](O);if(!k||k['turn']?.[dL(bx.e)]!==E)return;const w=l??S(k),{turn:A,...d0}=k,d1={...d0,'modifiedAt':new Date()['toISOString']()};await this[dL(0xe7)][dL(bx.o)]({'expectedRevision':w,'requireOwner':E},d1);}async[dR(0x120)](o){const bp={e:0xe7},dD=dR;try{await this[dD(bp.e)][dD(0x13e)](o,o)[dD(0x138)]();}catch(O){if(!G(O))throw O;}}async['persistMigratedSession'](O,E={}){const bf={e:0x100,o:0xc3,O:0x131,E:0xeb,l:0x128,k:0xdf,w:0x114,n:0x141,A:0x141,d0:0xbb,d1:0xb8},dB=dR;if(O['version']!==h)throw new Error(dB(bf.e)+O[dB(0x101)]+dB(bf.o)+h+'.');u[dB(0xca)](O[dB(0x131)]['id']),L(O[dB(bf.O)][dB(bf.E)]);const l=await this[dB(bf.l)](O['id']),k=E[dB(0x113)]??S(l||O),w=l?.[dB(0xdf)]??O[dB(bf.k)],A={...O,'graph':{...O['graph'],'context':r(O[dB(bf.O)][dB(bf.w)]===void 0x0?{}:O['graph']['context'])},'revision':k,'createdAt':l?.[dB(bf.n)]??O[dB(bf.A)],'modifiedAt':l?.[dB(0xf6)]??O[dB(0xf6)],...w?{'turn':w}:{}};if(await this['container'][dB(0x13d)]({'expectedRevision':k,...E[dB(0x135)]?{'requireOwner':E[dB(0x135)]}:{'requireFreeLease':!0x0}},A)===dB(0xd4))throw new f(E[dB(0x135)]?q:g,dB(bf.d0)+O['id']+dB(bf.d1));}async[dR(0x13f)](){const da=dR;await this['container'][da(0x13f)]?.();}[dR(0xd3)](O,E,l,k,w,A){const bc={e:0x144},dU=dR;return{'version':h,'id':O,'revision':0x0,'status':dU(bc.e),'tokens':t(),'decisionUsage':B(),'errors':[],'warnings':[],'decisions':[],'graph':{'id':l,'schemaVersion':k,'histories':{},'context':{},'model':R[dU(0x10f)](E[dU(0xf3)])},'turn':w,'createdAt':A,'modifiedAt':A};}['commitExpectedRevision'](o,O){const bZ={e:0x113},dK=dR;return O[dK(bZ.e)]!==void 0x0?O[dK(bZ.e)]:o?S(o):null;}[dR(0x12e)](o,O,E){const bH={e:0x135,o:0x101},dC=dR;return O[dC(bH.e)]?{'expectedRevision':E,'requireOwner':O['owner']}:o&&o[dC(bH.o)]!==h?{'expectedRevision':E,'replaceIncompatible':!0x0}:{'expectedRevision':E,'requireFreeLease':!0x0};}}function p(o,...O){const dQ=dR;for(const E of O){const l=o[dQ(0x119)](E);if(l)return l;}}c(p,dR(0x107));function T(o,O){const bR={e:0x131,o:0xbb,O:0xfe,E:0x13b},dS=dR;if(o[dS(bR.e)]['id']!==O)throw new Error(dS(bR.o)+o['id']+dS(bR.O)+o['graph']['id']+'\x27,\x20not\x20\x27'+O+dS(bR.E));}c(T,dR(0xf4));function j(o,O){const bM={e:0x131,o:0xeb,O:0xfb,E:0xb6,l:0x131,k:0xeb,w:0xea,n:0xae},dO=dR;if(o[dO(bM.e)][dO(bM.o)]!==O)throw new Error('Session\x20\x27'+o['id']+dO(bM.O)+o['graph']['id']+dO(bM.E)+o[dO(bM.l)][dO(bM.k)]+dO(bM.w)+O+dO(bM.n));}c(j,dR(0xde));function oe(e){const bP={e:0x11e},bq={e:0x121},dE=dR;return Object[dE(0xc0)](Object[dE(0xd2)](e)[dE(bP.e)](([O,E])=>{const dl=dE;if(!E||typeof E!=dl(bq.e))return[O,E];const {toolTrace:l,...k}=E;return[O,k];}));}c(oe,dR(0x132));function ie(e){const bW={e:0xef,o:0x12d,O:0xe5,E:0xd1,l:0xcf,k:0xf7,w:0x111,n:0x12d,A:0xf9,d0:0x12d,d1:0xf9};return e['map'](O=>{const dj=s,E={...O[dj(0xb1)]},l=O['type']==='ai'&&Array[dj(bW.e)](E[dj(0x111)])&&E[dj(0x111)][dj(bW.o)]>0x0?ce(E[dj(0xe5)]):void 0x0,k=b(E[dj(bW.O)])&&E[dj(0xe5)][dj(bW.E)]===!0x0;return delete E[dj(0xe5)],(l||k)&&(E['additional_kwargs']={...l?{'originalTextContentBlock':l}:{},...k?{'ezgraphInternal':!0x0}:{}}),delete E[dj(bW.l)],delete E[dj(bW.k)],O[dj(0xbc)]==='ai'&&(Array[dj(0xef)](E[dj(bW.w)])&&E[dj(0x111)][dj(bW.n)]===0x0&&delete E[dj(bW.w)],Array['isArray'](E[dj(bW.A)])&&E[dj(0xf9)][dj(bW.d0)]===0x0&&delete E[dj(bW.d1)]),{...O,'data':E};});}c(ie,dR(0x9a));function se(e){const by={e:0xd2,o:0x11e},dk=dR;return Object[dk(0xc0)](Object[dk(by.e)](e)[dk(by.o)](([o,O])=>[o,ie(z(O))]));}c(se,dR(0xa4));function ae(e={}){const bg={e:0xc0},dw=dR;return Object[dw(bg.e)](Object[dw(0xd2)](e)[dw(0x11e)](([o,O])=>[o,Y(O)]));}c(ae,dR(0xa9));function ce(o){const bi={e:0x9e,o:0x133,O:0x9e},dn=dR;if(!b(o))return;const O=o[dn(0x10d)];if(!(!b(O)||typeof O[dn(bi.e)]!=dn(0xc7)))return{...typeof O[dn(bi.o)]==dn(0xc7)?{'text':O['text']}:{},'thoughtSignature':O[dn(bi.O)],...O[dn(0xba)]===!0x0?{'thought':!0x0}:{}};}c(ce,dR(0xf1));function b(e){const dT=dR;return e!==null&&typeof e==dT(0x121)&&!Array['isArray'](e);}c(b,dR(0x104));class V{static{c(this,dR(0xb9));}[dR(0x105)]=new Map();get[dR(0x9b)](){const dN=dR;return this[dN(0x105)][dN(0x9b)];}[dR(0xbf)]={'upsert':c(async e=>{const bm={e:0x105},dA=dR,t=e;return this[dA(bm.e)]['set'](t['id'],structuredClone(t)),{};},dR(0x124))};async[dR(0x13d)](o,O){const bL={e:0x105},dG=dR,E=this[dG(bL.e)][dG(0x119)](O['id']);return de(E,o)?(this['documents'][dG(0x10e)](O['id'],structuredClone(O)),'ok'):'conflict';}[dR(0x13e)](o,O){const bB={e:0x119,o:0xc1,O:0x11b},bD={e:0x105},b2=dR;return{'read':c(async()=>{const b0=s,E=this[b0(bD.e)][b0(0x119)](o);if(!E||E['id']!==O)throw Object[b0(0xc1)](new Error('Not\x20found'),{'code':0x194});return{'resource':structuredClone(E)};},'read'),'delete':c(async()=>{const b1=s,E=this[b1(0x105)][b1(bB.e)](o);if(!E||E['id']!==O)throw Object[b1(bB.o)](new Error(b1(bB.O)),{'code':0x194});return this[b1(0x105)]['delete'](o),{};},b2(0x138))};}}function G(o){const b3=dR;if(!o||typeof o!=b3(0x121))return!0x1;const O=o;return O[b3(0xb4)]===0x194||O[b3(0x12f)]===0x194;}c(G,dR(0x139));function F(o=process.env.SESSION_TURN_LEASE_MS){const be={e:0x118},b4=dR,O=Number(o??b4(be.e));return Number[b4(0x98)](O)&&O>0x0?O:0xea60;}function s(b,v){b=b-0x98;const z=d();let F=z[b];if(s['zZPXch']===undefined){var X=function(x){const p='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let f='',u='';for(let c=0x0,Z,H,r=0x0;H=x['charAt'](r++);~H&&(Z=c%0x4?Z*0x40+H:H,c++%0x4)?f+=String['fromCharCode'](0xff&Z>>(-0x2*c&0x6)):0x0){H=p['indexOf'](H);}for(let R=0x0,M=f['length'];R<M;R++){u+='%'+('00'+f['charCodeAt'](R)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(u);};s['quHhSI']=X,s['AkYZlF']={},s['zZPXch']=!![];}const V=z[0x0],Y=b+V,J=s['AkYZlF'][Y];return!J?(F=s['quHhSI'](F),s['AkYZlF'][Y]=F):F=J,F;}c(F,dR(0xe6));function S(e){const bK={e:0xb2},b5=dR;return e?.[b5(bK.e)]??0x0;}c(S,dR(0x142));function K(o,O=Date['now']()){const bo={e:0x135,o:0xcc,O:0xb7},b6=dR;if(!o?.[b6(bo.e)]||!o[b6(0xb7)])return!0x1;const E=Date[b6(bo.o)](o[b6(bo.O)]);return Number['isFinite'](E)&&E>O;}c(K,dR(0xb5));function de(o,O,E=Date[dR(0x130)]()){const bC={e:0x113,o:0xdf,O:0xf2,E:0xd0},b7=dR;return O[b7(0x10c)]?o!==void 0x0&&o['version']!==h:O[b7(bC.e)]===null?o===void 0x0:!(!o||S(o)!==O[b7(0x113)]||O['requireOwner']&&o[b7(bC.o)]?.[b7(0x135)]!==O[b7(bC.O)]||O[b7(bC.E)]&&K(o[b7(0xdf)],E)&&o['turn']?.[b7(0x135)]!==O[b7(0x143)]);}c(de,dR(0x137));export{V as MemorySessionDocumentContainer,g as SESSION_BUSY,Ce as SESSION_COMPLETED,q as SESSION_CONFLICT,h as SESSION_DOCUMENT_VERSION,N as SessionManager,f as SessionTurnError,K as isLiveSessionTurn,de as matchesSessionWritePredicate,S as sessionRevision,F as sessionTurnLeaseMs};
@@ -1 +1 @@
1
- const A=k;(function(D,o){const q6={D:0xe8,o:0xc4,a:0xde,N:0x10f,P:0xc5,n:0x10d},t=k,a=D();while(!![]){try{const N=parseInt(t(q6.D))/0x1+parseInt(t(0x108))/0x2*(-parseInt(t(q6.o))/0x3)+parseInt(t(q6.a))/0x4*(-parseInt(t(0xd7))/0x5)+parseInt(t(q6.N))/0x6*(-parseInt(t(0xfa))/0x7)+parseInt(t(0xe2))/0x8*(-parseInt(t(0xcd))/0x9)+-parseInt(t(0xf3))/0xa*(-parseInt(t(q6.P))/0xb)+parseInt(t(q6.n))/0xc;if(N===o)break;else a['push'](a['shift']());}catch(P){a['push'](a['shift']());}}}(q,0x39347));var m=Object[A(0xc9)],p=(D,o)=>m(D,A(0xd8),{'value':o,'configurable':!0x0});import{END as d,isCommand as T,START as e,StateGraph as X}from'@langchain/langgraph';import{GRAPH_NODE_CLASS as v,GraphNode as B}from'./graph-node.js';function k(d,G){d=d-0xc3;const T=q();let y=T[d];if(k['uhJOwZ']===undefined){var l=function(B){const w='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let K='',j='';for(let D=0x0,o,a,N=0x0;a=B['charAt'](N++);~a&&(o=D%0x4?o*0x40+a:a,D++%0x4)?K+=String['fromCharCode'](0xff&o>>(-0x2*D&0x6)):0x0){a=w['indexOf'](a);}for(let u=0x0,P=K['length'];u<P;u++){j+='%'+('00'+K['charCodeAt'](u)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(j);};k['CPtMFs']=l,k['PUoJpy']={},k['uhJOwZ']=!![];}const e=T[0x0],X=d+e,v=k['PUoJpy'][X];return!v?(y=k['CPtMFs'](y),k['PUoJpy'][X]=y):y=v,y;}import{GRAPH_END_NODE as K}from'./graph-state.js';import{stableClassId as j}from'./stable-id.js';class x{static{p(this,'StateGraphExt');}[A(0xca)];[A(0xdd)];[A(0xdc)];[A(0xe7)]=new Set();[A(0xfd)]=new Map();[A(0x107)]=new Map();constructor(D,o,a=K){const r=A;this['createGraphNode']=o,this[r(0xdd)]=a,this[r(0xdc)]=new X(D);}[A(0xe3)](D){const q8={D:0xca,o:0xca,a:0x10e,N:0xd3},f=A;if(!g(D))throw new Error(f(0xcc));if(!this[f(q8.D)])throw new Error('This\x20graph\x20has\x20no\x20GraphNode\x20factory.');const o=this[f(q8.o)](D),a=j(D,'graph\x20node');if(o['id']!==a)throw new Error(f(q8.a)+a+f(q8.N)+o['id']+'\x27.');return this[f(0xfd)][f(0xd5)](a,D),this['registerNode'](o,[...this['addedNodeIds'],a,d]);}[A(0xea)](...D){const qq={D:0xca,o:0xec,a:0xf5,N:0xd3},q9={D:0xe6,o:0x101},i=A;if(!this[i(qq.D)])throw new Error('This\x20graph\x20has\x20no\x20GraphNode\x20factory.');const N=D['map'](V=>{const Q=i;if(!g(V))throw new Error(Q(q9.D));return j(V,Q(q9.o));}),P=N['find']((V,C)=>N['indexOf'](V)!==C||this[i(0xe7)][i(0xd6)](V));if(P)throw new Error(i(qq.o)+P+i(qq.a));const n=[...this[i(0xe7)],...N,d];for(const [V,C]of D['entries']()){const J=this[i(0xca)](C),L=N[V];if(J['id']!==L)throw new Error(i(0x10e)+L+i(qq.N)+J['id']+'\x27.');this['nodeClasses'][i(0xd5)](L,C),this[i(0xd4)](J,n);}return this;}[A(0xee)](...D){const Z=A;return this['nodes'](...D),this[Z(0xdf)](...D),this;}[A(0xcf)](D,a){const qd={D:0x100,o:0x103,a:0xcf},Y=A,N=Array[Y(qd.D)](D)?D:[D];for(const n of N)this[Y(0x10a)](n);this[Y(0xf1)](a);const P=N[Y(qd.o)](c);return this['graph'][Y(qd.a)](P['length']===0x1?P[0x0]:P,c(a)),this;}[A(0xf0)](D,o){const qG={D:0xf4},H=A,a=j(D,'graph\x20node'),N=this[H(0x107)][H(0x10c)](a);if(!N)throw new Error('Graph\x20node\x20\x27'+a+'\x27\x20must\x20be\x20added\x20before\x20it\x20is\x20connected.');return this[H(qG.D)](D,N[H(0xf8)]['bind'](N),o),this;}[A(0xd9)](D,N){const qy={D:0xfc,o:0xf4,a:0x106,N:0x103},qT={D:0xef},W=A,P=j(D,W(0x101));if(!this['nodeInstances'][W(0xd6)](P))throw new Error(W(0xec)+P+W(0xc7));if(N[W(qy.D)][W(0xd0)]===0x0)throw new Error('branchBy()\x20requires\x20at\x20least\x20one\x20case.');const n=N[W(qy.D)]['map'](({when:L})=>this['currentNodeSelectorName'](L)),V=n[W(0xd1)]((L,z)=>n[W(0xe0)](L)!==z);if(V)throw new Error(W(0xe5)+V+'\x27.');const C=n['map']((L,z)=>W(0x10b)+z),J='otherwise';return this[W(qy.o)](D,L=>{const M=W,z=L[M(0xfe)];if(typeof z!=M(qT.D))throw new Error(M(0xec)+P+M(0xf7));const R=n[M(0xe0)](z);return R===-0x1?J:C[R];},{...Object[W(qy.a)](N['cases'][W(qy.N)](({routeTo:L},z)=>[C[z],L])),[J]:N[W(0xdb)]}),this;}['registerTurns'](...D){const ql={D:0xf9,o:0x102,a:0x103},U=A;if(D[U(ql.D)](o=>j(o,'graph\x20node')===this[U(0xdd)]))throw new Error(U(ql.o)+this[U(0xdd)]+'\x27\x20is\x20reserved\x20by\x20StateGraphExt.registerTurns().');return this['addConditionalEdge'](e,o=>o[U(0xfe)],{...Object[U(0x106)](D[U(ql.a)](o=>[j(o,U(0x101)),o])),[this[U(0xdd)]]:d}),this;}[A(0xda)](){const qe={D:0x107,o:0xcb,a:0xda},O=A;for(const D of this[O(qe.D)][O(qe.o)]())D['validateTools']?.();return this['graph'][O(qe.a)]();}['addConditionalEdge'](D,o,a){const qX={D:0xf1,o:0xce},F=A;this['assertSource'](D);for(const N of Object[F(0xcb)](a))this[F(qX.D)](N);this['graph'][F(0xe9)](c(D),o,Object['fromEntries'](Object[F(qX.o)](a)['map'](([P,n])=>[P,c(n)])));}[A(0xd4)](D,o){const qB={D:0xec},qv={D:0xc3,o:0xc3,a:0xc3},S=A;if(this[S(0xe7)]['has'](D['id']))throw new Error(S(qB.D)+D['id']+'\x27\x20is\x20already\x20registered.');return this[S(0xdc)]['addNode'](D['id'],async N=>{const I=S,P=await D['invoke'](N);if(T(P)){const n=Array['isArray'](P['goto'])?P[I(qv.D)]:P[I(qv.o)]===void 0x0?[]:[P[I(qv.a)]];for(const V of n)typeof V=='string'&&this['assertTarget'](V);}return P;},{'ends':[...new Set(o)]}),this['addedNodeIds'][S(0xd2)](D['id']),this['nodeInstances']['set'](D['id'],D),this;}[A(0x10a)](D){const qw={D:0x104},q0=A;c(D)!==e&&this[q0(qw.D)](D,q0(0xe1));}['assertTarget'](D){const q1=A;c(D)!==d&&this['assertAddedNode'](D,q1(0xeb));}[A(0x104)](D,o){const qj={D:0xd6,o:0xfb},q2=A,a=c(D);if(!this['addedNodeIds'][q2(qj.D)](a))throw new Error(q2(qj.o)+o+'\x20\x27'+a+q2(0xc7));}[A(0xf2)](D){const qD={D:0xef,o:0x101,a:0xf6,N:0xd6,P:0xe4},q3=A;if(typeof D!=q3(qD.D)){if(!g(D))throw new Error(q3(0xff));const o=j(D,q3(qD.o));if(!this['addedNodeIds'][q3(0xd6)](o))throw new Error(q3(qD.a)+o+q3(0xc6));return o;}if(D!==this[q3(0xdd)]&&!this[q3(0xe7)][q3(qD.N)](D))throw new Error(q3(0xf6)+D+q3(qD.P)+this[q3(0xdd)]+'\x27.');return D;}}function g(D){const q4=A,o=D;return typeof D==q4(0x105)&&D!==null&&o[v]===!0x0&&o[q4(0xed)]instanceof B;}p(g,A(0x109));function c(D){const qa={D:0xef},q5=A;return typeof D==q5(qa.D)?D:j(D,'graph\x20node');}p(c,A(0xc8));export{x as StateGraphExt};function q(){const qN=['BMfTzq','yNjHBMnOqNK','y29TCgLSzq','B3rOzxj3AxnL','z3jHCgG','zw5KtM9Kzq','mZmXmLntELbvvW','CMvNAxn0zxjuDxjUCW','Aw5KzxHpzG','C291CMnL','mtzqzxrltfa','ywrKtM9Kzq','jYbTDxn0igjLigfUigfKzgvKieDYyxbOtM9KzsbVCIb0AguGy29UzMLNDxjLzcb0zxjTAw5HBcbZDgf0zsaN','yNjHBMnOqNKOksbOyxmGBw9Yzsb0AgfUig9UzsbJyxnLigzVCIaN','u3rHDgvhCMfWAev4DcbUB2rLCYbTDxn0igjLigfKzgvKigfZieDYyxbOtM9KzsbJBgfZC2vZoIbNCMfWAc5UB2rLCYHnEu5VzguPlG','ywrKzwroB2rLswrZ','mJu5mJuWwNLwt0fb','ywrKq29UzgL0Aw9UywXfzgDLCW','BM9Kzxm','DgfYz2v0','r3jHCgGGBM9KzsaN','ChjVDg90ExbL','CMvNAxn0zxjuDxjUtM9Kzxm','C3rYAw5N','yNjHBMnO','yxnZzxj0vgfYz2v0','y3vYCMvUDe5VzgvtzwXLy3rVCK5HBwu','mtuXmeXbEhL1uq','ywrKq29UzgL0Aw9UywXfzgDL','jYbPCYbHBhjLywr5ihjLz2LZDgvYzwqU','q3vYCMvUDc1UB2rLihnLBgvJDg9YicC','jYbJyw5UB3qGyNjHBMnOihDPDgHVDxqGysbZDhjPBMCGy3vYCMvUDe5VzguU','CM91Dgu','C29Tzq','ntzhCKzws2K','q29UzgL0Aw9UywWGB3iGzgLYzwn0igvKz2uG','y2fZzxm','BM9KzunSyxnZzxm','y3vYCMvUDe5Vzgu','yNjHBMnOqNKOksbZzwXLy3rVCNmGBxvZDcbIzsbhCMfWAe5VzguGy2XHC3nLCYbVCIb0AguGy29UzMLNDxjLzcb0zxjTAw5HBcbZDgf0zs4','AxnbCNjHEq','z3jHCgGGBM9Kzq','vgHLihrLCM1PBMfSihn0yxrLicC','BwfW','yxnZzxj0qwrKzwroB2rL','zNvUy3rPB24','zNjVBuvUDhjPzxm','BM9KzuLUC3rHBMnLCW','mtmWofrzD3DYCW','AxnhCMfWAe5VzgvdBgfZCW','yxnZzxj0u291CMnL','y2fZztO','z2v0','nteXmZmYmg1dDKPdtW','r3jHCgGGBM9KzsbMywn0B3j5igzVCIaN','mJu4ndHMuu95ww8','z290BW','nJi3DNHeyNnq','mJeWndnKyLHfr0W','jYbTDxn0igjLigfKzgvKigjLzM9YzsbPDcbPCYb1C2vKlG','jYbTDxn0igjLigfKzgvKigjLzM9YzsbPDcbPCYbJB25Uzwn0zwqU','zw5KCg9PBNrjza','zgvMAw5LuhjVCgvYDhK','y3jLyxrLr3jHCgHoB2rL','DMfSDwvZ','u3rHDgvhCMfWAev4DcbUB2rLCYbTDxn0igjLigfKzgvKigfZieDYyxbOtM9KzsbJBgfZC2vZoIbNCMfWAc5HzgroB2rLke15tM9KzsKU','mtG2mJy2n2ritNruCq','zw50CMLLCW','ywrKrwrNzq','BgvUz3rO','zMLUza','ywrK','jYbYzxr1CM5LzcaN','CMvNAxn0zxjoB2rL','C2v0','AgfZ','otm1vgPyBfb0'];q=function(){return qN;};return q();}
1
+ const a=v;(function(Z,H){const d7={Z:0x1de,H:0x1ff,r:0x215,R:0x200,M:0x1e6,q:0x1d7,P:0x21d,W:0x20a},B=v,r=Z();while(!![]){try{const R=parseInt(B(d7.Z))/0x1*(-parseInt(B(d7.H))/0x2)+parseInt(B(d7.r))/0x3+parseInt(B(d7.R))/0x4*(parseInt(B(0x1f2))/0x5)+parseInt(B(d7.M))/0x6+parseInt(B(d7.q))/0x7+-parseInt(B(d7.P))/0x8*(-parseInt(B(d7.W))/0x9)+-parseInt(B(0x20c))/0xa;if(R===H)break;else r['push'](r['shift']());}catch(M){r['push'](r['shift']());}}}(d,0x339cf));var m=Object[a(0x1ed)],p=(Z,H)=>m(Z,'name',{'value':H,'configurable':!0x0});import{END as s,isCommand as z,START as F,StateGraph as X}from'@langchain/langgraph';import{GRAPH_NODE_CLASS as V,GraphNode as Y}from'./graph-node.js';import{GRAPH_END_NODE as J}from'./graph-state.js';import{stableClassId as f}from'./stable-id.js';class x{static{p(this,'StateGraphExt');}['createGraphNode'];[a(0x1e5)];[a(0x1fa)];[a(0x1f0)]=new Set();[a(0x21f)]=new Map();['turnNodeIds'];[a(0x1ec)]=new Set();[a(0x1e2)]=new Map();constructor(Z,H,R=J){const d8={Z:0x1e5},U=a;this[U(0x21c)]=H,this[U(d8.Z)]=R,this['graph']=new X(Z);}['addNode'](Z){const d9={Z:0x21c,H:0x21c,r:0x21f,R:0x1f0},e=a;if(!w(Z))throw new Error('StateGraphExt\x20nodes\x20must\x20be\x20added\x20as\x20GraphNode\x20classes:\x20graph.addNode(MyNode).');if(!this[e(d9.Z)])throw new Error('This\x20graph\x20has\x20no\x20GraphNode\x20factory.');const H=this[e(d9.H)](Z),R=f(Z,e(0x1dd));if(H['id']!==R)throw new Error(e(0x1db)+R+'\x27\x20returned\x20\x27'+H['id']+'\x27.');return this[e(d9.r)]['set'](R,Z),this[e(0x21a)](H,[...this[e(d9.R)],R,s]);}['nodes'](...Z){const db={Z:0x1fc,H:0x21b,r:0x220,R:0x217,M:0x21a},dd={Z:0x21e},K=a;if(!this[K(0x21c)])throw new Error(K(0x201));const H=Z[K(0x209)](q=>{const o=K;if(!w(q))throw new Error(o(dd.Z));return f(q,o(0x1dd));}),R=H[K(db.Z)]((q,P)=>H[K(0x204)](q)!==P||this['addedNodeIds']['has'](q));if(R)throw new Error(K(db.H)+R+K(0x1ef));const M=[...this[K(0x1f0)],...H,s];for(const [q,P]of Z[K(db.r)]()){const W=this[K(0x21c)](P),y=H[q];if(W['id']!==y)throw new Error(K(0x1db)+y+'\x27\x20returned\x20\x27'+W['id']+'\x27.');this[K(0x21f)][K(db.R)](y,P),this[K(db.M)](W,M);}return this;}[a(0x1d8)](...Z){const C=a;return this[C(0x1f6)](...Z),this['registerTurns'](...Z),this;}[a(0x211)](...Z){const ds={Z:0x1ee,H:0x21b,r:0x1f0},Q=a;for(const H of Z){if(!w(H))throw new Error(Q(0x203));const R=f(H,Q(0x1dd));if(this[Q(0x1fe)]?.[Q(ds.Z)](R))throw new Error(Q(ds.H)+R+'\x27\x20is\x20already\x20a\x20user-turn\x20entry.');this[Q(ds.r)]['has'](R)||this[Q(0x1f6)](H),this['workerNodeIds'][Q(0x206)](R);}return this;}['addEdge'](Z,H){const dz={Z:0x1fa,H:0x1d6},S=a,R=Array[S(0x1e3)](Z)?Z:[Z];for(const q of R)this[S(0x1eb)](q);this[S(0x1d9)](H);const M=R[S(0x209)](c);return this[S(dz.Z)][S(0x208)](M[S(dz.H)]===0x1?M[0x0]:M,c(H)),this;}['branch'](Z,H){const dF={Z:0x1da},O=a,R=f(Z,O(0x1dd)),M=this[O(0x1e2)]['get'](R);if(!M)throw new Error(O(0x21b)+R+O(0x1fb));return this[O(0x20f)](Z,M[O(0x20b)][O(dF.Z)](M),H),this;}['branchBy'](Z,H){const dV={Z:0x1dd,H:0x1ee,r:0x1fc,R:0x20f,M:0x209,q:0x1f8},dX={Z:0x210,H:0x1f1,r:0x1f3},j=a,R=f(Z,j(dV.Z));if(!this[j(0x1e2)][j(dV.H)](R))throw new Error('Graph\x20node\x20\x27'+R+j(0x1fb));if(H['cases'][j(0x1d6)]===0x0)throw new Error(j(0x218));const M=H['cases']['map'](({when:y})=>this[j(0x214)](y)),q=M[j(dV.r)]((y,L)=>M['indexOf'](y)!==L);if(q)throw new Error(j(0x1e4)+q+'\x27.');const P=M['map']((y,L)=>j(0x216)+L),W=j(0x1f8);return this[j(dV.R)](Z,y=>{const k=j,L=y[k(dX.Z)];if(typeof L!=k(dX.H))throw new Error(k(0x21b)+R+k(dX.r));const D=M[k(0x204)](L);return D===-0x1?W:P[D];},{...Object['fromEntries'](H[j(0x202)][j(dV.M)](({routeTo:y},L)=>[P[L],y])),[W]:H[j(dV.q)]}),this;}[a(0x1e7)](...Z){const dY={Z:0x20e,H:0x1f5,r:0x1e8,R:0x209,M:0x1fe},n=a,H=Z['map'](R=>f(R,n(0x1dd)));for(const R of H)if(this[n(0x1ec)][n(0x1ee)](R))throw new Error(n(0x21b)+R+'\x27\x20is\x20already\x20registered\x20as\x20internal\x20work.');if(Z[n(dY.Z)](M=>f(M,'graph\x20node')===this[n(0x1e5)]))throw new Error(n(dY.H)+this[n(0x1e5)]+n(dY.r));return this[n(0x20f)](F,M=>M[n(0x210)],{...Object['fromEntries'](Z[n(dY.R)](M=>[f(M,'graph\x20node'),M])),[this['endNode']]:s}),this[n(dY.M)]=new Set(H),this;}[a(0x212)](){const dJ={Z:0x1e2,H:0x1df,r:0x1fa},T=a;for(const Z of this[T(dJ.Z)]['values']())Z[T(dJ.H)]?.(this[T(0x1f7)](Z['id']));return this[T(dJ.r)]['compile']();}[a(0x1f7)](Z){const dx={Z:0x1ec,H:0x1e0,r:0x219},N=a;return{'mode':this[N(dx.Z)][N(0x1ee)](Z)||this[N(0x1fe)]!==void 0x0&&!this[N(0x1fe)]['has'](Z)?N(dx.H):N(dx.r)};}[a(0x20f)](Z,H,R){const dp={Z:0x1fa,H:0x1f4,r:0x220},A=a;this[A(0x1eb)](Z);for(const M of Object['values'](R))this['assertTarget'](M);this[A(dp.Z)][A(dp.H)](c(Z),H,Object[A(0x1f9)](Object[A(dp.r)](R)['map'](([q,P])=>[q,c(P)])));}[a(0x21a)](Z,H){const du={Z:0x1f0,H:0x21b,r:0x1ef,R:0x217},df={Z:0x1f7,H:0x1d9},d0=a;if(this[d0(du.Z)][d0(0x1ee)](Z['id']))throw new Error(d0(du.H)+Z['id']+d0(du.r));return this[d0(0x1fa)][d0(0x205)](Z['id'],async R=>{const d1=d0,M=await Z['invoke'](R,this[d1(df.Z)](Z['id']));if(z(M)){const q=Array[d1(0x1e3)](M[d1(0x20d)])?M[d1(0x20d)]:M[d1(0x20d)]===void 0x0?[]:[M[d1(0x20d)]];for(const P of q)typeof P=='string'&&this[d1(df.H)](P);}return M;},{'ends':[...new Set(H)]}),this[d0(0x1f0)][d0(0x206)](Z['id']),this[d0(0x1e2)][d0(du.R)](Z['id'],Z),this;}[a(0x1eb)](Z){const dc={Z:0x1e1},d2=a;c(Z)!==F&&this[d2(0x207)](Z,d2(dc.Z));}['assertTarget'](Z){const dZ={Z:0x207,H:0x1fd},d3=a;c(Z)!==s&&this[d3(dZ.Z)](Z,d3(dZ.H));}[a(0x207)](Z,H){const dH={Z:0x1f0},d4=a,R=c(Z);if(!this[d4(dH.Z)][d4(0x1ee)](R))throw new Error(d4(0x213)+H+'\x20\x27'+R+d4(0x1fb));}[a(0x214)](Z){const dr={Z:0x1f1,H:0x1ee,r:0x1dc,R:0x1e9,M:0x1e5,q:0x1ea,P:0x1e5},d5=a;if(typeof Z!=d5(dr.Z)){if(!w(Z))throw new Error('branchBy()\x20selectors\x20must\x20be\x20GraphNode\x20classes\x20or\x20the\x20configured\x20terminal\x20state.');const H=f(Z,'graph\x20node');if(!this[d5(0x1f0)][d5(dr.H)](H))throw new Error(d5(dr.r)+H+d5(dr.R));return H;}if(Z!==this[d5(dr.M)]&&!this['addedNodeIds'][d5(0x1ee)](Z))throw new Error(d5(dr.r)+Z+d5(dr.q)+this[d5(dr.P)]+'\x27.');return Z;}}function v(b,s){b=b-0x1d6;const z=d();let F=z[b];if(v['eVpIkl']===undefined){var X=function(x){const p='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let f='',u='';for(let c=0x0,Z,H,r=0x0;H=x['charAt'](r++);~H&&(Z=c%0x4?Z*0x40+H:H,c++%0x4)?f+=String['fromCharCode'](0xff&Z>>(-0x2*c&0x6)):0x0){H=p['indexOf'](H);}for(let R=0x0,M=f['length'];R<M;R++){u+='%'+('00'+f['charCodeAt'](R)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(u);};v['aoVAHY']=X,v['txctJP']={},v['eVpIkl']=!![];}const V=z[0x0],Y=b+V,J=v['txctJP'][Y];return!J?(F=v['aoVAHY'](F),v['txctJP'][Y]=F):F=J,F;}function w(Z){const H=Z;return typeof Z=='function'&&Z!==null&&H[V]===!0x0&&H['prototype']instanceof Y;}function d(){const dq=['yMLUza','r3jHCgGGBM9KzsbMywn0B3j5igzVCIaN','q3vYCMvUDc1UB2rLihnLBgvJDg9YicC','z3jHCgGGBM9Kzq','otG4ndzWwNP1r0q','DMfSAwrHDgvuB29SCW','Aw50zxjUywW','C291CMnL','BM9KzuLUC3rHBMnLCW','AxnbCNjHEq','yNjHBMnOqNKOksbOyxmGBw9Yzsb0AgfUig9UzsbJyxnLigzVCIaN','zw5KtM9Kzq','otG0odeWvM1ZqKHX','CMvNAxn0zxjuDxjUCW','jYbPCYbYzxnLCNzLzcbIEsbtDgf0zuDYyxbOrxH0lNjLz2LZDgvYvhvYBNmOks4','jYbTDxn0igjLigfKzgvKigjLzM9YzsbPDcbPCYb1C2vKlG','jYbTDxn0igjLigfUigfKzgvKieDYyxbOtM9KzsbVCIb0AguGy29UzMLNDxjLzcb0zxjTAw5HBcbZDgf0zsaN','yxnZzxj0u291CMnL','D29YA2vYtM9KzuLKCW','zgvMAw5LuhjVCgvYDhK','AgfZ','jYbPCYbHBhjLywr5ihjLz2LZDgvYzwqU','ywrKzwroB2rLswrZ','C3rYAw5N','nwnMs3bqtW','jYbJyw5UB3qGyNjHBMnOihDPDgHVDxqGysbZDhjPBMCGy3vYCMvUDe5VzguU','ywrKq29UzgL0Aw9UywXfzgDLCW','vgHLihrLCM1PBMfSihn0yxrLicC','BM9Kzxm','Aw52B2nHDgLVBK9WDgLVBNm','B3rOzxj3AxnL','zNjVBuvUDhjPzxm','z3jHCgG','jYbTDxn0igjLigfKzgvKigjLzM9YzsbPDcbPCYbJB25Uzwn0zwqU','zMLUza','DgfYz2v0','DhvYBK5Vzgvjzhm','oe14wLD4qq','ode1mZa0swPuvxf3','vgHPCYbNCMfWAcbOyxmGBM8Gr3jHCgHoB2rLigzHy3rVCNKU','y2fZzxm','u3rHDgvhCMfWAev4Dcb3B3jRzxjZig11C3qGyMuGywrKzwqGyxmGr3jHCgHoB2rLignSyxnZzxmU','Aw5KzxHpzG','ywrKtM9Kzq','ywrK','yxnZzxj0qwrKzwroB2rL','ywrKrwrNzq','BwfW','ntrRtKffrvm','CM91Dgu','nJa2mtK1mhHOz3rcsW','z290BW','C29Tzq','ywrKq29UzgL0Aw9UywXfzgDL','y3vYCMvUDe5Vzgu','D29YA2vYCW','y29TCgLSzq','q29UzgL0Aw9UywWGB3iGzgLYzwn0igvKz2uG','y3vYCMvUDe5VzgvtzwXLy3rVCK5HBwu','nJmYnJe5s1Ptu3Px','y2fZztO','C2v0','yNjHBMnOqNKOksbYzxf1AxjLCYbHDcbSzwfZDcbVBMuGy2fZzs4','y29UDMvYC2f0Aw9U','CMvNAxn0zxjoB2rL','r3jHCgGGBM9KzsaN','y3jLyxrLr3jHCgHoB2rL','ntu5ndmYzu55CMzp','u3rHDgvhCMfWAev4DcbUB2rLCYbTDxn0igjLigfKzgvKigfZieDYyxbOtM9KzsbJBgfZC2vZoIbNCMfWAc5UB2rLCYHnEu5VzguPlG','BM9KzunSyxnZzxm','zw50CMLLCW','BgvUz3rO','mtuWmJa0nMnnywT6yq','CMvNAxn0zxjuDxjUtM9Kzxm','yxnZzxj0vgfYz2v0'];d=function(){return dq;};return d();}p(w,'isGraphNodeClass');function c(Z){const dM={Z:0x1f1},d6=a;return typeof Z==d6(dM.Z)?Z:f(Z,d6(0x1dd));}p(c,'endpointId');export{x as StateGraphExt};
@@ -1 +1 @@
1
- var u=Object.defineProperty;var n=(e,r)=>u(e,"name",{value:r,configurable:!0});function f(e){return s({kind:"go",target:e})}n(f,"go");function l(e="OK"){return s({kind:"stay",feedback:e})}n(l,"stay");function c(e){return s({kind:"direct",response:o(e)})}n(c,"direct");function d(e,r){return s({kind:"directTo",target:e,response:o(r)})}n(d,"directTo");function p(e){return s({kind:"finish",response:o(e)})}n(p,"finish");function b(e){return!e||typeof e!="object"||!("kind"in e)?!1:["go","stay","direct","directTo","finish"].includes(String(e.kind))}n(b,"isToolResponse");function o(e){return typeof e=="string"?e:JSON.stringify(e)}n(o,"responseContent");function s(e){const r={...e},i=n(t=>s({...e,...t}),"derive");return Object.defineProperties(r,{withState:{enumerable:!1,value:n(t=>i({state:t}),"value")},withMessage:{enumerable:!1,value:n(t=>i({message:t}),"value")},withMessages:{enumerable:!1,value:n(t=>i({messages:t}),"value")},withCleanup:{enumerable:!1,value:n(t=>i({cleanup:t}),"value")},withToolFeedback:{enumerable:!1,value:n(t=>i({feedback:t}),"value")},withUsage:{enumerable:!1,value:n(t=>i({usage:t}),"value")}}),r}n(s,"createBuilder");export{c as direct,d as directTo,p as finish,f as go,b as isToolResponse,l as stay};
1
+ var s=Object.defineProperty;var t=(e,i)=>s(e,"name",{value:i,configurable:!0});import{stableClassId as u}from"./stable-id.js";function l(e){return Object.freeze({kind:"taskResult",value:e})}t(l,"taskResult");function c(e,...i){const n=i.length===0?{kind:"go",target:e}:{kind:"go",targets:Object.freeze([e,...i])};return d(n),a(n)}t(c,"go");function d(e){if(e.kind!=="go")throw new Error("Expected a go() response.");if(e.targets!==void 0&&(!Array.isArray(e.targets)||e.targets.length<2||e.target!==void 0||e.state!==void 0||e.message!==void 0))throw new Error("Multi-target go() requires at least two targets and cannot use target, withState(), or withMessage().");const i=e.targets??(e.target?[e.target]:[]);if(i.length===0)throw new Error("go() requires a target.");const n=i.map(r=>{if(!r||typeof r.id!="function")throw new Error("go() requires registered GraphNode class targets.");return u(r,"graph node")});if(new Set(n).size!==n.length)throw new Error("Multi-target go() requires distinct graph node IDs.");return n}t(d,"goTargetIds");function h(e="OK"){return a({kind:"stay",feedback:e})}t(h,"stay");function w(e){return a({kind:"direct",response:o(e)})}t(w,"direct");function p(e,i){return a({kind:"directTo",target:e,response:o(i)})}t(p,"directTo");function k(e){return a({kind:"finish",response:o(e)})}t(k,"finish");function b(e){return!e||typeof e!="object"||!("kind"in e)?!1:["go","stay","direct","directTo","finish","taskResult"].includes(String(e.kind))}t(b,"isToolResponse");function o(e){return typeof e=="string"?e:JSON.stringify(e)}t(o,"responseContent");function a(e){const i={...e},n=t(r=>a({...e,...r}),"derive");return Object.defineProperties(i,{...e.targets===void 0?{withState:{enumerable:!1,value:t(r=>n({state:r}),"value")},withMessage:{enumerable:!1,value:t(r=>n({message:r}),"value")}}:{},withMessages:{enumerable:!1,value:t(r=>n({messages:r}),"value")},withCleanup:{enumerable:!1,value:t(r=>n({cleanup:r}),"value")},withToolFeedback:{enumerable:!1,value:t(r=>n({feedback:r}),"value")},withUsage:{enumerable:!1,value:t(r=>n({usage:r}),"value")}}),i}t(a,"createBuilder");export{w as direct,p as directTo,k as finish,c as go,d as goTargetIds,b as isToolResponse,h as stay,l as taskResult};
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- import{GraphContextChannel as r}from"./framework/graph-context.js";import{BaseGraph as t}from"./framework/base-graph.js";import{GRAPH_NODE_CLASS as n,GraphNode as a,GraphNodeRuntime as p,Tool as m}from"./framework/graph-node.js";import{LlmNode as E}from"./framework/llm-node.js";import{LLM_GATEWAY_FACTORY as f,assertLlmTimeoutMs as L}from"./framework/llm-gateway.js";import{ConversationRunner as l,DEFAULT_CONVERSATION_POLICY as T,DEFAULT_EMPTY_HISTORY_SEED as g,DEFAULT_EMPTY_RESPONSE_RECOVERY as D,DEFAULT_MAX_AGENT_ROUNDS as R,EmptyModelResponseError as _,assertEmptyResponseRetries as c,assertMaxAgentRounds as C}from"./framework/conversation-runner.js";import{describeStopReason as A,isRetryableStopReason as N,modelStopReason as O}from"./framework/model-stop-reason.js";import{currentTurnContext as I,currentTurnSignal as G,withTurnContext as P}from"./framework/turn-context.js";import{direct as U,directTo as y,finish as v,go as F,isToolResponse as Y,stay as H}from"./framework/tool-response.js";import{GraphStateSupport as B}from"./framework/graph-state-support.js";import{GRAPH_END_NODE as b,createGraphStateAnnotation as W}from"./framework/graph-state.js";import{GraphRegistry as z}from"./framework/graph-registry.js";import{GraphEngine as J}from"./framework/graph-engine.js";import{ConfigManager as X}from"./framework/config-manager.js";import{StateGraphExt as K}from"./framework/state-graph-ext.js";import{TerminateSessionNode as $}from"./framework/terminate-session.node.js";import{SessionLogError as oe,SessionLogDecision as re,SessionLogWarning as se,createSessionLogs as te,drainSessionLogs as ie,restoreSessionLogs as ne,withSessionLogs as ae}from"./framework/session-log.js";import{ProviderFileManager as me}from"./framework/llm-file.js";import{SessionManager as Ee,SessionTurnError as xe,SESSION_BUSY as fe,SESSION_CONFLICT as Le,SESSION_COMPLETED as de,SESSION_DOCUMENT_VERSION as le,MemorySessionDocumentContainer as Te,sessionTurnLeaseMs as ge,sessionRevision as De,isLiveSessionTurn as Re,matchesSessionWritePredicate as _e}from"./framework/persistence/session-manager.js";import{MongoDbSessionDocumentContainer as Ce}from"./framework/persistence/mongodb-session-document.container.js";import{SqliteSessionDocumentContainer as Ae}from"./framework/persistence/sqlite-session-document.container.js";import{CosmosSessionDocumentContainer as Oe}from"./framework/persistence/cosmos-session-document.container.js";import{mergeNodeStates as Ie,replaceNodeStates as Ge}from"./framework/node-state.js";import{LangChainLlmGateway as he}from"./framework/langchain-llm-gateway.js";import{ModelProvider as ye}from"./framework/model-provider.js";import{langChainModelInitialization as Fe}from"./framework/langchain-provider.adapter.js";import{GRAPH_LLM_PROVIDERS as He,GRAPH_LLM_FAMILIES as ke,GRAPH_LLM_CAPABILITIES as Be,BUILT_IN_MODEL_CATALOG as Ve,GraphLlm as be,ModelCatalog as We,ModelProviderRegistry as we}from"./framework/graph-llm.config.js";import{addTokenUsage as qe,emptyTokenUsage as Je,modelExecution as Qe,normalizeTokenUsage as Xe,tokenUsageFromMessage as je}from"./framework/token-usage.js";import{DecisionNode as Ze}from"./framework/decision/decision-node.js";import{DecisionRunner as eo}from"./framework/decision/decision-runner.js";import{DecisionProvider as ro,DecisionProviderRegistry as so}from"./framework/decision/decision-provider.js";import{TypeSafeClassifierAdapter as io}from"./framework/decision/typesafe-provider.js";import{DecisionConfigurationError as ao,DecisionTimeoutError as po,DecisionValidationError as mo,DEFAULT_DECISION_OPTIONS as So,addDecisionUsage as Eo,decisionUsage as xo,emptyDecisionUsage as fo,normalizeDecisionUsage as Lo,resolveDecisionOptions as lo}from"./framework/decision/decision-types.js";import{assertJsonCompatible as go,validateDecisionQuestions as Do,validateDecisionResult as Ro}from"./framework/decision/decision-validation.js";import{retryWithModel as co,LlmResponseBlockedError as Co,LlmSetupError as Mo}from"./framework/llm-lifecycle.js";export{Ve as BUILT_IN_MODEL_CATALOG,t as BaseGraph,X as ConfigManager,l as ConversationRunner,Oe as CosmosSessionDocumentContainer,T as DEFAULT_CONVERSATION_POLICY,So as DEFAULT_DECISION_OPTIONS,g as DEFAULT_EMPTY_HISTORY_SEED,D as DEFAULT_EMPTY_RESPONSE_RECOVERY,R as DEFAULT_MAX_AGENT_ROUNDS,ao as DecisionConfigurationError,Ze as DecisionNode,ro as DecisionProvider,so as DecisionProviderRegistry,eo as DecisionRunner,po as DecisionTimeoutError,mo as DecisionValidationError,_ as EmptyModelResponseError,b as GRAPH_END_NODE,Be as GRAPH_LLM_CAPABILITIES,ke as GRAPH_LLM_FAMILIES,He as GRAPH_LLM_PROVIDERS,n as GRAPH_NODE_CLASS,r as GraphContextChannel,J as GraphEngine,be as GraphLlm,a as GraphNode,p as GraphNodeRuntime,z as GraphRegistry,B as GraphStateSupport,f as LLM_GATEWAY_FACTORY,he as LangChainLlmGateway,E as LlmNode,Co as LlmResponseBlockedError,Mo as LlmSetupError,Te as MemorySessionDocumentContainer,We as ModelCatalog,ye as ModelProvider,we as ModelProviderRegistry,Ce as MongoDbSessionDocumentContainer,me as ProviderFileManager,fe as SESSION_BUSY,de as SESSION_COMPLETED,Le as SESSION_CONFLICT,le as SESSION_DOCUMENT_VERSION,re as SessionLogDecision,oe as SessionLogError,se as SessionLogWarning,Ee as SessionManager,xe as SessionTurnError,Ae as SqliteSessionDocumentContainer,K as StateGraphExt,$ as TerminateSessionNode,m as Tool,io as TypeSafeClassifierAdapter,Eo as addDecisionUsage,qe as addTokenUsage,c as assertEmptyResponseRetries,go as assertJsonCompatible,L as assertLlmTimeoutMs,C as assertMaxAgentRounds,W as createGraphStateAnnotation,te as createSessionLogs,I as currentTurnContext,G as currentTurnSignal,xo as decisionUsage,A as describeStopReason,U as direct,y as directTo,ie as drainSessionLogs,fo as emptyDecisionUsage,Je as emptyTokenUsage,v as finish,F as go,Re as isLiveSessionTurn,N as isRetryableStopReason,Y as isToolResponse,Fe as langChainModelInitialization,_e as matchesSessionWritePredicate,Ie as mergeNodeStates,Qe as modelExecution,O as modelStopReason,Lo as normalizeDecisionUsage,Xe as normalizeTokenUsage,Ge as replaceNodeStates,lo as resolveDecisionOptions,ne as restoreSessionLogs,co as retryWithModel,De as sessionRevision,ge as sessionTurnLeaseMs,H as stay,je as tokenUsageFromMessage,Do as validateDecisionQuestions,Ro as validateDecisionResult,ae as withSessionLogs,P as withTurnContext};
1
+ import{GraphContextChannel as r}from"./framework/graph-context.js";import{BaseGraph as t}from"./framework/base-graph.js";import{GRAPH_NODE_CLASS as n,GraphNode as a,GraphNodeRuntime as m,Tool as p}from"./framework/graph-node.js";import{LlmNode as E}from"./framework/llm-node.js";import{LLM_GATEWAY_FACTORY as L,assertLlmTimeoutMs as f}from"./framework/llm-gateway.js";import{LlmRunner as d,DEFAULT_LLM_POLICY as g,DEFAULT_EMPTY_HISTORY_SEED as D,DEFAULT_EMPTY_RESPONSE_RECOVERY as T,DEFAULT_MAX_AGENT_ROUNDS as R,EmptyModelResponseError as _,assertEmptyResponseRetries as c,assertMaxAgentRounds as C}from"./framework/llm-runner.js";import{describeStopReason as u,isRetryableStopReason as A,modelStopReason as N}from"./framework/model-stop-reason.js";import{currentTurnContext as I,currentTurnSignal as G,withTurnContext as P}from"./framework/turn-context.js";import{direct as U,directTo as y,finish as v,go as F,isToolResponse as Y,stay as k,taskResult as H}from"./framework/tool-response.js";import{GraphStateSupport as b}from"./framework/graph-state-support.js";import{GRAPH_END_NODE as W,createGraphStateAnnotation as w}from"./framework/graph-state.js";import{GraphRegistry as q}from"./framework/graph-registry.js";import{GraphEngine as Q}from"./framework/graph-engine.js";import{ConfigManager as j}from"./framework/config-manager.js";import{StateGraphExt as Z}from"./framework/state-graph-ext.js";import{TerminateSessionNode as ee}from"./framework/terminate-session.node.js";import{SessionLogError as re,SessionLogDecision as se,SessionLogWarning as te,createSessionLogs as ie,drainSessionLogs as ne,restoreSessionLogs as ae,withSessionLogs as me}from"./framework/session-log.js";import{ProviderFileManager as Se}from"./framework/llm-file.js";import{SessionManager as xe,SessionTurnError as Le,SESSION_BUSY as fe,SESSION_CONFLICT as le,SESSION_COMPLETED as de,SESSION_DOCUMENT_VERSION as ge,MemorySessionDocumentContainer as De,sessionTurnLeaseMs as Te,sessionRevision as Re,isLiveSessionTurn as _e,matchesSessionWritePredicate as ce}from"./framework/persistence/session-manager.js";import{MongoDbSessionDocumentContainer as Me}from"./framework/persistence/mongodb-session-document.container.js";import{SqliteSessionDocumentContainer as Ae}from"./framework/persistence/sqlite-session-document.container.js";import{CosmosSessionDocumentContainer as Oe}from"./framework/persistence/cosmos-session-document.container.js";import{mergeNodeStates as Ge,replaceNodeStates as Pe}from"./framework/node-state.js";import{LangChainLlmGateway as Ue}from"./framework/langchain-llm-gateway.js";import{ModelProvider as ve}from"./framework/model-provider.js";import{langChainModelInitialization as Ye}from"./framework/langchain-provider.adapter.js";import{GRAPH_LLM_PROVIDERS as He,GRAPH_LLM_FAMILIES as Be,GRAPH_LLM_CAPABILITIES as be,BUILT_IN_MODEL_CATALOG as Ve,GraphLlm as We,ModelCatalog as we,ModelProviderRegistry as ze}from"./framework/graph-llm.config.js";import{addTokenUsage as Je,emptyTokenUsage as Qe,modelExecution as Xe,normalizeTokenUsage as je,tokenUsageFromMessage as Ke}from"./framework/token-usage.js";import{DecisionNode as $e}from"./framework/decision/decision-node.js";import{DecisionRunner as oo}from"./framework/decision/decision-runner.js";import{DecisionProvider as so,DecisionProviderRegistry as to}from"./framework/decision/decision-provider.js";import{TypeSafeClassifierAdapter as no}from"./framework/decision/typesafe-provider.js";import{DecisionConfigurationError as mo,DecisionTimeoutError as po,DecisionValidationError as So,DEFAULT_DECISION_OPTIONS as Eo,addDecisionUsage as xo,decisionUsage as Lo,emptyDecisionUsage as fo,normalizeDecisionUsage as lo,resolveDecisionOptions as go}from"./framework/decision/decision-types.js";import{assertJsonCompatible as To,validateDecisionQuestions as Ro,validateDecisionResult as _o}from"./framework/decision/decision-validation.js";import{retryWithModel as Co,LlmResponseBlockedError as Mo,LlmSetupError as uo}from"./framework/llm-lifecycle.js";export{Ve as BUILT_IN_MODEL_CATALOG,t as BaseGraph,j as ConfigManager,Oe as CosmosSessionDocumentContainer,Eo as DEFAULT_DECISION_OPTIONS,D as DEFAULT_EMPTY_HISTORY_SEED,T as DEFAULT_EMPTY_RESPONSE_RECOVERY,g as DEFAULT_LLM_POLICY,R as DEFAULT_MAX_AGENT_ROUNDS,mo as DecisionConfigurationError,$e as DecisionNode,so as DecisionProvider,to as DecisionProviderRegistry,oo as DecisionRunner,po as DecisionTimeoutError,So as DecisionValidationError,_ as EmptyModelResponseError,W as GRAPH_END_NODE,be as GRAPH_LLM_CAPABILITIES,Be as GRAPH_LLM_FAMILIES,He as GRAPH_LLM_PROVIDERS,n as GRAPH_NODE_CLASS,r as GraphContextChannel,Q as GraphEngine,We as GraphLlm,a as GraphNode,m as GraphNodeRuntime,q as GraphRegistry,b as GraphStateSupport,L as LLM_GATEWAY_FACTORY,Ue as LangChainLlmGateway,E as LlmNode,Mo as LlmResponseBlockedError,d as LlmRunner,uo as LlmSetupError,De as MemorySessionDocumentContainer,we as ModelCatalog,ve as ModelProvider,ze as ModelProviderRegistry,Me as MongoDbSessionDocumentContainer,Se as ProviderFileManager,fe as SESSION_BUSY,de as SESSION_COMPLETED,le as SESSION_CONFLICT,ge as SESSION_DOCUMENT_VERSION,se as SessionLogDecision,re as SessionLogError,te as SessionLogWarning,xe as SessionManager,Le as SessionTurnError,Ae as SqliteSessionDocumentContainer,Z as StateGraphExt,ee as TerminateSessionNode,p as Tool,no as TypeSafeClassifierAdapter,xo as addDecisionUsage,Je as addTokenUsage,c as assertEmptyResponseRetries,To as assertJsonCompatible,f as assertLlmTimeoutMs,C as assertMaxAgentRounds,w as createGraphStateAnnotation,ie as createSessionLogs,I as currentTurnContext,G as currentTurnSignal,Lo as decisionUsage,u as describeStopReason,U as direct,y as directTo,ne as drainSessionLogs,fo as emptyDecisionUsage,Qe as emptyTokenUsage,v as finish,F as go,_e as isLiveSessionTurn,A as isRetryableStopReason,Y as isToolResponse,Ye as langChainModelInitialization,ce as matchesSessionWritePredicate,Ge as mergeNodeStates,Xe as modelExecution,N as modelStopReason,lo as normalizeDecisionUsage,je as normalizeTokenUsage,Pe as replaceNodeStates,go as resolveDecisionOptions,ae as restoreSessionLogs,Co as retryWithModel,Re as sessionRevision,Te as sessionTurnLeaseMs,k as stay,H as taskResult,Ke as tokenUsageFromMessage,Ro as validateDecisionQuestions,_o as validateDecisionResult,me as withSessionLogs,P as withTurnContext};
@@ -1 +1 @@
1
- var d=Object.defineProperty;var h=(a,t)=>d(a,"name",{value:t,configurable:!0});import{AIMessage as c}from"@langchain/core/messages";import{ModelCatalog as l}from"../framework/graph-llm.config.js";import{modelExecution as m}from"../framework/token-usage.js";const p=l.model("scripted:scripted-model",{retries:0,temperature:0}),g={input_tokens:10,output_tokens:4,thinking_tokens:1,tool_input_tokens:2,cached_input_tokens:3,total_tokens:14};class k{static{h(this,"ScriptedGateway")}turns=[];consumed=0;calls=[];text(t){return this.turns.push({kind:"text",text:t}),this}callsTool(t,e={},s=`${t}-${String(this.turns.length+1)}`){return this.turns.push({kind:"message",message:new c({content:"",tool_calls:[{id:s,name:t,args:e,type:"tool_call"}]})}),this}callsTools(t){return this.turns.push({kind:"message",message:new c({content:"",tool_calls:t.map((e,s)=>({id:e.id??`${e.name}-${String(s+1)}`,name:e.name,args:e.args??{},type:"tool_call"}))})}),this}structuredResult(t){return this.turns.push({kind:"object",value:t}),this}toolDecision(t){return this.turns.push({kind:"tool",call:t}),this}empty(t){return this.turns.push({kind:"message",message:new c({content:"",...t===void 0?{}:{response_metadata:{finish_reason:t}}})}),this}fail(t){return this.turns.push({kind:"failure",error:typeof t=="string"?new Error(t):t}),this}repeat(t,e){for(let s=0;s<t;s+=1)e(this);return this}get drained(){return this.consumed>=this.turns.length}get remaining(){return Math.max(0,this.turns.length-this.consumed)}async structured(t,e,s,r,u,i,o){this.record({method:"structured",systemPrompt:e,history:i??[],tools:[r],llmConfig:u,callOptions:o});const n=this.take(`structured('${r}')`,s);if(n.kind==="object")return this.result(n.value,u);if(n.kind==="text")return this.result(JSON.parse(n.text),u);throw this.mismatch(`structured('${r}')`,n)}async generate(t,e,s,r){return this.record({method:"generate",systemPrompt:t,history:[],tools:[],llmConfig:s,callOptions:r}),this.result(this.takeText("generate",e),s)}async respond(t,e,s,r){return this.record({method:"respond",systemPrompt:t,history:e,tools:[],llmConfig:s,callOptions:r}),this.result(this.takeText("respond",t),s)}async agent(t,e,s,r,u){this.record({method:"agent",systemPrompt:t,history:e,tools:s.map(({name:o})=>o),llmConfig:r,callOptions:u});const i=this.take("agent",t);if(i.kind==="message")return this.result(i.message,r);if(i.kind==="text")return this.result(new c(i.text),r);throw this.mismatch("agent",i)}async toolCall(t,e,s,r,u,i){this.record({method:"toolCall",systemPrompt:t,history:u??[],tools:s.map(({name:n})=>n),llmConfig:r,callOptions:i});const o=this.take("toolCall",e);if(o.kind==="tool")return this.result(o.call,r);if(o.kind==="message"){const[n]=o.message.tool_calls??[];return this.result(n?{name:n.name,args:n.args}:void 0,r)}throw this.mismatch("toolCall",o)}record(t){this.calls.push(t)}takeText(t,e){const s=this.take(t,e);if(s.kind==="text")return s.text;if(s.kind==="message")return w(s.message);throw this.mismatch(t,s)}take(t,e){const s=this.turns[this.consumed];if(!s)throw new Error(`ScriptedGateway ran out of turns: ${t} was call ${String(this.consumed+1)} but only ${String(this.turns.length)} were queued. Unanswered request: ${x(e)}`);if(this.consumed+=1,s.kind==="failure")throw s.error;return s}mismatch(t,e){return new Error(`ScriptedGateway turn ${String(this.consumed)} is a '${e.kind}' turn, which ${t} cannot return.`)}result(t,e){return{value:t,usage:{...g},execution:m(e??p)}}}function S(){return new k}h(S,"scriptedGateway");function w(a){const{content:t}=a;return typeof t=="string"?t:t.map(e=>typeof e=="object"&&e&&"text"in e?String(e.text):"").join("")}h(w,"messageText");function x(a){const t=a.replace(/\s+/g," ").trim();return t.length>120?`${t.slice(0,120)}\u2026`:t}h(x,"summarize");export{p as SCRIPTED_MODEL,g as SCRIPTED_TOKEN_USAGE,k as ScriptedGateway,S as scriptedGateway};
1
+ var d=Object.defineProperty;var h=(a,t)=>d(a,"name",{value:t,configurable:!0});import{AIMessage as c}from"@langchain/core/messages";import{ModelCatalog as l}from"../framework/graph-llm.config.js";import{modelExecution as m}from"../framework/token-usage.js";const p=l.model("scripted:scripted-model",{retries:0,temperature:0}),g={input_tokens:10,output_tokens:4,thinking_tokens:1,tool_input_tokens:2,cached_input_tokens:3,total_tokens:14};class k{static{h(this,"ScriptedGateway")}turns=[];consumed=0;calls=[];text(t){return this.turns.push({kind:"text",text:t}),this}callsTool(t,e={},s=`${t}-${String(this.turns.length+1)}`){return this.turns.push({kind:"message",message:new c({content:"",tool_calls:[{id:s,name:t,args:e,type:"tool_call"}]})}),this}callsTools(t){return this.turns.push({kind:"message",message:new c({content:"",tool_calls:t.map((e,s)=>({id:e.id??`${e.name}-${String(s+1)}`,name:e.name,args:e.args??{},type:"tool_call"}))})}),this}structuredResult(t){return this.turns.push({kind:"object",value:t}),this}toolDecision(t){return this.turns.push({kind:"tool",call:t}),this}empty(t){return this.turns.push({kind:"message",message:new c({content:"",...t===void 0?{}:{response_metadata:{finish_reason:t}}})}),this}fail(t){return this.turns.push({kind:"failure",error:typeof t=="string"?new Error(t):t}),this}repeat(t,e){for(let s=0;s<t;s+=1)e(this);return this}get drained(){return this.consumed>=this.turns.length}get remaining(){return Math.max(0,this.turns.length-this.consumed)}async structured(t,e,s,r,u,i,o){this.record({method:"structured",systemPrompt:e,history:i??[],tools:[r],llmConfig:u,callOptions:o});const n=this.take(`structured('${r}')`,s);if(n.kind==="object")return this.result(n.value,u);if(n.kind==="text")return this.result(JSON.parse(n.text),u);throw this.mismatch(`structured('${r}')`,n)}async generate(t,e,s,r){return this.record({method:"generate",systemPrompt:t,history:[],tools:[],llmConfig:s,callOptions:r}),this.result(this.takeText("generate",e),s)}async respond(t,e,s,r){return this.record({method:"respond",systemPrompt:t,history:e,tools:[],llmConfig:s,callOptions:r}),this.result(this.takeText("respond",t),s)}async agent(t,e,s,r,u){this.record({method:"agent",systemPrompt:t,history:e,tools:s.map(({name:o})=>o),llmConfig:r,callOptions:u});const i=this.take("agent",t);if(i.kind==="message")return this.result(i.message,r);if(i.kind==="text")return this.result(new c(i.text),r);throw this.mismatch("agent",i)}async toolCall(t,e,s,r,u,i){this.record({method:"toolCall",systemPrompt:t,history:u??[],tools:s.map(({name:n})=>n),llmConfig:r,callOptions:i});const o=this.take("toolCall",e);if(o.kind==="tool")return this.result(o.call,r);if(o.kind==="message"){const[n]=o.message.tool_calls??[];return this.result(n?{name:n.name,args:n.args}:void 0,r)}throw this.mismatch("toolCall",o)}record(t){this.calls.push({...t,history:[...t.history]})}takeText(t,e){const s=this.take(t,e);if(s.kind==="text")return s.text;if(s.kind==="message")return w(s.message);throw this.mismatch(t,s)}take(t,e){const s=this.turns[this.consumed];if(!s)throw new Error(`ScriptedGateway ran out of turns: ${t} was call ${String(this.consumed+1)} but only ${String(this.turns.length)} were queued. Unanswered request: ${x(e)}`);if(this.consumed+=1,s.kind==="failure")throw s.error;return s}mismatch(t,e){return new Error(`ScriptedGateway turn ${String(this.consumed)} is a '${e.kind}' turn, which ${t} cannot return.`)}result(t,e){return{value:t,usage:{...g},execution:m(e??p)}}}function S(){return new k}h(S,"scriptedGateway");function w(a){const{content:t}=a;return typeof t=="string"?t:t.map(e=>typeof e=="object"&&e&&"text"in e?String(e.text):"").join("")}h(w,"messageText");function x(a){const t=a.replace(/\s+/g," ").trim();return t.length>120?`${t.slice(0,120)}\u2026`:t}h(x,"summarize");export{p as SCRIPTED_MODEL,g as SCRIPTED_TOKEN_USAGE,k as ScriptedGateway,S as scriptedGateway};
@@ -1,12 +1,12 @@
1
1
  export { GraphContextChannel, type DeepReadonly } from "../../src/framework/graph-context.js";
2
2
  export { BaseGraph, type GraphDefinition, type GraphNodeConstructor, type GraphSchemaMigration, type HistorySpace, } from "../../src/framework/base-graph.js";
3
- export { GRAPH_NODE_CLASS, GraphNode, GraphNodeRuntime, Tool, type EmptyModelResponseContext, type GraphNodeUpdate, type GraphNodeResponse, type GraphNodeResult, type InvalidJsonResponseContext, type ToolDefinition, type ToolInput, type GraphNodeLocalState, type GraphNodeTarget, } from "../../src/framework/graph-node.js";
4
- export { LlmNode, type LlmNodeRunResult, } from "../../src/framework/llm-node.js";
3
+ export { GRAPH_NODE_CLASS, GraphNode, GraphNodeRuntime, Tool, type EmptyModelResponseContext, type GraphNodeUpdate, type GraphNodeResponse, type GraphNodeResult, type InvalidJsonResponseContext, type ToolDefinition, type ToolInput, type GraphNodeLocalState, type GraphNodeTarget, type NodeInvocationOptions, } from "../../src/framework/graph-node.js";
4
+ export { LlmNode, type LlmNodeRunResult, type LlmNodeResponse, } from "../../src/framework/llm-node.js";
5
5
  export { LLM_GATEWAY_FACTORY, assertLlmTimeoutMs, type LlmCallOptions, type LlmGateway, type LlmGatewayFactory, type LlmGatewayTool, type LlmGatewayToolCall, } from "../../src/framework/llm-gateway.js";
6
- export { ConversationRunner, DEFAULT_CONVERSATION_POLICY, DEFAULT_EMPTY_HISTORY_SEED, DEFAULT_EMPTY_RESPONSE_RECOVERY, DEFAULT_MAX_AGENT_ROUNDS, EmptyModelResponseError, assertEmptyResponseRetries, assertMaxAgentRounds, type ConversationPolicy, type ConversationRunResult, type EmptyResponseRecovery, } from "../../src/framework/conversation-runner.js";
6
+ export { LlmRunner, DEFAULT_LLM_POLICY, DEFAULT_EMPTY_HISTORY_SEED, DEFAULT_EMPTY_RESPONSE_RECOVERY, DEFAULT_MAX_AGENT_ROUNDS, EmptyModelResponseError, assertEmptyResponseRetries, assertMaxAgentRounds, type LlmPolicy, type LlmRunResult, type EmptyResponseRecovery, } from "../../src/framework/llm-runner.js";
7
7
  export { describeStopReason, isRetryableStopReason, modelStopReason, type ModelStopCategory, type ModelStopReason, } from "../../src/framework/model-stop-reason.js";
8
8
  export { currentTurnContext, currentTurnSignal, withTurnContext, type TurnContext, } from "../../src/framework/turn-context.js";
9
- export { direct, directTo, finish, go, isToolResponse, stay, type ToolResponse, type ToolResponseBuilder, type ToolResponseKind, } from "../../src/framework/tool-response.js";
9
+ export { direct, directTo, finish, go, isToolResponse, stay, taskResult, type FanOutResponseBuilder, type TaskResult, type ToolResponse, type ToolResponseBuilder, type ToolResponseKind, } from "../../src/framework/tool-response.js";
10
10
  export { GraphStateSupport } from "../../src/framework/graph-state-support.js";
11
11
  export { GRAPH_END_NODE, createGraphStateAnnotation, type GraphState, } from "../../src/framework/graph-state.js";
12
12
  export { GraphRegistry, type RegisteredGraph, } from "../../src/framework/graph-registry.js";
@@ -32,4 +32,4 @@ export { DecisionProvider, DecisionProviderRegistry, type BuiltinDecisionProvide
32
32
  export { TypeSafeClassifierAdapter, type TypeSafeProviderOptions, } from "../../src/framework/decision/typesafe-provider.js";
33
33
  export { DecisionConfigurationError, DecisionTimeoutError, DecisionValidationError, DEFAULT_DECISION_OPTIONS, addDecisionUsage, decisionUsage, emptyDecisionUsage, normalizeDecisionUsage, resolveDecisionOptions, type Choice, type ChoiceAnswer, type DecisionAnswer, type DecisionAnswers, type DecisionCallOptions, type DecisionContext, type DecisionConversation, type DecisionEvidence, type DecisionErrorContext, type DecisionFailure, type DecisionMetadata, type DecisionOptions, type DecisionProviderAdapter, type DecisionQuestion, type DecisionQuestionMap, type DecisionRequest, type DecisionResult, type DecisionState, type DecisionTokenUsage, type DecisionUsage, type JsonObject, type JsonPrimitive, type JsonValue, type Noul, type NoulAnswer, type ResolvedDecisionOptions, type Score, type ScoreAnswer, } from "../../src/framework/decision/decision-types.js";
34
34
  export { assertJsonCompatible, validateDecisionQuestions, validateDecisionResult, } from "../../src/framework/decision/decision-validation.js";
35
- export { retryWithModel, LlmResponseBlockedError, LlmSetupError, type LlmAttemptErrorContext, type LlmBlockedContext, type LlmBlockedResponse, type LlmErrorContext, type LlmErrorResponse, type RetryWithModelResponse, type ConversationLlmLifecycle, type GraphLlmLifecycle, } from "../../src/framework/llm-lifecycle.js";
35
+ export { retryWithModel, LlmResponseBlockedError, LlmSetupError, type LlmAttemptErrorContext, type LlmBlockedContext, type LlmBlockedResponse, type LlmErrorContext, type LlmErrorResponse, type RetryWithModelResponse, type LlmLifecycle, type GraphLlmLifecycle, } from "../../src/framework/llm-lifecycle.js";
@@ -8,7 +8,7 @@ import { StateGraphExt, type GraphNodeClass } from "./state-graph-ext.js";
8
8
  import type { StateDefinitionInit } from "@langchain/langgraph";
9
9
  import type { SessionDocument } from "./persistence/session-manager.js";
10
10
  import type { DeepReadonly, JsonObject } from "./graph-context.js";
11
- import { type ConversationPolicy } from "./conversation-runner.js";
11
+ import { type LlmPolicy } from "./llm-runner.js";
12
12
  import type { GraphNodeLocalState, GraphNodeTarget } from "./node-outcome.js";
13
13
  import type { DecisionOptions, DecisionErrorContext, DecisionProviderAdapter } from "./decision/decision-types.js";
14
14
  export type HistorySpace = readonly [GraphNodeClass, string];
@@ -51,7 +51,7 @@ export declare abstract class BaseGraph<State extends GraphState> {
51
51
  readonly requiresUserMessage: boolean;
52
52
  readonly responseMode: "chat" | "json";
53
53
  readonly maxAgentRounds: number;
54
- readonly conversationPolicy: ConversationPolicy;
54
+ readonly llmPolicy: LlmPolicy;
55
55
  private compiledGraph?;
56
56
  protected readonly runtime: GraphNodeRuntime<State>;
57
57
  private readonly nodeMap;
@@ -1,4 +1,4 @@
1
- import type { ConversationRunResult } from "../conversation-runner.js";
1
+ import type { LlmRunResult } from "../llm-runner.js";
2
2
  import { GraphNode, type GraphNodeResponse, type GraphNodeResult } from "../graph-node.js";
3
3
  import type { GraphState } from "../graph-state.js";
4
4
  import { type DecisionAnswers, type DecisionContext, type DecisionEvidence, type DecisionErrorContext, type DecisionOptions, type DecisionQuestionMap } from "./decision-types.js";
@@ -13,5 +13,5 @@ export declare abstract class DecisionNode<State extends GraphState, Questions e
13
13
  validateTools(): void;
14
14
  private assertNoChatConfiguration;
15
15
  protected usesChatModel(): boolean;
16
- protected runConversation(_state: State, _context: Record<string, unknown>): Promise<ConversationRunResult>;
16
+ protected runLlm(_state: State, _context: Record<string, unknown>): Promise<LlmRunResult>;
17
17
  }
@@ -1,4 +1,4 @@
1
- import type { ConversationLlmLifecycle, GraphLlmLifecycle } from "./llm-lifecycle.js";
1
+ import type { LlmLifecycle, GraphLlmLifecycle } from "./llm-lifecycle.js";
2
2
  import type { GraphState } from "./graph-state.js";
3
3
  import type { DeepReadonly, JsonObject } from "./graph-context.js";
4
4
  import type { LlmCallOptions, LlmGateway, LlmGatewayTool } from "./llm-gateway.js";
@@ -9,10 +9,12 @@ import { Command } from "@langchain/langgraph";
9
9
  import { type GraphLlmConfig, type GraphLlmConfigOverride } from "./graph-llm.config.js";
10
10
  import type { NodeStateValue } from "./node-state.js";
11
11
  import { GraphStateSupport } from "./graph-state-support.js";
12
- import { type ConversationPolicy, type ConversationRunResult } from "./conversation-runner.js";
12
+ import { type LlmPolicy, type LlmRunResult } from "./llm-runner.js";
13
13
  import type { ModelStopReason } from "./model-stop-reason.js";
14
14
  import { GRAPH_NODE_LOCAL_STATE, type GraphNodeLocalState, type GraphNodeTarget, type GraphNodeUpdate } from "./node-outcome.js";
15
15
  import { type ToolResponse } from "./tool-response.js";
16
+ import { type NodeInvocationOptions } from "./node-invocation.js";
17
+ export type { NodeInvocationOptions } from "./node-invocation.js";
16
18
  import { type DecisionConversation, type DecisionErrorContext, type DecisionOptions, type DecisionProviderAdapter, type ResolvedDecisionOptions } from "./decision/decision-types.js";
17
19
  export { GRAPH_NODE_LOCAL_STATE, type GraphNodeLocalState, type GraphNodeTarget, type GraphNodeUpdate, } from "./node-outcome.js";
18
20
  export type ToolDefinition<Input extends Record<string, unknown> = Record<string, unknown>> = Readonly<LlmGatewayTool<Input>>;
@@ -27,7 +29,7 @@ export type InvalidJsonResponseContext<State extends GraphState> = Readonly<{
27
29
  }>;
28
30
  export type EmptyModelResponseContext<State extends GraphState> = Readonly<{
29
31
  state: Readonly<State>;
30
- conversation: Readonly<ConversationRunResult>;
32
+ conversation: Readonly<LlmRunResult>;
31
33
  reason: ModelStopReason;
32
34
  }>;
33
35
  export declare const GRAPH_NODE_CLASS: unique symbol;
@@ -53,14 +55,18 @@ export declare abstract class GraphNode<State extends GraphState, LocalState ext
53
55
  protected usesChatModel(): boolean;
54
56
  protected onInvalidJsonResponse(context: InvalidJsonResponseContext<State>): GraphNodeUpdate<State> | Promise<GraphNodeUpdate<State>>;
55
57
  protected onEmptyModelResponse(context: EmptyModelResponseContext<State>): string | Promise<string>;
56
- readonly invoke: (state: State) => Promise<GraphNodeResult<State>>;
57
- obtainTools(): readonly ToolDefinition[];
58
- validateTools(): void;
58
+ readonly invoke: (state: State, options?: NodeInvocationOptions) => Promise<GraphNodeResult<State>>;
59
+ protected managesLlmExecution(): boolean;
60
+ protected validateNodeResult(_update: GraphNodeUpdate<State>, _isCommand: boolean): void;
61
+ obtainTools(options?: NodeInvocationOptions): readonly ToolDefinition[];
62
+ validateTools(options?: NodeInvocationOptions): void;
63
+ protected includeTool(_name: string, _options: NodeInvocationOptions): boolean;
59
64
  protected llmConfig(): GraphLlmConfig;
60
65
  protected llmCallOptions(): LlmCallOptions;
61
- protected runConversation(state: State, context: ToolContext): Promise<ConversationRunResult>;
62
- protected conversationLlmLifecycle(): ConversationLlmLifecycle | undefined;
66
+ protected runLlm(state: State, context: ToolContext): Promise<LlmRunResult>;
67
+ protected llmLifecycle(): LlmLifecycle | undefined;
63
68
  private runAgentLoop;
69
+ protected llmHistory(state: State): readonly BaseMessage[];
64
70
  protected historySpace(): string;
65
71
  protected history(state: Pick<State, "histories">): BaseMessage[];
66
72
  protected historyUpdate(messages: BaseMessage[]): Pick<State, "histories">;
@@ -81,13 +87,13 @@ export declare class GraphNodeRuntime<State extends GraphState> extends GraphSta
81
87
  private readonly historySpaces;
82
88
  private readonly responseMode;
83
89
  readonly maxAgentRounds: number;
84
- readonly conversationPolicy: ConversationPolicy;
90
+ readonly llmPolicy: LlmPolicy;
85
91
  private readonly decisionOptions;
86
92
  private readonly decisionErrorHandler?;
87
93
  readonly llmLifecycle?: GraphLlmLifecycle | undefined;
88
94
  private readonly assertContextChannel?;
89
95
  private readonly tools;
90
- constructor(endNode: State["currentNode"], defaultLlmConfig: GraphLlmConfig, historySpaces?: Readonly<Record<string, string>>, responseMode?: "chat" | "json", maxAgentRounds?: number, conversationPolicy?: ConversationPolicy, decisionOptions?: DecisionOptions, decisionErrorHandler?: ((context: DecisionErrorContext<State>) => GraphNodeResponse<State> | null | Promise<GraphNodeResponse<State> | null>) | undefined, llmLifecycle?: GraphLlmLifecycle | undefined, assertContextChannel?: (() => void) | undefined);
96
+ constructor(endNode: State["currentNode"], defaultLlmConfig: GraphLlmConfig, historySpaces?: Readonly<Record<string, string>>, responseMode?: "chat" | "json", maxAgentRounds?: number, llmPolicy?: LlmPolicy, decisionOptions?: DecisionOptions, decisionErrorHandler?: ((context: DecisionErrorContext<State>) => GraphNodeResponse<State> | null | Promise<GraphNodeResponse<State> | null>) | undefined, llmLifecycle?: GraphLlmLifecycle | undefined, assertContextChannel?: (() => void) | undefined);
91
97
  llmCallOptions(): LlmCallOptions;
92
98
  expectsJsonResponse(): boolean;
93
99
  historySpace(currentNode?: string): string;
@@ -111,7 +117,9 @@ export declare class GraphNodeRuntime<State extends GraphState> extends GraphSta
111
117
  response: string;
112
118
  inputConsumed: boolean;
113
119
  };
114
- withInvocation<Result>(nodeId: string, state: State, run: () => Promise<Result>): Promise<Result>;
120
+ withInvocation<Result>(nodeId: string, state: State, run: () => Promise<Result>, options?: NodeInvocationOptions, managedLlm?: boolean): Promise<Result>;
121
+ invocationMode(): "conversation" | "internal";
122
+ isLocalOnlyInvocation(): boolean;
115
123
  nodeState(nodeName: string): Record<string, unknown>;
116
124
  hasInvocation(): boolean;
117
125
  graphState(): State;
@@ -1,5 +1,5 @@
1
1
  import type { AIMessage } from "@langchain/core/messages";
2
- import type { GraphLlmConfig } from "./graph-llm.config.js";
2
+ import { type GraphLlmConfig } from "./graph-llm.config.js";
3
3
  import type { ToolResponse } from "./tool-response.js";
4
4
  export type LlmAttemptErrorContext = Readonly<{
5
5
  nodeId: string;
@@ -51,11 +51,11 @@ export declare class LlmResponseBlockedError extends Error {
51
51
  export declare class LlmSetupError extends Error {
52
52
  constructor(cause: unknown);
53
53
  }
54
- export type ConversationLlmLifecycle = Readonly<{
54
+ export type LlmLifecycle = Readonly<{
55
55
  nodeId: string;
56
56
  checkResponse(response: string | object): boolean;
57
57
  onLlmBlocked(context: LlmBlockedContext): Promise<LlmBlockedResponse | null>;
58
58
  shouldRetryLlmError(context: LlmAttemptErrorContext): boolean | undefined;
59
59
  onLlmError(context: LlmErrorContext): Promise<LlmErrorResponse | null>;
60
60
  }>;
61
- export type GraphLlmLifecycle = Pick<ConversationLlmLifecycle, "onLlmBlocked" | "shouldRetryLlmError" | "onLlmError">;
61
+ export type GraphLlmLifecycle = Pick<LlmLifecycle, "onLlmBlocked" | "shouldRetryLlmError" | "onLlmError">;
@@ -0,0 +1,11 @@
1
+ import { GraphNode } from "./graph-node.js";
2
+ import type { GraphState } from "./graph-state.js";
3
+ import type { LlmLifecycle, LlmAttemptErrorContext, LlmBlockedContext, LlmBlockedResponse, LlmErrorContext, LlmErrorResponse } from "./llm-lifecycle.js";
4
+ export declare abstract class LlmNodeBase<State extends GraphState, LocalState extends object = Record<string, unknown>> extends GraphNode<State, LocalState> {
5
+ checkResponse(_llmResult: string | object): boolean;
6
+ onLlmBlocked(_context: LlmBlockedContext): Promise<LlmBlockedResponse | null>;
7
+ shouldRetryLlmError(_context: LlmAttemptErrorContext): boolean | undefined;
8
+ onLlmError(_context: LlmErrorContext): Promise<LlmErrorResponse | null>;
9
+ protected validateLlmRecovery(_result: LlmErrorResponse | null): void;
10
+ protected llmLifecycle(): LlmLifecycle;
11
+ }
@@ -1,18 +1,27 @@
1
- import type { ConversationLlmLifecycle, LlmAttemptErrorContext, LlmBlockedContext, LlmBlockedResponse, LlmErrorContext, LlmErrorResponse } from "./llm-lifecycle.js";
2
- import type { ConversationRunResult } from "./conversation-runner.js";
3
- import { GraphNode, type GraphNodeResult } from "./graph-node.js";
1
+ import { type BaseMessage } from "@langchain/core/messages";
2
+ import type { ToolCall } from "@langchain/core/messages/tool";
3
+ import type { LlmRunResult } from "./llm-runner.js";
4
+ import { type GraphNodeResult, type NodeInvocationOptions } from "./graph-node.js";
5
+ import { LlmNodeBase } from "./llm-node-base.js";
4
6
  import type { GraphState } from "./graph-state.js";
5
7
  import { type ToolResponse } from "./tool-response.js";
6
- export type LlmNodeRunResult = ConversationRunResult;
7
- export declare abstract class LlmNode<State extends GraphState> extends GraphNode<State> {
8
- checkResponse(_llmResult: string | object): boolean;
9
- onLlmBlocked(_context: LlmBlockedContext): Promise<LlmBlockedResponse | null>;
10
- shouldRetryLlmError(_context: LlmAttemptErrorContext): boolean | undefined;
11
- onLlmError(_context: LlmErrorContext): Promise<LlmErrorResponse | null>;
12
- protected conversationLlmLifecycle(): ConversationLlmLifecycle;
8
+ import type { LlmErrorResponse } from "./llm-lifecycle.js";
9
+ export type LlmNodeRunResult = LlmRunResult;
10
+ export type LlmNodeResponse = void | string | ToolResponse;
11
+ export declare abstract class LlmNode<State extends GraphState, LocalState extends object = Record<string, unknown>, Output = string> extends LlmNodeBase<State, LocalState> {
12
+ protected onResponse(_response: string | Output, _state: State): LlmNodeResponse | Promise<LlmNodeResponse>;
13
+ protected managesLlmExecution(): boolean;
14
+ private isInternal;
15
+ protected includeTool(name: string, options: NodeInvocationOptions): boolean;
16
+ protected llmHistory(state: State): readonly BaseMessage[];
17
+ protected handleTool(state: State, call: ToolCall, context: Record<string, unknown>): Promise<ToolResponse>;
18
+ protected validateLlmRecovery(result: LlmErrorResponse | null): void;
19
+ private validateOutcome;
20
+ private invalidInternalOutcome;
13
21
  protected endChat(input: {
14
22
  message?: string;
15
23
  }): Promise<ToolResponse>;
16
24
  run(state: State): Promise<GraphNodeResult<State>>;
25
+ private responseMessages;
17
26
  private resolveToolResponse;
18
27
  }
@@ -1,4 +1,4 @@
1
- import { type ConversationLlmLifecycle } from "./llm-lifecycle.js";
1
+ import { type LlmLifecycle } from "./llm-lifecycle.js";
2
2
  import { type BaseMessage } from "@langchain/core/messages";
3
3
  import type { ToolCall } from "@langchain/core/messages/tool";
4
4
  import type { GraphLlmConfig } from "./graph-llm.config.js";
@@ -6,7 +6,7 @@ import type { LlmCallOptions, LlmGateway, LlmGatewayTool } from "./llm-gateway.j
6
6
  import { type TokenUsage } from "./token-usage.js";
7
7
  import { type ToolResponse } from "./tool-response.js";
8
8
  import { type ModelStopReason } from "./model-stop-reason.js";
9
- export type ConversationRunResult = {
9
+ export type LlmRunResult = {
10
10
  messages: BaseMessage[];
11
11
  usage: TokenUsage;
12
12
  response?: string;
@@ -27,17 +27,17 @@ export type EmptyResponseRecovery = Readonly<{
27
27
  }>;
28
28
  export declare const DEFAULT_EMPTY_RESPONSE_RECOVERY: EmptyResponseRecovery;
29
29
  export declare function assertEmptyResponseRetries(value: number): number;
30
- export type ConversationPolicy = Readonly<{
30
+ export type LlmPolicy = Readonly<{
31
31
  llmTimeoutMs?: number;
32
32
  emptyHistorySeed: string | null;
33
33
  emptyResponseRecovery: EmptyResponseRecovery | null;
34
34
  }>;
35
- export declare const DEFAULT_CONVERSATION_POLICY: ConversationPolicy;
36
- export declare class ConversationRunner {
35
+ export declare const DEFAULT_LLM_POLICY: LlmPolicy;
36
+ export declare class LlmRunner {
37
37
  private readonly llmGateway;
38
38
  constructor(llmGateway: LlmGateway);
39
39
  run(options: {
40
- lifecycle?: ConversationLlmLifecycle;
40
+ lifecycle?: LlmLifecycle;
41
41
  systemPrompt: string;
42
42
  history: readonly BaseMessage[];
43
43
  tools: readonly LlmGatewayTool[];
@@ -47,5 +47,5 @@ export declare class ConversationRunner {
47
47
  emptyHistorySeed?: string | null;
48
48
  emptyResponseRecovery?: EmptyResponseRecovery | null;
49
49
  callOptions?: LlmCallOptions;
50
- }): Promise<ConversationRunResult>;
50
+ }): Promise<LlmRunResult>;
51
51
  }
@@ -1,8 +1,14 @@
1
1
  import type { BaseMessage } from "@langchain/core/messages";
2
2
  import type { GraphState } from "./graph-state.js";
3
3
  import { type DeepReadonly, type JsonObject } from "./graph-context.js";
4
+ export type NodeInvocationOptions = Readonly<{
5
+ mode?: "conversation" | "internal";
6
+ }>;
4
7
  export declare function hasNodeInvocation(owner: object): boolean;
5
- export declare function withNodeInvocation<State extends GraphState, Result>(owner: object, nodeId: string, state: State, run: () => Promise<Result>): Promise<Result>;
8
+ export declare function withNodeInvocation<State extends GraphState, Result>(owner: object, nodeId: string, state: State, run: () => Promise<Result>, options?: NodeInvocationOptions, managedLlm?: boolean): Promise<Result>;
9
+ export declare function invocationMode(owner: object): "conversation" | "internal";
10
+ export declare function invocationIsLocalOnly(owner: object): boolean;
11
+ export declare function assertInvocationWrite(owner: object, nodeId?: string): void;
6
12
  export declare function invocationNodeId(owner: object): string;
7
13
  export declare function invocationContext(owner: object): DeepReadonly<JsonObject>;
8
14
  export declare function saveInvocationContext(owner: object, patch: JsonObject): void;