Skip to content

Commit 30fcbf6

Browse files
committed
Stop bridging Grok exit plan requests.
1 parent b159693 commit 30fcbf6

4 files changed

Lines changed: 0 additions & 109 deletions

File tree

apps/server/scripts/acp-mock-agent.ts

Lines changed: 0 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ const emitInterleavedAssistantToolCalls =
1919
const emitGenericToolPlaceholders = process.env.T3_ACP_EMIT_GENERIC_TOOL_PLACEHOLDERS === "1";
2020
const emitAskQuestion = process.env.T3_ACP_EMIT_ASK_QUESTION === "1";
2121
const emitXAiAskUserQuestion = process.env.T3_ACP_EMIT_XAI_ASK_USER_QUESTION === "1";
22-
const emitXAiExitPlanMode = process.env.T3_ACP_EMIT_XAI_EXIT_PLAN_MODE === "1";
2322
const failSetConfigOption = process.env.T3_ACP_FAIL_SET_CONFIG_OPTION === "1";
2423
const exitOnSetConfigOption = process.env.T3_ACP_EXIT_ON_SET_CONFIG_OPTION === "1";
2524
const promptResponseText = process.env.T3_ACP_PROMPT_RESPONSE_TEXT;
@@ -591,27 +590,6 @@ const program = Effect.gen(function* () {
591590
return { stopReason: "end_turn" };
592591
}
593592

594-
if (emitXAiExitPlanMode) {
595-
const result = yield* agent.client.extRequest("_x.ai/exit_plan_mode", {
596-
method: "x.ai/exit_plan_mode",
597-
params: {
598-
sessionId: requestedSessionId,
599-
toolCallId: "exit-plan-mode-tool-call-1",
600-
planContent: "# Grok plan\n\n- Inspect the workspace\n- Apply the fix",
601-
},
602-
});
603-
if (
604-
typeof result !== "object" ||
605-
result === null ||
606-
!("outcome" in result) ||
607-
result.outcome !== "approved"
608-
) {
609-
throw new Error("Expected _x.ai/exit_plan_mode approved outcome.");
610-
}
611-
612-
return { stopReason: "end_turn" };
613-
}
614-
615593
yield* agent.client.sessionUpdate({
616594
sessionId: requestedSessionId,
617595
update: {

apps/server/src/provider/Layers/GrokAdapter.test.ts

Lines changed: 0 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -335,47 +335,6 @@ it.layer(grokAdapterTestLayer)("GrokAdapterLive", (it) => {
335335
}),
336336
);
337337

338-
it.effect("handles xAI exit_plan_mode extension requests", () =>
339-
Effect.gen(function* () {
340-
const threadId = ThreadId.make("grok-xai-exit-plan-mode");
341-
const wrapperPath = yield* Effect.promise(() =>
342-
makeMockGrokWrapper({ T3_ACP_EMIT_XAI_EXIT_PLAN_MODE: "1" }),
343-
);
344-
const adapter = yield* makeTestAdapter(wrapperPath);
345-
const proposedPlan =
346-
yield* Deferred.make<Extract<ProviderRuntimeEvent, { type: "turn.proposed.completed" }>>();
347-
348-
const eventsFiber = yield* Stream.runForEach(adapter.streamEvents, (event) => {
349-
if (
350-
String(event.threadId) !== String(threadId) ||
351-
event.type !== "turn.proposed.completed"
352-
) {
353-
return Effect.void;
354-
}
355-
return Deferred.succeed(proposedPlan, event).pipe(Effect.ignore);
356-
}).pipe(Effect.forkChild);
357-
358-
yield* adapter.startSession({
359-
threadId,
360-
provider: ProviderDriverKind.make("grok"),
361-
cwd: process.cwd(),
362-
runtimeMode: "full-access",
363-
});
364-
365-
yield* adapter.sendTurn({ threadId, input: "propose a plan", attachments: [] });
366-
367-
const event = yield* Deferred.await(proposedPlan);
368-
assert.equal(
369-
event.payload.planMarkdown,
370-
"# Grok plan\n\n- Inspect the workspace\n- Apply the fix",
371-
);
372-
assert.equal(event.raw?.method, "_x.ai/exit_plan_mode");
373-
374-
yield* Fiber.interrupt(eventsFiber);
375-
yield* adapter.stopSession(threadId);
376-
}),
377-
);
378-
379338
it.effect("continues streaming events when native notification logging fails", () =>
380339
Effect.gen(function* () {
381340
const threadId = ThreadId.make("grok-native-log-failure");

apps/server/src/provider/Layers/GrokAdapter.ts

Lines changed: 0 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -59,11 +59,8 @@ import {
5959
} from "../acp/GrokAcpSupport.ts";
6060
import {
6161
extractXAiAskUserQuestions,
62-
extractXAiExitPlanMarkdown,
6362
makeXAiAskUserQuestionResponse,
64-
makeXAiExitPlanModeResponse,
6563
XAiAskUserQuestionRequest,
66-
XAiExitPlanModeRequest,
6764
} from "../acp/XAiAcpExtension.ts";
6865
import { type GrokAdapterShape } from "../Services/GrokAdapter.ts";
6966
import { type EventNdjsonLogger, makeEventNdjsonLogger } from "./EventNdjsonLogger.ts";
@@ -436,35 +433,6 @@ export function makeGrokAdapter(grokSettings: GrokSettings, options?: GrokAdapte
436433
),
437434
{ discard: true },
438435
);
439-
yield* Effect.forEach(
440-
["x.ai/exit_plan_mode", "_x.ai/exit_plan_mode"] as const,
441-
(method) =>
442-
acp.handleExtRequest(method, XAiExitPlanModeRequest, (params) =>
443-
mapAcpCallbackFailure(
444-
Effect.gen(function* () {
445-
yield* logNative(input.threadId, method, params);
446-
const planMarkdown = extractXAiExitPlanMarkdown(params)?.trim();
447-
if (planMarkdown) {
448-
yield* offerRuntimeEvent({
449-
type: "turn.proposed.completed",
450-
...(yield* makeEventStamp()),
451-
provider: PROVIDER,
452-
threadId: input.threadId,
453-
turnId: sessions.get(input.threadId)?.activeTurnId,
454-
payload: { planMarkdown },
455-
raw: {
456-
source: "acp.grok.extension",
457-
method,
458-
payload: params,
459-
},
460-
});
461-
}
462-
return makeXAiExitPlanModeResponse();
463-
}),
464-
),
465-
),
466-
{ discard: true },
467-
);
468436
yield* acp.handleRequestPermission((params) =>
469437
mapAcpCallbackFailure(
470438
Effect.gen(function* () {

apps/server/src/provider/acp/XAiAcpExtension.ts

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ import type { ProviderUserInputAnswers, UserInputQuestion } from "@t3tools/contr
22
import * as Schema from "effect/Schema";
33

44
export const XAiAskUserQuestionRequest = Schema.Unknown;
5-
export const XAiExitPlanModeRequest = Schema.Unknown;
65

76
type UnknownRecord = Record<string, unknown>;
87

@@ -136,15 +135,6 @@ export function extractXAiAskUserQuestions(params: unknown): ReadonlyArray<UserI
136135
return [extractQuestion(question, title, 0)];
137136
}
138137

139-
export function extractXAiExitPlanMarkdown(params: unknown): string | undefined {
140-
const root = unwrapParams(params);
141-
const nestedPlan = nestedRecord(root, ["plan"]);
142-
return (
143-
stringField(root, ["planContent", "plan_content", "planMarkdown", "plan", "content"]) ??
144-
(nestedPlan ? stringField(nestedPlan, ["content", "markdown", "text"]) : undefined)
145-
);
146-
}
147-
148138
function answerValues(answer: unknown): ReadonlyArray<string> {
149139
if (Array.isArray(answer)) {
150140
return answer.flatMap((entry) => {
@@ -167,7 +157,3 @@ export function makeXAiAskUserQuestionResponse(answers: ProviderUserInputAnswers
167157
),
168158
};
169159
}
170-
171-
export function makeXAiExitPlanModeResponse(): { readonly outcome: "approved" } {
172-
return { outcome: "approved" };
173-
}

0 commit comments

Comments
 (0)