open-agents-ai 0.187.250 → 0.187.252
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 +25 -3
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -273043,6 +273043,28 @@ Do NOT re-run it. Use the result you already have and proceed to the next step.`
|
|
|
273043
273043
|
break;
|
|
273044
273044
|
}
|
|
273045
273045
|
}
|
|
273046
|
+
{
|
|
273047
|
+
const recentCalls = this._littlemanToolOutcomes.slice(-5);
|
|
273048
|
+
if (recentCalls.length >= 3) {
|
|
273049
|
+
let consecutiveShortResults = 0;
|
|
273050
|
+
for (let i2 = recentCalls.length - 1; i2 >= 0; i2--) {
|
|
273051
|
+
const o2 = recentCalls[i2];
|
|
273052
|
+
if (o2.succeeded && o2.preview.length <= 10) {
|
|
273053
|
+
consecutiveShortResults++;
|
|
273054
|
+
} else {
|
|
273055
|
+
break;
|
|
273056
|
+
}
|
|
273057
|
+
}
|
|
273058
|
+
if (consecutiveShortResults >= 3) {
|
|
273059
|
+
this.pendingUserMessages.push(`[LITTLEMAN] You have sent ${consecutiveShortResults} consecutive outputs without reading any input. In an interactive session, you MUST alternate: receive input, then respond, then receive again. STOP sending and call your input/listening tool NOW to hear what the other side said.`);
|
|
273060
|
+
this.emit({
|
|
273061
|
+
type: "status",
|
|
273062
|
+
content: `Littleman: blocked runaway output (${consecutiveShortResults} consecutive sends without receive)`,
|
|
273063
|
+
timestamp: (/* @__PURE__ */ new Date()).toISOString()
|
|
273064
|
+
});
|
|
273065
|
+
}
|
|
273066
|
+
}
|
|
273067
|
+
}
|
|
273046
273068
|
const succCount = this._littlemanToolOutcomes.filter((o2) => o2.succeeded).length;
|
|
273047
273069
|
const failCount = this._littlemanToolOutcomes.filter((o2) => !o2.succeeded).length;
|
|
273048
273070
|
this.emit({
|
|
@@ -327040,8 +327062,8 @@ function createTaskCompleteTool(modelTier) {
|
|
|
327040
327062
|
if (_interactiveSessionActive) {
|
|
327041
327063
|
return {
|
|
327042
327064
|
success: false,
|
|
327043
|
-
output:
|
|
327044
|
-
error: `task_complete BLOCKED — interactive session still active. ${_interactiveSessionReason} You MUST continue the interaction loop until the session ends. Do NOT call task_complete until you receive a termination signal (e.g. "ended", "disconnected", "closed", SESSION_ACTIVE=false).
|
|
327065
|
+
output: `SESSION STILL ACTIVE. Call your next interaction tool NOW. Do NOT produce text — call a tool immediately to continue the session.`,
|
|
327066
|
+
error: `task_complete BLOCKED — interactive session still active. ${_interactiveSessionReason} You MUST continue the interaction loop until the session ends. Do NOT call task_complete until you receive a termination signal (e.g. "ended", "disconnected", "closed", SESSION_ACTIVE=false). YOUR NEXT ACTION: call the listening/polling tool to continue the session.`
|
|
327045
327067
|
};
|
|
327046
327068
|
}
|
|
327047
327069
|
try {
|
|
@@ -327061,7 +327083,7 @@ function createTaskCompleteTool(modelTier) {
|
|
|
327061
327083
|
error: `task_complete BLOCKED — ${incomplete.length} todo item(s) still incomplete. You must either:
|
|
327062
327084
|
1. Continue working on the remaining items, OR
|
|
327063
327085
|
2. If they're actually done, call todo_write with status='completed' for each one, THEN call task_complete again.
|
|
327064
|
-
3. If you are in an interactive session (call, chat, monitoring), RESUME THE LOOP —
|
|
327086
|
+
3. If you are in an interactive session (call, chat, monitoring), RESUME THE LOOP — call your next interaction tool NOW.
|
|
327065
327087
|
|
|
327066
327088
|
Incomplete items:
|
|
327067
327089
|
${incompleteList}${more}`
|
package/package.json
CHANGED