@picoflow/ezgraph 0.0.15 → 0.0.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -42,7 +42,7 @@ returns exactly one response:
42
42
  | ------------------------------- | -------------------------------------------------------------------------------------- |
43
43
  | `stay(feedback)` | Validation failed; continue collecting in the current node. |
44
44
  | `go(TargetNode)` | Enter another registered conversational node now. |
45
- | `go(Child1Node, Child2Node)` | Schedule multiple registered nodes concurrently; use an explicit join to continue. |
45
+ | `fanout(Child1Node, Child2Node)` | Schedule two or more registered nodes concurrently; use an explicit join to continue. |
46
46
  | `direct(content)` | Return exact code-owned content, such as a policy decision, price table, or ticket ID. |
47
47
  | `directTo(TargetNode, content)` | Return exact content and make the target the next user-turn node. |
48
48
  | `finish(content)` | Return exact final content and complete the conversation. |
@@ -189,7 +189,8 @@ class JokeNode extends LlmNode<MyGraphState, { joke?: string }> {
189
189
  }
190
190
  ```
191
191
 
192
- Instructions and input data belong in `getPrompt(state)`. The optional
192
+ Instructions belong in `getPrompt(state)`. Supply task data as a user message
193
+ through `onEnter(message, priorNode?)`, or include it in the prompt. The optional
193
194
  `onResponse(output, state)` receives accepted model text or the unwrapped value
194
195
  from `taskResult(value)`, including successful model recovery. It is not called
195
196
  for intermediate tool feedback or routing outcomes such as `go()`/`finish()`.
@@ -205,7 +206,8 @@ turn registry, existing nodes retain conversational behavior; use
205
206
  Connect internal successors with `graph.addEdge(...)`; scheduling does not change
206
207
  the node's contract.
207
208
 
208
- Internal LLM history is ephemeral and initially empty. The runner applies
209
+ Internal LLM history is ephemeral and initially empty. `onEnter()` can supply
210
+ its initial task message. If history remains empty, the runner applies
209
211
  `emptyHistorySeed` (default `"Start"`, or `null` for system-only calls). It neither
210
212
  reads nor appends conversation history and does not offer `terminate_session`.
211
213
  Internal execution publishes only its own node entry and usage; runtime writes
@@ -231,6 +233,52 @@ invocation ownership and is not a supported managed execution entry point.
231
233
  Direct `llmGateway` calls remain available to custom `GraphNode` implementations,
232
234
  but they do not automatically exercise the managed LLM lifecycle.
233
235
 
236
+ ## Supply input on node entry
237
+
238
+ The protected synchronous `onEnter(langMessage, priorNode?)` hook runs once at
239
+ the start of each `LlmNode` agent loop, before the first model call and before
240
+ the empty-history seed. Model/tool rounds, retries, and alternate-model recovery
241
+ reuse its prepared input. A later node invocation calls it again, including a
242
+ new user turn on the same node.
243
+
244
+ `langMessage` is the trailing incoming human message, including a forwarded
245
+ `withMessage()` input, or `undefined` if there is none. Older human requests are
246
+ not reused as current input. Internal nodes receive `undefined` because their
247
+ conversation history is isolated. `priorNode` is the known nested caller's ID;
248
+ ordinary graph entry leaves it undefined because the resume cursor does not
249
+ identify the previous node.
250
+
251
+ The default returns `langMessage` unchanged. Return a message to supply or
252
+ replace current input, or return `null`/`undefined` to omit it. Earlier history
253
+ is retained, and existing empty-history policy still applies. Conversation
254
+ execution records the prepared input once; internal input remains ephemeral.
255
+
256
+ ```ts
257
+ import { HumanMessage } from "@langchain/core/messages";
258
+ import { LlmNode, type MessageTypes } from "@picoflow/ezgraph";
259
+
260
+ class BatchNode extends LlmNode<MyGraphState, { rows?: unknown[]; result?: string }> {
261
+ getPrompt() { return "Process the supplied batch and return the results."; }
262
+
263
+ protected override onEnter(
264
+ langMessage: MessageTypes | null | undefined,
265
+ _priorNode?: string,
266
+ ): MessageTypes | null | undefined {
267
+ const rows = this.getState().rows;
268
+ return rows === undefined ? langMessage : new HumanMessage(JSON.stringify(rows));
269
+ }
270
+
271
+ protected override onResponse(result: string) {
272
+ this.saveState({ result });
273
+ }
274
+ }
275
+ ```
276
+
277
+ Populate `BatchNode`'s local `rows` state before invoking the graph or node.
278
+ This supplies batch data even when no external user message is present.
279
+ Keep invocation data in node state or graph context; node instances are shared
280
+ across sessions. An entry-hook error propagates as an application error.
281
+
234
282
  ## Handle model failures
235
283
 
236
284
  `LlmNode` supports response/error hooks in every execution mode. The
@@ -280,7 +328,7 @@ class SupportNode extends LlmNode<SupportState> {
280
328
  }
281
329
  ```
282
330
 
283
- Recovery hooks may return fixed text or `direct()`, `directTo()`, `go()`, or
331
+ Recovery hooks may return fixed text or `direct()`, `directTo()`, `go()`, `fanout()`, or
284
332
  `finish()`. `stay()`, tool feedback, and cleanup remain tool-only.
285
333
  `onLlmError()` may also return `retryWithModel(ModelCatalog.model(...))` to
286
334
  select one temporary alternate model. The alternate stays active through tool
@@ -411,19 +459,23 @@ ordinary conversational handoffs; fixed worker edges remain ordinary LangGraph
411
459
  edges. Register `TerminateSessionNode` and connect it to `END` when a graph
412
460
  contains conversational nodes.
413
461
 
414
- For conditional fan-out, return `go(Child1Node, Child2Node)` from the successful
415
- tool handler, `onResponse()`, or deterministic `GraphNode.run()`. Save parent-owned
462
+ `go(TargetNode)` accepts exactly one target. For conditional fan-out, return
463
+ `fanout(Child1Node, Child2Node)` with two or more distinct registered targets
464
+ from the successful tool handler, `onResponse()`, or deterministic `GraphNode.run()`.
465
+ Save parent-owned
416
466
  data before returning. A multi-target builder has no `withState()` or
417
467
  `withMessage()` because there is no single destination for those effects;
418
468
  `withUsage()`, tool feedback, tool cleanup, and current-history messages still work.
419
- Single-target `go(TargetNode).withState(...)` remains unchanged.
469
+ `go(TargetNode).withState(...)` initializes that one target.
420
470
 
421
471
  Register the children as internal work (leave them out of `registerTurns()`, or
422
472
  use `workers()` in a fixed-entry graph), and declare a barrier for the next stage:
423
473
 
