@simonepri/refined-antigravity-acp 1.2.0 → 1.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/fixes/missing-question-fallback/index.d.ts +8 -6
- package/dist/src/fixes/missing-question-fallback/index.d.ts.map +1 -1
- package/dist/src/fixes/missing-question-fallback/index.js +135 -27
- package/dist/src/fixes/missing-question-fallback/index.js.map +1 -1
- package/dist/src/setup.d.ts +1 -0
- package/dist/src/setup.d.ts.map +1 -1
- package/dist/src/setup.js +8 -5
- package/dist/src/setup.js.map +1 -1
- package/package.json +1 -1
- package/readme.md +1 -1
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Problem:
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
3
|
+
* When the model invokes `ask_question`, upstream `agy_acp_server` presents a `session/request_permission`
|
|
4
|
+
* modal choice and pauses execution awaiting user input. If the user types a new message into the chat
|
|
5
|
+
* or cancels instead of picking a pre-defined choice, upstream rejects the prompt with
|
|
6
|
+
* `"A foreground turn is already active"`, causing the turn to deadlock indefinitely.
|
|
6
7
|
*
|
|
7
8
|
* Solution:
|
|
8
|
-
*
|
|
9
|
-
*
|
|
9
|
+
* Tracks in-flight `ask_question` requests and unblocks upstream by auto-cancelling the pending
|
|
10
|
+
* permission question when a new user chat prompt arrives, dismissing the UI question spinner and
|
|
11
|
+
* allowing the user's message to execute immediately.
|
|
10
12
|
*/
|
|
11
13
|
import { type AcpFix } from "../../core/types.js";
|
|
12
|
-
export declare const QUESTION_OPTIONS_INSTRUCTIONS: readonly string[];
|
|
13
14
|
export declare const OTHER_OPTION_REGEX: RegExp;
|
|
14
15
|
export interface QuestionItem {
|
|
15
16
|
question?: string;
|
|
@@ -25,6 +26,7 @@ export declare function ensureOtherOption(raw: unknown): {
|
|
|
25
26
|
modified: boolean;
|
|
26
27
|
result: unknown;
|
|
27
28
|
};
|
|
29
|
+
export declare function createQuestionOptionsFix(): AcpFix;
|
|
28
30
|
export declare const missingQuestionFallbackFix: AcpFix;
|
|
29
31
|
export declare const questionOptionsFix: AcpFix;
|
|
30
32
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/fixes/missing-question-fallback/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/fixes/missing-question-fallback/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAIL,KAAK,MAAM,EAMZ,MAAM,qBAAqB,CAAC;AAG7B,eAAO,MAAM,kBAAkB,QAA4D,CAAC;AAE5F,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,kBAAkB;IACjC,SAAS,CAAC,EAAE,YAAY,EAAE,CAAC;IAC3B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAqCD,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,OAAO,GAAG;IAAE,QAAQ,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,CAkBtF;AAuJD,wBAAgB,wBAAwB,IAAI,MAAM,CAwDjD;AAED,eAAO,MAAM,0BAA0B,EAAE,MAAmC,CAAC;AAC7E,eAAO,MAAM,kBAAkB,QAA6B,CAAC"}
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Problem:
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
3
|
+
* When the model invokes `ask_question`, upstream `agy_acp_server` presents a `session/request_permission`
|
|
4
|
+
* modal choice and pauses execution awaiting user input. If the user types a new message into the chat
|
|
5
|
+
* or cancels instead of picking a pre-defined choice, upstream rejects the prompt with
|
|
6
|
+
* `"A foreground turn is already active"`, causing the turn to deadlock indefinitely.
|
|
6
7
|
*
|
|
7
8
|
* Solution:
|
|
8
|
-
*
|
|
9
|
-
*
|
|
9
|
+
* Tracks in-flight `ask_question` requests and unblocks upstream by auto-cancelling the pending
|
|
10
|
+
* permission question when a new user chat prompt arrives, dismissing the UI question spinner and
|
|
11
|
+
* allowing the user's message to execute immediately.
|
|
10
12
|
*/
|
|
11
13
|
import { ACP_METHODS, SESSION_UPDATES, isMethod, } from "../../core/types.js";
|
|
12
|
-
|
|
13
|
-
"Ignore the ask_question 'no other' rule: always include an 'Other' option for free-text responses.",
|
|
14
|
-
];
|
|
14
|
+
import { extractSessionId } from "../../core/session-cache.js";
|
|
15
15
|
export const OTHER_OPTION_REGEX = /\b(?:other|none\s+of\s+the\s+above|something\s+else)\b/i;
|
|
16
16
|
function parsePayload(raw) {
|
|
17
17
|
if (typeof raw === "string") {
|
|
@@ -84,7 +84,9 @@ function handleSessionUpdate(update) {
|
|
|
84
84
|
function handleRpcRequest(msg) {
|
|
85
85
|
if (!("method" in msg) || typeof msg.method !== "string")
|
|
86
86
|
return;
|
|
87
|
-
const isToolInvocation = msg.method === "tools/call" ||
|
|
87
|
+
const isToolInvocation = msg.method === "tools/call" ||
|
|
88
|
+
msg.method === ACP_METHODS.SESSION_REQUEST_PERMISSION ||
|
|
89
|
+
msg.method === "session/requestPermission";
|
|
88
90
|
if (!isToolInvocation || !msg.params || typeof msg.params !== "object")
|
|
89
91
|
return;
|
|
90
92
|
const p = msg.params;
|
|
@@ -94,26 +96,132 @@ function handleRpcRequest(msg) {
|
|
|
94
96
|
patchFieldIfAskQuestion(p, "rawInput");
|
|
95
97
|
}
|
|
96
98
|
}
|
|
97
|
-
function
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
99
|
+
function clearPendingByRequestId(pendingQuestions, id) {
|
|
100
|
+
for (const [sessionId, pending] of pendingQuestions.entries()) {
|
|
101
|
+
if (pending.requestId === id) {
|
|
102
|
+
pendingQuestions.delete(sessionId);
|
|
103
|
+
break;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
async function unblockPendingQuestion(pending, sessionId, context) {
|
|
108
|
+
await context.writeToChild?.({
|
|
109
|
+
jsonrpc: "2.0",
|
|
110
|
+
id: pending.requestId,
|
|
111
|
+
result: { outcome: { outcome: "cancelled" } },
|
|
112
|
+
});
|
|
113
|
+
if (!pending.toolCallId)
|
|
114
|
+
return;
|
|
115
|
+
context.forwardInbound?.({
|
|
116
|
+
jsonrpc: "2.0",
|
|
117
|
+
method: ACP_METHODS.SESSION_UPDATE,
|
|
118
|
+
params: {
|
|
119
|
+
sessionId,
|
|
120
|
+
update: {
|
|
121
|
+
sessionUpdate: SESSION_UPDATES.TOOL_CALL_UPDATE,
|
|
122
|
+
toolCallId: pending.toolCallId,
|
|
123
|
+
status: "completed",
|
|
124
|
+
},
|
|
125
|
+
},
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
function isPermissionMethod(method) {
|
|
129
|
+
return (method === ACP_METHODS.SESSION_REQUEST_PERMISSION || method === "session/requestPermission");
|
|
130
|
+
}
|
|
131
|
+
function extractToolCallId(params) {
|
|
132
|
+
if (!params || typeof params !== "object")
|
|
133
|
+
return undefined;
|
|
134
|
+
const toolCall = params.toolCall;
|
|
135
|
+
if (!toolCall || typeof toolCall !== "object")
|
|
136
|
+
return undefined;
|
|
137
|
+
const id = toolCall.toolCallId;
|
|
138
|
+
return typeof id === "string" ? id : undefined;
|
|
139
|
+
}
|
|
140
|
+
function extractPermissionDetails(msg) {
|
|
141
|
+
const sessionId = extractSessionId(msg);
|
|
142
|
+
const toolCallId = "params" in msg ? extractToolCallId(msg.params) : undefined;
|
|
143
|
+
const details = {};
|
|
144
|
+
if (sessionId)
|
|
145
|
+
details.sessionId = sessionId;
|
|
146
|
+
if (toolCallId)
|
|
147
|
+
details.toolCallId = toolCallId;
|
|
148
|
+
return details;
|
|
149
|
+
}
|
|
150
|
+
function recordInboundPermission(msg, pendingQuestions) {
|
|
151
|
+
const method = "method" in msg ? String(msg.method) : undefined;
|
|
152
|
+
if (!isPermissionMethod(method) || !("id" in msg))
|
|
153
|
+
return;
|
|
154
|
+
const id = msg.id;
|
|
155
|
+
if (id === undefined || id === null)
|
|
156
|
+
return;
|
|
157
|
+
const { sessionId, toolCallId } = extractPermissionDetails(msg);
|
|
158
|
+
if (sessionId) {
|
|
159
|
+
const pending = { requestId: id, sessionId };
|
|
160
|
+
if (toolCallId)
|
|
161
|
+
pending.toolCallId = toolCallId;
|
|
162
|
+
pendingQuestions.set(sessionId, pending);
|
|
102
163
|
}
|
|
103
|
-
|
|
104
|
-
|
|
164
|
+
}
|
|
165
|
+
function trackInboundToolCallId(msg, pendingQuestions) {
|
|
166
|
+
if (!isMethod(msg, ACP_METHODS.SESSION_UPDATE))
|
|
167
|
+
return;
|
|
168
|
+
const update = msg.params?.update;
|
|
169
|
+
if (!update)
|
|
170
|
+
return;
|
|
171
|
+
handleSessionUpdate(update);
|
|
172
|
+
const sessionId = extractSessionId(msg);
|
|
173
|
+
if (!sessionId || update.sessionUpdate !== SESSION_UPDATES.TOOL_CALL)
|
|
174
|
+
return;
|
|
175
|
+
if (isAskQuestionName(update.name, update.title) && update.toolCallId) {
|
|
176
|
+
const existing = pendingQuestions.get(sessionId);
|
|
177
|
+
if (existing && !existing.toolCallId) {
|
|
178
|
+
existing.toolCallId = update.toolCallId;
|
|
179
|
+
}
|
|
105
180
|
}
|
|
106
|
-
return msg;
|
|
107
181
|
}
|
|
108
|
-
export
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
182
|
+
export function createQuestionOptionsFix() {
|
|
183
|
+
const pendingQuestions = new Map();
|
|
184
|
+
return {
|
|
185
|
+
name: "missing-question-fallback",
|
|
186
|
+
description: "Unblocks interactive questions when user sends a chat message and provides question fallback handling",
|
|
187
|
+
onOutbound: async (msg, context) => {
|
|
188
|
+
if ("id" in msg && msg.id !== undefined && msg.id !== null) {
|
|
189
|
+
clearPendingByRequestId(pendingQuestions, msg.id);
|
|
190
|
+
}
|
|
191
|
+
const isPromptOrCancel = isMethod(msg, ACP_METHODS.SESSION_PROMPT) || isMethod(msg, ACP_METHODS.SESSION_CANCEL);
|
|
192
|
+
if (isPromptOrCancel) {
|
|
193
|
+
const sessionId = extractSessionId(msg);
|
|
194
|
+
if (sessionId) {
|
|
195
|
+
const pending = pendingQuestions.get(sessionId);
|
|
196
|
+
if (pending) {
|
|
197
|
+
pendingQuestions.delete(sessionId);
|
|
198
|
+
await unblockPendingQuestion(pending, sessionId, context);
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
return msg;
|
|
203
|
+
},
|
|
204
|
+
onInbound: (msg, _context) => {
|
|
205
|
+
recordInboundPermission(msg, pendingQuestions);
|
|
206
|
+
if (isMethod(msg, ACP_METHODS.SESSION_UPDATE)) {
|
|
207
|
+
trackInboundToolCallId(msg, pendingQuestions);
|
|
208
|
+
}
|
|
209
|
+
else {
|
|
210
|
+
handleRpcRequest(msg);
|
|
211
|
+
}
|
|
212
|
+
if ("result" in msg || "error" in msg) {
|
|
213
|
+
const id = msg.id;
|
|
214
|
+
if (id !== undefined && id !== null) {
|
|
215
|
+
clearPendingByRequestId(pendingQuestions, id);
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
return [msg];
|
|
219
|
+
},
|
|
220
|
+
dispose: () => {
|
|
221
|
+
pendingQuestions.clear();
|
|
222
|
+
},
|
|
223
|
+
};
|
|
224
|
+
}
|
|
225
|
+
export const missingQuestionFallbackFix = createQuestionOptionsFix();
|
|
118
226
|
export const questionOptionsFix = missingQuestionFallbackFix;
|
|
119
227
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/fixes/missing-question-fallback/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/fixes/missing-question-fallback/index.ts"],"names":[],"mappings":"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"}
|
package/dist/src/setup.d.ts
CHANGED
|
@@ -8,6 +8,7 @@ export declare function setupZed(paths?: ResolvedPaths): boolean;
|
|
|
8
8
|
export declare const GOOGLE_TERMS_URL = "https://antigravity.google/terms";
|
|
9
9
|
export interface SetupOptions {
|
|
10
10
|
autoAccept?: boolean | undefined;
|
|
11
|
+
restartDaemon?: boolean | undefined;
|
|
11
12
|
}
|
|
12
13
|
export declare function ensureSetupBinary(options?: SetupOptions): Promise<boolean>;
|
|
13
14
|
export declare function runSetup(target?: "all" | "paseo" | "zed", options?: SetupOptions): Promise<boolean>;
|
package/dist/src/setup.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/setup.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC9B;AAED,wBAAgB,YAAY,IAAI,aAAa,
|
|
1
|
+
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/setup.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC9B;AAED,wBAAgB,YAAY,IAAI,aAAa,CA2B5C;AAoCD,wBAAgB,UAAU,CAAC,KAAK,GAAE,aAA8B,EAAE,aAAa,UAAO,GAAG,OAAO,CAgC/F;AAkBD,wBAAgB,QAAQ,CAAC,KAAK,GAAE,aAA8B,GAAG,OAAO,CAwBvE;AAED,eAAO,MAAM,gBAAgB,qCAAqC,CAAC;AAEnE,MAAM,WAAW,YAAY;IAC3B,UAAU,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACjC,aAAa,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CACrC;AAkCD,wBAAsB,iBAAiB,CAAC,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,CAwBhF;AAED,wBAAsB,QAAQ,CAC5B,MAAM,GAAE,KAAK,GAAG,OAAO,GAAG,KAAa,EACvC,OAAO,CAAC,EAAE,YAAY,GACrB,OAAO,CAAC,OAAO,CAAC,CAmBlB"}
|
package/dist/src/setup.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import fs from "node:fs";
|
|
2
2
|
import path from "node:path";
|
|
3
3
|
import os from "node:os";
|
|
4
|
-
import
|
|
4
|
+
import childProcess from "node:child_process";
|
|
5
5
|
import readline from "node:readline/promises";
|
|
6
6
|
import { agyCommand, ensureAntigravityBinary } from "./core/command.js";
|
|
7
7
|
export function resolvePaths() {
|
|
@@ -20,7 +20,9 @@ export function resolvePaths() {
|
|
|
20
20
|
// 2. Check which refined-antigravity-acp
|
|
21
21
|
if (!cliPath) {
|
|
22
22
|
try {
|
|
23
|
-
const found =
|
|
23
|
+
const found = childProcess
|
|
24
|
+
.execSync("which refined-antigravity-acp", { encoding: "utf8" })
|
|
25
|
+
.trim();
|
|
24
26
|
if (found && fs.existsSync(found)) {
|
|
25
27
|
cliPath = fs.realpathSync(found);
|
|
26
28
|
}
|
|
@@ -53,7 +55,7 @@ function getNestedRecord(obj, key) {
|
|
|
53
55
|
}
|
|
54
56
|
function tryRestartPaseoDaemon() {
|
|
55
57
|
try {
|
|
56
|
-
execFileSync("paseo", ["daemon", "restart"], { stdio: "ignore" });
|
|
58
|
+
childProcess.execFileSync("paseo", ["daemon", "restart"], { stdio: "ignore" });
|
|
57
59
|
console.log("✓ Restarted Paseo daemon");
|
|
58
60
|
}
|
|
59
61
|
catch {
|
|
@@ -175,14 +177,15 @@ export async function runSetup(target = "all", options) {
|
|
|
175
177
|
return false;
|
|
176
178
|
}
|
|
177
179
|
const paths = resolvePaths();
|
|
180
|
+
const restartDaemon = options?.restartDaemon ?? true;
|
|
178
181
|
if (target === "paseo") {
|
|
179
|
-
setupPaseo(paths);
|
|
182
|
+
setupPaseo(paths, restartDaemon);
|
|
180
183
|
}
|
|
181
184
|
else if (target === "zed") {
|
|
182
185
|
setupZed(paths);
|
|
183
186
|
}
|
|
184
187
|
else {
|
|
185
|
-
setupPaseo(paths);
|
|
188
|
+
setupPaseo(paths, restartDaemon);
|
|
186
189
|
setupZed(paths);
|
|
187
190
|
}
|
|
188
191
|
return true;
|
package/dist/src/setup.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/setup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/setup.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/readme.md
CHANGED
|
@@ -158,7 +158,7 @@ The matrix below documents upstream defects across process startup, turn executi
|
|
|
158
158
|
| [**Silent Background Task Execution**](src/fixes/silent-background-tasks/index.ts) | **Problem**: Subagents and background tasks execute silently; upstream binary produces no stdout chunks during `STATE_WAITING_FOR_TASKS`, leaving editor UIs frozen.<br>🔗 [`problem: silent background tasks`](src/fixes/silent-background-tasks/index.e2e.test.ts#L6) | Synthesizes standard ACP `session/update` plan notifications (`sessionUpdate: "plan"`) tracking active subagent roles and background tasks with live progress and completion.<br>🔗 [`solution: plan synthesis`](src/fixes/silent-background-tasks/index.e2e.test.ts#L12) |
|
|
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
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
163
|
|
|
164
164
|
## Setup
|