@jackchen_me/open-multi-agent 0.2.0 → 1.0.0

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 (104) hide show
  1. package/.github/workflows/ci.yml +1 -1
  2. package/CLAUDE.md +11 -3
  3. package/README.md +87 -20
  4. package/README_zh.md +85 -25
  5. package/dist/agent/agent.d.ts +15 -1
  6. package/dist/agent/agent.d.ts.map +1 -1
  7. package/dist/agent/agent.js +144 -10
  8. package/dist/agent/agent.js.map +1 -1
  9. package/dist/agent/loop-detector.d.ts +39 -0
  10. package/dist/agent/loop-detector.d.ts.map +1 -0
  11. package/dist/agent/loop-detector.js +122 -0
  12. package/dist/agent/loop-detector.js.map +1 -0
  13. package/dist/agent/pool.d.ts +2 -1
  14. package/dist/agent/pool.d.ts.map +1 -1
  15. package/dist/agent/pool.js +4 -2
  16. package/dist/agent/pool.js.map +1 -1
  17. package/dist/agent/runner.d.ts +23 -1
  18. package/dist/agent/runner.d.ts.map +1 -1
  19. package/dist/agent/runner.js +113 -12
  20. package/dist/agent/runner.js.map +1 -1
  21. package/dist/index.d.ts +3 -1
  22. package/dist/index.d.ts.map +1 -1
  23. package/dist/index.js +2 -0
  24. package/dist/index.js.map +1 -1
  25. package/dist/llm/adapter.d.ts +4 -1
  26. package/dist/llm/adapter.d.ts.map +1 -1
  27. package/dist/llm/adapter.js +11 -0
  28. package/dist/llm/adapter.js.map +1 -1
  29. package/dist/llm/copilot.d.ts.map +1 -1
  30. package/dist/llm/copilot.js +2 -1
  31. package/dist/llm/copilot.js.map +1 -1
  32. package/dist/llm/gemini.d.ts +65 -0
  33. package/dist/llm/gemini.d.ts.map +1 -0
  34. package/dist/llm/gemini.js +317 -0
  35. package/dist/llm/gemini.js.map +1 -0
  36. package/dist/llm/grok.d.ts +21 -0
  37. package/dist/llm/grok.d.ts.map +1 -0
  38. package/dist/llm/grok.js +24 -0
  39. package/dist/llm/grok.js.map +1 -0
  40. package/dist/llm/openai-common.d.ts +8 -1
  41. package/dist/llm/openai-common.d.ts.map +1 -1
  42. package/dist/llm/openai-common.js +35 -2
  43. package/dist/llm/openai-common.js.map +1 -1
  44. package/dist/llm/openai.d.ts +1 -1
  45. package/dist/llm/openai.d.ts.map +1 -1
  46. package/dist/llm/openai.js +20 -2
  47. package/dist/llm/openai.js.map +1 -1
  48. package/dist/orchestrator/orchestrator.d.ts.map +1 -1
  49. package/dist/orchestrator/orchestrator.js +89 -9
  50. package/dist/orchestrator/orchestrator.js.map +1 -1
  51. package/dist/task/queue.d.ts +31 -2
  52. package/dist/task/queue.d.ts.map +1 -1
  53. package/dist/task/queue.js +69 -2
  54. package/dist/task/queue.js.map +1 -1
  55. package/dist/tool/text-tool-extractor.d.ts +32 -0
  56. package/dist/tool/text-tool-extractor.d.ts.map +1 -0
  57. package/dist/tool/text-tool-extractor.js +187 -0
  58. package/dist/tool/text-tool-extractor.js.map +1 -0
  59. package/dist/types.d.ts +139 -7
  60. package/dist/types.d.ts.map +1 -1
  61. package/dist/utils/trace.d.ts +12 -0
  62. package/dist/utils/trace.d.ts.map +1 -0
  63. package/dist/utils/trace.js +30 -0
  64. package/dist/utils/trace.js.map +1 -0
  65. package/examples/06-local-model.ts +1 -0
  66. package/examples/08-gemma4-local.ts +76 -87
  67. package/examples/09-structured-output.ts +73 -0
  68. package/examples/10-task-retry.ts +132 -0
  69. package/examples/11-trace-observability.ts +133 -0
  70. package/examples/12-grok.ts +154 -0
  71. package/examples/13-gemini.ts +48 -0
  72. package/package.json +11 -1
  73. package/src/agent/agent.ts +159 -10
  74. package/src/agent/loop-detector.ts +137 -0
  75. package/src/agent/pool.ts +9 -2
  76. package/src/agent/runner.ts +148 -19
  77. package/src/index.ts +15 -0
  78. package/src/llm/adapter.ts +12 -1
  79. package/src/llm/copilot.ts +2 -1
  80. package/src/llm/gemini.ts +378 -0
  81. package/src/llm/grok.ts +29 -0
  82. package/src/llm/openai-common.ts +41 -2
  83. package/src/llm/openai.ts +23 -3
  84. package/src/orchestrator/orchestrator.ts +105 -11
  85. package/src/task/queue.ts +73 -3
  86. package/src/tool/text-tool-extractor.ts +219 -0
  87. package/src/types.ts +157 -6
  88. package/src/utils/trace.ts +34 -0
  89. package/tests/agent-hooks.test.ts +473 -0
  90. package/tests/agent-pool.test.ts +212 -0
  91. package/tests/approval.test.ts +464 -0
  92. package/tests/built-in-tools.test.ts +393 -0
  93. package/tests/gemini-adapter.test.ts +97 -0
  94. package/tests/grok-adapter.test.ts +74 -0
  95. package/tests/llm-adapters.test.ts +357 -0
  96. package/tests/loop-detection.test.ts +456 -0
  97. package/tests/openai-fallback.test.ts +159 -0
  98. package/tests/orchestrator.test.ts +281 -0
  99. package/tests/scheduler.test.ts +221 -0
  100. package/tests/team-messaging.test.ts +329 -0
  101. package/tests/text-tool-extractor.test.ts +170 -0
  102. package/tests/trace.test.ts +453 -0
  103. package/vitest.config.ts +9 -0
  104. package/examples/09-gemma4-auto-orchestration.ts +0 -162
