@dudousxd/nestjs-agent-core 0.45.1 → 0.45.2
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.cjs +52 -31
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +52 -31
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -5676,7 +5676,7 @@ function traceToolExecution(runId, call, run) {
|
|
|
5676
5676
|
}
|
|
5677
5677
|
__name(traceToolExecution, "traceToolExecution");
|
|
5678
5678
|
function toModelMessages(messages) {
|
|
5679
|
-
return messages.map((message) => ({
|
|
5679
|
+
return withoutBlankAssistantMessages(messages.map((message) => ({
|
|
5680
5680
|
role: message.role,
|
|
5681
5681
|
content: message.content,
|
|
5682
5682
|
...message.toolCalls !== void 0 ? {
|
|
@@ -5688,9 +5688,17 @@ function toModelMessages(messages) {
|
|
|
5688
5688
|
...message.attachments !== void 0 ? {
|
|
5689
5689
|
attachments: message.attachments
|
|
5690
5690
|
} : {}
|
|
5691
|
-
}));
|
|
5691
|
+
})));
|
|
5692
5692
|
}
|
|
5693
5693
|
__name(toModelMessages, "toModelMessages");
|
|
5694
|
+
function isBlankAssistantMessage(message) {
|
|
5695
|
+
return message.role === "assistant" && message.content.trim().length === 0 && (message.toolCalls?.length ?? 0) === 0 && (message.toolResults?.length ?? 0) === 0;
|
|
5696
|
+
}
|
|
5697
|
+
__name(isBlankAssistantMessage, "isBlankAssistantMessage");
|
|
5698
|
+
function withoutBlankAssistantMessages(messages) {
|
|
5699
|
+
return messages.some(isBlankAssistantMessage) ? messages.filter((message) => !isBlankAssistantMessage(message)) : messages;
|
|
5700
|
+
}
|
|
5701
|
+
__name(withoutBlankAssistantMessages, "withoutBlankAssistantMessages");
|
|
5694
5702
|
function historyContext(input) {
|
|
5695
5703
|
return {
|
|
5696
5704
|
threadId: input.threadId,
|
|
@@ -5722,7 +5730,7 @@ async function loadSelectedHistory(deps, input, hooks) {
|
|
|
5722
5730
|
});
|
|
5723
5731
|
return {
|
|
5724
5732
|
...recorded,
|
|
5725
|
-
messages: settleDanglingToolCalls(recorded.messages)
|
|
5733
|
+
messages: settleDanglingToolCalls(withoutBlankAssistantMessages(recorded.messages))
|
|
5726
5734
|
};
|
|
5727
5735
|
}
|
|
5728
5736
|
__name(loadSelectedHistory, "loadSelectedHistory");
|
|
@@ -7490,13 +7498,18 @@ ${block}`;
|
|
|
7490
7498
|
runId: hooks.runId,
|
|
7491
7499
|
step: i,
|
|
7492
7500
|
count
|
|
7493
|
-
}, () => generateFollowUps(
|
|
7494
|
-
|
|
7495
|
-
|
|
7496
|
-
|
|
7497
|
-
|
|
7498
|
-
|
|
7499
|
-
|
|
7501
|
+
}, () => generateFollowUps(
|
|
7502
|
+
deps.model,
|
|
7503
|
+
// A blank answer is left off: an empty assistant message gets the call refused.
|
|
7504
|
+
turn.text.trim().length > 0 ? [
|
|
7505
|
+
...modelMessages,
|
|
7506
|
+
{
|
|
7507
|
+
role: "assistant",
|
|
7508
|
+
content: turn.text
|
|
7509
|
+
}
|
|
7510
|
+
] : modelMessages,
|
|
7511
|
+
count
|
|
7512
|
+
), (result2) => ({
|
|
7500
7513
|
followUps: result2.followUps.length,
|
|
7501
7514
|
inputTokens: result2.usage.inputTokens,
|
|
7502
7515
|
outputTokens: result2.usage.outputTokens,
|
|
@@ -7564,7 +7577,8 @@ ${block}`;
|
|
|
7564
7577
|
...synthetic.map((entry) => entry.call)
|
|
7565
7578
|
];
|
|
7566
7579
|
const syntheticResults = synthetic.map((entry) => entry.result);
|
|
7567
|
-
const
|
|
7580
|
+
const blankStep = turn.text.trim().length === 0 && messageCalls.length === 0 && syntheticResults.length === 0 && (turn.ui === void 0 || turn.ui.length === 0) && turn.reasoning === void 0 && followUps === void 0;
|
|
7581
|
+
const assistant = await hooks.step(`persist:assistant:${i}`, () => blankStep ? Promise.resolve(null) : deps.store.appendMessage({
|
|
7568
7582
|
threadId: input.threadId,
|
|
7569
7583
|
role: "assistant",
|
|
7570
7584
|
content: turn.text,
|
|
@@ -7610,6 +7624,23 @@ ${block}`;
|
|
|
7610
7624
|
toolResults: syntheticResults
|
|
7611
7625
|
} : {}
|
|
7612
7626
|
};
|
|
7627
|
+
const finishFinalStep = /* @__PURE__ */ __name(() => hooks.step(`stream:step-finish:${i}`, async () => {
|
|
7628
|
+
await writer.write(encodeStreamEvent({
|
|
7629
|
+
kind: "step-finish",
|
|
7630
|
+
usage: turn.usage,
|
|
7631
|
+
costUsd,
|
|
7632
|
+
...turn.reasoningMs !== void 0 ? {
|
|
7633
|
+
reasoningMs: turn.reasoningMs
|
|
7634
|
+
} : {},
|
|
7635
|
+
...stepModel !== void 0 ? {
|
|
7636
|
+
model: stepModel
|
|
7637
|
+
} : {}
|
|
7638
|
+
}));
|
|
7639
|
+
}), "finishFinalStep");
|
|
7640
|
+
if (assistant === null) {
|
|
7641
|
+
await finishFinalStep();
|
|
7642
|
+
break;
|
|
7643
|
+
}
|
|
7613
7644
|
modelMessages.push(assistantMessage);
|
|
7614
7645
|
for (const entry of synthetic) {
|
|
7615
7646
|
const { call, result: result2 } = entry;
|
|
@@ -7643,19 +7674,7 @@ ${block}`;
|
|
|
7643
7674
|
});
|
|
7644
7675
|
}
|
|
7645
7676
|
if (isFinalTurn) {
|
|
7646
|
-
await
|
|
7647
|
-
await writer.write(encodeStreamEvent({
|
|
7648
|
-
kind: "step-finish",
|
|
7649
|
-
usage: turn.usage,
|
|
7650
|
-
costUsd,
|
|
7651
|
-
...turn.reasoningMs !== void 0 ? {
|
|
7652
|
-
reasoningMs: turn.reasoningMs
|
|
7653
|
-
} : {},
|
|
7654
|
-
...stepModel !== void 0 ? {
|
|
7655
|
-
model: stepModel
|
|
7656
|
-
} : {}
|
|
7657
|
-
}));
|
|
7658
|
-
});
|
|
7677
|
+
await finishFinalStep();
|
|
7659
7678
|
break;
|
|
7660
7679
|
}
|
|
7661
7680
|
await haltIfCancelled(hooks, cancellable, `cancel:tools:${i}`);
|
|
@@ -7766,13 +7785,15 @@ ${toolText}`;
|
|
|
7766
7785
|
return;
|
|
7767
7786
|
}
|
|
7768
7787
|
const agent = input.agentName ?? "default";
|
|
7769
|
-
|
|
7770
|
-
|
|
7771
|
-
|
|
7772
|
-
|
|
7773
|
-
|
|
7774
|
-
|
|
7775
|
-
|
|
7788
|
+
if (lastText.trim().length > 0) {
|
|
7789
|
+
await deps.store.appendMessage({
|
|
7790
|
+
threadId: delivery.threadId,
|
|
7791
|
+
role: "assistant",
|
|
7792
|
+
content: lastText,
|
|
7793
|
+
agentName: agent,
|
|
7794
|
+
runId: hooks.runId
|
|
7795
|
+
});
|
|
7796
|
+
}
|
|
7776
7797
|
await deps.store.updateToolCall({
|
|
7777
7798
|
toolCallId: delivery.toolCallId,
|
|
7778
7799
|
status: "executed",
|