@simonepri/refined-antigravity-acp 1.2.2 → 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.
@@ -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":"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"}
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 decodeStep(stepType, payload, idx, timestamp) {
45
- if (stepType === STEP_TYPE_USER) {
46
- const f19 = getField(payload, 19);
47
- if (!f19)
48
- return [];
49
- const text = stripSystemContext(stripSteeringPrefix(utf8(getField(f19, 2)))).trim();
50
- return text ? [{ kind: "user", idx, text, timestamp }] : [];
51
- }
52
- if (stepType === STEP_TYPE_AGENT) {
53
- const f20 = getField(payload, 20);
54
- if (!f20)
55
- return [];
56
- const steps = [];
57
- const thought = utf8(getField(f20, 3)).trim();
58
- if (thought)
59
- steps.push({ kind: "thought", idx, text: thought, timestamp });
60
- const text = sanitizeText(utf8(getField(f20, 1)));
61
- if (text)
62
- steps.push({ kind: "assistant", idx, text, timestamp });
63
- const call = getField(f20, 7);
64
- const callId = call ? utf8(getField(call, 1)) : "";
65
- if (callId) {
66
- steps.push({
67
- kind: "tool_call",
68
- idx,
69
- callId,
70
- name: utf8(getField(call, 2)),
71
- rawInputJson: utf8(getField(call, 3)),
72
- timestamp,
73
- });
74
- }
75
- return steps;
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,UAAU,CACxB,QAAgB,EAChB,OAAmB,EACnB,GAAW,EACX,SAAkB;IAElB,IAAI,QAAQ,KAAK,cAAc,EAAE,CAAC;QAChC,MAAM,GAAG,GAAG,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAClC,IAAI,CAAC,GAAG;YAAE,OAAO,EAAE,CAAC;QACpB,MAAM,IAAI,GAAG,kBAAkB,CAAC,mBAAmB,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACpF,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9D,CAAC;IACD,IAAI,QAAQ,KAAK,eAAe,EAAE,CAAC;QACjC,MAAM,GAAG,GAAG,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAClC,IAAI,CAAC,GAAG;YAAE,OAAO,EAAE,CAAC;QACpB,MAAM,KAAK,GAAuB,EAAE,CAAC;QACrC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC9C,IAAI,OAAO;YAAE,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;QAC5E,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAClD,IAAI,IAAI;YAAE,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;QAClE,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACnD,IAAI,MAAM,EAAE,CAAC;YACX,KAAK,CAAC,IAAI,CAAC;gBACT,IAAI,EAAE,WAAW;gBACjB,GAAG;gBACH,MAAM;gBACN,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAK,EAAE,CAAC,CAAC,CAAC;gBAC9B,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAK,EAAE,CAAC,CAAC,CAAC;gBACtC,SAAS;aACV,CAAC,CAAC;QACL,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,SAAiB,EAAE,YAAqB;IACzE,OAAO,YAAY,IAAI,qBAAqB,CAAC,SAAS,CAAC,CAAC;AAC1D,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,SAAiB,EACjB,YAAqB;IAErB,MAAM,MAAM,GAAG,kBAAkB,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;IAC3D,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;QAAE,OAAO,EAAE,CAAC;IACnC,IAAI,EAAE,GAAwB,IAAI,CAAC;IACnC,IAAI,CAAC;QACH,EAAE,GAAG,IAAI,YAAY,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QACjE,MAAM,IAAI,GAAG,EAAE;aACZ,OAAO,CACN,8FAA8F,CAC/F;aACA,GAAG,EAA0B,CAAC;QACjC,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAC1B,GAAG,CAAC,YAAY;YACd,CAAC,CAAC,UAAU,CACR,GAAG,CAAC,SAAS,EACb,IAAI,UAAU,CAAC,GAAG,CAAC,YAAY,CAAC,EAChC,GAAG,CAAC,GAAG,EACP,gBAAgB,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CACnD;YACH,CAAC,CAAC,EAAE,CACP,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CACX,mEAAmE,SAAS,GAAG,EAC/E,GAAG,CACJ,CAAC;QACF,OAAO,EAAE,CAAC;IACZ,CAAC;YAAS,CAAC;QACT,EAAE,EAAE,KAAK,EAAE,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAAY,EAAE,YAAoB;IAChE,IAAI,CAAC;QACH,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QACjD,IACE,MAAM;YACN,OAAO,MAAM,KAAK,QAAQ;YAC1B,OAAQ,MAAoC,CAAC,WAAW,KAAK,QAAQ,EACrE,CAAC;YACD,OAAQ,MAAkC,CAAC,WAAW,CAAC;QACzD,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,SAAS;IACX,CAAC;IACD,OAAO,IAAI,IAAI,WAAW,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,SAAiB,EACjB,MAA+B;IAE/B,OAAO;QACL,OAAO,EAAE,KAAK;QACd,MAAM,EAAE,WAAW,CAAC,cAAc;QAClC,MAAM,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE;KACC,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,SAAiB,EACjB,aAG8C,EAC9C,IAAY;IAEZ,OAAO,oBAAoB,CAAC,SAAS,EAAE,EAAE,aAAa,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;AAC7F,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,SAAiB,EACjB,IAAsD;IAEtD,OAAO;QACL,oBAAoB,CAAC,SAAS,EAAE;YAC9B,aAAa,EAAE,eAAe,CAAC,SAAS;YACxC,UAAU,EAAE,IAAI,CAAC,MAAM;YACvB,KAAK,EAAE,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC;YACpD,IAAI,EAAE,SAAS;YACf,MAAM,EAAE,WAAW;YACnB,QAAQ,EAAE,IAAI,CAAC,YAAY;SAC5B,CAAC;QACF,oBAAoB,CAAC,SAAS,EAAE;YAC9B,aAAa,EAAE,eAAe,CAAC,gBAAgB;YAC/C,UAAU,EAAE,IAAI,CAAC,MAAM;YACvB,MAAM,EAAE,WAAW;SACpB,CAAC;KACH,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,SAAiB,EACjB,IAAsB;IAEtB,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM;QACtB,OAAO,CAAC,eAAe,CAAC,SAAS,EAAE,eAAe,CAAC,kBAAkB,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACrF,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW;QAC3B,OAAO,CAAC,eAAe,CAAC,SAAS,EAAE,eAAe,CAAC,mBAAmB,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACtF,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS;QACzB,OAAO,CAAC,eAAe,CAAC,SAAS,EAAE,eAAe,CAAC,mBAAmB,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACtF,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW;QAAE,OAAO,eAAe,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IACvE,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,SAAiB,EACjB,KAAkC;IAElC,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,qBAAqB,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC;AACnE,CAAC;AAED,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAA2B,CAAC;AAE9D,SAAS,yBAAyB,CAAC,GAAqB;IACtD,IAAI,CAAC,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,EAAE,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAChF,MAAM,SAAS,GAAG,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACjD,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC5B,kBAAkB,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACpC,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAMD,MAAM,CAAC,MAAM,uBAAuB,GAA4B;IAC9D,IAAI,EAAE,wBAAwB;IAC9B,WAAW,EACT,uGAAuG;IACzG,qBAAqB;IAErB,UAAU,CAAC,GAAqB,EAAE,QAAyB;QACzD,IAAI,gBAAgB,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,KAAK,WAAW,CAAC,YAAY,EAAE,CAAC;YACrE,MAAM,SAAS,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;YACxC,IAAI,SAAS,EAAE,CAAC;gBACd,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;YAC5C,CAAC;QACH,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,SAAS,CAEP,GAAqB,EACrB,QAAwB;QAExB,IAAI,kBAAkB,CAAC,IAAI,KAAK,CAAC;YAAE,OAAO,CAAC,GAAG,CAAC,CAAC;QAChD,IAAI,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAC,cAAc,CAAC;YAAE,OAAO,EAAE,CAAC;QAEzD,MAAM,SAAS,GAAG,yBAAyB,CAAC,GAAG,CAAC,CAAC;QACjD,IAAI,SAAS,IAAI,QAAQ,IAAI,GAAG,EAAE,CAAC;YACjC,MAAM,EAAE,GACN,IAAI,EAAE,qBAAqB;gBAC3B,uBAAuB,CAAC,qBAAqB;gBAC7C,qBAAqB,CAAC;YACxB,MAAM,KAAK,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;YAC5B,OAAO,CAAC,GAAG,uBAAuB,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC;QAC7D,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,CAAC;IACf,CAAC;IAED,OAAO;QACL,kBAAkB,CAAC,KAAK,EAAE,CAAC;IAC7B,CAAC;CACF,CAAC;AAGF,MAAM,CAAC,MAAM,wBAAwB,GAAG,uBAAuB,CAAC"}
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 (or receives a prompt) and halts with an empty
4
- * completion (stopReason=16, no text and no tool call), upstream completes the prompt turn
5
- * with a successful result without emitting any `agent_message_chunk`. Editor clients (Paseo, Zed)
6
- * transition the session to idle, leaving the user with zero explanation and an apparent hang.
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
- * Injects explicit system prompt steering instructing the model to never end a prompt turn without
10
- * emitting a clear assistant text message, eliminating premature silent stops at the model source
11
- * without synthesizing synthetic conversational prose in the proxy.
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 { AcpFix } from "../../core/types.js";
14
- export declare function createPrematureTurnStopFix(): AcpFix;
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;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAElD,wBAAgB,0BAA0B,IAAI,MAAM,CAYnD;AAED,eAAO,MAAM,oBAAoB,QAA+B,CAAC"}
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 (or receives a prompt) and halts with an empty
4
- * completion (stopReason=16, no text and no tool call), upstream completes the prompt turn
5
- * with a successful result without emitting any `agent_message_chunk`. Editor clients (Paseo, Zed)
6
- * transition the session to idle, leaving the user with zero explanation and an apparent hang.
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
- * Injects explicit system prompt steering instructing the model to never end a prompt turn without
10
- * emitting a clear assistant text message, eliminating premature silent stops at the model source
11
- * without synthesizing synthetic conversational prose in the proxy.
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
- export function createPrematureTurnStopFix() {
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 to prevent premature empty turn stops without assistant messages",
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;;;;;;;;;;;GAWG;AAIH,MAAM,UAAU,0BAA0B;IACxC,OAAO;QACL,IAAI,EAAE,qBAAqB;QAC3B,WAAW,EAAE,+EAA+E;QAE5F,qBAAqB;YACnB,OAAO;gBACL,uIAAuI;gBACvI,0KAA0K;aAC3K,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,oBAAoB,GAAG,0BAA0B,EAAE,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/fixes/premature-turn-stop/index.ts"],"names":[],"mappings":"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"}
@@ -3,26 +3,35 @@
3
3
  * Upstream `agy_acp_server` does not detect repetitive tool calling loops or autoregressive attractor cycles.
4
4
  * When a model degenerates into repeating the same tool call or cycling through the same set of file slices,
5
5
  * raw agy blindly executes tool calls indefinitely, burning thousands of tokens and freezing editor sessions.
6
+ * Furthermore, blindly halting every repeated tool breaks legitimate user polling (e.g. polling a port or waiting for builds).
6
7
  *
7
8
  * Solution:
8
9
  * Tracks canonicalized tool call signatures per prompt turn using suffix cycle matching.
9
- * When identical tool calls or periodic cycles repeat beyond safety thresholds, the wrapper sends
10
- * `session/cancel` upstream to halt runaway execution, auto-completes pending tool updates, emits an
11
- * explanatory message chunk to the editor chat, and cleanly settles the turn.
10
+ * Recognizes user polling intent (e.g. "until", "poll", "retry", "wait for", "N times") to allow legitimate polling.
11
+ * When an unintentional runaway loop is detected, interrupts the repetitive execution and sends automated steering
12
+ * ("You have repeatedly executed X, is that expected?") directly to the upstream model so it self-corrects without
13
+ * ending the turn or polluting the user's chat.
12
14
  */
13
- import { type AcpFix } from "../../core/types.js";
15
+ import { type AcpFix, type AcpStreamMessage } from "../../core/types.js";
14
16
  export declare const IGNORED_METADATA_KEYS: Set<string>;
15
17
  export declare const READ_ONLY_TOOLS: Set<string>;
18
+ export declare const POLLING_INTENT_PATTERN: RegExp;
19
+ export declare function extractPromptText(msg: AcpStreamMessage): string;
20
+ export declare function hasPollingIntent(promptText: string): boolean;
21
+ export declare function extractRequestedIterations(promptText: string): number | undefined;
16
22
  export interface RepetitiveToolLoopOptions {
17
23
  maxPeriod?: number;
18
24
  readOnlySingleThreshold?: number;
19
25
  mutatingSingleThreshold?: number;
26
+ pollingSingleThreshold?: number;
20
27
  cycleThreshold?: number;
28
+ maxSteersPerTurn?: number;
21
29
  }
22
30
  export declare function normalizeKey(key: string): string;
23
31
  export declare function canonicalizeValue(val: unknown): unknown;
24
32
  export declare function inferToolNameFromUpdate(title?: string | null, kind?: string | null, rawInput?: unknown): string;
25
33
  export declare function computeToolCallSignature(toolName: string, rawInput: unknown): string;
34
+ export declare function extractTargetResource(rawInput: unknown): string | undefined;
26
35
  export interface CycleDetectionResult {
27
36
  isLoop: boolean;
28
37
  cycleLength: number;
@@ -38,14 +47,27 @@ export declare class RepetitiveToolLoopTracker {
38
47
  private readonly sessions;
39
48
  private readonly promptIdToSessionId;
40
49
  private getOrCreate;
41
- startTurn(sessionId: string, promptId?: string | number): void;
50
+ startTurn(sessionId: string, promptId?: string | number, promptText?: string): void;
42
51
  getSessionIdForPrompt(promptId: string | number): string | undefined;
43
52
  recordToolCall(sessionId: string, toolName: string, rawInput: unknown, options?: RepetitiveToolLoopOptions): CycleDetectionResult;
44
53
  isLoopInterrupted(sessionId: string): boolean;
45
- getActivePromptId(sessionId: string): string | number | undefined;
54
+ isSteerPending(sessionId: string): boolean;
55
+ setSteerPending(sessionId: string, pending: boolean): void;
56
+ getSteerPromptId(sessionId: string): string | number | undefined;
57
+ setSteerPromptId(sessionId: string, promptId: string | number): void;
58
+ clearSteerPrompt(sessionId: string): void;
59
+ getSteerCount(sessionId: string): number;
60
+ incrementSteerCount(sessionId: string): void;
61
+ getLastToolName(sessionId: string): string | undefined;
62
+ getLastLoopResult(sessionId: string): CycleDetectionResult | undefined;
63
+ getLastTargetResource(sessionId: string): string | undefined;
64
+ resetSignaturesForSteering(sessionId: string): void;
65
+ getActivePromptId(sessionId: string): string | number | null | undefined;
66
+ hasPollingIntent(sessionId: string): boolean;
46
67
  clearSession(sessionId: string): void;
47
68
  clear(): void;
48
69
  }
70
+ export declare function buildSteeringText(toolName: string, targetResource: string | undefined, repetitions: number, steerCount: number): string;
49
71
  export declare function createRepetitiveToolLoopFix(options?: RepetitiveToolLoopOptions): AcpFix;
50
72
  export declare const repetitiveToolLoopFix: AcpFix;
51
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;;;;;;;;;;;GAWG;AAEH,OAAO,EAKL,KAAK,MAAM,EAKZ,MAAM,qBAAqB,CAAC;AAG7B,eAAO,MAAM,qBAAqB,aAAwD,CAAC;AAE3F,eAAO,MAAM,eAAe,aAO1B,CAAC;AAEH,MAAM,WAAW,yBAAyB;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;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;AAkBD,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,CA2BtB;AAQD,qBAAa,yBAAyB;IACpC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAuC;IAChE,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAsC;IAE1E,OAAO,CAAC,WAAW;IASnB,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAU9D,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS;IAIpE,cAAc,CACZ,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,OAAO,EACjB,OAAO,GAAE,yBAA8B,GACtC,oBAAoB;IA2BvB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAI7C,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS;IAIjE,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAIrC,KAAK,IAAI,IAAI;CAId;AA2GD,wBAAgB,2BAA2B,CAAC,OAAO,GAAE,yBAA8B,GAAG,MAAM,CAmC3F;AAED,eAAO,MAAM,qBAAqB,QAAgC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/fixes/repetitive-tool-loop/index.ts"],"names":[],"mappings":"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"}
@@ -3,12 +3,14 @@
3
3
  * Upstream `agy_acp_server` does not detect repetitive tool calling loops or autoregressive attractor cycles.
4
4
  * When a model degenerates into repeating the same tool call or cycling through the same set of file slices,
5
5
  * raw agy blindly executes tool calls indefinitely, burning thousands of tokens and freezing editor sessions.
6
+ * Furthermore, blindly halting every repeated tool breaks legitimate user polling (e.g. polling a port or waiting for builds).
6
7
  *
7
8
  * Solution:
8
9
  * Tracks canonicalized tool call signatures per prompt turn using suffix cycle matching.
9
- * When identical tool calls or periodic cycles repeat beyond safety thresholds, the wrapper sends
10
- * `session/cancel` upstream to halt runaway execution, auto-completes pending tool updates, emits an
11
- * explanatory message chunk to the editor chat, and cleanly settles the turn.
10
+ * Recognizes user polling intent (e.g. "until", "poll", "retry", "wait for", "N times") to allow legitimate polling.
11
+ * When an unintentional runaway loop is detected, interrupts the repetitive execution and sends automated steering
12
+ * ("You have repeatedly executed X, is that expected?") directly to the upstream model so it self-corrects without
13
+ * ending the turn or polluting the user's chat.
12
14
  */
13
15
  import { ACP_METHODS, SESSION_UPDATES, STOP_REASONS, isMethod, } from "../../core/types.js";
14
16
  import { extractSessionId } from "../../core/session-cache.js";
@@ -21,6 +23,30 @@ export const READ_ONLY_TOOLS = new Set([
21
23
  "search_web",
22
24
  "read_file",
23
25
  ]);
26
+ export const POLLING_INTENT_PATTERN = /\b(?:until|poll|polling|wait\s+for|retry|retrying|keep\s+checking|repeat|repeatedly|loop|while|monitor|status\s+code\s+200|\d+\s*times)\b/i;
27
+ export function extractPromptText(msg) {
28
+ const prompt = msg?.params?.prompt;
29
+ if (typeof prompt === "string")
30
+ return prompt;
31
+ if (!Array.isArray(prompt))
32
+ return "";
33
+ return prompt
34
+ .filter((b) => b && typeof b.text === "string")
35
+ .map((b) => b.text)
36
+ .join(" ");
37
+ }
38
+ export function hasPollingIntent(promptText) {
39
+ return POLLING_INTENT_PATTERN.test(promptText);
40
+ }
41
+ export function extractRequestedIterations(promptText) {
42
+ const match = promptText.match(/(\d+)\s*times\b/i);
43
+ if (match && match[1]) {
44
+ const num = Math.trunc(Number(match[1]));
45
+ if (!Number.isNaN(num) && num > 0)
46
+ return num;
47
+ }
48
+ return undefined;
49
+ }
24
50
  export function normalizeKey(key) {
25
51
  return key.toLowerCase().replace(/_/g, "");
26
52
  }
@@ -73,6 +99,42 @@ export function computeToolCallSignature(toolName, rawInput) {
73
99
  const canonical = canonicalizeValue(parsedInput);
74
100
  return `${toolName}:${JSON.stringify(canonical)}`;
75
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
+ }
76
138
  function isSuffixCycleMatch(signatures, n, k, repetitions) {
77
139
  for (let r = 1; r < repetitions; r++) {
78
140
  for (let i = 0; i < k; i++) {
@@ -83,6 +145,16 @@ function isSuffixCycleMatch(signatures, n, k, repetitions) {
83
145
  }
84
146
  return true;
85
147
  }
148
+ function isDegenerateSingleItem(signatures, n, k) {
149
+ if (k <= 1)
150
+ return false;
151
+ for (let i = 1; i < k; i++) {
152
+ if (signatures[n - k + i] !== signatures[n - k]) {
153
+ return false;
154
+ }
155
+ }
156
+ return true;
157
+ }
86
158
  export function detectCycle(signatures, options = {}) {
87
159
  const maxPeriod = options.maxPeriod ?? 4;
88
160
  const singleToolThreshold = options.singleToolThreshold ?? 3;
@@ -91,8 +163,9 @@ export function detectCycle(signatures, options = {}) {
91
163
  for (let k = 1; k <= maxPeriod; k++) {
92
164
  const requiredRepetitions = k === 1 ? singleToolThreshold : cycleThreshold;
93
165
  const requiredLength = k * requiredRepetitions;
94
- if (n < requiredLength)
166
+ if (n < requiredLength || isDegenerateSingleItem(signatures, n, k)) {
95
167
  continue;
168
+ }
96
169
  if (isSuffixCycleMatch(signatures, n, k, requiredRepetitions)) {
97
170
  return {
98
171
  isLoop: true,
@@ -109,22 +182,69 @@ export function detectCycle(signatures, options = {}) {
109
182
  pattern: [],
110
183
  };
111
184
  }
185
+ function resolveSingleThreshold(isReadOnly, hasPolling, requestedIterations, options) {
186
+ if (isReadOnly)
187
+ return options.readOnlySingleThreshold ?? 3;
188
+ if (!hasPolling)
189
+ return options.mutatingSingleThreshold ?? 5;
190
+ const basePolling = options.pollingSingleThreshold ?? 30;
191
+ return requestedIterations ? Math.max(requestedIterations + 2, basePolling) : basePolling;
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
+ }
112
214
  export class RepetitiveToolLoopTracker {
113
215
  sessions = new Map();
114
216
  promptIdToSessionId = new Map();
115
217
  getOrCreate(sessionId) {
116
218
  let state = this.sessions.get(sessionId);
117
219
  if (!state) {
118
- state = { signatures: [], loopInterrupted: false };
220
+ state = {
221
+ signatures: [],
222
+ resourceSignatures: [],
223
+ loopInterrupted: false,
224
+ userPromptText: "",
225
+ hasPollingIntent: false,
226
+ steerPending: false,
227
+ steerCount: 0,
228
+ };
119
229
  this.sessions.set(sessionId, state);
120
230
  }
121
231
  return state;
122
232
  }
123
- startTurn(sessionId, promptId) {
233
+ startTurn(sessionId, promptId, promptText = "") {
124
234
  const state = this.getOrCreate(sessionId);
125
235
  state.activePromptId = promptId;
236
+ state.userPromptText = promptText;
237
+ state.hasPollingIntent = hasPollingIntent(promptText);
238
+ state.requestedIterations = extractRequestedIterations(promptText);
126
239
  state.signatures = [];
240
+ state.resourceSignatures = [];
127
241
  state.loopInterrupted = false;
242
+ state.steerPending = false;
243
+ state.steerPromptId = undefined;
244
+ state.steerCount = 0;
245
+ state.lastLoopResult = undefined;
246
+ state.lastToolName = undefined;
247
+ state.lastTargetResource = undefined;
128
248
  if (promptId !== undefined && promptId !== null) {
129
249
  this.promptIdToSessionId.set(promptId, sessionId);
130
250
  }
@@ -140,26 +260,97 @@ export class RepetitiveToolLoopTracker {
140
260
  const signature = computeToolCallSignature(toolName, rawInput);
141
261
  state.signatures.push(signature);
142
262
  const isReadOnly = READ_ONLY_TOOLS.has(toolName);
143
- const singleThreshold = isReadOnly
144
- ? (options.readOnlySingleThreshold ?? 3)
145
- : (options.mutatingSingleThreshold ?? 5);
263
+ const singleThreshold = resolveSingleThreshold(isReadOnly, state.hasPollingIntent, state.requestedIterations, options);
146
264
  const result = detectCycle(state.signatures, {
147
265
  maxPeriod: options.maxPeriod ?? 4,
148
266
  singleToolThreshold: singleThreshold,
149
267
  cycleThreshold: options.cycleThreshold ?? 3,
150
268
  });
151
- if (result.isLoop) {
269
+ const loopResult = result.isLoop
270
+ ? result
271
+ : detectResourceLoop(state, toolName, rawInput, singleThreshold, options);
272
+ if (loopResult && loopResult.isLoop) {
152
273
  state.loopInterrupted = true;
274
+ state.lastLoopResult = loopResult;
275
+ state.lastToolName = toolName;
276
+ if (!state.lastTargetResource) {
277
+ state.lastTargetResource = extractTargetResource(rawInput);
278
+ }
279
+ return loopResult;
153
280
  }
154
281
  return result;
155
282
  }
156
283
  isLoopInterrupted(sessionId) {
157
284
  return this.sessions.get(sessionId)?.loopInterrupted ?? false;
158
285
  }
286
+ isSteerPending(sessionId) {
287
+ return this.sessions.get(sessionId)?.steerPending ?? false;
288
+ }
289
+ setSteerPending(sessionId, pending) {
290
+ const s = this.sessions.get(sessionId);
291
+ if (s)
292
+ s.steerPending = pending;
293
+ }
294
+ getSteerPromptId(sessionId) {
295
+ return this.sessions.get(sessionId)?.steerPromptId;
296
+ }
297
+ setSteerPromptId(sessionId, promptId) {
298
+ const s = this.sessions.get(sessionId);
299
+ if (s) {
300
+ s.steerPromptId = promptId;
301
+ this.promptIdToSessionId.set(promptId, sessionId);
302
+ }
303
+ }
304
+ clearSteerPrompt(sessionId) {
305
+ const s = this.sessions.get(sessionId);
306
+ if (s) {
307
+ if (s.steerPromptId !== undefined) {
308
+ this.promptIdToSessionId.delete(s.steerPromptId);
309
+ }
310
+ s.steerPromptId = undefined;
311
+ }
312
+ }
313
+ getSteerCount(sessionId) {
314
+ return this.sessions.get(sessionId)?.steerCount ?? 0;
315
+ }
316
+ incrementSteerCount(sessionId) {
317
+ const s = this.sessions.get(sessionId);
318
+ if (s)
319
+ s.steerCount++;
320
+ }
321
+ getLastToolName(sessionId) {
322
+ return this.sessions.get(sessionId)?.lastToolName;
323
+ }
324
+ getLastLoopResult(sessionId) {
325
+ return this.sessions.get(sessionId)?.lastLoopResult;
326
+ }
327
+ getLastTargetResource(sessionId) {
328
+ return this.sessions.get(sessionId)?.lastTargetResource;
329
+ }
330
+ resetSignaturesForSteering(sessionId) {
331
+ const s = this.sessions.get(sessionId);
332
+ if (s) {
333
+ s.signatures = [];
334
+ s.resourceSignatures = [];
335
+ s.loopInterrupted = false;
336
+ }
337
+ }
159
338
  getActivePromptId(sessionId) {
160
339
  return this.sessions.get(sessionId)?.activePromptId;
161
340
  }
341
+ hasPollingIntent(sessionId) {
342
+ return this.sessions.get(sessionId)?.hasPollingIntent ?? false;
343
+ }
162
344
  clearSession(sessionId) {
345
+ const s = this.sessions.get(sessionId);
346
+ if (s) {
347
+ if (s.activePromptId !== undefined && s.activePromptId !== null) {
348
+ this.promptIdToSessionId.delete(s.activePromptId);
349
+ }
350
+ if (s.steerPromptId !== undefined) {
351
+ this.promptIdToSessionId.delete(s.steerPromptId);
352
+ }
353
+ }
163
354
  this.sessions.delete(sessionId);
164
355
  }
165
356
  clear() {
@@ -167,7 +358,8 @@ export class RepetitiveToolLoopTracker {
167
358
  this.promptIdToSessionId.clear();
168
359
  }
169
360
  }
170
- async function interruptLoopExecution(sessionId, toolCallId, toolName, loopResult, context) {
361
+ async function interruptLoopExecution(sessionId, toolCallId, _toolName, _loopResult, tracker, context) {
362
+ // Cancel upstream execution so the model stops repeating the tool
171
363
  await context
172
364
  .writeToChild({
173
365
  jsonrpc: "2.0",
@@ -175,6 +367,7 @@ async function interruptLoopExecution(sessionId, toolCallId, toolName, loopResul
175
367
  params: { sessionId },
176
368
  })
177
369
  .catch(() => { });
370
+ // Mark the pending tool call as completed in the client UI so it doesn't spin
178
371
  context.forwardInbound?.({
179
372
  jsonrpc: "2.0",
180
373
  method: ACP_METHODS.SESSION_UPDATE,
@@ -187,42 +380,88 @@ async function interruptLoopExecution(sessionId, toolCallId, toolName, loopResul
187
380
  },
188
381
  },
189
382
  });
190
- const cycleDesc = loopResult.cycleLength > 1
191
- ? `a cycle of ${loopResult.cycleLength} alternating tool calls`
192
- : `identical tool call (${toolName})`;
193
- context.forwardInbound?.({
194
- jsonrpc: "2.0",
195
- method: ACP_METHODS.SESSION_UPDATE,
196
- params: {
197
- sessionId,
198
- update: {
199
- sessionUpdate: SESSION_UPDATES.AGENT_MESSAGE_CHUNK,
200
- content: {
201
- type: "text",
202
- text: `\n\n⚠️ Interrupted repetitive tool calling loop: detected ${cycleDesc} repeating without progress. Stopping turn to prevent runaway token usage.`,
203
- },
383
+ // Mark that this session should receive automated steering when upstream finishes cancellation
384
+ tracker.setSteerPending(sessionId, true);
385
+ }
386
+ function handleSteerPromptCompletion(msg, sessionId, tracker) {
387
+ const promptId = msg.id;
388
+ const steerPromptId = tracker.getSteerPromptId(sessionId);
389
+ if (steerPromptId !== undefined && promptId === steerPromptId) {
390
+ const originalPromptId = tracker.getActivePromptId(sessionId);
391
+ tracker.clearSteerPrompt(sessionId);
392
+ return [{ ...msg, id: originalPromptId ?? null }];
393
+ }
394
+ return null;
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
+ }
410
+ async function dispatchSteeringPrompt(sessionId, tracker, context) {
411
+ tracker.setSteerPending(sessionId, false);
412
+ const currentSteerCount = tracker.getSteerCount(sessionId);
413
+ tracker.incrementSteerCount(sessionId);
414
+ tracker.resetSignaturesForSteering(sessionId);
415
+ const toolName = tracker.getLastToolName(sessionId) ?? "tool";
416
+ const targetResource = tracker.getLastTargetResource(sessionId);
417
+ const loopResult = tracker.getLastLoopResult(sessionId);
418
+ const repetitions = loopResult?.repetitions ?? 3;
419
+ const steeringText = buildSteeringText(toolName, targetResource, repetitions, currentSteerCount);
420
+ const newSteerPromptId = `steer_${sessionId}_${Date.now()}`;
421
+ tracker.setSteerPromptId(sessionId, newSteerPromptId);
422
+ try {
423
+ await context.writeToChild({
424
+ jsonrpc: "2.0",
425
+ id: newSteerPromptId,
426
+ method: ACP_METHODS.SESSION_PROMPT,
427
+ params: {
428
+ sessionId,
429
+ prompt: [{ type: "text", text: steeringText }],
204
430
  },
205
- },
206
- });
431
+ });
432
+ return true;
433
+ }
434
+ catch (err) {
435
+ console.error(`[refined-antigravity-acp] Failed to send automated steering prompt:`, err);
436
+ return false;
437
+ }
207
438
  }
208
- function settleInterruptedPromptResponse(msg, sessionId, tracker) {
209
- if (!("result" in msg) || !tracker.isLoopInterrupted(sessionId)) {
439
+ function extractCancelledResult(msg, sessionId, tracker) {
440
+ if (!tracker.isLoopInterrupted(sessionId) || !("result" in msg))
210
441
  return null;
211
- }
212
442
  const res = msg.result;
213
- if (res && (res.stopReason === STOP_REASONS.CANCELLED || !res.stopReason)) {
214
- tracker.startTurn(sessionId);
215
- return [
216
- {
217
- ...msg,
218
- result: {
219
- ...res,
220
- stopReason: STOP_REASONS.END_TURN,
221
- },
222
- },
223
- ];
443
+ if (!res)
444
+ return null;
445
+ if (res.stopReason && res.stopReason !== STOP_REASONS.CANCELLED)
446
+ return null;
447
+ return res;
448
+ }
449
+ async function settleInterruptedPromptResponse(msg, sessionId, tracker, context, options) {
450
+ if (!("result" in msg))
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 [];
224
456
  }
225
- return null;
457
+ const steerResult = handleSteerPromptCompletion(msg, sessionId, tracker);
458
+ if (steerResult)
459
+ return steerResult;
460
+ const res = extractCancelledResult(msg, sessionId, tracker);
461
+ if (!res)
462
+ return null;
463
+ tracker.startTurn(sessionId);
464
+ return [{ ...msg, result: { ...res, stopReason: STOP_REASONS.END_TURN } }];
226
465
  }
227
466
  function resolveSessionId(msg, tracker) {
228
467
  const fromMsg = extractSessionId(msg);
@@ -240,7 +479,7 @@ async function handleInboundSessionUpdate(msg, sessionId, tracker, options, cont
240
479
  const toolName = inferToolNameFromUpdate(update.title, update.kind, update.rawInput);
241
480
  const loopResult = tracker.recordToolCall(sessionId, toolName, update.rawInput, options);
242
481
  if (loopResult.isLoop) {
243
- await interruptLoopExecution(sessionId, toolCallId, toolName, loopResult, context);
482
+ await interruptLoopExecution(sessionId, toolCallId, toolName, loopResult, tracker, context);
244
483
  return [];
245
484
  }
246
485
  return null;
@@ -249,14 +488,18 @@ export function createRepetitiveToolLoopFix(options = {}) {
249
488
  const tracker = new RepetitiveToolLoopTracker();
250
489
  return {
251
490
  name: "repetitive-tool-loop",
252
- description: "Detects and interrupts repetitive tool calling cycles and autoregressive attractor loops",
491
+ description: "Detects and steers repetitive tool calling cycles and autoregressive attractor loops without breaking polling",
253
492
  onOutbound(msg, _context) {
254
493
  const sessionId = extractSessionId(msg);
255
494
  if (!sessionId)
256
495
  return msg;
257
496
  if (isMethod(msg, ACP_METHODS.SESSION_PROMPT)) {
258
497
  const promptId = msg.id;
259
- tracker.startTurn(sessionId, promptId);
498
+ const promptText = extractPromptText(msg);
499
+ tracker.startTurn(sessionId, promptId, promptText);
500
+ }
501
+ else if (isMethod(msg, ACP_METHODS.SESSION_CANCEL)) {
502
+ tracker.clearSteerPrompt(sessionId);
260
503
  }
261
504
  return msg;
262
505
  },
@@ -264,7 +507,7 @@ export function createRepetitiveToolLoopFix(options = {}) {
264
507
  const sessionId = resolveSessionId(msg, tracker);
265
508
  if (!sessionId)
266
509
  return [msg];
267
- const settled = settleInterruptedPromptResponse(msg, sessionId, tracker);
510
+ const settled = await settleInterruptedPromptResponse(msg, sessionId, tracker, context, options);
268
511
  if (settled)
269
512
  return settled;
270
513
  if (isMethod(msg, ACP_METHODS.SESSION_UPDATE)) {
@@ -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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@simonepri/refined-antigravity-acp",
3
- "version": "1.2.2",
3
+ "version": "1.2.4",
4
4
  "description": "🤦 A Google Antigravity ACP binary that actually works.",
5
5
  "keywords": [
6
6
  "acp",
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#L48) | Injects explicit system prompt steering instructing the model to always emit clear status messages and never terminate turns silently.<br>🔗 [`solution: prompt steering`](src/fixes/premature-turn-stop/index.test.ts#L79) |
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 notifying the user when cycles repeat.<br>🔗 [`solution: loop circuit breaker`](src/fixes/repetitive-tool-loop/index.e2e.test.ts#L81) |
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