424
474
  ```ts
475
+ import { fanout } from "@picoflow/ezgraph";
476
+
425
477
  // In the parent, only after accepting and saving the input:
426
- return go(Child1Node, Child2Node);
478
+ return fanout(Child1Node, Child2Node);
427
479
 
428
480
  // In buildGraph(), after registering all nodes:
429
481
  graph.addEdge([Child1Node, Child2Node], NextConversationNode);
@@ -1 +1 @@
1
- const dJ=b;(function(L,D){const dW={L:0xe0,D:0xdb,a:0xc1,e:0xb4},dY=b,a=L();while(!![]){try{const e=parseInt(dY(0xa0))/0x1+parseInt(dY(dW.L))/0x2+parseInt(dY(dW.D))/0x3+parseInt(dY(dW.a))/0x4+-parseInt(dY(0xce))/0x5+parseInt(dY(0xd6))/0x6+parseInt(dY(dW.e))/0x7*(-parseInt(dY(0xa3))/0x8);if(e===D)break;else a['push'](a['shift']());}catch(K){a['push'](a['shift']());}}}(d,0x8258d));var P=Object['defineProperty'],y=(L,D)=>P(L,dJ(0xc5),{'value':D,'configurable':!0x0});import{HumanMessage as v}from'@langchain/core/messages';function d(){const dS=['z2v0','jYbJB21WBgv0zwqGD2L0Ag91DcbWCM9KDwnPBMCGC3rHDguU','C2f2zvn0yxrL','zgvSzxrLu2vZC2LVBG','mtmZyKPmquzc','C2LNBMfS','yxbWBgLJyxrPB24VANnVBG','zg9JDw1LBNq','y2HHDfjLC3vSDa','CNvU','z3jHCgG','u0vtu0LptL9jrcbPCYbYzxf1AxjLzc4','ANnVBG','jYbYzxn0B3jLihjLDhvYBMvKihnJAgvTysb2zxjZAw9Uia','BwfW','CMvZDg9YzvnLC3nPB25eB2n1BwvUDa','z3jHCgHZ','mti2mZCWmhbWs2TtCq','y29UzMLN','C3rYAw5N','CMvZCg9UC2vnB2rL','BMfTzq','CMvSzwfZzvr1CM4','DxnLCK1LC3nHz2uGBxvZDcbIzsbHig5VBI1LBxb0EsbZDhjPBMCU','C2vZC2LVBK1HBMfNzxi','BM9Kzxm','y3jLyxrL','CMvZCg9UC2u','jYbPCYbUB3qGCMvNAxn0zxjLzc4','ChjLCgfYzuLUChv0','ntG5nda1y0DYtxje','zgvJAxnPB25qCM92AwrLCNm','yxr0ywnOrgvJAxnPB25qCM92AwrLCLjLC29SDMvY','DgvZDa','C2vZC2LVBKLK','C3rYzwfT','y29UzMXPy3rszxn1Bhq','ChjVDMLKzxjZ','mJK0odeYnhbwwMLgBq','Aw52B2TL','CMvXDwLYzxnvC2vYtwvZC2fNzq','zxHWzwn0zwrszxzPC2LVBG','y29Kzq','mtu3otGZmgfArvHPzG','ANnVBLjLC3vSDa','DxnLCK1LC3nHz2u','CMvNAxn0zxjhCMfWAa','zgvSzxrL','mtiWnJCYnfHLC1jRra','CMvNAxn0CNK','Aw5MBgLNAhrtzxnZAw9UCW','BgXTq29UzMLN','z3jHCgHoyw1L','z2v0u2vZC2LVBG','Aw5WDxrdB25ZDw1Lza','CMvZB2X2zq','D2L0Afr1CM5ty29Wzq','vw5HyMXLihrVihbLCNnPC3qGC2vZC2LVBIbLCNjVCIbSB2C6','oYbLEhbLy3rLzca','r3jHCgGGjW','zxjYB3i','z2v0r3jHCgHezwzPBML0Aw9U','C2vZC2LVBNm','odGXodyXqKPzvuvt','y29TCgXLDgvK','zNjVBunVBMzPzW','oteYntyWuwjHww5m','BgXTr2f0zxDHEuzHy3rVCNK','u2vZC2LVBIaN','jYbPCYbHBhjLywr5ihbYB2nLC3nPBMCGysb0DxjUlG','DMfSAwrHDgvtzxnZAw9Uswq','C2nOzw1HvMvYC2LVBG','CMvZDg9YzvnLC3nPB25eB2m','z2v0r3jHCgHZ','DhjPBq','yMvNAw5uDxjU','y2XVC2u','y29TCgXLDgvKu2vZC2LVBLjLC3vSDa','BwvZC2fNzq'];d=function(){return dS;};return d();}function b(v,s){v=v-0x9d;const z=d();let F=z[v];if(b['pjzpNm']===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);};b['bOrkSb']=X,b['wJSDQu']={},b['pjzpNm']=!![];}const V=z[0x0],Y=v+V,J=b['wJSDQu'][Y];return!J?(F=b['bOrkSb'](F),b['wJSDQu'][Y]=F):F=J,F;}import{randomUUID as s}from'node:crypto';import{GraphRegistry as X,registeredGraphId as Y,registeredGraphSchemaVersion as J}from'./graph-registry.js';import{LangChainLlmGateway as p}from'./langchain-llm-gateway.js';import{SessionLogError as f,createSessionLogs as u,drainSessionLogs as c,restoreSessionLogs as Z,withSessionLogs as r}from'./session-log.js';import{withTurnContext as W}from'./turn-context.js';import{SessionManager as I,SessionTurnError as g,SESSION_BUSY as i,SESSION_COMPLETED as h}from'./persistence/session-manager.js';import{parseJsonObjectResponse as t}from'./json-response.js';import{DecisionProviderRegistry as m}from'./decision/decision-provider.js';class M{static{y(this,'GraphEngine');}[dJ(0xe1)]=new X();[dJ(0x9f)];[dJ(0xa4)];['decisionProviders'];[dJ(0xe2)]=new Set();constructor(L={}){const dI={L:0xc8,D:0xcf,a:0xcf,e:0xa4,K:0xde},dx=dJ;this[dx(0x9f)]=L[dx(dI.L)]??new I(),this[dx(dI.D)]=new m(L[dx(dI.a)]??[]),this['llmGatewayFactory']=L[dx(dI.e)]??(D=>new p(D,L[dx(0xd5)]?{'providers':L[dx(0xd5)]}:{})),this[dx(dI.K)](L['graphs']??[]);}static async[dJ(0xca)](L={}){const dy={L:0xc0,D:0xc0,a:0xd5,e:0xcf},dp=dJ,D=await I[dp(0xa2)](L['configManager']);return new M({'sessionManager':D,...L['llmGatewayFactory']?{'llmGatewayFactory':L[dp(0xa4)]}:{},...L[dp(dy.L)]?{'graphs':L[dp(dy.D)]}:{},...L[dp(dy.a)]?{'providers':L[dp(0xd5)]}:{},...L[dp(dy.e)]?{'decisionProviders':L['decisionProviders']}:{}});}[dJ(0xde)](L){const di={L:0xbe},dg={L:0x9e,D:0xd0},df=dJ,D=L[df(di.L)](a=>{const du=df,K=new a(this[du(0xa4)](a[du(dg.L)]()[du(0xe3)]));return K[du(dg.D)]?.(o=>this['decisionProviders'][du(0xe7)](o)),K[du(0xba)],K;});return this[df(0xe1)]['register'](D),this;}[dJ(0xaa)](){return this['registry']['names']();}[dJ(0xe5)](L){const dt={L:0x9f},dc=dJ;return this[dc(dt.L)]['getSession'](w(L));}async[dJ(0xb9)](L){const dL={L:0xcc,D:0xdd,a:0xab,e:0xa5,K:0xa6,o:0xe2,Q:0xb5},dm={L:0x9f,D:0xac,a:0xb7,e:0xba,K:0xa9,o:0xa9,Q:0xa8,S:0xeb,l:0xa8,n:0xea,T:0x9f,G:0xc4,d0:0xc2,d1:0xba,d2:0xba,d3:0xd7,d4:0xb1,d5:0xbc,d6:0xa1,d7:0xda,d8:0x9d,d9:0xe9,dd:0xdf},dZ=dJ,D=this[dZ(0xe1)][dZ(0xb0)](L[dZ(0xe4)]);if(!D)return{'status':0x190,'body':{'success':!0x1,'completed':!0x0,'message':'Graph\x20\x27'+(L['graphName']??'')+dZ(dL.L)}};const a=typeof L[dZ(dL.D)]==dZ(0xc3)?L['userMessage'][dZ(dL.a)]():void 0x0;if(D[dZ(0xd8)]!==!0x1&&!a)return{'status':0x190,'body':{'success':!0x1,'completed':!0x1,'message':dZ(0xc7)}};let K;try{K=L[dZ(0xd2)]?w(L['sessionId']):s();}catch(G){return{'status':0x190,'body':{'success':!0x1,'completed':!0x1,'message':G instanceof Error?G[dZ(0xaf)]:String(G)}};}const o=Y(D),Q=J(D),S={'graphId':o,'graphSchemaVersion':Q,'llmConfig':D['llmConfig']},n=u();if(this['inflightSessions']['has'](K))return this[dZ(0xd4)](K,i,dZ(dL.e)+K+dZ(dL.K));this[dZ(dL.o)]['add'](K);const T={'session':K,...L[dZ(0xb5)]===void 0x0?{}:{'signal':L[dZ(dL.Q)]}};return this['withTurnScope'](T,n,async()=>{const dH=dZ;let d0=!0x0,d1,d2;try{const d3=s(),d4=await this[dH(dm.L)][dH(dm.D)](K,d3,S);d1=d3,d2=d4[dH(0xd9)];const d5=d4[dH(dm.a)][dH(dm.e)][dH(0xc9)]?d4[dH(0xb7)]:void 0x0;d5&&d5[dH(0xba)][dH(0xa8)]!==Q&&(d0=!0x1);const d6=d5?D[dH(dm.K)]?await D[dH(dm.o)](d5):d5:void 0x0;if(d6&&d6[dH(0xba)][dH(dm.Q)]!==Q)throw new Error(dH(dm.S)+o+dH(0xbd)+d6[dH(0xba)][dH(dm.l)]+dH(dm.n)+Q+'.');d5&&d6&&d6['graph'][dH(0xa8)]!==d5[dH(0xba)][dH(dm.Q)]&&await this[dH(dm.L)]['persistMigratedSession'](d6,{'owner':d3,'expectedRevision':d2}),d0=!0x0;const d7=d6?this[dH(dm.L)][dH(0xbf)](d6,o):void 0x0;if(d7?.[dH(0xa1)])return await this[dH(dm.T)][dH(0xc6)](K,d3,d2),this[dH(0xae)](D[dH(dm.G)],K);const d8={...a?D[dH(0xcd)](d7,new v(a)):d7??{},'config':{...d7?.[dH(dm.d0)]??{},...L[dH(0xc2)]??{}},'inputConsumed':!0x1,'response':''};let d9;if(D['graph'][dH(0xd3)]){const dd=await D[dH(dm.d1)][dH(0xd3)](d8,{'streamMode':'values'});for await(const db of dd){if(d9=db,d9[dH(0xe6)]!==!0x0)continue;const dv=c(n);let ds;try{ds=await this['sessions']['saveState'](K,d9,S,dv,{'owner':d3,...d2===void 0x0?{}:{'expectedRevision':d2},'keepTurn':!0x0});}catch(dz){throw Z(n,dv),dz;}d2=ds['revision'];}}else d9=await D[dH(dm.d2)][dH(dm.d3)](d8);if(!d9)throw new Error('Graph\x20\x27'+o+dH(dm.d4));return await this[dH(dm.L)][dH(0xb2)](K,d9,S,n,{'owner':d3,...d2===void 0x0?{}:{'expectedRevision':d2}}),D[dH(0xc4)]===dH(dm.d5)?this[dH(0xdc)](K,d9[dH(0xcb)]):this['chatResult'](K,d9[dH(0xcb)],d9[dH(dm.d6)]);}catch(dF){if(dF instanceof g)return this['conflictResult'](K,dF[dH(dm.d7)],dF['message']);const dX=dF instanceof Error?dF['message']:String(dF);if(f({'chat_service':dX}),d1)try{await this[dH(0x9f)]['endFailedTurn'](K,d1,S,d0?n:void 0x0,d2);}catch(dV){console[dH(dm.d8)](dH(dm.d9),dV);}return{'status':0x190,'session':K,'body':{'success':!0x1,'completed':!0x1,'message':dX,'session':K}};}finally{this['inflightSessions'][dH(dm.dd)](K);}});}[dJ(0xe8)](L,D,a){return W(L,()=>r(D,a));}async[dJ(0xb3)](L){const dB={L:0xbb},dr=dJ;if(!L)return{'status':0x190,'body':{'success':!0x1,'message':dr(dB.L)}};try{const D=w(L);return await this['sessions'][dr(0xb3)](D),{'status':0xc8,'body':{'success':!0x0,'session':D}};}catch(a){return{'status':0x190,'body':{'success':!0x1,'session':L,'message':a instanceof Error?a[dr(0xaf)]:String(a)}};}}async[dJ(0xad)](){const dR=dJ;await this[dR(0x9f)][dR(0xad)]();}['conflictResult'](L,D,a){return{'status':0x199,'session':L,'body':{'success':!0x1,'completed':!0x1,'message':a,'code':D,'session':L}};}[dJ(0xae)](L,D){const de={L:0xd4},dM=dJ,a='This\x20conversation\x20is\x20already\x20complete.';return L===dM(0xbc)?this[dM(de.L)](D,h,a):this['chatResult'](D,a,!0x0);}[dJ(0xdc)](L,D){const dq=dJ;return{'status':0xc8,'session':L,'contentType':dq(0xb6),'body':t(D)};}[dJ(0xb8)](L,D,a){return{'status':0xc8,'session':L,'body':{'success':!0x0,'completed':a,'message':D,'bot':D,'session':L}};}}function w(L){const dQ={L:0xd1},dP=dJ,D=L[dP(0xab)]();if(!/^[A-Za-z0-9_-]{1,128}$/[dP(dQ.L)](D))throw new Error('SESSION_ID\x20must\x20be\x201-128\x20letters,\x20numbers,\x20underscores,\x20or\x20hyphens.');return D;}y(w,dJ(0xa7));export{M as GraphEngine};
1
+ const MG=m;(function(r,S){const Mh={r:0xe0,S:0xdb,X:0xc1,p:0xb4},Mj=m,X=r();while(!![]){try{const p=parseInt(Mj(0xa0))/0x1+parseInt(Mj(Mh.r))/0x2+parseInt(Mj(Mh.S))/0x3+parseInt(Mj(Mh.X))/0x4+-parseInt(Mj(0xce))/0x5+parseInt(Mj(0xd6))/0x6+parseInt(Mj(Mh.p))/0x7*(-parseInt(Mj(0xa3))/0x8);if(p===S)break;else X['push'](X['shift']());}catch(Z){X['push'](X['shift']());}}}(T,0x8258d));var P=Object['defineProperty'],y=(r,S)=>P(r,MG(0xc5),{'value':S,'configurable':!0x0});import{HumanMessage as e}from'@langchain/core/messages';function T(){const MI=['z2v0','jYbJB21WBgv0zwqGD2L0Ag91DcbWCM9KDwnPBMCGC3rHDguU','C2f2zvn0yxrL','zgvSzxrLu2vZC2LVBG','mtmZyKPmquzc','C2LNBMfS','yxbWBgLJyxrPB24VANnVBG','zg9JDw1LBNq','y2HHDfjLC3vSDa','CNvU','z3jHCgG','u0vtu0LptL9jrcbPCYbYzxf1AxjLzc4','ANnVBG','jYbYzxn0B3jLihjLDhvYBMvKihnJAgvTysb2zxjZAw9Uia','BwfW','CMvZDg9YzvnLC3nPB25eB2n1BwvUDa','z3jHCgHZ','mti2mZCWmhbWs2TtCq','y29UzMLN','C3rYAw5N','CMvZCg9UC2vnB2rL','BMfTzq','CMvSzwfZzvr1CM4','DxnLCK1LC3nHz2uGBxvZDcbIzsbHig5VBI1LBxb0EsbZDhjPBMCU','C2vZC2LVBK1HBMfNzxi','BM9Kzxm','y3jLyxrL','CMvZCg9UC2u','jYbPCYbUB3qGCMvNAxn0zxjLzc4','ChjLCgfYzuLUChv0','ntG5nda1y0DYtxje','zgvJAxnPB25qCM92AwrLCNm','yxr0ywnOrgvJAxnPB25qCM92AwrLCLjLC29SDMvY','DgvZDa','C2vZC2LVBKLK','C3rYzwfT','y29UzMXPy3rszxn1Bhq','ChjVDMLKzxjZ','mJK0odeYnhbwwMLgBq','Aw52B2TL','CMvXDwLYzxnvC2vYtwvZC2fNzq','zxHWzwn0zwrszxzPC2LVBG','y29Kzq','mtu3otGZmgfArvHPzG','ANnVBLjLC3vSDa','DxnLCK1LC3nHz2u','CMvNAxn0zxjhCMfWAa','zgvSzxrL','mtiWnJCYnfHLC1jRra','CMvNAxn0CNK','Aw5MBgLNAhrtzxnZAw9UCW','BgXTq29UzMLN','z3jHCgHoyw1L','z2v0u2vZC2LVBG','Aw5WDxrdB25ZDw1Lza','CMvZB2X2zq','D2L0Afr1CM5ty29Wzq','vw5HyMXLihrVihbLCNnPC3qGC2vZC2LVBIbLCNjVCIbSB2C6','oYbLEhbLy3rLzca','r3jHCgGGjW','zxjYB3i','z2v0r3jHCgHezwzPBML0Aw9U','C2vZC2LVBNm','odGXodyXqKPzvuvt','y29TCgXLDgvK','zNjVBunVBMzPzW','oteYntyWuwjHww5m','BgXTr2f0zxDHEuzHy3rVCNK','u2vZC2LVBIaN','jYbPCYbHBhjLywr5ihbYB2nLC3nPBMCGysb0DxjUlG','DMfSAwrHDgvtzxnZAw9Uswq','C2nOzw1HvMvYC2LVBG','CMvZDg9YzvnLC3nPB25eB2m','z2v0r3jHCgHZ','DhjPBq','yMvNAw5uDxjU','y2XVC2u','y29TCgXLDgvKu2vZC2LVBLjLC3vSDa','BwvZC2fNzq'];T=function(){return MI;};return T();}function m(M,e){M=M-0x9d;const A=T();let v=A[M];if(m['pjzpNm']===undefined){var B=function(l){const q='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let z='',s='';for(let f=0x0,W,u,y=0x0;u=l['charAt'](y++);~u&&(W=f%0x4?W*0x40+u:u,f++%0x4)?z+=String['fromCharCode'](0xff&W>>(-0x2*f&0x6)):0x0){u=q['indexOf'](u);}for(let Q=0x0,g=z['length'];Q<g;Q++){s+='%'+('00'+z['charCodeAt'](Q)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(s);};m['bOrkSb']=B,m['wJSDQu']={},m['pjzpNm']=!![];}const i=A[0x0],j=M+i,G=m['wJSDQu'][j];return!G?(v=m['bOrkSb'](v),m['wJSDQu'][j]=v):v=G,v;}import{randomUUID as v}from'node:crypto';import{GraphRegistry as i,registeredGraphId as G,registeredGraphSchemaVersion as l}from'./graph-registry.js';import{LangChainLlmGateway as s}from'./langchain-llm-gateway.js';import{SessionLogError as f,createSessionLogs as W,drainSessionLogs as u,restoreSessionLogs as Q,withSessionLogs as g}from'./session-log.js';import{withTurnContext as o}from'./turn-context.js';import{SessionManager as h,SessionTurnError as Y,SESSION_BUSY as n,SESSION_COMPLETED as t}from'./persistence/session-manager.js';import{parseJsonObjectResponse as d}from'./json-response.js';import{DecisionProviderRegistry as K}from'./decision/decision-provider.js';class M{static{y(this,'GraphEngine');}[MG(0xe1)]=new i();[MG(0x9f)];[MG(0xa4)];['decisionProviders'];[MG(0xe2)]=new Set();constructor(r={}){const MY={r:0xc8,S:0xcf,X:0xcf,p:0xa4,Z:0xde},Ml=MG;this[Ml(0x9f)]=r[Ml(MY.r)]??new h(),this[Ml(MY.S)]=new K(r[Ml(MY.X)]??[]),this['llmGatewayFactory']=r[Ml(MY.p)]??(S=>new s(S,r[Ml(0xd5)]?{'providers':r[Ml(0xd5)]}:{})),this[Ml(MY.Z)](r['graphs']??[]);}static async[MG(0xca)](r={}){const MV={r:0xc0,S:0xc0,X:0xd5,p:0xcf},Mq=MG,S=await h[Mq(0xa2)](r['configManager']);return new M({'sessionManager':S,...r['llmGatewayFactory']?{'llmGatewayFactory':r[Mq(0xa4)]}:{},...r[Mq(MV.r)]?{'graphs':r[Mq(MV.S)]}:{},...r[Mq(MV.X)]?{'providers':r[Mq(0xd5)]}:{},...r[Mq(MV.p)]?{'decisionProviders':r['decisionProviders']}:{}});}[MG(0xde)](r){const MH={r:0xbe},Mn={r:0x9e,S:0xd0},Mz=MG,S=r[Mz(MH.r)](X=>{const Ms=Mz,p=new X(this[Ms(0xa4)](X[Ms(Mn.r)]()[Ms(0xe3)]));return p[Ms(Mn.S)]?.(Z=>this['decisionProviders'][Ms(0xe7)](Z)),p[Ms(0xba)],p;});return this[Mz(0xe1)]['register'](S),this;}[MG(0xaa)](){return this['registry']['names']();}[MG(0xe5)](r){const Md={r:0x9f},Mf=MG;return this[Mf(Md.r)]['getSession'](w(r));}async[MG(0xb9)](S){const MK={r:0xcc,S:0xdd,X:0xab,p:0xa5,Z:0xa6,I:0xe2,a:0xb5},MN={r:0x9f,S:0xac,X:0xb7,p:0xba,Z:0xa9,I:0xa9,a:0xa8,L:0xeb,c:0xa8,b:0xea,J:0x9f,D:0xc4,M0:0xc2,M1:0xba,M2:0xba,M3:0xd7,M4:0xb1,M5:0xbc,M6:0xa1,M7:0xda,M8:0x9d,M9:0xe9,MM:0xdf},MW=MG,X=this[MW(0xe1)][MW(0xb0)](S[MW(0xe4)]);if(!X)return{'status':0x190,'body':{'success':!0x1,'completed':!0x0,'message':'Graph\x20\x27'+(S['graphName']??'')+MW(MK.r)}};const p=typeof S[MW(MK.S)]==MW(0xc3)?S['userMessage'][MW(MK.X)]():void 0x0;if(X[MW(0xd8)]!==!0x1&&!p)return{'status':0x190,'body':{'success':!0x1,'completed':!0x1,'message':MW(0xc7)}};let Z;try{Z=S[MW(0xd2)]?w(S['sessionId']):v();}catch(D){return{'status':0x190,'body':{'success':!0x1,'completed':!0x1,'message':D instanceof Error?D[MW(0xaf)]:String(D)}};}const a=G(X),L=l(X),c={'graphId':a,'graphSchemaVersion':L,'llmConfig':X['llmConfig']},b=W();if(this['inflightSessions']['has'](Z))return this[MW(0xd4)](Z,n,MW(MK.p)+Z+MW(MK.Z));this[MW(MK.I)]['add'](Z);const J={'session':Z,...S[MW(0xb5)]===void 0x0?{}:{'signal':S[MW(MK.a)]}};return this['withTurnScope'](J,b,async()=>{const Mu=MW;let M0=!0x0,M1,M2;try{const M3=v(),M4=await this[Mu(MN.r)][Mu(MN.S)](Z,M3,c);M1=M3,M2=M4[Mu(0xd9)];const M5=M4[Mu(MN.X)][Mu(MN.p)][Mu(0xc9)]?M4[Mu(0xb7)]:void 0x0;M5&&M5[Mu(0xba)][Mu(0xa8)]!==L&&(M0=!0x1);const M6=M5?X[Mu(MN.Z)]?await X[Mu(MN.I)](M5):M5:void 0x0;if(M6&&M6[Mu(0xba)][Mu(MN.a)]!==L)throw new Error(Mu(MN.L)+a+Mu(0xbd)+M6[Mu(0xba)][Mu(MN.c)]+Mu(MN.b)+L+'.');M5&&M6&&M6['graph'][Mu(0xa8)]!==M5[Mu(0xba)][Mu(MN.a)]&&await this[Mu(MN.r)]['persistMigratedSession'](M6,{'owner':M3,'expectedRevision':M2}),M0=!0x0;const M7=M6?this[Mu(MN.r)][Mu(0xbf)](M6,a):void 0x0;if(M7?.[Mu(0xa1)])return await this[Mu(MN.J)][Mu(0xc6)](Z,M3,M2),this[Mu(0xae)](X[Mu(MN.D)],Z);const M8={...p?X[Mu(0xcd)](M7,new e(p)):M7??{},'config':{...M7?.[Mu(MN.M0)]??{},...S[Mu(0xc2)]??{}},'inputConsumed':!0x1,'response':''};let M9;if(X['graph'][Mu(0xd3)]){const MM=await X[Mu(MN.M1)][Mu(0xd3)](M8,{'streamMode':'values'});for await(const MT of MM){if(M9=MT,M9[Mu(0xe6)]!==!0x0)continue;const Mm=u(b);let Me;try{Me=await this['sessions']['saveState'](Z,M9,c,Mm,{'owner':M3,...M2===void 0x0?{}:{'expectedRevision':M2},'keepTurn':!0x0});}catch(MA){throw Q(b,Mm),MA;}M2=Me['revision'];}}else M9=await X[Mu(MN.M2)][Mu(MN.M3)](M8);if(!M9)throw new Error('Graph\x20\x27'+a+Mu(MN.M4));return await this[Mu(MN.r)][Mu(0xb2)](Z,M9,c,b,{'owner':M3,...M2===void 0x0?{}:{'expectedRevision':M2}}),X[Mu(0xc4)]===Mu(MN.M5)?this[Mu(0xdc)](Z,M9[Mu(0xcb)]):this['chatResult'](Z,M9[Mu(0xcb)],M9[Mu(MN.M6)]);}catch(Mv){if(Mv instanceof Y)return this['conflictResult'](Z,Mv[Mu(MN.M7)],Mv['message']);const MB=Mv instanceof Error?Mv['message']:String(Mv);if(f({'chat_service':MB}),M1)try{await this[Mu(0x9f)]['endFailedTurn'](Z,M1,c,M0?b:void 0x0,M2);}catch(Mi){console[Mu(MN.M8)](Mu(MN.M9),Mi);}return{'status':0x190,'session':Z,'body':{'success':!0x1,'completed':!0x1,'message':MB,'session':Z}};}finally{this['inflightSessions'][Mu(MN.MM)](Z);}});}[MG(0xe8)](r,S,X){return o(r,()=>g(S,X));}async[MG(0xb3)](r){const Mr={r:0xbb},My=MG;if(!r)return{'status':0x190,'body':{'success':!0x1,'message':My(Mr.r)}};try{const S=w(r);return await this['sessions'][My(0xb3)](S),{'status':0xc8,'body':{'success':!0x0,'session':S}};}catch(X){return{'status':0x190,'body':{'success':!0x1,'session':r,'message':X instanceof Error?X[My(0xaf)]:String(X)}};}}async[MG(0xad)](){const MQ=MG;await this[MQ(0x9f)][MQ(0xad)]();}['conflictResult'](r,S,X){return{'status':0x199,'session':r,'body':{'success':!0x1,'completed':!0x1,'message':X,'code':S,'session':r}};}[MG(0xae)](r,S){const MX={r:0xd4},Mg=MG,X='This\x20conversation\x20is\x20already\x20complete.';return r===Mg(0xbc)?this[Mg(MX.r)](S,t,X):this['chatResult'](S,X,!0x0);}[MG(0xdc)](r,S){const Mo=MG;return{'status':0xc8,'session':r,'contentType':Mo(0xb6),'body':d(S)};}[MG(0xb8)](r,S,X){return{'status':0xc8,'session':r,'body':{'success':!0x0,'completed':X,'message':S,'bot':S,'session':r}};}}function w(r){const MZ={r:0xd1},Mk=MG,S=r[Mk(0xab)]();if(!/^[A-Za-z0-9_-]{1,128}$/[Mk(MZ.r)](S))throw new Error('SESSION_ID\x20must\x20be\x201-128\x20letters,\x20numbers,\x20underscores,\x20or\x20hyphens.');return S;}y(w,MG(0xa7));export{M as GraphEngine};
@@ -1 +1 @@
1
- var R=Object.defineProperty;var d=(r,e)=>R(r,"name",{value:e,configurable:!0});import"reflect-metadata";import{AIMessage as c,HumanMessage as T}from"@langchain/core/messages";import{Command as p,END as y,isCommand as u}from"@langchain/langgraph";import{GraphLlm as f}from"./graph-llm.config.js";import{GraphStateSupport as L}from"./graph-state-support.js";import{LlmRunner as O,DEFAULT_LLM_POLICY as I,DEFAULT_MAX_AGENT_ROUNDS as H,EmptyModelResponseError as k}from"./llm-runner.js";import{currentTurnSignal as x}from"./turn-context.js";import{combineGraphNodeUpdates as $}from"./node-outcome.js";import{parseJsonObjectResponse as N}from"./json-response.js";import{stableClassId as v}from"./stable-id.js";import{SessionLogWarning as b}from"./session-log.js";import{goTargetIds as A,isToolResponse as S,stay as M}from"./tool-response.js";import{invocationGraphState as G,hasNodeInvocation as P,invocationHistory as _,invocationNodeState as j,invocationUpdate as D,appendInvocationHistory as U,replaceInvocationNodeState as J,invocationContext as q,saveInvocationContext as F,replaceInvocationContext as W,saveInvocationNodeState as z,withNodeInvocation as X,invocationMode as Y,invocationIsLocalOnly as B,assertInvocationWrite as g}from"./node-invocation.js";import{DecisionConfigurationError as K,resolveDecisionOptions as Q}from"./decision/decision-types.js";import{GRAPH_NODE_LOCAL_STATE as Se}from"./node-outcome.js";const V=Symbol("GRAPH_NODE_CLASS"),w=Symbol("graph-node-tool-handlers");function ve(r){if(!r.trim())throw new Error("A tool handler requires a tool name.");return(e,t)=>{const o=Reflect.getOwnMetadata(w,e)??[];if(o.some(n=>n.toolName===r))throw new Error(`Tool '${r}' already has a handler.`);o.push({toolName:r,methodName:t}),Reflect.defineMetadata(w,o,e)}}d(ve,"Tool");class E{static{d(this,"GraphNode")}llmGateway;runtime;static[V]=!0;static id(){return this.name}name;id;constructor(e,t){this.llmGateway=e,this.runtime=t;const o=new.target;this.name=o.name,this.id=v(o,"graph node")}get graph(){return this.runtime}defineTool(){return[]}getLlmConfig(){return{}}route(e){throw new Error(`Graph node '${this.id}' does not define a branch route.`)}async handleTool(e,t,o){const n=this.toolHandler(t.name);if(!n)return this.rejectToolCall(t.name,`Unsupported tool '${t.name}'.`);const i=this.runtime.requireTool(n.toolName),a=te(t.args);if(!a.ok)return this.rejectToolCall(n.toolName,a.error);const s=i.schema.safeParse(a.value);if(!s.success)return this.rejectToolCall(n.toolName,oe(s.error));const h=s.data,l=this[n.methodName];if(!l)throw new Error(`Tool '${n.toolName}' is decorated on missing method '${String(n.methodName)}'.`);const m=await l.call(this,h,o,e);if(S(m))return m;throw new Error(`Tool '${n.toolName}' on '${this.id}' must return a ToolResponse.`)}rejectToolCall(e,t){return b({tool_call:t,node:this.id,tool:e}),M(JSON.stringify({accepted:!1,error:t}))}usesChatModel(){return!0}onInvalidJsonResponse(e){throw e.error}onEmptyModelResponse(e){throw new k(e.reason)}invoke=d((e,t={})=>this.runtime.withInvocation(this.id,e,async()=>{const o=this.resolveNodeResponse(await this.run(e)),n=ee(o),i=await this.resolveJsonResponse(e,n);if(this.runtime.stageNodeEntries(i.nodes),i.context!==void 0&&this.runtime.stageContext(i.context),this.usesChatModel()){const s=this.runtime.resolveLlmConfig(this.getLlmConfig()),h=Z(s,this.runtime.resolveLlmConfig()),l=(e.nodes??{})[this.id];(!h||l?.model!==void 0)&&this.runtime.saveNode(this.id,{model:h?void 0:f.modelMetadata(s)})}const a=$(i,this.runtime.stagedUpdate());if(this.runtime.isLocalOnlyInvocation()&&(u(o)||Object.keys(a).some(s=>s!=="nodes"&&s!=="tokens")||Object.keys(a.nodes??{}).some(s=>s!==this.id)))throw new Error(`Internal LLM node '${this.id}' may publish only its own node state and token usage.`);return this.validateNodeResult(a,u(o)),u(o)?new p({update:a,...o.goto===void 0?{}:{goto:o.goto},...o.graph===void 0?{}:{graph:o.graph},...o.resume===void 0?{}:{resume:o.resume}}):a},t,this.managesLlmExecution()),"invoke");managesLlmExecution(){return!1}validateNodeResult(e,t){}obtainTools(e={}){return this.toolHandlers().filter(({toolName:t})=>this.includeTool(t,e)).map(({toolName:t})=>this.runtime.requireTool(t)).sort((t,o)=>t.name==="terminate_session"?1:o.name==="terminate_session"?-1:0)}validateTools(e={}){this.obtainTools(e)}includeTool(e,t){return!0}llmConfig(){return this.runtime.resolveLlmConfig(this.getLlmConfig())}llmCallOptions(){return this.runtime.llmCallOptions()}async runLlm(e,t){const o=await this.runAgentLoop(e,t);if(!o.stopReason)return o;const n=await this.onEmptyModelResponse({state:e,conversation:o,reason:o.stopReason});return{...o,response:n}}llmLifecycle(){}runAgentLoop(e,t){const o=this.llmLifecycle();return new O(this.llmGateway).run({...o===void 0?{}:{lifecycle:o},systemPrompt:this.getPrompt(e),history:this.llmHistory(e),tools:this.obtainTools(),llmConfig:this.llmConfig(),executeTool:d(n=>this.handleTool(e,n,t),"executeTool"),maxAgentRounds:this.runtime.maxAgentRounds,emptyHistorySeed:this.runtime.llmPolicy.emptyHistorySeed,emptyResponseRecovery:this.runtime.llmPolicy.emptyResponseRecovery,callOptions:this.llmCallOptions()})}llmHistory(e){return this.history(e)}historySpace(){return this.runtime.historySpace(this.id)}history(e){return this.runtime.hasInvocation()?this.runtime.invocationHistory(this.historySpace()):e.histories[this.historySpace()]??[]}historyUpdate(e){return{histories:{[this.historySpace()]:e}}}respond(e){return{...this.runtime.respond(e),...this.historyUpdate([new c(e)])}}complete(e){return{...this.runtime.complete(e),...this.historyUpdate([new c(e)])}}resolveNodeResponse(e){if(!S(e))return e;if(e.targets!==void 0&&e.kind!=="go")throw new Error("Multiple targets are only supported by go().");if(e.kind==="stay")throw new Error(`Graph node '${this.id}' can only return stay() from a tool handler.`);if(e.cleanup)throw new Error(`Graph node '${this.id}' can only use withCleanup() from a tool handler.`);if(e.feedback!==void 0)throw new Error(`Graph node '${this.id}' can only use withToolFeedback() from a tool handler.`);if(e.messages&&this.graph.appendHistory(this.historySpace(),e.messages),e.kind==="go"||e.kind==="directTo"){const t=e.kind==="go"?A(e):void 0;if(t&&t.length>1)return new p({update:{response:"",inputConsumed:!0,completed:!1,...e.usage===void 0?{}:{tokens:e.usage}},goto:[...t]});if(!e.target)throw new Error(`Graph node '${this.id}' selected ${e.kind}() without a target.`);const o=t?.[0]??v(e.target,"graph node"),n=this.graph.historySpace(o);if(e.state&&this.graph.saveNodeState(e.target,e.state),e.message&&this.graph.appendHistory(n,[e.message]),e.kind==="directTo"){const i=C(this.id,e);return this.graph.appendHistory(n,[new c(i)]),new p({update:{currentNode:o,response:i,inputConsumed:!0,completed:!1,...e.usage===void 0?{}:{tokens:e.usage}},goto:y})}return new p({update:{currentNode:o,response:"",inputConsumed:!0,completed:!1,...e.usage===void 0?{}:{tokens:e.usage}},goto:o})}if(e.message)throw new Error(`Graph node '${this.id}' can only use withMessage() with go() or directTo().`);if(e.kind==="direct"){const t=C(this.id,e);return this.graph.appendHistory(this.historySpace(),[new c(t)]),new p({update:{currentNode:this.id,response:t,inputConsumed:!0,completed:!1,...e.usage===void 0?{}:{tokens:e.usage}},goto:y})}if(e.kind==="finish"){const t=C(this.id,e);return this.graph.appendHistory(this.historySpace(),[new c(t)]),new p({update:{...this.graph.complete(t),...e.usage===void 0?{}:{tokens:e.usage}},goto:y})}throw new Error(`Graph node '${this.id}' returned an unsupported response kind '${e.kind}'.`)}state(e){return this.runtime.hasInvocation()?this.runtime.nodeState(this.id):e.nodes[this.id]??{}}getState(){return this.runtime.nodeState(this.id)}saveState(e){this.runtime.saveNode(this.id,e)}save(e){return this.runtime.saveNode(this.id,e)}remove(...e){return this.runtime.removeNode(this.id,...e)}toolHandler(e){return this.toolHandlers().find(t=>t.toolName===e)}async resolveJsonResponse(e,t){if(!this.runtime.expectsJsonResponse()||t.completed!==!0)return t;try{return N(t.response??""),t}catch(o){const n=await this.onInvalidJsonResponse({state:e,update:t,response:t.response??"",error:o instanceof Error?o:new Error(String(o))});return(n.completed===!0||n.response)&&N(n.response??""),n}}toolHandlers(){let e=Object.getPrototypeOf(this);const t=[];for(;e&&e!==E.prototype;){const n=Reflect.getOwnMetadata(w,e)??[];t.push(...n),e=Object.getPrototypeOf(e)}const o=new Set;for(const n of t){if(o.has(n.toolName))throw new Error(`Graph node '${this.id}' has more than one handler for tool '${n.toolName}'.`);o.add(n.toolName)}return t}}function Z(r,e){return r.model===e.model&&JSON.stringify(f.parameters(r))===JSON.stringify(f.parameters(e))}d(Z,"sameLlmConfig");class we extends L{static{d(this,"GraphNodeRuntime")}defaultLlmConfig;historySpaces;responseMode;maxAgentRounds;llmPolicy;decisionOptions;decisionErrorHandler;llmLifecycle;assertContextChannel;tools=new Map;constructor(e,t,o={},n="chat",i=H,a=I,s={},h,l,m){super(e),this.defaultLlmConfig=t,this.historySpaces=o,this.responseMode=n,this.maxAgentRounds=i,this.llmPolicy=a,this.decisionOptions=s,this.decisionErrorHandler=h,this.llmLifecycle=l,this.assertContextChannel=m}llmCallOptions(){const{llmTimeoutMs:e}=this.llmPolicy,t=x();return{...e===void 0?{}:{timeoutMs:e},...t===void 0?{}:{signal:t}}}expectsJsonResponse(){return this.responseMode==="json"}historySpace(e){return e?this.historySpaces[e]??"default":"default"}resolveLlmConfig(e={}){return f.resolveConfig(this.defaultLlmConfig,e)}resolveDecisionOptions(e={}){return Q(this.decisionOptions,e)}decisionProviderResolver;attachDecisionProviderResolver(e){this.decisionProviderResolver=e}resolveDecisionProvider(e){if(!this.decisionProviderResolver)throw new K(`Decision provider '${e}' cannot be resolved before the graph is attached to an engine.`);return this.decisionProviderResolver(e)}async handleDecisionError(e){return await this.decisionErrorHandler?.(e)??null}registerTools(e,t){for(const o of t){const n=this.tools.get(o.name);if(n)throw new Error(`Tool '${o.name}' is defined by both '${n.owner}' and '${e}'.`);this.tools.set(o.name,{definition:o,owner:e})}}requireTool(e){const t=this.tools.get(e);if(!t)throw new Error(`Tool '${e}' is not defined in this graph.`);return t.definition}input(e){return this.latestInput({messages:e.histories[this.historySpace(e.currentNode)]??[]})}getConversation(e){const o=(this.hasInvocation()?this.invocationHistory(e):[]).filter(n=>T.isInstance(n)&&n.additional_kwargs?.ezgraphInternal!==!0).map(n=>typeof n.content=="string"?n.content:JSON.stringify(n.content));return{request:o.at(-1)??"",priorRequests:o.slice(-5,-1)}}respond(e){return this.hasInvocation()&&g(this),this.responseUpdate(e)}complete(e){return this.hasInvocation()&&g(this),this.endUpdate(e)}withInvocation(e,t,o,n={},i=!1){return X(this,e,t,o,n,i)}invocationMode(){return Y(this)}isLocalOnlyInvocation(){return B(this)}nodeState(e){return j(this,e)}hasInvocation(){return P(this)}graphState(){return G(this)}getContext(){return q(this)}saveContext(e){g(this),this.assertContextChannel?.(),F(this,e)}stageContext(e){g(this),this.assertContextChannel?.(),W(this,e)}appendHistory(e,t){U(this,e,t)}invocationHistory(e){return _(this,e)}stagedUpdate(){return D(this)}stageNodeEntries(e){for(const[t,o]of Object.entries(e??{}))!o||typeof o!="object"||Array.isArray(o)||J(this,t,o)}saveNode(e,t){return z(this,e,t),{nodes:{[e]:this.nodeState(e)}}}saveNodeState(e,t){this.saveNode(v(e,"graph node"),t)}removeNode(e,...t){return this.saveNode(e,Object.fromEntries(t.map(o=>[o,void 0])))}}function ee(r){if(!u(r))return r;if(Array.isArray(r.update))throw new Error("GraphNode Command updates must be state objects.");return r.update??{}}d(ee,"commandUpdate");function C(r,e){if(!e.response?.trim())throw new Error(`Graph node '${r}' selected ${e.kind}() without a response.`);return e.response}d(C,"requireNodeResponse");function te(r){if(typeof r!="string")return{ok:!0,value:r};try{return{ok:!0,value:JSON.parse(r)}}catch(e){return{ok:!1,error:`Tool arguments were not valid JSON: ${e instanceof Error?e.message:String(e)}`}}}d(te,"coerceToolArgs");function oe(r){return r.issues.map(e=>e.path.length>0?`${e.path.join(".")}: ${e.message}`:e.message).join("; ")}d(oe,"formatToolArgumentError");export{V as GRAPH_NODE_CLASS,Se as GRAPH_NODE_LOCAL_STATE,E as GraphNode,we as GraphNodeRuntime,ve as Tool};
1
+ var R=Object.defineProperty;var d=(r,e)=>R(r,"name",{value:e,configurable:!0});import"reflect-metadata";import{AIMessage as c,HumanMessage as T}from"@langchain/core/messages";import{Command as p,END as y,isCommand as u}from"@langchain/langgraph";import{GraphLlm as f}from"./graph-llm.config.js";import{GraphStateSupport as L}from"./graph-state-support.js";import{LlmRunner as O,DEFAULT_LLM_POLICY as I,DEFAULT_MAX_AGENT_ROUNDS as H,EmptyModelResponseError as k}from"./llm-runner.js";import{currentTurnSignal as x}from"./turn-context.js";import{combineGraphNodeUpdates as $}from"./node-outcome.js";import{parseJsonObjectResponse as N}from"./json-response.js";import{stableClassId as v}from"./stable-id.js";import{SessionLogWarning as b}from"./session-log.js";import{goTargetIds as A,isToolResponse as S,stay as M}from"./tool-response.js";import{invocationGraphState as G,hasNodeInvocation as P,invocationHistory as _,invocationNodeState as j,invocationUpdate as D,appendInvocationHistory as U,replaceInvocationNodeState as J,invocationContext as q,saveInvocationContext as F,replaceInvocationContext as W,saveInvocationNodeState as z,withNodeInvocation as X,invocationMode as Y,invocationPriorNode as B,invocationIsLocalOnly as K,assertInvocationWrite as g}from"./node-invocation.js";import{DecisionConfigurationError as Q,resolveDecisionOptions as V}from"./decision/decision-types.js";import{GRAPH_NODE_LOCAL_STATE as Ee}from"./node-outcome.js";const Z=Symbol("GRAPH_NODE_CLASS"),w=Symbol("graph-node-tool-handlers");function we(r){if(!r.trim())throw new Error("A tool handler requires a tool name.");return(e,t)=>{const o=Reflect.getOwnMetadata(w,e)??[];if(o.some(n=>n.toolName===r))throw new Error(`Tool '${r}' already has a handler.`);o.push({toolName:r,methodName:t}),Reflect.defineMetadata(w,o,e)}}d(we,"Tool");class E{static{d(this,"GraphNode")}llmGateway;runtime;static[Z]=!0;static id(){return this.name}name;id;constructor(e,t){this.llmGateway=e,this.runtime=t;const o=new.target;this.name=o.name,this.id=v(o,"graph node")}get graph(){return this.runtime}defineTool(){return[]}getLlmConfig(){return{}}route(e){throw new Error(`Graph node '${this.id}' does not define a branch route.`)}async handleTool(e,t,o){const n=this.toolHandler(t.name);if(!n)return this.rejectToolCall(t.name,`Unsupported tool '${t.name}'.`);const i=this.runtime.requireTool(n.toolName),a=oe(t.args);if(!a.ok)return this.rejectToolCall(n.toolName,a.error);const s=i.schema.safeParse(a.value);if(!s.success)return this.rejectToolCall(n.toolName,ne(s.error));const h=s.data,l=this[n.methodName];if(!l)throw new Error(`Tool '${n.toolName}' is decorated on missing method '${String(n.methodName)}'.`);const m=await l.call(this,h,o,e);if(S(m))return m;throw new Error(`Tool '${n.toolName}' on '${this.id}' must return a ToolResponse.`)}rejectToolCall(e,t){return b({tool_call:t,node:this.id,tool:e}),M(JSON.stringify({accepted:!1,error:t}))}usesChatModel(){return!0}onInvalidJsonResponse(e){throw e.error}onEmptyModelResponse(e){throw new k(e.reason)}invoke=d((e,t={})=>this.runtime.withInvocation(this.id,e,async()=>{const o=this.resolveNodeResponse(await this.run(e)),n=te(o),i=await this.resolveJsonResponse(e,n);if(this.runtime.stageNodeEntries(i.nodes),i.context!==void 0&&this.runtime.stageContext(i.context),this.usesChatModel()){const s=this.runtime.resolveLlmConfig(this.getLlmConfig()),h=ee(s,this.runtime.resolveLlmConfig()),l=(e.nodes??{})[this.id];(!h||l?.model!==void 0)&&this.runtime.saveNode(this.id,{model:h?void 0:f.modelMetadata(s)})}const a=$(i,this.runtime.stagedUpdate());if(this.runtime.isLocalOnlyInvocation()&&(u(o)||Object.keys(a).some(s=>s!=="nodes"&&s!=="tokens")||Object.keys(a.nodes??{}).some(s=>s!==this.id)))throw new Error(`Internal LLM node '${this.id}' may publish only its own node state and token usage.`);return this.validateNodeResult(a,u(o)),u(o)?new p({update:a,...o.goto===void 0?{}:{goto:o.goto},...o.graph===void 0?{}:{graph:o.graph},...o.resume===void 0?{}:{resume:o.resume}}):a},t,this.managesLlmExecution()),"invoke");managesLlmExecution(){return!1}validateNodeResult(e,t){}obtainTools(e={}){return this.toolHandlers().filter(({toolName:t})=>this.includeTool(t,e)).map(({toolName:t})=>this.runtime.requireTool(t)).sort((t,o)=>t.name==="terminate_session"?1:o.name==="terminate_session"?-1:0)}validateTools(e={}){this.obtainTools(e)}includeTool(e,t){return!0}llmConfig(){return this.runtime.resolveLlmConfig(this.getLlmConfig())}llmCallOptions(){return this.runtime.llmCallOptions()}async runLlm(e,t){const o=await this.runAgentLoop(e,t);if(!o.stopReason)return o;const n=await this.onEmptyModelResponse({state:e,conversation:o,reason:o.stopReason});return{...o,response:n}}llmLifecycle(){}runAgentLoop(e,t){const o=this.llmLifecycle();return new O(this.llmGateway).run({...o===void 0?{}:{lifecycle:o},systemPrompt:this.getPrompt(e),history:this.llmHistory(e),tools:this.obtainTools(),llmConfig:this.llmConfig(),executeTool:d(n=>this.handleTool(e,n,t),"executeTool"),maxAgentRounds:this.runtime.maxAgentRounds,emptyHistorySeed:this.runtime.llmPolicy.emptyHistorySeed,emptyResponseRecovery:this.runtime.llmPolicy.emptyResponseRecovery,callOptions:this.llmCallOptions()})}llmHistory(e){return this.history(e)}historySpace(){return this.runtime.historySpace(this.id)}history(e){return this.runtime.hasInvocation()?this.runtime.invocationHistory(this.historySpace()):e.histories[this.historySpace()]??[]}historyUpdate(e){return{histories:{[this.historySpace()]:e}}}respond(e){return{...this.runtime.respond(e),...this.historyUpdate([new c(e)])}}complete(e){return{...this.runtime.complete(e),...this.historyUpdate([new c(e)])}}resolveNodeResponse(e){if(!S(e))return e;if(e.targets!==void 0&&e.kind!=="go")throw new Error("Multiple targets are only supported by fanout().");if(e.kind==="stay")throw new Error(`Graph node '${this.id}' can only return stay() from a tool handler.`);if(e.cleanup)throw new Error(`Graph node '${this.id}' can only use withCleanup() from a tool handler.`);if(e.feedback!==void 0)throw new Error(`Graph node '${this.id}' can only use withToolFeedback() from a tool handler.`);if(e.messages&&this.graph.appendHistory(this.historySpace(),e.messages),e.kind==="go"||e.kind==="directTo"){const t=e.kind==="go"?A(e):void 0;if(t&&t.length>1)return new p({update:{response:"",inputConsumed:!0,completed:!1,...e.usage===void 0?{}:{tokens:e.usage}},goto:[...t]});if(!e.target)throw new Error(`Graph node '${this.id}' selected ${e.kind}() without a target.`);const o=t?.[0]??v(e.target,"graph node"),n=this.graph.historySpace(o);if(e.state&&this.graph.saveNodeState(e.target,e.state),e.message&&this.graph.appendHistory(n,[e.message]),e.kind==="directTo"){const i=C(this.id,e);return this.graph.appendHistory(n,[new c(i)]),new p({update:{currentNode:o,response:i,inputConsumed:!0,completed:!1,...e.usage===void 0?{}:{tokens:e.usage}},goto:y})}return new p({update:{currentNode:o,response:"",inputConsumed:!0,completed:!1,...e.usage===void 0?{}:{tokens:e.usage}},goto:o})}if(e.message)throw new Error(`Graph node '${this.id}' can only use withMessage() with go() or directTo().`);if(e.kind==="direct"){const t=C(this.id,e);return this.graph.appendHistory(this.historySpace(),[new c(t)]),new p({update:{currentNode:this.id,response:t,inputConsumed:!0,completed:!1,...e.usage===void 0?{}:{tokens:e.usage}},goto:y})}if(e.kind==="finish"){const t=C(this.id,e);return this.graph.appendHistory(this.historySpace(),[new c(t)]),new p({update:{...this.graph.complete(t),...e.usage===void 0?{}:{tokens:e.usage}},goto:y})}throw new Error(`Graph node '${this.id}' returned an unsupported response kind '${e.kind}'.`)}state(e){return this.runtime.hasInvocation()?this.runtime.nodeState(this.id):e.nodes[this.id]??{}}getState(){return this.runtime.nodeState(this.id)}saveState(e){this.runtime.saveNode(this.id,e)}save(e){return this.runtime.saveNode(this.id,e)}remove(...e){return this.runtime.removeNode(this.id,...e)}toolHandler(e){return this.toolHandlers().find(t=>t.toolName===e)}async resolveJsonResponse(e,t){if(!this.runtime.expectsJsonResponse()||t.completed!==!0)return t;try{return N(t.response??""),t}catch(o){const n=await this.onInvalidJsonResponse({state:e,update:t,response:t.response??"",error:o instanceof Error?o:new Error(String(o))});return(n.completed===!0||n.response)&&N(n.response??""),n}}toolHandlers(){let e=Object.getPrototypeOf(this);const t=[];for(;e&&e!==E.prototype;){const n=Reflect.getOwnMetadata(w,e)??[];t.push(...n),e=Object.getPrototypeOf(e)}const o=new Set;for(const n of t){if(o.has(n.toolName))throw new Error(`Graph node '${this.id}' has more than one handler for tool '${n.toolName}'.`);o.add(n.toolName)}return t}}function ee(r,e){return r.model===e.model&&JSON.stringify(f.parameters(r))===JSON.stringify(f.parameters(e))}d(ee,"sameLlmConfig");class Ce extends L{static{d(this,"GraphNodeRuntime")}defaultLlmConfig;historySpaces;responseMode;maxAgentRounds;llmPolicy;decisionOptions;decisionErrorHandler;llmLifecycle;assertContextChannel;tools=new Map;constructor(e,t,o={},n="chat",i=H,a=I,s={},h,l,m){super(e),this.defaultLlmConfig=t,this.historySpaces=o,this.responseMode=n,this.maxAgentRounds=i,this.llmPolicy=a,this.decisionOptions=s,this.decisionErrorHandler=h,this.llmLifecycle=l,this.assertContextChannel=m}llmCallOptions(){const{llmTimeoutMs:e}=this.llmPolicy,t=x();return{...e===void 0?{}:{timeoutMs:e},...t===void 0?{}:{signal:t}}}expectsJsonResponse(){return this.responseMode==="json"}historySpace(e){return e?this.historySpaces[e]??"default":"default"}resolveLlmConfig(e={}){return f.resolveConfig(this.defaultLlmConfig,e)}resolveDecisionOptions(e={}){return V(this.decisionOptions,e)}decisionProviderResolver;attachDecisionProviderResolver(e){this.decisionProviderResolver=e}resolveDecisionProvider(e){if(!this.decisionProviderResolver)throw new Q(`Decision provider '${e}' cannot be resolved before the graph is attached to an engine.`);return this.decisionProviderResolver(e)}async handleDecisionError(e){return await this.decisionErrorHandler?.(e)??null}registerTools(e,t){for(const o of t){const n=this.tools.get(o.name);if(n)throw new Error(`Tool '${o.name}' is defined by both '${n.owner}' and '${e}'.`);this.tools.set(o.name,{definition:o,owner:e})}}requireTool(e){const t=this.tools.get(e);if(!t)throw new Error(`Tool '${e}' is not defined in this graph.`);return t.definition}input(e){return this.latestInput({messages:e.histories[this.historySpace(e.currentNode)]??[]})}getConversation(e){const o=(this.hasInvocation()?this.invocationHistory(e):[]).filter(n=>T.isInstance(n)&&n.additional_kwargs?.ezgraphInternal!==!0).map(n=>typeof n.content=="string"?n.content:JSON.stringify(n.content));return{request:o.at(-1)??"",priorRequests:o.slice(-5,-1)}}respond(e){return this.hasInvocation()&&g(this),this.responseUpdate(e)}complete(e){return this.hasInvocation()&&g(this),this.endUpdate(e)}withInvocation(e,t,o,n={},i=!1){return X(this,e,t,o,n,i)}invocationMode(){return Y(this)}priorNode(){return B(this)}isLocalOnlyInvocation(){return K(this)}nodeState(e){return j(this,e)}hasInvocation(){return P(this)}graphState(){return G(this)}getContext(){return q(this)}saveContext(e){g(this),this.assertContextChannel?.(),F(this,e)}stageContext(e){g(this),this.assertContextChannel?.(),W(this,e)}appendHistory(e,t){U(this,e,t)}invocationHistory(e){return _(this,e)}stagedUpdate(){return D(this)}stageNodeEntries(e){for(const[t,o]of Object.entries(e??{}))!o||typeof o!="object"||Array.isArray(o)||J(this,t,o)}saveNode(e,t){return z(this,e,t),{nodes:{[e]:this.nodeState(e)}}}saveNodeState(e,t){this.saveNode(v(e,"graph node"),t)}removeNode(e,...t){return this.saveNode(e,Object.fromEntries(t.map(o=>[o,void 0])))}}function te(r){if(!u(r))return r;if(Array.isArray(r.update))throw new Error("GraphNode Command updates must be state objects.");return r.update??{}}d(te,"commandUpdate");function C(r,e){if(!e.response?.trim())throw new Error(`Graph node '${r}' selected ${e.kind}() without a response.`);return e.response}d(C,"requireNodeResponse");function oe(r){if(typeof r!="string")return{ok:!0,value:r};try{return{ok:!0,value:JSON.parse(r)}}catch(e){return{ok:!1,error:`Tool arguments were not valid JSON: ${e instanceof Error?e.message:String(e)}`}}}d(oe,"coerceToolArgs");function ne(r){return r.issues.map(e=>e.path.length>0?`${e.path.join(".")}: ${e.message}`:e.message).join("; ")}d(ne,"formatToolArgumentError");export{Z as GRAPH_NODE_CLASS,Ee as GRAPH_NODE_LOCAL_STATE,E as GraphNode,Ce as GraphNodeRuntime,we as Tool};
@@ -1 +1 @@
1
- function d(){const B=['CMvZB2X2zu1VzgvSrgvZy3jPChrVCG','DMfSAwrHDgvdB25MAwC','zw50CMLLCW','CgfYyw1Z','ntuYndy4DNHqAfjm','CgfYyw1LDgvYtwfWCgLUz3m','C2v0ugf0Aa','BgfUz0nOywLUtw9KzwXjBML0AwfSAxPHDgLVBG','Aw5PDgLHBgL6zq','ntCXmZCYohLHBhDsra','ndbUuejIqM8','ChjVDMLKzxjnB2rLBa','ChjVDMLKzxi','B2jQzwn0','ChjVDMLKzxjbzgfWDgvY','BMfTzq','C2XPy2u','ntKXnJCXELjNrNDU','nZDVtujpzhK','mZeYotq1m1vtC294qG','q2f0ywXVzYbWyxjHBwv0zxiGBwfWCgLUzYaN','C3bSAxq','nde1nZq5nxn1CKL2Aq','q2f0ywXVzYbWyxjHBwv0zxiGBwfWCgLUzYbWyxrOCYbJyw5UB3qGyMuGzw1WDhKU','mJqWndK2nwzoDNfWqq','AxnbCNjHEq','mJm2nJa5nePzAg10ta'];d=function(){return B;};return d();}const y=b;(function(J,x){const t={J:0x17a,x:0x16b,p:0x178,Z:0x166},I=b,p=J();while(!![]){try{const Z=parseInt(I(0x173))/0x1+-parseInt(I(0x17c))/0x2+-parseInt(I(t.J))/0x3+-parseInt(I(t.x))/0x4+parseInt(I(t.p))/0x5+parseInt(I(t.Z))/0x6*(parseInt(I(0x174))/0x7)+parseInt(I(0x16c))/0x8*(parseInt(I(0x175))/0x9);if(Z===x)break;else p['push'](p['shift']());}catch(H){p['push'](p['shift']());}}}(d,0xb9e87));var s=Object['defineProperty'],l=(J,x)=>s(J,y(0x171),{'value':x,'configurable':!0x0});import{GraphLlm as z,ModelCatalog as F}from'./graph-llm.config.js';function b(v,s){v=v-0x165;const z=d();let F=z[v];if(b['uapbbH']===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);};b['ujitrk']=X,b['tGlJwF']={},b['uapbbH']=!![];}const V=z[0x0],Y=v+V,J=b['tGlJwF'][Y];return!J?(F=b['ujitrk'](F),b['tGlJwF'][Y]=F):F=J,F;}import{modelProviderAdapter as X}from'./model-provider.js';import{OPENAI_AUTH_PROVIDER as V,initializeOpenAIAuthProvider as Y}from'./openai-auth-provider.js';function C(J,x=[]){const L={J:0x17e,x:0x17d,p:0x165,Z:0x167,H:0x16d,r:0x16e,R:0x170,M:0x16a,q:0x16e},i=y,Z=z[i(L.J)](J),H=F[i(L.x)](Z),R={};for(const [q,P]of Object[i(0x17f)](Z[i(L.p)])){const W=H[i(L.Z)][q];W!==null&&u(R,W??q,P);}if(H[i(0x16e)]===V)return Y(H[i(L.H)],R);const M=X(H[i(L.r)],x)??H[i(L.R)];return M?M[i(L.M)]({'provider':H[i(L.q)],'model':H[i(L.H)],'options':R}):{'model':H[i(L.H)],'options':{'modelProvider':H[i(0x16e)],...R}};}l(C,y(0x169));function u(J,x,Z){const D={J:0x16f,x:0x17b,p:0x176,Z:0x179},h=y,H=x[h(0x177)]('.');let R=J;for(const q of H[h(0x172)](0x0,-0x1)){const P=R[q];if(P===void 0x0){const W={};R[q]=W,R=W;}else{if(typeof P==h(D.J)&&P!==null&&!Array[h(D.x)](P))R=P;else throw new Error(h(D.p)+x+'\x27\x20has\x20a\x20conflicting\x20path.');}}const M=H['at'](-0x1);if(!M)throw new Error(h(D.Z));R[M]=Z;}l(u,y(0x168));export{C as langChainModelInitialization};
1
+ function M(){const r=['CMvZB2X2zu1VzgvSrgvZy3jPChrVCG','DMfSAwrHDgvdB25MAwC','zw50CMLLCW','CgfYyw1Z','ntuYndy4DNHqAfjm','CgfYyw1LDgvYtwfWCgLUz3m','C2v0ugf0Aa','BgfUz0nOywLUtw9KzwXjBML0AwfSAxPHDgLVBG','Aw5PDgLHBgL6zq','ntCXmZCYohLHBhDsra','ndbUuejIqM8','ChjVDMLKzxjnB2rLBa','ChjVDMLKzxi','B2jQzwn0','ChjVDMLKzxjbzgfWDgvY','BMfTzq','C2XPy2u','ntKXnJCXELjNrNDU','nZDVtujpzhK','mZeYotq1m1vtC294qG','q2f0ywXVzYbWyxjHBwv0zxiGBwfWCgLUzYaN','C3bSAxq','nde1nZq5nxn1CKL2Aq','q2f0ywXVzYbWyxjHBwv0zxiGBwfWCgLUzYbWyxrOCYbJyw5UB3qGyMuGzw1WDhKU','mJqWndK2nwzoDNfWqq','AxnbCNjHEq','mJm2nJa5nePzAg10ta'];M=function(){return r;};return M();}const n=T;(function(G,q){const d={G:0x17a,q:0x16b,z:0x178,W:0x166},V=T,z=G();while(!![]){try{const W=parseInt(V(0x173))/0x1+-parseInt(V(0x17c))/0x2+-parseInt(V(d.G))/0x3+-parseInt(V(d.q))/0x4+parseInt(V(d.z))/0x5+parseInt(V(d.W))/0x6*(parseInt(V(0x174))/0x7)+parseInt(V(0x16c))/0x8*(parseInt(V(0x175))/0x9);if(W===q)break;else z['push'](z['shift']());}catch(y){z['push'](z['shift']());}}}(M,0xb9e87));var s=Object['defineProperty'],l=(G,q)=>s(G,n(0x171),{'value':q,'configurable':!0x0});import{GraphLlm as e,ModelCatalog as A}from'./graph-llm.config.js';function T(m,e){m=m-0x165;const A=M();let v=A[m];if(T['uapbbH']===undefined){var B=function(l){const q='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let z='',s='';for(let f=0x0,W,u,y=0x0;u=l['charAt'](y++);~u&&(W=f%0x4?W*0x40+u:u,f++%0x4)?z+=String['fromCharCode'](0xff&W>>(-0x2*f&0x6)):0x0){u=q['indexOf'](u);}for(let Q=0x0,g=z['length'];Q<g;Q++){s+='%'+('00'+z['charCodeAt'](Q)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(s);};T['ujitrk']=B,T['tGlJwF']={},T['uapbbH']=!![];}const i=A[0x0],j=m+i,G=T['tGlJwF'][j];return!G?(v=T['ujitrk'](v),T['tGlJwF'][j]=v):v=G,v;}import{modelProviderAdapter as B}from'./model-provider.js';import{OPENAI_AUTH_PROVIDER as i,initializeOpenAIAuthProvider as j}from'./openai-auth-provider.js';function C(G,q=[]){const N={G:0x17e,q:0x17d,z:0x165,W:0x167,y:0x16d,Q:0x16e,o:0x170,k:0x16a,h:0x16e},H=n,z=e[H(N.G)](G),W=A[H(N.q)](z),y={};for(const [k,h]of Object[H(0x17f)](z[H(N.z)])){const Y=W[H(N.W)][k];Y!==null&&u(y,Y??k,h);}if(W[H(0x16e)]===i)return j(W[H(N.y)],y);const Q=B(W[H(N.Q)],q)??W[H(N.o)];return Q?Q[H(N.k)]({'provider':W[H(N.h)],'model':W[H(N.y)],'options':y}):{'model':W[H(N.y)],'options':{'modelProvider':W[H(0x16e)],...y}};}l(C,n(0x169));function u(G,q,z){const K={G:0x16f,q:0x17b,z:0x176,W:0x179},t=n,W=q[t(0x177)]('.');let y=G;for(const k of W[t(0x172)](0x0,-0x1)){const h=y[k];if(h===void 0x0){const Y={};y[k]=Y,y=Y;}else{if(typeof h==t(K.G)&&h!==null&&!Array[t(K.q)](h))y=h;else throw new Error(t(K.z)+q+'\x27\x20has\x20a\x20conflicting\x20path.');}}const Q=W['at'](-0x1);if(!Q)throw new Error(t(K.W));y[Q]=z;}l(u,n(0x168));export{C as langChainModelInitialization};
@@ -1 +1 @@
1
- var y=Object.defineProperty;var c=(a,e)=>y(a,"name",{value:e,configurable:!0});var k=function(a,e,t,o){var s=arguments.length,n=s<3?e:o===null?o=Object.getOwnPropertyDescriptor(e,t):o,i;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")n=Reflect.decorate(a,e,t,o);else for(var r=a.length-1;r>=0;r--)(i=a[r])&&(n=(s<3?i(n):s>3?i(e,t,n):i(e,t))||n);return s>3&&n&&Object.defineProperty(e,t,n),n},m=function(a,e){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(a,e)};import{AIMessage as h,HumanMessage as L}from"@langchain/core/messages";import{Command as d,END as f}from"@langchain/langgraph";import{Tool as v}from"./graph-node.js";import{LlmNodeBase as R}from"./llm-node-base.js";import{stableClassId as M}from"./stable-id.js";import{TerminateSessionNode as I}from"./terminate-session.node.js";import{go as E,goTargetIds as l,isToolResponse as T}from"./tool-response.js";import{addTokenUsage as u}from"./token-usage.js";import{currentTurnSignal as g}from"./turn-context.js";class _ extends R{static{c(this,"LlmNode")}onResponse(e,t){}managesLlmExecution(){return!0}isInternal(){return this.graph.hasInvocation()&&this.graph.invocationMode()==="internal"}includeTool(e,t){return!((t.mode==="internal"||t.mode===void 0&&this.isInternal())&&e==="terminate_session")}llmHistory(e){return this.isInternal()?[]:super.llmHistory(e)}async handleTool(e,t,o){if(this.isInternal()&&t.name==="terminate_session")throw this.invalidInternalOutcome(t.name);const s=await super.handleTool(e,t,o);return this.validateOutcome(s),s}validateLlmRecovery(e){e&&typeof e=="object"&&e.kind!=="retry_with_model"&&this.validateOutcome(e)}validateOutcome(e){const t=["target","targets","state","message","messages"].some(o=>o in e);if(e.kind==="taskResult"&&(!("value"in e)||e.value===void 0||t||["response","feedback","cleanup"].some(o=>o in e)))throw new Error(`LLM node '${this.id}' requires a taskResult value without conversation effects.`);if(e.targets!==void 0&&e.kind!=="go")throw new Error("Multiple targets are only supported by go().");if(e.kind==="go"&&l(e),this.isInternal()&&(e.kind!=="stay"&&e.kind!=="taskResult"&&e.kind!=="direct"||t))throw this.invalidInternalOutcome(e.kind)}invalidInternalOutcome(e){return new Error(`Internal LLM node '${this.id}' cannot use '${e}'; its caller owns conversation routing and completion.`)}async endChat(e){return E(I).withMessage(new L({content:e.message?.trim()||"The user asked to end the conversation.",additional_kwargs:{ezgraphInternal:!0}}))}async run(e){const t=await this.runLlm(e,{}),o=t.toolResponse;if(o&&(this.validateOutcome(o),o.kind!=="taskResult"&&o.kind!=="direct"))return this.resolveToolResponse(t,o);const s=o?.kind==="taskResult"?o.value:t.response;if(o?.kind!=="taskResult"&&(typeof s!="string"||!s.trim()))throw new Error(`LLM node '${this.id}' stopped without a response or tool transition.`);g()?.throwIfAborted();const n=await this.onResponse(s,e);g()?.throwIfAborted();let i=n===void 0?s:n,r=u(t.usage,o?.usage);if(T(n)){if(this.validateOutcome(n),n.cleanup)throw new Error(`LLM node '${this.id}' may use cleanup only from a tool handler.`);if(n.feedback!==void 0||n.messages)throw new Error(`LLM node '${this.id}' may use tool feedback/messages only from a tool handler.`);if(n.message&&n.kind!=="go"&&n.kind!=="directTo")throw new Error(`LLM node '${this.id}' may use withMessage() only with go() or directTo().`);if(n.kind==="stay")throw new Error(`LLM node '${this.id}' may return stay() only from a tool handler.`);if(n.kind!=="taskResult"&&n.kind!=="direct")return this.resolveToolResponse({...t,usage:r,messages:n.response?this.responseMessages(t,n.response):t.messages},n);i=n.kind==="taskResult"?n.value:n.response,r=u(r,n.usage)}if(typeof i=="string"&&!i.trim())throw new Error(`LLM node '${this.id}' onResponse() produced no response.`);if(this.isInternal())return{tokens:r};const p=typeof i=="string"?i:JSON.stringify(i);if(!p?.trim())throw new Error(`LLM node '${this.id}' onResponse() produced no response.`);return new d({update:{currentNode:this.id,response:p,inputConsumed:!0,completed:!1,...this.historyUpdate(this.responseMessages(t,p)),tokens:r},goto:f})}responseMessages(e,t){const o=[...e.messages],s=o.at(-1);return s&&h.isInstance(s)&&e.response!==void 0?t!==e.response&&(o[o.length-1]=new h({content:t,...s.id===void 0?{}:{id:s.id}})):o.push(new h(t)),o}resolveToolResponse(e,t){const o=this.historyUpdate(e.messages),s=u(e.usage,t.usage);if(t.kind==="go"){const n=l(t);if(n.length>1)return new d({update:{inputConsumed:!0,response:"",completed:!1,...o,tokens:s},goto:[...n]});if(!t.target)throw new Error(`LLM node '${this.id}' selected go() without a target.`);const i=n[0];return t.state&&this.graph.saveNodeState(t.target,t.state),t.message&&this.graph.appendHistory(this.graph.historySpace(i),[t.message]),new d({update:{currentNode:i,inputConsumed:!0,response:"",completed:!1,...o,tokens:s},goto:i})}if(t.kind==="directTo"){if(!t.target)throw new Error(`LLM node '${this.id}' selected directTo() without a target.`);const n=M(t.target,"graph node"),i=this.graph.historySpace(n);t.state&&this.graph.saveNodeState(t.target,t.state),t.message&&this.graph.appendHistory(i,[t.message]);const r=w(this.id,t);return i!==this.historySpace()&&this.graph.appendHistory(i,[new h(r)]),new d({update:{currentNode:n,response:r,inputConsumed:!0,completed:!1,...o,tokens:s},goto:f})}if(t.kind==="finish")return new d({update:{...this.graph.complete(w(this.id,t)),...o,tokens:s},goto:f});throw new Error(`LLM node '${this.id}' cannot publish '${t.kind}' as a conversation result.`)}}k([v("terminate_session"),m("design:type",Function),m("design:paramtypes",[Object]),m("design:returntype",Promise)],_.prototype,"endChat",null);function w(a,e){if(!e.response?.trim())throw new Error(`LLM node '${a}' selected ${e.kind}() without a response.`);return e.response}c(w,"requireResponse");export{_ as LlmNode};
1
+ var y=Object.defineProperty;var h=(a,e)=>y(a,"name",{value:e,configurable:!0});var k=function(a,e,t,o){var s=arguments.length,n=s<3?e:o===null?o=Object.getOwnPropertyDescriptor(e,t):o,i;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")n=Reflect.decorate(a,e,t,o);else for(var r=a.length-1;r>=0;r--)(i=a[r])&&(n=(s<3?i(n):s>3?i(e,t,n):i(e,t))||n);return s>3&&n&&Object.defineProperty(e,t,n),n},f=function(a,e){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(a,e)};import{AIMessage as p,HumanMessage as L}from"@langchain/core/messages";import{Command as d,END as m}from"@langchain/langgraph";import{Tool as v}from"./graph-node.js";import{LlmNodeBase as R}from"./llm-node-base.js";import{stableClassId as I}from"./stable-id.js";import{TerminateSessionNode as M}from"./terminate-session.node.js";import{go as E,goTargetIds as l,isToolResponse as T}from"./tool-response.js";import{addTokenUsage as u}from"./token-usage.js";import{currentTurnSignal as g}from"./turn-context.js";class _ extends R{static{h(this,"LlmNode")}onEnter(e,t){return e}llmLifecycle(){return{...super.llmLifecycle(),onEnter:h(e=>this.onEnter(e,this.graph.hasInvocation()?this.graph.priorNode():void 0),"onEnter")}}onResponse(e,t){}managesLlmExecution(){return!0}isInternal(){return this.graph.hasInvocation()&&this.graph.invocationMode()==="internal"}includeTool(e,t){return!((t.mode==="internal"||t.mode===void 0&&this.isInternal())&&e==="terminate_session")}llmHistory(e){return this.isInternal()?[]:super.llmHistory(e)}async handleTool(e,t,o){if(this.isInternal()&&t.name==="terminate_session")throw this.invalidInternalOutcome(t.name);const s=await super.handleTool(e,t,o);return this.validateOutcome(s),s}validateLlmRecovery(e){e&&typeof e=="object"&&e.kind!=="retry_with_model"&&this.validateOutcome(e)}validateOutcome(e){const t=["target","targets","state","message","messages"].some(o=>o in e);if(e.kind==="taskResult"&&(!("value"in e)||e.value===void 0||t||["response","feedback","cleanup"].some(o=>o in e)))throw new Error(`LLM node '${this.id}' requires a taskResult value without conversation effects.`);if(e.targets!==void 0&&e.kind!=="go")throw new Error("Multiple targets are only supported by fanout().");if(e.kind==="go"&&l(e),this.isInternal()&&(e.kind!=="stay"&&e.kind!=="taskResult"&&e.kind!=="direct"||t))throw this.invalidInternalOutcome(e.kind)}invalidInternalOutcome(e){return new Error(`Internal LLM node '${this.id}' cannot use '${e}'; its caller owns conversation routing and completion.`)}async endChat(e){return E(M).withMessage(new L({content:e.message?.trim()||"The user asked to end the conversation.",additional_kwargs:{ezgraphInternal:!0}}))}async run(e){const t=await this.runLlm(e,{}),o=t.toolResponse;if(o&&(this.validateOutcome(o),o.kind!=="taskResult"&&o.kind!=="direct"))return this.resolveToolResponse(t,o);const s=o?.kind==="taskResult"?o.value:t.response;if(o?.kind!=="taskResult"&&(typeof s!="string"||!s.trim()))throw new Error(`LLM node '${this.id}' stopped without a response or tool transition.`);g()?.throwIfAborted();const n=await this.onResponse(s,e);g()?.throwIfAborted();let i=n===void 0?s:n,r=u(t.usage,o?.usage);if(T(n)){if(this.validateOutcome(n),n.cleanup)throw new Error(`LLM node '${this.id}' may use cleanup only from a tool handler.`);if(n.feedback!==void 0||n.messages)throw new Error(`LLM node '${this.id}' may use tool feedback/messages only from a tool handler.`);if(n.message&&n.kind!=="go"&&n.kind!=="directTo")throw new Error(`LLM node '${this.id}' may use withMessage() only with go() or directTo().`);if(n.kind==="stay")throw new Error(`LLM node '${this.id}' may return stay() only from a tool handler.`);if(n.kind!=="taskResult"&&n.kind!=="direct")return this.resolveToolResponse({...t,usage:r,messages:n.response?this.responseMessages(t,n.response):t.messages},n);i=n.kind==="taskResult"?n.value:n.response,r=u(r,n.usage)}if(typeof i=="string"&&!i.trim())throw new Error(`LLM node '${this.id}' onResponse() produced no response.`);if(this.isInternal())return{tokens:r};const c=typeof i=="string"?i:JSON.stringify(i);if(!c?.trim())throw new Error(`LLM node '${this.id}' onResponse() produced no response.`);return new d({update:{currentNode:this.id,response:c,inputConsumed:!0,completed:!1,...this.historyUpdate(this.responseMessages(t,c)),tokens:r},goto:m})}responseMessages(e,t){const o=[...e.messages],s=o.at(-1);return s&&p.isInstance(s)&&e.response!==void 0?t!==e.response&&(o[o.length-1]=new p({content:t,...s.id===void 0?{}:{id:s.id}})):o.push(new p(t)),o}resolveToolResponse(e,t){const o=this.historyUpdate(e.messages),s=u(e.usage,t.usage);if(t.kind==="go"){const n=l(t);if(n.length>1)return new d({update:{inputConsumed:!0,response:"",completed:!1,...o,tokens:s},goto:[...n]});if(!t.target)throw new Error(`LLM node '${this.id}' selected go() without a target.`);const i=n[0];return t.state&&this.graph.saveNodeState(t.target,t.state),t.message&&this.graph.appendHistory(this.graph.historySpace(i),[t.message]),new d({update:{currentNode:i,inputConsumed:!0,response:"",completed:!1,...o,tokens:s},goto:i})}if(t.kind==="directTo"){if(!t.target)throw new Error(`LLM node '${this.id}' selected directTo() without a target.`);const n=I(t.target,"graph node"),i=this.graph.historySpace(n);t.state&&this.graph.saveNodeState(t.target,t.state),t.message&&this.graph.appendHistory(i,[t.message]);const r=w(this.id,t);return i!==this.historySpace()&&this.graph.appendHistory(i,[new p(r)]),new d({update:{currentNode:n,response:r,inputConsumed:!0,completed:!1,...o,tokens:s},goto:m})}if(t.kind==="finish")return new d({update:{...this.graph.complete(w(this.id,t)),...o,tokens:s},goto:m});throw new Error(`LLM node '${this.id}' cannot publish '${t.kind}' as a conversation result.`)}}k([v("terminate_session"),f("design:type",Function),f("design:paramtypes",[Object]),f("design:returntype",Promise)],_.prototype,"endChat",null);function w(a,e){if(!e.response?.trim())throw new Error(`LLM node '${a}' selected ${e.kind}() without a response.`);return e.response}h(w,"requireResponse");export{_ as LlmNode};
@@ -1 +1 @@
1
- const dh=b;(function(m,L){const dk={m:0xf6,L:0xe1,D:0x10b,B:0xc8,a:0x10a,U:0x108},di=b,D=m();while(!![]){try{const B=-parseInt(di(0xe2))/0x1+parseInt(di(0xf1))/0x2+-parseInt(di(dk.m))/0x3+-parseInt(di(0xae))/0x4*(parseInt(di(dk.L))/0x5)+-parseInt(di(dk.D))/0x6*(parseInt(di(0x101))/0x7)+-parseInt(di(dk.B))/0x8*(-parseInt(di(dk.a))/0x9)+parseInt(di(0xf0))/0xa*(parseInt(di(dk.U))/0xb);if(B===L)break;else D['push'](D['shift']());}catch(a){D['push'](D['shift']());}}}(d,0x5bbe4));var K=Object[dh(0xb2)],s=(m,L)=>K(m,dh(0xe7),{'value':L,'configurable':!0x0});import{setTimeout as v}from'node:timers/promises';import{GraphLlm as z,ModelCatalog as J}from'./graph-llm.config.js';import{LlmResponseBlockedError as x,LlmSetupError as p}from'./llm-lifecycle.js';import{AIMessage as f,HumanMessage as u,ToolMessage as c}from'@langchain/core/messages';import{addTokenUsage as r,emptyTokenUsage as R}from'./token-usage.js';import{goTargetIds as M,isToolResponse as W}from'./tool-response.js';import{describeStopReason as I,isRetryableStopReason as y,modelStopReason as g}from'./model-stop-reason.js';import{SessionLogWarning as i}from'./session-log.js';import{isOpenAIAuthConfig as h,openAIAuthMessageText as t}from'./openai-auth-provider.js';class de extends Error{static{s(this,dh(0x106));}[dh(0xf3)];constructor(m){const dw={m:0xbe,L:0xe7},dt=dh;super(dt(dw.m)+I(m)+').'),this['reason']=m,this[dt(dw.L)]=dt(0x106);}}function d(){const bb=['B2jQzwn0','tgXTuNvUBMvY','Axntyw1LqMfYzvrYyw5ZAxrPB24','AxnjBNrLz2vY','zw1WDhLszxnWB25ZzvjLy292zxj5','ywnXDwLYzunHBMrPzgf0zq','BgXTq29UzMLN','y2fSBe9WDgLVBNm','BwvZC2fNzxm','C3rHEq','zxHLy3v0zvrVB2W','Dg9VBhm','CMvZCg9UC2vFBwv0ywrHDge','BM9YBwfSAxPLuMvHC29U','BwvZC2fNzq','CMv0CMLLCW','mtCWmZvurKDxD2C','nde3nJHdzMj5tui','q29UDMvYC2f0Aw9Uigv4y2vLzgvKia','C3rHDgu','CMv0CNLxAxrOtw9KzwWOksbTyxKGyMuGCMv0DxjUzwqGB25SEsbVBMnLigLUigeGCMvJB3zLCNKGC2vXDwvUy2uU','Dg9VBf9JywXSCW','BMfTzq','BwLU','BNvKz2u','y2XLyw51Cef0DgfJAg1LBNrZ','Aw1Hz2vFB3rOzxi','B3rOzxi','CMvZCg9UC2vuzxH0','Aw52B2nHDgLVBL9LCNjVCG','AxnbCNjHEq','mteZmgjhwMLRrG','ntm3nJa0BhfAtgT4','vgHLig1VzgvSihjLC3bVBNnLihDHCYbYzwPLy3rLzcbIEsbJAgvJA1jLC3bVBNnLkcKU','CMvHC29U','C3rYAw5N','zw50CMLLCW','mtm1mJeXoe93vKTZqq','ywrKAxrPB25HBf9RD2fYz3m','y29TBw9Uq29UDgv4Da','yxnZzxj0rw1WDhLszxnWB25ZzvjLDhjPzxm','DgHYB3DjzKfIB3j0zwq','DMfSDwu','zgv0ywLS','Aw50zxjUywXiDw1HBK1LC3nHz2u','AgLZDg9YEq','ChjVDMLKzxi','y29UDgvUDa','mte5DuXzrvrf','CMvWBgfJzufSBa','ywDLBNq','CMf0Aw5NCW','CMvZCg9UC2u','rw1WDhLnB2rLBfjLC3bVBNnLrxjYB3i','zxzLCNK','mJu3mJLVswLxCfO','C3rYAw5NAwz5','mtH4Ae9ds2q','ntK1mZHAuujvrwC','y2fUzgLKyxrL','C2L6zq','BgLMzwn5y2XL','zMvLzgjHy2S','zw1WDhLFCMvZCg9UC2u','yxr0zw1WDhnFzxHOyxvZDgvK','Dgv4Da','AgfZ','C29Tzq','yxbWBhLszwnVDMvYEq','C2fMzxr5x3jHDgLUz3m','C3LZDgvTuhjVBxb0','CMvZB2X2zunVBMzPzW','otznwMLkrhe','igfNzw50ihjVDw5KCY4','zw1WDhLszxnWB25ZzvjLy292zxj5lNjLDhjPzxmGBxvZDcbIzsbHig5VBI1UzwDHDgL2zsbPBNrLz2vYoYbYzwnLAxzLzca','A2LUza','zgvMAw5LuhjVCgvYDhK','Cg9W','ChvZAa','C2fMzxr5uMf0Aw5NCW','Bw9KzwW','CMvZCg9UC2vFCMvQzwn0zwq','y2HLy2TszxnWB25Zzq','C3rVCf9KzxrHAwXZ','BgvUz3rO','CMv0CNLxAxrOtw9KzwWOksbPCYbZDxbWB3j0zwqGB25SEsbIEsbVBKXSBuvYCM9YkcKU','Aw5JBhvKzxm','AgfZq2fUzgLKyxrLq29UDgvUDa','vgHLig1VzgvSihjLDhvYBMvKigfUigvTChr5ihjLC3bVBNnLicG','Bwf4qwDLBNrsB3vUzhm','qsb0B29SigjHDgnOihnLBgvJDgvKig1VCMuGDgHHBIbVBMuGDgvYBwLUywWGCMvZCg9UC2uGB3iGDhjHBNnPDgLVBI4','DhjPBq','yMXVy2TFCMvHC29U','DMfSAwrHDgvdB25MAwC','ChjVBxb0','CMv0CNLFD2L0Af9TB2rLBa','CMvZB2X2zu1VzgvSrgvZy3jPChrVCG','BwfW','mJm0mJqXnKDvsvzpza','CMv0CNLFzgvJBgLUzwq','D2fPDezVCLjLDhj5','y2XLyw51Ca','zw1WDhLiAxn0B3j5u2vLza','CMvMDxnHBa','DxnHz2u','CgfYyw1Z','B25mBg1fCNjVCG'];d=function(){return bb;};return d();}const ce=0x8;function ue(m){const dn={m:0xd4},dm=dh;if(!Number[dm(dn.m)](m)||m<0x1)throw new Error('maxAgentRounds\x20must\x20be\x20a\x20positive\x20integer;\x20received\x20'+String(m)+'.');return m;}s(ue,'assertMaxAgentRounds');const P='Start',$={'retries':0x2,'nudge':'Follow\x20the\x20system\x20prompt\x20and\x20respond\x20properly.\x20Use\x20the\x20required\x20tool\x20when\x20instructed.'};function pe(m){const dT={m:0xd4},dL=dh;if(!Number[dL(dT.m)](m)||m<0x0)throw new Error(dL(0xb0)+String(m)+'.');return m;}s(pe,dh(0xf9));const Te={'emptyHistorySeed':P,'emptyResponseRecovery':$};class Me{static{s(this,dh(0xd2));}['llmGateway'];constructor(m){this['llmGateway']=m;}async['run'](L){const b2={m:0xba,L:0xd5,D:0xd5,B:0xd8,a:0xf8,U:0xd6,e:0xfb,o:0xb4,O:0xfb,E:0xc1,l:0xb3,k:0x110,w:0xe8,n:0x111,T:0xf5,A:0xfa,d0:0xe7,d1:0xb4,d2:0xb4,d3:0xcb,d4:0xfa,d5:0xda,d6:0xb4,d7:0xe3,d8:0xea},b0={m:0x103,L:0xac,D:0xdc,B:0xfa,a:0xec,U:0x10c,e:0xff,o:0xdd,O:0xb9,E:0xf7,l:0xfb,k:0xf7,w:0xfb,n:0xb8,T:0xfa},dG={m:0xfa,L:0xd1,D:0xc5},dA={m:0xb1,L:0xc5,D:0xf4,B:0xda,a:0xcb,U:0xd9,e:0xb4},dD=dh,D=L[dD(0xcc)]===void 0x0?P:L['emptyHistorySeed'],U=L[dD(0xfe)][dD(b2.m)]===0x0&&D!==null,e=U?[G(D)]:[...L[dD(0xfe)]],d0=U?[...e]:[];let d1=[],d2=R();const d3=ue(L[dD(0xbf)]??ce),d4=L[dD(b2.L)]===void 0x0?$:L[dD(b2.D)],d5=d4?pe(d4['retries']):0x0;let d6=0x0,d7=L[dD(0xd7)],d8=!0x1;const d9=L[dD(0x10e)],dd=L[dD(b2.B)]?.['signal'],db=s(()=>d9?z[dD(0xad)](d7,{'params':{'retries':0x0}}):d7,'invocationConfig'),dv=s(()=>({'nodeId':d9['nodeId'],'provider':J[dD(0xc6)](d7)[dD(0xff)],'model':d7[dD(0xb6)],...dd===void 0x0?{}:{'signal':dd}}),dD(b2.a)),ds=s(async(dV,dY)=>{const dB=dD;if(dd?.['throwIfAborted'](),dV===null)throw dY;if(typeof dV=='object'&&dV[dB(dA.m)]===dB(dA.L)){if(d8)throw new Error(dB(0xe5),{'cause':dY});d7=z[dB(0xc3)](dV[dB(0xb6)]),d8=!0x0,d6=0x0;return;}const dJ=typeof dV==dB(dA.D)?void 0x0:dV;if(dJ&&(dJ[dB(0xb1)]===dB(dA.B)||dJ[dB(dA.a)]||dJ[dB(0x10f)]!==void 0x0))throw new Error('LLM\x20recovery\x20cannot\x20return\x20tool-only\x20stay(),\x20cleanup,\x20or\x20feedback.');const dx=typeof dV==dB(dA.D)?dV:dJ?.['response'];return dJ?.[dB(dA.U)]&&d0['push'](...dJ[dB(0xd9)]),dx!==void 0x0&&d0[dB(dA.e)](new f(dx)),{'messages':d0,'usage':d2,'stoppedAfterTool':!0x1,...dx===void 0x0?{}:{'response':dx},...dJ===void 0x0?{}:{'toolResponse':dJ}};},dD(0x115)),dz=s(async(dV,dY)=>{const da=dD;dd?.[da(0xfa)]();const dJ=await d9['onLlmBlocked'](dV);if(dd?.[da(dG.m)](),typeof dJ==da(dG.L)&&dJ!==null&&dJ['kind']===da(dG.D))throw new Error(da(0xbb));return await ds(dJ,new x(dV,dY));},'handleBlocked'),dF=s(async()=>{const dU=dD;let dV=0x0;for(;;){dd?.[dU(0xfa)]();const dY=d8?0x1:Number(d7[dU(0xcf)][dU(0xe0)])+0x1;dV+=0x1;let dJ;const dx=db();try{dJ=await this['llmGateway'][dU(b0.m)](L[dU(b0.L)],e,L[dU(b0.D)],dx,L[dU(0xd8)]);}catch(dZ){if(dd?.[dU(b0.B)](),!d9||dZ instanceof p)throw dZ;const dH=he(dZ,dv());if(dH)return dz(dH,dZ);const dr=dZ instanceof Error?dZ:new Error(String(dZ)),dR=d9['shouldRetryLlmError']({...dv(),'error':dr,'attempt':dV,'maxAttempts':dY});if(dd?.['throwIfAborted'](),dR!==!0x1&&dV<dY){await q(dd);continue;}const dM={...dv(),'kind':dU(0xee),'error':dr,'attemptsMade':dV,'maxAttempts':dY,'stoppedBecause':dR===!0x1?dU(0xc9):'attempts_exhausted'},dq=await ds(await d9[dU(0xd0)](dM),dr);if(dq)return dq;dV=0x0;continue;}if(dd?.[dU(b0.B)](),d2=r(d2,dJ[dU(0xce)]),!d9)return dJ;const dp=g(dJ['value']);if(dp['category']==='blocked'||[dU(b0.a),dU(0xeb)][dU(0xbc)](C(dp['provider']??'')))return dz({...dv(),'phase':dU(b0.U),'rawReason':dp[dU(b0.e)]??'refusal','reason':C(dp[dU(0xff)]??dU(0xcd)),...Array[dU(0xef)](dp[dU(0x104)])?{'safetyRatings':dp['ratings']}:{},...(dJ['value'][dU(b0.o)][dU(b0.O)]??dJ[dU(0xfb)][dU(b0.E)][dU(0xb9)]??dp[dU(0xfc)])===void 0x0?{}:{'providerDetails':dJ[dU(b0.l)][dU(0xdd)][dU(0xb9)]??dJ['value'][dU(b0.k)][dU(0xb9)]??dp[dU(0xfc)]}});if(!Y(dJ[dU(b0.w)]))return dJ;const df=d9[dU(b0.n)](dJ['value']);if(dd?.[dU(b0.T)](),!df)return dJ;if(dV<dY){await q(dd);continue;}const du=new Error(dU(0xf2)),dc=await ds(await d9[dU(0xd0)]({...dv(),'kind':dU(0xb7),'error':du,'attemptsMade':dV,'maxAttempts':dY,'stoppedBecause':dU(0x111),'lastResponse':dJ[dU(0xfb)]}),du);if(dc)return dc;dV=0x0;}},dD(b2.U));try{for(let dV=0x0;dV<d3;dV+=0x1){const dY=await dF();if(!(dD(b2.e)in dY))return dY;d0['push'](dY[dD(0xfb)]),e[dD(b2.o)](dY[dD(0xfb)]);const dJ=dY[dD(0xfb)][dD(0xe6)]??[];if(dJ['length']===0x0){const df=ye(dY[dD(b2.O)],d7);if(df[dD(b2.E)]()&&(!d9||Y(dY[dD(0xfb)])))return await dX(),{'messages':d0,'usage':d2,'response':df,'stoppedAfterTool':!0x1};const du=g(dY['value']),dc=y(du)&&d4!==null&&d6<d5&&!d8&&(!d9||dV+0x1<d3);if(i({'empty_model_response':I(du),'retried':dc}),dc&&d4){d6+=0x1,d0[dD(0xb3)](),e[dD(b2.l)](),e[dD(b2.o)](G(d4[dD(0xe9)]));continue;}if(d9){d0['pop'](),e[dD(b2.l)]();const dZ=new de(du),dH=await ds(await d9[dD(0xd0)]({...dv(),'kind':dD(b2.k),'error':dZ,'attemptsMade':d6+0x1,'maxAttempts':d8?0x1:Math[dD(b2.w)](d5+0x1,d6+d3-dV),'stoppedBecause':dD(b2.n),'lastResponse':dY[dD(b2.O)]}),dZ);if(dH)return dH;dV-=0x1;continue;}return await dX(),{'messages':d0,'usage':d2,'response':df,'stoppedAfterTool':!0x1,'stopReason':du};}await dX();let dx=!0x1,dp;try{for(const [dr,dR]of dJ[dD(b2.T)]()){dd?.[dD(b2.A)]();const dM=await L[dD(0xdb)](dR);if(W(dM)){if(dM['kind']==='go'&&M(dM),dM[dD(0xb1)]!==dD(0xda)){if(dp&&dp['kind']!==dD(0xda)&&!fe(dp,dM))throw new Error(dD(0xc0));dp=dM;}else dp||(dp=dM);const dq=new c({'content':dM['feedback']??'OK','tool_call_id':dR['id']??'tool-call-'+dV+'-'+dr,'name':dR[dD(b2.d0)]});d0[dD(b2.d1)](dq),e['push'](dq),dM[dD(0xd9)]&&(d0[dD(b2.d2)](...dM['messages']),e[dD(0xb4)](...dM[dD(0xd9)])),dM[dD(0xcb)]&&d1['push'](dM[dD(b2.d3)]),dd?.[dD(b2.d4)](),dx||=dM['kind']!==dD(b2.d5);continue;}}}catch(dP){throw await dX(),dP;}if(dx){const dW=dp?.[dD(0x105)];if(dW){const dI=new f(dW);d0[dD(b2.d6)](dI),e['push'](dI);}return await dX(),{'messages':d0,'usage':d2,'stoppedAfterTool':!0x0,...dW?{'response':dW}:{},...dp?{'toolResponse':dp}:{}};}}throw await dX(),new Error(dD(b2.d7)+d3+dD(0xaf));}finally{await dX();}async function dX(){const dK=dD,dy=d1;d1=[],await Promise['allSettled'](dy[dK(0xc7)](dg=>dg()));}s(dX,dD(b2.d8));}}function fe(L,D){const b3={m:0xb1,L:0xe4,D:0xdf,B:0x105,a:0xce},dC=dh;if(L[dC(0xb1)]!=='go'||D[dC(b3.m)]!=='go')return!0x1;const B=M(L),a=new Set(M(D));return B[dC(0xba)]===a[dC(0x10d)]&&B[dC(0x107)](U=>a[dC(0x113)](U))&&L[dC(0xe4)]===void 0x0&&D[dC(b3.L)]===void 0x0&&L[dC(b3.D)]===void 0x0&&D['message']===void 0x0&&L['messages']===void 0x0&&D[dC(0xd9)]===void 0x0&&L['cleanup']===void 0x0&&D[dC(0xcb)]===void 0x0&&L['response']===void 0x0&&D[dC(b3.B)]===void 0x0&&L[dC(0xce)]===void 0x0&&D[dC(b3.a)]===void 0x0;}s(fe,dh(0xd3));function G(m){return new u({'content':m,'additional_kwargs':{'ezgraphInternal':!0x0}});}s(G,dh(0xfd));function me(m){const b5={m:0x100,L:0x109},dQ=dh;return typeof m[dQ(b5.m)]=='string'?m['content']:JSON[dQ(b5.L)](m[dQ(0x100)]);}s(me,'messageText');function ye(m,L){const dS=dh;return h(L)?t(m[dS(0x100)]):me(m);}function b(v,s){v=v-0xab;const z=d();let F=z[v];if(b['lvXvWA']===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);};b['tTYUZt']=X,b['jyAozZ']={},b['lvXvWA']=!![];}const V=z[0x0],Y=v+V,J=b['jyAozZ'][Y];return!J?(F=b['tTYUZt'](F),b['jyAozZ'][Y]=F):F=J,F;}s(ye,dh(0xed));function C(m){const b7={m:0x102},dO=dh;return m[dO(0xc1)]()['toLowerCase']()[dO(b7.m)]('-','_');}s(C,dh(0xde));function he(L,D){const b8={m:0xd1,L:0xc2,D:0xb5,B:0xab,a:0xc4},dE=dh;if(!L||typeof L!=dE(b8.m))return null;const B=L,a=B['blockReason']??B[dE(b8.L)];if(typeof a!='string'||!a['trim']())return null;const U=B[dE(b8.D)]??B[dE(b8.B)];return{...D,'phase':dE(b8.a),'rawReason':a,'reason':C(a),...Array[dE(0xef)](U)?{'safetyRatings':U}:{}};}s(he,'promptBlockedContext');function Y(m){const dl=dh;return m['tool_calls']?.[dl(0xba)]?!0x0:typeof m[dl(0x100)]==dl(0xf4)?!!m[dl(0x100)][dl(0xc1)]():m[dl(0x100)][dl(0x114)](L=>typeof L[dl(0x112)]==dl(0xf4)&&!!L[dl(0x112)][dl(0xc1)]());}s(Y,dh(0xbd));async function q(m){const bd={m:0xfa},dj=dh;try{await v(0x1f4,void 0x0,m?{'signal':m}:void 0x0);}catch(L){throw m?.[dj(bd.m)](),L;}}s(q,dh(0xca));export{P as DEFAULT_EMPTY_HISTORY_SEED,$ as DEFAULT_EMPTY_RESPONSE_RECOVERY,Te as DEFAULT_LLM_POLICY,ce as DEFAULT_MAX_AGENT_ROUNDS,de as EmptyModelResponseError,Me as LlmRunner,pe as assertEmptyResponseRetries,ue as assertMaxAgentRounds};
1
+ const MC=m;(function(r,S){const Mb={r:0x110,S:0x10d,w:0x12f,R:0xef,p:0xfb,I:0x142,a:0xeb},MK=m,w=r();while(!![]){try{const R=parseInt(MK(0xfd))/0x1+-parseInt(MK(0x132))/0x2+-parseInt(MK(Mb.r))/0x3*(-parseInt(MK(Mb.S))/0x4)+-parseInt(MK(0x13f))/0x5+parseInt(MK(Mb.w))/0x6*(parseInt(MK(Mb.R))/0x7)+parseInt(MK(Mb.p))/0x8*(parseInt(MK(0xfe))/0x9)+parseInt(MK(Mb.I))/0xa*(parseInt(MK(Mb.a))/0xb);if(R===S)break;else w['push'](w['shift']());}catch(p){w['push'](w['shift']());}}}(T,0xbab1a));var K=Object[MC(0x11c)],l=(r,S)=>K(r,MC(0x112),{'value':S,'configurable':!0x0});import{setTimeout as e}from'node:timers/promises';import{GraphLlm as A,ModelCatalog as v}from'./graph-llm.config.js';import{LlmResponseBlockedError as B,LlmSetupError as i}from'./llm-lifecycle.js';import{AIMessage as z,HumanMessage as s,RemoveMessage as f,ToolMessage as W}from'@langchain/core/messages';import{addTokenUsage as u,emptyTokenUsage as y}from'./token-usage.js';import{goTargetIds as g,isToolResponse as o}from'./tool-response.js';import{describeStopReason as k,isRetryableStopReason as h,modelStopReason as n}from'./model-stop-reason.js';import{SessionLogWarning as t}from'./session-log.js';import{isOpenAIAuthConfig as d,openAIAuthMessageText as C}from'./openai-auth-provider.js';class de extends Error{static{l(this,MC(0x10b));}[MC(0x107)];constructor(r){const Mx={r:0x10b},Mr=MC;super('The\x20model\x20returned\x20an\x20empty\x20response\x20('+k(r)+').'),this[Mr(0x107)]=r,this[Mr(0x112)]=Mr(Mx.r);}}const ce=0x8;function T(){const TA=['zgv0ywLS','C3rHEq','yxbWBhLszwnVDMvYEq','ChjVBxb0qMXVy2TLzenVBNrLEhq','C29Tzq','CMv0CMLLCW','C2HVDwXKuMv0CNLmBg1fCNjVCG','Aw50zxjUywXiDw1HBK1LC3nHz2u','CMv0CNLxAxrOtw9KzwWOksbTyxKGyMuGCMv0DxjUzwqGB25SEsbVBMnLigLUigeGCMvJB3zLCNKGC2vXDwvUy2uU','y2XLyw51Ca','ChjVDMLKzxi','CMvZCg9UC2vFBwv0ywrHDge','ywnXDwLYzunHBMrPzgf0zq','ndK4Ew5svuXc','B2jQzwn0','y2f0zwDVCNK','mJK1ntiYnM51yKToqG','zw1WDhLFCMvZCg9UC2u','Aw52B2nHDgLVBKnVBMzPzW','Dgv4Da','zxzLCNK','u3rHCNq','B25mBg1fCNjVCG','BgvUz3rO','y2fUzgLKyxrL','BwvZC2fNzq','yxnZzxj0rw1WDhLszxnWB25ZzvjLDhjPzxm','C3rYAw5N','igfNzw50ihjVDw5KCY4','mtmZnZy3mgzxCLnLCq','y2HLy2TszxnWB25Zzq','Cg9W','mtbXwg1ZCeq','DMfSDwu','BgXTr2f0zxDHEq','Bwf4qwDLBNrsB3vUzhm','B3rOzxi','BwvZC2fNzvrLEhq','BwLU','C2fMzxr5x3jHDgLUz3m','AgfUzgXLqMXVy2TLza','teXnihjLy292zxj5ignHBM5VDcbYzxr1CM4GDg9VBc1VBMX5ihn0yxKOksWGy2XLyw51CcWGB3iGzMvLzgjHy2SU','qsb0B29SigjHDgnOihnLBgvJDgvKig1VCMuGDgHHBIbVBMuGDgvYBwLUywWGCMvZCg9UC2uGB3iGDhjHBNnPDgLVBI4','BgXTq29UzMLN','B25fBNrLCG','Axntyw1LqMfYzvrYyw5ZAxrPB24','ywrKAxrPB25HBf9RD2fYz3m','y2XLyw51Cef0DgfJAg1LBNrZ','Bw9KzwW','CgfYyw1Z','CMvMDxnHBa','C2L6zq','ywXSu2v0DgXLza','ndC3odi1n2Tizgn4Dq','y2fSBe9WDgLVBNm','CMvZCg9UC2vFCMvQzwn0zwq','A2LUza','mtCYnJL5zun1yum','Dg9VBf9JywXSCW','CMv0CNLxAxrOtw9KzwWOksbPCYbZDxbWB3j0zwqGB25SEsbIEsbVBKXSBuvYCM9YkcKU','C3rVCf9KzxrHAwXZ','zMvLzgjHy2S','zw1WDhLszxnWB25ZzvjLy292zxj5lNjLDhjPzxmGBxvZDcbIzsbHig5VBI1UzwDHDgL2zsbPBNrLz2vYoYbYzwnLAxzLzca','CMvWBgfJzufSBa','yMXVy2TLza','yxnZzxj0twf4qwDLBNrsB3vUzhm','CMvZB2X2zunVBMzPzW','zw1WDhLiAxn0B3j5u2vLza','y29UDgvUDa','nZiYmdG1nKjNqNnUsa','BwfW','nZC2m0fdAvjeEa','ou1ZuhfZDG','C3rHDgu','D2fPDezVCLjLDhj5','DgHYB3DjzKfIB3j0zwq','ChjVBxb0','yxr0zw1WDhnFzxHOyxvZDgvK','ChvZAa','BM9YBwfSAxPLuMvHC29U','CMf0Aw5NCW','CMvHC29U','BM9KzuLK','AgfZq2fUzgLKyxrLq29UDgvUDa','AgLZDg9YEq','rw1WDhLnB2rLBfjLC3bVBNnLrxjYB3i','y29TBw9Uq29UDgv4Da','ndi2odeYz0XuCwLz','zw1WDhLszxnWB25ZzvjLy292zxj5','BwvZC2fNzxm','mJDKtenkt28','B25mBg1cBg9JA2vK','BMfTzq','ywDLBNq','C2LNBMfS','zw50CMLLCW','DxnHz2u','Dg9VBc1JywXSlq','CMv0CNLFD2L0Af9TB2rLBa','yMXVy2TszwfZB24','CNvU','vgHLig1VzgvSihjLC3bVBNnLihDHCYbYzwPLy3rLzcbIEsbJAgvJA1jLC3bVBNnLkcKU','zgvMAw5LuhjVCgvYDhK','CMvZCg9UC2u','DhjPBq','AxnbCNjHEq','tgXTuNvUBMvY','C3rYAw5NAwz5'];T=function(){return TA;};return T();}function ue(r){if(!Number['isInteger'](r)||r<0x1)throw new Error('maxAgentRounds\x20must\x20be\x20a\x20positive\x20integer;\x20received\x20'+String(r)+'.');return r;}l(ue,MC(0xf7));const P=MC(0x137),$={'retries':0x2,'nudge':'Follow\x20the\x20system\x20prompt\x20and\x20respond\x20properly.\x20Use\x20the\x20required\x20tool\x20when\x20instructed.'};function pe(r){const MD={r:0xf4},MS=MC;if(!Number['isInteger'](r)||r<0x0)throw new Error(MS(MD.r)+String(r)+'.');return r;}l(pe,MC(0x13c));const Te={'emptyHistorySeed':P,'emptyResponseRecovery':$};class Ie{static{l(this,MC(0x120));}[MC(0x144)];constructor(r){const Mw=MC;this[Mw(0x144)]=r;}async[MC(0x11a)](I){const T4={r:0x114,S:0x10a,w:0x14e,R:0x141,p:0x139,I:0x104,a:0x145,c:0x127,O:0x14d,b:0x12e,x:0xf0,J:0x143,D:0x141,E:0x143,M0:0x123,M1:0x123,M2:0x14c,M3:0xf3,M4:0x117,M5:0x112,M6:0x104,M7:0x10f,M8:0x101,M9:0x11d,MM:0x13e,MT:0x151},T3={r:0xea,S:0xfc},T2={r:0x101,S:0xe7,w:0x144,R:0x113,p:0x128,I:0x116,a:0xf6,c:0x13a,O:0x12c,b:0xe8,x:0x143,J:0xf2,D:0x150,E:0xf2,M0:0x122,M1:0x143,M2:0x140,M3:0x143,M4:0x11b,M5:0x138,M6:0x103},T1={r:0x101,S:0x111},T0={r:0x118,S:0x12a,w:0x123,R:0x12b,p:0x11d,I:0x104},MX=MC,J=I[MX(0xec)]?.[MX(T4.r)];J?.[MX(0x101)]();const D=[...I[MX(T4.S)]],M0=[],M1=I['lifecycle'];if(M1?.[MX(T4.w)]){const Mi=D['at'](-0x1),Mj=Mi&&s['isInstance'](Mi)?Mi:void 0x0,MG=M1[MX(0x14e)](Mj);J?.['throwIfAborted'](),MG!==Mj&&(Mj&&(D[MX(T4.R)](),Mj['id']&&Mj['id']!==MG?.['id']&&M0[MX(0x104)](new f({'id':Mj['id']}))),MG&&(D[MX(0x104)](MG),M0[MX(0x104)](MG)));}const M2=I['emptyHistorySeed']===void 0x0?P:I[MX(0xf9)];if(D[MX(T4.p)]===0x0&&M2!==null){const Ml=G(M2);D[MX(T4.I)](Ml),M0['push'](Ml);}let M3=[],M4=y();const M5=ue(I[MX(T4.a)]??ce),M6=I[MX(0x10e)]===void 0x0?$:I[MX(0x10e)],M7=M6?pe(M6[MX(T4.c)]):0x0;let M8=0x0,M9=I[MX(T4.O)],MM=!0x1;const MT=l(()=>M1?A[MX(0xf8)](M9,{'params':{'retries':0x0}}):M9,MX(0x134)),Mm=l(()=>({'nodeId':M1[MX(0x108)],'provider':v['resolveModelDescriptor'](M9)[MX(0x12c)],'model':M9[MX(0xe6)],...J===void 0x0?{}:{'signal':J}}),MX(0x10c)),Me=l(async(Mq,Mz)=>{const MR=MX;if(J?.[MR(0x101)](),Mq===null)throw Mz;if(typeof Mq==MR(0x130)&&Mq['kind']===MR(T0.r)){if(MM)throw new Error(MR(T0.S),{'cause':Mz});M9=A['validateConfig'](Mq[MR(0xe6)]),MM=!0x0,M8=0x0;return;}const Ms=typeof Mq==MR(0x13d)?void 0x0:Mq;if(Ms&&(Ms[MR(0xee)]===MR(T0.w)||Ms[MR(T0.R)]||Ms[MR(0xf3)]!==void 0x0))throw new Error(MR(0x14b));const Mf=typeof Mq==MR(0x13d)?Mq:Ms?.[MR(T0.p)];return Ms?.['messages']&&M0[MR(T0.I)](...Ms['messages']),Mf!==void 0x0&&M0['push'](new z(Mf)),{'messages':M0,'usage':M4,'stoppedAfterTool':!0x1,...Mf===void 0x0?{}:{'response':Mf},...Ms===void 0x0?{}:{'toolResponse':Ms}};},MX(0x124)),MA=l(async(Mq,Mz)=>{const Mp=MX;J?.[Mp(T1.r)]();const Ms=await M1[Mp(T1.S)](Mq);if(J?.[Mp(0x101)](),typeof Ms=='object'&&Ms!==null&&Ms[Mp(0xee)]==='retry_with_model')throw new Error(Mp(0xf1));return await Me(Ms,new B(Mq,Mz));},MX(0x14a)),Mv=l(async()=>{const MZ=MX;let Mq=0x0;for(;;){J?.[MZ(T2.r)]();const Mz=MM?0x1:Number(M9[MZ(T2.S)]['retries'])+0x1;Mq+=0x1;let Ms;const Mf=MT();try{Ms=await this[MZ(T2.w)][MZ(T2.R)](I['systemPrompt'],D,I['tools'],Mf,I[MZ(0xec)]);}catch(Mg){if(J?.[MZ(0x101)](),!M1||Mg instanceof i)throw Mg;const Mo=he(Mg,Mm());if(Mo)return MA(Mo,Mg);const Mk=Mg instanceof Error?Mg:new Error(String(Mg)),Mh=M1[MZ(T2.p)]({...Mm(),'error':Mk,'attempt':Mq,'maxAttempts':Mz});if(J?.[MZ(0x101)](),Mh!==!0x1&&Mq<Mz){await q(J);continue;}const MY={...Mm(),'kind':'invocation_error','error':Mk,'attemptsMade':Mq,'maxAttempts':Mz,'stoppedBecause':Mh===!0x1?'retry_declined':MZ(0x103)},MV=await Me(await M1[MZ(0x138)](MY),Mk);if(MV)return MV;Mq=0x0;continue;}if(J?.['throwIfAborted'](),M4=u(M4,Ms[MZ(T2.I)]),!M1)return Ms;const MW=n(Ms['value']);if(MW[MZ(0x131)]===MZ(T2.a)||[MZ(0x146),'image_other']['includes'](L(MW[MZ(0x12c)]??'')))return MA({...Mm(),'phase':MZ(T2.c),'rawReason':MW[MZ(T2.O)]??MZ(0xe8),'reason':L(MW['provider']??MZ(T2.b)),...Array[MZ(0x11f)](MW['ratings'])?{'safetyRatings':MW[MZ(0x106)]}:{},...(Ms[MZ(T2.x)][MZ(0x12d)][MZ(T2.J)]??Ms[MZ(T2.x)][MZ(T2.D)][MZ(T2.E)]??MW[MZ(0x122)])===void 0x0?{}:{'providerDetails':Ms[MZ(0x143)][MZ(0x12d)]['stop_details']??Ms[MZ(0x143)][MZ(0x150)]['stop_details']??MW[MZ(T2.M0)]}});if(!Y(Ms[MZ(T2.M1)]))return Ms;const Mu=M1[MZ(T2.M2)](Ms[MZ(T2.M3)]);if(J?.[MZ(0x101)](),!Mu)return Ms;if(Mq<Mz){await q(J);continue;}const My=new Error(MZ(T2.M4)),MQ=await Me(await M1[MZ(T2.M5)]({...Mm(),'kind':MZ(0xed),'error':My,'attemptsMade':Mq,'maxAttempts':Mz,'stoppedBecause':MZ(T2.M6),'lastResponse':Ms[MZ(T2.M3)]}),My);if(MQ)return MQ;Mq=0x0;}},MX(T4.b));try{for(let Mq=0x0;Mq<M5;Mq+=0x1){const Mz=await Mv();if(!(MX(0x143)in Mz))return Mz;M0[MX(0x104)](Mz[MX(0x143)]),D[MX(T4.I)](Mz[MX(0x143)]);const Ms=Mz[MX(0x143)][MX(T4.x)]??[];if(Ms['length']===0x0){const Mu=ye(Mz[MX(T4.J)],M9);if(Mu[MX(0x11e)]()&&(!M1||Y(Mz[MX(0x143)])))return await MB(),{'messages':M0,'usage':M4,'response':Mu,'stoppedAfterTool':!0x1};const My=n(Mz[MX(T4.J)]),MQ=h(My)&&M6!==null&&M8<M7&&!MM&&(!M1||Mq+0x1<M5);if(t({'empty_model_response':k(My),'retried':MQ}),MQ&&M6){M8+=0x1,M0[MX(0x141)](),D[MX(T4.R)](),D[MX(0x104)](G(M6['nudge']));continue;}if(M1){M0[MX(T4.D)](),D['pop']();const Mg=new de(My),Mo=await Me(await M1['onLlmError']({...Mm(),'kind':MX(0x133),'error':Mg,'attemptsMade':M8+0x1,'maxAttempts':MM?0x1:Math[MX(0x148)](M7+0x1,M8+M5-Mq),'stoppedBecause':MX(0x103),'lastResponse':Mz[MX(T4.E)]}),Mg);if(Mo)return Mo;Mq-=0x1;continue;}return await MB(),{'messages':M0,'usage':M4,'response':Mu,'stoppedAfterTool':!0x1,'stopReason':My};}await MB();let Mf=!0x1,MW;try{for(const [Mk,Mh]of Ms[MX(0x115)]()){J?.['throwIfAborted']();const MY=await I['executeTool'](Mh);if(o(MY)){if(MY['kind']==='go'&&g(MY),MY['kind']!==MX(T4.M0)){if(MW&&MW['kind']!==MX(T4.M1)&&!fe(MW,MY))throw new Error(MX(T4.M2));MW=MY;}else MW||(MW=MY);const MV=new W({'content':MY[MX(T4.M3)]??'OK','tool_call_id':Mh['id']??MX(T4.M4)+Mq+'-'+Mk,'name':Mh[MX(T4.M5)]});M0[MX(T4.M6)](MV),D[MX(T4.I)](MV),MY[MX(0x10f)]&&(M0[MX(T4.M6)](...MY[MX(0x10f)]),D[MX(0x104)](...MY[MX(T4.M7)])),MY[MX(0x12b)]&&M3[MX(T4.M6)](MY['cleanup']),J?.[MX(T4.M8)](),Mf||=MY['kind']!==MX(T4.M0);continue;}}}catch(Mn){throw await MB(),Mn;}if(Mf){const MH=MW?.[MX(T4.M9)];if(MH){const Mt=new z(MH);M0[MX(0x104)](Mt),D[MX(0x104)](Mt);}return await MB(),{'messages':M0,'usage':M4,'stoppedAfterTool':!0x0,...MH?{'response':MH}:{},...MW?{'toolResponse':MW}:{}};}}throw await MB(),new Error('Conversation\x20exceeded\x20'+M5+MX(T4.MM));}finally{await MB();}async function MB(){const MI=MX,Md=M3;M3=[],await Promise[MI(T3.r)](Md[MI(T3.S)](MN=>MN()));}l(MB,MX(T4.MT));}}function fe(r,S){const T5={r:0xee,S:0x139,w:0xe9,R:0x13b,p:0x10f,I:0x12b},Ma=MC;if(r[Ma(T5.r)]!=='go'||S['kind']!=='go')return!0x1;const w=g(r),R=new Set(g(S));return w[Ma(T5.S)]===R[Ma(T5.w)]&&w[Ma(0x136)](p=>R['has'](p))&&r[Ma(0xff)]===void 0x0&&S[Ma(0xff)]===void 0x0&&r[Ma(0x13b)]===void 0x0&&S[Ma(T5.R)]===void 0x0&&r[Ma(0x10f)]===void 0x0&&S[Ma(T5.p)]===void 0x0&&r['cleanup']===void 0x0&&S[Ma(T5.I)]===void 0x0&&r['response']===void 0x0&&S[Ma(0x11d)]===void 0x0&&r['usage']===void 0x0&&S[Ma(0x116)]===void 0x0;}l(fe,MC(0x14f));function G(r){return new s({'content':r,'additional_kwargs':{'ezgraphInternal':!0x0}});}l(G,MC(0x129));function me(r){const T7={r:0xfa,S:0x121},MP=MC;return typeof r[MP(T7.r)]==MP(0x13d)?r['content']:JSON[MP(T7.S)](r[MP(0xfa)]);}l(me,MC(0x147));function ye(r,S){const T8={r:0xfa},MF=MC;return d(S)?C(r[MF(T8.r)]):me(r);}l(ye,'responseText');function L(r){const T9={r:0xf5},MU=MC;return r['trim']()['toLowerCase']()[MU(T9.r)]('-','_');}l(L,MC(0x105));function he(r,S){const TM={r:0x130,S:0x11e,w:0x149,R:0x102},ML=MC;if(!r||typeof r!=ML(TM.r))return null;const w=r,R=w[ML(0x119)]??w['block_reason'];if(typeof R!=ML(0x13d)||!R[ML(TM.S)]())return null;const p=w['safetyRatings']??w[ML(TM.w)];return{...S,'phase':ML(TM.R),'rawReason':R,'reason':L(R),...Array[ML(0x11f)](p)?{'safetyRatings':p}:{}};}l(he,MC(0x125));function Y(r){const TT={r:0xf0,S:0x139,w:0x126},Mc=MC;return r[Mc(TT.r)]?.[Mc(TT.S)]?!0x0:typeof r[Mc(0xfa)]=='string'?!!r['content']['trim']():r[Mc(0xfa)][Mc(TT.w)](S=>typeof S['text']=='string'&&!!S[Mc(0x135)][Mc(0x11e)]());}l(Y,MC(0x109));async function q(r){const Tm={r:0x101},MO=MC;try{await e(0x1f4,void 0x0,r?{'signal':r}:void 0x0);}catch(S){throw r?.[MO(Tm.r)](),S;}}function m(M,e){M=M-0xe6;const A=T();let v=A[M];if(m['FJKesf']===undefined){var B=function(l){const q='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let z='',s='';for(let f=0x0,W,u,y=0x0;u=l['charAt'](y++);~u&&(W=f%0x4?W*0x40+u:u,f++%0x4)?z+=String['fromCharCode'](0xff&W>>(-0x2*f&0x6)):0x0){u=q['indexOf'](u);}for(let Q=0x0,g=z['length'];Q<g;Q++){s+='%'+('00'+z['charCodeAt'](Q)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(s);};m['MmaGmy']=B,m['spNUTg']={},m['FJKesf']=!![];}const i=A[0x0],j=M+i,G=m['spNUTg'][j];return!G?(v=m['MmaGmy'](v),m['spNUTg'][j]=v):v=G,v;}l(q,MC(0x100));export{P as DEFAULT_EMPTY_HISTORY_SEED,$ as DEFAULT_EMPTY_RESPONSE_RECOVERY,Te as DEFAULT_LLM_POLICY,ce as DEFAULT_MAX_AGENT_ROUNDS,de as EmptyModelResponseError,Ie as LlmRunner,pe as assertEmptyResponseRetries,ue as assertMaxAgentRounds};
File without changes
@@ -1 +1 @@
1
- var v=Object.defineProperty;var n=(o,t)=>v(o,"name",{value:t,configurable:!0});import{AsyncLocalStorage as p}from"node:async_hooks";import{messagesStateReducer as h}from"@langchain/langgraph";import{cloneJsonObject as s,readonlyContext as y}from"./graph-context.js";const f=new p;function b(o){return f.getStore()?.owner===o}n(b,"hasNodeInvocation");async function k(o,t,e,r,i={},d=!1){const u=f.getStore();if(i.mode!==void 0&&i.mode!=="conversation"&&i.mode!=="internal")throw new Error(`Invalid node invocation mode '${String(i.mode)}'.`);if(u&&i.mode==="conversation")throw new Error("A nested node cannot take ownership of the conversation.");const l=u?"internal":i.mode??"conversation";return f.run({owner:o,nodeId:t,state:e,nodes:{},histories:{},mode:l,localStateOnly:l==="internal"&&(d||u?.localStateOnly===!0)},r)}n(k,"withNodeInvocation");function N(o){return c(o).mode}n(N,"invocationMode");function j(o){return c(o).localStateOnly}n(j,"invocationIsLocalOnly");function a(o,t){const e=c(o);if(e.localStateOnly&&t!==e.nodeId)throw new Error(`Internal LLM node '${e.nodeId}' may publish only its own node state and token usage.`)}n(a,"assertInvocationWrite");function w(o){return c(o).nodeId}n(w,"invocationNodeId");function C(o){const t=c(o);return y(t.context??t.state.context??{})}n(C,"invocationContext");function E(o,t){a(o);const e=c(o),r=s(t,"Context patch");e.context={...s(e.context??e.state.context??{}),...r}}n(E,"saveInvocationContext");function L(o,t){a(o),c(o).context=s(t)}n(L,"replaceInvocationContext");function x(o,t){const e=c(o),r=e.nodes[t];return r?{...r}:{...(e.state.nodes??{})[t]??{}}}n(x,"invocationNodeState");function A(o,t,e){a(o,t);const r=x(o,t);for(const[i,d]of Object.entries(e))d===void 0?delete r[i]:r[i]=d;c(o).nodes[t]=r}n(A,"saveInvocationNodeState");function H(o,t,e){a(o,t),c(o).nodes[t]={...e}}n(H,"replaceInvocationNodeState");function M(o,t,e){a(o);const r=c(o);r.histories[t]=[...r.histories[t]??[],...e]}n(M,"appendInvocationHistory");function m(o,t){const e=c(o);return h(e.state.histories?.[t]??[],e.histories[t]??[])}n(m,"invocationHistory");function $(o){const t=c(o),e={...t.state.nodes??{}};for(const i of Object.keys(t.nodes))e[i]=x(o,i);const r={...t.state.histories??{}};for(const i of Object.keys(t.histories))r[i]=m(o,i);return{...t.state,nodes:e,histories:r,context:s(t.context??t.state.context??{})}}n($,"invocationGraphState");function q(o){const t=c(o);return{...t.context!==void 0?{context:s(t.context)}:{},...Object.keys(t.nodes).length>0?{nodes:t.nodes}:{},...Object.keys(t.histories).length>0?{histories:t.histories}:{}}}n(q,"invocationUpdate");function c(o){const t=f.getStore();if(!t||t.owner!==o)throw new Error("Node state can only be accessed during an active graph-node invocation.");return t}n(c,"requireInvocation");export{M as appendInvocationHistory,a as assertInvocationWrite,b as hasNodeInvocation,C as invocationContext,$ as invocationGraphState,m as invocationHistory,j as invocationIsLocalOnly,N as invocationMode,w as invocationNodeId,x as invocationNodeState,q as invocationUpdate,L as replaceInvocationContext,H as replaceInvocationNodeState,E as saveInvocationContext,A as saveInvocationNodeState,k as withNodeInvocation};
1
+ var v=Object.defineProperty;var n=(o,t)=>v(o,"name",{value:t,configurable:!0});import{AsyncLocalStorage as p}from"node:async_hooks";import{messagesStateReducer as h}from"@langchain/langgraph";import{cloneJsonObject as a,readonlyContext as y}from"./graph-context.js";const u=new p;function N(o){return u.getStore()?.owner===o}n(N,"hasNodeInvocation");async function b(o,t,e,r,i={},f=!1){const s=u.getStore();if(i.mode!==void 0&&i.mode!=="conversation"&&i.mode!=="internal")throw new Error(`Invalid node invocation mode '${String(i.mode)}'.`);if(s&&i.mode==="conversation")throw new Error("A nested node cannot take ownership of the conversation.");const x=s?"internal":i.mode??"conversation";return u.run({owner:o,nodeId:t,state:e,nodes:{},histories:{},mode:x,...s?.owner===o?{priorNode:s.nodeId}:{},localStateOnly:x==="internal"&&(f||s?.localStateOnly===!0)},r)}n(b,"withNodeInvocation");function k(o){return c(o).mode}n(k,"invocationMode");function j(o){return c(o).localStateOnly}n(j,"invocationIsLocalOnly");function d(o,t){const e=c(o);if(e.localStateOnly&&t!==e.nodeId)throw new Error(`Internal LLM node '${e.nodeId}' may publish only its own node state and token usage.`)}n(d,"assertInvocationWrite");function w(o){return c(o).nodeId}n(w,"invocationNodeId");function C(o){return c(o).priorNode}n(C,"invocationPriorNode");function E(o){const t=c(o);return y(t.context??t.state.context??{})}n(E,"invocationContext");function L(o,t){d(o);const e=c(o),r=a(t,"Context patch");e.context={...a(e.context??e.state.context??{}),...r}}n(L,"saveInvocationContext");function A(o,t){d(o),c(o).context=a(t)}n(A,"replaceInvocationContext");function l(o,t){const e=c(o),r=e.nodes[t];return r?{...r}:{...(e.state.nodes??{})[t]??{}}}n(l,"invocationNodeState");function H(o,t,e){d(o,t);const r=l(o,t);for(const[i,f]of Object.entries(e))f===void 0?delete r[i]:r[i]=f;c(o).nodes[t]=r}n(H,"saveInvocationNodeState");function M(o,t,e){d(o,t),c(o).nodes[t]={...e}}n(M,"replaceInvocationNodeState");function $(o,t,e){d(o);const r=c(o);r.histories[t]=[...r.histories[t]??[],...e]}n($,"appendInvocationHistory");function m(o,t){const e=c(o);return h(e.state.histories?.[t]??[],e.histories[t]??[])}n(m,"invocationHistory");function q(o){const t=c(o),e={...t.state.nodes??{}};for(const i of Object.keys(t.nodes))e[i]=l(o,i);const r={...t.state.histories??{}};for(const i of Object.keys(t.histories))r[i]=m(o,i);return{...t.state,nodes:e,histories:r,context:a(t.context??t.state.context??{})}}n(q,"invocationGraphState");function G(o){const t=c(o);return{...t.context!==void 0?{context:a(t.context)}:{},...Object.keys(t.nodes).length>0?{nodes:t.nodes}:{},...Object.keys(t.histories).length>0?{histories:t.histories}:{}}}n(G,"invocationUpdate");function c(o){const t=u.getStore();if(!t||t.owner!==o)throw new Error("Node state can only be accessed during an active graph-node invocation.");return t}n(c,"requireInvocation");export{$ as appendInvocationHistory,d as assertInvocationWrite,N as hasNodeInvocation,E as invocationContext,q as invocationGraphState,m as invocationHistory,j as invocationIsLocalOnly,k as invocationMode,w as invocationNodeId,l as invocationNodeState,C as invocationPriorNode,G as invocationUpdate,A as replaceInvocationContext,M as replaceInvocationNodeState,L as saveInvocationContext,H as saveInvocationNodeState,b as withNodeInvocation};
@@ -1 +1 @@
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
+ const My=m;(function(r,w){const T5={r:0xad,w:0xfd,R:0x125,Z:0xa6,a:0xce,L:0xe8},Mu=m,R=r();while(!![]){try{const Z=-parseInt(Mu(T5.r))/0x1*(-parseInt(Mu(0x10b))/0x2)+-parseInt(Mu(T5.w))/0x3+-parseInt(Mu(T5.R))/0x4*(parseInt(Mu(0xdc))/0x5)+-parseInt(Mu(T5.Z))/0x6*(parseInt(Mu(0xd6))/0x7)+-parseInt(Mu(0x122))/0x8+parseInt(Mu(T5.a))/0x9*(parseInt(Mu(T5.L))/0xa)+parseInt(Mu(0x99))/0xb*(parseInt(Mu(0xa8))/0xc);if(Z===w)break;else R['push'](R['shift']());}catch(a){R['push'](R['shift']());}}}(M,0x27bd1));var J=Object[My(0xc6)],c=(w,R)=>J(w,My(0xc9),{'value':R,'configurable':!0x0});import{mapChatMessagesToStoredMessages as e,mapStoredMessagesToChatMessages as A}from'@langchain/core/messages';import{BaseGraph as B}from'../base-graph.js';function M(){const TR=['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'];M=function(){return TR;};return M();}import{ConfigManager as i}from'../config-manager.js';import{GRAPH_END_NODE as l}from'../graph-state.js';import{cloneJsonObject as z}from'../graph-context.js';import{GraphLlm as s}from'../graph-llm.config.js';import{replaceNodeStates as u}from'../node-state.js';import{createSessionLogs as o}from'../session-log.js';import{emptyTokenUsage as k,normalizeTokenUsage as Y}from'../token-usage.js';import{assertGraphSchemaVersion as n}from'../stable-id.js';import{addDecisionUsage as H,emptyDecisionUsage as t,normalizeDecisionUsage as d}from'../decision/decision-types.js';const h=0x10,g=My(0xed),q=My(0xc2),Ce='SESSION_COMPLETED';class f extends Error{static{c(this,My(0xfa));}[My(0xb4)];constructor(r,w){const MQ=My;super(w),this[MQ(0xc9)]=MQ(0xfa),this[MQ(0xb4)]=r;}}class N{static{c(this,'SessionManager');}['container'];[My(0x103)];constructor(r=new V(),w=F()){const Mg=My;this['container']=r,this[Mg(0x103)]=w;}static async[My(0xf8)](r=new i()){const T8={r:0x119,w:0x9d,R:0x12c,Z:0x119,a:0xdb,L:0xa2,O:0x110,D:0x106,E:0x12a,M0:0x112,M1:0x136,M2:0xa7,M3:0xec,M4:0xd7,M5:0xd8,M6:0xdd,M7:0xe4,M8:0x119,M9:0x11a,MM:0xbd},Mo=My,M0=r[Mo(T8.r)]('SESSION_STORE','memory')[Mo(T8.w)]()['toLowerCase'](),M1=F(r['get'](Mo(T8.R)));if(M0==='memory')return new N(new V(),M1);if(M0===Mo(0xbe)){const {SqliteSessionDocumentContainer:Mj}=await import('./sqlite-session-document.container.js');return new N(new Mj(r[Mo(T8.Z)](Mo(0xb0),Mo(0xe1))),M1);}if(M0===Mo(0xa2)||M0==='mongo'){const MG=p(r,Mo(T8.a)),Ml=p(r,'MONGODB_NAME'),Mq=p(r,Mo(0x134));if(!MG||!Ml||!Mq)throw new Error('MongoDB\x20session\x20persistence\x20requires\x20MONGODB_URL,\x20MONGODB_NAME,\x20and\x20MONGODB_COLLECTION.');const [{MongoClient:Mz},{MongoDbSessionDocumentContainer:Ms}]=await Promise[Mo(0xe9)]([import(Mo(T8.L)),import('./mongodb-session-document.container.js')]),Mf=new Mz(MG);await Mf[Mo(0x115)]();const MW=Mf['db'](Ml)['collection'](Mq);return await MW['createIndex']({'id':0x1},{'unique':!0x0}),new N(new Ms(MW,Mf),M1);}if(M0!==Mo(0x10a)&&M0!==Mo(T8.O))throw new Error('Unsupported\x20SESSION_STORE\x20\x27'+M0+Mo(0x127));const M2=p(r,'COSMO_ENDPOINT','COSMOS_ENDPOINT','COSMODB_URL'),M3=p(r,Mo(T8.D),'COSMOS_KEY'),M4=p(r,Mo(T8.E)),M5=p(r,Mo(T8.M0)),M6=p(r,Mo(0xaf)),M7=p(r,Mo(T8.M1),'COSMOS_DATABASE',Mo(T8.M2))??Mo(T8.M3),M8=p(r,'COSMO_DB_SESSION_CONTAINER_ID',Mo(0xc5),Mo(T8.M4))??Mo(0x116);if(!M2||!M3&&(!M4||!M5||!M6))throw new Error(Mo(0xb3));const [{CosmosClient:M9},{ClientSecretCredential:MM}]=await Promise['all']([import(Mo(T8.M5)),import(Mo(T8.M6))]),MT=M3?new M9({'endpoint':M2,'key':M3}):new M9({'endpoint':M2,'aadCredentials':new MM(M4,M5,M6)}),{database:Mm}=await MT[Mo(T8.M7)][Mo(0x109)]({'id':M7}),Me=Number(r[Mo(T8.M8)](Mo(0xd5),Mo(0xa0))),{container:MA}=await Mm['containers'][Mo(0x109)]({'id':M8,'partitionKey':{'paths':['/id']},...Number[Mo(0x98)](Me)&&Me>0x0?{'throughput':Me}:{}}),{resource:Mv}=await MA[Mo(0xac)](),MB=Mv?.[Mo(0x13c)]?.[Mo(T8.M9)]??[];if(!MB[Mo(0xda)](Mo(0xf5)))throw new Error('Cosmos\x20container\x20\x27'+M8+'\x27\x20must\x20use\x20partition\x20key\x20/id;\x20found\x20'+(MB[Mo(0x145)](',\x20')||'none')+'.');const {CosmosSessionDocumentContainer:Mi}=await import(Mo(T8.MM));return new N(new Mi(MA,()=>MT[Mo(0x126)]()),M1);}async[My(0x128)](r){const T9={r:0x117,w:0x101},Mk=My,w=await this[Mk(T9.r)](r);return w?.[Mk(T9.w)]===h?w:void 0x0;}async[My(0x117)](r){const TM={r:0xe7},Mh=My;try{const {resource:w}=await this[Mh(TM.r)][Mh(0x13e)](r,r)[Mh(0xac)]();return w;}catch(R){if(G(R))return;throw R;}}async[My(0x108)](r,w,R){const TT={r:0xca,w:0x117,R:0x123,Z:0x103,a:0xa1,L:0x13d,O:0xcb,D:0xe7,E:0xd4,M0:0xff,M1:0xdf,M2:0xbb,M3:0xcb},MY=My,Z=B[MY(TT.r)](R[MY(0x11d)]),L=n(R[MY(0xe2)]),O=await this[MY(TT.w)](r);O&&O[MY(0x101)]===h&&T(O,Z);const D=new Date(),E={'owner':w,'expiresAt':new Date(D[MY(TT.R)]()+this[MY(TT.Z)])[MY(0xa1)]()};if(!O){const M1=this['placeholderDocument'](r,R,Z,L,E,D[MY(TT.a)]());if(await this['container'][MY(TT.L)]({'expectedRevision':null},M1)==='conflict')throw new f(g,MY(0xbb)+r+MY(TT.O));return{'kind':MY(0xff),'document':M1,'expectedRevision':M1['revision']};}if(O[MY(0x101)]!==h){const M2=this['placeholderDocument'](r,R,Z,L,E,D['toISOString']());if(await this[MY(TT.D)][MY(0x13d)]({'expectedRevision':S(O),'replaceIncompatible':!0x0},M2)===MY(TT.E))throw new f(g,MY(0xbb)+r+'\x27\x20is\x20already\x20processing\x20a\x20turn.');return{'kind':MY(TT.M0),'document':M2,'expectedRevision':M2[MY(0xb2)]};}if(K(O[MY(0xdf)])&&O[MY(TT.M1)]?.[MY(0x135)]!==w)throw new f(g,'Session\x20\x27'+r+MY(TT.O));const M0={...O,'revision':S(O)+0x1,'turn':E};if(await this['container']['compareAndSwap']({'expectedRevision':S(O),'requireFreeLease':!0x0,'allowOwner':w},M0)==='conflict')throw new f(g,MY(TT.M2)+r+MY(TT.M3));return{'kind':'leased','document':M0,'expectedRevision':S(M0)};}async[My(0x12b)](r,w){const MV=My,R=await this['getSession'](r);if(R)return this[MV(0x102)](R,w);}[My(0x102)](r,w){const Te={r:0x129,w:0x129,R:0xa5,Z:0x13a,a:0x114,L:0x11f,O:0xfc},Mn=My,R=B[Mn(0xca)](w);T(r,R);const {graph:Z}=r;if(!Z[Mn(Te.r)])return;const L=u({},Z[Mn(Te.w)]),O=ae(Z[Mn(Te.R)]);return{'currentNode':Z[Mn(0x9f)],'config':Z[Mn(Te.Z)]??{},'context':z(Z[Mn(Te.a)]===void 0x0?{}:Z['context']),'completed':r[Mn(Te.L)]===Mn(Te.O)||Z[Mn(0x9f)]===l,'nodes':L,'tokens':Y(r[Mn(0xab)]),'decisionUsage':d(r['decisionUsage']),'histories':O,'inputConsumed':!0x0,'response':''};}async[My(0xd9)](r,R,Z,L=o(),D={}){const TA={r:0xe2,w:0xa1,R:0x129,Z:0xfc,a:0x140,L:0xe0,O:0x11c,D:0x9f,E:0x114,M0:0x10f,M1:0x135,M2:0x13d,M3:0xd4,M4:0xbb,M5:0xcb},MH=My,M0=B[MH(0xca)](Z[MH(0x11d)]),M1=n(Z[MH(TA.r)]),M2=await this[MH(0x117)](r),M3=M2?.[MH(0x101)]===h?M2:void 0x0;M3&&(T(M3,M0),j(M3,M1));const M4=new Date()[MH(TA.w)](),M5=oe(u({},R[MH(TA.R)])),{tokens:M6,histories:M7}=R,M8=this[MH(0xc4)](M2,D),M9={'version':h,'id':r,'revision':M8===null?0x0:M8+0x1,'status':R[MH(TA.Z)]?'completed':'in_progress','tokens':Y(M6),'decisionUsage':d(R[MH(TA.a)]),'errors':[...M3?.[MH(0xe0)]??[],...L[MH(TA.L)]],'warnings':[...M3?.[MH(0xcd)]??[],...L[MH(0xcd)]],'decisions':[...M3?.['decisions']??[],...L[MH(TA.O)]],'graph':{'id':M0,'schemaVersion':M1,'currentNode':R[MH(TA.D)],'config':R[MH(0x13a)],'context':z(R[MH(TA.E)]===void 0x0?{}:R[MH(TA.E)]),'histories':se(M7),'model':s[MH(TA.M0)](Z[MH(0xf3)]),'nodes':M5},...D['keepTurn']&&M3?.[MH(0xdf)]?{'turn':{'owner':M3[MH(0xdf)][MH(TA.M1)],'expiresAt':new Date(Date[MH(0x130)]()+this[MH(0x103)])[MH(0xa1)]()}}:{},'createdAt':M3?.['createdAt']??M4,'modifiedAt':M4};if(await this['container'][MH(TA.M2)](this[MH(0x12e)](M2,D,M8),M9)===MH(TA.M3))throw new f(D['owner']?q:g,D[MH(0x135)]?MH(TA.M4)+r+MH(0xa3):MH(0xbb)+r+MH(TA.M5));return M9;}async['appendLogs'](r,w,R,Z={}){const Tv={r:0xe2,w:0x128,R:0x140,Z:0xe0,a:0x11c,L:0x9f,O:0x13a,D:0xa5,E:0x114,M0:0xf3,M1:0x131,M2:0x131,M3:0x141,M4:0x13d,M5:0x12e,M6:0x135,M7:0xbb,M8:0x12d},Mt=My,L=B[Mt(0xca)](R[Mt(0x11d)]),O=n(R[Mt(Tv.r)]),D=await this[Mt(Tv.w)](r);D&&(T(D,L),j(D,O));const E=new Date()['toISOString'](),M0=this[Mt(0xc4)](D,Z),M1={'version':h,'id':r,'revision':M0===null?0x0:M0+0x1,'status':w[Mt(0xe0)]['length']>0x0?Mt(0xaa):D?.['status']??'in_progress','tokens':D?.[Mt(0xab)]??k(),'decisionUsage':w[Mt(0x11c)][Mt(0xc8)]((M2,M3)=>H(M2,M3['usage']),d(D?.[Mt(Tv.R)])),'errors':[...D?.[Mt(Tv.Z)]??[],...w[Mt(0xe0)]],'warnings':[...D?.[Mt(0xcd)]??[],...w[Mt(0xcd)]],'decisions':[...D?.[Mt(Tv.a)]??[],...w[Mt(0x11c)]],'graph':{'id':L,'schemaVersion':O,...D?{'currentNode':D['graph'][Mt(Tv.L)],'config':D['graph'][Mt(Tv.O)]}:{},'histories':D?.[Mt(0x131)][Mt(Tv.D)]??{},'context':z(D?.['graph'][Mt(Tv.E)]===void 0x0?{}:D[Mt(0x131)]['context']),'model':s['modelMetadata'](R[Mt(Tv.M0)]),...D?.[Mt(Tv.M1)][Mt(0x129)]?{'nodes':D[Mt(Tv.M2)][Mt(0x129)]}:{}},'createdAt':D?.[Mt(Tv.M3)]??E,'modifiedAt':E};if(await this['container'][Mt(Tv.M4)](this[Mt(Tv.M5)](D,Z,M0),M1)==='conflict'){if(Z[Mt(Tv.M6)]){console['warn'](Mt(Tv.M7)+r+Mt(0xf0)+w[Mt(Tv.Z)]['length']+'\x20error(s)\x20and\x20'+w['warnings'][Mt(Tv.M8)]+Mt(0xe3));return;}throw new f(g,'Session\x20\x27'+r+Mt(0xcb));}return M1;}async['endFailedTurn'](r,w,R,Z,a){const TB={r:0xe0,w:0xcd,R:0x9c},Md=My;if(Z&&(Z[Md(TB.r)][Md(0x12d)]>0x0||Z[Md(TB.w)][Md(0x12d)]>0x0||Z[Md(0x11c)][Md(0x12d)]>0x0)){await this[Md(0xee)](r,Z,R,{'owner':w,...a!==void 0x0?{'expectedRevision':a}:{}});return;}await this[Md(TB.R)](r,w,a);}async[My(0x9c)](r,w,R){const Ti={r:0x135,w:0x13d},MN=My,Z=await this['getSession'](r);if(!Z||Z['turn']?.[MN(Ti.r)]!==w)return;const L=R??S(Z),{turn:O,...D}=Z,E={...D,'modifiedAt':new Date()['toISOString']()};await this[MN(0xe7)][MN(Ti.w)]({'expectedRevision':L,'requireOwner':w},E);}async[My(0x120)](r){const Tj={r:0xe7},MK=My;try{await this[MK(Tj.r)][MK(0x13e)](r,r)[MK(0x138)]();}catch(w){if(!G(w))throw w;}}async['persistMigratedSession'](r,w={}){const TG={r:0x100,w:0xc3,R:0x131,Z:0xeb,a:0x128,L:0xdf,O:0x114,D:0x141,E:0x141,M0:0xbb,M1:0xb8},MC=My;if(r['version']!==h)throw new Error(MC(TG.r)+r[MC(0x101)]+MC(TG.w)+h+'.');B[MC(0xca)](r[MC(0x131)]['id']),n(r[MC(TG.R)][MC(TG.Z)]);const R=await this[MC(TG.a)](r['id']),Z=w[MC(0x113)]??S(R||r),L=R?.[MC(0xdf)]??r[MC(TG.L)],O={...r,'graph':{...r['graph'],'context':z(r[MC(TG.R)][MC(TG.O)]===void 0x0?{}:r['graph']['context'])},'revision':Z,'createdAt':R?.[MC(TG.D)]??r[MC(TG.E)],'modifiedAt':R?.[MC(0xf6)]??r[MC(0xf6)],...L?{'turn':L}:{}};if(await this['container'][MC(0x13d)]({'expectedRevision':Z,...w[MC(0x135)]?{'requireOwner':w[MC(0x135)]}:{'requireFreeLease':!0x0}},O)===MC(0xd4))throw new f(w[MC(0x135)]?q:g,MC(TG.M0)+r['id']+MC(TG.M1));}async[My(0x13f)](){const Mr=My;await this['container'][Mr(0x13f)]?.();}[My(0xd3)](r,w,R,Z,L,O){const Tq={r:0x144},MS=My;return{'version':h,'id':r,'revision':0x0,'status':MS(Tq.r),'tokens':k(),'decisionUsage':t(),'errors':[],'warnings':[],'decisions':[],'graph':{'id':R,'schemaVersion':Z,'histories':{},'context':{},'model':s[MS(0x10f)](w[MS(0xf3)])},'turn':L,'createdAt':O,'modifiedAt':O};}['commitExpectedRevision'](r,w){const Tz={r:0x113},Mw=My;return w[Mw(Tz.r)]!==void 0x0?w[Mw(Tz.r)]:r?S(r):null;}[My(0x12e)](r,w,R){const Ts={r:0x135,w:0x101},MX=My;return w[MX(Ts.r)]?{'expectedRevision':R,'requireOwner':w['owner']}:r&&r[MX(Ts.w)]!==h?{'expectedRevision':R,'replaceIncompatible':!0x0}:{'expectedRevision':R,'requireFreeLease':!0x0};}}function p(w,...R){const MR=My;for(const Z of R){const a=w[MR(0x119)](Z);if(a)return a;}}c(p,My(0x107));function T(w,R){const TW={r:0x131,w:0xbb,R:0xfe,Z:0x13b},Mp=My;if(w[Mp(TW.r)]['id']!==R)throw new Error(Mp(TW.w)+w['id']+Mp(TW.R)+w['graph']['id']+'\x27,\x20not\x20\x27'+R+Mp(TW.Z));}c(T,My(0xf4));function j(w,R){const Tu={r:0x131,w:0xeb,R:0xfb,Z:0xb6,a:0x131,L:0xeb,O:0xea,D:0xae},MZ=My;if(w[MZ(Tu.r)][MZ(Tu.w)]!==R)throw new Error('Session\x20\x27'+w['id']+MZ(Tu.R)+w['graph']['id']+MZ(Tu.Z)+w[MZ(Tu.a)][MZ(Tu.L)]+MZ(Tu.O)+R+MZ(Tu.D));}c(j,My(0xde));function oe(w){const TQ={r:0x11e},Ty={r:0x121},MI=My;return Object[MI(0xc0)](Object[MI(0xd2)](w)[MI(TQ.r)](([R,Z])=>{const Ma=MI;if(!Z||typeof Z!=Ma(Ty.r))return[R,Z];const {toolTrace:a,...L}=Z;return[R,L];}));}c(oe,My(0x132));function ie(w){const Tg={r:0xef,w:0x12d,R:0xe5,Z:0xd1,a:0xcf,L:0xf7,O:0x111,D:0x12d,E:0xf9,M0:0x12d,M1:0xf9};return w['map'](R=>{const MP=m,Z={...R[MP(0xb1)]},a=R['type']==='ai'&&Array[MP(Tg.r)](Z[MP(0x111)])&&Z[MP(0x111)][MP(Tg.w)]>0x0?ce(Z[MP(0xe5)]):void 0x0,L=b(Z[MP(Tg.R)])&&Z[MP(0xe5)][MP(Tg.Z)]===!0x0;return delete Z[MP(0xe5)],(a||L)&&(Z['additional_kwargs']={...a?{'originalTextContentBlock':a}:{},...L?{'ezgraphInternal':!0x0}:{}}),delete Z[MP(Tg.a)],delete Z[MP(Tg.L)],R[MP(0xbc)]==='ai'&&(Array[MP(0xef)](Z[MP(Tg.O)])&&Z[MP(0x111)][MP(Tg.D)]===0x0&&delete Z[MP(Tg.O)],Array['isArray'](Z[MP(Tg.E)])&&Z[MP(0xf9)][MP(Tg.M0)]===0x0&&delete Z[MP(Tg.M1)]),{...R,'data':Z};});}c(ie,My(0x9a));function se(w){const Tk={r:0xd2,w:0x11e},MF=My;return Object[MF(0xc0)](Object[MF(Tk.r)](w)[MF(Tk.w)](([R,Z])=>[R,ie(e(Z))]));}c(se,My(0xa4));function ae(w={}){const Th={r:0xc0},MU=My;return Object[MU(Th.r)](Object[MU(0xd2)](w)[MU(0x11e)](([R,Z])=>[R,A(Z)]));}c(ae,My(0xa9));function ce(w){const TY={r:0x9e,w:0x133,R:0x9e},ML=My;if(!b(w))return;const R=w[ML(0x10d)];if(!(!b(R)||typeof R[ML(TY.r)]!=ML(0xc7)))return{...typeof R[ML(TY.w)]==ML(0xc7)?{'text':R['text']}:{},'thoughtSignature':R[ML(TY.R)],...R[ML(0xba)]===!0x0?{'thought':!0x0}:{}};}c(ce,My(0xf1));function b(w){const Mc=My;return w!==null&&typeof w==Mc(0x121)&&!Array['isArray'](w);}c(b,My(0x104));class V{static{c(this,My(0xb9));}[My(0x105)]=new Map();get[My(0x9b)](){const MO=My;return this[MO(0x105)][MO(0x9b)];}[My(0xbf)]={'upsert':c(async e=>{const TH={r:0x105},Mb=My,t=e;return this[Mb(TH.r)]['set'](t['id'],structuredClone(t)),{};},My(0x124))};async[My(0x13d)](r,w){const Tt={r:0x105},Mx=My,R=this[Mx(Tt.r)][Mx(0x119)](w['id']);return de(R,r)?(this['documents'][Mx(0x10e)](w['id'],structuredClone(w)),'ok'):'conflict';}[My(0x13e)](r,w){const TN={r:0x119,w:0xc1,R:0x11b},Td={r:0x105},ME=My;return{'read':c(async()=>{const MJ=m,R=this[MJ(Td.r)][MJ(0x119)](r);if(!R||R['id']!==w)throw Object[MJ(0xc1)](new Error('Not\x20found'),{'code':0x194});return{'resource':structuredClone(R)};},'read'),'delete':c(async()=>{const MD=m,R=this[MD(0x105)][MD(TN.r)](r);if(!R||R['id']!==w)throw Object[MD(TN.w)](new Error(MD(TN.R)),{'code':0x194});return this[MD(0x105)]['delete'](r),{};},ME(0x138))};}}function G(w){const T0=My;if(!w||typeof w!=T0(0x121))return!0x1;const R=w;return R[T0(0xb4)]===0x194||R[T0(0x12f)]===0x194;}c(G,My(0x139));function F(w=process.env.SESSION_TURN_LEASE_MS){const Tr={r:0x118},T1=My,R=Number(w??T1(Tr.r));return Number[T1(0x98)](R)&&R>0x0?R:0xea60;}function m(T,e){T=T-0x98;const A=M();let v=A[T];if(m['zZPXch']===undefined){var B=function(l){const q='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let z='',s='';for(let f=0x0,W,u,y=0x0;u=l['charAt'](y++);~u&&(W=f%0x4?W*0x40+u:u,f++%0x4)?z+=String['fromCharCode'](0xff&W>>(-0x2*f&0x6)):0x0){u=q['indexOf'](u);}for(let Q=0x0,g=z['length'];Q<g;Q++){s+='%'+('00'+z['charCodeAt'](Q)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(s);};m['quHhSI']=B,m['AkYZlF']={},m['zZPXch']=!![];}const i=A[0x0],j=T+i,G=m['AkYZlF'][j];return!G?(v=m['quHhSI'](v),m['AkYZlF'][j]=v):v=G,v;}c(F,My(0xe6));function S(w){const TS={r:0xb2},T2=My;return w?.[T2(TS.r)]??0x0;}c(S,My(0x142));function K(w,R=Date['now']()){const Tw={r:0x135,w:0xcc,R:0xb7},T3=My;if(!w?.[T3(Tw.r)]||!w[T3(0xb7)])return!0x1;const Z=Date[T3(Tw.w)](w[T3(Tw.R)]);return Number['isFinite'](Z)&&Z>R;}c(K,My(0xb5));function de(w,R,Z=Date[My(0x130)]()){const TX={r:0x113,w:0xdf,R:0xf2,Z:0xd0},T4=My;return R[T4(0x10c)]?w!==void 0x0&&w['version']!==h:R[T4(TX.r)]===null?w===void 0x0:!(!w||S(w)!==R[T4(0x113)]||R['requireOwner']&&w[T4(TX.w)]?.[T4(0x135)]!==R[T4(TX.R)]||R[T4(TX.Z)]&&K(w[T4(0xdf)],Z)&&w['turn']?.[T4(0x135)]!==R[T4(0x143)]);}c(de,My(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=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
+ const r=T;(function(f,W){const M9={f:0x1de,W:0x1ff,y:0x215,Q:0x200,o:0x1e6,k:0x1d7,h:0x21d,Y:0x20a},C=T,y=f();while(!![]){try{const Q=parseInt(C(M9.f))/0x1*(-parseInt(C(M9.W))/0x2)+parseInt(C(M9.y))/0x3+parseInt(C(M9.Q))/0x4*(parseInt(C(0x1f2))/0x5)+parseInt(C(M9.o))/0x6+parseInt(C(M9.k))/0x7+-parseInt(C(M9.h))/0x8*(-parseInt(C(M9.Y))/0x9)+-parseInt(C(0x20c))/0xa;if(Q===W)break;else y['push'](y['shift']());}catch(o){y['push'](y['shift']());}}}(M,0x339cf));var m=Object[r(0x1ed)],p=(f,W)=>m(f,'name',{'value':W,'configurable':!0x0});import{END as e,isCommand as A,START as v,StateGraph as B}from'@langchain/langgraph';import{GRAPH_NODE_CLASS as j,GraphNode as q}from'./graph-node.js';import{GRAPH_END_NODE as z}from'./graph-state.js';import{stableClassId as s}from'./stable-id.js';class x{static{p(this,'StateGraphExt');}['createGraphNode'];[r(0x1e5)];[r(0x1fa)];[r(0x1f0)]=new Set();[r(0x21f)]=new Map();['turnNodeIds'];[r(0x1ec)]=new Set();[r(0x1e2)]=new Map();constructor(f,W,y=z){const MM={f:0x1e5},S=r;this[S(0x21c)]=W,this[S(MM.f)]=y,this['graph']=new B(f);}['addNode'](f){const MT={f:0x21c,W:0x21c,y:0x21f,Q:0x1f0},X=r;if(!w(f))throw new Error('StateGraphExt\x20nodes\x20must\x20be\x20added\x20as\x20GraphNode\x20classes:\x20graph.addNode(MyNode).');if(!this[X(MT.f)])throw new Error('This\x20graph\x20has\x20no\x20GraphNode\x20factory.');const W=this[X(MT.W)](f),y=s(f,X(0x1dd));if(W['id']!==y)throw new Error(X(0x1db)+y+'\x27\x20returned\x20\x27'+W['id']+'\x27.');return this[X(MT.y)]['set'](y,f),this[X(0x21a)](W,[...this[X(MT.Q)],y,e]);}['nodes'](...W){const Me={f:0x1fc,W:0x21b,y:0x220,Q:0x217,o:0x21a},Mm={f:0x21e},R=r;if(!this[R(0x21c)])throw new Error(R(0x201));const y=W[R(0x209)](h=>{const Z=R;if(!w(h))throw new Error(Z(Mm.f));return s(h,Z(0x1dd));}),Q=y[R(Me.f)]((h,Y)=>y[R(0x204)](h)!==Y||this['addedNodeIds']['has'](h));if(Q)throw new Error(R(Me.W)+Q+R(0x1ef));const k=[...this[R(0x1f0)],...y,e];for(const [h,Y]of W[R(Me.y)]()){const V=this[R(0x21c)](Y),n=y[h];if(V['id']!==n)throw new Error(R(0x1db)+n+'\x27\x20returned\x20\x27'+V['id']+'\x27.');this[R(0x21f)][R(Me.Q)](n,Y),this[R(Me.o)](V,k);}return this;}[r(0x1d8)](...f){const a=r;return this[a(0x1f6)](...f),this['registerTurns'](...f),this;}[r(0x211)](...f){const Mv={f:0x1ee,W:0x21b,y:0x1f0},P=r;for(const W of f){if(!w(W))throw new Error(P(0x203));const y=s(W,P(0x1dd));if(this[P(0x1fe)]?.[P(Mv.f)](y))throw new Error(P(Mv.W)+y+'\x27\x20is\x20already\x20a\x20user-turn\x20entry.');this[P(Mv.y)]['has'](y)||this[P(0x1f6)](W),this['workerNodeIds'][P(0x206)](y);}return this;}['addEdge'](f,W){const MB={f:0x1fa,W:0x1d6},F=r,y=Array[F(0x1e3)](f)?f:[f];for(const k of y)this[F(0x1eb)](k);this[F(0x1d9)](W);const Q=y[F(0x209)](c);return this[F(MB.f)][F(0x208)](Q[F(MB.W)]===0x1?Q[0x0]:Q,c(W)),this;}['branch'](f,W){const Mi={f:0x1da},U=r,y=s(f,U(0x1dd)),Q=this[U(0x1e2)]['get'](y);if(!Q)throw new Error(U(0x21b)+y+U(0x1fb));return this[U(0x20f)](f,Q[U(0x20b)][U(Mi.f)](Q),W),this;}['branchBy'](W,y){const MG={f:0x1dd,W:0x1ee,y:0x1fc,Q:0x20f,o:0x209,k:0x1f8},Mj={f:0x210,W:0x1f1,y:0x1f3},L=r,Q=s(W,L(MG.f));if(!this[L(0x1e2)][L(MG.W)](Q))throw new Error('Graph\x20node\x20\x27'+Q+L(0x1fb));if(y['cases'][L(0x1d6)]===0x0)throw new Error(L(0x218));const k=y['cases']['map'](({when:n})=>this[L(0x214)](n)),h=k[L(MG.y)]((n,H)=>k['indexOf'](n)!==H);if(h)throw new Error(L(0x1e4)+h+'\x27.');const Y=k['map']((n,H)=>L(0x216)+H),V=L(0x1f8);return this[L(MG.Q)](W,n=>{const O=L,H=n[O(Mj.f)];if(typeof H!=O(Mj.W))throw new Error(O(0x21b)+Q+O(Mj.y));const K=k[O(0x204)](H);return K===-0x1?V:Y[K];},{...Object['fromEntries'](y[L(0x202)][L(MG.o)](({routeTo:n},H)=>[Y[H],n])),[V]:y[L(MG.k)]}),this;}[r(0x1e7)](...f){const Ml={f:0x20e,W:0x1f5,y:0x1e8,Q:0x209,o:0x1fe},J=r,W=f['map'](y=>s(y,J(0x1dd)));for(const y of W)if(this[J(0x1ec)][J(0x1ee)](y))throw new Error(J(0x21b)+y+'\x27\x20is\x20already\x20registered\x20as\x20internal\x20work.');if(f[J(Ml.f)](Q=>s(Q,'graph\x20node')===this[J(0x1e5)]))throw new Error(J(Ml.W)+this[J(0x1e5)]+J(Ml.y));return this[J(0x20f)](v,Q=>Q[J(0x210)],{...Object['fromEntries'](f[J(Ml.Q)](Q=>[s(Q,'graph\x20node'),Q])),[this['endNode']]:e}),this[J(Ml.o)]=new Set(W),this;}[r(0x212)](){const Mq={f:0x1e2,W:0x1df,y:0x1fa},D=r;for(const f of this[D(Mq.f)]['values']())f[D(Mq.W)]?.(this[D(0x1f7)](f['id']));return this[D(Mq.y)]['compile']();}[r(0x1f7)](f){const Mz={f:0x1ec,W:0x1e0,y:0x219},M0=r;return{'mode':this[M0(Mz.f)][M0(0x1ee)](f)||this[M0(0x1fe)]!==void 0x0&&!this[M0(0x1fe)]['has'](f)?M0(Mz.W):M0(Mz.y)};}[r(0x20f)](f,W,y){const Ms={f:0x1fa,W:0x1f4,y:0x220},M1=r;this[M1(0x1eb)](f);for(const Q of Object['values'](y))this['assertTarget'](Q);this[M1(Ms.f)][M1(Ms.W)](c(f),W,Object[M1(0x1f9)](Object[M1(Ms.y)](y)['map'](([k,h])=>[k,c(h)])));}[r(0x21a)](f,W){const MW={f:0x1f0,W:0x21b,y:0x1ef,Q:0x217},Mf={f:0x1f7,W:0x1d9},M2=r;if(this[M2(MW.f)][M2(0x1ee)](f['id']))throw new Error(M2(MW.W)+f['id']+M2(MW.y));return this[M2(0x1fa)][M2(0x205)](f['id'],async y=>{const M3=M2,Q=await f['invoke'](y,this[M3(Mf.f)](f['id']));if(A(Q)){const k=Array[M3(0x1e3)](Q[M3(0x20d)])?Q[M3(0x20d)]:Q[M3(0x20d)]===void 0x0?[]:[Q[M3(0x20d)]];for(const h of k)typeof h=='string'&&this[M3(Mf.W)](h);}return Q;},{'ends':[...new Set(W)]}),this[M2(0x1f0)][M2(0x206)](f['id']),this[M2(0x1e2)][M2(MW.Q)](f['id'],f),this;}[r(0x1eb)](f){const Mu={f:0x1e1},M4=r;c(f)!==v&&this[M4(0x207)](f,M4(Mu.f));}['assertTarget'](f){const My={f:0x207,W:0x1fd},M5=r;c(f)!==e&&this[M5(My.f)](f,M5(My.W));}[r(0x207)](f,W){const MQ={f:0x1f0},M6=r,y=c(f);if(!this[M6(MQ.f)][M6(0x1ee)](y))throw new Error(M6(0x213)+W+'\x20\x27'+y+M6(0x1fb));}[r(0x214)](f){const Mg={f:0x1f1,W:0x1ee,y:0x1dc,Q:0x1e9,o:0x1e5,k:0x1ea,h:0x1e5},M7=r;if(typeof f!=M7(Mg.f)){if(!w(f))throw new Error('branchBy()\x20selectors\x20must\x20be\x20GraphNode\x20classes\x20or\x20the\x20configured\x20terminal\x20state.');const W=s(f,'graph\x20node');if(!this[M7(0x1f0)][M7(Mg.W)](W))throw new Error(M7(Mg.y)+W+M7(Mg.Q));return W;}if(f!==this[M7(Mg.o)]&&!this['addedNodeIds'][M7(0x1ee)](f))throw new Error(M7(Mg.y)+f+M7(Mg.k)+this[M7(Mg.h)]+'\x27.');return f;}}function T(m,e){m=m-0x1d6;const A=M();let v=A[m];if(T['eVpIkl']===undefined){var B=function(l){const q='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let z='',s='';for(let f=0x0,W,u,y=0x0;u=l['charAt'](y++);~u&&(W=f%0x4?W*0x40+u:u,f++%0x4)?z+=String['fromCharCode'](0xff&W>>(-0x2*f&0x6)):0x0){u=q['indexOf'](u);}for(let Q=0x0,g=z['length'];Q<g;Q++){s+='%'+('00'+z['charCodeAt'](Q)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(s);};T['aoVAHY']=B,T['txctJP']={},T['eVpIkl']=!![];}const i=A[0x0],j=m+i,G=T['txctJP'][j];return!G?(v=T['aoVAHY'](v),T['txctJP'][j]=v):v=G,v;}function w(f){const W=f;return typeof f=='function'&&f!==null&&W[j]===!0x0&&W['prototype']instanceof q;}function M(){const Mh=['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'];M=function(){return Mh;};return M();}p(w,'isGraphNodeClass');function c(f){const Mk={f:0x1f1},M8=r;return typeof f==M8(Mk.f)?f:s(f,M8(0x1dd));}p(c,'endpointId');export{x as StateGraphExt};
@@ -1 +1 @@
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};
1
+ var u=Object.defineProperty;var r=(e,n)=>u(e,"name",{value:n,configurable:!0});import{stableClassId as f}from"./stable-id.js";function l(e){return Object.freeze({kind:"taskResult",value:e})}r(l,"taskResult");function c(e){if(arguments.length!==1)throw new Error("go() requires exactly one target; use fanout() for two or more targets.");const n={kind:"go",target:e};return s(n),o(n)}r(c,"go");function h(e,n,...i){if(arguments.length<2)throw new Error("fanout() requires at least two targets.");const t={kind:"go",targets:Object.freeze([e,n,...i])};return s(t),o(t)}r(h,"fanout");function s(e){if(e.kind!=="go")throw new Error("Expected a go() or fanout() 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("fanout() requires at least two targets and cannot use target, withState(), or withMessage().");const n=e.targets??(e.target?[e.target]:[]);if(n.length===0)throw new Error("go() requires a target.");const i=n.map(t=>{if(!t||typeof t.id!="function")throw new Error(`${e.targets===void 0?"go":"fanout"}() requires registered GraphNode class targets.`);return f(t,"graph node")});if(new Set(i).size!==i.length)throw new Error("fanout() requires distinct graph node IDs.");return i}r(s,"goTargetIds");function w(e="OK"){return o({kind:"stay",feedback:e})}r(w,"stay");function p(e){return o({kind:"direct",response:a(e)})}r(p,"direct");function k(e,n){return o({kind:"directTo",target:e,response:a(n)})}r(k,"directTo");function b(e){return o({kind:"finish",response:a(e)})}r(b,"finish");function m(e){return!e||typeof e!="object"||!("kind"in e)?!1:["go","stay","direct","directTo","finish","taskResult"].includes(String(e.kind))}r(m,"isToolResponse");function a(e){return typeof e=="string"?e:JSON.stringify(e)}r(a,"responseContent");function o(e){const n={...e},i=r(t=>o({...e,...t}),"derive");return Object.defineProperties(n,{...e.targets===void 0?{withState:{enumerable:!1,value:r(t=>i({state:t}),"value")},withMessage:{enumerable:!1,value:r(t=>i({message:t}),"value")}}:{},withMessages:{enumerable:!1,value:r(t=>i({messages:t}),"value")},withCleanup:{enumerable:!1,value:r(t=>i({cleanup:t}),"value")},withToolFeedback:{enumerable:!1,value:r(t=>i({feedback:t}),"value")},withUsage:{enumerable:!1,value:r(t=>i({usage:t}),"value")}}),n}r(o,"createBuilder");export{p as direct,k as directTo,h as fanout,b as finish,c as go,s as goTargetIds,m as isToolResponse,w 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 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
+ import{GraphContextChannel as r}from"./framework/graph-context.js";import{BaseGraph as s}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 x,assertLlmTimeoutMs as L}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,fanout as F,go as Y,isToolResponse as k,stay as H,taskResult as B}from"./framework/tool-response.js";import{GraphStateSupport as V}from"./framework/graph-state-support.js";import{GRAPH_END_NODE as w,createGraphStateAnnotation as z}from"./framework/graph-state.js";import{GraphRegistry as J}from"./framework/graph-registry.js";import{GraphEngine as X}from"./framework/graph-engine.js";import{ConfigManager as K}from"./framework/config-manager.js";import{StateGraphExt as $}from"./framework/state-graph-ext.js";import{TerminateSessionNode as oe}from"./framework/terminate-session.node.js";import{SessionLogError as te,SessionLogDecision as se,SessionLogWarning as ie,createSessionLogs as ne,drainSessionLogs as ae,restoreSessionLogs as me,withSessionLogs as pe}from"./framework/session-log.js";import{ProviderFileManager as Ee}from"./framework/llm-file.js";import{SessionManager as xe,SessionTurnError as Le,SESSION_BUSY as le,SESSION_CONFLICT as de,SESSION_COMPLETED as ge,SESSION_DOCUMENT_VERSION as De,MemorySessionDocumentContainer as Te,sessionTurnLeaseMs as Re,sessionRevision as _e,isLiveSessionTurn as ce,matchesSessionWritePredicate as Ce}from"./framework/persistence/session-manager.js";import{MongoDbSessionDocumentContainer as ue}from"./framework/persistence/mongodb-session-document.container.js";import{SqliteSessionDocumentContainer as Ne}from"./framework/persistence/sqlite-session-document.container.js";import{CosmosSessionDocumentContainer as Ie}from"./framework/persistence/cosmos-session-document.container.js";import{mergeNodeStates as Pe,replaceNodeStates as he}from"./framework/node-state.js";import{LangChainLlmGateway as ye}from"./framework/langchain-llm-gateway.js";import{ModelProvider as Fe}from"./framework/model-provider.js";import{langChainModelInitialization as ke}from"./framework/langchain-provider.adapter.js";import{GRAPH_LLM_PROVIDERS as Be,GRAPH_LLM_FAMILIES as be,GRAPH_LLM_CAPABILITIES as Ve,BUILT_IN_MODEL_CATALOG as We,GraphLlm as we,ModelCatalog as ze,ModelProviderRegistry as qe}from"./framework/graph-llm.config.js";import{addTokenUsage as Qe,emptyTokenUsage as Xe,modelExecution as je,normalizeTokenUsage as Ke,tokenUsageFromMessage as Ze}from"./framework/token-usage.js";import{DecisionNode as eo}from"./framework/decision/decision-node.js";import{DecisionRunner as ro}from"./framework/decision/decision-runner.js";import{DecisionProvider as so,DecisionProviderRegistry as io}from"./framework/decision/decision-provider.js";import{TypeSafeClassifierAdapter as ao}from"./framework/decision/typesafe-provider.js";import{DecisionConfigurationError as po,DecisionTimeoutError as So,DecisionValidationError as Eo,DEFAULT_DECISION_OPTIONS as fo,addDecisionUsage as xo,decisionUsage as Lo,emptyDecisionUsage as lo,normalizeDecisionUsage as go,resolveDecisionOptions as Do}from"./framework/decision/decision-types.js";import{assertJsonCompatible as Ro,validateDecisionQuestions as _o,validateDecisionResult as co}from"./framework/decision/decision-validation.js";import{retryWithModel as Mo,LlmResponseBlockedError as uo,LlmSetupError as Ao}from"./framework/llm-lifecycle.js";export{We as BUILT_IN_MODEL_CATALOG,s as BaseGraph,K as ConfigManager,Ie as CosmosSessionDocumentContainer,fo 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,po as DecisionConfigurationError,eo as DecisionNode,so as DecisionProvider,io as DecisionProviderRegistry,ro as DecisionRunner,So as DecisionTimeoutError,Eo as DecisionValidationError,_ as EmptyModelResponseError,w as GRAPH_END_NODE,Ve as GRAPH_LLM_CAPABILITIES,be as GRAPH_LLM_FAMILIES,Be as GRAPH_LLM_PROVIDERS,n as GRAPH_NODE_CLASS,r as GraphContextChannel,X as GraphEngine,we as GraphLlm,a as GraphNode,m as GraphNodeRuntime,J as GraphRegistry,V as GraphStateSupport,x as LLM_GATEWAY_FACTORY,ye as LangChainLlmGateway,E as LlmNode,uo as LlmResponseBlockedError,d as LlmRunner,Ao as LlmSetupError,Te as MemorySessionDocumentContainer,ze as ModelCatalog,Fe as ModelProvider,qe as ModelProviderRegistry,ue as MongoDbSessionDocumentContainer,Ee as ProviderFileManager,le as SESSION_BUSY,ge as SESSION_COMPLETED,de as SESSION_CONFLICT,De as SESSION_DOCUMENT_VERSION,se as SessionLogDecision,te as SessionLogError,ie as SessionLogWarning,xe as SessionManager,Le as SessionTurnError,Ne as SqliteSessionDocumentContainer,$ as StateGraphExt,oe as TerminateSessionNode,p as Tool,ao as TypeSafeClassifierAdapter,xo as addDecisionUsage,Qe as addTokenUsage,c as assertEmptyResponseRetries,Ro as assertJsonCompatible,L as assertLlmTimeoutMs,C as assertMaxAgentRounds,z as createGraphStateAnnotation,ne as createSessionLogs,I as currentTurnContext,G as currentTurnSignal,Lo as decisionUsage,u as describeStopReason,U as direct,y as directTo,ae as drainSessionLogs,lo as emptyDecisionUsage,Xe as emptyTokenUsage,F as fanout,v as finish,Y as go,ce as isLiveSessionTurn,A as isRetryableStopReason,k as isToolResponse,ke as langChainModelInitialization,Ce as matchesSessionWritePredicate,Pe as mergeNodeStates,je as modelExecution,N as modelStopReason,go as normalizeDecisionUsage,Ke as normalizeTokenUsage,he as replaceNodeStates,Do as resolveDecisionOptions,me as restoreSessionLogs,Mo as retryWithModel,_e as sessionRevision,Re as sessionTurnLeaseMs,H as stay,B as taskResult,Ze as tokenUsageFromMessage,_o as validateDecisionQuestions,co as validateDecisionResult,pe as withSessionLogs,P as withTurnContext};
@@ -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
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";
4
+ export { LlmNode, type LlmNodeRunResult, type LlmNodeResponse, type MessageTypes, } 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
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, taskResult, type FanOutResponseBuilder, type TaskResult, type ToolResponse, type ToolResponseBuilder, type ToolResponseKind, } from "../../src/framework/tool-response.js";
9
+ export { direct, directTo, finish, fanout, 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";
@@ -119,6 +119,7 @@ export declare class GraphNodeRuntime<State extends GraphState> extends GraphSta
119
119
  };
120
120
  withInvocation<Result>(nodeId: string, state: State, run: () => Promise<Result>, options?: NodeInvocationOptions, managedLlm?: boolean): Promise<Result>;
121
121
  invocationMode(): "conversation" | "internal";
122
+ priorNode(): string | undefined;
122
123
  isLocalOnlyInvocation(): boolean;
123
124
  nodeState(nodeName: string): Record<string, unknown>;
124
125
  hasInvocation(): boolean;
@@ -1,6 +1,7 @@
1
1
  import type { AIMessage } from "@langchain/core/messages";
2
2
  import { type GraphLlmConfig } from "./graph-llm.config.js";
3
3
  import type { ToolResponse } from "./tool-response.js";
4
+ import type { MessageTypes } from "./message-types.js";
4
5
  export type LlmAttemptErrorContext = Readonly<{
5
6
  nodeId: string;
6
7
  provider: string;
@@ -53,6 +54,7 @@ export declare class LlmSetupError extends Error {
53
54
  }
54
55
  export type LlmLifecycle = Readonly<{
55
56
  nodeId: string;
57
+ onEnter?(message: MessageTypes | null | undefined): MessageTypes | null | undefined;
56
58
  checkResponse(response: string | object): boolean;
57
59
  onLlmBlocked(context: LlmBlockedContext): Promise<LlmBlockedResponse | null>;
58
60
  shouldRetryLlmError(context: LlmAttemptErrorContext): boolean | undefined;
@@ -5,10 +5,14 @@ import { type GraphNodeResult, type NodeInvocationOptions } from "./graph-node.j
5
5
  import { LlmNodeBase } from "./llm-node-base.js";
6
6
  import type { GraphState } from "./graph-state.js";
7
7
  import { type ToolResponse } from "./tool-response.js";
8
- import type { LlmErrorResponse } from "./llm-lifecycle.js";
8
+ import type { LlmErrorResponse, LlmLifecycle } from "./llm-lifecycle.js";
9
+ import type { MessageTypes } from "./message-types.js";
10
+ export type { MessageTypes } from "./message-types.js";
9
11
  export type LlmNodeRunResult = LlmRunResult;
10
12
  export type LlmNodeResponse = void | string | ToolResponse;
11
13
  export declare abstract class LlmNode<State extends GraphState, LocalState extends object = Record<string, unknown>, Output = string> extends LlmNodeBase<State, LocalState> {
14
+ protected onEnter(langMessage: MessageTypes | null | undefined, _priorNode?: string): MessageTypes | null | undefined;
15
+ protected llmLifecycle(): LlmLifecycle;
12
16
  protected onResponse(_response: string | Output, _state: State): LlmNodeResponse | Promise<LlmNodeResponse>;
13
17
  protected managesLlmExecution(): boolean;
14
18
  private isInternal;
@@ -0,0 +1,2 @@
1
+ import type { BaseMessage } from "@langchain/core/messages";
2
+ export type MessageTypes = BaseMessage;
@@ -10,6 +10,7 @@ export declare function invocationMode(owner: object): "conversation" | "interna
10
10
  export declare function invocationIsLocalOnly(owner: object): boolean;
11
11
  export declare function assertInvocationWrite(owner: object, nodeId?: string): void;
12
12
  export declare function invocationNodeId(owner: object): string;
13
+ export declare function invocationPriorNode(owner: object): string | undefined;
13
14
  export declare function invocationContext(owner: object): DeepReadonly<JsonObject>;
14
15
  export declare function saveInvocationContext(owner: object, patch: JsonObject): void;
15
16
  export declare function replaceInvocationContext(owner: object, context: JsonObject): void;
@@ -35,7 +35,7 @@ export type FanOutResponseBuilder = ToolResponse & {
35
35
  withUsage(usage: TokenUsage): FanOutResponseBuilder;
36
36
  };
37
37
  export declare function go<NodeClass extends GraphNodeTarget>(target: NodeClass): ToolResponseBuilder<NodeClass>;
38
- export declare function go(first: GraphNodeTarget, second: GraphNodeTarget, ...rest: readonly GraphNodeTarget[]): FanOutResponseBuilder;
38
+ export declare function fanout(first: GraphNodeTarget, second: GraphNodeTarget, ...rest: readonly GraphNodeTarget[]): FanOutResponseBuilder;
39
39
  export declare function goTargetIds(response: ToolResponse): readonly string[];
40
40
  export declare function stay(feedback?: string): ToolResponseBuilder<GraphNodeTarget>;
41
41
  export declare function direct(content: string | object): ToolResponseBuilder<GraphNodeTarget>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@picoflow/ezgraph",
3
- "version": "0.0.15",
3
+ "version": "0.0.17",
4
4
  "description": "Provider-neutral graph primitives built on LangGraph and LangChain.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",