@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.cjs
CHANGED
|
@@ -5966,7 +5966,7 @@ function traceToolExecution(runId, call, run) {
|
|
|
5966
5966
|
}
|
|
5967
5967
|
__name(traceToolExecution, "traceToolExecution");
|
|
5968
5968
|
function toModelMessages(messages) {
|
|
5969
|
-
return messages.map((message) => ({
|
|
5969
|
+
return withoutBlankAssistantMessages(messages.map((message) => ({
|
|
5970
5970
|
role: message.role,
|
|
5971
5971
|
content: message.content,
|
|
5972
5972
|
...message.toolCalls !== void 0 ? {
|
|
@@ -5978,9 +5978,17 @@ function toModelMessages(messages) {
|
|
|
5978
5978
|
...message.attachments !== void 0 ? {
|
|
5979
5979
|
attachments: message.attachments
|
|
5980
5980
|
} : {}
|
|
5981
|
-
}));
|
|
5981
|
+
})));
|
|
5982
5982
|
}
|
|
5983
5983
|
__name(toModelMessages, "toModelMessages");
|
|
5984
|
+
function isBlankAssistantMessage(message) {
|
|
5985
|
+
return message.role === "assistant" && message.content.trim().length === 0 && (message.toolCalls?.length ?? 0) === 0 && (message.toolResults?.length ?? 0) === 0;
|
|
5986
|
+
}
|
|
5987
|
+
__name(isBlankAssistantMessage, "isBlankAssistantMessage");
|
|
5988
|
+
function withoutBlankAssistantMessages(messages) {
|
|
5989
|
+
return messages.some(isBlankAssistantMessage) ? messages.filter((message) => !isBlankAssistantMessage(message)) : messages;
|
|
5990
|
+
}
|
|
5991
|
+
__name(withoutBlankAssistantMessages, "withoutBlankAssistantMessages");
|
|
5984
5992
|
function historyContext(input) {
|
|
5985
5993
|
return {
|
|
5986
5994
|
threadId: input.threadId,
|
|
@@ -6012,7 +6020,7 @@ async function loadSelectedHistory(deps, input, hooks) {
|
|
|
6012
6020
|
});
|
|
6013
6021
|
return {
|
|
6014
6022
|
...recorded,
|
|
6015
|
-
messages: settleDanglingToolCalls(recorded.messages)
|
|
6023
|
+
messages: settleDanglingToolCalls(withoutBlankAssistantMessages(recorded.messages))
|
|
6016
6024
|
};
|
|
6017
6025
|
}
|
|
6018
6026
|
__name(loadSelectedHistory, "loadSelectedHistory");
|
|
@@ -7780,13 +7788,18 @@ ${block}`;
|
|
|
7780
7788
|
runId: hooks.runId,
|
|
7781
7789
|
step: i,
|
|
7782
7790
|
count
|
|
7783
|
-
}, () => generateFollowUps(
|
|
7784
|
-
|
|
7785
|
-
|
|
7786
|
-
|
|
7787
|
-
|
|
7788
|
-
|
|
7789
|
-
|
|
7791
|
+
}, () => generateFollowUps(
|
|
7792
|
+
deps.model,
|
|
7793
|
+
// A blank answer is left off: an empty assistant message gets the call refused.
|
|
7794
|
+
turn.text.trim().length > 0 ? [
|
|
7795
|
+
...modelMessages,
|
|
7796
|
+
{
|
|
7797
|
+
role: "assistant",
|
|
7798
|
+
content: turn.text
|
|
7799
|
+
}
|
|
7800
|
+
] : modelMessages,
|
|
7801
|
+
count
|
|
7802
|
+
), (result2) => ({
|
|
7790
7803
|
followUps: result2.followUps.length,
|
|
7791
7804
|
inputTokens: result2.usage.inputTokens,
|
|
7792
7805
|
outputTokens: result2.usage.outputTokens,
|
|
@@ -7854,7 +7867,8 @@ ${block}`;
|
|
|
7854
7867
|
...synthetic.map((entry) => entry.call)
|
|
7855
7868
|
];
|
|
7856
7869
|
const syntheticResults = synthetic.map((entry) => entry.result);
|
|
7857
|
-
const
|
|
7870
|
+
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;
|
|
7871
|
+
const assistant = await hooks.step(`persist:assistant:${i}`, () => blankStep ? Promise.resolve(null) : deps.store.appendMessage({
|
|
7858
7872
|
threadId: input.threadId,
|
|
7859
7873
|
role: "assistant",
|
|
7860
7874
|
content: turn.text,
|
|
@@ -7900,6 +7914,23 @@ ${block}`;
|
|
|
7900
7914
|
toolResults: syntheticResults
|
|
7901
7915
|
} : {}
|
|
7902
7916
|
};
|
|
7917
|
+
const finishFinalStep = /* @__PURE__ */ __name(() => hooks.step(`stream:step-finish:${i}`, async () => {
|
|
7918
|
+
await writer.write(encodeStreamEvent({
|
|
7919
|
+
kind: "step-finish",
|
|
7920
|
+
usage: turn.usage,
|
|
7921
|
+
costUsd,
|
|
7922
|
+
...turn.reasoningMs !== void 0 ? {
|
|
7923
|
+
reasoningMs: turn.reasoningMs
|
|
7924
|
+
} : {},
|
|
7925
|
+
...stepModel !== void 0 ? {
|
|
7926
|
+
model: stepModel
|
|
7927
|
+
} : {}
|
|
7928
|
+
}));
|
|
7929
|
+
}), "finishFinalStep");
|
|
7930
|
+
if (assistant === null) {
|
|
7931
|
+
await finishFinalStep();
|
|
7932
|
+
break;
|
|
7933
|
+
}
|
|
7903
7934
|
modelMessages.push(assistantMessage);
|
|
7904
7935
|
for (const entry of synthetic) {
|
|
7905
7936
|
const { call, result: result2 } = entry;
|
|
@@ -7933,19 +7964,7 @@ ${block}`;
|
|
|
7933
7964
|
});
|
|
7934
7965
|
}
|
|
7935
7966
|
if (isFinalTurn) {
|
|
7936
|
-
await
|
|
7937
|
-
await writer.write(encodeStreamEvent({
|
|
7938
|
-
kind: "step-finish",
|
|
7939
|
-
usage: turn.usage,
|
|
7940
|
-
costUsd,
|
|
7941
|
-
...turn.reasoningMs !== void 0 ? {
|
|
7942
|
-
reasoningMs: turn.reasoningMs
|
|
7943
|
-
} : {},
|
|
7944
|
-
...stepModel !== void 0 ? {
|
|
7945
|
-
model: stepModel
|
|
7946
|
-
} : {}
|
|
7947
|
-
}));
|
|
7948
|
-
});
|
|
7967
|
+
await finishFinalStep();
|
|
7949
7968
|
break;
|
|
7950
7969
|
}
|
|
7951
7970
|
await haltIfCancelled(hooks, cancellable, `cancel:tools:${i}`);
|
|
@@ -8056,13 +8075,15 @@ ${toolText}`;
|
|
|
8056
8075
|
return;
|
|
8057
8076
|
}
|
|
8058
8077
|
const agent = input.agentName ?? "default";
|
|
8059
|
-
|
|
8060
|
-
|
|
8061
|
-
|
|
8062
|
-
|
|
8063
|
-
|
|
8064
|
-
|
|
8065
|
-
|
|
8078
|
+
if (lastText.trim().length > 0) {
|
|
8079
|
+
await deps.store.appendMessage({
|
|
8080
|
+
threadId: delivery.threadId,
|
|
8081
|
+
role: "assistant",
|
|
8082
|
+
content: lastText,
|
|
8083
|
+
agentName: agent,
|
|
8084
|
+
runId: hooks.runId
|
|
8085
|
+
});
|
|
8086
|
+
}
|
|
8066
8087
|
await deps.store.updateToolCall({
|
|
8067
8088
|
toolCallId: delivery.toolCallId,
|
|
8068
8089
|
status: "executed",
|