darwin-langgraph 0.2.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.
Files changed (39) hide show
  1. package/CHANGELOG.md +348 -0
  2. package/README.md +108 -3
  3. package/dist/create-darwin-node.d.ts +55 -0
  4. package/dist/create-darwin-node.d.ts.map +1 -1
  5. package/dist/create-darwin-node.js +56 -1
  6. package/dist/create-darwin-node.js.map +1 -1
  7. package/dist/darwin-accumulating-annotation.d.ts +81 -0
  8. package/dist/darwin-accumulating-annotation.d.ts.map +1 -0
  9. package/dist/darwin-accumulating-annotation.js +144 -0
  10. package/dist/darwin-accumulating-annotation.js.map +1 -0
  11. package/dist/darwin-callback-handler.d.ts +161 -2
  12. package/dist/darwin-callback-handler.d.ts.map +1 -1
  13. package/dist/darwin-callback-handler.js +417 -25
  14. package/dist/darwin-callback-handler.js.map +1 -1
  15. package/dist/errors.d.ts +16 -0
  16. package/dist/errors.d.ts.map +1 -1
  17. package/dist/errors.js +19 -0
  18. package/dist/errors.js.map +1 -1
  19. package/dist/index.d.ts +7 -3
  20. package/dist/index.d.ts.map +1 -1
  21. package/dist/index.js +11 -3
  22. package/dist/index.js.map +1 -1
  23. package/dist/to-otel-attributes.d.ts +49 -0
  24. package/dist/to-otel-attributes.d.ts.map +1 -1
  25. package/dist/to-otel-attributes.js +38 -2
  26. package/dist/to-otel-attributes.js.map +1 -1
  27. package/dist/to-w3c-trace-context.d.ts +81 -0
  28. package/dist/to-w3c-trace-context.d.ts.map +1 -0
  29. package/dist/to-w3c-trace-context.js +134 -0
  30. package/dist/to-w3c-trace-context.js.map +1 -0
  31. package/dist/token-budget.d.ts +141 -0
  32. package/dist/token-budget.d.ts.map +1 -0
  33. package/dist/token-budget.js +225 -0
  34. package/dist/token-budget.js.map +1 -0
  35. package/dist/with-darwin-evolution.d.ts +40 -0
  36. package/dist/with-darwin-evolution.d.ts.map +1 -1
  37. package/dist/with-darwin-evolution.js +55 -1
  38. package/dist/with-darwin-evolution.js.map +1 -1
  39. package/package.json +2 -2
@@ -51,6 +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;
64
+ /** Default cap. Aligned with reasonable LangGraph fan-out (~1k nodes / minute). */
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;
54
74
  function isExecutionTrace(value) {
55
75
  if (!value || typeof value !== "object")
56
76
  return false;
@@ -59,9 +79,61 @@ function isExecutionTrace(value) {
59
79
  // version. Downstream consumers (e.g. toOtelAttributes) read
60
80
  // `toolCalls.length` directly — a malformed trace with missing arrays
61
81
  // would crash there. Guard explicitly.
62
- return (v.version === 1 &&
63
- Array.isArray(v.toolCalls) &&
64
- Array.isArray(v.errors));
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
+ };
65
137
  }
