@oh-my-pi/pi-agent-core 3.3.1337 → 3.5.1337
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/package.json +3 -3
- package/src/agent-loop.ts +21 -0
- package/src/agent.ts +8 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@oh-my-pi/pi-agent-core",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.5.1337",
|
|
4
4
|
"description": "General-purpose agent with transport abstraction, state management, and attachment support",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./src/index.ts",
|
|
@@ -13,8 +13,8 @@
|
|
|
13
13
|
"test": "vitest --run"
|
|
14
14
|
},
|
|
15
15
|
"dependencies": {
|
|
16
|
-
"@oh-my-pi/pi-ai": "3.
|
|
17
|
-
"@oh-my-pi/pi-tui": "3.
|
|
16
|
+
"@oh-my-pi/pi-ai": "3.5.1337",
|
|
17
|
+
"@oh-my-pi/pi-tui": "3.5.1337"
|
|
18
18
|
},
|
|
19
19
|
"keywords": [
|
|
20
20
|
"ai",
|
package/src/agent-loop.ts
CHANGED
|
@@ -225,6 +225,11 @@ async function streamAssistantResponse(
|
|
|
225
225
|
let addedPartial = false;
|
|
226
226
|
|
|
227
227
|
for await (const event of response) {
|
|
228
|
+
// Check abort early - allows TTSR and other abort sources to break immediately
|
|
229
|
+
if (signal?.aborted) {
|
|
230
|
+
break;
|
|
231
|
+
}
|
|
232
|
+
|
|
228
233
|
switch (event.type) {
|
|
229
234
|
case "start":
|
|
230
235
|
partialMessage = event.partial;
|
|
@@ -268,6 +273,22 @@ async function streamAssistantResponse(
|
|
|
268
273
|
return finalMessage;
|
|
269
274
|
}
|
|
270
275
|
}
|
|
276
|
+
|
|
277
|
+
// Check abort after processing - allows handlers to abort mid-stream
|
|
278
|
+
if (signal?.aborted) {
|
|
279
|
+
break;
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
// If we broke out due to abort, return an aborted message
|
|
284
|
+
if (signal?.aborted && partialMessage) {
|
|
285
|
+
const abortedMessage: AssistantMessage = {
|
|
286
|
+
...partialMessage,
|
|
287
|
+
stopReason: "aborted",
|
|
288
|
+
};
|
|
289
|
+
context.messages[context.messages.length - 1] = abortedMessage;
|
|
290
|
+
stream.push({ type: "message_end", message: abortedMessage });
|
|
291
|
+
return abortedMessage;
|
|
271
292
|
}
|
|
272
293
|
|
|
273
294
|
return await response.result();
|
package/src/agent.ts
CHANGED
|
@@ -174,6 +174,14 @@ export class Agent {
|
|
|
174
174
|
this._state.messages = [];
|
|
175
175
|
}
|
|
176
176
|
|
|
177
|
+
/** Remove and return the last message from the message list */
|
|
178
|
+
popMessage(): AgentMessage | undefined {
|
|
179
|
+
if (this._state.messages.length === 0) return undefined;
|
|
180
|
+
const popped = this._state.messages[this._state.messages.length - 1];
|
|
181
|
+
this._state.messages = this._state.messages.slice(0, -1);
|
|
182
|
+
return popped;
|
|
183
|
+
}
|
|
184
|
+
|
|
177
185
|
abort() {
|
|
178
186
|
this.abortController?.abort();
|
|
179
187
|
}
|