@absolutejs/ai 0.2.4 → 0.2.5
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/CHANGELOG.md +6 -0
- package/changelog.json +13 -0
- package/dist/ai/index.js +3 -11
- package/dist/ai/index.js.map +3 -3
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,12 @@ This file is generated by `absolute-changelog` from the entries in
|
|
|
6
6
|
`changelog/`. Edit an entry, not this file — and add new ones under
|
|
7
7
|
`changelog/unreleased/`.
|
|
8
8
|
|
|
9
|
+
## 0.2.5 — 2026-09-20
|
|
10
|
+
|
|
11
|
+
### Fixed
|
|
12
|
+
|
|
13
|
+
- **Allow SSE tool loops to reread changed files without silently completing; retain turn, time and token limits** (`streamAIToSSE`)
|
|
14
|
+
|
|
9
15
|
## 0.2.4 — 2026-09-20
|
|
10
16
|
|
|
11
17
|
### Added
|
package/changelog.json
CHANGED
|
@@ -2,6 +2,19 @@
|
|
|
2
2
|
"contract": 1,
|
|
3
3
|
"name": "@absolutejs/ai",
|
|
4
4
|
"releases": [
|
|
5
|
+
{
|
|
6
|
+
"changes": [
|
|
7
|
+
{
|
|
8
|
+
"kind": "fixed",
|
|
9
|
+
"summary": "Allow SSE tool loops to reread changed files without silently completing; retain turn, time and token limits",
|
|
10
|
+
"symbols": [
|
|
11
|
+
"streamAIToSSE"
|
|
12
|
+
]
|
|
13
|
+
}
|
|
14
|
+
],
|
|
15
|
+
"date": "2026-09-20",
|
|
16
|
+
"version": "0.2.5"
|
|
17
|
+
},
|
|
5
18
|
{
|
|
6
19
|
"changes": [
|
|
7
20
|
{
|
package/dist/ai/index.js
CHANGED
|
@@ -4892,7 +4892,6 @@ var executeTool2 = async (options, toolName, toolInput) => {
|
|
|
4892
4892
|
return `Error: ${err instanceof Error ? err.message : String(err)}`;
|
|
4893
4893
|
}
|
|
4894
4894
|
};
|
|
4895
|
-
var serializeToolCall2 = (name, input) => `${name}:${JSON.stringify(input)}`;
|
|
4896
4895
|
var contentEvent = (options, renderers, delta, full) => options.structuredEvents ? { data: JSON.stringify({ delta, full }), event: "content" } : { data: renderers.chunk(delta, full), event: "content" };
|
|
4897
4896
|
var thinkingEvent = (options, renderers, text) => options.structuredEvents ? { data: JSON.stringify({ text }), event: "thinking" } : { data: renderers.thinking(text), event: "thinking" };
|
|
4898
4897
|
var imageEvent = (options, renderers, data, format, revisedPrompt) => options.structuredEvents ? { data: JSON.stringify({ data, format, revisedPrompt }), event: "images" } : { data: renderers.image(data, format, revisedPrompt), event: "images" };
|
|
@@ -5074,7 +5073,6 @@ var executeToolCalls = async function* (pendingToolCalls, options, renderers, tu
|
|
|
5074
5073
|
tool_use_id: toolCall.id,
|
|
5075
5074
|
type: "tool_result"
|
|
5076
5075
|
});
|
|
5077
|
-
turnState.executedToolKeys.add(serializeToolCall2(toolCall.name, toolCall.input));
|
|
5078
5076
|
}
|
|
5079
5077
|
return toolResultBlocks;
|
|
5080
5078
|
};
|
|
@@ -5089,12 +5087,7 @@ var consumeStream2 = async function* (stream, chunkState, renderers, options, tu
|
|
|
5089
5087
|
turnState.fullResponse = prevResponse + chunk.content;
|
|
5090
5088
|
}
|
|
5091
5089
|
};
|
|
5092
|
-
var shouldStopToolLoop = (chunkState,
|
|
5093
|
-
if (chunkState.pendingToolCalls.length === 0 || signal.aborted) {
|
|
5094
|
-
return true;
|
|
5095
|
-
}
|
|
5096
|
-
return chunkState.pendingToolCalls.every((toolCall) => turnState.executedToolKeys.has(serializeToolCall2(toolCall.name, toolCall.input)));
|
|
5097
|
-
};
|
|
5090
|
+
var shouldStopToolLoop = (chunkState, signal) => chunkState.pendingToolCalls.length === 0 || signal.aborted;
|
|
5098
5091
|
var processTurn = async function* (chunkState, options, renderers, turnState) {
|
|
5099
5092
|
turnState.currentMessages.push({
|
|
5100
5093
|
content: chunkState.contentBlocks,
|
|
@@ -5110,7 +5103,6 @@ var streamTurns = async function* (options, renderers, messages, signal, startTi
|
|
|
5110
5103
|
const turnState = {
|
|
5111
5104
|
allToolsHtml: "",
|
|
5112
5105
|
currentMessages: [...messages],
|
|
5113
|
-
executedToolKeys: new Set,
|
|
5114
5106
|
fullResponse: "",
|
|
5115
5107
|
turn: 0
|
|
5116
5108
|
};
|
|
@@ -5172,7 +5164,7 @@ var streamTurns = async function* (options, renderers, messages, signal, startTi
|
|
|
5172
5164
|
yield stoppedEvent(options, renderers, "max_duration_ms", `Stopped: time budget reached (${Math.round((Date.now() - startTime) / 1000)}s over ` + `${turnState.turn} turns). Narrow the request or raise maxDurationMs.`);
|
|
5173
5165
|
return;
|
|
5174
5166
|
}
|
|
5175
|
-
if (shouldStopToolLoop(chunkState,
|
|
5167
|
+
if (shouldStopToolLoop(chunkState, signal)) {
|
|
5176
5168
|
if (signal.aborted) {
|
|
5177
5169
|
finishReason = "aborted";
|
|
5178
5170
|
yield stoppedEvent(options, renderers, "aborted", "Aborted by caller.");
|
|
@@ -8888,5 +8880,5 @@ export {
|
|
|
8888
8880
|
xai
|
|
8889
8881
|
};
|
|
8890
8882
|
|
|
8891
|
-
//# debugId=
|
|
8883
|
+
//# debugId=3B9702E9B461551864756E2164756E21
|
|
8892
8884
|
//# sourceMappingURL=index.js.map
|