darwin-langgraph 0.3.0-alpha.1 → 0.4.0-alpha.1
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/CHANGELOG.md +243 -0
- package/README.md +18 -1
- package/dist/create-darwin-node.d.ts +55 -0
- package/dist/create-darwin-node.d.ts.map +1 -1
- package/dist/create-darwin-node.js +56 -1
- package/dist/create-darwin-node.js.map +1 -1
- package/dist/darwin-accumulating-annotation.d.ts +81 -0
- package/dist/darwin-accumulating-annotation.d.ts.map +1 -0
- package/dist/darwin-accumulating-annotation.js +144 -0
- package/dist/darwin-accumulating-annotation.js.map +1 -0
- package/dist/darwin-callback-handler.d.ts +131 -1
- package/dist/darwin-callback-handler.d.ts.map +1 -1
- package/dist/darwin-callback-handler.js +360 -18
- package/dist/darwin-callback-handler.js.map +1 -1
- package/dist/errors.d.ts +16 -0
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +19 -0
- package/dist/errors.js.map +1 -1
- package/dist/index.d.ts +7 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +11 -3
- package/dist/index.js.map +1 -1
- package/dist/to-otel-attributes.d.ts +49 -0
- package/dist/to-otel-attributes.d.ts.map +1 -1
- package/dist/to-otel-attributes.js +38 -2
- package/dist/to-otel-attributes.js.map +1 -1
- package/dist/to-w3c-trace-context.d.ts +81 -0
- package/dist/to-w3c-trace-context.d.ts.map +1 -0
- package/dist/to-w3c-trace-context.js +134 -0
- package/dist/to-w3c-trace-context.js.map +1 -0
- package/dist/token-budget.d.ts +141 -0
- package/dist/token-budget.d.ts.map +1 -0
- package/dist/token-budget.js +225 -0
- package/dist/token-budget.js.map +1 -0
- package/dist/with-darwin-evolution.d.ts +16 -0
- package/dist/with-darwin-evolution.d.ts.map +1 -1
- package/dist/with-darwin-evolution.js +9 -1
- package/dist/with-darwin-evolution.js.map +1 -1
- package/package.json +2 -2
|
@@ -51,8 +51,26 @@
|
|
|
51
51
|
*/
|
|
52
52
|
import { BaseCallbackHandler } from "@langchain/core/callbacks/base";
|
|
53
53
|
import { DarwinEvolutionHookError } from "./errors.js";
|
|
54
|
+
/**
|
|
55
|
+
* Highest `ExecutionTrace.version` this handler natively understands.
|
|
56
|
+
* The forward-compat guard in {@link isExecutionTrace} warns once for
|
|
57
|
+
* higher versions but still emits them (structural shape covers the
|
|
58
|
+
* required fields) so a Darwin upgrade ahead of the adapter doesn't
|
|
59
|
+
* silently drop trajectories.
|
|
60
|
+
*
|
|
61
|
+
* NEW V0.4 (S1235).
|
|
62
|
+
*/
|
|
63
|
+
export const MAX_KNOWN_TRACE_VERSION = 1;
|
|
54
64
|
/** Default cap. Aligned with reasonable LangGraph fan-out (~1k nodes / minute). */
|
|
55
65
|
const DEFAULT_MAX_IN_FLIGHT_RUNS = 1024;
|
|
66
|
+
/** Default size cap for trajectory `onTrajectory` emission (256 KiB). */
|
|
67
|
+
const DEFAULT_MAX_TRAJECTORY_BYTES = 262_144;
|
|
68
|
+
/**
|
|
69
|
+
* Process-wide flag so the unknown-version warning fires once per
|
|
70
|
+
* process even across multiple handler instances. Exported intentionally
|
|
71
|
+
* undefined — re-bound via module-reload in tests.
|
|
72
|
+
*/
|
|
73
|
+
let unknownTraceVersionWarned = false;
|
|
56
74
|
function isExecutionTrace(value) {
|
|
57
75
|
if (!value || typeof value !== "object")
|
|
58
76
|
return false;
|
|
@@ -61,9 +79,61 @@ function isExecutionTrace(value) {
|
|
|
61
79
|
// version. Downstream consumers (e.g. toOtelAttributes) read
|
|
62
80
|
// `toolCalls.length` directly — a malformed trace with missing arrays
|
|
63
81
|
// would crash there. Guard explicitly.
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
82
|
+
//
|
|
83
|
+
// V0.4 (S1235): forward-compat — accept v ≥ 1 as long as the structural
|
|
84
|
+
// shape `toolCalls + errors` is preserved. A future Darwin release that
|
|
85
|
+
// bumps the version while adding fields will still flow through; only
|
|
86
|
+
// structurally-incompatible payloads are dropped. We warn once per
|
|
87
|
+
// process when we observe a higher-than-known version so an out-of-date
|
|
88
|
+
// adapter dependency is loud rather than silent.
|
|
89
|
+
if (typeof v.version !== "number" ||
|
|
90
|
+
!Number.isFinite(v.version) ||
|
|
91
|
+
v.version < 1 ||
|
|
92
|
+
!Array.isArray(v.toolCalls) ||
|
|
93
|
+
!Array.isArray(v.errors)) {
|
|
94
|
+
return false;
|
|
95
|
+
}
|
|
96
|
+
if (v.version > MAX_KNOWN_TRACE_VERSION && !unknownTraceVersionWarned) {
|
|
97
|
+
unknownTraceVersionWarned = true;
|
|
98
|
+
console.warn(`[darwin-langgraph] Observed ExecutionTrace.version=${v.version} — ` +
|
|
99
|
+
`this adapter knows up to v${MAX_KNOWN_TRACE_VERSION}. Emitting as ` +
|
|
100
|
+
`compatible v${MAX_KNOWN_TRACE_VERSION}-shape; upgrade darwin-langgraph ` +
|
|
101
|
+
`to access any new fields. Subsequent unknown-version observations ` +
|
|
102
|
+
`are silent.`);
|
|
103
|
+
}
|
|
104
|
+
return true;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Build a structurally-compatible BUT minimal stub when a trajectory's
|
|
108
|
+
* serialised size exceeds the configured cap. Preserves the aggregate
|
|
109
|
+
* counts (turns / textBlocks / mcp invocations / errors-count via empty
|
|
110
|
+
* array — counts go through via the dedicated count fields) plus
|
|
111
|
+
* `capturedAt` for traceability. Caller-visible flag
|
|
112
|
+
* `trajectoryTruncated = true` is set on the event payload so consumers
|
|
113
|
+
* can branch on it.
|
|
114
|
+
*/
|
|
115
|
+
function buildTruncatedTrace(t) {
|
|
116
|
+
// R1 P1-2 fix (S1235): shallow-copy `tokenUsage` instead of leaking
|
|
117
|
+
// the original object reference. The original trajectory may carry
|
|
118
|
+
// BigInt fields (some providers expose 64-bit token counts) which
|
|
119
|
+
// downstream JSON.stringify cannot handle — coerce them to Number
|
|
120
|
+
// via the explicit spread/normaliser.
|
|
121
|
+
const tokenUsage = t.tokenUsage
|
|
122
|
+
? Object.fromEntries(Object.entries(t.tokenUsage).map(([k, v]) => [
|
|
123
|
+
k,
|
|
124
|
+
typeof v === "bigint" ? Number(v) : v,
|
|
125
|
+
]))
|
|
126
|
+
: undefined;
|
|
127
|
+
return {
|
|
128
|
+
version: t.version,
|
|
129
|
+
toolCalls: [],
|
|
130
|
+
textBlockCount: t.textBlockCount,
|
|
131
|
+
turnCount: t.turnCount,
|
|
132
|
+
mcpInvocations: t.mcpInvocations,
|
|
133
|
+
errors: [],
|
|
134
|
+
capturedAt: t.capturedAt,
|
|
135
|
+
...(tokenUsage ? { tokenUsage: tokenUsage } : {}),
|
|
136
|
+
};
|
|
67
137
|
}
|
|
68
138
|
function normaliseNodeMap(nodeMap, defaultKey) {
|
|
69
139
|
const resolved = new Map();
|
|
@@ -98,15 +168,48 @@ export class DarwinCallbackHandler extends BaseCallbackHandler {
|
|
|
98
168
|
awaitHandlers = false;
|
|
99
169
|
resolved;
|
|
100
170
|
onTrajectory;
|
|
171
|
+
onToolEvent;
|
|
101
172
|
/**
|
|
102
173
|
* runId → in-flight run state. Map preserves insertion order so the
|
|
103
174
|
* oldest entry is always at `.keys().next().value` for LRU eviction
|
|
104
175
|
* when the cap is exceeded (V0.3 hung-invoke guard).
|
|
105
176
|
*/
|
|
106
177
|
runIdToName = new Map();
|
|
178
|
+
/**
|
|
179
|
+
* V0.4 (R1 P1-1 fix, S1235) — `toolRunId → toolName` cache populated
|
|
180
|
+
* from `handleToolStart` and consumed by `handleToolEnd` /
|
|
181
|
+
* `handleToolError`. LangChain v0.3 `handleToolEnd` does NOT reliably
|
|
182
|
+
* carry the tool name in its signature (the slot was repurposed
|
|
183
|
+
* across releases); reading `output.name` only works for some shapes
|
|
184
|
+
* and yields "<anonymous-tool>" for the common ToolNode case.
|
|
185
|
+
*/
|
|
186
|
+
toolRunIdToName = new Map();
|
|
187
|
+
/**
|
|
188
|
+
* V0.4 (R1 P1-1 fix, S1235) — pending callbacks keyed by parent chain
|
|
189
|
+
* runId so we can also restore the chain's tool name at end-time even
|
|
190
|
+
* after the `toolRunIdToName` entry is cleaned up.
|
|
191
|
+
*/
|
|
107
192
|
maxInFlightRuns;
|
|
193
|
+
/** V0.4 — byte cap before trajectory replacement. */
|
|
194
|
+
maxTrajectoryBytes;
|
|
195
|
+
/**
|
|
196
|
+
* V0.4 (R1 P1-1 fix) — also cap the tool-name cache. Default matches
|
|
197
|
+
* `maxInFlightRuns` since tool runs are children of chain runs.
|
|
198
|
+
*/
|
|
199
|
+
maxInFlightToolRuns;
|
|
200
|
+
/**
|
|
201
|
+
* Pending trajectory dispatches keyed by chain runId. When a chain
|
|
202
|
+
* ends with tools still in flight we hold the dispatch closure here
|
|
203
|
+
* and fire it from the LAST `handleToolEnd` / `handleToolError`.
|
|
204
|
+
*
|
|
205
|
+
* V0.4 (R1 P1-4 fix, S1235).
|
|
206
|
+
*/
|
|
207
|
+
pendingTrajectoryDispatch = new Map();
|
|
108
208
|
warned = false;
|
|
109
209
|
evictionWarned = false;
|
|
210
|
+
toolWarned = false;
|
|
211
|
+
/** V0.4 — once-per-handler warn for trajectory size cap. */
|
|
212
|
+
trajectoryTruncatedWarned = false;
|
|
110
213
|
constructor(opts) {
|
|
111
214
|
super();
|
|
112
215
|
if (!opts || !opts.nodeMap || Object.keys(opts.nodeMap).length === 0) {
|
|
@@ -115,6 +218,7 @@ export class DarwinCallbackHandler extends BaseCallbackHandler {
|
|
|
115
218
|
const defaultKey = opts.defaultTrajectoryKey ?? "darwinTrajectory";
|
|
116
219
|
this.resolved = normaliseNodeMap(opts.nodeMap, defaultKey);
|
|
117
220
|
this.onTrajectory = opts.onTrajectory;
|
|
221
|
+
this.onToolEvent = opts.onToolEvent;
|
|
118
222
|
// V0.3 (S1187): hung-invoke guard. NaN / negative / non-number falls
|
|
119
223
|
// back to default. Infinity disables the cap (opt-out).
|
|
120
224
|
const raw = opts.maxInFlightRuns;
|
|
@@ -127,6 +231,24 @@ export class DarwinCallbackHandler extends BaseCallbackHandler {
|
|
|
127
231
|
else {
|
|
128
232
|
this.maxInFlightRuns = DEFAULT_MAX_IN_FLIGHT_RUNS;
|
|
129
233
|
}
|
|
234
|
+
// V0.4 (S1235): trajectory size guard. Same shape as maxInFlightRuns.
|
|
235
|
+
const rawBytes = opts.maxTrajectoryBytes;
|
|
236
|
+
if (rawBytes === Infinity) {
|
|
237
|
+
this.maxTrajectoryBytes = Infinity;
|
|
238
|
+
}
|
|
239
|
+
else if (typeof rawBytes === "number" &&
|
|
240
|
+
Number.isFinite(rawBytes) &&
|
|
241
|
+
rawBytes > 0) {
|
|
242
|
+
this.maxTrajectoryBytes = Math.floor(rawBytes);
|
|
243
|
+
}
|
|
244
|
+
else {
|
|
245
|
+
this.maxTrajectoryBytes = DEFAULT_MAX_TRAJECTORY_BYTES;
|
|
246
|
+
}
|
|
247
|
+
// V0.4 (R1 P1-1 fix): tool-name cache cap mirrors the chain cap.
|
|
248
|
+
this.maxInFlightToolRuns =
|
|
249
|
+
this.maxInFlightRuns === Infinity
|
|
250
|
+
? Infinity
|
|
251
|
+
: Math.max(this.maxInFlightRuns, 1) * 4;
|
|
130
252
|
}
|
|
131
253
|
/**
|
|
132
254
|
* Capture the run-id → node-name mapping.
|
|
@@ -181,6 +303,8 @@ export class DarwinCallbackHandler extends BaseCallbackHandler {
|
|
|
181
303
|
this.runIdToName.set(runId, {
|
|
182
304
|
nodeName,
|
|
183
305
|
parentRunId: typeof parentRunId === "string" ? parentRunId : undefined,
|
|
306
|
+
pendingTools: 0,
|
|
307
|
+
finalized: false,
|
|
184
308
|
});
|
|
185
309
|
}
|
|
186
310
|
/**
|
|
@@ -196,23 +320,65 @@ export class DarwinCallbackHandler extends BaseCallbackHandler {
|
|
|
196
320
|
const inFlight = this.runIdToName.get(runId);
|
|
197
321
|
if (!inFlight)
|
|
198
322
|
return;
|
|
199
|
-
//
|
|
200
|
-
//
|
|
201
|
-
//
|
|
202
|
-
//
|
|
203
|
-
//
|
|
204
|
-
//
|
|
205
|
-
|
|
206
|
-
|
|
323
|
+
// V0.4 (R1 P1-4 fix, S1235): defer the chain-entry cleanup if tool
|
|
324
|
+
// events are still pending. Without this, `handleToolEnd` for a
|
|
325
|
+
// still-executing tool would see `runIdToName.get(parentRunId) ===
|
|
326
|
+
// undefined` and silently drop the tool event. We mark the entry
|
|
327
|
+
// `finalized` so subsequent `handleChainStart` for the SAME runId
|
|
328
|
+
// (which LangGraph never does, but defense-in-depth) is treated as
|
|
329
|
+
// a re-fire and ignored; and we hold the trajectory dispatch in
|
|
330
|
+
// `pendingTrajectoryDispatch` to fire from the last tool callback.
|
|
331
|
+
inFlight.finalized = true;
|
|
332
|
+
if (inFlight.pendingTools === 0) {
|
|
333
|
+
this.runIdToName.delete(runId);
|
|
334
|
+
}
|
|
335
|
+
if (!this.onTrajectory) {
|
|
336
|
+
if (inFlight.pendingTools === 0) {
|
|
337
|
+
// Already cleaned up; nothing more to do.
|
|
338
|
+
return;
|
|
339
|
+
}
|
|
340
|
+
// Caller does not care about the trajectory, just the tool events.
|
|
341
|
+
// No pending dispatch needed; the tool-callback path will clean up
|
|
342
|
+
// the chain entry when pending hits 0.
|
|
207
343
|
return;
|
|
344
|
+
}
|
|
208
345
|
const entry = this.resolved.get(inFlight.nodeName);
|
|
209
346
|
if (!entry)
|
|
210
347
|
return;
|
|
211
348
|
if (outputs === null || typeof outputs !== "object")
|
|
212
349
|
return;
|
|
213
|
-
const
|
|
214
|
-
if (!isExecutionTrace(
|
|
350
|
+
const trajectoryRaw = outputs[entry.trajectoryKey];
|
|
351
|
+
if (!isExecutionTrace(trajectoryRaw))
|
|
215
352
|
return;
|
|
353
|
+
// V0.4 (S1235): size-guard. Run JSON.stringify ONCE and reuse its
|
|
354
|
+
// length for the cap test — the result is discarded, we never log
|
|
355
|
+
// raw payloads. JSON.stringify can throw on circular refs / BigInt
|
|
356
|
+
// / Symbol values; defensive catch keeps the hook robust regardless.
|
|
357
|
+
let serialisedSize = 0;
|
|
358
|
+
try {
|
|
359
|
+
serialisedSize = JSON.stringify(trajectoryRaw).length;
|
|
360
|
+
}
|
|
361
|
+
catch {
|
|
362
|
+
// Unserialisable trajectories are themselves a signal worth
|
|
363
|
+
// surfacing — treat as oversized so consumers see the replacement.
|
|
364
|
+
serialisedSize = Number.POSITIVE_INFINITY;
|
|
365
|
+
}
|
|
366
|
+
let trajectory = trajectoryRaw;
|
|
367
|
+
let trajectoryTruncated = false;
|
|
368
|
+
if (this.maxTrajectoryBytes !== Infinity &&
|
|
369
|
+
serialisedSize > this.maxTrajectoryBytes) {
|
|
370
|
+
trajectory = buildTruncatedTrace(trajectoryRaw);
|
|
371
|
+
trajectoryTruncated = true;
|
|
372
|
+
if (!this.trajectoryTruncatedWarned) {
|
|
373
|
+
this.trajectoryTruncatedWarned = true;
|
|
374
|
+
console.warn(`[darwin-langgraph] DarwinCallbackHandler: trajectory for ` +
|
|
375
|
+
`"${inFlight.nodeName}" was ${serialisedSize} bytes — exceeded ` +
|
|
376
|
+
`${this.maxTrajectoryBytes} byte cap. Emitting structurally-` +
|
|
377
|
+
`compatible minimal stub with the original counts preserved. ` +
|
|
378
|
+
`Set DarwinCallbackHandlerOptions.maxTrajectoryBytes to raise ` +
|
|
379
|
+
`the cap or Infinity to opt out. Subsequent truncations are silent.`);
|
|
380
|
+
}
|
|
381
|
+
}
|
|
216
382
|
const frozen = Object.freeze({ ...outputs });
|
|
217
383
|
// V0.3 (S1187): propagate runId + parentRunId so OTEL exporters,
|
|
218
384
|
// Langfuse, LangSmith, etc. can rebuild the span hierarchy from the
|
|
@@ -224,19 +390,187 @@ export class DarwinCallbackHandler extends BaseCallbackHandler {
|
|
|
224
390
|
finalState: frozen,
|
|
225
391
|
runId,
|
|
226
392
|
...(inFlight.parentRunId !== undefined ? { parentRunId: inFlight.parentRunId } : {}),
|
|
393
|
+
...(trajectoryTruncated ? { trajectoryTruncated: true } : {}),
|
|
227
394
|
};
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
395
|
+
const dispatch = () => {
|
|
396
|
+
void Promise.resolve()
|
|
397
|
+
.then(() => this.onTrajectory(event))
|
|
398
|
+
.catch((err) => this.swallow(err));
|
|
399
|
+
};
|
|
400
|
+
if (inFlight.pendingTools > 0) {
|
|
401
|
+
// V0.4 (R1 P1-4 fix): defer the dispatch until all tool events
|
|
402
|
+
// have surfaced so consumers see tool spans BEFORE the agent span
|
|
403
|
+
// closes. The last tool callback drains this map.
|
|
404
|
+
this.pendingTrajectoryDispatch.set(runId, dispatch);
|
|
405
|
+
}
|
|
406
|
+
else {
|
|
407
|
+
dispatch();
|
|
408
|
+
}
|
|
233
409
|
}
|
|
234
410
|
/**
|
|
235
411
|
* Forget the in-flight runId when a chain errors out. We don't fire
|
|
236
412
|
* the hook on error — the trajectory is by definition incomplete.
|
|
237
413
|
*/
|
|
238
414
|
handleChainError(_err, runId, _parentRunId) {
|
|
415
|
+
// V0.4 (R1 P1-4): on error we discard pending trajectory dispatch —
|
|
416
|
+
// an errored chain has no complete trajectory by definition.
|
|
239
417
|
this.runIdToName.delete(runId);
|
|
418
|
+
this.pendingTrajectoryDispatch.delete(runId);
|
|
419
|
+
}
|
|
420
|
+
/**
|
|
421
|
+
* V0.4 (S1235) — tool-chain start event. LangGraph fires `handleToolStart`
|
|
422
|
+
* for every tool-invocation a node performs (whether via `ToolNode`,
|
|
423
|
+
* `createReactAgent`, or a custom tool-call dispatcher). We use the
|
|
424
|
+
* `parentRunId` slot to associate the tool with the tracking node and
|
|
425
|
+
* emit a `DarwinToolEvent` so consumers can build per-tool OTEL spans
|
|
426
|
+
* or progress UIs.
|
|
427
|
+
*
|
|
428
|
+
* If `parentRunId` is missing OR the parent is not a tracked node, the
|
|
429
|
+
* tool event is silently dropped — the handler never surfaces unmapped
|
|
430
|
+
* activity (consistent with the chain-side `resolved.has(nodeName)` gate).
|
|
431
|
+
*/
|
|
432
|
+
handleToolStart(_tool, input, runId, parentRunId, _tags, _metadata, _runType, name) {
|
|
433
|
+
if (typeof parentRunId !== "string")
|
|
434
|
+
return;
|
|
435
|
+
const inFlight = this.runIdToName.get(parentRunId);
|
|
436
|
+
if (!inFlight)
|
|
437
|
+
return;
|
|
438
|
+
const entry = this.resolved.get(inFlight.nodeName);
|
|
439
|
+
if (!entry)
|
|
440
|
+
return;
|
|
441
|
+
const toolName = typeof name === "string" && name.length > 0 ? name : "<anonymous-tool>";
|
|
442
|
+
// V0.4 (R1 P1-1 fix): cache the tool name keyed by tool runId so
|
|
443
|
+
// `handleToolEnd` / `handleToolError` can recover it. The LangChain
|
|
444
|
+
// tool-end signature does NOT carry the name reliably across versions.
|
|
445
|
+
if (this.maxInFlightToolRuns !== Infinity && !this.toolRunIdToName.has(runId)) {
|
|
446
|
+
if (this.toolRunIdToName.size >= this.maxInFlightToolRuns) {
|
|
447
|
+
const oldest = this.toolRunIdToName.keys().next().value;
|
|
448
|
+
if (oldest !== undefined)
|
|
449
|
+
this.toolRunIdToName.delete(oldest);
|
|
450
|
+
}
|
|
451
|
+
}
|
|
452
|
+
this.toolRunIdToName.set(runId, toolName);
|
|
453
|
+
// V0.4 (R1 P1-4 fix): increment pending-tools counter on the chain
|
|
454
|
+
// so `handleChainEnd` knows to defer trajectory dispatch.
|
|
455
|
+
inFlight.pendingTools++;
|
|
456
|
+
if (!this.onToolEvent)
|
|
457
|
+
return;
|
|
458
|
+
const event = {
|
|
459
|
+
nodeName: inFlight.nodeName,
|
|
460
|
+
agentName: entry.agentName,
|
|
461
|
+
toolName,
|
|
462
|
+
phase: "start",
|
|
463
|
+
runId,
|
|
464
|
+
parentRunId,
|
|
465
|
+
...(typeof input === "string" ? { input } : {}),
|
|
466
|
+
};
|
|
467
|
+
this.dispatchToolEvent(event);
|
|
468
|
+
}
|
|
469
|
+
/**
|
|
470
|
+
* V0.4 (S1235) — tool-chain end event.
|
|
471
|
+
*/
|
|
472
|
+
handleToolEnd(output, runId, parentRunId) {
|
|
473
|
+
if (typeof parentRunId !== "string")
|
|
474
|
+
return;
|
|
475
|
+
const inFlight = this.runIdToName.get(parentRunId);
|
|
476
|
+
if (!inFlight) {
|
|
477
|
+
// Pending-tools counter is gone with the chain — best-effort
|
|
478
|
+
// cleanup of the tool-name cache only.
|
|
479
|
+
this.toolRunIdToName.delete(runId);
|
|
480
|
+
return;
|
|
481
|
+
}
|
|
482
|
+
const entry = this.resolved.get(inFlight.nodeName);
|
|
483
|
+
if (!entry) {
|
|
484
|
+
this.toolRunIdToName.delete(runId);
|
|
485
|
+
return;
|
|
486
|
+
}
|
|
487
|
+
// V0.4 (R1 P1-1 fix): recover the tool name from the cache populated
|
|
488
|
+
// at `handleToolStart`. Fall back to inspecting `output.name` for
|
|
489
|
+
// adversarial cases where start was missed (eg LangChain version
|
|
490
|
+
// mismatch). Both paths preserve the start/end name symmetry that
|
|
491
|
+
// older revisions broke.
|
|
492
|
+
let toolName = this.toolRunIdToName.get(runId);
|
|
493
|
+
if (!toolName) {
|
|
494
|
+
if (output && typeof output === "object" && "name" in output) {
|
|
495
|
+
const n = output.name;
|
|
496
|
+
if (typeof n === "string" && n.length > 0)
|
|
497
|
+
toolName = n;
|
|
498
|
+
}
|
|
499
|
+
if (!toolName)
|
|
500
|
+
toolName = "<anonymous-tool>";
|
|
501
|
+
}
|
|
502
|
+
this.toolRunIdToName.delete(runId);
|
|
503
|
+
if (this.onToolEvent) {
|
|
504
|
+
const event = {
|
|
505
|
+
nodeName: inFlight.nodeName,
|
|
506
|
+
agentName: entry.agentName,
|
|
507
|
+
toolName,
|
|
508
|
+
phase: "end",
|
|
509
|
+
runId,
|
|
510
|
+
parentRunId,
|
|
511
|
+
output,
|
|
512
|
+
};
|
|
513
|
+
this.dispatchToolEvent(event);
|
|
514
|
+
}
|
|
515
|
+
// V0.4 (R1 P1-4 fix): decrement pending counter and drain the
|
|
516
|
+
// deferred trajectory dispatch if this was the last tool AND
|
|
517
|
+
// handleChainEnd had already fired.
|
|
518
|
+
inFlight.pendingTools = Math.max(0, inFlight.pendingTools - 1);
|
|
519
|
+
if (inFlight.finalized && inFlight.pendingTools === 0) {
|
|
520
|
+
const dispatch = this.pendingTrajectoryDispatch.get(parentRunId);
|
|
521
|
+
if (dispatch) {
|
|
522
|
+
this.pendingTrajectoryDispatch.delete(parentRunId);
|
|
523
|
+
dispatch();
|
|
524
|
+
}
|
|
525
|
+
this.runIdToName.delete(parentRunId);
|
|
526
|
+
}
|
|
527
|
+
}
|
|
528
|
+
/**
|
|
529
|
+
* V0.4 (S1235) — tool-chain error event.
|
|
530
|
+
*/
|
|
531
|
+
handleToolError(err, runId, parentRunId) {
|
|
532
|
+
if (typeof parentRunId !== "string")
|
|
533
|
+
return;
|
|
534
|
+
const inFlight = this.runIdToName.get(parentRunId);
|
|
535
|
+
if (!inFlight) {
|
|
536
|
+
this.toolRunIdToName.delete(runId);
|
|
537
|
+
return;
|
|
538
|
+
}
|
|
539
|
+
const entry = this.resolved.get(inFlight.nodeName);
|
|
540
|
+
if (!entry) {
|
|
541
|
+
this.toolRunIdToName.delete(runId);
|
|
542
|
+
return;
|
|
543
|
+
}
|
|
544
|
+
// V0.4 (R1 P1-1 fix): recover the tool name from the cache.
|
|
545
|
+
const toolName = this.toolRunIdToName.get(runId) ?? "<anonymous-tool>";
|
|
546
|
+
this.toolRunIdToName.delete(runId);
|
|
547
|
+
if (this.onToolEvent) {
|
|
548
|
+
const event = {
|
|
549
|
+
nodeName: inFlight.nodeName,
|
|
550
|
+
agentName: entry.agentName,
|
|
551
|
+
toolName,
|
|
552
|
+
phase: "error",
|
|
553
|
+
runId,
|
|
554
|
+
parentRunId,
|
|
555
|
+
error: err instanceof Error ? err : new Error(String(err)),
|
|
556
|
+
};
|
|
557
|
+
this.dispatchToolEvent(event);
|
|
558
|
+
}
|
|
559
|
+
// V0.4 (R1 P1-4 fix): mirror the pending-count drain from handleToolEnd.
|
|
560
|
+
inFlight.pendingTools = Math.max(0, inFlight.pendingTools - 1);
|
|
561
|
+
if (inFlight.finalized && inFlight.pendingTools === 0) {
|
|
562
|
+
const dispatch = this.pendingTrajectoryDispatch.get(parentRunId);
|
|
563
|
+
if (dispatch) {
|
|
564
|
+
this.pendingTrajectoryDispatch.delete(parentRunId);
|
|
565
|
+
dispatch();
|
|
566
|
+
}
|
|
567
|
+
this.runIdToName.delete(parentRunId);
|
|
568
|
+
}
|
|
569
|
+
}
|
|
570
|
+
dispatchToolEvent(event) {
|
|
571
|
+
void Promise.resolve()
|
|
572
|
+
.then(() => this.onToolEvent(event))
|
|
573
|
+
.catch((err) => this.swallowTool(err));
|
|
240
574
|
}
|
|
241
575
|
swallow(err) {
|
|
242
576
|
// R1 V0.2 Critic Finding 5 (S1185): do NOT short-circuit on falsy
|
|
@@ -249,6 +583,14 @@ export class DarwinCallbackHandler extends BaseCallbackHandler {
|
|
|
249
583
|
`Subsequent throws will be silent. Original error: ` +
|
|
250
584
|
`${err instanceof Error ? err.message : String(err)}`);
|
|
251
585
|
}
|
|
586
|
+
swallowTool(err) {
|
|
587
|
+
if (this.toolWarned)
|
|
588
|
+
return;
|
|
589
|
+
this.toolWarned = true;
|
|
590
|
+
console.warn(`[darwin-langgraph] DarwinCallbackHandler.onToolEvent threw — swallowed. ` +
|
|
591
|
+
`Subsequent throws will be silent. Original error: ` +
|
|
592
|
+
`${err instanceof Error ? err.message : String(err)}`);
|
|
593
|
+
}
|
|
252
594
|
/**
|
|
253
595
|
* Helper for tests + debug introspection — returns how many in-flight
|
|
254
596
|
* chain runs we are currently tracking. Should be 0 between
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"darwin-callback-handler.js","sourceRoot":"","sources":["../src/darwin-callback-handler.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"darwin-callback-handler.js","sourceRoot":"","sources":["../src/darwin-callback-handler.ts"],"names":[],"mappings":"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"}
|
package/dist/errors.d.ts
CHANGED
|
@@ -19,4 +19,20 @@ export declare class DarwinEvolutionHookError extends Error {
|
|
|
19
19
|
cause?: unknown;
|
|
20
20
|
});
|
|
21
21
|
}
|
|
22
|
+
/**
|
|
23
|
+
* Thrown by `createTokenBudgetCallbacks` when a configured per-invocation
|
|
24
|
+
* token budget is exceeded. The handler attaches the cumulative tokens
|
|
25
|
+
* counted at the moment of the throw so consumers can log / alert.
|
|
26
|
+
*
|
|
27
|
+
* NEW V0.4 (S1235).
|
|
28
|
+
*/
|
|
29
|
+
export declare class DarwinTokenBudgetExceededError extends Error {
|
|
30
|
+
readonly budget: number;
|
|
31
|
+
readonly totalTokens: number;
|
|
32
|
+
readonly providerHint: string | undefined;
|
|
33
|
+
readonly name = "DarwinTokenBudgetExceededError";
|
|
34
|
+
constructor(message: string, budget: number, totalTokens: number, providerHint: string | undefined, options?: {
|
|
35
|
+
cause?: unknown;
|
|
36
|
+
});
|
|
37
|
+
}
|
|
22
38
|
//# sourceMappingURL=errors.d.ts.map
|
package/dist/errors.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,qBAAa,eAAgB,SAAQ,KAAK;aAKtB,SAAS,EAAE,MAAM;IAJnC,SAAyB,IAAI,qBAAqB;gBAGhD,OAAO,EAAE,MAAM,EACC,SAAS,EAAE,MAAM,EACjC,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE;CAIhC;AAED,qBAAa,wBAAyB,SAAQ,KAAK;IACjD,SAAyB,IAAI,8BAA8B;gBAE/C,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE;CAG3D"}
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,qBAAa,eAAgB,SAAQ,KAAK;aAKtB,SAAS,EAAE,MAAM;IAJnC,SAAyB,IAAI,qBAAqB;gBAGhD,OAAO,EAAE,MAAM,EACC,SAAS,EAAE,MAAM,EACjC,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE;CAIhC;AAED,qBAAa,wBAAyB,SAAQ,KAAK;IACjD,SAAyB,IAAI,8BAA8B;gBAE/C,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE;CAG3D;AAED;;;;;;GAMG;AACH,qBAAa,8BAA+B,SAAQ,KAAK;aAKrC,MAAM,EAAE,MAAM;aACd,WAAW,EAAE,MAAM;aACnB,YAAY,EAAE,MAAM,GAAG,SAAS;IANlD,SAAyB,IAAI,oCAAoC;gBAG/D,OAAO,EAAE,MAAM,EACC,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,GAAG,SAAS,EAChD,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE;CAIhC"}
|
package/dist/errors.js
CHANGED
|
@@ -20,4 +20,23 @@ export class DarwinEvolutionHookError extends Error {
|
|
|
20
20
|
super(message, options);
|
|
21
21
|
}
|
|
22
22
|
}
|
|
23
|
+
/**
|
|
24
|
+
* Thrown by `createTokenBudgetCallbacks` when a configured per-invocation
|
|
25
|
+
* token budget is exceeded. The handler attaches the cumulative tokens
|
|
26
|
+
* counted at the moment of the throw so consumers can log / alert.
|
|
27
|
+
*
|
|
28
|
+
* NEW V0.4 (S1235).
|
|
29
|
+
*/
|
|
30
|
+
export class DarwinTokenBudgetExceededError extends Error {
|
|
31
|
+
budget;
|
|
32
|
+
totalTokens;
|
|
33
|
+
providerHint;
|
|
34
|
+
name = "DarwinTokenBudgetExceededError";
|
|
35
|
+
constructor(message, budget, totalTokens, providerHint, options) {
|
|
36
|
+
super(message, options);
|
|
37
|
+
this.budget = budget;
|
|
38
|
+
this.totalTokens = totalTokens;
|
|
39
|
+
this.providerHint = providerHint;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
23
42
|
//# sourceMappingURL=errors.js.map
|
package/dist/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,OAAO,eAAgB,SAAQ,KAAK;IAKtB;IAJO,IAAI,GAAG,iBAAiB,CAAC;IAElD,YACE,OAAe,EACC,SAAiB,EACjC,OAA6B;QAE7B,KAAK,CAAC,OAAO,EAAE,OAAuB,CAAC,CAAC;QAHxB,cAAS,GAAT,SAAS,CAAQ;IAInC,CAAC;CACF;AAED,MAAM,OAAO,wBAAyB,SAAQ,KAAK;IACxB,IAAI,GAAG,0BAA0B,CAAC;IAE3D,YAAY,OAAe,EAAE,OAA6B;QACxD,KAAK,CAAC,OAAO,EAAE,OAAuB,CAAC,CAAC;IAC1C,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,OAAO,eAAgB,SAAQ,KAAK;IAKtB;IAJO,IAAI,GAAG,iBAAiB,CAAC;IAElD,YACE,OAAe,EACC,SAAiB,EACjC,OAA6B;QAE7B,KAAK,CAAC,OAAO,EAAE,OAAuB,CAAC,CAAC;QAHxB,cAAS,GAAT,SAAS,CAAQ;IAInC,CAAC;CACF;AAED,MAAM,OAAO,wBAAyB,SAAQ,KAAK;IACxB,IAAI,GAAG,0BAA0B,CAAC;IAE3D,YAAY,OAAe,EAAE,OAA6B;QACxD,KAAK,CAAC,OAAO,EAAE,OAAuB,CAAC,CAAC;IAC1C,CAAC;CACF;AAED;;;;;;GAMG;AACH,MAAM,OAAO,8BAA+B,SAAQ,KAAK;IAKrC;IACA;IACA;IANO,IAAI,GAAG,gCAAgC,CAAC;IAEjE,YACE,OAAe,EACC,MAAc,EACd,WAAmB,EACnB,YAAgC,EAChD,OAA6B;QAE7B,KAAK,CAAC,OAAO,EAAE,OAAuB,CAAC,CAAC;QALxB,WAAM,GAAN,MAAM,CAAQ;QACd,gBAAW,GAAX,WAAW,CAAQ;QACnB,iBAAY,GAAZ,YAAY,CAAoB;IAIlD,CAAC;CACF"}
|
package/dist/index.d.ts
CHANGED
|
@@ -40,11 +40,15 @@
|
|
|
40
40
|
export { createDarwinNode, type CreateDarwinNodeOptions, type DarwinNodeFn, type DarwinRunOptionsPassthrough, } from "./create-darwin-node.js";
|
|
41
41
|
export { darwinAnnotation, getDarwinChannelSpec, lastWriteWinsTrajectoryReducer, } from "./darwin-annotation.js";
|
|
42
42
|
export { withDarwinEvolution, type DarwinEvolutionOptions, type DarwinNodeMapEntry, type DarwinTrajectoryEvent, } from "./with-darwin-evolution.js";
|
|
43
|
-
export { DarwinCallbackHandler, type DarwinCallbackHandlerOptions, } from "./darwin-callback-handler.js";
|
|
43
|
+
export { DarwinCallbackHandler, MAX_KNOWN_TRACE_VERSION, type DarwinCallbackHandlerOptions, type DarwinToolEvent, } from "./darwin-callback-handler.js";
|
|
44
44
|
export { toOtelAttributes, toolCallToOtelAttributes, type OtelAttributes, type ToOtelAttributesOptions, type ToolCallOtelOptions, } from "./to-otel-attributes.js";
|
|
45
45
|
export { darwinMessagesAnnotation, getMessagesChannelSpec, } from "./darwin-messages-annotation.js";
|
|
46
|
-
export {
|
|
46
|
+
export { darwinAccumulatingAnnotation, getDarwinAccumulatingChannelSpec, darwinTrajectoryAccumulatorReducer, } from "./darwin-accumulating-annotation.js";
|
|
47
|
+
export { TokenBudgetCallbackHandler, createTokenBudgetCallbacks, type TokenBudgetOptions, type TokenBudgetExceedInfo, type TokenBudgetTickInfo, } from "./token-budget.js";
|
|
48
|
+
export { toW3CTraceContext, type ToW3CTraceContextOptions, type W3CTraceContext, } from "./to-w3c-trace-context.js";
|
|
49
|
+
export type { DarwinNodeAttemptInfo } from "./create-darwin-node.js";
|
|
50
|
+
export { DarwinNodeError, DarwinEvolutionHookError, DarwinTokenBudgetExceededError, } from "./errors.js";
|
|
47
51
|
export type { AgentDefinition, DarwinExperiment, ExecutionTrace, MemoryProvider, RunResult, TraceToolCall, TraceTokenUsage, TraceTurnError, } from "./types.js";
|
|
48
52
|
/** Adapter version — sync with `package.json` on every release. */
|
|
49
|
-
export declare const VERSION = "0.
|
|
53
|
+
export declare const VERSION = "0.4.0-alpha.1";
|
|
50
54
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAEH,OAAO,EACL,gBAAgB,EAChB,KAAK,uBAAuB,EAC5B,KAAK,YAAY,EACjB,KAAK,2BAA2B,GACjC,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,8BAA8B,GAC/B,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,mBAAmB,EACnB,KAAK,sBAAsB,EAC3B,KAAK,kBAAkB,EACvB,KAAK,qBAAqB,GAC3B,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAEH,OAAO,EACL,gBAAgB,EAChB,KAAK,uBAAuB,EAC5B,KAAK,YAAY,EACjB,KAAK,2BAA2B,GACjC,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,8BAA8B,GAC/B,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,mBAAmB,EACnB,KAAK,sBAAsB,EAC3B,KAAK,kBAAkB,EACvB,KAAK,qBAAqB,GAC3B,MAAM,4BAA4B,CAAC;AAIpC,OAAO,EACL,qBAAqB,EACrB,uBAAuB,EACvB,KAAK,4BAA4B,EACjC,KAAK,eAAe,GACrB,MAAM,8BAA8B,CAAC;AAItC,OAAO,EACL,gBAAgB,EAChB,wBAAwB,EACxB,KAAK,cAAc,EACnB,KAAK,uBAAuB,EAC5B,KAAK,mBAAmB,GACzB,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EACL,wBAAwB,EACxB,sBAAsB,GACvB,MAAM,iCAAiC,CAAC;AAGzC,OAAO,EACL,4BAA4B,EAC5B,gCAAgC,EAChC,kCAAkC,GACnC,MAAM,qCAAqC,CAAC;AAG7C,OAAO,EACL,0BAA0B,EAC1B,0BAA0B,EAC1B,KAAK,kBAAkB,EACvB,KAAK,qBAAqB,EAC1B,KAAK,mBAAmB,GACzB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACL,iBAAiB,EACjB,KAAK,wBAAwB,EAC7B,KAAK,eAAe,GACrB,MAAM,2BAA2B,CAAC;AAGnC,YAAY,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAErE,OAAO,EACL,eAAe,EACf,wBAAwB,EACxB,8BAA8B,GAC/B,MAAM,aAAa,CAAC;AAErB,YAAY,EACV,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,cAAc,EACd,SAAS,EACT,aAAa,EACb,eAAe,EACf,cAAc,GACf,MAAM,YAAY,CAAC;AAEpB,mEAAmE;AACnE,eAAO,MAAM,OAAO,kBAAkB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -41,12 +41,20 @@ export { createDarwinNode, } from "./create-darwin-node.js";
|
|
|
41
41
|
export { darwinAnnotation, getDarwinChannelSpec, lastWriteWinsTrajectoryReducer, } from "./darwin-annotation.js";
|
|
42
42
|
export { withDarwinEvolution, } from "./with-darwin-evolution.js";
|
|
43
43
|
// V0.2 — LangChain-native callback handler (preferred over `withDarwinEvolution`)
|
|
44
|
-
|
|
44
|
+
// V0.4 — extended with onToolEvent + maxTrajectoryBytes + MAX_KNOWN_TRACE_VERSION
|
|
45
|
+
export { DarwinCallbackHandler, MAX_KNOWN_TRACE_VERSION, } from "./darwin-callback-handler.js";
|
|
45
46
|
// V0.2 — OTEL GenAI Semantic Conventions mapping
|
|
47
|
+
// V0.4 — extended with langGraphNode / langGraphStep / userId / requestId
|
|
46
48
|
export { toOtelAttributes, toolCallToOtelAttributes, } from "./to-otel-attributes.js";
|
|
47
49
|
// V0.2 — MessagesAnnotation interop for graphs mixing createReactAgent + createDarwinNode
|
|
48
50
|
export { darwinMessagesAnnotation, getMessagesChannelSpec, } from "./darwin-messages-annotation.js";
|
|
49
|
-
|
|
51
|
+
// V0.4 — accumulating annotation for graphs that fan-out multiple Darwin nodes
|
|
52
|
+
export { darwinAccumulatingAnnotation, getDarwinAccumulatingChannelSpec, darwinTrajectoryAccumulatorReducer, } from "./darwin-accumulating-annotation.js";
|
|
53
|
+
// V0.4 — token-budget callbacks (production guard against runaway agents)
|
|
54
|
+
export { TokenBudgetCallbackHandler, createTokenBudgetCallbacks, } from "./token-budget.js";
|
|
55
|
+
// V0.4 — W3C Trace Context mapper for cross-process span correlation
|
|
56
|
+
export { toW3CTraceContext, } from "./to-w3c-trace-context.js";
|
|
57
|
+
export { DarwinNodeError, DarwinEvolutionHookError, DarwinTokenBudgetExceededError, } from "./errors.js";
|
|
50
58
|
/** Adapter version — sync with `package.json` on every release. */
|
|
51
|
-
export const VERSION = "0.
|
|
59
|
+
export const VERSION = "0.4.0-alpha.1";
|
|
52
60
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAEH,OAAO,EACL,gBAAgB,GAIjB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,8BAA8B,GAC/B,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,mBAAmB,GAIpB,MAAM,4BAA4B,CAAC;AAEpC,kFAAkF;AAClF,OAAO,EACL,qBAAqB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAEH,OAAO,EACL,gBAAgB,GAIjB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,8BAA8B,GAC/B,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,mBAAmB,GAIpB,MAAM,4BAA4B,CAAC;AAEpC,kFAAkF;AAClF,kFAAkF;AAClF,OAAO,EACL,qBAAqB,EACrB,uBAAuB,GAGxB,MAAM,8BAA8B,CAAC;AAEtC,iDAAiD;AACjD,0EAA0E;AAC1E,OAAO,EACL,gBAAgB,EAChB,wBAAwB,GAIzB,MAAM,yBAAyB,CAAC;AAEjC,0FAA0F;AAC1F,OAAO,EACL,wBAAwB,EACxB,sBAAsB,GACvB,MAAM,iCAAiC,CAAC;AAEzC,+EAA+E;AAC/E,OAAO,EACL,4BAA4B,EAC5B,gCAAgC,EAChC,kCAAkC,GACnC,MAAM,qCAAqC,CAAC;AAE7C,0EAA0E;AAC1E,OAAO,EACL,0BAA0B,EAC1B,0BAA0B,GAI3B,MAAM,mBAAmB,CAAC;AAE3B,qEAAqE;AACrE,OAAO,EACL,iBAAiB,GAGlB,MAAM,2BAA2B,CAAC;AAKnC,OAAO,EACL,eAAe,EACf,wBAAwB,EACxB,8BAA8B,GAC/B,MAAM,aAAa,CAAC;AAarB,mEAAmE;AACnE,MAAM,CAAC,MAAM,OAAO,GAAG,eAAe,CAAC"}
|