@@ -22,6 +22,7 @@
22
22
  * console.log(result.output)
23
23
  * ```
24
24
  */
25
+ import { emitTrace, generateRunId } from '../utils/trace.js';
25
26
  import { createAdapter } from '../llm/adapter.js';
26
27
  import { AgentRunner } from './runner.js';
27
28
  import { buildStructuredOutputInstruction, extractJSON, validateOutput, } from './structured-output.js';
@@ -29,6 +30,21 @@ import { buildStructuredOutputInstruction, extractJSON, validateOutput, } from '
29
30
  // Internal helpers
30
31
  // ---------------------------------------------------------------------------
31
32
  const ZERO_USAGE = { input_tokens: 0, output_tokens: 0 };
33
+ /**
34
+ * Combine two {@link AbortSignal}s so that aborting either one cancels the
35
+ * returned signal. Works on Node 18+ (no `AbortSignal.any` required).
36
+ */
37
+ function mergeAbortSignals(a, b) {
38
+ const controller = new AbortController();
39
+ if (a.aborted || b.aborted) {
40
+ controller.abort();
41
+ return controller.signal;
42
+ }
43
+ const abort = () => controller.abort();
44
+ a.addEventListener('abort', abort, { once: true });
45
+ b.addEventListener('abort', abort, { once: true });
46
+ return controller.signal;
47
+ }
32
48
  function addUsage(a, b) {
33
49
  return {
34
50
  input_tokens: a.input_tokens + b.input_tokens,
@@ -101,6 +117,7 @@ export class Agent {
101
117
  allowedTools: this.config.tools,
102
118
  agentName: this.name,
103
119
  agentRole: this.config.systemPrompt?.slice(0, 50) ?? 'assistant',
120
+ loopDetection: this.config.loopDetection,
104
121
  };
105
122
  this.runner = new AgentRunner(adapter, this._toolRegistry, this._toolExecutor, runnerOptions);
106
123
  return this.runner;
@@ -116,11 +133,11 @@ export class Agent {
116
133
  *
117
134
  * Use this for one-shot queries where past context is irrelevant.
118
135
  */
119
- async run(prompt) {
136
+ async run(prompt, runOptions) {
120
137
  const messages = [
121
138
  { role: 'user', content: [{ type: 'text', text: prompt }] },
122
139
  ];
123
- return this.executeRun(messages);
140
+ return this.executeRun(messages, runOptions);
124
141
  }
125
142
  /**
126
143
  * Run `prompt` as part of the ongoing conversation.
@@ -130,6 +147,7 @@ export class Agent {
130
147
  *
131
148
  * Use this for multi-turn interactions.
132
149
  */
150
+ // TODO(#18): accept optional RunOptions to forward trace context
133
151
  async prompt(message) {
134
152
  const userMessage = {
135
153
  role: 'user',
@@ -148,6 +166,7 @@ export class Agent {
148
166
  *
149
167
  * Like {@link run}, this does not use or update the persistent history.
150
168
  */
169
+ // TODO(#18): accept optional RunOptions to forward trace context
151
170
  async *stream(prompt) {
152
171
  const messages = [
153
172
  { role: 'user', content: [{ type: 'text', text: prompt }] },
@@ -206,28 +225,65 @@ export class Agent {
206
225
  * Shared execution path used by both `run` and `prompt`.
207
226
  * Handles state transitions and error wrapping.
208
227
  */
209
- async executeRun(messages) {
228
+ async executeRun(messages, callerOptions) {
210
229
  this.transitionTo('running');
230
+ const agentStartMs = Date.now();
211
231
  try {
232
+ // --- beforeRun hook ---
233
+ if (this.config.beforeRun) {
234
+ const hookCtx = this.buildBeforeRunHookContext(messages);
235
+ const modified = await this.config.beforeRun(hookCtx);
236
+ this.applyHookContext(messages, modified, hookCtx.prompt);
237
+ }
212
238
  const runner = await this.getRunner();
239
+ const internalOnMessage = (msg) => {
240
+ this.state.messages.push(msg);
241
+ callerOptions?.onMessage?.(msg);
242
+ };
243
+ // Auto-generate runId when onTrace is provided but runId is missing
244
+ const needsRunId = callerOptions?.onTrace && !callerOptions.runId;
245
+ // Create a fresh timeout signal per run (not per runner) so that
246
+ // each run() / prompt() call gets its own timeout window.
247
+ const timeoutSignal = this.config.timeoutMs !== undefined && this.config.timeoutMs > 0
248
+ ? AbortSignal.timeout(this.config.timeoutMs)
249
+ : undefined;
250
+ // Merge caller-provided abortSignal with the timeout signal so that
251
+ // either cancellation source is respected.
252
+ const callerAbort = callerOptions?.abortSignal;
253
+ const effectiveAbort = timeoutSignal && callerAbort
254
+ ? mergeAbortSignals(timeoutSignal, callerAbort)
255
+ : timeoutSignal ?? callerAbort;
213
256
  const runOptions = {
214
- onMessage: msg => {
215
- this.state.messages.push(msg);
216
- },
257
+ ...callerOptions,
258
+ onMessage: internalOnMessage,
259
+ ...(needsRunId ? { runId: generateRunId() } : undefined),
260
+ ...(effectiveAbort ? { abortSignal: effectiveAbort } : undefined),
217
261
  };
218
262
  const result = await runner.run(messages, runOptions);
219
263
  this.state.tokenUsage = addUsage(this.state.tokenUsage, result.tokenUsage);
220
264
  // --- Structured output validation ---
221
265
  if (this.config.outputSchema) {
222
- return this.validateStructuredOutput(messages, result, runner, runOptions);
266
+ let validated = await this.validateStructuredOutput(messages, result, runner, runOptions);
267
+ // --- afterRun hook ---
268
+ if (this.config.afterRun) {
269
+ validated = await this.config.afterRun(validated);
270
+ }
271
+ this.emitAgentTrace(callerOptions, agentStartMs, validated);
272
+ return validated;
273
+ }
274
+ let agentResult = this.toAgentRunResult(result, true);
275
+ // --- afterRun hook ---
276
+ if (this.config.afterRun) {
277
+ agentResult = await this.config.afterRun(agentResult);
223
278
  }
224
279
  this.transitionTo('completed');
225
- return this.toAgentRunResult(result, true);
280
+ this.emitAgentTrace(callerOptions, agentStartMs, agentResult);
281
+ return agentResult;
226
282
  }
227
283
  catch (err) {
228
284
  const error = err instanceof Error ? err : new Error(String(err));
229
285
  this.transitionToError(error);
230
- return {
286
+ const errorResult = {
231
287
  success: false,
232
288
  output: error.message,
233
289
  messages: [],
@@ -235,8 +291,28 @@ export class Agent {
235
291
  toolCalls: [],
236
292
  structured: undefined,
237
293
  };
294
+ this.emitAgentTrace(callerOptions, agentStartMs, errorResult);
295
+ return errorResult;
238
296
  }
239
297
  }
298
+ /** Emit an `agent` trace event if `onTrace` is provided. */
299
+ emitAgentTrace(options, startMs, result) {
300
+ if (!options?.onTrace)
301
+ return;
302
+ const endMs = Date.now();
303
+ emitTrace(options.onTrace, {
304
+ type: 'agent',
305
+ runId: options.runId ?? '',
306
+ taskId: options.taskId,
307
+ agent: options.traceAgent ?? this.name,
308
+ turns: result.messages.filter(m => m.role === 'assistant').length,
309
+ tokens: result.tokenUsage,
310
+ toolCalls: result.toolCalls.length,
311
+ startMs,
312
+ endMs,
313
+ durationMs: endMs - startMs,
314
+ });
315
+ }
240
316
  /**
241
317
  * Validate agent output against the configured `outputSchema`.
242
318
  * On first validation failure, retry once with error feedback.
@@ -316,12 +392,28 @@ export class Agent {
316
392
  async *executeStream(messages) {
317
393
  this.transitionTo('running');
318
394
  try {
395
+ // --- beforeRun hook ---
396
+ if (this.config.beforeRun) {
397
+ const hookCtx = this.buildBeforeRunHookContext(messages);
398
+ const modified = await this.config.beforeRun(hookCtx);
399
+ this.applyHookContext(messages, modified, hookCtx.prompt);
400
+ }
319
401
  const runner = await this.getRunner();
320
- for await (const event of runner.stream(messages)) {
402
+ // Fresh timeout per stream call, same as executeRun.
403
+ const timeoutSignal = this.config.timeoutMs !== undefined && this.config.timeoutMs > 0
404
+ ? AbortSignal.timeout(this.config.timeoutMs)
405
+ : undefined;
406
+ for await (const event of runner.stream(messages, timeoutSignal ? { abortSignal: timeoutSignal } : {})) {
321
407
  if (event.type === 'done') {
322
408
  const result = event.data;
323
409
  this.state.tokenUsage = addUsage(this.state.tokenUsage, result.tokenUsage);
410
+ let agentResult = this.toAgentRunResult(result, true);
411
+ if (this.config.afterRun) {
412
+ agentResult = await this.config.afterRun(agentResult);
413
+ }
324
414
  this.transitionTo('completed');
415
+ yield { type: 'done', data: agentResult };
416
+ continue;
325
417
  }
326
418
  else if (event.type === 'error') {
327
419
  const error = event.data instanceof Error
@@ -339,6 +431,47 @@ export class Agent {
339
431
  }
340
432
  }
341
433
  // -------------------------------------------------------------------------
434
+ // Hook helpers
435
+ // -------------------------------------------------------------------------
436
+ /** Extract the prompt text from the last user message to build hook context. */
437
+ buildBeforeRunHookContext(messages) {
438
+ let prompt = '';
439
+ for (let i = messages.length - 1; i >= 0; i--) {
440
+ if (messages[i].role === 'user') {
441
+ prompt = messages[i].content
442
+ .filter((b) => b.type === 'text')
443
+ .map(b => b.text)
444
+ .join('');
445
+ break;
446
+ }
447
+ }
448
+ // Strip hook functions to avoid circular self-references in the context
449
+ const { beforeRun, afterRun, ...agentInfo } = this.config;
450
+ return { prompt, agent: agentInfo };
451
+ }
452
+ /**
453
+ * Apply a (possibly modified) hook context back to the messages array.
454
+ *
455
+ * Only text blocks in the last user message are replaced; non-text content
456
+ * (images, tool results) is preserved. The array element is replaced (not
457
+ * mutated in place) so that shallow copies of the original array (e.g. from
458
+ * `prompt()`) are not affected.
459
+ */
460
+ applyHookContext(messages, ctx, originalPrompt) {
461
+ if (ctx.prompt === originalPrompt)
462
+ return;
463
+ for (let i = messages.length - 1; i >= 0; i--) {
464
+ if (messages[i].role === 'user') {
465
+ const nonTextBlocks = messages[i].content.filter(b => b.type !== 'text');
466
+ messages[i] = {
467
+ role: 'user',
468
+ content: [{ type: 'text', text: ctx.prompt }, ...nonTextBlocks],
469
+ };
470
+ break;
471
+ }
472
+ }
473
+ }
474
+ // -------------------------------------------------------------------------
342
475
  // State transition helpers
343
476
  // -------------------------------------------------------------------------
344
477
  transitionTo(status) {
@@ -358,6 +491,7 @@ export class Agent {
358
491
  tokenUsage: result.tokenUsage,
359
492
  toolCalls: result.toolCalls,
360
493
  structured,
494
+ ...(result.loopDetected ? { loopDetected: true } : {}),
361
495
  };
362
496
  }
363
497
  // -------------------------------------------------------------------------
@@ -1 +1 @@
1
- {"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/agent/agent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/agent/agent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * @fileoverview Sliding-window loop detector for the agent conversation loop.
3
+ *
4
+ * Tracks tool-call signatures and text outputs across turns to detect when an
5
+ * agent is stuck repeating the same actions. Used by {@link AgentRunner} when
6
+ * {@link LoopDetectionConfig} is provided.
7
+ */
8
+ import type { LoopDetectionConfig, LoopDetectionInfo } from '../types.js';
9
+ export declare class LoopDetector {
10
+ private readonly maxRepeats;
11
+ private readonly windowSize;
12
+ private readonly toolSignatures;
13
+ private readonly textOutputs;
14
+ constructor(config?: LoopDetectionConfig);
15
+ /**
16
+ * Record a turn's tool calls. Returns detection info when a loop is found.
17
+ */
18
+ recordToolCalls(blocks: ReadonlyArray<{
19
+ name: string;
20
+ input: Record<string, unknown>;
21
+ }>): LoopDetectionInfo | null;
22
+ /**
23
+ * Record a turn's text output. Returns detection info when a loop is found.
24
+ */
25
+ recordText(text: string): LoopDetectionInfo | null;
26
+ /**
27
+ * Deterministic JSON signature for a set of tool calls.
28
+ * Sorts calls by name (for multi-tool turns) and keys within each input.
29
+ */
30
+ private computeToolSignature;
31
+ /** Push an entry and trim the buffer to `windowSize`. */
32
+ private push;
33
+ /**
34
+ * Count how many consecutive identical entries exist at the tail of `buffer`.
35
+ * Returns 1 when the last entry is unique.
36
+ */
37
+ private consecutiveRepeats;
38
+ }
39
+ //# sourceMappingURL=loop-detector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loop-detector.d.ts","sourceRoot":"","sources":["../../src/agent/loop-detector.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAwBzE,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAQ;IACnC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAQ;IAEnC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAe;IAC9C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAe;gBAE/B,MAAM,GAAE,mBAAwB;IAO5C;;OAEG;IACH,eAAe,CACb,MAAM,EAAE,aAAa,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAC,GACtE,iBAAiB,GAAG,IAAI;IAoB3B;;OAEG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI;IAuBlD;;;OAGG;IACH,OAAO,CAAC,oBAAoB;IAa5B,yDAAyD;IACzD,OAAO,CAAC,IAAI;IAOZ;;;OAGG;IACH,OAAO,CAAC,kBAAkB;CAU3B"}
@@ -0,0 +1,122 @@
1
+ /**
2
+ * @fileoverview Sliding-window loop detector for the agent conversation loop.
3
+ *
4
+ * Tracks tool-call signatures and text outputs across turns to detect when an
5
+ * agent is stuck repeating the same actions. Used by {@link AgentRunner} when
6
+ * {@link LoopDetectionConfig} is provided.
7
+ */
8
+ // ---------------------------------------------------------------------------
9
+ // Helpers
10
+ // ---------------------------------------------------------------------------
11
+ /**
12
+ * Recursively sort object keys so that `{b:1, a:2}` and `{a:2, b:1}` produce
13
+ * the same JSON string.
14
+ */
15
+ function sortKeys(value) {
16
+ if (value === null || typeof value !== 'object')
17
+ return value;
18
+ if (Array.isArray(value))
19
+ return value.map(sortKeys);
20
+ const sorted = {};
21
+ for (const key of Object.keys(value).sort()) {
22
+ sorted[key] = sortKeys(value[key]);
23
+ }
24
+ return sorted;
25
+ }
26
+ // ---------------------------------------------------------------------------
27
+ // LoopDetector
28
+ // ---------------------------------------------------------------------------
29
+ export class LoopDetector {
30
+ maxRepeats;
31
+ windowSize;
32
+ toolSignatures = [];
33
+ textOutputs = [];
34
+ constructor(config = {}) {
35
+ this.maxRepeats = config.maxRepetitions ?? 3;
36
+ const requestedWindow = config.loopDetectionWindow ?? 4;
37
+ // Window must be >= threshold, otherwise detection can never trigger.
38
+ this.windowSize = Math.max(requestedWindow, this.maxRepeats);
39
+ }
40
+ /**
41
+ * Record a turn's tool calls. Returns detection info when a loop is found.
42
+ */
43
+ recordToolCalls(blocks) {
44
+ if (blocks.length === 0)
45
+ return null;
46
+ const signature = this.computeToolSignature(blocks);
47
+ this.push(this.toolSignatures, signature);
48
+ const count = this.consecutiveRepeats(this.toolSignatures);
49
+ if (count >= this.maxRepeats) {
50
+ const names = blocks.map(b => b.name).join(', ');
51
+ return {
52
+ kind: 'tool_repetition',
53
+ repetitions: count,
54
+ detail: `Tool call "${names}" with identical arguments has repeated ` +
55
+ `${count} times consecutively. The agent appears to be stuck in a loop.`,
56
+ };
57
+ }
58
+ return null;
59
+ }
60
+ /**
61
+ * Record a turn's text output. Returns detection info when a loop is found.
62
+ */
63
+ recordText(text) {
64
+ const normalised = text.trim().replace(/\s+/g, ' ');
65
+ if (normalised.length === 0)
66
+ return null;
67
+ this.push(this.textOutputs, normalised);
68
+ const count = this.consecutiveRepeats(this.textOutputs);
69
+ if (count >= this.maxRepeats) {
70
+ return {
71
+ kind: 'text_repetition',
72
+ repetitions: count,
73
+ detail: `The agent has produced the same text response ${count} times ` +
74
+ `consecutively. It appears to be stuck in a loop.`,
75
+ };
76
+ }
77
+ return null;
78
+ }
79
+ // -------------------------------------------------------------------------
80
+ // Private
81
+ // -------------------------------------------------------------------------
82
+ /**
83
+ * Deterministic JSON signature for a set of tool calls.
84
+ * Sorts calls by name (for multi-tool turns) and keys within each input.
85
+ */
86
+ computeToolSignature(blocks) {
87
+ const items = blocks
88
+ .map(b => ({ name: b.name, input: sortKeys(b.input) }))
89
+ .sort((a, b) => {
90
+ const cmp = a.name.localeCompare(b.name);
91
+ if (cmp !== 0)
92
+ return cmp;
93
+ return JSON.stringify(a.input).localeCompare(JSON.stringify(b.input));
94
+ });
95
+ return JSON.stringify(items);
96
+ }
97
+ /** Push an entry and trim the buffer to `windowSize`. */
98
+ push(buffer, entry) {
99
+ buffer.push(entry);
100
+ while (buffer.length > this.windowSize) {
101
+ buffer.shift();
102
+ }
103
+ }
104
+ /**
105
+ * Count how many consecutive identical entries exist at the tail of `buffer`.
106
+ * Returns 1 when the last entry is unique.
107
+ */
108
+ consecutiveRepeats(buffer) {
109
+ if (buffer.length === 0)
110
+ return 0;
111
+ const last = buffer[buffer.length - 1];
112
+ let count = 0;
113
+ for (let i = buffer.length - 1; i >= 0; i--) {
114
+ if (buffer[i] === last)
115
+ count++;
116
+ else
117
+ break;
118
+ }
119
+ return count;
120
+ }
121
+ }
122
+ //# sourceMappingURL=loop-detector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loop-detector.js","sourceRoot":"","sources":["../../src/agent/loop-detector.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAE9E;;;GAGG;AACH,SAAS,QAAQ,CAAC,KAAc;IAC9B,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAA;IAC7D,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;IACpD,MAAM,MAAM,GAA4B,EAAE,CAAA;IAC1C,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAgC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;QACvE,MAAM,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAE,KAAiC,CAAC,GAAG,CAAC,CAAC,CAAA;IACjE,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AAED,8EAA8E;AAC9E,eAAe;AACf,8EAA8E;AAE9E,MAAM,OAAO,YAAY;IACN,UAAU,CAAQ;IAClB,UAAU,CAAQ;IAElB,cAAc,GAAa,EAAE,CAAA;IAC7B,WAAW,GAAa,EAAE,CAAA;IAE3C,YAAY,SAA8B,EAAE;QAC1C,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,cAAc,IAAI,CAAC,CAAA;QAC5C,MAAM,eAAe,GAAG,MAAM,CAAC,mBAAmB,IAAI,CAAC,CAAA;QACvD,sEAAsE;QACtE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,CAAC,UAAU,CAAC,CAAA;IAC9D,CAAC;IAED;;OAEG;IACH,eAAe,CACb,MAAuE;QAEvE,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAA;QAEpC,MAAM,SAAS,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAA;QACnD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,SAAS,CAAC,CAAA;QAEzC,MAAM,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;QAC1D,IAAI,KAAK,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YAC7B,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YAChD,OAAO;gBACL,IAAI,EAAE,iBAAiB;gBACvB,WAAW,EAAE,KAAK;gBAClB,MAAM,EACJ,cAAc,KAAK,0CAA0C;oBAC7D,GAAG,KAAK,gEAAgE;aAC3E,CAAA;QACH,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAED;;OAEG;IACH,UAAU,CAAC,IAAY;QACrB,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;QACnD,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAA;QAExC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAA;QAEvC,MAAM,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;QACvD,IAAI,KAAK,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YAC7B,OAAO;gBACL,IAAI,EAAE,iBAAiB;gBACvB,WAAW,EAAE,KAAK;gBAClB,MAAM,EACJ,iDAAiD,KAAK,SAAS;oBAC/D,kDAAkD;aACrD,CAAA;QACH,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,4EAA4E;IAC5E,UAAU;IACV,4EAA4E;IAE5E;;;OAGG;IACK,oBAAoB,CAC1B,MAAuE;QAEvE,MAAM,KAAK,GAAG,MAAM;aACjB,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;aACtD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACb,MAAM,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;YACxC,IAAI,GAAG,KAAK,CAAC;gBAAE,OAAO,GAAG,CAAA;YACzB,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAA;QACvE,CAAC,CAAC,CAAA;QACJ,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;IAC9B,CAAC;IAED,yDAAyD;IACjD,IAAI,CAAC,MAAgB,EAAE,KAAa;QAC1C,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAClB,OAAO,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;YACvC,MAAM,CAAC,KAAK,EAAE,CAAA;QAChB,CAAC;IACH,CAAC;IAED;;;OAGG;IACK,kBAAkB,CAAC,MAAgB;QACzC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,CAAC,CAAA;QACjC,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;QACtC,IAAI,KAAK,GAAG,CAAC,CAAA;QACb,KAAK,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5C,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI;gBAAE,KAAK,EAAE,CAAA;;gBAC1B,MAAK;QACZ,CAAC;QACD,OAAO,KAAK,CAAA;IACd,CAAC;CACF"}
@@ -20,6 +20,7 @@
20
20
  * ```