66
138
  function normaliseNodeMap(nodeMap, defaultKey) {
67
139
  const resolved = new Map();
@@ -96,8 +168,48 @@ export class DarwinCallbackHandler extends BaseCallbackHandler {
96
168
  awaitHandlers = false;
97
169
  resolved;
98
170
  onTrajectory;
171
+ onToolEvent;
172
+ /**
173
+ * runId → in-flight run state. Map preserves insertion order so the
174
+ * oldest entry is always at `.keys().next().value` for LRU eviction
175
+ * when the cap is exceeded (V0.3 hung-invoke guard).
176
+ */
99
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
+ */
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();
100
208
  warned = false;
209
+ evictionWarned = false;
210
+ toolWarned = false;
211
+ /** V0.4 — once-per-handler warn for trajectory size cap. */
212
+ trajectoryTruncatedWarned = false;
101
213
  constructor(opts) {
102
214
  super();
103
215
  if (!opts || !opts.nodeMap || Object.keys(opts.nodeMap).length === 0) {
@@ -106,6 +218,37 @@ export class DarwinCallbackHandler extends BaseCallbackHandler {
106
218
  const defaultKey = opts.defaultTrajectoryKey ?? "darwinTrajectory";
107
219
  this.resolved = normaliseNodeMap(opts.nodeMap, defaultKey);
108
220
  this.onTrajectory = opts.onTrajectory;
221
+ this.onToolEvent = opts.onToolEvent;
222
+ // V0.3 (S1187): hung-invoke guard. NaN / negative / non-number falls
223
+ // back to default. Infinity disables the cap (opt-out).
224
+ const raw = opts.maxInFlightRuns;
225
+ if (raw === Infinity) {
226
+ this.maxInFlightRuns = Infinity;
227
+ }
228
+ else if (typeof raw === "number" && Number.isFinite(raw) && raw > 0) {
229
+ this.maxInFlightRuns = Math.floor(raw);
230
+ }
231
+ else {
232
+ this.maxInFlightRuns = DEFAULT_MAX_IN_FLIGHT_RUNS;
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;
109
252
  }
110
253
  /**
111
254
  * Capture the run-id → node-name mapping.
@@ -117,7 +260,7 @@ export class DarwinCallbackHandler extends BaseCallbackHandler {
117
260
  * `BaseCallbackHandler` d.ts is undefined for LangGraph chains at
118
261
  * runtime — we keep it as a fallback for non-LangGraph chains.
119
262
  */
120
- handleChainStart(_chain, _inputs, runId, _runType, _tags, metadata, runName, _parentRunId, _extra) {
263
+ handleChainStart(_chain, _inputs, runId, _runType, _tags, metadata, runName, parentRunId, _extra) {
121
264
  // Primary source: metadata.langgraph_node (set by LangGraph internals).
122
265
  let nodeName;
123
266
  if (metadata && typeof metadata === "object") {
@@ -136,7 +279,33 @@ export class DarwinCallbackHandler extends BaseCallbackHandler {
136
279
  // makes lookup in handleChainEnd a simple `.has()` check.
137
280
  if (!this.resolved.has(nodeName))
138
281
  return;
139
- this.runIdToName.set(runId, nodeName);
282
+ // V0.3 (S1187): hung-invoke guard. If we are about to exceed the cap
283
+ // AND the runId is genuinely new (not a re-fire), evict the oldest
284
+ // entry. Map iteration order is insertion order — the first key is
285
+ // the oldest. Warn once per handler instance so a real leak shows up
286
+ // in logs without spamming.
287
+ if (this.maxInFlightRuns !== Infinity &&
288
+ !this.runIdToName.has(runId) &&
289
+ this.runIdToName.size >= this.maxInFlightRuns) {
290
+ const oldest = this.runIdToName.keys().next().value;
291
+ if (oldest !== undefined) {
292
+ this.runIdToName.delete(oldest);
293
+ }
294
+ if (!this.evictionWarned) {
295
+ this.evictionWarned = true;
296
+ console.warn(`[darwin-langgraph] DarwinCallbackHandler: in-flight runs exceeded ` +
297
+ `${this.maxInFlightRuns} — evicting oldest entry. This usually ` +
298
+ `means handleChainEnd / handleChainError did not fire for some ` +
299
+ `runs (worker crash, parent invoke aborted mid-flight, or ` +
300
+ `LangGraph internal bug). Subsequent evictions are silent.`);
301
+ }
302
+ }
303
+ this.runIdToName.set(runId, {
304
+ nodeName,
305
+ parentRunId: typeof parentRunId === "string" ? parentRunId : undefined,
306
+ pendingTools: 0,
307
+ finalized: false,
308
+ });
140
309
  }
141
310
  /**
142
311
  * When a node-chain finishes, look up its name, locate the matching
@@ -148,45 +317,260 @@ export class DarwinCallbackHandler extends BaseCallbackHandler {
148
317
  * partial state under its configured name.
149
318
  */
150
319
  handleChainEnd(outputs, runId, _parentRunId, _tags, _kwargs) {
151
- const runName = this.runIdToName.get(runId);
152
- if (!runName)
153
- return;
154
- // One-shot cleanup of the mapping so completed runs don't leak.
155
- // R1 V0.2 Critic Finding 1 (S1185): the `runIdToName.delete` here
156
- // is the ONLY dedup we need — LangGraph guarantees `handleChainEnd`
157
- // fires exactly once per `runId`, and after deletion any second
158
- // call returns early at `if (!runName)`. The pre-V0.2 `firedRuns`
159
- // Set was redundant AND leaked unbounded — removed.
160
- this.runIdToName.delete(runId);
161
- if (!this.onTrajectory)
320
+ const inFlight = this.runIdToName.get(runId);
321
+ if (!inFlight)
162
322
  return;
163
- const entry = this.resolved.get(runName);
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.
343
+ return;
344
+ }
345
+ const entry = this.resolved.get(inFlight.nodeName);
164
346
  if (!entry)
165
347
  return;
166
348
  if (outputs === null || typeof outputs !== "object")
167
349
  return;
168
- const trajectory = outputs[entry.trajectoryKey];
169
- if (!isExecutionTrace(trajectory))
350
+ const trajectoryRaw = outputs[entry.trajectoryKey];
351
+ if (!isExecutionTrace(trajectoryRaw))
170
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
+ }
171
382
  const frozen = Object.freeze({ ...outputs });
383
+ // V0.3 (S1187): propagate runId + parentRunId so OTEL exporters,
384
+ // Langfuse, LangSmith, etc. can rebuild the span hierarchy from the
385
+ // event payload alone (no separate runId-tracking side-channel).
172
386
  const event = {
173
- nodeName: runName,
387
+ nodeName: inFlight.nodeName,
174
388
  agentName: entry.agentName,
175
389
  trajectory,
176
390
  finalState: frozen,
391
+ runId,
392
+ ...(inFlight.parentRunId !== undefined ? { parentRunId: inFlight.parentRunId } : {}),
393
+ ...(trajectoryTruncated ? { trajectoryTruncated: true } : {}),
177
394
  };
178
- // Fire-and-forget. The handler base class supports async returns
179
- // but we don't want to block the chain end on slow user callbacks.
180
- void Promise.resolve()
181
- .then(() => this.onTrajectory(event))
182
- .catch((err) => this.swallow(err));
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
+ }
183
409
  }
184
410
  /**
185
411
  * Forget the in-flight runId when a chain errors out. We don't fire
186
412
  * the hook on error — the trajectory is by definition incomplete.
187
413
  */
188
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.
189
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));
190
574
  }
191
575
  swallow(err) {
192
576
  // R1 V0.2 Critic Finding 5 (S1185): do NOT short-circuit on falsy
@@ -199,6 +583,14 @@ export class DarwinCallbackHandler extends BaseCallbackHandler {
199
583
  `Subsequent throws will be silent. Original error: ` +
200
584
  `${err instanceof Error ? err.message : String(err)}`);
201
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
+ }
202
594
  /**
203
595
  * Helper for tests + debug introspection — returns how many in-flight
204
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
@@ -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
@@ -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 } 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 { DarwinNodeError, DarwinEvolutionHookError } from "./errors.js";
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.2.0-alpha.1";
53
+ export declare const VERSION = "0.4.0-alpha.1";
50
54
  //# sourceMappingURL=index.d.ts.map
@@ -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;AAGpC,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAGrE,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;AAEzC,OAAO,EAAE,eAAe,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAExE,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"}
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"}