@visorcraft/idlehands 2.0.0 → 2.0.1
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/agent/context-budget.js +103 -0
- package/dist/agent/context-budget.js.map +1 -0
- package/dist/agent/tool-loop-detection.js +91 -20
- package/dist/agent/tool-loop-detection.js.map +1 -1
- package/dist/agent.js +55 -11
- package/dist/agent.js.map +1 -1
- package/dist/anton/controller.js +229 -42
- package/dist/anton/controller.js.map +1 -1
- package/dist/anton/preflight.js +7 -0
- package/dist/anton/preflight.js.map +1 -1
- package/dist/anton/session.js +6 -0
- package/dist/anton/session.js.map +1 -1
- package/dist/bot/anton-run.js +16 -5
- package/dist/bot/anton-run.js.map +1 -1
- package/dist/bot/discord.js +13 -0
- package/dist/bot/discord.js.map +1 -1
- package/dist/bot/format.js +0 -5
- package/dist/bot/format.js.map +1 -1
- package/dist/bot/telegram.js +2 -1
- package/dist/bot/telegram.js.map +1 -1
- package/dist/history.js +418 -0
- package/dist/history.js.map +1 -1
- package/dist/vault.js +133 -0
- package/dist/vault.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Context-aware tool result truncation.
|
|
3
|
+
*
|
|
4
|
+
* Prevents oversized tool results from blowing out the context window
|
|
5
|
+
* by pre-truncating before they enter history.
|
|
6
|
+
*/
|
|
7
|
+
// Constants
|
|
8
|
+
const DEFAULT_MAX_SINGLE_RESULT_SHARE = 0.4; // 40% of context max
|
|
9
|
+
const MIN_KEEP_CHARS = 1000;
|
|
10
|
+
const CHARS_PER_TOKEN = 4;
|
|
11
|
+
// Use same format as lens.compactRaw for consistency
|
|
12
|
+
const TRUNCATION_NOTICE_PREFIX = '\n[truncated, ';
|
|
13
|
+
const TRUNCATION_NOTICE_SUFFIX = ' chars total]';
|
|
14
|
+
/**
|
|
15
|
+
* Build truncation notice with total char count (matches lens.compactRaw format).
|
|
16
|
+
*/
|
|
17
|
+
function makeTruncationNotice(totalChars) {
|
|
18
|
+
return `${TRUNCATION_NOTICE_PREFIX}${totalChars}${TRUNCATION_NOTICE_SUFFIX}`;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Truncate text to a target length, trying to break at newlines.
|
|
22
|
+
*/
|
|
23
|
+
function truncateText(text, maxChars, originalLength) {
|
|
24
|
+
if (text.length <= maxChars) {
|
|
25
|
+
return text;
|
|
26
|
+
}
|
|
27
|
+
const notice = makeTruncationNotice(originalLength);
|
|
28
|
+
if (maxChars <= notice.length) {
|
|
29
|
+
return notice;
|
|
30
|
+
}
|
|
31
|
+
const bodyBudget = maxChars - notice.length;
|
|
32
|
+
if (bodyBudget <= MIN_KEEP_CHARS) {
|
|
33
|
+
return text.slice(0, MIN_KEEP_CHARS) + notice;
|
|
34
|
+
}
|
|
35
|
+
// Try to break at a newline
|
|
36
|
+
let cutPoint = bodyBudget;
|
|
37
|
+
const newlinePos = text.lastIndexOf('\n', bodyBudget);
|
|
38
|
+
if (newlinePos > bodyBudget * 0.7) {
|
|
39
|
+
cutPoint = newlinePos;
|
|
40
|
+
}
|
|
41
|
+
return text.slice(0, cutPoint) + notice;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Calculate max chars for a single tool result based on context window.
|
|
45
|
+
*/
|
|
46
|
+
function calculateMaxChars(contextWindow, config) {
|
|
47
|
+
const share = config?.maxSingleResultShare ?? DEFAULT_MAX_SINGLE_RESULT_SHARE;
|
|
48
|
+
const maxTokens = Math.floor(contextWindow * share);
|
|
49
|
+
return maxTokens * CHARS_PER_TOKEN;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Truncate a tool result if it exceeds the context budget.
|
|
53
|
+
*
|
|
54
|
+
* @param content - The tool result content
|
|
55
|
+
* @param contextWindow - Context window size in tokens
|
|
56
|
+
* @param config - Optional configuration overrides
|
|
57
|
+
* @returns Object with truncated content and metadata
|
|
58
|
+
*/
|
|
59
|
+
export function truncateToolResultContent(content, contextWindow, config) {
|
|
60
|
+
const originalLength = content.length;
|
|
61
|
+
const maxChars = calculateMaxChars(contextWindow, config);
|
|
62
|
+
if (originalLength <= maxChars) {
|
|
63
|
+
return { content, truncated: false, originalLength };
|
|
64
|
+
}
|
|
65
|
+
const truncated = truncateText(content, maxChars, originalLength);
|
|
66
|
+
return {
|
|
67
|
+
content: truncated,
|
|
68
|
+
truncated: true,
|
|
69
|
+
originalLength,
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Get content from a tool message.
|
|
74
|
+
*/
|
|
75
|
+
function getToolResultContent(msg) {
|
|
76
|
+
const content = msg.content;
|
|
77
|
+
if (typeof content === 'string')
|
|
78
|
+
return content;
|
|
79
|
+
if (Array.isArray(content)) {
|
|
80
|
+
return content
|
|
81
|
+
.filter((p) => p.type === 'text')
|
|
82
|
+
.map((p) => p.text)
|
|
83
|
+
.join('\n');
|
|
84
|
+
}
|
|
85
|
+
return '';
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Enforce context budget on tool result messages.
|
|
89
|
+
* Returns messages with oversized tool results truncated.
|
|
90
|
+
*/
|
|
91
|
+
export function enforceToolResultBudget(messages, contextWindow, config) {
|
|
92
|
+
const maxChars = calculateMaxChars(contextWindow, config);
|
|
93
|
+
return messages.map(msg => {
|
|
94
|
+
if (msg.role !== 'tool')
|
|
95
|
+
return msg;
|
|
96
|
+
const content = getToolResultContent(msg);
|
|
97
|
+
if (content.length <= maxChars)
|
|
98
|
+
return msg;
|
|
99
|
+
const truncated = truncateText(content, maxChars, content.length);
|
|
100
|
+
return { ...msg, content: truncated };
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
//# sourceMappingURL=context-budget.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context-budget.js","sourceRoot":"","sources":["../../src/agent/context-budget.ts"],"names":[],"mappings":"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"}
|
|
@@ -223,6 +223,79 @@ function consecutiveOutcomeStreak(history, signature, outcomeHash) {
|
|
|
223
223
|
}
|
|
224
224
|
return count;
|
|
225
225
|
}
|
|
226
|
+
/**
|
|
227
|
+
* Detect alternating A→B→A→B... ping-pong patterns in tool call history.
|
|
228
|
+
* Returns detection result with count, tool names, and whether results show no progress.
|
|
229
|
+
*/
|
|
230
|
+
function detectPingPongPattern(history) {
|
|
231
|
+
if (history.length < 4) {
|
|
232
|
+
return { detected: false, count: 0, noProgressEvidence: false };
|
|
233
|
+
}
|
|
234
|
+
// Get the last two distinct signatures
|
|
235
|
+
const last = history[history.length - 1];
|
|
236
|
+
let otherSignature;
|
|
237
|
+
let otherToolName;
|
|
238
|
+
for (let i = history.length - 2; i >= 0; i--) {
|
|
239
|
+
const rec = history[i];
|
|
240
|
+
if (rec.signature !== last.signature) {
|
|
241
|
+
otherSignature = rec.signature;
|
|
242
|
+
otherToolName = rec.toolName;
|
|
243
|
+
break;
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
if (!otherSignature || !otherToolName) {
|
|
247
|
+
return { detected: false, count: 0, noProgressEvidence: false };
|
|
248
|
+
}
|
|
249
|
+
// Count alternating pattern from the end
|
|
250
|
+
let alternatingCount = 0;
|
|
251
|
+
let expectedSignature = last.signature;
|
|
252
|
+
const resultsBySignature = new Map();
|
|
253
|
+
for (let i = history.length - 1; i >= 0; i--) {
|
|
254
|
+
const rec = history[i];
|
|
255
|
+
// Check if this matches the expected alternating signature
|
|
256
|
+
if (rec.signature === expectedSignature) {
|
|
257
|
+
alternatingCount++;
|
|
258
|
+
// Track result hashes for no-progress detection
|
|
259
|
+
if (rec.resultHash) {
|
|
260
|
+
const existing = resultsBySignature.get(rec.signature) ?? new Set();
|
|
261
|
+
existing.add(rec.resultHash);
|
|
262
|
+
resultsBySignature.set(rec.signature, existing);
|
|
263
|
+
}
|
|
264
|
+
// Flip expected signature
|
|
265
|
+
expectedSignature = expectedSignature === last.signature ? otherSignature : last.signature;
|
|
266
|
+
}
|
|
267
|
+
else if (rec.signature === otherSignature && expectedSignature === last.signature) {
|
|
268
|
+
// Allow the pattern to start with either signature
|
|
269
|
+
alternatingCount++;
|
|
270
|
+
if (rec.resultHash) {
|
|
271
|
+
const existing = resultsBySignature.get(rec.signature) ?? new Set();
|
|
272
|
+
existing.add(rec.resultHash);
|
|
273
|
+
resultsBySignature.set(rec.signature, existing);
|
|
274
|
+
}
|
|
275
|
+
expectedSignature = last.signature;
|
|
276
|
+
}
|
|
277
|
+
else {
|
|
278
|
+
// Pattern broken
|
|
279
|
+
break;
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
if (alternatingCount < 4) {
|
|
283
|
+
return { detected: false, count: 0, noProgressEvidence: false };
|
|
284
|
+
}
|
|
285
|
+
// Check for "no progress" - each signature should have only 1 unique result hash
|
|
286
|
+
const sigAResults = resultsBySignature.get(last.signature);
|
|
287
|
+
const sigBResults = resultsBySignature.get(otherSignature);
|
|
288
|
+
const noProgressEvidence = (sigAResults?.size === 1 || !sigAResults) &&
|
|
289
|
+
(sigBResults?.size === 1 || !sigBResults) &&
|
|
290
|
+
(sigAResults?.size ?? 0) + (sigBResults?.size ?? 0) >= 2;
|
|
291
|
+
return {
|
|
292
|
+
detected: true,
|
|
293
|
+
count: alternatingCount,
|
|
294
|
+
toolA: last.toolName,
|
|
295
|
+
toolB: otherToolName,
|
|
296
|
+
noProgressEvidence,
|
|
297
|
+
};
|
|
298
|
+
}
|
|
226
299
|
export function detectToolCallLoop(state, toolName, params, config) {
|
|
227
300
|
const cfg = normalizeConfig(config);
|
|
228
301
|
const policy = resolvePolicyForTool(cfg, toolName);
|
|
@@ -265,32 +338,30 @@ export function detectToolCallLoop(state, toolName, params, config) {
|
|
|
265
338
|
count,
|
|
266
339
|
};
|
|
267
340
|
}
|
|
341
|
+
// Enhanced ping-pong detection: check for alternating patterns A→B→A→B...
|
|
342
|
+
// No longer requires read-only tools; checks longer history; escalates to critical
|
|
268
343
|
if (policy.detectors.pingPong && state.history.length >= 4) {
|
|
269
|
-
const
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
c.resultHash &&
|
|
284
|
-
d.resultHash &&
|
|
285
|
-
a.resultHash === c.resultHash &&
|
|
286
|
-
b.resultHash === d.resultHash) {
|
|
344
|
+
const pingPong = detectPingPongPattern(state.history);
|
|
345
|
+
if (pingPong.detected && pingPong.noProgressEvidence) {
|
|
346
|
+
// Escalate to critical after 6+ alternations with no progress
|
|
347
|
+
if (pingPong.count >= 6) {
|
|
348
|
+
return {
|
|
349
|
+
level: 'critical',
|
|
350
|
+
detector: 'ping_pong',
|
|
351
|
+
message: `Critical ping-pong loop: alternating between ${pingPong.toolA} and ${pingPong.toolB} (${pingPong.count}x) with no progress`,
|
|
352
|
+
signature,
|
|
353
|
+
argsHash,
|
|
354
|
+
count: pingPong.count,
|
|
355
|
+
};
|
|
356
|
+
}
|
|
357
|
+
// Warning for 4+ alternations
|
|
287
358
|
return {
|
|
288
359
|
level: 'warning',
|
|
289
360
|
detector: 'ping_pong',
|
|
290
|
-
message: `Detected ping-pong tool loop between ${
|
|
361
|
+
message: `Detected ping-pong tool loop between ${pingPong.toolA} and ${pingPong.toolB} (${pingPong.count}x)`,
|
|
291
362
|
signature,
|
|
292
363
|
argsHash,
|
|
293
|
-
count:
|
|
364
|
+
count: pingPong.count,
|
|
294
365
|
};
|
|
295
366
|
}
|
|
296
367
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-loop-detection.js","sourceRoot":"","sources":["../../src/agent/tool-loop-detection.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tool-loop-detection.js","sourceRoot":"","sources":["../../src/agent/tool-loop-detection.ts"],"names":[],"mappings":"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"}
|
package/dist/agent.js
CHANGED
|
@@ -17,6 +17,7 @@ import { loadProjectContext } from './context.js';
|
|
|
17
17
|
import { loadGitContext, isGitDirty, stashWorkingTree } from './git.js';
|
|
18
18
|
import { selectHarness } from './harnesses.js';
|
|
19
19
|
import { enforceContextBudget, stripThinking, estimateTokensFromMessages, estimateToolSchemaTokens, } from './history.js';
|
|
20
|
+
import { truncateToolResultContent } from './agent/context-budget.js';
|
|
20
21
|
import { HookManager, loadHookPlugins } from './hooks/index.js';
|
|
21
22
|
import { projectIndexKeys, parseIndexMeta, isFreshIndex, indexSummaryLine } from './indexer.js';
|
|
22
23
|
import { LensStore } from './lens.js';
|
|
@@ -2469,18 +2470,40 @@ export async function createSession(opts) {
|
|
|
2469
2470
|
}
|
|
2470
2471
|
continue;
|
|
2471
2472
|
}
|
|
2472
|
-
//
|
|
2473
|
+
// Improved handling of mutating tool loops - gradual recovery instead of immediate error
|
|
2474
|
+
const sigCount = sigCounts.get(sig) ?? 0;
|
|
2473
2475
|
const loopThreshold = harness.quirks.loopsOnToolError ? 2 : 3;
|
|
2474
|
-
if (
|
|
2476
|
+
if (sigCount >= loopThreshold) {
|
|
2475
2477
|
const argsObj = sigMetaBySig.get(sig)?.args ?? {};
|
|
2476
2478
|
const argsRaw = JSON.stringify(argsObj);
|
|
2477
2479
|
const argsPreview = argsRaw.length > 220 ? argsRaw.slice(0, 220) + '…' : argsRaw;
|
|
2478
|
-
|
|
2479
|
-
|
|
2480
|
-
|
|
2481
|
-
|
|
2482
|
-
|
|
2483
|
-
|
|
2480
|
+
// At threshold: trigger toolless recovery instead of throwing error
|
|
2481
|
+
// This gives the model a chance to think and try a different approach
|
|
2482
|
+
console.error(`[tool-loop] critical: ${toolName} repeated ${sigCount}x with same args. Triggering recovery turn.`);
|
|
2483
|
+
shouldForceToollessRecovery = true;
|
|
2484
|
+
// Poison this specific tool signature to prevent re-execution
|
|
2485
|
+
poisonedToolSigs.add(sig);
|
|
2486
|
+
// Add helpful guidance
|
|
2487
|
+
messages.push({
|
|
2488
|
+
role: 'user',
|
|
2489
|
+
content: `[system] Tool loop detected: ${toolName} called ${sigCount}x with identical arguments.\n` +
|
|
2490
|
+
`args=${argsPreview}\n\n` +
|
|
2491
|
+
`The same edit is being attempted repeatedly. This usually means:\n` +
|
|
2492
|
+
`1. The edit already succeeded - verify by reading the file\n` +
|
|
2493
|
+
`2. The old_text doesn't match - read the file to see actual content\n` +
|
|
2494
|
+
`3. A different approach is needed\n\n` +
|
|
2495
|
+
`Do NOT repeat the same edit. Read the file first, then decide on next steps.`,
|
|
2496
|
+
});
|
|
2497
|
+
continue;
|
|
2498
|
+
}
|
|
2499
|
+
// At sigCount === loopThreshold - 1: inject early warning
|
|
2500
|
+
if (sigCount === loopThreshold - 1) {
|
|
2501
|
+
console.error(`[tool-loop] warning: ${toolName} repeated ${sigCount}x. Next repeat will trigger recovery.`);
|
|
2502
|
+
messages.push({
|
|
2503
|
+
role: 'user',
|
|
2504
|
+
content: `[system] Warning: ${toolName} has been called ${sigCount} times with identical arguments. ` +
|
|
2505
|
+
`If this edit keeps failing, read the target file to verify its current state before trying again.`,
|
|
2506
|
+
});
|
|
2484
2507
|
}
|
|
2485
2508
|
}
|
|
2486
2509
|
// Update consecutive tracking: save this turn's signatures for next turn comparison.
|
|
@@ -2523,11 +2546,26 @@ export async function createSession(opts) {
|
|
|
2523
2546
|
catch {
|
|
2524
2547
|
// Respect harness retry limit for malformed JSON (§4i)
|
|
2525
2548
|
malformedCount++;
|
|
2549
|
+
// Detect if the model is outputting diff/patch format instead of JSON
|
|
2550
|
+
const looksLikeDiff = /^[\s"]*---\s+a\/|^\+\+\+\s+b\/|^@@\s+-\d+/m.test(rawArgs);
|
|
2551
|
+
const looksLikePatch = /^diff\s+--git|^Index:|^\*\*\*\s+/m.test(rawArgs);
|
|
2526
2552
|
if (malformedCount > harness.toolCalls.retryOnMalformed) {
|
|
2527
2553
|
// Break the outer loop — this model won't self-correct
|
|
2528
|
-
|
|
2554
|
+
const hint = looksLikeDiff || looksLikePatch
|
|
2555
|
+
? ' The model is outputting diff/patch format instead of JSON. This may be a model compatibility issue.'
|
|
2556
|
+
: '';
|
|
2557
|
+
throw new AgentLoopBreak(`tool ${name}: malformed JSON exceeded retry limit (${harness.toolCalls.retryOnMalformed}): ${rawArgs.slice(0, 200)}${hint}`);
|
|
2529
2558
|
}
|
|
2530
|
-
|
|
2559
|
+
// Give specific guidance based on the error pattern
|
|
2560
|
+
let hint = 'Return a valid JSON object for function.arguments.';
|
|
2561
|
+
if (looksLikeDiff || looksLikePatch) {
|
|
2562
|
+
hint =
|
|
2563
|
+
'ERROR: You output a diff/patch format instead of JSON. ' +
|
|
2564
|
+
'Tool arguments must be a JSON object like {"path": "file.txt", "old_text": "...", "new_text": "..."}. ' +
|
|
2565
|
+
'Do NOT use unified diff format (--- a/ +++ b/ @@). ' +
|
|
2566
|
+
'Use the exact JSON schema required by the tool.';
|
|
2567
|
+
}
|
|
2568
|
+
throw new ToolError('invalid_args', `tool ${name}: arguments not valid JSON`, false, hint, { raw: rawArgs.slice(0, 200) });
|
|
2531
2569
|
}
|
|
2532
2570
|
if (args == null || typeof args !== 'object' || Array.isArray(args)) {
|
|
2533
2571
|
throw new ValidationError([
|
|
@@ -2952,7 +2990,13 @@ export async function createSession(opts) {
|
|
|
2952
2990
|
}
|
|
2953
2991
|
}
|
|
2954
2992
|
}
|
|
2955
|
-
|
|
2993
|
+
// Context-aware truncation: cap oversized tool results before returning
|
|
2994
|
+
// to prevent blowing out the context window on subsequent LLM calls.
|
|
2995
|
+
const truncated = truncateToolResultContent(content, contextWindow);
|
|
2996
|
+
if (truncated.truncated && cfg.verbose) {
|
|
2997
|
+
console.warn(`[context-budget] truncated ${name} result: ${content.length} → ${truncated.content.length} chars`);
|
|
2998
|
+
}
|
|
2999
|
+
return { id: callId, content: truncated.content };
|
|
2956
3000
|
};
|
|
2957
3001
|
const results = [];
|
|
2958
3002
|
let invalidArgsThisTurn = false;
|