21
21
  */
22
22
  import type { AgentRunResult } from '../types.js';
23
+ import type { RunOptions } from './runner.js';
23
24
  import type { Agent } from './agent.js';
24
25
  export { Semaphore } from '../utils/semaphore.js';
25
26
  export interface PoolStatus {
@@ -78,7 +79,7 @@ export declare class AgentPool {
78
79
  *
79
80
  * @throws {Error} If the agent name is not found.
80
81
  */
81
- run(agentName: string, prompt: string): Promise<AgentRunResult>;
82
+ run(agentName: string, prompt: string, runOptions?: Partial<RunOptions>): Promise<AgentRunResult>;
82
83
  /**
83
84
  * Run prompts on multiple agents in parallel, subject to the concurrency
84
85
  * cap set at construction time.
@@ -1 +1 @@
1
- {"version":3,"file":"pool.d.ts","sourceRoot":"","sources":["../../src/agent/pool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AACjD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAGvC,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AAMjD,MAAM,WAAW,UAAU;IACzB,qDAAqD;IACrD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,wCAAwC;IACxC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,2CAA2C;IAC3C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,6CAA6C;IAC7C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,yCAAyC;IACzC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CACvB;AAMD;;;;;;GAMG;AACH,qBAAa,SAAS;IAUR,OAAO,CAAC,QAAQ,CAAC,cAAc;IAT3C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgC;IACvD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAW;IACrC,wDAAwD;IACxD,OAAO,CAAC,eAAe,CAAI;IAE3B;;;OAGG;gBAC0B,cAAc,GAAE,MAAU;IAQvD;;;;OAIG;IACH,GAAG,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAUvB;;;;OAIG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAO1B;;OAEG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS;IAIpC;;OAEG;IACH,IAAI,IAAI,KAAK,EAAE;IAQf;;;;;OAKG;IACG,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAWrE;;;;;;;;;OASG;IACG,WAAW,CACf,KAAK,EAAE,aAAa,CAAC;QAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,GACxE,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IA2BvC;;;;;;;;OAQG;IACG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAuBrD;;OAEG;IACH,SAAS,IAAI,UAAU;IAsBvB;;;;;;;;OAQG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAU/B,OAAO,CAAC,YAAY;IAWpB;;;;OAIG;IACH,OAAO,CAAC,WAAW;CAUpB"}
1
+ {"version":3,"file":"pool.d.ts","sourceRoot":"","sources":["../../src/agent/pool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AACjD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAC7C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAGvC,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AAMjD,MAAM,WAAW,UAAU;IACzB,qDAAqD;IACrD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,wCAAwC;IACxC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,2CAA2C;IAC3C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,6CAA6C;IAC7C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,yCAAyC;IACzC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CACvB;AAMD;;;;;;GAMG;AACH,qBAAa,SAAS;IAUR,OAAO,CAAC,QAAQ,CAAC,cAAc;IAT3C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgC;IACvD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAW;IACrC,wDAAwD;IACxD,OAAO,CAAC,eAAe,CAAI;IAE3B;;;OAGG;gBAC0B,cAAc,GAAE,MAAU;IAQvD;;;;OAIG;IACH,GAAG,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAUvB;;;;OAIG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAO1B;;OAEG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS;IAIpC;;OAEG;IACH,IAAI,IAAI,KAAK,EAAE;IAQf;;;;;OAKG;IACG,GAAG,CACP,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,UAAU,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,GAC/B,OAAO,CAAC,cAAc,CAAC;IAW1B;;;;;;;;;OASG;IAEG,WAAW,CACf,KAAK,EAAE,aAAa,CAAC;QAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,GACxE,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IA2BvC;;;;;;;;OAQG;IAEG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAuBrD;;OAEG;IACH,SAAS,IAAI,UAAU;IAsBvB;;;;;;;;OAQG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAU/B,OAAO,CAAC,YAAY;IAWpB;;;;OAIG;IACH,OAAO,CAAC,WAAW;CAUpB"}
@@ -92,11 +92,11 @@ export class AgentPool {
92
92
  *
93
93
  * @throws {Error} If the agent name is not found.
94
94
  */
95
- async run(agentName, prompt) {
95
+ async run(agentName, prompt, runOptions) {
96
96
  const agent = this.requireAgent(agentName);
97
97
  await this.semaphore.acquire();
98
98
  try {
99
- return await agent.run(prompt);
99
+ return await agent.run(prompt, runOptions);
100
100
  }
101
101
  finally {
102
102
  this.semaphore.release();
@@ -112,6 +112,7 @@ export class AgentPool {
112
112
  *
113
113
  * @param tasks - Array of `{ agent, prompt }` descriptors.
114
114
  */
115
+ // TODO(#18): accept RunOptions per task to forward trace context
115
116
  async runParallel(tasks) {
116
117
  const resultMap = new Map();
117
118
  const settledResults = await Promise.allSettled(tasks.map(async (task) => {
@@ -143,6 +144,7 @@ export class AgentPool {
143
144
  *
144
145
  * @throws {Error} If the pool is empty.
145
146
  */
147
+ // TODO(#18): accept RunOptions to forward trace context
146
148
  async runAny(prompt) {
147
149
  const allAgents = this.list();
148
150
  if (allAgents.length === 0) {
@@ -1 +1 @@
1
- {"version":3,"file":"pool.js","sourceRoot":"","sources":["../../src/agent/pool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pool.js","sourceRoot":"","sources":["../../src/agent/pool.ts"],"names":[],"mappings":"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"}
@@ -11,7 +11,7 @@
11
11
  * The loop follows a standard agentic conversation pattern:
12
12
  * one outer `while (true)` that breaks on `end_turn` or maxTurns exhaustion.
13
13
  */
14
- import type { LLMMessage, ToolCallRecord, TokenUsage, StreamEvent, ToolResult, LLMAdapter } from '../types.js';
14
+ import type { LLMMessage, ToolCallRecord, TokenUsage, StreamEvent, ToolResult, LLMAdapter, TraceEvent, LoopDetectionConfig } from '../types.js';
15
15
  import type { ToolRegistry } from '../tool/framework.js';
16
16
  import type { ToolExecutor } from '../tool/executor.js';
17
17
  /**
@@ -44,6 +44,8 @@ export interface RunnerOptions {
44
44
  readonly agentName?: string;
45
45
  /** Short role description of the agent (used in tool context). */
46
46
  readonly agentRole?: string;
47
+ /** Loop detection configuration. When set, detects stuck agent loops. */
48
+ readonly loopDetection?: LoopDetectionConfig;
47
49
  }
48
50
  /**
49
51
  * Per-call callbacks for observing tool execution in real time.
@@ -56,6 +58,24 @@ export interface RunOptions {
56
58
  readonly onToolResult?: (name: string, result: ToolResult) => void;
57
59
  /** Fired after each complete {@link LLMMessage} is appended. */
58
60
  readonly onMessage?: (message: LLMMessage) => void;
61
+ /**
62
+ * Fired when the runner detects a potential configuration issue.
63
+ * For example, when a model appears to ignore tool definitions.
64
+ */
65
+ readonly onWarning?: (message: string) => void;
66
+ /** Trace callback for observability spans. Async callbacks are safe. */
67
+ readonly onTrace?: (event: TraceEvent) => void | Promise<void>;
68
+ /** Run ID for trace correlation. */
69
+ readonly runId?: string;
70
+ /** Task ID for trace correlation. */
71
+ readonly taskId?: string;
72
+ /** Agent name for trace correlation (overrides RunnerOptions.agentName). */
73
+ readonly traceAgent?: string;
74
+ /**
75
+ * Per-call abort signal. When set, takes precedence over the static
76
+ * {@link RunnerOptions.abortSignal}. Useful for per-run timeouts.
77
+ */
78
+ readonly abortSignal?: AbortSignal;
59
79
  }
60
80
  /** The aggregated result returned when a full run completes. */
61
81
  export interface RunResult {
@@ -69,6 +89,8 @@ export interface RunResult {
69
89
  readonly tokenUsage: TokenUsage;
70
90
  /** Total number of LLM turns (including tool-call follow-ups). */
71
91
  readonly turns: number;
92
+ /** True when the run was terminated or warned due to loop detection. */
93
+ readonly loopDetected?: boolean;
72
94
  }
73
95
  /**
74
96
  * Drives a full agentic conversation: LLM calls, tool execution, and looping.
@@ -1 +1 @@
1
- {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/agent/runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EACV,UAAU,EAKV,cAAc,EACd,UAAU,EACV,WAAW,EACX,UAAU,EAEV,UAAU,EAEX,MAAM,aAAa,CAAA;AACpB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAMvD;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,sDAAsD;IACtD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,8DAA8D;IAC9D,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAA;IAC9B;;;OAGG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;IAC1B,8CAA8C;IAC9C,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,kDAAkD;IAClD,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,8EAA8E;IAC9E,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,CAAA;IAClC;;;;OAIG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACzC,4EAA4E;IAC5E,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,kEAAkE;IAClE,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAC5B;AAED;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB,iDAAiD;IACjD,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAA;IAC5E,gDAAgD;IAChD,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,KAAK,IAAI,CAAA;IAClE,gEAAgE;IAChE,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,UAAU,KAAK,IAAI,CAAA;CACnD;AAED,gEAAgE;AAChE,MAAM,WAAW,SAAS;IACxB,2EAA2E;IAC3E,QAAQ,CAAC,QAAQ,EAAE,UAAU,EAAE,CAAA;IAC/B,0DAA0D;IAC1D,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,+DAA+D;IAC/D,QAAQ,CAAC,SAAS,EAAE,cAAc,EAAE,CAAA;IACpC,iEAAiE;IACjE,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAA;IAC/B,kEAAkE;IAClE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CACvB;AAiCD;;;;;;;;;;;;GAYG;AACH,qBAAa,WAAW;IAIpB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,OAAO;IAN1B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAQ;gBAGd,OAAO,EAAE,UAAU,EACnB,YAAY,EAAE,YAAY,EAC1B,YAAY,EAAE,YAAY,EAC1B,OAAO,EAAE,aAAa;IASzC;;;;;;;;OAQG;IACG,GAAG,CACP,QAAQ,EAAE,UAAU,EAAE,EACtB,OAAO,GAAE,UAAe,GACvB,OAAO,CAAC,SAAS,CAAC;IA8BrB;;;;;;;;;OASG;IACI,MAAM,CACX,eAAe,EAAE,UAAU,EAAE,EAC7B,OAAO,GAAE,UAAe,GACvB,cAAc,CAAC,WAAW,CAAC;IA6L9B;;;OAGG;IACH,OAAO,CAAC,gBAAgB;CAUzB"}
1
+ {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/agent/runner.ts"],"names":[],"mappings":"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"}