@cuylabs/agent-core 5.3.0 → 5.5.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.
- package/dist/agent/chat-loop/loop.d.ts.map +1 -1
- package/dist/agent/chat-loop/model-step-runner.d.ts +2 -0
- package/dist/agent/chat-loop/model-step-runner.d.ts.map +1 -1
- package/dist/{chunk-JZRLCTSD.js → chunk-2BRLPF3Z.js} +73 -2
- package/dist/{chunk-VT5FSYA2.js → chunk-NICU5N2S.js} +105 -14
- package/dist/{chunk-35A3XLI4.js → chunk-OO6ZBQMF.js} +8 -2
- package/dist/{chunk-MO7V4H4A.js → chunk-ZETYNQ35.js} +296 -16
- package/dist/dispatch/event-store.d.ts +15 -0
- package/dist/dispatch/event-store.d.ts.map +1 -0
- package/dist/dispatch/executor.d.ts.map +1 -1
- package/dist/dispatch/index.d.ts +2 -1
- package/dist/dispatch/index.d.ts.map +1 -1
- package/dist/dispatch/index.js +4 -2
- package/dist/dispatch/runtime.d.ts.map +1 -1
- package/dist/dispatch/tool-factories.d.ts.map +1 -1
- package/dist/dispatch/types.d.ts +68 -0
- package/dist/dispatch/types.d.ts.map +1 -1
- package/dist/execution/index.js +1 -1
- package/dist/execution/turn/index.d.ts +2 -2
- package/dist/execution/turn/index.d.ts.map +1 -1
- package/dist/execution/turn/index.js +3 -1
- package/dist/execution/turn/runner/index.d.ts +2 -0
- package/dist/execution/turn/runner/index.d.ts.map +1 -1
- package/dist/execution/turn/runner/live-events.d.ts +11 -0
- package/dist/execution/turn/runner/live-events.d.ts.map +1 -0
- package/dist/execution/turn/runner/stream-step.d.ts.map +1 -1
- package/dist/execution/turn/runner/tool-batch.d.ts.map +1 -1
- package/dist/execution/turn/runner/types.d.ts +4 -0
- package/dist/execution/turn/runner/types.d.ts.map +1 -1
- package/dist/index.js +57 -8
- package/dist/subagents/index.js +2 -2
- package/dist/subagents/roles/markdown-profile.d.ts.map +1 -1
- package/dist/subagents/tool-factories.d.ts.map +1 -1
- package/dist/team/coordinator/types.d.ts +2 -0
- package/dist/team/coordinator/types.d.ts.map +1 -1
- package/dist/types/events.d.ts +32 -1
- package/dist/types/events.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loop.d.ts","sourceRoot":"","sources":["../../../src/agent/chat-loop/loop.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"loop.d.ts","sourceRoot":"","sources":["../../../src/agent/chat-loop/loop.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAkBxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAQ/C;;;GAGG;AACH,wBAAuB,WAAW,CAChC,IAAI,EAAE,YAAY,GACjB,cAAc,CAAC,UAAU,CAAC,CA+Y5B"}
|
|
@@ -2,6 +2,7 @@ import type { ModelContextCompactionReport } from "../../context/assembly/index.
|
|
|
2
2
|
import type { AgentTurnEngine } from "../../execution/turn/index.js";
|
|
3
3
|
import { type AgentTurnCommitApplier } from "../../execution/turn/index.js";
|
|
4
4
|
import type { StepProcessingOutput } from "../../execution/turn/index.js";
|
|
5
|
+
import type { AgentTurnLiveEventQueue } from "../../execution/turn/index.js";
|
|
5
6
|
import type { AgentEvent } from "../../types/events.js";
|
|
6
7
|
import { type ResolvedContextRecoveryConfig } from "./context-recovery.js";
|
|
7
8
|
import { type ChatModelStepToolRecord } from "./model-step-snapshot.js";
|
|
@@ -22,5 +23,6 @@ export declare function runChatModelStepWithRecovery(options: {
|
|
|
22
23
|
toolRecord: ChatModelStepToolRecord;
|
|
23
24
|
contextRecovery: ResolvedContextRecoveryConfig;
|
|
24
25
|
compactionReport?: ModelContextCompactionReport;
|
|
26
|
+
liveEvents?: AgentTurnLiveEventQueue;
|
|
25
27
|
}): AsyncGenerator<AgentEvent, ChatModelStepRunResult>;
|
|
26
28
|
//# sourceMappingURL=model-step-runner.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-step-runner.d.ts","sourceRoot":"","sources":["../../../src/agent/chat-loop/model-step-runner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,iCAAiC,CAAC;AACpF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAGL,KAAK,sBAAsB,EAC5B,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAC1E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAEL,KAAK,6BAA6B,EAEnC,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAEL,KAAK,uBAAuB,EAC7B,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEzD,MAAM,WAAW,sBAAsB;IACrC,UAAU,EAAE,oBAAoB,CAAC;IACjC,UAAU,EAAE,uBAAuB,CAAC;IACpC,gBAAgB,CAAC,EAAE,4BAA4B,CAAC;CACjD;AAED,wBAAuB,4BAA4B,CAAC,OAAO,EAAE;IAC3D,IAAI,EAAE,YAAY,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,eAAe,CAAC;IAC5B,gBAAgB,EAAE,sBAAsB,CAAC;IACzC,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,YAAY,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC;IACvC,UAAU,EAAE,uBAAuB,CAAC;IACpC,eAAe,EAAE,6BAA6B,CAAC;IAC/C,gBAAgB,CAAC,EAAE,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"model-step-runner.d.ts","sourceRoot":"","sources":["../../../src/agent/chat-loop/model-step-runner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,iCAAiC,CAAC;AACpF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAGL,KAAK,sBAAsB,EAC5B,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAC1E,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AAC7E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAEL,KAAK,6BAA6B,EAEnC,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAEL,KAAK,uBAAuB,EAC7B,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEzD,MAAM,WAAW,sBAAsB;IACrC,UAAU,EAAE,oBAAoB,CAAC;IACjC,UAAU,EAAE,uBAAuB,CAAC;IACpC,gBAAgB,CAAC,EAAE,4BAA4B,CAAC;CACjD;AAED,wBAAuB,4BAA4B,CAAC,OAAO,EAAE;IAC3D,IAAI,EAAE,YAAY,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,eAAe,CAAC;IAC5B,gBAAgB,EAAE,sBAAsB,CAAC;IACzC,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,YAAY,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC;IACvC,UAAU,EAAE,uBAAuB,CAAC;IACpC,eAAe,EAAE,6BAA6B,CAAC;IAC/C,gBAAgB,CAAC,EAAE,4BAA4B,CAAC;IAChD,UAAU,CAAC,EAAE,uBAAuB,CAAC;CACtC,GAAG,cAAc,CAAC,UAAU,EAAE,sBAAsB,CAAC,CAoIrD"}
|
|
@@ -2,6 +2,68 @@ import {
|
|
|
2
2
|
sleep
|
|
3
3
|
} from "./chunk-SZ2XBPTW.js";
|
|
4
4
|
|
|
5
|
+
// src/dispatch/event-store.ts
|
|
6
|
+
function cloneEventRecord(record) {
|
|
7
|
+
try {
|
|
8
|
+
return structuredClone(record);
|
|
9
|
+
} catch {
|
|
10
|
+
return { ...record };
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
function matchesFilter(record, filter) {
|
|
14
|
+
if (!filter) {
|
|
15
|
+
return true;
|
|
16
|
+
}
|
|
17
|
+
if (filter.dispatchId && record.dispatchId !== filter.dispatchId) {
|
|
18
|
+
return false;
|
|
19
|
+
}
|
|
20
|
+
if (filter.parentSessionId && record.parentSessionId !== filter.parentSessionId) {
|
|
21
|
+
return false;
|
|
22
|
+
}
|
|
23
|
+
if (filter.parentTurnId && record.parentTurnId !== filter.parentTurnId) {
|
|
24
|
+
return false;
|
|
25
|
+
}
|
|
26
|
+
if (filter.parentDispatchId && record.parentDispatchId !== filter.parentDispatchId) {
|
|
27
|
+
return false;
|
|
28
|
+
}
|
|
29
|
+
if (filter.agentPath && record.agentPath !== filter.agentPath) {
|
|
30
|
+
return false;
|
|
31
|
+
}
|
|
32
|
+
if (filter.childSessionId && record.childSessionId !== filter.childSessionId) {
|
|
33
|
+
return false;
|
|
34
|
+
}
|
|
35
|
+
if (filter.targetType && record.targetType !== filter.targetType) {
|
|
36
|
+
return false;
|
|
37
|
+
}
|
|
38
|
+
if (filter.afterSequence !== void 0 && record.sequence <= filter.afterSequence) {
|
|
39
|
+
return false;
|
|
40
|
+
}
|
|
41
|
+
if (filter.type) {
|
|
42
|
+
const types = Array.isArray(filter.type) ? filter.type : [filter.type];
|
|
43
|
+
if (!types.includes(record.event.type)) {
|
|
44
|
+
return false;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
return true;
|
|
48
|
+
}
|
|
49
|
+
var InMemoryDispatchEventStore = class {
|
|
50
|
+
events = [];
|
|
51
|
+
sequence = 0;
|
|
52
|
+
async append(event) {
|
|
53
|
+
const record = {
|
|
54
|
+
...event,
|
|
55
|
+
id: `${event.dispatchId}:event:${this.sequence + 1}`,
|
|
56
|
+
sequence: this.sequence + 1
|
|
57
|
+
};
|
|
58
|
+
this.sequence = record.sequence;
|
|
59
|
+
this.events.push(cloneEventRecord(record));
|
|
60
|
+
return cloneEventRecord(record);
|
|
61
|
+
}
|
|
62
|
+
async list(filter) {
|
|
63
|
+
return this.events.filter((event) => matchesFilter(event, filter)).map((event) => cloneEventRecord(event));
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
|
|
5
67
|
// src/dispatch/executor.ts
|
|
6
68
|
function ensureNonEmpty(input, label) {
|
|
7
69
|
const trimmed = input.trim();
|
|
@@ -32,6 +94,7 @@ function defaultTaskRecord(input, targetName, startedAt, dispatchId, startResult
|
|
|
32
94
|
createdAt: startedAt,
|
|
33
95
|
updatedAt: startedAt,
|
|
34
96
|
parentSessionId: input.parentSessionId,
|
|
97
|
+
parentTurnId: input.parentTurnId,
|
|
35
98
|
sessionId: startResult.sessionId ?? input.runtime.member.sessionId,
|
|
36
99
|
executionId: startResult.executionId ?? input.task.runId ?? dispatchId,
|
|
37
100
|
redirectCount: 0
|
|
@@ -102,7 +165,12 @@ function createRuntimeDispatchTargets(options) {
|
|
|
102
165
|
targetType: target.name,
|
|
103
166
|
brief: input.brief,
|
|
104
167
|
title: input.title,
|
|
105
|
-
parentSessionId: input.parentSessionId
|
|
168
|
+
parentSessionId: input.parentSessionId,
|
|
169
|
+
parentTurnId: input.parentTurnId,
|
|
170
|
+
parentDispatchId: input.parentDispatchId,
|
|
171
|
+
depth: input.depth,
|
|
172
|
+
agentPath: input.agentPath,
|
|
173
|
+
abort: input.abort
|
|
106
174
|
});
|
|
107
175
|
return {
|
|
108
176
|
sessionId: record.sessionId,
|
|
@@ -148,7 +216,9 @@ function createDispatchTaskExecutor(options) {
|
|
|
148
216
|
brief: input.prompt,
|
|
149
217
|
title: input.task.title,
|
|
150
218
|
parentSessionId: input.parentSessionId,
|
|
151
|
-
|
|
219
|
+
parentTurnId: input.parentTurnId,
|
|
220
|
+
sessionId: input.runtime.member.sessionId,
|
|
221
|
+
abort: input.abort
|
|
152
222
|
});
|
|
153
223
|
let record = options.createRecord?.({
|
|
154
224
|
taskInput: input,
|
|
@@ -277,6 +347,7 @@ function createDispatchExternalTaskControl(options) {
|
|
|
277
347
|
}
|
|
278
348
|
|
|
279
349
|
export {
|
|
350
|
+
InMemoryDispatchEventStore,
|
|
280
351
|
ensureNonEmpty,
|
|
281
352
|
mergeInspection,
|
|
282
353
|
createRuntimeDispatchTargets,
|
|
@@ -242,6 +242,51 @@ function createAgentTurnEngine(options) {
|
|
|
242
242
|
return new AgentTurnEngine(options);
|
|
243
243
|
}
|
|
244
244
|
|
|
245
|
+
// src/execution/turn/runner/live-events.ts
|
|
246
|
+
function createAgentTurnLiveEventQueue() {
|
|
247
|
+
const events = [];
|
|
248
|
+
let waiters = [];
|
|
249
|
+
let closed = false;
|
|
250
|
+
function wakeWaiters() {
|
|
251
|
+
const current = waiters;
|
|
252
|
+
waiters = [];
|
|
253
|
+
for (const resolve of current) {
|
|
254
|
+
resolve();
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
return {
|
|
258
|
+
emit(event) {
|
|
259
|
+
if (closed) {
|
|
260
|
+
return;
|
|
261
|
+
}
|
|
262
|
+
events.push(event);
|
|
263
|
+
wakeWaiters();
|
|
264
|
+
},
|
|
265
|
+
drain() {
|
|
266
|
+
return events.splice(0, events.length);
|
|
267
|
+
},
|
|
268
|
+
size() {
|
|
269
|
+
return events.length;
|
|
270
|
+
},
|
|
271
|
+
wait() {
|
|
272
|
+
if (closed || events.length > 0) {
|
|
273
|
+
return Promise.resolve();
|
|
274
|
+
}
|
|
275
|
+
return new Promise((resolve) => {
|
|
276
|
+
waiters.push(resolve);
|
|
277
|
+
});
|
|
278
|
+
},
|
|
279
|
+
wake() {
|
|
280
|
+
wakeWaiters();
|
|
281
|
+
},
|
|
282
|
+
close() {
|
|
283
|
+
closed = true;
|
|
284
|
+
events.length = 0;
|
|
285
|
+
wakeWaiters();
|
|
286
|
+
}
|
|
287
|
+
};
|
|
288
|
+
}
|
|
289
|
+
|
|
245
290
|
// src/execution/turn/runner/prepare.ts
|
|
246
291
|
function prepareModelStep(options) {
|
|
247
292
|
const modelMessages = Array.from(options.toModelMessages(options.messages));
|
|
@@ -622,6 +667,40 @@ async function* runModelStep(options) {
|
|
|
622
667
|
resolveNext = null;
|
|
623
668
|
}
|
|
624
669
|
};
|
|
670
|
+
const emitToolEvent = async (event) => {
|
|
671
|
+
if (options.liveEvents) {
|
|
672
|
+
options.liveEvents.emit(event);
|
|
673
|
+
return;
|
|
674
|
+
}
|
|
675
|
+
await emitQueuedEvent(event);
|
|
676
|
+
};
|
|
677
|
+
async function* drainLiveEvents() {
|
|
678
|
+
if (!options.liveEvents) {
|
|
679
|
+
return;
|
|
680
|
+
}
|
|
681
|
+
for (const event of options.liveEvents.drain()) {
|
|
682
|
+
middleware?.emitEvent(event);
|
|
683
|
+
turnEngine.recordEvent(event, (/* @__PURE__ */ new Date()).toISOString());
|
|
684
|
+
yield event;
|
|
685
|
+
}
|
|
686
|
+
}
|
|
687
|
+
async function waitForQueuedOrLiveEvent() {
|
|
688
|
+
let streamResolved = false;
|
|
689
|
+
const streamWait = new Promise((resolve) => {
|
|
690
|
+
resolveNext = () => {
|
|
691
|
+
streamResolved = true;
|
|
692
|
+
resolve();
|
|
693
|
+
};
|
|
694
|
+
});
|
|
695
|
+
if (!options.liveEvents) {
|
|
696
|
+
await streamWait;
|
|
697
|
+
return;
|
|
698
|
+
}
|
|
699
|
+
await Promise.race([streamWait, options.liveEvents.wait()]);
|
|
700
|
+
if (!streamResolved) {
|
|
701
|
+
resolveNext = null;
|
|
702
|
+
}
|
|
703
|
+
}
|
|
625
704
|
if (intervention) {
|
|
626
705
|
intervention.onApplied = (item) => {
|
|
627
706
|
eventQueue.push({
|
|
@@ -648,7 +727,7 @@ async function* runModelStep(options) {
|
|
|
648
727
|
}
|
|
649
728
|
const stream = await Inference.streamStep({
|
|
650
729
|
...preparedStep.inferenceInput,
|
|
651
|
-
onEvent:
|
|
730
|
+
onEvent: emitToolEvent
|
|
652
731
|
});
|
|
653
732
|
const processPromise = processStepStream(stream, {
|
|
654
733
|
sessionID: preparedStep.inferenceInput.sessionID,
|
|
@@ -681,7 +760,7 @@ async function* runModelStep(options) {
|
|
|
681
760
|
}
|
|
682
761
|
return null;
|
|
683
762
|
});
|
|
684
|
-
while (!streamDone || eventQueue.length > 0) {
|
|
763
|
+
while (!streamDone || eventQueue.length > 0 || (options.liveEvents?.size() ?? 0) > 0) {
|
|
685
764
|
while (eventQueue.length > 0) {
|
|
686
765
|
const event = eventQueue.shift();
|
|
687
766
|
turnEngine.recordEvent(event, (/* @__PURE__ */ new Date()).toISOString());
|
|
@@ -695,10 +774,9 @@ async function* runModelStep(options) {
|
|
|
695
774
|
);
|
|
696
775
|
}
|
|
697
776
|
}
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
});
|
|
777
|
+
yield* drainLiveEvents();
|
|
778
|
+
if (!streamDone && eventQueue.length === 0) {
|
|
779
|
+
await waitForQueuedOrLiveEvent();
|
|
702
780
|
}
|
|
703
781
|
}
|
|
704
782
|
if (streamError) {
|
|
@@ -729,6 +807,13 @@ async function* runModelStep(options) {
|
|
|
729
807
|
}
|
|
730
808
|
|
|
731
809
|
// src/execution/turn/runner/tool-batch.ts
|
|
810
|
+
async function emitBatchEvent(event, accumulators) {
|
|
811
|
+
if (accumulators.onEvent) {
|
|
812
|
+
await accumulators.onEvent(event);
|
|
813
|
+
return;
|
|
814
|
+
}
|
|
815
|
+
accumulators.events.push(event);
|
|
816
|
+
}
|
|
732
817
|
function cloneToolResultRecord(options) {
|
|
733
818
|
return new Map(
|
|
734
819
|
options.snapshot.toolResults.map((toolResult) => [
|
|
@@ -737,8 +822,8 @@ function cloneToolResultRecord(options) {
|
|
|
737
822
|
])
|
|
738
823
|
);
|
|
739
824
|
}
|
|
740
|
-
function recordToolResult(toolCall, event, result, accumulators, metadata) {
|
|
741
|
-
|
|
825
|
+
async function recordToolResult(toolCall, event, result, accumulators, metadata) {
|
|
826
|
+
await emitBatchEvent(event, accumulators);
|
|
742
827
|
accumulators.toolResultsByCallId.set(toolCall.toolCallId, {
|
|
743
828
|
toolCallId: toolCall.toolCallId,
|
|
744
829
|
toolName: toolCall.toolName,
|
|
@@ -772,7 +857,7 @@ async function executeBatchEntry(toolCall, options, accumulators, preInitialized
|
|
|
772
857
|
const tool = options.tools[toolCall.toolName];
|
|
773
858
|
if (!tool) {
|
|
774
859
|
const errorMessage = `Tool '${toolCall.toolName}' is not registered`;
|
|
775
|
-
recordToolResult(
|
|
860
|
+
await recordToolResult(
|
|
776
861
|
toolCall,
|
|
777
862
|
{
|
|
778
863
|
type: "tool-error",
|
|
@@ -801,11 +886,11 @@ async function executeBatchEntry(toolCall, options, accumulators, preInitialized
|
|
|
801
886
|
...options.turnTracker ? { turnTracker: options.turnTracker } : {},
|
|
802
887
|
...options.middleware ? { middleware: options.middleware } : {},
|
|
803
888
|
onEvent: async (event) => {
|
|
804
|
-
|
|
889
|
+
await emitBatchEvent(event, accumulators);
|
|
805
890
|
},
|
|
806
891
|
...preInitialized ? { initialized: preInitialized } : {}
|
|
807
892
|
});
|
|
808
|
-
recordToolResult(
|
|
893
|
+
await recordToolResult(
|
|
809
894
|
toolCall,
|
|
810
895
|
{
|
|
811
896
|
type: "tool-result",
|
|
@@ -820,7 +905,7 @@ async function executeBatchEntry(toolCall, options, accumulators, preInitialized
|
|
|
820
905
|
);
|
|
821
906
|
} catch (error) {
|
|
822
907
|
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
823
|
-
recordToolResult(
|
|
908
|
+
await recordToolResult(
|
|
824
909
|
toolCall,
|
|
825
910
|
{
|
|
826
911
|
type: "tool-error",
|
|
@@ -839,7 +924,12 @@ async function runToolBatch(options) {
|
|
|
839
924
|
const turnState = {
|
|
840
925
|
value: options.turnState ? structuredClone(options.turnState) : void 0
|
|
841
926
|
};
|
|
842
|
-
const accumulators = {
|
|
927
|
+
const accumulators = {
|
|
928
|
+
events,
|
|
929
|
+
toolResultsByCallId,
|
|
930
|
+
turnState,
|
|
931
|
+
...options.onEvent ? { onEvent: options.onEvent } : {}
|
|
932
|
+
};
|
|
843
933
|
const pending = options.snapshot.toolCalls.filter(
|
|
844
934
|
(tc) => !toolResultsByCallId.has(tc.toolCallId)
|
|
845
935
|
);
|
|
@@ -876,7 +966,7 @@ async function runToolBatch(options) {
|
|
|
876
966
|
if (options.intervention?.hasPending && initialized) {
|
|
877
967
|
const interruptPolicy = initialized.capabilities?.onInterrupt ?? "finish";
|
|
878
968
|
if (interruptPolicy === "cancel") {
|
|
879
|
-
recordToolResult(
|
|
969
|
+
await recordToolResult(
|
|
880
970
|
toolCall,
|
|
881
971
|
{
|
|
882
972
|
type: "tool-error",
|
|
@@ -949,6 +1039,7 @@ export {
|
|
|
949
1039
|
createAgentTurnStepCommitBatch,
|
|
950
1040
|
AgentTurnEngine,
|
|
951
1041
|
createAgentTurnEngine,
|
|
1042
|
+
createAgentTurnLiveEventQueue,
|
|
952
1043
|
prepareModelStep,
|
|
953
1044
|
DoomLoopError,
|
|
954
1045
|
ContextOverflowError,
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
} from "./chunk-TPZ37IWI.js";
|
|
4
4
|
import {
|
|
5
5
|
createLocalDispatchRuntime
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-ZETYNQ35.js";
|
|
7
7
|
import {
|
|
8
8
|
Tool
|
|
9
9
|
} from "./chunk-MJML3A2F.js";
|
|
@@ -234,7 +234,9 @@ function createInvokeAgentTool(runtime, roles, options) {
|
|
|
234
234
|
brief: params.task,
|
|
235
235
|
title: params.title ?? `${titlePrefix}: ${role.name}`,
|
|
236
236
|
parentSessionId: ctx.sessionID,
|
|
237
|
-
|
|
237
|
+
parentTurnId: ctx.turnID,
|
|
238
|
+
abort: ctx.abort,
|
|
239
|
+
emitEvent: ctx.emitEvent
|
|
238
240
|
});
|
|
239
241
|
} catch (error) {
|
|
240
242
|
return formatSpawnBlockedResult(
|
|
@@ -318,6 +320,7 @@ function createCloseAgentTool(runtime) {
|
|
|
318
320
|
return formatCloseMissingAgentResult(params.id);
|
|
319
321
|
}
|
|
320
322
|
if (record.status !== "running") {
|
|
323
|
+
await runtime.cancel(params.id, "Parent subagent closed");
|
|
321
324
|
return formatCloseAlreadyResolvedResult(params.id, record.status);
|
|
322
325
|
}
|
|
323
326
|
const cancelled = await runtime.cancel(params.id);
|
|
@@ -661,6 +664,9 @@ function toSubAgentRole(parsed, resolvers = {}) {
|
|
|
661
664
|
};
|
|
662
665
|
if (systemPrompt) role.systemPrompt = systemPrompt;
|
|
663
666
|
if (maxSteps !== void 0 && !isNaN(maxSteps)) role.maxSteps = maxSteps;
|
|
667
|
+
if (reasoning !== void 0 && VALID_REASONING_LEVELS.has(reasoning)) {
|
|
668
|
+
role.reasoningLevel = reasoning;
|
|
669
|
+
}
|
|
664
670
|
if (allowFurtherDispatch !== void 0) {
|
|
665
671
|
role.allowFurtherDispatch = allowFurtherDispatch;
|
|
666
672
|
}
|