@yourgpt/llm-sdk 2.5.1-beta.5 → 2.5.1-beta.6
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/index.js +109 -25
- package/dist/index.mjs +109 -25
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1052,6 +1052,14 @@ var StreamResult = class {
|
|
|
1052
1052
|
}
|
|
1053
1053
|
if (event.requiresAction) {
|
|
1054
1054
|
collected.requiresAction = true;
|
|
1055
|
+
const resolvedToolIds = new Set(
|
|
1056
|
+
(event.messages ?? []).filter((m) => m.role === "tool" && m.tool_call_id).map((m) => m.tool_call_id)
|
|
1057
|
+
);
|
|
1058
|
+
if (resolvedToolIds.size > 0) {
|
|
1059
|
+
collected.toolCalls = collected.toolCalls.filter(
|
|
1060
|
+
(tc) => !resolvedToolIds.has(tc.id)
|
|
1061
|
+
);
|
|
1062
|
+
}
|
|
1055
1063
|
}
|
|
1056
1064
|
if (event.usage) {
|
|
1057
1065
|
this.capturedUsage = event.usage;
|
|
@@ -2353,6 +2361,49 @@ var Runtime = class {
|
|
|
2353
2361
|
const clientToolCalls = toolCalls.filter(
|
|
2354
2362
|
(tc) => !serverToolIds.has(tc.id)
|
|
2355
2363
|
);
|
|
2364
|
+
const serverToolResultMessages = serverToolResults.map((tr) => {
|
|
2365
|
+
const aiContent = buildToolResultForAI(tr.tool, tr.result, tr.args);
|
|
2366
|
+
const content = typeof aiContent === "string" ? aiContent : JSON.stringify(serializeToolResultContent(aiContent));
|
|
2367
|
+
return {
|
|
2368
|
+
role: "tool",
|
|
2369
|
+
content,
|
|
2370
|
+
tool_call_id: tr.id
|
|
2371
|
+
};
|
|
2372
|
+
});
|
|
2373
|
+
if (serverToolResults.length > 0 && clientToolCalls.length > 0) {
|
|
2374
|
+
if (debug) {
|
|
2375
|
+
console.log(
|
|
2376
|
+
`[Copilot SDK] Mixed turn: ${serverToolResults.length} server + ${clientToolCalls.length} client tool(s). Suspending for client tools.`
|
|
2377
|
+
);
|
|
2378
|
+
}
|
|
2379
|
+
const assistantMessage = {
|
|
2380
|
+
role: "assistant",
|
|
2381
|
+
content: accumulatedText || null,
|
|
2382
|
+
tool_calls: toolCalls.map((tc) => ({
|
|
2383
|
+
id: tc.id,
|
|
2384
|
+
type: "function",
|
|
2385
|
+
function: {
|
|
2386
|
+
name: tc.name,
|
|
2387
|
+
arguments: JSON.stringify(tc.args)
|
|
2388
|
+
},
|
|
2389
|
+
...tc.extra_content ? { extra_content: tc.extra_content } : {}
|
|
2390
|
+
}))
|
|
2391
|
+
};
|
|
2392
|
+
newMessages.push(assistantMessage);
|
|
2393
|
+
newMessages.push(...serverToolResultMessages);
|
|
2394
|
+
yield {
|
|
2395
|
+
type: "tool_calls",
|
|
2396
|
+
toolCalls: clientToolCalls,
|
|
2397
|
+
assistantMessage
|
|
2398
|
+
};
|
|
2399
|
+
yield {
|
|
2400
|
+
type: "done",
|
|
2401
|
+
requiresAction: true,
|
|
2402
|
+
messages: newMessages,
|
|
2403
|
+
usage: adapterUsage
|
|
2404
|
+
};
|
|
2405
|
+
return;
|
|
2406
|
+
}
|
|
2356
2407
|
if (serverToolResults.length > 0) {
|
|
2357
2408
|
if (debug) {
|
|
2358
2409
|
console.log(
|
|
@@ -2375,17 +2426,7 @@ var Runtime = class {
|
|
|
2375
2426
|
};
|
|
2376
2427
|
})
|
|
2377
2428
|
};
|
|
2378
|
-
const toolResultMessages =
|
|
2379
|
-
(tr) => {
|
|
2380
|
-
const aiContent = buildToolResultForAI(tr.tool, tr.result, tr.args);
|
|
2381
|
-
const content = typeof aiContent === "string" ? aiContent : JSON.stringify(serializeToolResultContent(aiContent));
|
|
2382
|
-
return {
|
|
2383
|
-
role: "tool",
|
|
2384
|
-
content,
|
|
2385
|
-
tool_call_id: tr.id
|
|
2386
|
-
};
|
|
2387
|
-
}
|
|
2388
|
-
);
|
|
2429
|
+
const toolResultMessages = serverToolResultMessages;
|
|
2389
2430
|
newMessages.push(assistantWithToolCalls);
|
|
2390
2431
|
newMessages.push(...toolResultMessages);
|
|
2391
2432
|
const messagesWithResults = [
|
|
@@ -2640,6 +2681,48 @@ var Runtime = class {
|
|
|
2640
2681
|
}
|
|
2641
2682
|
}
|
|
2642
2683
|
}
|
|
2684
|
+
const serverToolResultMessages = serverToolResults.map((tr) => {
|
|
2685
|
+
const aiContent = buildToolResultForAI(
|
|
2686
|
+
tr.tool,
|
|
2687
|
+
tr.result,
|
|
2688
|
+
tr.args
|
|
2689
|
+
);
|
|
2690
|
+
const content = typeof aiContent === "string" ? aiContent : JSON.stringify(serializeToolResultContent(aiContent));
|
|
2691
|
+
return {
|
|
2692
|
+
role: "tool",
|
|
2693
|
+
content,
|
|
2694
|
+
tool_call_id: tr.id
|
|
2695
|
+
};
|
|
2696
|
+
});
|
|
2697
|
+
if (serverToolResults.length > 0 && clientToolCalls.length > 0) {
|
|
2698
|
+
const assistantMessage = {
|
|
2699
|
+
role: "assistant",
|
|
2700
|
+
content: result.content || null,
|
|
2701
|
+
tool_calls: result.toolCalls.map((tc) => ({
|
|
2702
|
+
id: tc.id,
|
|
2703
|
+
type: "function",
|
|
2704
|
+
function: {
|
|
2705
|
+
name: tc.name,
|
|
2706
|
+
arguments: JSON.stringify(tc.args)
|
|
2707
|
+
},
|
|
2708
|
+
...tc.extra_content ? { extra_content: tc.extra_content } : {}
|
|
2709
|
+
}))
|
|
2710
|
+
};
|
|
2711
|
+
newMessages.push(assistantMessage);
|
|
2712
|
+
newMessages.push(...serverToolResultMessages);
|
|
2713
|
+
yield {
|
|
2714
|
+
type: "tool_calls",
|
|
2715
|
+
toolCalls: clientToolCalls,
|
|
2716
|
+
assistantMessage
|
|
2717
|
+
};
|
|
2718
|
+
yield {
|
|
2719
|
+
type: "done",
|
|
2720
|
+
requiresAction: true,
|
|
2721
|
+
messages: newMessages,
|
|
2722
|
+
usage: accumulatedUsage.total_tokens > 0 ? accumulatedUsage : void 0
|
|
2723
|
+
};
|
|
2724
|
+
return;
|
|
2725
|
+
}
|
|
2643
2726
|
if (serverToolResults.length > 0) {
|
|
2644
2727
|
const assistantWithToolCalls = {
|
|
2645
2728
|
role: "assistant",
|
|
@@ -2654,19 +2737,7 @@ var Runtime = class {
|
|
|
2654
2737
|
...tc.extra_content ? { extra_content: tc.extra_content } : {}
|
|
2655
2738
|
}))
|
|
2656
2739
|
};
|
|
2657
|
-
const toolResultMessages =
|
|
2658
|
-
const aiContent = buildToolResultForAI(
|
|
2659
|
-
tr.tool,
|
|
2660
|
-
tr.result,
|
|
2661
|
-
tr.args
|
|
2662
|
-
);
|
|
2663
|
-
const content = typeof aiContent === "string" ? aiContent : JSON.stringify(serializeToolResultContent(aiContent));
|
|
2664
|
-
return {
|
|
2665
|
-
role: "tool",
|
|
2666
|
-
content,
|
|
2667
|
-
tool_call_id: tr.id
|
|
2668
|
-
};
|
|
2669
|
-
});
|
|
2740
|
+
const toolResultMessages = serverToolResultMessages;
|
|
2670
2741
|
newMessages.push(assistantWithToolCalls);
|
|
2671
2742
|
newMessages.push(...toolResultMessages);
|
|
2672
2743
|
conversationMessages = [
|
|
@@ -3005,10 +3076,23 @@ var Runtime = class {
|
|
|
3005
3076
|
result: event.result || event.error
|
|
3006
3077
|
});
|
|
3007
3078
|
break;
|
|
3008
|
-
case "done":
|
|
3079
|
+
case "done": {
|
|
3009
3080
|
messages = event.messages || [];
|
|
3010
3081
|
requiresAction = event.requiresAction || false;
|
|
3082
|
+
if (requiresAction) {
|
|
3083
|
+
const resolvedToolIds = new Set(
|
|
3084
|
+
messages.filter((m) => m.role === "tool" && m.tool_call_id).map((m) => m.tool_call_id)
|
|
3085
|
+
);
|
|
3086
|
+
if (resolvedToolIds.size > 0) {
|
|
3087
|
+
for (let i = toolCalls.length - 1; i >= 0; i--) {
|
|
3088
|
+
if (resolvedToolIds.has(toolCalls[i].id)) {
|
|
3089
|
+
toolCalls.splice(i, 1);
|
|
3090
|
+
}
|
|
3091
|
+
}
|
|
3092
|
+
}
|
|
3093
|
+
}
|
|
3011
3094
|
break;
|
|
3095
|
+
}
|
|
3012
3096
|
case "error":
|
|
3013
3097
|
error = { message: event.message, code: event.code };
|
|
3014
3098
|
break;
|
package/dist/index.mjs
CHANGED
|
@@ -1050,6 +1050,14 @@ var StreamResult = class {
|
|
|
1050
1050
|
}
|
|
1051
1051
|
if (event.requiresAction) {
|
|
1052
1052
|
collected.requiresAction = true;
|
|
1053
|
+
const resolvedToolIds = new Set(
|
|
1054
|
+
(event.messages ?? []).filter((m) => m.role === "tool" && m.tool_call_id).map((m) => m.tool_call_id)
|
|
1055
|
+
);
|
|
1056
|
+
if (resolvedToolIds.size > 0) {
|
|
1057
|
+
collected.toolCalls = collected.toolCalls.filter(
|
|
1058
|
+
(tc) => !resolvedToolIds.has(tc.id)
|
|
1059
|
+
);
|
|
1060
|
+
}
|
|
1053
1061
|
}
|
|
1054
1062
|
if (event.usage) {
|
|
1055
1063
|
this.capturedUsage = event.usage;
|
|
@@ -2351,6 +2359,49 @@ var Runtime = class {
|
|
|
2351
2359
|
const clientToolCalls = toolCalls.filter(
|
|
2352
2360
|
(tc) => !serverToolIds.has(tc.id)
|
|
2353
2361
|
);
|
|
2362
|
+
const serverToolResultMessages = serverToolResults.map((tr) => {
|
|
2363
|
+
const aiContent = buildToolResultForAI(tr.tool, tr.result, tr.args);
|
|
2364
|
+
const content = typeof aiContent === "string" ? aiContent : JSON.stringify(serializeToolResultContent(aiContent));
|
|
2365
|
+
return {
|
|
2366
|
+
role: "tool",
|
|
2367
|
+
content,
|
|
2368
|
+
tool_call_id: tr.id
|
|
2369
|
+
};
|
|
2370
|
+
});
|
|
2371
|
+
if (serverToolResults.length > 0 && clientToolCalls.length > 0) {
|
|
2372
|
+
if (debug) {
|
|
2373
|
+
console.log(
|
|
2374
|
+
`[Copilot SDK] Mixed turn: ${serverToolResults.length} server + ${clientToolCalls.length} client tool(s). Suspending for client tools.`
|
|
2375
|
+
);
|
|
2376
|
+
}
|
|
2377
|
+
const assistantMessage = {
|
|
2378
|
+
role: "assistant",
|
|
2379
|
+
content: accumulatedText || null,
|
|
2380
|
+
tool_calls: toolCalls.map((tc) => ({
|
|
2381
|
+
id: tc.id,
|
|
2382
|
+
type: "function",
|
|
2383
|
+
function: {
|
|
2384
|
+
name: tc.name,
|
|
2385
|
+
arguments: JSON.stringify(tc.args)
|
|
2386
|
+
},
|
|
2387
|
+
...tc.extra_content ? { extra_content: tc.extra_content } : {}
|
|
2388
|
+
}))
|
|
2389
|
+
};
|
|
2390
|
+
newMessages.push(assistantMessage);
|
|
2391
|
+
newMessages.push(...serverToolResultMessages);
|
|
2392
|
+
yield {
|
|
2393
|
+
type: "tool_calls",
|
|
2394
|
+
toolCalls: clientToolCalls,
|
|
2395
|
+
assistantMessage
|
|
2396
|
+
};
|
|
2397
|
+
yield {
|
|
2398
|
+
type: "done",
|
|
2399
|
+
requiresAction: true,
|
|
2400
|
+
messages: newMessages,
|
|
2401
|
+
usage: adapterUsage
|
|
2402
|
+
};
|
|
2403
|
+
return;
|
|
2404
|
+
}
|
|
2354
2405
|
if (serverToolResults.length > 0) {
|
|
2355
2406
|
if (debug) {
|
|
2356
2407
|
console.log(
|
|
@@ -2373,17 +2424,7 @@ var Runtime = class {
|
|
|
2373
2424
|
};
|
|
2374
2425
|
})
|
|
2375
2426
|
};
|
|
2376
|
-
const toolResultMessages =
|
|
2377
|
-
(tr) => {
|
|
2378
|
-
const aiContent = buildToolResultForAI(tr.tool, tr.result, tr.args);
|
|
2379
|
-
const content = typeof aiContent === "string" ? aiContent : JSON.stringify(serializeToolResultContent(aiContent));
|
|
2380
|
-
return {
|
|
2381
|
-
role: "tool",
|
|
2382
|
-
content,
|
|
2383
|
-
tool_call_id: tr.id
|
|
2384
|
-
};
|
|
2385
|
-
}
|
|
2386
|
-
);
|
|
2427
|
+
const toolResultMessages = serverToolResultMessages;
|
|
2387
2428
|
newMessages.push(assistantWithToolCalls);
|
|
2388
2429
|
newMessages.push(...toolResultMessages);
|
|
2389
2430
|
const messagesWithResults = [
|
|
@@ -2638,6 +2679,48 @@ var Runtime = class {
|
|
|
2638
2679
|
}
|
|
2639
2680
|
}
|
|
2640
2681
|
}
|
|
2682
|
+
const serverToolResultMessages = serverToolResults.map((tr) => {
|
|
2683
|
+
const aiContent = buildToolResultForAI(
|
|
2684
|
+
tr.tool,
|
|
2685
|
+
tr.result,
|
|
2686
|
+
tr.args
|
|
2687
|
+
);
|
|
2688
|
+
const content = typeof aiContent === "string" ? aiContent : JSON.stringify(serializeToolResultContent(aiContent));
|
|
2689
|
+
return {
|
|
2690
|
+
role: "tool",
|
|
2691
|
+
content,
|
|
2692
|
+
tool_call_id: tr.id
|
|
2693
|
+
};
|
|
2694
|
+
});
|
|
2695
|
+
if (serverToolResults.length > 0 && clientToolCalls.length > 0) {
|
|
2696
|
+
const assistantMessage = {
|
|
2697
|
+
role: "assistant",
|
|
2698
|
+
content: result.content || null,
|
|
2699
|
+
tool_calls: result.toolCalls.map((tc) => ({
|
|
2700
|
+
id: tc.id,
|
|
2701
|
+
type: "function",
|
|
2702
|
+
function: {
|
|
2703
|
+
name: tc.name,
|
|
2704
|
+
arguments: JSON.stringify(tc.args)
|
|
2705
|
+
},
|
|
2706
|
+
...tc.extra_content ? { extra_content: tc.extra_content } : {}
|
|
2707
|
+
}))
|
|
2708
|
+
};
|
|
2709
|
+
newMessages.push(assistantMessage);
|
|
2710
|
+
newMessages.push(...serverToolResultMessages);
|
|
2711
|
+
yield {
|
|
2712
|
+
type: "tool_calls",
|
|
2713
|
+
toolCalls: clientToolCalls,
|
|
2714
|
+
assistantMessage
|
|
2715
|
+
};
|
|
2716
|
+
yield {
|
|
2717
|
+
type: "done",
|
|
2718
|
+
requiresAction: true,
|
|
2719
|
+
messages: newMessages,
|
|
2720
|
+
usage: accumulatedUsage.total_tokens > 0 ? accumulatedUsage : void 0
|
|
2721
|
+
};
|
|
2722
|
+
return;
|
|
2723
|
+
}
|
|
2641
2724
|
if (serverToolResults.length > 0) {
|
|
2642
2725
|
const assistantWithToolCalls = {
|
|
2643
2726
|
role: "assistant",
|
|
@@ -2652,19 +2735,7 @@ var Runtime = class {
|
|
|
2652
2735
|
...tc.extra_content ? { extra_content: tc.extra_content } : {}
|
|
2653
2736
|
}))
|
|
2654
2737
|
};
|
|
2655
|
-
const toolResultMessages =
|
|
2656
|
-
const aiContent = buildToolResultForAI(
|
|
2657
|
-
tr.tool,
|
|
2658
|
-
tr.result,
|
|
2659
|
-
tr.args
|
|
2660
|
-
);
|
|
2661
|
-
const content = typeof aiContent === "string" ? aiContent : JSON.stringify(serializeToolResultContent(aiContent));
|
|
2662
|
-
return {
|
|
2663
|
-
role: "tool",
|
|
2664
|
-
content,
|
|
2665
|
-
tool_call_id: tr.id
|
|
2666
|
-
};
|
|
2667
|
-
});
|
|
2738
|
+
const toolResultMessages = serverToolResultMessages;
|
|
2668
2739
|
newMessages.push(assistantWithToolCalls);
|
|
2669
2740
|
newMessages.push(...toolResultMessages);
|
|
2670
2741
|
conversationMessages = [
|
|
@@ -3003,10 +3074,23 @@ var Runtime = class {
|
|
|
3003
3074
|
result: event.result || event.error
|
|
3004
3075
|
});
|
|
3005
3076
|
break;
|
|
3006
|
-
case "done":
|
|
3077
|
+
case "done": {
|
|
3007
3078
|
messages = event.messages || [];
|
|
3008
3079
|
requiresAction = event.requiresAction || false;
|
|
3080
|
+
if (requiresAction) {
|
|
3081
|
+
const resolvedToolIds = new Set(
|
|
3082
|
+
messages.filter((m) => m.role === "tool" && m.tool_call_id).map((m) => m.tool_call_id)
|
|
3083
|
+
);
|
|
3084
|
+
if (resolvedToolIds.size > 0) {
|
|
3085
|
+
for (let i = toolCalls.length - 1; i >= 0; i--) {
|
|
3086
|
+
if (resolvedToolIds.has(toolCalls[i].id)) {
|
|
3087
|
+
toolCalls.splice(i, 1);
|
|
3088
|
+
}
|
|
3089
|
+
}
|
|
3090
|
+
}
|
|
3091
|
+
}
|
|
3009
3092
|
break;
|
|
3093
|
+
}
|
|
3010
3094
|
case "error":
|
|
3011
3095
|
error = { message: event.message, code: event.code };
|
|
3012
3096
|
break;
|