@simonepri/refined-antigravity-acp 1.2.3 → 1.2.4
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/src/fixes/dropped-history-chunks/index.d.ts +1 -0
- package/dist/src/fixes/dropped-history-chunks/index.d.ts.map +1 -1
- package/dist/src/fixes/dropped-history-chunks/index.js +42 -32
- package/dist/src/fixes/dropped-history-chunks/index.js.map +1 -1
- package/dist/src/fixes/premature-turn-stop/index.d.ts +34 -9
- package/dist/src/fixes/premature-turn-stop/index.d.ts.map +1 -1
- package/dist/src/fixes/premature-turn-stop/index.js +212 -9
- package/dist/src/fixes/premature-turn-stop/index.js.map +1 -1
- package/dist/src/fixes/repetitive-tool-loop/index.d.ts +3 -0
- package/dist/src/fixes/repetitive-tool-loop/index.d.ts.map +1 -1
- package/dist/src/fixes/repetitive-tool-loop/index.js +95 -9
- package/dist/src/fixes/repetitive-tool-loop/index.js.map +1 -1
- package/package.json +1 -1
- package/readme.md +2 -2
|
@@ -27,6 +27,7 @@ export type ConversationStep = {
|
|
|
27
27
|
};
|
|
28
28
|
export { STEP_TYPE_USER, STEP_TYPE_AGENT };
|
|
29
29
|
export declare function utf8(bytes: Uint8Array | null): string;
|
|
30
|
+
export declare function isInternalProxyPrompt(text: string): boolean;
|
|
30
31
|
export declare function decodeStep(stepType: number, payload: Uint8Array, idx: number, timestamp?: string): ConversationStep[];
|
|
31
32
|
export declare function conversationDbPath(sessionId: string, customDbPath?: string): string;
|
|
32
33
|
export declare function readConversationSteps(sessionId: string, customDbPath?: string): ConversationStep[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/fixes/dropped-history-chunks/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,EAEL,eAAe,EAGf,KAAK,gBAAgB,EACrB,KAAK,MAAM,EAGZ,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAEL,cAAc,EACd,eAAe,EAChB,MAAM,kCAAkC,CAAC;AAK1C,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAE/D,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAC;AAQlC,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,UAAU,GAAG,MAAM,GAAG,SAAS,CAgBxE;AAED,MAAM,MAAM,gBAAgB,GACxB;IACE,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CAAC;IAChD,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACzC,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACzC,CAAC;AAEN,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,CAAC;AAE3C,wBAAgB,IAAI,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI,GAAG,MAAM,CAErD;AAED,wBAAgB,UAAU,CACxB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,UAAU,EACnB,GAAG,EAAE,MAAM,EACX,SAAS,CAAC,EAAE,MAAM,GACjB,gBAAgB,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/fixes/dropped-history-chunks/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -41,39 +41,49 @@ export { STEP_TYPE_USER, STEP_TYPE_AGENT };
|
|
|
41
41
|
export function utf8(bytes) {
|
|
42
42
|
return bytes && bytes.length > 0 ? Buffer.from(bytes).toString("utf-8") : "";
|
|
43
43
|
}
|
|
44
|
-
export function
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
return
|
|
51
|
-
|
|
52
|
-
if (
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
44
|
+
export function isInternalProxyPrompt(text) {
|
|
45
|
+
return /^\s*\[Automated\s+[^\]]+\]:/i.test(text);
|
|
46
|
+
}
|
|
47
|
+
function decodeUserStep(payload, idx, timestamp) {
|
|
48
|
+
const f19 = getField(payload, 19);
|
|
49
|
+
if (!f19)
|
|
50
|
+
return [];
|
|
51
|
+
const raw = utf8(getField(f19, 2));
|
|
52
|
+
if (isInternalProxyPrompt(raw))
|
|
53
|
+
return [];
|
|
54
|
+
const text = stripSystemContext(stripSteeringPrefix(raw)).trim();
|
|
55
|
+
return text ? [{ kind: "user", idx, text, timestamp }] : [];
|
|
56
|
+
}
|
|
57
|
+
function decodeAgentStep(payload, idx, timestamp) {
|
|
58
|
+
const f20 = getField(payload, 20);
|
|
59
|
+
if (!f20)
|
|
60
|
+
return [];
|
|
61
|
+
const steps = [];
|
|
62
|
+
const thought = utf8(getField(f20, 3)).trim();
|
|
63
|
+
if (thought)
|
|
64
|
+
steps.push({ kind: "thought", idx, text: thought, timestamp });
|
|
65
|
+
const text = sanitizeText(utf8(getField(f20, 1)));
|
|
66
|
+
if (text)
|
|
67
|
+
steps.push({ kind: "assistant", idx, text, timestamp });
|
|
68
|
+
const call = getField(f20, 7);
|
|
69
|
+
const callId = call ? utf8(getField(call, 1)) : "";
|
|
70
|
+
if (callId) {
|
|
71
|
+
steps.push({
|
|
72
|
+
kind: "tool_call",
|
|
73
|
+
idx,
|
|
74
|
+
callId,
|
|
75
|
+
name: utf8(getField(call, 2)),
|
|
76
|
+
rawInputJson: utf8(getField(call, 3)),
|
|
77
|
+
timestamp,
|
|
78
|
+
});
|
|
76
79
|
}
|
|
80
|
+
return steps;
|
|
81
|
+
}
|
|
82
|
+
export function decodeStep(stepType, payload, idx, timestamp) {
|
|
83
|
+
if (stepType === STEP_TYPE_USER)
|
|
84
|
+
return decodeUserStep(payload, idx, timestamp);
|
|
85
|
+
if (stepType === STEP_TYPE_AGENT)
|
|
86
|
+
return decodeAgentStep(payload, idx, timestamp);
|
|
77
87
|
return [];
|
|
78
88
|
}
|
|
79
89
|
export function conversationDbPath(sessionId, customDbPath) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/fixes/dropped-history-chunks/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EACL,WAAW,EACX,eAAe,EACf,gBAAgB,EAChB,QAAQ,GAKT,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EACL,qBAAqB,EACrB,cAAc,EACd,eAAe,GAChB,MAAM,kCAAkC,CAAC;AAE1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAE/D,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAC;AAQlC,MAAM,UAAU,gBAAgB,CAAC,OAAmB;IAClD,MAAM,EAAE,GAAG,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,IAAI,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC;IACjE,IAAI,CAAC,EAAE;QAAE,OAAO,SAAS,CAAC;IAC1B,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,OAAO,MAAM,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC;QAC1B,MAAM,CAAC,GAAG,EAAE,UAAU,CAAC,GAAG,YAAY,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QACnD,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,GAAG,YAAY,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;QACrD,MAAM,GAAG,QAAQ,CAAC;QAClB,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;YAAE,OAAO,GAAG,GAAG,CAAC;aAC7B,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;YAAE,KAAK,GAAG,GAAG,CAAC;IACvC,CAAC;IACD,OAAO,OAAO;QACZ,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,WAAW,EAAE;QACxE,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC;AAkBD,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,CAAC;AAE3C,MAAM,UAAU,IAAI,CAAC,KAAwB;IAC3C,OAAO,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAC/E,CAAC;AAED,MAAM,UAAU,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/fixes/dropped-history-chunks/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,16 +1,41 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Problem:
|
|
3
|
-
* When upstream Antigravity executes tool calls
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
3
|
+
* When upstream Antigravity executes tool calls and halts with an empty completion (stopReason=16,
|
|
4
|
+
* no text and no tool call), upstream completes the prompt turn with a successful result without
|
|
5
|
+
* emitting any `agent_message_chunk`. Editor clients (Paseo, Zed) transition the session to idle,
|
|
6
|
+
* leaving the user with zero explanation and an apparent hang, forcing the user to manually ask
|
|
7
|
+
* "You stopped, status report and next steps?".
|
|
7
8
|
*
|
|
8
9
|
* Solution:
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
10
|
+
* In addition to baseline system prompt steering, intercepts empty `endTurn` completions following
|
|
11
|
+
* tool execution at runtime. Automatically dispatches an automated continuation prompt upstream
|
|
12
|
+
* directing the model to summarize its progress and continue executing the task to completion,
|
|
13
|
+
* without synthesizing artificial assistant prose in the proxy.
|
|
12
14
|
*/
|
|
13
|
-
import type
|
|
14
|
-
export
|
|
15
|
+
import { type AcpFix } from "../../core/types.js";
|
|
16
|
+
export interface PrematureTurnStopOptions {
|
|
17
|
+
maxContinuations?: number;
|
|
18
|
+
}
|
|
19
|
+
export declare class PrematureTurnStopTracker {
|
|
20
|
+
private readonly sessions;
|
|
21
|
+
private readonly promptIdToSessionId;
|
|
22
|
+
private getOrCreate;
|
|
23
|
+
startTurn(sessionId: string, promptId?: string | number | null): void;
|
|
24
|
+
getSessionIdForPrompt(promptId: string | number): string | undefined;
|
|
25
|
+
recordToolCall(sessionId: string): void;
|
|
26
|
+
recordAssistantText(sessionId: string, length: number): void;
|
|
27
|
+
isPrematureStop(sessionId: string, promptId: string | number | null | undefined, maxContinuations: number): boolean;
|
|
28
|
+
getToolCallCount(sessionId: string): number;
|
|
29
|
+
getContinuationCount(sessionId: string): number;
|
|
30
|
+
incrementContinuationCount(sessionId: string): void;
|
|
31
|
+
getContinuationPromptId(sessionId: string): string | number | undefined;
|
|
32
|
+
setContinuationPromptId(sessionId: string, promptId: string | number): void;
|
|
33
|
+
clearContinuationPrompt(sessionId: string): void;
|
|
34
|
+
getActivePromptId(sessionId: string): string | number | null | undefined;
|
|
35
|
+
clearSession(sessionId: string): void;
|
|
36
|
+
clear(): void;
|
|
37
|
+
}
|
|
38
|
+
export declare function buildContinuationText(toolCallCount: number): string;
|
|
39
|
+
export declare function createPrematureTurnStopFix(options?: PrematureTurnStopOptions): AcpFix;
|
|
15
40
|
export declare const prematureTurnStopFix: AcpFix;
|
|
16
41
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/fixes/premature-turn-stop/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/fixes/premature-turn-stop/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAKL,KAAK,MAAM,EAKZ,MAAM,qBAAqB,CAAC;AAG7B,MAAM,WAAW,wBAAwB;IACvC,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAUD,qBAAa,wBAAwB;IACnC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAuC;IAChE,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAsC;IAE1E,OAAO,CAAC,WAAW;IAanB,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,IAAI;IAYrE,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS;IAIpE,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAKvC,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAK5D,eAAe,CACb,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,EAC5C,gBAAgB,EAAE,MAAM,GACvB,OAAO;IAaV,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAI3C,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAI/C,0BAA0B,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAKnD,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS;IAIvE,uBAAuB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAQ3E,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAUhD,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS;IAIxE,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAarC,KAAK,IAAI,IAAI;CAId;AAED,wBAAgB,qBAAqB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAKnE;AAyGD,wBAAgB,0BAA0B,CAAC,OAAO,GAAE,wBAA6B,GAAG,MAAM,CA2CzF;AAED,eAAO,MAAM,oBAAoB,QAA+B,CAAC"}
|
|
@@ -1,25 +1,228 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Problem:
|
|
3
|
-
* When upstream Antigravity executes tool calls
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
3
|
+
* When upstream Antigravity executes tool calls and halts with an empty completion (stopReason=16,
|
|
4
|
+
* no text and no tool call), upstream completes the prompt turn with a successful result without
|
|
5
|
+
* emitting any `agent_message_chunk`. Editor clients (Paseo, Zed) transition the session to idle,
|
|
6
|
+
* leaving the user with zero explanation and an apparent hang, forcing the user to manually ask
|
|
7
|
+
* "You stopped, status report and next steps?".
|
|
7
8
|
*
|
|
8
9
|
* Solution:
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
10
|
+
* In addition to baseline system prompt steering, intercepts empty `endTurn` completions following
|
|
11
|
+
* tool execution at runtime. Automatically dispatches an automated continuation prompt upstream
|
|
12
|
+
* directing the model to summarize its progress and continue executing the task to completion,
|
|
13
|
+
* without synthesizing artificial assistant prose in the proxy.
|
|
12
14
|
*/
|
|
13
|
-
|
|
15
|
+
import { ACP_METHODS, SESSION_UPDATES, STOP_REASONS, isMethod, } from "../../core/types.js";
|
|
16
|
+
import { extractSessionId } from "../../core/session-cache.js";
|
|
17
|
+
export class PrematureTurnStopTracker {
|
|
18
|
+
sessions = new Map();
|
|
19
|
+
promptIdToSessionId = new Map();
|
|
20
|
+
getOrCreate(sessionId) {
|
|
21
|
+
let state = this.sessions.get(sessionId);
|
|
22
|
+
if (!state) {
|
|
23
|
+
state = {
|
|
24
|
+
toolCallCount: 0,
|
|
25
|
+
assistantTextLength: 0,
|
|
26
|
+
continuationCount: 0,
|
|
27
|
+
};
|
|
28
|
+
this.sessions.set(sessionId, state);
|
|
29
|
+
}
|
|
30
|
+
return state;
|
|
31
|
+
}
|
|
32
|
+
startTurn(sessionId, promptId) {
|
|
33
|
+
const state = this.getOrCreate(sessionId);
|
|
34
|
+
state.activePromptId = promptId;
|
|
35
|
+
state.toolCallCount = 0;
|
|
36
|
+
state.assistantTextLength = 0;
|
|
37
|
+
state.continuationCount = 0;
|
|
38
|
+
state.continuationPromptId = undefined;
|
|
39
|
+
if (promptId !== undefined && promptId !== null) {
|
|
40
|
+
this.promptIdToSessionId.set(promptId, sessionId);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
getSessionIdForPrompt(promptId) {
|
|
44
|
+
return this.promptIdToSessionId.get(promptId);
|
|
45
|
+
}
|
|
46
|
+
recordToolCall(sessionId) {
|
|
47
|
+
const state = this.getOrCreate(sessionId);
|
|
48
|
+
state.toolCallCount++;
|
|
49
|
+
}
|
|
50
|
+
recordAssistantText(sessionId, length) {
|
|
51
|
+
const state = this.getOrCreate(sessionId);
|
|
52
|
+
state.assistantTextLength += length;
|
|
53
|
+
}
|
|
54
|
+
isPrematureStop(sessionId, promptId, maxContinuations) {
|
|
55
|
+
const state = this.sessions.get(sessionId);
|
|
56
|
+
if (!state)
|
|
57
|
+
return false;
|
|
58
|
+
const isMatchingPrompt = state.activePromptId === promptId || state.continuationPromptId === promptId;
|
|
59
|
+
return (isMatchingPrompt &&
|
|
60
|
+
state.toolCallCount > 0 &&
|
|
61
|
+
state.assistantTextLength === 0 &&
|
|
62
|
+
state.continuationCount < maxContinuations);
|
|
63
|
+
}
|
|
64
|
+
getToolCallCount(sessionId) {
|
|
65
|
+
return this.sessions.get(sessionId)?.toolCallCount ?? 0;
|
|
66
|
+
}
|
|
67
|
+
getContinuationCount(sessionId) {
|
|
68
|
+
return this.sessions.get(sessionId)?.continuationCount ?? 0;
|
|
69
|
+
}
|
|
70
|
+
incrementContinuationCount(sessionId) {
|
|
71
|
+
const s = this.sessions.get(sessionId);
|
|
72
|
+
if (s)
|
|
73
|
+
s.continuationCount++;
|
|
74
|
+
}
|
|
75
|
+
getContinuationPromptId(sessionId) {
|
|
76
|
+
return this.sessions.get(sessionId)?.continuationPromptId;
|
|
77
|
+
}
|
|
78
|
+
setContinuationPromptId(sessionId, promptId) {
|
|
79
|
+
const s = this.sessions.get(sessionId);
|
|
80
|
+
if (s) {
|
|
81
|
+
s.continuationPromptId = promptId;
|
|
82
|
+
this.promptIdToSessionId.set(promptId, sessionId);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
clearContinuationPrompt(sessionId) {
|
|
86
|
+
const s = this.sessions.get(sessionId);
|
|
87
|
+
if (s) {
|
|
88
|
+
if (s.continuationPromptId !== undefined) {
|
|
89
|
+
this.promptIdToSessionId.delete(s.continuationPromptId);
|
|
90
|
+
}
|
|
91
|
+
s.continuationPromptId = undefined;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
getActivePromptId(sessionId) {
|
|
95
|
+
return this.sessions.get(sessionId)?.activePromptId;
|
|
96
|
+
}
|
|
97
|
+
clearSession(sessionId) {
|
|
98
|
+
const s = this.sessions.get(sessionId);
|
|
99
|
+
if (s) {
|
|
100
|
+
if (s.activePromptId !== undefined && s.activePromptId !== null) {
|
|
101
|
+
this.promptIdToSessionId.delete(s.activePromptId);
|
|
102
|
+
}
|
|
103
|
+
if (s.continuationPromptId !== undefined) {
|
|
104
|
+
this.promptIdToSessionId.delete(s.continuationPromptId);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
this.sessions.delete(sessionId);
|
|
108
|
+
}
|
|
109
|
+
clear() {
|
|
110
|
+
this.sessions.clear();
|
|
111
|
+
this.promptIdToSessionId.clear();
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
export function buildContinuationText(toolCallCount) {
|
|
115
|
+
return (`[Automated Continuation]: You executed ${toolCallCount} tool calls but stopped without providing a status report or proceeding with the task. ` +
|
|
116
|
+
`Please summarize what you have accomplished, evaluate the current state, and continue executing the next steps to complete the task.`);
|
|
117
|
+
}
|
|
118
|
+
async function dispatchContinuationPrompt(sessionId, tracker, context) {
|
|
119
|
+
tracker.incrementContinuationCount(sessionId);
|
|
120
|
+
const toolCallCount = tracker.getToolCallCount(sessionId);
|
|
121
|
+
const continuationText = buildContinuationText(toolCallCount);
|
|
122
|
+
const continuationPromptId = `continue_${sessionId}_${Date.now()}`;
|
|
123
|
+
tracker.setContinuationPromptId(sessionId, continuationPromptId);
|
|
124
|
+
try {
|
|
125
|
+
await context.writeToChild({
|
|
126
|
+
jsonrpc: "2.0",
|
|
127
|
+
id: continuationPromptId,
|
|
128
|
+
method: ACP_METHODS.SESSION_PROMPT,
|
|
129
|
+
params: {
|
|
130
|
+
sessionId,
|
|
131
|
+
prompt: [{ type: "text", text: continuationText }],
|
|
132
|
+
},
|
|
133
|
+
});
|
|
134
|
+
return true;
|
|
135
|
+
}
|
|
136
|
+
catch (err) {
|
|
137
|
+
console.error(`[refined-antigravity-acp] Failed to send automated continuation prompt:`, err);
|
|
138
|
+
return false;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
function resolveSessionId(msg, tracker) {
|
|
142
|
+
const fromMsg = extractSessionId(msg);
|
|
143
|
+
if (fromMsg)
|
|
144
|
+
return fromMsg;
|
|
145
|
+
const id = msg.id;
|
|
146
|
+
return id !== null && id !== undefined ? tracker.getSessionIdForPrompt(id) : undefined;
|
|
147
|
+
}
|
|
148
|
+
function handleInboundUpdate(msg, sessionId, tracker) {
|
|
149
|
+
const update = "params" in msg ? msg.params?.update : undefined;
|
|
150
|
+
if (!update)
|
|
151
|
+
return;
|
|
152
|
+
if (update.sessionUpdate === SESSION_UPDATES.TOOL_CALL) {
|
|
153
|
+
tracker.recordToolCall(sessionId);
|
|
154
|
+
}
|
|
155
|
+
else if (update.sessionUpdate === SESSION_UPDATES.AGENT_MESSAGE_CHUNK) {
|
|
156
|
+
const text = update?.content?.text;
|
|
157
|
+
if (typeof text === "string" && text.length > 0) {
|
|
158
|
+
tracker.recordAssistantText(sessionId, text.length);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
function handleContinuationResponse(msg, promptId, sessionId, tracker) {
|
|
163
|
+
const continuationPromptId = tracker.getContinuationPromptId(sessionId);
|
|
164
|
+
if (continuationPromptId !== undefined && promptId === continuationPromptId) {
|
|
165
|
+
const originalPromptId = tracker.getActivePromptId(sessionId);
|
|
166
|
+
tracker.clearContinuationPrompt(sessionId);
|
|
167
|
+
return [{ ...msg, id: originalPromptId ?? null }];
|
|
168
|
+
}
|
|
169
|
+
return null;
|
|
170
|
+
}
|
|
171
|
+
async function handlePromptResult(msg, sessionId, tracker, context, options) {
|
|
172
|
+
if (!("result" in msg))
|
|
173
|
+
return null;
|
|
174
|
+
const promptId = msg.id;
|
|
175
|
+
const res = msg.result;
|
|
176
|
+
const stopReason = res?.stopReason;
|
|
177
|
+
if (stopReason === STOP_REASONS.CANCELLED) {
|
|
178
|
+
tracker.clearSession(sessionId);
|
|
179
|
+
return null;
|
|
180
|
+
}
|
|
181
|
+
const maxContinuations = options.maxContinuations ?? 2;
|
|
182
|
+
if (stopReason === STOP_REASONS.END_TURN &&
|
|
183
|
+
tracker.isPrematureStop(sessionId, promptId, maxContinuations)) {
|
|
184
|
+
const dispatched = await dispatchContinuationPrompt(sessionId, tracker, context);
|
|
185
|
+
if (dispatched)
|
|
186
|
+
return [];
|
|
187
|
+
}
|
|
188
|
+
return handleContinuationResponse(msg, promptId, sessionId, tracker);
|
|
189
|
+
}
|
|
190
|
+
export function createPrematureTurnStopFix(options = {}) {
|
|
191
|
+
const tracker = new PrematureTurnStopTracker();
|
|
14
192
|
return {
|
|
15
193
|
name: "premature-turn-stop",
|
|
16
|
-
description: "Steers model
|
|
194
|
+
description: "Steers model and intercepts premature empty turn stops without assistant messages to continue e2e execution",
|
|
17
195
|
getSystemInstructions() {
|
|
18
196
|
return [
|
|
19
197
|
"Never end a prompt turn without emitting a clear assistant text message summarizing completed actions, current status, or next steps.",
|
|
20
198
|
"When executing commit commands, linter checks, or tests that encounter errors, explicitly explain the failures to the user before attempting further autonomous repairs.",
|
|
21
199
|
];
|
|
22
200
|
},
|
|
201
|
+
onOutbound(msg, _context) {
|
|
202
|
+
const sessionId = extractSessionId(msg);
|
|
203
|
+
if (!sessionId)
|
|
204
|
+
return msg;
|
|
205
|
+
if (isMethod(msg, ACP_METHODS.SESSION_PROMPT)) {
|
|
206
|
+
const promptId = msg.id;
|
|
207
|
+
tracker.startTurn(sessionId, promptId);
|
|
208
|
+
}
|
|
209
|
+
else if (isMethod(msg, ACP_METHODS.SESSION_CANCEL)) {
|
|
210
|
+
tracker.clearSession(sessionId);
|
|
211
|
+
}
|
|
212
|
+
return msg;
|
|
213
|
+
},
|
|
214
|
+
async onInbound(msg, context) {
|
|
215
|
+
const sessionId = resolveSessionId(msg, tracker);
|
|
216
|
+
if (!sessionId)
|
|
217
|
+
return [msg];
|
|
218
|
+
if (isMethod(msg, ACP_METHODS.SESSION_UPDATE)) {
|
|
219
|
+
handleInboundUpdate(msg, sessionId, tracker);
|
|
220
|
+
}
|
|
221
|
+
const promptHandled = await handlePromptResult(msg, sessionId, tracker, context, options);
|
|
222
|
+
if (promptHandled)
|
|
223
|
+
return promptHandled;
|
|
224
|
+
return [msg];
|
|
225
|
+
},
|
|
23
226
|
};
|
|
24
227
|
}
|
|
25
228
|
export const prematureTurnStopFix = createPrematureTurnStopFix();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/fixes/premature-turn-stop/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/fixes/premature-turn-stop/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -31,6 +31,7 @@ export declare function normalizeKey(key: string): string;
|
|
|
31
31
|
export declare function canonicalizeValue(val: unknown): unknown;
|
|
32
32
|
export declare function inferToolNameFromUpdate(title?: string | null, kind?: string | null, rawInput?: unknown): string;
|
|
33
33
|
export declare function computeToolCallSignature(toolName: string, rawInput: unknown): string;
|
|
34
|
+
export declare function extractTargetResource(rawInput: unknown): string | undefined;
|
|
34
35
|
export interface CycleDetectionResult {
|
|
35
36
|
isLoop: boolean;
|
|
36
37
|
cycleLength: number;
|
|
@@ -59,12 +60,14 @@ export declare class RepetitiveToolLoopTracker {
|
|
|
59
60
|
incrementSteerCount(sessionId: string): void;
|
|
60
61
|
getLastToolName(sessionId: string): string | undefined;
|
|
61
62
|
getLastLoopResult(sessionId: string): CycleDetectionResult | undefined;
|
|
63
|
+
getLastTargetResource(sessionId: string): string | undefined;
|
|
62
64
|
resetSignaturesForSteering(sessionId: string): void;
|
|
63
65
|
getActivePromptId(sessionId: string): string | number | null | undefined;
|
|
64
66
|
hasPollingIntent(sessionId: string): boolean;
|
|
65
67
|
clearSession(sessionId: string): void;
|
|
66
68
|
clear(): void;
|
|
67
69
|
}
|
|
70
|
+
export declare function buildSteeringText(toolName: string, targetResource: string | undefined, repetitions: number, steerCount: number): string;
|
|
68
71
|
export declare function createRepetitiveToolLoopFix(options?: RepetitiveToolLoopOptions): AcpFix;
|
|
69
72
|
export declare const repetitiveToolLoopFix: AcpFix;
|
|
70
73
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/fixes/repetitive-tool-loop/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAKL,KAAK,MAAM,EACX,KAAK,gBAAgB,EAItB,MAAM,qBAAqB,CAAC;AAG7B,eAAO,MAAM,qBAAqB,aAAwD,CAAC;AAE3F,eAAO,MAAM,eAAe,aAO1B,CAAC;AAEH,eAAO,MAAM,sBAAsB,QAC2G,CAAC;AAE/I,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,gBAAgB,GAAG,MAAM,CAQ/D;AAED,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAE5D;AAED,wBAAgB,0BAA0B,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAOjF;AAED,MAAM,WAAW,yBAAyB;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAcvD;AAED,wBAAgB,uBAAuB,CACrC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,EACrB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,EACpB,QAAQ,CAAC,EAAE,OAAO,GACjB,MAAM,CAcR;AAED,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,MAAM,CAWpF;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,OAAO,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AA4BD,wBAAgB,WAAW,CACzB,UAAU,EAAE,SAAS,MAAM,EAAE,EAC7B,OAAO,GAAE;IACP,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,cAAc,CAAC,EAAE,MAAM,CAAC;CACpB,GACL,oBAAoB,CA6BtB;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/fixes/repetitive-tool-loop/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -99,6 +99,42 @@ export function computeToolCallSignature(toolName, rawInput) {
|
|
|
99
99
|
const canonical = canonicalizeValue(parsedInput);
|
|
100
100
|
return `${toolName}:${JSON.stringify(canonical)}`;
|
|
101
101
|
}
|
|
102
|
+
const RESOURCE_PATH_KEYS = [
|
|
103
|
+
"AbsolutePath",
|
|
104
|
+
"TargetFile",
|
|
105
|
+
"targetFile",
|
|
106
|
+
"target_file",
|
|
107
|
+
"filePath",
|
|
108
|
+
"file_path",
|
|
109
|
+
"path",
|
|
110
|
+
];
|
|
111
|
+
function parseRawObject(raw) {
|
|
112
|
+
if (!raw)
|
|
113
|
+
return null;
|
|
114
|
+
if (typeof raw === "string") {
|
|
115
|
+
try {
|
|
116
|
+
const parsed = JSON.parse(raw);
|
|
117
|
+
return typeof parsed === "object" && parsed !== null
|
|
118
|
+
? parsed
|
|
119
|
+
: null;
|
|
120
|
+
}
|
|
121
|
+
catch {
|
|
122
|
+
return null;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
return typeof raw === "object" ? raw : null;
|
|
126
|
+
}
|
|
127
|
+
export function extractTargetResource(rawInput) {
|
|
128
|
+
const obj = parseRawObject(rawInput);
|
|
129
|
+
if (!obj)
|
|
130
|
+
return undefined;
|
|
131
|
+
for (const key of RESOURCE_PATH_KEYS) {
|
|
132
|
+
const val = obj[key];
|
|
133
|
+
if (typeof val === "string")
|
|
134
|
+
return val;
|
|
135
|
+
}
|
|
136
|
+
return undefined;
|
|
137
|
+
}
|
|
102
138
|
function isSuffixCycleMatch(signatures, n, k, repetitions) {
|
|
103
139
|
for (let r = 1; r < repetitions; r++) {
|
|
104
140
|
for (let i = 0; i < k; i++) {
|
|
@@ -154,6 +190,27 @@ function resolveSingleThreshold(isReadOnly, hasPolling, requestedIterations, opt
|
|
|
154
190
|
const basePolling = options.pollingSingleThreshold ?? 30;
|
|
155
191
|
return requestedIterations ? Math.max(requestedIterations + 2, basePolling) : basePolling;
|
|
156
192
|
}
|
|
193
|
+
function detectResourceLoop(state, toolName, rawInput, singleThreshold, options) {
|
|
194
|
+
if (!READ_ONLY_TOOLS.has(toolName))
|
|
195
|
+
return null;
|
|
196
|
+
const resource = extractTargetResource(rawInput);
|
|
197
|
+
if (!resource)
|
|
198
|
+
return null;
|
|
199
|
+
state.resourceSignatures.push(`${toolName}:${resource}`);
|
|
200
|
+
const resourceThreshold = state.hasPollingIntent
|
|
201
|
+
? singleThreshold
|
|
202
|
+
: Math.max((options.readOnlySingleThreshold ?? 3) * 2, 6);
|
|
203
|
+
const resCycle = detectCycle(state.resourceSignatures, {
|
|
204
|
+
maxPeriod: options.maxPeriod ?? 4,
|
|
205
|
+
singleToolThreshold: resourceThreshold,
|
|
206
|
+
cycleThreshold: options.cycleThreshold ?? 3,
|
|
207
|
+
});
|
|
208
|
+
if (resCycle.isLoop) {
|
|
209
|
+
state.lastTargetResource = resource;
|
|
210
|
+
return resCycle;
|
|
211
|
+
}
|
|
212
|
+
return null;
|
|
213
|
+
}
|
|
157
214
|
export class RepetitiveToolLoopTracker {
|
|
158
215
|
sessions = new Map();
|
|
159
216
|
promptIdToSessionId = new Map();
|
|
@@ -162,6 +219,7 @@ export class RepetitiveToolLoopTracker {
|
|
|
162
219
|
if (!state) {
|
|
163
220
|
state = {
|
|
164
221
|
signatures: [],
|
|
222
|
+
resourceSignatures: [],
|
|
165
223
|
loopInterrupted: false,
|
|
166
224
|
userPromptText: "",
|
|
167
225
|
hasPollingIntent: false,
|
|
@@ -179,12 +237,14 @@ export class RepetitiveToolLoopTracker {
|
|
|
179
237
|
state.hasPollingIntent = hasPollingIntent(promptText);
|
|
180
238
|
state.requestedIterations = extractRequestedIterations(promptText);
|
|
181
239
|
state.signatures = [];
|
|
240
|
+
state.resourceSignatures = [];
|
|
182
241
|
state.loopInterrupted = false;
|
|
183
242
|
state.steerPending = false;
|
|
184
243
|
state.steerPromptId = undefined;
|
|
185
244
|
state.steerCount = 0;
|
|
186
245
|
state.lastLoopResult = undefined;
|
|
187
246
|
state.lastToolName = undefined;
|
|
247
|
+
state.lastTargetResource = undefined;
|
|
188
248
|
if (promptId !== undefined && promptId !== null) {
|
|
189
249
|
this.promptIdToSessionId.set(promptId, sessionId);
|
|
190
250
|
}
|
|
@@ -206,10 +266,17 @@ export class RepetitiveToolLoopTracker {
|
|
|
206
266
|
singleToolThreshold: singleThreshold,
|
|
207
267
|
cycleThreshold: options.cycleThreshold ?? 3,
|
|
208
268
|
});
|
|
209
|
-
|
|
269
|
+
const loopResult = result.isLoop
|
|
270
|
+
? result
|
|
271
|
+
: detectResourceLoop(state, toolName, rawInput, singleThreshold, options);
|
|
272
|
+
if (loopResult && loopResult.isLoop) {
|
|
210
273
|
state.loopInterrupted = true;
|
|
211
|
-
state.lastLoopResult =
|
|
274
|
+
state.lastLoopResult = loopResult;
|
|
212
275
|
state.lastToolName = toolName;
|
|
276
|
+
if (!state.lastTargetResource) {
|
|
277
|
+
state.lastTargetResource = extractTargetResource(rawInput);
|
|
278
|
+
}
|
|
279
|
+
return loopResult;
|
|
213
280
|
}
|
|
214
281
|
return result;
|
|
215
282
|
}
|
|
@@ -257,10 +324,14 @@ export class RepetitiveToolLoopTracker {
|
|
|
257
324
|
getLastLoopResult(sessionId) {
|
|
258
325
|
return this.sessions.get(sessionId)?.lastLoopResult;
|
|
259
326
|
}
|
|
327
|
+
getLastTargetResource(sessionId) {
|
|
328
|
+
return this.sessions.get(sessionId)?.lastTargetResource;
|
|
329
|
+
}
|
|
260
330
|
resetSignaturesForSteering(sessionId) {
|
|
261
331
|
const s = this.sessions.get(sessionId);
|
|
262
332
|
if (s) {
|
|
263
333
|
s.signatures = [];
|
|
334
|
+
s.resourceSignatures = [];
|
|
264
335
|
s.loopInterrupted = false;
|
|
265
336
|
}
|
|
266
337
|
}
|
|
@@ -322,15 +393,30 @@ function handleSteerPromptCompletion(msg, sessionId, tracker) {
|
|
|
322
393
|
}
|
|
323
394
|
return null;
|
|
324
395
|
}
|
|
396
|
+
export function buildSteeringText(toolName, targetResource, repetitions, steerCount) {
|
|
397
|
+
if (steerCount > 0) {
|
|
398
|
+
return (`[Automated Steering]: You are still repeatedly executing '${toolName}'. Repetition is halted. ` +
|
|
399
|
+
`Summarize what you have accomplished so far, explain what is blocking you or what you found, and report your status to the user immediately.`);
|
|
400
|
+
}
|
|
401
|
+
if (READ_ONLY_TOOLS.has(toolName)) {
|
|
402
|
+
const targetDesc = targetResource ? ` on '${targetResource}'` : "";
|
|
403
|
+
return (`[Automated Steering]: You have repeatedly executed '${toolName}'${targetDesc} without making progress. ` +
|
|
404
|
+
`Do not re-read or inspect this file again. You already have the code context you need. ` +
|
|
405
|
+
`Analyze your findings, decide on the required code modifications or commands, and proceed immediately with making changes to bring the task to completion.`);
|
|
406
|
+
}
|
|
407
|
+
return (`[Automated Steering]: You have repeatedly executed '${toolName}' (${repetitions} times) without progress. ` +
|
|
408
|
+
`Stop repeating this action. Evaluate your current results, decide on the required next steps or changes, and proceed immediately to complete the user's task.`);
|
|
409
|
+
}
|
|
325
410
|
async function dispatchSteeringPrompt(sessionId, tracker, context) {
|
|
326
411
|
tracker.setSteerPending(sessionId, false);
|
|
412
|
+
const currentSteerCount = tracker.getSteerCount(sessionId);
|
|
327
413
|
tracker.incrementSteerCount(sessionId);
|
|
328
414
|
tracker.resetSignaturesForSteering(sessionId);
|
|
329
415
|
const toolName = tracker.getLastToolName(sessionId) ?? "tool";
|
|
416
|
+
const targetResource = tracker.getLastTargetResource(sessionId);
|
|
330
417
|
const loopResult = tracker.getLastLoopResult(sessionId);
|
|
331
418
|
const repetitions = loopResult?.repetitions ?? 3;
|
|
332
|
-
const steeringText =
|
|
333
|
-
`Is this expected? If you are polling or waiting on an external state change, explain what you are waiting for. Otherwise, please stop repeating this action, evaluate your findings, and try a different approach or report your status to the user.`;
|
|
419
|
+
const steeringText = buildSteeringText(toolName, targetResource, repetitions, currentSteerCount);
|
|
334
420
|
const newSteerPromptId = `steer_${sessionId}_${Date.now()}`;
|
|
335
421
|
tracker.setSteerPromptId(sessionId, newSteerPromptId);
|
|
336
422
|
try {
|
|
@@ -363,17 +449,17 @@ function extractCancelledResult(msg, sessionId, tracker) {
|
|
|
363
449
|
async function settleInterruptedPromptResponse(msg, sessionId, tracker, context, options) {
|
|
364
450
|
if (!("result" in msg))
|
|
365
451
|
return null;
|
|
452
|
+
const maxSteers = options.maxSteersPerTurn ?? 2;
|
|
453
|
+
const canSteer = tracker.isSteerPending(sessionId) && tracker.getSteerCount(sessionId) < maxSteers;
|
|
454
|
+
if (canSteer && (await dispatchSteeringPrompt(sessionId, tracker, context))) {
|
|
455
|
+
return [];
|
|
456
|
+
}
|
|
366
457
|
const steerResult = handleSteerPromptCompletion(msg, sessionId, tracker);
|
|
367
458
|
if (steerResult)
|
|
368
459
|
return steerResult;
|
|
369
460
|
const res = extractCancelledResult(msg, sessionId, tracker);
|
|
370
461
|
if (!res)
|
|
371
462
|
return null;
|
|
372
|
-
const maxSteers = options.maxSteersPerTurn ?? 1;
|
|
373
|
-
const canSteer = tracker.isSteerPending(sessionId) && tracker.getSteerCount(sessionId) < maxSteers;
|
|
374
|
-
if (canSteer && (await dispatchSteeringPrompt(sessionId, tracker, context))) {
|
|
375
|
-
return [];
|
|
376
|
-
}
|
|
377
463
|
tracker.startTurn(sessionId);
|
|
378
464
|
return [{ ...msg, result: { ...res, stopReason: STOP_REASONS.END_TURN } }];
|
|
379
465
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/fixes/repetitive-tool-loop/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/fixes/repetitive-tool-loop/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/readme.md
CHANGED
|
@@ -159,8 +159,8 @@ The matrix below documents upstream defects across process startup, turn executi
|
|
|
159
159
|
| [**Missing Usage & Token Metrics**](src/fixes/missing-usage-metrics/index.ts) | **Problem**: Upstream binary never emits ACP `usage_update` notifications, leaving editor context window meters blank.<br>🔗 [`problem: missing usage metrics`](src/fixes/missing-usage-metrics/index.e2e.test.ts#L14) | Intercepts SQLite step metadata to extract token counts and emits standard ACP `sessionUpdate: "usage_update"` with `usedTokens` and `maxTokens`.<br>🔗 [`solution: token usage synthesis`](src/fixes/missing-usage-metrics/index.e2e.test.ts#L35) |
|
|
160
160
|
| [**Dangling Running Tool Calls**](src/fixes/dangling-tool-calls/index.ts) | **Problem**: When commands are backgrounded, upstream never emits terminal `tool_call_update` with `status: "completed"`, leaving editor UIs with an infinite active running animation.<br>🔗 [`problem: dangling running tool call`](src/fixes/dangling-tool-calls/index.test.ts#L67) | Tracks active tool calls and marks backgrounded tools completed immediately, before assistant text streams, and upon turn completion.<br>🔗 [`solution: tool call auto-completion`](src/fixes/dangling-tool-calls/index.test.ts#L79) |
|
|
161
161
|
| [**Interactive Question Deadlock**](src/fixes/missing-question-fallback/index.ts) | **Problem**: When `ask_question` is active, sending a chat prompt or cancel causes upstream to reject the message with _"A foreground turn is already active"_, deadlocking sessions indefinitely.<br>🔗 [`problem: question collision`](src/fixes/missing-question-fallback/index.e2e.test.ts#L16) | Intercepts user chat prompts and cancellations to auto-unblock pending question permission requests to the child process and complete UI tool states.<br>🔗 [`solution: question unblocking`](src/fixes/missing-question-fallback/index.e2e.test.ts#L53) |
|
|
162
|
-
| [**Premature Empty Turn Stop**](src/fixes/premature-turn-stop/index.ts) | **Problem**: Upstream binary prematurely concludes prompt turns with empty completions (`stopReason=16`) without emitting assistant message chunks, leaving editor UIs frozen in silence.<br>🔗 [`problem: premature turn termination`](src/fixes/premature-turn-stop/index.test.ts#
|
|
163
|
-
| [**Repetitive Tool Calling Loop**](src/fixes/repetitive-tool-loop/index.ts) | **Problem**: Upstream binary has no loop detector and will execute cyclic or identical tool calls indefinitely, burning thousands of tokens and freezing sessions.<br>🔗 [`problem: repetitive tool loop`](src/fixes/repetitive-tool-loop/index.e2e.test.ts#L25) | Tracks tool signatures per turn using suffix cycle matching, sending `session/cancel` upstream, auto-completing tools, and
|
|
162
|
+
| [**Premature Empty Turn Stop**](src/fixes/premature-turn-stop/index.ts) | **Problem**: Upstream binary prematurely concludes prompt turns with empty completions (`stopReason=16`) without emitting assistant message chunks, leaving editor UIs frozen in silence.<br>🔗 [`problem: premature turn termination`](src/fixes/premature-turn-stop/index.test.ts#L88) | Injects system prompt steering and intercepts empty prompt turn completions to autonomously dispatch self-healing continuation directives without proxy text synthesis.<br>🔗 [`solution: self-healing continuation`](src/fixes/premature-turn-stop/index.test.ts#L131) |
|
|
163
|
+
| [**Repetitive Tool Calling Loop**](src/fixes/repetitive-tool-loop/index.ts) | **Problem**: Upstream binary has no loop detector and will execute cyclic or identical tool calls indefinitely, burning thousands of tokens and freezing sessions.<br>🔗 [`problem: repetitive tool loop`](src/fixes/repetitive-tool-loop/index.e2e.test.ts#L25) | Tracks tool signatures and resource paths per turn using suffix cycle matching, sending `session/cancel` upstream, auto-completing tools, and steering the model to proceed e2e without polluting chat.<br>🔗 [`solution: loop circuit breaker`](src/fixes/repetitive-tool-loop/index.e2e.test.ts#L81) |
|
|
164
164
|
|
|
165
165
|
## Setup
|
|
166
166
|
|