@picoflow/ezgraph 0.0.16 → 0.0.18
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 +99 -11
- package/dist/framework/graph-engine.js +1 -1
- package/dist/framework/graph-node.js +1 -1
- package/dist/framework/langchain-provider.adapter.js +1 -1
- package/dist/framework/llm-node.js +1 -1
- package/dist/framework/llm-runner.js +1 -1
- package/dist/framework/persistence/session-manager.js +1 -1
- package/dist/framework/state-graph-ext.js +1 -1
- package/dist/framework/tool-response.js +1 -1
- package/dist/index.js +1 -1
- package/dist/types/npmlib/src/index.d.ts +2 -2
- package/dist/types/src/framework/graph-node.d.ts +2 -0
- package/dist/types/src/framework/llm-lifecycle.d.ts +1 -1
- package/dist/types/src/framework/llm-node.d.ts +34 -2
- package/dist/types/src/framework/llm-runner.d.ts +1 -1
- package/dist/types/src/framework/tool-response.d.ts +1 -1
- package/package.json +1 -1
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
|
-
| `
|
|
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. |
|
|
@@ -235,9 +235,10 @@ but they do not automatically exercise the managed LLM lifecycle.
|
|
|
235
235
|
|
|
236
236
|
## Supply input on node entry
|
|
237
237
|
|
|
238
|
-
The protected
|
|
239
|
-
|
|
240
|
-
|
|
238
|
+
The protected `onEnter(langMessage, priorNode?)` hook accepts a synchronous
|
|
239
|
+
result or a Promise. EZGraph awaits it once at the start of each `LlmNode`
|
|
240
|
+
agent loop, before constructing the prompt, applying the empty-history seed,
|
|
241
|
+
and calling the model. Model/tool rounds, retries, and alternate-model recovery
|
|
241
242
|
reuse its prepared input. A later node invocation calls it again, including a
|
|
242
243
|
new user turn on the same node.
|
|
243
244
|
|
|
@@ -276,8 +277,91 @@ class BatchNode extends LlmNode<MyGraphState, { rows?: unknown[]; result?: strin
|
|
|
276
277
|
|
|
277
278
|
Populate `BatchNode`'s local `rows` state before invoking the graph or node.
|
|
278
279
|
This supplies batch data even when no external user message is present.
|
|
279
|
-
|
|
280
|
-
|
|
280
|
+
For asynchronous preprocessing, override the same hook with `async`:
|
|
281
|
+
|
|
282
|
+
```ts
|
|
283
|
+
// Application-provided lookup or preprocessing function.
|
|
284
|
+
declare function loadBatchFacts(rows: unknown[]): Promise<string>;
|
|
285
|
+
|
|
286
|
+
class PreparedBatchNode extends LlmNode<MyGraphState, { rows?: unknown[]; facts?: string }> {
|
|
287
|
+
getPrompt() { return `Process the supplied batch using: ${this.getState().facts ?? ""}`; }
|
|
288
|
+
|
|
289
|
+
protected override async onEnter(
|
|
290
|
+
langMessage: MessageTypes | null | undefined,
|
|
291
|
+
_priorNode?: string,
|
|
292
|
+
): Promise<MessageTypes | null | undefined> {
|
|
293
|
+
const rows = this.getState().rows;
|
|
294
|
+
if (rows === undefined) return langMessage;
|
|
295
|
+
const facts = await loadBatchFacts(rows);
|
|
296
|
+
this.saveState({ facts });
|
|
297
|
+
return new HumanMessage(JSON.stringify(rows));
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
```
|
|
301
|
+
|
|
302
|
+
Facts saved during entry are available to `getPrompt(state)` and `getState()`
|
|
303
|
+
when the prompt is built. Keep invocation data in node state or graph context;
|
|
304
|
+
node instances are shared across sessions. A thrown error or rejected Promise
|
|
305
|
+
propagates as an application error without model recovery. Cancellation is
|
|
306
|
+
checked before and after awaiting the hook; preprocessing that needs to stop
|
|
307
|
+
its own I/O should honor `currentTurnSignal()`.
|
|
308
|
+
|
|
309
|
+
## Finalize successful work with onExit
|
|
310
|
+
|
|
311
|
+
The protected `onExit(context)` hook accepts `void` or `Promise<void>`. EZGraph
|
|
312
|
+
awaits it once per successful `LlmNode` invocation, after `onResponse()` where
|
|
313
|
+
applicable and after JSON completion validation or repair, before publishing
|
|
314
|
+
the node update or starting downstream nodes. A reply that keeps the same node
|
|
315
|
+
active also invokes it; it is not restricted to graph transitions.
|
|
316
|
+
|
|
317
|
+
The exported `LlmNodeExitContext<State, Output>` contains:
|
|
318
|
+
|
|
319
|
+
| Field | Meaning |
|
|
320
|
+
| --- | --- |
|
|
321
|
+
| `nodeId` | The executing node's stable ID. |
|
|
322
|
+
| `mode` | `"conversation"` or `"internal"`. |
|
|
323
|
+
| `state` | Current materialized invocation state, including staged entry, tool, and response writes. |
|
|
324
|
+
| `outcome` | Final semantic outcome after response handling and completion validation. |
|
|
325
|
+
| `usage` | Accumulated token usage for this invocation, not the session total. |
|
|
326
|
+
|
|
327
|
+
The exported `LlmNodeExitOutcome<Output>` is a discriminated union:
|
|
328
|
+
|
|
329
|
+
| `outcome.kind` | Additional fields |
|
|
330
|
+
| --- | --- |
|
|
331
|
+
| `reply` | `response: string`; ordinary text and `direct()` normalize to this outcome. |
|
|
332
|
+
| `taskResult` | `value: Output`; preserves the final typed task value. |
|
|
333
|
+
| `go` | `targets: readonly [string]`. |
|
|
334
|
+
| `fanout` | `targets: readonly [string, string, ...string[]]`. |
|
|
335
|
+
| `directTo` | `targets: readonly [string]` and `response: string`. |
|
|
336
|
+
| `finish` | `response: string`. |
|
|
337
|
+
|
|
338
|
+
Targets are resolved node IDs. `stay()` continues the loop and does not trigger
|
|
339
|
+
exit. Tool-selected routing and completion trigger exit even though they skip
|
|
340
|
+
`onResponse()`. Retries, rejected candidates, and intermediate tool rounds do
|
|
341
|
+
not trigger exit. Handled model failures do; unhandled errors and cancellation
|
|
342
|
+
skip it. Cancellation is checked before and after awaiting exit. An exit-hook
|
|
343
|
+
error propagates without model recovery and the invocation update is not published.
|
|
344
|
+
|
|
345
|
+
Inside a batch worker, use the hook to stage final facts:
|
|
346
|
+
|
|
347
|
+
```ts
|
|
348
|
+
import type { LlmNodeExitContext } from "@picoflow/ezgraph";
|
|
349
|
+
|
|
350
|
+
protected override async onExit(
|
|
351
|
+
context: LlmNodeExitContext<MyGraphState, BatchResult>,
|
|
352
|
+
): Promise<void> {
|
|
353
|
+
if (context.outcome.kind === "taskResult") {
|
|
354
|
+
const summary = await summarizeBatch(context.outcome.value);
|
|
355
|
+
this.saveState({ summary });
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
```
|
|
359
|
+
|
|
360
|
+
The hook's return value does not change output or routing. Use `saveState()`
|
|
361
|
+
for final local writes and the existing response hooks/builders to select an
|
|
362
|
+
outcome. Internal workers retain their existing restriction to their own node
|
|
363
|
+
state and token usage. State remains staged during exit; this is not a session
|
|
364
|
+
persistence notification.
|
|
281
365
|
|
|
282
366
|
## Handle model failures
|
|
283
367
|
|
|
@@ -328,7 +412,7 @@ class SupportNode extends LlmNode<SupportState> {
|
|
|
328
412
|
}
|
|
329
413
|
```
|
|
330
414
|
|
|
331
|
-
Recovery hooks may return fixed text or `direct()`, `directTo()`, `go()`, or
|
|
415
|
+
Recovery hooks may return fixed text or `direct()`, `directTo()`, `go()`, `fanout()`, or
|
|
332
416
|
`finish()`. `stay()`, tool feedback, and cleanup remain tool-only.
|
|
333
417
|
`onLlmError()` may also return `retryWithModel(ModelCatalog.model(...))` to
|
|
334
418
|
select one temporary alternate model. The alternate stays active through tool
|
|
@@ -459,19 +543,23 @@ ordinary conversational handoffs; fixed worker edges remain ordinary LangGraph
|
|
|
459
543
|
edges. Register `TerminateSessionNode` and connect it to `END` when a graph
|
|
460
544
|
contains conversational nodes.
|
|
461
545
|
|
|
462
|
-
For conditional fan-out, return
|
|
463
|
-
|
|
546
|
+
`go(TargetNode)` accepts exactly one target. For conditional fan-out, return
|
|
547
|
+
`fanout(Child1Node, Child2Node)` with two or more distinct registered targets
|
|
548
|
+
from the successful tool handler, `onResponse()`, or deterministic `GraphNode.run()`.
|
|
549
|
+
Save parent-owned
|
|
464
550
|
data before returning. A multi-target builder has no `withState()` or
|
|
465
551
|
`withMessage()` because there is no single destination for those effects;
|
|
466
552
|
`withUsage()`, tool feedback, tool cleanup, and current-history messages still work.
|
|
467
|
-
|
|
553
|
+
`go(TargetNode).withState(...)` initializes that one target.
|
|
468
554
|
|
|
469
555
|
Register the children as internal work (leave them out of `registerTurns()`, or
|
|
470
556
|
use `workers()` in a fixed-entry graph), and declare a barrier for the next stage:
|
|
471
557
|
|
|
472
558
|
```ts
|
|
559
|
+
import { fanout } from "@picoflow/ezgraph";
|
|
560
|
+
|
|
473
561
|
// In the parent, only after accepting and saving the input:
|
|
474
|
-
return
|
|
562
|
+
return fanout(Child1Node, Child2Node);
|
|
475
563
|
|
|
476
564
|
// In buildGraph(), after registering all nodes:
|
|
477
565
|
graph.addEdge([Child1Node, Child2Node], NextConversationNode);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const
|
|
1
|
+
const PK=e;(function(i,c){const PM={i:0xe0,c:0xdb,l:0xc1,I:0xb4},PC=e,l=i();while(!![]){try{const I=parseInt(PC(0xa0))/0x1+parseInt(PC(PM.i))/0x2+parseInt(PC(PM.c))/0x3+parseInt(PC(PM.l))/0x4+-parseInt(PC(0xce))/0x5+parseInt(PC(0xd6))/0x6+parseInt(PC(PM.I))/0x7*(-parseInt(PC(0xa3))/0x8);if(I===c)break;else l['push'](l['shift']());}catch(a){l['push'](l['shift']());}}}(b,0x8258d));var P=Object['defineProperty'],y=(i,c)=>P(i,PK(0xc5),{'value':c,'configurable':!0x0});import{HumanMessage as X}from'@langchain/core/messages';function b(){const PI=['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'];b=function(){return PI;};return b();}function e(P,z){P=P-0x9d;const B=b();let N=B[P];if(e['pjzpNm']===undefined){var w=function(W){const C='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let K='',H='';for(let u=0x0,x,Z,o=0x0;Z=W['charAt'](o++);~Z&&(x=u%0x4?x*0x40+Z:Z,u++%0x4)?K+=String['fromCharCode'](0xff&x>>(-0x2*u&0x6)):0x0){Z=C['indexOf'](Z);}for(let q=0x0,O=K['length'];q<O;q++){H+='%'+('00'+K['charCodeAt'](q)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(H);};e['bOrkSb']=w,e['wJSDQu']={},e['pjzpNm']=!![];}const X=B[0x0],y=P+X,F=e['wJSDQu'][y];return!F?(N=e['bOrkSb'](N),e['wJSDQu'][y]=N):N=F,N;}import{randomUUID as W}from'node:crypto';import{GraphRegistry as K,registeredGraphId as u,registeredGraphSchemaVersion as Z}from'./graph-registry.js';import{LangChainLlmGateway as o}from'./langchain-llm-gateway.js';import{SessionLogError as Q,createSessionLogs as D,drainSessionLogs as r,restoreSessionLogs as J,withSessionLogs as T}from'./session-log.js';import{withTurnContext as S}from'./turn-context.js';import{SessionManager as d,SessionTurnError as G,SESSION_BUSY as f,SESSION_COMPLETED as p}from'./persistence/session-manager.js';import{parseJsonObjectResponse as s}from'./json-response.js';import{DecisionProviderRegistry as h}from'./decision/decision-provider.js';class M{static{y(this,'GraphEngine');}[PK(0xe1)]=new K();[PK(0x9f)];[PK(0xa4)];['decisionProviders'];[PK(0xe2)]=new Set();constructor(i={}){const PU={i:0xc8,c:0xcf,l:0xcf,I:0xa4,a:0xde},PH=PK;this[PH(0x9f)]=i[PH(PU.i)]??new d(),this[PH(PU.c)]=new h(i[PH(PU.l)]??[]),this['llmGatewayFactory']=i[PH(PU.I)]??(c=>new o(c,i[PH(0xd5)]?{'providers':i[PH(0xd5)]}:{})),this[PH(PU.a)](i['graphs']??[]);}static async[PK(0xca)](i={}){const PJ={i:0xc0,c:0xc0,l:0xd5,I:0xcf},Pu=PK,c=await d[Pu(0xa2)](i['configManager']);return new M({'sessionManager':c,...i['llmGatewayFactory']?{'llmGatewayFactory':i[Pu(0xa4)]}:{},...i[Pu(PJ.i)]?{'graphs':i[Pu(PJ.c)]}:{},...i[Pu(PJ.l)]?{'providers':i[Pu(0xd5)]}:{},...i[Pu(PJ.I)]?{'decisionProviders':i['decisionProviders']}:{}});}[PK(0xde)](i){const PS={i:0xbe},PT={i:0x9e,c:0xd0},Px=PK,c=i[Px(PS.i)](l=>{const PZ=Px,I=new l(this[PZ(0xa4)](l[PZ(PT.i)]()[PZ(0xe3)]));return I[PZ(PT.c)]?.(a=>this['decisionProviders'][PZ(0xe7)](a)),I[PZ(0xba)],I;});return this[Px(0xe1)]['register'](c),this;}[PK(0xaa)](){return this['registry']['names']();}[PK(0xe5)](i){const PG={i:0x9f},Po=PK;return this[Po(PG.i)]['getSession'](w(i));}async[PK(0xb9)](i){const Pp={i:0xcc,c:0xdd,l:0xab,I:0xa5,a:0xa6,g:0xe2,Y:0xb5},Pf={i:0x9f,c:0xac,l:0xb7,I:0xba,a:0xa9,g:0xa9,Y:0xa8,v:0xeb,m:0xa8,L:0xea,n:0x9f,t:0xc4,P0:0xc2,P1:0xba,P2:0xba,P3:0xd7,P4:0xb1,P5:0xbc,P6:0xa1,P7:0xda,P8:0x9d,P9:0xe9,PP:0xdf},Pk=PK,c=this[Pk(0xe1)][Pk(0xb0)](i[Pk(0xe4)]);if(!c)return{'status':0x190,'body':{'success':!0x1,'completed':!0x0,'message':'Graph\x20\x27'+(i['graphName']??'')+Pk(Pp.i)}};const a=typeof i[Pk(Pp.c)]==Pk(0xc3)?i['userMessage'][Pk(Pp.l)]():void 0x0;if(c[Pk(0xd8)]!==!0x1&&!a)return{'status':0x190,'body':{'success':!0x1,'completed':!0x1,'message':Pk(0xc7)}};let Y;try{Y=i[Pk(0xd2)]?w(i['sessionId']):W();}catch(P2){return{'status':0x190,'body':{'success':!0x1,'completed':!0x1,'message':P2 instanceof Error?P2[Pk(0xaf)]:String(P2)}};}const v=u(c),L=Z(c),n={'graphId':v,'graphSchemaVersion':L,'llmConfig':c['llmConfig']},P0=D();if(this['inflightSessions']['has'](Y))return this[Pk(0xd4)](Y,f,Pk(Pp.I)+Y+Pk(Pp.a));this[Pk(Pp.g)]['add'](Y);const P1={'session':Y,...i[Pk(0xb5)]===void 0x0?{}:{'signal':i[Pk(Pp.Y)]}};return this['withTurnScope'](P1,P0,async()=>{const Pq=Pk;let P3=!0x0,P4,P5;try{const P6=W(),P7=await this[Pq(Pf.i)][Pq(Pf.c)](Y,P6,n);P4=P6,P5=P7[Pq(0xd9)];const P8=P7[Pq(Pf.l)][Pq(Pf.I)][Pq(0xc9)]?P7[Pq(0xb7)]:void 0x0;P8&&P8[Pq(0xba)][Pq(0xa8)]!==L&&(P3=!0x1);const P9=P8?c[Pq(Pf.a)]?await c[Pq(Pf.g)](P8):P8:void 0x0;if(P9&&P9[Pq(0xba)][Pq(Pf.Y)]!==L)throw new Error(Pq(Pf.v)+v+Pq(0xbd)+P9[Pq(0xba)][Pq(Pf.m)]+Pq(Pf.L)+L+'.');P8&&P9&&P9['graph'][Pq(0xa8)]!==P8[Pq(0xba)][Pq(Pf.Y)]&&await this[Pq(Pf.i)]['persistMigratedSession'](P9,{'owner':P6,'expectedRevision':P5}),P3=!0x0;const PP=P9?this[Pq(Pf.i)][Pq(0xbf)](P9,v):void 0x0;if(PP?.[Pq(0xa1)])return await this[Pq(Pf.n)][Pq(0xc6)](Y,P6,P5),this[Pq(0xae)](c[Pq(Pf.t)],Y);const Pz={...a?c[Pq(0xcd)](PP,new X(a)):PP??{},'config':{...PP?.[Pq(Pf.P0)]??{},...i[Pq(0xc2)]??{}},'inputConsumed':!0x1,'response':''};let PB;if(c['graph'][Pq(0xd3)]){const Pb=await c[Pq(Pf.P1)][Pq(0xd3)](Pz,{'streamMode':'values'});for await(const Pe of Pb){if(PB=Pe,PB[Pq(0xe6)]!==!0x0)continue;const PN=r(P0);let Pw;try{Pw=await this['sessions']['saveState'](Y,PB,n,PN,{'owner':P6,...P5===void 0x0?{}:{'expectedRevision':P5},'keepTurn':!0x0});}catch(PX){throw J(P0,PN),PX;}P5=Pw['revision'];}}else PB=await c[Pq(Pf.P2)][Pq(Pf.P3)](Pz);if(!PB)throw new Error('Graph\x20\x27'+v+Pq(Pf.P4));return await this[Pq(Pf.i)][Pq(0xb2)](Y,PB,n,P0,{'owner':P6,...P5===void 0x0?{}:{'expectedRevision':P5}}),c[Pq(0xc4)]===Pq(Pf.P5)?this[Pq(0xdc)](Y,PB[Pq(0xcb)]):this['chatResult'](Y,PB[Pq(0xcb)],PB[Pq(Pf.P6)]);}catch(Py){if(Py instanceof G)return this['conflictResult'](Y,Py[Pq(Pf.P7)],Py['message']);const PF=Py instanceof Error?Py['message']:String(Py);if(Q({'chat_service':PF}),P4)try{await this[Pq(0x9f)]['endFailedTurn'](Y,P4,n,P3?P0:void 0x0,P5);}catch(PW){console[Pq(Pf.P8)](Pq(Pf.P9),PW);}return{'status':0x190,'session':Y,'body':{'success':!0x1,'completed':!0x1,'message':PF,'session':Y}};}finally{this['inflightSessions'][Pq(Pf.PP)](Y);}});}[PK(0xe8)](i,c,l){return S(i,()=>T(c,l));}async[PK(0xb3)](i){const PV={i:0xbb},PO=PK;if(!i)return{'status':0x190,'body':{'success':!0x1,'message':PO(PV.i)}};try{const c=w(i);return await this['sessions'][PO(0xb3)](c),{'status':0xc8,'body':{'success':!0x0,'session':c}};}catch(l){return{'status':0x190,'body':{'success':!0x1,'session':i,'message':l instanceof Error?l[PO(0xaf)]:String(l)}};}}async[PK(0xad)](){const PQ=PK;await this[PQ(0x9f)][PQ(0xad)]();}['conflictResult'](i,c,l){return{'status':0x199,'session':i,'body':{'success':!0x1,'completed':!0x1,'message':l,'code':c,'session':i}};}[PK(0xae)](i,c){const Pi={i:0xd4},PD=PK,l='This\x20conversation\x20is\x20already\x20complete.';return i===PD(0xbc)?this[PD(Pi.i)](c,p,l):this['chatResult'](c,l,!0x0);}[PK(0xdc)](i,c){const Pj=PK;return{'status':0xc8,'session':i,'contentType':Pj(0xb6),'body':s(c)};}[PK(0xb8)](i,c,l){return{'status':0xc8,'session':i,'body':{'success':!0x0,'completed':l,'message':c,'bot':c,'session':i}};}}function w(i){const PR={i:0xd1},Pr=PK,c=i[Pr(0xab)]();if(!/^[A-Za-z0-9_-]{1,128}$/[Pr(PR.i)](c))throw new Error('SESSION_ID\x20must\x20be\x201-128\x20letters,\x20numbers,\x20underscores,\x20or\x20hyphens.');return c;}y(w,PK(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,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 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 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
|
+
var L=Object.defineProperty;var a=(r,e)=>L(r,"name",{value:e,configurable:!0});import"reflect-metadata";import{AIMessage as c,HumanMessage as O}from"@langchain/core/messages";import{Command as p,END as y,isCommand as m}from"@langchain/langgraph";import{GraphLlm as f}from"./graph-llm.config.js";import{GraphStateSupport as I}from"./graph-state-support.js";import{LlmRunner as b,DEFAULT_LLM_POLICY as H,DEFAULT_MAX_AGENT_ROUNDS as k,EmptyModelResponseError as x}from"./llm-runner.js";import{currentTurnSignal as v}from"./turn-context.js";import{combineGraphNodeUpdates as S}from"./node-outcome.js";import{parseJsonObjectResponse as E}from"./json-response.js";import{stableClassId as w}from"./stable-id.js";import{SessionLogWarning as $}from"./session-log.js";import{goTargetIds as A,isToolResponse as R,stay as M}from"./tool-response.js";import{invocationGraphState as P,hasNodeInvocation as G,invocationHistory as _,invocationNodeState as j,invocationUpdate as U,appendInvocationHistory as D,replaceInvocationNodeState as J,invocationContext as q,saveInvocationContext as z,replaceInvocationContext as F,saveInvocationNodeState as W,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"),C=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(C,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(C,o,e)}}a(we,"Tool");class T{static{a(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=w(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),s=oe(t.args);if(!s.ok)return this.rejectToolCall(n.toolName,s.error);const d=i.schema.safeParse(s.value);if(!d.success)return this.rejectToolCall(n.toolName,ne(d.error));const h=d.data,l=this[n.methodName];if(!l)throw new Error(`Tool '${n.toolName}' is decorated on missing method '${String(n.methodName)}'.`);const u=await l.call(this,h,o,e);if(R(u))return u;throw new Error(`Tool '${n.toolName}' on '${this.id}' must return a ToolResponse.`)}rejectToolCall(e,t){return $({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 x(e.reason)}invoke=a((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 d=this.runtime.resolveLlmConfig(this.getLlmConfig()),h=ee(d,this.runtime.resolveLlmConfig()),l=(e.nodes??{})[this.id];(!h||l?.model!==void 0)&&this.runtime.saveNode(this.id,{model:h?void 0:f.modelMetadata(d)})}let s=S(i,this.runtime.stagedUpdate());return this.validatePublication(s,m(o)),v()?.throwIfAborted(),await this.finalizeNodeResult(o,s),v()?.throwIfAborted(),s=S(i,this.runtime.stagedUpdate()),this.validatePublication(s,m(o)),m(o)?new p({update:s,...o.goto===void 0?{}:{goto:o.goto},...o.graph===void 0?{}:{graph:o.graph},...o.resume===void 0?{}:{resume:o.resume}}):s},t,this.managesLlmExecution()),"invoke");finalizeNodeResult(e,t){}validatePublication(e,t){if(this.runtime.isLocalOnlyInvocation()&&(t||Object.keys(e).some(o=>o!=="nodes"&&o!=="tokens")||Object.keys(e.nodes??{}).some(o=>o!==this.id)))throw new Error(`Internal LLM node '${this.id}' may publish only its own node state and token usage.`);this.validateNodeResult(e,t)}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 b(this.llmGateway).run({...o===void 0?{}:{lifecycle:o},systemPrompt:a(()=>(e=this.runtime.hasInvocation()?this.runtime.graphState():e,this.getPrompt(e)),"systemPrompt"),history:this.llmHistory(e),tools:this.obtainTools(),llmConfig:this.llmConfig(),executeTool:a(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(!R(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]??w(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=N(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=N(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=N(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 E(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)&&E(n.response??""),n}}toolHandlers(){let e=Object.getPrototypeOf(this);const t=[];for(;e&&e!==T.prototype;){const n=Reflect.getOwnMetadata(C,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))}a(ee,"sameLlmConfig");class Ce extends I{static{a(this,"GraphNodeRuntime")}defaultLlmConfig;historySpaces;responseMode;maxAgentRounds;llmPolicy;decisionOptions;decisionErrorHandler;llmLifecycle;assertContextChannel;tools=new Map;constructor(e,t,o={},n="chat",i=k,s=H,d={},h,l,u){super(e),this.defaultLlmConfig=t,this.historySpaces=o,this.responseMode=n,this.maxAgentRounds=i,this.llmPolicy=s,this.decisionOptions=d,this.decisionErrorHandler=h,this.llmLifecycle=l,this.assertContextChannel=u}llmCallOptions(){const{llmTimeoutMs:e}=this.llmPolicy,t=v();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=>O.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 G(this)}graphState(){return P(this)}getContext(){return q(this)}saveContext(e){g(this),this.assertContextChannel?.(),z(this,e)}stageContext(e){g(this),this.assertContextChannel?.(),F(this,e)}appendHistory(e,t){D(this,e,t)}invocationHistory(e){return _(this,e)}stagedUpdate(){return U(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 W(this,e,t),{nodes:{[e]:this.nodeState(e)}}}saveNodeState(e,t){this.saveNode(w(e,"graph node"),t)}removeNode(e,...t){return this.saveNode(e,Object.fromEntries(t.map(o=>[o,void 0])))}}function te(r){if(!m(r))return r;if(Array.isArray(r.update))throw new Error("GraphNode Command updates must be state objects.");return r.update??{}}a(te,"commandUpdate");function N(r,e){if(!e.response?.trim())throw new Error(`Graph node '${r}' selected ${e.kind}() without a response.`);return e.response}a(N,"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)}`}}}a(oe,"coerceToolArgs");function ne(r){return r.issues.map(e=>e.path.length>0?`${e.path.join(".")}: ${e.message}`:e.message).join("; ")}a(ne,"formatToolArgumentError");export{Z as GRAPH_NODE_CLASS,Ee as GRAPH_NODE_LOCAL_STATE,T as GraphNode,Ce as GraphNodeRuntime,we as Tool};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
function
|
|
1
|
+
function P(){const U=['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'];P=function(){return U;};return P();}const O=z;(function(X,y){const j={X:0x17a,y:0x16b,F:0x178,W:0x166},q=z,F=X();while(!![]){try{const W=parseInt(q(0x173))/0x1+-parseInt(q(0x17c))/0x2+-parseInt(q(j.X))/0x3+-parseInt(q(j.y))/0x4+parseInt(q(j.F))/0x5+parseInt(q(j.W))/0x6*(parseInt(q(0x174))/0x7)+parseInt(q(0x16c))/0x8*(parseInt(q(0x175))/0x9);if(W===y)break;else F['push'](F['shift']());}catch(K){F['push'](F['shift']());}}}(P,0xb9e87));var s=Object['defineProperty'],l=(X,y)=>s(X,O(0x171),{'value':y,'configurable':!0x0});import{GraphLlm as B,ModelCatalog as b}from'./graph-llm.config.js';function z(B,b){B=B-0x165;const e=P();let N=e[B];if(z['uapbbH']===undefined){var w=function(W){const C='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let K='',H='';for(let u=0x0,x,Z,o=0x0;Z=W['charAt'](o++);~Z&&(x=u%0x4?x*0x40+Z:Z,u++%0x4)?K+=String['fromCharCode'](0xff&x>>(-0x2*u&0x6)):0x0){Z=C['indexOf'](Z);}for(let q=0x0,O=K['length'];q<O;q++){H+='%'+('00'+K['charCodeAt'](q)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(H);};z['ujitrk']=w,z['tGlJwF']={},z['uapbbH']=!![];}const X=e[0x0],y=B+X,F=z['tGlJwF'][y];return!F?(N=z['ujitrk'](N),z['tGlJwF'][y]=N):N=F,N;}import{modelProviderAdapter as e}from'./model-provider.js';import{OPENAI_AUTH_PROVIDER as N,initializeOpenAIAuthProvider as w}from'./openai-auth-provider.js';function C(X,y=[]){const r={X:0x17e,y:0x17d,F:0x165,W:0x167,K:0x16d,H:0x16e,x:0x170,Z:0x16a,o:0x16e},Q=O,F=B[Q(r.X)](X),W=b[Q(r.y)](F),K={};for(const [x,Z]of Object[Q(0x17f)](F[Q(r.F)])){const k=W[Q(r.W)][x];k!==null&&u(K,k??x,Z);}if(W[Q(0x16e)]===N)return w(W[Q(r.K)],K);const H=e(W[Q(r.H)],y)??W[Q(r.x)];return H?H[Q(r.Z)]({'provider':W[Q(r.o)],'model':W[Q(r.K)],'options':K}):{'model':W[Q(r.K)],'options':{'modelProvider':W[Q(0x16e)],...K}};}l(C,O(0x169));function u(X,y,F){const M={X:0x16f,y:0x17b,F:0x176,W:0x179},D=O,W=y[D(0x177)]('.');let K=X;for(const x of W[D(0x172)](0x0,-0x1)){const Z=K[x];if(Z===void 0x0){const k={};K[x]=k,K=k;}else{if(typeof Z==D(M.X)&&Z!==null&&!Array[D(M.y)](Z))K=Z;else throw new Error(D(M.F)+y+'\x27\x20has\x20a\x20conflicting\x20path.');}}const H=W['at'](-0x1);if(!H)throw new Error(D(M.W));K[H]=F;}l(u,O(0x168));export{C as langChainModelInitialization};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var
|
|
1
|
+
var v=Object.defineProperty;var h=(a,e)=>v(a,"name",{value:e,configurable:!0});var L=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},u=function(a,e){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(a,e)};import{AIMessage as p,HumanMessage as R}from"@langchain/core/messages";import{Command as d,END as m}from"@langchain/langgraph";import{Tool as E}from"./graph-node.js";import{LlmNodeBase as O}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 T,goTargetIds as g,isToolResponse as w}from"./tool-response.js";import{addTokenUsage as f,emptyTokenUsage as _}from"./token-usage.js";import{currentTurnSignal as k}from"./turn-context.js";class x extends O{static{h(this,"LlmNode")}exitOutcomes=new WeakMap;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){}onExit(e){}async finalizeNodeResult(e,t){const o=this.exitOutcomes.get(e);if(this.exitOutcomes.delete(e),!o)return;const s=o.kind==="finish"?t.completed===!0?{kind:"finish",response:t.response??o.response}:{kind:"reply",response:t.response??""}:o;await this.onExit({nodeId:this.id,mode:this.graph.invocationMode(),state:this.graph.graphState(),outcome:s,usage:{...t.tokens??_()}})}withExitOutcome(e,t){return this.exitOutcomes.set(e,t),e}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"&&g(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 T(I).withMessage(new R({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.`);k()?.throwIfAborted();const n=await this.onResponse(s,e);k()?.throwIfAborted();let i=n===void 0?s:n,r=f(t.usage,o?.usage);if(w(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=f(r,n.usage)}if(typeof i=="string"&&!i.trim())throw new Error(`LLM node '${this.id}' onResponse() produced no response.`);const l=(w(n)?n.kind==="taskResult":n===void 0&&o?.kind==="taskResult")?{kind:"taskResult",value:i}:{kind:"reply",response:typeof i=="string"?i:JSON.stringify(i)};if(this.isInternal())return this.withExitOutcome({tokens:r},l);const c=typeof i=="string"?i:JSON.stringify(i);if(!c?.trim())throw new Error(`LLM node '${this.id}' onResponse() produced no response.`);return this.withExitOutcome(new d({update:{currentNode:this.id,response:c,inputConsumed:!0,completed:!1,...this.historyUpdate(this.responseMessages(t,c)),tokens:r},goto:m}),l)}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=f(e.usage,t.usage);if(t.kind==="go"){const n=g(t);if(n.length>1)return this.withExitOutcome(new d({update:{inputConsumed:!0,response:"",completed:!1,...o,tokens:s},goto:[...n]}),{kind:"fanout",targets: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]),this.withExitOutcome(new d({update:{currentNode:i,inputConsumed:!0,response:"",completed:!1,...o,tokens:s},goto:i}),{kind:"go",targets:[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=y(this.id,t);return i!==this.historySpace()&&this.graph.appendHistory(i,[new p(r)]),this.withExitOutcome(new d({update:{currentNode:n,response:r,inputConsumed:!0,completed:!1,...o,tokens:s},goto:m}),{kind:"directTo",targets:[n],response:r})}if(t.kind==="finish"){const n=y(this.id,t);return this.withExitOutcome(new d({update:{...this.graph.complete(n),...o,tokens:s},goto:m}),{kind:"finish",response:n})}throw new Error(`LLM node '${this.id}' cannot publish '${t.kind}' as a conversation result.`)}}L([E("terminate_session"),u("design:type",Function),u("design:paramtypes",[Object]),u("design:returntype",Promise)],x.prototype,"endChat",null);function y(a,e){if(!e.response?.trim())throw new Error(`LLM node '${a}' selected ${e.kind}() without a response.`);return e.response}h(y,"requireResponse");export{x as LlmNode};
|
|
@@ -1 +1 @@
|
|
|
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};
|
|
1
|
+
const Ps=B;(function(s,E){const Pt={s:0x252,E:0x22b,h:0x243,i:0x247,c:0x21f,l:0x227},Pp=B,h=s();while(!![]){try{const i=-parseInt(Pp(Pt.s))/0x1*(-parseInt(Pp(0x1f4))/0x2)+parseInt(Pp(0x22e))/0x3*(parseInt(Pp(Pt.E))/0x4)+parseInt(Pp(0x204))/0x5+parseInt(Pp(Pt.h))/0x6+-parseInt(Pp(0x24a))/0x7+parseInt(Pp(Pt.i))/0x8*(-parseInt(Pp(0x237))/0x9)+-parseInt(Pp(Pt.c))/0xa*(-parseInt(Pp(Pt.l))/0xb);if(i===E)break;else h['push'](h['shift']());}catch(c){h['push'](h['shift']());}}}(z,0xae67e));function z(){const zX=['zw1WDhLiAxn0B3j5u2vLza','C3rVCf9KzxrHAwXZ','vgHLig1VzgvSihjLDhvYBMvKigfUigvTChr5ihjLC3bVBNnLicG','CMvHC29U','Dg9VBc1JywXSlq','y2fSBe9WDgLVBNm','mZu5mdy2ze9As3DR','yxr0zw1WDhnFzxHOyxvZDgvK','zgv0ywLS','BgXTr2f0zxDHEq','ywDLBNq','rM9SBg93ihrOzsbZExn0zw0GChjVBxb0igfUzcbYzxnWB25KihbYB3bLCMX5lIbvC2uGDgHLihjLCxvPCMvKihrVB2WGD2HLBIbPBNn0CNvJDgvKlG','Cg9W','CMvZB2X2zu1VzgvSrgvZy3jPChrVCG','DgHYB3DjzKfIB3j0zwq','zxHLy3v0zvrVB2W','B3rOzxi','vgHLig1VzgvSihjLC3bVBNnLihDHCYbYzwPLy3rLzcbIEsbJAgvJA1jLC3bVBNnLkcKU','C3rYAw5N','AxnjBNn0yw5Jzq','ChjVDMLKzxi','CMf0Aw5NCW','nJiYnJuWAxPUDKDt','ChvZAa','BMfTzq','Bw9KzwW','y2XLyw51Ca','BwvZC2fNzvrLEhq','igfNzw50ihjVDw5KCY4','AgfUzgXLqMXVy2TLza','C3rYAw5NAwz5','Dg9VBf9JywXSCW','yxnZzxj0twf4qwDLBNrsB3vUzhm','y2HLy2TszxnWB25Zzq','BM9YBwfSAxPLuMvHC29U','CMv0CNLFD2L0Af9TB2rLBa','CNvU','yMXVy2TLza','CMvZB2X2zunVBMzPzW','CMv0CMLLCW','C2fMzxr5x3jHDgLUz3m','Aw5JBhvKzxm','Dg9VBhm','BwvZC2fNzxm','C3rHEq','CMv0CNLFzgvJBgLUzwq','DMfSDwu','CMvZCg9UC2vFCMvQzwn0zwq','B2jQzwn0','otuXnZCWz0XQruLN','Aw52B2nHDgLVBL9LCNjVCG','zw1WDhLFCMvZCg9UC2u','CMvZCg9UC2vuzxH0','BwLU','CMvZCg9UC2u','ywXSu2v0DgXLza','C2HVDwXKuMv0CNLmBg1fCNjVCG','mtf0sMXuywq','zgvMAw5LuhjVCgvYDhK','Aw52B2nHDgLVBKnVBMzPzW','Dg9mB3DLCKnHC2u','mJC2mtmXnKv5teHWBq','A2LUza','DxnHz2u','m3ftv2HyBq','Bwf4qwDLBNrsB3vUzhmGBxvZDcbIzsbHihbVC2L0AxzLigLUDgvNzxi7ihjLy2vPDMvKia','BgXTq29UzMLN','BwfW','DhjPBq','C3LZDgvTuhjVBxb0','AxnbCNjHEq','y29TBw9Uq29UDgv4Da','CMv0CNLxAxrOtw9KzwWOksbTyxKGyMuGCMv0DxjUzwqGB25SEsbVBMnLigLUigeGCMvJB3zLCNKGC2vXDwvUy2uU','oty4ody4owPtyvLjtG','zxzLCNK','C3rHDgu','yxbWBhLszwnVDMvYEq','AxnjBNrLz2vY','CMvZCg9UC2vFBwv0ywrHDge','q29UDMvYC2f0Aw9Uigv4y2vLzgvKia','DMfSAwrHDgvdB25MAwC','ywrKAxrPB25HBf9RD2fYz3m','AgfZq2fUzgLKyxrLq29UDgvUDa','B25mBg1fCNjVCG','yMXVy2TszwfZB24','mZy2mtq5nhzRCxfzzq','CMvWBgfJzufSBa','zMvLzgjHy2S','ywnXDwLYzunHBMrPzgf0zq','ofDVq2nPuW','CgfYyw1Z','Axntyw1LqMfYzvrYyw5ZAxrPB24','nty0nJe3mKzss2rzra','C29Tzq','BgvUz3rO','teXnihjLy292zxj5ignHBM5VDcbYzxr1CM4GDg9VBc1VBMX5ihn0yxKOksWGy2XLyw51CcWGB3iGzMvLzgjHy2SU','tgXTuNvUBMvY','Aw1Hz2vFB3rOzxi','Aw50zxjUywXiDw1HBK1LC3nHz2u','CMvMDxnHBa','nNLHrfzosq','BwvZC2fNzq','BNvKz2u','B25fBNrLCG','yxnZzxj0rw1WDhLszxnWB25ZzvjLDhjPzxm','y2XLyw51Cef0DgfJAg1LBNrZ','qsb0B29SigjHDgnOihnLBgvJDgvKig1VCMuGDgHHBIbVBMuGDgvYBwLUywWGCMvZCg9UC2uGB3iGDhjHBNnPDgLVBI4','y29UDgvUDa','CMv0CNLxAxrOtw9KzwWOksbPCYbZDxbWB3j0zwqGB25SEsbIEsbVBKXSBuvYCM9YkcKU','yMXVy2TFCMvHC29U'];z=function(){return zX;};return z();}var V=Object[Ps(0x228)],d=(s,E)=>V(s,'name',{'value':E,'configurable':!0x0});import{setTimeout as b}from'node:timers/promises';import{GraphLlm as e,ModelCatalog as w}from'./graph-llm.config.js';import{LlmResponseBlockedError as y,LlmSetupError as W}from'./llm-lifecycle.js';import{AIMessage as C,HumanMessage as K,RemoveMessage as u,ToolMessage as x}from'@langchain/core/messages';import{addTokenUsage as o,emptyTokenUsage as k}from'./token-usage.js';import{goTargetIds as O,isToolResponse as D}from'./tool-response.js';import{describeStopReason as r,isRetryableStopReason as J,modelStopReason as T}from'./model-stop-reason.js';import{SessionLogWarning as S}from'./session-log.js';import{isOpenAIAuthConfig as f,openAIAuthMessageText as p}from'./openai-auth-provider.js';class ce extends Error{static{d(this,'EmptyModelResponseError');}[Ps(0x1f1)];constructor(s){const z0={s:0x1f0,E:0x1f1,h:0x206},PV=Ps;super(PV(z0.s)+r(s)+').'),this[PV(z0.E)]=s,this[PV(z0.h)]='EmptyModelResponseError';}}const pe=0x8;function ue(s){const z1={s:0x23b,E:0x22f},PE=Ps;if(!Number[PE(z1.s)](s)||s<0x1)throw new Error(PE(z1.E)+String(s)+'.');return s;}d(ue,Ps(0x20e));const H='Start',$={'retries':0x2,'nudge':Ps(0x1f9)};function fe(s){const Ph=Ps;if(!Number[Ph(0x23b)](s)||s<0x0)throw new Error('emptyResponseRecovery.retries\x20must\x20be\x20a\x20non-negative\x20integer;\x20received\x20'+String(s)+'.');return s;}d(fe,Ps(0x256));const Ie={'emptyHistorySeed':H,'emptyResponseRecovery':$};class Me{static{d(this,Ps(0x24e));}[Ps(0x1f7)];constructor(s){const Pi=Ps;this[Pi(0x1f7)]=s;}async[Ps(0x212)](I){const z8={s:0x255,E:0x201,h:0x255,i:0x1fa,c:0x205,l:0x24c,R:0x205,I:0x230,a:0x229,g:0x235,v:0x246,m:0x21c,A:0x254,n:0x241,t:0x1fc,P0:0x1fd,P1:0x245,P2:0x1f2,P3:0x219,P4:0x208,P5:0x224,P6:0x20a},z7={s:0x225},z6={s:0x248,E:0x218,h:0x1fc,i:0x226,c:0x1fc,l:0x220,R:0x21b,I:0x22d,a:0x213,g:0x202,v:0x251,m:0x202,A:0x234,n:0x21c,t:0x23c,P0:0x1ef,P1:0x21c,P2:0x23f,P3:0x21c,P4:0x1f5,P5:0x21c},z5={s:0x21e,E:0x22c,h:0x25a},z4={s:0x22c,E:0x211,h:0x23e,i:0x207,c:0x22c,l:0x200,R:0x219,I:0x205},Pc=Ps,P0=I[Pc(0x1f3)]?.['signal'];P0?.[Pc(0x1fc)]();const P1=[...I['history']],P2=[],P3=I['lifecycle'];if(P3?.[Pc(z8.s)]){const PW=P1['at'](-0x1),PC=PW&&K[Pc(z8.E)](PW)?PW:void 0x0,PK=await P3[Pc(z8.h)](PC);P0?.['throwIfAborted'](),PK!==PC&&(PC&&(P1[Pc(z8.i)](),PC['id']&&PC['id']!==PK?.['id']&&P2['push'](new u({'id':PC['id']}))),PK&&(P1['push'](PK),P2[Pc(z8.c)](PK)));}const P4=typeof I['systemPrompt']=='function'?I[Pc(0x233)]():I[Pc(0x233)];P0?.['throwIfAborted']();const P5=I[Pc(0x1ee)]===void 0x0?H:I['emptyHistorySeed'];if(P1[Pc(z8.l)]===0x0&&P5!==null){const PH=G(P5);P1[Pc(z8.R)](PH),P2[Pc(0x205)](PH);}let P6=[],P7=k();const P8=ue(I['maxAgentRounds']??pe),P9=I['emptyResponseRecovery']===void 0x0?$:I['emptyResponseRecovery'],PP=P9?fe(P9[Pc(0x215)]):0x0;let Pz=0x0,PB=I[Pc(z8.I)],Pb=!0x1;const Pe=d(()=>P3?e[Pc(0x214)](PB,{'params':{'retries':0x0}}):PB,Pc(z8.a)),PN=d(()=>({'nodeId':P3['nodeId'],'provider':w[Pc(0x1fb)](PB)['provider'],'model':PB[Pc(0x207)],...P0===void 0x0?{}:{'signal':P0}}),Pc(z8.g)),Pw=d(async(Pu,Px)=>{const Pl=Pc;if(P0?.['throwIfAborted'](),Pu===null)throw Px;if(typeof Pu=='object'&&Pu[Pl(z4.s)]===Pl(z4.E)){if(Pb)throw new Error(Pl(0x236),{'cause':Px});PB=e[Pl(z4.h)](Pu[Pl(z4.i)]),Pb=!0x0,Pz=0x0;return;}const PZ=typeof Pu==Pl(0x200)?void 0x0:Pu;if(PZ&&(PZ[Pl(z4.c)]===Pl(0x21a)||PZ[Pl(0x208)]||PZ[Pl(0x245)]!==void 0x0))throw new Error(Pl(0x24d));const Po=typeof Pu==Pl(z4.l)?Pu:PZ?.[Pl(0x224)];return PZ?.[Pl(z4.R)]&&P2[Pl(0x205)](...PZ['messages']),Po!==void 0x0&&P2[Pl(z4.I)](new C(Po)),{'messages':P2,'usage':P7,'stoppedAfterTool':!0x1,...Po===void 0x0?{}:{'response':Po},...PZ===void 0x0?{}:{'toolResponse':PZ}};},Pc(0x23a)),PX=d(async(Pu,Px)=>{const PR=Pc;P0?.['throwIfAborted']();const PZ=await P3['onLlmBlocked'](Pu);if(P0?.[PR(0x1fc)](),typeof PZ==PR(z5.s)&&PZ!==null&&PZ[PR(z5.E)]==='retry_with_model')throw new Error(PR(z5.h));return await Pw(PZ,new y(Pu,Px));},Pc(0x20b)),Py=d(async()=>{const PI=Pc;let Pu=0x0;for(;;){P0?.['throwIfAborted']();const Px=Pb?0x1:Number(PB[PI(z6.s)]['retries'])+0x1;Pu+=0x1;let PZ;const Po=Pe();try{PZ=await this[PI(0x1f7)][PI(0x1f8)](P4,P1,I[PI(z6.E)],Po,I['callOptions']);}catch(PD){if(P0?.[PI(z6.h)](),!P3||PD instanceof W)throw PD;const Pj=we(PD,PN());if(Pj)return PX(Pj,PD);const Pr=PD instanceof Error?PD:new Error(String(PD)),PM=P3[PI(z6.i)]({...PN(),'error':Pr,'attempt':Pu,'maxAttempts':Px});if(P0?.[PI(z6.c)](),PM!==!0x1&&Pu<Px){await q(P0);continue;}const PU={...PN(),'kind':PI(z6.l),'error':Pr,'attemptsMade':Pu,'maxAttempts':Px,'stoppedBecause':PM===!0x1?PI(z6.R):PI(0x1f5)},PJ=await Pw(await P3['onLlmError'](PU),Pr);if(PJ)return PJ;Pu=0x0;continue;}if(P0?.[PI(0x1fc)](),P7=o(P7,PZ[PI(z6.I)]),!P3)return PZ;const Pk=T(PZ['value']);if(Pk['category']===PI(z6.a)||[PI(0x1fe),PI(0x24f)][PI(0x217)](L(Pk[PI(0x202)]??'')))return PX({...PN(),'phase':'candidate','rawReason':Pk[PI(z6.g)]??PI(z6.v),'reason':L(Pk[PI(z6.m)]??PI(0x251)),...Array[PI(z6.A)](Pk[PI(0x203)])?{'safetyRatings':Pk['ratings']}:{},...(PZ[PI(z6.n)][PI(z6.t)]['stop_details']??PZ[PI(0x21c)][PI(0x23f)][PI(0x1ef)]??Pk[PI(0x1f6)])===void 0x0?{}:{'providerDetails':PZ[PI(0x21c)][PI(z6.t)][PI(z6.P0)]??PZ[PI(z6.P1)][PI(z6.P2)][PI(z6.P0)]??Pk['detail']}});if(!Y(PZ[PI(z6.P3)]))return PZ;const Pq=P3[PI(0x20f)](PZ[PI(0x21c)]);if(P0?.[PI(0x1fc)](),!Pq)return PZ;if(Pu<Px){await q(P0);continue;}const PO=new Error(PI(0x1ff)),PQ=await Pw(await P3[PI(0x241)]({...PN(),'kind':PI(0x21d),'error':PO,'attemptsMade':Pu,'maxAttempts':Px,'stoppedBecause':PI(z6.P4),'lastResponse':PZ[PI(z6.P5)]}),PO);if(PQ)return PQ;Pu=0x0;}},Pc(z8.v));try{for(let Pu=0x0;Pu<P8;Pu+=0x1){const Px=await Py();if(!(Pc(z8.m)in Px))return Px;P2[Pc(z8.c)](Px[Pc(z8.m)]),P1[Pc(0x205)](Px[Pc(0x21c)]);const PZ=Px[Pc(0x21c)][Pc(0x20d)]??[];if(PZ[Pc(0x24c)]===0x0){const Pq=he(Px['value'],PB);if(Pq['trim']()&&(!P3||Y(Px[Pc(z8.m)])))return await PF(),{'messages':P2,'usage':P7,'response':Pq,'stoppedAfterTool':!0x1};const PO=T(Px[Pc(0x21c)]),PQ=J(PO)&&P9!==null&&Pz<PP&&!Pb&&(!P3||Pu+0x1<P8);if(S({'empty_model_response':r(PO),'retried':PQ}),PQ&&P9){Pz+=0x1,P2[Pc(0x1fa)](),P1[Pc(z8.i)](),P1['push'](G(P9[Pc(z8.A)]));continue;}if(P3){P2[Pc(0x1fa)](),P1['pop']();const PD=new ce(PO),Pj=await Pw(await P3[Pc(z8.n)]({...PN(),'kind':Pc(0x221),'error':PD,'attemptsMade':Pz+0x1,'maxAttempts':Pb?0x1:Math[Pc(0x223)](PP+0x1,Pz+P8-Pu),'stoppedBecause':Pc(0x1f5),'lastResponse':Px['value']}),PD);if(Pj)return Pj;Pu-=0x1;continue;}return await PF(),{'messages':P2,'usage':P7,'response':Pq,'stoppedAfterTool':!0x1,'stopReason':PO};}await PF();let Po=!0x1,Pk;try{for(const [Pr,PM]of PZ['entries']()){P0?.[Pc(z8.t)]();const PU=await I[Pc(z8.P0)](PM);if(D(PU)){if(PU['kind']==='go'&&O(PU),PU['kind']!==Pc(0x21a)){if(Pk&&Pk['kind']!=='stay'&&!me(Pk,PU))throw new Error(Pc(0x258));Pk=PU;}else Pk||(Pk=PU);const PJ=new x({'content':PU[Pc(z8.P1)]??'OK','tool_call_id':PM['id']??Pc(z8.P2)+Pu+'-'+Pr,'name':PM[Pc(0x206)]});P2['push'](PJ),P1[Pc(0x205)](PJ),PU[Pc(0x219)]&&(P2[Pc(0x205)](...PU['messages']),P1['push'](...PU[Pc(z8.P3)])),PU[Pc(z8.P4)]&&P6[Pc(0x205)](PU[Pc(0x208)]),P0?.[Pc(0x1fc)](),Po||=PU[Pc(0x22c)]!=='stay';continue;}}}catch(PT){throw await PF(),PT;}if(Po){const PS=Pk?.[Pc(z8.P5)];if(PS){const Pd=new C(PS);P2['push'](Pd),P1[Pc(0x205)](Pd);}return await PF(),{'messages':P2,'usage':P7,'stoppedAfterTool':!0x0,...PS?{'response':PS}:{},...Pk?{'toolResponse':Pk}:{}};}}throw await PF(),new Error(Pc(0x23d)+P8+Pc(z8.P6));}finally{await PF();}async function PF(){const Pa=Pc,PG=P6;P6=[],await Promise[Pa(z7.s)](PG[Pa(0x231)](Pf=>Pf()));}d(PF,Pc(0x257));}}function me(E,h){const z9={s:0x238,E:0x239,h:0x253},Pg=Ps;if(E['kind']!=='go'||h[Pg(0x22c)]!=='go')return!0x1;const i=O(E),c=new Set(O(h));return i[Pg(0x24c)]===c['size']&&i[Pg(z9.s)](l=>c['has'](l))&&E[Pg(0x239)]===void 0x0&&h[Pg(z9.E)]===void 0x0&&E[Pg(z9.h)]===void 0x0&&h[Pg(z9.h)]===void 0x0&&E[Pg(0x219)]===void 0x0&&h['messages']===void 0x0&&E['cleanup']===void 0x0&&h[Pg(0x208)]===void 0x0&&E[Pg(0x224)]===void 0x0&&h[Pg(0x224)]===void 0x0&&E['usage']===void 0x0&&h[Pg(0x22d)]===void 0x0;}d(me,Ps(0x249));function G(s){return new K({'content':s,'additional_kwargs':{'ezgraphInternal':!0x0}});}d(G,Ps(0x250));function ye(s){const zz={s:0x259},PY=Ps;return typeof s['content']=='string'?s[PY(zz.s)]:JSON[PY(0x20c)](s['content']);}d(ye,Ps(0x209));function he(s,E){const zB={s:0x259},Pv=Ps;return f(E)?p(s[Pv(zB.s)]):ye(s);}d(he,Ps(0x222));function L(s){const zb={s:0x232,E:0x244},Pm=Ps;return s[Pm(zb.s)]()[Pm(0x22a)]()[Pm(zb.E)]('-','_');}d(L,Ps(0x210));function we(E,h){const ze={s:0x21e,E:0x1ed,h:0x234},PL=Ps;if(!E||typeof E!=PL(ze.s))return null;const c=E,l=c[PL(0x242)]??c[PL(ze.E)];if(typeof l!='string'||!l[PL(0x232)]())return null;const R=c['safetyRatings']??c[PL(0x216)];return{...h,'phase':'prompt','rawReason':l,'reason':L(l),...Array[PL(ze.h)](R)?{'safetyRatings':R}:{}};}function B(P,b){P=P-0x1ed;const e=z();let N=e[P];if(B['YuevmR']===undefined){var w=function(W){const C='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let K='',H='';for(let u=0x0,x,Z,o=0x0;Z=W['charAt'](o++);~Z&&(x=u%0x4?x*0x40+Z:Z,u++%0x4)?K+=String['fromCharCode'](0xff&x>>(-0x2*u&0x6)):0x0){Z=C['indexOf'](Z);}for(let q=0x0,O=K['length'];q<O;q++){H+='%'+('00'+K['charCodeAt'](q)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(H);};B['jcKpvx']=w,B['ArHGMx']={},B['YuevmR']=!![];}const X=e[0x0],y=P+X,F=B['ArHGMx'][y];return!F?(N=B['jcKpvx'](N),B['ArHGMx'][y]=N):N=F,N;}d(we,'promptBlockedContext');function Y(s){const zN={s:0x259,E:0x232},PA=Ps;return s['tool_calls']?.['length']?!0x0:typeof s[PA(zN.s)]==PA(0x200)?!!s['content'][PA(zN.E)]():s[PA(zN.s)][PA(0x24b)](E=>typeof E['text']==PA(0x200)&&!!E['text'][PA(0x232)]());}d(Y,Ps(0x240));async function q(s){const zw={s:0x1fc},Pn=Ps;try{await b(0x1f4,void 0x0,s?{'signal':s}:void 0x0);}catch(E){throw s?.[Pn(zw.s)](),E;}}d(q,'waitForRetry');export{H as DEFAULT_EMPTY_HISTORY_SEED,$ as DEFAULT_EMPTY_RESPONSE_RECOVERY,Ie as DEFAULT_LLM_POLICY,pe as DEFAULT_MAX_AGENT_ROUNDS,ce as EmptyModelResponseError,Me as LlmRunner,fe as assertEmptyResponseRetries,ue as assertMaxAgentRounds};
|
|
@@ -1 +1 @@
|
|
|
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
|
+
const Pk=B;(function(l,R){const z6={l:0xad,R:0xfd,a:0x125,Y:0xa6,m:0xce,L:0xe8},Po=B,a=l();while(!![]){try{const Y=-parseInt(Po(z6.l))/0x1*(-parseInt(Po(0x10b))/0x2)+-parseInt(Po(z6.R))/0x3+-parseInt(Po(z6.a))/0x4*(parseInt(Po(0xdc))/0x5)+-parseInt(Po(z6.Y))/0x6*(parseInt(Po(0xd6))/0x7)+-parseInt(Po(0x122))/0x8+parseInt(Po(z6.m))/0x9*(parseInt(Po(z6.L))/0xa)+parseInt(Po(0x99))/0xb*(parseInt(Po(0xa8))/0xc);if(Y===R)break;else a['push'](a['shift']());}catch(m){a['push'](a['shift']());}}}(z,0x27bd1));var J=Object[Pk(0xc6)],c=(l,R)=>J(l,Pk(0xc9),{'value':R,'configurable':!0x0});import{mapChatMessagesToStoredMessages as e,mapStoredMessagesToChatMessages as w}from'@langchain/core/messages';import{BaseGraph as H}from'../base-graph.js';function z(){const zh=['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'];z=function(){return zh;};return z();}import{ConfigManager as u}from'../config-manager.js';import{GRAPH_END_NODE as Z}from'../graph-state.js';import{cloneJsonObject as o}from'../graph-context.js';import{GraphLlm as k}from'../graph-llm.config.js';import{replaceNodeStates as O}from'../node-state.js';import{createSessionLogs as D}from'../session-log.js';import{emptyTokenUsage as r,normalizeTokenUsage as M}from'../token-usage.js';import{assertGraphSchemaVersion as d}from'../stable-id.js';import{addDecisionUsage as s,emptyDecisionUsage as E,normalizeDecisionUsage as i}from'../decision/decision-types.js';const h=0x10,g=Pk(0xed),q=Pk(0xc2),Ce='SESSION_COMPLETED';class f extends Error{static{c(this,Pk(0xfa));}[Pk(0xb4)];constructor(l,R){const Pq=Pk;super(R),this[Pq(0xc9)]=Pq(0xfa),this[Pq(0xb4)]=l;}}class N{static{c(this,'SessionManager');}['container'];[Pk(0x103)];constructor(l=new V(),R=F()){const PO=Pk;this['container']=l,this[PO(0x103)]=R;}static async[Pk(0xf8)](P0=new u()){const z9={l:0x119,R:0x9d,a:0x12c,Y:0x119,m:0xdb,L:0xa2,A:0x110,n:0x106,t:0x12a,P0:0x112,P1:0x136,P2:0xa7,P3:0xec,P4:0xd7,P5:0xd8,P6:0xdd,P7:0xe4,P8:0x119,P9:0x11a,PP:0xbd},PQ=Pk,P1=P0[PQ(z9.l)]('SESSION_STORE','memory')[PQ(z9.R)]()['toLowerCase'](),P2=F(P0['get'](PQ(z9.a)));if(P1==='memory')return new N(new V(),P2);if(P1===PQ(0xbe)){const {SqliteSessionDocumentContainer:PF}=await import('./sqlite-session-document.container.js');return new N(new PF(P0[PQ(z9.Y)](PQ(0xb0),PQ(0xe1))),P2);}if(P1===PQ(0xa2)||P1==='mongo'){const PW=p(P0,PQ(z9.m)),PC=p(P0,'MONGODB_NAME'),PK=p(P0,PQ(0x134));if(!PW||!PC||!PK)throw new Error('MongoDB\x20session\x20persistence\x20requires\x20MONGODB_URL,\x20MONGODB_NAME,\x20and\x20MONGODB_COLLECTION.');const [{MongoClient:PH},{MongoDbSessionDocumentContainer:Pu}]=await Promise[PQ(0xe9)]([import(PQ(z9.L)),import('./mongodb-session-document.container.js')]),Px=new PH(PW);await Px[PQ(0x115)]();const PZ=Px['db'](PC)['collection'](PK);return await PZ['createIndex']({'id':0x1},{'unique':!0x0}),new N(new Pu(PZ,Px),P2);}if(P1!==PQ(0x10a)&&P1!==PQ(z9.A))throw new Error('Unsupported\x20SESSION_STORE\x20\x27'+P1+PQ(0x127));const P3=p(P0,'COSMO_ENDPOINT','COSMOS_ENDPOINT','COSMODB_URL'),P4=p(P0,PQ(z9.n),'COSMOS_KEY'),P5=p(P0,PQ(z9.t)),P6=p(P0,PQ(z9.P0)),P7=p(P0,PQ(0xaf)),P8=p(P0,PQ(z9.P1),'COSMOS_DATABASE',PQ(z9.P2))??PQ(z9.P3),P9=p(P0,'COSMO_DB_SESSION_CONTAINER_ID',PQ(0xc5),PQ(z9.P4))??PQ(0x116);if(!P3||!P4&&(!P5||!P6||!P7))throw new Error(PQ(0xb3));const [{CosmosClient:PP},{ClientSecretCredential:Pz}]=await Promise['all']([import(PQ(z9.P5)),import(PQ(z9.P6))]),PB=P4?new PP({'endpoint':P3,'key':P4}):new PP({'endpoint':P3,'aadCredentials':new Pz(P5,P6,P7)}),{database:Pb}=await PB[PQ(z9.P7)][PQ(0x109)]({'id':P8}),Pe=Number(P0[PQ(z9.P8)](PQ(0xd5),PQ(0xa0))),{container:PN}=await Pb['containers'][PQ(0x109)]({'id':P9,'partitionKey':{'paths':['/id']},...Number[PQ(0x98)](Pe)&&Pe>0x0?{'throughput':Pe}:{}}),{resource:Pw}=await PN[PQ(0xac)](),PX=Pw?.[PQ(0x13c)]?.[PQ(z9.P9)]??[];if(!PX[PQ(0xda)](PQ(0xf5)))throw new Error('Cosmos\x20container\x20\x27'+P9+'\x27\x20must\x20use\x20partition\x20key\x20/id;\x20found\x20'+(PX[PQ(0x145)](',\x20')||'none')+'.');const {CosmosSessionDocumentContainer:Py}=await import(PQ(z9.PP));return new N(new Py(PN,()=>PB[PQ(0x126)]()),P2);}async[Pk(0x128)](l){const zP={l:0x117,R:0x101},PD=Pk,R=await this[PD(zP.l)](l);return R?.[PD(zP.R)]===h?R:void 0x0;}async[Pk(0x117)](l){const zz={l:0xe7},Pj=Pk;try{const {resource:R}=await this[Pj(zz.l)][Pj(0x13e)](l,l)[Pj(0xac)]();return R;}catch(a){if(G(a))return;throw a;}}async[Pk(0x108)](R,Y,m){const zB={l:0xca,R:0x117,a:0x123,Y:0x103,m:0xa1,L:0x13d,A:0xcb,n:0xe7,t:0xd4,P0:0xff,P1:0xdf,P2:0xbb,P3:0xcb},Pr=Pk,L=H[Pr(zB.l)](m[Pr(0x11d)]),A=d(m[Pr(0xe2)]),P0=await this[Pr(zB.R)](R);P0&&P0[Pr(0x101)]===h&&T(P0,L);const P1=new Date(),P2={'owner':Y,'expiresAt':new Date(P1[Pr(zB.a)]()+this[Pr(zB.Y)])[Pr(0xa1)]()};if(!P0){const P4=this['placeholderDocument'](R,m,L,A,P2,P1[Pr(zB.m)]());if(await this['container'][Pr(zB.L)]({'expectedRevision':null},P4)==='conflict')throw new f(g,Pr(0xbb)+R+Pr(zB.A));return{'kind':Pr(0xff),'document':P4,'expectedRevision':P4['revision']};}if(P0[Pr(0x101)]!==h){const P5=this['placeholderDocument'](R,m,L,A,P2,P1['toISOString']());if(await this[Pr(zB.n)][Pr(0x13d)]({'expectedRevision':S(P0),'replaceIncompatible':!0x0},P5)===Pr(zB.t))throw new f(g,Pr(0xbb)+R+'\x27\x20is\x20already\x20processing\x20a\x20turn.');return{'kind':Pr(zB.P0),'document':P5,'expectedRevision':P5[Pr(0xb2)]};}if(K(P0[Pr(0xdf)])&&P0[Pr(zB.P1)]?.[Pr(0x135)]!==Y)throw new f(g,'Session\x20\x27'+R+Pr(zB.A));const P3={...P0,'revision':S(P0)+0x1,'turn':P2};if(await this['container']['compareAndSwap']({'expectedRevision':S(P0),'requireFreeLease':!0x0,'allowOwner':Y},P3)==='conflict')throw new f(g,Pr(zB.P2)+R+Pr(zB.P3));return{'kind':'leased','document':P3,'expectedRevision':S(P3)};}async[Pk(0x12b)](l,R){const PM=Pk,a=await this['getSession'](l);if(a)return this[PM(0x102)](a,R);}[Pk(0x102)](l,R){const ze={l:0x129,R:0x129,a:0xa5,Y:0x13a,m:0x114,L:0x11f,A:0xfc},PU=Pk,Y=H[PU(0xca)](R);T(l,Y);const {graph:m}=l;if(!m[PU(ze.l)])return;const L=O({},m[PU(ze.R)]),A=ae(m[PU(ze.a)]);return{'currentNode':m[PU(0x9f)],'config':m[PU(ze.Y)]??{},'context':o(m[PU(ze.m)]===void 0x0?{}:m['context']),'completed':l[PU(ze.L)]===PU(ze.A)||m[PU(0x9f)]===Z,'nodes':L,'tokens':M(l[PU(0xab)]),'decisionUsage':i(l['decisionUsage']),'histories':A,'inputConsumed':!0x0,'response':''};}async[Pk(0xd9)](R,Y,L,A=D(),P0={}){const zN={l:0xe2,R:0xa1,a:0x129,Y:0xfc,m:0x140,L:0xe0,A:0x11c,n:0x9f,t:0x114,P0:0x10f,P1:0x135,P2:0x13d,P3:0xd4,P4:0xbb,P5:0xcb},PJ=Pk,P1=H[PJ(0xca)](L[PJ(0x11d)]),P2=d(L[PJ(zN.l)]),P3=await this[PJ(0x117)](R),P4=P3?.[PJ(0x101)]===h?P3:void 0x0;P4&&(T(P4,P1),j(P4,P2));const P5=new Date()[PJ(zN.R)](),P6=oe(O({},Y[PJ(zN.a)])),{tokens:P7,histories:P8}=Y,P9=this[PJ(0xc4)](P3,P0),PP={'version':h,'id':R,'revision':P9===null?0x0:P9+0x1,'status':Y[PJ(zN.Y)]?'completed':'in_progress','tokens':M(P7),'decisionUsage':i(Y[PJ(zN.m)]),'errors':[...P4?.[PJ(0xe0)]??[],...A[PJ(zN.L)]],'warnings':[...P4?.[PJ(0xcd)]??[],...A[PJ(0xcd)]],'decisions':[...P4?.['decisions']??[],...A[PJ(zN.A)]],'graph':{'id':P1,'schemaVersion':P2,'currentNode':Y[PJ(zN.n)],'config':Y[PJ(0x13a)],'context':o(Y[PJ(zN.t)]===void 0x0?{}:Y[PJ(zN.t)]),'histories':se(P8),'model':k[PJ(zN.P0)](L[PJ(0xf3)]),'nodes':P6},...P0['keepTurn']&&P4?.[PJ(0xdf)]?{'turn':{'owner':P4[PJ(0xdf)][PJ(zN.P1)],'expiresAt':new Date(Date[PJ(0x130)]()+this[PJ(0x103)])[PJ(0xa1)]()}}:{},'createdAt':P4?.['createdAt']??P5,'modifiedAt':P5};if(await this['container'][PJ(zN.P2)](this[PJ(0x12e)](P3,P0,P9),PP)===PJ(zN.P3))throw new f(P0['owner']?q:g,P0[PJ(0x135)]?PJ(zN.P4)+R+PJ(0xa3):PJ(0xbb)+R+PJ(zN.P5));return PP;}async['appendLogs'](l,R,Y,L={}){const zw={l:0xe2,R:0x128,a:0x140,Y:0xe0,m:0x11c,L:0x9f,A:0x13a,n:0xa5,t:0x114,P0:0xf3,P1:0x131,P2:0x131,P3:0x141,P4:0x13d,P5:0x12e,P6:0x135,P7:0xbb,P8:0x12d},PT=Pk,A=H[PT(0xca)](Y[PT(0x11d)]),P0=d(Y[PT(zw.l)]),P1=await this[PT(zw.R)](l);P1&&(T(P1,A),j(P1,P0));const P2=new Date()['toISOString'](),P3=this[PT(0xc4)](P1,L),P4={'version':h,'id':l,'revision':P3===null?0x0:P3+0x1,'status':R[PT(0xe0)]['length']>0x0?PT(0xaa):P1?.['status']??'in_progress','tokens':P1?.[PT(0xab)]??r(),'decisionUsage':R[PT(0x11c)][PT(0xc8)]((P5,P6)=>s(P5,P6['usage']),i(P1?.[PT(zw.a)])),'errors':[...P1?.[PT(zw.Y)]??[],...R[PT(0xe0)]],'warnings':[...P1?.[PT(0xcd)]??[],...R[PT(0xcd)]],'decisions':[...P1?.[PT(zw.m)]??[],...R[PT(0x11c)]],'graph':{'id':A,'schemaVersion':P0,...P1?{'currentNode':P1['graph'][PT(zw.L)],'config':P1['graph'][PT(zw.A)]}:{},'histories':P1?.[PT(0x131)][PT(zw.n)]??{},'context':o(P1?.['graph'][PT(zw.t)]===void 0x0?{}:P1[PT(0x131)]['context']),'model':k['modelMetadata'](Y[PT(zw.P0)]),...P1?.[PT(zw.P1)][PT(0x129)]?{'nodes':P1[PT(zw.P2)][PT(0x129)]}:{}},'createdAt':P1?.[PT(zw.P3)]??P2,'modifiedAt':P2};if(await this['container'][PT(zw.P4)](this[PT(zw.P5)](P1,L,P3),P4)==='conflict'){if(L[PT(zw.P6)]){console['warn'](PT(zw.P7)+l+PT(0xf0)+R[PT(zw.Y)]['length']+'\x20error(s)\x20and\x20'+R['warnings'][PT(zw.P8)]+PT(0xe3));return;}throw new f(g,'Session\x20\x27'+l+PT(0xcb));}return P4;}async['endFailedTurn'](l,R,a,Y,m){const zX={l:0xe0,R:0xcd,a:0x9c},PS=Pk;if(Y&&(Y[PS(zX.l)][PS(0x12d)]>0x0||Y[PS(zX.R)][PS(0x12d)]>0x0||Y[PS(0x11c)][PS(0x12d)]>0x0)){await this[PS(0xee)](l,Y,a,{'owner':R,...m!==void 0x0?{'expectedRevision':m}:{}});return;}await this[PS(zX.a)](l,R,m);}async[Pk(0x9c)](l,R,Y){const zy={l:0x135,R:0x13d},Pd=Pk,m=await this['getSession'](l);if(!m||m['turn']?.[Pd(zy.l)]!==R)return;const L=Y??S(m),{turn:A,...P0}=m,P1={...P0,'modifiedAt':new Date()['toISOString']()};await this[Pd(0xe7)][Pd(zy.R)]({'expectedRevision':L,'requireOwner':R},P1);}async[Pk(0x120)](l){const zF={l:0xe7},PG=Pk;try{await this[PG(zF.l)][PG(0x13e)](l,l)[PG(0x138)]();}catch(R){if(!G(R))throw R;}}async['persistMigratedSession'](l,R={}){const zW={l:0x100,R:0xc3,a:0x131,Y:0xeb,m:0x128,L:0xdf,A:0x114,n:0x141,t:0x141,P0:0xbb,P1:0xb8},Pf=Pk;if(l['version']!==h)throw new Error(Pf(zW.l)+l[Pf(0x101)]+Pf(zW.R)+h+'.');H[Pf(0xca)](l[Pf(0x131)]['id']),d(l[Pf(zW.a)][Pf(zW.Y)]);const Y=await this[Pf(zW.m)](l['id']),m=R[Pf(0x113)]??S(Y||l),L=Y?.[Pf(0xdf)]??l[Pf(zW.L)],A={...l,'graph':{...l['graph'],'context':o(l[Pf(zW.a)][Pf(zW.A)]===void 0x0?{}:l['graph']['context'])},'revision':m,'createdAt':Y?.[Pf(zW.n)]??l[Pf(zW.t)],'modifiedAt':Y?.[Pf(0xf6)]??l[Pf(0xf6)],...L?{'turn':L}:{}};if(await this['container'][Pf(0x13d)]({'expectedRevision':m,...R[Pf(0x135)]?{'requireOwner':R[Pf(0x135)]}:{'requireFreeLease':!0x0}},A)===Pf(0xd4))throw new f(R[Pf(0x135)]?q:g,Pf(zW.P0)+l['id']+Pf(zW.P1));}async[Pk(0x13f)](){const Pp=Pk;await this['container'][Pp(0x13f)]?.();}[Pk(0xd3)](l,R,Y,m,L,A){const zK={l:0x144},Ps=Pk;return{'version':h,'id':l,'revision':0x0,'status':Ps(zK.l),'tokens':r(),'decisionUsage':E(),'errors':[],'warnings':[],'decisions':[],'graph':{'id':Y,'schemaVersion':m,'histories':{},'context':{},'model':k[Ps(0x10f)](R[Ps(0xf3)])},'turn':L,'createdAt':A,'modifiedAt':A};}['commitExpectedRevision'](l,R){const zH={l:0x113},PV=Pk;return R[PV(zH.l)]!==void 0x0?R[PV(zH.l)]:l?S(l):null;}[Pk(0x12e)](l,R,a){const zu={l:0x135,R:0x101},PE=Pk;return R[PE(zu.l)]?{'expectedRevision':a,'requireOwner':R['owner']}:l&&l[PE(zu.R)]!==h?{'expectedRevision':a,'replaceIncompatible':!0x0}:{'expectedRevision':a,'requireFreeLease':!0x0};}}function p(l,...R){const Ph=Pk;for(const a of R){const Y=l[Ph(0x119)](a);if(Y)return Y;}}c(p,Pk(0x107));function T(l,R){const zZ={l:0x131,R:0xbb,a:0xfe,Y:0x13b},Pi=Pk;if(l[Pi(zZ.l)]['id']!==R)throw new Error(Pi(zZ.R)+l['id']+Pi(zZ.a)+l['graph']['id']+'\x27,\x20not\x20\x27'+R+Pi(zZ.Y));}c(T,Pk(0xf4));function j(l,R){const zo={l:0x131,R:0xeb,a:0xfb,Y:0xb6,m:0x131,L:0xeb,A:0xea,n:0xae},Pc=Pk;if(l[Pc(zo.l)][Pc(zo.R)]!==R)throw new Error('Session\x20\x27'+l['id']+Pc(zo.a)+l['graph']['id']+Pc(zo.Y)+l[Pc(zo.m)][Pc(zo.L)]+Pc(zo.A)+R+Pc(zo.n));}c(j,Pk(0xde));function oe(l){const zq={l:0x11e},zk={l:0x121},Pl=Pk;return Object[Pl(0xc0)](Object[Pl(0xd2)](l)[Pl(zq.l)](([R,a])=>{const PR=Pl;if(!a||typeof a!=PR(zk.l))return[R,a];const {toolTrace:Y,...m}=a;return[R,m];}));}c(oe,Pk(0x132));function ie(l){const zO={l:0xef,R:0x12d,a:0xe5,Y:0xd1,m:0xcf,L:0xf7,A:0x111,n:0x12d,t:0xf9,P0:0x12d,P1:0xf9};return l['map'](R=>{const PI=B,a={...R[PI(0xb1)]},Y=R['type']==='ai'&&Array[PI(zO.l)](a[PI(0x111)])&&a[PI(0x111)][PI(zO.R)]>0x0?ce(a[PI(0xe5)]):void 0x0,m=b(a[PI(zO.a)])&&a[PI(0xe5)][PI(zO.Y)]===!0x0;return delete a[PI(0xe5)],(Y||m)&&(a['additional_kwargs']={...Y?{'originalTextContentBlock':Y}:{},...m?{'ezgraphInternal':!0x0}:{}}),delete a[PI(zO.m)],delete a[PI(zO.L)],R[PI(0xbc)]==='ai'&&(Array[PI(0xef)](a[PI(zO.A)])&&a[PI(0x111)][PI(zO.n)]===0x0&&delete a[PI(zO.A)],Array['isArray'](a[PI(zO.t)])&&a[PI(0xf9)][PI(zO.P0)]===0x0&&delete a[PI(zO.P1)]),{...R,'data':a};});}c(ie,Pk(0x9a));function se(l){const zD={l:0xd2,R:0x11e},Pa=Pk;return Object[Pa(0xc0)](Object[Pa(zD.l)](l)[Pa(zD.R)](([R,a])=>[R,ie(e(a))]));}c(se,Pk(0xa4));function ae(l={}){const zj={l:0xc0},Pg=Pk;return Object[Pg(zj.l)](Object[Pg(0xd2)](l)[Pg(0x11e)](([R,a])=>[R,w(a)]));}c(ae,Pk(0xa9));function ce(l){const zr={l:0x9e,R:0x133,a:0x9e},PY=Pk;if(!b(l))return;const R=l[PY(0x10d)];if(!(!b(R)||typeof R[PY(zr.l)]!=PY(0xc7)))return{...typeof R[PY(zr.R)]==PY(0xc7)?{'text':R['text']}:{},'thoughtSignature':R[PY(zr.a)],...R[PY(0xba)]===!0x0?{'thought':!0x0}:{}};}c(ce,Pk(0xf1));function b(l){const Pv=Pk;return l!==null&&typeof l==Pv(0x121)&&!Array['isArray'](l);}c(b,Pk(0x104));class V{static{c(this,Pk(0xb9));}[Pk(0x105)]=new Map();get[Pk(0x9b)](){const Pm=Pk;return this[Pm(0x105)][Pm(0x9b)];}[Pk(0xbf)]={'upsert':c(async e=>{const zJ={l:0x105},PL=Pk,t=e;return this[PL(zJ.l)]['set'](t['id'],structuredClone(t)),{};},Pk(0x124))};async[Pk(0x13d)](l,R){const zT={l:0x105},PA=Pk,a=this[PA(zT.l)][PA(0x119)](R['id']);return de(a,l)?(this['documents'][PA(0x10e)](R['id'],structuredClone(R)),'ok'):'conflict';}[Pk(0x13e)](l,R){const zd={l:0x119,R:0xc1,a:0x11b},zS={l:0x105},z0=Pk;return{'read':c(async()=>{const Pn=B,a=this[Pn(zS.l)][Pn(0x119)](l);if(!a||a['id']!==R)throw Object[Pn(0xc1)](new Error('Not\x20found'),{'code':0x194});return{'resource':structuredClone(a)};},'read'),'delete':c(async()=>{const Pt=B,a=this[Pt(0x105)][Pt(zd.l)](l);if(!a||a['id']!==R)throw Object[Pt(zd.R)](new Error(Pt(zd.a)),{'code':0x194});return this[Pt(0x105)]['delete'](l),{};},z0(0x138))};}}function G(l){const z1=Pk;if(!l||typeof l!=z1(0x121))return!0x1;const R=l;return R[z1(0xb4)]===0x194||R[z1(0x12f)]===0x194;}c(G,Pk(0x139));function F(l=process.env.SESSION_TURN_LEASE_MS){const zp={l:0x118},z2=Pk,R=Number(l??z2(zp.l));return Number[z2(0x98)](R)&&R>0x0?R:0xea60;}function B(P,b){P=P-0x98;const e=z();let N=e[P];if(B['zZPXch']===undefined){var w=function(W){const C='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let K='',H='';for(let u=0x0,x,Z,o=0x0;Z=W['charAt'](o++);~Z&&(x=u%0x4?x*0x40+Z:Z,u++%0x4)?K+=String['fromCharCode'](0xff&x>>(-0x2*u&0x6)):0x0){Z=C['indexOf'](Z);}for(let q=0x0,O=K['length'];q<O;q++){H+='%'+('00'+K['charCodeAt'](q)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(H);};B['quHhSI']=w,B['AkYZlF']={},B['zZPXch']=!![];}const X=e[0x0],y=P+X,F=B['AkYZlF'][y];return!F?(N=B['quHhSI'](N),B['AkYZlF'][y]=N):N=F,N;}c(F,Pk(0xe6));function S(l){const zs={l:0xb2},z3=Pk;return l?.[z3(zs.l)]??0x0;}c(S,Pk(0x142));function K(l,R=Date['now']()){const zV={l:0x135,R:0xcc,a:0xb7},z4=Pk;if(!l?.[z4(zV.l)]||!l[z4(0xb7)])return!0x1;const a=Date[z4(zV.R)](l[z4(zV.a)]);return Number['isFinite'](a)&&a>R;}c(K,Pk(0xb5));function de(l,R,a=Date[Pk(0x130)]()){const zE={l:0x113,R:0xdf,a:0xf2,Y:0xd0},z5=Pk;return R[z5(0x10c)]?l!==void 0x0&&l['version']!==h:R[z5(zE.l)]===null?l===void 0x0:!(!l||S(l)!==R[z5(0x113)]||R['requireOwner']&&l[z5(zE.R)]?.[z5(0x135)]!==R[z5(zE.a)]||R[z5(zE.Y)]&&K(l[z5(0xdf)],a)&&l['turn']?.[z5(0x135)]!==R[z5(0x143)]);}c(de,Pk(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
|
|
1
|
+
const J=z;(function(K,H){const P6={K:0x1de,H:0x1ff,Z:0x215,o:0x200,k:0x1e6,q:0x1d7,O:0x21d,Q:0x20a},U=z,Z=K();while(!![]){try{const o=parseInt(U(P6.K))/0x1*(-parseInt(U(P6.H))/0x2)+parseInt(U(P6.Z))/0x3+parseInt(U(P6.o))/0x4*(parseInt(U(0x1f2))/0x5)+parseInt(U(P6.k))/0x6+parseInt(U(P6.q))/0x7+-parseInt(U(P6.O))/0x8*(-parseInt(U(P6.Q))/0x9)+-parseInt(U(0x20c))/0xa;if(o===H)break;else Z['push'](Z['shift']());}catch(k){Z['push'](Z['shift']());}}}(P,0x339cf));var m=Object[J(0x1ed)],p=(K,H)=>m(K,'name',{'value':H,'configurable':!0x0});import{END as B,isCommand as e,START as N,StateGraph as X}from'@langchain/langgraph';import{GRAPH_NODE_CLASS as y,GraphNode as F}from'./graph-node.js';import{GRAPH_END_NODE as W}from'./graph-state.js';import{stableClassId as C}from'./stable-id.js';class x{static{p(this,'StateGraphExt');}['createGraphNode'];[J(0x1e5)];[J(0x1fa)];[J(0x1f0)]=new Set();[J(0x21f)]=new Map();['turnNodeIds'];[J(0x1ec)]=new Set();[J(0x1e2)]=new Map();constructor(K,H,Z=W){const P7={K:0x1e5},T=J;this[T(0x21c)]=H,this[T(P7.K)]=Z,this['graph']=new X(K);}['addNode'](K){const P8={K:0x21c,H:0x21c,Z:0x21f,o:0x1f0},S=J;if(!w(K))throw new Error('StateGraphExt\x20nodes\x20must\x20be\x20added\x20as\x20GraphNode\x20classes:\x20graph.addNode(MyNode).');if(!this[S(P8.K)])throw new Error('This\x20graph\x20has\x20no\x20GraphNode\x20factory.');const H=this[S(P8.H)](K),Z=C(K,S(0x1dd));if(H['id']!==Z)throw new Error(S(0x1db)+Z+'\x27\x20returned\x20\x27'+H['id']+'\x27.');return this[S(P8.Z)]['set'](Z,K),this[S(0x21a)](H,[...this[S(P8.o)],Z,B]);}['nodes'](...K){const PP={K:0x1fc,H:0x21b,Z:0x220,o:0x217,k:0x21a},P9={K:0x21e},d=J;if(!this[d(0x21c)])throw new Error(d(0x201));const H=K[d(0x209)](q=>{const f=d;if(!w(q))throw new Error(f(P9.K));return C(q,f(0x1dd));}),Z=H[d(PP.K)]((q,O)=>H[d(0x204)](q)!==O||this['addedNodeIds']['has'](q));if(Z)throw new Error(d(PP.H)+Z+d(0x1ef));const k=[...this[d(0x1f0)],...H,B];for(const [q,O]of K[d(PP.Z)]()){const Q=this[d(0x21c)](O),D=H[q];if(Q['id']!==D)throw new Error(d(0x1db)+D+'\x27\x20returned\x20\x27'+Q['id']+'\x27.');this[d(0x21f)][d(PP.o)](D,O),this[d(PP.k)](Q,k);}return this;}[J(0x1d8)](...K){const s=J;return this[s(0x1f6)](...K),this['registerTurns'](...K),this;}[J(0x211)](...K){const PB={K:0x1ee,H:0x21b,Z:0x1f0},V=J;for(const H of K){if(!w(H))throw new Error(V(0x203));const Z=C(H,V(0x1dd));if(this[V(0x1fe)]?.[V(PB.K)](Z))throw new Error(V(PB.H)+Z+'\x27\x20is\x20already\x20a\x20user-turn\x20entry.');this[V(PB.Z)]['has'](Z)||this[V(0x1f6)](H),this['workerNodeIds'][V(0x206)](Z);}return this;}['addEdge'](K,H){const Pb={K:0x1fa,H:0x1d6},h=J,Z=Array[h(0x1e3)](K)?K:[K];for(const q of Z)this[h(0x1eb)](q);this[h(0x1d9)](H);const k=Z[h(0x209)](c);return this[h(Pb.K)][h(0x208)](k[h(Pb.H)]===0x1?k[0x0]:k,c(H)),this;}['branch'](K,H){const Pe={K:0x1da},R=J,Z=C(K,R(0x1dd)),k=this[R(0x1e2)]['get'](Z);if(!k)throw new Error(R(0x21b)+Z+R(0x1fb));return this[R(0x20f)](K,k[R(0x20b)][R(Pe.K)](k),H),this;}['branchBy'](K,H){const Pw={K:0x1dd,H:0x1ee,Z:0x1fc,o:0x20f,k:0x209,q:0x1f8},PN={K:0x210,H:0x1f1,Z:0x1f3},a=J,Z=C(K,a(Pw.K));if(!this[a(0x1e2)][a(Pw.H)](Z))throw new Error('Graph\x20node\x20\x27'+Z+a(0x1fb));if(H['cases'][a(0x1d6)]===0x0)throw new Error(a(0x218));const k=H['cases']['map'](({when:D})=>this[a(0x214)](D)),q=k[a(Pw.Z)]((D,j)=>k['indexOf'](D)!==j);if(q)throw new Error(a(0x1e4)+q+'\x27.');const O=k['map']((D,j)=>a(0x216)+j),Q=a(0x1f8);return this[a(Pw.o)](K,D=>{const Y=a,j=D[Y(PN.K)];if(typeof j!=Y(PN.H))throw new Error(Y(0x21b)+Z+Y(PN.Z));const M=k[Y(0x204)](j);return M===-0x1?Q:O[M];},{...Object['fromEntries'](H[a(0x202)][a(Pw.k)](({routeTo:D},j)=>[O[j],D])),[Q]:H[a(Pw.q)]}),this;}[J(0x1e7)](...K){const PX={K:0x20e,H:0x1f5,Z:0x1e8,o:0x209,k:0x1fe},v=J,H=K['map'](Z=>C(Z,v(0x1dd)));for(const Z of H)if(this[v(0x1ec)][v(0x1ee)](Z))throw new Error(v(0x21b)+Z+'\x27\x20is\x20already\x20registered\x20as\x20internal\x20work.');if(K[v(PX.K)](o=>C(o,'graph\x20node')===this[v(0x1e5)]))throw new Error(v(PX.H)+this[v(0x1e5)]+v(PX.Z));return this[v(0x20f)](N,o=>o[v(0x210)],{...Object['fromEntries'](K[v(PX.o)](o=>[C(o,'graph\x20node'),o])),[this['endNode']]:B}),this[v(PX.k)]=new Set(H),this;}[J(0x212)](){const Py={K:0x1e2,H:0x1df,Z:0x1fa},L=J;for(const K of this[L(Py.K)]['values']())K[L(Py.H)]?.(this[L(0x1f7)](K['id']));return this[L(Py.Z)]['compile']();}[J(0x1f7)](K){const PF={K:0x1ec,H:0x1e0,Z:0x219},A=J;return{'mode':this[A(PF.K)][A(0x1ee)](K)||this[A(0x1fe)]!==void 0x0&&!this[A(0x1fe)]['has'](K)?A(PF.H):A(PF.Z)};}[J(0x20f)](K,H,Z){const PW={K:0x1fa,H:0x1f4,Z:0x220},n=J;this[n(0x1eb)](K);for(const k of Object['values'](Z))this['assertTarget'](k);this[n(PW.K)][n(PW.H)](c(K),H,Object[n(0x1f9)](Object[n(PW.Z)](Z)['map'](([q,O])=>[q,c(O)])));}[J(0x21a)](K,H){const PK={K:0x1f0,H:0x21b,Z:0x1ef,o:0x217},PC={K:0x1f7,H:0x1d9},t=J;if(this[t(PK.K)][t(0x1ee)](K['id']))throw new Error(t(PK.H)+K['id']+t(PK.Z));return this[t(0x1fa)][t(0x205)](K['id'],async Z=>{const P0=t,k=await K['invoke'](Z,this[P0(PC.K)](K['id']));if(e(k)){const q=Array[P0(0x1e3)](k[P0(0x20d)])?k[P0(0x20d)]:k[P0(0x20d)]===void 0x0?[]:[k[P0(0x20d)]];for(const O of q)typeof O=='string'&&this[P0(PC.H)](O);}return k;},{'ends':[...new Set(H)]}),this[t(0x1f0)][t(0x206)](K['id']),this[t(0x1e2)][t(PK.o)](K['id'],K),this;}[J(0x1eb)](K){const PH={K:0x1e1},P1=J;c(K)!==N&&this[P1(0x207)](K,P1(PH.K));}['assertTarget'](K){const Pu={K:0x207,H:0x1fd},P2=J;c(K)!==B&&this[P2(Pu.K)](K,P2(Pu.H));}[J(0x207)](K,H){const Px={K:0x1f0},P3=J,Z=c(K);if(!this[P3(Px.K)][P3(0x1ee)](Z))throw new Error(P3(0x213)+H+'\x20\x27'+Z+P3(0x1fb));}[J(0x214)](K){const PZ={K:0x1f1,H:0x1ee,Z:0x1dc,o:0x1e9,k:0x1e5,q:0x1ea,O:0x1e5},P4=J;if(typeof K!=P4(PZ.K)){if(!w(K))throw new Error('branchBy()\x20selectors\x20must\x20be\x20GraphNode\x20classes\x20or\x20the\x20configured\x20terminal\x20state.');const H=C(K,'graph\x20node');if(!this[P4(0x1f0)][P4(PZ.H)](H))throw new Error(P4(PZ.Z)+H+P4(PZ.o));return H;}if(K!==this[P4(PZ.k)]&&!this['addedNodeIds'][P4(0x1ee)](K))throw new Error(P4(PZ.Z)+K+P4(PZ.q)+this[P4(PZ.O)]+'\x27.');return K;}}function z(B,b){B=B-0x1d6;const e=P();let N=e[B];if(z['eVpIkl']===undefined){var w=function(W){const C='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let K='',H='';for(let u=0x0,x,Z,o=0x0;Z=W['charAt'](o++);~Z&&(x=u%0x4?x*0x40+Z:Z,u++%0x4)?K+=String['fromCharCode'](0xff&x>>(-0x2*u&0x6)):0x0){Z=C['indexOf'](Z);}for(let q=0x0,O=K['length'];q<O;q++){H+='%'+('00'+K['charCodeAt'](q)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(H);};z['aoVAHY']=w,z['txctJP']={},z['eVpIkl']=!![];}const X=e[0x0],y=B+X,F=z['txctJP'][y];return!F?(N=z['aoVAHY'](N),z['txctJP'][y]=N):N=F,N;}function w(K){const H=K;return typeof K=='function'&&K!==null&&H[y]===!0x0&&H['prototype']instanceof F;}function P(){const Pq=['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'];P=function(){return Pq;};return P();}p(w,'isGraphNodeClass');function c(K){const Pk={K:0x1f1},P5=J;return typeof K==P5(Pk.K)?K:C(K,P5(0x1dd));}p(c,'endpointId');export{x as StateGraphExt};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var
|
|
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
|
|
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, type MessageTypes, } from "../../src/framework/llm-node.js";
|
|
4
|
+
export { LlmNode, type LlmNodeRunResult, type LlmNodeResponse, type LlmNodeExitContext, type LlmNodeExitOutcome, 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";
|
|
@@ -56,6 +56,8 @@ export declare abstract class GraphNode<State extends GraphState, LocalState ext
|
|
|
56
56
|
protected onInvalidJsonResponse(context: InvalidJsonResponseContext<State>): GraphNodeUpdate<State> | Promise<GraphNodeUpdate<State>>;
|
|
57
57
|
protected onEmptyModelResponse(context: EmptyModelResponseContext<State>): string | Promise<string>;
|
|
58
58
|
readonly invoke: (state: State, options?: NodeInvocationOptions) => Promise<GraphNodeResult<State>>;
|
|
59
|
+
protected finalizeNodeResult(_result: GraphNodeResult<State>, _update: GraphNodeUpdate<State>): void | Promise<void>;
|
|
60
|
+
private validatePublication;
|
|
59
61
|
protected managesLlmExecution(): boolean;
|
|
60
62
|
protected validateNodeResult(_update: GraphNodeUpdate<State>, _isCommand: boolean): void;
|
|
61
63
|
obtainTools(options?: NodeInvocationOptions): readonly ToolDefinition[];
|
|
@@ -54,7 +54,7 @@ export declare class LlmSetupError extends Error {
|
|
|
54
54
|
}
|
|
55
55
|
export type LlmLifecycle = Readonly<{
|
|
56
56
|
nodeId: string;
|
|
57
|
-
onEnter?(message: MessageTypes | null | undefined): MessageTypes | null | undefined
|
|
57
|
+
onEnter?(message: MessageTypes | null | undefined): MessageTypes | null | undefined | Promise<MessageTypes | null | undefined>;
|
|
58
58
|
checkResponse(response: string | object): boolean;
|
|
59
59
|
onLlmBlocked(context: LlmBlockedContext): Promise<LlmBlockedResponse | null>;
|
|
60
60
|
shouldRetryLlmError(context: LlmAttemptErrorContext): boolean | undefined;
|
|
@@ -1,19 +1,51 @@
|
|
|
1
1
|
import { type BaseMessage } from "@langchain/core/messages";
|
|
2
2
|
import type { ToolCall } from "@langchain/core/messages/tool";
|
|
3
3
|
import type { LlmRunResult } from "./llm-runner.js";
|
|
4
|
-
import { type GraphNodeResult, type NodeInvocationOptions } from "./graph-node.js";
|
|
4
|
+
import { type GraphNodeResult, type GraphNodeUpdate, type NodeInvocationOptions } from "./graph-node.js";
|
|
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 TokenUsage } from "./token-usage.js";
|
|
8
9
|
import type { LlmErrorResponse, LlmLifecycle } from "./llm-lifecycle.js";
|
|
9
10
|
import type { MessageTypes } from "./message-types.js";
|
|
10
11
|
export type { MessageTypes } from "./message-types.js";
|
|
11
12
|
export type LlmNodeRunResult = LlmRunResult;
|
|
12
13
|
export type LlmNodeResponse = void | string | ToolResponse;
|
|
14
|
+
export type LlmNodeExitOutcome<Output = string> = {
|
|
15
|
+
readonly kind: "reply";
|
|
16
|
+
readonly response: string;
|
|
17
|
+
} | {
|
|
18
|
+
readonly kind: "taskResult";
|
|
19
|
+
readonly value: Output;
|
|
20
|
+
} | {
|
|
21
|
+
readonly kind: "go";
|
|
22
|
+
readonly targets: readonly [string];
|
|
23
|
+
} | {
|
|
24
|
+
readonly kind: "fanout";
|
|
25
|
+
readonly targets: readonly [string, string, ...string[]];
|
|
26
|
+
} | {
|
|
27
|
+
readonly kind: "directTo";
|
|
28
|
+
readonly targets: readonly [string];
|
|
29
|
+
readonly response: string;
|
|
30
|
+
} | {
|
|
31
|
+
readonly kind: "finish";
|
|
32
|
+
readonly response: string;
|
|
33
|
+
};
|
|
34
|
+
export type LlmNodeExitContext<State extends GraphState, Output = string> = Readonly<{
|
|
35
|
+
nodeId: string;
|
|
36
|
+
mode: "conversation" | "internal";
|
|
37
|
+
state: Readonly<State>;
|
|
38
|
+
outcome: LlmNodeExitOutcome<Output>;
|
|
39
|
+
usage: TokenUsage;
|
|
40
|
+
}>;
|
|
13
41
|
export declare abstract class LlmNode<State extends GraphState, LocalState extends object = Record<string, unknown>, Output = string> extends LlmNodeBase<State, LocalState> {
|
|
14
|
-
|
|
42
|
+
private readonly exitOutcomes;
|
|
43
|
+
protected onEnter(langMessage: MessageTypes | null | undefined, _priorNode?: string): MessageTypes | null | undefined | Promise<MessageTypes | null | undefined>;
|
|
15
44
|
protected llmLifecycle(): LlmLifecycle;
|
|
16
45
|
protected onResponse(_response: string | Output, _state: State): LlmNodeResponse | Promise<LlmNodeResponse>;
|
|
46
|
+
protected onExit(_context: LlmNodeExitContext<State, Output>): void | Promise<void>;
|
|
47
|
+
protected finalizeNodeResult(result: GraphNodeResult<State>, update: GraphNodeUpdate<State>): Promise<void>;
|
|
48
|
+
private withExitOutcome;
|
|
17
49
|
protected managesLlmExecution(): boolean;
|
|
18
50
|
private isInternal;
|
|
19
51
|
protected includeTool(name: string, options: NodeInvocationOptions): boolean;
|
|
@@ -38,7 +38,7 @@ export declare class LlmRunner {
|
|
|
38
38
|
constructor(llmGateway: LlmGateway);
|
|
39
39
|
run(options: {
|
|
40
40
|
lifecycle?: LlmLifecycle;
|
|
41
|
-
systemPrompt: string;
|
|
41
|
+
systemPrompt: string | (() => string);
|
|
42
42
|
history: readonly BaseMessage[];
|
|
43
43
|
tools: readonly LlmGatewayTool[];
|
|
44
44
|
llmConfig: GraphLlmConfig;
|
|
@@ -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
|
|
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>;
|