@yolk-sdk/agent 0.1.0-canary.88 → 0.1.0-canary.89
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -2
- package/dist/react/chat-actions.d.mts +46 -46
- package/dist/react/chat-actions.d.mts.map +1 -1
- package/dist/react/chat-messages.d.mts +21 -21
- package/dist/react/chat-messages.d.mts.map +1 -1
- package/dist/skillset/merge.d.mts +2 -2
- package/dist/tools/subagent.d.mts +3 -1
- package/dist/tools/subagent.d.mts.map +1 -1
- package/dist/tools/subagent.mjs +5 -3
- package/dist/tools/subagent.mjs.map +1 -1
- package/package.json +1 -1
- package/src/tools/subagent.ts +5 -3
package/README.md
CHANGED
|
@@ -760,8 +760,13 @@ The optional parent identity lets a later conversation run address the original
|
|
|
760
760
|
acceptance independent of how quickly the child finishes.
|
|
761
761
|
It emits normal tool completion but **not** `SubagentCompleted`, and carries no usage. Keep the
|
|
762
762
|
logical `subagent:<toolCallId>` identity separate from the physical Workflow id. Never append a
|
|
763
|
-
second tool result for the original launch
|
|
764
|
-
do not masquerade as fresh child usage.
|
|
763
|
+
second tool result for the original launch. Hosts may deliver findings automatically or expose
|
|
764
|
+
host-owned status/wait tools whose observations do not masquerade as fresh child usage. The SDK
|
|
765
|
+
registers none of those observation tools and promises no automatic delivery. Its default background
|
|
766
|
+
parameter and acceptance text therefore defer to host instructions instead of naming unavailable
|
|
767
|
+
tools. Hosts should describe their actual completion policy in model-visible instructions and retain
|
|
768
|
+
lookup identities in accepted-result text if they customize it; structured metadata alone may not
|
|
769
|
+
survive provider lowering. Host-owned storage must remain readable after parent end.
|
|
765
770
|
|
|
766
771
|
A lost control response or exhausted observation budget is not a terminal child failure. Hosts
|
|
767
772
|
can return a `ToolResult` with `structuredContent.type: 'subagent_observation'` and a matching
|
|
@@ -11,14 +11,6 @@ import { Data } from "effect";
|
|
|
11
11
|
//#region src/react/chat-actions.d.ts
|
|
12
12
|
type AgentChatAction = AgentChatAction$1;
|
|
13
13
|
declare const AgentChatAction: {
|
|
14
|
-
readonly Error: Data.TaggedEnum.ConstructorFrom<{
|
|
15
|
-
readonly _tag: "Error";
|
|
16
|
-
readonly message: string;
|
|
17
|
-
}, "_tag">;
|
|
18
|
-
readonly SubmitHitlResponse: Data.TaggedEnum.ConstructorFrom<{
|
|
19
|
-
readonly _tag: "SubmitHitlResponse";
|
|
20
|
-
readonly response: HitlResponse;
|
|
21
|
-
}, "_tag">;
|
|
22
14
|
readonly HydrateMessage: Data.TaggedEnum.ConstructorFrom<{
|
|
23
15
|
readonly _tag: "HydrateMessage";
|
|
24
16
|
readonly message: AgentMessage;
|
|
@@ -31,6 +23,10 @@ declare const AgentChatAction: {
|
|
|
31
23
|
readonly _tag: "AppendMessage";
|
|
32
24
|
readonly message: AgentMessage;
|
|
33
25
|
}, "_tag">;
|
|
26
|
+
readonly SubmitHitlResponse: Data.TaggedEnum.ConstructorFrom<{
|
|
27
|
+
readonly _tag: "SubmitHitlResponse";
|
|
28
|
+
readonly response: HitlResponse;
|
|
29
|
+
}, "_tag">;
|
|
34
30
|
readonly DeleteTurn: Data.TaggedEnum.ConstructorFrom<{
|
|
35
31
|
readonly _tag: "DeleteTurn";
|
|
36
32
|
readonly messageId: string;
|
|
@@ -48,10 +44,14 @@ declare const AgentChatAction: {
|
|
|
48
44
|
readonly _tag: "Event";
|
|
49
45
|
readonly event: AgentEvent;
|
|
50
46
|
} & ApplyAgentEventToChatMessagesOptions, "_tag">;
|
|
47
|
+
readonly Error: Data.TaggedEnum.ConstructorFrom<{
|
|
48
|
+
readonly _tag: "Error";
|
|
49
|
+
readonly message: string;
|
|
50
|
+
}, "_tag">;
|
|
51
51
|
readonly Abort: Data.TaggedEnum.ConstructorFrom<{
|
|
52
52
|
readonly _tag: "Abort";
|
|
53
53
|
}, "_tag">;
|
|
54
|
-
readonly $is: <Tag extends "
|
|
54
|
+
readonly $is: <Tag extends "HydrateMessage" | "Submit" | "AppendMessage" | "SubmitHitlResponse" | "DeleteTurn" | "RegenerateFrom" | "EditUserMessage" | "Event" | "Error" | "Abort">(tag: Tag) => (u: unknown) => u is Extract<{
|
|
55
55
|
readonly _tag: "HydrateMessage";
|
|
56
56
|
readonly message: AgentMessage;
|
|
57
57
|
}, {
|
|
@@ -104,14 +104,6 @@ declare const AgentChatAction: {
|
|
|
104
104
|
}>;
|
|
105
105
|
readonly $match: {
|
|
106
106
|
<Cases extends {
|
|
107
|
-
readonly Error: (args: {
|
|
108
|
-
readonly _tag: "Error";
|
|
109
|
-
readonly message: string;
|
|
110
|
-
}) => any;
|
|
111
|
-
readonly SubmitHitlResponse: (args: {
|
|
112
|
-
readonly _tag: "SubmitHitlResponse";
|
|
113
|
-
readonly response: HitlResponse;
|
|
114
|
-
}) => any;
|
|
115
107
|
readonly HydrateMessage: (args: {
|
|
116
108
|
readonly _tag: "HydrateMessage";
|
|
117
109
|
readonly message: AgentMessage;
|
|
@@ -124,6 +116,10 @@ declare const AgentChatAction: {
|
|
|
124
116
|
readonly _tag: "AppendMessage";
|
|
125
117
|
readonly message: AgentMessage;
|
|
126
118
|
}) => any;
|
|
119
|
+
readonly SubmitHitlResponse: (args: {
|
|
120
|
+
readonly _tag: "SubmitHitlResponse";
|
|
121
|
+
readonly response: HitlResponse;
|
|
122
|
+
}) => any;
|
|
127
123
|
readonly DeleteTurn: (args: {
|
|
128
124
|
readonly _tag: "DeleteTurn";
|
|
129
125
|
readonly messageId: string;
|
|
@@ -141,19 +137,15 @@ declare const AgentChatAction: {
|
|
|
141
137
|
readonly _tag: "Event";
|
|
142
138
|
readonly event: AgentEvent;
|
|
143
139
|
} & ApplyAgentEventToChatMessagesOptions) => any;
|
|
144
|
-
readonly Abort: (args: {
|
|
145
|
-
readonly _tag: "Abort";
|
|
146
|
-
}) => any;
|
|
147
|
-
}>(cases: Cases): (value: AgentChatAction$1) => import("effect/Unify").Unify<ReturnType<Cases["Error" | "SubmitHitlResponse" | "HydrateMessage" | "Submit" | "AppendMessage" | "DeleteTurn" | "RegenerateFrom" | "EditUserMessage" | "Event" | "Abort"]>>;
|
|
148
|
-
<Cases extends {
|
|
149
140
|
readonly Error: (args: {
|
|
150
141
|
readonly _tag: "Error";
|
|
151
142
|
readonly message: string;
|
|
152
143
|
}) => any;
|
|
153
|
-
readonly
|
|
154
|
-
readonly _tag: "
|
|
155
|
-
readonly response: HitlResponse;
|
|
144
|
+
readonly Abort: (args: {
|
|
145
|
+
readonly _tag: "Abort";
|
|
156
146
|
}) => any;
|
|
147
|
+
}>(cases: Cases): (value: AgentChatAction$1) => import("effect/Unify").Unify<ReturnType<Cases["HydrateMessage" | "Submit" | "AppendMessage" | "SubmitHitlResponse" | "DeleteTurn" | "RegenerateFrom" | "EditUserMessage" | "Event" | "Error" | "Abort"]>>;
|
|
148
|
+
<Cases extends {
|
|
157
149
|
readonly HydrateMessage: (args: {
|
|
158
150
|
readonly _tag: "HydrateMessage";
|
|
159
151
|
readonly message: AgentMessage;
|
|
@@ -166,6 +158,10 @@ declare const AgentChatAction: {
|
|
|
166
158
|
readonly _tag: "AppendMessage";
|
|
167
159
|
readonly message: AgentMessage;
|
|
168
160
|
}) => any;
|
|
161
|
+
readonly SubmitHitlResponse: (args: {
|
|
162
|
+
readonly _tag: "SubmitHitlResponse";
|
|
163
|
+
readonly response: HitlResponse;
|
|
164
|
+
}) => any;
|
|
169
165
|
readonly DeleteTurn: (args: {
|
|
170
166
|
readonly _tag: "DeleteTurn";
|
|
171
167
|
readonly messageId: string;
|
|
@@ -183,24 +179,28 @@ declare const AgentChatAction: {
|
|
|
183
179
|
readonly _tag: "Event";
|
|
184
180
|
readonly event: AgentEvent;
|
|
185
181
|
} & ApplyAgentEventToChatMessagesOptions) => any;
|
|
182
|
+
readonly Error: (args: {
|
|
183
|
+
readonly _tag: "Error";
|
|
184
|
+
readonly message: string;
|
|
185
|
+
}) => any;
|
|
186
186
|
readonly Abort: (args: {
|
|
187
187
|
readonly _tag: "Abort";
|
|
188
188
|
}) => any;
|
|
189
|
-
}>(value: AgentChatAction$1, cases: Cases): import("effect/Unify").Unify<ReturnType<Cases["
|
|
189
|
+
}>(value: AgentChatAction$1, cases: Cases): import("effect/Unify").Unify<ReturnType<Cases["HydrateMessage" | "Submit" | "AppendMessage" | "SubmitHitlResponse" | "DeleteTurn" | "RegenerateFrom" | "EditUserMessage" | "Event" | "Error" | "Abort"]>>;
|
|
190
190
|
};
|
|
191
191
|
};
|
|
192
192
|
type AgentChatSubmitResult = AgentChatSubmitResult$1;
|
|
193
193
|
declare const AgentChatSubmitResult: {
|
|
194
|
-
readonly Ignored: Data.TaggedEnum.ConstructorFrom<{
|
|
195
|
-
readonly _tag: "Ignored";
|
|
196
|
-
}, "_tag">;
|
|
197
194
|
readonly Submitted: Data.TaggedEnum.ConstructorFrom<{
|
|
198
195
|
readonly _tag: "Submitted";
|
|
199
196
|
readonly content: Content;
|
|
200
197
|
readonly message: UserMessage;
|
|
201
198
|
readonly messages: AgentTranscript;
|
|
202
199
|
}, "_tag">;
|
|
203
|
-
readonly
|
|
200
|
+
readonly Ignored: Data.TaggedEnum.ConstructorFrom<{
|
|
201
|
+
readonly _tag: "Ignored";
|
|
202
|
+
}, "_tag">;
|
|
203
|
+
readonly $is: <Tag extends "Submitted" | "Ignored">(tag: Tag) => (u: unknown) => u is Extract<{
|
|
204
204
|
readonly _tag: "Submitted";
|
|
205
205
|
readonly content: Content;
|
|
206
206
|
readonly message: UserMessage;
|
|
@@ -214,27 +214,27 @@ declare const AgentChatSubmitResult: {
|
|
|
214
214
|
}>;
|
|
215
215
|
readonly $match: {
|
|
216
216
|
<Cases extends {
|
|
217
|
-
readonly Ignored: (args: {
|
|
218
|
-
readonly _tag: "Ignored";
|
|
219
|
-
}) => any;
|
|
220
217
|
readonly Submitted: (args: {
|
|
221
218
|
readonly _tag: "Submitted";
|
|
222
219
|
readonly content: Content;
|
|
223
220
|
readonly message: UserMessage;
|
|
224
221
|
readonly messages: AgentTranscript;
|
|
225
222
|
}) => any;
|
|
226
|
-
}>(cases: Cases): (value: AgentChatSubmitResult$1) => import("effect/Unify").Unify<ReturnType<Cases["Ignored" | "Submitted"]>>;
|
|
227
|
-
<Cases extends {
|
|
228
223
|
readonly Ignored: (args: {
|
|
229
224
|
readonly _tag: "Ignored";
|
|
230
225
|
}) => any;
|
|
226
|
+
}>(cases: Cases): (value: AgentChatSubmitResult$1) => import("effect/Unify").Unify<ReturnType<Cases["Submitted" | "Ignored"]>>;
|
|
227
|
+
<Cases extends {
|
|
231
228
|
readonly Submitted: (args: {
|
|
232
229
|
readonly _tag: "Submitted";
|
|
233
230
|
readonly content: Content;
|
|
234
231
|
readonly message: UserMessage;
|
|
235
232
|
readonly messages: AgentTranscript;
|
|
236
233
|
}) => any;
|
|
237
|
-
|
|
234
|
+
readonly Ignored: (args: {
|
|
235
|
+
readonly _tag: "Ignored";
|
|
236
|
+
}) => any;
|
|
237
|
+
}>(value: AgentChatSubmitResult$1, cases: Cases): import("effect/Unify").Unify<ReturnType<Cases["Submitted" | "Ignored"]>>;
|
|
238
238
|
};
|
|
239
239
|
};
|
|
240
240
|
type AgentChatDeleteTurnResult = AgentChatDeleteTurnResult$1;
|
|
@@ -371,15 +371,15 @@ declare const AgentChatEditUserMessageResult: {
|
|
|
371
371
|
};
|
|
372
372
|
type AgentChatHitlResponseResult = AgentChatHitlResponseResult$1;
|
|
373
373
|
declare const AgentChatHitlResponseResult: {
|
|
374
|
-
readonly Ignored: Data.TaggedEnum.ConstructorFrom<{
|
|
375
|
-
readonly _tag: "Ignored";
|
|
376
|
-
}, "_tag">;
|
|
377
374
|
readonly Submitted: Data.TaggedEnum.ConstructorFrom<{
|
|
378
375
|
readonly _tag: "Submitted";
|
|
379
376
|
readonly response: HitlResponse;
|
|
380
377
|
readonly messages: AgentTranscript;
|
|
381
378
|
}, "_tag">;
|
|
382
|
-
readonly
|
|
379
|
+
readonly Ignored: Data.TaggedEnum.ConstructorFrom<{
|
|
380
|
+
readonly _tag: "Ignored";
|
|
381
|
+
}, "_tag">;
|
|
382
|
+
readonly $is: <Tag extends "Submitted" | "Ignored">(tag: Tag) => (u: unknown) => u is Extract<{
|
|
383
383
|
readonly _tag: "Submitted";
|
|
384
384
|
readonly response: HitlResponse;
|
|
385
385
|
readonly messages: AgentTranscript;
|
|
@@ -392,25 +392,25 @@ declare const AgentChatHitlResponseResult: {
|
|
|
392
392
|
}>;
|
|
393
393
|
readonly $match: {
|
|
394
394
|
<Cases extends {
|
|
395
|
-
readonly Ignored: (args: {
|
|
396
|
-
readonly _tag: "Ignored";
|
|
397
|
-
}) => any;
|
|
398
395
|
readonly Submitted: (args: {
|
|
399
396
|
readonly _tag: "Submitted";
|
|
400
397
|
readonly response: HitlResponse;
|
|
401
398
|
readonly messages: AgentTranscript;
|
|
402
399
|
}) => any;
|
|
403
|
-
}>(cases: Cases): (value: AgentChatHitlResponseResult$1) => import("effect/Unify").Unify<ReturnType<Cases["Ignored" | "Submitted"]>>;
|
|
404
|
-
<Cases extends {
|
|
405
400
|
readonly Ignored: (args: {
|
|
406
401
|
readonly _tag: "Ignored";
|
|
407
402
|
}) => any;
|
|
403
|
+
}>(cases: Cases): (value: AgentChatHitlResponseResult$1) => import("effect/Unify").Unify<ReturnType<Cases["Submitted" | "Ignored"]>>;
|
|
404
|
+
<Cases extends {
|
|
408
405
|
readonly Submitted: (args: {
|
|
409
406
|
readonly _tag: "Submitted";
|
|
410
407
|
readonly response: HitlResponse;
|
|
411
408
|
readonly messages: AgentTranscript;
|
|
412
409
|
}) => any;
|
|
413
|
-
|
|
410
|
+
readonly Ignored: (args: {
|
|
411
|
+
readonly _tag: "Ignored";
|
|
412
|
+
}) => any;
|
|
413
|
+
}>(value: AgentChatHitlResponseResult$1, cases: Cases): import("effect/Unify").Unify<ReturnType<Cases["Submitted" | "Ignored"]>>;
|
|
414
414
|
};
|
|
415
415
|
};
|
|
416
416
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat-actions.d.mts","names":[],"sources":["../../src/react/chat-actions.ts"],"mappings":";;;;;;;;;;;KAUY,eAAA,GAAkB,iBAAmB;AAAA,cAEpC,eAAA;EAAA
|
|
1
|
+
{"version":3,"file":"chat-actions.d.mts","names":[],"sources":["../../src/react/chat-actions.ts"],"mappings":";;;;;;;;;;;KAUY,eAAA,GAAkB,iBAAmB;AAAA,cAEpC,eAAA;EAAA;;sBAAoD,YAAA;EAAA;EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAErD,qBAAA,GAAwB,uBAAyB;AAAA,cAEhD,qBAAA;EAAA;;sBAAgE,OAAA;IAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAEjE,yBAAA,GAA4B,2BAA6B;AAAA,cAExD,yBAAA;EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAED,yBAAA,GAA4B,2BAA6B;AAAA,cAExD,yBAAA;EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAED,8BAAA,GAAiC,gCAAkC;AAAA,cAElE,8BAAA;EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAED,2BAAA,GAA8B,6BAA+B;AAAA,cAE5D,2BAAA;EAAA;;uBAA4E,YAAA;IAAA"}
|
|
@@ -464,6 +464,12 @@ type AgentChatPart = {
|
|
|
464
464
|
readonly message: string;
|
|
465
465
|
};
|
|
466
466
|
declare const AgentChatPart: {
|
|
467
|
+
readonly ToolCall: Data.TaggedEnum.ConstructorFrom<{
|
|
468
|
+
readonly _tag: "ToolCall";
|
|
469
|
+
readonly id: string;
|
|
470
|
+
readonly call: ToolCall;
|
|
471
|
+
readonly state: ChatToolState;
|
|
472
|
+
}, "_tag">;
|
|
467
473
|
readonly Text: Data.TaggedEnum.ConstructorFrom<{
|
|
468
474
|
readonly _tag: "Text";
|
|
469
475
|
readonly id: string;
|
|
@@ -476,12 +482,6 @@ declare const AgentChatPart: {
|
|
|
476
482
|
readonly text: string;
|
|
477
483
|
readonly state: ChatPartState;
|
|
478
484
|
}, "_tag">;
|
|
479
|
-
readonly ToolCall: Data.TaggedEnum.ConstructorFrom<{
|
|
480
|
-
readonly _tag: "ToolCall";
|
|
481
|
-
readonly id: string;
|
|
482
|
-
readonly call: ToolCall;
|
|
483
|
-
readonly state: ChatToolState;
|
|
484
|
-
}, "_tag">;
|
|
485
485
|
readonly ToolResult: Data.TaggedEnum.ConstructorFrom<{
|
|
486
486
|
readonly _tag: "ToolResult";
|
|
487
487
|
readonly id: string;
|
|
@@ -497,7 +497,7 @@ declare const AgentChatPart: {
|
|
|
497
497
|
readonly id: string;
|
|
498
498
|
readonly message: string;
|
|
499
499
|
}, "_tag">;
|
|
500
|
-
readonly $is: <Tag extends "
|
|
500
|
+
readonly $is: <Tag extends "ToolCall" | "Text" | "Reasoning" | "ToolResult" | "Error">(tag: Tag) => (u: unknown) => u is Extract<{
|
|
501
501
|
readonly _tag: "Text";
|
|
502
502
|
readonly id: string;
|
|
503
503
|
readonly content: Content;
|
|
@@ -538,6 +538,12 @@ declare const AgentChatPart: {
|
|
|
538
538
|
}>;
|
|
539
539
|
readonly $match: {
|
|
540
540
|
<Cases extends {
|
|
541
|
+
readonly ToolCall: (args: {
|
|
542
|
+
readonly _tag: "ToolCall";
|
|
543
|
+
readonly id: string;
|
|
544
|
+
readonly call: ToolCall;
|
|
545
|
+
readonly state: ChatToolState;
|
|
546
|
+
}) => any;
|
|
541
547
|
readonly Text: (args: {
|
|
542
548
|
readonly _tag: "Text";
|
|
543
549
|
readonly id: string;
|
|
@@ -550,12 +556,6 @@ declare const AgentChatPart: {
|
|
|
550
556
|
readonly text: string;
|
|
551
557
|
readonly state: ChatPartState;
|
|
552
558
|
}) => any;
|
|
553
|
-
readonly ToolCall: (args: {
|
|
554
|
-
readonly _tag: "ToolCall";
|
|
555
|
-
readonly id: string;
|
|
556
|
-
readonly call: ToolCall;
|
|
557
|
-
readonly state: ChatToolState;
|
|
558
|
-
}) => any;
|
|
559
559
|
readonly ToolResult: (args: {
|
|
560
560
|
readonly _tag: "ToolResult";
|
|
561
561
|
readonly id: string;
|
|
@@ -571,8 +571,14 @@ declare const AgentChatPart: {
|
|
|
571
571
|
readonly id: string;
|
|
572
572
|
readonly message: string;
|
|
573
573
|
}) => any;
|
|
574
|
-
}>(cases: Cases): (value: AgentChatPart) => import("effect/Unify").Unify<ReturnType<Cases["
|
|
574
|
+
}>(cases: Cases): (value: AgentChatPart) => import("effect/Unify").Unify<ReturnType<Cases["ToolCall" | "Text" | "Reasoning" | "ToolResult" | "Error"]>>;
|
|
575
575
|
<Cases extends {
|
|
576
|
+
readonly ToolCall: (args: {
|
|
577
|
+
readonly _tag: "ToolCall";
|
|
578
|
+
readonly id: string;
|
|
579
|
+
readonly call: ToolCall;
|
|
580
|
+
readonly state: ChatToolState;
|
|
581
|
+
}) => any;
|
|
576
582
|
readonly Text: (args: {
|
|
577
583
|
readonly _tag: "Text";
|
|
578
584
|
readonly id: string;
|
|
@@ -585,12 +591,6 @@ declare const AgentChatPart: {
|
|
|
585
591
|
readonly text: string;
|
|
586
592
|
readonly state: ChatPartState;
|
|
587
593
|
}) => any;
|
|
588
|
-
readonly ToolCall: (args: {
|
|
589
|
-
readonly _tag: "ToolCall";
|
|
590
|
-
readonly id: string;
|
|
591
|
-
readonly call: ToolCall;
|
|
592
|
-
readonly state: ChatToolState;
|
|
593
|
-
}) => any;
|
|
594
594
|
readonly ToolResult: (args: {
|
|
595
595
|
readonly _tag: "ToolResult";
|
|
596
596
|
readonly id: string;
|
|
@@ -606,7 +606,7 @@ declare const AgentChatPart: {
|
|
|
606
606
|
readonly id: string;
|
|
607
607
|
readonly message: string;
|
|
608
608
|
}) => any;
|
|
609
|
-
}>(value: AgentChatPart, cases: Cases): import("effect/Unify").Unify<ReturnType<Cases["
|
|
609
|
+
}>(value: AgentChatPart, cases: Cases): import("effect/Unify").Unify<ReturnType<Cases["ToolCall" | "Text" | "Reasoning" | "ToolResult" | "Error"]>>;
|
|
610
610
|
};
|
|
611
611
|
};
|
|
612
612
|
type AgentChatMessage = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat-messages.d.mts","names":[],"sources":["../../src/react/chat-messages.ts"],"mappings":"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
|
|
1
|
+
{"version":3,"file":"chat-messages.d.mts","names":[],"sources":["../../src/react/chat-messages.ts"],"mappings":"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"}
|
|
@@ -15,9 +15,9 @@ type MergedSkillset = {
|
|
|
15
15
|
};
|
|
16
16
|
declare const mergeSkillsets: (sources: ReadonlyArray<SkillsetSource>) => Effect.Effect<{
|
|
17
17
|
skills: {
|
|
18
|
-
readonly content: string;
|
|
19
18
|
readonly name: string;
|
|
20
19
|
readonly description: string;
|
|
20
|
+
readonly content: string;
|
|
21
21
|
readonly location: string;
|
|
22
22
|
readonly source?: string | undefined;
|
|
23
23
|
}[];
|
|
@@ -25,8 +25,8 @@ declare const mergeSkillsets: (sources: ReadonlyArray<SkillsetSource>) => Effect
|
|
|
25
25
|
readonly name: string;
|
|
26
26
|
readonly hints: readonly string[];
|
|
27
27
|
readonly template: string;
|
|
28
|
-
readonly source?: string | undefined;
|
|
29
28
|
readonly description?: string | undefined;
|
|
29
|
+
readonly source?: string | undefined;
|
|
30
30
|
readonly location?: string | undefined;
|
|
31
31
|
readonly arguments?: readonly {
|
|
32
32
|
readonly required: boolean;
|
|
@@ -85,7 +85,9 @@ declare const subagentUsageFromToolResult: (result: ToolResult) => AgentUsage |
|
|
|
85
85
|
declare const subagentResultFromEvents: (events: ReadonlyArray<AgentEvent>) => SubagentRunResult;
|
|
86
86
|
declare const subagentResultText: (events: ReadonlyArray<AgentEvent>) => string;
|
|
87
87
|
declare const makeSubagentToolResult: (input: SubagentToolResultInput) => ToolResult;
|
|
88
|
-
/** Acceptance is a tool completion, never a child completion or usage delta.
|
|
88
|
+
/** Acceptance is a tool completion, never a child completion or usage delta.
|
|
89
|
+
* Hosts own completion delivery and any observation tools; registration supplies neither.
|
|
90
|
+
*/
|
|
89
91
|
declare const makeSubagentAcceptedToolResult: (input: {
|
|
90
92
|
readonly callId: string;
|
|
91
93
|
readonly workflowRunId: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subagent.d.mts","names":[],"sources":["../../src/tools/subagent.ts"],"mappings":";;;;;;;KA+CY,kBAAA;EAAA,SACD,WAAA;EAAA,SACA,MAAA;EAAA,SACA,aAAA;EAAA,SACA,KAAA;EAAA,SACA,gBAAA,GAAmB,oBAAoB;EAAA,SACvC,UAAA;AAAA;AAAA,KAGC,kBAAA;EAAA,SACD,IAAA;EAAA,SACA,WAAW;AAAA;AAAA,KAGV,uBAAA;EAAA,SACD,EAAA;EAAA,SACA,WAAW;AAAA;AAAA,KAGV,iCAAA;EAAA,SACD,KAAA,EAAO,oBAAoB;EAAA,SAC3B,WAAA;AAAA;AAAA,KAGC,+BAAA;kFAED,UAAA;EAAA,SACA,MAAA,GAAS,aAAA,CAAc,uBAAA;EAAA,SACvB,gBAAA,GAAmB,aAAA,CAAc,iCAAA;AAAA;AAAA,KAGhC,eAAA;EAAA,SACD,QAAQ;AAAA;AAAA,KAGP,sBAAA;EAAA,SACD,IAAA,EAAM,QAAA;EAAA,SACN,OAAA,EAAS,OAAA;EAAA,SACT,MAAA,EAAQ,kBAAA;AAAA;AAAA,KAGP,mBAAA,YAA+B,+BAAA;EAAA,SAChC,SAAA,EAAW,aAAA,CAAc,kBAAA;EAAA,SACzB,SAAA,IAAa,OAAA,EAAS,OAAA,KAAY,MAAA,CAAO,MAAA,UAAgB,iBAAA;EAAA,SACzD,OAAA,GAAU,KAAA,EAAO,sBAAA,CAAuB,OAAA,MAAa,MAAA,CAAO,MAAA,CAAO,UAAA,EAAY,SAAA;AAAA;AAAA,KAG9E,gBAAA;EAAA,SACD,IAAA,EAAM,cAAA;EAAA,SACN,OAAA;EAAA,SACA,SAAA;EAAA,SACA,QAAA,GAAW,iBAAiB;AAAA;AAAA,KAG3B,iBAAA;AAAA,KAEA,iBAAA;EAAA,SACD,MAAA,EAAQ,iBAAA;EAAA,SACR,IAAA;EAAA,SACA,KAAA,GAAQ,UAAA;EAAA,SACR,KAAA;EAAA,SACA,QAAA,GAAW,aAAA,CAAc,WAAA;EAAA,SACzB,KAAA,GAAQ,gBAAA;AAAA;AAAA,KAGP,uBAAA;EAAA,SACD,MAAA;EAAA,SACA,MAAA;EAAA,SACA,YAAA;EAAA,SACA,WAAA;EAAA,SACA,aAAA;EAAA,SACA,WAAA;EAAA,SACA,SAAA;EAAA,SACA,KAAA;EAAA,SACA,eAAA,GAAkB,oBAAA;EAAA,SAClB,KAAA,GAAQ,UAAA;EAAA,SACR,KAAA;EAAA,SACA,MAAA,GAAS,iBAAA;EAAA,SACT,QAAA,GAAW,aAAA,CAAc,WAAA;EAAA,SACzB,KAAA,GAAQ,gBAAA;EAAA,SACR,OAAA;AAAA;AAAA,cAgRE,4BAAA,YACX,OAAA,EAAS,mBAAA,CAAoB,OAAA,MAC5B,gBAAA,CAAiB,OAAA;AAAA,cAwBP,mBAAA,GACX,SAAA,EAAW,aAAA,CAAc,kBAAA,GACzB,iBAAA,GAAmB,+BAAA,wCAAoC,OAAA;AAAA,cAQ5C,sBAAA,YACX,OAAA,EAAS,mBAAA,CAAoB,OAAA,MAC5B,UAAA,CAAW,OAAA;AAAA,cAKD,kCAAA,mBAAsD,eAAA,EACjE,OAAA,EAAS,mBAAA,CAAoB,OAAA,MAC5B,UAAA,CAAW,OAAA;AAAA,cAWD,oBAAA,GAAwB,MAAc;AAAA,cAGtC,iBAAA,GAAiB,gBAAA;AAAA,cAkJjB,2BAAA,GAA+B,MAAA,EAAQ,UAAA,KAAa,UAAU;AAAA,cA8B9D,wBAAA,GAA4B,MAAA,EAAQ,aAAA,CAAc,UAAA,MAAc,iBAAA;AAAA,cA2EhE,kBAAA,GAAsB,MAAA,EAAQ,aAAa,CAAC,UAAA;AAAA,cAyC5C,sBAAA,GAA0B,KAAA,EAAO,uBAAA,KAAuB,UAUpE
|
|
1
|
+
{"version":3,"file":"subagent.d.mts","names":[],"sources":["../../src/tools/subagent.ts"],"mappings":"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"}
|
package/dist/tools/subagent.mjs
CHANGED
|
@@ -25,7 +25,7 @@ const optionalRuntimeSelection = (input) => Schema$1.optionalKey(Schema$1.Enum(e
|
|
|
25
25
|
const configuredSubagentToolParams = (options) => {
|
|
26
26
|
const fields = {
|
|
27
27
|
...SubagentToolBaseFields,
|
|
28
|
-
background: Schema$1.optionalKey(Schema$1.Boolean.pipe(Schema$1.annotate({ description: "Return an accepted handle immediately
|
|
28
|
+
background: Schema$1.optionalKey(Schema$1.Boolean.pipe(Schema$1.annotate({ description: "Return an accepted handle immediately, not the completed result. Completion delivery and observation follow the host instructions." })))
|
|
29
29
|
};
|
|
30
30
|
const model = options.models === void 0 || options.models.length === 0 ? void 0 : optionalRuntimeSelection({
|
|
31
31
|
values: options.models.map((item) => item.id),
|
|
@@ -312,10 +312,12 @@ const subagentAcceptedStructuredContent = (input) => {
|
|
|
312
312
|
if (input.parentRunId !== void 0) structuredContent.parent_run_id = input.parentRunId;
|
|
313
313
|
return structuredContent;
|
|
314
314
|
};
|
|
315
|
-
/** Acceptance is a tool completion, never a child completion or usage delta.
|
|
315
|
+
/** Acceptance is a tool completion, never a child completion or usage delta.
|
|
316
|
+
* Hosts own completion delivery and any observation tools; registration supplies neither.
|
|
317
|
+
*/
|
|
316
318
|
const makeSubagentAcceptedToolResult = (input) => ToolResult.make({
|
|
317
319
|
toolCallId: input.callId,
|
|
318
|
-
content: `Subagent accepted
|
|
320
|
+
content: `Subagent accepted, not completed. Reference: tool_call_id=${input.callId}${input.parentRunId === void 0 ? "" : ` and parent_run_id=${input.parentRunId}`}. Completion delivery and observation follow the host instructions.`,
|
|
319
321
|
structuredContent: subagentAcceptedStructuredContent(input)
|
|
320
322
|
});
|
|
321
323
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subagent.mjs","names":["Schema"],"sources":["../../src/tools/subagent.ts"],"sourcesContent":["import { Effect, Predicate } from 'effect'\nimport * as Schema from 'effect/Schema'\nimport { ToolError } from '@yolk-sdk/agent/loop'\nimport {\n addAgentUsage,\n assistantContent,\n AgentUsage,\n contentText,\n isTerminalAgentEvent,\n makeSubagentRunId,\n ToolResult,\n type AgentErrorCode,\n type AgentEvent,\n type AgentMessage,\n type AgentReasoningEffort,\n type HitlRequest,\n type ProviderErrorInfo,\n type ToolCall,\n zeroAgentUsage\n} from '@yolk-sdk/agent/protocol'\nimport { subagentToolName } from '../protocol/tool.ts'\nimport {\n makeTool,\n modelVisibleToolError,\n type ModelVisibleToolError,\n type ToolModule,\n type ToolRegistration,\n type ToolRegistryError\n} from './registry.ts'\n\nexport { subagentToolName }\n\nconst SubagentToolBaseFields = {\n description: Schema.String.pipe(\n Schema.annotate({ description: 'A short 3-5 word description of the task.' })\n ),\n prompt: Schema.String.pipe(\n Schema.annotate({\n description:\n 'The complete task instructions for the subagent, including all context it needs.'\n })\n ),\n subagent_type: Schema.String.pipe(\n Schema.annotate({ description: 'The specialized subagent type to use for this task.' })\n )\n}\n\nexport type SubagentToolParams = {\n readonly description: string\n readonly prompt: string\n readonly subagent_type: string\n readonly model?: string\n readonly reasoning_effort?: AgentReasoningEffort\n readonly background?: boolean\n}\n\nexport type SubagentDefinition = {\n readonly name: string\n readonly description: string\n}\n\nexport type SubagentModelDefinition = {\n readonly id: string\n readonly description: string\n}\n\nexport type SubagentReasoningEffortDefinition = {\n readonly value: AgentReasoningEffort\n readonly description: string\n}\n\nexport type SubagentRuntimeSelectionOptions = {\n /** Opt-in only: inline hosts do not advertise background execution. */\n readonly background?: boolean\n readonly models?: ReadonlyArray<SubagentModelDefinition>\n readonly reasoningEfforts?: ReadonlyArray<SubagentReasoningEffortDefinition>\n}\n\nexport type SubagentContext = {\n readonly subagent?: boolean\n}\n\nexport type SubagentExecutionInput<Context> = {\n readonly call: ToolCall\n readonly context: Context\n readonly params: SubagentToolParams\n}\n\nexport type SubagentToolOptions<Context> = SubagentRuntimeSelectionOptions & {\n readonly subagents: ReadonlyArray<SubagentDefinition>\n readonly isEnabled?: (context: Context) => Effect.Effect<boolean, ToolRegistryError>\n readonly execute: (input: SubagentExecutionInput<Context>) => Effect.Effect<ToolResult, ToolError>\n}\n\nexport type SubagentRunError = {\n readonly code: AgentErrorCode\n readonly message: string\n readonly retryable: boolean\n readonly provider?: ProviderErrorInfo\n}\n\nexport type SubagentRunStatus = 'completed' | 'awaiting_input' | 'error'\n\nexport type SubagentRunResult = {\n readonly status: SubagentRunStatus\n readonly text: string\n readonly usage?: AgentUsage\n readonly turns?: number\n readonly requests?: ReadonlyArray<HitlRequest>\n readonly error?: SubagentRunError\n}\n\nexport type SubagentToolResultInput = {\n readonly callId: string\n readonly output: string\n readonly subagentType: string\n readonly description: string\n readonly subagentRunId: string\n readonly startedAtMs: number\n readonly endedAtMs: number\n readonly model: string\n readonly reasoningEffort?: AgentReasoningEffort\n readonly usage?: AgentUsage\n readonly turns?: number\n readonly status?: SubagentRunStatus\n readonly requests?: ReadonlyArray<HitlRequest>\n readonly error?: SubagentRunError\n readonly isError?: boolean\n}\n\ntype SubagentToolParamsFields = {\n readonly description: string\n readonly prompt: string\n readonly subagent_type: string\n model?: string\n reasoning_effort?: AgentReasoningEffort\n background?: boolean\n}\n\ntype SubagentProviderMetadataFields = {\n readonly provider: string\n readonly kind: ProviderErrorInfo['kind']\n status?: number\n provider_code?: string\n retry_after_ms?: number\n}\n\ntype SubagentUsageInputMetadataFields = {\n readonly total: number\n uncached?: number\n cache_read?: number\n cache_write?: number\n}\n\ntype SubagentUsageOutputMetadataFields = {\n readonly total: number\n text?: number\n reasoning?: number\n}\n\ntype SubagentUsageMetadataFields = {\n readonly input: SubagentUsageInputMetadataFields\n readonly output: SubagentUsageOutputMetadataFields\n}\n\ntype SubagentErrorMetadataFields = {\n readonly code: AgentErrorCode\n readonly message: string\n readonly retryable: boolean\n provider?: SubagentProviderMetadataFields\n}\n\ntype SubagentRunErrorFields = {\n readonly code: AgentErrorCode\n readonly message: string\n readonly retryable: boolean\n provider?: ProviderErrorInfo\n}\n\ntype SubagentRunResultFields = {\n readonly status: SubagentRunStatus\n readonly text: string\n usage?: AgentUsage\n turns?: number\n requests?: ReadonlyArray<HitlRequest>\n error?: SubagentRunErrorFields\n}\n\ntype SubagentToolResultStructuredContentFields = {\n readonly subagent_run_id: string\n readonly subagent_type: string\n readonly description: string\n readonly started_at_ms: number\n readonly ended_at_ms: number\n readonly duration_ms: number\n readonly status: SubagentRunStatus\n readonly model: string\n reasoning_effort?: AgentReasoningEffort\n usage?: SubagentUsageMetadataFields\n turns?: number\n hitl_requests?: ReadonlyArray<HitlRequest>\n error?: SubagentErrorMetadataFields\n}\n\ntype SubagentAcceptedStructuredContentFields = {\n readonly type: 'subagent_accepted'\n readonly status: 'accepted'\n readonly subagent_run_id: string\n readonly workflow_run_id: string\n parent_run_id?: string\n}\n\ntype SubagentAgentInputUsageFields = {\n readonly total: number\n uncached?: number\n cacheRead?: number\n cacheWrite?: number\n}\n\ntype SubagentAgentOutputUsageFields = {\n readonly total: number\n text?: number\n reasoning?: number\n}\n\nconst subagentToolError = (message: string, cause: ToolError['cause']) =>\n new ToolError({\n tool: subagentToolName,\n message,\n cause\n })\n\nconst subagentModelVisibleError = (message: string) =>\n modelVisibleToolError({\n tool: subagentToolName,\n message,\n reason: 'validation'\n })\n\nconst enumRecord = <Value extends string>(\n values: ReadonlyArray<Value>\n): Readonly<Record<string, Value>> => Object.fromEntries(values.map(value => [value, value]))\n\nconst optionalRuntimeSelection = <Value extends string>(input: {\n readonly values: ReadonlyArray<Value>\n readonly description: string\n}) =>\n Schema.optionalKey(\n Schema.Enum(enumRecord(input.values)).pipe(Schema.annotate({ description: input.description }))\n )\n\nconst configuredSubagentToolParams = (options: SubagentRuntimeSelectionOptions) => {\n const fields = {\n ...SubagentToolBaseFields,\n background: Schema.optionalKey(\n Schema.Boolean.pipe(\n Schema.annotate({\n description:\n 'Return an accepted handle immediately; use subagent_status or subagent_wait to read the result.'\n })\n )\n )\n }\n\n const model =\n options.models === undefined || options.models.length === 0\n ? undefined\n : optionalRuntimeSelection({\n values: options.models.map(item => item.id),\n description: 'Model for this subagent. Omit to inherit the host runtime model.'\n })\n\n const reasoningEffort =\n options.reasoningEfforts === undefined || options.reasoningEfforts.length === 0\n ? undefined\n : optionalRuntimeSelection({\n values: options.reasoningEfforts.map(item => item.value),\n description:\n 'Reasoning effort for this subagent. Omit to inherit the host runtime effort.'\n })\n\n if (model !== undefined && reasoningEffort !== undefined) {\n return options.background === true\n ? Schema.Struct({ ...fields, model, reasoning_effort: reasoningEffort })\n : Schema.Struct({ ...SubagentToolBaseFields, model, reasoning_effort: reasoningEffort })\n }\n\n if (model !== undefined) {\n return options.background === true\n ? Schema.Struct({ ...fields, model })\n : Schema.Struct({ ...SubagentToolBaseFields, model })\n }\n\n if (reasoningEffort !== undefined) {\n return options.background === true\n ? Schema.Struct({ ...fields, reasoning_effort: reasoningEffort })\n : Schema.Struct({ ...SubagentToolBaseFields, reasoning_effort: reasoningEffort })\n }\n\n return options.background === true ? Schema.Struct(fields) : Schema.Struct(SubagentToolBaseFields)\n}\n\nconst trimmedSubagentParams = (params: SubagentToolParams): SubagentToolParams => {\n const trimmed: SubagentToolParamsFields = {\n description: params.description.trim(),\n prompt: params.prompt.trim(),\n subagent_type: params.subagent_type.trim()\n }\n\n if (params.background !== undefined) {\n trimmed.background = params.background\n }\n\n if (params.model !== undefined) {\n trimmed.model = params.model\n }\n\n if (params.reasoning_effort !== undefined) {\n trimmed.reasoning_effort = params.reasoning_effort\n }\n\n return trimmed\n}\n\nconst validateSubagentParams = (\n params: SubagentToolParams\n): Effect.Effect<SubagentToolParams, ModelVisibleToolError> => {\n const trimmed = trimmedSubagentParams(params)\n\n if (trimmed.description.length === 0) {\n return Effect.fail(subagentModelVisibleError('description must not be empty'))\n }\n\n if (trimmed.prompt.length === 0) {\n return Effect.fail(subagentModelVisibleError('prompt must not be empty'))\n }\n\n if (trimmed.subagent_type.length === 0) {\n return Effect.fail(subagentModelVisibleError('subagent_type must not be empty'))\n }\n\n return Effect.succeed(trimmed)\n}\n\nconst findSubagent = (subagents: ReadonlyArray<SubagentDefinition>, name: string) =>\n subagents.find(subagent => subagent.name === name)\n\nconst requireKnownSubagent = (\n subagents: ReadonlyArray<SubagentDefinition>,\n name: string\n): Effect.Effect<SubagentDefinition, ModelVisibleToolError> => {\n const subagent = findSubagent(subagents, name)\n\n return subagent === undefined\n ? Effect.fail(subagentModelVisibleError(`Unknown subagent type: ${name}`))\n : Effect.succeed(subagent)\n}\n\nconst subagentDescription = (subagent: SubagentDefinition) =>\n `- ${subagent.name}: ${subagent.description}`\n\nconst modelDescription = (model: SubagentModelDefinition) => `- ${model.id}: ${model.description}`\n\nconst reasoningEffortDescription = (effort: SubagentReasoningEffortDefinition) =>\n `- ${effort.value}: ${effort.description}`\n\nconst subagentToolDescription = (\n options: SubagentRuntimeSelectionOptions & {\n readonly subagents: ReadonlyArray<SubagentDefinition>\n }\n) =>\n [\n 'Launch a new agent to handle complex, multistep tasks autonomously.',\n 'Use this when delegating focused work to a specialized subagent would save context or allow parallel exploration.',\n 'To run subagents in parallel, call this subagent tool multiple times in the same assistant response.',\n 'Yolk runs same-turn subagent calls concurrently automatically.',\n 'A fresh subagent only sees the prompt you provide, so include all required context.',\n 'Subagents can use their normal tools but cannot launch further subagents in v1.',\n options.subagents.length === 0\n ? 'No subagent types are currently available.'\n : `Available subagent types:\\n${options.subagents.map(subagentDescription).join('\\n')}`,\n options.models === undefined || options.models.length === 0\n ? undefined\n : [\n 'Available subagent models:',\n options.models.map(modelDescription).join('\\n'),\n 'Omit model to inherit the host runtime model.'\n ].join('\\n'),\n options.reasoningEfforts === undefined || options.reasoningEfforts.length === 0\n ? undefined\n : [\n 'Available subagent reasoning efforts:',\n options.reasoningEfforts.map(reasoningEffortDescription).join('\\n'),\n 'Omit reasoning_effort to inherit the host runtime effort.'\n ].join('\\n')\n ]\n .filter(section => section !== undefined)\n .join('\\n\\n')\n\nexport const makeSubagentToolRegistration = <Context>(\n options: SubagentToolOptions<Context>\n): ToolRegistration<Context> =>\n makeTool({\n name: subagentToolName,\n description: subagentToolDescription(options),\n parameters: configuredSubagentToolParams(options),\n access: 'read',\n isEnabled: options.isEnabled,\n invalidParamsMessage: error =>\n `Invalid subagent arguments: ${error instanceof Error ? error.message : String(error)}`,\n execute: ({ call, context, params }) =>\n Effect.gen(function* () {\n if (call.name !== subagentToolName) {\n return yield* Effect.fail(\n subagentToolError(`Tool is not configured: ${call.name}`, 'not_found')\n )\n }\n\n const normalizedParams = yield* validateSubagentParams(params)\n yield* requireKnownSubagent(options.subagents, normalizedParams.subagent_type)\n\n return yield* options.execute({ call, context, params: normalizedParams })\n })\n })\n\nexport const makeSubagentToolDef = (\n subagents: ReadonlyArray<SubagentDefinition>,\n runtimeSelections: SubagentRuntimeSelectionOptions = {}\n) =>\n makeSubagentToolRegistration({\n subagents,\n ...runtimeSelections,\n execute: ({ call }) => Effect.succeed(ToolResult.make({ toolCallId: call.id, content: '' }))\n }).def\n\nexport const makeSubagentToolModule = <Context>(\n options: SubagentToolOptions<Context>\n): ToolModule<Context> => ({\n id: subagentToolName,\n tools: [makeSubagentToolRegistration(options)]\n})\n\nexport const makeNonRecursiveSubagentToolModule = <Context extends SubagentContext>(\n options: SubagentToolOptions<Context>\n): ToolModule<Context> =>\n makeSubagentToolModule({\n ...options,\n isEnabled: context =>\n context.subagent === true\n ? Effect.succeed(false)\n : options.isEnabled === undefined\n ? Effect.succeed(true)\n : options.isEnabled(context)\n })\n\nexport const formatSubagentResult = (output: string) =>\n ['<subagent_result>', output, '</subagent_result>'].join('\\n')\n\nexport const subagentToolRunId = makeSubagentRunId\n\nconst latestAssistantText = (messages: ReadonlyArray<AgentMessage>) => {\n const assistant = [...messages]\n .reverse()\n .find(message => Predicate.isTagged(message, 'Assistant'))\n\n return assistant === undefined ? '' : contentText(assistantContent(assistant))\n}\n\nconst subagentProviderMetadata = (provider: ProviderErrorInfo): SubagentProviderMetadataFields => {\n const metadata: SubagentProviderMetadataFields = {\n provider: provider.provider,\n kind: provider.kind\n }\n\n if (provider.status !== undefined) {\n metadata.status = provider.status\n }\n\n if (provider.providerCode !== undefined) {\n metadata.provider_code = provider.providerCode\n }\n\n if (provider.retryAfterMs !== undefined) {\n metadata.retry_after_ms = provider.retryAfterMs\n }\n\n return metadata\n}\n\nconst subagentUsageInputMetadata = (usage: AgentUsage): SubagentUsageInputMetadataFields => {\n const input: SubagentUsageInputMetadataFields = {\n total: usage.input.total\n }\n\n if (usage.input.uncached !== undefined) {\n input.uncached = usage.input.uncached\n }\n\n if (usage.input.cacheRead !== undefined) {\n input.cache_read = usage.input.cacheRead\n }\n\n if (usage.input.cacheWrite !== undefined) {\n input.cache_write = usage.input.cacheWrite\n }\n\n return input\n}\n\nconst subagentUsageOutputMetadata = (usage: AgentUsage): SubagentUsageOutputMetadataFields => {\n const output: SubagentUsageOutputMetadataFields = {\n total: usage.output.total\n }\n\n if (usage.output.text !== undefined) {\n output.text = usage.output.text\n }\n\n if (usage.output.reasoning !== undefined) {\n output.reasoning = usage.output.reasoning\n }\n\n return output\n}\n\nconst subagentUsageMetadata = (usage: AgentUsage): SubagentUsageMetadataFields => ({\n input: subagentUsageInputMetadata(usage),\n output: subagentUsageOutputMetadata(usage)\n})\n\nconst subagentErrorMetadata = (error: SubagentRunError): SubagentErrorMetadataFields => {\n const metadata: SubagentErrorMetadataFields = {\n code: error.code,\n message: error.message,\n retryable: error.retryable\n }\n\n if (error.provider !== undefined) {\n metadata.provider = subagentProviderMetadata(error.provider)\n }\n\n return metadata\n}\n\nconst SubagentUsageMetadata = Schema.Struct({\n input: Schema.Struct({\n total: Schema.Number,\n uncached: Schema.optional(Schema.Number),\n cache_read: Schema.optional(Schema.Number),\n cache_write: Schema.optional(Schema.Number)\n }),\n output: Schema.Struct({\n total: Schema.Number,\n text: Schema.optional(Schema.Number),\n reasoning: Schema.optional(Schema.Number)\n })\n})\n\nconst SubagentStructuredUsage = Schema.Struct({\n subagent_run_id: Schema.String,\n subagent_type: Schema.String,\n usage: SubagentUsageMetadata\n})\n\nconst subagentAgentInputUsageFromMetadata = (\n usage: SubagentUsageMetadataFields\n): SubagentAgentInputUsageFields => {\n const input: SubagentAgentInputUsageFields = {\n total: usage.input.total\n }\n\n if (usage.input.uncached !== undefined) {\n input.uncached = usage.input.uncached\n }\n\n if (usage.input.cache_read !== undefined) {\n input.cacheRead = usage.input.cache_read\n }\n\n if (usage.input.cache_write !== undefined) {\n input.cacheWrite = usage.input.cache_write\n }\n\n return input\n}\n\nconst subagentAgentOutputUsageFromMetadata = (\n usage: SubagentUsageMetadataFields\n): SubagentAgentOutputUsageFields => {\n const output: SubagentAgentOutputUsageFields = {\n total: usage.output.total\n }\n\n if (usage.output.text !== undefined) {\n output.text = usage.output.text\n }\n\n if (usage.output.reasoning !== undefined) {\n output.reasoning = usage.output.reasoning\n }\n\n return output\n}\n\nexport const subagentUsageFromToolResult = (result: ToolResult): AgentUsage | undefined => {\n if (\n !Schema.is(SubagentStructuredUsage)(result.structuredContent) ||\n result.structuredContent.subagent_run_id !== subagentToolRunId(result.toolCallId)\n ) {\n return undefined\n }\n\n const usage = result.structuredContent.usage\n\n return AgentUsage.make({\n input: subagentAgentInputUsageFromMetadata(usage),\n output: subagentAgentOutputUsageFromMetadata(usage)\n })\n}\n\nconst subagentRunErrorFromAgentError = (error: SubagentRunError): SubagentRunErrorFields => {\n const result: SubagentRunErrorFields = {\n code: error.code,\n message: error.message,\n retryable: error.retryable\n }\n\n if (error.provider !== undefined) {\n result.provider = error.provider\n }\n\n return result\n}\n\nexport const subagentResultFromEvents = (events: ReadonlyArray<AgentEvent>): SubagentRunResult => {\n const terminal = [...events].reverse().find(isTerminalAgentEvent)\n const usageUpdates = events.filter(event => Predicate.isTagged(event, 'UsageUpdate'))\n\n const usage = usageUpdates.reduce(\n (total, event) => addAgentUsage(total, event.usage),\n zeroAgentUsage\n )\n\n const turns = events.reduce(\n (latest, event) =>\n Predicate.isTagged(event, 'TurnStart') ? Math.max(latest, event.turn) : latest,\n 0\n )\n\n if (terminal === undefined) {\n const message = 'Subagent stream ended without a terminal event.'\n\n const result: SubagentRunResultFields = {\n status: 'error',\n text: `Subagent failed: ${message}`\n }\n\n if (usageUpdates.length !== 0) {\n result.usage = usage\n }\n\n if (turns !== 0) {\n result.turns = turns\n }\n\n result.error = {\n code: 'invalid_response',\n message,\n retryable: false\n }\n\n return result\n }\n\n if (Predicate.isTagged(terminal, 'AgentError')) {\n const result: SubagentRunResultFields = {\n status: 'error',\n text: `Subagent failed: ${terminal.message}`\n }\n\n if (usageUpdates.length !== 0) {\n result.usage = usage\n }\n\n if (turns !== 0) {\n result.turns = turns\n }\n\n result.error = subagentRunErrorFromAgentError(terminal)\n\n return result\n }\n\n const text = latestAssistantText(terminal.messages).trim()\n\n const result: SubagentRunResultFields = {\n status: Predicate.isTagged(terminal, 'AgentAwaitingInput') ? 'awaiting_input' : 'completed',\n text: text.length === 0 ? 'Subagent completed without a final text response.' : text,\n usage: terminal.usage,\n turns: terminal.turns\n }\n\n if (Predicate.isTagged(terminal, 'AgentAwaitingInput')) {\n result.requests = terminal.requests\n }\n\n return result\n}\n\nexport const subagentResultText = (events: ReadonlyArray<AgentEvent>) =>\n subagentResultFromEvents(events).text\n\nconst subagentToolResultStructuredContent = (\n input: SubagentToolResultInput,\n status: SubagentRunStatus\n): SubagentToolResultStructuredContentFields => {\n const structuredContent: SubagentToolResultStructuredContentFields = {\n subagent_run_id: input.subagentRunId,\n subagent_type: input.subagentType,\n description: input.description,\n started_at_ms: input.startedAtMs,\n ended_at_ms: input.endedAtMs,\n duration_ms: Math.max(0, input.endedAtMs - input.startedAtMs),\n status,\n model: input.model\n }\n\n if (input.reasoningEffort !== undefined) {\n structuredContent.reasoning_effort = input.reasoningEffort\n }\n\n if (input.usage !== undefined) {\n structuredContent.usage = subagentUsageMetadata(input.usage)\n }\n\n if (input.turns !== undefined) {\n structuredContent.turns = input.turns\n }\n\n if (input.requests !== undefined) {\n structuredContent.hitl_requests = input.requests\n }\n\n if (input.error !== undefined) {\n structuredContent.error = subagentErrorMetadata(input.error)\n }\n\n return structuredContent\n}\n\nexport const makeSubagentToolResult = (input: SubagentToolResultInput) => {\n const isError = input.isError === true || input.error !== undefined || input.status === 'error'\n const status = isError ? 'error' : (input.status ?? 'completed')\n\n return ToolResult.make({\n toolCallId: input.callId,\n content: formatSubagentResult(input.output),\n isError: isError ? true : undefined,\n structuredContent: subagentToolResultStructuredContent(input, status)\n })\n}\n\nconst subagentAcceptedStructuredContent = (input: {\n readonly callId: string\n readonly workflowRunId: string\n readonly parentRunId?: string\n}): SubagentAcceptedStructuredContentFields => {\n const structuredContent: SubagentAcceptedStructuredContentFields = {\n type: 'subagent_accepted',\n status: 'accepted',\n subagent_run_id: makeSubagentRunId(input.callId),\n workflow_run_id: input.workflowRunId\n }\n\n if (input.parentRunId !== undefined) {\n structuredContent.parent_run_id = input.parentRunId\n }\n\n return structuredContent\n}\n\n/** Acceptance is a tool completion, never a child completion or usage delta. */\nexport const makeSubagentAcceptedToolResult = (input: {\n readonly callId: string\n readonly workflowRunId: string\n readonly parentRunId?: string\n}) =>\n ToolResult.make({\n toolCallId: input.callId,\n content: `Subagent accepted. Use subagent_status or subagent_wait with tool_call_id=${input.callId}${input.parentRunId === undefined ? '' : ` and parent_run_id=${input.parentRunId}`}.`,\n structuredContent: subagentAcceptedStructuredContent(input)\n })\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"subagent.mjs","names":["Schema"],"sources":["../../src/tools/subagent.ts"],"sourcesContent":["import { Effect, Predicate } from 'effect'\nimport * as Schema from 'effect/Schema'\nimport { ToolError } from '@yolk-sdk/agent/loop'\nimport {\n addAgentUsage,\n assistantContent,\n AgentUsage,\n contentText,\n isTerminalAgentEvent,\n makeSubagentRunId,\n ToolResult,\n type AgentErrorCode,\n type AgentEvent,\n type AgentMessage,\n type AgentReasoningEffort,\n type HitlRequest,\n type ProviderErrorInfo,\n type ToolCall,\n zeroAgentUsage\n} from '@yolk-sdk/agent/protocol'\nimport { subagentToolName } from '../protocol/tool.ts'\nimport {\n makeTool,\n modelVisibleToolError,\n type ModelVisibleToolError,\n type ToolModule,\n type ToolRegistration,\n type ToolRegistryError\n} from './registry.ts'\n\nexport { subagentToolName }\n\nconst SubagentToolBaseFields = {\n description: Schema.String.pipe(\n Schema.annotate({ description: 'A short 3-5 word description of the task.' })\n ),\n prompt: Schema.String.pipe(\n Schema.annotate({\n description:\n 'The complete task instructions for the subagent, including all context it needs.'\n })\n ),\n subagent_type: Schema.String.pipe(\n Schema.annotate({ description: 'The specialized subagent type to use for this task.' })\n )\n}\n\nexport type SubagentToolParams = {\n readonly description: string\n readonly prompt: string\n readonly subagent_type: string\n readonly model?: string\n readonly reasoning_effort?: AgentReasoningEffort\n readonly background?: boolean\n}\n\nexport type SubagentDefinition = {\n readonly name: string\n readonly description: string\n}\n\nexport type SubagentModelDefinition = {\n readonly id: string\n readonly description: string\n}\n\nexport type SubagentReasoningEffortDefinition = {\n readonly value: AgentReasoningEffort\n readonly description: string\n}\n\nexport type SubagentRuntimeSelectionOptions = {\n /** Opt-in only: inline hosts do not advertise background execution. */\n readonly background?: boolean\n readonly models?: ReadonlyArray<SubagentModelDefinition>\n readonly reasoningEfforts?: ReadonlyArray<SubagentReasoningEffortDefinition>\n}\n\nexport type SubagentContext = {\n readonly subagent?: boolean\n}\n\nexport type SubagentExecutionInput<Context> = {\n readonly call: ToolCall\n readonly context: Context\n readonly params: SubagentToolParams\n}\n\nexport type SubagentToolOptions<Context> = SubagentRuntimeSelectionOptions & {\n readonly subagents: ReadonlyArray<SubagentDefinition>\n readonly isEnabled?: (context: Context) => Effect.Effect<boolean, ToolRegistryError>\n readonly execute: (input: SubagentExecutionInput<Context>) => Effect.Effect<ToolResult, ToolError>\n}\n\nexport type SubagentRunError = {\n readonly code: AgentErrorCode\n readonly message: string\n readonly retryable: boolean\n readonly provider?: ProviderErrorInfo\n}\n\nexport type SubagentRunStatus = 'completed' | 'awaiting_input' | 'error'\n\nexport type SubagentRunResult = {\n readonly status: SubagentRunStatus\n readonly text: string\n readonly usage?: AgentUsage\n readonly turns?: number\n readonly requests?: ReadonlyArray<HitlRequest>\n readonly error?: SubagentRunError\n}\n\nexport type SubagentToolResultInput = {\n readonly callId: string\n readonly output: string\n readonly subagentType: string\n readonly description: string\n readonly subagentRunId: string\n readonly startedAtMs: number\n readonly endedAtMs: number\n readonly model: string\n readonly reasoningEffort?: AgentReasoningEffort\n readonly usage?: AgentUsage\n readonly turns?: number\n readonly status?: SubagentRunStatus\n readonly requests?: ReadonlyArray<HitlRequest>\n readonly error?: SubagentRunError\n readonly isError?: boolean\n}\n\ntype SubagentToolParamsFields = {\n readonly description: string\n readonly prompt: string\n readonly subagent_type: string\n model?: string\n reasoning_effort?: AgentReasoningEffort\n background?: boolean\n}\n\ntype SubagentProviderMetadataFields = {\n readonly provider: string\n readonly kind: ProviderErrorInfo['kind']\n status?: number\n provider_code?: string\n retry_after_ms?: number\n}\n\ntype SubagentUsageInputMetadataFields = {\n readonly total: number\n uncached?: number\n cache_read?: number\n cache_write?: number\n}\n\ntype SubagentUsageOutputMetadataFields = {\n readonly total: number\n text?: number\n reasoning?: number\n}\n\ntype SubagentUsageMetadataFields = {\n readonly input: SubagentUsageInputMetadataFields\n readonly output: SubagentUsageOutputMetadataFields\n}\n\ntype SubagentErrorMetadataFields = {\n readonly code: AgentErrorCode\n readonly message: string\n readonly retryable: boolean\n provider?: SubagentProviderMetadataFields\n}\n\ntype SubagentRunErrorFields = {\n readonly code: AgentErrorCode\n readonly message: string\n readonly retryable: boolean\n provider?: ProviderErrorInfo\n}\n\ntype SubagentRunResultFields = {\n readonly status: SubagentRunStatus\n readonly text: string\n usage?: AgentUsage\n turns?: number\n requests?: ReadonlyArray<HitlRequest>\n error?: SubagentRunErrorFields\n}\n\ntype SubagentToolResultStructuredContentFields = {\n readonly subagent_run_id: string\n readonly subagent_type: string\n readonly description: string\n readonly started_at_ms: number\n readonly ended_at_ms: number\n readonly duration_ms: number\n readonly status: SubagentRunStatus\n readonly model: string\n reasoning_effort?: AgentReasoningEffort\n usage?: SubagentUsageMetadataFields\n turns?: number\n hitl_requests?: ReadonlyArray<HitlRequest>\n error?: SubagentErrorMetadataFields\n}\n\ntype SubagentAcceptedStructuredContentFields = {\n readonly type: 'subagent_accepted'\n readonly status: 'accepted'\n readonly subagent_run_id: string\n readonly workflow_run_id: string\n parent_run_id?: string\n}\n\ntype SubagentAgentInputUsageFields = {\n readonly total: number\n uncached?: number\n cacheRead?: number\n cacheWrite?: number\n}\n\ntype SubagentAgentOutputUsageFields = {\n readonly total: number\n text?: number\n reasoning?: number\n}\n\nconst subagentToolError = (message: string, cause: ToolError['cause']) =>\n new ToolError({\n tool: subagentToolName,\n message,\n cause\n })\n\nconst subagentModelVisibleError = (message: string) =>\n modelVisibleToolError({\n tool: subagentToolName,\n message,\n reason: 'validation'\n })\n\nconst enumRecord = <Value extends string>(\n values: ReadonlyArray<Value>\n): Readonly<Record<string, Value>> => Object.fromEntries(values.map(value => [value, value]))\n\nconst optionalRuntimeSelection = <Value extends string>(input: {\n readonly values: ReadonlyArray<Value>\n readonly description: string\n}) =>\n Schema.optionalKey(\n Schema.Enum(enumRecord(input.values)).pipe(Schema.annotate({ description: input.description }))\n )\n\nconst configuredSubagentToolParams = (options: SubagentRuntimeSelectionOptions) => {\n const fields = {\n ...SubagentToolBaseFields,\n background: Schema.optionalKey(\n Schema.Boolean.pipe(\n Schema.annotate({\n description:\n 'Return an accepted handle immediately, not the completed result. Completion delivery and observation follow the host instructions.'\n })\n )\n )\n }\n\n const model =\n options.models === undefined || options.models.length === 0\n ? undefined\n : optionalRuntimeSelection({\n values: options.models.map(item => item.id),\n description: 'Model for this subagent. Omit to inherit the host runtime model.'\n })\n\n const reasoningEffort =\n options.reasoningEfforts === undefined || options.reasoningEfforts.length === 0\n ? undefined\n : optionalRuntimeSelection({\n values: options.reasoningEfforts.map(item => item.value),\n description:\n 'Reasoning effort for this subagent. Omit to inherit the host runtime effort.'\n })\n\n if (model !== undefined && reasoningEffort !== undefined) {\n return options.background === true\n ? Schema.Struct({ ...fields, model, reasoning_effort: reasoningEffort })\n : Schema.Struct({ ...SubagentToolBaseFields, model, reasoning_effort: reasoningEffort })\n }\n\n if (model !== undefined) {\n return options.background === true\n ? Schema.Struct({ ...fields, model })\n : Schema.Struct({ ...SubagentToolBaseFields, model })\n }\n\n if (reasoningEffort !== undefined) {\n return options.background === true\n ? Schema.Struct({ ...fields, reasoning_effort: reasoningEffort })\n : Schema.Struct({ ...SubagentToolBaseFields, reasoning_effort: reasoningEffort })\n }\n\n return options.background === true ? Schema.Struct(fields) : Schema.Struct(SubagentToolBaseFields)\n}\n\nconst trimmedSubagentParams = (params: SubagentToolParams): SubagentToolParams => {\n const trimmed: SubagentToolParamsFields = {\n description: params.description.trim(),\n prompt: params.prompt.trim(),\n subagent_type: params.subagent_type.trim()\n }\n\n if (params.background !== undefined) {\n trimmed.background = params.background\n }\n\n if (params.model !== undefined) {\n trimmed.model = params.model\n }\n\n if (params.reasoning_effort !== undefined) {\n trimmed.reasoning_effort = params.reasoning_effort\n }\n\n return trimmed\n}\n\nconst validateSubagentParams = (\n params: SubagentToolParams\n): Effect.Effect<SubagentToolParams, ModelVisibleToolError> => {\n const trimmed = trimmedSubagentParams(params)\n\n if (trimmed.description.length === 0) {\n return Effect.fail(subagentModelVisibleError('description must not be empty'))\n }\n\n if (trimmed.prompt.length === 0) {\n return Effect.fail(subagentModelVisibleError('prompt must not be empty'))\n }\n\n if (trimmed.subagent_type.length === 0) {\n return Effect.fail(subagentModelVisibleError('subagent_type must not be empty'))\n }\n\n return Effect.succeed(trimmed)\n}\n\nconst findSubagent = (subagents: ReadonlyArray<SubagentDefinition>, name: string) =>\n subagents.find(subagent => subagent.name === name)\n\nconst requireKnownSubagent = (\n subagents: ReadonlyArray<SubagentDefinition>,\n name: string\n): Effect.Effect<SubagentDefinition, ModelVisibleToolError> => {\n const subagent = findSubagent(subagents, name)\n\n return subagent === undefined\n ? Effect.fail(subagentModelVisibleError(`Unknown subagent type: ${name}`))\n : Effect.succeed(subagent)\n}\n\nconst subagentDescription = (subagent: SubagentDefinition) =>\n `- ${subagent.name}: ${subagent.description}`\n\nconst modelDescription = (model: SubagentModelDefinition) => `- ${model.id}: ${model.description}`\n\nconst reasoningEffortDescription = (effort: SubagentReasoningEffortDefinition) =>\n `- ${effort.value}: ${effort.description}`\n\nconst subagentToolDescription = (\n options: SubagentRuntimeSelectionOptions & {\n readonly subagents: ReadonlyArray<SubagentDefinition>\n }\n) =>\n [\n 'Launch a new agent to handle complex, multistep tasks autonomously.',\n 'Use this when delegating focused work to a specialized subagent would save context or allow parallel exploration.',\n 'To run subagents in parallel, call this subagent tool multiple times in the same assistant response.',\n 'Yolk runs same-turn subagent calls concurrently automatically.',\n 'A fresh subagent only sees the prompt you provide, so include all required context.',\n 'Subagents can use their normal tools but cannot launch further subagents in v1.',\n options.subagents.length === 0\n ? 'No subagent types are currently available.'\n : `Available subagent types:\\n${options.subagents.map(subagentDescription).join('\\n')}`,\n options.models === undefined || options.models.length === 0\n ? undefined\n : [\n 'Available subagent models:',\n options.models.map(modelDescription).join('\\n'),\n 'Omit model to inherit the host runtime model.'\n ].join('\\n'),\n options.reasoningEfforts === undefined || options.reasoningEfforts.length === 0\n ? undefined\n : [\n 'Available subagent reasoning efforts:',\n options.reasoningEfforts.map(reasoningEffortDescription).join('\\n'),\n 'Omit reasoning_effort to inherit the host runtime effort.'\n ].join('\\n')\n ]\n .filter(section => section !== undefined)\n .join('\\n\\n')\n\nexport const makeSubagentToolRegistration = <Context>(\n options: SubagentToolOptions<Context>\n): ToolRegistration<Context> =>\n makeTool({\n name: subagentToolName,\n description: subagentToolDescription(options),\n parameters: configuredSubagentToolParams(options),\n access: 'read',\n isEnabled: options.isEnabled,\n invalidParamsMessage: error =>\n `Invalid subagent arguments: ${error instanceof Error ? error.message : String(error)}`,\n execute: ({ call, context, params }) =>\n Effect.gen(function* () {\n if (call.name !== subagentToolName) {\n return yield* Effect.fail(\n subagentToolError(`Tool is not configured: ${call.name}`, 'not_found')\n )\n }\n\n const normalizedParams = yield* validateSubagentParams(params)\n yield* requireKnownSubagent(options.subagents, normalizedParams.subagent_type)\n\n return yield* options.execute({ call, context, params: normalizedParams })\n })\n })\n\nexport const makeSubagentToolDef = (\n subagents: ReadonlyArray<SubagentDefinition>,\n runtimeSelections: SubagentRuntimeSelectionOptions = {}\n) =>\n makeSubagentToolRegistration({\n subagents,\n ...runtimeSelections,\n execute: ({ call }) => Effect.succeed(ToolResult.make({ toolCallId: call.id, content: '' }))\n }).def\n\nexport const makeSubagentToolModule = <Context>(\n options: SubagentToolOptions<Context>\n): ToolModule<Context> => ({\n id: subagentToolName,\n tools: [makeSubagentToolRegistration(options)]\n})\n\nexport const makeNonRecursiveSubagentToolModule = <Context extends SubagentContext>(\n options: SubagentToolOptions<Context>\n): ToolModule<Context> =>\n makeSubagentToolModule({\n ...options,\n isEnabled: context =>\n context.subagent === true\n ? Effect.succeed(false)\n : options.isEnabled === undefined\n ? Effect.succeed(true)\n : options.isEnabled(context)\n })\n\nexport const formatSubagentResult = (output: string) =>\n ['<subagent_result>', output, '</subagent_result>'].join('\\n')\n\nexport const subagentToolRunId = makeSubagentRunId\n\nconst latestAssistantText = (messages: ReadonlyArray<AgentMessage>) => {\n const assistant = [...messages]\n .reverse()\n .find(message => Predicate.isTagged(message, 'Assistant'))\n\n return assistant === undefined ? '' : contentText(assistantContent(assistant))\n}\n\nconst subagentProviderMetadata = (provider: ProviderErrorInfo): SubagentProviderMetadataFields => {\n const metadata: SubagentProviderMetadataFields = {\n provider: provider.provider,\n kind: provider.kind\n }\n\n if (provider.status !== undefined) {\n metadata.status = provider.status\n }\n\n if (provider.providerCode !== undefined) {\n metadata.provider_code = provider.providerCode\n }\n\n if (provider.retryAfterMs !== undefined) {\n metadata.retry_after_ms = provider.retryAfterMs\n }\n\n return metadata\n}\n\nconst subagentUsageInputMetadata = (usage: AgentUsage): SubagentUsageInputMetadataFields => {\n const input: SubagentUsageInputMetadataFields = {\n total: usage.input.total\n }\n\n if (usage.input.uncached !== undefined) {\n input.uncached = usage.input.uncached\n }\n\n if (usage.input.cacheRead !== undefined) {\n input.cache_read = usage.input.cacheRead\n }\n\n if (usage.input.cacheWrite !== undefined) {\n input.cache_write = usage.input.cacheWrite\n }\n\n return input\n}\n\nconst subagentUsageOutputMetadata = (usage: AgentUsage): SubagentUsageOutputMetadataFields => {\n const output: SubagentUsageOutputMetadataFields = {\n total: usage.output.total\n }\n\n if (usage.output.text !== undefined) {\n output.text = usage.output.text\n }\n\n if (usage.output.reasoning !== undefined) {\n output.reasoning = usage.output.reasoning\n }\n\n return output\n}\n\nconst subagentUsageMetadata = (usage: AgentUsage): SubagentUsageMetadataFields => ({\n input: subagentUsageInputMetadata(usage),\n output: subagentUsageOutputMetadata(usage)\n})\n\nconst subagentErrorMetadata = (error: SubagentRunError): SubagentErrorMetadataFields => {\n const metadata: SubagentErrorMetadataFields = {\n code: error.code,\n message: error.message,\n retryable: error.retryable\n }\n\n if (error.provider !== undefined) {\n metadata.provider = subagentProviderMetadata(error.provider)\n }\n\n return metadata\n}\n\nconst SubagentUsageMetadata = Schema.Struct({\n input: Schema.Struct({\n total: Schema.Number,\n uncached: Schema.optional(Schema.Number),\n cache_read: Schema.optional(Schema.Number),\n cache_write: Schema.optional(Schema.Number)\n }),\n output: Schema.Struct({\n total: Schema.Number,\n text: Schema.optional(Schema.Number),\n reasoning: Schema.optional(Schema.Number)\n })\n})\n\nconst SubagentStructuredUsage = Schema.Struct({\n subagent_run_id: Schema.String,\n subagent_type: Schema.String,\n usage: SubagentUsageMetadata\n})\n\nconst subagentAgentInputUsageFromMetadata = (\n usage: SubagentUsageMetadataFields\n): SubagentAgentInputUsageFields => {\n const input: SubagentAgentInputUsageFields = {\n total: usage.input.total\n }\n\n if (usage.input.uncached !== undefined) {\n input.uncached = usage.input.uncached\n }\n\n if (usage.input.cache_read !== undefined) {\n input.cacheRead = usage.input.cache_read\n }\n\n if (usage.input.cache_write !== undefined) {\n input.cacheWrite = usage.input.cache_write\n }\n\n return input\n}\n\nconst subagentAgentOutputUsageFromMetadata = (\n usage: SubagentUsageMetadataFields\n): SubagentAgentOutputUsageFields => {\n const output: SubagentAgentOutputUsageFields = {\n total: usage.output.total\n }\n\n if (usage.output.text !== undefined) {\n output.text = usage.output.text\n }\n\n if (usage.output.reasoning !== undefined) {\n output.reasoning = usage.output.reasoning\n }\n\n return output\n}\n\nexport const subagentUsageFromToolResult = (result: ToolResult): AgentUsage | undefined => {\n if (\n !Schema.is(SubagentStructuredUsage)(result.structuredContent) ||\n result.structuredContent.subagent_run_id !== subagentToolRunId(result.toolCallId)\n ) {\n return undefined\n }\n\n const usage = result.structuredContent.usage\n\n return AgentUsage.make({\n input: subagentAgentInputUsageFromMetadata(usage),\n output: subagentAgentOutputUsageFromMetadata(usage)\n })\n}\n\nconst subagentRunErrorFromAgentError = (error: SubagentRunError): SubagentRunErrorFields => {\n const result: SubagentRunErrorFields = {\n code: error.code,\n message: error.message,\n retryable: error.retryable\n }\n\n if (error.provider !== undefined) {\n result.provider = error.provider\n }\n\n return result\n}\n\nexport const subagentResultFromEvents = (events: ReadonlyArray<AgentEvent>): SubagentRunResult => {\n const terminal = [...events].reverse().find(isTerminalAgentEvent)\n const usageUpdates = events.filter(event => Predicate.isTagged(event, 'UsageUpdate'))\n\n const usage = usageUpdates.reduce(\n (total, event) => addAgentUsage(total, event.usage),\n zeroAgentUsage\n )\n\n const turns = events.reduce(\n (latest, event) =>\n Predicate.isTagged(event, 'TurnStart') ? Math.max(latest, event.turn) : latest,\n 0\n )\n\n if (terminal === undefined) {\n const message = 'Subagent stream ended without a terminal event.'\n\n const result: SubagentRunResultFields = {\n status: 'error',\n text: `Subagent failed: ${message}`\n }\n\n if (usageUpdates.length !== 0) {\n result.usage = usage\n }\n\n if (turns !== 0) {\n result.turns = turns\n }\n\n result.error = {\n code: 'invalid_response',\n message,\n retryable: false\n }\n\n return result\n }\n\n if (Predicate.isTagged(terminal, 'AgentError')) {\n const result: SubagentRunResultFields = {\n status: 'error',\n text: `Subagent failed: ${terminal.message}`\n }\n\n if (usageUpdates.length !== 0) {\n result.usage = usage\n }\n\n if (turns !== 0) {\n result.turns = turns\n }\n\n result.error = subagentRunErrorFromAgentError(terminal)\n\n return result\n }\n\n const text = latestAssistantText(terminal.messages).trim()\n\n const result: SubagentRunResultFields = {\n status: Predicate.isTagged(terminal, 'AgentAwaitingInput') ? 'awaiting_input' : 'completed',\n text: text.length === 0 ? 'Subagent completed without a final text response.' : text,\n usage: terminal.usage,\n turns: terminal.turns\n }\n\n if (Predicate.isTagged(terminal, 'AgentAwaitingInput')) {\n result.requests = terminal.requests\n }\n\n return result\n}\n\nexport const subagentResultText = (events: ReadonlyArray<AgentEvent>) =>\n subagentResultFromEvents(events).text\n\nconst subagentToolResultStructuredContent = (\n input: SubagentToolResultInput,\n status: SubagentRunStatus\n): SubagentToolResultStructuredContentFields => {\n const structuredContent: SubagentToolResultStructuredContentFields = {\n subagent_run_id: input.subagentRunId,\n subagent_type: input.subagentType,\n description: input.description,\n started_at_ms: input.startedAtMs,\n ended_at_ms: input.endedAtMs,\n duration_ms: Math.max(0, input.endedAtMs - input.startedAtMs),\n status,\n model: input.model\n }\n\n if (input.reasoningEffort !== undefined) {\n structuredContent.reasoning_effort = input.reasoningEffort\n }\n\n if (input.usage !== undefined) {\n structuredContent.usage = subagentUsageMetadata(input.usage)\n }\n\n if (input.turns !== undefined) {\n structuredContent.turns = input.turns\n }\n\n if (input.requests !== undefined) {\n structuredContent.hitl_requests = input.requests\n }\n\n if (input.error !== undefined) {\n structuredContent.error = subagentErrorMetadata(input.error)\n }\n\n return structuredContent\n}\n\nexport const makeSubagentToolResult = (input: SubagentToolResultInput) => {\n const isError = input.isError === true || input.error !== undefined || input.status === 'error'\n const status = isError ? 'error' : (input.status ?? 'completed')\n\n return ToolResult.make({\n toolCallId: input.callId,\n content: formatSubagentResult(input.output),\n isError: isError ? true : undefined,\n structuredContent: subagentToolResultStructuredContent(input, status)\n })\n}\n\nconst subagentAcceptedStructuredContent = (input: {\n readonly callId: string\n readonly workflowRunId: string\n readonly parentRunId?: string\n}): SubagentAcceptedStructuredContentFields => {\n const structuredContent: SubagentAcceptedStructuredContentFields = {\n type: 'subagent_accepted',\n status: 'accepted',\n subagent_run_id: makeSubagentRunId(input.callId),\n workflow_run_id: input.workflowRunId\n }\n\n if (input.parentRunId !== undefined) {\n structuredContent.parent_run_id = input.parentRunId\n }\n\n return structuredContent\n}\n\n/** Acceptance is a tool completion, never a child completion or usage delta.\n * Hosts own completion delivery and any observation tools; registration supplies neither.\n */\nexport const makeSubagentAcceptedToolResult = (input: {\n readonly callId: string\n readonly workflowRunId: string\n readonly parentRunId?: string\n}) =>\n ToolResult.make({\n toolCallId: input.callId,\n content: `Subagent accepted, not completed. Reference: tool_call_id=${input.callId}${input.parentRunId === undefined ? '' : ` and parent_run_id=${input.parentRunId}`}. Completion delivery and observation follow the host instructions.`,\n structuredContent: subagentAcceptedStructuredContent(input)\n })\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@yolk-sdk/agent",
|
|
3
|
-
"version": "0.1.0-canary.
|
|
3
|
+
"version": "0.1.0-canary.89",
|
|
4
4
|
"description": "Agent protocol, loop, runtime, Effect-native client, compaction, tools, React, providers, OAuth, skillset, and voice primitives.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
package/src/tools/subagent.ts
CHANGED
|
@@ -256,7 +256,7 @@ const configuredSubagentToolParams = (options: SubagentRuntimeSelectionOptions)
|
|
|
256
256
|
Schema.Boolean.pipe(
|
|
257
257
|
Schema.annotate({
|
|
258
258
|
description:
|
|
259
|
-
'Return an accepted handle immediately
|
|
259
|
+
'Return an accepted handle immediately, not the completed result. Completion delivery and observation follow the host instructions.'
|
|
260
260
|
})
|
|
261
261
|
)
|
|
262
262
|
)
|
|
@@ -779,7 +779,9 @@ const subagentAcceptedStructuredContent = (input: {
|
|
|
779
779
|
return structuredContent
|
|
780
780
|
}
|
|
781
781
|
|
|
782
|
-
/** Acceptance is a tool completion, never a child completion or usage delta.
|
|
782
|
+
/** Acceptance is a tool completion, never a child completion or usage delta.
|
|
783
|
+
* Hosts own completion delivery and any observation tools; registration supplies neither.
|
|
784
|
+
*/
|
|
783
785
|
export const makeSubagentAcceptedToolResult = (input: {
|
|
784
786
|
readonly callId: string
|
|
785
787
|
readonly workflowRunId: string
|
|
@@ -787,6 +789,6 @@ export const makeSubagentAcceptedToolResult = (input: {
|
|
|
787
789
|
}) =>
|
|
788
790
|
ToolResult.make({
|
|
789
791
|
toolCallId: input.callId,
|
|
790
|
-
content: `Subagent accepted
|
|
792
|
+
content: `Subagent accepted, not completed. Reference: tool_call_id=${input.callId}${input.parentRunId === undefined ? '' : ` and parent_run_id=${input.parentRunId}`}. Completion delivery and observation follow the host instructions.`,
|
|
791
793
|
structuredContent: subagentAcceptedStructuredContent(input)
|
|
792
794
|
})
|