@pentoshi/clai 3.11.17 → 3.11.18
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/loop-guard.d.ts +16 -52
- package/dist/agent/loop-guard.js +91 -81
- package/dist/agent/loop-guard.js.map +1 -1
- package/dist/agent/runner.js +12 -0
- package/dist/agent/runner.js.map +1 -1
- package/dist/tools/definitions.js +6 -0
- package/dist/tools/definitions.js.map +1 -1
- package/dist/version.generated.d.ts +2 -2
- package/dist/version.generated.js +2 -2
- package/package.json +1 -1
|
@@ -6,11 +6,6 @@ export interface ToolAttempt {
|
|
|
6
6
|
ok: boolean;
|
|
7
7
|
exitCode?: number | undefined;
|
|
8
8
|
}
|
|
9
|
-
/**
|
|
10
|
-
* Track tool attempts for failure reflection. Successful calls that produced
|
|
11
|
-
* an observation remain repeatable; an empty success is different because the
|
|
12
|
-
* model has no result from which to choose its next action.
|
|
13
|
-
*/
|
|
14
9
|
export interface LoopGuardOptions {
|
|
15
10
|
/** @deprecated Retry authorization belongs in RetryContext passed to shouldBlock. */
|
|
16
11
|
allowUnlimitedFailedRetries?: boolean;
|
|
@@ -18,13 +13,9 @@ export interface LoopGuardOptions {
|
|
|
18
13
|
failedRetryLimit?: number;
|
|
19
14
|
}
|
|
20
15
|
export interface RetryContext {
|
|
21
|
-
/** A dependency changed since the failed attempt. */
|
|
22
16
|
dependenciesChanged?: boolean;
|
|
23
|
-
/** The execution environment changed since the failed attempt. */
|
|
24
17
|
environmentChanged?: boolean;
|
|
25
|
-
/** Stable live state for status probes, excluding elapsed time. */
|
|
26
18
|
stateKey?: string | undefined;
|
|
27
|
-
/** Structured justification for retrying without an external change. */
|
|
28
19
|
retryReason?: {
|
|
29
20
|
code: string;
|
|
30
21
|
detail: string;
|
|
@@ -39,10 +30,10 @@ export interface ActionSequenceDecision {
|
|
|
39
30
|
suppress: boolean;
|
|
40
31
|
terminal: boolean;
|
|
41
32
|
repetitions: number;
|
|
42
|
-
/** Cumulative suppressions this turn, across distinct sequences (drives escalation). */
|
|
43
33
|
totalSuppressions: number;
|
|
44
|
-
/** True when the repeat was caught via the recent-sequence window, not back-to-back. */
|
|
45
34
|
oscillation: boolean;
|
|
35
|
+
warn: boolean;
|
|
36
|
+
warnMessage?: string | undefined;
|
|
46
37
|
}
|
|
47
38
|
export declare class LoopGuard {
|
|
48
39
|
private attempts;
|
|
@@ -51,36 +42,19 @@ export declare class LoopGuard {
|
|
|
51
42
|
private lastActionSequence;
|
|
52
43
|
private lastActionSequenceEligible;
|
|
53
44
|
private actionSequenceRepetitions;
|
|
54
|
-
/**
|
|
55
|
-
* Bounded window of recently completed eligible sequences. Catches A→B→A
|
|
56
|
-
* oscillation that a single lastActionSequence slot misses: returning to a
|
|
57
|
-
* sequence after intervening different work is still a repeat.
|
|
58
|
-
*/
|
|
59
45
|
private recentActionSequences;
|
|
60
46
|
private static readonly MAX_RECENT_SEQUENCES;
|
|
61
|
-
/** Cumulative suppressions this turn, across distinct sequences. */
|
|
62
47
|
private totalSequenceSuppressions;
|
|
63
|
-
|
|
64
|
-
* A successful call with no body is not evidence that repeating the exact
|
|
65
|
-
* call can make progress. Keep only lightweight retry state, never output.
|
|
66
|
-
*/
|
|
48
|
+
private sequenceRunCounts;
|
|
67
49
|
private emptySuccessfulCalls;
|
|
68
|
-
/** Failed read-only signatures that already used their one free env-change retry. */
|
|
69
50
|
private failedReadRetryUsed;
|
|
70
51
|
private successfulProbes;
|
|
71
52
|
private failedProbes;
|
|
72
53
|
private lastSuccessfulNonMetaStep;
|
|
73
54
|
constructor(_options?: LoopGuardOptions);
|
|
74
55
|
restoreCompletedOperations(operations: readonly CompletedOperation[]): void;
|
|
75
|
-
/**
|
|
76
|
-
* Produce a canonical string for a (name, args) pair so that calls
|
|
77
|
-
* with identical semantics match even if arg order differs or
|
|
78
|
-
* command whitespace varies.
|
|
79
|
-
*
|
|
80
|
-
* Large string values (file contents) are fingerprinted — never kept
|
|
81
|
-
* verbatim — so writeMany scaffolds cannot pin multi-MB strings in Maps.
|
|
82
|
-
*/
|
|
83
56
|
canonicalize(name: string, args: Record<string, unknown>): string;
|
|
57
|
+
private sequenceSignature;
|
|
84
58
|
observeActionSequence(calls: readonly {
|
|
85
59
|
name: string;
|
|
86
60
|
args: Record<string, unknown>;
|
|
@@ -91,36 +65,26 @@ export declare class LoopGuard {
|
|
|
91
65
|
args: Record<string, unknown>;
|
|
92
66
|
stateKey?: string | undefined;
|
|
93
67
|
}[], eligible: boolean): void;
|
|
68
|
+
resetSequenceCount(calls: readonly {
|
|
69
|
+
name: string;
|
|
70
|
+
args: Record<string, unknown>;
|
|
71
|
+
stateKey?: string | undefined;
|
|
72
|
+
}[]): boolean;
|
|
73
|
+
resetSequenceCountBySignature(signature: string): boolean;
|
|
74
|
+
resetAllSequenceCounts(): void;
|
|
75
|
+
getSequenceRunCount(calls: readonly {
|
|
76
|
+
name: string;
|
|
77
|
+
args: Record<string, unknown>;
|
|
78
|
+
stateKey?: string | undefined;
|
|
79
|
+
}[]): number;
|
|
94
80
|
recordAttempt(step: number, name: string, args: Record<string, unknown>, ok: boolean, exitCode?: number | undefined, output?: string | undefined, context?: RetryContext | undefined): void;
|
|
95
81
|
private isPathMutatingTool;
|
|
96
|
-
/** Drop list/read signatures that touch paths a successful tool may have created. */
|
|
97
82
|
private invalidateReadsAfterSuccess;
|
|
98
|
-
/**
|
|
99
|
-
* Only blocks *failed* identical re-tries without changed context.
|
|
100
|
-
* Successful re-calls always pass through with no warning — no
|
|
101
|
-
* "already succeeded / use prior results" messaging.
|
|
102
|
-
*/
|
|
103
83
|
shouldBlock(name: string, args: Record<string, unknown>, retryContext?: RetryContext): LoopDecision;
|
|
104
84
|
getAttemptCount(name: string, args: Record<string, unknown>): number;
|
|
105
|
-
/**
|
|
106
|
-
* Check if recent calls show a pattern of repeated failures
|
|
107
|
-
* (e.g., command not found → retry → not found → ...).
|
|
108
|
-
*/
|
|
109
85
|
hasRepeatedFailures(threshold?: number): boolean;
|
|
110
|
-
/**
|
|
111
|
-
* Count consecutive failures trailing the most recent attempts.
|
|
112
|
-
* Stops at the first success (or the start of the history).
|
|
113
|
-
*/
|
|
114
86
|
consecutiveFailureCount(): number;
|
|
115
|
-
/**
|
|
116
|
-
* Returns a reflection prompt when recent failures suggest the agent may
|
|
117
|
-
* be stuck, or null if everything looks fine.
|
|
118
|
-
*/
|
|
119
87
|
getFailureReflection(): string | null;
|
|
120
|
-
/**
|
|
121
|
-
* Reset counters for read-only tools. Called after context compaction
|
|
122
|
-
* so the model can re-fetch data whose results were compacted away.
|
|
123
|
-
*/
|
|
124
88
|
resetReadOnly(): void;
|
|
125
89
|
get totalAttempts(): number;
|
|
126
90
|
}
|
package/dist/agent/loop-guard.js
CHANGED
|
@@ -1,11 +1,6 @@
|
|
|
1
1
|
import { slimToolArgs } from "./message-slim.js";
|
|
2
2
|
import { completedOperationObservationDigest, completedOperationSignature, } from "./outcomes.js";
|
|
3
|
-
/** Bound attempt history so long thrash turns cannot retain thousands of sigs. */
|
|
4
3
|
const MAX_ATTEMPT_HISTORY = 400;
|
|
5
|
-
/**
|
|
6
|
-
* Non-mutating tools that may legitimately need re-calling after context
|
|
7
|
-
* compaction removes their earlier results.
|
|
8
|
-
*/
|
|
9
4
|
const READ_ONLY_TOOLS = new Set([
|
|
10
5
|
"web.fetch",
|
|
11
6
|
"http.fetch",
|
|
@@ -22,6 +17,8 @@ const READ_ONLY_TOOLS = new Set([
|
|
|
22
17
|
"image.ocr",
|
|
23
18
|
"pdf.read",
|
|
24
19
|
]);
|
|
20
|
+
const SEQUENCE_WARN_THRESHOLD = 5;
|
|
21
|
+
const SEQUENCE_BLOCK_THRESHOLD = 10;
|
|
25
22
|
export class LoopGuard {
|
|
26
23
|
attempts = [];
|
|
27
24
|
signatureCount = new Map();
|
|
@@ -29,21 +26,11 @@ export class LoopGuard {
|
|
|
29
26
|
lastActionSequence;
|
|
30
27
|
lastActionSequenceEligible = false;
|
|
31
28
|
actionSequenceRepetitions = 0;
|
|
32
|
-
/**
|
|
33
|
-
* Bounded window of recently completed eligible sequences. Catches A→B→A
|
|
34
|
-
* oscillation that a single lastActionSequence slot misses: returning to a
|
|
35
|
-
* sequence after intervening different work is still a repeat.
|
|
36
|
-
*/
|
|
37
29
|
recentActionSequences = [];
|
|
38
30
|
static MAX_RECENT_SEQUENCES = 8;
|
|
39
|
-
/** Cumulative suppressions this turn, across distinct sequences. */
|
|
40
31
|
totalSequenceSuppressions = 0;
|
|
41
|
-
|
|
42
|
-
* A successful call with no body is not evidence that repeating the exact
|
|
43
|
-
* call can make progress. Keep only lightweight retry state, never output.
|
|
44
|
-
*/
|
|
32
|
+
sequenceRunCounts = new Map();
|
|
45
33
|
emptySuccessfulCalls = new Map();
|
|
46
|
-
/** Failed read-only signatures that already used their one free env-change retry. */
|
|
47
34
|
failedReadRetryUsed = new Set();
|
|
48
35
|
successfulProbes = new Map();
|
|
49
36
|
failedProbes = new Map();
|
|
@@ -67,23 +54,19 @@ export class LoopGuard {
|
|
|
67
54
|
});
|
|
68
55
|
}
|
|
69
56
|
}
|
|
70
|
-
/**
|
|
71
|
-
* Produce a canonical string for a (name, args) pair so that calls
|
|
72
|
-
* with identical semantics match even if arg order differs or
|
|
73
|
-
* command whitespace varies.
|
|
74
|
-
*
|
|
75
|
-
* Large string values (file contents) are fingerprinted — never kept
|
|
76
|
-
* verbatim — so writeMany scaffolds cannot pin multi-MB strings in Maps.
|
|
77
|
-
*/
|
|
78
57
|
canonicalize(name, args) {
|
|
79
58
|
const slimmed = slimToolArgs(args);
|
|
80
|
-
// Normalize shell command whitespace after slim (commands stay full when short).
|
|
81
59
|
if ((name === "shell.exec" || name === "shell.start") &&
|
|
82
60
|
typeof slimmed.command === "string") {
|
|
83
61
|
slimmed.command = slimmed.command.trim().replace(/\s+/g, " ");
|
|
84
62
|
}
|
|
85
63
|
return `${name}::${JSON.stringify(slimmed)}`;
|
|
86
64
|
}
|
|
65
|
+
sequenceSignature(calls) {
|
|
66
|
+
return calls
|
|
67
|
+
.map((call) => `${this.canonicalize(call.name, call.args)}::state=${call.stateKey ?? ""}`)
|
|
68
|
+
.join(" ");
|
|
69
|
+
}
|
|
87
70
|
observeActionSequence(calls) {
|
|
88
71
|
const none = {
|
|
89
72
|
suppress: false,
|
|
@@ -91,6 +74,7 @@ export class LoopGuard {
|
|
|
91
74
|
repetitions: 0,
|
|
92
75
|
totalSuppressions: this.totalSequenceSuppressions,
|
|
93
76
|
oscillation: false,
|
|
77
|
+
warn: false,
|
|
94
78
|
};
|
|
95
79
|
if (calls.length === 0) {
|
|
96
80
|
this.lastActionSequence = undefined;
|
|
@@ -98,51 +82,77 @@ export class LoopGuard {
|
|
|
98
82
|
this.actionSequenceRepetitions = 0;
|
|
99
83
|
return none;
|
|
100
84
|
}
|
|
101
|
-
const signature = calls
|
|
102
|
-
|
|
103
|
-
.join(" ");
|
|
85
|
+
const signature = this.sequenceSignature(calls);
|
|
86
|
+
const currentCount = this.sequenceRunCounts.get(signature) ?? 0;
|
|
104
87
|
if (signature !== this.lastActionSequence) {
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
88
|
+
const isOscillation = this.recentActionSequences.includes(signature);
|
|
89
|
+
this.lastActionSequence = signature;
|
|
90
|
+
this.lastActionSequenceEligible = false;
|
|
91
|
+
this.actionSequenceRepetitions = 0;
|
|
92
|
+
if (isOscillation && currentCount >= SEQUENCE_BLOCK_THRESHOLD) {
|
|
109
93
|
this.totalSequenceSuppressions += 1;
|
|
110
|
-
this.lastActionSequence = signature;
|
|
111
|
-
this.lastActionSequenceEligible = false;
|
|
112
|
-
this.actionSequenceRepetitions = 0;
|
|
113
94
|
return {
|
|
114
95
|
suppress: true,
|
|
115
96
|
terminal: this.totalSequenceSuppressions >= 4,
|
|
116
|
-
repetitions:
|
|
97
|
+
repetitions: currentCount,
|
|
117
98
|
totalSuppressions: this.totalSequenceSuppressions,
|
|
118
99
|
oscillation: true,
|
|
100
|
+
warn: false,
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
if (isOscillation && currentCount >= SEQUENCE_WARN_THRESHOLD) {
|
|
104
|
+
return {
|
|
105
|
+
suppress: false,
|
|
106
|
+
terminal: false,
|
|
107
|
+
repetitions: currentCount,
|
|
108
|
+
totalSuppressions: this.totalSequenceSuppressions,
|
|
109
|
+
oscillation: true,
|
|
110
|
+
warn: true,
|
|
111
|
+
warnMessage: `You have run this exact action sequence ${currentCount} times this session. ` +
|
|
112
|
+
"Make sure you are not stuck in a loop repeating the same command without making progress. " +
|
|
113
|
+
"If you are receiving output and genuinely iterating (e.g. testing after edits), call loop.reset to reset the counter and continue. " +
|
|
114
|
+
`Commands will be blocked after ${SEQUENCE_BLOCK_THRESHOLD} repetitions.`,
|
|
119
115
|
};
|
|
120
116
|
}
|
|
121
|
-
this.lastActionSequence = signature;
|
|
122
|
-
this.lastActionSequenceEligible = false;
|
|
123
|
-
this.actionSequenceRepetitions = 0;
|
|
124
117
|
return none;
|
|
125
118
|
}
|
|
126
119
|
if (!this.lastActionSequenceEligible) {
|
|
127
120
|
return none;
|
|
128
121
|
}
|
|
129
122
|
this.actionSequenceRepetitions += 1;
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
123
|
+
const totalReps = currentCount + 1;
|
|
124
|
+
if (totalReps >= SEQUENCE_BLOCK_THRESHOLD) {
|
|
125
|
+
this.totalSequenceSuppressions += 1;
|
|
126
|
+
return {
|
|
127
|
+
suppress: true,
|
|
128
|
+
terminal: this.actionSequenceRepetitions >= (calls.length > 1 ? 2 : 3) ||
|
|
129
|
+
this.totalSequenceSuppressions >= 4,
|
|
130
|
+
repetitions: this.actionSequenceRepetitions,
|
|
131
|
+
totalSuppressions: this.totalSequenceSuppressions,
|
|
132
|
+
oscillation: false,
|
|
133
|
+
warn: false,
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
if (totalReps >= SEQUENCE_WARN_THRESHOLD) {
|
|
137
|
+
return {
|
|
138
|
+
suppress: false,
|
|
139
|
+
terminal: false,
|
|
140
|
+
repetitions: this.actionSequenceRepetitions,
|
|
141
|
+
totalSuppressions: this.totalSequenceSuppressions,
|
|
142
|
+
oscillation: false,
|
|
143
|
+
warn: true,
|
|
144
|
+
warnMessage: `You have run this exact action sequence ${totalReps} times this session. ` +
|
|
145
|
+
"Make sure you are not stuck in a loop repeating the same command without making progress. " +
|
|
146
|
+
"If you are receiving output and genuinely iterating (e.g. testing after edits), call loop.reset to reset the counter and continue. " +
|
|
147
|
+
`Commands will be blocked after ${SEQUENCE_BLOCK_THRESHOLD} repetitions.`,
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
return none;
|
|
139
151
|
}
|
|
140
152
|
completeActionSequence(calls, eligible) {
|
|
141
153
|
if (calls.length === 0)
|
|
142
154
|
return;
|
|
143
|
-
const signature = calls
|
|
144
|
-
.map((call) => `${this.canonicalize(call.name, call.args)}::state=${call.stateKey ?? ""}`)
|
|
145
|
-
.join(" ");
|
|
155
|
+
const signature = this.sequenceSignature(calls);
|
|
146
156
|
if (signature !== this.lastActionSequence)
|
|
147
157
|
return;
|
|
148
158
|
this.lastActionSequenceEligible = eligible;
|
|
@@ -150,8 +160,7 @@ export class LoopGuard {
|
|
|
150
160
|
this.actionSequenceRepetitions = 0;
|
|
151
161
|
return;
|
|
152
162
|
}
|
|
153
|
-
|
|
154
|
-
// caught even after intervening different work (A→B→A oscillation).
|
|
163
|
+
this.sequenceRunCounts.set(signature, (this.sequenceRunCounts.get(signature) ?? 0) + 1);
|
|
155
164
|
const existing = this.recentActionSequences.indexOf(signature);
|
|
156
165
|
if (existing >= 0)
|
|
157
166
|
this.recentActionSequences.splice(existing, 1);
|
|
@@ -160,6 +169,35 @@ export class LoopGuard {
|
|
|
160
169
|
this.recentActionSequences.splice(0, this.recentActionSequences.length - LoopGuard.MAX_RECENT_SEQUENCES);
|
|
161
170
|
}
|
|
162
171
|
}
|
|
172
|
+
resetSequenceCount(calls) {
|
|
173
|
+
if (calls.length === 0)
|
|
174
|
+
return false;
|
|
175
|
+
const signature = this.sequenceSignature(calls);
|
|
176
|
+
return this.resetSequenceCountBySignature(signature);
|
|
177
|
+
}
|
|
178
|
+
resetSequenceCountBySignature(signature) {
|
|
179
|
+
if (!this.sequenceRunCounts.has(signature))
|
|
180
|
+
return false;
|
|
181
|
+
this.sequenceRunCounts.delete(signature);
|
|
182
|
+
const idx = this.recentActionSequences.indexOf(signature);
|
|
183
|
+
if (idx >= 0)
|
|
184
|
+
this.recentActionSequences.splice(idx, 1);
|
|
185
|
+
this.actionSequenceRepetitions = 0;
|
|
186
|
+
return true;
|
|
187
|
+
}
|
|
188
|
+
resetAllSequenceCounts() {
|
|
189
|
+
this.sequenceRunCounts.clear();
|
|
190
|
+
this.recentActionSequences.length = 0;
|
|
191
|
+
this.actionSequenceRepetitions = 0;
|
|
192
|
+
this.totalSequenceSuppressions = 0;
|
|
193
|
+
this.lastActionSequence = undefined;
|
|
194
|
+
this.lastActionSequenceEligible = false;
|
|
195
|
+
}
|
|
196
|
+
getSequenceRunCount(calls) {
|
|
197
|
+
if (calls.length === 0)
|
|
198
|
+
return 0;
|
|
199
|
+
return this.sequenceRunCounts.get(this.sequenceSignature(calls)) ?? 0;
|
|
200
|
+
}
|
|
163
201
|
recordAttempt(step, name, args, ok, exitCode, output, context) {
|
|
164
202
|
const sig = this.canonicalize(name, args);
|
|
165
203
|
this.attempts.push({
|
|
@@ -234,7 +272,6 @@ export class LoopGuard {
|
|
|
234
272
|
name === "shell.exec" ||
|
|
235
273
|
name === "shell.start");
|
|
236
274
|
}
|
|
237
|
-
/** Drop list/read signatures that touch paths a successful tool may have created. */
|
|
238
275
|
invalidateReadsAfterSuccess(name, args) {
|
|
239
276
|
const paths = [];
|
|
240
277
|
if (typeof args.path === "string")
|
|
@@ -270,11 +307,6 @@ export class LoopGuard {
|
|
|
270
307
|
}
|
|
271
308
|
}
|
|
272
309
|
}
|
|
273
|
-
/**
|
|
274
|
-
* Only blocks *failed* identical re-tries without changed context.
|
|
275
|
-
* Successful re-calls always pass through with no warning — no
|
|
276
|
-
* "already succeeded / use prior results" messaging.
|
|
277
|
-
*/
|
|
278
310
|
shouldBlock(name, args, retryContext) {
|
|
279
311
|
if (name === "task.update" || name === "plan.create") {
|
|
280
312
|
return { block: false };
|
|
@@ -282,10 +314,6 @@ export class LoopGuard {
|
|
|
282
314
|
const sig = this.canonicalize(name, args);
|
|
283
315
|
const emptySuccess = this.emptySuccessfulCalls.get(sig);
|
|
284
316
|
if (emptySuccess) {
|
|
285
|
-
// A probe that reports its own live state is authoritative about whether
|
|
286
|
-
// re-reading can reveal anything new. Unrelated work finishing in between
|
|
287
|
-
// must not re-authorize it, or a poll interleaved with real actions
|
|
288
|
-
// repeats forever.
|
|
289
317
|
if (retryContext?.stateKey !== undefined &&
|
|
290
318
|
retryContext.stateKey !== emptySuccess.stateKey) {
|
|
291
319
|
return { block: false };
|
|
@@ -378,8 +406,6 @@ export class LoopGuard {
|
|
|
378
406
|
if (this.signatureSuccess.get(sig) !== false) {
|
|
379
407
|
return { block: false };
|
|
380
408
|
}
|
|
381
|
-
// Previously-failed signature: allow structured retry, or one free retry
|
|
382
|
-
// for read-only tools after environment-changing successful work.
|
|
383
409
|
const structuredReason = retryContext?.retryReason;
|
|
384
410
|
const authorized = retryContext?.dependenciesChanged === true ||
|
|
385
411
|
retryContext?.environmentChanged === true ||
|
|
@@ -409,20 +435,12 @@ export class LoopGuard {
|
|
|
409
435
|
const sig = this.canonicalize(name, args);
|
|
410
436
|
return this.signatureCount.get(sig) ?? 0;
|
|
411
437
|
}
|
|
412
|
-
/**
|
|
413
|
-
* Check if recent calls show a pattern of repeated failures
|
|
414
|
-
* (e.g., command not found → retry → not found → ...).
|
|
415
|
-
*/
|
|
416
438
|
hasRepeatedFailures(threshold = 3) {
|
|
417
439
|
if (this.attempts.length < threshold)
|
|
418
440
|
return false;
|
|
419
441
|
const recent = this.attempts.slice(-threshold);
|
|
420
442
|
return recent.every((a) => !a.ok);
|
|
421
443
|
}
|
|
422
|
-
/**
|
|
423
|
-
* Count consecutive failures trailing the most recent attempts.
|
|
424
|
-
* Stops at the first success (or the start of the history).
|
|
425
|
-
*/
|
|
426
444
|
consecutiveFailureCount() {
|
|
427
445
|
let count = 0;
|
|
428
446
|
for (let i = this.attempts.length - 1; i >= 0; i--) {
|
|
@@ -433,10 +451,6 @@ export class LoopGuard {
|
|
|
433
451
|
}
|
|
434
452
|
return count;
|
|
435
453
|
}
|
|
436
|
-
/**
|
|
437
|
-
* Returns a reflection prompt when recent failures suggest the agent may
|
|
438
|
-
* be stuck, or null if everything looks fine.
|
|
439
|
-
*/
|
|
440
454
|
getFailureReflection() {
|
|
441
455
|
const consecutiveFailures = this.consecutiveFailureCount();
|
|
442
456
|
if (consecutiveFailures < 3)
|
|
@@ -464,10 +478,6 @@ DECIDE one of:
|
|
|
464
478
|
|
|
465
479
|
Do NOT keep trying variations of the same failing approach without explicitly deciding to SWITCH or STOP first.`;
|
|
466
480
|
}
|
|
467
|
-
/**
|
|
468
|
-
* Reset counters for read-only tools. Called after context compaction
|
|
469
|
-
* so the model can re-fetch data whose results were compacted away.
|
|
470
|
-
*/
|
|
471
481
|
resetReadOnly() {
|
|
472
482
|
for (const sig of [...this.signatureCount.keys()]) {
|
|
473
483
|
const name = sig.split("::")[0] ?? "";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loop-guard.js","sourceRoot":"","sources":["../../src/agent/loop-guard.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"loop-guard.js","sourceRoot":"","sources":["../../src/agent/loop-guard.ts"],"names":[],"mappings":"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"}
|
package/dist/agent/runner.js
CHANGED
|
@@ -1396,6 +1396,14 @@ export async function runAgentTurn(prompt, options = {}) {
|
|
|
1396
1396
|
contextOutput: reason,
|
|
1397
1397
|
};
|
|
1398
1398
|
}
|
|
1399
|
+
if (call.name === "loop.reset") {
|
|
1400
|
+
loopGuard.resetAllSequenceCounts();
|
|
1401
|
+
const output = "Loop guard counters reset. You may re-run commands freely.";
|
|
1402
|
+
const result = { ok: true, output, exitCode: 0 };
|
|
1403
|
+
emitVisibleSyntheticReceipt(result, output);
|
|
1404
|
+
loopGuard.recordAttempt(step, call.name, call.args, true, 0, output);
|
|
1405
|
+
return { ok: true, call, result, contextOutput: output };
|
|
1406
|
+
}
|
|
1399
1407
|
if (call.name === "plan.create" ||
|
|
1400
1408
|
call.name === "task.add" ||
|
|
1401
1409
|
call.name === "task.move" ||
|
|
@@ -4333,6 +4341,10 @@ export async function runAgentTurn(prompt, options = {}) {
|
|
|
4333
4341
|
: " Reassess the evidence and select the next action yourself; do not replay completed work.")));
|
|
4334
4342
|
continue;
|
|
4335
4343
|
}
|
|
4344
|
+
if (sequenceDecision.warn && sequenceDecision.warnMessage) {
|
|
4345
|
+
writeNotice("warn", sequenceDecision.warnMessage, chalk.yellow(` ⚠ ${sequenceDecision.warnMessage}\n`));
|
|
4346
|
+
messages.push(recoveryUserMessage(sequenceDecision.warnMessage));
|
|
4347
|
+
}
|
|
4336
4348
|
// Notice BEFORE tool cards so the transcript reads:
|
|
4337
4349
|
// thinking → response → "N tool calls…" → tool cards (not tools then info).
|
|
4338
4350
|
if (allCalls.length > 1) {
|