fix(tui): auto-approve plan mode in YOLO (#1345)

This commit is contained in:
jnjpng
2026-03-10 21:56:48 -06:00
committed by GitHub
parent a387724b05
commit 13d86fbd7c
2 changed files with 128 additions and 59 deletions

View File

@@ -60,7 +60,7 @@ describe("permission mode retry wiring", () => {
);
const enterPlanStart = source.indexOf(
"const handleEnterPlanModeApprove = useCallback(async () => {",
"const handleEnterPlanModeApprove = useCallback(",
);
const enterPlanEnd = source.indexOf(
"const handleEnterPlanModeReject = useCallback(async () => {",
@@ -133,6 +133,44 @@ describe("permission mode retry wiring", () => {
expect(segment).toContain("continue;");
});
test("handleEnterPlanModeApprove supports preserveMode to stay in YOLO", () => {
const source = readAppSource();
const start = source.indexOf(
"const handleEnterPlanModeApprove = useCallback(",
);
const end = source.indexOf(
"const handleEnterPlanModeReject = useCallback(async () => {",
);
expect(start).toBeGreaterThan(-1);
expect(end).toBeGreaterThan(start);
const segment = source.slice(start, end);
expect(segment).toContain("preserveMode: boolean = false");
expect(segment).toContain("if (!preserveMode)");
expect(segment).toContain('permissionMode.setMode("plan")');
});
test("auto-approves EnterPlanMode in bypassPermissions mode", () => {
const source = readAppSource();
const guardStart = source.indexOf("Guard EnterPlanMode:");
expect(guardStart).toBeGreaterThan(-1);
const guardEnd = source.indexOf(
"// Live area shows only in-progress items",
guardStart,
);
expect(guardEnd).toBeGreaterThan(guardStart);
const segment = source.slice(guardStart, guardEnd);
expect(segment).toContain('approval?.toolName === "EnterPlanMode"');
expect(segment).toContain(
'permissionMode.getMode() === "bypassPermissions"',
);
expect(segment).toContain("handleEnterPlanModeApprove(true)");
});
test("preserves saved plan path when approving ExitPlanMode after mode cycling", () => {
const source = readAppSource();